js_regex 1.0.11 → 1.0.12

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c4a6863b83e153ca634f1bacc95617a69714079
4
- data.tar.gz: 167deca0ba9f16ee72ebcb515c96a6633c2e37f1
3
+ metadata.gz: 6f7c9a503a4ccb3152c6420bc351830c9ac1be24
4
+ data.tar.gz: 7b32c73207f49ac9417bc002a2196036af413f90
5
5
  SHA512:
6
- metadata.gz: 2c75ae7b1fdb1efb48fa59a12cfe5f17d1475a8a2087f6f73b062dec88b7cb5b87e4d42ad8786d77d4bfae3f8c00d53bdf8496f34e935ae61876c000b6901476
7
- data.tar.gz: bcd94e25831bb768e86c51cdd2aabf3952ec84580b76495a70710a58a2d926aa97443112df05730b3a5101fec7560da36c3236e30d1391261ce4ef8401b2f540
6
+ metadata.gz: 7cde6b670649bf911692408b718785bd523d30d35d01e82c9b6b3ac3ea37dac84d43a2ec28b712f9681c828ec522f54f39098e7cc7ccbbd61cfee09f2b08bcc6
7
+ data.tar.gz: 14fe5c44dbd8613f45dbdb8a3ffa7792721a7c9db80a8088027e7e78f69aa3c96b351e688f1347d22ee3437951a86509566fa979c9dfa69a88b110e0fed34473
@@ -13,13 +13,12 @@ class JsRegex
13
13
  def convert_data
14
14
  case subtype
15
15
  when :lookahead, :nlookahead
16
- open_assertion
16
+ open_group(non_capturing: true)
17
17
  when :nlookbehind
18
18
  context.negative_lookbehind = true
19
19
  warn_of_unsupported_feature('negative lookbehind assertion')
20
20
  else # :lookbehind, ...
21
- warn_of_unsupported_feature
22
- open_group('(?:')
21
+ open_unsupported_group
23
22
  end
24
23
  end
25
24
  end
@@ -8,11 +8,10 @@ class JsRegex
8
8
  class Context
9
9
  attr_accessor :buffered_set_members,
10
10
  :buffered_set_extractions,
11
- :captured_groups,
11
+ :captured_group_count,
12
12
  :group_count_changed,
13
13
  :group_level,
14
14
  :group_level_for_backreference,
15
- :group_number_for_backreference,
16
15
  :negative_lookbehind,
17
16
  :negative_set_levels,
18
17
  :previous_quantifier_subtype,
@@ -22,7 +21,7 @@ class JsRegex
22
21
  def initialize
23
22
  self.buffered_set_members = []
24
23
  self.buffered_set_extractions = []
25
- self.captured_groups = 0
24
+ self.captured_group_count = 0
26
25
  self.group_count_changed = false
27
26
  self.group_level = 0
28
27
  self.negative_lookbehind = false
@@ -14,39 +14,44 @@ class JsRegex
14
14
  when :capture then open_group
15
15
  when :close then close_group
16
16
  when :comment then '' # drop whole group w/o warning
17
- when :named_ab, :named_sq then open_group('(') # drop name w/o warning
17
+ when :named_ab, :named_sq then open_named_group
18
18
  when :options then open_options_group
19
- when :passive then open_group('(?:', false)
20
- else
21
- warn_of_unsupported_feature
22
- open_group('(')
19
+ when :passive then open_passive_group
20
+ else open_unsupported_group
23
21
  end
24
22
  end
25
23
 
26
24
  def open_atomic_group
27
- # Atomicity is achieved with backreferenced lookahead groups:
25
+ # Atomicity is emulated using backreferenced lookahead groups:
28
26
  # http://instanceof.me/post/52245507631
29
27
  # regex-emulate-atomic-grouping-with-lookahead
30
28
  context.group_level_for_backreference = context.group_level
31
- context.group_number_for_backreference = context.captured_groups + 1
32
- open_assertion('(?=(')
29
+ open_group(head: '(?=(')
30
+ end
31
+
32
+ def open_named_group
33
+ # drop name w/o warning
34
+ open_group(head: '(')
33
35
  end
34
36
 
35
37
  def open_options_group
36
38
  warn_of_unsupported_feature('group-specific options')
37
- open_group('(')
39
+ open_group(head: '(')
38
40
  end
39
41
 
40
- def open_group(group_head = pass_through, capturing = true)
41
- context.group_level += 1
42
- context.captured_groups += 1 if capturing
43
- group_head
42
+ def open_passive_group
43
+ open_group(head: '(?:', non_capturing: true)
44
+ end
45
+
46
+ def open_unsupported_group
47
+ warn_of_unsupported_feature
48
+ open_passive_group
44
49
  end
45
50
 
46
- def open_assertion(assertion_head = pass_through)
47
- # these don't count as opened groups for backreference purposes
51
+ def open_group(options = {})
48
52
  context.group_level += 1
49
- assertion_head
53
+ context.captured_group_count += 1 unless options[:non_capturing]
54
+ options[:head] || pass_through
50
55
  end
51
56
 
52
57
  def close_group
@@ -74,7 +79,7 @@ class JsRegex
74
79
  context.group_level_for_backreference = nil
75
80
  context.group_count_changed = true
76
81
  # the empty passive group (?:) is appended in case literal digits follow
77
- "))\\#{context.group_number_for_backreference}(?:)"
82
+ "))\\#{context.captured_group_count}(?:)"
78
83
  end
79
84
  end
80
85
  end
@@ -126,7 +126,8 @@ class JsRegex
126
126
  case buffered_extractions.count
127
127
  when 0 then ''
128
128
  when 1 then buffered_extractions.first
129
- else "(?:#{buffered_extractions.join('|')})" end
129
+ else "(?:#{buffered_extractions.join('|')})"
130
+ end
130
131
  end
131
132
 
132
133
  def build_set(members, negative)
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: 1.0.11
4
+ version: 1.0.12
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: 2015-11-02 00:00:00.000000000 Z
11
+ date: 2016-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: regexp_parser
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.1
19
+ version: 0.3.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.3.1
26
+ version: 0.3.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: codeclimate-test-reporter
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -129,8 +129,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  version: '0'
130
130
  requirements: []
131
131
  rubyforge_project:
132
- rubygems_version: 2.4.5
132
+ rubygems_version: 2.4.8
133
133
  signing_key:
134
134
  specification_version: 4
135
135
  summary: Converts Ruby regexes to JavaScript regexes.
136
136
  test_files: []
137
+ has_rdoc: