Class: Twig::ExpressionParser::Infix::Binary

Inherits:
Twig::ExpressionParser::InfixExpressionParser show all
Defined in:
lib/twig/expression_parser/infix/binary.rb

Constant Summary

Constants inherited from Twig::ExpressionParser::InfixExpressionParser

Twig::ExpressionParser::InfixExpressionParser::LEFT, Twig::ExpressionParser::InfixExpressionParser::RIGHT

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Twig::ExpressionParser::InfixExpressionParser

#left?, #right?, #type

Methods inherited from Base

#to_s, #type

Constructor Details

#initialize(node_class, name, precedence, associativity = LEFT, description: nil, aliases: []) ⇒ Binary

Returns a new instance of Binary.



9
10
11
12
13
14
15
16
17
18
# File 'lib/twig/expression_parser/infix/binary.rb', line 9

def initialize(node_class, name, precedence, associativity = LEFT, description: nil, aliases: [])
  super()

  @node_class = node_class
  @name = name
  @precedence = precedence
  @associativity = associativity
  @description = description
  @aliases = aliases
end

Instance Attribute Details

#aliasesObject (readonly)

Returns the value of attribute aliases.



7
8
9
# File 'lib/twig/expression_parser/infix/binary.rb', line 7

def aliases
  @aliases
end

#associativityObject (readonly)

Returns the value of attribute associativity.



7
8
9
# File 'lib/twig/expression_parser/infix/binary.rb', line 7

def associativity
  @associativity
end

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/twig/expression_parser/infix/binary.rb', line 7

def name
  @name
end

#precedenceObject (readonly)

Returns the value of attribute precedence.



7
8
9
# File 'lib/twig/expression_parser/infix/binary.rb', line 7

def precedence
  @precedence
end

Instance Method Details

#descriptionObject



28
29
30
# File 'lib/twig/expression_parser/infix/binary.rb', line 28

def description
  @description || ''
end

#parse(parser, left, token) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/twig/expression_parser/infix/binary.rb', line 20

def parse(parser, left, token)
  right = parser.parse_expression(
    left? ? precedence + 1 : precedence
  )

  @node_class.new(left, right, token.lineno)
end