abiparser 0.1.0 → 0.1.1
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 +4 -4
- data/Rakefile +1 -0
- data/lib/abiparser/constructor.rb +7 -1
- data/lib/abiparser/function.rb +15 -3
- data/lib/abiparser/param.rb +25 -9
- data/lib/abiparser/version.rb +1 -1
- data/lib/abiparser.rb +5 -5
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f938a2858e7da14cc5a8b42f4691a93c4721cef9e271168de78535c64f70115
|
4
|
+
data.tar.gz: 8450885be9f443548be957d0815bb31e3c56862f0368eb17f574ab176ea9e4b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc52799f38979a1e8b77b21d711e0ff935510ce7988bdec34e5ad0a09a5dde8db522df3038808f165dcd4178051ef49f7f832d1b76fc9fac0ef5c4f3331fd92b
|
7
|
+
data.tar.gz: 6a6d1e03041d70e7080c38ad3e534c5e57a0cd49af187c4a16dfe1f19ae7fa55d4c8a3068b12968dd64a3d23f3c08c8f4c5fd47ac96e83f9bc7da695e0dfef7b
|
data/Rakefile
CHANGED
@@ -47,14 +47,20 @@ class Constructor
|
|
47
47
|
end
|
48
48
|
|
49
49
|
|
50
|
-
attr_reader :inputs
|
50
|
+
attr_reader :inputs, :input_types
|
51
51
|
|
52
52
|
def initialize( inputs: [],
|
53
53
|
payable: false )
|
54
54
|
@inputs = inputs
|
55
55
|
@payable = payable
|
56
|
+
|
57
|
+
## parse inputs into types
|
58
|
+
## note: use "calculated" sig(nature) and NOT the type
|
59
|
+
## (differs for tuples, that is, types with components !!!)
|
60
|
+
@input_types = @inputs.map {|param| Type.parse( param.sig ) }
|
56
61
|
end
|
57
62
|
|
63
|
+
|
58
64
|
## add - why? why not?
|
59
65
|
## def constant?() false; end
|
60
66
|
## alias_method :readonly?, :constant?
|
data/lib/abiparser/function.rb
CHANGED
@@ -54,10 +54,11 @@ class Function
|
|
54
54
|
|
55
55
|
|
56
56
|
attr_reader :name,
|
57
|
-
:inputs, :outputs
|
57
|
+
:inputs, :outputs,
|
58
|
+
:input_types, :output_types
|
58
59
|
|
59
60
|
def initialize( name,
|
60
|
-
inputs:
|
61
|
+
inputs: [],
|
61
62
|
outputs: [],
|
62
63
|
payable: false,
|
63
64
|
constant: false,
|
@@ -65,10 +66,21 @@ class Function
|
|
65
66
|
@name = name
|
66
67
|
@inputs = inputs
|
67
68
|
@outputs = outputs
|
68
|
-
|
69
69
|
@payable = payable
|
70
70
|
@constant = constant
|
71
71
|
@pure = pure
|
72
|
+
|
73
|
+
## parse inputs & outputs into types
|
74
|
+
## note: use "calculated" sig(nature) and NOT the type
|
75
|
+
## (differs for tuples, that is, types with components !!!)
|
76
|
+
@input_types = @inputs.map do |param|
|
77
|
+
Type.parse( param.sig )
|
78
|
+
end
|
79
|
+
@output_types = @outputs.map do |param|
|
80
|
+
## pp param
|
81
|
+
## puts "sig: #{param.sig}"
|
82
|
+
Type.parse( param.sig )
|
83
|
+
end
|
72
84
|
end
|
73
85
|
|
74
86
|
|
data/lib/abiparser/param.rb
CHANGED
@@ -1,20 +1,25 @@
|
|
1
1
|
module ABI
|
2
2
|
class Param
|
3
|
-
attr_reader :type, :name,
|
3
|
+
attr_reader :type, :name,
|
4
|
+
:internal_type,
|
5
|
+
:components
|
4
6
|
|
5
7
|
def self.parse( o )
|
6
8
|
type = o['type']
|
7
9
|
internal_type = o['internalType']
|
8
10
|
name = o['name']
|
11
|
+
components = o['components'] ? o['components'].map { |c| parse( c ) } : nil
|
9
12
|
|
10
13
|
new( type, name,
|
11
|
-
internal_type: internal_type
|
14
|
+
internal_type: internal_type,
|
15
|
+
components: components )
|
12
16
|
end
|
13
17
|
|
14
18
|
### check - find a "better" name for internal_type
|
15
19
|
## use a keyword param - why? why not?
|
16
20
|
def initialize( type, name=nil,
|
17
|
-
|
21
|
+
internal_type: nil,
|
22
|
+
components: nil ) ## note: type goes first!!!
|
18
23
|
@type = type
|
19
24
|
## note: convert empty string "" to nil - why? why not?
|
20
25
|
@name = if name && name.empty?
|
@@ -27,20 +32,31 @@ class Param
|
|
27
32
|
else
|
28
33
|
internal_type
|
29
34
|
end
|
35
|
+
@components = components
|
30
36
|
end
|
31
37
|
|
32
38
|
|
33
39
|
def sig
|
34
|
-
|
35
|
-
|
40
|
+
@sig ||= begin
|
41
|
+
if @components
|
42
|
+
## replace tuple with (type,...)
|
43
|
+
## e.g. tuple[] becomes (type,...)[] etc.
|
44
|
+
tuple = @components.map {|c| c.sig }.join(',')
|
45
|
+
@type.sub( "tuple", "(#{tuple})" )
|
46
|
+
else
|
47
|
+
"#{@type}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
@sig
|
36
51
|
end
|
37
52
|
|
53
|
+
|
38
54
|
def doc
|
39
55
|
buf = ''
|
40
|
-
if @internal_type && @internal_type !=
|
56
|
+
if @internal_type && @internal_type != sig
|
41
57
|
buf << "#{@internal_type} "
|
42
58
|
else
|
43
|
-
buf << "#{
|
59
|
+
buf << "#{sig} "
|
44
60
|
end
|
45
61
|
buf << (@name ? @name : '_')
|
46
62
|
buf
|
@@ -48,10 +64,10 @@ class Param
|
|
48
64
|
|
49
65
|
def decl
|
50
66
|
buf = ''
|
51
|
-
buf << "#{
|
67
|
+
buf << "#{sig} "
|
52
68
|
buf << (@name ? @name : '_')
|
53
69
|
## use inline comment - why? why not?
|
54
|
-
if @internal_type && @internal_type !=
|
70
|
+
if @internal_type && @internal_type != sig
|
55
71
|
buf << " /* #{@internal_type} */"
|
56
72
|
end
|
57
73
|
buf
|
data/lib/abiparser/version.rb
CHANGED
data/lib/abiparser.rb
CHANGED
@@ -36,9 +36,12 @@ def sig( bin )
|
|
36
36
|
end
|
37
37
|
|
38
38
|
|
39
|
+
require 'abicoder'
|
40
|
+
|
39
41
|
|
40
42
|
## our own code
|
41
43
|
require_relative 'abiparser/version' # note: let version always go first
|
44
|
+
|
42
45
|
require_relative 'abiparser/param'
|
43
46
|
require_relative 'abiparser/constructor'
|
44
47
|
require_relative 'abiparser/function'
|
@@ -46,7 +49,7 @@ require_relative 'abiparser/utils'
|
|
46
49
|
require_relative 'abiparser/contract'
|
47
50
|
require_relative 'abiparser/interface'
|
48
51
|
|
49
|
-
require_relative 'abiparser/export/interface
|
52
|
+
require_relative 'abiparser/export/interface'
|
50
53
|
|
51
54
|
|
52
55
|
|
@@ -121,9 +124,6 @@ module ABI
|
|
121
124
|
end # module ABI
|
122
125
|
|
123
126
|
|
124
|
-
## add convenience alternate spellings - why? why not?
|
125
|
-
Abi = ABI
|
126
|
-
|
127
127
|
|
128
|
-
puts
|
128
|
+
puts ABIParser.banner
|
129
129
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abiparser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocos
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: abicoder
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rdoc
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|