class URITemplate::RFC6570::Tokenizer
@private
Attributes
source[R]
Public Class Methods
new(source, ops)
click to toggle source
# File lib/uri_template/rfc6570.rb, line 210 def initialize(source, ops) @source = source @operators = ops end
Public Instance Methods
each() { |operators[scanner| ... }
click to toggle source
# File lib/uri_template/rfc6570.rb, line 215 def each scanner = StringScanner.new(@source) until scanner.eos? expression = scanner.scan(EXPRESSION) if expression vars = scanner[2].split(',').map{|name| match = VAR.match(name) # 1 = varname # 2 = explode # 3 = length [ match[1], match[2] == '*', match[3].to_i ] } yield @operators[scanner[1]].new(vars) else literal = scanner.scan(LITERAL) if literal yield(Literal.new(literal)) else raise Invalid.new(@source,scanner.pos) end end end end