diff --git a/lib/oga/xpath/conversion.rb b/lib/oga/xpath/conversion.rb index 1146427..c3709cc 100644 --- a/lib/oga/xpath/conversion.rb +++ b/lib/oga/xpath/conversion.rb @@ -63,7 +63,13 @@ module Oga value = value.text end - Float(value) rescue Float::NAN + if value == true + 1.0 + elsif value == false + 0.0 + else + Float(value) rescue Float::NAN + end end # @return [TrueClass|FalseClass] diff --git a/spec/oga/xpath/conversion_spec.rb b/spec/oga/xpath/conversion_spec.rb index 6737b62..2b0ad5a 100644 --- a/spec/oga/xpath/conversion_spec.rb +++ b/spec/oga/xpath/conversion_spec.rb @@ -182,6 +182,18 @@ describe Oga::XPath::Conversion do described_class.to_float(nil).should be_nan end end + + describe 'using a TrueClass' do + it 'returns 1.0' do + described_class.to_float(true).should == 1.0 + end + end + + describe 'using a FalseClass' do + it 'returns 0.0' do + described_class.to_float(false).should == 0.0 + end + end end describe 'to_boolean' do