class Stockade::Lexer
Class Lexer
Usage `Stockade::Lexer.call(context)`
Returns list of found lexemes.
Attributes
context[R]
Public Class Methods
call(context)
click to toggle source
# File lib/stockade/lexer.rb, line 24 def self.call(context) new(context).call end
new(context)
click to toggle source
# File lib/stockade/lexer.rb, line 20 def initialize(context) @context = context.dup end
Public Instance Methods
call()
click to toggle source
# File lib/stockade/lexer.rb, line 40 def call lexeme_classes.map do |lexeme_class| tokenize(lexeme_class) end.flatten end
lexeme_classes()
click to toggle source
# File lib/stockade/lexer.rb, line 28 def lexeme_classes [ Stockade::Lexemes::PaymentCard, Stockade::Lexemes::Date, Stockade::Lexemes::Email, Stockade::Lexemes::Phone, Stockade::Lexemes::Word, Stockade::Lexemes::Firstname, Stockade::Lexemes::Lastname ] end
Private Instance Methods
tokenize(lexeme_class)
click to toggle source
# File lib/stockade/lexer.rb, line 48 def tokenize(lexeme_class) lexemes = [] scanner = StringScanner.new(context) while scanner.scan_until(lexeme_class.regex) lexemes << lexeme_class.new( scanner.matched, scanner.pos - scanner.matched.size ) end lexemes.select(&:valid?) end