Class HTML5::ContentAttrParser
In: lib/feed_tools/vendor/html5/lib/html5/inputstream.rb
Parent: Object

Methods

new   parse  

Public Class methods

[Source]

     # File lib/feed_tools/vendor/html5/lib/html5/inputstream.rb, line 597
597:     def initialize(data)
598:       @data = data
599:     end

Public Instance methods

[Source]

     # 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

[Validate]