Sha256: 49c7b0aa1a5e835ce75f65d4fca3406b2016db78f989c46d6f88812900ac0cc8
Contents?: true
Size: 1.24 KB
Versions: 87
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true 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/ PageLayout.all.map { |p| "alchemy/page_layouts/_#{p["name"]}" } when /^alchemy\/page_layouts\/_(\w+)/ page_layout = PageLayout.get($1) layout_elements = page_layout.fetch("elements", []) layout_elements.map { |name| "alchemy/elements/_#{name}_view" } + layout_elements.map { |name| "alchemy/elements/_#{name}" } when /^alchemy\/elements\/_(\w+)_view/, /^alchemy\/elements\/_(\w+)/ essence_types($1).map { |name| "alchemy/essences/_#{name.underscore}_view" }.uniq else ActionView::DependencyTracker::ERBTracker.call(@name, @template) end end private def essence_types(name) element = Element.definitions.detect { |e| e["name"] == name } return [] unless element element.fetch("contents", []).collect { |c| c["type"] } end end end end
Version data entries
87 entries across 87 versions & 1 rubygems