js_regex 3.6.0 → 3.7.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/lib/js_regex.rb +12 -2
- data/lib/js_regex/conversion.rb +3 -2
- data/lib/js_regex/converter.rb +1 -3
- data/lib/js_regex/converter/anchor_converter.rb +0 -2
- data/lib/js_regex/converter/assertion_converter.rb +0 -2
- data/lib/js_regex/converter/backreference_converter.rb +0 -2
- data/lib/js_regex/converter/base.rb +0 -2
- data/lib/js_regex/converter/conditional_converter.rb +0 -2
- data/lib/js_regex/converter/context.rb +0 -2
- data/lib/js_regex/converter/escape_converter.rb +0 -2
- data/lib/js_regex/converter/freespace_converter.rb +0 -2
- data/lib/js_regex/converter/group_converter.rb +0 -2
- data/lib/js_regex/converter/literal_converter.rb +0 -2
- data/lib/js_regex/converter/meta_converter.rb +0 -2
- data/lib/js_regex/converter/property_converter.rb +0 -2
- data/lib/js_regex/converter/set_converter.rb +1 -5
- data/lib/js_regex/converter/subexpression_converter.rb +0 -2
- data/lib/js_regex/converter/type_converter.rb +0 -2
- data/lib/js_regex/converter/unsupported_token_converter.rb +0 -2
- data/lib/js_regex/error.rb +5 -0
- data/lib/js_regex/node.rb +5 -3
- data/lib/js_regex/second_pass.rb +1 -3
- data/lib/js_regex/version.rb +1 -3
- metadata +34 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c133491821c27a1ce87f58e59c828e92cef7e1f7f9be99b015e79e55ded6874e
|
4
|
+
data.tar.gz: 7ea0268f1e0d8cf48c6a56b635d8189dfb1c2f0ad969902eb0d2a9380d01f03a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f31af53ed6fd3213839df7ece799dc951a0f979cf9858cce47ae8151c167de5a5c5464de3d7355782a8bd56f6d142c5d152d4e381ffed9e26f7f51b13c445b1
|
7
|
+
data.tar.gz: 46525b2bb74b11189495f831fa860980291c9be05c5d546e7fc1ed1bee335d4cb29059b6ba1ffb008528c78309c4e75e2f9088570d7691565180821b912ffc96
|
data/lib/js_regex.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
# JsRegex converts ::Regexp instances to JavaScript.
|
4
2
|
#
|
5
3
|
# Usage:
|
@@ -10,6 +8,7 @@
|
|
10
8
|
#
|
11
9
|
class JsRegex
|
12
10
|
require_relative File.join('js_regex', 'conversion')
|
11
|
+
require_relative File.join('js_regex', 'error')
|
13
12
|
require_relative File.join('js_regex', 'version')
|
14
13
|
require 'json'
|
15
14
|
|
@@ -30,4 +29,15 @@ class JsRegex
|
|
30
29
|
def to_s
|
31
30
|
"/#{source.empty? ? '(?:)' : source}/#{options}"
|
32
31
|
end
|
32
|
+
|
33
|
+
def self.new!(ruby_regex, options: nil)
|
34
|
+
js_regex = new(ruby_regex, options: options)
|
35
|
+
if js_regex.warnings.any?
|
36
|
+
raise StandardError.new(
|
37
|
+
"Could not fully convert the given regex #{ruby_regex.inspect}:\n" +
|
38
|
+
js_regex.warnings.join("\n")
|
39
|
+
).extend(JsRegex::Error)
|
40
|
+
end
|
41
|
+
js_regex
|
42
|
+
end
|
33
43
|
end
|
data/lib/js_regex/conversion.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
class JsRegex
|
4
2
|
#
|
5
3
|
# This class acts as a facade, passing a regex to the converters.
|
@@ -9,6 +7,7 @@ class JsRegex
|
|
9
7
|
class Conversion
|
10
8
|
require 'regexp_parser'
|
11
9
|
require_relative 'converter'
|
10
|
+
require_relative 'error'
|
12
11
|
require_relative 'node'
|
13
12
|
require_relative 'second_pass'
|
14
13
|
|
@@ -27,6 +26,8 @@ class JsRegex
|
|
27
26
|
converted_tree = Converter.convert(tree, context)
|
28
27
|
final_tree = SecondPass.call(converted_tree)
|
29
28
|
[final_tree.to_s, context.warnings]
|
29
|
+
rescue Regexp::Parser::Error => e
|
30
|
+
raise e.extend(JsRegex::Error)
|
30
31
|
end
|
31
32
|
|
32
33
|
def convert_options(input, custom_options)
|
data/lib/js_regex/converter.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require_relative 'base'
|
4
2
|
require_relative 'escape_converter'
|
5
3
|
require_relative 'type_converter'
|
@@ -37,9 +35,7 @@ class JsRegex
|
|
37
35
|
|
38
36
|
def all_children_directly_compatible?
|
39
37
|
# note that #each_expression is recursive
|
40
|
-
expression.each_expression
|
41
|
-
return unless child_directly_compatible?(exp)
|
42
|
-
end
|
38
|
+
expression.each_expression.all? { |ch| child_directly_compatible?(ch) }
|
43
39
|
end
|
44
40
|
|
45
41
|
def child_directly_compatible?(exp)
|
data/lib/js_regex/node.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
class JsRegex
|
4
2
|
#
|
5
3
|
# Converter#convert result. Represents a branch or leaf node with an optional
|
6
4
|
# quantifier as well as type and reference annotations for SecondPass.
|
7
5
|
#
|
8
6
|
class Node
|
7
|
+
require_relative 'error'
|
8
|
+
|
9
9
|
attr_reader :children, :quantifier, :reference, :type
|
10
10
|
|
11
11
|
TYPES = %i[
|
@@ -49,7 +49,9 @@ class JsRegex
|
|
49
49
|
when :backref_num, :captured_group, :plain
|
50
50
|
children.join << quantifier.to_s
|
51
51
|
else
|
52
|
-
raise TypeError
|
52
|
+
raise TypeError.new(
|
53
|
+
"#{type} must be substituted before stringification"
|
54
|
+
).extend(JsRegex::Error)
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
data/lib/js_regex/second_pass.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
class JsRegex
|
4
2
|
#
|
5
3
|
# After conversion of a full Regexp::Expression tree, this
|
@@ -61,7 +59,7 @@ class JsRegex
|
|
61
59
|
|
62
60
|
def condition_permutations(conditions)
|
63
61
|
(0..(conditions.length)).inject([]) do |arr, n|
|
64
|
-
arr
|
62
|
+
arr + conditions.combination(n).to_a
|
65
63
|
end
|
66
64
|
end
|
67
65
|
|
data/lib/js_regex/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: js_regex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janosch Müller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: character_set
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2.
|
33
|
+
version: '2.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2.
|
40
|
+
version: '2.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: regexp_property_values
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,34 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 0.2.12
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: gouteur
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.8'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.8'
|
111
139
|
description: JsRegex converts Ruby's native regular expressions for JavaScript, taking
|
112
140
|
care of various incompatibilities and returning warnings for unsolvable differences.
|
113
141
|
email:
|
@@ -135,6 +163,7 @@ files:
|
|
135
163
|
- lib/js_regex/converter/subexpression_converter.rb
|
136
164
|
- lib/js_regex/converter/type_converter.rb
|
137
165
|
- lib/js_regex/converter/unsupported_token_converter.rb
|
166
|
+
- lib/js_regex/error.rb
|
138
167
|
- lib/js_regex/node.rb
|
139
168
|
- lib/js_regex/second_pass.rb
|
140
169
|
- lib/js_regex/version.rb
|
@@ -157,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
186
|
- !ruby/object:Gem::Version
|
158
187
|
version: '0'
|
159
188
|
requirements: []
|
160
|
-
rubygems_version: 3.
|
189
|
+
rubygems_version: 3.2.3
|
161
190
|
signing_key:
|
162
191
|
specification_version: 4
|
163
192
|
summary: Converts Ruby regexes to JavaScript regexes.
|