regexp_parser 2.8.1 → 2.12.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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -4
  3. data/LICENSE +1 -1
  4. data/Rakefile +5 -3
  5. data/lib/regexp_parser/error.rb +2 -0
  6. data/lib/regexp_parser/expression/base.rb +2 -0
  7. data/lib/regexp_parser/expression/classes/alternation.rb +2 -0
  8. data/lib/regexp_parser/expression/classes/anchor.rb +2 -0
  9. data/lib/regexp_parser/expression/classes/backreference.rb +3 -20
  10. data/lib/regexp_parser/expression/classes/character_set/intersection.rb +2 -0
  11. data/lib/regexp_parser/expression/classes/character_set/range.rb +2 -0
  12. data/lib/regexp_parser/expression/classes/character_set.rb +3 -4
  13. data/lib/regexp_parser/expression/classes/character_type.rb +2 -0
  14. data/lib/regexp_parser/expression/classes/conditional.rb +2 -14
  15. data/lib/regexp_parser/expression/classes/escape_sequence.rb +26 -95
  16. data/lib/regexp_parser/expression/classes/free_space.rb +2 -0
  17. data/lib/regexp_parser/expression/classes/group.rb +2 -0
  18. data/lib/regexp_parser/expression/classes/keep.rb +3 -1
  19. data/lib/regexp_parser/expression/classes/literal.rb +2 -0
  20. data/lib/regexp_parser/expression/classes/posix_class.rb +2 -4
  21. data/lib/regexp_parser/expression/classes/root.rb +2 -0
  22. data/lib/regexp_parser/expression/classes/unicode_property.rb +8 -9
  23. data/lib/regexp_parser/expression/methods/construct.rb +2 -0
  24. data/lib/regexp_parser/expression/methods/escape_sequence_char.rb +7 -0
  25. data/lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb +76 -0
  26. data/lib/regexp_parser/expression/methods/human_name.rb +2 -0
  27. data/lib/regexp_parser/expression/methods/match.rb +2 -0
  28. data/lib/regexp_parser/expression/methods/match_length.rb +2 -0
  29. data/lib/regexp_parser/expression/methods/negative.rb +22 -0
  30. data/lib/regexp_parser/expression/methods/options.rb +2 -0
  31. data/lib/regexp_parser/expression/methods/parts.rb +2 -0
  32. data/lib/regexp_parser/expression/methods/printing.rb +2 -0
  33. data/lib/regexp_parser/expression/methods/referenced_expressions.rb +30 -0
  34. data/lib/regexp_parser/expression/methods/strfregexp.rb +2 -0
  35. data/lib/regexp_parser/expression/methods/tests.rb +2 -0
  36. data/lib/regexp_parser/expression/methods/traverse.rb +2 -0
  37. data/lib/regexp_parser/expression/quantifier.rb +3 -1
  38. data/lib/regexp_parser/expression/sequence.rb +2 -0
  39. data/lib/regexp_parser/expression/sequence_operation.rb +2 -0
  40. data/lib/regexp_parser/expression/shared.rb +6 -3
  41. data/lib/regexp_parser/expression/subexpression.rb +2 -0
  42. data/lib/regexp_parser/expression.rb +39 -33
  43. data/lib/regexp_parser/lexer.rb +2 -0
  44. data/lib/regexp_parser/parser.rb +16 -9
  45. data/lib/regexp_parser/scanner/errors/premature_end_error.rb +2 -0
  46. data/lib/regexp_parser/scanner/errors/scanner_error.rb +3 -1
  47. data/lib/regexp_parser/scanner/errors/validation_error.rb +2 -0
  48. data/lib/regexp_parser/scanner/properties/long.csv +50 -0
  49. data/lib/regexp_parser/scanner/properties/short.csv +13 -0
  50. data/lib/regexp_parser/scanner/scanner.rl +62 -18
  51. data/lib/regexp_parser/scanner.rb +1041 -936
  52. data/lib/regexp_parser/syntax/any.rb +2 -0
  53. data/lib/regexp_parser/syntax/base.rb +2 -0
  54. data/lib/regexp_parser/syntax/token/anchor.rb +5 -3
  55. data/lib/regexp_parser/syntax/token/assertion.rb +4 -2
  56. data/lib/regexp_parser/syntax/token/backreference.rb +8 -6
  57. data/lib/regexp_parser/syntax/token/character_set.rb +3 -1
  58. data/lib/regexp_parser/syntax/token/character_type.rb +6 -4
  59. data/lib/regexp_parser/syntax/token/conditional.rb +5 -3
  60. data/lib/regexp_parser/syntax/token/escape.rb +9 -7
  61. data/lib/regexp_parser/syntax/token/group.rb +8 -6
  62. data/lib/regexp_parser/syntax/token/keep.rb +3 -1
  63. data/lib/regexp_parser/syntax/token/meta.rb +4 -2
  64. data/lib/regexp_parser/syntax/token/posix_class.rb +4 -2
  65. data/lib/regexp_parser/syntax/token/quantifier.rb +8 -6
  66. data/lib/regexp_parser/syntax/token/unicode_property.rb +149 -71
  67. data/lib/regexp_parser/syntax/token/virtual.rb +5 -3
  68. data/lib/regexp_parser/syntax/token.rb +18 -16
  69. data/lib/regexp_parser/syntax/version_lookup.rb +4 -2
  70. data/lib/regexp_parser/syntax/versions/1.8.6.rb +2 -0
  71. data/lib/regexp_parser/syntax/versions/1.9.1.rb +2 -0
  72. data/lib/regexp_parser/syntax/versions/1.9.3.rb +2 -0
  73. data/lib/regexp_parser/syntax/versions/2.0.0.rb +2 -0
  74. data/lib/regexp_parser/syntax/versions/2.2.0.rb +2 -0
  75. data/lib/regexp_parser/syntax/versions/2.3.0.rb +2 -0
  76. data/lib/regexp_parser/syntax/versions/2.4.0.rb +2 -0
  77. data/lib/regexp_parser/syntax/versions/2.4.1.rb +2 -0
  78. data/lib/regexp_parser/syntax/versions/2.5.0.rb +2 -0
  79. data/lib/regexp_parser/syntax/versions/2.6.0.rb +2 -0
  80. data/lib/regexp_parser/syntax/versions/2.6.2.rb +2 -0
  81. data/lib/regexp_parser/syntax/versions/2.6.3.rb +2 -0
  82. data/lib/regexp_parser/syntax/versions/3.1.0.rb +2 -0
  83. data/lib/regexp_parser/syntax/versions/3.2.0.rb +2 -0
  84. data/lib/regexp_parser/syntax/versions/3.5.0.rb +4 -0
  85. data/lib/regexp_parser/syntax/versions/4.0.0.rb +4 -0
  86. data/lib/regexp_parser/syntax/versions.rb +3 -1
  87. data/lib/regexp_parser/syntax.rb +3 -1
  88. data/lib/regexp_parser/token.rb +2 -0
  89. data/lib/regexp_parser/version.rb +3 -1
  90. data/lib/regexp_parser.rb +8 -6
  91. data/regexp_parser.gemspec +7 -5
  92. metadata +13 -11
  93. data/CHANGELOG.md +0 -691
  94. data/README.md +0 -506
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  module Token
3
5
  module Virtual
4
- Root = %i[root]
5
- Sequence = %i[sequence]
6
+ Root = %i[root].freeze
7
+ Sequence = %i[sequence].freeze
6
8
 
7
- All = %i[root sequence]
9
+ All = %i[root sequence].freeze
8
10
  Type = :expression
9
11
  end
10
12
  end
@@ -1,15 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Define the base module and the simplest of tokens.
2
4
  module Regexp::Syntax
3
5
  module Token
4
- Map = {}
6
+ Map = Hash.new
5
7
 
6
8
  module Literal
7
- All = %i[literal]
9
+ All = %i[literal].freeze
8
10
  Type = :literal
9
11
  end
10
12
 
11
13
  module FreeSpace
12
- All = %i[comment whitespace]
14
+ All = %i[comment whitespace].freeze
13
15
  Type = :free_space
14
16
  end
15
17
 
@@ -20,19 +22,19 @@ end
20
22
 
21
23
 
22
24
  # Load all the token files, they will populate the Map constant.
23
- require 'regexp_parser/syntax/token/anchor'
24
- require 'regexp_parser/syntax/token/assertion'
25
- require 'regexp_parser/syntax/token/backreference'
26
- require 'regexp_parser/syntax/token/posix_class'
27
- require 'regexp_parser/syntax/token/character_set'
28
- require 'regexp_parser/syntax/token/character_type'
29
- require 'regexp_parser/syntax/token/conditional'
30
- require 'regexp_parser/syntax/token/escape'
31
- require 'regexp_parser/syntax/token/group'
32
- require 'regexp_parser/syntax/token/keep'
33
- require 'regexp_parser/syntax/token/meta'
34
- require 'regexp_parser/syntax/token/quantifier'
35
- require 'regexp_parser/syntax/token/unicode_property'
25
+ require_relative 'token/anchor'
26
+ require_relative 'token/assertion'
27
+ require_relative 'token/backreference'
28
+ require_relative 'token/posix_class'
29
+ require_relative 'token/character_set'
30
+ require_relative 'token/character_type'
31
+ require_relative 'token/conditional'
32
+ require_relative 'token/escape'
33
+ require_relative 'token/group'
34
+ require_relative 'token/keep'
35
+ require_relative 'token/meta'
36
+ require_relative 'token/quantifier'
37
+ require_relative 'token/unicode_property'
36
38
 
37
39
 
38
40
  # After loading all the tokens the map is full. Extract all tokens and types
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Regexp::Syntax
2
4
  VERSION_FORMAT = '\Aruby/\d+\.\d+(\.\d+)?\z'
3
- VERSION_REGEXP = /#{VERSION_FORMAT}/
4
- VERSION_CONST_REGEXP = /\AV\d+_\d+(?:_\d+)?\z/
5
+ VERSION_REGEXP = /#{VERSION_FORMAT}/.freeze
6
+ VERSION_CONST_REGEXP = /\AV\d+_\d+(?:_\d+)?\z/.freeze
5
7
 
6
8
  class InvalidVersionNameError < Regexp::Syntax::SyntaxError
7
9
  def initialize(name)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V1_8_6 < Regexp::Syntax::Base
2
4
  implements :anchor, Anchor::All
3
5
  implements :assertion, Assertion::Lookahead
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V1_9_1 < Regexp::Syntax::V1_8_6
2
4
  implements :assertion, Assertion::Lookbehind
3
5
  implements :backref, Backreference::V1_9_1 + SubexpressionCall::All
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V1_9_3 < Regexp::Syntax::V1_9_1
2
4
  implements :property, UnicodeProperty::V1_9_3
3
5
  implements :nonproperty, UnicodeProperty::V1_9_3
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_0_0 < Regexp::Syntax::V1_9_3
2
4
  implements :keep, Keep::All
3
5
  implements :conditional, Conditional::All
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_2_0 < Regexp::Syntax::V2_0_0
2
4
  implements :property, UnicodeProperty::V2_2_0
3
5
  implements :nonproperty, UnicodeProperty::V2_2_0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_3_0 < Regexp::Syntax::V2_2_0
2
4
  implements :property, UnicodeProperty::V2_3_0
3
5
  implements :nonproperty, UnicodeProperty::V2_3_0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_4_0 < Regexp::Syntax::V2_3_0
2
4
  implements :property, UnicodeProperty::V2_4_0
3
5
  implements :nonproperty, UnicodeProperty::V2_4_0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_4_1 < Regexp::Syntax::V2_4_0
2
4
  implements :group, Group::V2_4_1
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_5_0 < Regexp::Syntax::V2_4_1
2
4
  implements :property, UnicodeProperty::V2_5_0
3
5
  implements :nonproperty, UnicodeProperty::V2_5_0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_6_0 < Regexp::Syntax::V2_5_0
2
4
  implements :property, UnicodeProperty::V2_6_0
3
5
  implements :nonproperty, UnicodeProperty::V2_6_0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_6_2 < Regexp::Syntax::V2_6_0
2
4
  implements :property, UnicodeProperty::V2_6_2
3
5
  implements :nonproperty, UnicodeProperty::V2_6_2
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V2_6_3 < Regexp::Syntax::V2_6_2
2
4
  implements :property, UnicodeProperty::V2_6_3
3
5
  implements :nonproperty, UnicodeProperty::V2_6_3
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V3_1_0 < Regexp::Syntax::V2_6_3
2
4
  implements :property, UnicodeProperty::V3_1_0
3
5
  implements :nonproperty, UnicodeProperty::V3_1_0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp::Syntax::V3_2_0 < Regexp::Syntax::V3_1_0
2
4
  implements :property, UnicodeProperty::V3_2_0
3
5
  implements :nonproperty, UnicodeProperty::V3_2_0
@@ -0,0 +1,4 @@
1
+ class Regexp::Syntax::V3_5_0 < Regexp::Syntax::V3_2_0
2
+ implements :property, UnicodeProperty::V3_5_0
3
+ implements :nonproperty, UnicodeProperty::V3_5_0
4
+ end
@@ -0,0 +1,4 @@
1
+ class Regexp::Syntax::V4_0_0 < Regexp::Syntax::V3_5_0
2
+ implements :property, UnicodeProperty::V4_0_0
3
+ implements :nonproperty, UnicodeProperty::V4_0_0
4
+ end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Ruby 1.x is no longer a supported runtime,
2
4
  # but its regex features are still recognized.
3
5
  #
4
6
  # Aliases for the latest patch version are provided as 'ruby/n.n',
5
7
  # e.g. 'ruby/1.9' refers to Ruby v1.9.3.
6
- Dir[File.expand_path('../versions/*.rb', __FILE__)].sort.each { |f| require f }
8
+ Dir[File.expand_path('../versions/*.rb', __FILE__)].sort.each { |f| require_relative f }
7
9
 
8
10
  Regexp::Syntax::CURRENT = Regexp::Syntax.for("ruby/#{RUBY_VERSION}")
@@ -1,4 +1,6 @@
1
- require 'regexp_parser/error'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'error'
2
4
 
3
5
  module Regexp::Syntax
4
6
  class SyntaxError < Regexp::Parser::Error; end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp
2
4
  TOKEN_KEYS = %i[
3
5
  type
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Regexp
2
4
  class Parser
3
- VERSION = '2.8.1'
5
+ VERSION = '2.12.0'
4
6
  end
5
7
  end
data/lib/regexp_parser.rb CHANGED
@@ -1,6 +1,8 @@
1
- require 'regexp_parser/version'
2
- require 'regexp_parser/token'
3
- require 'regexp_parser/scanner'
4
- require 'regexp_parser/syntax'
5
- require 'regexp_parser/lexer'
6
- require 'regexp_parser/parser'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'regexp_parser/version'
4
+ require_relative 'regexp_parser/token'
5
+ require_relative 'regexp_parser/scanner'
6
+ require_relative 'regexp_parser/syntax'
7
+ require_relative 'regexp_parser/lexer'
8
+ require_relative 'regexp_parser/parser'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $:.unshift File.join(File.dirname(__FILE__), 'lib')
2
4
 
3
5
  require 'regexp_parser/version'
@@ -16,17 +18,17 @@ Gem::Specification.new do |spec|
16
18
  spec.metadata['source_code_uri'] = spec.homepage
17
19
  spec.metadata['wiki_uri'] = "#{spec.homepage}/wiki"
18
20
 
19
- spec.authors = ['Ammar Ali']
20
- spec.email = ['ammarabuali@gmail.com']
21
+ spec.metadata['rubygems_mfa_required'] = 'true'
22
+
23
+ spec.authors = ['Ammar Ali', 'Janosch Müller']
24
+ spec.email = ['ammarabuali@gmail.com', 'janosch84@gmail.com']
21
25
 
22
26
  spec.license = 'MIT'
23
27
 
24
28
  spec.require_paths = ['lib']
25
29
 
26
30
  spec.files = Dir.glob('lib/**/*.{csv,rb,rl}') +
27
- %w[Gemfile Rakefile LICENSE README.md CHANGELOG.md regexp_parser.gemspec]
28
-
29
- spec.rdoc_options = ["--inline-source", "--charset=UTF-8"]
31
+ %w[Gemfile Rakefile LICENSE regexp_parser.gemspec]
30
32
 
31
33
  spec.platform = Gem::Platform::RUBY
32
34
 
metadata CHANGED
@@ -1,26 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: regexp_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.1
4
+ version: 2.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ammar Ali
8
- autorequire:
8
+ - Janosch Müller
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-10 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A library for tokenizing, lexing, and parsing Ruby regular expressions.
14
14
  email:
15
15
  - ammarabuali@gmail.com
16
+ - janosch84@gmail.com
16
17
  executables: []
17
18
  extensions: []
18
19
  extra_rdoc_files: []
19
20
  files:
20
- - CHANGELOG.md
21
21
  - Gemfile
22
22
  - LICENSE
23
- - README.md
24
23
  - Rakefile
25
24
  - lib/regexp_parser.rb
26
25
  - lib/regexp_parser/error.rb
@@ -43,12 +42,16 @@ files:
43
42
  - lib/regexp_parser/expression/classes/root.rb
44
43
  - lib/regexp_parser/expression/classes/unicode_property.rb
45
44
  - lib/regexp_parser/expression/methods/construct.rb
45
+ - lib/regexp_parser/expression/methods/escape_sequence_char.rb
46
+ - lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb
46
47
  - lib/regexp_parser/expression/methods/human_name.rb
47
48
  - lib/regexp_parser/expression/methods/match.rb
48
49
  - lib/regexp_parser/expression/methods/match_length.rb
50
+ - lib/regexp_parser/expression/methods/negative.rb
49
51
  - lib/regexp_parser/expression/methods/options.rb
50
52
  - lib/regexp_parser/expression/methods/parts.rb
51
53
  - lib/regexp_parser/expression/methods/printing.rb
54
+ - lib/regexp_parser/expression/methods/referenced_expressions.rb
52
55
  - lib/regexp_parser/expression/methods/strfregexp.rb
53
56
  - lib/regexp_parser/expression/methods/tests.rb
54
57
  - lib/regexp_parser/expression/methods/traverse.rb
@@ -102,6 +105,8 @@ files:
102
105
  - lib/regexp_parser/syntax/versions/2.6.3.rb
103
106
  - lib/regexp_parser/syntax/versions/3.1.0.rb
104
107
  - lib/regexp_parser/syntax/versions/3.2.0.rb
108
+ - lib/regexp_parser/syntax/versions/3.5.0.rb
109
+ - lib/regexp_parser/syntax/versions/4.0.0.rb
105
110
  - lib/regexp_parser/token.rb
106
111
  - lib/regexp_parser/version.rb
107
112
  - regexp_parser.gemspec
@@ -114,10 +119,8 @@ metadata:
114
119
  homepage_uri: https://github.com/ammar/regexp_parser
115
120
  source_code_uri: https://github.com/ammar/regexp_parser
116
121
  wiki_uri: https://github.com/ammar/regexp_parser/wiki
117
- post_install_message:
118
- rdoc_options:
119
- - "--inline-source"
120
- - "--charset=UTF-8"
122
+ rubygems_mfa_required: 'true'
123
+ rdoc_options: []
121
124
  require_paths:
122
125
  - lib
123
126
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -131,8 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
134
  - !ruby/object:Gem::Version
132
135
  version: '0'
133
136
  requirements: []
134
- rubygems_version: 3.4.10
135
- signing_key:
137
+ rubygems_version: 4.0.3
136
138
  specification_version: 4
137
139
  summary: Scanner, lexer, parser for ruby's regular expressions
138
140
  test_files: []