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.
@@ -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,10 @@
1
+ module RubyHeaderParser
2
+ class EnumDefinition
3
+ attr_accessor name: String
4
+ attr_accessor values: Array[String]
5
+
6
+ def initialize: (name: String, ?values: Array[String]) -> void
7
+
8
+ def ==: (untyped other) -> bool
9
+ end
10
+ 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,9 @@
1
+ module RubyHeaderParser
2
+ class StructDefinition
3
+ attr_accessor name: String
4
+
5
+ def initialize: (name: String) -> void
6
+
7
+ def ==: (untyped other) -> bool
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module RubyHeaderParser
2
+ class TypeDefinition
3
+ attr_accessor name: String
4
+
5
+ def initialize: (name: String) -> void
6
+
7
+ def ==: (untyped other) -> bool
8
+ end
9
+ 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
@@ -0,0 +1,9 @@
1
+ module RubyHeaderParser
2
+ module Util
3
+ def self.find_field: (Array[String] array, String field_name) -> String?
4
+
5
+ def self.split_signature: (String signature) -> Array[String]
6
+
7
+ def self.sanitize_type: (String type) -> String
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ module RubyHeaderParser
2
+ class Error < StandardError
3
+ end
4
+
5
+ VERSION: String
6
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
7
+ 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: []