nano_rpc 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19d46c77ad8cab903761e7d507889dfc7e4f446df62f88c9fb4dfbf505f332cc
4
- data.tar.gz: f8d400e69bb56c02c9d7ada64fe7dd023a58c24d0c64f99f46e5f3a9211b6c8a
3
+ metadata.gz: 06caeedce48a1cc0e468ca6f0cc98be0f452759601dfb75d4c706da2685a13d3
4
+ data.tar.gz: 1293ed07fb6fa65c46d775c950c3c411e8c7d656ba8d8258d179ce69a06a8824
5
5
  SHA512:
6
- metadata.gz: 1b854f7dec81c5f8d5744f57a45f0e5517ba9dffc5d03d5f4acbb9b46a308415f5eb17be22bd245aa3744c42d39b339d391446a204c8d434b1a650d2eb5ef42b
7
- data.tar.gz: 17ffae12a7599c097a46554355af5fb6c6b589308668ac2ebb7922bb16f37238b3b1bfc28abf96600cefccbac2c610d4b3e5713e616544f91586f78875732f02
6
+ metadata.gz: a5f1ed287ecf01ecade72a3f111dcc68c1e4ce03826632286c675d3621c566199265b07cdb209c9abf9bdc033c45a294524b9fe7e3487015972f31ea50d63f27
7
+ data.tar.gz: 8556558303db38de3e60f4d8f58297c8f80050039f80ad147daa2b64f02c4339cf25d0278a5014d274541fc51e14373e70da13aba50d024095605e8149de0304
data/README.md CHANGED
@@ -113,6 +113,16 @@ account.pending_balance
113
113
  # => 5
114
114
  ```
115
115
 
116
+ To convert from Nano to raw and back, use `#to_raw` and `#to_nano`, available on all `Numeric` objects:
117
+
118
+ ```ruby
119
+ 4622800482000000000000000000000000.to_nano
120
+ # => 4622.800482
121
+
122
+ 4622.800482.to_raw
123
+ # => 4622800482000000000000000000000000
124
+ ```
125
+
116
126
  For a comprehensive guide, see the [Wiki](https://github.com/jcraigk/ruby_nano_rpc/wiki).
117
127
 
118
128
  ## Credits
@@ -2,10 +2,12 @@
2
2
  module NanoRpc
3
3
  class Error < StandardError; end
4
4
 
5
- class NodeConnectionFailure < Error; end
6
5
  class BadRequest < Error; end
7
- class InvalidRequest < Error; end
8
6
  class ForbiddenParameter < Error; end
7
+ class InvalidNanoAmount < Error; end
8
+ class InvalidRawAmount < Error; end
9
+ class InvalidRequest < Error; end
9
10
  class MissingParameters < Error; end
11
+ class NodeConnectionFailure < Error; end
10
12
  class NodeOpenTimeout < Error; end
11
13
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+ module NanoRpc
3
+ RAW_FACTOR = 30
4
+ RAW_PRECISION = 6
5
+
6
+ module NanoToRaw
7
+ def to_raw
8
+ ensure_valid_nano_amount!
9
+ (self * 10**RAW_PRECISION).floor *
10
+ 10**(RAW_FACTOR - RAW_PRECISION)
11
+ end
12
+
13
+ private
14
+
15
+ def ensure_valid_nano_amount!
16
+ raise NanoRpc::InvalidNanoAmount unless valid_nano_amount?
17
+ end
18
+
19
+ # 133,248,290 total nano in circulation
20
+ def valid_nano_amount?
21
+ self <= 133_248_290
22
+ end
23
+ end
24
+
25
+ module RawToNano
26
+ def to_nano
27
+ ensure_valid_raw_amount!
28
+ (to_f / 10**RAW_FACTOR).round(RAW_PRECISION)
29
+ end
30
+
31
+ private
32
+
33
+ def ensure_valid_raw_amount!
34
+ raise NanoRpc::InvalidRawAmount unless valid_raw_amount?
35
+ end
36
+
37
+ # Ensure at least 10^23
38
+ def valid_raw_amount?
39
+ self >= 100_000_000_000_000_000_000_000
40
+ end
41
+ end
42
+ end
43
+
44
+ class Numeric
45
+ include NanoRpc::NanoToRaw
46
+ include NanoRpc::RawToNano
47
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module NanoRpc
3
- VERSION = '0.11.0'
3
+ VERSION = '0.12.0'
4
4
  end
data/lib/nano_rpc.rb CHANGED
@@ -11,6 +11,7 @@ require 'nano_rpc/proxy'
11
11
  require 'nano_rpc/node'
12
12
  require 'nano_rpc/errors'
13
13
  require 'nano_rpc/response'
14
+ require 'nano_rpc/numeric'
14
15
  require 'nano_rpc/proxies/account'
15
16
  require 'nano_rpc/proxies/accounts'
16
17
  require 'nano_rpc/proxies/wallet'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nano_rpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Craig-Kuhn (JCK)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-03 00:00:00.000000000 Z
11
+ date: 2018-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -173,6 +173,7 @@ files:
173
173
  - lib/nano_rpc/helpers/node_helper.rb
174
174
  - lib/nano_rpc/helpers/wallet_helper.rb
175
175
  - lib/nano_rpc/node.rb
176
+ - lib/nano_rpc/numeric.rb
176
177
  - lib/nano_rpc/proxies/account.rb
177
178
  - lib/nano_rpc/proxies/accounts.rb
178
179
  - lib/nano_rpc/proxies/wallet.rb