| Class | HTML5::ContentAttrParser |
| In: |
lib/feed_tools/vendor/html5/lib/html5/inputstream.rb
|
| Parent: | Object |
# File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 597
597: def initialize(data)
598: @data = data
599: end
# File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 601
601: def parse
602: begin
603: #Skip to the first ";"
604: @data.position = 0
605: @data.jump_to(';')
606: @data.position += 1
607: @data.skip
608: #Check if the attr name is charset
609: #otherwise return
610: @data.jump_to('charset')
611: @data.position += 1
612: @data.skip
613: unless @data.current_byte == '='
614: #If there is no = sign keep looking for attrs
615: return nil
616: end
617: @data.position += 1
618: @data.skip
619: #Look for an encoding between matching quote marks
620: if ['"', "'"].include?(@data.current_byte)
621: quote_mark = @data.current_byte
622: @data.position += 1
623: old_position = @data.position
624: @data.jump_to(quote_mark)
625: return @data[old_position ... @data.position]
626: else
627: #Unquoted value
628: old_position = @data.position
629: begin
630: @data.find_next(SPACE_CHARACTERS)
631: return @data[old_position ... @data.position]
632: rescue EOF
633: #Return the whole remaining value
634: return @data[old_position .. -1]
635: end
636: end
637: rescue EOF
638: return nil
639: end
640: end