Sha256: 7d00e79c46fbc92478c8e2e4ab3e78b12d09c97ce5f3170c844f352caccda3e6
Contents?: true
Size: 1.79 KB
Versions: 11
Compression:
Stored size: 1.79 KB
Contents
module Locomotive module Liquid module Tags class Snippet < ::Liquid::Include attr_accessor :slug attr_accessor :partial def initialize(tag_name, markup, tokens, context) super @slug = @template_name.gsub(/['"]/o, '') if @context[:snippets].present? (@context[:snippets] << @slug).uniq! else @context[:snippets] = [@slug] end if @context[:site].present? snippet = @context[:site].snippets.where(slug: @slug).first self.refresh(snippet) if snippet end end def render(context) return '' if @partial.nil? variable = context[@variable_name || @template_name[1..-2]] context.stack do @attributes.each do |key, value| context[key] = context[value] end output = (if variable.is_a?(Array) variable.collect do |variable| context[@template_name[1..-2]] = variable @partial.render(context) end else context[@template_name[1..-2]] = variable @partial.render(context) end) output end end def refresh(snippet, context = {}) if snippet.destroyed? @snippet_id = nil @partial = nil else @snippet_id = snippet.id @partial = ::Liquid::Template.parse(snippet.template, @context.clone) @partial.root.context.clear end end def nodelist if @partial @partial.root.nodelist else [] end end end ::Liquid::Template.register_tag('include', Snippet) end end end
Version data entries
11 entries across 11 versions & 1 rubygems