regexp-examples 0.2.2 → 0.2.3

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: 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>