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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/Gemfile +3 -3
  4. data/README.md +14 -6
  5. data/Rakefile +3 -4
  6. data/lib/regexp_parser/expression.rb +6 -43
  7. data/lib/regexp_parser/expression/classes/conditional.rb +3 -2
  8. data/lib/regexp_parser/expression/classes/escape.rb +0 -4
  9. data/lib/regexp_parser/expression/methods/match.rb +13 -0
  10. data/lib/regexp_parser/expression/methods/match_length.rb +1 -1
  11. data/lib/regexp_parser/expression/methods/options.rb +35 -0
  12. data/lib/regexp_parser/expression/methods/strfregexp.rb +0 -1
  13. data/lib/regexp_parser/expression/methods/tests.rb +6 -15
  14. data/lib/regexp_parser/expression/methods/traverse.rb +3 -1
  15. data/lib/regexp_parser/expression/sequence.rb +3 -2
  16. data/lib/regexp_parser/expression/sequence_operation.rb +2 -6
  17. data/lib/regexp_parser/lexer.rb +4 -25
  18. data/lib/regexp_parser/parser.rb +40 -33
  19. data/lib/regexp_parser/scanner.rb +1208 -1353
  20. data/lib/regexp_parser/scanner/char_type.rl +0 -3
  21. data/lib/regexp_parser/scanner/properties/long.yml +15 -1
  22. data/lib/regexp_parser/scanner/properties/short.yml +5 -0
  23. data/lib/regexp_parser/scanner/scanner.rl +116 -202
  24. data/lib/regexp_parser/syntax/tokens/unicode_property.rb +30 -0
  25. data/lib/regexp_parser/syntax/versions/2.6.2.rb +10 -0
  26. data/lib/regexp_parser/syntax/versions/2.6.3.rb +10 -0
  27. data/lib/regexp_parser/version.rb +1 -1
  28. data/spec/expression/base_spec.rb +14 -0
  29. data/spec/expression/methods/match_length_spec.rb +20 -0
  30. data/spec/expression/methods/match_spec.rb +25 -0
  31. data/spec/expression/methods/tests_spec.rb +2 -0
  32. data/spec/expression/methods/traverse_spec.rb +21 -0
  33. data/spec/expression/options_spec.rb +128 -0
  34. data/spec/expression/root_spec.rb +9 -0
  35. data/spec/expression/sequence_spec.rb +9 -0
  36. data/spec/lexer/conditionals_spec.rb +49 -119
  37. data/spec/lexer/delimiters_spec.rb +68 -0
  38. data/spec/lexer/escapes_spec.rb +8 -32
  39. data/spec/lexer/keep_spec.rb +5 -17
  40. data/spec/lexer/literals_spec.rb +73 -110
  41. data/spec/lexer/nesting_spec.rb +86 -117
  42. data/spec/lexer/refcalls_spec.rb +51 -50
  43. data/spec/parser/all_spec.rb +13 -1
  44. data/spec/parser/anchors_spec.rb +9 -23
  45. data/spec/parser/conditionals_spec.rb +9 -9
  46. data/spec/parser/errors_spec.rb +22 -43
  47. data/spec/parser/escapes_spec.rb +33 -44
  48. data/spec/parser/free_space_spec.rb +25 -4
  49. data/spec/parser/groups_spec.rb +98 -257
  50. data/spec/parser/keep_spec.rb +2 -15
  51. data/spec/parser/options_spec.rb +28 -0
  52. data/spec/parser/posix_classes_spec.rb +5 -24
  53. data/spec/parser/properties_spec.rb +42 -54
  54. data/spec/parser/quantifiers_spec.rb +42 -283
  55. data/spec/parser/refcalls_spec.rb +60 -185
  56. data/spec/parser/set/intersections_spec.rb +17 -17
  57. data/spec/parser/set/ranges_spec.rb +17 -17
  58. data/spec/parser/sets_spec.rb +5 -5
  59. data/spec/parser/types_spec.rb +11 -36
  60. data/spec/scanner/anchors_spec.rb +13 -28
  61. data/spec/scanner/conditionals_spec.rb +121 -173
  62. data/spec/scanner/delimiters_spec.rb +52 -0
  63. data/spec/scanner/errors_spec.rb +64 -87
  64. data/spec/scanner/escapes_spec.rb +53 -50
  65. data/spec/scanner/free_space_spec.rb +102 -165
  66. data/spec/scanner/groups_spec.rb +45 -64
  67. data/spec/scanner/keep_spec.rb +5 -28
  68. data/spec/scanner/literals_spec.rb +45 -81
  69. data/spec/scanner/meta_spec.rb +13 -33
  70. data/spec/scanner/options_spec.rb +36 -0
  71. data/spec/scanner/properties_spec.rb +43 -286
  72. data/spec/scanner/quantifiers_spec.rb +13 -28
  73. data/spec/scanner/refcalls_spec.rb +32 -48
  74. data/spec/scanner/sets_spec.rb +88 -102
  75. data/spec/scanner/types_spec.rb +10 -25
  76. data/spec/spec_helper.rb +1 -0
  77. data/spec/support/shared_examples.rb +77 -0
  78. data/spec/syntax/syntax_spec.rb +4 -0
  79. data/spec/syntax/versions/1.8.6_spec.rb +12 -33
  80. data/spec/syntax/versions/1.9.1_spec.rb +5 -18
  81. data/spec/syntax/versions/1.9.3_spec.rb +4 -17
  82. data/spec/syntax/versions/2.0.0_spec.rb +8 -23
  83. data/spec/syntax/versions/2.2.0_spec.rb +4 -17
  84. data/spec/syntax/versions/aliases_spec.rb +27 -109
  85. metadata +28 -10
  86. data/spec/scanner/scripts_spec.rb +0 -49
  87. 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