onigmo 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/.github/workflows/main.yml +31 -0
- data/.gitignore +10 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +29 -0
- data/LICENSE +7 -0
- data/README.md +101 -0
- data/Rakefile +45 -0
- data/bin/console +10 -0
- data/ext/onigmo/extconf.rb +7 -0
- data/ext/onigmo/onigmo.c +985 -0
- data/ext/onigmo/regenc.h +256 -0
- data/ext/onigmo/regint.h +945 -0
- data/ext/onigmo/regparse.h +370 -0
- data/lib/onigmo/deconstruct_visitor.rb +121 -0
- data/lib/onigmo/json_visitor.rb +123 -0
- data/lib/onigmo/node.rb +266 -0
- data/lib/onigmo/pretty_print_visitor.rb +284 -0
- data/lib/onigmo/visitor.rb +339 -0
- data/lib/onigmo.rb +11 -0
- data/onigmo.gemspec +16 -0
- metadata +64 -0
@@ -0,0 +1,339 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Onigmo
|
4
|
+
class AlternationNode
|
5
|
+
def accept(visitor)
|
6
|
+
visitor.visit_alternation_node(self)
|
7
|
+
end
|
8
|
+
|
9
|
+
def child_nodes
|
10
|
+
[*nodes]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class AnchorBufferBeginNode
|
15
|
+
def accept(visitor)
|
16
|
+
visitor.visit_anchor_buffer_begin_node(self)
|
17
|
+
end
|
18
|
+
|
19
|
+
def child_nodes
|
20
|
+
[]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class AnchorBufferEndNode
|
25
|
+
def accept(visitor)
|
26
|
+
visitor.visit_anchor_buffer_end_node(self)
|
27
|
+
end
|
28
|
+
|
29
|
+
def child_nodes
|
30
|
+
[]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class AnchorKeepNode
|
35
|
+
def accept(visitor)
|
36
|
+
visitor.visit_anchor_keep_node(self)
|
37
|
+
end
|
38
|
+
|
39
|
+
def child_nodes
|
40
|
+
[]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class AnchorLineBeginNode
|
45
|
+
def accept(visitor)
|
46
|
+
visitor.visit_anchor_line_begin_node(self)
|
47
|
+
end
|
48
|
+
|
49
|
+
def child_nodes
|
50
|
+
[]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class AnchorLineEndNode
|
55
|
+
def accept(visitor)
|
56
|
+
visitor.visit_anchor_line_end_node(self)
|
57
|
+
end
|
58
|
+
|
59
|
+
def child_nodes
|
60
|
+
[]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class AnchorPositionBeginNode
|
65
|
+
def accept(visitor)
|
66
|
+
visitor.visit_anchor_position_begin_node(self)
|
67
|
+
end
|
68
|
+
|
69
|
+
def child_nodes
|
70
|
+
[]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class AnchorSemiEndNode
|
75
|
+
def accept(visitor)
|
76
|
+
visitor.visit_anchor_semi_end_node(self)
|
77
|
+
end
|
78
|
+
|
79
|
+
def child_nodes
|
80
|
+
[]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
class AnchorWordBoundaryNode
|
85
|
+
def accept(visitor)
|
86
|
+
visitor.visit_anchor_word_boundary_node(self)
|
87
|
+
end
|
88
|
+
|
89
|
+
def child_nodes
|
90
|
+
[]
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
class AnchorWordBoundaryInvertNode
|
95
|
+
def accept(visitor)
|
96
|
+
visitor.visit_anchor_word_boundary_invert_node(self)
|
97
|
+
end
|
98
|
+
|
99
|
+
def child_nodes
|
100
|
+
[]
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
class AnyNode
|
105
|
+
def accept(visitor)
|
106
|
+
visitor.visit_any_node(self)
|
107
|
+
end
|
108
|
+
|
109
|
+
def child_nodes
|
110
|
+
[]
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
class BackrefNode
|
115
|
+
def accept(visitor)
|
116
|
+
visitor.visit_backref_node(self)
|
117
|
+
end
|
118
|
+
|
119
|
+
def child_nodes
|
120
|
+
[]
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
class CallNode
|
125
|
+
def accept(visitor)
|
126
|
+
visitor.visit_call_node(self)
|
127
|
+
end
|
128
|
+
|
129
|
+
def child_nodes
|
130
|
+
[]
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
class CClassNode
|
135
|
+
def accept(visitor)
|
136
|
+
visitor.visit_cclass_node(self)
|
137
|
+
end
|
138
|
+
|
139
|
+
def child_nodes
|
140
|
+
[]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
class CClassInvertNode
|
145
|
+
def accept(visitor)
|
146
|
+
visitor.visit_cclass_invert_node(self)
|
147
|
+
end
|
148
|
+
|
149
|
+
def child_nodes
|
150
|
+
[]
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
class EncloseAbsentNode
|
155
|
+
def accept(visitor)
|
156
|
+
visitor.visit_enclose_absent_node(self)
|
157
|
+
end
|
158
|
+
|
159
|
+
def child_nodes
|
160
|
+
[node]
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
class EncloseConditionNode
|
165
|
+
def accept(visitor)
|
166
|
+
visitor.visit_enclose_condition_node(self)
|
167
|
+
end
|
168
|
+
|
169
|
+
def child_nodes
|
170
|
+
[node]
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
class EncloseMemoryNode
|
175
|
+
def accept(visitor)
|
176
|
+
visitor.visit_enclose_memory_node(self)
|
177
|
+
end
|
178
|
+
|
179
|
+
def child_nodes
|
180
|
+
[node]
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
class EncloseOptionsNode
|
185
|
+
def accept(visitor)
|
186
|
+
visitor.visit_enclose_options_node(self)
|
187
|
+
end
|
188
|
+
|
189
|
+
def child_nodes
|
190
|
+
[node]
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
class EncloseStopBacktrackNode
|
195
|
+
def accept(visitor)
|
196
|
+
visitor.visit_enclose_stop_backtrack_node(self)
|
197
|
+
end
|
198
|
+
|
199
|
+
def child_nodes
|
200
|
+
[node]
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
class ListNode
|
205
|
+
def accept(visitor)
|
206
|
+
visitor.visit_list_node(self)
|
207
|
+
end
|
208
|
+
|
209
|
+
def child_nodes
|
210
|
+
[*nodes]
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
class LookAheadNode
|
215
|
+
def accept(visitor)
|
216
|
+
visitor.visit_look_ahead_node(self)
|
217
|
+
end
|
218
|
+
|
219
|
+
def child_nodes
|
220
|
+
[node]
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
class LookAheadInvertNode
|
225
|
+
def accept(visitor)
|
226
|
+
visitor.visit_look_ahead_invert_node(self)
|
227
|
+
end
|
228
|
+
|
229
|
+
def child_nodes
|
230
|
+
[node]
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
class LookBehindNode
|
235
|
+
def accept(visitor)
|
236
|
+
visitor.visit_look_behind_node(self)
|
237
|
+
end
|
238
|
+
|
239
|
+
def child_nodes
|
240
|
+
[node]
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
class LookBehindInvertNode
|
245
|
+
def accept(visitor)
|
246
|
+
visitor.visit_look_behind_invert_node(self)
|
247
|
+
end
|
248
|
+
|
249
|
+
def child_nodes
|
250
|
+
[node]
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
class QuantifierNode
|
255
|
+
def accept(visitor)
|
256
|
+
visitor.visit_quantifier_node(self)
|
257
|
+
end
|
258
|
+
|
259
|
+
def child_nodes
|
260
|
+
[node]
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
class StringNode
|
265
|
+
def accept(visitor)
|
266
|
+
visitor.visit_string_node(self)
|
267
|
+
end
|
268
|
+
|
269
|
+
def child_nodes
|
270
|
+
[]
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
class WordNode
|
275
|
+
def accept(visitor)
|
276
|
+
visitor.visit_word_node(self)
|
277
|
+
end
|
278
|
+
|
279
|
+
def child_nodes
|
280
|
+
[]
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
class WordInvertNode
|
285
|
+
def accept(visitor)
|
286
|
+
visitor.visit_word_invert_node(self)
|
287
|
+
end
|
288
|
+
|
289
|
+
def child_nodes
|
290
|
+
[]
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
class Visitor
|
295
|
+
def visit_child_nodes(node)
|
296
|
+
node.child_nodes.each { |child_node| child_node.accept(self) }
|
297
|
+
end
|
298
|
+
|
299
|
+
alias visit_alternation_node visit_child_nodes
|
300
|
+
alias visit_anchor_buffer_begin_node visit_child_nodes
|
301
|
+
alias visit_anchor_buffer_end_node visit_child_nodes
|
302
|
+
alias visit_anchor_keep_node visit_child_nodes
|
303
|
+
alias visit_anchor_line_begin_node visit_child_nodes
|
304
|
+
alias visit_anchor_line_end_node visit_child_nodes
|
305
|
+
alias visit_anchor_position_begin_node visit_child_nodes
|
306
|
+
alias visit_anchor_semi_end_node visit_child_nodes
|
307
|
+
alias visit_anchor_word_boundary_node visit_child_nodes
|
308
|
+
alias visit_anchor_word_boundary_invert_node visit_child_nodes
|
309
|
+
alias visit_any_node visit_child_nodes
|
310
|
+
alias visit_backref_node visit_child_nodes
|
311
|
+
alias visit_call_node visit_child_nodes
|
312
|
+
alias visit_cclass_node visit_child_nodes
|
313
|
+
alias visit_cclass_invert_node visit_child_nodes
|
314
|
+
alias visit_enclose_absent_node visit_child_nodes
|
315
|
+
alias visit_enclose_condition_node visit_child_nodes
|
316
|
+
alias visit_enclose_memory_node visit_child_nodes
|
317
|
+
alias visit_enclose_options_node visit_child_nodes
|
318
|
+
alias visit_enclose_stop_backtrack_node visit_child_nodes
|
319
|
+
alias visit_list_node visit_child_nodes
|
320
|
+
alias visit_look_ahead_node visit_child_nodes
|
321
|
+
alias visit_look_ahead_invert_node visit_child_nodes
|
322
|
+
alias visit_look_behind_node visit_child_nodes
|
323
|
+
alias visit_look_behind_invert_node visit_child_nodes
|
324
|
+
alias visit_quantifier_node visit_child_nodes
|
325
|
+
alias visit_string_node visit_child_nodes
|
326
|
+
alias visit_word_node visit_child_nodes
|
327
|
+
alias visit_word_invert_node visit_child_nodes
|
328
|
+
|
329
|
+
private
|
330
|
+
|
331
|
+
def visit(node)
|
332
|
+
node.accept(self)
|
333
|
+
end
|
334
|
+
|
335
|
+
def visit_all(nodes)
|
336
|
+
nodes.map { |node| visit(node) }
|
337
|
+
end
|
338
|
+
end
|
339
|
+
end
|
data/lib/onigmo.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Onigmo
|
4
|
+
require "onigmo/node"
|
5
|
+
require "onigmo/onigmo"
|
6
|
+
|
7
|
+
autoload :Visitor, "onigmo/visitor"
|
8
|
+
autoload :DeconstructVisitor, "onigmo/deconstruct_visitor"
|
9
|
+
autoload :JSONVisitor, "onigmo/json_visitor"
|
10
|
+
autoload :PrettyPrintVisitor, "onigmo/pretty_print_visitor"
|
11
|
+
end
|
data/onigmo.gemspec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "onigmo"
|
5
|
+
spec.version = "0.1.0"
|
6
|
+
spec.authors = ["Shopify"]
|
7
|
+
spec.email = ["ruby@shopify.com"]
|
8
|
+
|
9
|
+
spec.summary = "A Ruby wrapper around the onigmo regular expression library"
|
10
|
+
spec.homepage = "https://github.com/Shopify/onigmo"
|
11
|
+
spec.license = "MIT"
|
12
|
+
|
13
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
14
|
+
spec.require_paths = ["lib"]
|
15
|
+
spec.extensions = ["ext/onigmo/extconf.rb"]
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: onigmo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Shopify
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-03-19 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email:
|
15
|
+
- ruby@shopify.com
|
16
|
+
executables: []
|
17
|
+
extensions:
|
18
|
+
- ext/onigmo/extconf.rb
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- ".github/workflows/main.yml"
|
22
|
+
- ".gitignore"
|
23
|
+
- Gemfile
|
24
|
+
- Gemfile.lock
|
25
|
+
- LICENSE
|
26
|
+
- README.md
|
27
|
+
- Rakefile
|
28
|
+
- bin/console
|
29
|
+
- ext/onigmo/extconf.rb
|
30
|
+
- ext/onigmo/onigmo.c
|
31
|
+
- ext/onigmo/regenc.h
|
32
|
+
- ext/onigmo/regint.h
|
33
|
+
- ext/onigmo/regparse.h
|
34
|
+
- lib/onigmo.rb
|
35
|
+
- lib/onigmo/deconstruct_visitor.rb
|
36
|
+
- lib/onigmo/json_visitor.rb
|
37
|
+
- lib/onigmo/node.rb
|
38
|
+
- lib/onigmo/pretty_print_visitor.rb
|
39
|
+
- lib/onigmo/visitor.rb
|
40
|
+
- onigmo.gemspec
|
41
|
+
homepage: https://github.com/Shopify/onigmo
|
42
|
+
licenses:
|
43
|
+
- MIT
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubygems_version: 3.4.1
|
61
|
+
signing_key:
|
62
|
+
specification_version: 4
|
63
|
+
summary: A Ruby wrapper around the onigmo regular expression library
|
64
|
+
test_files: []
|