Module: Antlers::ForLexeme

Extended by:
ForLexeme
Includes:
Lexeme
Included in:
ForLexeme
Defined in:
lib/lexemes/for_lexeme.rb

Constant Summary collapse

KEYWORDS =
['for:', 'in:', ':for'].freeze

Instance Method Summary collapse

Instance Method Details

#lexeme(keywords:) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/lexemes/for_lexeme.rb', line 16

def lexeme(keywords:, **)
  if keywords['for:']
    *key, value = keywords['for:'].split(',').map(&:strip)
    for_def = { for_def: value, in: keywords['in:'] }
    for_def[:key] = key.first unless key.empty?
    return for_def
  end

  # TODO: Keep track of which for loop we're in to allow nested for loops.
  { for_end: 'level_1' }
end

#match?(keywords:) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/lexemes/for_lexeme.rb', line 12

def match?(keywords:, **)
  KEYWORDS.include?(keywords.keys.first)
end