Allow querying of nodes using CSS.

This commit is contained in:
Yorick Peterse 2014-11-14 01:05:29 +01:00
parent 913eb6a15a
commit e3a26c5d15
2 changed files with 36 additions and 0 deletions

View File

@ -27,6 +27,30 @@ module Oga
return result.is_a?(XML::NodeSet) ? result.first : result return result.is_a?(XML::NodeSet) ? result.first : result
end end
##
# Evaluates the given CSS expression.
#
# @param [String] expression The CSS expression to run.
# @see [Oga::XPath::Evaluator#initialize]
#
def css(expression)
ast = CSS::Parser.new(expression).parse
return XPath::Evaluator.new(self).evaluate_ast(ast)
end
##
# Evaluates the given CSS expression and returns the first node in the
# set.
#
# @see [#css]
#
def at_css(*args)
result = css(*args)
return result.is_a?(XML::NodeSet) ? result.first : result
end
end # Querying end # Querying
end # XML end # XML
end # Oga end # Oga

View File

@ -32,4 +32,16 @@ describe Oga::XML::Querying do
@document.at_xpath('$number', 'number' => 10).should == 10 @document.at_xpath('$number', 'number' => 10).should == 10
end end
end end
context '#css' do
example 'query a document' do
@document.css('a').should == @document.children
end
end
context '#at_css' do
example 'query a document' do
@document.at_css('a').should == @document.children[0]
end
end
end end