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 +4 -4
- data/README.md +1 -1
- data/coverage/.resultset.json +89 -69
- data/coverage/coverage-badge.png +0 -0
- data/coverage/index.html +481 -361
- data/lib/regexp-examples/parser.rb +9 -1
- data/lib/regexp-examples/repeaters.rb +1 -1
- data/lib/regexp-examples/version.rb +1 -1
- data/spec/regexp-examples_spec.rb +12 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2f696b21ebbe5164c14d844c44b671b615f1b4e
|
4
|
+
data.tar.gz: 0b5dab06bf4adcb6264db9b779e1ea9a23bcc232
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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")
|
data/coverage/.resultset.json
CHANGED
@@ -23,8 +23,8 @@
|
|
23
23
|
null,
|
24
24
|
null,
|
25
25
|
1,
|
26
|
-
|
27
|
-
|
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
|
-
|
49
|
-
|
50
|
-
|
48
|
+
65,
|
49
|
+
65,
|
50
|
+
65,
|
51
51
|
null,
|
52
52
|
null,
|
53
53
|
1,
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
54
|
+
112,
|
55
|
+
112,
|
56
|
+
323,
|
57
|
+
319,
|
58
|
+
278,
|
59
|
+
278,
|
60
|
+
278,
|
61
61
|
null,
|
62
|
-
|
62
|
+
108,
|
63
63
|
null,
|
64
64
|
null,
|
65
65
|
1,
|
66
66
|
null,
|
67
67
|
1,
|
68
|
-
|
69
|
-
|
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
|
-
|
81
|
+
42,
|
82
82
|
null,
|
83
|
-
|
83
|
+
174,
|
84
84
|
null,
|
85
|
-
|
85
|
+
319,
|
86
86
|
null,
|
87
87
|
null,
|
88
88
|
1,
|
89
|
-
|
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
|
-
|
106
|
-
|
108
|
+
42,
|
109
|
+
42,
|
107
110
|
null,
|
108
111
|
null,
|
109
112
|
1,
|
110
|
-
|
111
|
-
|
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
|
-
|
122
|
+
5,
|
120
123
|
null,
|
121
|
-
|
124
|
+
253,
|
122
125
|
null,
|
123
|
-
|
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
|
-
|
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
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
218
|
+
5,
|
219
|
+
5,
|
220
|
+
5,
|
221
|
+
5,
|
222
|
+
5,
|
223
|
+
5,
|
216
224
|
null,
|
217
225
|
null,
|
218
226
|
1,
|
219
|
-
|
227
|
+
253,
|
220
228
|
null,
|
221
229
|
null,
|
222
230
|
1,
|
223
|
-
|
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
|
-
|
278
|
-
|
285
|
+
61,
|
286
|
+
157,
|
279
287
|
28,
|
280
288
|
null,
|
281
|
-
|
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
|
-
|
309
|
+
278,
|
302
310
|
null,
|
303
311
|
null,
|
304
312
|
1,
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
313
|
+
278,
|
314
|
+
278,
|
315
|
+
278,
|
316
|
+
308,
|
317
|
+
422,
|
310
318
|
null,
|
311
319
|
null,
|
312
|
-
|
320
|
+
278,
|
313
321
|
null,
|
314
322
|
null,
|
315
323
|
null,
|
316
324
|
1,
|
317
325
|
1,
|
318
|
-
|
326
|
+
253,
|
319
327
|
null,
|
320
328
|
null,
|
321
329
|
1,
|
322
|
-
|
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
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
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
|
-
|
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
|
-
|
385
|
-
|
386
|
-
|
392
|
+
1649,
|
393
|
+
1649,
|
394
|
+
1649,
|
387
395
|
122,
|
388
396
|
null,
|
389
|
-
|
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
|
-
|
407
|
+
422,
|
400
408
|
null,
|
401
409
|
null,
|
402
410
|
null,
|
403
411
|
1,
|
404
412
|
1,
|
405
|
-
|
413
|
+
182,
|
406
414
|
null,
|
407
415
|
1,
|
408
|
-
|
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
|
-
|
535
|
+
65,
|
528
536
|
null,
|
529
537
|
null,
|
530
|
-
|
531
|
-
|
532
|
-
|
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
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
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":
|
686
|
+
"timestamp": 1421429649
|
667
687
|
}
|
668
688
|
}
|
data/coverage/coverage-badge.png
CHANGED
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-
|
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.
|
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>
|
36
|
-
<span class="green"><b>
|
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>
|
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>
|
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>
|
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>
|
117
|
-
<td>
|
118
|
-
<td>
|
116
|
+
<td>192</td>
|
117
|
+
<td>108</td>
|
118
|
+
<td>108</td>
|
119
119
|
<td>0</td>
|
120
|
-
<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>
|
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>
|
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>
|
147
|
-
<td>
|
148
|
-
<td>
|
146
|
+
<td>136</td>
|
147
|
+
<td>30</td>
|
148
|
+
<td>30</td>
|
149
149
|
<td>0</td>
|
150
|
-
<td>14.
|
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="
|
232
|
-
<span class="hits">
|
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="
|
238
|
-
<span class="hits">
|
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="
|
256
|
-
<span class="hits">
|
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="
|
718
|
-
<span class="hits">
|
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="
|
724
|
-
<span class="hits">
|
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="
|
730
|
-
<span class="hits">
|
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="
|
748
|
-
<span class="hits">
|
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="
|
808
|
-
<span class="hits">
|
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="
|
844
|
-
<span class="hits">
|
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="
|
862
|
-
<span class="hits">
|
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="
|
1624
|
-
<span class="hits">
|
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="
|
1630
|
-
<span class="hits">
|
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>
|
1729
|
-
<span class="green"><b>
|
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="
|
1762
|
-
<span class="hits">
|
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="
|
1768
|
-
<span class="hits">
|
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="
|
1774
|
-
<span class="hits">
|
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="
|
1798
|
-
<span class="hits">
|
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="
|
1804
|
-
<span class="hits">
|
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 < regexp_string.length</code>
|
1807
1807
|
</li>
|
1808
1808
|
|
1809
|
-
<li class="covered" data-hits="
|
1810
|
-
<span class="hits">
|
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="
|
1816
|
-
<span class="hits">
|
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="
|
1822
|
-
<span class="hits">
|
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="
|
1828
|
-
<span class="hits">
|
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="
|
1834
|
-
<span class="hits">
|
1833
|
+
<li class="covered" data-hits="278" data-linenumber="17">
|
1834
|
+
<span class="hits">278</span>
|
1835
1835
|
|
1836
1836
|
<code class="ruby"> repeaters << 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="
|
1846
|
-
<span class="hits">
|
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="
|
1882
|
-
<span class="hits">
|
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="
|
1888
|
-
<span class="hits">
|
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 '\\'</code>
|
1957
1957
|
</li>
|
1958
1958
|
|
1959
|
-
<li class="covered" data-hits="
|
1960
|
-
<span class="hits">
|
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="
|
1972
|
-
<span class="hits">
|
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="
|
1984
|
-
<span class="hits">
|
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="
|
2008
|
-
<span class="hits">
|
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="
|
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="
|
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="
|
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="
|
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="
|
2104
|
-
<span class="hits">
|
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="
|
2110
|
-
<span class="hits">
|
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="
|
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="
|
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="
|
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="
|
2134
|
-
<span class="hits">
|
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="
|
2140
|
-
<span class="hits">
|
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="
|
2163
|
+
<li class="never" data-hits="" data-linenumber="72">
|
2146
2164
|
|
2147
2165
|
|
2148
2166
|
<code class="ruby"> when '*'</code>
|
2149
2167
|
</li>
|
2150
2168
|
|
2151
|
-
<li class="covered" data-hits="5" data-linenumber="
|
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="
|
2175
|
+
<li class="never" data-hits="" data-linenumber="74">
|
2158
2176
|
|
2159
2177
|
|
2160
2178
|
<code class="ruby"> when '+'</code>
|
2161
2179
|
</li>
|
2162
2180
|
|
2163
|
-
<li class="covered" data-hits="4" data-linenumber="
|
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="
|
2187
|
+
<li class="never" data-hits="" data-linenumber="76">
|
2170
2188
|
|
2171
2189
|
|
2172
2190
|
<code class="ruby"> when '?'</code>
|
2173
2191
|
</li>
|
2174
2192
|
|
2175
|
-
<li class="covered" data-hits="11" data-linenumber="
|
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="
|
2199
|
+
<li class="never" data-hits="" data-linenumber="78">
|
2182
2200
|
|
2183
2201
|
|
2184
2202
|
<code class="ruby"> when '{'</code>
|
2185
2203
|
</li>
|
2186
2204
|
|
2187
|
-
<li class="covered" data-hits="
|
2188
|
-
<span class="hits">
|
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="
|
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="
|
2200
|
-
<span class="hits">
|
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="
|
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="
|
2212
|
-
<span class="hits">
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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(\?)?(:|!|=|<(!|=|[^!=][^>]*))?/) do |match|</code>
|
2257
2275
|
</li>
|
2258
2276
|
|
2259
|
-
<li class="never" data-hits="" data-linenumber="
|
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="
|
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="
|
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="
|
2295
|
+
<li class="never" data-hits="" data-linenumber="94">
|
2278
2296
|
|
2279
2297
|
|
2280
2298
|
<code class="ruby"> when match[2] == ':' # e.g. /(?:nocapture)/</code>
|
2281
2299
|
</li>
|
2282
2300
|
|
2283
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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="
|
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="
|
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="
|
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, "Lookaheads are not regular; cannot generate examples"</code>
|
2305
2323
|
</li>
|
2306
2324
|
|
2307
|
-
<li class="never" data-hits="" data-linenumber="
|
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. /(?<=lookbehind)/, /(?<!neglookbehind)/</code>
|
2311
2329
|
</li>
|
2312
2330
|
|
2313
|
-
<li class="covered" data-hits="2" data-linenumber="
|
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, "Lookbehinds are not regular; cannot generate examples"</code>
|
2317
2335
|
</li>
|
2318
2336
|
|
2319
|
-
<li class="never" data-hits="" data-linenumber="
|
2337
|
+
<li class="never" data-hits="" data-linenumber="101">
|
2320
2338
|
|
2321
2339
|
|
2322
2340
|
<code class="ruby"> else # e.g. /(?<name>namedgroup)/</code>
|
2323
2341
|
</li>
|
2324
2342
|
|
2325
|
-
<li class="covered" data-hits="2" data-linenumber="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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] == ']'</code>
|
2419
2437
|
</li>
|
2420
2438
|
|
2421
|
-
<li class="never" data-hits="" data-linenumber="
|
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="
|
2445
|
+
<li class="never" data-hits="" data-linenumber="119">
|
2428
2446
|
|
2429
2447
|
|
2430
2448
|
<code class="ruby"> # /[]]/ (match "]")</code>
|
2431
2449
|
</li>
|
2432
2450
|
|
2433
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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 << ']'</code>
|
2437
2455
|
</li>
|
2438
2456
|
|
2439
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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="
|
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="
|
2469
|
+
<li class="never" data-hits="" data-linenumber="123">
|
2452
2470
|
|
2453
2471
|
|
2454
2472
|
<code class="ruby"> until regexp_string[@current_position] == ']' \</code>
|
2455
2473
|
</li>
|
2456
2474
|
|
2457
|
-
<li class="covered" data-hits="14" data-linenumber="
|
2475
|
+
<li class="covered" data-hits="14" data-linenumber="124">
|
2458
2476
|
<span class="hits">14</span>
|
2459
2477
|
|
2460
2478
|
<code class="ruby"> && !regexp_string[0..@current_position-1].match(/[^\\](\\{2})*\\\z/)</code>
|
2461
2479
|
</li>
|
2462
2480
|
|
2463
|
-
<li class="never" data-hits="" data-linenumber="
|
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 "\" before the "]", e.g.</code>
|
2467
2485
|
</li>
|
2468
2486
|
|
2469
|
-
<li class="never" data-hits="" data-linenumber="
|
2487
|
+
<li class="never" data-hits="" data-linenumber="126">
|
2470
2488
|
|
2471
2489
|
|
2472
2490
|
<code class="ruby"> # /[\]]/ (match "]")</code>
|
2473
2491
|
</li>
|
2474
2492
|
|
2475
|
-
<li class="never" data-hits="" data-linenumber="
|
2493
|
+
<li class="never" data-hits="" data-linenumber="127">
|
2476
2494
|
|
2477
2495
|
|
2478
2496
|
<code class="ruby"> # /[\\]/ (match "\")</code>
|
2479
2497
|
</li>
|
2480
2498
|
|
2481
|
-
<li class="never" data-hits="" data-linenumber="
|
2499
|
+
<li class="never" data-hits="" data-linenumber="128">
|
2482
2500
|
|
2483
2501
|
|
2484
2502
|
<code class="ruby"> # /[\\\]]/ (match "\" or "]")</code>
|
2485
2503
|
</li>
|
2486
2504
|
|
2487
|
-
<li class="covered" data-hits="41" data-linenumber="
|
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 << regexp_string[@current_position]</code>
|
2491
2509
|
</li>
|
2492
2510
|
|
2493
|
-
<li class="covered" data-hits="41" data-linenumber="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
2596
|
-
<span class="hits">
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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("\\c#{char}") }.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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
2734
|
-
<span class="hits">
|
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="
|
2740
|
-
<span class="hits">
|
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="
|
2746
|
-
<span class="hits">
|
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="
|
2752
|
-
<span class="hits">
|
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="
|
2758
|
-
<span class="hits">
|
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="
|
2764
|
-
<span class="hits">
|
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="
|
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="
|
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="
|
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="
|
2788
|
-
<span class="hits">
|
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="
|
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="
|
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="
|
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="
|
2812
|
-
<span class="hits">
|
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="
|
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="
|
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="
|
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="
|
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="
|
2878
|
-
<span class="hits">
|
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="
|
2896
|
-
<span class="hits">
|
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="
|
2902
|
-
<span class="hits">
|
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="
|
2908
|
-
<span class="hits">
|
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="
|
2986
|
-
<span class="hits">
|
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="
|
3010
|
-
<span class="hits">
|
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="
|
3016
|
-
<span class="hits">
|
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="
|
3022
|
-
<span class="hits">
|
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="
|
3028
|
-
<span class="hits">
|
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="
|
3034
|
-
<span class="hits">
|
3081
|
+
<li class="covered" data-hits="422" data-linenumber="13">
|
3082
|
+
<span class="hits">422</span>
|
3035
3083
|
|
3036
3084
|
<code class="ruby"> results << 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="
|
3052
|
-
<span class="hits">
|
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="
|
3088
|
-
<span class="hits">
|
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="
|
3112
|
-
<span class="hits">
|
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="
|
3328
|
-
<span class="hits">
|
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="
|
3334
|
-
<span class="hits">
|
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="
|
3340
|
-
<span class="hits">
|
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="
|
3346
|
-
<span class="hits">
|
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="
|
3400
|
-
<span class="hits">
|
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>
|
3439
|
-
<span class="green"><b>
|
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="
|
3460
|
-
<span class="hits">
|
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="
|
3466
|
-
<span class="hits">
|
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="
|
3472
|
-
<span class="hits">
|
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="
|
3478
|
-
<span class="hits">
|
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="
|
3484
|
-
<span class="hits">
|
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{
|
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">
|
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">
|
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="
|
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 "for basic groups" do</code>
|
3667
3721
|
</li>
|
3668
3722
|
|
3669
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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 "for complex char groups (square brackets)" do</code>
|
3721
3775
|
</li>
|
3722
3776
|
|
3723
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
3849
|
+
<li class="never" data-hits="" data-linenumber="60">
|
3796
3850
|
|
3797
3851
|
|
3798
3852
|
<code class="ruby"> /[%-+]/ # This regex is "supposed to" match some surprising things!!!</code>
|
3799
3853
|
</li>
|
3800
3854
|
|
3801
|
-
<li class="never" data-hits="" data-linenumber="
|
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="
|
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="
|
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="
|
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 "for complex multi groups" do</code>
|
3823
3877
|
</li>
|
3824
3878
|
|
3825
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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="
|
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="
|
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="
|
3897
|
+
<li class="never" data-hits="" data-linenumber="68">
|
3844
3898
|
|
3845
3899
|
|
3846
3900
|
<code class="ruby"> /(?<name>namedgroup)/,</code>
|
3847
3901
|
</li>
|
3848
3902
|
|
3849
|
-
<li class="never" data-hits="" data-linenumber="
|
3903
|
+
<li class="never" data-hits="" data-linenumber="69">
|
3850
3904
|
|
3851
3905
|
|
3852
3906
|
<code class="ruby"> /(?<name>namedgroup) \k<name>/</code>
|
3853
3907
|
</li>
|
3854
3908
|
|
3855
|
-
<li class="never" data-hits="" data-linenumber="
|
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="
|
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="
|
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="
|
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 "for escaped characters" do</code>
|
3877
3931
|
</li>
|
3878
3932
|
|
3879
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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 "for backreferences" do</code>
|
3991
4045
|
</li>
|
3992
4046
|
|
3993
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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 "for complex patterns" do</code>
|
4057
4111
|
</li>
|
4058
4112
|
|
4059
|
-
<li class="never" data-hits="" data-linenumber="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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="
|
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 "for illegal syntax" do</code>
|
4135
4189
|
</li>
|
4136
4190
|
|
4137
|
-
<li class="covered" data-hits="1" data-linenumber="
|
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="
|
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="
|
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="
|
4209
|
+
<li class="never" data-hits="" data-linenumber="120">
|
4156
4210
|
|
4157
4211
|
|
4158
4212
|
<code class="ruby"> /(?<=lookbehind)/,</code>
|
4159
4213
|
</li>
|
4160
4214
|
|
4161
|
-
<li class="never" data-hits="" data-linenumber="
|
4215
|
+
<li class="never" data-hits="" data-linenumber="121">
|
4162
4216
|
|
4163
4217
|
|
4164
4218
|
<code class="ruby"> /(?<!neglookbehind)/</code>
|
4165
4219
|
</li>
|
4166
4220
|
|
4167
|
-
<li class="never" data-hits="" data-linenumber="
|
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="
|
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="
|
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 "for control characters" 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="
|
4305
|
+
<li class="never" data-hits="" data-linenumber="136">
|
4186
4306
|
|
4187
4307
|
|
4188
4308
|
<code class="ruby">end</code>
|