class XapianDb::TypeCodec::NumberCodec

Public Class Methods

decode(encoded_number) click to toggle source

Decode a string to a BigDecimal @param [String] number_as_string a string representing a number @return [BigDecimal] the decoded number

    # File lib/type_codec.rb
161 def self.decode(encoded_number)
162   begin
163     BigDecimal(Xapian::sortable_unserialise(encoded_number).to_s)
164   rescue TypeError
165     raise ArgumentError.new "#{encoded_number} cannot be unserialized"
166   end
167 end
encode(number) click to toggle source

Encode a number to a sortable string @param [Integer, BigDecimal, Bignum, Float] number a number object to encode @return [String] the encoded number

    # File lib/type_codec.rb
147 def self.encode(number)
148   case number.class.name
149     when "Fixnum", "Float", "Bignum", "Integer"
150       Xapian::sortable_serialise number
151     when "BigDecimal"
152       Xapian::sortable_serialise number.to_f
153     else
154       raise ArgumentError.new "#{number} was expected to be a number"
155   end
156 end