lib/awestruct/extensions/data_dir.rb in awestruct-0.6.2 vs lib/awestruct/extensions/data_dir.rb in awestruct-0.6.3

- old
+ new

@@ -1,5 +1,7 @@ +require 'awestruct/util/yaml_load' + module Awestruct module Extensions class DataDir def initialize(data_dir="_data") @@ -9,21 +11,25 @@ def watch(watched_dirs) watched_dirs << @data_dir end def execute(site) - Dir[ "#{site.dir}/#{@data_dir}/*" ].each do |entry| - if ( File.directory?( entry ) ) - data_key = File.basename( entry ) - data_map = {} - Dir[ "#{entry}/*" ].each do |chunk| - File.basename( chunk ) =~ /^([^\.]+)/ - key = $1.to_sym - chunk_page = site.engine.load_page( chunk ) - data_map[ key ] = chunk_page + Dir.glob(File.join(site.dir, @data_dir, '*')).each do |entry| + next unless File.directory? entry + data_key = File.basename(entry) + data_map = {} + Dir.glob(File.join(entry, '*')).each do |chunk| + File.basename(chunk) =~ /^([^\.]+)/ + key = $1.to_sym + chunk_page = nil + if chunk.end_with?('.yml') + chunk_page = Awestruct.yaml_load_file(chunk) + else + chunk_page = site.engine.load_page(chunk) end - site.send( "#{data_key}=", data_map ) + data_map[key] = chunk_page end + site.send("#{data_key}=", data_map) end end end end