| Class | HTML5::EncodingBytes |
| In: |
lib/feed_tools/vendor/html5/lib/html5/inputstream.rb
|
| Parent: | String |
String-like object with an assosiated position and various extra methods If the position is ever greater than the string length then an exception is raised
| position | [RW] |
# File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 351
351: def initialize(value)
352: super(value)
353: @position = -1
354: end
# File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 364
364: def current_byte
365: raise EOF if @position >= length
366: return self[@position].chr
367: end
# File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 356
356: def each
357: while @position < length
358: @position += 1
359: yield self[@position]
360: end
361: rescue EOF
362: end
Move the pointer so it points to the next byte in a set of possible bytes
# File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 401
401: def find_next(byte_list)
402: until byte_list.include?(current_byte)
403: @position += 1
404: end
405: end
Look for the next sequence of bytes matching a given sequence. If a match is found advance the position to the last byte of the match
# File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 389
389: def jump_to(bytes)
390: new_position = self[position .. -1].index(bytes)
391: if new_position
392: @position += (new_position + bytes.length-1)
393: return true
394: else
395: raise EOF
396: end
397: end
Look for a sequence of bytes at the start of a string. If the bytes are found return true and advance the position to the byte after the match. Otherwise return false and leave the position alone
# File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 379
379: def match_bytes(bytes, lower=false)
380: data = self[position ... position+bytes.length]
381: data.downcase! if lower
382: rv = (data == bytes)
383: @position += bytes.length if rv == true
384: return rv
385: end