Sha256: 9538062ab00b9d5e3670be7160a9278fbb144ab36f63c169db2c80c6f8efc54a
Contents?: true
Size: 1.7 KB
Versions: 1
Compression:
Stored size: 1.7 KB
Contents
module Middleman::Sitemap class Template attr_accessor :page, :options, :locals, :blocks#, :dependencies def initialize(page) @page = page @options = {} @locals = {} @blocks = [] end def path page.path end def source_file page.source_file end def store page.store end def app store.app end def ext page.ext end def touch app.cache.remove(:metadata, source_file) end def metadata metadata = app.cache.fetch(:metadata, source_file) do data = { :options => {}, :locals => {}, :page => {} } app.provides_metadata.each do |callback, matcher| next if !matcher.nil? && !source_file.match(matcher) result = app.instance_exec(source_file, &callback) data = data.deep_merge(result) end data end app.provides_metadata_for_path.each do |callback, matcher| next if !matcher.nil? && !path.match(matcher) result = app.instance_exec(path, &callback) metadata = metadata.deep_merge(result) end metadata end def render(opts={}, locs={}, &block) md = metadata.dup opts = options.deep_merge(md[:options]).deep_merge(opts) locs = locals.deep_merge(md[:locals]).deep_merge(locs) # Forward remaining data to helpers if md.has_key?(:page) app.data_content("page", md[:page]) end blocks.compact.each do |block| app.instance_eval(&block) end app.instance_eval(&block) if block_given? app.render_template(source_file, locs, opts) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
middleman-3.0.0.alpha.6 | lib/middleman/sitemap/template.rb |