Module: Liquidscript::Scanner::Base::Lexer
- Included in:
- Liquidscript::Scanner::Base
- Defined in:
- lib/liquidscript/scanner/base/lexer.rb
Instance Method Summary collapse
- #error(scanner = @scanner) ⇒ Object
- #lex(argument) ⇒ Object
- #perform_with_context(context, scanner = @scanner) ⇒ Object
Instance Method Details
#error(scanner = @scanner) ⇒ Object
41 42 43 44 |
# File 'lib/liquidscript/scanner/base/lexer.rb', line 41 def error(scanner = @scanner) raise SyntaxError, "Unexpected #{scanner.peek(2).inspect}" \ " (line: #{line}, column: #{column})" end |
#lex(argument) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/liquidscript/scanner/base/lexer.rb', line 16 def lex(argument) context, body = if argument.is_a?(Hash) argument.to_a.first else argument end scanner = if body StringScanner.new(body) else @scanner end out = [] context = find_context(context) instance_exec &context.init while scanner.rest? && out.last != EXIT out << perform_with_context(context, scanner) end out end |
#perform_with_context(context, scanner = @scanner) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/liquidscript/scanner/base/lexer.rb', line 6 def perform_with_context(context, scanner = @scanner) key, value = context.find_matcher(scanner) if value.nil? && scanner.rest? error scanner end normalize_action key, value, scanner if scanner.rest? end |