class FrOData::Properties::Decimal

Defines the Decimal FrOData type.

Public Instance Methods

type() click to toggle source

The FrOData type name

# File lib/frodata/properties/decimal.rb, line 23
def type
  'Edm.Decimal'
end
url_value() click to toggle source

Value to be used in URLs. @return [String]

# File lib/frodata/properties/decimal.rb, line 29
def url_value
  "#{value.to_f}"
end
value() click to toggle source

Returns the property value, properly typecast @return [BigDecimal,nil]

# File lib/frodata/properties/decimal.rb, line 7
def value
  if (@value.nil? || @value.empty?) && (strict? && allows_nil?)
    nil
  else
    BigDecimal(@value)
  end
end
value=(new_value) click to toggle source

Sets the property value @params new_value something BigDecimal() can parse

# File lib/frodata/properties/decimal.rb, line 17
def value=(new_value)
  validate(BigDecimal(new_value.to_s))
  @value = new_value.to_s
end

Private Instance Methods

max_value() click to toggle source
# File lib/frodata/properties/decimal.rb, line 45
def max_value
  @max ||= BigDecimal(7.9 * (10**28), 2)
end
min_value() click to toggle source
# File lib/frodata/properties/decimal.rb, line 41
def min_value
  @min ||= BigDecimal(-7.9 * (10**28), 2)
end
validate(value) click to toggle source
# File lib/frodata/properties/decimal.rb, line 35
def validate(value)
  if value > max_value || value < min_value || value.precs.first > 29
    validation_error "Value is outside accepted range: #{min_value} to #{max_value}, or has more than 29 significant digits"
  end
end