Sha256: 942d2d4e17ccfbe3b724c91ddbefc1a3d733d6841c128c9c082ec89e9c0cc0c6

Contents?: true

Size: 823 Bytes

Versions: 5

Compression:

Stored size: 823 Bytes

Contents

module Cutaneous
  class Template
    attr_accessor :loader, :lexer, :path

    def initialize(lexer)
      @lexer = lexer
    end

    def compiler
      @compiler ||= Compiler.new(lexer, loader)
    end

    def render(context)
      context.__loader = loader
      context.instance_eval(&template_proc)
    end

    def template_proc
      @template_proc ||= eval(template_proc_src, nil, path || "(cutaneous)").tap do |proc|
        @lexer = nil # release any memory used by the lexer, we don't need it anymore
      end
    end

    def template_proc_src
      "lambda { |context| self.__buf = __buf = ''; #{script}; __buf.to_s }"
    end

    def script
      compiler.script
    end

    def block_order
      compiler.block_order
    end

    def block(block_name)
      compiler.block(block_name)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cutaneous-0.1.4 lib/cutaneous/template.rb
cutaneous-0.1.3 lib/cutaneous/template.rb
cutaneous-0.1.2 lib/cutaneous/template.rb
cutaneous-0.1.1 lib/cutaneous/template.rb
cutaneous-0.1.0 lib/cutaneous/template.rb