Sha256: a9575bbe55dff006385077f47d6fdfef7f92f59f44047308e2521218843774b1
Contents?: true
Size: 1.73 KB
Versions: 13
Compression:
Stored size: 1.73 KB
Contents
module Alchemy module CacheDigests class TemplateTracker def self.call(name, template) new(name, template).dependencies end def initialize(name, template) @name, @template = name, template end def dependencies case @name.to_s when /^alchemy\/pages\/show/ return PageLayout.all.collect { |p| "alchemy/page_layouts/_#{p['name']}" } when /^alchemy\/page_layouts\/_(.+)/ page_layout = page_layout($1) return element_templates(page_layout) + page_layout.fetch('cells', []).map { |name| "alchemy/cells/_#{name}" } when /^alchemy\/cells\/_(.+)/ return element_templates cell_definition($1) when /alchemy\/elements\/_(.+)_view/ essences = essence_types($1) element = element_definition($1) if element && element['picture_gallery'] essences += ['EssencePicture'] end return essences.map { |name| "alchemy/essences/_#{name.underscore}_view" }.uniq else ActionView::DependencyTracker::ERBTracker.call(@name, @template) end end private def element_templates(collection) collection.fetch('elements', []).map { |name| "alchemy/elements/_#{name}_view" } end def page_layout(name) PageLayout.get(name) end def cell_definition(name) Cell.definition_for(name) end def element_definition(name) Element.definitions.detect { |e| e['name'] == name } end def essence_types(name) element = element_definition(name) return [] unless element element.fetch('contents', []).collect { |c| c['type'] } end end end end
Version data entries
13 entries across 13 versions & 1 rubygems