js_regex 3.7.1 → 3.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b73e72fcfc38ae9d16007b1b0ba97672b58ff1b2509db62ed0eead5bc40662e2
4
- data.tar.gz: 1fdbb077e0fa2e695ce3e15bb15d11d55a129a0b107fe10d81eaf0b304c0fc37
3
+ metadata.gz: 3ec1645dcb85514957cbc0d1d08d973c44386e7ae554b83ceb56be807178a08d
4
+ data.tar.gz: cebf15dc34ca2e2f6ed1e57cc9a4719ee79c652070d8d0b687dae9278ed18e8d
5
5
  SHA512:
6
- metadata.gz: 0f85c249723234f8f75e7bcde196e2c714cf5885aaefca9cef436b4dc975e5d0d65e14748699969fd71b0d67c184cf45a4b2bba1acfca62a003692e574287c5a
7
- data.tar.gz: e6e52efae70c6d14db846d6f50d97485c4714f8e2fe5cb0fe13ac6df9b54e36a20646090753d668c0846e4eca07ef7a4ed50fd59fe3c63ae56415b1ddd33ed51
6
+ metadata.gz: 74eb573819cf814ca8c196dae4a6ddbb139b941947197cb115153ec749a89fe5189b1296693f86596ded4a882f81858b877b1514ff346289510dce351df8224f
7
+ data.tar.gz: 07e5743c335d15bcadfd465df576e32a5b9c6c27918b16c0282f1ac19ecf5ba7634fdf6b9a528963742316ce1a15f174098934da61d2c0a8975f639e1827a4b0
@@ -32,8 +32,10 @@ class JsRegex
32
32
  return node if node.dropped? || (qtf = expression.quantifier).nil?
33
33
 
34
34
  if qtf.possessive?
35
- node.update(quantifier: qtf.text[0..-2])
35
+ node.update(quantifier: qtf.dup.tap { |q| q.text = q.text[0..-2] })
36
36
  return wrap_in_backrefed_lookahead(node)
37
+ elsif qtf.token == :interval && qtf.text[0..1] == "{,"
38
+ node.update(quantifier: qtf.dup.tap { |q| q.text = "{0,#{q.max}}" })
37
39
  else
38
40
  node.update(quantifier: qtf)
39
41
  end
data/lib/js_regex/node.rb CHANGED
@@ -63,6 +63,30 @@ class JsRegex
63
63
 
64
64
  private
65
65
 
66
- attr_writer :children, :reference, :quantifier, :type
66
+ TypeError = Class.new(::TypeError).extend(JsRegex::Error)
67
+
68
+ def type=(arg)
69
+ arg.nil? || TYPES.include?(arg) ||
70
+ raise(TypeError, "unsupported type #{arg.class} for #{__method__}")
71
+ @type = arg
72
+ end
73
+
74
+ def children=(arg)
75
+ arg.class == Array ||
76
+ raise(TypeError, "unsupported type #{arg.class} for #{__method__}")
77
+ @children = arg
78
+ end
79
+
80
+ def quantifier=(arg)
81
+ arg.nil? || arg.class == Regexp::Expression::Quantifier ||
82
+ raise(TypeError, "unsupported type #{arg.class} for #{__method__}")
83
+ @quantifier = arg
84
+ end
85
+
86
+ def reference=(arg)
87
+ arg.nil? || arg.is_a?(Numeric) ||
88
+ raise(TypeError, "unsupported type #{arg.class} for #{__method__}")
89
+ @reference = arg
90
+ end
67
91
  end
68
92
  end
@@ -101,7 +101,9 @@ class JsRegex
101
101
  if qtf.max.equal?(1) # any zero_or_one quantifier (?, ??, ?+)
102
102
  node.update(quantifier: nil)
103
103
  else
104
- node.update(quantifier: "{1,#{qtf.max}}#{'?' if qtf.reluctant?}")
104
+ min_quantifier = qtf.dup
105
+ min_quantifier.text = "{1,#{qtf.max}}#{'?' if qtf.reluctant?}"
106
+ node.update(quantifier: min_quantifier)
105
107
  end
106
108
  end
107
109
 
@@ -110,7 +112,8 @@ class JsRegex
110
112
  end
111
113
 
112
114
  def null_quantify(node)
113
- node.update(quantifier: '{0}')
115
+ null_quantifier = Regexp::Expression::Quantifier.construct(text: '{0}')
116
+ node.update(quantifier: null_quantifier)
114
117
  end
115
118
  end
116
119
  end
@@ -1,3 +1,3 @@
1
1
  class JsRegex
2
- VERSION = '3.7.1'
2
+ VERSION = '3.7.2'
3
3
  end
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.7.1
4
+ version: 3.7.2
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: 2021-12-14 00:00:00.000000000 Z
11
+ date: 2022-05-27 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.1'
33
+ version: '2.5'
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.1'
40
+ version: '2.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: regexp_property_values
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,90 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.0'
55
- - !ruby/object:Gem::Dependency
56
- name: duktape
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.6'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.6'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '13.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '13.0'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.10'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '3.10'
97
- - !ruby/object:Gem::Dependency
98
- name: codecov
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 0.2.12
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
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'
139
55
  description: JsRegex converts Ruby's native regular expressions for JavaScript, taking
140
56
  care of various incompatibilities and returning warnings for unsolvable differences.
141
57
  email:
@@ -186,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
102
  - !ruby/object:Gem::Version
187
103
  version: '0'
188
104
  requirements: []
189
- rubygems_version: 3.3.0.dev
105
+ rubygems_version: 3.4.0.dev
190
106
  signing_key:
191
107
  specification_version: 4
192
108
  summary: Converts Ruby regexes to JavaScript regexes.