Class: Banano::Unit

Inherits:
Object
  • Object
show all
Defined in:
lib/banano/unit.rb

Constant Summary collapse

STEP =

Constant used to convert back and forth between raw and banano

BigDecimal(10)**29
TOTAL =
(BigDecimal(2)**128 - 1).to_i

Class Method Summary collapse

Class Method Details

.ban_to_raw(banano) ⇒ Integer

Converts an amount of banano to an amount of raw.

Parameters:

  • banano (Float|Integer)

    amount in banano

Returns:

  • (Integer)

    amount in raw



15
16
17
18
19
20
21
22
# File 'lib/banano/unit.rb', line 15

def self.ban_to_raw(banano)
  return 0 unless banano.is_a?(Numeric) && banano > 0

  result = (banano * STEP).to_i
  return 0 if result > TOTAL

  result
end

.raw_to_ban(raw) ⇒ Float|Integer

Converts an amount of raw to an amount of banano

Parameters:

  • raw (BigDecimal|String)

    amount in raw

Returns:

  • (Float|Integer)

    amount in banano



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/banano/unit.rb', line 28

def self.raw_to_ban(raw)
  return 0 unless raw.is_a?(BigDecimal) || raw.is_a?(String)

  begin
    value = raw.is_a?(String) ? BigDecimal(raw) : raw
    return 0 if value < 1.0 || value > TOTAL

    value / STEP
  rescue ArgumentError
    0
  end
end