abi_coder_rb 0.2.1 → 0.2.3

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: 603c8a3cab98c321861f9480f1f668ffdf3559553974d09bdcd46858d97a44ea
4
- data.tar.gz: 036b109f1f9f53088d592aeac51a66a9147707ae74a93a431a9c2be65617e37a
3
+ metadata.gz: 35ffe301040ab5e55279be3bb020ba62d5ba3488f94217b055aeca82a403f229
4
+ data.tar.gz: 5a2926ad367ec5fb5e4c9600dd67fd9a9550148bfdd53beb7b3d85e8b960ebff
5
5
  SHA512:
6
- metadata.gz: 1d6358050ac16002065cb2b379bafa1ed85f3cacdcec82998c69408cbd22d46ce47e554a73f2ca1bae9edc9279505cd18d62412a87271503dcf1488ca97f3fe5
7
- data.tar.gz: a4b083f13af344d38aea6acbc5b267f8c0763217ec98041cb8b12d88e2896c5e92df66b8911c6a7524c83f777af05932ebe10ac56bb20523dbacd9a86de52d91
6
+ metadata.gz: 40b222a5fbebb49b769f49ce10c0d1ec808d6c966a42338374e1a5faae5bd27378d15498f09e87de8ba3db12b724748524deba3ca02bedb5e2c6fd58a1ad724b
7
+ data.tar.gz: 05b4d4f66357980d6cef05c187790374ee4c8f23b7479c90faa3c2ac84c9cf5bb5833867e2cf8ebd8cfefaceff260e042e7fdacbf81d6cd8997e738c9794d793
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- abi_coder_rb (0.2.1)
4
+ abi_coder_rb (0.2.3)
5
5
  activesupport
6
6
 
7
7
  GEM
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AbiCoderRb
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.3"
5
5
  end
@@ -10,7 +10,8 @@ class EventDecoder
10
10
  # data_inputs
11
11
  :data_inputs, :data_type_str, :data_field_names, :data_field_names_flattened
12
12
 
13
- def initialize(event_abi)
13
+ # flatten_sep: separator for flattening event name if it is nested
14
+ def initialize(event_abi, flatten_sep = ".")
14
15
  @event_abi = event_abi
15
16
  @indexed_topic_inputs, @data_inputs = event_abi["inputs"].partition { |input| input["indexed"] }
16
17
 
@@ -23,7 +24,7 @@ class EventDecoder
23
24
  @data_type_str = fields_type_str(@data_fields)
24
25
 
25
26
  @data_field_names = fields_names(@data_fields)
26
- @data_field_names_flattened = fields_names_flatten(@data_fields)
27
+ @data_field_names_flattened = fields_names_flatten(@data_fields, sep: flatten_sep)
27
28
 
28
29
  # add after_decoding action
29
30
  after_decoding lambda { |type, value|
@@ -55,6 +56,8 @@ class EventDecoder
55
56
  end
56
57
 
57
58
  def decode_data(data, flatten: true, with_names: false)
59
+ return with_names ? {} : [] if @data_type_str == "()"
60
+
58
61
  data_values = decode(@data_type_str, hex_to_bin(data))
59
62
 
60
63
  case flatten
@@ -122,16 +125,17 @@ class EventDecoder
122
125
  #
123
126
  # returns:
124
127
  # ["root", "message_channel", "message_index", "message_fromChainId", "message_from", "message_toChainId", "message_to", "message_gasLimit", "message_encoded"]
125
- def fields_names_flatten(fields, prefix = nil)
128
+ def fields_names_flatten(fields, prefix: nil, sep: "_")
126
129
  fields.map do |name, type|
127
130
  name = name.underscore
128
131
  if type.is_a?(::Array)
129
132
  fields_names_flatten(
130
133
  type,
131
- prefix.nil? ? name : "#{prefix}.#{name}"
134
+ prefix: prefix.nil? ? name : "#{prefix}#{sep}#{name}",
135
+ sep: sep
132
136
  )
133
137
  elsif type.is_a?(::String)
134
- prefix.nil? ? name : "#{prefix}.#{name}"
138
+ prefix.nil? ? name : "#{prefix}#{sep}#{name}"
135
139
  end
136
140
  end.flatten
137
141
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abi_coder_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aki Wu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-29 00:00:00.000000000 Z
11
+ date: 2023-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport