regexp_parser 1.5.0 → 1.8.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 +59 -0
- data/Gemfile +3 -3
- data/README.md +14 -6
- data/Rakefile +3 -4
- data/lib/regexp_parser/expression.rb +6 -43
- data/lib/regexp_parser/expression/classes/conditional.rb +3 -2
- data/lib/regexp_parser/expression/classes/escape.rb +0 -4
- data/lib/regexp_parser/expression/methods/match.rb +13 -0
- data/lib/regexp_parser/expression/methods/match_length.rb +1 -1
- data/lib/regexp_parser/expression/methods/options.rb +35 -0
- data/lib/regexp_parser/expression/methods/strfregexp.rb +0 -1
- data/lib/regexp_parser/expression/methods/tests.rb +6 -15
- data/lib/regexp_parser/expression/methods/traverse.rb +3 -1
- data/lib/regexp_parser/expression/sequence.rb +3 -2
- data/lib/regexp_parser/expression/sequence_operation.rb +2 -6
- data/lib/regexp_parser/lexer.rb +4 -25
- data/lib/regexp_parser/parser.rb +40 -33
- data/lib/regexp_parser/scanner.rb +1208 -1353
- data/lib/regexp_parser/scanner/char_type.rl +0 -3
- data/lib/regexp_parser/scanner/properties/long.yml +15 -1
- data/lib/regexp_parser/scanner/properties/short.yml +5 -0
- data/lib/regexp_parser/scanner/scanner.rl +116 -202
- data/lib/regexp_parser/syntax/tokens/unicode_property.rb +30 -0
- data/lib/regexp_parser/syntax/versions/2.6.2.rb +10 -0
- data/lib/regexp_parser/syntax/versions/2.6.3.rb +10 -0
- data/lib/regexp_parser/version.rb +1 -1
- data/spec/expression/base_spec.rb +14 -0
- data/spec/expression/methods/match_length_spec.rb +20 -0
- data/spec/expression/methods/match_spec.rb +25 -0
- data/spec/expression/methods/tests_spec.rb +2 -0
- data/spec/expression/methods/traverse_spec.rb +21 -0
- data/spec/expression/options_spec.rb +128 -0
- data/spec/expression/root_spec.rb +9 -0
- data/spec/expression/sequence_spec.rb +9 -0
- data/spec/lexer/conditionals_spec.rb +49 -119
- data/spec/lexer/delimiters_spec.rb +68 -0
- data/spec/lexer/escapes_spec.rb +8 -32
- data/spec/lexer/keep_spec.rb +5 -17
- data/spec/lexer/literals_spec.rb +73 -110
- data/spec/lexer/nesting_spec.rb +86 -117
- data/spec/lexer/refcalls_spec.rb +51 -50
- data/spec/parser/all_spec.rb +13 -1
- data/spec/parser/anchors_spec.rb +9 -23
- data/spec/parser/conditionals_spec.rb +9 -9
- data/spec/parser/errors_spec.rb +22 -43
- data/spec/parser/escapes_spec.rb +33 -44
- data/spec/parser/free_space_spec.rb +25 -4
- data/spec/parser/groups_spec.rb +98 -257
- data/spec/parser/keep_spec.rb +2 -15
- data/spec/parser/options_spec.rb +28 -0
- data/spec/parser/posix_classes_spec.rb +5 -24
- data/spec/parser/properties_spec.rb +42 -54
- data/spec/parser/quantifiers_spec.rb +42 -283
- data/spec/parser/refcalls_spec.rb +60 -185
- data/spec/parser/set/intersections_spec.rb +17 -17
- data/spec/parser/set/ranges_spec.rb +17 -17
- data/spec/parser/sets_spec.rb +5 -5
- data/spec/parser/types_spec.rb +11 -36
- data/spec/scanner/anchors_spec.rb +13 -28
- data/spec/scanner/conditionals_spec.rb +121 -173
- data/spec/scanner/delimiters_spec.rb +52 -0
- data/spec/scanner/errors_spec.rb +64 -87
- data/spec/scanner/escapes_spec.rb +53 -50
- data/spec/scanner/free_space_spec.rb +102 -165
- data/spec/scanner/groups_spec.rb +45 -64
- data/spec/scanner/keep_spec.rb +5 -28
- data/spec/scanner/literals_spec.rb +45 -81
- data/spec/scanner/meta_spec.rb +13 -33
- data/spec/scanner/options_spec.rb +36 -0
- data/spec/scanner/properties_spec.rb +43 -286
- data/spec/scanner/quantifiers_spec.rb +13 -28
- data/spec/scanner/refcalls_spec.rb +32 -48
- data/spec/scanner/sets_spec.rb +88 -102
- data/spec/scanner/types_spec.rb +10 -25
- data/spec/spec_helper.rb +1 -0
- data/spec/support/shared_examples.rb +77 -0
- data/spec/syntax/syntax_spec.rb +4 -0
- data/spec/syntax/versions/1.8.6_spec.rb +12 -33
- data/spec/syntax/versions/1.9.1_spec.rb +5 -18
- data/spec/syntax/versions/1.9.3_spec.rb +4 -17
- data/spec/syntax/versions/2.0.0_spec.rb +8 -23
- data/spec/syntax/versions/2.2.0_spec.rb +4 -17
- data/spec/syntax/versions/aliases_spec.rb +27 -109
- metadata +28 -10
- data/spec/scanner/scripts_spec.rb +0 -49
- data/spec/scanner/unicode_blocks_spec.rb +0 -28
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe('UnicodeScript scanning') do
|
4
|
-
tests = {
|
5
|
-
'Aghb' => :caucasian_albanian,
|
6
|
-
'Caucasian Albanian' => :caucasian_albanian,
|
7
|
-
|
8
|
-
'Arab' => :arabic,
|
9
|
-
'Arabic' => :arabic,
|
10
|
-
|
11
|
-
'Armi' => :imperial_aramaic,
|
12
|
-
'Imperial Aramaic' => :imperial_aramaic,
|
13
|
-
|
14
|
-
'Egyp' => :egyptian_hieroglyphs,
|
15
|
-
'Egyptian Hieroglyphs' => :egyptian_hieroglyphs, # test whitespace
|
16
|
-
|
17
|
-
'Linb' => :linear_b,
|
18
|
-
'Linear-B' => :linear_b, # test dash
|
19
|
-
|
20
|
-
'Yiii' => :yi,
|
21
|
-
'Yi' => :yi,
|
22
|
-
|
23
|
-
'Zinh' => :inherited,
|
24
|
-
'Inherited' => :inherited,
|
25
|
-
'Qaai' => :inherited,
|
26
|
-
|
27
|
-
'Zyyy' => :common,
|
28
|
-
'Common' => :common,
|
29
|
-
|
30
|
-
'Zzzz' => :unknown,
|
31
|
-
'Unknown' => :unknown,
|
32
|
-
}
|
33
|
-
|
34
|
-
tests.each_with_index do |(property, token), count|
|
35
|
-
specify("scanner_property_#{token}_#{count}") do
|
36
|
-
tokens = RS.scan("a\\p{#{property}}c")
|
37
|
-
result = tokens.at(1)
|
38
|
-
expect(result[0]).to eq :property
|
39
|
-
expect(result[1]).to eq token
|
40
|
-
end
|
41
|
-
|
42
|
-
specify("scanner_nonproperty_#{token}_#{count}") do
|
43
|
-
tokens = RS.scan("a\\P{#{property}}c")
|
44
|
-
result = tokens.at(1)
|
45
|
-
expect(result[0]).to eq :nonproperty
|
46
|
-
expect(result[1]).to eq token
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe('UnicodeBlock scanning') do
|
4
|
-
tests = {
|
5
|
-
'InArabic' => :in_arabic,
|
6
|
-
'InCJK_Unified_Ideographs_Extension_A' => :in_cjk_unified_ideographs_extension_a,
|
7
|
-
'In Letterlike Symbols' => :in_letterlike_symbols,
|
8
|
-
'InMiscellaneous_Mathematical_Symbols-A' => :in_miscellaneous_mathematical_symbols_a
|
9
|
-
}
|
10
|
-
|
11
|
-
tests.each_with_index do |(property, token), count|
|
12
|
-
specify("scanner_property_#{token}_#{count}") do
|
13
|
-
tokens = RS.scan("a\\p{#{property}}c")
|
14
|
-
result = tokens.at(1)
|
15
|
-
|
16
|
-
expect(result[0]).to eq :property
|
17
|
-
expect(result[1]).to eq token
|
18
|
-
end
|
19
|
-
|
20
|
-
specify("scanner_nonproperty_#{token}_#{count}") do
|
21
|
-
tokens = RS.scan("a\\P{#{property}}c")
|
22
|
-
result = tokens.at(1)
|
23
|
-
|
24
|
-
expect(result[0]).to eq :nonproperty
|
25
|
-
expect(result[1]).to eq token
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|