class Handlebars::Helper

Public Class Methods

new(hbs, fn) click to toggle source
# File lib/ruby-handlebars/helper.rb, line 5
def initialize(hbs, fn)
  @hbs = hbs
  @fn = fn
end

Public Instance Methods

apply(context, arguments = [], block = [], else_block = []) click to toggle source
# File lib/ruby-handlebars/helper.rb, line 14
def apply(context, arguments = [], block = [], else_block = [])
  arguments = [arguments] unless arguments.is_a? Array
  args = [context] + arguments.map {|arg| arg.eval(context)} + split_block(block, else_block)

  @fn.call(*args)
end
apply_as(context, arguments = [], as_arguments = [], block = [], else_block = []) click to toggle source
# File lib/ruby-handlebars/helper.rb, line 21
def apply_as(context, arguments = [], as_arguments = [], block = [], else_block = [])
  arguments = [arguments] unless arguments.is_a? Array
  as_arguments = [as_arguments] unless as_arguments.is_a? Array
  args = [context] + arguments.map {|arg| arg.eval(context)} + as_arguments.map(&:name) + split_block(block, else_block)

  @fn.call(*args)
end
arity() click to toggle source
# File lib/ruby-handlebars/helper.rb, line 10
def arity
  @fn.arity
end

Private Instance Methods

ensure_block(block) click to toggle source
# File lib/ruby-handlebars/helper.rb, line 39
def ensure_block(block)
  new_block = Tree::Block.new([])
  block.each {|item| new_block.add_item(item) } unless block.nil?
  new_block
end
split_block(block, else_block) click to toggle source
# File lib/ruby-handlebars/helper.rb, line 31
def split_block(block, else_block)
  if else_block
    [ensure_block(block), ensure_block(else_block)]
  else
    [ensure_block(block)]
  end
end