Class: Handlebars::Helper
- Inherits:
-
Object
- Object
- Handlebars::Helper
- Defined in:
- lib/ruby-handlebars/helper.rb
Instance Method Summary collapse
- #apply(context, arguments = [], block = []) ⇒ Object
-
#initialize(hbs, fn) ⇒ Helper
constructor
A new instance of Helper.
- #split_block(block) ⇒ Object
Constructor Details
#initialize(hbs, fn) ⇒ Helper
Returns a new instance of Helper.
5 6 7 8 |
# File 'lib/ruby-handlebars/helper.rb', line 5 def initialize(hbs, fn) @hbs = hbs @fn = fn end |
Instance Method Details
#apply(context, arguments = [], block = []) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/ruby-handlebars/helper.rb', line 10 def apply(context, arguments = [], block = []) arguments = [arguments] unless arguments.is_a? Array args = [context] + arguments.map {|arg| arg.eval(context)} + split_block(block || []) @fn.call(*args) end |
#split_block(block) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/ruby-handlebars/helper.rb', line 17 def split_block(block) helper_block = Tree::Block.new([]) inverse_block = Tree::Block.new([]) receiver = helper_block else_found = false block.each do |item| if item.is_a?(Tree::Replacement) && item.is_else? receiver = inverse_block else_found = true next end receiver.add_item(item) end if else_found return [helper_block, inverse_block] else return [helper_block] end end |