Class: Plurimath::Formatter::Numbers::Parts

Inherits:
Object
  • Object
show all
Defined in:
lib/plurimath/formatter/numbers/parts.rb

Overview

Normalized digit value object passed between transforms before localization.

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#baseObject (readonly)

Returns the value of attribute base.



9
10
11
# File 'lib/plurimath/formatter/numbers/parts.rb', line 9

def base
  @base
end

#fraction_digitsObject (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_digitsObject (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

#signObject (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

Returns:

  • (Boolean)


23
24
25
# File 'lib/plurimath/formatter/numbers/parts.rb', line 23

def fractional?
  !fraction_digits.empty?
end

#integer_zero?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/plurimath/formatter/numbers/parts.rb', line 27

def integer_zero?
  integer_digits == "0"
end

#negative?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/plurimath/formatter/numbers/parts.rb', line 31

def negative?
  sign.negative?
end

#significant_digit_countObject



35
36
37
# File 'lib/plurimath/formatter/numbers/parts.rb', line 35

def significant_digit_count
  digits.sub(/\A0+/, "").length
end

#to_sObject



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