Class: Twig::TokenParser::Yield

Inherits:
Base
  • Object
show all
Defined in:
lib/twig/token_parser/yield.rb

Instance Attribute Summary

Attributes inherited from Base

#parser

Instance Method Summary collapse

Instance Method Details

#parse(token) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/twig/token_parser/yield.rb', line 6

def parse(token)
  stream = parser.stream
  lineno = token.lineno
  expr = parser.expression_parser.parse_expression
  arguments = []

  stream.expect(Token::NAME_TYPE, 'do')

  if stream.next_if(Token::PUNCTUATION_TYPE, '|')
    until stream.test(Token::PUNCTUATION_TYPE, '|')
      unless arguments.empty?
        stream.expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma')
      end

      arguments.push(stream.expect(Token::NAME_TYPE).value)
    end

    stream.expect(Token::PUNCTUATION_TYPE, '|')
  end

  stream.expect(Token::BLOCK_END_TYPE)
  body = parser.subparse(decide_yield_end, drop_needle: true)
  stream.expect(Token::BLOCK_END_TYPE)

  Node::Yield.new(expr, body, arguments, lineno)
end

#tagObject



33
34
35
# File 'lib/twig/token_parser/yield.rb', line 33

def tag
  'yield'
end