ruby_header_parser 0.1.0
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 +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +55 -0
- data/.yardopts +7 -0
- data/CHANGELOG.md +5 -0
- data/CONFIG.md +126 -0
- data/LICENSE.txt +21 -0
- data/README.md +67 -0
- data/Rakefile +30 -0
- data/Steepfile +33 -0
- data/config/default.yml +170 -0
- data/lib/ruby_header_parser/argument_definition.rb +45 -0
- data/lib/ruby_header_parser/config.rb +77 -0
- data/lib/ruby_header_parser/enum_definition.rb +27 -0
- data/lib/ruby_header_parser/function_definition.rb +40 -0
- data/lib/ruby_header_parser/parser.rb +376 -0
- data/lib/ruby_header_parser/struct_definition.rb +21 -0
- data/lib/ruby_header_parser/type_definition.rb +21 -0
- data/lib/ruby_header_parser/typeref_definition.rb +32 -0
- data/lib/ruby_header_parser/util.rb +29 -0
- data/lib/ruby_header_parser/version.rb +5 -0
- data/lib/ruby_header_parser.rb +21 -0
- data/rbs_collection.lock.yaml +116 -0
- data/rbs_collection.yaml +26 -0
- data/sig/ruby_header_parser/argument_definition.rbs +14 -0
- data/sig/ruby_header_parser/config.rbs +19 -0
- data/sig/ruby_header_parser/enum_definition.rbs +10 -0
- data/sig/ruby_header_parser/function_definition.rbs +12 -0
- data/sig/ruby_header_parser/parser.rbs +84 -0
- data/sig/ruby_header_parser/struct_definition.rbs +9 -0
- data/sig/ruby_header_parser/type_definition.rbs +9 -0
- data/sig/ruby_header_parser/typeref_definition.rbs +12 -0
- data/sig/ruby_header_parser/util.rbs +9 -0
- data/sig/ruby_header_parser.rbs +7 -0
- metadata +207 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
module RubyHeaderParser
|
2
|
+
class ArgumentDefinition
|
3
|
+
attr_accessor type: String
|
4
|
+
attr_accessor name: String
|
5
|
+
attr_accessor pointer: :ref | :array | nil
|
6
|
+
attr_accessor length: Integer
|
7
|
+
|
8
|
+
def initialize: (type: String, name: String, pointer: (:ref | :array | :ref_array | :function | :sref | :str_array | :in_ref)?, ?length: Integer) -> void
|
9
|
+
|
10
|
+
def ==: (untyped other) -> bool
|
11
|
+
|
12
|
+
def pointer?: () -> bool
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module RubyHeaderParser
|
2
|
+
class Config
|
3
|
+
attr_reader data: Hash[untyped, untyped]
|
4
|
+
|
5
|
+
def initialize: (String config_file) -> void
|
6
|
+
|
7
|
+
def function_arg_pointer_hint: (function_name: String, pos: Integer) -> (:ref | :array | :ref_array | :function | :sref | :str_array | :in_ref)
|
8
|
+
|
9
|
+
def function_self_pointer_hint: (String function_name) -> (:ref | :raw)
|
10
|
+
|
11
|
+
def should_generate_function?: (String function_name) -> bool
|
12
|
+
|
13
|
+
def should_generate_struct?: (String struct_name) -> bool
|
14
|
+
|
15
|
+
def should_generate_type?: (String type_name) -> bool
|
16
|
+
|
17
|
+
def should_generate_enum?: (String enum_name) -> bool
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module RubyHeaderParser
|
2
|
+
class FunctionDefinition
|
3
|
+
attr_accessor name: String
|
4
|
+
attr_accessor definition: String
|
5
|
+
attr_accessor typeref: TyperefDefinition
|
6
|
+
attr_accessor args: Array[ArgumentDefinition]
|
7
|
+
|
8
|
+
def initialize: (name: String, definition: String, typeref: TyperefDefinition, args: Array[ArgumentDefinition]) -> void
|
9
|
+
|
10
|
+
def ==: (untyped other) -> bool
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module RubyHeaderParser
|
2
|
+
class Parser
|
3
|
+
attr_reader header_file: String
|
4
|
+
attr_reader include_paths: Array[String]
|
5
|
+
attr_reader dist_preprocessed_header_file: String
|
6
|
+
attr_reader config: Config
|
7
|
+
|
8
|
+
DEFAULT_HEADER_FILE: String
|
9
|
+
DEFAULT_INCLUDE_PATHS: Array[String]
|
10
|
+
|
11
|
+
def initialize: (
|
12
|
+
?dist_preprocessed_header_file: String?,
|
13
|
+
?header_file: String,
|
14
|
+
?include_paths: Array[String],
|
15
|
+
?config_file: String?
|
16
|
+
) -> void
|
17
|
+
|
18
|
+
def extract_function_definitions: () -> Array[FunctionDefinition]
|
19
|
+
|
20
|
+
def extract_static_inline_function_definitions: () -> Array[FunctionDefinition]
|
21
|
+
|
22
|
+
def extract_struct_definitions: () -> Array[StructDefinition]
|
23
|
+
|
24
|
+
def extract_type_definitions: () -> Array[TyperefDefinition]
|
25
|
+
|
26
|
+
def extract_enum_definitions: () -> Array[EnumDefinition]
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def __extract_function_definitions: (c_kinds: String, kind: String, is_parse_multiline_definition: bool) -> Array[FunctionDefinition]
|
31
|
+
|
32
|
+
def generate_function_definition_from_line: (line: String, kind: String, is_parse_multiline_definition: bool) -> FunctionDefinition?
|
33
|
+
|
34
|
+
def execute_ctags: (?String args) -> String
|
35
|
+
|
36
|
+
def read_definition_from_header_file: (String file, Integer line_num) -> String
|
37
|
+
|
38
|
+
def parse_function_definition: (
|
39
|
+
filepath: String,
|
40
|
+
pattern: String,
|
41
|
+
line_num: Integer,
|
42
|
+
is_parse_multiline_definition: bool
|
43
|
+
) -> String
|
44
|
+
|
45
|
+
def parse_definition_args: (String function_name, String? signature) -> Array[ArgumentDefinition]
|
46
|
+
|
47
|
+
def create_typeref: (
|
48
|
+
definition: String,
|
49
|
+
function_name: String,
|
50
|
+
typeref_field: String?,
|
51
|
+
filepath: String,
|
52
|
+
line_num: Integer
|
53
|
+
) -> TyperefDefinition
|
54
|
+
|
55
|
+
def parse_typeref_type: (
|
56
|
+
definition: String,
|
57
|
+
function_name: String,
|
58
|
+
typeref_field: String?,
|
59
|
+
filepath: String,
|
60
|
+
line_num: Integer
|
61
|
+
) -> String
|
62
|
+
|
63
|
+
def read_file_line: (filepath: String, line_num: Integer) -> String?
|
64
|
+
|
65
|
+
def generate_argument_definition: (
|
66
|
+
function_name: String,
|
67
|
+
arg: String,
|
68
|
+
arg_pos: Integer
|
69
|
+
) -> ArgumentDefinition
|
70
|
+
|
71
|
+
def analyze_argument_type: (
|
72
|
+
function_name: String,
|
73
|
+
arg_pos: Integer,
|
74
|
+
parts: Array[String]
|
75
|
+
) -> [String, (:ref | :array | :ref_array | :function | :sref | :str_array | :in_ref)?, Integer]
|
76
|
+
|
77
|
+
def prepare_argument_parts: (
|
78
|
+
parts: Array[String],
|
79
|
+
arg_pos: Integer
|
80
|
+
) -> [(:array)?, Integer]
|
81
|
+
|
82
|
+
def pointer_length: (String) -> Integer
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module RubyHeaderParser
|
2
|
+
class TyperefDefinition
|
3
|
+
attr_accessor type: String
|
4
|
+
attr_accessor pointer: :ref | :raw | nil
|
5
|
+
|
6
|
+
def initialize: (type: String, pointer: (:ref | :raw)?) -> void
|
7
|
+
|
8
|
+
def ==: (untyped other) -> bool
|
9
|
+
|
10
|
+
def pointer?: () -> bool
|
11
|
+
end
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby_header_parser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- sue445
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-10-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-its
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-parameterized
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-temp_dir
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop_auto_corrector
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: steep
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: yard
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: Parser for ruby.h
|
140
|
+
email:
|
141
|
+
- sue445@sue445.net
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- ".rspec"
|
147
|
+
- ".rubocop.yml"
|
148
|
+
- ".yardopts"
|
149
|
+
- CHANGELOG.md
|
150
|
+
- CONFIG.md
|
151
|
+
- LICENSE.txt
|
152
|
+
- README.md
|
153
|
+
- Rakefile
|
154
|
+
- Steepfile
|
155
|
+
- config/default.yml
|
156
|
+
- lib/ruby_header_parser.rb
|
157
|
+
- lib/ruby_header_parser/argument_definition.rb
|
158
|
+
- lib/ruby_header_parser/config.rb
|
159
|
+
- lib/ruby_header_parser/enum_definition.rb
|
160
|
+
- lib/ruby_header_parser/function_definition.rb
|
161
|
+
- lib/ruby_header_parser/parser.rb
|
162
|
+
- lib/ruby_header_parser/struct_definition.rb
|
163
|
+
- lib/ruby_header_parser/type_definition.rb
|
164
|
+
- lib/ruby_header_parser/typeref_definition.rb
|
165
|
+
- lib/ruby_header_parser/util.rb
|
166
|
+
- lib/ruby_header_parser/version.rb
|
167
|
+
- rbs_collection.lock.yaml
|
168
|
+
- rbs_collection.yaml
|
169
|
+
- sig/ruby_header_parser.rbs
|
170
|
+
- sig/ruby_header_parser/argument_definition.rbs
|
171
|
+
- sig/ruby_header_parser/config.rbs
|
172
|
+
- sig/ruby_header_parser/enum_definition.rbs
|
173
|
+
- sig/ruby_header_parser/function_definition.rbs
|
174
|
+
- sig/ruby_header_parser/parser.rbs
|
175
|
+
- sig/ruby_header_parser/struct_definition.rbs
|
176
|
+
- sig/ruby_header_parser/type_definition.rbs
|
177
|
+
- sig/ruby_header_parser/typeref_definition.rbs
|
178
|
+
- sig/ruby_header_parser/util.rbs
|
179
|
+
homepage: https://github.com/sue445/ruby_header_parser
|
180
|
+
licenses:
|
181
|
+
- MIT
|
182
|
+
metadata:
|
183
|
+
homepage_uri: https://github.com/sue445/ruby_header_parser
|
184
|
+
source_code_uri: https://github.com/sue445/ruby_header_parser
|
185
|
+
changelog_uri: https://github.com/sue445/ruby_header_parser/blob/main/CHANGELOG.md
|
186
|
+
documentation_uri: https://sue445.github.io/ruby_header_parser/
|
187
|
+
rubygems_mfa_required: 'true'
|
188
|
+
post_install_message:
|
189
|
+
rdoc_options: []
|
190
|
+
require_paths:
|
191
|
+
- lib
|
192
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: 3.3.0
|
197
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
requirements: []
|
203
|
+
rubygems_version: 3.5.16
|
204
|
+
signing_key:
|
205
|
+
specification_version: 4
|
206
|
+
summary: Parser for ruby.h
|
207
|
+
test_files: []
|