Class: Twig::TokenParser::Apply

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

Overview

Applies filters on a section of a template.

apply upper %

This text becomes uppercase

endapply %

Instance Attribute Summary

Attributes inherited from Base

#parser

Instance Method Summary collapse

Instance Method Details

#parse(token) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/twig/token_parser/apply.rb', line 11

def parse(token)
  lineno = token.lineno
  ref = Node::Expression::Variable::Local.new(nil, lineno)
  filter = ref
  ep = parser.environment.expression_parsers.by_class(ExpressionParser::Infix::Filter.name)

  loop do
    filter = ep.parse(parser, filter, parser.current_token)

    unless parser.stream.test(Token::OPERATOR_TYPE, '|')
      break
    end

    parser.stream.next
  end

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

  Node::Nodes.new({
    0 => Node::Set.new(true, ref, body, lineno),
    1 => Node::Print.new(filter, lineno),
  }, lineno)
end

#tagObject



37
38
39
# File 'lib/twig/token_parser/apply.rb', line 37

def tag
  'apply'
end