regexp-examples 0.2.1 → 0.2.2

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: 9d9f8909766dfe6d25a9dba8e8afab9c0ec17cc9
4
- data.tar.gz: b3f9c5eb18f275f48f7dbf86e38e1b93ead83cfc
3
+ metadata.gz: 011ff6be938165b678adc0566c41cb539c4ff077
4
+ data.tar.gz: 0ec39313bd0b52ac8abf815e99a887d07e7bac5a
5
5
  SHA512:
6
- metadata.gz: 9aa083eb1184a282c07ab8b909c1bba7d46ded2ee754d3481724ace2b65f7c2a3cb15cb8b6e1ddec2f71d14bed19ad69f3f7acb54148859b4ca48b876ec93e51
7
- data.tar.gz: 635d278c451535dba1f16fcb51d1bb4d35de4a0c09f2348e5c7d8549bb459067e20064e3529dae4616d27838811859ca8ab10b036d6fce5406b7615d6e18345a
6
+ metadata.gz: 6343b46ed69437a8eb136d94737d2e59fc4c1f0ead799304fae09cd6494358e4c59bc25b26235793600ad645fae5eab6a76da6baa426c151eb1bfb59b1d5800e
7
+ data.tar.gz: 437635215e633f6c126906a157ca9d8274f25c21bcaa3a6d466e602e4fad1e249d8dc9bd2a0bb4dfc1505aef4b723f24460d5953fd128c55ddf6253ab6dc85b9
data/README.md CHANGED
@@ -42,7 +42,7 @@ or a huge number of possible matches, such as `/.\w/`, then only a subset of the
42
42
 
43
43
  I plan to add the following features to the gem, but have not yet got round to it:
44
44
 
45
- * Throw exceptions if illegal syntax (see below) is used
45
+ * Throw exceptions if illegal syntax (see below) is used. This is currently only partially implemented (for lookarounds only).
46
46
  * POSIX bracket expressions, e.g. `/[[:alnum:]]/`, `/[[:space:]]/`
47
47
  * Options, e.g. `/pattern/i`, `/foo.*bar/m`
48
48
  * Escape sequences, e.g. `/\xa1/`
@@ -2,7 +2,14 @@
2
2
  "RSpec": {
3
3
  "coverage": {
4
4
  "/home/tom/regexp-examples/lib/regexp-examples.rb": [
5
- 9,
5
+ 10,
6
+ null
7
+ ],
8
+ "/home/tom/regexp-examples/lib/regexp-examples/exceptions.rb": [
9
+ 1,
10
+ 1,
11
+ 1,
12
+ 1,
6
13
  null
7
14
  ],
8
15
  "/home/tom/regexp-examples/lib/regexp-examples/helpers.rb": [
@@ -20,25 +27,15 @@
20
27
  271,
21
28
  164,
22
29
  237,
23
- 73,
24
- null,
25
- 164,
26
- null,
27
30
  null,
28
31
  null,
29
32
  null,
30
33
  1,
31
- 164,
32
- 164,
33
- 328,
34
- null,
35
- null,
34
+ 237,
35
+ 237,
36
36
  null,
37
- 164,
38
- 123,
39
- null,
40
- 41,
41
37
  null,
38
+ 237,
42
39
  null,
43
40
  null,
44
41
  null
@@ -48,15 +45,15 @@
48
45
  1,
49
46
  1,
50
47
  1,
51
- 54,
52
- 54,
53
- 54,
48
+ 58,
49
+ 58,
50
+ 58,
54
51
  null,
55
52
  null,
56
53
  1,
57
- 101,
58
- 101,
59
- 312,
54
+ 105,
55
+ 105,
56
+ 316,
60
57
  312,
61
58
  271,
62
59
  271,
@@ -68,10 +65,10 @@
68
65
  1,
69
66
  null,
70
67
  1,
71
- 312,
72
- 312,
68
+ 316,
69
+ 316,
73
70
  null,
74
- 41,
71
+ 45,
75
72
  null,
76
73
  41,
77
74
  null,
@@ -127,10 +124,10 @@
127
124
  null,
128
125
  null,
129
126
  1,
130
- 41,
131
- 41,
132
- 41,
133
- 41,
127
+ 45,
128
+ 45,
129
+ 45,
130
+ 45,
134
131
  null,
135
132
  null,
136
133
  38,
@@ -138,13 +135,13 @@
138
135
  1,
139
136
  1,
140
137
  null,
138
+ 2,
141
139
  null,
142
- null,
143
- null,
140
+ 2,
144
141
  null,
145
142
  2,
146
143
  2,
147
- 41,
144
+ 45,
148
145
  null,
149
146
  41,
150
147
  41,
@@ -223,7 +220,7 @@
223
220
  null,
224
221
  null,
225
222
  1,
226
- 98,
223
+ 102,
227
224
  null,
228
225
  null,
229
226
  null,
@@ -277,49 +274,18 @@
277
274
  1,
278
275
  1,
279
276
  1,
280
- 1,
281
- 248,
282
- 248,
283
- 248,
284
- null,
285
- null,
286
- 1,
287
- 168,
288
- null,
289
- null,
290
- null,
291
- 1,
292
- 79,
293
- null,
294
- null,
295
- 1,
296
- 28,
297
- null,
298
- null,
299
- null,
300
- 1,
301
- 1,
302
277
  54,
303
278
  148,
304
- 130,
305
- null,
306
- 18,
307
- 112,
308
279
  28,
309
280
  null,
281
+ 148,
310
282
  null,
311
283
  null,
312
284
  null,
313
- 54,
314
- null,
315
- null,
316
285
  1,
317
286
  1,
318
287
  28,
319
- 75,
320
- 74,
321
- 77,
322
- null,
288
+ 76,
323
289
  null,
324
290
  null,
325
291
  null,
@@ -409,6 +375,31 @@
409
375
  ],
410
376
  "/home/tom/regexp-examples/lib/regexp-examples/groups.rb": [
411
377
  1,
378
+ null,
379
+ null,
380
+ null,
381
+ 1,
382
+ 1,
383
+ 1,
384
+ 1633,
385
+ 1633,
386
+ 1633,
387
+ 122,
388
+ null,
389
+ 1633,
390
+ null,
391
+ null,
392
+ 1,
393
+ 1667,
394
+ null,
395
+ null,
396
+ null,
397
+ null,
398
+ 1,
399
+ 413,
400
+ null,
401
+ null,
402
+ null,
412
403
  1,
413
404
  1,
414
405
  175,
@@ -463,9 +454,7 @@
463
454
  null,
464
455
  1,
465
456
  28,
466
- 1,
467
- null,
468
- 27,
457
+ 572,
469
458
  null,
470
459
  null,
471
460
  null,
@@ -473,6 +462,8 @@
473
462
  1,
474
463
  1,
475
464
  1,
465
+ 94,
466
+ null,
476
467
  null,
477
468
  null,
478
469
  null,
@@ -490,7 +481,6 @@
490
481
  186,
491
482
  41,
492
483
  101,
493
- 101,
494
484
  null,
495
485
  null,
496
486
  null,
@@ -512,6 +502,8 @@
512
502
  6,
513
503
  null,
514
504
  6,
505
+ 21,
506
+ null,
515
507
  null,
516
508
  null,
517
509
  null,
@@ -532,15 +524,13 @@
532
524
  1,
533
525
  1,
534
526
  1,
535
- 54,
527
+ 58,
536
528
  null,
537
529
  null,
538
530
  114,
539
531
  54,
540
532
  54,
541
533
  null,
542
- 54,
543
- null,
544
534
  null,
545
535
  1,
546
536
  null,
@@ -564,6 +554,14 @@
564
554
  null,
565
555
  1,
566
556
  1,
557
+ 4,
558
+ 8,
559
+ null,
560
+ null,
561
+ null,
562
+ null,
563
+ 1,
564
+ 1,
567
565
  1,
568
566
  null,
569
567
  null,
@@ -610,12 +608,6 @@
610
608
  null,
611
609
  null,
612
610
  null,
613
- null,
614
- null,
615
- null,
616
- null,
617
- null,
618
- null,
619
611
  1,
620
612
  1,
621
613
  null,
@@ -659,9 +651,18 @@
659
651
  null,
660
652
  null,
661
653
  null,
654
+ 1,
655
+ 1,
656
+ null,
657
+ null,
658
+ null,
659
+ null,
660
+ null,
661
+ null,
662
+ null,
662
663
  null
663
664
  ]
664
665
  },
665
- "timestamp": 1421256443
666
+ "timestamp": 1421316594
666
667
  }
667
668
  }
Binary file
data/coverage/index.html CHANGED
@@ -14,7 +14,7 @@
14
14
  <img src="./assets/0.8.0/loading.gif" alt="loading"/>
15
15
  </div>
16
16
  <div id="wrapper" style="display:none;">
17
- <div class="timestamp">Generated <abbr class="timeago" title="2015-01-14T17:27:23+00:00">2015-01-14T17:27:23+00:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2015-01-15T10:09:55+00:00">2015-01-15T10:09:55+00:00</abbr></div>
18
18
  <ul class="group_tabs"></ul>
19
19
 
20
20
  <div id="content">
@@ -25,15 +25,15 @@
25
25
  covered at
26
26
  <span class="covered_strength">
27
27
  <span class="green">
28
- 50.45
28
+ 75.39
29
29
  </span>
30
30
  </span> hits/line)
31
31
  </h2>
32
32
  <a name="AllFiles"></a>
33
33
  <div>
34
- <b>9</b> files in total.
35
- <b>297</b> relevant lines.
36
- <span class="green"><b>297</b> lines covered</span> and
34
+ <b>10</b> files in total.
35
+ <b>298</b> relevant lines.
36
+ <span class="green"><b>298</b> lines covered</span> and
37
37
  <span class="red"><b>0</b> lines missed </span>
38
38
  </div>
39
39
  <table class="file_list">
@@ -57,17 +57,17 @@
57
57
  <td>1</td>
58
58
  <td>1</td>
59
59
  <td>0</td>
60
- <td>9.0</td>
60
+ <td>10.0</td>
61
61
  </tr>
62
62
 
63
63
  <tr>
64
64
  <td class="strong"><a href="#29a2a933bc8a3e2979023518566420381fb495fb" class="src_link" title="lib/regexp-examples/backreferences.rb">lib/regexp-examples/backreferences.rb</a></td>
65
65
  <td class="green strong">100.0 %</td>
66
- <td>52</td>
67
- <td>28</td>
68
- <td>28</td>
66
+ <td>21</td>
67
+ <td>11</td>
68
+ <td>11</td>
69
69
  <td>0</td>
70
- <td>65.3</td>
70
+ <td>44.3</td>
71
71
  </tr>
72
72
 
73
73
  <tr>
@@ -80,44 +80,54 @@
80
80
  <td>6.8</td>
81
81
  </tr>
82
82
 
83
+ <tr>
84
+ <td class="strong"><a href="#1e3a4050d8206287a142d9723d2991d09a3f7a81" class="src_link" title="lib/regexp-examples/exceptions.rb">lib/regexp-examples/exceptions.rb</a></td>
85
+ <td class="green strong">100.0 %</td>
86
+ <td>5</td>
87
+ <td>4</td>
88
+ <td>4</td>
89
+ <td>0</td>
90
+ <td>1.0</td>
91
+ </tr>
92
+
83
93
  <tr>
84
94
  <td class="strong"><a href="#00d77fb2e4e21451442e29891ddf88bd05f0fbd7" class="src_link" title="lib/regexp-examples/groups.rb">lib/regexp-examples/groups.rb</a></td>
85
95
  <td class="green strong">100.0 %</td>
86
- <td>119</td>
87
- <td>65</td>
88
- <td>65</td>
96
+ <td>145</td>
97
+ <td>77</td>
98
+ <td>77</td>
89
99
  <td>0</td>
90
- <td>30.2</td>
100
+ <td>146.2</td>
91
101
  </tr>
92
102
 
93
103
  <tr>
94
104
  <td class="strong"><a href="#dad3c4bb6458db3261442a9292e1345b41afd730" class="src_link" title="lib/regexp-examples/helpers.rb">lib/regexp-examples/helpers.rb</a></td>
95
105
  <td class="green strong">100.0 %</td>
96
- <td>36</td>
97
- <td>15</td>
98
- <td>15</td>
106
+ <td>26</td>
107
+ <td>10</td>
108
+ <td>10</td>
99
109
  <td>0</td>
100
- <td>144.5</td>
110
+ <td>165.7</td>
101
111
  </tr>
102
112
 
103
113
  <tr>
104
114
  <td class="strong"><a href="#e013406b8d61f5ad15d0a3ad7ea7e8e96b6d7254" class="src_link" title="lib/regexp-examples/parser.rb">lib/regexp-examples/parser.rb</a></td>
105
115
  <td class="green strong">100.0 %</td>
106
116
  <td>184</td>
107
- <td>102</td>
108
- <td>102</td>
117
+ <td>104</td>
118
+ <td>104</td>
109
119
  <td>0</td>
110
- <td>54.6</td>
120
+ <td>54.2</td>
111
121
  </tr>
112
122
 
113
123
  <tr>
114
124
  <td class="strong"><a href="#0dc204f32cb2876d2238a2aae7dea86ad7f9e679" class="src_link" title="lib/regexp-examples/regexp_extensions.rb">lib/regexp-examples/regexp_extensions.rb</a></td>
115
125
  <td class="green strong">100.0 %</td>
116
- <td>16</td>
117
- <td>9</td>
118
- <td>9</td>
126
+ <td>14</td>
127
+ <td>8</td>
128
+ <td>8</td>
119
129
  <td>0</td>
120
- <td>37.1</td>
130
+ <td>35.5</td>
121
131
  </tr>
122
132
 
123
133
  <tr>
@@ -133,11 +143,11 @@
133
143
  <tr>
134
144
  <td class="strong"><a href="#73ece59f571550448cda013ec330081f40e82321" class="src_link" title="spec/regexp-examples_spec.rb">spec/regexp-examples_spec.rb</a></td>
135
145
  <td class="green strong">100.0 %</td>
136
- <td>113</td>
137
- <td>22</td>
138
- <td>22</td>
146
+ <td>124</td>
147
+ <td>28</td>
148
+ <td>28</td>
139
149
  <td>0</td>
140
- <td>17.6</td>
150
+ <td>14.4</td>
141
151
  </tr>
142
152
 
143
153
  </tbody>
@@ -170,8 +180,8 @@
170
180
  <pre>
171
181
  <ol>
172
182
 
173
- <li class="covered" data-hits="9" data-linenumber="1">
174
- <span class="hits">9</span>
183
+ <li class="covered" data-hits="10" data-linenumber="1">
184
+ <span class="hits">10</span>
175
185
 
176
186
  <code class="ruby">Dir[File.dirname(__FILE__) + &#39;/regexp-examples/*.rb&#39;].each {|file| require file }</code>
177
187
  </li>
@@ -191,8 +201,8 @@
191
201
  <h3>lib/regexp-examples/backreferences.rb</h3>
192
202
  <h4><span class="green">100.0 %</span> covered</h4>
193
203
  <div>
194
- <b>28</b> relevant lines.
195
- <span class="green"><b>28</b> lines covered</span> and
204
+ <b>11</b> relevant lines.
205
+ <span class="green"><b>11</b> lines covered</span> and
196
206
  <span class="red"><b>0</b> lines missed.</span>
197
207
  </div>
198
208
  </div>
@@ -209,304 +219,118 @@
209
219
  <li class="covered" data-hits="1" data-linenumber="2">
210
220
  <span class="hits">1</span>
211
221
 
212
- <code class="ruby"> class CaptureGroupResult &lt; String</code>
213
- </li>
214
-
215
- <li class="covered" data-hits="1" data-linenumber="3">
216
- <span class="hits">1</span>
217
-
218
- <code class="ruby"> attr_reader :group_id, :subgroups</code>
219
- </li>
220
-
221
- <li class="covered" data-hits="1" data-linenumber="4">
222
- <span class="hits">1</span>
223
-
224
- <code class="ruby"> def initialize(group_id, subgroups, values)</code>
225
- </li>
226
-
227
- <li class="covered" data-hits="248" data-linenumber="5">
228
- <span class="hits">248</span>
229
-
230
- <code class="ruby"> @group_id = group_id</code>
231
- </li>
232
-
233
- <li class="covered" data-hits="248" data-linenumber="6">
234
- <span class="hits">248</span>
235
-
236
- <code class="ruby"> @subgroups = subgroups</code>
237
- </li>
238
-
239
- <li class="covered" data-hits="248" data-linenumber="7">
240
- <span class="hits">248</span>
241
-
242
- <code class="ruby"> super(values)</code>
243
- </li>
244
-
245
- <li class="never" data-hits="" data-linenumber="8">
246
-
247
-
248
- <code class="ruby"> end</code>
249
- </li>
250
-
251
- <li class="never" data-hits="" data-linenumber="9">
252
-
253
-
254
- <code class="ruby"></code>
255
- </li>
256
-
257
- <li class="covered" data-hits="1" data-linenumber="10">
258
- <span class="hits">1</span>
259
-
260
- <code class="ruby"> def all_subgroups</code>
261
- </li>
262
-
263
- <li class="covered" data-hits="168" data-linenumber="11">
264
- <span class="hits">168</span>
265
-
266
- <code class="ruby"> [self, subgroups].flatten</code>
267
- </li>
268
-
269
- <li class="never" data-hits="" data-linenumber="12">
270
-
271
-
272
- <code class="ruby"> end</code>
273
- </li>
274
-
275
- <li class="never" data-hits="" data-linenumber="13">
276
-
277
-
278
- <code class="ruby"></code>
279
- </li>
280
-
281
- <li class="never" data-hits="" data-linenumber="14">
282
-
283
-
284
- <code class="ruby"> # Overridden in order to preserve the @group_id and @subgroups</code>
285
- </li>
286
-
287
- <li class="covered" data-hits="1" data-linenumber="15">
288
- <span class="hits">1</span>
289
-
290
- <code class="ruby"> def *(int)</code>
291
- </li>
292
-
293
- <li class="covered" data-hits="79" data-linenumber="16">
294
- <span class="hits">79</span>
295
-
296
- <code class="ruby"> self.class.new(group_id, subgroups, super)</code>
297
- </li>
298
-
299
- <li class="never" data-hits="" data-linenumber="17">
300
-
301
-
302
- <code class="ruby"> end</code>
303
- </li>
304
-
305
- <li class="never" data-hits="" data-linenumber="18">
306
-
307
-
308
- <code class="ruby"> # Overridden in order to preserve the @group_id and @subgroups</code>
309
- </li>
310
-
311
- <li class="covered" data-hits="1" data-linenumber="19">
312
- <span class="hits">1</span>
313
-
314
- <code class="ruby"> def gsub(regex)</code>
315
- </li>
316
-
317
- <li class="covered" data-hits="28" data-linenumber="20">
318
- <span class="hits">28</span>
319
-
320
- <code class="ruby"> self.class.new(group_id, subgroups, super)</code>
321
- </li>
322
-
323
- <li class="never" data-hits="" data-linenumber="21">
324
-
325
-
326
- <code class="ruby"> end</code>
327
- </li>
328
-
329
- <li class="never" data-hits="" data-linenumber="22">
330
-
331
-
332
- <code class="ruby"> end</code>
333
- </li>
334
-
335
- <li class="never" data-hits="" data-linenumber="23">
336
-
337
-
338
- <code class="ruby"></code>
339
- </li>
340
-
341
- <li class="covered" data-hits="1" data-linenumber="24">
342
- <span class="hits">1</span>
343
-
344
222
  <code class="ruby"> class BackReferenceReplacer</code>
345
223
  </li>
346
224
 
347
- <li class="covered" data-hits="1" data-linenumber="25">
225
+ <li class="covered" data-hits="1" data-linenumber="3">
348
226
  <span class="hits">1</span>
349
227
 
350
228
  <code class="ruby"> def substitute_backreferences(full_examples)</code>
351
229
  </li>
352
230
 
353
- <li class="covered" data-hits="54" data-linenumber="26">
231
+ <li class="covered" data-hits="54" data-linenumber="4">
354
232
  <span class="hits">54</span>
355
233
 
356
- <code class="ruby"> full_examples.map! do |full_example|</code>
234
+ <code class="ruby"> full_examples.map do |full_example|</code>
357
235
  </li>
358
236
 
359
- <li class="covered" data-hits="148" data-linenumber="27">
237
+ <li class="covered" data-hits="148" data-linenumber="5">
360
238
  <span class="hits">148</span>
361
239
 
362
- <code class="ruby"> if full_example.is_a? String</code>
240
+ <code class="ruby"> while full_example.match(/__(\w+?)__/)</code>
363
241
  </li>
364
242
 
365
- <li class="covered" data-hits="130" data-linenumber="28">
366
- <span class="hits">130</span>
367
-
368
- <code class="ruby"> [full_example]</code>
369
- </li>
370
-
371
- <li class="never" data-hits="" data-linenumber="29">
372
-
373
-
374
- <code class="ruby"> else</code>
375
- </li>
376
-
377
- <li class="covered" data-hits="18" data-linenumber="30">
378
- <span class="hits">18</span>
379
-
380
- <code class="ruby"> full_example.map! do |partial_example|</code>
381
- </li>
382
-
383
- <li class="covered" data-hits="112" data-linenumber="31">
384
- <span class="hits">112</span>
385
-
386
- <code class="ruby"> partial_example.gsub(/__(\w+)__/) do |match|</code>
387
- </li>
388
-
389
- <li class="covered" data-hits="28" data-linenumber="32">
243
+ <li class="covered" data-hits="28" data-linenumber="6">
390
244
  <span class="hits">28</span>
391
245
 
392
- <code class="ruby"> find_backref_for(full_example, $1)</code>
393
- </li>
394
-
395
- <li class="never" data-hits="" data-linenumber="33">
396
-
397
-
398
- <code class="ruby"> end</code>
246
+ <code class="ruby"> full_example.sub!(/__(\w+?)__/, find_backref_for(full_example, $1))</code>
399
247
  </li>
400
248
 
401
- <li class="never" data-hits="" data-linenumber="34">
249
+ <li class="never" data-hits="" data-linenumber="7">
402
250
 
403
251
 
404
- <code class="ruby"> end</code>
252
+ <code class="ruby"> end</code>
405
253
  </li>
406
254
 
407
- <li class="never" data-hits="" data-linenumber="35">
408
-
255
+ <li class="covered" data-hits="148" data-linenumber="8">
256
+ <span class="hits">148</span>
409
257
 
410
- <code class="ruby"> end</code>
258
+ <code class="ruby"> full_example</code>
411
259
  </li>
412
260
 
413
- <li class="never" data-hits="" data-linenumber="36">
261
+ <li class="never" data-hits="" data-linenumber="9">
414
262
 
415
263
 
416
264
  <code class="ruby"> end</code>
417
265
  </li>
418
266
 
419
- <li class="covered" data-hits="54" data-linenumber="37">
420
- <span class="hits">54</span>
421
-
422
- <code class="ruby"> full_examples</code>
423
- </li>
424
-
425
- <li class="never" data-hits="" data-linenumber="38">
267
+ <li class="never" data-hits="" data-linenumber="10">
426
268
 
427
269
 
428
270
  <code class="ruby"> end</code>
429
271
  </li>
430
272
 
431
- <li class="never" data-hits="" data-linenumber="39">
273
+ <li class="never" data-hits="" data-linenumber="11">
432
274
 
433
275
 
434
276
  <code class="ruby"></code>
435
277
  </li>
436
278
 
437
- <li class="covered" data-hits="1" data-linenumber="40">
279
+ <li class="covered" data-hits="1" data-linenumber="12">
438
280
  <span class="hits">1</span>
439
281
 
440
282
  <code class="ruby"> private</code>
441
283
  </li>
442
284
 
443
- <li class="covered" data-hits="1" data-linenumber="41">
285
+ <li class="covered" data-hits="1" data-linenumber="13">
444
286
  <span class="hits">1</span>
445
287
 
446
288
  <code class="ruby"> def find_backref_for(full_example, group_id)</code>
447
289
  </li>
448
290
 
449
- <li class="covered" data-hits="28" data-linenumber="42">
291
+ <li class="covered" data-hits="28" data-linenumber="14">
450
292
  <span class="hits">28</span>
451
293
 
452
- <code class="ruby"> full_example.each do |partial_example|</code>
453
- </li>
454
-
455
- <li class="covered" data-hits="75" data-linenumber="43">
456
- <span class="hits">75</span>
457
-
458
- <code class="ruby"> next unless partial_example.respond_to?(:group_id)</code>
459
- </li>
460
-
461
- <li class="covered" data-hits="74" data-linenumber="44">
462
- <span class="hits">74</span>
463
-
464
- <code class="ruby"> partial_example.all_subgroups.each do |subgroup|</code>
294
+ <code class="ruby"> full_example.all_subgroups.detect do |subgroup|</code>
465
295
  </li>
466
296
 
467
- <li class="covered" data-hits="77" data-linenumber="45">
468
- <span class="hits">77</span>
297
+ <li class="covered" data-hits="76" data-linenumber="15">
298
+ <span class="hits">76</span>
469
299
 
470
- <code class="ruby"> return subgroup if subgroup.group_id == group_id</code>
300
+ <code class="ruby"> subgroup.group_id == group_id</code>
471
301
  </li>
472
302
 
473
- <li class="never" data-hits="" data-linenumber="46">
474
-
475
-
476
- <code class="ruby"> end</code>
477
- </li>
478
-
479
- <li class="never" data-hits="" data-linenumber="47">
303
+ <li class="never" data-hits="" data-linenumber="16">
480
304
 
481
305
 
482
306
  <code class="ruby"> end</code>
483
307
  </li>
484
308
 
485
- <li class="never" data-hits="" data-linenumber="48">
309
+ <li class="never" data-hits="" data-linenumber="17">
486
310
 
487
311
 
488
312
  <code class="ruby"> end</code>
489
313
  </li>
490
314
 
491
- <li class="never" data-hits="" data-linenumber="49">
315
+ <li class="never" data-hits="" data-linenumber="18">
492
316
 
493
317
 
494
318
  <code class="ruby"></code>
495
319
  </li>
496
320
 
497
- <li class="never" data-hits="" data-linenumber="50">
321
+ <li class="never" data-hits="" data-linenumber="19">
498
322
 
499
323
 
500
324
  <code class="ruby"> end</code>
501
325
  </li>
502
326
 
503
- <li class="never" data-hits="" data-linenumber="51">
327
+ <li class="never" data-hits="" data-linenumber="20">
504
328
 
505
329
 
506
330
  <code class="ruby"></code>
507
331
  </li>
508
332
 
509
- <li class="never" data-hits="" data-linenumber="52">
333
+ <li class="never" data-hits="" data-linenumber="21">
510
334
 
511
335
 
512
336
  <code class="ruby">end</code>
@@ -786,13 +610,13 @@
786
610
  </pre>
787
611
  </div>
788
612
 
789
- <div class="source_table" id="00d77fb2e4e21451442e29891ddf88bd05f0fbd7">
613
+ <div class="source_table" id="1e3a4050d8206287a142d9723d2991d09a3f7a81">
790
614
  <div class="header">
791
- <h3>lib/regexp-examples/groups.rb</h3>
615
+ <h3>lib/regexp-examples/exceptions.rb</h3>
792
616
  <h4><span class="green">100.0 %</span> covered</h4>
793
617
  <div>
794
- <b>65</b> relevant lines.
795
- <span class="green"><b>65</b> lines covered</span> and
618
+ <b>4</b> relevant lines.
619
+ <span class="green"><b>4</b> lines covered</span> and
796
620
  <span class="red"><b>0</b> lines missed.</span>
797
621
  </div>
798
622
  </div>
@@ -809,706 +633,910 @@
809
633
  <li class="covered" data-hits="1" data-linenumber="2">
810
634
  <span class="hits">1</span>
811
635
 
812
- <code class="ruby"> class SingleCharGroup</code>
636
+ <code class="ruby"> class Error &lt; StandardError; end</code>
813
637
  </li>
814
638
 
815
639
  <li class="covered" data-hits="1" data-linenumber="3">
816
640
  <span class="hits">1</span>
817
641
 
818
- <code class="ruby"> def initialize(char)</code>
642
+ <code class="ruby"> class UnsupportedSyntaxError &lt; Error; end</code>
819
643
  </li>
820
644
 
821
- <li class="covered" data-hits="175" data-linenumber="4">
822
- <span class="hits">175</span>
645
+ <li class="covered" data-hits="1" data-linenumber="4">
646
+ <span class="hits">1</span>
823
647
 
824
- <code class="ruby"> @char = char</code>
648
+ <code class="ruby"> class IllegalSyntaxError &lt; Error; end</code>
825
649
  </li>
826
650
 
827
651
  <li class="never" data-hits="" data-linenumber="5">
828
652
 
829
653
 
830
- <code class="ruby"> end</code>
654
+ <code class="ruby">end</code>
831
655
  </li>
832
656
 
833
- <li class="covered" data-hits="1" data-linenumber="6">
657
+ </ol>
658
+ </pre>
659
+ </div>
660
+
661
+ <div class="source_table" id="00d77fb2e4e21451442e29891ddf88bd05f0fbd7">
662
+ <div class="header">
663
+ <h3>lib/regexp-examples/groups.rb</h3>
664
+ <h4><span class="green">100.0 %</span> covered</h4>
665
+ <div>
666
+ <b>77</b> relevant lines.
667
+ <span class="green"><b>77</b> lines covered</span> and
668
+ <span class="red"><b>0</b> lines missed.</span>
669
+ </div>
670
+ </div>
671
+
672
+ <pre>
673
+ <ol>
674
+
675
+ <li class="covered" data-hits="1" data-linenumber="1">
834
676
  <span class="hits">1</span>
835
677
 
836
- <code class="ruby"> def result</code>
678
+ <code class="ruby">module RegexpExamples</code>
837
679
  </li>
838
680
 
839
- <li class="covered" data-hits="175" data-linenumber="7">
840
- <span class="hits">175</span>
681
+ <li class="never" data-hits="" data-linenumber="2">
682
+
841
683
 
842
- <code class="ruby"> [@char]</code>
684
+ <code class="ruby"> # All Group#result methods return an array of GroupResult objects</code>
843
685
  </li>
844
686
 
845
- <li class="never" data-hits="" data-linenumber="8">
687
+ <li class="never" data-hits="" data-linenumber="3">
846
688
 
847
689
 
848
- <code class="ruby"> end</code>
690
+ <code class="ruby"> # The key objective here is to keep track of all capture groups, in order</code>
849
691
  </li>
850
692
 
851
- <li class="never" data-hits="" data-linenumber="9">
693
+ <li class="never" data-hits="" data-linenumber="4">
852
694
 
853
695
 
854
- <code class="ruby"> end</code>
696
+ <code class="ruby"> # to fill in backreferences</code>
855
697
  </li>
856
698
 
857
- <li class="never" data-hits="" data-linenumber="10">
858
-
699
+ <li class="covered" data-hits="1" data-linenumber="5">
700
+ <span class="hits">1</span>
859
701
 
860
- <code class="ruby"></code>
702
+ <code class="ruby"> class GroupResult &lt; String</code>
861
703
  </li>
862
704
 
863
- <li class="covered" data-hits="1" data-linenumber="11">
705
+ <li class="covered" data-hits="1" data-linenumber="6">
864
706
  <span class="hits">1</span>
865
707
 
866
- <code class="ruby"> class CharGroup</code>
708
+ <code class="ruby"> attr_reader :group_id, :subgroups</code>
867
709
  </li>
868
710
 
869
- <li class="covered" data-hits="1" data-linenumber="12">
711
+ <li class="covered" data-hits="1" data-linenumber="7">
870
712
  <span class="hits">1</span>
871
713
 
872
- <code class="ruby"> def initialize(chars)</code>
714
+ <code class="ruby"> def initialize(result, group_id = nil, subgroups = [])</code>
873
715
  </li>
874
716
 
875
- <li class="covered" data-hits="28" data-linenumber="13">
876
- <span class="hits">28</span>
717
+ <li class="covered" data-hits="1633" data-linenumber="8">
718
+ <span class="hits">1633</span>
877
719
 
878
- <code class="ruby"> @chars = chars</code>
720
+ <code class="ruby"> @group_id = group_id</code>
879
721
  </li>
880
722
 
881
- <li class="covered" data-hits="28" data-linenumber="14">
882
- <span class="hits">28</span>
723
+ <li class="covered" data-hits="1633" data-linenumber="9">
724
+ <span class="hits">1633</span>
883
725
 
884
- <code class="ruby"> if chars[0] == &quot;^&quot;</code>
726
+ <code class="ruby"> @subgroups = subgroups</code>
885
727
  </li>
886
728
 
887
- <li class="covered" data-hits="1" data-linenumber="15">
888
- <span class="hits">1</span>
729
+ <li class="covered" data-hits="1633" data-linenumber="10">
730
+ <span class="hits">1633</span>
889
731
 
890
- <code class="ruby"> @negative = true</code>
732
+ <code class="ruby"> if result.respond_to?(:group_id)</code>
891
733
  </li>
892
734
 
893
- <li class="covered" data-hits="1" data-linenumber="16">
894
- <span class="hits">1</span>
735
+ <li class="covered" data-hits="122" data-linenumber="11">
736
+ <span class="hits">122</span>
895
737
 
896
- <code class="ruby"> @chars = @chars[1..-1]</code>
738
+ <code class="ruby"> @subgroups = result.all_subgroups</code>
897
739
  </li>
898
740
 
899
- <li class="never" data-hits="" data-linenumber="17">
741
+ <li class="never" data-hits="" data-linenumber="12">
742
+
743
+
744
+ <code class="ruby"> end</code>
745
+ </li>
746
+
747
+ <li class="covered" data-hits="1633" data-linenumber="13">
748
+ <span class="hits">1633</span>
749
+
750
+ <code class="ruby"> super(result)</code>
751
+ </li>
752
+
753
+ <li class="never" data-hits="" data-linenumber="14">
754
+
755
+
756
+ <code class="ruby"> end</code>
757
+ </li>
758
+
759
+ <li class="never" data-hits="" data-linenumber="15">
760
+
761
+
762
+ <code class="ruby"></code>
763
+ </li>
764
+
765
+ <li class="covered" data-hits="1" data-linenumber="16">
766
+ <span class="hits">1</span>
767
+
768
+ <code class="ruby"> def all_subgroups</code>
769
+ </li>
770
+
771
+ <li class="covered" data-hits="1667" data-linenumber="17">
772
+ <span class="hits">1667</span>
773
+
774
+ <code class="ruby"> [self, subgroups].flatten.reject { |subgroup| subgroup.group_id.nil? }</code>
775
+ </li>
776
+
777
+ <li class="never" data-hits="" data-linenumber="18">
778
+
779
+
780
+ <code class="ruby"> end</code>
781
+ </li>
782
+
783
+ <li class="never" data-hits="" data-linenumber="19">
784
+
785
+
786
+ <code class="ruby"></code>
787
+ </li>
788
+
789
+ <li class="never" data-hits="" data-linenumber="20">
790
+
791
+
792
+ <code class="ruby"> # Overridden in order to preserve the @group_id and @subgroups</code>
793
+ </li>
794
+
795
+ <li class="never" data-hits="" data-linenumber="21">
796
+
797
+
798
+ <code class="ruby"> # Used by BaseGroup (which, in turn, is used by all Group objects)</code>
799
+ </li>
800
+
801
+ <li class="covered" data-hits="1" data-linenumber="22">
802
+ <span class="hits">1</span>
803
+
804
+ <code class="ruby"> def *(int)</code>
805
+ </li>
806
+
807
+ <li class="covered" data-hits="413" data-linenumber="23">
808
+ <span class="hits">413</span>
809
+
810
+ <code class="ruby"> self.class.new(super.to_s, group_id, subgroups)</code>
811
+ </li>
812
+
813
+ <li class="never" data-hits="" data-linenumber="24">
814
+
815
+
816
+ <code class="ruby"> end</code>
817
+ </li>
818
+
819
+ <li class="never" data-hits="" data-linenumber="25">
820
+
821
+
822
+ <code class="ruby"> end</code>
823
+ </li>
824
+
825
+ <li class="never" data-hits="" data-linenumber="26">
826
+
827
+
828
+ <code class="ruby"></code>
829
+ </li>
830
+
831
+ <li class="covered" data-hits="1" data-linenumber="27">
832
+ <span class="hits">1</span>
833
+
834
+ <code class="ruby"> class SingleCharGroup</code>
835
+ </li>
836
+
837
+ <li class="covered" data-hits="1" data-linenumber="28">
838
+ <span class="hits">1</span>
839
+
840
+ <code class="ruby"> def initialize(char)</code>
841
+ </li>
842
+
843
+ <li class="covered" data-hits="175" data-linenumber="29">
844
+ <span class="hits">175</span>
845
+
846
+ <code class="ruby"> @char = char</code>
847
+ </li>
848
+
849
+ <li class="never" data-hits="" data-linenumber="30">
850
+
851
+
852
+ <code class="ruby"> end</code>
853
+ </li>
854
+
855
+ <li class="covered" data-hits="1" data-linenumber="31">
856
+ <span class="hits">1</span>
857
+
858
+ <code class="ruby"> def result</code>
859
+ </li>
860
+
861
+ <li class="covered" data-hits="175" data-linenumber="32">
862
+ <span class="hits">175</span>
863
+
864
+ <code class="ruby"> [GroupResult.new(@char)]</code>
865
+ </li>
866
+
867
+ <li class="never" data-hits="" data-linenumber="33">
868
+
869
+
870
+ <code class="ruby"> end</code>
871
+ </li>
872
+
873
+ <li class="never" data-hits="" data-linenumber="34">
874
+
875
+
876
+ <code class="ruby"> end</code>
877
+ </li>
878
+
879
+ <li class="never" data-hits="" data-linenumber="35">
880
+
881
+
882
+ <code class="ruby"></code>
883
+ </li>
884
+
885
+ <li class="covered" data-hits="1" data-linenumber="36">
886
+ <span class="hits">1</span>
887
+
888
+ <code class="ruby"> class CharGroup</code>
889
+ </li>
890
+
891
+ <li class="covered" data-hits="1" data-linenumber="37">
892
+ <span class="hits">1</span>
893
+
894
+ <code class="ruby"> def initialize(chars)</code>
895
+ </li>
896
+
897
+ <li class="covered" data-hits="28" data-linenumber="38">
898
+ <span class="hits">28</span>
899
+
900
+ <code class="ruby"> @chars = chars</code>
901
+ </li>
902
+
903
+ <li class="covered" data-hits="28" data-linenumber="39">
904
+ <span class="hits">28</span>
905
+
906
+ <code class="ruby"> if chars[0] == &quot;^&quot;</code>
907
+ </li>
908
+
909
+ <li class="covered" data-hits="1" data-linenumber="40">
910
+ <span class="hits">1</span>
911
+
912
+ <code class="ruby"> @negative = true</code>
913
+ </li>
914
+
915
+ <li class="covered" data-hits="1" data-linenumber="41">
916
+ <span class="hits">1</span>
917
+
918
+ <code class="ruby"> @chars = @chars[1..-1]</code>
919
+ </li>
920
+
921
+ <li class="never" data-hits="" data-linenumber="42">
900
922
 
901
923
 
902
924
  <code class="ruby"> else</code>
903
925
  </li>
904
926
 
905
- <li class="covered" data-hits="27" data-linenumber="18">
927
+ <li class="covered" data-hits="27" data-linenumber="43">
906
928
  <span class="hits">27</span>
907
929
 
908
930
  <code class="ruby"> @negative = false</code>
909
931
  </li>
910
932
 
911
- <li class="never" data-hits="" data-linenumber="19">
933
+ <li class="never" data-hits="" data-linenumber="44">
912
934
 
913
935
 
914
936
  <code class="ruby"> end</code>
915
937
  </li>
916
938
 
917
- <li class="never" data-hits="" data-linenumber="20">
939
+ <li class="never" data-hits="" data-linenumber="45">
918
940
 
919
941
 
920
942
  <code class="ruby"></code>
921
943
  </li>
922
944
 
923
- <li class="covered" data-hits="28" data-linenumber="21">
945
+ <li class="covered" data-hits="28" data-linenumber="46">
924
946
  <span class="hits">28</span>
925
947
 
926
948
  <code class="ruby"> init_backslash_chars</code>
927
949
  </li>
928
950
 
929
- <li class="covered" data-hits="28" data-linenumber="22">
951
+ <li class="covered" data-hits="28" data-linenumber="47">
930
952
  <span class="hits">28</span>
931
953
 
932
954
  <code class="ruby"> init_ranges</code>
933
955
  </li>
934
956
 
935
- <li class="never" data-hits="" data-linenumber="23">
957
+ <li class="never" data-hits="" data-linenumber="48">
936
958
 
937
959
 
938
960
  <code class="ruby"> end</code>
939
961
  </li>
940
962
 
941
- <li class="never" data-hits="" data-linenumber="24">
963
+ <li class="never" data-hits="" data-linenumber="49">
942
964
 
943
965
 
944
966
  <code class="ruby"></code>
945
967
  </li>
946
968
 
947
- <li class="covered" data-hits="1" data-linenumber="25">
969
+ <li class="covered" data-hits="1" data-linenumber="50">
948
970
  <span class="hits">1</span>
949
971
 
950
972
  <code class="ruby"> def init_ranges</code>
951
973
  </li>
952
974
 
953
- <li class="never" data-hits="" data-linenumber="26">
975
+ <li class="never" data-hits="" data-linenumber="51">
954
976
 
955
977
 
956
978
  <code class="ruby"> # save first and last &quot;-&quot; if present</code>
957
979
  </li>
958
980
 
959
- <li class="covered" data-hits="28" data-linenumber="27">
981
+ <li class="covered" data-hits="28" data-linenumber="52">
960
982
  <span class="hits">28</span>
961
983
 
962
984
  <code class="ruby"> first = nil</code>
963
985
  </li>
964
986
 
965
- <li class="covered" data-hits="28" data-linenumber="28">
987
+ <li class="covered" data-hits="28" data-linenumber="53">
966
988
  <span class="hits">28</span>
967
989
 
968
990
  <code class="ruby"> last = nil</code>
969
991
  </li>
970
992
 
971
- <li class="covered" data-hits="28" data-linenumber="29">
993
+ <li class="covered" data-hits="28" data-linenumber="54">
972
994
  <span class="hits">28</span>
973
995
 
974
996
  <code class="ruby"> first = @chars.shift if @chars.first == &quot;-&quot;</code>
975
997
  </li>
976
998
 
977
- <li class="covered" data-hits="28" data-linenumber="30">
999
+ <li class="covered" data-hits="28" data-linenumber="55">
978
1000
  <span class="hits">28</span>
979
1001
 
980
1002
  <code class="ruby"> last = @chars.pop if @chars.last == &quot;-&quot;</code>
981
1003
  </li>
982
1004
 
983
- <li class="never" data-hits="" data-linenumber="31">
1005
+ <li class="never" data-hits="" data-linenumber="56">
984
1006
 
985
1007
 
986
1008
  <code class="ruby"> # Replace all instances of e.g. [&quot;a&quot; &quot;-&quot; &quot;z&quot;] with [&quot;a&quot;, &quot;b&quot;, ..., &quot;z&quot;]</code>
987
1009
  </li>
988
1010
 
989
- <li class="covered" data-hits="28" data-linenumber="32">
1011
+ <li class="covered" data-hits="28" data-linenumber="57">
990
1012
  <span class="hits">28</span>
991
1013
 
992
1014
  <code class="ruby"> while i = @chars.index(&quot;-&quot;)</code>
993
1015
  </li>
994
1016
 
995
- <li class="covered" data-hits="9" data-linenumber="33">
1017
+ <li class="covered" data-hits="9" data-linenumber="58">
996
1018
  <span class="hits">9</span>
997
1019
 
998
1020
  <code class="ruby"> @chars[i-1..i+1] = (@chars[i-1]..@chars[i+1]).to_a</code>
999
1021
  </li>
1000
1022
 
1001
- <li class="never" data-hits="" data-linenumber="34">
1023
+ <li class="never" data-hits="" data-linenumber="59">
1002
1024
 
1003
1025
 
1004
1026
  <code class="ruby"> end</code>
1005
1027
  </li>
1006
1028
 
1007
- <li class="never" data-hits="" data-linenumber="35">
1029
+ <li class="never" data-hits="" data-linenumber="60">
1008
1030
 
1009
1031
 
1010
1032
  <code class="ruby"> # restore them back</code>
1011
1033
  </li>
1012
1034
 
1013
- <li class="covered" data-hits="28" data-linenumber="36">
1035
+ <li class="covered" data-hits="28" data-linenumber="61">
1014
1036
  <span class="hits">28</span>
1015
1037
 
1016
1038
  <code class="ruby"> @chars.unshift(first) if first</code>
1017
1039
  </li>
1018
1040
 
1019
- <li class="covered" data-hits="28" data-linenumber="37">
1041
+ <li class="covered" data-hits="28" data-linenumber="62">
1020
1042
  <span class="hits">28</span>
1021
1043
 
1022
1044
  <code class="ruby"> @chars.push(last) if last</code>
1023
1045
  </li>
1024
1046
 
1025
- <li class="never" data-hits="" data-linenumber="38">
1047
+ <li class="never" data-hits="" data-linenumber="63">
1026
1048
 
1027
1049
 
1028
1050
  <code class="ruby"> end</code>
1029
1051
  </li>
1030
1052
 
1031
- <li class="never" data-hits="" data-linenumber="39">
1053
+ <li class="never" data-hits="" data-linenumber="64">
1032
1054
 
1033
1055
 
1034
1056
  <code class="ruby"></code>
1035
1057
  </li>
1036
1058
 
1037
- <li class="covered" data-hits="1" data-linenumber="40">
1059
+ <li class="covered" data-hits="1" data-linenumber="65">
1038
1060
  <span class="hits">1</span>
1039
1061
 
1040
1062
  <code class="ruby"> def init_backslash_chars</code>
1041
1063
  </li>
1042
1064
 
1043
- <li class="covered" data-hits="28" data-linenumber="41">
1065
+ <li class="covered" data-hits="28" data-linenumber="66">
1044
1066
  <span class="hits">28</span>
1045
1067
 
1046
1068
  <code class="ruby"> @chars.each_with_index do |char, i|</code>
1047
1069
  </li>
1048
1070
 
1049
- <li class="covered" data-hits="540" data-linenumber="42">
1071
+ <li class="covered" data-hits="540" data-linenumber="67">
1050
1072
  <span class="hits">540</span>
1051
1073
 
1052
1074
  <code class="ruby"> if char == &quot;\\&quot;</code>
1053
1075
  </li>
1054
1076
 
1055
- <li class="covered" data-hits="13" data-linenumber="43">
1077
+ <li class="covered" data-hits="13" data-linenumber="68">
1056
1078
  <span class="hits">13</span>
1057
1079
 
1058
1080
  <code class="ruby"> if BackslashCharMap.keys.include?(@chars[i+1])</code>
1059
1081
  </li>
1060
1082
 
1061
- <li class="covered" data-hits="4" data-linenumber="44">
1083
+ <li class="covered" data-hits="4" data-linenumber="69">
1062
1084
  <span class="hits">4</span>
1063
1085
 
1064
1086
  <code class="ruby"> @chars[i..i+1] = BackslashCharMap[@chars[i+1]]</code>
1065
1087
  </li>
1066
1088
 
1067
- <li class="never" data-hits="" data-linenumber="45">
1089
+ <li class="never" data-hits="" data-linenumber="70">
1068
1090
 
1069
1091
 
1070
1092
  <code class="ruby"> elsif @chars[i+1] == &quot;\\&quot;</code>
1071
1093
  </li>
1072
1094
 
1073
- <li class="covered" data-hits="2" data-linenumber="46">
1095
+ <li class="covered" data-hits="2" data-linenumber="71">
1074
1096
  <span class="hits">2</span>
1075
1097
 
1076
1098
  <code class="ruby"> @chars.delete_at(i+1)</code>
1077
1099
  </li>
1078
1100
 
1079
- <li class="never" data-hits="" data-linenumber="47">
1101
+ <li class="never" data-hits="" data-linenumber="72">
1080
1102
 
1081
1103
 
1082
1104
  <code class="ruby"> else</code>
1083
1105
  </li>
1084
1106
 
1085
- <li class="covered" data-hits="7" data-linenumber="48">
1107
+ <li class="covered" data-hits="7" data-linenumber="73">
1086
1108
  <span class="hits">7</span>
1087
1109
 
1088
1110
  <code class="ruby"> @chars.delete_at(i)</code>
1089
1111
  </li>
1090
1112
 
1091
- <li class="never" data-hits="" data-linenumber="49">
1113
+ <li class="never" data-hits="" data-linenumber="74">
1092
1114
 
1093
1115
 
1094
1116
  <code class="ruby"> end</code>
1095
1117
  </li>
1096
1118
 
1097
- <li class="never" data-hits="" data-linenumber="50">
1119
+ <li class="never" data-hits="" data-linenumber="75">
1098
1120
 
1099
1121
 
1100
1122
  <code class="ruby"> end</code>
1101
1123
  </li>
1102
1124
 
1103
- <li class="never" data-hits="" data-linenumber="51">
1125
+ <li class="never" data-hits="" data-linenumber="76">
1104
1126
 
1105
1127
 
1106
1128
  <code class="ruby"> end</code>
1107
1129
  </li>
1108
1130
 
1109
- <li class="never" data-hits="" data-linenumber="52">
1131
+ <li class="never" data-hits="" data-linenumber="77">
1110
1132
 
1111
1133
 
1112
1134
  <code class="ruby"> end</code>
1113
1135
  </li>
1114
1136
 
1115
- <li class="never" data-hits="" data-linenumber="53">
1137
+ <li class="never" data-hits="" data-linenumber="78">
1116
1138
 
1117
1139
 
1118
1140
  <code class="ruby"></code>
1119
1141
  </li>
1120
1142
 
1121
- <li class="covered" data-hits="1" data-linenumber="54">
1143
+ <li class="covered" data-hits="1" data-linenumber="79">
1122
1144
  <span class="hits">1</span>
1123
1145
 
1124
1146
  <code class="ruby"> def result</code>
1125
1147
  </li>
1126
1148
 
1127
- <li class="covered" data-hits="28" data-linenumber="55">
1149
+ <li class="covered" data-hits="28" data-linenumber="80">
1128
1150
  <span class="hits">28</span>
1129
1151
 
1130
- <code class="ruby"> if @negative</code>
1131
- </li>
1132
-
1133
- <li class="covered" data-hits="1" data-linenumber="56">
1134
- <span class="hits">1</span>
1135
-
1136
- <code class="ruby"> CharSets::Any - @chars</code>
1137
- </li>
1138
-
1139
- <li class="never" data-hits="" data-linenumber="57">
1140
-
1141
-
1142
- <code class="ruby"> else</code>
1152
+ <code class="ruby"> (@negative ? (CharSets::Any - @chars) : @chars).map do |result|</code>
1143
1153
  </li>
1144
1154
 
1145
- <li class="covered" data-hits="27" data-linenumber="58">
1146
- <span class="hits">27</span>
1155
+ <li class="covered" data-hits="572" data-linenumber="81">
1156
+ <span class="hits">572</span>
1147
1157
 
1148
- <code class="ruby"> @chars</code>
1158
+ <code class="ruby"> GroupResult.new(result)</code>
1149
1159
  </li>
1150
1160
 
1151
- <li class="never" data-hits="" data-linenumber="59">
1161
+ <li class="never" data-hits="" data-linenumber="82">
1152
1162
 
1153
1163
 
1154
1164
  <code class="ruby"> end</code>
1155
1165
  </li>
1156
1166
 
1157
- <li class="never" data-hits="" data-linenumber="60">
1167
+ <li class="never" data-hits="" data-linenumber="83">
1158
1168
 
1159
1169
 
1160
1170
  <code class="ruby"> end</code>
1161
1171
  </li>
1162
1172
 
1163
- <li class="never" data-hits="" data-linenumber="61">
1173
+ <li class="never" data-hits="" data-linenumber="84">
1164
1174
 
1165
1175
 
1166
1176
  <code class="ruby"> end</code>
1167
1177
  </li>
1168
1178
 
1169
- <li class="never" data-hits="" data-linenumber="62">
1179
+ <li class="never" data-hits="" data-linenumber="85">
1170
1180
 
1171
1181
 
1172
1182
  <code class="ruby"></code>
1173
1183
  </li>
1174
1184
 
1175
- <li class="covered" data-hits="1" data-linenumber="63">
1185
+ <li class="covered" data-hits="1" data-linenumber="86">
1176
1186
  <span class="hits">1</span>
1177
1187
 
1178
1188
  <code class="ruby"> class DotGroup</code>
1179
1189
  </li>
1180
1190
 
1181
- <li class="covered" data-hits="1" data-linenumber="64">
1191
+ <li class="covered" data-hits="1" data-linenumber="87">
1182
1192
  <span class="hits">1</span>
1183
1193
 
1184
1194
  <code class="ruby"> def result</code>
1185
1195
  </li>
1186
1196
 
1187
- <li class="covered" data-hits="1" data-linenumber="65">
1197
+ <li class="covered" data-hits="1" data-linenumber="88">
1188
1198
  <span class="hits">1</span>
1189
1199
 
1190
- <code class="ruby"> CharSets::Any</code>
1200
+ <code class="ruby"> CharSets::Any.map do |result|</code>
1191
1201
  </li>
1192
1202
 
1193
- <li class="never" data-hits="" data-linenumber="66">
1203
+ <li class="covered" data-hits="94" data-linenumber="89">
1204
+ <span class="hits">94</span>
1205
+
1206
+ <code class="ruby"> GroupResult.new(result)</code>
1207
+ </li>
1208
+
1209
+ <li class="never" data-hits="" data-linenumber="90">
1210
+
1211
+
1212
+ <code class="ruby"> end</code>
1213
+ </li>
1214
+
1215
+ <li class="never" data-hits="" data-linenumber="91">
1194
1216
 
1195
1217
 
1196
1218
  <code class="ruby"> end</code>
1197
1219
  </li>
1198
1220
 
1199
- <li class="never" data-hits="" data-linenumber="67">
1221
+ <li class="never" data-hits="" data-linenumber="92">
1200
1222
 
1201
1223
 
1202
1224
  <code class="ruby"> end</code>
1203
1225
  </li>
1204
1226
 
1205
- <li class="never" data-hits="" data-linenumber="68">
1227
+ <li class="never" data-hits="" data-linenumber="93">
1206
1228
 
1207
1229
 
1208
1230
  <code class="ruby"></code>
1209
1231
  </li>
1210
1232
 
1211
- <li class="covered" data-hits="1" data-linenumber="69">
1233
+ <li class="covered" data-hits="1" data-linenumber="94">
1212
1234
  <span class="hits">1</span>
1213
1235
 
1214
1236
  <code class="ruby"> class MultiGroup</code>
1215
1237
  </li>
1216
1238
 
1217
- <li class="covered" data-hits="1" data-linenumber="70">
1239
+ <li class="covered" data-hits="1" data-linenumber="95">
1218
1240
  <span class="hits">1</span>
1219
1241
 
1220
1242
  <code class="ruby"> attr_reader :group_id</code>
1221
1243
  </li>
1222
1244
 
1223
- <li class="covered" data-hits="1" data-linenumber="71">
1245
+ <li class="covered" data-hits="1" data-linenumber="96">
1224
1246
  <span class="hits">1</span>
1225
1247
 
1226
1248
  <code class="ruby"> def initialize(groups, group_id)</code>
1227
1249
  </li>
1228
1250
 
1229
- <li class="covered" data-hits="41" data-linenumber="72">
1251
+ <li class="covered" data-hits="41" data-linenumber="97">
1230
1252
  <span class="hits">41</span>
1231
1253
 
1232
1254
  <code class="ruby"> @groups = groups</code>
1233
1255
  </li>
1234
1256
 
1235
- <li class="covered" data-hits="41" data-linenumber="73">
1257
+ <li class="covered" data-hits="41" data-linenumber="98">
1236
1258
  <span class="hits">41</span>
1237
1259
 
1238
1260
  <code class="ruby"> @group_id = group_id</code>
1239
1261
  </li>
1240
1262
 
1241
- <li class="never" data-hits="" data-linenumber="74">
1263
+ <li class="never" data-hits="" data-linenumber="99">
1242
1264
 
1243
1265
 
1244
1266
  <code class="ruby"> end</code>
1245
1267
  </li>
1246
1268
 
1247
- <li class="never" data-hits="" data-linenumber="75">
1269
+ <li class="never" data-hits="" data-linenumber="100">
1248
1270
 
1249
1271
 
1250
1272
  <code class="ruby"></code>
1251
1273
  </li>
1252
1274
 
1253
- <li class="never" data-hits="" data-linenumber="76">
1275
+ <li class="never" data-hits="" data-linenumber="101">
1254
1276
 
1255
1277
 
1256
1278
  <code class="ruby"> # Generates the result of each contained group</code>
1257
1279
  </li>
1258
1280
 
1259
- <li class="never" data-hits="" data-linenumber="77">
1281
+ <li class="never" data-hits="" data-linenumber="102">
1260
1282
 
1261
1283
 
1262
1284
  <code class="ruby"> # and adds the filled group of each result to</code>
1263
1285
  </li>
1264
1286
 
1265
- <li class="never" data-hits="" data-linenumber="78">
1287
+ <li class="never" data-hits="" data-linenumber="103">
1266
1288
 
1267
1289
 
1268
1290
  <code class="ruby"> # itself</code>
1269
1291
  </li>
1270
1292
 
1271
- <li class="covered" data-hits="1" data-linenumber="79">
1293
+ <li class="covered" data-hits="1" data-linenumber="104">
1272
1294
  <span class="hits">1</span>
1273
1295
 
1274
1296
  <code class="ruby"> def result</code>
1275
1297
  </li>
1276
1298
 
1277
- <li class="covered" data-hits="186" data-linenumber="80">
1299
+ <li class="covered" data-hits="186" data-linenumber="105">
1278
1300
  <span class="hits">186</span>
1279
1301
 
1280
1302
  <code class="ruby"> strings = @groups.map {|repeater| repeater.result}</code>
1281
1303
  </li>
1282
1304
 
1283
- <li class="covered" data-hits="41" data-linenumber="81">
1305
+ <li class="covered" data-hits="41" data-linenumber="106">
1284
1306
  <span class="hits">41</span>
1285
1307
 
1286
1308
  <code class="ruby"> RegexpExamples::permutations_of_strings(strings).map do |result|</code>
1287
1309
  </li>
1288
1310
 
1289
- <li class="covered" data-hits="101" data-linenumber="82">
1311
+ <li class="covered" data-hits="101" data-linenumber="107">
1290
1312
  <span class="hits">101</span>
1291
1313
 
1292
- <code class="ruby"> subgroups = result.respond_to?(:group_id) ? result.all_subgroups : []</code>
1314
+ <code class="ruby"> GroupResult.new(result, group_id)</code>
1293
1315
  </li>
1294
1316
 
1295
- <li class="covered" data-hits="101" data-linenumber="83">
1296
- <span class="hits">101</span>
1297
-
1298
- <code class="ruby"> group_id ? CaptureGroupResult.new(group_id, subgroups, result) : result</code>
1299
- </li>
1300
-
1301
- <li class="never" data-hits="" data-linenumber="84">
1317
+ <li class="never" data-hits="" data-linenumber="108">
1302
1318
 
1303
1319
 
1304
1320
  <code class="ruby"> end</code>
1305
1321
  </li>
1306
1322
 
1307
- <li class="never" data-hits="" data-linenumber="85">
1323
+ <li class="never" data-hits="" data-linenumber="109">
1308
1324
 
1309
1325
 
1310
1326
  <code class="ruby"> end</code>
1311
1327
  </li>
1312
1328
 
1313
- <li class="never" data-hits="" data-linenumber="86">
1329
+ <li class="never" data-hits="" data-linenumber="110">
1314
1330
 
1315
1331
 
1316
1332
  <code class="ruby"> end</code>
1317
1333
  </li>
1318
1334
 
1319
- <li class="never" data-hits="" data-linenumber="87">
1335
+ <li class="never" data-hits="" data-linenumber="111">
1320
1336
 
1321
1337
 
1322
1338
  <code class="ruby"></code>
1323
1339
  </li>
1324
1340
 
1325
- <li class="covered" data-hits="1" data-linenumber="88">
1341
+ <li class="covered" data-hits="1" data-linenumber="112">
1326
1342
  <span class="hits">1</span>
1327
1343
 
1328
1344
  <code class="ruby"> class MultiGroupEnd</code>
1329
1345
  </li>
1330
1346
 
1331
- <li class="never" data-hits="" data-linenumber="89">
1347
+ <li class="never" data-hits="" data-linenumber="113">
1332
1348
 
1333
1349
 
1334
1350
  <code class="ruby"> end</code>
1335
1351
  </li>
1336
1352
 
1337
- <li class="never" data-hits="" data-linenumber="90">
1353
+ <li class="never" data-hits="" data-linenumber="114">
1338
1354
 
1339
1355
 
1340
1356
  <code class="ruby"></code>
1341
1357
  </li>
1342
1358
 
1343
- <li class="covered" data-hits="1" data-linenumber="91">
1359
+ <li class="covered" data-hits="1" data-linenumber="115">
1344
1360
  <span class="hits">1</span>
1345
1361
 
1346
1362
  <code class="ruby"> class OrGroup</code>
1347
1363
  </li>
1348
1364
 
1349
- <li class="covered" data-hits="1" data-linenumber="92">
1365
+ <li class="covered" data-hits="1" data-linenumber="116">
1350
1366
  <span class="hits">1</span>
1351
1367
 
1352
1368
  <code class="ruby"> def initialize(left_repeaters, right_repeaters)</code>
1353
1369
  </li>
1354
1370
 
1355
- <li class="covered" data-hits="6" data-linenumber="93">
1371
+ <li class="covered" data-hits="6" data-linenumber="117">
1356
1372
  <span class="hits">6</span>
1357
1373
 
1358
1374
  <code class="ruby"> @left_repeaters = left_repeaters</code>
1359
1375
  </li>
1360
1376
 
1361
- <li class="covered" data-hits="6" data-linenumber="94">
1377
+ <li class="covered" data-hits="6" data-linenumber="118">
1362
1378
  <span class="hits">6</span>
1363
1379
 
1364
1380
  <code class="ruby"> @right_repeaters = right_repeaters</code>
1365
1381
  </li>
1366
1382
 
1367
- <li class="never" data-hits="" data-linenumber="95">
1383
+ <li class="never" data-hits="" data-linenumber="119">
1368
1384
 
1369
1385
 
1370
1386
  <code class="ruby"> end</code>
1371
1387
  </li>
1372
1388
 
1373
- <li class="never" data-hits="" data-linenumber="96">
1389
+ <li class="never" data-hits="" data-linenumber="120">
1374
1390
 
1375
1391
 
1376
1392
  <code class="ruby"></code>
1377
1393
  </li>
1378
1394
 
1379
- <li class="covered" data-hits="1" data-linenumber="97">
1395
+ <li class="covered" data-hits="1" data-linenumber="121">
1380
1396
  <span class="hits">1</span>
1381
1397
 
1382
1398
  <code class="ruby"> def result</code>
1383
1399
  </li>
1384
1400
 
1385
- <li class="covered" data-hits="6" data-linenumber="98">
1401
+ <li class="covered" data-hits="6" data-linenumber="122">
1386
1402
  <span class="hits">6</span>
1387
1403
 
1388
1404
  <code class="ruby"> left_result = @left_repeaters.map do |repeater|</code>
1389
1405
  </li>
1390
1406
 
1391
- <li class="covered" data-hits="6" data-linenumber="99">
1407
+ <li class="covered" data-hits="6" data-linenumber="123">
1392
1408
  <span class="hits">6</span>
1393
1409
 
1394
1410
  <code class="ruby"> RegexpExamples::permutations_of_strings([repeater.result])</code>
1395
1411
  </li>
1396
1412
 
1397
- <li class="never" data-hits="" data-linenumber="100">
1413
+ <li class="never" data-hits="" data-linenumber="124">
1398
1414
 
1399
1415
 
1400
1416
  <code class="ruby"> end</code>
1401
1417
  </li>
1402
1418
 
1403
- <li class="covered" data-hits="6" data-linenumber="101">
1419
+ <li class="covered" data-hits="6" data-linenumber="125">
1404
1420
  <span class="hits">6</span>
1405
1421
 
1406
1422
  <code class="ruby"> right_result = @right_repeaters.map do |repeater|</code>
1407
1423
  </li>
1408
1424
 
1409
- <li class="covered" data-hits="6" data-linenumber="102">
1425
+ <li class="covered" data-hits="6" data-linenumber="126">
1410
1426
  <span class="hits">6</span>
1411
1427
 
1412
1428
  <code class="ruby"> RegexpExamples::permutations_of_strings([repeater.result])</code>
1413
1429
  </li>
1414
1430
 
1415
- <li class="never" data-hits="" data-linenumber="103">
1431
+ <li class="never" data-hits="" data-linenumber="127">
1416
1432
 
1417
1433
 
1418
1434
  <code class="ruby"> end</code>
1419
1435
  </li>
1420
1436
 
1421
- <li class="covered" data-hits="6" data-linenumber="104">
1437
+ <li class="covered" data-hits="6" data-linenumber="128">
1422
1438
  <span class="hits">6</span>
1423
1439
 
1424
- <code class="ruby"> left_result.concat(right_result).flatten.uniq</code>
1440
+ <code class="ruby"> left_result.concat(right_result).flatten.uniq.map do |result|</code>
1425
1441
  </li>
1426
1442
 
1427
- <li class="never" data-hits="" data-linenumber="105">
1443
+ <li class="covered" data-hits="21" data-linenumber="129">
1444
+ <span class="hits">21</span>
1445
+
1446
+ <code class="ruby"> GroupResult.new(result)</code>
1447
+ </li>
1448
+
1449
+ <li class="never" data-hits="" data-linenumber="130">
1450
+
1451
+
1452
+ <code class="ruby"> end</code>
1453
+ </li>
1454
+
1455
+ <li class="never" data-hits="" data-linenumber="131">
1428
1456
 
1429
1457
 
1430
1458
  <code class="ruby"> end</code>
1431
1459
  </li>
1432
1460
 
1433
- <li class="never" data-hits="" data-linenumber="106">
1461
+ <li class="never" data-hits="" data-linenumber="132">
1434
1462
 
1435
1463
 
1436
1464
  <code class="ruby"> end</code>
1437
1465
  </li>
1438
1466
 
1439
- <li class="never" data-hits="" data-linenumber="107">
1467
+ <li class="never" data-hits="" data-linenumber="133">
1440
1468
 
1441
1469
 
1442
1470
  <code class="ruby"></code>
1443
1471
  </li>
1444
1472
 
1445
- <li class="covered" data-hits="1" data-linenumber="108">
1473
+ <li class="covered" data-hits="1" data-linenumber="134">
1446
1474
  <span class="hits">1</span>
1447
1475
 
1448
1476
  <code class="ruby"> class BackReferenceGroup</code>
1449
1477
  </li>
1450
1478
 
1451
- <li class="covered" data-hits="1" data-linenumber="109">
1479
+ <li class="covered" data-hits="1" data-linenumber="135">
1452
1480
  <span class="hits">1</span>
1453
1481
 
1454
1482
  <code class="ruby"> attr_reader :id</code>
1455
1483
  </li>
1456
1484
 
1457
- <li class="covered" data-hits="1" data-linenumber="110">
1485
+ <li class="covered" data-hits="1" data-linenumber="136">
1458
1486
  <span class="hits">1</span>
1459
1487
 
1460
1488
  <code class="ruby"> def initialize(id)</code>
1461
1489
  </li>
1462
1490
 
1463
- <li class="covered" data-hits="20" data-linenumber="111">
1491
+ <li class="covered" data-hits="20" data-linenumber="137">
1464
1492
  <span class="hits">20</span>
1465
1493
 
1466
1494
  <code class="ruby"> @id = id</code>
1467
1495
  </li>
1468
1496
 
1469
- <li class="never" data-hits="" data-linenumber="112">
1497
+ <li class="never" data-hits="" data-linenumber="138">
1470
1498
 
1471
1499
 
1472
1500
  <code class="ruby"> end</code>
1473
1501
  </li>
1474
1502
 
1475
- <li class="never" data-hits="" data-linenumber="113">
1503
+ <li class="never" data-hits="" data-linenumber="139">
1476
1504
 
1477
1505
 
1478
1506
  <code class="ruby"></code>
1479
1507
  </li>
1480
1508
 
1481
- <li class="covered" data-hits="1" data-linenumber="114">
1509
+ <li class="covered" data-hits="1" data-linenumber="140">
1482
1510
  <span class="hits">1</span>
1483
1511
 
1484
1512
  <code class="ruby"> def result</code>
1485
1513
  </li>
1486
1514
 
1487
- <li class="covered" data-hits="20" data-linenumber="115">
1515
+ <li class="covered" data-hits="20" data-linenumber="141">
1488
1516
  <span class="hits">20</span>
1489
1517
 
1490
- <code class="ruby"> [&quot;__#{@id}__&quot;]</code>
1518
+ <code class="ruby"> [ GroupResult.new(&quot;__#{@id}__&quot;) ]</code>
1491
1519
  </li>
1492
1520
 
1493
- <li class="never" data-hits="" data-linenumber="116">
1521
+ <li class="never" data-hits="" data-linenumber="142">
1494
1522
 
1495
1523
 
1496
1524
  <code class="ruby"> end</code>
1497
1525
  </li>
1498
1526
 
1499
- <li class="never" data-hits="" data-linenumber="117">
1527
+ <li class="never" data-hits="" data-linenumber="143">
1500
1528
 
1501
1529
 
1502
1530
  <code class="ruby"> end</code>
1503
1531
  </li>
1504
1532
 
1505
- <li class="never" data-hits="" data-linenumber="118">
1533
+ <li class="never" data-hits="" data-linenumber="144">
1506
1534
 
1507
1535
 
1508
1536
  <code class="ruby"></code>
1509
1537
  </li>
1510
1538
 
1511
- <li class="never" data-hits="" data-linenumber="119">
1539
+ <li class="never" data-hits="" data-linenumber="145">
1512
1540
 
1513
1541
 
1514
1542
  <code class="ruby">end</code>
@@ -1523,8 +1551,8 @@
1523
1551
  <h3>lib/regexp-examples/helpers.rb</h3>
1524
1552
  <h4><span class="green">100.0 %</span> covered</h4>
1525
1553
  <div>
1526
- <b>15</b> relevant lines.
1527
- <span class="green"><b>15</b> lines covered</span> and
1554
+ <b>10</b> relevant lines.
1555
+ <span class="green"><b>10</b> lines covered</span> and
1528
1556
  <span class="red"><b>0</b> lines missed.</span>
1529
1557
  </div>
1530
1558
  </div>
@@ -1613,136 +1641,76 @@
1613
1641
  <li class="covered" data-hits="237" data-linenumber="14">
1614
1642
  <span class="hits">237</span>
1615
1643
 
1616
- <code class="ruby"> if options[:no_join]</code>
1617
- </li>
1618
-
1619
- <li class="covered" data-hits="73" data-linenumber="15">
1620
- <span class="hits">73</span>
1621
-
1622
- <code class="ruby"> result.flatten</code>
1623
- </li>
1624
-
1625
- <li class="never" data-hits="" data-linenumber="16">
1626
-
1627
-
1628
- <code class="ruby"> else</code>
1629
- </li>
1630
-
1631
- <li class="covered" data-hits="164" data-linenumber="17">
1632
- <span class="hits">164</span>
1633
-
1634
- <code class="ruby"> join_preserving_capture_groups(result)</code>
1635
- </li>
1636
-
1637
- <li class="never" data-hits="" data-linenumber="18">
1638
-
1639
-
1640
- <code class="ruby"> end</code>
1644
+ <code class="ruby"> join_preserving_capture_groups(result)</code>
1641
1645
  </li>
1642
1646
 
1643
- <li class="never" data-hits="" data-linenumber="19">
1647
+ <li class="never" data-hits="" data-linenumber="15">
1644
1648
 
1645
1649
 
1646
1650
  <code class="ruby"> end</code>
1647
1651
  </li>
1648
1652
 
1649
- <li class="never" data-hits="" data-linenumber="20">
1653
+ <li class="never" data-hits="" data-linenumber="16">
1650
1654
 
1651
1655
 
1652
1656
  <code class="ruby"> end</code>
1653
1657
  </li>
1654
1658
 
1655
- <li class="never" data-hits="" data-linenumber="21">
1659
+ <li class="never" data-hits="" data-linenumber="17">
1656
1660
 
1657
1661
 
1658
1662
  <code class="ruby"></code>
1659
1663
  </li>
1660
1664
 
1661
- <li class="covered" data-hits="1" data-linenumber="22">
1665
+ <li class="covered" data-hits="1" data-linenumber="18">
1662
1666
  <span class="hits">1</span>
1663
1667
 
1664
1668
  <code class="ruby"> def self.join_preserving_capture_groups(result)</code>
1665
1669
  </li>
1666
1670
 
1667
- <li class="covered" data-hits="164" data-linenumber="23">
1668
- <span class="hits">164</span>
1671
+ <li class="covered" data-hits="237" data-linenumber="19">
1672
+ <span class="hits">237</span>
1669
1673
 
1670
1674
  <code class="ruby"> result.flatten!</code>
1671
1675
  </li>
1672
1676
 
1673
- <li class="covered" data-hits="164" data-linenumber="24">
1674
- <span class="hits">164</span>
1677
+ <li class="covered" data-hits="237" data-linenumber="20">
1678
+ <span class="hits">237</span>
1675
1679
 
1676
1680
  <code class="ruby"> subgroups = result</code>
1677
1681
  </li>
1678
1682
 
1679
- <li class="covered" data-hits="328" data-linenumber="25">
1680
- <span class="hits">328</span>
1681
-
1682
- <code class="ruby"> .select { |partial| partial.respond_to? :group_id }</code>
1683
- </li>
1684
-
1685
- <li class="never" data-hits="" data-linenumber="26">
1683
+ <li class="never" data-hits="" data-linenumber="21">
1686
1684
 
1687
1685
 
1688
1686
  <code class="ruby"> .map(&amp;:all_subgroups)</code>
1689
1687
  </li>
1690
1688
 
1691
- <li class="never" data-hits="" data-linenumber="27">
1689
+ <li class="never" data-hits="" data-linenumber="22">
1692
1690
 
1693
1691
 
1694
1692
  <code class="ruby"> .flatten</code>
1695
1693
  </li>
1696
1694
 
1697
- <li class="never" data-hits="" data-linenumber="28">
1698
-
1699
-
1700
- <code class="ruby"></code>
1701
- </li>
1702
-
1703
- <li class="covered" data-hits="164" data-linenumber="29">
1704
- <span class="hits">164</span>
1705
-
1706
- <code class="ruby"> if subgroups.empty?</code>
1707
- </li>
1708
-
1709
- <li class="covered" data-hits="123" data-linenumber="30">
1710
- <span class="hits">123</span>
1711
-
1712
- <code class="ruby"> result.join</code>
1713
- </li>
1714
-
1715
- <li class="never" data-hits="" data-linenumber="31">
1716
-
1717
-
1718
- <code class="ruby"> else</code>
1719
- </li>
1720
-
1721
- <li class="covered" data-hits="41" data-linenumber="32">
1722
- <span class="hits">41</span>
1723
-
1724
- <code class="ruby"> CaptureGroupResult.new(nil, subgroups, result.join)</code>
1725
- </li>
1726
-
1727
- <li class="never" data-hits="" data-linenumber="33">
1728
-
1695
+ <li class="covered" data-hits="237" data-linenumber="23">
1696
+ <span class="hits">237</span>
1729
1697
 
1730
- <code class="ruby"> end</code>
1698
+ <code class="ruby"> GroupResult.new(result.join, nil, subgroups)</code>
1731
1699
  </li>
1732
1700
 
1733
- <li class="never" data-hits="" data-linenumber="34">
1701
+ <li class="never" data-hits="" data-linenumber="24">
1734
1702
 
1735
1703
 
1736
1704
  <code class="ruby"> end</code>
1737
1705
  </li>
1738
1706
 
1739
- <li class="never" data-hits="" data-linenumber="35">
1707
+ <li class="never" data-hits="" data-linenumber="25">
1740
1708
 
1741
1709
 
1742
1710
  <code class="ruby">end</code>
1743
1711
  </li>
1744
1712
 
1745
- <li class="never" data-hits="" data-linenumber="36">
1713
+ <li class="never" data-hits="" data-linenumber="26">
1746
1714
 
1747
1715
 
1748
1716
  <code class="ruby"></code>
@@ -1757,8 +1725,8 @@
1757
1725
  <h3>lib/regexp-examples/parser.rb</h3>
1758
1726
  <h4><span class="green">100.0 %</span> covered</h4>
1759
1727
  <div>
1760
- <b>102</b> relevant lines.
1761
- <span class="green"><b>102</b> lines covered</span> and
1728
+ <b>104</b> relevant lines.
1729
+ <span class="green"><b>104</b> lines covered</span> and
1762
1730
  <span class="red"><b>0</b> lines missed.</span>
1763
1731
  </div>
1764
1732
  </div>
@@ -1790,20 +1758,20 @@
1790
1758
  <code class="ruby"> def initialize(regexp_string)</code>
1791
1759
  </li>
1792
1760
 
1793
- <li class="covered" data-hits="54" data-linenumber="5">
1794
- <span class="hits">54</span>
1761
+ <li class="covered" data-hits="58" data-linenumber="5">
1762
+ <span class="hits">58</span>
1795
1763
 
1796
1764
  <code class="ruby"> @regexp_string = regexp_string</code>
1797
1765
  </li>
1798
1766
 
1799
- <li class="covered" data-hits="54" data-linenumber="6">
1800
- <span class="hits">54</span>
1767
+ <li class="covered" data-hits="58" data-linenumber="6">
1768
+ <span class="hits">58</span>
1801
1769
 
1802
1770
  <code class="ruby"> @num_groups = 0</code>
1803
1771
  </li>
1804
1772
 
1805
- <li class="covered" data-hits="54" data-linenumber="7">
1806
- <span class="hits">54</span>
1773
+ <li class="covered" data-hits="58" data-linenumber="7">
1774
+ <span class="hits">58</span>
1807
1775
 
1808
1776
  <code class="ruby"> @current_position = 0</code>
1809
1777
  </li>
@@ -1826,20 +1794,20 @@
1826
1794
  <code class="ruby"> def parse</code>
1827
1795
  </li>
1828
1796
 
1829
- <li class="covered" data-hits="101" data-linenumber="11">
1830
- <span class="hits">101</span>
1797
+ <li class="covered" data-hits="105" data-linenumber="11">
1798
+ <span class="hits">105</span>
1831
1799
 
1832
1800
  <code class="ruby"> repeaters = []</code>
1833
1801
  </li>
1834
1802
 
1835
- <li class="covered" data-hits="101" data-linenumber="12">
1836
- <span class="hits">101</span>
1803
+ <li class="covered" data-hits="105" data-linenumber="12">
1804
+ <span class="hits">105</span>
1837
1805
 
1838
1806
  <code class="ruby"> while @current_position &lt; regexp_string.length</code>
1839
1807
  </li>
1840
1808
 
1841
- <li class="covered" data-hits="312" data-linenumber="13">
1842
- <span class="hits">312</span>
1809
+ <li class="covered" data-hits="316" data-linenumber="13">
1810
+ <span class="hits">316</span>
1843
1811
 
1844
1812
  <code class="ruby"> group = parse_group(repeaters)</code>
1845
1813
  </li>
@@ -1910,14 +1878,14 @@
1910
1878
  <code class="ruby"> def parse_group(repeaters)</code>
1911
1879
  </li>
1912
1880
 
1913
- <li class="covered" data-hits="312" data-linenumber="25">
1914
- <span class="hits">312</span>
1881
+ <li class="covered" data-hits="316" data-linenumber="25">
1882
+ <span class="hits">316</span>
1915
1883
 
1916
1884
  <code class="ruby"> char = regexp_string[@current_position]</code>
1917
1885
  </li>
1918
1886
 
1919
- <li class="covered" data-hits="312" data-linenumber="26">
1920
- <span class="hits">312</span>
1887
+ <li class="covered" data-hits="316" data-linenumber="26">
1888
+ <span class="hits">316</span>
1921
1889
 
1922
1890
  <code class="ruby"> case char</code>
1923
1891
  </li>
@@ -1928,8 +1896,8 @@
1928
1896
  <code class="ruby"> when &#39;(&#39;</code>
1929
1897
  </li>
1930
1898
 
1931
- <li class="covered" data-hits="41" data-linenumber="28">
1932
- <span class="hits">41</span>
1899
+ <li class="covered" data-hits="45" data-linenumber="28">
1900
+ <span class="hits">45</span>
1933
1901
 
1934
1902
  <code class="ruby"> group = parse_multi_group</code>
1935
1903
  </li>
@@ -2264,26 +2232,26 @@
2264
2232
  <code class="ruby"> def parse_multi_group</code>
2265
2233
  </li>
2266
2234
 
2267
- <li class="covered" data-hits="41" data-linenumber="84">
2268
- <span class="hits">41</span>
2235
+ <li class="covered" data-hits="45" data-linenumber="84">
2236
+ <span class="hits">45</span>
2269
2237
 
2270
2238
  <code class="ruby"> @current_position += 1</code>
2271
2239
  </li>
2272
2240
 
2273
- <li class="covered" data-hits="41" data-linenumber="85">
2274
- <span class="hits">41</span>
2241
+ <li class="covered" data-hits="45" data-linenumber="85">
2242
+ <span class="hits">45</span>
2275
2243
 
2276
2244
  <code class="ruby"> @num_groups += 1</code>
2277
2245
  </li>
2278
2246
 
2279
- <li class="covered" data-hits="41" data-linenumber="86">
2280
- <span class="hits">41</span>
2247
+ <li class="covered" data-hits="45" data-linenumber="86">
2248
+ <span class="hits">45</span>
2281
2249
 
2282
2250
  <code class="ruby"> group_id = nil # init</code>
2283
2251
  </li>
2284
2252
 
2285
- <li class="covered" data-hits="41" data-linenumber="87">
2286
- <span class="hits">41</span>
2253
+ <li class="covered" data-hits="45" data-linenumber="87">
2254
+ <span class="hits">45</span>
2287
2255
 
2288
2256
  <code class="ruby"> rest_of_string.match(/\A(\?)?(:|!|=|&lt;(!|=|[^!=][^&gt;]*))?/) do |match|</code>
2289
2257
  </li>
@@ -2330,10 +2298,10 @@
2330
2298
  <code class="ruby"> when %w(! =).include?(match[2]) # e.g. /(?=lookahead)/, /(?!neglookahead)/</code>
2331
2299
  </li>
2332
2300
 
2333
- <li class="never" data-hits="" data-linenumber="95">
2334
-
2301
+ <li class="covered" data-hits="2" data-linenumber="95">
2302
+ <span class="hits">2</span>
2335
2303
 
2336
- <code class="ruby"> # TODO: Raise exception</code>
2304
+ <code class="ruby"> raise IllegalSyntaxError, &quot;Lookaheads are not regular; cannot generate examples&quot;</code>
2337
2305
  </li>
2338
2306
 
2339
2307
  <li class="never" data-hits="" data-linenumber="96">
@@ -2342,10 +2310,10 @@
2342
2310
  <code class="ruby"> when %w(! =).include?(match[3]) # e.g. /(?&lt;=lookbehind)/, /(?&lt;!neglookbehind)/</code>
2343
2311
  </li>
2344
2312
 
2345
- <li class="never" data-hits="" data-linenumber="97">
2346
-
2313
+ <li class="covered" data-hits="2" data-linenumber="97">
2314
+ <span class="hits">2</span>
2347
2315
 
2348
- <code class="ruby"> # TODO: Raise exception</code>
2316
+ <code class="ruby"> raise IllegalSyntaxError, &quot;Lookbehinds are not regular; cannot generate examples&quot;</code>
2349
2317
  </li>
2350
2318
 
2351
2319
  <li class="never" data-hits="" data-linenumber="98">
@@ -2366,8 +2334,8 @@
2366
2334
  <code class="ruby"> group_id = match[3]</code>
2367
2335
  </li>
2368
2336
 
2369
- <li class="covered" data-hits="41" data-linenumber="101">
2370
- <span class="hits">41</span>
2337
+ <li class="covered" data-hits="45" data-linenumber="101">
2338
+ <span class="hits">45</span>
2371
2339
 
2372
2340
  <code class="ruby"> end</code>
2373
2341
  </li>
@@ -2840,8 +2808,8 @@
2840
2808
  <code class="ruby"> def rest_of_string</code>
2841
2809
  </li>
2842
2810
 
2843
- <li class="covered" data-hits="98" data-linenumber="180">
2844
- <span class="hits">98</span>
2811
+ <li class="covered" data-hits="102" data-linenumber="180">
2812
+ <span class="hits">102</span>
2845
2813
 
2846
2814
  <code class="ruby"> regexp_string[@current_position..-1]</code>
2847
2815
  </li>
@@ -2879,8 +2847,8 @@
2879
2847
  <h3>lib/regexp-examples/regexp_extensions.rb</h3>
2880
2848
  <h4><span class="green">100.0 %</span> covered</h4>
2881
2849
  <div>
2882
- <b>9</b> relevant lines.
2883
- <span class="green"><b>9</b> lines covered</span> and
2850
+ <b>8</b> relevant lines.
2851
+ <span class="green"><b>8</b> lines covered</span> and
2884
2852
  <span class="red"><b>0</b> lines missed.</span>
2885
2853
  </div>
2886
2854
  </div>
@@ -2906,8 +2874,8 @@
2906
2874
  <code class="ruby"> def examples</code>
2907
2875
  </li>
2908
2876
 
2909
- <li class="covered" data-hits="54" data-linenumber="4">
2910
- <span class="hits">54</span>
2877
+ <li class="covered" data-hits="58" data-linenumber="4">
2878
+ <span class="hits">58</span>
2911
2879
 
2912
2880
  <code class="ruby"> partial_examples =</code>
2913
2881
  </li>
@@ -2921,64 +2889,52 @@
2921
2889
  <li class="never" data-hits="" data-linenumber="6">
2922
2890
 
2923
2891
 
2924
- <code class="ruby"> .parse</code>
2892
+ <code class="ruby"> .parse</code>
2925
2893
  </li>
2926
2894
 
2927
2895
  <li class="covered" data-hits="114" data-linenumber="7">
2928
2896
  <span class="hits">114</span>
2929
2897
 
2930
- <code class="ruby"> .map {|repeater| repeater.result}</code>
2898
+ <code class="ruby"> .map {|repeater| repeater.result}</code>
2931
2899
  </li>
2932
2900
 
2933
2901
  <li class="covered" data-hits="54" data-linenumber="8">
2934
2902
  <span class="hits">54</span>
2935
2903
 
2936
- <code class="ruby"> full_examples = RegexpExamples::permutations_of_strings(partial_examples.dup, no_join: true)</code>
2904
+ <code class="ruby"> full_examples = RegexpExamples::permutations_of_strings(partial_examples)</code>
2937
2905
  </li>
2938
2906
 
2939
2907
  <li class="covered" data-hits="54" data-linenumber="9">
2940
2908
  <span class="hits">54</span>
2941
2909
 
2942
- <code class="ruby"> full_examples_with_backrefs = \</code>
2910
+ <code class="ruby"> RegexpExamples::BackReferenceReplacer.new.substitute_backreferences(full_examples)</code>
2943
2911
  </li>
2944
2912
 
2945
2913
  <li class="never" data-hits="" data-linenumber="10">
2946
2914
 
2947
2915
 
2948
- <code class="ruby"> RegexpExamples::BackReferenceReplacer.new.substitute_backreferences(full_examples)</code>
2949
- </li>
2950
-
2951
- <li class="covered" data-hits="54" data-linenumber="11">
2952
- <span class="hits">54</span>
2953
-
2954
- <code class="ruby"> full_examples_with_backrefs.map(&amp;:join)</code>
2955
- </li>
2956
-
2957
- <li class="never" data-hits="" data-linenumber="12">
2958
-
2959
-
2960
2916
  <code class="ruby"> end</code>
2961
2917
  </li>
2962
2918
 
2963
- <li class="never" data-hits="" data-linenumber="13">
2919
+ <li class="never" data-hits="" data-linenumber="11">
2964
2920
 
2965
2921
 
2966
2922
  <code class="ruby"> end</code>
2967
2923
  </li>
2968
2924
 
2969
- <li class="covered" data-hits="1" data-linenumber="14">
2925
+ <li class="covered" data-hits="1" data-linenumber="12">
2970
2926
  <span class="hits">1</span>
2971
2927
 
2972
2928
  <code class="ruby"> include Examples</code>
2973
2929
  </li>
2974
2930
 
2975
- <li class="never" data-hits="" data-linenumber="15">
2931
+ <li class="never" data-hits="" data-linenumber="13">
2976
2932
 
2977
2933
 
2978
2934
  <code class="ruby">end</code>
2979
2935
  </li>
2980
2936
 
2981
- <li class="never" data-hits="" data-linenumber="16">
2937
+ <li class="never" data-hits="" data-linenumber="14">
2982
2938
 
2983
2939
 
2984
2940
  <code class="ruby"></code>
@@ -3479,8 +3435,8 @@
3479
3435
  <h3>spec/regexp-examples_spec.rb</h3>
3480
3436
  <h4><span class="green">100.0 %</span> covered</h4>
3481
3437
  <div>
3482
- <b>22</b> relevant lines.
3483
- <span class="green"><b>22</b> lines covered</span> and
3438
+ <b>28</b> relevant lines.
3439
+ <span class="green"><b>28</b> lines covered</span> and
3484
3440
  <span class="red"><b>0</b> lines missed.</span>
3485
3441
  </div>
3486
3442
  </div>
@@ -3548,619 +3504,685 @@
3548
3504
  <code class="ruby"> # /a*/.examples to include &quot;xyz&quot;</code>
3549
3505
  </li>
3550
3506
 
3551
- <li class="never" data-hits="" data-linenumber="11">
3507
+ <li class="never" data-hits="" data-linenumber="11">
3508
+
3509
+
3510
+ <code class="ruby"> # /a|b/.examples to include &quot;bad&quot;</code>
3511
+ </li>
3512
+
3513
+ <li class="never" data-hits="" data-linenumber="12">
3514
+
3515
+
3516
+ <code class="ruby"> end</code>
3517
+ </li>
3518
+
3519
+ <li class="never" data-hits="" data-linenumber="13">
3520
+
3521
+
3522
+ <code class="ruby"> end</code>
3523
+ </li>
3524
+
3525
+ <li class="never" data-hits="" data-linenumber="14">
3526
+
3527
+
3528
+ <code class="ruby"> end</code>
3529
+ </li>
3530
+
3531
+ <li class="never" data-hits="" data-linenumber="15">
3532
+
3533
+
3534
+ <code class="ruby"></code>
3535
+ </li>
3536
+
3537
+ <li class="covered" data-hits="1" data-linenumber="16">
3538
+ <span class="hits">1</span>
3539
+
3540
+ <code class="ruby"> def self.examples_raise_illegal_syntax_error(*regexps)</code>
3541
+ </li>
3542
+
3543
+ <li class="covered" data-hits="1" data-linenumber="17">
3544
+ <span class="hits">1</span>
3545
+
3546
+ <code class="ruby"> regexps.each do |regexp|</code>
3547
+ </li>
3548
+
3549
+ <li class="covered" data-hits="4" data-linenumber="18">
3550
+ <span class="hits">4</span>
3552
3551
 
3552
+ <code class="ruby"> it do</code>
3553
+ </li>
3554
+
3555
+ <li class="covered" data-hits="8" data-linenumber="19">
3556
+ <span class="hits">8</span>
3553
3557
 
3554
- <code class="ruby"> # /a|b/.examples to include &quot;bad&quot;</code>
3558
+ <code class="ruby"> expect{regexp.examples}.to raise_error RegexpExamples::IllegalSyntaxError</code>
3555
3559
  </li>
3556
3560
 
3557
- <li class="never" data-hits="" data-linenumber="12">
3561
+ <li class="never" data-hits="" data-linenumber="20">
3558
3562
 
3559
3563
 
3560
3564
  <code class="ruby"> end</code>
3561
3565
  </li>
3562
3566
 
3563
- <li class="never" data-hits="" data-linenumber="13">
3567
+ <li class="never" data-hits="" data-linenumber="21">
3564
3568
 
3565
3569
 
3566
3570
  <code class="ruby"> end</code>
3567
3571
  </li>
3568
3572
 
3569
- <li class="never" data-hits="" data-linenumber="14">
3573
+ <li class="never" data-hits="" data-linenumber="22">
3570
3574
 
3571
3575
 
3572
3576
  <code class="ruby"> end</code>
3573
3577
  </li>
3574
3578
 
3575
- <li class="never" data-hits="" data-linenumber="15">
3579
+ <li class="never" data-hits="" data-linenumber="23">
3576
3580
 
3577
3581
 
3578
3582
  <code class="ruby"></code>
3579
3583
  </li>
3580
3584
 
3581
- <li class="covered" data-hits="1" data-linenumber="16">
3585
+ <li class="covered" data-hits="1" data-linenumber="24">
3582
3586
  <span class="hits">1</span>
3583
3587
 
3584
3588
  <code class="ruby"> context &#39;returns matching strings&#39; do</code>
3585
3589
  </li>
3586
3590
 
3587
- <li class="covered" data-hits="1" data-linenumber="17">
3591
+ <li class="covered" data-hits="1" data-linenumber="25">
3588
3592
  <span class="hits">1</span>
3589
3593
 
3590
3594
  <code class="ruby"> context &quot;for basic repeaters&quot; do</code>
3591
3595
  </li>
3592
3596
 
3593
- <li class="covered" data-hits="1" data-linenumber="18">
3597
+ <li class="covered" data-hits="1" data-linenumber="26">
3594
3598
  <span class="hits">1</span>
3595
3599
 
3596
3600
  <code class="ruby"> examples_exist_and_match(</code>
3597
3601
  </li>
3598
3602
 
3599
- <li class="never" data-hits="" data-linenumber="19">
3603
+ <li class="never" data-hits="" data-linenumber="27">
3600
3604
 
3601
3605
 
3602
3606
  <code class="ruby"> /a/,</code>
3603
3607
  </li>
3604
3608
 
3605
- <li class="never" data-hits="" data-linenumber="20">
3609
+ <li class="never" data-hits="" data-linenumber="28">
3606
3610
 
3607
3611
 
3608
3612
  <code class="ruby"> /a*/,</code>
3609
3613
  </li>
3610
3614
 
3611
- <li class="never" data-hits="" data-linenumber="21">
3615
+ <li class="never" data-hits="" data-linenumber="29">
3612
3616
 
3613
3617
 
3614
3618
  <code class="ruby"> /a+/,</code>
3615
3619
  </li>
3616
3620
 
3617
- <li class="never" data-hits="" data-linenumber="22">
3621
+ <li class="never" data-hits="" data-linenumber="30">
3618
3622
 
3619
3623
 
3620
3624
  <code class="ruby"> /a?/,</code>
3621
3625
  </li>
3622
3626
 
3623
- <li class="never" data-hits="" data-linenumber="23">
3627
+ <li class="never" data-hits="" data-linenumber="31">
3624
3628
 
3625
3629
 
3626
3630
  <code class="ruby"> /a{1}/,</code>
3627
3631
  </li>
3628
3632
 
3629
- <li class="never" data-hits="" data-linenumber="24">
3633
+ <li class="never" data-hits="" data-linenumber="32">
3630
3634
 
3631
3635
 
3632
3636
  <code class="ruby"> /a{1,}/,</code>
3633
3637
  </li>
3634
3638
 
3635
- <li class="never" data-hits="" data-linenumber="25">
3639
+ <li class="never" data-hits="" data-linenumber="33">
3636
3640
 
3637
3641
 
3638
3642
  <code class="ruby"> /a{1,2}/</code>
3639
3643
  </li>
3640
3644
 
3641
- <li class="never" data-hits="" data-linenumber="26">
3645
+ <li class="never" data-hits="" data-linenumber="34">
3642
3646
 
3643
3647
 
3644
3648
  <code class="ruby"> )</code>
3645
3649
  </li>
3646
3650
 
3647
- <li class="never" data-hits="" data-linenumber="27">
3651
+ <li class="never" data-hits="" data-linenumber="35">
3648
3652
 
3649
3653
 
3650
3654
  <code class="ruby"> end</code>
3651
3655
  </li>
3652
3656
 
3653
- <li class="never" data-hits="" data-linenumber="28">
3657
+ <li class="never" data-hits="" data-linenumber="36">
3654
3658
 
3655
3659
 
3656
3660
  <code class="ruby"></code>
3657
3661
  </li>
3658
3662
 
3659
- <li class="covered" data-hits="1" data-linenumber="29">
3663
+ <li class="covered" data-hits="1" data-linenumber="37">
3660
3664
  <span class="hits">1</span>
3661
3665
 
3662
3666
  <code class="ruby"> context &quot;for basic groups&quot; do</code>
3663
3667
  </li>
3664
3668
 
3665
- <li class="covered" data-hits="1" data-linenumber="30">
3669
+ <li class="covered" data-hits="1" data-linenumber="38">
3666
3670
  <span class="hits">1</span>
3667
3671
 
3668
3672
  <code class="ruby"> examples_exist_and_match(</code>
3669
3673
  </li>
3670
3674
 
3671
- <li class="never" data-hits="" data-linenumber="31">
3675
+ <li class="never" data-hits="" data-linenumber="39">
3672
3676
 
3673
3677
 
3674
3678
  <code class="ruby"> /[a]/,</code>
3675
3679
  </li>
3676
3680
 
3677
- <li class="never" data-hits="" data-linenumber="32">
3681
+ <li class="never" data-hits="" data-linenumber="40">
3678
3682
 
3679
3683
 
3680
3684
  <code class="ruby"> /(a)/,</code>
3681
3685
  </li>
3682
3686
 
3683
- <li class="never" data-hits="" data-linenumber="33">
3687
+ <li class="never" data-hits="" data-linenumber="41">
3684
3688
 
3685
3689
 
3686
3690
  <code class="ruby"> /a|b/,</code>
3687
3691
  </li>
3688
3692
 
3689
- <li class="never" data-hits="" data-linenumber="34">
3693
+ <li class="never" data-hits="" data-linenumber="42">
3690
3694
 
3691
3695
 
3692
3696
  <code class="ruby"> /./</code>
3693
3697
  </li>
3694
3698
 
3695
- <li class="never" data-hits="" data-linenumber="35">
3699
+ <li class="never" data-hits="" data-linenumber="43">
3696
3700
 
3697
3701
 
3698
3702
  <code class="ruby"> )</code>
3699
3703
  </li>
3700
3704
 
3701
- <li class="never" data-hits="" data-linenumber="36">
3705
+ <li class="never" data-hits="" data-linenumber="44">
3702
3706
 
3703
3707
 
3704
3708
  <code class="ruby"> end</code>
3705
3709
  </li>
3706
3710
 
3707
- <li class="never" data-hits="" data-linenumber="37">
3711
+ <li class="never" data-hits="" data-linenumber="45">
3708
3712
 
3709
3713
 
3710
3714
  <code class="ruby"></code>
3711
3715
  </li>
3712
3716
 
3713
- <li class="covered" data-hits="1" data-linenumber="38">
3717
+ <li class="covered" data-hits="1" data-linenumber="46">
3714
3718
  <span class="hits">1</span>
3715
3719
 
3716
3720
  <code class="ruby"> context &quot;for complex char groups (square brackets)&quot; do</code>
3717
3721
  </li>
3718
3722
 
3719
- <li class="covered" data-hits="1" data-linenumber="39">
3723
+ <li class="covered" data-hits="1" data-linenumber="47">
3720
3724
  <span class="hits">1</span>
3721
3725
 
3722
3726
  <code class="ruby"> examples_exist_and_match(</code>
3723
3727
  </li>
3724
3728
 
3725
- <li class="never" data-hits="" data-linenumber="40">
3729
+ <li class="never" data-hits="" data-linenumber="48">
3726
3730
 
3727
3731
 
3728
3732
  <code class="ruby"> /[abc]/,</code>
3729
3733
  </li>
3730
3734
 
3731
- <li class="never" data-hits="" data-linenumber="41">
3735
+ <li class="never" data-hits="" data-linenumber="49">
3732
3736
 
3733
3737
 
3734
3738
  <code class="ruby"> /[a-c]/,</code>
3735
3739
  </li>
3736
3740
 
3737
- <li class="never" data-hits="" data-linenumber="42">
3741
+ <li class="never" data-hits="" data-linenumber="50">
3738
3742
 
3739
3743
 
3740
3744
  <code class="ruby"> /[abc-e]/,</code>
3741
3745
  </li>
3742
3746
 
3743
- <li class="never" data-hits="" data-linenumber="43">
3747
+ <li class="never" data-hits="" data-linenumber="51">
3744
3748
 
3745
3749
 
3746
3750
  <code class="ruby"> /[^a-zA-Z]/,</code>
3747
3751
  </li>
3748
3752
 
3749
- <li class="never" data-hits="" data-linenumber="44">
3753
+ <li class="never" data-hits="" data-linenumber="52">
3750
3754
 
3751
3755
 
3752
3756
  <code class="ruby"> /[\w]/,</code>
3753
3757
  </li>
3754
3758
 
3755
- <li class="never" data-hits="" data-linenumber="45">
3759
+ <li class="never" data-hits="" data-linenumber="53">
3756
3760
 
3757
3761
 
3758
3762
  <code class="ruby"> /[]]/, # TODO: How to suppress annoying warnings on this test?</code>
3759
3763
  </li>
3760
3764
 
3761
- <li class="never" data-hits="" data-linenumber="46">
3765
+ <li class="never" data-hits="" data-linenumber="54">
3762
3766
 
3763
3767
 
3764
3768
  <code class="ruby"> /[\]]/,</code>
3765
3769
  </li>
3766
3770
 
3767
- <li class="never" data-hits="" data-linenumber="47">
3771
+ <li class="never" data-hits="" data-linenumber="55">
3768
3772
 
3769
3773
 
3770
3774
  <code class="ruby"> /[\\]/,</code>
3771
3775
  </li>
3772
3776
 
3773
- <li class="never" data-hits="" data-linenumber="48">
3777
+ <li class="never" data-hits="" data-linenumber="56">
3774
3778
 
3775
3779
 
3776
3780
  <code class="ruby"> /[\\\]]/,</code>
3777
3781
  </li>
3778
3782
 
3779
- <li class="never" data-hits="" data-linenumber="49">
3783
+ <li class="never" data-hits="" data-linenumber="57">
3780
3784
 
3781
3785
 
3782
3786
  <code class="ruby"> /[\n-\r]/,</code>
3783
3787
  </li>
3784
3788
 
3785
- <li class="never" data-hits="" data-linenumber="50">
3789
+ <li class="never" data-hits="" data-linenumber="58">
3786
3790
 
3787
3791
 
3788
3792
  <code class="ruby"> /[\-]/,</code>
3789
3793
  </li>
3790
3794
 
3791
- <li class="never" data-hits="" data-linenumber="51">
3795
+ <li class="never" data-hits="" data-linenumber="59">
3792
3796
 
3793
3797
 
3794
3798
  <code class="ruby"> /[%-+]/ # This regex is &quot;supposed to&quot; match some surprising things!!!</code>
3795
3799
  </li>
3796
3800
 
3797
- <li class="never" data-hits="" data-linenumber="52">
3801
+ <li class="never" data-hits="" data-linenumber="60">
3798
3802
 
3799
3803
 
3800
3804
  <code class="ruby"> )</code>
3801
3805
  </li>
3802
3806
 
3803
- <li class="never" data-hits="" data-linenumber="53">
3807
+ <li class="never" data-hits="" data-linenumber="61">
3804
3808
 
3805
3809
 
3806
3810
  <code class="ruby"> end</code>
3807
3811
  </li>
3808
3812
 
3809
- <li class="never" data-hits="" data-linenumber="54">
3813
+ <li class="never" data-hits="" data-linenumber="62">
3810
3814
 
3811
3815
 
3812
3816
  <code class="ruby"></code>
3813
3817
  </li>
3814
3818
 
3815
- <li class="covered" data-hits="1" data-linenumber="55">
3819
+ <li class="covered" data-hits="1" data-linenumber="63">
3816
3820
  <span class="hits">1</span>
3817
3821
 
3818
3822
  <code class="ruby"> context &quot;for complex multi groups&quot; do</code>
3819
3823
  </li>
3820
3824
 
3821
- <li class="covered" data-hits="1" data-linenumber="56">
3825
+ <li class="covered" data-hits="1" data-linenumber="64">
3822
3826
  <span class="hits">1</span>
3823
3827
 
3824
3828
  <code class="ruby"> examples_exist_and_match(</code>
3825
3829
  </li>
3826
3830
 
3827
- <li class="never" data-hits="" data-linenumber="57">
3831
+ <li class="never" data-hits="" data-linenumber="65">
3828
3832
 
3829
3833
 
3830
3834
  <code class="ruby"> /(normal)/,</code>
3831
3835
  </li>
3832
3836
 
3833
- <li class="never" data-hits="" data-linenumber="58">
3837
+ <li class="never" data-hits="" data-linenumber="66">
3834
3838
 
3835
3839
 
3836
3840
  <code class="ruby"> /(?:nocapture)/,</code>
3837
3841
  </li>
3838
3842
 
3839
- <li class="never" data-hits="" data-linenumber="59">
3843
+ <li class="never" data-hits="" data-linenumber="67">
3840
3844
 
3841
3845
 
3842
3846
  <code class="ruby"> /(?&lt;name&gt;namedgroup)/,</code>
3843
3847
  </li>
3844
3848
 
3845
- <li class="never" data-hits="" data-linenumber="60">
3849
+ <li class="never" data-hits="" data-linenumber="68">
3846
3850
 
3847
3851
 
3848
3852
  <code class="ruby"> /(?&lt;name&gt;namedgroup) \k&lt;name&gt;/</code>
3849
3853
  </li>
3850
3854
 
3851
- <li class="never" data-hits="" data-linenumber="61">
3855
+ <li class="never" data-hits="" data-linenumber="69">
3852
3856
 
3853
3857
 
3854
3858
  <code class="ruby"> )</code>
3855
3859
  </li>
3856
3860
 
3857
- <li class="never" data-hits="" data-linenumber="62">
3858
-
3859
-
3860
- <code class="ruby"> # TODO: These are not yet implemented</code>
3861
- </li>
3862
-
3863
- <li class="never" data-hits="" data-linenumber="63">
3864
-
3865
-
3866
- <code class="ruby"> # (expect to raise exception)</code>
3867
- </li>
3868
-
3869
- <li class="never" data-hits="" data-linenumber="64">
3870
-
3871
-
3872
- <code class="ruby"># /(?=lookahead)/,</code>
3873
- </li>
3874
-
3875
- <li class="never" data-hits="" data-linenumber="65">
3876
-
3877
-
3878
- <code class="ruby"># /(?!neglookahead)/,</code>
3879
- </li>
3880
-
3881
- <li class="never" data-hits="" data-linenumber="66">
3882
-
3883
-
3884
- <code class="ruby"># /(?&lt;=lookbehind)/,</code>
3885
- </li>
3886
-
3887
- <li class="never" data-hits="" data-linenumber="67">
3888
-
3889
-
3890
- <code class="ruby"># /(?&lt;!neglookbehind)/,</code>
3891
- </li>
3892
-
3893
- <li class="never" data-hits="" data-linenumber="68">
3861
+ <li class="never" data-hits="" data-linenumber="70">
3894
3862
 
3895
3863
 
3896
3864
  <code class="ruby"> end</code>
3897
3865
  </li>
3898
3866
 
3899
- <li class="never" data-hits="" data-linenumber="69">
3867
+ <li class="never" data-hits="" data-linenumber="71">
3900
3868
 
3901
3869
 
3902
3870
  <code class="ruby"></code>
3903
3871
  </li>
3904
3872
 
3905
- <li class="covered" data-hits="1" data-linenumber="70">
3873
+ <li class="covered" data-hits="1" data-linenumber="72">
3906
3874
  <span class="hits">1</span>
3907
3875
 
3908
3876
  <code class="ruby"> context &quot;for escaped characters&quot; do</code>
3909
3877
  </li>
3910
3878
 
3911
- <li class="covered" data-hits="1" data-linenumber="71">
3879
+ <li class="covered" data-hits="1" data-linenumber="73">
3912
3880
  <span class="hits">1</span>
3913
3881
 
3914
3882
  <code class="ruby"> examples_exist_and_match(</code>
3915
3883
  </li>
3916
3884
 
3917
- <li class="never" data-hits="" data-linenumber="72">
3885
+ <li class="never" data-hits="" data-linenumber="74">
3918
3886
 
3919
3887
 
3920
3888
  <code class="ruby"> /\w/,</code>
3921
3889
  </li>
3922
3890
 
3923
- <li class="never" data-hits="" data-linenumber="73">
3891
+ <li class="never" data-hits="" data-linenumber="75">
3924
3892
 
3925
3893
 
3926
3894
  <code class="ruby"> /\W/,</code>
3927
3895
  </li>
3928
3896
 
3929
- <li class="never" data-hits="" data-linenumber="74">
3897
+ <li class="never" data-hits="" data-linenumber="76">
3930
3898
 
3931
3899
 
3932
3900
  <code class="ruby"> /\s/,</code>
3933
3901
  </li>
3934
3902
 
3935
- <li class="never" data-hits="" data-linenumber="75">
3903
+ <li class="never" data-hits="" data-linenumber="77">
3936
3904
 
3937
3905
 
3938
3906
  <code class="ruby"> /\S/,</code>
3939
3907
  </li>
3940
3908
 
3941
- <li class="never" data-hits="" data-linenumber="76">
3909
+ <li class="never" data-hits="" data-linenumber="78">
3942
3910
 
3943
3911
 
3944
3912
  <code class="ruby"> /\d/,</code>
3945
3913
  </li>
3946
3914
 
3947
- <li class="never" data-hits="" data-linenumber="77">
3915
+ <li class="never" data-hits="" data-linenumber="79">
3948
3916
 
3949
3917
 
3950
3918
  <code class="ruby"> /\D/,</code>
3951
3919
  </li>
3952
3920
 
3953
- <li class="never" data-hits="" data-linenumber="78">
3921
+ <li class="never" data-hits="" data-linenumber="80">
3954
3922
 
3955
3923
 
3956
3924
  <code class="ruby"> /\h/,</code>
3957
3925
  </li>
3958
3926
 
3959
- <li class="never" data-hits="" data-linenumber="79">
3927
+ <li class="never" data-hits="" data-linenumber="81">
3960
3928
 
3961
3929
 
3962
3930
  <code class="ruby"> /\H/,</code>
3963
3931
  </li>
3964
3932
 
3965
- <li class="never" data-hits="" data-linenumber="80">
3933
+ <li class="never" data-hits="" data-linenumber="82">
3966
3934
 
3967
3935
 
3968
3936
  <code class="ruby"> /\t/,</code>
3969
3937
  </li>
3970
3938
 
3971
- <li class="never" data-hits="" data-linenumber="81">
3939
+ <li class="never" data-hits="" data-linenumber="83">
3972
3940
 
3973
3941
 
3974
3942
  <code class="ruby"> /\n/,</code>
3975
3943
  </li>
3976
3944
 
3977
- <li class="never" data-hits="" data-linenumber="82">
3945
+ <li class="never" data-hits="" data-linenumber="84">
3978
3946
 
3979
3947
 
3980
3948
  <code class="ruby"> /\f/,</code>
3981
3949
  </li>
3982
3950
 
3983
- <li class="never" data-hits="" data-linenumber="83">
3951
+ <li class="never" data-hits="" data-linenumber="85">
3984
3952
 
3985
3953
 
3986
3954
  <code class="ruby"> /\a/,</code>
3987
3955
  </li>
3988
3956
 
3989
- <li class="never" data-hits="" data-linenumber="84">
3957
+ <li class="never" data-hits="" data-linenumber="86">
3990
3958
 
3991
3959
 
3992
3960
  <code class="ruby"> /\v/,</code>
3993
3961
  </li>
3994
3962
 
3995
- <li class="never" data-hits="" data-linenumber="85">
3963
+ <li class="never" data-hits="" data-linenumber="87">
3996
3964
 
3997
3965
 
3998
3966
  <code class="ruby"> /\e/</code>
3999
3967
  </li>
4000
3968
 
4001
- <li class="never" data-hits="" data-linenumber="86">
3969
+ <li class="never" data-hits="" data-linenumber="88">
4002
3970
 
4003
3971
 
4004
3972
  <code class="ruby"> )</code>
4005
3973
  </li>
4006
3974
 
4007
- <li class="never" data-hits="" data-linenumber="87">
3975
+ <li class="never" data-hits="" data-linenumber="89">
4008
3976
 
4009
3977
 
4010
3978
  <code class="ruby"> end</code>
4011
3979
  </li>
4012
3980
 
4013
- <li class="never" data-hits="" data-linenumber="88">
3981
+ <li class="never" data-hits="" data-linenumber="90">
4014
3982
 
4015
3983
 
4016
3984
  <code class="ruby"></code>
4017
3985
  </li>
4018
3986
 
4019
- <li class="covered" data-hits="1" data-linenumber="89">
3987
+ <li class="covered" data-hits="1" data-linenumber="91">
4020
3988
  <span class="hits">1</span>
4021
3989
 
4022
3990
  <code class="ruby"> context &quot;for backreferences&quot; do</code>
4023
3991
  </li>
4024
3992
 
4025
- <li class="covered" data-hits="1" data-linenumber="90">
3993
+ <li class="covered" data-hits="1" data-linenumber="92">
4026
3994
  <span class="hits">1</span>
4027
3995
 
4028
3996
  <code class="ruby"> examples_exist_and_match(</code>
4029
3997
  </li>
4030
3998
 
4031
- <li class="never" data-hits="" data-linenumber="91">
3999
+ <li class="never" data-hits="" data-linenumber="93">
4032
4000
 
4033
4001
 
4034
4002
  <code class="ruby"> /(repeat) \1/,</code>
4035
4003
  </li>
4036
4004
 
4037
- <li class="never" data-hits="" data-linenumber="92">
4005
+ <li class="never" data-hits="" data-linenumber="94">
4038
4006
 
4039
4007
 
4040
4008
  <code class="ruby"> /(ref1) (ref2) \1 \2/,</code>
4041
4009
  </li>
4042
4010
 
4043
- <li class="never" data-hits="" data-linenumber="93">
4011
+ <li class="never" data-hits="" data-linenumber="95">
4044
4012
 
4045
4013
 
4046
4014
  <code class="ruby"> /((ref2)ref1) \1 \2/,</code>
4047
4015
  </li>
4048
4016
 
4049
- <li class="never" data-hits="" data-linenumber="94">
4017
+ <li class="never" data-hits="" data-linenumber="96">
4050
4018
 
4051
4019
 
4052
4020
  <code class="ruby"> /((ref1and2)) \1 \2/,</code>
4053
4021
  </li>
4054
4022
 
4055
- <li class="never" data-hits="" data-linenumber="95">
4023
+ <li class="never" data-hits="" data-linenumber="97">
4056
4024
 
4057
4025
 
4058
4026
  <code class="ruby"> /(one)(two)(three)(four)(five)(six)(seven)(eight)(nine)(ten) \10\9\8\7\6\5\4\3\2\1/,</code>
4059
4027
  </li>
4060
4028
 
4061
- <li class="never" data-hits="" data-linenumber="96">
4029
+ <li class="never" data-hits="" data-linenumber="98">
4062
4030
 
4063
4031
 
4064
4032
  <code class="ruby"> /(a?(b?(c?(d?(e?)))))/</code>
4065
4033
  </li>
4066
4034
 
4067
- <li class="never" data-hits="" data-linenumber="97">
4035
+ <li class="never" data-hits="" data-linenumber="99">
4068
4036
 
4069
4037
 
4070
4038
  <code class="ruby"> )</code>
4071
4039
  </li>
4072
4040
 
4073
- <li class="never" data-hits="" data-linenumber="98">
4041
+ <li class="never" data-hits="" data-linenumber="100">
4074
4042
 
4075
4043
 
4076
4044
  <code class="ruby"> end</code>
4077
4045
  </li>
4078
4046
 
4079
- <li class="never" data-hits="" data-linenumber="99">
4047
+ <li class="never" data-hits="" data-linenumber="101">
4080
4048
 
4081
4049
 
4082
4050
  <code class="ruby"></code>
4083
4051
  </li>
4084
4052
 
4085
- <li class="covered" data-hits="1" data-linenumber="100">
4053
+ <li class="covered" data-hits="1" data-linenumber="102">
4086
4054
  <span class="hits">1</span>
4087
4055
 
4088
4056
  <code class="ruby"> context &quot;for complex patterns&quot; do</code>
4089
4057
  </li>
4090
4058
 
4091
- <li class="never" data-hits="" data-linenumber="101">
4059
+ <li class="never" data-hits="" data-linenumber="103">
4092
4060
 
4093
4061
 
4094
4062
  <code class="ruby"> # Longer combinations of the above</code>
4095
4063
  </li>
4096
4064
 
4097
- <li class="covered" data-hits="1" data-linenumber="102">
4065
+ <li class="covered" data-hits="1" data-linenumber="104">
4098
4066
  <span class="hits">1</span>
4099
4067
 
4100
4068
  <code class="ruby"> examples_exist_and_match(</code>
4101
4069
  </li>
4102
4070
 
4103
- <li class="never" data-hits="" data-linenumber="103">
4071
+ <li class="never" data-hits="" data-linenumber="105">
4104
4072
 
4105
4073
 
4106
4074
  <code class="ruby"> /https?:\/\/(www\.)github\.com/,</code>
4107
4075
  </li>
4108
4076
 
4109
- <li class="never" data-hits="" data-linenumber="104">
4077
+ <li class="never" data-hits="" data-linenumber="106">
4110
4078
 
4111
4079
 
4112
4080
  <code class="ruby"> /(I(N(C(E(P(T(I(O(N)))))))))*/,</code>
4113
4081
  </li>
4114
4082
 
4115
- <li class="never" data-hits="" data-linenumber="105">
4083
+ <li class="never" data-hits="" data-linenumber="107">
4116
4084
 
4117
4085
 
4118
4086
  <code class="ruby"> /[\w]{1}/,</code>
4119
4087
  </li>
4120
4088
 
4121
- <li class="never" data-hits="" data-linenumber="106">
4089
+ <li class="never" data-hits="" data-linenumber="108">
4122
4090
 
4123
4091
 
4124
4092
  <code class="ruby"> /((a?b*c+)) \1/,</code>
4125
4093
  </li>
4126
4094
 
4127
- <li class="never" data-hits="" data-linenumber="107">
4095
+ <li class="never" data-hits="" data-linenumber="109">
4128
4096
 
4129
4097
 
4130
4098
  <code class="ruby"> /((a?b*c+)?) \1/,</code>
4131
4099
  </li>
4132
4100
 
4133
- <li class="never" data-hits="" data-linenumber="108">
4101
+ <li class="never" data-hits="" data-linenumber="110">
4134
4102
 
4135
4103
 
4136
4104
  <code class="ruby"> /a|b|c|d/,</code>
4137
4105
  </li>
4138
4106
 
4139
- <li class="never" data-hits="" data-linenumber="109">
4107
+ <li class="never" data-hits="" data-linenumber="111">
4140
4108
 
4141
4109
 
4142
4110
  <code class="ruby"> /a+|b*|c?/</code>
4143
4111
  </li>
4144
4112
 
4145
- <li class="never" data-hits="" data-linenumber="110">
4113
+ <li class="never" data-hits="" data-linenumber="112">
4146
4114
 
4147
4115
 
4148
4116
  <code class="ruby"> )</code>
4149
4117
  </li>
4150
4118
 
4151
- <li class="never" data-hits="" data-linenumber="111">
4119
+ <li class="never" data-hits="" data-linenumber="113">
4152
4120
 
4153
4121
 
4154
4122
  <code class="ruby"> end</code>
4155
4123
  </li>
4156
4124
 
4157
- <li class="never" data-hits="" data-linenumber="112">
4125
+ <li class="never" data-hits="" data-linenumber="114">
4126
+
4127
+
4128
+ <code class="ruby"></code>
4129
+ </li>
4130
+
4131
+ <li class="covered" data-hits="1" data-linenumber="115">
4132
+ <span class="hits">1</span>
4133
+
4134
+ <code class="ruby"> context &quot;for illegal syntax&quot; do</code>
4135
+ </li>
4136
+
4137
+ <li class="covered" data-hits="1" data-linenumber="116">
4138
+ <span class="hits">1</span>
4139
+
4140
+ <code class="ruby"> examples_raise_illegal_syntax_error(</code>
4141
+ </li>
4142
+
4143
+ <li class="never" data-hits="" data-linenumber="117">
4144
+
4145
+
4146
+ <code class="ruby"> /(?=lookahead)/,</code>
4147
+ </li>
4148
+
4149
+ <li class="never" data-hits="" data-linenumber="118">
4150
+
4151
+
4152
+ <code class="ruby"> /(?!neglookahead)/,</code>
4153
+ </li>
4154
+
4155
+ <li class="never" data-hits="" data-linenumber="119">
4156
+
4157
+
4158
+ <code class="ruby"> /(?&lt;=lookbehind)/,</code>
4159
+ </li>
4160
+
4161
+ <li class="never" data-hits="" data-linenumber="120">
4162
+
4163
+
4164
+ <code class="ruby"> /(?&lt;!neglookbehind)/</code>
4165
+ </li>
4166
+
4167
+ <li class="never" data-hits="" data-linenumber="121">
4168
+
4169
+
4170
+ <code class="ruby"> )</code>
4171
+ </li>
4172
+
4173
+ <li class="never" data-hits="" data-linenumber="122">
4174
+
4175
+
4176
+ <code class="ruby"> end</code>
4177
+ </li>
4178
+
4179
+ <li class="never" data-hits="" data-linenumber="123">
4158
4180
 
4159
4181
 
4160
4182
  <code class="ruby"> end</code>
4161
4183
  </li>
4162
4184
 
4163
- <li class="never" data-hits="" data-linenumber="113">
4185
+ <li class="never" data-hits="" data-linenumber="124">
4164
4186
 
4165
4187
 
4166
4188
  <code class="ruby">end</code>