regexp-examples 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  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>