inject yaml data into liquid templates. closes #111

This commit is contained in:
Thomas Reynolds 2011-09-06 11:12:20 -07:00
parent d79eb3fc0f
commit 6eadb0e888
8 changed files with 47 additions and 8 deletions

View file

@ -22,7 +22,7 @@ module Middleman::CoreExtensions::Data
@app = app
end
def method_missing(path)
def data_for_path(path)
response = nil
@@local_sources ||= {}
@ -38,11 +38,37 @@ module Middleman::CoreExtensions::Data
response = YAML.load_file(file_path)
end
end
end
def method_missing(path)
result = data_for_path(path)
if response
recursively_enhance(response)
if result
recursively_enhance(result)
else
super
end
end
def to_h
data = {}
(@@local_sources || {}).each do |k, v|
data[k] = data_for_path(k)
end
(@@callback_sources || {}).each do |k, v|
data[k] = data_for_path(k)
end
yaml_path = File.join(@app.root, @app.data_dir, "*.yml")
Dir[yaml_path].each do |f|
p = f.split("/").last.gsub(".yml", "")
data[p] = data_for_path(p)
end
data
end
def self.data_content(name, content)
@@local_sources ||= {}

View file

@ -80,7 +80,7 @@ module Middleman::CoreExtensions::FrontMatter
module YamlAware
def prepare
options, @data = Middleman::CoreExtensions::FrontMatter.parse_front_matter(@data)
@frontmatter, @data = Middleman::CoreExtensions::FrontMatter.parse_front_matter(@data)
super
end
end