puffer/puffer_pages

View on GitHub
lib/puffer_pages/liquid/tags/yield.rb

Summary

Maintainability
A
0 mins
Test Coverage
module PufferPages
  module Liquid
    module Tags

      class Yield < ::Liquid::Tag
        Syntax = /^(#{::Liquid::QuotedFragment})/

        def initialize(tag_name, markup, tokens)
          if markup =~ Syntax
            @name = $1
          elsif markup.blank?
            @name = nil
          else
            raise SyntaxError.new("Syntax Error in 'yield' - Valid syntax: yield [content_name]")
          end

          super
        end

        def render(context)
          context.registers[:tracker].register(@name ?
            "<%= yield :'#{@name}' %>" :
            "<%= yield %>")
        end
      end

    end
  end
end

Liquid::Template.register_tag('yield', PufferPages::Liquid::Tags::Yield)