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

Version Path
alchemy_cms-6.1.10 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.9 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.8 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.7 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.6 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.5 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.0.14 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.4 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.0.13 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.3 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.2 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.1 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.1.0 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.0.12 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.0.11 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.0.10 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-5.3.8 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.0.9 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-5.3.7 lib/alchemy/cache_digests/template_tracker.rb
alchemy_cms-6.0.8 lib/alchemy/cache_digests/template_tracker.rb