Allow querying of nodes using CSS.
This commit is contained in:
parent
913eb6a15a
commit
e3a26c5d15
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue