| Class | HTML5::XHTMLParser |
| In: |
lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb
|
| Parent: | XMLParser |
liberal XMTHML parser
# File lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb, line 71
71: def initialize(options = {})
72: super options
73: @phases[:initial] = InitialPhase.new(self, @tree)
74: @phases[:rootElement] = XhmlRootPhase.new(self, @tree)
75: end
# File lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb, line 77
77: def normalize_token(token)
78: super(token)
79:
80: # ensure that non-void XHTML elements have content so that separate
81: # open and close tags are emitted
82: if token[:type] == :EndTag
83: if VOID_ELEMENTS.include? token[:name]
84: if @tree.open_elements[-1].name != token["name"]
85: token[:type] = :EmptyTag
86: token["data"] ||= {}
87: end
88: else
89: if token[:name] == @tree.open_elements[-1].name and \
90: not @tree.open_elements[-1].hasContent
91: @tree.insertText('') unless
92: @tree.open_elements.any? {|e|
93: e.attributes.keys.include? 'xmlns' and
94: e.attributes['xmlns'] != 'http://www.w3.org/1999/xhtml'
95: }
96: end
97: end
98: end
99:
100: return token
101: end