etheruby 0.9.4 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3820276ab8945379dd964e4bb2eb648acdac6f74
4
- data.tar.gz: 9fb6b699587224619e6e73d8d53a4c708b4b731a
3
+ metadata.gz: 2b35960ad21669693e324f1b0fe5a149f969b1fa
4
+ data.tar.gz: 0e449c63f6191bc83c3787b1028f18a74734ed08
5
5
  SHA512:
6
- metadata.gz: a3a66b0a3f071199be7f96e40eea49be3e526616b489db56227c685fa039297905876b75b11e4db695ce2c116bed293c2c49a834ede7bda30e83d4bd930d3a46
7
- data.tar.gz: 92c55c8446de0ff92746e0b6a575bb7e2afb452dea3c0f67654d4767efc82be8afe5cdd3933796b6540a4b086c30b1e437a09092e0cf7c1f8a4db32d6f8c988c
6
+ metadata.gz: a6f60f6a5ca338aa838b236e0063aef7319fd22dd5f7b5976cbb267bdbf4612a9777d465f5a613885d1da9cbda9ac60af3759be04842a46223a6041747d34f47
7
+ data.tar.gz: 6c402d40303b0814bf19b8378588d628748ee6d0daa8098cdf0eac14cb0c1a7d26b2e586c32b12a24d46d15ff2c6761151664b5a966bc78678849324d9b68624
@@ -22,7 +22,7 @@ module Etheruby
22
22
  end
23
23
  end
24
24
 
25
- def returns(*args)
25
+ def returns(args)
26
26
  data[:returns] = args
27
27
  end
28
28
 
@@ -5,7 +5,12 @@ module Etheruby::Encoders
5
5
 
6
6
  class Address < Base
7
7
  def encode
8
- Uint.new(data).encode
8
+ puts data.class
9
+ if data.is_a?(::String)
10
+ Uint.new(data[2..64].to_i(16)).encode
11
+ else
12
+ Uint.new(data).encode
13
+ end
9
14
  end
10
15
 
11
16
  def decode
@@ -4,6 +4,15 @@ require_relative 'encoders/int'
4
4
 
5
5
  module Etheruby
6
6
 
7
+ class ResponseHolder
8
+ def initialize(_values={})
9
+ @values=_values
10
+ end
11
+ def method_missing(sym, *args)
12
+ @values[sym]
13
+ end
14
+ end
15
+
7
16
  class ResponseParser
8
17
 
9
18
  attr_reader :returns, :response
@@ -14,11 +23,12 @@ module Etheruby
14
23
  end
15
24
 
16
25
  def parse
26
+ return unless @returns
17
27
  real_response = @response
18
- values = []
28
+ responses = {}
19
29
  i = 0
20
30
  loop do
21
- return_type = returns[i]
31
+ return_name, return_type = returns.keys[i], returns.values[i]
22
32
  if Etheruby::is_static_type?(return_type)
23
33
  v, s = Etheruby::treat_variable(return_type, real_response, :decode)
24
34
  else
@@ -32,16 +42,12 @@ module Etheruby
32
42
  if v.is_a? Etheruby::Encoders::DynamicArray or v.is_a? Etheruby::Encoders::StaticArray
33
43
  v, s = v.decode
34
44
  end
35
- values << v
36
- break if values.count == returns.count
45
+ responses[return_name] = v
46
+ break if responses.count == returns.count
37
47
  real_response = real_response[s*2..real_response.length]
38
48
  i += 1
39
49
  end
40
- if values.count == 1
41
- values[0]
42
- else
43
- values
44
- end
50
+ ResponseHolder.new(responses)
45
51
  end
46
52
 
47
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etheruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jérémy SEBAN
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-19 00:00:00.000000000 Z
11
+ date: 2017-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov