class ActionDispatch::Journey::Scanner
def scan
def scan case # / when @ss.skip(/\//) [:SLASH, "/"] when @ss.skip(/\(/) [:LPAREN, "("] when @ss.skip(/\)/) [:RPAREN, ")"] when @ss.skip(/\|/) [:OR, "|"] when @ss.skip(/\./) [:DOT, "."] when text = dedup_scan(/:\w+/) [:SYMBOL, text] when text = dedup_scan(/\*\w+/) [:STAR, text] when text = @ss.scan(/(?:[\w%\-~!$&'*+,;=@]|\\[:()])+/) text.tr! "\\", "" [:LITERAL, -text] # any char when text = dedup_scan(/./) [:LITERAL, text] end end