Added a convenience class for parsing HTML.

This removes the need for users having to set the `:html` option themselves.
This commit is contained in:
Yorick Peterse 2014-03-25 09:40:24 +01:00
parent 58009614f6
commit 79818eb349
4 changed files with 42 additions and 1 deletions

View File

@ -1,5 +1,8 @@
require 'ast'
require_relative 'oga/ast/node'
require_relative 'oga/xml/lexer'
require_relative 'oga/xml/parser'
require_relative 'oga/html/parser'

19
lib/oga/html/parser.rb Normal file
View File

@ -0,0 +1,19 @@
module Oga
module HTML
##
# Low level AST parser for parsing HTML documents. See {Oga::XML::Parser}
# for more information.
#
class Parser < XML::Parser
##
# @param [Hash] options
# @see Oga::XML::Parser#initialize
#
def initialize(options = {})
options = options.merge(:html => true)
super(options)
end
end # Parser
end # HTML
end # Oga

View File

@ -0,0 +1,10 @@
require 'spec_helper'
describe Oga::HTML::Parser do
example 'parse an HTML void element' do
parse_html('<meta>').should == s(
:document,
s(:element, nil, 'meta', nil, nil)
)
end
end

View File

@ -23,7 +23,7 @@ module Oga
end
##
# Parses the given HTML and returns an AST.
# Parses the given XML and returns an AST.
#
# @param [String] input
# @param [Hash] options
@ -32,5 +32,14 @@ module Oga
def parse(input, options = {})
return Oga::XML::Parser.new(options).parse(input)
end
##
# Parses the given HTML and returns an AST.
#
# @see #parse
#
def parse_html(input, options = {})
return Oga::HTML::Parser.new(options).parse(input)
end
end # ParsingHelpers
end # Oga