Handle boolean values in the boolean() function.

This commit is contained in:
Yorick Peterse 2014-08-28 09:36:21 +02:00
parent 8fb8fb17b6
commit 809ed9bfa6
2 changed files with 14 additions and 3 deletions

View File

@ -1075,12 +1075,15 @@ module Oga
# #
def on_call_boolean(context, expression) def on_call_boolean(context, expression)
retval = process(expression, context) retval = process(expression, context)
bool = false
if retval.is_a?(Numeric) if retval.is_a?(Numeric)
return !retval.nan? && !retval.zero? bool = !retval.nan? && !retval.zero?
else elsif retval
return retval && !retval.empty? bool = !retval.respond_to?(:empty?) || !retval.empty?
end end
return bool
end end
## ##

View File

@ -19,6 +19,14 @@ describe Oga::XPath::Evaluator do
@evaluator.evaluate('boolean(10)').should == true @evaluator.evaluate('boolean(10)').should == true
end end
example 'return true for a boolean true' do
@evaluator.evaluate('boolean(true())').should == true
end
example 'return false for a boolean false' do
@evaluator.evaluate('boolean(false())').should == false
end
example 'return true for a positive float' do example 'return true for a positive float' do
@evaluator.evaluate('boolean(10.5)').should == true @evaluator.evaluate('boolean(10.5)').should == true
end end