Class HTML5::XMLParser
In: lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb
Parent: HTMLParser
Phase XmlElementPhase InTablePhase RootElementPhase AfterHeadPhase InHeadPhase AfterFramesetPhase XmlRootPhase InTableBodyPhase InitialPhase InFramesetPhase InColumnGroupPhase InCaptionPhase BeforeHeadPhase InSelectPhase TrailingEndPhase AfterBodyPhase InCellPhase InBodyPhase InRowPhase XhmlRootPhase Exception SerializeError EOF AssertionError ParseError HTMLSanitizer HTMLTokenizer XMLParser XHTMLParser HTMLParser String EncodingBytes HTMLSerializer XHTMLSerializer TreeWalkers::Base NonRecursiveTreeWalker TreeWalker TreeWalker Base TreeWalker Element DocumentFragment Node CommentNode DocumentType TextNode Document Base::Node Node Node Base::TreeBuilder TreeBuilder TreeBuilder TreeBuilder Element DocumentFragment CommentNode DocumentType TextNode Document Element DocumentFragment CommentNode DocumentType TextNode Document Enumerable TestData Base InjectMetaCharset OptionalTagFilter WhitespaceFilter HTMLSanitizeFilter HTMLSanitizeModule SimpleDelegator HTMLInputStream EncodingParser ContentAttrParser Node TreeBuilder lib/feed_tools/vendor/html5/lib/html5/html5parser/trailing_end_phase.rb lib/feed_tools/vendor/html5/lib/html5/constants.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_frameset_phase.rb lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb lib/feed_tools/vendor/html5/lib/html5/serializer/xhtmlserializer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_caption_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_frameset_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/serializer/htmlserializer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/root_element_phase.rb lib/feed_tools/vendor/html5/lib/html5/tokenizer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_select_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/before_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/inputstream.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_row_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_cell_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_body_phase.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/after_head_phase.rb lib/feed_tools/vendor/html5/lib/html5/sanitizer.rb lib/feed_tools/vendor/html5/lib/html5/html5parser/in_column_group_phase.rb lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb lib/feed_tools/vendor/html5/lib/html5/treewalkers/hpricot.rb Hpricot TokenConstructor lib/feed_tools/vendor/html5/lib/html5/treewalkers/rexml.rb REXML lib/feed_tools/vendor/html5/lib/html5/treewalkers/simpletree.rb SimpleTree TreeWalkers HTMLSanitizeModule lib/feed_tools/vendor/html5/lib/html5/treebuilders/hpricot.rb Hpricot lib/feed_tools/vendor/html5/lib/html5/treebuilders/base.rb Base lib/feed_tools/vendor/html5/lib/html5/treebuilders/rexml.rb REXML lib/feed_tools/vendor/html5/lib/html5/treebuilders/simpletree.rb SimpleTree TreeBuilders lib/feed_tools/vendor/html5/tests/preamble.rb TestSupport Sniffer lib/feed_tools/vendor/html5/lib/html5/filters/whitespace.rb lib/feed_tools/vendor/html5/lib/html5/filters/optionaltags.rb lib/feed_tools/vendor/html5/lib/html5/filters/base.rb lib/feed_tools/vendor/html5/lib/html5/filters/inject_meta_charset.rb lib/feed_tools/vendor/html5/lib/html5/filters/sanitizer.rb Filters HTML5 dot/m_60_0.png

liberal XML parser

Methods

Public Class methods

[Source]

    # File lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb, line 22
22:     def initialize(options = {})
23:       super options
24:       @phases[:initial] = XmlRootPhase.new(self, @tree)
25:     end

Public Instance methods

[Source]

    # File lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb, line 27
27:     def normalize_token(token)
28:       case token[:type]
29:       when :StartTag, :EmptyTag
30:         # We need to remove the duplicate attributes and convert attributes
31:         # to a Hash so that [["x", "y"], ["x", "z"]] becomes {"x": "y"}
32: 
33:         token[:data] = Hash[*token[:data].reverse.flatten]
34: 
35:         # For EmptyTags, process both a Start and an End tag
36:         if token[:type] == :EmptyTag
37:           save = @tokenizer.content_model_flag
38:           @phase.processStartTag(token[:name], token[:data])
39:           @tokenizer.content_model_flag = save
40:           token[:data] = {}
41:           token[:type] = :EndTag
42:         end
43: 
44:       when :Characters
45:         # un-escape RCDATA_ELEMENTS (e.g. style, script)
46:         if @tokenizer.content_model_flag == :CDATA
47:           token[:data] = token[:data].
48:             gsub('&lt;','<').gsub('&gt;','>').gsub('&amp;','&')
49:         end
50: 
51:       when :EndTag
52:         if token[:data]
53:            parse_error("attributes-in-end-tag")
54:         end
55: 
56:       when :Comment
57:         # Rescue CDATA from the comments
58:         if token[:data][0..6] == "[CDATA[" and token[:data][-2..-1] == "]]"
59:           token[:type] = :Characters
60:           token[:data] = token[:data][7 ... -2]
61:         end
62:       end
63: 
64:       return token
65:     end

[Validate]