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
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.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 12
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
|
Class Method Details
.from_nano(value, decimals = 9) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 31
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
38
39
40
41
42
43
44
45
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 38
def add(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value += coins.value
self
end
|
#div(value) ⇒ Object
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 67
def div(value)
Coins.check_value(value)
Coins.check_convertibility(value)
divider = value.to_s
@value /= divider.to_i
self
end
|
#eq(coins) ⇒ Object
78
79
80
81
82
83
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 78
def eq(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value == coins.value
end
|
#gt(coins) ⇒ Object
85
86
87
88
89
90
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 85
def gt(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value > coins.value
end
|
#gte(coins) ⇒ Object
92
93
94
95
96
97
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 92
def gte(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value >= coins.value
end
|
#lt(coins) ⇒ Object
99
100
101
102
103
104
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 99
def lt(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value < coins.value
end
|
#lte(coins) ⇒ Object
106
107
108
109
110
111
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 106
def lte(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value <= coins.value
end
|
#mul(value) ⇒ Object
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 56
def mul(value)
Coins.check_value(value)
Coins.check_convertability(value)
multiplier = value.to_s
@value *= multiplier.to_i
self
end
|
#negative? ⇒ Boolean
113
114
115
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 113
def negative?
@value.negative?
end
|
#positive? ⇒ Boolean
117
118
119
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 117
def positive?
@value.positive?
end
|
#sub(coins) ⇒ Object
47
48
49
50
51
52
53
54
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 47
def sub(coins)
Coins.check_coins(coins)
Coins.compare_coins_decimals(self, coins)
@value -= coins.value
self
end
|
#to_nano ⇒ Object
134
135
136
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 134
def to_nano
@value.to_i
end
|
#to_s ⇒ Object
125
126
127
128
129
130
131
132
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 125
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
121
122
123
|
# File 'lib/ton-sdk-ruby/types/coins.rb', line 121
def zero?
@value.zero?
end
|