puffer/puffer_pages

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

Summary

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

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

        def initialize(tag_name, markup, tokens)
          if markup =~ Syntax
            @path = $1
          else
            raise SyntaxError.new("Syntax Error in 'render' - Valid syntax: render path")
          end

          super
        end

        def render(context)
          path = context[@path]
          context.registers[:tracker].register("<%=
            old_formats = formats
            begin
              self.formats = old_formats | [:html]
              render '#{path}'
            ensure
              self.formats = old_formats
            end
          %>")
        end
      end

    end
  end
end

Liquid::Template.register_tag('render', PufferPages::Liquid::Tags::Render)