regexp_parser 2.0.2 → 2.2.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 +4 -4
- data/CHANGELOG.md +54 -0
- data/Gemfile +5 -1
- data/README.md +15 -21
- data/Rakefile +11 -17
- data/lib/regexp_parser/error.rb +4 -0
- data/lib/regexp_parser/expression/base.rb +123 -0
- data/lib/regexp_parser/expression/classes/anchor.rb +0 -2
- data/lib/regexp_parser/expression/classes/{backref.rb → backreference.rb} +5 -0
- data/lib/regexp_parser/expression/classes/{set → character_set}/intersection.rb +0 -0
- data/lib/regexp_parser/expression/classes/{set → character_set}/range.rb +2 -1
- data/lib/regexp_parser/expression/classes/{set.rb → character_set.rb} +0 -0
- data/lib/regexp_parser/expression/classes/conditional.rb +11 -1
- data/lib/regexp_parser/expression/classes/{escape.rb → escape_sequence.rb} +1 -0
- data/lib/regexp_parser/expression/classes/free_space.rb +1 -3
- data/lib/regexp_parser/expression/classes/group.rb +6 -1
- data/lib/regexp_parser/expression/classes/literal.rb +1 -5
- data/lib/regexp_parser/expression/classes/property.rb +1 -3
- data/lib/regexp_parser/expression/classes/root.rb +0 -1
- data/lib/regexp_parser/expression/classes/type.rb +0 -2
- data/lib/regexp_parser/expression/quantifier.rb +2 -2
- data/lib/regexp_parser/expression/sequence.rb +3 -10
- data/lib/regexp_parser/expression/subexpression.rb +1 -2
- data/lib/regexp_parser/expression.rb +7 -130
- data/lib/regexp_parser/lexer.rb +7 -5
- data/lib/regexp_parser/parser.rb +282 -334
- data/lib/regexp_parser/scanner/properties/long.yml +13 -0
- data/lib/regexp_parser/scanner/properties/short.yml +9 -1
- data/lib/regexp_parser/scanner/scanner.rl +64 -87
- data/lib/regexp_parser/scanner.rb +1024 -1073
- data/lib/regexp_parser/syntax/any.rb +2 -4
- data/lib/regexp_parser/syntax/base.rb +10 -10
- data/lib/regexp_parser/syntax/token/anchor.rb +15 -0
- data/lib/regexp_parser/syntax/{tokens → token}/assertion.rb +2 -2
- data/lib/regexp_parser/syntax/{tokens/backref.rb → token/backreference.rb} +6 -5
- data/lib/regexp_parser/syntax/{tokens → token}/character_set.rb +2 -2
- data/lib/regexp_parser/syntax/{tokens → token}/character_type.rb +3 -3
- data/lib/regexp_parser/syntax/{tokens → token}/conditional.rb +3 -3
- data/lib/regexp_parser/syntax/token/escape.rb +31 -0
- data/lib/regexp_parser/syntax/{tokens → token}/group.rb +7 -7
- data/lib/regexp_parser/syntax/{tokens → token}/keep.rb +1 -1
- data/lib/regexp_parser/syntax/{tokens → token}/meta.rb +2 -2
- data/lib/regexp_parser/syntax/{tokens → token}/posix_class.rb +3 -3
- data/lib/regexp_parser/syntax/token/quantifier.rb +35 -0
- data/lib/regexp_parser/syntax/token/unicode_property.rb +696 -0
- data/lib/regexp_parser/syntax/token.rb +45 -0
- data/lib/regexp_parser/syntax/version_lookup.rb +2 -2
- data/lib/regexp_parser/syntax/versions/1.8.6.rb +1 -1
- data/lib/regexp_parser/syntax/versions/3.1.0.rb +10 -0
- data/lib/regexp_parser/syntax.rb +8 -6
- data/lib/regexp_parser/token.rb +9 -20
- data/lib/regexp_parser/version.rb +1 -1
- data/lib/regexp_parser.rb +0 -2
- data/spec/expression/clone_spec.rb +36 -4
- data/spec/expression/free_space_spec.rb +2 -2
- data/spec/expression/methods/match_length_spec.rb +2 -2
- data/spec/lexer/nesting_spec.rb +2 -2
- data/spec/lexer/refcalls_spec.rb +5 -0
- data/spec/parser/all_spec.rb +2 -2
- data/spec/parser/escapes_spec.rb +43 -31
- data/spec/parser/properties_spec.rb +6 -4
- data/spec/parser/refcalls_spec.rb +5 -0
- data/spec/parser/set/ranges_spec.rb +26 -16
- data/spec/scanner/escapes_spec.rb +29 -20
- data/spec/scanner/refcalls_spec.rb +19 -0
- data/spec/scanner/sets_spec.rb +66 -23
- data/spec/spec_helper.rb +13 -1
- data/spec/support/capturing_stderr.rb +9 -0
- data/spec/syntax/versions/1.8.6_spec.rb +2 -2
- data/spec/syntax/versions/2.0.0_spec.rb +2 -2
- data/spec/syntax/versions/aliases_spec.rb +1 -0
- metadata +27 -26
- data/lib/regexp_parser/syntax/tokens/anchor.rb +0 -15
- data/lib/regexp_parser/syntax/tokens/escape.rb +0 -30
- data/lib/regexp_parser/syntax/tokens/quantifier.rb +0 -35
- data/lib/regexp_parser/syntax/tokens/unicode_property.rb +0 -675
- data/lib/regexp_parser/syntax/tokens.rb +0 -45
- data/spec/support/runner.rb +0 -42
- data/spec/support/warning_extractor.rb +0 -60
@@ -8,6 +8,7 @@ age=10.0: age=10.0
|
|
8
8
|
age=11.0: age=11.0
|
9
9
|
age=12.0: age=12.0
|
10
10
|
age=12.1: age=12.1
|
11
|
+
age=13.0: age=13.0
|
11
12
|
age=2.0: age=2.0
|
12
13
|
age=2.1: age=2.1
|
13
14
|
age=3.0: age=3.0
|
@@ -64,6 +65,7 @@ changeswhenlowercased: changes_when_lowercased
|
|
64
65
|
changeswhentitlecased: changes_when_titlecased
|
65
66
|
changeswhenuppercased: changes_when_uppercased
|
66
67
|
cherokee: cherokee
|
68
|
+
chorasmian: chorasmian
|
67
69
|
closepunctuation: close_punctuation
|
68
70
|
cntrl: cntrl
|
69
71
|
common: common
|
@@ -83,6 +85,7 @@ deseret: deseret
|
|
83
85
|
devanagari: devanagari
|
84
86
|
diacritic: diacritic
|
85
87
|
digit: digit
|
88
|
+
divesakuru: dives_akuru
|
86
89
|
dogra: dogra
|
87
90
|
duployan: duployan
|
88
91
|
egyptianhieroglyphs: egyptian_hieroglyphs
|
@@ -167,6 +170,7 @@ incham: in_cham
|
|
167
170
|
incherokee: in_cherokee
|
168
171
|
incherokeesupplement: in_cherokee_supplement
|
169
172
|
inchesssymbols: in_chess_symbols
|
173
|
+
inchorasmian: in_chorasmian
|
170
174
|
incjkcompatibility: in_cjk_compatibility
|
171
175
|
incjkcompatibilityforms: in_cjk_compatibility_forms
|
172
176
|
incjkcompatibilityideographs: in_cjk_compatibility_ideographs
|
@@ -181,6 +185,7 @@ incjkunifiedideographsextensionc: in_cjk_unified_ideographs_extension_c
|
|
181
185
|
incjkunifiedideographsextensiond: in_cjk_unified_ideographs_extension_d
|
182
186
|
incjkunifiedideographsextensione: in_cjk_unified_ideographs_extension_e
|
183
187
|
incjkunifiedideographsextensionf: in_cjk_unified_ideographs_extension_f
|
188
|
+
incjkunifiedideographsextensiong: in_cjk_unified_ideographs_extension_g
|
184
189
|
incombiningdiacriticalmarks: in_combining_diacritical_marks
|
185
190
|
incombiningdiacriticalmarksextended: in_combining_diacritical_marks_extended
|
186
191
|
incombiningdiacriticalmarksforsymbols: in_combining_diacritical_marks_for_symbols
|
@@ -204,6 +209,7 @@ indeseret: in_deseret
|
|
204
209
|
indevanagari: in_devanagari
|
205
210
|
indevanagariextended: in_devanagari_extended
|
206
211
|
indingbats: in_dingbats
|
212
|
+
indivesakuru: in_dives_akuru
|
207
213
|
indogra: in_dogra
|
208
214
|
indominotiles: in_domino_tiles
|
209
215
|
induployan: in_duployan
|
@@ -269,6 +275,7 @@ inkatakana: in_katakana
|
|
269
275
|
inkatakanaphoneticextensions: in_katakana_phonetic_extensions
|
270
276
|
inkayahli: in_kayah_li
|
271
277
|
inkharoshthi: in_kharoshthi
|
278
|
+
inkhitansmallscript: in_khitan_small_script
|
272
279
|
inkhmer: in_khmer
|
273
280
|
inkhmersymbols: in_khmer_symbols
|
274
281
|
inkhojki: in_khojki
|
@@ -288,6 +295,7 @@ inlineara: in_linear_a
|
|
288
295
|
inlinearbideograms: in_linear_b_ideograms
|
289
296
|
inlinearbsyllabary: in_linear_b_syllabary
|
290
297
|
inlisu: in_lisu
|
298
|
+
inlisusupplement: in_lisu_supplement
|
291
299
|
inlowsurrogates: in_low_surrogates
|
292
300
|
inlycian: in_lycian
|
293
301
|
inlydian: in_lydian
|
@@ -395,6 +403,7 @@ insupplementaryprivateuseareab: in_supplementary_private_use_area_b
|
|
395
403
|
insuttonsignwriting: in_sutton_signwriting
|
396
404
|
insylotinagri: in_syloti_nagri
|
397
405
|
insymbolsandpictographsextendeda: in_symbols_and_pictographs_extended_a
|
406
|
+
insymbolsforlegacycomputing: in_symbols_for_legacy_computing
|
398
407
|
insyriac: in_syriac
|
399
408
|
insyriacsupplement: in_syriac_supplement
|
400
409
|
intagalog: in_tagalog
|
@@ -409,6 +418,7 @@ intamil: in_tamil
|
|
409
418
|
intamilsupplement: in_tamil_supplement
|
410
419
|
intangut: in_tangut
|
411
420
|
intangutcomponents: in_tangut_components
|
421
|
+
intangutsupplement: in_tangut_supplement
|
412
422
|
intelugu: in_telugu
|
413
423
|
inthaana: in_thaana
|
414
424
|
inthai: in_thai
|
@@ -426,6 +436,7 @@ invedicextensions: in_vedic_extensions
|
|
426
436
|
inverticalforms: in_vertical_forms
|
427
437
|
inwancho: in_wancho
|
428
438
|
inwarangciti: in_warang_citi
|
439
|
+
inyezidi: in_yezidi
|
429
440
|
inyijinghexagramsymbols: in_yijing_hexagram_symbols
|
430
441
|
inyiradicals: in_yi_radicals
|
431
442
|
inyisyllables: in_yi_syllables
|
@@ -437,6 +448,7 @@ kannada: kannada
|
|
437
448
|
katakana: katakana
|
438
449
|
kayahli: kayah_li
|
439
450
|
kharoshthi: kharoshthi
|
451
|
+
khitansmallscript: khitan_small_script
|
440
452
|
khmer: khmer
|
441
453
|
khojki: khojki
|
442
454
|
khudawadi: khudawadi
|
@@ -590,5 +602,6 @@ xdigit: xdigit
|
|
590
602
|
xidcontinue: xid_continue
|
591
603
|
xidstart: xid_start
|
592
604
|
xposixpunct: xposixpunct
|
605
|
+
yezidi: yezidi
|
593
606
|
yi: yi
|
594
607
|
zanabazarsquare: zanabazar_square
|
@@ -28,6 +28,7 @@ cari: carian
|
|
28
28
|
cc: control
|
29
29
|
cf: format
|
30
30
|
cher: cherokee
|
31
|
+
chrs: chorasmian
|
31
32
|
ci: case_ignorable
|
32
33
|
cn: unassigned
|
33
34
|
co: private_use
|
@@ -45,12 +46,17 @@ dep: deprecated
|
|
45
46
|
deva: devanagari
|
46
47
|
di: default_ignorable_code_point
|
47
48
|
dia: diacritic
|
49
|
+
diak: dives_akuru
|
48
50
|
dogr: dogra
|
49
51
|
dsrt: deseret
|
50
52
|
dupl: duployan
|
53
|
+
ebase: emoji_modifier_base
|
54
|
+
ecomp: emoji_component
|
51
55
|
egyp: egyptian_hieroglyphs
|
52
56
|
elba: elbasan
|
53
57
|
elym: elymaic
|
58
|
+
emod: emoji_modifier
|
59
|
+
epres: emoji_presentation
|
54
60
|
ethi: ethiopic
|
55
61
|
ext: extender
|
56
62
|
geor: georgian
|
@@ -89,6 +95,7 @@ kana: katakana
|
|
89
95
|
khar: kharoshthi
|
90
96
|
khmr: khmer
|
91
97
|
khoj: khojki
|
98
|
+
kits: khitan_small_script
|
92
99
|
knda: kannada
|
93
100
|
kthi: kaithi
|
94
101
|
l: letter
|
@@ -127,7 +134,7 @@ mroo: mro
|
|
127
134
|
mtei: meetei_mayek
|
128
135
|
mult: multani
|
129
136
|
mymr: myanmar
|
130
|
-
n: number
|
137
|
+
"n": number
|
131
138
|
nand: nandinagari
|
132
139
|
narb: old_north_arabian
|
133
140
|
nbat: nabataean
|
@@ -226,6 +233,7 @@ xidc: xid_continue
|
|
226
233
|
xids: xid_start
|
227
234
|
xpeo: old_persian
|
228
235
|
xsux: cuneiform
|
236
|
+
yezi: yezidi
|
229
237
|
yiii: yi
|
230
238
|
z: separator
|
231
239
|
zanb: zanabazar_square
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
group_open = '(';
|
22
22
|
group_close = ')';
|
23
|
-
|
23
|
+
parentheses = group_open | group_close;
|
24
24
|
|
25
25
|
set_open = '[';
|
26
26
|
set_close = ']';
|
@@ -37,7 +37,7 @@
|
|
37
37
|
class_posix = ('[:' . '^'? . class_name_posix . ':]');
|
38
38
|
|
39
39
|
|
40
|
-
# these are not supported in ruby
|
40
|
+
# these are not supported in ruby at the moment
|
41
41
|
collating_sequence = '[.' . (alpha | [\-])+ . '.]';
|
42
42
|
character_equivalent = '[=' . alpha . '=]';
|
43
43
|
|
@@ -58,6 +58,8 @@
|
|
58
58
|
|
59
59
|
meta_sequence = 'M-' . (backslash . ('c' | 'C-'))? . backslash? . any;
|
60
60
|
|
61
|
+
sequence_char = [CMcux];
|
62
|
+
|
61
63
|
zero_or_one = '?' | '??' | '?+';
|
62
64
|
zero_or_more = '*' | '*?' | '*+';
|
63
65
|
one_or_more = '+' | '+?' | '++';
|
@@ -106,11 +108,15 @@
|
|
106
108
|
|
107
109
|
group_named = ('?' . group_name );
|
108
110
|
|
109
|
-
|
110
|
-
|
111
|
+
group_name_backref = 'k' . (('<' . group_name_id_ab? . group_level? '>') |
|
112
|
+
("'" . group_name_id_sq? . group_level? "'"));
|
113
|
+
group_name_call = 'g' . (('<' . group_name_id_ab? . group_level? '>') |
|
114
|
+
("'" . group_name_id_sq? . group_level? "'"));
|
111
115
|
|
112
|
-
|
113
|
-
|
116
|
+
group_number_backref = 'k' . (('<' . group_number . group_level? '>') |
|
117
|
+
("'" . group_number . group_level? "'"));
|
118
|
+
group_number_call = 'g' . (('<' . ((group_number . group_level?) | '0') '>') |
|
119
|
+
("'" . ((group_number . group_level?) | '0') "'"));
|
114
120
|
|
115
121
|
group_type = group_atomic | group_passive | group_absence | group_named;
|
116
122
|
|
@@ -121,7 +127,7 @@
|
|
121
127
|
|
122
128
|
# characters that 'break' a literal
|
123
129
|
meta_char = dot | backslash | alternation |
|
124
|
-
curlies |
|
130
|
+
curlies | parentheses | brackets |
|
125
131
|
line_anchor | quantifier_greedy;
|
126
132
|
|
127
133
|
literal_delimiters = ']' | '}';
|
@@ -130,10 +136,12 @@
|
|
130
136
|
ascii_nonprint = (0x01..0x1f | 0x7f);
|
131
137
|
|
132
138
|
non_literal_escape = char_type_char | anchor_char | escaped_ascii |
|
133
|
-
keep_mark |
|
139
|
+
keep_mark | sequence_char;
|
140
|
+
|
141
|
+
# escapes that also work within a character set
|
142
|
+
set_escape = backslash | brackets | escaped_ascii | property_char |
|
143
|
+
sequence_char | single_codepoint_char_type;
|
134
144
|
|
135
|
-
non_set_escape = (anchor_char - 'b') | group_ref | keep_mark |
|
136
|
-
multi_codepoint_char_type | [0-9cCM];
|
137
145
|
|
138
146
|
# EOF error, used where it can be detected
|
139
147
|
action premature_end_error {
|
@@ -228,13 +236,13 @@
|
|
228
236
|
emit(type, class_name.to_sym, text)
|
229
237
|
};
|
230
238
|
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
character_equivalent >(open_bracket, 1) @set_closed @eof(premature_end_error) {
|
236
|
-
|
237
|
-
};
|
239
|
+
# These are not supported in ruby at the moment. Enable them if they are.
|
240
|
+
# collating_sequence >(open_bracket, 1) @set_closed @eof(premature_end_error) {
|
241
|
+
# emit(:set, :collation, copy(data, ts, te))
|
242
|
+
# };
|
243
|
+
# character_equivalent >(open_bracket, 1) @set_closed @eof(premature_end_error) {
|
244
|
+
# emit(:set, :equivalent, copy(data, ts, te))
|
245
|
+
# };
|
238
246
|
|
239
247
|
meta_char > (set_meta, 1) {
|
240
248
|
emit(:literal, :literal, copy(data, ts, te))
|
@@ -249,16 +257,16 @@
|
|
249
257
|
# set escapes scanner
|
250
258
|
# --------------------------------------------------------------------------
|
251
259
|
set_escape_sequence := |*
|
252
|
-
|
253
|
-
emit(:escape, :literal, copy(data, ts-1, te))
|
254
|
-
fret;
|
255
|
-
};
|
256
|
-
|
257
|
-
any > (escaped_set_alpha, 1) {
|
260
|
+
set_escape > (escaped_set_alpha, 2) {
|
258
261
|
fhold;
|
259
262
|
fnext character_set;
|
260
263
|
fcall escape_sequence;
|
261
264
|
};
|
265
|
+
|
266
|
+
any > (escaped_set_alpha, 1) {
|
267
|
+
emit(:escape, :literal, copy(data, ts-1, te))
|
268
|
+
fret;
|
269
|
+
};
|
262
270
|
*|;
|
263
271
|
|
264
272
|
|
@@ -538,67 +546,35 @@
|
|
538
546
|
|
539
547
|
# Group backreference, named and numbered
|
540
548
|
# ------------------------------------------------------------------------
|
541
|
-
backslash . (
|
549
|
+
backslash . (group_name_backref | group_number_backref) > (backslashed, 4) {
|
542
550
|
case text = copy(data, ts, te)
|
543
|
-
when /^\\(
|
544
|
-
validation_error(:backref, '
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
emit(:backref, :name_ref_sq, text)
|
558
|
-
else
|
559
|
-
emit(:backref, :name_call_sq, text)
|
560
|
-
end
|
561
|
-
|
562
|
-
when /^\\([gk])<\d+>/ # angle-brackets
|
563
|
-
if $1 == 'k'
|
564
|
-
emit(:backref, :number_ref_ab, text)
|
565
|
-
else
|
566
|
-
emit(:backref, :number_call_ab, text)
|
567
|
-
end
|
568
|
-
|
569
|
-
when /^\\([gk])'\d+'/ # single quotes
|
570
|
-
if $1 == 'k'
|
571
|
-
emit(:backref, :number_ref_sq, text)
|
572
|
-
else
|
573
|
-
emit(:backref, :number_call_sq, text)
|
574
|
-
end
|
575
|
-
|
576
|
-
when /^\\(?:g<\+|g<-|(k)<-)\d+>/ # angle-brackets
|
577
|
-
if $1 == 'k'
|
578
|
-
emit(:backref, :number_rel_ref_ab, text)
|
579
|
-
else
|
580
|
-
emit(:backref, :number_rel_call_ab, text)
|
581
|
-
end
|
582
|
-
|
583
|
-
when /^\\(?:g'\+|g'-|(k)'-)\d+'/ # single quotes
|
584
|
-
if $1 == 'k'
|
585
|
-
emit(:backref, :number_rel_ref_sq, text)
|
586
|
-
else
|
587
|
-
emit(:backref, :number_rel_call_sq, text)
|
588
|
-
end
|
589
|
-
|
590
|
-
when /^\\k<[^\p{digit}+\->][^>]*[+\-]\d+>/ # angle-brackets
|
591
|
-
emit(:backref, :name_recursion_ref_ab, text)
|
592
|
-
|
593
|
-
when /^\\k'[^\p{digit}+\-'][^']*[+\-]\d+'/ # single-quotes
|
594
|
-
emit(:backref, :name_recursion_ref_sq, text)
|
595
|
-
|
596
|
-
when /^\\([gk])<[+\-]?\d+[+\-]\d+>/ # angle-brackets
|
597
|
-
emit(:backref, :number_recursion_ref_ab, text)
|
598
|
-
|
599
|
-
when /^\\([gk])'[+\-]?\d+[+\-]\d+'/ # single-quotes
|
600
|
-
emit(:backref, :number_recursion_ref_sq, text)
|
551
|
+
when /^\\k(<>|'')/
|
552
|
+
validation_error(:backref, 'backreference', 'ref ID is empty')
|
553
|
+
when /^\\k(.)[^\p{digit}\-][^+\-]*\D$/
|
554
|
+
emit(:backref, $1 == '<' ? :name_ref_ab : :name_ref_sq, text)
|
555
|
+
when /^\\k(.)\d+\D$/
|
556
|
+
emit(:backref, $1 == '<' ? :number_ref_ab : :number_ref_sq, text)
|
557
|
+
when /^\\k(.)-\d+\D$/
|
558
|
+
emit(:backref, $1 == '<' ? :number_rel_ref_ab : :number_rel_ref_sq, text)
|
559
|
+
when /^\\k(.)[^\p{digit}\-].*[+\-]\d+\D$/
|
560
|
+
emit(:backref, $1 == '<' ? :name_recursion_ref_ab : :name_recursion_ref_sq, text)
|
561
|
+
when /^\\k(.)-?\d+[+\-]\d+\D$/
|
562
|
+
emit(:backref, $1 == '<' ? :number_recursion_ref_ab : :number_recursion_ref_sq, text)
|
563
|
+
end
|
564
|
+
};
|
601
565
|
|
566
|
+
# Group call, named and numbered
|
567
|
+
# ------------------------------------------------------------------------
|
568
|
+
backslash . (group_name_call | group_number_call) > (backslashed, 4) {
|
569
|
+
case text = copy(data, ts, te)
|
570
|
+
when /^\\g(<>|'')/
|
571
|
+
validation_error(:backref, 'subexpression call', 'ref ID is empty')
|
572
|
+
when /^\\g(.)[^\p{digit}+\->][^+\-]*/
|
573
|
+
emit(:backref, $1 == '<' ? :name_call_ab : :name_call_sq, text)
|
574
|
+
when /^\\g(.)\d+\D$/
|
575
|
+
emit(:backref, $1 == '<' ? :number_call_ab : :number_call_sq, text)
|
576
|
+
when /^\\g(.)[+-]\d+/
|
577
|
+
emit(:backref, $1 == '<' ? :number_rel_call_ab : :number_rel_call_sq, text)
|
602
578
|
end
|
603
579
|
};
|
604
580
|
|
@@ -675,12 +651,14 @@
|
|
675
651
|
# THIS IS A GENERATED FILE, DO NOT EDIT DIRECTLY
|
676
652
|
# This file was generated from lib/regexp_parser/scanner/scanner.rl
|
677
653
|
|
654
|
+
require 'regexp_parser/error'
|
655
|
+
|
678
656
|
class Regexp::Scanner
|
679
657
|
# General scanner error (catch all)
|
680
|
-
class ScannerError <
|
658
|
+
class ScannerError < Regexp::Parser::Error; end
|
681
659
|
|
682
660
|
# Base for all scanner validation errors
|
683
|
-
class ValidationError <
|
661
|
+
class ValidationError < Regexp::Parser::Error
|
684
662
|
def initialize(reason)
|
685
663
|
super reason
|
686
664
|
end
|
@@ -782,14 +760,13 @@ class Regexp::Scanner
|
|
782
760
|
|
783
761
|
# lazy-load property maps when first needed
|
784
762
|
require 'yaml'
|
785
|
-
PROP_MAPS_DIR = File.expand_path('../scanner/properties', __FILE__)
|
786
763
|
|
787
764
|
def self.short_prop_map
|
788
|
-
@short_prop_map ||= YAML.load_file("#{
|
765
|
+
@short_prop_map ||= YAML.load_file("#{__dir__}/scanner/properties/short.yml")
|
789
766
|
end
|
790
767
|
|
791
768
|
def self.long_prop_map
|
792
|
-
@long_prop_map ||= YAML.load_file("#{
|
769
|
+
@long_prop_map ||= YAML.load_file("#{__dir__}/scanner/properties/long.yml")
|
793
770
|
end
|
794
771
|
|
795
772
|
# Emits an array with the details of the scanned pattern
|