Class: Plurimath::Formatter::Numbers::Parts
- Inherits:
-
Object
- Object
- Plurimath::Formatter::Numbers::Parts
- Defined in:
- lib/plurimath/formatter/numbers/parts.rb
Overview
Normalized digit value object passed between transforms before localization.
Instance Attribute Summary collapse
-
#base ⇒ Object
readonly
Returns the value of attribute base.
-
#fraction_digits ⇒ Object
readonly
Returns the value of attribute fraction_digits.
-
#integer_digits ⇒ Object
readonly
Returns the value of attribute integer_digits.
-
#sign ⇒ Object
readonly
Returns the value of attribute sign.
Instance Method Summary collapse
- #fractional? ⇒ Boolean
-
#initialize(sign:, base:, integer_digits:, fraction_digits:) ⇒ Parts
constructor
A new instance of Parts.
- #integer_zero? ⇒ Boolean
- #negative? ⇒ Boolean
- #significant_digit_count ⇒ Object
- #to_s ⇒ Object
- #with_digits(integer_digits: self.integer_digits, fraction_digits: self.fraction_digits) ⇒ Object
Constructor Details
#initialize(sign:, base:, integer_digits:, fraction_digits:) ⇒ Parts
Returns a new instance of Parts.
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 11 def initialize( sign:, base:, integer_digits:, fraction_digits: ) @sign = sign @base = base @integer_digits = normalize_integer(integer_digits) @fraction_digits = fraction_digits.to_s end |
Instance Attribute Details
#base ⇒ Object (readonly)
Returns the value of attribute base.
9 10 11 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 9 def base @base end |
#fraction_digits ⇒ Object (readonly)
Returns the value of attribute fraction_digits.
9 10 11 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 9 def fraction_digits @fraction_digits end |
#integer_digits ⇒ Object (readonly)
Returns the value of attribute integer_digits.
9 10 11 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 9 def integer_digits @integer_digits end |
#sign ⇒ Object (readonly)
Returns the value of attribute sign.
9 10 11 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 9 def sign @sign end |
Instance Method Details
#fractional? ⇒ Boolean
23 24 25 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 23 def fractional? !fraction_digits.empty? end |
#integer_zero? ⇒ Boolean
27 28 29 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 27 def integer_zero? integer_digits == "0" end |
#negative? ⇒ Boolean
31 32 33 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 31 def negative? sign.negative? end |
#significant_digit_count ⇒ Object
35 36 37 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 35 def significant_digit_count digits.sub(/\A0+/, "").length end |
#to_s ⇒ Object
51 52 53 54 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 51 def to_s number = fractional? ? "#{integer_digits}.#{fraction_digits}" : integer_digits negative? ? "-#{number}" : number end |
#with_digits(integer_digits: self.integer_digits, fraction_digits: self.fraction_digits) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/plurimath/formatter/numbers/parts.rb', line 39 def with_digits( integer_digits: self.integer_digits, fraction_digits: self.fraction_digits ) self.class.new( sign: sign, base: base, integer_digits: integer_digits, fraction_digits: fraction_digits, ) end |