Class: Curlybars::Node::IfElse

Inherits:
Struct
  • Object
show all
Defined in:
lib/curlybars/node/if_else.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#else_templateObject

Returns the value of attribute else_template

Returns:

  • (Object)

    the current value of else_template



3
4
5
# File 'lib/curlybars/node/if_else.rb', line 3

def else_template
  @else_template
end

#expressionObject

Returns the value of attribute expression

Returns:

  • (Object)

    the current value of expression



3
4
5
# File 'lib/curlybars/node/if_else.rb', line 3

def expression
  @expression
end

#if_templateObject

Returns the value of attribute if_template

Returns:

  • (Object)

    the current value of if_template



3
4
5
# File 'lib/curlybars/node/if_else.rb', line 3

def if_template
  @if_template
end

Instance Method Details

#cache_keyObject



24
25
26
27
28
29
30
# File 'lib/curlybars/node/if_else.rb', line 24

def cache_key
  [
    expression,
    if_template,
    else_template
  ].map(&:cache_key).push(self.class.name).join("/")
end

#compileObject



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/curlybars/node/if_else.rb', line 4

def compile
  # NOTE: the following is a heredoc string, representing the ruby code fragment
  # outputted by this node.
  <<-RUBY
    if rendering.to_bool(rendering.cached_call(#{expression.compile}))
      #{if_template.compile}
    else
      #{else_template.compile}
    end
  RUBY
end

#validate(branches) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/curlybars/node/if_else.rb', line 16

def validate(branches)
  [
    expression.validate(branches, check_type: :not_helper),
    if_template.validate(branches),
    else_template.validate(branches)
  ]
end