regexp-examples 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 011ff6be938165b678adc0566c41cb539c4ff077
4
- data.tar.gz: 0ec39313bd0b52ac8abf815e99a887d07e7bac5a
3
+ metadata.gz: c2f696b21ebbe5164c14d844c44b671b615f1b4e
4
+ data.tar.gz: 0b5dab06bf4adcb6264db9b779e1ea9a23bcc232
5
5
  SHA512:
6
- metadata.gz: 6343b46ed69437a8eb136d94737d2e59fc4c1f0ead799304fae09cd6494358e4c59bc25b26235793600ad645fae5eab6a76da6baa426c151eb1bfb59b1d5800e
7
- data.tar.gz: 437635215e633f6c126906a157ca9d8274f25c21bcaa3a6d466e602e4fad1e249d8dc9bd2a0bb4dfc1505aef4b723f24460d5953fd128c55ddf6253ab6dc85b9
6
+ metadata.gz: 9735ff7a5a375eecbf8221300338a31277ae47721d55cfbe77d27e7e1c6f28528d26d3f759e9a031bcfaf15d45ccc0032bb76c2969226c51efd15c7d8521754e
7
+ data.tar.gz: bf6e52c73c457b070dc91303e9e023e7703e1b3a795ad5fb8f1a6a8c221942f815da29358a53126b026bb5b5c7fa2ef8c1e6e4e9032b21e57aaf7a426c6b4813
data/README.md CHANGED
@@ -36,6 +36,7 @@ or a huge number of possible matches, such as `/.\w/`, then only a subset of the
36
36
  * Including named groups, e.g. `/(?<name>group)/`
37
37
  * ...And backreferences(!!!), e.g. `/(this|that) \1/` `/(?<name>foo) \k<name>/`
38
38
  * Groups work fine, even if nested! e.g. `/(even(this(works?))) \1 \2 \3/`
39
+ * Control characters, e.g. `/\ca/`, `/\cZ/`, `/\c9/`
39
40
  * **Arbitrarily complex combinations of all the above!**
40
41
 
41
42
  ## Not-Yet-Supported syntax
@@ -48,7 +49,6 @@ I plan to add the following features to the gem, but have not yet got round to i
48
49
  * Escape sequences, e.g. `/\xa1/`
49
50
  * Unicode characters, e.g. `/\u06E9/`
50
51
  * Named properties, e.g. `/\p{L}/` ("Letter"), `/\p{Arabic}/` ("Arabic character"), `/\p{^Ll}/` ("Not a lowercase letter")
51
- * Control characters, e.g. `/\cA/` ... `/\cZ/`
52
52
  * Subexpression calls, e.g. `/(?<name> ... \g<name>* )/` (Note: These could get _really_ ugly to implement, and may even be impossible, so I highly doubt it's worth the effort!)
53
53
 
54
54
  ## Impossible features ("illegal syntax")
@@ -23,8 +23,8 @@
23
23
  null,
24
24
  null,
25
25
  1,
26
- 271,
27
- 271,
26
+ 278,
27
+ 278,
28
28
  164,
29
29
  237,
30
30
  null,
@@ -45,28 +45,28 @@
45
45
  1,
46
46
  1,
47
47
  1,
48
- 58,
49
- 58,
50
- 58,
48
+ 65,
49
+ 65,
50
+ 65,
51
51
  null,
52
52
  null,
53
53
  1,
54
- 105,
55
- 105,
56
- 316,
57
- 312,
58
- 271,
59
- 271,
60
- 271,
54
+ 112,
55
+ 112,
56
+ 323,
57
+ 319,
58
+ 278,
59
+ 278,
60
+ 278,
61
61
  null,
62
- 101,
62
+ 108,
63
63
  null,
64
64
  null,
65
65
  1,
66
66
  null,
67
67
  1,
68
- 316,
69
- 316,
68
+ 323,
69
+ 323,
70
70
  null,
71
71
  45,
72
72
  null,
@@ -78,15 +78,15 @@
78
78
  null,
79
79
  6,
80
80
  null,
81
- 36,
81
+ 42,
82
82
  null,
83
- 173,
83
+ 174,
84
84
  null,
85
- 312,
85
+ 319,
86
86
  null,
87
87
  null,
88
88
  1,
89
- 36,
89
+ 42,
90
90
  null,
91
91
  null,
92
92
  19,
@@ -98,17 +98,20 @@
98
98
  14,
99
99
  null,
100
100
  null,
101
+ 6,
102
+ 6,
103
+ null,
101
104
  null,
102
105
  null,
103
106
  2,
104
107
  null,
105
- 36,
106
- 36,
108
+ 42,
109
+ 42,
107
110
  null,
108
111
  null,
109
112
  1,
110
- 271,
111
- 271,
113
+ 278,
114
+ 278,
112
115
  null,
113
116
  5,
114
117
  null,
@@ -116,11 +119,11 @@
116
119
  null,
117
120
  11,
118
121
  null,
119
- 4,
122
+ 5,
120
123
  null,
121
- 247,
124
+ 253,
122
125
  null,
123
- 271,
126
+ 278,
124
127
  null,
125
128
  null,
126
129
  1,
@@ -184,7 +187,7 @@
184
187
  null,
185
188
  null,
186
189
  1,
187
- 175,
190
+ 182,
188
191
  null,
189
192
  null,
190
193
  1,
@@ -192,6 +195,11 @@
192
195
  null,
193
196
  null,
194
197
  1,
198
+ null,
199
+ 125,
200
+ null,
201
+ null,
202
+ 1,
195
203
  5,
196
204
  5,
197
205
  null,
@@ -207,20 +215,20 @@
207
215
  null,
208
216
  null,
209
217
  1,
210
- 4,
211
- 4,
212
- 4,
213
- 4,
214
- 4,
215
- 4,
218
+ 5,
219
+ 5,
220
+ 5,
221
+ 5,
222
+ 5,
223
+ 5,
216
224
  null,
217
225
  null,
218
226
  1,
219
- 247,
227
+ 253,
220
228
  null,
221
229
  null,
222
230
  1,
223
- 102,
231
+ 123,
224
232
  null,
225
233
  null,
226
234
  null,
@@ -274,11 +282,11 @@
274
282
  1,
275
283
  1,
276
284
  1,
277
- 54,
278
- 148,
285
+ 61,
286
+ 157,
279
287
  28,
280
288
  null,
281
- 148,
289
+ 157,
282
290
  null,
283
291
  null,
284
292
  null,
@@ -298,28 +306,28 @@
298
306
  1,
299
307
  1,
300
308
  1,
301
- 271,
309
+ 278,
302
310
  null,
303
311
  null,
304
312
  1,
305
- 271,
306
- 271,
307
- 271,
308
- 299,
309
- 413,
313
+ 278,
314
+ 278,
315
+ 278,
316
+ 308,
317
+ 422,
310
318
  null,
311
319
  null,
312
- 271,
320
+ 278,
313
321
  null,
314
322
  null,
315
323
  null,
316
324
  1,
317
325
  1,
318
- 247,
326
+ 253,
319
327
  null,
320
328
  null,
321
329
  1,
322
- 247,
330
+ 253,
323
331
  null,
324
332
  null,
325
333
  null,
@@ -355,10 +363,10 @@
355
363
  null,
356
364
  1,
357
365
  1,
358
- 4,
359
- 4,
360
- 4,
361
- 1,
366
+ 5,
367
+ 5,
368
+ 5,
369
+ 2,
362
370
  3,
363
371
  1,
364
372
  null,
@@ -367,7 +375,7 @@
367
375
  null,
368
376
  null,
369
377
  1,
370
- 4,
378
+ 5,
371
379
  null,
372
380
  null,
373
381
  null,
@@ -381,12 +389,12 @@
381
389
  1,
382
390
  1,
383
391
  1,
384
- 1633,
385
- 1633,
386
- 1633,
392
+ 1649,
393
+ 1649,
394
+ 1649,
387
395
  122,
388
396
  null,
389
- 1633,
397
+ 1649,
390
398
  null,
391
399
  null,
392
400
  1,
@@ -396,16 +404,16 @@
396
404
  null,
397
405
  null,
398
406
  1,
399
- 413,
407
+ 422,
400
408
  null,
401
409
  null,
402
410
  null,
403
411
  1,
404
412
  1,
405
- 175,
413
+ 182,
406
414
  null,
407
415
  1,
408
- 175,
416
+ 182,
409
417
  null,
410
418
  null,
411
419
  null,
@@ -524,12 +532,12 @@
524
532
  1,
525
533
  1,
526
534
  1,
527
- 58,
535
+ 65,
528
536
  null,
529
537
  null,
530
- 114,
531
- 54,
532
- 54,
538
+ 121,
539
+ 61,
540
+ 61,
533
541
  null,
534
542
  null,
535
543
  1,
@@ -539,11 +547,11 @@
539
547
  "/home/tom/regexp-examples/spec/regexp-examples_spec.rb": [
540
548
  1,
541
549
  1,
542
- 7,
543
- 54,
544
- 54,
545
- 54,
546
- 202,
550
+ 8,
551
+ 61,
552
+ 61,
553
+ 61,
554
+ 218,
547
555
  null,
548
556
  null,
549
557
  null,
@@ -573,6 +581,7 @@
573
581
  null,
574
582
  null,
575
583
  null,
584
+ null,
576
585
  1,
577
586
  1,
578
587
  null,
@@ -660,9 +669,20 @@
660
669
  null,
661
670
  null,
662
671
  null,
672
+ 1,
673
+ 1,
674
+ null,
675
+ null,
676
+ null,
677
+ null,
678
+ null,
679
+ null,
680
+ null,
681
+ null,
682
+ null,
663
683
  null
664
684
  ]
665
685
  },
666
- "timestamp": 1421316594
686
+ "timestamp": 1421429649
667
687
  }
668
688
  }
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-15T10:09:55+00:00">2015-01-15T10:09:55+00:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2015-01-16T17:34:09+00:00">2015-01-16T17:34:09+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
- 75.39
28
+ 75.85
29
29
  </span>
30
30
  </span> hits/line)
31
31
  </h2>
32
32
  <a name="AllFiles"></a>
33
33
  <div>
34
34
  <b>10</b> files in total.
35
- <b>298</b> relevant lines.
36
- <span class="green"><b>298</b> lines covered</span> and
35
+ <b>304</b> relevant lines.
36
+ <span class="green"><b>304</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">
@@ -67,7 +67,7 @@
67
67
  <td>11</td>
68
68
  <td>11</td>
69
69
  <td>0</td>
70
- <td>44.3</td>
70
+ <td>46.5</td>
71
71
  </tr>
72
72
 
73
73
  <tr>
@@ -97,7 +97,7 @@
97
97
  <td>77</td>
98
98
  <td>77</td>
99
99
  <td>0</td>
100
- <td>146.2</td>
100
+ <td>147.4</td>
101
101
  </tr>
102
102
 
103
103
  <tr>
@@ -107,17 +107,17 @@
107
107
  <td>10</td>
108
108
  <td>10</td>
109
109
  <td>0</td>
110
- <td>165.7</td>
110
+ <td>167.1</td>
111
111
  </tr>
112
112
 
113
113
  <tr>
114
114
  <td class="strong"><a href="#e013406b8d61f5ad15d0a3ad7ea7e8e96b6d7254" class="src_link" title="lib/regexp-examples/parser.rb">lib/regexp-examples/parser.rb</a></td>
115
115
  <td class="green strong">100.0 %</td>
116
- <td>184</td>
117
- <td>104</td>
118
- <td>104</td>
116
+ <td>192</td>
117
+ <td>108</td>
118
+ <td>108</td>
119
119
  <td>0</td>
120
- <td>54.2</td>
120
+ <td>55.2</td>
121
121
  </tr>
122
122
 
123
123
  <tr>
@@ -127,7 +127,7 @@
127
127
  <td>8</td>
128
128
  <td>8</td>
129
129
  <td>0</td>
130
- <td>35.5</td>
130
+ <td>39.0</td>
131
131
  </tr>
132
132
 
133
133
  <tr>
@@ -137,17 +137,17 @@
137
137
  <td>43</td>
138
138
  <td>43</td>
139
139
  <td>0</td>
140
- <td>61.5</td>
140
+ <td>63.1</td>
141
141
  </tr>
142
142
 
143
143
  <tr>
144
144
  <td class="strong"><a href="#73ece59f571550448cda013ec330081f40e82321" class="src_link" title="spec/regexp-examples_spec.rb">spec/regexp-examples_spec.rb</a></td>
145
145
  <td class="green strong">100.0 %</td>
146
- <td>124</td>
147
- <td>28</td>
148
- <td>28</td>
146
+ <td>136</td>
147
+ <td>30</td>
148
+ <td>30</td>
149
149
  <td>0</td>
150
- <td>14.4</td>
150
+ <td>14.8</td>
151
151
  </tr>
152
152
 
153
153
  </tbody>
@@ -228,14 +228,14 @@
228
228
  <code class="ruby"> def substitute_backreferences(full_examples)</code>
229
229
  </li>
230
230
 
231
- <li class="covered" data-hits="54" data-linenumber="4">
232
- <span class="hits">54</span>
231
+ <li class="covered" data-hits="61" data-linenumber="4">
232
+ <span class="hits">61</span>
233
233
 
234
234
  <code class="ruby"> full_examples.map do |full_example|</code>
235
235
  </li>
236
236
 
237
- <li class="covered" data-hits="148" data-linenumber="5">
238
- <span class="hits">148</span>
237
+ <li class="covered" data-hits="157" data-linenumber="5">
238
+ <span class="hits">157</span>
239
239
 
240
240
  <code class="ruby"> while full_example.match(/__(\w+?)__/)</code>
241
241
  </li>
@@ -252,8 +252,8 @@
252
252
  <code class="ruby"> end</code>
253
253
  </li>
254
254
 
255
- <li class="covered" data-hits="148" data-linenumber="8">
256
- <span class="hits">148</span>
255
+ <li class="covered" data-hits="157" data-linenumber="8">
256
+ <span class="hits">157</span>
257
257
 
258
258
  <code class="ruby"> full_example</code>
259
259
  </li>
@@ -714,20 +714,20 @@
714
714
  <code class="ruby"> def initialize(result, group_id = nil, subgroups = [])</code>
715
715
  </li>
716
716
 
717
- <li class="covered" data-hits="1633" data-linenumber="8">
718
- <span class="hits">1633</span>
717
+ <li class="covered" data-hits="1649" data-linenumber="8">
718
+ <span class="hits">1649</span>
719
719
 
720
720
  <code class="ruby"> @group_id = group_id</code>
721
721
  </li>
722
722
 
723
- <li class="covered" data-hits="1633" data-linenumber="9">
724
- <span class="hits">1633</span>
723
+ <li class="covered" data-hits="1649" data-linenumber="9">
724
+ <span class="hits">1649</span>
725
725
 
726
726
  <code class="ruby"> @subgroups = subgroups</code>
727
727
  </li>
728
728
 
729
- <li class="covered" data-hits="1633" data-linenumber="10">
730
- <span class="hits">1633</span>
729
+ <li class="covered" data-hits="1649" data-linenumber="10">
730
+ <span class="hits">1649</span>
731
731
 
732
732
  <code class="ruby"> if result.respond_to?(:group_id)</code>
733
733
  </li>
@@ -744,8 +744,8 @@
744
744
  <code class="ruby"> end</code>
745
745
  </li>
746
746
 
747
- <li class="covered" data-hits="1633" data-linenumber="13">
748
- <span class="hits">1633</span>
747
+ <li class="covered" data-hits="1649" data-linenumber="13">
748
+ <span class="hits">1649</span>
749
749
 
750
750
  <code class="ruby"> super(result)</code>
751
751
  </li>
@@ -804,8 +804,8 @@
804
804
  <code class="ruby"> def *(int)</code>
805
805
  </li>
806
806
 
807
- <li class="covered" data-hits="413" data-linenumber="23">
808
- <span class="hits">413</span>
807
+ <li class="covered" data-hits="422" data-linenumber="23">
808
+ <span class="hits">422</span>
809
809
 
810
810
  <code class="ruby"> self.class.new(super.to_s, group_id, subgroups)</code>
811
811
  </li>
@@ -840,8 +840,8 @@
840
840
  <code class="ruby"> def initialize(char)</code>
841
841
  </li>
842
842
 
843
- <li class="covered" data-hits="175" data-linenumber="29">
844
- <span class="hits">175</span>
843
+ <li class="covered" data-hits="182" data-linenumber="29">
844
+ <span class="hits">182</span>
845
845
 
846
846
  <code class="ruby"> @char = char</code>
847
847
  </li>
@@ -858,8 +858,8 @@
858
858
  <code class="ruby"> def result</code>
859
859
  </li>
860
860
 
861
- <li class="covered" data-hits="175" data-linenumber="32">
862
- <span class="hits">175</span>
861
+ <li class="covered" data-hits="182" data-linenumber="32">
862
+ <span class="hits">182</span>
863
863
 
864
864
  <code class="ruby"> [GroupResult.new(@char)]</code>
865
865
  </li>
@@ -1620,14 +1620,14 @@
1620
1620
  <code class="ruby"> def self.permutations_of_strings(arrays_of_strings, options={})</code>
1621
1621
  </li>
1622
1622
 
1623
- <li class="covered" data-hits="271" data-linenumber="11">
1624
- <span class="hits">271</span>
1623
+ <li class="covered" data-hits="278" data-linenumber="11">
1624
+ <span class="hits">278</span>
1625
1625
 
1626
1626
  <code class="ruby"> first = arrays_of_strings.shift</code>
1627
1627
  </li>
1628
1628
 
1629
- <li class="covered" data-hits="271" data-linenumber="12">
1630
- <span class="hits">271</span>
1629
+ <li class="covered" data-hits="278" data-linenumber="12">
1630
+ <span class="hits">278</span>
1631
1631
 
1632
1632
  <code class="ruby"> return first if arrays_of_strings.empty?</code>
1633
1633
  </li>
@@ -1725,8 +1725,8 @@
1725
1725
  <h3>lib/regexp-examples/parser.rb</h3>
1726
1726
  <h4><span class="green">100.0 %</span> covered</h4>
1727
1727
  <div>
1728
- <b>104</b> relevant lines.
1729
- <span class="green"><b>104</b> lines covered</span> and
1728
+ <b>108</b> relevant lines.
1729
+ <span class="green"><b>108</b> lines covered</span> and
1730
1730
  <span class="red"><b>0</b> lines missed.</span>
1731
1731
  </div>
1732
1732
  </div>
@@ -1758,20 +1758,20 @@
1758
1758
  <code class="ruby"> def initialize(regexp_string)</code>
1759
1759
  </li>
1760
1760
 
1761
- <li class="covered" data-hits="58" data-linenumber="5">
1762
- <span class="hits">58</span>
1761
+ <li class="covered" data-hits="65" data-linenumber="5">
1762
+ <span class="hits">65</span>
1763
1763
 
1764
1764
  <code class="ruby"> @regexp_string = regexp_string</code>
1765
1765
  </li>
1766
1766
 
1767
- <li class="covered" data-hits="58" data-linenumber="6">
1768
- <span class="hits">58</span>
1767
+ <li class="covered" data-hits="65" data-linenumber="6">
1768
+ <span class="hits">65</span>
1769
1769
 
1770
1770
  <code class="ruby"> @num_groups = 0</code>
1771
1771
  </li>
1772
1772
 
1773
- <li class="covered" data-hits="58" data-linenumber="7">
1774
- <span class="hits">58</span>
1773
+ <li class="covered" data-hits="65" data-linenumber="7">
1774
+ <span class="hits">65</span>
1775
1775
 
1776
1776
  <code class="ruby"> @current_position = 0</code>
1777
1777
  </li>
@@ -1794,44 +1794,44 @@
1794
1794
  <code class="ruby"> def parse</code>
1795
1795
  </li>
1796
1796
 
1797
- <li class="covered" data-hits="105" data-linenumber="11">
1798
- <span class="hits">105</span>
1797
+ <li class="covered" data-hits="112" data-linenumber="11">
1798
+ <span class="hits">112</span>
1799
1799
 
1800
1800
  <code class="ruby"> repeaters = []</code>
1801
1801
  </li>
1802
1802
 
1803
- <li class="covered" data-hits="105" data-linenumber="12">
1804
- <span class="hits">105</span>
1803
+ <li class="covered" data-hits="112" data-linenumber="12">
1804
+ <span class="hits">112</span>
1805
1805
 
1806
1806
  <code class="ruby"> while @current_position &lt; regexp_string.length</code>
1807
1807
  </li>
1808
1808
 
1809
- <li class="covered" data-hits="316" data-linenumber="13">
1810
- <span class="hits">316</span>
1809
+ <li class="covered" data-hits="323" data-linenumber="13">
1810
+ <span class="hits">323</span>
1811
1811
 
1812
1812
  <code class="ruby"> group = parse_group(repeaters)</code>
1813
1813
  </li>
1814
1814
 
1815
- <li class="covered" data-hits="312" data-linenumber="14">
1816
- <span class="hits">312</span>
1815
+ <li class="covered" data-hits="319" data-linenumber="14">
1816
+ <span class="hits">319</span>
1817
1817
 
1818
1818
  <code class="ruby"> break if group.is_a? MultiGroupEnd</code>
1819
1819
  </li>
1820
1820
 
1821
- <li class="covered" data-hits="271" data-linenumber="15">
1822
- <span class="hits">271</span>
1821
+ <li class="covered" data-hits="278" data-linenumber="15">
1822
+ <span class="hits">278</span>
1823
1823
 
1824
1824
  <code class="ruby"> repeaters = [] if group.is_a? OrGroup</code>
1825
1825
  </li>
1826
1826
 
1827
- <li class="covered" data-hits="271" data-linenumber="16">
1828
- <span class="hits">271</span>
1827
+ <li class="covered" data-hits="278" data-linenumber="16">
1828
+ <span class="hits">278</span>
1829
1829
 
1830
1830
  <code class="ruby"> @current_position += 1</code>
1831
1831
  </li>
1832
1832
 
1833
- <li class="covered" data-hits="271" data-linenumber="17">
1834
- <span class="hits">271</span>
1833
+ <li class="covered" data-hits="278" data-linenumber="17">
1834
+ <span class="hits">278</span>
1835
1835
 
1836
1836
  <code class="ruby"> repeaters &lt;&lt; parse_repeater(group)</code>
1837
1837
  </li>
@@ -1842,8 +1842,8 @@
1842
1842
  <code class="ruby"> end</code>
1843
1843
  </li>
1844
1844
 
1845
- <li class="covered" data-hits="101" data-linenumber="19">
1846
- <span class="hits">101</span>
1845
+ <li class="covered" data-hits="108" data-linenumber="19">
1846
+ <span class="hits">108</span>
1847
1847
 
1848
1848
  <code class="ruby"> repeaters</code>
1849
1849
  </li>
@@ -1878,14 +1878,14 @@
1878
1878
  <code class="ruby"> def parse_group(repeaters)</code>
1879
1879
  </li>
1880
1880
 
1881
- <li class="covered" data-hits="316" data-linenumber="25">
1882
- <span class="hits">316</span>
1881
+ <li class="covered" data-hits="323" data-linenumber="25">
1882
+ <span class="hits">323</span>
1883
1883
 
1884
1884
  <code class="ruby"> char = regexp_string[@current_position]</code>
1885
1885
  </li>
1886
1886
 
1887
- <li class="covered" data-hits="316" data-linenumber="26">
1888
- <span class="hits">316</span>
1887
+ <li class="covered" data-hits="323" data-linenumber="26">
1888
+ <span class="hits">323</span>
1889
1889
 
1890
1890
  <code class="ruby"> case char</code>
1891
1891
  </li>
@@ -1956,8 +1956,8 @@
1956
1956
  <code class="ruby"> when &#39;\\&#39;</code>
1957
1957
  </li>
1958
1958
 
1959
- <li class="covered" data-hits="36" data-linenumber="38">
1960
- <span class="hits">36</span>
1959
+ <li class="covered" data-hits="42" data-linenumber="38">
1960
+ <span class="hits">42</span>
1961
1961
 
1962
1962
  <code class="ruby"> group = parse_after_backslash_group</code>
1963
1963
  </li>
@@ -1968,8 +1968,8 @@
1968
1968
  <code class="ruby"> else</code>
1969
1969
  </li>
1970
1970
 
1971
- <li class="covered" data-hits="173" data-linenumber="40">
1972
- <span class="hits">173</span>
1971
+ <li class="covered" data-hits="174" data-linenumber="40">
1972
+ <span class="hits">174</span>
1973
1973
 
1974
1974
  <code class="ruby"> group = parse_single_char_group(char)</code>
1975
1975
  </li>
@@ -1980,8 +1980,8 @@
1980
1980
  <code class="ruby"> end</code>
1981
1981
  </li>
1982
1982
 
1983
- <li class="covered" data-hits="312" data-linenumber="42">
1984
- <span class="hits">312</span>
1983
+ <li class="covered" data-hits="319" data-linenumber="42">
1984
+ <span class="hits">319</span>
1985
1985
 
1986
1986
  <code class="ruby"> group</code>
1987
1987
  </li>
@@ -2004,8 +2004,8 @@
2004
2004
  <code class="ruby"> def parse_after_backslash_group</code>
2005
2005
  </li>
2006
2006
 
2007
- <li class="covered" data-hits="36" data-linenumber="46">
2008
- <span class="hits">36</span>
2007
+ <li class="covered" data-hits="42" data-linenumber="46">
2008
+ <span class="hits">42</span>
2009
2009
 
2010
2010
  <code class="ruby"> @current_position += 1</code>
2011
2011
  </li>
@@ -2073,766 +2073,814 @@
2073
2073
  <li class="never" data-hits="" data-linenumber="57">
2074
2074
 
2075
2075
 
2076
+ <code class="ruby"> when rest_of_string =~ /\Ac(.)/ # Control character</code>
2077
+ </li>
2078
+
2079
+ <li class="covered" data-hits="6" data-linenumber="58">
2080
+ <span class="hits">6</span>
2081
+
2082
+ <code class="ruby"> @current_position += 1</code>
2083
+ </li>
2084
+
2085
+ <li class="covered" data-hits="6" data-linenumber="59">
2086
+ <span class="hits">6</span>
2087
+
2088
+ <code class="ruby"> group = parse_single_char_group( parse_control_character($1) )</code>
2089
+ </li>
2090
+
2091
+ <li class="never" data-hits="" data-linenumber="60">
2092
+
2093
+
2076
2094
  <code class="ruby"> # TODO: There are also a bunch of multi-char matches to watch out for:</code>
2077
2095
  </li>
2078
2096
 
2079
- <li class="never" data-hits="" data-linenumber="58">
2097
+ <li class="never" data-hits="" data-linenumber="61">
2080
2098
 
2081
2099
 
2082
2100
  <code class="ruby"> # http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals</code>
2083
2101
  </li>
2084
2102
 
2085
- <li class="never" data-hits="" data-linenumber="59">
2103
+ <li class="never" data-hits="" data-linenumber="62">
2086
2104
 
2087
2105
 
2088
2106
  <code class="ruby"> else</code>
2089
2107
  </li>
2090
2108
 
2091
- <li class="covered" data-hits="2" data-linenumber="60">
2109
+ <li class="covered" data-hits="2" data-linenumber="63">
2092
2110
  <span class="hits">2</span>
2093
2111
 
2094
2112
  <code class="ruby"> group = parse_single_char_group( regexp_string[@current_position] )</code>
2095
2113
  </li>
2096
2114
 
2097
- <li class="never" data-hits="" data-linenumber="61">
2115
+ <li class="never" data-hits="" data-linenumber="64">
2098
2116
 
2099
2117
 
2100
2118
  <code class="ruby"> # TODO: What about cases like \A, \z, \Z ?</code>
2101
2119
  </li>
2102
2120
 
2103
- <li class="covered" data-hits="36" data-linenumber="62">
2104
- <span class="hits">36</span>
2121
+ <li class="covered" data-hits="42" data-linenumber="65">
2122
+ <span class="hits">42</span>
2105
2123
 
2106
2124
  <code class="ruby"> end</code>
2107
2125
  </li>
2108
2126
 
2109
- <li class="covered" data-hits="36" data-linenumber="63">
2110
- <span class="hits">36</span>
2127
+ <li class="covered" data-hits="42" data-linenumber="66">
2128
+ <span class="hits">42</span>
2111
2129
 
2112
2130
  <code class="ruby"> group</code>
2113
2131
  </li>
2114
2132
 
2115
- <li class="never" data-hits="" data-linenumber="64">
2133
+ <li class="never" data-hits="" data-linenumber="67">
2116
2134
 
2117
2135
 
2118
2136
  <code class="ruby"> end</code>
2119
2137
  </li>
2120
2138
 
2121
- <li class="never" data-hits="" data-linenumber="65">
2139
+ <li class="never" data-hits="" data-linenumber="68">
2122
2140
 
2123
2141
 
2124
2142
  <code class="ruby"></code>
2125
2143
  </li>
2126
2144
 
2127
- <li class="covered" data-hits="1" data-linenumber="66">
2145
+ <li class="covered" data-hits="1" data-linenumber="69">
2128
2146
  <span class="hits">1</span>
2129
2147
 
2130
2148
  <code class="ruby"> def parse_repeater(group)</code>
2131
2149
  </li>
2132
2150
 
2133
- <li class="covered" data-hits="271" data-linenumber="67">
2134
- <span class="hits">271</span>
2151
+ <li class="covered" data-hits="278" data-linenumber="70">
2152
+ <span class="hits">278</span>
2135
2153
 
2136
2154
  <code class="ruby"> char = regexp_string[@current_position]</code>
2137
2155
  </li>
2138
2156
 
2139
- <li class="covered" data-hits="271" data-linenumber="68">
2140
- <span class="hits">271</span>
2157
+ <li class="covered" data-hits="278" data-linenumber="71">
2158
+ <span class="hits">278</span>
2141
2159
 
2142
2160
  <code class="ruby"> case char</code>
2143
2161
  </li>
2144
2162
 
2145
- <li class="never" data-hits="" data-linenumber="69">
2163
+ <li class="never" data-hits="" data-linenumber="72">
2146
2164
 
2147
2165
 
2148
2166
  <code class="ruby"> when &#39;*&#39;</code>
2149
2167
  </li>
2150
2168
 
2151
- <li class="covered" data-hits="5" data-linenumber="70">
2169
+ <li class="covered" data-hits="5" data-linenumber="73">
2152
2170
  <span class="hits">5</span>
2153
2171
 
2154
2172
  <code class="ruby"> repeater = parse_star_repeater(group)</code>
2155
2173
  </li>
2156
2174
 
2157
- <li class="never" data-hits="" data-linenumber="71">
2175
+ <li class="never" data-hits="" data-linenumber="74">
2158
2176
 
2159
2177
 
2160
2178
  <code class="ruby"> when &#39;+&#39;</code>
2161
2179
  </li>
2162
2180
 
2163
- <li class="covered" data-hits="4" data-linenumber="72">
2181
+ <li class="covered" data-hits="4" data-linenumber="75">
2164
2182
  <span class="hits">4</span>
2165
2183
 
2166
2184
  <code class="ruby"> repeater = parse_plus_repeater(group)</code>
2167
2185
  </li>
2168
2186
 
2169
- <li class="never" data-hits="" data-linenumber="73">
2187
+ <li class="never" data-hits="" data-linenumber="76">
2170
2188
 
2171
2189
 
2172
2190
  <code class="ruby"> when &#39;?&#39;</code>
2173
2191
  </li>
2174
2192
 
2175
- <li class="covered" data-hits="11" data-linenumber="74">
2193
+ <li class="covered" data-hits="11" data-linenumber="77">
2176
2194
  <span class="hits">11</span>
2177
2195
 
2178
2196
  <code class="ruby"> repeater = parse_question_mark_repeater(group)</code>
2179
2197
  </li>
2180
2198
 
2181
- <li class="never" data-hits="" data-linenumber="75">
2199
+ <li class="never" data-hits="" data-linenumber="78">
2182
2200
 
2183
2201
 
2184
2202
  <code class="ruby"> when &#39;{&#39;</code>
2185
2203
  </li>
2186
2204
 
2187
- <li class="covered" data-hits="4" data-linenumber="76">
2188
- <span class="hits">4</span>
2205
+ <li class="covered" data-hits="5" data-linenumber="79">
2206
+ <span class="hits">5</span>
2189
2207
 
2190
2208
  <code class="ruby"> repeater = parse_range_repeater(group)</code>
2191
2209
  </li>
2192
2210
 
2193
- <li class="never" data-hits="" data-linenumber="77">
2211
+ <li class="never" data-hits="" data-linenumber="80">
2194
2212
 
2195
2213
 
2196
2214
  <code class="ruby"> else</code>
2197
2215
  </li>
2198
2216
 
2199
- <li class="covered" data-hits="247" data-linenumber="78">
2200
- <span class="hits">247</span>
2217
+ <li class="covered" data-hits="253" data-linenumber="81">
2218
+ <span class="hits">253</span>
2201
2219
 
2202
2220
  <code class="ruby"> repeater = parse_one_time_repeater(group)</code>
2203
2221
  </li>
2204
2222
 
2205
- <li class="never" data-hits="" data-linenumber="79">
2223
+ <li class="never" data-hits="" data-linenumber="82">
2206
2224
 
2207
2225
 
2208
2226
  <code class="ruby"> end</code>
2209
2227
  </li>
2210
2228
 
2211
- <li class="covered" data-hits="271" data-linenumber="80">
2212
- <span class="hits">271</span>
2229
+ <li class="covered" data-hits="278" data-linenumber="83">
2230
+ <span class="hits">278</span>
2213
2231
 
2214
2232
  <code class="ruby"> repeater</code>
2215
2233
  </li>
2216
2234
 
2217
- <li class="never" data-hits="" data-linenumber="81">
2235
+ <li class="never" data-hits="" data-linenumber="84">
2218
2236
 
2219
2237
 
2220
2238
  <code class="ruby"> end</code>
2221
2239
  </li>
2222
2240
 
2223
- <li class="never" data-hits="" data-linenumber="82">
2241
+ <li class="never" data-hits="" data-linenumber="85">
2224
2242
 
2225
2243
 
2226
2244
  <code class="ruby"></code>
2227
2245
  </li>
2228
2246
 
2229
- <li class="covered" data-hits="1" data-linenumber="83">
2247
+ <li class="covered" data-hits="1" data-linenumber="86">
2230
2248
  <span class="hits">1</span>
2231
2249
 
2232
2250
  <code class="ruby"> def parse_multi_group</code>
2233
2251
  </li>
2234
2252
 
2235
- <li class="covered" data-hits="45" data-linenumber="84">
2253
+ <li class="covered" data-hits="45" data-linenumber="87">
2236
2254
  <span class="hits">45</span>
2237
2255
 
2238
2256
  <code class="ruby"> @current_position += 1</code>
2239
2257
  </li>
2240
2258
 
2241
- <li class="covered" data-hits="45" data-linenumber="85">
2259
+ <li class="covered" data-hits="45" data-linenumber="88">
2242
2260
  <span class="hits">45</span>
2243
2261
 
2244
2262
  <code class="ruby"> @num_groups += 1</code>
2245
2263
  </li>
2246
2264
 
2247
- <li class="covered" data-hits="45" data-linenumber="86">
2265
+ <li class="covered" data-hits="45" data-linenumber="89">
2248
2266
  <span class="hits">45</span>
2249
2267
 
2250
2268
  <code class="ruby"> group_id = nil # init</code>
2251
2269
  </li>
2252
2270
 
2253
- <li class="covered" data-hits="45" data-linenumber="87">
2271
+ <li class="covered" data-hits="45" data-linenumber="90">
2254
2272
  <span class="hits">45</span>
2255
2273
 
2256
2274
  <code class="ruby"> rest_of_string.match(/\A(\?)?(:|!|=|&lt;(!|=|[^!=][^&gt;]*))?/) do |match|</code>
2257
2275
  </li>
2258
2276
 
2259
- <li class="never" data-hits="" data-linenumber="88">
2277
+ <li class="never" data-hits="" data-linenumber="91">
2260
2278
 
2261
2279
 
2262
2280
  <code class="ruby"> case</code>
2263
2281
  </li>
2264
2282
 
2265
- <li class="never" data-hits="" data-linenumber="89">
2283
+ <li class="never" data-hits="" data-linenumber="92">
2266
2284
 
2267
2285
 
2268
2286
  <code class="ruby"> when match[1].nil? # e.g. /(normal)/</code>
2269
2287
  </li>
2270
2288
 
2271
- <li class="covered" data-hits="38" data-linenumber="90">
2289
+ <li class="covered" data-hits="38" data-linenumber="93">
2272
2290
  <span class="hits">38</span>
2273
2291
 
2274
2292
  <code class="ruby"> group_id = @num_groups.to_s</code>
2275
2293
  </li>
2276
2294
 
2277
- <li class="never" data-hits="" data-linenumber="91">
2295
+ <li class="never" data-hits="" data-linenumber="94">
2278
2296
 
2279
2297
 
2280
2298
  <code class="ruby"> when match[2] == &#39;:&#39; # e.g. /(?:nocapture)/</code>
2281
2299
  </li>
2282
2300
 
2283
- <li class="covered" data-hits="1" data-linenumber="92">
2301
+ <li class="covered" data-hits="1" data-linenumber="95">
2284
2302
  <span class="hits">1</span>
2285
2303
 
2286
2304
  <code class="ruby"> @current_position += 2</code>
2287
2305
  </li>
2288
2306
 
2289
- <li class="covered" data-hits="1" data-linenumber="93">
2307
+ <li class="covered" data-hits="1" data-linenumber="96">
2290
2308
  <span class="hits">1</span>
2291
2309
 
2292
2310
  <code class="ruby"> group_id = nil</code>
2293
2311
  </li>
2294
2312
 
2295
- <li class="never" data-hits="" data-linenumber="94">
2313
+ <li class="never" data-hits="" data-linenumber="97">
2296
2314
 
2297
2315
 
2298
2316
  <code class="ruby"> when %w(! =).include?(match[2]) # e.g. /(?=lookahead)/, /(?!neglookahead)/</code>
2299
2317
  </li>
2300
2318
 
2301
- <li class="covered" data-hits="2" data-linenumber="95">
2319
+ <li class="covered" data-hits="2" data-linenumber="98">
2302
2320
  <span class="hits">2</span>
2303
2321
 
2304
2322
  <code class="ruby"> raise IllegalSyntaxError, &quot;Lookaheads are not regular; cannot generate examples&quot;</code>
2305
2323
  </li>
2306
2324
 
2307
- <li class="never" data-hits="" data-linenumber="96">
2325
+ <li class="never" data-hits="" data-linenumber="99">
2308
2326
 
2309
2327
 
2310
2328
  <code class="ruby"> when %w(! =).include?(match[3]) # e.g. /(?&lt;=lookbehind)/, /(?&lt;!neglookbehind)/</code>
2311
2329
  </li>
2312
2330
 
2313
- <li class="covered" data-hits="2" data-linenumber="97">
2331
+ <li class="covered" data-hits="2" data-linenumber="100">
2314
2332
  <span class="hits">2</span>
2315
2333
 
2316
2334
  <code class="ruby"> raise IllegalSyntaxError, &quot;Lookbehinds are not regular; cannot generate examples&quot;</code>
2317
2335
  </li>
2318
2336
 
2319
- <li class="never" data-hits="" data-linenumber="98">
2337
+ <li class="never" data-hits="" data-linenumber="101">
2320
2338
 
2321
2339
 
2322
2340
  <code class="ruby"> else # e.g. /(?&lt;name&gt;namedgroup)/</code>
2323
2341
  </li>
2324
2342
 
2325
- <li class="covered" data-hits="2" data-linenumber="99">
2343
+ <li class="covered" data-hits="2" data-linenumber="102">
2326
2344
  <span class="hits">2</span>
2327
2345
 
2328
2346
  <code class="ruby"> @current_position += (match[3].length + 3)</code>
2329
2347
  </li>
2330
2348
 
2331
- <li class="covered" data-hits="2" data-linenumber="100">
2349
+ <li class="covered" data-hits="2" data-linenumber="103">
2332
2350
  <span class="hits">2</span>
2333
2351
 
2334
2352
  <code class="ruby"> group_id = match[3]</code>
2335
2353
  </li>
2336
2354
 
2337
- <li class="covered" data-hits="45" data-linenumber="101">
2355
+ <li class="covered" data-hits="45" data-linenumber="104">
2338
2356
  <span class="hits">45</span>
2339
2357
 
2340
2358
  <code class="ruby"> end</code>
2341
2359
  </li>
2342
2360
 
2343
- <li class="never" data-hits="" data-linenumber="102">
2361
+ <li class="never" data-hits="" data-linenumber="105">
2344
2362
 
2345
2363
 
2346
2364
  <code class="ruby"> end</code>
2347
2365
  </li>
2348
2366
 
2349
- <li class="covered" data-hits="41" data-linenumber="103">
2367
+ <li class="covered" data-hits="41" data-linenumber="106">
2350
2368
  <span class="hits">41</span>
2351
2369
 
2352
2370
  <code class="ruby"> groups = parse</code>
2353
2371
  </li>
2354
2372
 
2355
- <li class="covered" data-hits="41" data-linenumber="104">
2373
+ <li class="covered" data-hits="41" data-linenumber="107">
2356
2374
  <span class="hits">41</span>
2357
2375
 
2358
2376
  <code class="ruby"> MultiGroup.new(groups, group_id)</code>
2359
2377
  </li>
2360
2378
 
2361
- <li class="never" data-hits="" data-linenumber="105">
2379
+ <li class="never" data-hits="" data-linenumber="108">
2362
2380
 
2363
2381
 
2364
2382
  <code class="ruby"> end</code>
2365
2383
  </li>
2366
2384
 
2367
- <li class="never" data-hits="" data-linenumber="106">
2385
+ <li class="never" data-hits="" data-linenumber="109">
2368
2386
 
2369
2387
 
2370
2388
  <code class="ruby"></code>
2371
2389
  </li>
2372
2390
 
2373
- <li class="covered" data-hits="1" data-linenumber="107">
2391
+ <li class="covered" data-hits="1" data-linenumber="110">
2374
2392
  <span class="hits">1</span>
2375
2393
 
2376
2394
  <code class="ruby"> def parse_multi_end_group</code>
2377
2395
  </li>
2378
2396
 
2379
- <li class="covered" data-hits="41" data-linenumber="108">
2397
+ <li class="covered" data-hits="41" data-linenumber="111">
2380
2398
  <span class="hits">41</span>
2381
2399
 
2382
2400
  <code class="ruby"> MultiGroupEnd.new</code>
2383
2401
  </li>
2384
2402
 
2385
- <li class="never" data-hits="" data-linenumber="109">
2403
+ <li class="never" data-hits="" data-linenumber="112">
2386
2404
 
2387
2405
 
2388
2406
  <code class="ruby"> end</code>
2389
2407
  </li>
2390
2408
 
2391
- <li class="never" data-hits="" data-linenumber="110">
2409
+ <li class="never" data-hits="" data-linenumber="113">
2392
2410
 
2393
2411
 
2394
2412
  <code class="ruby"></code>
2395
2413
  </li>
2396
2414
 
2397
- <li class="covered" data-hits="1" data-linenumber="111">
2415
+ <li class="covered" data-hits="1" data-linenumber="114">
2398
2416
  <span class="hits">1</span>
2399
2417
 
2400
2418
  <code class="ruby"> def parse_char_group</code>
2401
2419
  </li>
2402
2420
 
2403
- <li class="covered" data-hits="14" data-linenumber="112">
2421
+ <li class="covered" data-hits="14" data-linenumber="115">
2404
2422
  <span class="hits">14</span>
2405
2423
 
2406
2424
  <code class="ruby"> chars = []</code>
2407
2425
  </li>
2408
2426
 
2409
- <li class="covered" data-hits="14" data-linenumber="113">
2427
+ <li class="covered" data-hits="14" data-linenumber="116">
2410
2428
  <span class="hits">14</span>
2411
2429
 
2412
2430
  <code class="ruby"> @current_position += 1</code>
2413
2431
  </li>
2414
2432
 
2415
- <li class="covered" data-hits="14" data-linenumber="114">
2433
+ <li class="covered" data-hits="14" data-linenumber="117">
2416
2434
  <span class="hits">14</span>
2417
2435
 
2418
2436
  <code class="ruby"> if regexp_string[@current_position] == &#39;]&#39;</code>
2419
2437
  </li>
2420
2438
 
2421
- <li class="never" data-hits="" data-linenumber="115">
2439
+ <li class="never" data-hits="" data-linenumber="118">
2422
2440
 
2423
2441
 
2424
2442
  <code class="ruby"> # Beware of the sneaky edge case:</code>
2425
2443
  </li>
2426
2444
 
2427
- <li class="never" data-hits="" data-linenumber="116">
2445
+ <li class="never" data-hits="" data-linenumber="119">
2428
2446
 
2429
2447
 
2430
2448
  <code class="ruby"> # /[]]/ (match &quot;]&quot;)</code>
2431
2449
  </li>
2432
2450
 
2433
- <li class="covered" data-hits="1" data-linenumber="117">
2451
+ <li class="covered" data-hits="1" data-linenumber="120">
2434
2452
  <span class="hits">1</span>
2435
2453
 
2436
2454
  <code class="ruby"> chars &lt;&lt; &#39;]&#39;</code>
2437
2455
  </li>
2438
2456
 
2439
- <li class="covered" data-hits="1" data-linenumber="118">
2457
+ <li class="covered" data-hits="1" data-linenumber="121">
2440
2458
  <span class="hits">1</span>
2441
2459
 
2442
2460
  <code class="ruby"> @current_position += 1</code>
2443
2461
  </li>
2444
2462
 
2445
- <li class="never" data-hits="" data-linenumber="119">
2463
+ <li class="never" data-hits="" data-linenumber="122">
2446
2464
 
2447
2465
 
2448
2466
  <code class="ruby"> end</code>
2449
2467
  </li>
2450
2468
 
2451
- <li class="never" data-hits="" data-linenumber="120">
2469
+ <li class="never" data-hits="" data-linenumber="123">
2452
2470
 
2453
2471
 
2454
2472
  <code class="ruby"> until regexp_string[@current_position] == &#39;]&#39; \</code>
2455
2473
  </li>
2456
2474
 
2457
- <li class="covered" data-hits="14" data-linenumber="121">
2475
+ <li class="covered" data-hits="14" data-linenumber="124">
2458
2476
  <span class="hits">14</span>
2459
2477
 
2460
2478
  <code class="ruby"> &amp;&amp; !regexp_string[0..@current_position-1].match(/[^\\](\\{2})*\\\z/)</code>
2461
2479
  </li>
2462
2480
 
2463
- <li class="never" data-hits="" data-linenumber="122">
2481
+ <li class="never" data-hits="" data-linenumber="125">
2464
2482
 
2465
2483
 
2466
2484
  <code class="ruby"> # Beware of having an ODD number of &quot;\&quot; before the &quot;]&quot;, e.g.</code>
2467
2485
  </li>
2468
2486
 
2469
- <li class="never" data-hits="" data-linenumber="123">
2487
+ <li class="never" data-hits="" data-linenumber="126">
2470
2488
 
2471
2489
 
2472
2490
  <code class="ruby"> # /[\]]/ (match &quot;]&quot;)</code>
2473
2491
  </li>
2474
2492
 
2475
- <li class="never" data-hits="" data-linenumber="124">
2493
+ <li class="never" data-hits="" data-linenumber="127">
2476
2494
 
2477
2495
 
2478
2496
  <code class="ruby"> # /[\\]/ (match &quot;\&quot;)</code>
2479
2497
  </li>
2480
2498
 
2481
- <li class="never" data-hits="" data-linenumber="125">
2499
+ <li class="never" data-hits="" data-linenumber="128">
2482
2500
 
2483
2501
 
2484
2502
  <code class="ruby"> # /[\\\]]/ (match &quot;\&quot; or &quot;]&quot;)</code>
2485
2503
  </li>
2486
2504
 
2487
- <li class="covered" data-hits="41" data-linenumber="126">
2505
+ <li class="covered" data-hits="41" data-linenumber="129">
2488
2506
  <span class="hits">41</span>
2489
2507
 
2490
2508
  <code class="ruby"> chars &lt;&lt; regexp_string[@current_position]</code>
2491
2509
  </li>
2492
2510
 
2493
- <li class="covered" data-hits="41" data-linenumber="127">
2511
+ <li class="covered" data-hits="41" data-linenumber="130">
2494
2512
  <span class="hits">41</span>
2495
2513
 
2496
2514
  <code class="ruby"> @current_position += 1</code>
2497
2515
  </li>
2498
2516
 
2499
- <li class="never" data-hits="" data-linenumber="128">
2517
+ <li class="never" data-hits="" data-linenumber="131">
2500
2518
 
2501
2519
 
2502
2520
  <code class="ruby"> end</code>
2503
2521
  </li>
2504
2522
 
2505
- <li class="covered" data-hits="14" data-linenumber="129">
2523
+ <li class="covered" data-hits="14" data-linenumber="132">
2506
2524
  <span class="hits">14</span>
2507
2525
 
2508
2526
  <code class="ruby"> CharGroup.new(chars)</code>
2509
2527
  </li>
2510
2528
 
2511
- <li class="never" data-hits="" data-linenumber="130">
2529
+ <li class="never" data-hits="" data-linenumber="133">
2512
2530
 
2513
2531
 
2514
2532
  <code class="ruby"> end</code>
2515
2533
  </li>
2516
2534
 
2517
- <li class="never" data-hits="" data-linenumber="131">
2535
+ <li class="never" data-hits="" data-linenumber="134">
2518
2536
 
2519
2537
 
2520
2538
  <code class="ruby"></code>
2521
2539
  </li>
2522
2540
 
2523
- <li class="covered" data-hits="1" data-linenumber="132">
2541
+ <li class="covered" data-hits="1" data-linenumber="135">
2524
2542
  <span class="hits">1</span>
2525
2543
 
2526
2544
  <code class="ruby"> def parse_dot_group</code>
2527
2545
  </li>
2528
2546
 
2529
- <li class="covered" data-hits="1" data-linenumber="133">
2547
+ <li class="covered" data-hits="1" data-linenumber="136">
2530
2548
  <span class="hits">1</span>
2531
2549
 
2532
2550
  <code class="ruby"> DotGroup.new</code>
2533
2551
  </li>
2534
2552
 
2535
- <li class="never" data-hits="" data-linenumber="134">
2553
+ <li class="never" data-hits="" data-linenumber="137">
2536
2554
 
2537
2555
 
2538
2556
  <code class="ruby"> end</code>
2539
2557
  </li>
2540
2558
 
2541
- <li class="never" data-hits="" data-linenumber="135">
2559
+ <li class="never" data-hits="" data-linenumber="138">
2542
2560
 
2543
2561
 
2544
2562
  <code class="ruby"></code>
2545
2563
  </li>
2546
2564
 
2547
- <li class="covered" data-hits="1" data-linenumber="136">
2565
+ <li class="covered" data-hits="1" data-linenumber="139">
2548
2566
  <span class="hits">1</span>
2549
2567
 
2550
2568
  <code class="ruby"> def parse_or_group(left_repeaters)</code>
2551
2569
  </li>
2552
2570
 
2553
- <li class="covered" data-hits="6" data-linenumber="137">
2571
+ <li class="covered" data-hits="6" data-linenumber="140">
2554
2572
  <span class="hits">6</span>
2555
2573
 
2556
2574
  <code class="ruby"> @current_position += 1</code>
2557
2575
  </li>
2558
2576
 
2559
- <li class="covered" data-hits="6" data-linenumber="138">
2577
+ <li class="covered" data-hits="6" data-linenumber="141">
2560
2578
  <span class="hits">6</span>
2561
2579
 
2562
2580
  <code class="ruby"> right_repeaters = parse</code>
2563
2581
  </li>
2564
2582
 
2565
- <li class="covered" data-hits="6" data-linenumber="139">
2583
+ <li class="covered" data-hits="6" data-linenumber="142">
2566
2584
  <span class="hits">6</span>
2567
2585
 
2568
2586
  <code class="ruby"> OrGroup.new(left_repeaters, right_repeaters)</code>
2569
2587
  </li>
2570
2588
 
2571
- <li class="never" data-hits="" data-linenumber="140">
2589
+ <li class="never" data-hits="" data-linenumber="143">
2572
2590
 
2573
2591
 
2574
2592
  <code class="ruby"> end</code>
2575
2593
  </li>
2576
2594
 
2577
- <li class="never" data-hits="" data-linenumber="141">
2595
+ <li class="never" data-hits="" data-linenumber="144">
2578
2596
 
2579
2597
 
2580
2598
  <code class="ruby"></code>
2581
2599
  </li>
2582
2600
 
2583
- <li class="never" data-hits="" data-linenumber="142">
2601
+ <li class="never" data-hits="" data-linenumber="145">
2584
2602
 
2585
2603
 
2586
2604
  <code class="ruby"></code>
2587
2605
  </li>
2588
2606
 
2589
- <li class="covered" data-hits="1" data-linenumber="143">
2607
+ <li class="covered" data-hits="1" data-linenumber="146">
2590
2608
  <span class="hits">1</span>
2591
2609
 
2592
2610
  <code class="ruby"> def parse_single_char_group(char)</code>
2593
2611
  </li>
2594
2612
 
2595
- <li class="covered" data-hits="175" data-linenumber="144">
2596
- <span class="hits">175</span>
2613
+ <li class="covered" data-hits="182" data-linenumber="147">
2614
+ <span class="hits">182</span>
2597
2615
 
2598
2616
  <code class="ruby"> SingleCharGroup.new(char)</code>
2599
2617
  </li>
2600
2618
 
2601
- <li class="never" data-hits="" data-linenumber="145">
2619
+ <li class="never" data-hits="" data-linenumber="148">
2602
2620
 
2603
2621
 
2604
2622
  <code class="ruby"> end</code>
2605
2623
  </li>
2606
2624
 
2607
- <li class="never" data-hits="" data-linenumber="146">
2625
+ <li class="never" data-hits="" data-linenumber="149">
2608
2626
 
2609
2627
 
2610
2628
  <code class="ruby"></code>
2611
2629
  </li>
2612
2630
 
2613
- <li class="covered" data-hits="1" data-linenumber="147">
2631
+ <li class="covered" data-hits="1" data-linenumber="150">
2614
2632
  <span class="hits">1</span>
2615
2633
 
2616
2634
  <code class="ruby"> def parse_backreference_group(match)</code>
2617
2635
  </li>
2618
2636
 
2619
- <li class="covered" data-hits="20" data-linenumber="148">
2637
+ <li class="covered" data-hits="20" data-linenumber="151">
2620
2638
  <span class="hits">20</span>
2621
2639
 
2622
2640
  <code class="ruby"> BackReferenceGroup.new(match)</code>
2623
2641
  </li>
2624
2642
 
2625
- <li class="never" data-hits="" data-linenumber="149">
2643
+ <li class="never" data-hits="" data-linenumber="152">
2626
2644
 
2627
2645
 
2628
2646
  <code class="ruby"> end</code>
2629
2647
  </li>
2630
2648
 
2631
- <li class="never" data-hits="" data-linenumber="150">
2649
+ <li class="never" data-hits="" data-linenumber="153">
2632
2650
 
2633
2651
 
2634
2652
  <code class="ruby"></code>
2635
2653
  </li>
2636
2654
 
2637
- <li class="covered" data-hits="1" data-linenumber="151">
2655
+ <li class="covered" data-hits="1" data-linenumber="154">
2656
+ <span class="hits">1</span>
2657
+
2658
+ <code class="ruby"> def parse_control_character(char)</code>
2659
+ </li>
2660
+
2661
+ <li class="never" data-hits="" data-linenumber="155">
2662
+
2663
+
2664
+ <code class="ruby"> # TODO: Is there a better way of doing this? I.e. not just brute-force</code>
2665
+ </li>
2666
+
2667
+ <li class="covered" data-hits="125" data-linenumber="156">
2668
+ <span class="hits">125</span>
2669
+
2670
+ <code class="ruby"> (0..255).detect { |x| x.chr =~ Regexp.new(&quot;\\c#{char}&quot;) }.chr</code>
2671
+ </li>
2672
+
2673
+ <li class="never" data-hits="" data-linenumber="157">
2674
+
2675
+
2676
+ <code class="ruby"> end</code>
2677
+ </li>
2678
+
2679
+ <li class="never" data-hits="" data-linenumber="158">
2680
+
2681
+
2682
+ <code class="ruby"></code>
2683
+ </li>
2684
+
2685
+ <li class="covered" data-hits="1" data-linenumber="159">
2638
2686
  <span class="hits">1</span>
2639
2687
 
2640
2688
  <code class="ruby"> def parse_star_repeater(group)</code>
2641
2689
  </li>
2642
2690
 
2643
- <li class="covered" data-hits="5" data-linenumber="152">
2691
+ <li class="covered" data-hits="5" data-linenumber="160">
2644
2692
  <span class="hits">5</span>
2645
2693
 
2646
2694
  <code class="ruby"> @current_position += 1</code>
2647
2695
  </li>
2648
2696
 
2649
- <li class="covered" data-hits="5" data-linenumber="153">
2697
+ <li class="covered" data-hits="5" data-linenumber="161">
2650
2698
  <span class="hits">5</span>
2651
2699
 
2652
2700
  <code class="ruby"> StarRepeater.new(group)</code>
2653
2701
  </li>
2654
2702
 
2655
- <li class="never" data-hits="" data-linenumber="154">
2703
+ <li class="never" data-hits="" data-linenumber="162">
2656
2704
 
2657
2705
 
2658
2706
  <code class="ruby"> end</code>
2659
2707
  </li>
2660
2708
 
2661
- <li class="never" data-hits="" data-linenumber="155">
2709
+ <li class="never" data-hits="" data-linenumber="163">
2662
2710
 
2663
2711
 
2664
2712
  <code class="ruby"></code>
2665
2713
  </li>
2666
2714
 
2667
- <li class="covered" data-hits="1" data-linenumber="156">
2715
+ <li class="covered" data-hits="1" data-linenumber="164">
2668
2716
  <span class="hits">1</span>
2669
2717
 
2670
2718
  <code class="ruby"> def parse_plus_repeater(group)</code>
2671
2719
  </li>
2672
2720
 
2673
- <li class="covered" data-hits="4" data-linenumber="157">
2721
+ <li class="covered" data-hits="4" data-linenumber="165">
2674
2722
  <span class="hits">4</span>
2675
2723
 
2676
2724
  <code class="ruby"> @current_position += 1</code>
2677
2725
  </li>
2678
2726
 
2679
- <li class="covered" data-hits="4" data-linenumber="158">
2727
+ <li class="covered" data-hits="4" data-linenumber="166">
2680
2728
  <span class="hits">4</span>
2681
2729
 
2682
2730
  <code class="ruby"> PlusRepeater.new(group)</code>
2683
2731
  </li>
2684
2732
 
2685
- <li class="never" data-hits="" data-linenumber="159">
2733
+ <li class="never" data-hits="" data-linenumber="167">
2686
2734
 
2687
2735
 
2688
2736
  <code class="ruby"> end</code>
2689
2737
  </li>
2690
2738
 
2691
- <li class="never" data-hits="" data-linenumber="160">
2739
+ <li class="never" data-hits="" data-linenumber="168">
2692
2740
 
2693
2741
 
2694
2742
  <code class="ruby"></code>
2695
2743
  </li>
2696
2744
 
2697
- <li class="covered" data-hits="1" data-linenumber="161">
2745
+ <li class="covered" data-hits="1" data-linenumber="169">
2698
2746
  <span class="hits">1</span>
2699
2747
 
2700
2748
  <code class="ruby"> def parse_question_mark_repeater(group)</code>
2701
2749
  </li>
2702
2750
 
2703
- <li class="covered" data-hits="11" data-linenumber="162">
2751
+ <li class="covered" data-hits="11" data-linenumber="170">
2704
2752
  <span class="hits">11</span>
2705
2753
 
2706
2754
  <code class="ruby"> @current_position += 1</code>
2707
2755
  </li>
2708
2756
 
2709
- <li class="covered" data-hits="11" data-linenumber="163">
2757
+ <li class="covered" data-hits="11" data-linenumber="171">
2710
2758
  <span class="hits">11</span>
2711
2759
 
2712
2760
  <code class="ruby"> QuestionMarkRepeater.new(group)</code>
2713
2761
  </li>
2714
2762
 
2715
- <li class="never" data-hits="" data-linenumber="164">
2763
+ <li class="never" data-hits="" data-linenumber="172">
2716
2764
 
2717
2765
 
2718
2766
  <code class="ruby"> end</code>
2719
2767
  </li>
2720
2768
 
2721
- <li class="never" data-hits="" data-linenumber="165">
2769
+ <li class="never" data-hits="" data-linenumber="173">
2722
2770
 
2723
2771
 
2724
2772
  <code class="ruby"></code>
2725
2773
  </li>
2726
2774
 
2727
- <li class="covered" data-hits="1" data-linenumber="166">
2775
+ <li class="covered" data-hits="1" data-linenumber="174">
2728
2776
  <span class="hits">1</span>
2729
2777
 
2730
2778
  <code class="ruby"> def parse_range_repeater(group)</code>
2731
2779
  </li>
2732
2780
 
2733
- <li class="covered" data-hits="4" data-linenumber="167">
2734
- <span class="hits">4</span>
2781
+ <li class="covered" data-hits="5" data-linenumber="175">
2782
+ <span class="hits">5</span>
2735
2783
 
2736
- <code class="ruby"> match = rest_of_string.match(/\A\{(\d+)(,)?(\d+)?\}/)</code>
2784
+ <code class="ruby"> match = rest_of_string.match(/\A\{(\d+)?(,)?(\d+)?\}/)</code>
2737
2785
  </li>
2738
2786
 
2739
- <li class="covered" data-hits="4" data-linenumber="168">
2740
- <span class="hits">4</span>
2787
+ <li class="covered" data-hits="5" data-linenumber="176">
2788
+ <span class="hits">5</span>
2741
2789
 
2742
2790
  <code class="ruby"> @current_position += match[0].size</code>
2743
2791
  </li>
2744
2792
 
2745
- <li class="covered" data-hits="4" data-linenumber="169">
2746
- <span class="hits">4</span>
2793
+ <li class="covered" data-hits="5" data-linenumber="177">
2794
+ <span class="hits">5</span>
2747
2795
 
2748
2796
  <code class="ruby"> min = match[1].to_i if match[1]</code>
2749
2797
  </li>
2750
2798
 
2751
- <li class="covered" data-hits="4" data-linenumber="170">
2752
- <span class="hits">4</span>
2799
+ <li class="covered" data-hits="5" data-linenumber="178">
2800
+ <span class="hits">5</span>
2753
2801
 
2754
2802
  <code class="ruby"> has_comma = !match[2].nil?</code>
2755
2803
  </li>
2756
2804
 
2757
- <li class="covered" data-hits="4" data-linenumber="171">
2758
- <span class="hits">4</span>
2805
+ <li class="covered" data-hits="5" data-linenumber="179">
2806
+ <span class="hits">5</span>
2759
2807
 
2760
2808
  <code class="ruby"> max = match[3].to_i if match[3]</code>
2761
2809
  </li>
2762
2810
 
2763
- <li class="covered" data-hits="4" data-linenumber="172">
2764
- <span class="hits">4</span>
2811
+ <li class="covered" data-hits="5" data-linenumber="180">
2812
+ <span class="hits">5</span>
2765
2813
 
2766
2814
  <code class="ruby"> RangeRepeater.new(group, min, has_comma, max)</code>
2767
2815
  </li>
2768
2816
 
2769
- <li class="never" data-hits="" data-linenumber="173">
2817
+ <li class="never" data-hits="" data-linenumber="181">
2770
2818
 
2771
2819
 
2772
2820
  <code class="ruby"> end</code>
2773
2821
  </li>
2774
2822
 
2775
- <li class="never" data-hits="" data-linenumber="174">
2823
+ <li class="never" data-hits="" data-linenumber="182">
2776
2824
 
2777
2825
 
2778
2826
  <code class="ruby"></code>
2779
2827
  </li>
2780
2828
 
2781
- <li class="covered" data-hits="1" data-linenumber="175">
2829
+ <li class="covered" data-hits="1" data-linenumber="183">
2782
2830
  <span class="hits">1</span>
2783
2831
 
2784
2832
  <code class="ruby"> def parse_one_time_repeater(group)</code>
2785
2833
  </li>
2786
2834
 
2787
- <li class="covered" data-hits="247" data-linenumber="176">
2788
- <span class="hits">247</span>
2835
+ <li class="covered" data-hits="253" data-linenumber="184">
2836
+ <span class="hits">253</span>
2789
2837
 
2790
2838
  <code class="ruby"> OneTimeRepeater.new(group)</code>
2791
2839
  </li>
2792
2840
 
2793
- <li class="never" data-hits="" data-linenumber="177">
2841
+ <li class="never" data-hits="" data-linenumber="185">
2794
2842
 
2795
2843
 
2796
2844
  <code class="ruby"> end</code>
2797
2845
  </li>
2798
2846
 
2799
- <li class="never" data-hits="" data-linenumber="178">
2847
+ <li class="never" data-hits="" data-linenumber="186">
2800
2848
 
2801
2849
 
2802
2850
  <code class="ruby"></code>
2803
2851
  </li>
2804
2852
 
2805
- <li class="covered" data-hits="1" data-linenumber="179">
2853
+ <li class="covered" data-hits="1" data-linenumber="187">
2806
2854
  <span class="hits">1</span>
2807
2855
 
2808
2856
  <code class="ruby"> def rest_of_string</code>
2809
2857
  </li>
2810
2858
 
2811
- <li class="covered" data-hits="102" data-linenumber="180">
2812
- <span class="hits">102</span>
2859
+ <li class="covered" data-hits="123" data-linenumber="188">
2860
+ <span class="hits">123</span>
2813
2861
 
2814
2862
  <code class="ruby"> regexp_string[@current_position..-1]</code>
2815
2863
  </li>
2816
2864
 
2817
- <li class="never" data-hits="" data-linenumber="181">
2865
+ <li class="never" data-hits="" data-linenumber="189">
2818
2866
 
2819
2867
 
2820
2868
  <code class="ruby"> end</code>
2821
2869
  </li>
2822
2870
 
2823
- <li class="never" data-hits="" data-linenumber="182">
2871
+ <li class="never" data-hits="" data-linenumber="190">
2824
2872
 
2825
2873
 
2826
2874
  <code class="ruby"> end</code>
2827
2875
  </li>
2828
2876
 
2829
- <li class="never" data-hits="" data-linenumber="183">
2877
+ <li class="never" data-hits="" data-linenumber="191">
2830
2878
 
2831
2879
 
2832
2880
  <code class="ruby">end</code>
2833
2881
  </li>
2834
2882
 
2835
- <li class="never" data-hits="" data-linenumber="184">
2883
+ <li class="never" data-hits="" data-linenumber="192">
2836
2884
 
2837
2885
 
2838
2886
  <code class="ruby"></code>
@@ -2874,8 +2922,8 @@
2874
2922
  <code class="ruby"> def examples</code>
2875
2923
  </li>
2876
2924
 
2877
- <li class="covered" data-hits="58" data-linenumber="4">
2878
- <span class="hits">58</span>
2925
+ <li class="covered" data-hits="65" data-linenumber="4">
2926
+ <span class="hits">65</span>
2879
2927
 
2880
2928
  <code class="ruby"> partial_examples =</code>
2881
2929
  </li>
@@ -2892,20 +2940,20 @@
2892
2940
  <code class="ruby"> .parse</code>
2893
2941
  </li>
2894
2942
 
2895
- <li class="covered" data-hits="114" data-linenumber="7">
2896
- <span class="hits">114</span>
2943
+ <li class="covered" data-hits="121" data-linenumber="7">
2944
+ <span class="hits">121</span>
2897
2945
 
2898
2946
  <code class="ruby"> .map {|repeater| repeater.result}</code>
2899
2947
  </li>
2900
2948
 
2901
- <li class="covered" data-hits="54" data-linenumber="8">
2902
- <span class="hits">54</span>
2949
+ <li class="covered" data-hits="61" data-linenumber="8">
2950
+ <span class="hits">61</span>
2903
2951
 
2904
2952
  <code class="ruby"> full_examples = RegexpExamples::permutations_of_strings(partial_examples)</code>
2905
2953
  </li>
2906
2954
 
2907
- <li class="covered" data-hits="54" data-linenumber="9">
2908
- <span class="hits">54</span>
2955
+ <li class="covered" data-hits="61" data-linenumber="9">
2956
+ <span class="hits">61</span>
2909
2957
 
2910
2958
  <code class="ruby"> RegexpExamples::BackReferenceReplacer.new.substitute_backreferences(full_examples)</code>
2911
2959
  </li>
@@ -2982,8 +3030,8 @@
2982
3030
  <code class="ruby"> def initialize(group)</code>
2983
3031
  </li>
2984
3032
 
2985
- <li class="covered" data-hits="271" data-linenumber="5">
2986
- <span class="hits">271</span>
3033
+ <li class="covered" data-hits="278" data-linenumber="5">
3034
+ <span class="hits">278</span>
2987
3035
 
2988
3036
  <code class="ruby"> @group = group</code>
2989
3037
  </li>
@@ -3006,32 +3054,32 @@
3006
3054
  <code class="ruby"> def result(min_repeats, max_repeats)</code>
3007
3055
  </li>
3008
3056
 
3009
- <li class="covered" data-hits="271" data-linenumber="9">
3010
- <span class="hits">271</span>
3057
+ <li class="covered" data-hits="278" data-linenumber="9">
3058
+ <span class="hits">278</span>
3011
3059
 
3012
3060
  <code class="ruby"> group_results = @group.result[0 .. MaxGroupResults-1]</code>
3013
3061
  </li>
3014
3062
 
3015
- <li class="covered" data-hits="271" data-linenumber="10">
3016
- <span class="hits">271</span>
3063
+ <li class="covered" data-hits="278" data-linenumber="10">
3064
+ <span class="hits">278</span>
3017
3065
 
3018
3066
  <code class="ruby"> results = []</code>
3019
3067
  </li>
3020
3068
 
3021
- <li class="covered" data-hits="271" data-linenumber="11">
3022
- <span class="hits">271</span>
3069
+ <li class="covered" data-hits="278" data-linenumber="11">
3070
+ <span class="hits">278</span>
3023
3071
 
3024
3072
  <code class="ruby"> min_repeats.upto(max_repeats) do |repeats|</code>
3025
3073
  </li>
3026
3074
 
3027
- <li class="covered" data-hits="299" data-linenumber="12">
3028
- <span class="hits">299</span>
3075
+ <li class="covered" data-hits="308" data-linenumber="12">
3076
+ <span class="hits">308</span>
3029
3077
 
3030
3078
  <code class="ruby"> group_results.each do |group_result|</code>
3031
3079
  </li>
3032
3080
 
3033
- <li class="covered" data-hits="413" data-linenumber="13">
3034
- <span class="hits">413</span>
3081
+ <li class="covered" data-hits="422" data-linenumber="13">
3082
+ <span class="hits">422</span>
3035
3083
 
3036
3084
  <code class="ruby"> results &lt;&lt; group_result * repeats</code>
3037
3085
  </li>
@@ -3048,8 +3096,8 @@
3048
3096
  <code class="ruby"> end</code>
3049
3097
  </li>
3050
3098
 
3051
- <li class="covered" data-hits="271" data-linenumber="16">
3052
- <span class="hits">271</span>
3099
+ <li class="covered" data-hits="278" data-linenumber="16">
3100
+ <span class="hits">278</span>
3053
3101
 
3054
3102
  <code class="ruby"> results.uniq</code>
3055
3103
  </li>
@@ -3084,8 +3132,8 @@
3084
3132
  <code class="ruby"> def initialize(group)</code>
3085
3133
  </li>
3086
3134
 
3087
- <li class="covered" data-hits="247" data-linenumber="22">
3088
- <span class="hits">247</span>
3135
+ <li class="covered" data-hits="253" data-linenumber="22">
3136
+ <span class="hits">253</span>
3089
3137
 
3090
3138
  <code class="ruby"> super</code>
3091
3139
  </li>
@@ -3108,8 +3156,8 @@
3108
3156
  <code class="ruby"> def result</code>
3109
3157
  </li>
3110
3158
 
3111
- <li class="covered" data-hits="247" data-linenumber="26">
3112
- <span class="hits">247</span>
3159
+ <li class="covered" data-hits="253" data-linenumber="26">
3160
+ <span class="hits">253</span>
3113
3161
 
3114
3162
  <code class="ruby"> super(1, 1)</code>
3115
3163
  </li>
@@ -3324,26 +3372,26 @@
3324
3372
  <code class="ruby"> def initialize(group, min, has_comma, max)</code>
3325
3373
  </li>
3326
3374
 
3327
- <li class="covered" data-hits="4" data-linenumber="62">
3328
- <span class="hits">4</span>
3375
+ <li class="covered" data-hits="5" data-linenumber="62">
3376
+ <span class="hits">5</span>
3329
3377
 
3330
3378
  <code class="ruby"> super(group)</code>
3331
3379
  </li>
3332
3380
 
3333
- <li class="covered" data-hits="4" data-linenumber="63">
3334
- <span class="hits">4</span>
3381
+ <li class="covered" data-hits="5" data-linenumber="63">
3382
+ <span class="hits">5</span>
3335
3383
 
3336
- <code class="ruby"> @min = min</code>
3384
+ <code class="ruby"> @min = min || 0</code>
3337
3385
  </li>
3338
3386
 
3339
- <li class="covered" data-hits="4" data-linenumber="64">
3340
- <span class="hits">4</span>
3387
+ <li class="covered" data-hits="5" data-linenumber="64">
3388
+ <span class="hits">5</span>
3341
3389
 
3342
3390
  <code class="ruby"> if max</code>
3343
3391
  </li>
3344
3392
 
3345
- <li class="covered" data-hits="1" data-linenumber="65">
3346
- <span class="hits">1</span>
3393
+ <li class="covered" data-hits="2" data-linenumber="65">
3394
+ <span class="hits">2</span>
3347
3395
 
3348
3396
  <code class="ruby"> @max = max</code>
3349
3397
  </li>
@@ -3396,8 +3444,8 @@
3396
3444
  <code class="ruby"> def result</code>
3397
3445
  </li>
3398
3446
 
3399
- <li class="covered" data-hits="4" data-linenumber="74">
3400
- <span class="hits">4</span>
3447
+ <li class="covered" data-hits="5" data-linenumber="74">
3448
+ <span class="hits">5</span>
3401
3449
 
3402
3450
  <code class="ruby"> super(@min, @max)</code>
3403
3451
  </li>
@@ -3435,8 +3483,8 @@
3435
3483
  <h3>spec/regexp-examples_spec.rb</h3>
3436
3484
  <h4><span class="green">100.0 %</span> covered</h4>
3437
3485
  <div>
3438
- <b>28</b> relevant lines.
3439
- <span class="green"><b>28</b> lines covered</span> and
3486
+ <b>30</b> relevant lines.
3487
+ <span class="green"><b>30</b> lines covered</span> and
3440
3488
  <span class="red"><b>0</b> lines missed.</span>
3441
3489
  </div>
3442
3490
  </div>
@@ -3456,32 +3504,32 @@
3456
3504
  <code class="ruby"> def self.examples_exist_and_match(*regexps)</code>
3457
3505
  </li>
3458
3506
 
3459
- <li class="covered" data-hits="7" data-linenumber="3">
3460
- <span class="hits">7</span>
3507
+ <li class="covered" data-hits="8" data-linenumber="3">
3508
+ <span class="hits">8</span>
3461
3509
 
3462
3510
  <code class="ruby"> regexps.each do |regexp|</code>
3463
3511
  </li>
3464
3512
 
3465
- <li class="covered" data-hits="54" data-linenumber="4">
3466
- <span class="hits">54</span>
3513
+ <li class="covered" data-hits="61" data-linenumber="4">
3514
+ <span class="hits">61</span>
3467
3515
 
3468
3516
  <code class="ruby"> it do</code>
3469
3517
  </li>
3470
3518
 
3471
- <li class="covered" data-hits="54" data-linenumber="5">
3472
- <span class="hits">54</span>
3519
+ <li class="covered" data-hits="61" data-linenumber="5">
3520
+ <span class="hits">61</span>
3473
3521
 
3474
3522
  <code class="ruby"> regexp_examples = regexp.examples</code>
3475
3523
  </li>
3476
3524
 
3477
- <li class="covered" data-hits="54" data-linenumber="6">
3478
- <span class="hits">54</span>
3525
+ <li class="covered" data-hits="61" data-linenumber="6">
3526
+ <span class="hits">61</span>
3479
3527
 
3480
3528
  <code class="ruby"> expect(regexp_examples).not_to be_empty</code>
3481
3529
  </li>
3482
3530
 
3483
- <li class="covered" data-hits="202" data-linenumber="7">
3484
- <span class="hits">202</span>
3531
+ <li class="covered" data-hits="218" data-linenumber="7">
3532
+ <span class="hits">218</span>
3485
3533
 
3486
3534
  <code class="ruby"> regexp_examples.each { |example| expect(example).to match(/\A(?:#{regexp.source})\z/) }</code>
3487
3535
  </li>
@@ -3639,550 +3687,622 @@
3639
3687
  <li class="never" data-hits="" data-linenumber="33">
3640
3688
 
3641
3689
 
3642
- <code class="ruby"> /a{1,2}/</code>
3690
+ <code class="ruby"> /a{,2}/,</code>
3643
3691
  </li>
3644
3692
 
3645
3693
  <li class="never" data-hits="" data-linenumber="34">
3646
3694
 
3647
3695
 
3648
- <code class="ruby"> )</code>
3696
+ <code class="ruby"> /a{1,2}/</code>
3649
3697
  </li>
3650
3698
 
3651
3699
  <li class="never" data-hits="" data-linenumber="35">
3652
3700
 
3653
3701
 
3654
- <code class="ruby"> end</code>
3702
+ <code class="ruby"> )</code>
3655
3703
  </li>
3656
3704
 
3657
3705
  <li class="never" data-hits="" data-linenumber="36">
3658
3706
 
3659
3707
 
3708
+ <code class="ruby"> end</code>
3709
+ </li>
3710
+
3711
+ <li class="never" data-hits="" data-linenumber="37">
3712
+
3713
+
3660
3714
  <code class="ruby"></code>
3661
3715
  </li>
3662
3716
 
3663
- <li class="covered" data-hits="1" data-linenumber="37">
3717
+ <li class="covered" data-hits="1" data-linenumber="38">
3664
3718
  <span class="hits">1</span>
3665
3719
 
3666
3720
  <code class="ruby"> context &quot;for basic groups&quot; do</code>
3667
3721
  </li>
3668
3722
 
3669
- <li class="covered" data-hits="1" data-linenumber="38">
3723
+ <li class="covered" data-hits="1" data-linenumber="39">
3670
3724
  <span class="hits">1</span>
3671
3725
 
3672
3726
  <code class="ruby"> examples_exist_and_match(</code>
3673
3727
  </li>
3674
3728
 
3675
- <li class="never" data-hits="" data-linenumber="39">
3729
+ <li class="never" data-hits="" data-linenumber="40">
3676
3730
 
3677
3731
 
3678
3732
  <code class="ruby"> /[a]/,</code>
3679
3733
  </li>
3680
3734
 
3681
- <li class="never" data-hits="" data-linenumber="40">
3735
+ <li class="never" data-hits="" data-linenumber="41">
3682
3736
 
3683
3737
 
3684
3738
  <code class="ruby"> /(a)/,</code>
3685
3739
  </li>
3686
3740
 
3687
- <li class="never" data-hits="" data-linenumber="41">
3741
+ <li class="never" data-hits="" data-linenumber="42">
3688
3742
 
3689
3743
 
3690
3744
  <code class="ruby"> /a|b/,</code>
3691
3745
  </li>
3692
3746
 
3693
- <li class="never" data-hits="" data-linenumber="42">
3747
+ <li class="never" data-hits="" data-linenumber="43">
3694
3748
 
3695
3749
 
3696
3750
  <code class="ruby"> /./</code>
3697
3751
  </li>
3698
3752
 
3699
- <li class="never" data-hits="" data-linenumber="43">
3753
+ <li class="never" data-hits="" data-linenumber="44">
3700
3754
 
3701
3755
 
3702
3756
  <code class="ruby"> )</code>
3703
3757
  </li>
3704
3758
 
3705
- <li class="never" data-hits="" data-linenumber="44">
3759
+ <li class="never" data-hits="" data-linenumber="45">
3706
3760
 
3707
3761
 
3708
3762
  <code class="ruby"> end</code>
3709
3763
  </li>
3710
3764
 
3711
- <li class="never" data-hits="" data-linenumber="45">
3765
+ <li class="never" data-hits="" data-linenumber="46">
3712
3766
 
3713
3767
 
3714
3768
  <code class="ruby"></code>
3715
3769
  </li>
3716
3770
 
3717
- <li class="covered" data-hits="1" data-linenumber="46">
3771
+ <li class="covered" data-hits="1" data-linenumber="47">
3718
3772
  <span class="hits">1</span>
3719
3773
 
3720
3774
  <code class="ruby"> context &quot;for complex char groups (square brackets)&quot; do</code>
3721
3775
  </li>
3722
3776
 
3723
- <li class="covered" data-hits="1" data-linenumber="47">
3777
+ <li class="covered" data-hits="1" data-linenumber="48">
3724
3778
  <span class="hits">1</span>
3725
3779
 
3726
3780
  <code class="ruby"> examples_exist_and_match(</code>
3727
3781
  </li>
3728
3782
 
3729
- <li class="never" data-hits="" data-linenumber="48">
3783
+ <li class="never" data-hits="" data-linenumber="49">
3730
3784
 
3731
3785
 
3732
3786
  <code class="ruby"> /[abc]/,</code>
3733
3787
  </li>
3734
3788
 
3735
- <li class="never" data-hits="" data-linenumber="49">
3789
+ <li class="never" data-hits="" data-linenumber="50">
3736
3790
 
3737
3791
 
3738
3792
  <code class="ruby"> /[a-c]/,</code>
3739
3793
  </li>
3740
3794
 
3741
- <li class="never" data-hits="" data-linenumber="50">
3795
+ <li class="never" data-hits="" data-linenumber="51">
3742
3796
 
3743
3797
 
3744
3798
  <code class="ruby"> /[abc-e]/,</code>
3745
3799
  </li>
3746
3800
 
3747
- <li class="never" data-hits="" data-linenumber="51">
3801
+ <li class="never" data-hits="" data-linenumber="52">
3748
3802
 
3749
3803
 
3750
3804
  <code class="ruby"> /[^a-zA-Z]/,</code>
3751
3805
  </li>
3752
3806
 
3753
- <li class="never" data-hits="" data-linenumber="52">
3807
+ <li class="never" data-hits="" data-linenumber="53">
3754
3808
 
3755
3809
 
3756
3810
  <code class="ruby"> /[\w]/,</code>
3757
3811
  </li>
3758
3812
 
3759
- <li class="never" data-hits="" data-linenumber="53">
3813
+ <li class="never" data-hits="" data-linenumber="54">
3760
3814
 
3761
3815
 
3762
3816
  <code class="ruby"> /[]]/, # TODO: How to suppress annoying warnings on this test?</code>
3763
3817
  </li>
3764
3818
 
3765
- <li class="never" data-hits="" data-linenumber="54">
3819
+ <li class="never" data-hits="" data-linenumber="55">
3766
3820
 
3767
3821
 
3768
3822
  <code class="ruby"> /[\]]/,</code>
3769
3823
  </li>
3770
3824
 
3771
- <li class="never" data-hits="" data-linenumber="55">
3825
+ <li class="never" data-hits="" data-linenumber="56">
3772
3826
 
3773
3827
 
3774
3828
  <code class="ruby"> /[\\]/,</code>
3775
3829
  </li>
3776
3830
 
3777
- <li class="never" data-hits="" data-linenumber="56">
3831
+ <li class="never" data-hits="" data-linenumber="57">
3778
3832
 
3779
3833
 
3780
3834
  <code class="ruby"> /[\\\]]/,</code>
3781
3835
  </li>
3782
3836
 
3783
- <li class="never" data-hits="" data-linenumber="57">
3837
+ <li class="never" data-hits="" data-linenumber="58">
3784
3838
 
3785
3839
 
3786
3840
  <code class="ruby"> /[\n-\r]/,</code>
3787
3841
  </li>
3788
3842
 
3789
- <li class="never" data-hits="" data-linenumber="58">
3843
+ <li class="never" data-hits="" data-linenumber="59">
3790
3844
 
3791
3845
 
3792
3846
  <code class="ruby"> /[\-]/,</code>
3793
3847
  </li>
3794
3848
 
3795
- <li class="never" data-hits="" data-linenumber="59">
3849
+ <li class="never" data-hits="" data-linenumber="60">
3796
3850
 
3797
3851
 
3798
3852
  <code class="ruby"> /[%-+]/ # This regex is &quot;supposed to&quot; match some surprising things!!!</code>
3799
3853
  </li>
3800
3854
 
3801
- <li class="never" data-hits="" data-linenumber="60">
3855
+ <li class="never" data-hits="" data-linenumber="61">
3802
3856
 
3803
3857
 
3804
3858
  <code class="ruby"> )</code>
3805
3859
  </li>
3806
3860
 
3807
- <li class="never" data-hits="" data-linenumber="61">
3861
+ <li class="never" data-hits="" data-linenumber="62">
3808
3862
 
3809
3863
 
3810
3864
  <code class="ruby"> end</code>
3811
3865
  </li>
3812
3866
 
3813
- <li class="never" data-hits="" data-linenumber="62">
3867
+ <li class="never" data-hits="" data-linenumber="63">
3814
3868
 
3815
3869
 
3816
3870
  <code class="ruby"></code>
3817
3871
  </li>
3818
3872
 
3819
- <li class="covered" data-hits="1" data-linenumber="63">
3873
+ <li class="covered" data-hits="1" data-linenumber="64">
3820
3874
  <span class="hits">1</span>
3821
3875
 
3822
3876
  <code class="ruby"> context &quot;for complex multi groups&quot; do</code>
3823
3877
  </li>
3824
3878
 
3825
- <li class="covered" data-hits="1" data-linenumber="64">
3879
+ <li class="covered" data-hits="1" data-linenumber="65">
3826
3880
  <span class="hits">1</span>
3827
3881
 
3828
3882
  <code class="ruby"> examples_exist_and_match(</code>
3829
3883
  </li>
3830
3884
 
3831
- <li class="never" data-hits="" data-linenumber="65">
3885
+ <li class="never" data-hits="" data-linenumber="66">
3832
3886
 
3833
3887
 
3834
3888
  <code class="ruby"> /(normal)/,</code>
3835
3889
  </li>
3836
3890
 
3837
- <li class="never" data-hits="" data-linenumber="66">
3891
+ <li class="never" data-hits="" data-linenumber="67">
3838
3892
 
3839
3893
 
3840
3894
  <code class="ruby"> /(?:nocapture)/,</code>
3841
3895
  </li>
3842
3896
 
3843
- <li class="never" data-hits="" data-linenumber="67">
3897
+ <li class="never" data-hits="" data-linenumber="68">
3844
3898
 
3845
3899
 
3846
3900
  <code class="ruby"> /(?&lt;name&gt;namedgroup)/,</code>
3847
3901
  </li>
3848
3902
 
3849
- <li class="never" data-hits="" data-linenumber="68">
3903
+ <li class="never" data-hits="" data-linenumber="69">
3850
3904
 
3851
3905
 
3852
3906
  <code class="ruby"> /(?&lt;name&gt;namedgroup) \k&lt;name&gt;/</code>
3853
3907
  </li>
3854
3908
 
3855
- <li class="never" data-hits="" data-linenumber="69">
3909
+ <li class="never" data-hits="" data-linenumber="70">
3856
3910
 
3857
3911
 
3858
3912
  <code class="ruby"> )</code>
3859
3913
  </li>
3860
3914
 
3861
- <li class="never" data-hits="" data-linenumber="70">
3915
+ <li class="never" data-hits="" data-linenumber="71">
3862
3916
 
3863
3917
 
3864
3918
  <code class="ruby"> end</code>
3865
3919
  </li>
3866
3920
 
3867
- <li class="never" data-hits="" data-linenumber="71">
3921
+ <li class="never" data-hits="" data-linenumber="72">
3868
3922
 
3869
3923
 
3870
3924
  <code class="ruby"></code>
3871
3925
  </li>
3872
3926
 
3873
- <li class="covered" data-hits="1" data-linenumber="72">
3927
+ <li class="covered" data-hits="1" data-linenumber="73">
3874
3928
  <span class="hits">1</span>
3875
3929
 
3876
3930
  <code class="ruby"> context &quot;for escaped characters&quot; do</code>
3877
3931
  </li>
3878
3932
 
3879
- <li class="covered" data-hits="1" data-linenumber="73">
3933
+ <li class="covered" data-hits="1" data-linenumber="74">
3880
3934
  <span class="hits">1</span>
3881
3935
 
3882
3936
  <code class="ruby"> examples_exist_and_match(</code>
3883
3937
  </li>
3884
3938
 
3885
- <li class="never" data-hits="" data-linenumber="74">
3939
+ <li class="never" data-hits="" data-linenumber="75">
3886
3940
 
3887
3941
 
3888
3942
  <code class="ruby"> /\w/,</code>
3889
3943
  </li>
3890
3944
 
3891
- <li class="never" data-hits="" data-linenumber="75">
3945
+ <li class="never" data-hits="" data-linenumber="76">
3892
3946
 
3893
3947
 
3894
3948
  <code class="ruby"> /\W/,</code>
3895
3949
  </li>
3896
3950
 
3897
- <li class="never" data-hits="" data-linenumber="76">
3951
+ <li class="never" data-hits="" data-linenumber="77">
3898
3952
 
3899
3953
 
3900
3954
  <code class="ruby"> /\s/,</code>
3901
3955
  </li>
3902
3956
 
3903
- <li class="never" data-hits="" data-linenumber="77">
3957
+ <li class="never" data-hits="" data-linenumber="78">
3904
3958
 
3905
3959
 
3906
3960
  <code class="ruby"> /\S/,</code>
3907
3961
  </li>
3908
3962
 
3909
- <li class="never" data-hits="" data-linenumber="78">
3963
+ <li class="never" data-hits="" data-linenumber="79">
3910
3964
 
3911
3965
 
3912
3966
  <code class="ruby"> /\d/,</code>
3913
3967
  </li>
3914
3968
 
3915
- <li class="never" data-hits="" data-linenumber="79">
3969
+ <li class="never" data-hits="" data-linenumber="80">
3916
3970
 
3917
3971
 
3918
3972
  <code class="ruby"> /\D/,</code>
3919
3973
  </li>
3920
3974
 
3921
- <li class="never" data-hits="" data-linenumber="80">
3975
+ <li class="never" data-hits="" data-linenumber="81">
3922
3976
 
3923
3977
 
3924
3978
  <code class="ruby"> /\h/,</code>
3925
3979
  </li>
3926
3980
 
3927
- <li class="never" data-hits="" data-linenumber="81">
3981
+ <li class="never" data-hits="" data-linenumber="82">
3928
3982
 
3929
3983
 
3930
3984
  <code class="ruby"> /\H/,</code>
3931
3985
  </li>
3932
3986
 
3933
- <li class="never" data-hits="" data-linenumber="82">
3987
+ <li class="never" data-hits="" data-linenumber="83">
3934
3988
 
3935
3989
 
3936
3990
  <code class="ruby"> /\t/,</code>
3937
3991
  </li>
3938
3992
 
3939
- <li class="never" data-hits="" data-linenumber="83">
3993
+ <li class="never" data-hits="" data-linenumber="84">
3940
3994
 
3941
3995
 
3942
3996
  <code class="ruby"> /\n/,</code>
3943
3997
  </li>
3944
3998
 
3945
- <li class="never" data-hits="" data-linenumber="84">
3999
+ <li class="never" data-hits="" data-linenumber="85">
3946
4000
 
3947
4001
 
3948
4002
  <code class="ruby"> /\f/,</code>
3949
4003
  </li>
3950
4004
 
3951
- <li class="never" data-hits="" data-linenumber="85">
4005
+ <li class="never" data-hits="" data-linenumber="86">
3952
4006
 
3953
4007
 
3954
4008
  <code class="ruby"> /\a/,</code>
3955
4009
  </li>
3956
4010
 
3957
- <li class="never" data-hits="" data-linenumber="86">
4011
+ <li class="never" data-hits="" data-linenumber="87">
3958
4012
 
3959
4013
 
3960
4014
  <code class="ruby"> /\v/,</code>
3961
4015
  </li>
3962
4016
 
3963
- <li class="never" data-hits="" data-linenumber="87">
4017
+ <li class="never" data-hits="" data-linenumber="88">
3964
4018
 
3965
4019
 
3966
4020
  <code class="ruby"> /\e/</code>
3967
4021
  </li>
3968
4022
 
3969
- <li class="never" data-hits="" data-linenumber="88">
4023
+ <li class="never" data-hits="" data-linenumber="89">
3970
4024
 
3971
4025
 
3972
4026
  <code class="ruby"> )</code>
3973
4027
  </li>
3974
4028
 
3975
- <li class="never" data-hits="" data-linenumber="89">
4029
+ <li class="never" data-hits="" data-linenumber="90">
3976
4030
 
3977
4031
 
3978
4032
  <code class="ruby"> end</code>
3979
4033
  </li>
3980
4034
 
3981
- <li class="never" data-hits="" data-linenumber="90">
4035
+ <li class="never" data-hits="" data-linenumber="91">
3982
4036
 
3983
4037
 
3984
4038
  <code class="ruby"></code>
3985
4039
  </li>
3986
4040
 
3987
- <li class="covered" data-hits="1" data-linenumber="91">
4041
+ <li class="covered" data-hits="1" data-linenumber="92">
3988
4042
  <span class="hits">1</span>
3989
4043
 
3990
4044
  <code class="ruby"> context &quot;for backreferences&quot; do</code>
3991
4045
  </li>
3992
4046
 
3993
- <li class="covered" data-hits="1" data-linenumber="92">
4047
+ <li class="covered" data-hits="1" data-linenumber="93">
3994
4048
  <span class="hits">1</span>
3995
4049
 
3996
4050
  <code class="ruby"> examples_exist_and_match(</code>
3997
4051
  </li>
3998
4052
 
3999
- <li class="never" data-hits="" data-linenumber="93">
4053
+ <li class="never" data-hits="" data-linenumber="94">
4000
4054
 
4001
4055
 
4002
4056
  <code class="ruby"> /(repeat) \1/,</code>
4003
4057
  </li>
4004
4058
 
4005
- <li class="never" data-hits="" data-linenumber="94">
4059
+ <li class="never" data-hits="" data-linenumber="95">
4006
4060
 
4007
4061
 
4008
4062
  <code class="ruby"> /(ref1) (ref2) \1 \2/,</code>
4009
4063
  </li>
4010
4064
 
4011
- <li class="never" data-hits="" data-linenumber="95">
4065
+ <li class="never" data-hits="" data-linenumber="96">
4012
4066
 
4013
4067
 
4014
4068
  <code class="ruby"> /((ref2)ref1) \1 \2/,</code>
4015
4069
  </li>
4016
4070
 
4017
- <li class="never" data-hits="" data-linenumber="96">
4071
+ <li class="never" data-hits="" data-linenumber="97">
4018
4072
 
4019
4073
 
4020
4074
  <code class="ruby"> /((ref1and2)) \1 \2/,</code>
4021
4075
  </li>
4022
4076
 
4023
- <li class="never" data-hits="" data-linenumber="97">
4077
+ <li class="never" data-hits="" data-linenumber="98">
4024
4078
 
4025
4079
 
4026
4080
  <code class="ruby"> /(one)(two)(three)(four)(five)(six)(seven)(eight)(nine)(ten) \10\9\8\7\6\5\4\3\2\1/,</code>
4027
4081
  </li>
4028
4082
 
4029
- <li class="never" data-hits="" data-linenumber="98">
4083
+ <li class="never" data-hits="" data-linenumber="99">
4030
4084
 
4031
4085
 
4032
4086
  <code class="ruby"> /(a?(b?(c?(d?(e?)))))/</code>
4033
4087
  </li>
4034
4088
 
4035
- <li class="never" data-hits="" data-linenumber="99">
4089
+ <li class="never" data-hits="" data-linenumber="100">
4036
4090
 
4037
4091
 
4038
4092
  <code class="ruby"> )</code>
4039
4093
  </li>
4040
4094
 
4041
- <li class="never" data-hits="" data-linenumber="100">
4095
+ <li class="never" data-hits="" data-linenumber="101">
4042
4096
 
4043
4097
 
4044
4098
  <code class="ruby"> end</code>
4045
4099
  </li>
4046
4100
 
4047
- <li class="never" data-hits="" data-linenumber="101">
4101
+ <li class="never" data-hits="" data-linenumber="102">
4048
4102
 
4049
4103
 
4050
4104
  <code class="ruby"></code>
4051
4105
  </li>
4052
4106
 
4053
- <li class="covered" data-hits="1" data-linenumber="102">
4107
+ <li class="covered" data-hits="1" data-linenumber="103">
4054
4108
  <span class="hits">1</span>
4055
4109
 
4056
4110
  <code class="ruby"> context &quot;for complex patterns&quot; do</code>
4057
4111
  </li>
4058
4112
 
4059
- <li class="never" data-hits="" data-linenumber="103">
4113
+ <li class="never" data-hits="" data-linenumber="104">
4060
4114
 
4061
4115
 
4062
4116
  <code class="ruby"> # Longer combinations of the above</code>
4063
4117
  </li>
4064
4118
 
4065
- <li class="covered" data-hits="1" data-linenumber="104">
4119
+ <li class="covered" data-hits="1" data-linenumber="105">
4066
4120
  <span class="hits">1</span>
4067
4121
 
4068
4122
  <code class="ruby"> examples_exist_and_match(</code>
4069
4123
  </li>
4070
4124
 
4071
- <li class="never" data-hits="" data-linenumber="105">
4125
+ <li class="never" data-hits="" data-linenumber="106">
4072
4126
 
4073
4127
 
4074
4128
  <code class="ruby"> /https?:\/\/(www\.)github\.com/,</code>
4075
4129
  </li>
4076
4130
 
4077
- <li class="never" data-hits="" data-linenumber="106">
4131
+ <li class="never" data-hits="" data-linenumber="107">
4078
4132
 
4079
4133
 
4080
4134
  <code class="ruby"> /(I(N(C(E(P(T(I(O(N)))))))))*/,</code>
4081
4135
  </li>
4082
4136
 
4083
- <li class="never" data-hits="" data-linenumber="107">
4137
+ <li class="never" data-hits="" data-linenumber="108">
4084
4138
 
4085
4139
 
4086
4140
  <code class="ruby"> /[\w]{1}/,</code>
4087
4141
  </li>
4088
4142
 
4089
- <li class="never" data-hits="" data-linenumber="108">
4143
+ <li class="never" data-hits="" data-linenumber="109">
4090
4144
 
4091
4145
 
4092
4146
  <code class="ruby"> /((a?b*c+)) \1/,</code>
4093
4147
  </li>
4094
4148
 
4095
- <li class="never" data-hits="" data-linenumber="109">
4149
+ <li class="never" data-hits="" data-linenumber="110">
4096
4150
 
4097
4151
 
4098
4152
  <code class="ruby"> /((a?b*c+)?) \1/,</code>
4099
4153
  </li>
4100
4154
 
4101
- <li class="never" data-hits="" data-linenumber="110">
4155
+ <li class="never" data-hits="" data-linenumber="111">
4102
4156
 
4103
4157
 
4104
4158
  <code class="ruby"> /a|b|c|d/,</code>
4105
4159
  </li>
4106
4160
 
4107
- <li class="never" data-hits="" data-linenumber="111">
4161
+ <li class="never" data-hits="" data-linenumber="112">
4108
4162
 
4109
4163
 
4110
4164
  <code class="ruby"> /a+|b*|c?/</code>
4111
4165
  </li>
4112
4166
 
4113
- <li class="never" data-hits="" data-linenumber="112">
4167
+ <li class="never" data-hits="" data-linenumber="113">
4114
4168
 
4115
4169
 
4116
4170
  <code class="ruby"> )</code>
4117
4171
  </li>
4118
4172
 
4119
- <li class="never" data-hits="" data-linenumber="113">
4173
+ <li class="never" data-hits="" data-linenumber="114">
4120
4174
 
4121
4175
 
4122
4176
  <code class="ruby"> end</code>
4123
4177
  </li>
4124
4178
 
4125
- <li class="never" data-hits="" data-linenumber="114">
4179
+ <li class="never" data-hits="" data-linenumber="115">
4126
4180
 
4127
4181
 
4128
4182
  <code class="ruby"></code>
4129
4183
  </li>
4130
4184
 
4131
- <li class="covered" data-hits="1" data-linenumber="115">
4185
+ <li class="covered" data-hits="1" data-linenumber="116">
4132
4186
  <span class="hits">1</span>
4133
4187
 
4134
4188
  <code class="ruby"> context &quot;for illegal syntax&quot; do</code>
4135
4189
  </li>
4136
4190
 
4137
- <li class="covered" data-hits="1" data-linenumber="116">
4191
+ <li class="covered" data-hits="1" data-linenumber="117">
4138
4192
  <span class="hits">1</span>
4139
4193
 
4140
4194
  <code class="ruby"> examples_raise_illegal_syntax_error(</code>
4141
4195
  </li>
4142
4196
 
4143
- <li class="never" data-hits="" data-linenumber="117">
4197
+ <li class="never" data-hits="" data-linenumber="118">
4144
4198
 
4145
4199
 
4146
4200
  <code class="ruby"> /(?=lookahead)/,</code>
4147
4201
  </li>
4148
4202
 
4149
- <li class="never" data-hits="" data-linenumber="118">
4203
+ <li class="never" data-hits="" data-linenumber="119">
4150
4204
 
4151
4205
 
4152
4206
  <code class="ruby"> /(?!neglookahead)/,</code>
4153
4207
  </li>
4154
4208
 
4155
- <li class="never" data-hits="" data-linenumber="119">
4209
+ <li class="never" data-hits="" data-linenumber="120">
4156
4210
 
4157
4211
 
4158
4212
  <code class="ruby"> /(?&lt;=lookbehind)/,</code>
4159
4213
  </li>
4160
4214
 
4161
- <li class="never" data-hits="" data-linenumber="120">
4215
+ <li class="never" data-hits="" data-linenumber="121">
4162
4216
 
4163
4217
 
4164
4218
  <code class="ruby"> /(?&lt;!neglookbehind)/</code>
4165
4219
  </li>
4166
4220
 
4167
- <li class="never" data-hits="" data-linenumber="121">
4221
+ <li class="never" data-hits="" data-linenumber="122">
4168
4222
 
4169
4223
 
4170
4224
  <code class="ruby"> )</code>
4171
4225
  </li>
4172
4226
 
4173
- <li class="never" data-hits="" data-linenumber="122">
4227
+ <li class="never" data-hits="" data-linenumber="123">
4174
4228
 
4175
4229
 
4176
4230
  <code class="ruby"> end</code>
4177
4231
  </li>
4178
4232
 
4179
- <li class="never" data-hits="" data-linenumber="123">
4233
+ <li class="never" data-hits="" data-linenumber="124">
4234
+
4235
+
4236
+ <code class="ruby"></code>
4237
+ </li>
4238
+
4239
+ <li class="covered" data-hits="1" data-linenumber="125">
4240
+ <span class="hits">1</span>
4241
+
4242
+ <code class="ruby"> context &quot;for control characters&quot; do</code>
4243
+ </li>
4244
+
4245
+ <li class="covered" data-hits="1" data-linenumber="126">
4246
+ <span class="hits">1</span>
4247
+
4248
+ <code class="ruby"> examples_exist_and_match(</code>
4249
+ </li>
4250
+
4251
+ <li class="never" data-hits="" data-linenumber="127">
4252
+
4253
+
4254
+ <code class="ruby"> /\ca/,</code>
4255
+ </li>
4256
+
4257
+ <li class="never" data-hits="" data-linenumber="128">
4258
+
4259
+
4260
+ <code class="ruby"> /\cZ/,</code>
4261
+ </li>
4262
+
4263
+ <li class="never" data-hits="" data-linenumber="129">
4264
+
4265
+
4266
+ <code class="ruby"> /\c9/,</code>
4267
+ </li>
4268
+
4269
+ <li class="never" data-hits="" data-linenumber="130">
4270
+
4271
+
4272
+ <code class="ruby"> /\c[/,</code>
4273
+ </li>
4274
+
4275
+ <li class="never" data-hits="" data-linenumber="131">
4276
+
4277
+
4278
+ <code class="ruby"> /\c#/,</code>
4279
+ </li>
4280
+
4281
+ <li class="never" data-hits="" data-linenumber="132">
4282
+
4283
+
4284
+ <code class="ruby"> /\c?/</code>
4285
+ </li>
4286
+
4287
+ <li class="never" data-hits="" data-linenumber="133">
4288
+
4289
+
4290
+ <code class="ruby"> )</code>
4291
+ </li>
4292
+
4293
+ <li class="never" data-hits="" data-linenumber="134">
4294
+
4295
+
4296
+ <code class="ruby"> end</code>
4297
+ </li>
4298
+
4299
+ <li class="never" data-hits="" data-linenumber="135">
4180
4300
 
4181
4301
 
4182
4302
  <code class="ruby"> end</code>
4183
4303
  </li>
4184
4304
 
4185
- <li class="never" data-hits="" data-linenumber="124">
4305
+ <li class="never" data-hits="" data-linenumber="136">
4186
4306
 
4187
4307
 
4188
4308
  <code class="ruby">end</code>