Sha256: ed6b2c595669d4ba41dc0882a49a4c611664f02e7f38efa410a2d07a1ed7f2a0

Contents?: true

Size: 791 Bytes

Versions: 1

Compression:

Stored size: 791 Bytes

Contents

module Miam
  module TemplateHelper
    def include_template(template_name, context = {})
      @template_name = template_name
      @caller = caller[0]
      tmplt = @context.templates[template_name.to_s]

      unless tmplt
        raise "Template `#{template_name}` is not defined"
      end

      context_orig = @context
      @context = @context.merge(context)
      instance_eval(&tmplt)
      @context = context_orig
    end

    def context
      @context
    end

    def required(*args)
      missing_args = args.map(&:to_s) - @context.keys.map(&:to_s)
      unless missing_args.empty?
        ex = ArgumentError.new("Missing arguments: [#{missing_args.join(", ")}] in template: '#{@template_name}'")
        ex.set_backtrace(@caller)
        raise ex
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
miam-0.2.5.beta1 lib/miam/template_helper.rb