lib/eddy/models/element/r.rb in eddy-0.5.1 vs lib/eddy/models/element/r.rb in eddy-0.6.0

- old
+ new

@@ -1,84 +1,86 @@ require "bigdecimal" module Eddy - module Element - # Decimal Numeric (decimal points must be transmitted if used). - class R < Base + module Models + module Element + # Decimal Numeric (decimal points must be transmitted if used). + class R < Base - # @param min [Integer] - # @param max [Integer] - # @param req [String] (nil) - # @param ref [String] (nil) - # @param val [Numeric] (nil) - # @return [void] - def initialize( - min:, - max:, - req: nil, - ref: nil, - val: nil - ) - @type = "R" - @min = min - @max = max - self.req = req - self.ref = ref - self.value = val - end + # @param min [Integer] + # @param max [Integer] + # @param req [String] (nil) + # @param ref [String] (nil) + # @param val [Numeric] (nil) + # @return [void] + def initialize( + min:, + max:, + req: nil, + ref: nil, + val: nil + ) + @type = "R" + @min = min + @max = max + self.req = req + self.ref = ref + self.value = val + end - # @return [String] - def value() - if @val.nil? - case self.req - when "M" then raise Eddy::Errors::ElementNilValueError.new(element: self) - when "O", "C" then return "" - else raise Eddy::Errors::Error, "Invalid req value: #{self.req}" + # @return [String] + def value() + if @val.nil? + case self.req + when "M" then raise Eddy::Errors::ElementNilValueError.new(element: self) + when "O", "C" then return "" + else raise Eddy::Errors::Error, "Invalid req value: #{self.req}" + end end + return process(@val) end - return process(@val) - end - # @param arg [Numeric] - # @raise [ArgumentError] Unless passed a Numeric value. - # @return [void] - def value=(arg) - if arg.nil? + # @param arg [Numeric] + # @raise [ArgumentError] Unless passed a Numeric value. + # @return [void] + def value=(arg) + if arg.nil? + @val = arg + return + end + raise Eddy::Errors::TypeValidationError.new(element: self, arg: arg) unless arg.is_a?(Numeric) @val = arg - return end - raise Eddy::Errors::TypeValidationError.new(element: self, arg: arg) unless arg.is_a?(Numeric) - @val = arg - end - # Stringify a float value and trim to the element's `max` attribute. - # - # TODO: Use `sprintf` here? - # - # See: - # - # - [Ruby class types and case statements (Stack Overflow)](https://stackoverflow.com/questions/3908380/ruby-class-types-and-case-statements) - # - [Numbers and Class Hierarchy in Ruby (Medium)](https://medium.com/rubyinside/numbers-and-class-hierarchy-in-ruby-8c93c4749316) - # - # @param val [Numeric] - # @return [String] - def process(val) - case val - when Integer - return val.to_s.slice(0..self.max) - when Float - return val.to_s.slice(0..(self.max + 1)) - when Complex - # TODO: Handle case - raise NotImplementedError - when Rational - # TODO: Handle case - raise NotImplementedError - when BigDecimal - # TODO: Handle case - raise NotImplementedError + # Stringify a float value and trim to the element's `max` attribute. + # + # TODO: Use `sprintf` here? + # + # See: + # + # - [Ruby class types and case statements (Stack Overflow)](https://stackoverflow.com/questions/3908380/ruby-class-types-and-case-statements) + # - [Numbers and Class Hierarchy in Ruby (Medium)](https://medium.com/rubyinside/numbers-and-class-hierarchy-in-ruby-8c93c4749316) + # + # @param val [Numeric] + # @return [String] + def process(val) + case val + when Integer + return val.to_s.slice(0..self.max) + when Float + return val.to_s.slice(0..(self.max + 1)) + when Complex + # TODO: Handle case + raise NotImplementedError + when Rational + # TODO: Handle case + raise NotImplementedError + when BigDecimal + # TODO: Handle case + raise NotImplementedError + end end - end + end end end end