Class: Liquid2::TernaryExpression
- Inherits:
-
Expression
- Object
- Expression
- Liquid2::TernaryExpression
- Defined in:
- lib/liquid2/expressions/filtered.rb
Overview
An inline conditional expression.
Instance Attribute Summary collapse
-
#filters ⇒ Object
readonly
Returns the value of attribute filters.
-
#tail_filters ⇒ Object
readonly
Returns the value of attribute tail_filters.
Attributes inherited from Expression
Instance Method Summary collapse
- #children ⇒ Object
- #evaluate(context) ⇒ Object
-
#initialize(token, left, condition, alternative, filters, tail_filters) ⇒ TernaryExpression
constructor
A new instance of TernaryExpression.
Methods inherited from Expression
Constructor Details
#initialize(token, left, condition, alternative, filters, tail_filters) ⇒ TernaryExpression
Returns a new instance of TernaryExpression.
40 41 42 43 44 45 46 47 |
# File 'lib/liquid2/expressions/filtered.rb', line 40 def initialize(token, left, condition, alternative, filters, tail_filters) super(token) @left = left @condition = condition @alternative = alternative @filters = filters @tail_filters = tail_filters end |
Instance Attribute Details
#filters ⇒ Object (readonly)
Returns the value of attribute filters.
33 34 35 |
# File 'lib/liquid2/expressions/filtered.rb', line 33 def filters @filters end |
#tail_filters ⇒ Object (readonly)
Returns the value of attribute tail_filters.
33 34 35 |
# File 'lib/liquid2/expressions/filtered.rb', line 33 def tail_filters @tail_filters end |
Instance Method Details
#children ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/liquid2/expressions/filtered.rb', line 71 def children # @type var nodes: Array[untyped] nodes = [@left, @condition] nodes << @alternative if @alternative nodes.concat(@filters) if @filters nodes.concat(@tail_filters) if @tail_filters nodes end |
#evaluate(context) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/liquid2/expressions/filtered.rb', line 49 def evaluate(context) rv = nil if @condition.evaluate(context) rv = @left.evaluate(context) elsif @alternative rv = context.evaluate(@alternative) index = 0 while (filter = @filters[index]) rv = filter.evaluate(rv, context) index += 1 end end index = 0 while (filter = @tail_filters[index]) rv = filter.evaluate(rv, context) index += 1 end rv end |