srl_ruby 0.4.5 → 0.4.9
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 +5 -5
- data/.rubocop.yml +298 -23
- data/CHANGELOG.md +41 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/Rakefile +3 -0
- data/appveyor.yml +14 -12
- data/bin/srl2ruby +13 -9
- data/bin/srl2ruby_cli_parser.rb +3 -3
- data/features/lib/step_definitions/srl_testing_steps.rb +2 -0
- data/features/lib/support/env..rb +2 -0
- data/lib/regex/abstract_method.rb +2 -0
- data/lib/regex/alternation.rb +3 -3
- data/lib/regex/anchor.rb +3 -0
- data/lib/regex/atomic_expression.rb +2 -0
- data/lib/regex/capturing_group.rb +8 -3
- data/lib/regex/char_class.rb +4 -2
- data/lib/regex/char_range.rb +3 -3
- data/lib/regex/char_shorthand.rb +3 -0
- data/lib/regex/character.rb +5 -2
- data/lib/regex/compound_expression.rb +2 -0
- data/lib/regex/concatenation.rb +3 -1
- data/lib/regex/expression.rb +6 -1
- data/lib/regex/lookaround.rb +3 -1
- data/lib/regex/match_option.rb +2 -0
- data/lib/regex/monadic_expression.rb +2 -0
- data/lib/regex/multiplicity.rb +8 -9
- data/lib/regex/non_capturing_group.rb +3 -1
- data/lib/regex/polyadic_expression.rb +2 -0
- data/lib/regex/quantifiable.rb +3 -1
- data/lib/regex/raw_expression.rb +2 -0
- data/lib/regex/repetition.rb +2 -0
- data/lib/regex/wildcard.rb +2 -5
- data/lib/srl_ruby/ast_builder.rb +81 -121
- data/lib/srl_ruby/grammar.rb +80 -92
- data/lib/srl_ruby/regex_repr.rb +2 -0
- data/lib/srl_ruby/tokenizer.rb +10 -4
- data/lib/srl_ruby/version.rb +3 -1
- data/lib/srl_ruby.rb +2 -0
- data/spec/acceptance/srl_test_suite_spec.rb +2 -0
- data/spec/acceptance/support/rule_file_ast_builder.rb +2 -0
- data/spec/acceptance/support/rule_file_grammar.rb +7 -5
- data/spec/acceptance/support/rule_file_nodes.rb +2 -0
- data/spec/acceptance/support/rule_file_parser.rb +2 -0
- data/spec/acceptance/support/rule_file_tokenizer.rb +10 -3
- data/spec/regex/atomic_expression_spec.rb +2 -0
- data/spec/regex/character_spec.rb +16 -6
- data/spec/regex/match_option_spec.rb +2 -0
- data/spec/regex/monadic_expression_spec.rb +2 -0
- data/spec/regex/multiplicity_spec.rb +4 -0
- data/spec/regex/repetition_spec.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/srl_ruby/srl_ruby_spec.rb +2 -0
- data/spec/srl_ruby/tokenizer_spec.rb +2 -0
- data/spec/srl_ruby_spec.rb +8 -6
- data/srl_ruby.gemspec +6 -4
- metadata +13 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 53f0b4c07147644a3298d66dd4db0b7108fc1cc630debc1be7dc5721bca244bf
|
4
|
+
data.tar.gz: 410029ea6b5ddc36c6161d50701500af1cb406e8b39bbfa2b6d6d60839db41eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e6124858fe023541f5fc291790251c2c87a2c36cbf28f9285d4b4ed6b87c3705ce381da3536c5e70627101f17c3b203673ea175fbb3fe58f7d193219ef959c0
|
7
|
+
data.tar.gz: a74fb973b4d74fe3546e10e9466654998f0f675ebaf9253932d8fb04b516feea767ab511c86fd11522df58084049a2b0f6455e1fd54ecde7920fd8f32550fc0b
|
data/.rubocop.yml
CHANGED
@@ -1,10 +1,21 @@
|
|
1
1
|
AllCops:
|
2
2
|
Exclude:
|
3
3
|
- 'exp/**/*'
|
4
|
+
- 'demo/**/*'
|
5
|
+
|
6
|
+
Gemspec/DateAssignment:
|
7
|
+
Enabled: true
|
8
|
+
|
9
|
+
Layout/ArgumentAlignment:
|
10
|
+
Enabled: false
|
11
|
+
|
12
|
+
Layout/ArrayAlignment:
|
13
|
+
Enabled: true
|
14
|
+
EnforcedStyle: with_fixed_indentation
|
4
15
|
|
5
16
|
Layout/CaseIndentation:
|
6
17
|
Enabled: false
|
7
|
-
|
18
|
+
|
8
19
|
Layout/ClosingHeredocIndentation:
|
9
20
|
Enabled: false
|
10
21
|
|
@@ -16,7 +27,7 @@ Layout/ElseAlignment:
|
|
16
27
|
|
17
28
|
Layout/EmptyLines:
|
18
29
|
Enabled: false
|
19
|
-
|
30
|
+
|
20
31
|
Layout/EndAlignment:
|
21
32
|
Enabled: false
|
22
33
|
|
@@ -24,39 +35,127 @@ Layout/EndOfLine:
|
|
24
35
|
Enabled: true
|
25
36
|
EnforcedStyle: lf
|
26
37
|
|
38
|
+
Layout/FirstArgumentIndentation:
|
39
|
+
Enabled: false
|
40
|
+
|
41
|
+
Layout/HashAlignment:
|
42
|
+
Enabled: false
|
43
|
+
|
27
44
|
Layout/IndentationWidth:
|
28
45
|
Enabled: false
|
29
46
|
|
30
47
|
Layout/IndentationConsistency:
|
31
48
|
Enabled: true
|
32
|
-
|
33
|
-
Layout/
|
49
|
+
|
50
|
+
Layout/HeredocIndentation:
|
34
51
|
Enabled: false
|
35
|
-
|
52
|
+
|
53
|
+
Layout/LineEndStringConcatenationIndentation:
|
54
|
+
Enabled: true
|
55
|
+
|
36
56
|
Layout/MultilineHashBraceLayout:
|
37
57
|
Enabled: true
|
38
58
|
|
59
|
+
Layout/MultilineMethodCallBraceLayout:
|
60
|
+
Enabled: true
|
61
|
+
EnforcedStyle: same_line
|
62
|
+
|
39
63
|
Layout/SpaceAroundOperators:
|
40
64
|
Enabled: true
|
41
65
|
|
66
|
+
Layout/SpaceBeforeBrackets:
|
67
|
+
Enabled: true
|
68
|
+
|
42
69
|
Layout/SpaceInsideParens:
|
43
70
|
Enabled: true
|
44
|
-
|
45
|
-
Layout/
|
71
|
+
|
72
|
+
Layout/IndentationStyle:
|
73
|
+
Enabled: true
|
74
|
+
|
75
|
+
Layout/SpaceAroundMethodCallOperator:
|
46
76
|
Enabled: true
|
47
|
-
|
48
|
-
Layout/
|
77
|
+
|
78
|
+
Layout/TrailingEmptyLines:
|
49
79
|
Enabled: true
|
50
80
|
|
51
81
|
Layout/TrailingWhitespace:
|
52
82
|
Enabled: true
|
53
83
|
|
84
|
+
Lint/AmbiguousAssignment:
|
85
|
+
Enabled: true
|
86
|
+
|
87
|
+
Lint/AmbiguousOperatorPrecedence: # new in 1.21
|
88
|
+
Enabled: true
|
89
|
+
|
90
|
+
Lint/AmbiguousRange:
|
91
|
+
Enabled: true
|
92
|
+
|
93
|
+
Lint/DeprecatedConstants:
|
94
|
+
Enabled: true
|
95
|
+
|
96
|
+
Lint/DuplicateBranch:
|
97
|
+
Enabled: true
|
98
|
+
|
99
|
+
Lint/DuplicateRegexpCharacterClassElement:
|
100
|
+
Enabled: true
|
101
|
+
|
102
|
+
Lint/EmptyBlock:
|
103
|
+
Enabled: true
|
104
|
+
|
105
|
+
Lint/EmptyClass:
|
106
|
+
Enabled: false
|
107
|
+
|
108
|
+
Lint/EmptyInPattern:
|
109
|
+
Enabled: true
|
110
|
+
|
111
|
+
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
|
112
|
+
Enabled: true
|
113
|
+
|
114
|
+
Lint/LambdaWithoutLiteralBlock:
|
115
|
+
Enabled: true
|
116
|
+
|
54
117
|
Lint/Loop:
|
55
118
|
Enabled: true
|
56
119
|
|
120
|
+
Lint/NoReturnInBeginEndBlocks:
|
121
|
+
Enabled: true
|
122
|
+
|
123
|
+
Lint/NumberedParameterAssignment:
|
124
|
+
Enabled: true
|
125
|
+
|
126
|
+
Lint/OrAssignmentToConstant:
|
127
|
+
Enabled: true
|
128
|
+
|
129
|
+
Lint/RaiseException:
|
130
|
+
Enabled: true
|
131
|
+
|
132
|
+
Lint/RedundantDirGlobSort:
|
133
|
+
Enabled: true
|
134
|
+
|
135
|
+
Lint/RequireRelativeSelfPath: # new in 1.22
|
136
|
+
Enabled: true
|
137
|
+
|
57
138
|
Lint/RescueException:
|
58
139
|
Enabled: true
|
59
140
|
|
141
|
+
Lint/StructNewOverride:
|
142
|
+
Enabled: true
|
143
|
+
|
144
|
+
Lint/SymbolConversion:
|
145
|
+
Enabled: true
|
146
|
+
|
147
|
+
Lint/ToEnumArguments:
|
148
|
+
Enabled: true
|
149
|
+
|
150
|
+
Lint/TripleQuotes:
|
151
|
+
Enabled: true
|
152
|
+
|
153
|
+
Lint/UnexpectedBlockArity:
|
154
|
+
Enabled: true
|
155
|
+
|
156
|
+
Lint/UnmodifiedReduceAccumulator:
|
157
|
+
Enabled: true
|
158
|
+
|
60
159
|
Lint/UnusedMethodArgument:
|
61
160
|
Enabled: true
|
62
161
|
|
@@ -76,20 +175,24 @@ Metrics/BlockLength:
|
|
76
175
|
Enabled: true
|
77
176
|
Max: 350
|
78
177
|
|
178
|
+
Metrics/BlockNesting:
|
179
|
+
Enabled: true
|
180
|
+
Max: 5
|
181
|
+
|
79
182
|
Metrics/ClassLength:
|
80
183
|
Enabled: true
|
81
|
-
Max:
|
184
|
+
Max: 450
|
82
185
|
|
83
186
|
Metrics/CyclomaticComplexity:
|
84
187
|
Enabled: false
|
85
188
|
|
86
|
-
|
189
|
+
Layout/LineLength:
|
87
190
|
Enabled: false
|
88
191
|
Max: 90
|
89
192
|
|
90
193
|
Metrics/MethodLength:
|
91
194
|
Enabled: true
|
92
|
-
Max:
|
195
|
+
Max: 60
|
93
196
|
|
94
197
|
Metrics/ModuleLength:
|
95
198
|
Enabled: true
|
@@ -103,21 +206,30 @@ Naming/ConstantName:
|
|
103
206
|
|
104
207
|
Naming/ClassAndModuleCamelCase:
|
105
208
|
Enabled: false
|
106
|
-
|
107
|
-
Naming/
|
209
|
+
|
210
|
+
Naming/BlockParameterName:
|
108
211
|
Enabled: true
|
109
|
-
|
110
|
-
Naming/
|
212
|
+
|
213
|
+
Naming/InclusiveLanguage:
|
214
|
+
Enabled: true
|
215
|
+
|
216
|
+
Naming/MethodParameterName:
|
217
|
+
Enabled: false
|
218
|
+
|
219
|
+
Naming/MethodName:
|
111
220
|
Enabled: false
|
112
221
|
|
113
222
|
Naming/VariableName:
|
114
223
|
Enabled: false
|
115
224
|
|
225
|
+
Security/IoMethods: # new in 1.22
|
226
|
+
Enabled: true
|
227
|
+
|
116
228
|
Style/Alias:
|
117
229
|
Enabled: true
|
118
230
|
|
119
|
-
|
120
|
-
Enabled:
|
231
|
+
Style/ArgumentsForwarding:
|
232
|
+
Enabled: true
|
121
233
|
|
122
234
|
Style/AsciiComments:
|
123
235
|
Enabled: false
|
@@ -137,6 +249,9 @@ Style/ClassCheck:
|
|
137
249
|
Style/ClassVars:
|
138
250
|
Enabled: false
|
139
251
|
|
252
|
+
Style/CollectionCompact:
|
253
|
+
Enabled: true
|
254
|
+
|
140
255
|
Style/ColonMethodCall:
|
141
256
|
Enabled: false
|
142
257
|
|
@@ -155,44 +270,204 @@ Style/DefWithParentheses:
|
|
155
270
|
Style/Documentation:
|
156
271
|
Enabled: false
|
157
272
|
|
273
|
+
Style/DocumentDynamicEvalDefinition:
|
274
|
+
Enabled: true
|
275
|
+
|
158
276
|
Style/ExpandPathArguments:
|
159
277
|
Enabled: false
|
160
278
|
|
279
|
+
Style/ExponentialNotation:
|
280
|
+
Enabled: true
|
281
|
+
|
161
282
|
Style/GuardClause:
|
162
283
|
Enabled: false
|
163
284
|
|
285
|
+
Style/HashEachMethods:
|
286
|
+
Enabled: true
|
287
|
+
|
288
|
+
Style/HashExcept:
|
289
|
+
Enabled: true
|
290
|
+
|
291
|
+
Style/HashTransformKeys:
|
292
|
+
Enabled: true
|
293
|
+
|
294
|
+
Style/HashTransformValues:
|
295
|
+
Enabled: true
|
296
|
+
|
164
297
|
Style/IfUnlessModifier:
|
165
298
|
Enabled: false
|
166
299
|
|
300
|
+
Style/InPatternThen:
|
301
|
+
Enabled: true
|
302
|
+
|
167
303
|
Style/InverseMethods:
|
304
|
+
Enabled: false
|
305
|
+
|
306
|
+
Style/MissingRespondToMissing:
|
307
|
+
Enabled: false
|
308
|
+
|
309
|
+
Style/MultilineInPatternThen:
|
310
|
+
Enabled: true
|
311
|
+
|
312
|
+
Style/NegatedIfElseCondition:
|
168
313
|
Enabled: true
|
169
314
|
|
170
315
|
Style/Next:
|
171
316
|
Enabled: false
|
172
317
|
|
318
|
+
Style/NilLambda:
|
319
|
+
Enabled: true
|
320
|
+
|
321
|
+
Style/NumberedParameters: # new in 1.22
|
322
|
+
Enabled: true
|
323
|
+
|
324
|
+
Style/NumberedParametersLimit: # new in 1.22
|
325
|
+
Enabled: true
|
326
|
+
|
327
|
+
Style/NumericLiterals:
|
328
|
+
Enabled: false
|
329
|
+
|
330
|
+
Style/QuotedSymbols:
|
331
|
+
Enabled: true
|
332
|
+
|
173
333
|
Style/RaiseArgs:
|
174
334
|
Enabled: true
|
175
335
|
|
336
|
+
Style/RedundantArgument:
|
337
|
+
Enabled: true
|
338
|
+
|
176
339
|
Style/RedundantReturn:
|
177
340
|
Enabled: false
|
178
|
-
|
341
|
+
|
179
342
|
Style/RedundantSelf:
|
180
343
|
Enabled: true
|
181
344
|
|
345
|
+
Style/RedundantSelfAssignmentBranch:
|
346
|
+
Enabled: true
|
347
|
+
|
182
348
|
Style/RegexpLiteral:
|
183
349
|
Enabled: false
|
184
350
|
|
185
351
|
Style/PercentLiteralDelimiters:
|
186
352
|
Enabled: false
|
187
|
-
|
353
|
+
|
354
|
+
Style/SelectByRegexp: # new in 1.22
|
355
|
+
Enabled: true
|
356
|
+
|
188
357
|
Style/StderrPuts:
|
189
|
-
Enabled: false
|
358
|
+
Enabled: false
|
190
359
|
|
191
360
|
Style/StringLiterals:
|
192
361
|
Enabled: true
|
193
362
|
|
363
|
+
Style/SwapValues:
|
364
|
+
Enabled: true
|
365
|
+
|
194
366
|
Style/TernaryParentheses:
|
195
367
|
Enabled: false
|
196
|
-
|
368
|
+
|
197
369
|
Style/UnlessElse:
|
198
|
-
Enabled: false
|
370
|
+
Enabled: false
|
371
|
+
|
372
|
+
# Rubocop complains when it doesn't find an explicit setting for the following cops:
|
373
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
374
|
+
Enabled: true
|
375
|
+
|
376
|
+
Lint/BinaryOperatorWithIdenticalOperands:
|
377
|
+
Enabled: true
|
378
|
+
|
379
|
+
Lint/DeprecatedOpenSSLConstant:
|
380
|
+
Enabled: true
|
381
|
+
|
382
|
+
Lint/DuplicateElsifCondition:
|
383
|
+
Enabled: true
|
384
|
+
|
385
|
+
Lint/DuplicateRescueException:
|
386
|
+
Enabled: true
|
387
|
+
|
388
|
+
Lint/EmptyConditionalBody:
|
389
|
+
Enabled: true
|
390
|
+
|
391
|
+
Lint/FloatComparison:
|
392
|
+
Enabled: true
|
393
|
+
|
394
|
+
Lint/MissingSuper:
|
395
|
+
Enabled: true
|
396
|
+
|
397
|
+
Lint/MixedRegexpCaptureTypes:
|
398
|
+
Enabled: true
|
399
|
+
|
400
|
+
Lint/OutOfRangeRegexpRef:
|
401
|
+
Enabled: true
|
402
|
+
|
403
|
+
Lint/SelfAssignment:
|
404
|
+
Enabled: true
|
405
|
+
|
406
|
+
Lint/TopLevelReturnWithArgument:
|
407
|
+
Enabled: true
|
408
|
+
|
409
|
+
Lint/UnreachableLoop:
|
410
|
+
Enabled: true
|
411
|
+
|
412
|
+
Style/AccessorGrouping:
|
413
|
+
Enabled: true
|
414
|
+
|
415
|
+
Style/ArrayCoercion:
|
416
|
+
Enabled: true
|
417
|
+
|
418
|
+
Style/BisectedAttrAccessor:
|
419
|
+
Enabled: true
|
420
|
+
|
421
|
+
Style/CaseLikeIf:
|
422
|
+
Enabled: true
|
423
|
+
|
424
|
+
Style/EndlessMethod:
|
425
|
+
Enabled: true
|
426
|
+
|
427
|
+
Style/ExplicitBlockArgument:
|
428
|
+
Enabled: true
|
429
|
+
|
430
|
+
Style/GlobalStdStream:
|
431
|
+
Enabled: true
|
432
|
+
|
433
|
+
Style/HashAsLastArrayItem:
|
434
|
+
Enabled: true
|
435
|
+
|
436
|
+
Style/HashConversion:
|
437
|
+
Enabled: true
|
438
|
+
|
439
|
+
Style/HashLikeCase:
|
440
|
+
Enabled: true
|
441
|
+
|
442
|
+
Style/IfWithBooleanLiteralBranches:
|
443
|
+
Enabled: true
|
444
|
+
|
445
|
+
Style/OptionalBooleanParameter:
|
446
|
+
Enabled: true
|
447
|
+
|
448
|
+
Style/RedundantAssignment:
|
449
|
+
Enabled: true
|
450
|
+
|
451
|
+
Style/RedundantFetchBlock:
|
452
|
+
Enabled: true
|
453
|
+
|
454
|
+
Style/RedundantFileExtensionInRequire:
|
455
|
+
Enabled: true
|
456
|
+
|
457
|
+
Style/RedundantRegexpCharacterClass:
|
458
|
+
Enabled: true
|
459
|
+
|
460
|
+
Style/RedundantRegexpEscape:
|
461
|
+
Enabled: true
|
462
|
+
|
463
|
+
Style/SingleArgumentDig:
|
464
|
+
Enabled: true
|
465
|
+
|
466
|
+
Style/SlicingWithRange:
|
467
|
+
Enabled: true
|
468
|
+
|
469
|
+
Style/StringChars:
|
470
|
+
Enabled: true
|
471
|
+
|
472
|
+
Style/StringConcatenation:
|
473
|
+
Enabled: true
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,44 @@
|
|
1
|
+
## [0.4.9] - 2021-11-01
|
2
|
+
- Code update to align with `Rley` v. 0.8.08
|
3
|
+
|
4
|
+
### Changed
|
5
|
+
- File `ast_builder.rb` Updated some `reduce_...` methods to cope with ? quantifier change
|
6
|
+
- File `srl_ruby.gemspec` Updated the dependency towards Rley
|
7
|
+
- File `.rubocop.yml` Added newest cops from 1.21 and 1.22
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
- File `grammar.rb` is now calling `Rley::grammar_builder` factory method.
|
11
|
+
- File `rule_file_grammar.rb` is now calling `Rley::grammar_builder` factory method.
|
12
|
+
|
13
|
+
## [0.4.8] - 2021-08-27
|
14
|
+
- Updated dependencies (Bundler >~ 2.2), (Rley >~ 0.8.03)
|
15
|
+
- Grammar refactoring to take profit of new Rley rule syntax.
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
- File `srl_ruby.gemspec` Updated the dependencies
|
19
|
+
- File `grammar.rb` Grammar refactored (use ? * + modifiers in production rules)
|
20
|
+
- class `ASTBuilder` updated `reduce_` to reflect new refactored production rules.
|
21
|
+
|
22
|
+
## [0.4.7] - 2021-08-24
|
23
|
+
- Updated dependencies (Ruby >= 2.5), (Rley >= 0.8.02)
|
24
|
+
- Code restyling to please rubocop 1.19.1.
|
25
|
+
### Changed
|
26
|
+
- File `srl_ruby.gemspec` Updated the dependencies
|
27
|
+
- File `.rubocop.yml` Added configuration for newest cops
|
28
|
+
|
29
|
+
## [0.4.6] - 2019-08-17
|
30
|
+
- Code refactoring to use string frozen magic comments (as a consequence, skeem runs only on Rubies 2.3 or newer).
|
31
|
+
- Code restyling to please rubocop 0.7.40.
|
32
|
+
### Changed
|
33
|
+
- File `README.md` updated note on compatibility with Rubies
|
34
|
+
|
35
|
+
|
36
|
+
## [0.4.5] - 2019-01-13
|
37
|
+
- Removed Ruby versions older than 2.3 in CI testing because of breaking changes by Bundler 2.0
|
38
|
+
|
39
|
+
### Changed
|
40
|
+
* Files `.travis.yml`, `appveyor.yml` updated.
|
41
|
+
|
1
42
|
## [0.4.5] - 2019-01-02
|
2
43
|
### Changed
|
3
44
|
- Minor code re-styling to please Rubocop 0.62.0.
|
data/Gemfile
CHANGED
data/LICENSE.txt
CHANGED
@@ -5,7 +5,7 @@ the 'srl_test' directory, which is subject to its own license.
|
|
5
5
|
|
6
6
|
The MIT License (MIT)
|
7
7
|
|
8
|
-
Copyright (c) 2018-
|
8
|
+
Copyright (c) 2018-2021 Dimitri Geshef
|
9
9
|
|
10
10
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
11
11
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -15,7 +15,7 @@ With **srl_ruby** you can easily design your patterns in SRL and let *srl_ruby*
|
|
15
15
|
- Ruby API for integrating a SRL parser or compiler with your code.
|
16
16
|
- 100% pure Ruby with clean design (_not a port from some other language_)
|
17
17
|
- Minimal runtime dependency ([Rley](https://rubygems.org/gems/rley) gem). Won't drag a bunch of gems...
|
18
|
-
- Compatibility: works with 2.
|
18
|
+
- Compatibility: works with Ruby 2.3+ MRI, JRuby
|
19
19
|
- Portability: tested on both Linux and Windows,...
|
20
20
|
|
21
21
|
## Installation
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'bundler/gem_tasks'
|
2
4
|
require 'rspec/core/rake_task' # Rspec as testing tool
|
3
5
|
require 'cucumber/rake/task' # Cucumber as testing tool
|
@@ -8,6 +10,7 @@ RSpec::Core::RakeTask.new do |spec|
|
|
8
10
|
end
|
9
11
|
|
10
12
|
Cucumber::Rake::Task.new do |_|
|
13
|
+
# Comment
|
11
14
|
end
|
12
15
|
|
13
16
|
# Combine RSpec and Cucumber tests
|
data/appveyor.yml
CHANGED
@@ -1,26 +1,28 @@
|
|
1
1
|
version: '{build}'
|
2
|
-
max_jobs:
|
2
|
+
max_jobs: 5
|
3
3
|
environment:
|
4
4
|
matrix:
|
5
|
+
- Ruby_version: 26-x64
|
5
6
|
- Ruby_version: 25-x64
|
6
|
-
- Ruby_version: 24-x64
|
7
|
+
- Ruby_version: 24-x64
|
7
8
|
- Ruby_version: 23-x64
|
8
|
-
- Ruby_version:
|
9
|
-
- Ruby_version:
|
10
|
-
- Ruby_version:
|
11
|
-
- Ruby_version:
|
12
|
-
- Ruby_version: 23
|
13
|
-
- Ruby_version: 22
|
14
|
-
- Ruby_version: 21
|
15
|
-
# These are failing
|
16
|
-
# - Ruby_version: 26
|
17
|
-
# - Ruby_version: 26-x64
|
9
|
+
- Ruby_version: 26
|
10
|
+
- Ruby_version: 25
|
11
|
+
- Ruby_version: 24
|
12
|
+
- Ruby_version: 23
|
18
13
|
|
19
14
|
install:
|
20
15
|
- set PATH=C:\Ruby%Ruby_version%\bin;%PATH%
|
16
|
+
- gem update --system
|
17
|
+
- gem install bundler
|
21
18
|
- bundle install --retry=3 --clean --force
|
22
19
|
|
23
20
|
build: off
|
24
21
|
|
22
|
+
before_test:
|
23
|
+
- ruby -v
|
24
|
+
- gem -v
|
25
|
+
- bundle -v
|
26
|
+
|
25
27
|
test_script:
|
26
28
|
- bundle exec rake
|
data/bin/srl2ruby
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
require 'erb'
|
3
5
|
require 'rubygems'
|
4
6
|
require 'pathname'
|
@@ -7,10 +9,14 @@ require_relative '../lib/srl_ruby'
|
|
7
9
|
require_relative 'srl2ruby_cli_parser'
|
8
10
|
|
9
11
|
class Srl2RubyProg
|
10
|
-
DefaultSRLExtension = 'srl'
|
11
|
-
DefDirname = '/templates'
|
12
|
-
DefTemplate = 'base.erb'
|
12
|
+
DefaultSRLExtension = 'srl'
|
13
|
+
DefDirname = '/templates'
|
14
|
+
DefTemplate = 'base.erb'
|
15
|
+
|
16
|
+
# @return [Hash]
|
13
17
|
attr_reader(:cli_options)
|
18
|
+
|
19
|
+
# @return [ERB]
|
14
20
|
attr_reader(:template)
|
15
21
|
|
16
22
|
def initialize(prog_name, args)
|
@@ -47,18 +53,16 @@ class Srl2RubyProg
|
|
47
53
|
fname = cli_options[:template]
|
48
54
|
exists = File.exist?(fname)
|
49
55
|
if exists
|
50
|
-
t_filepath = Dir.getwd
|
56
|
+
t_filepath = "#{Dir.getwd}/#{fname}"
|
51
57
|
else
|
52
|
-
t_filepath = def_template_dir
|
58
|
+
t_filepath = "#{def_template_dir}/#{fname}"
|
53
59
|
exit(1) unless file_exist?(t_filepath)
|
54
60
|
end
|
55
61
|
else
|
56
|
-
t_filepath = def_template_dir
|
62
|
+
t_filepath = "#{def_template_dir}/#{DefTemplate}"
|
57
63
|
end
|
58
64
|
path = Pathname.new(t_filepath)
|
59
|
-
|
60
|
-
|
61
|
-
erb_template
|
65
|
+
ERB.new(path.read, nil, '<>')
|
62
66
|
end
|
63
67
|
|
64
68
|
def validate_filename(raw_fname)
|
data/bin/srl2ruby_cli_parser.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'optparse' # Use standard OptionParser class for command-line parsing
|
2
4
|
|
3
5
|
# A command-line option parser for the srl2ruby compiler.
|
@@ -35,7 +37,7 @@ class Srl2RubyCLIParser < OptionParser
|
|
35
37
|
end
|
36
38
|
|
37
39
|
def description
|
38
|
-
|
40
|
+
<<-DESCR
|
39
41
|
Description:
|
40
42
|
Parses a SRL file and compiles it into a Ruby Regexp literal.
|
41
43
|
Simple Regex Language (SRL) website: https://simple-regex.com
|
@@ -45,8 +47,6 @@ Examples:
|
|
45
47
|
#{program_name} -p 'begin with literally "Hello world!"'
|
46
48
|
#{program_name} example.srl -o example_re.rb -t srl_and_ruby.erb
|
47
49
|
DESCR
|
48
|
-
|
49
|
-
descr
|
50
50
|
end
|
51
51
|
|
52
52
|
def heading
|
data/lib/regex/alternation.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# File: alternation.rb
|
2
4
|
|
3
5
|
require_relative 'polyadic_expression' # Access the superclass
|
@@ -17,9 +19,7 @@ module Regex # This module is used as a namespace
|
|
17
19
|
# Purpose: Return the String representation of the concatented expressions.
|
18
20
|
def text_repr
|
19
21
|
result_children = children.map(&:to_str)
|
20
|
-
|
21
|
-
|
22
|
-
return result
|
22
|
+
"(?:#{result_children.join('|')})"
|
23
23
|
end
|
24
24
|
end # class
|
25
25
|
end # module
|