class Protip::Transformers::BigDecimalTransformer

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/protip/transformers/big_decimal_transformer.rb, line 10
def initialize
  super
  self['protip.messages.BigDecimalValue'] = (Class.new do
      include Protip::Transformer
      def to_object(message, field)
        Rational(message.numerator, message.denominator).to_d(message.precision)
      end

      def to_message(object, field)
        object = BigDecimal(object)
        rational = object.to_r
        field.subtype.msgclass.new(
          numerator: rational.numerator,
          denominator: rational.denominator,
          precision: object.precs[0], # This is the current precision of the decimal
        )
      end
    end).new
end

Public Instance Methods

to_message(object, field) click to toggle source
# File lib/protip/transformers/big_decimal_transformer.rb, line 18
def to_message(object, field)
  object = BigDecimal(object)
  rational = object.to_r
  field.subtype.msgclass.new(
    numerator: rational.numerator,
    denominator: rational.denominator,
    precision: object.precs[0], # This is the current precision of the decimal
  )
end
to_object(message, field) click to toggle source
# File lib/protip/transformers/big_decimal_transformer.rb, line 14
def to_object(message, field)
  Rational(message.numerator, message.denominator).to_d(message.precision)
end