# File lib/http/native_parser.rb, line 266 def parse!(str) scanner = StringScanner.new(str) begin while (!scanner.eos?) start_pos = scanner.pos send("parse_#{@state}""parse_#{@state}", scanner) if (scanner.pos == start_pos) # if we didn't move forward, we've run out of useful string so throw it back. return str end end ensure # clear out whatever we managed to scan. str[0, scanner.pos] = "" end end