Class: TonSdkRuby::Coins
Constant Summary
Constants included
from TonSdkRuby
DEPTH_BITS, FLAG_BOUNCEABLE, FLAG_NON_BOUNCEABLE, FLAG_TEST_ONLY, HASH_BITS, INT32_MAX, INT32_MIN, LEAN_BOC_MAGIC_PREFIX, LEAN_BOC_MAGIC_PREFIX_CRC, REACH_BOC_MAGIC_PREFIX, VERSION
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from TonSdkRuby
augment, base64_to_bytes, bits_to_big_int, bits_to_big_uint, bits_to_bytes, bits_to_hex, bits_to_int_uint, breadth_first_sort, bytes_compare, bytes_needed_for_words_bip39, bytes_to_base64, bytes_to_bits, bytes_to_data_string, bytes_to_hex, bytes_to_string, bytes_to_uint, crc16, crc16_bytes_be, crc32c, crc32c_bytes_le, depth_first_sort, deserialize, deserialize_cell, deserialize_fift, deserialize_header, generate_words_bip39, get_mapper, hex_to_bits, hex_to_bytes, hex_to_data_string, read_json_from_link, read_post_json_from_link, require_type, rollback, serialize, serialize_cell, sha256, sha512, sign_cell, slice_into_chunks, string_to_bytes, uint_to_hex, validate_library_reference, validate_merkle_proof, validate_merkle_update, validate_ordinary, validate_pruned_branch
Constructor Details
#initialize(value, options = {}) ⇒ Coins
Returns a new instance of Coins.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 11
def initialize(value, options = {})
is_nano = options[:is_nano] || false
decimals = options[:decimals] || 9
value = value.to_s
Coins.check_coins_type(value)
Coins.check_coins_decimals(decimals)
decimal = BigDecimal(value)
if decimal.dp > decimals
raise "Invalid Coins value, decimals places \"#{decimal.dp}\" can't be greater than selected \"#{decimals}\""
end
@decimals = decimals
@multiplier = (1 * 10) ** @decimals
@value = is_nano ? decimal : decimal * @multiplier
end
|
Instance Attribute Details
#decimals ⇒ Object
Returns the value of attribute decimals.
9
10
11
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 9
def decimals
@decimals
end
|
#multiplier ⇒ Object
Returns the value of attribute multiplier.
9
10
11
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 9
def multiplier
@multiplier
end
|
#value ⇒ Object
Returns the value of attribute value.
9
10
11
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 9
def value
@value
end
|
Class Method Details
.from_nano(value, decimals = 9) ⇒ Object
30
31
32
33
34
35
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 30
def self.from_nano(value, decimals = 9)
check_coins_type(value)
check_coins_decimals(decimals)
Coins.new(value, is_nano: true, decimals: decimals)
end
|
Instance Method Details
#add(coins) ⇒ Object
37
38
39
40
41
42
43
44
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 37
def add(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value += coins.value
self
end
|
#div(value) ⇒ Object
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 66
def div(value)
Coins.check_value(value)
Coins.check_convertibility(value)
divider = value.to_s
@value /= divider.to_i
self
end
|
#eq(coins) ⇒ Object
77
78
79
80
81
82
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 77
def eq(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value == coins.value
end
|
#gt(coins) ⇒ Object
84
85
86
87
88
89
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 84
def gt(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value > coins.value
end
|
#gte(coins) ⇒ Object
91
92
93
94
95
96
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 91
def gte(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value >= coins.value
end
|
#lt(coins) ⇒ Object
98
99
100
101
102
103
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 98
def lt(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value < coins.value
end
|
#lte(coins) ⇒ Object
105
106
107
108
109
110
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 105
def lte(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value <= coins.value
end
|
#mul(value) ⇒ Object
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 55
def mul(value)
Coins.check_value(value)
Coins.check_convertability(value)
multiplier = value.to_s
@value *= multiplier.to_i
self
end
|
#negative? ⇒ Boolean
112
113
114
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 112
def negative?
@value.negative?
end
|
#positive? ⇒ Boolean
116
117
118
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 116
def positive?
@value.positive?
end
|
#sub(coins) ⇒ Object
46
47
48
49
50
51
52
53
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 46
def sub(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value -= coins.value
self
end
|
#to_nano ⇒ Object
133
134
135
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 133
def to_nano
@value.to_i
end
|
#to_s ⇒ Object
124
125
126
127
128
129
130
131
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 124
def to_s
value = (@value / @multiplier.to_f).round(@decimals).to_s
coins = value.sub(/\.0{#{@decimals}}$/, '').sub(/(\.[0-9]*?[0-9])0+$/, '\1')
coins
end
|
#zero? ⇒ Boolean
120
121
122
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 120
def zero?
@value.zero?
end
|