regexp-examples 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/.gitignore +0 -1
- data/Gemfile +3 -0
- data/LICENSE.txt +1 -1
- data/README.md +9 -3
- data/Rakefile +7 -2
- data/coverage/.last_run.json +5 -0
- data/coverage/.resultset.json +667 -0
- data/coverage/.resultset.json.lock +0 -0
- data/coverage/assets/0.8.0/application.css +799 -0
- data/coverage/assets/0.8.0/application.js +1559 -0
- data/coverage/assets/0.8.0/colorbox/border.png +0 -0
- data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
- data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
- data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.8.0/favicon_green.png +0 -0
- data/coverage/assets/0.8.0/favicon_red.png +0 -0
- data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
- data/coverage/assets/0.8.0/loading.gif +0 -0
- data/coverage/assets/0.8.0/magnify.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/coverage-badge.png +0 -0
- data/coverage/index.html +4176 -0
- data/lib/regexp-examples/constants.rb +7 -2
- data/lib/regexp-examples/groups.rb +0 -3
- data/lib/regexp-examples/helpers.rb +0 -13
- data/lib/regexp-examples/version.rb +1 -1
- data/spec/regexp-examples_spec.rb +6 -1
- data/spec/spec_helper.rb +12 -61
- metadata +39 -11
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/coverage/index.html
ADDED
@@ -0,0 +1,4176 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
+
<head>
|
4
|
+
<title>Code coverage for Regexp-examples</title>
|
5
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
6
|
+
<script src='./assets/0.8.0/application.js' type='text/javascript'></script>
|
7
|
+
<link href='./assets/0.8.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
|
8
|
+
<link rel="shortcut icon" type="image/png" href="./assets/0.8.0/favicon_green.png" />
|
9
|
+
<link rel="icon" type="image/png" href="./assets/0.8.0/favicon.png" />
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
<div id="loading">
|
14
|
+
<img src="./assets/0.8.0/loading.gif" alt="loading"/>
|
15
|
+
</div>
|
16
|
+
<div id="wrapper" style="display:none;">
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2015-01-14T17:27:23+00:00">2015-01-14T17:27:23+00:00</abbr></div>
|
18
|
+
<ul class="group_tabs"></ul>
|
19
|
+
|
20
|
+
<div id="content">
|
21
|
+
<div class="file_list_container" id="AllFiles">
|
22
|
+
<h2>
|
23
|
+
<span class="group_name">All Files</span>
|
24
|
+
(<span class="covered_percent"><span class="green">100.0%</span></span>
|
25
|
+
covered at
|
26
|
+
<span class="covered_strength">
|
27
|
+
<span class="green">
|
28
|
+
50.45
|
29
|
+
</span>
|
30
|
+
</span> hits/line)
|
31
|
+
</h2>
|
32
|
+
<a name="AllFiles"></a>
|
33
|
+
<div>
|
34
|
+
<b>9</b> files in total.
|
35
|
+
<b>297</b> relevant lines.
|
36
|
+
<span class="green"><b>297</b> lines covered</span> and
|
37
|
+
<span class="red"><b>0</b> lines missed </span>
|
38
|
+
</div>
|
39
|
+
<table class="file_list">
|
40
|
+
<thead>
|
41
|
+
<tr>
|
42
|
+
<th>File</th>
|
43
|
+
<th>% covered</th>
|
44
|
+
<th>Lines</th>
|
45
|
+
<th>Relevant Lines</th>
|
46
|
+
<th>Lines covered</th>
|
47
|
+
<th>Lines missed</th>
|
48
|
+
<th>Avg. Hits / Line</th>
|
49
|
+
</tr>
|
50
|
+
</thead>
|
51
|
+
<tbody>
|
52
|
+
|
53
|
+
<tr>
|
54
|
+
<td class="strong"><a href="#2803e22e3c56b48da477c2353232f0bc6e406a58" class="src_link" title="lib/regexp-examples.rb">lib/regexp-examples.rb</a></td>
|
55
|
+
<td class="green strong">100.0 %</td>
|
56
|
+
<td>2</td>
|
57
|
+
<td>1</td>
|
58
|
+
<td>1</td>
|
59
|
+
<td>0</td>
|
60
|
+
<td>9.0</td>
|
61
|
+
</tr>
|
62
|
+
|
63
|
+
<tr>
|
64
|
+
<td class="strong"><a href="#29a2a933bc8a3e2979023518566420381fb495fb" class="src_link" title="lib/regexp-examples/backreferences.rb">lib/regexp-examples/backreferences.rb</a></td>
|
65
|
+
<td class="green strong">100.0 %</td>
|
66
|
+
<td>52</td>
|
67
|
+
<td>28</td>
|
68
|
+
<td>28</td>
|
69
|
+
<td>0</td>
|
70
|
+
<td>65.3</td>
|
71
|
+
</tr>
|
72
|
+
|
73
|
+
<tr>
|
74
|
+
<td class="strong"><a href="#e85042a89399d7715f4d8400e118fda97215b72c" class="src_link" title="lib/regexp-examples/constants.rb">lib/regexp-examples/constants.rb</a></td>
|
75
|
+
<td class="green strong">100.0 %</td>
|
76
|
+
<td>42</td>
|
77
|
+
<td>12</td>
|
78
|
+
<td>12</td>
|
79
|
+
<td>0</td>
|
80
|
+
<td>6.8</td>
|
81
|
+
</tr>
|
82
|
+
|
83
|
+
<tr>
|
84
|
+
<td class="strong"><a href="#00d77fb2e4e21451442e29891ddf88bd05f0fbd7" class="src_link" title="lib/regexp-examples/groups.rb">lib/regexp-examples/groups.rb</a></td>
|
85
|
+
<td class="green strong">100.0 %</td>
|
86
|
+
<td>119</td>
|
87
|
+
<td>65</td>
|
88
|
+
<td>65</td>
|
89
|
+
<td>0</td>
|
90
|
+
<td>30.2</td>
|
91
|
+
</tr>
|
92
|
+
|
93
|
+
<tr>
|
94
|
+
<td class="strong"><a href="#dad3c4bb6458db3261442a9292e1345b41afd730" class="src_link" title="lib/regexp-examples/helpers.rb">lib/regexp-examples/helpers.rb</a></td>
|
95
|
+
<td class="green strong">100.0 %</td>
|
96
|
+
<td>36</td>
|
97
|
+
<td>15</td>
|
98
|
+
<td>15</td>
|
99
|
+
<td>0</td>
|
100
|
+
<td>144.5</td>
|
101
|
+
</tr>
|
102
|
+
|
103
|
+
<tr>
|
104
|
+
<td class="strong"><a href="#e013406b8d61f5ad15d0a3ad7ea7e8e96b6d7254" class="src_link" title="lib/regexp-examples/parser.rb">lib/regexp-examples/parser.rb</a></td>
|
105
|
+
<td class="green strong">100.0 %</td>
|
106
|
+
<td>184</td>
|
107
|
+
<td>102</td>
|
108
|
+
<td>102</td>
|
109
|
+
<td>0</td>
|
110
|
+
<td>54.6</td>
|
111
|
+
</tr>
|
112
|
+
|
113
|
+
<tr>
|
114
|
+
<td class="strong"><a href="#0dc204f32cb2876d2238a2aae7dea86ad7f9e679" class="src_link" title="lib/regexp-examples/regexp_extensions.rb">lib/regexp-examples/regexp_extensions.rb</a></td>
|
115
|
+
<td class="green strong">100.0 %</td>
|
116
|
+
<td>16</td>
|
117
|
+
<td>9</td>
|
118
|
+
<td>9</td>
|
119
|
+
<td>0</td>
|
120
|
+
<td>37.1</td>
|
121
|
+
</tr>
|
122
|
+
|
123
|
+
<tr>
|
124
|
+
<td class="strong"><a href="#430477f0c86b2d77a18fe51e32b818d48ab7e74b" class="src_link" title="lib/regexp-examples/repeaters.rb">lib/regexp-examples/repeaters.rb</a></td>
|
125
|
+
<td class="green strong">100.0 %</td>
|
126
|
+
<td>78</td>
|
127
|
+
<td>43</td>
|
128
|
+
<td>43</td>
|
129
|
+
<td>0</td>
|
130
|
+
<td>61.5</td>
|
131
|
+
</tr>
|
132
|
+
|
133
|
+
<tr>
|
134
|
+
<td class="strong"><a href="#73ece59f571550448cda013ec330081f40e82321" class="src_link" title="spec/regexp-examples_spec.rb">spec/regexp-examples_spec.rb</a></td>
|
135
|
+
<td class="green strong">100.0 %</td>
|
136
|
+
<td>113</td>
|
137
|
+
<td>22</td>
|
138
|
+
<td>22</td>
|
139
|
+
<td>0</td>
|
140
|
+
<td>17.6</td>
|
141
|
+
</tr>
|
142
|
+
|
143
|
+
</tbody>
|
144
|
+
</table>
|
145
|
+
</div>
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
</div>
|
150
|
+
|
151
|
+
<div id="footer">
|
152
|
+
Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.9.1
|
153
|
+
and simplecov-html v0.8.0<br/>
|
154
|
+
using RSpec
|
155
|
+
</div>
|
156
|
+
|
157
|
+
<div class="source_files">
|
158
|
+
|
159
|
+
<div class="source_table" id="2803e22e3c56b48da477c2353232f0bc6e406a58">
|
160
|
+
<div class="header">
|
161
|
+
<h3>lib/regexp-examples.rb</h3>
|
162
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
163
|
+
<div>
|
164
|
+
<b>1</b> relevant lines.
|
165
|
+
<span class="green"><b>1</b> lines covered</span> and
|
166
|
+
<span class="red"><b>0</b> lines missed.</span>
|
167
|
+
</div>
|
168
|
+
</div>
|
169
|
+
|
170
|
+
<pre>
|
171
|
+
<ol>
|
172
|
+
|
173
|
+
<li class="covered" data-hits="9" data-linenumber="1">
|
174
|
+
<span class="hits">9</span>
|
175
|
+
|
176
|
+
<code class="ruby">Dir[File.dirname(__FILE__) + '/regexp-examples/*.rb'].each {|file| require file }</code>
|
177
|
+
</li>
|
178
|
+
|
179
|
+
<li class="never" data-hits="" data-linenumber="2">
|
180
|
+
|
181
|
+
|
182
|
+
<code class="ruby"></code>
|
183
|
+
</li>
|
184
|
+
|
185
|
+
</ol>
|
186
|
+
</pre>
|
187
|
+
</div>
|
188
|
+
|
189
|
+
<div class="source_table" id="29a2a933bc8a3e2979023518566420381fb495fb">
|
190
|
+
<div class="header">
|
191
|
+
<h3>lib/regexp-examples/backreferences.rb</h3>
|
192
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
193
|
+
<div>
|
194
|
+
<b>28</b> relevant lines.
|
195
|
+
<span class="green"><b>28</b> lines covered</span> and
|
196
|
+
<span class="red"><b>0</b> lines missed.</span>
|
197
|
+
</div>
|
198
|
+
</div>
|
199
|
+
|
200
|
+
<pre>
|
201
|
+
<ol>
|
202
|
+
|
203
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
204
|
+
<span class="hits">1</span>
|
205
|
+
|
206
|
+
<code class="ruby">module RegexpExamples</code>
|
207
|
+
</li>
|
208
|
+
|
209
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
210
|
+
<span class="hits">1</span>
|
211
|
+
|
212
|
+
<code class="ruby"> class CaptureGroupResult < String</code>
|
213
|
+
</li>
|
214
|
+
|
215
|
+
<li class="covered" data-hits="1" data-linenumber="3">
|
216
|
+
<span class="hits">1</span>
|
217
|
+
|
218
|
+
<code class="ruby"> attr_reader :group_id, :subgroups</code>
|
219
|
+
</li>
|
220
|
+
|
221
|
+
<li class="covered" data-hits="1" data-linenumber="4">
|
222
|
+
<span class="hits">1</span>
|
223
|
+
|
224
|
+
<code class="ruby"> def initialize(group_id, subgroups, values)</code>
|
225
|
+
</li>
|
226
|
+
|
227
|
+
<li class="covered" data-hits="248" data-linenumber="5">
|
228
|
+
<span class="hits">248</span>
|
229
|
+
|
230
|
+
<code class="ruby"> @group_id = group_id</code>
|
231
|
+
</li>
|
232
|
+
|
233
|
+
<li class="covered" data-hits="248" data-linenumber="6">
|
234
|
+
<span class="hits">248</span>
|
235
|
+
|
236
|
+
<code class="ruby"> @subgroups = subgroups</code>
|
237
|
+
</li>
|
238
|
+
|
239
|
+
<li class="covered" data-hits="248" data-linenumber="7">
|
240
|
+
<span class="hits">248</span>
|
241
|
+
|
242
|
+
<code class="ruby"> super(values)</code>
|
243
|
+
</li>
|
244
|
+
|
245
|
+
<li class="never" data-hits="" data-linenumber="8">
|
246
|
+
|
247
|
+
|
248
|
+
<code class="ruby"> end</code>
|
249
|
+
</li>
|
250
|
+
|
251
|
+
<li class="never" data-hits="" data-linenumber="9">
|
252
|
+
|
253
|
+
|
254
|
+
<code class="ruby"></code>
|
255
|
+
</li>
|
256
|
+
|
257
|
+
<li class="covered" data-hits="1" data-linenumber="10">
|
258
|
+
<span class="hits">1</span>
|
259
|
+
|
260
|
+
<code class="ruby"> def all_subgroups</code>
|
261
|
+
</li>
|
262
|
+
|
263
|
+
<li class="covered" data-hits="168" data-linenumber="11">
|
264
|
+
<span class="hits">168</span>
|
265
|
+
|
266
|
+
<code class="ruby"> [self, subgroups].flatten</code>
|
267
|
+
</li>
|
268
|
+
|
269
|
+
<li class="never" data-hits="" data-linenumber="12">
|
270
|
+
|
271
|
+
|
272
|
+
<code class="ruby"> end</code>
|
273
|
+
</li>
|
274
|
+
|
275
|
+
<li class="never" data-hits="" data-linenumber="13">
|
276
|
+
|
277
|
+
|
278
|
+
<code class="ruby"></code>
|
279
|
+
</li>
|
280
|
+
|
281
|
+
<li class="never" data-hits="" data-linenumber="14">
|
282
|
+
|
283
|
+
|
284
|
+
<code class="ruby"> # Overridden in order to preserve the @group_id and @subgroups</code>
|
285
|
+
</li>
|
286
|
+
|
287
|
+
<li class="covered" data-hits="1" data-linenumber="15">
|
288
|
+
<span class="hits">1</span>
|
289
|
+
|
290
|
+
<code class="ruby"> def *(int)</code>
|
291
|
+
</li>
|
292
|
+
|
293
|
+
<li class="covered" data-hits="79" data-linenumber="16">
|
294
|
+
<span class="hits">79</span>
|
295
|
+
|
296
|
+
<code class="ruby"> self.class.new(group_id, subgroups, super)</code>
|
297
|
+
</li>
|
298
|
+
|
299
|
+
<li class="never" data-hits="" data-linenumber="17">
|
300
|
+
|
301
|
+
|
302
|
+
<code class="ruby"> end</code>
|
303
|
+
</li>
|
304
|
+
|
305
|
+
<li class="never" data-hits="" data-linenumber="18">
|
306
|
+
|
307
|
+
|
308
|
+
<code class="ruby"> # Overridden in order to preserve the @group_id and @subgroups</code>
|
309
|
+
</li>
|
310
|
+
|
311
|
+
<li class="covered" data-hits="1" data-linenumber="19">
|
312
|
+
<span class="hits">1</span>
|
313
|
+
|
314
|
+
<code class="ruby"> def gsub(regex)</code>
|
315
|
+
</li>
|
316
|
+
|
317
|
+
<li class="covered" data-hits="28" data-linenumber="20">
|
318
|
+
<span class="hits">28</span>
|
319
|
+
|
320
|
+
<code class="ruby"> self.class.new(group_id, subgroups, super)</code>
|
321
|
+
</li>
|
322
|
+
|
323
|
+
<li class="never" data-hits="" data-linenumber="21">
|
324
|
+
|
325
|
+
|
326
|
+
<code class="ruby"> end</code>
|
327
|
+
</li>
|
328
|
+
|
329
|
+
<li class="never" data-hits="" data-linenumber="22">
|
330
|
+
|
331
|
+
|
332
|
+
<code class="ruby"> end</code>
|
333
|
+
</li>
|
334
|
+
|
335
|
+
<li class="never" data-hits="" data-linenumber="23">
|
336
|
+
|
337
|
+
|
338
|
+
<code class="ruby"></code>
|
339
|
+
</li>
|
340
|
+
|
341
|
+
<li class="covered" data-hits="1" data-linenumber="24">
|
342
|
+
<span class="hits">1</span>
|
343
|
+
|
344
|
+
<code class="ruby"> class BackReferenceReplacer</code>
|
345
|
+
</li>
|
346
|
+
|
347
|
+
<li class="covered" data-hits="1" data-linenumber="25">
|
348
|
+
<span class="hits">1</span>
|
349
|
+
|
350
|
+
<code class="ruby"> def substitute_backreferences(full_examples)</code>
|
351
|
+
</li>
|
352
|
+
|
353
|
+
<li class="covered" data-hits="54" data-linenumber="26">
|
354
|
+
<span class="hits">54</span>
|
355
|
+
|
356
|
+
<code class="ruby"> full_examples.map! do |full_example|</code>
|
357
|
+
</li>
|
358
|
+
|
359
|
+
<li class="covered" data-hits="148" data-linenumber="27">
|
360
|
+
<span class="hits">148</span>
|
361
|
+
|
362
|
+
<code class="ruby"> if full_example.is_a? String</code>
|
363
|
+
</li>
|
364
|
+
|
365
|
+
<li class="covered" data-hits="130" data-linenumber="28">
|
366
|
+
<span class="hits">130</span>
|
367
|
+
|
368
|
+
<code class="ruby"> [full_example]</code>
|
369
|
+
</li>
|
370
|
+
|
371
|
+
<li class="never" data-hits="" data-linenumber="29">
|
372
|
+
|
373
|
+
|
374
|
+
<code class="ruby"> else</code>
|
375
|
+
</li>
|
376
|
+
|
377
|
+
<li class="covered" data-hits="18" data-linenumber="30">
|
378
|
+
<span class="hits">18</span>
|
379
|
+
|
380
|
+
<code class="ruby"> full_example.map! do |partial_example|</code>
|
381
|
+
</li>
|
382
|
+
|
383
|
+
<li class="covered" data-hits="112" data-linenumber="31">
|
384
|
+
<span class="hits">112</span>
|
385
|
+
|
386
|
+
<code class="ruby"> partial_example.gsub(/__(\w+)__/) do |match|</code>
|
387
|
+
</li>
|
388
|
+
|
389
|
+
<li class="covered" data-hits="28" data-linenumber="32">
|
390
|
+
<span class="hits">28</span>
|
391
|
+
|
392
|
+
<code class="ruby"> find_backref_for(full_example, $1)</code>
|
393
|
+
</li>
|
394
|
+
|
395
|
+
<li class="never" data-hits="" data-linenumber="33">
|
396
|
+
|
397
|
+
|
398
|
+
<code class="ruby"> end</code>
|
399
|
+
</li>
|
400
|
+
|
401
|
+
<li class="never" data-hits="" data-linenumber="34">
|
402
|
+
|
403
|
+
|
404
|
+
<code class="ruby"> end</code>
|
405
|
+
</li>
|
406
|
+
|
407
|
+
<li class="never" data-hits="" data-linenumber="35">
|
408
|
+
|
409
|
+
|
410
|
+
<code class="ruby"> end</code>
|
411
|
+
</li>
|
412
|
+
|
413
|
+
<li class="never" data-hits="" data-linenumber="36">
|
414
|
+
|
415
|
+
|
416
|
+
<code class="ruby"> end</code>
|
417
|
+
</li>
|
418
|
+
|
419
|
+
<li class="covered" data-hits="54" data-linenumber="37">
|
420
|
+
<span class="hits">54</span>
|
421
|
+
|
422
|
+
<code class="ruby"> full_examples</code>
|
423
|
+
</li>
|
424
|
+
|
425
|
+
<li class="never" data-hits="" data-linenumber="38">
|
426
|
+
|
427
|
+
|
428
|
+
<code class="ruby"> end</code>
|
429
|
+
</li>
|
430
|
+
|
431
|
+
<li class="never" data-hits="" data-linenumber="39">
|
432
|
+
|
433
|
+
|
434
|
+
<code class="ruby"></code>
|
435
|
+
</li>
|
436
|
+
|
437
|
+
<li class="covered" data-hits="1" data-linenumber="40">
|
438
|
+
<span class="hits">1</span>
|
439
|
+
|
440
|
+
<code class="ruby"> private</code>
|
441
|
+
</li>
|
442
|
+
|
443
|
+
<li class="covered" data-hits="1" data-linenumber="41">
|
444
|
+
<span class="hits">1</span>
|
445
|
+
|
446
|
+
<code class="ruby"> def find_backref_for(full_example, group_id)</code>
|
447
|
+
</li>
|
448
|
+
|
449
|
+
<li class="covered" data-hits="28" data-linenumber="42">
|
450
|
+
<span class="hits">28</span>
|
451
|
+
|
452
|
+
<code class="ruby"> full_example.each do |partial_example|</code>
|
453
|
+
</li>
|
454
|
+
|
455
|
+
<li class="covered" data-hits="75" data-linenumber="43">
|
456
|
+
<span class="hits">75</span>
|
457
|
+
|
458
|
+
<code class="ruby"> next unless partial_example.respond_to?(:group_id)</code>
|
459
|
+
</li>
|
460
|
+
|
461
|
+
<li class="covered" data-hits="74" data-linenumber="44">
|
462
|
+
<span class="hits">74</span>
|
463
|
+
|
464
|
+
<code class="ruby"> partial_example.all_subgroups.each do |subgroup|</code>
|
465
|
+
</li>
|
466
|
+
|
467
|
+
<li class="covered" data-hits="77" data-linenumber="45">
|
468
|
+
<span class="hits">77</span>
|
469
|
+
|
470
|
+
<code class="ruby"> return subgroup if subgroup.group_id == group_id</code>
|
471
|
+
</li>
|
472
|
+
|
473
|
+
<li class="never" data-hits="" data-linenumber="46">
|
474
|
+
|
475
|
+
|
476
|
+
<code class="ruby"> end</code>
|
477
|
+
</li>
|
478
|
+
|
479
|
+
<li class="never" data-hits="" data-linenumber="47">
|
480
|
+
|
481
|
+
|
482
|
+
<code class="ruby"> end</code>
|
483
|
+
</li>
|
484
|
+
|
485
|
+
<li class="never" data-hits="" data-linenumber="48">
|
486
|
+
|
487
|
+
|
488
|
+
<code class="ruby"> end</code>
|
489
|
+
</li>
|
490
|
+
|
491
|
+
<li class="never" data-hits="" data-linenumber="49">
|
492
|
+
|
493
|
+
|
494
|
+
<code class="ruby"></code>
|
495
|
+
</li>
|
496
|
+
|
497
|
+
<li class="never" data-hits="" data-linenumber="50">
|
498
|
+
|
499
|
+
|
500
|
+
<code class="ruby"> end</code>
|
501
|
+
</li>
|
502
|
+
|
503
|
+
<li class="never" data-hits="" data-linenumber="51">
|
504
|
+
|
505
|
+
|
506
|
+
<code class="ruby"></code>
|
507
|
+
</li>
|
508
|
+
|
509
|
+
<li class="never" data-hits="" data-linenumber="52">
|
510
|
+
|
511
|
+
|
512
|
+
<code class="ruby">end</code>
|
513
|
+
</li>
|
514
|
+
|
515
|
+
</ol>
|
516
|
+
</pre>
|
517
|
+
</div>
|
518
|
+
|
519
|
+
<div class="source_table" id="e85042a89399d7715f4d8400e118fda97215b72c">
|
520
|
+
<div class="header">
|
521
|
+
<h3>lib/regexp-examples/constants.rb</h3>
|
522
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
523
|
+
<div>
|
524
|
+
<b>12</b> relevant lines.
|
525
|
+
<span class="green"><b>12</b> lines covered</span> and
|
526
|
+
<span class="red"><b>0</b> lines missed.</span>
|
527
|
+
</div>
|
528
|
+
</div>
|
529
|
+
|
530
|
+
<pre>
|
531
|
+
<ol>
|
532
|
+
|
533
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
534
|
+
<span class="hits">1</span>
|
535
|
+
|
536
|
+
<code class="ruby">module RegexpExamples</code>
|
537
|
+
</li>
|
538
|
+
|
539
|
+
<li class="never" data-hits="" data-linenumber="2">
|
540
|
+
|
541
|
+
|
542
|
+
<code class="ruby"> # Number of times to repeat for Star and Plus repeaters</code>
|
543
|
+
</li>
|
544
|
+
|
545
|
+
<li class="covered" data-hits="1" data-linenumber="3">
|
546
|
+
<span class="hits">1</span>
|
547
|
+
|
548
|
+
<code class="ruby"> TIMES = 2</code>
|
549
|
+
</li>
|
550
|
+
|
551
|
+
<li class="never" data-hits="" data-linenumber="4">
|
552
|
+
|
553
|
+
|
554
|
+
<code class="ruby"></code>
|
555
|
+
</li>
|
556
|
+
|
557
|
+
<li class="never" data-hits="" data-linenumber="5">
|
558
|
+
|
559
|
+
|
560
|
+
<code class="ruby"> # Maximum number of characters returned from a char set, to reduce output spam</code>
|
561
|
+
</li>
|
562
|
+
|
563
|
+
<li class="never" data-hits="" data-linenumber="6">
|
564
|
+
|
565
|
+
|
566
|
+
<code class="ruby"> # For example:</code>
|
567
|
+
</li>
|
568
|
+
|
569
|
+
<li class="never" data-hits="" data-linenumber="7">
|
570
|
+
|
571
|
+
|
572
|
+
<code class="ruby"> # If MaxGroupResults = 5, then</code>
|
573
|
+
</li>
|
574
|
+
|
575
|
+
<li class="never" data-hits="" data-linenumber="8">
|
576
|
+
|
577
|
+
|
578
|
+
<code class="ruby"> # \d = [0, 1, 2, 3, 4]</code>
|
579
|
+
</li>
|
580
|
+
|
581
|
+
<li class="covered" data-hits="1" data-linenumber="9">
|
582
|
+
<span class="hits">1</span>
|
583
|
+
|
584
|
+
<code class="ruby"> MaxGroupResults = 5</code>
|
585
|
+
</li>
|
586
|
+
|
587
|
+
<li class="never" data-hits="" data-linenumber="10">
|
588
|
+
|
589
|
+
|
590
|
+
<code class="ruby"></code>
|
591
|
+
</li>
|
592
|
+
|
593
|
+
<li class="covered" data-hits="1" data-linenumber="11">
|
594
|
+
<span class="hits">1</span>
|
595
|
+
|
596
|
+
<code class="ruby"> module CharSets</code>
|
597
|
+
</li>
|
598
|
+
|
599
|
+
<li class="covered" data-hits="1" data-linenumber="12">
|
600
|
+
<span class="hits">1</span>
|
601
|
+
|
602
|
+
<code class="ruby"> Lower = Array('a'..'z')</code>
|
603
|
+
</li>
|
604
|
+
|
605
|
+
<li class="covered" data-hits="1" data-linenumber="13">
|
606
|
+
<span class="hits">1</span>
|
607
|
+
|
608
|
+
<code class="ruby"> Upper = Array('A'..'Z')</code>
|
609
|
+
</li>
|
610
|
+
|
611
|
+
<li class="covered" data-hits="1" data-linenumber="14">
|
612
|
+
<span class="hits">1</span>
|
613
|
+
|
614
|
+
<code class="ruby"> Digit = Array('0'..'9')</code>
|
615
|
+
</li>
|
616
|
+
|
617
|
+
<li class="never" data-hits="" data-linenumber="15">
|
618
|
+
|
619
|
+
|
620
|
+
<code class="ruby"> # 45.chr = "-". Need to make sure this is at the START of the array, or things break</code>
|
621
|
+
</li>
|
622
|
+
|
623
|
+
<li class="never" data-hits="" data-linenumber="16">
|
624
|
+
|
625
|
+
|
626
|
+
<code class="ruby"> # This is because of the /[a-z]/ regex syntax, and how it's being parsed</code>
|
627
|
+
</li>
|
628
|
+
|
629
|
+
<li class="covered" data-hits="39" data-linenumber="17">
|
630
|
+
<span class="hits">39</span>
|
631
|
+
|
632
|
+
<code class="ruby"> Punct = [45..45, 33..44, 46..47, 58..64, 91..96, 123..126].map { |r| r.map { |val| val.chr } }.flatten</code>
|
633
|
+
</li>
|
634
|
+
|
635
|
+
<li class="covered" data-hits="1" data-linenumber="18">
|
636
|
+
<span class="hits">1</span>
|
637
|
+
|
638
|
+
<code class="ruby"> Hex = Array('a'..'f') | Array('A'..'F') | Digit</code>
|
639
|
+
</li>
|
640
|
+
|
641
|
+
<li class="covered" data-hits="1" data-linenumber="19">
|
642
|
+
<span class="hits">1</span>
|
643
|
+
|
644
|
+
<code class="ruby"> Any = Lower | Upper | Digit | Punct</code>
|
645
|
+
</li>
|
646
|
+
|
647
|
+
<li class="never" data-hits="" data-linenumber="20">
|
648
|
+
|
649
|
+
|
650
|
+
<code class="ruby"> end</code>
|
651
|
+
</li>
|
652
|
+
|
653
|
+
<li class="never" data-hits="" data-linenumber="21">
|
654
|
+
|
655
|
+
|
656
|
+
<code class="ruby"></code>
|
657
|
+
</li>
|
658
|
+
|
659
|
+
<li class="never" data-hits="" data-linenumber="22">
|
660
|
+
|
661
|
+
|
662
|
+
<code class="ruby"> # Map of special regex characters, to their associated character sets</code>
|
663
|
+
</li>
|
664
|
+
|
665
|
+
<li class="covered" data-hits="1" data-linenumber="23">
|
666
|
+
<span class="hits">1</span>
|
667
|
+
|
668
|
+
<code class="ruby"> BackslashCharMap = {</code>
|
669
|
+
</li>
|
670
|
+
|
671
|
+
<li class="never" data-hits="" data-linenumber="24">
|
672
|
+
|
673
|
+
|
674
|
+
<code class="ruby"> 'd' => CharSets::Digit,</code>
|
675
|
+
</li>
|
676
|
+
|
677
|
+
<li class="never" data-hits="" data-linenumber="25">
|
678
|
+
|
679
|
+
|
680
|
+
<code class="ruby"> 'D' => CharSets::Lower | CharSets::Upper | CharSets::Punct,</code>
|
681
|
+
</li>
|
682
|
+
|
683
|
+
<li class="never" data-hits="" data-linenumber="26">
|
684
|
+
|
685
|
+
|
686
|
+
<code class="ruby"> 'w' => CharSets::Lower | CharSets::Upper | CharSets::Digit | ['_'],</code>
|
687
|
+
</li>
|
688
|
+
|
689
|
+
<li class="covered" data-hits="32" data-linenumber="27">
|
690
|
+
<span class="hits">32</span>
|
691
|
+
|
692
|
+
<code class="ruby"> 'W' => CharSets::Punct.reject { |val| val == '_' },</code>
|
693
|
+
</li>
|
694
|
+
|
695
|
+
<li class="never" data-hits="" data-linenumber="28">
|
696
|
+
|
697
|
+
|
698
|
+
<code class="ruby"> 's' => [' ', "\t", "\n", "\r", "\v", "\f"],</code>
|
699
|
+
</li>
|
700
|
+
|
701
|
+
<li class="never" data-hits="" data-linenumber="29">
|
702
|
+
|
703
|
+
|
704
|
+
<code class="ruby"> 'S' => CharSets::Any - [' ', "\t", "\n", "\r", "\v", "\f"],</code>
|
705
|
+
</li>
|
706
|
+
|
707
|
+
<li class="never" data-hits="" data-linenumber="30">
|
708
|
+
|
709
|
+
|
710
|
+
<code class="ruby"> 'h' => CharSets::Hex,</code>
|
711
|
+
</li>
|
712
|
+
|
713
|
+
<li class="never" data-hits="" data-linenumber="31">
|
714
|
+
|
715
|
+
|
716
|
+
<code class="ruby"> 'H' => CharSets::Any - CharSets::Hex,</code>
|
717
|
+
</li>
|
718
|
+
|
719
|
+
<li class="never" data-hits="" data-linenumber="32">
|
720
|
+
|
721
|
+
|
722
|
+
<code class="ruby"></code>
|
723
|
+
</li>
|
724
|
+
|
725
|
+
<li class="never" data-hits="" data-linenumber="33">
|
726
|
+
|
727
|
+
|
728
|
+
<code class="ruby"> 't' => ["\t"], # tab</code>
|
729
|
+
</li>
|
730
|
+
|
731
|
+
<li class="never" data-hits="" data-linenumber="34">
|
732
|
+
|
733
|
+
|
734
|
+
<code class="ruby"> 'n' => ["\n"], # new line</code>
|
735
|
+
</li>
|
736
|
+
|
737
|
+
<li class="never" data-hits="" data-linenumber="35">
|
738
|
+
|
739
|
+
|
740
|
+
<code class="ruby"> 'r' => ["\r"], # carriage return</code>
|
741
|
+
</li>
|
742
|
+
|
743
|
+
<li class="never" data-hits="" data-linenumber="36">
|
744
|
+
|
745
|
+
|
746
|
+
<code class="ruby"> 'f' => ["\f"], # form feed</code>
|
747
|
+
</li>
|
748
|
+
|
749
|
+
<li class="never" data-hits="" data-linenumber="37">
|
750
|
+
|
751
|
+
|
752
|
+
<code class="ruby"> 'a' => ["\a"], # alarm</code>
|
753
|
+
</li>
|
754
|
+
|
755
|
+
<li class="never" data-hits="" data-linenumber="38">
|
756
|
+
|
757
|
+
|
758
|
+
<code class="ruby"> 'v' => ["\v"], # vertical tab</code>
|
759
|
+
</li>
|
760
|
+
|
761
|
+
<li class="never" data-hits="" data-linenumber="39">
|
762
|
+
|
763
|
+
|
764
|
+
<code class="ruby"> 'e' => ["\e"], # escape</code>
|
765
|
+
</li>
|
766
|
+
|
767
|
+
<li class="never" data-hits="" data-linenumber="40">
|
768
|
+
|
769
|
+
|
770
|
+
<code class="ruby"> }</code>
|
771
|
+
</li>
|
772
|
+
|
773
|
+
<li class="never" data-hits="" data-linenumber="41">
|
774
|
+
|
775
|
+
|
776
|
+
<code class="ruby">end</code>
|
777
|
+
</li>
|
778
|
+
|
779
|
+
<li class="never" data-hits="" data-linenumber="42">
|
780
|
+
|
781
|
+
|
782
|
+
<code class="ruby"></code>
|
783
|
+
</li>
|
784
|
+
|
785
|
+
</ol>
|
786
|
+
</pre>
|
787
|
+
</div>
|
788
|
+
|
789
|
+
<div class="source_table" id="00d77fb2e4e21451442e29891ddf88bd05f0fbd7">
|
790
|
+
<div class="header">
|
791
|
+
<h3>lib/regexp-examples/groups.rb</h3>
|
792
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
793
|
+
<div>
|
794
|
+
<b>65</b> relevant lines.
|
795
|
+
<span class="green"><b>65</b> lines covered</span> and
|
796
|
+
<span class="red"><b>0</b> lines missed.</span>
|
797
|
+
</div>
|
798
|
+
</div>
|
799
|
+
|
800
|
+
<pre>
|
801
|
+
<ol>
|
802
|
+
|
803
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
804
|
+
<span class="hits">1</span>
|
805
|
+
|
806
|
+
<code class="ruby">module RegexpExamples</code>
|
807
|
+
</li>
|
808
|
+
|
809
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
810
|
+
<span class="hits">1</span>
|
811
|
+
|
812
|
+
<code class="ruby"> class SingleCharGroup</code>
|
813
|
+
</li>
|
814
|
+
|
815
|
+
<li class="covered" data-hits="1" data-linenumber="3">
|
816
|
+
<span class="hits">1</span>
|
817
|
+
|
818
|
+
<code class="ruby"> def initialize(char)</code>
|
819
|
+
</li>
|
820
|
+
|
821
|
+
<li class="covered" data-hits="175" data-linenumber="4">
|
822
|
+
<span class="hits">175</span>
|
823
|
+
|
824
|
+
<code class="ruby"> @char = char</code>
|
825
|
+
</li>
|
826
|
+
|
827
|
+
<li class="never" data-hits="" data-linenumber="5">
|
828
|
+
|
829
|
+
|
830
|
+
<code class="ruby"> end</code>
|
831
|
+
</li>
|
832
|
+
|
833
|
+
<li class="covered" data-hits="1" data-linenumber="6">
|
834
|
+
<span class="hits">1</span>
|
835
|
+
|
836
|
+
<code class="ruby"> def result</code>
|
837
|
+
</li>
|
838
|
+
|
839
|
+
<li class="covered" data-hits="175" data-linenumber="7">
|
840
|
+
<span class="hits">175</span>
|
841
|
+
|
842
|
+
<code class="ruby"> [@char]</code>
|
843
|
+
</li>
|
844
|
+
|
845
|
+
<li class="never" data-hits="" data-linenumber="8">
|
846
|
+
|
847
|
+
|
848
|
+
<code class="ruby"> end</code>
|
849
|
+
</li>
|
850
|
+
|
851
|
+
<li class="never" data-hits="" data-linenumber="9">
|
852
|
+
|
853
|
+
|
854
|
+
<code class="ruby"> end</code>
|
855
|
+
</li>
|
856
|
+
|
857
|
+
<li class="never" data-hits="" data-linenumber="10">
|
858
|
+
|
859
|
+
|
860
|
+
<code class="ruby"></code>
|
861
|
+
</li>
|
862
|
+
|
863
|
+
<li class="covered" data-hits="1" data-linenumber="11">
|
864
|
+
<span class="hits">1</span>
|
865
|
+
|
866
|
+
<code class="ruby"> class CharGroup</code>
|
867
|
+
</li>
|
868
|
+
|
869
|
+
<li class="covered" data-hits="1" data-linenumber="12">
|
870
|
+
<span class="hits">1</span>
|
871
|
+
|
872
|
+
<code class="ruby"> def initialize(chars)</code>
|
873
|
+
</li>
|
874
|
+
|
875
|
+
<li class="covered" data-hits="28" data-linenumber="13">
|
876
|
+
<span class="hits">28</span>
|
877
|
+
|
878
|
+
<code class="ruby"> @chars = chars</code>
|
879
|
+
</li>
|
880
|
+
|
881
|
+
<li class="covered" data-hits="28" data-linenumber="14">
|
882
|
+
<span class="hits">28</span>
|
883
|
+
|
884
|
+
<code class="ruby"> if chars[0] == "^"</code>
|
885
|
+
</li>
|
886
|
+
|
887
|
+
<li class="covered" data-hits="1" data-linenumber="15">
|
888
|
+
<span class="hits">1</span>
|
889
|
+
|
890
|
+
<code class="ruby"> @negative = true</code>
|
891
|
+
</li>
|
892
|
+
|
893
|
+
<li class="covered" data-hits="1" data-linenumber="16">
|
894
|
+
<span class="hits">1</span>
|
895
|
+
|
896
|
+
<code class="ruby"> @chars = @chars[1..-1]</code>
|
897
|
+
</li>
|
898
|
+
|
899
|
+
<li class="never" data-hits="" data-linenumber="17">
|
900
|
+
|
901
|
+
|
902
|
+
<code class="ruby"> else</code>
|
903
|
+
</li>
|
904
|
+
|
905
|
+
<li class="covered" data-hits="27" data-linenumber="18">
|
906
|
+
<span class="hits">27</span>
|
907
|
+
|
908
|
+
<code class="ruby"> @negative = false</code>
|
909
|
+
</li>
|
910
|
+
|
911
|
+
<li class="never" data-hits="" data-linenumber="19">
|
912
|
+
|
913
|
+
|
914
|
+
<code class="ruby"> end</code>
|
915
|
+
</li>
|
916
|
+
|
917
|
+
<li class="never" data-hits="" data-linenumber="20">
|
918
|
+
|
919
|
+
|
920
|
+
<code class="ruby"></code>
|
921
|
+
</li>
|
922
|
+
|
923
|
+
<li class="covered" data-hits="28" data-linenumber="21">
|
924
|
+
<span class="hits">28</span>
|
925
|
+
|
926
|
+
<code class="ruby"> init_backslash_chars</code>
|
927
|
+
</li>
|
928
|
+
|
929
|
+
<li class="covered" data-hits="28" data-linenumber="22">
|
930
|
+
<span class="hits">28</span>
|
931
|
+
|
932
|
+
<code class="ruby"> init_ranges</code>
|
933
|
+
</li>
|
934
|
+
|
935
|
+
<li class="never" data-hits="" data-linenumber="23">
|
936
|
+
|
937
|
+
|
938
|
+
<code class="ruby"> end</code>
|
939
|
+
</li>
|
940
|
+
|
941
|
+
<li class="never" data-hits="" data-linenumber="24">
|
942
|
+
|
943
|
+
|
944
|
+
<code class="ruby"></code>
|
945
|
+
</li>
|
946
|
+
|
947
|
+
<li class="covered" data-hits="1" data-linenumber="25">
|
948
|
+
<span class="hits">1</span>
|
949
|
+
|
950
|
+
<code class="ruby"> def init_ranges</code>
|
951
|
+
</li>
|
952
|
+
|
953
|
+
<li class="never" data-hits="" data-linenumber="26">
|
954
|
+
|
955
|
+
|
956
|
+
<code class="ruby"> # save first and last "-" if present</code>
|
957
|
+
</li>
|
958
|
+
|
959
|
+
<li class="covered" data-hits="28" data-linenumber="27">
|
960
|
+
<span class="hits">28</span>
|
961
|
+
|
962
|
+
<code class="ruby"> first = nil</code>
|
963
|
+
</li>
|
964
|
+
|
965
|
+
<li class="covered" data-hits="28" data-linenumber="28">
|
966
|
+
<span class="hits">28</span>
|
967
|
+
|
968
|
+
<code class="ruby"> last = nil</code>
|
969
|
+
</li>
|
970
|
+
|
971
|
+
<li class="covered" data-hits="28" data-linenumber="29">
|
972
|
+
<span class="hits">28</span>
|
973
|
+
|
974
|
+
<code class="ruby"> first = @chars.shift if @chars.first == "-"</code>
|
975
|
+
</li>
|
976
|
+
|
977
|
+
<li class="covered" data-hits="28" data-linenumber="30">
|
978
|
+
<span class="hits">28</span>
|
979
|
+
|
980
|
+
<code class="ruby"> last = @chars.pop if @chars.last == "-"</code>
|
981
|
+
</li>
|
982
|
+
|
983
|
+
<li class="never" data-hits="" data-linenumber="31">
|
984
|
+
|
985
|
+
|
986
|
+
<code class="ruby"> # Replace all instances of e.g. ["a" "-" "z"] with ["a", "b", ..., "z"]</code>
|
987
|
+
</li>
|
988
|
+
|
989
|
+
<li class="covered" data-hits="28" data-linenumber="32">
|
990
|
+
<span class="hits">28</span>
|
991
|
+
|
992
|
+
<code class="ruby"> while i = @chars.index("-")</code>
|
993
|
+
</li>
|
994
|
+
|
995
|
+
<li class="covered" data-hits="9" data-linenumber="33">
|
996
|
+
<span class="hits">9</span>
|
997
|
+
|
998
|
+
<code class="ruby"> @chars[i-1..i+1] = (@chars[i-1]..@chars[i+1]).to_a</code>
|
999
|
+
</li>
|
1000
|
+
|
1001
|
+
<li class="never" data-hits="" data-linenumber="34">
|
1002
|
+
|
1003
|
+
|
1004
|
+
<code class="ruby"> end</code>
|
1005
|
+
</li>
|
1006
|
+
|
1007
|
+
<li class="never" data-hits="" data-linenumber="35">
|
1008
|
+
|
1009
|
+
|
1010
|
+
<code class="ruby"> # restore them back</code>
|
1011
|
+
</li>
|
1012
|
+
|
1013
|
+
<li class="covered" data-hits="28" data-linenumber="36">
|
1014
|
+
<span class="hits">28</span>
|
1015
|
+
|
1016
|
+
<code class="ruby"> @chars.unshift(first) if first</code>
|
1017
|
+
</li>
|
1018
|
+
|
1019
|
+
<li class="covered" data-hits="28" data-linenumber="37">
|
1020
|
+
<span class="hits">28</span>
|
1021
|
+
|
1022
|
+
<code class="ruby"> @chars.push(last) if last</code>
|
1023
|
+
</li>
|
1024
|
+
|
1025
|
+
<li class="never" data-hits="" data-linenumber="38">
|
1026
|
+
|
1027
|
+
|
1028
|
+
<code class="ruby"> end</code>
|
1029
|
+
</li>
|
1030
|
+
|
1031
|
+
<li class="never" data-hits="" data-linenumber="39">
|
1032
|
+
|
1033
|
+
|
1034
|
+
<code class="ruby"></code>
|
1035
|
+
</li>
|
1036
|
+
|
1037
|
+
<li class="covered" data-hits="1" data-linenumber="40">
|
1038
|
+
<span class="hits">1</span>
|
1039
|
+
|
1040
|
+
<code class="ruby"> def init_backslash_chars</code>
|
1041
|
+
</li>
|
1042
|
+
|
1043
|
+
<li class="covered" data-hits="28" data-linenumber="41">
|
1044
|
+
<span class="hits">28</span>
|
1045
|
+
|
1046
|
+
<code class="ruby"> @chars.each_with_index do |char, i|</code>
|
1047
|
+
</li>
|
1048
|
+
|
1049
|
+
<li class="covered" data-hits="540" data-linenumber="42">
|
1050
|
+
<span class="hits">540</span>
|
1051
|
+
|
1052
|
+
<code class="ruby"> if char == "\\"</code>
|
1053
|
+
</li>
|
1054
|
+
|
1055
|
+
<li class="covered" data-hits="13" data-linenumber="43">
|
1056
|
+
<span class="hits">13</span>
|
1057
|
+
|
1058
|
+
<code class="ruby"> if BackslashCharMap.keys.include?(@chars[i+1])</code>
|
1059
|
+
</li>
|
1060
|
+
|
1061
|
+
<li class="covered" data-hits="4" data-linenumber="44">
|
1062
|
+
<span class="hits">4</span>
|
1063
|
+
|
1064
|
+
<code class="ruby"> @chars[i..i+1] = BackslashCharMap[@chars[i+1]]</code>
|
1065
|
+
</li>
|
1066
|
+
|
1067
|
+
<li class="never" data-hits="" data-linenumber="45">
|
1068
|
+
|
1069
|
+
|
1070
|
+
<code class="ruby"> elsif @chars[i+1] == "\\"</code>
|
1071
|
+
</li>
|
1072
|
+
|
1073
|
+
<li class="covered" data-hits="2" data-linenumber="46">
|
1074
|
+
<span class="hits">2</span>
|
1075
|
+
|
1076
|
+
<code class="ruby"> @chars.delete_at(i+1)</code>
|
1077
|
+
</li>
|
1078
|
+
|
1079
|
+
<li class="never" data-hits="" data-linenumber="47">
|
1080
|
+
|
1081
|
+
|
1082
|
+
<code class="ruby"> else</code>
|
1083
|
+
</li>
|
1084
|
+
|
1085
|
+
<li class="covered" data-hits="7" data-linenumber="48">
|
1086
|
+
<span class="hits">7</span>
|
1087
|
+
|
1088
|
+
<code class="ruby"> @chars.delete_at(i)</code>
|
1089
|
+
</li>
|
1090
|
+
|
1091
|
+
<li class="never" data-hits="" data-linenumber="49">
|
1092
|
+
|
1093
|
+
|
1094
|
+
<code class="ruby"> end</code>
|
1095
|
+
</li>
|
1096
|
+
|
1097
|
+
<li class="never" data-hits="" data-linenumber="50">
|
1098
|
+
|
1099
|
+
|
1100
|
+
<code class="ruby"> end</code>
|
1101
|
+
</li>
|
1102
|
+
|
1103
|
+
<li class="never" data-hits="" data-linenumber="51">
|
1104
|
+
|
1105
|
+
|
1106
|
+
<code class="ruby"> end</code>
|
1107
|
+
</li>
|
1108
|
+
|
1109
|
+
<li class="never" data-hits="" data-linenumber="52">
|
1110
|
+
|
1111
|
+
|
1112
|
+
<code class="ruby"> end</code>
|
1113
|
+
</li>
|
1114
|
+
|
1115
|
+
<li class="never" data-hits="" data-linenumber="53">
|
1116
|
+
|
1117
|
+
|
1118
|
+
<code class="ruby"></code>
|
1119
|
+
</li>
|
1120
|
+
|
1121
|
+
<li class="covered" data-hits="1" data-linenumber="54">
|
1122
|
+
<span class="hits">1</span>
|
1123
|
+
|
1124
|
+
<code class="ruby"> def result</code>
|
1125
|
+
</li>
|
1126
|
+
|
1127
|
+
<li class="covered" data-hits="28" data-linenumber="55">
|
1128
|
+
<span class="hits">28</span>
|
1129
|
+
|
1130
|
+
<code class="ruby"> if @negative</code>
|
1131
|
+
</li>
|
1132
|
+
|
1133
|
+
<li class="covered" data-hits="1" data-linenumber="56">
|
1134
|
+
<span class="hits">1</span>
|
1135
|
+
|
1136
|
+
<code class="ruby"> CharSets::Any - @chars</code>
|
1137
|
+
</li>
|
1138
|
+
|
1139
|
+
<li class="never" data-hits="" data-linenumber="57">
|
1140
|
+
|
1141
|
+
|
1142
|
+
<code class="ruby"> else</code>
|
1143
|
+
</li>
|
1144
|
+
|
1145
|
+
<li class="covered" data-hits="27" data-linenumber="58">
|
1146
|
+
<span class="hits">27</span>
|
1147
|
+
|
1148
|
+
<code class="ruby"> @chars</code>
|
1149
|
+
</li>
|
1150
|
+
|
1151
|
+
<li class="never" data-hits="" data-linenumber="59">
|
1152
|
+
|
1153
|
+
|
1154
|
+
<code class="ruby"> end</code>
|
1155
|
+
</li>
|
1156
|
+
|
1157
|
+
<li class="never" data-hits="" data-linenumber="60">
|
1158
|
+
|
1159
|
+
|
1160
|
+
<code class="ruby"> end</code>
|
1161
|
+
</li>
|
1162
|
+
|
1163
|
+
<li class="never" data-hits="" data-linenumber="61">
|
1164
|
+
|
1165
|
+
|
1166
|
+
<code class="ruby"> end</code>
|
1167
|
+
</li>
|
1168
|
+
|
1169
|
+
<li class="never" data-hits="" data-linenumber="62">
|
1170
|
+
|
1171
|
+
|
1172
|
+
<code class="ruby"></code>
|
1173
|
+
</li>
|
1174
|
+
|
1175
|
+
<li class="covered" data-hits="1" data-linenumber="63">
|
1176
|
+
<span class="hits">1</span>
|
1177
|
+
|
1178
|
+
<code class="ruby"> class DotGroup</code>
|
1179
|
+
</li>
|
1180
|
+
|
1181
|
+
<li class="covered" data-hits="1" data-linenumber="64">
|
1182
|
+
<span class="hits">1</span>
|
1183
|
+
|
1184
|
+
<code class="ruby"> def result</code>
|
1185
|
+
</li>
|
1186
|
+
|
1187
|
+
<li class="covered" data-hits="1" data-linenumber="65">
|
1188
|
+
<span class="hits">1</span>
|
1189
|
+
|
1190
|
+
<code class="ruby"> CharSets::Any</code>
|
1191
|
+
</li>
|
1192
|
+
|
1193
|
+
<li class="never" data-hits="" data-linenumber="66">
|
1194
|
+
|
1195
|
+
|
1196
|
+
<code class="ruby"> end</code>
|
1197
|
+
</li>
|
1198
|
+
|
1199
|
+
<li class="never" data-hits="" data-linenumber="67">
|
1200
|
+
|
1201
|
+
|
1202
|
+
<code class="ruby"> end</code>
|
1203
|
+
</li>
|
1204
|
+
|
1205
|
+
<li class="never" data-hits="" data-linenumber="68">
|
1206
|
+
|
1207
|
+
|
1208
|
+
<code class="ruby"></code>
|
1209
|
+
</li>
|
1210
|
+
|
1211
|
+
<li class="covered" data-hits="1" data-linenumber="69">
|
1212
|
+
<span class="hits">1</span>
|
1213
|
+
|
1214
|
+
<code class="ruby"> class MultiGroup</code>
|
1215
|
+
</li>
|
1216
|
+
|
1217
|
+
<li class="covered" data-hits="1" data-linenumber="70">
|
1218
|
+
<span class="hits">1</span>
|
1219
|
+
|
1220
|
+
<code class="ruby"> attr_reader :group_id</code>
|
1221
|
+
</li>
|
1222
|
+
|
1223
|
+
<li class="covered" data-hits="1" data-linenumber="71">
|
1224
|
+
<span class="hits">1</span>
|
1225
|
+
|
1226
|
+
<code class="ruby"> def initialize(groups, group_id)</code>
|
1227
|
+
</li>
|
1228
|
+
|
1229
|
+
<li class="covered" data-hits="41" data-linenumber="72">
|
1230
|
+
<span class="hits">41</span>
|
1231
|
+
|
1232
|
+
<code class="ruby"> @groups = groups</code>
|
1233
|
+
</li>
|
1234
|
+
|
1235
|
+
<li class="covered" data-hits="41" data-linenumber="73">
|
1236
|
+
<span class="hits">41</span>
|
1237
|
+
|
1238
|
+
<code class="ruby"> @group_id = group_id</code>
|
1239
|
+
</li>
|
1240
|
+
|
1241
|
+
<li class="never" data-hits="" data-linenumber="74">
|
1242
|
+
|
1243
|
+
|
1244
|
+
<code class="ruby"> end</code>
|
1245
|
+
</li>
|
1246
|
+
|
1247
|
+
<li class="never" data-hits="" data-linenumber="75">
|
1248
|
+
|
1249
|
+
|
1250
|
+
<code class="ruby"></code>
|
1251
|
+
</li>
|
1252
|
+
|
1253
|
+
<li class="never" data-hits="" data-linenumber="76">
|
1254
|
+
|
1255
|
+
|
1256
|
+
<code class="ruby"> # Generates the result of each contained group</code>
|
1257
|
+
</li>
|
1258
|
+
|
1259
|
+
<li class="never" data-hits="" data-linenumber="77">
|
1260
|
+
|
1261
|
+
|
1262
|
+
<code class="ruby"> # and adds the filled group of each result to</code>
|
1263
|
+
</li>
|
1264
|
+
|
1265
|
+
<li class="never" data-hits="" data-linenumber="78">
|
1266
|
+
|
1267
|
+
|
1268
|
+
<code class="ruby"> # itself</code>
|
1269
|
+
</li>
|
1270
|
+
|
1271
|
+
<li class="covered" data-hits="1" data-linenumber="79">
|
1272
|
+
<span class="hits">1</span>
|
1273
|
+
|
1274
|
+
<code class="ruby"> def result</code>
|
1275
|
+
</li>
|
1276
|
+
|
1277
|
+
<li class="covered" data-hits="186" data-linenumber="80">
|
1278
|
+
<span class="hits">186</span>
|
1279
|
+
|
1280
|
+
<code class="ruby"> strings = @groups.map {|repeater| repeater.result}</code>
|
1281
|
+
</li>
|
1282
|
+
|
1283
|
+
<li class="covered" data-hits="41" data-linenumber="81">
|
1284
|
+
<span class="hits">41</span>
|
1285
|
+
|
1286
|
+
<code class="ruby"> RegexpExamples::permutations_of_strings(strings).map do |result|</code>
|
1287
|
+
</li>
|
1288
|
+
|
1289
|
+
<li class="covered" data-hits="101" data-linenumber="82">
|
1290
|
+
<span class="hits">101</span>
|
1291
|
+
|
1292
|
+
<code class="ruby"> subgroups = result.respond_to?(:group_id) ? result.all_subgroups : []</code>
|
1293
|
+
</li>
|
1294
|
+
|
1295
|
+
<li class="covered" data-hits="101" data-linenumber="83">
|
1296
|
+
<span class="hits">101</span>
|
1297
|
+
|
1298
|
+
<code class="ruby"> group_id ? CaptureGroupResult.new(group_id, subgroups, result) : result</code>
|
1299
|
+
</li>
|
1300
|
+
|
1301
|
+
<li class="never" data-hits="" data-linenumber="84">
|
1302
|
+
|
1303
|
+
|
1304
|
+
<code class="ruby"> end</code>
|
1305
|
+
</li>
|
1306
|
+
|
1307
|
+
<li class="never" data-hits="" data-linenumber="85">
|
1308
|
+
|
1309
|
+
|
1310
|
+
<code class="ruby"> end</code>
|
1311
|
+
</li>
|
1312
|
+
|
1313
|
+
<li class="never" data-hits="" data-linenumber="86">
|
1314
|
+
|
1315
|
+
|
1316
|
+
<code class="ruby"> end</code>
|
1317
|
+
</li>
|
1318
|
+
|
1319
|
+
<li class="never" data-hits="" data-linenumber="87">
|
1320
|
+
|
1321
|
+
|
1322
|
+
<code class="ruby"></code>
|
1323
|
+
</li>
|
1324
|
+
|
1325
|
+
<li class="covered" data-hits="1" data-linenumber="88">
|
1326
|
+
<span class="hits">1</span>
|
1327
|
+
|
1328
|
+
<code class="ruby"> class MultiGroupEnd</code>
|
1329
|
+
</li>
|
1330
|
+
|
1331
|
+
<li class="never" data-hits="" data-linenumber="89">
|
1332
|
+
|
1333
|
+
|
1334
|
+
<code class="ruby"> end</code>
|
1335
|
+
</li>
|
1336
|
+
|
1337
|
+
<li class="never" data-hits="" data-linenumber="90">
|
1338
|
+
|
1339
|
+
|
1340
|
+
<code class="ruby"></code>
|
1341
|
+
</li>
|
1342
|
+
|
1343
|
+
<li class="covered" data-hits="1" data-linenumber="91">
|
1344
|
+
<span class="hits">1</span>
|
1345
|
+
|
1346
|
+
<code class="ruby"> class OrGroup</code>
|
1347
|
+
</li>
|
1348
|
+
|
1349
|
+
<li class="covered" data-hits="1" data-linenumber="92">
|
1350
|
+
<span class="hits">1</span>
|
1351
|
+
|
1352
|
+
<code class="ruby"> def initialize(left_repeaters, right_repeaters)</code>
|
1353
|
+
</li>
|
1354
|
+
|
1355
|
+
<li class="covered" data-hits="6" data-linenumber="93">
|
1356
|
+
<span class="hits">6</span>
|
1357
|
+
|
1358
|
+
<code class="ruby"> @left_repeaters = left_repeaters</code>
|
1359
|
+
</li>
|
1360
|
+
|
1361
|
+
<li class="covered" data-hits="6" data-linenumber="94">
|
1362
|
+
<span class="hits">6</span>
|
1363
|
+
|
1364
|
+
<code class="ruby"> @right_repeaters = right_repeaters</code>
|
1365
|
+
</li>
|
1366
|
+
|
1367
|
+
<li class="never" data-hits="" data-linenumber="95">
|
1368
|
+
|
1369
|
+
|
1370
|
+
<code class="ruby"> end</code>
|
1371
|
+
</li>
|
1372
|
+
|
1373
|
+
<li class="never" data-hits="" data-linenumber="96">
|
1374
|
+
|
1375
|
+
|
1376
|
+
<code class="ruby"></code>
|
1377
|
+
</li>
|
1378
|
+
|
1379
|
+
<li class="covered" data-hits="1" data-linenumber="97">
|
1380
|
+
<span class="hits">1</span>
|
1381
|
+
|
1382
|
+
<code class="ruby"> def result</code>
|
1383
|
+
</li>
|
1384
|
+
|
1385
|
+
<li class="covered" data-hits="6" data-linenumber="98">
|
1386
|
+
<span class="hits">6</span>
|
1387
|
+
|
1388
|
+
<code class="ruby"> left_result = @left_repeaters.map do |repeater|</code>
|
1389
|
+
</li>
|
1390
|
+
|
1391
|
+
<li class="covered" data-hits="6" data-linenumber="99">
|
1392
|
+
<span class="hits">6</span>
|
1393
|
+
|
1394
|
+
<code class="ruby"> RegexpExamples::permutations_of_strings([repeater.result])</code>
|
1395
|
+
</li>
|
1396
|
+
|
1397
|
+
<li class="never" data-hits="" data-linenumber="100">
|
1398
|
+
|
1399
|
+
|
1400
|
+
<code class="ruby"> end</code>
|
1401
|
+
</li>
|
1402
|
+
|
1403
|
+
<li class="covered" data-hits="6" data-linenumber="101">
|
1404
|
+
<span class="hits">6</span>
|
1405
|
+
|
1406
|
+
<code class="ruby"> right_result = @right_repeaters.map do |repeater|</code>
|
1407
|
+
</li>
|
1408
|
+
|
1409
|
+
<li class="covered" data-hits="6" data-linenumber="102">
|
1410
|
+
<span class="hits">6</span>
|
1411
|
+
|
1412
|
+
<code class="ruby"> RegexpExamples::permutations_of_strings([repeater.result])</code>
|
1413
|
+
</li>
|
1414
|
+
|
1415
|
+
<li class="never" data-hits="" data-linenumber="103">
|
1416
|
+
|
1417
|
+
|
1418
|
+
<code class="ruby"> end</code>
|
1419
|
+
</li>
|
1420
|
+
|
1421
|
+
<li class="covered" data-hits="6" data-linenumber="104">
|
1422
|
+
<span class="hits">6</span>
|
1423
|
+
|
1424
|
+
<code class="ruby"> left_result.concat(right_result).flatten.uniq</code>
|
1425
|
+
</li>
|
1426
|
+
|
1427
|
+
<li class="never" data-hits="" data-linenumber="105">
|
1428
|
+
|
1429
|
+
|
1430
|
+
<code class="ruby"> end</code>
|
1431
|
+
</li>
|
1432
|
+
|
1433
|
+
<li class="never" data-hits="" data-linenumber="106">
|
1434
|
+
|
1435
|
+
|
1436
|
+
<code class="ruby"> end</code>
|
1437
|
+
</li>
|
1438
|
+
|
1439
|
+
<li class="never" data-hits="" data-linenumber="107">
|
1440
|
+
|
1441
|
+
|
1442
|
+
<code class="ruby"></code>
|
1443
|
+
</li>
|
1444
|
+
|
1445
|
+
<li class="covered" data-hits="1" data-linenumber="108">
|
1446
|
+
<span class="hits">1</span>
|
1447
|
+
|
1448
|
+
<code class="ruby"> class BackReferenceGroup</code>
|
1449
|
+
</li>
|
1450
|
+
|
1451
|
+
<li class="covered" data-hits="1" data-linenumber="109">
|
1452
|
+
<span class="hits">1</span>
|
1453
|
+
|
1454
|
+
<code class="ruby"> attr_reader :id</code>
|
1455
|
+
</li>
|
1456
|
+
|
1457
|
+
<li class="covered" data-hits="1" data-linenumber="110">
|
1458
|
+
<span class="hits">1</span>
|
1459
|
+
|
1460
|
+
<code class="ruby"> def initialize(id)</code>
|
1461
|
+
</li>
|
1462
|
+
|
1463
|
+
<li class="covered" data-hits="20" data-linenumber="111">
|
1464
|
+
<span class="hits">20</span>
|
1465
|
+
|
1466
|
+
<code class="ruby"> @id = id</code>
|
1467
|
+
</li>
|
1468
|
+
|
1469
|
+
<li class="never" data-hits="" data-linenumber="112">
|
1470
|
+
|
1471
|
+
|
1472
|
+
<code class="ruby"> end</code>
|
1473
|
+
</li>
|
1474
|
+
|
1475
|
+
<li class="never" data-hits="" data-linenumber="113">
|
1476
|
+
|
1477
|
+
|
1478
|
+
<code class="ruby"></code>
|
1479
|
+
</li>
|
1480
|
+
|
1481
|
+
<li class="covered" data-hits="1" data-linenumber="114">
|
1482
|
+
<span class="hits">1</span>
|
1483
|
+
|
1484
|
+
<code class="ruby"> def result</code>
|
1485
|
+
</li>
|
1486
|
+
|
1487
|
+
<li class="covered" data-hits="20" data-linenumber="115">
|
1488
|
+
<span class="hits">20</span>
|
1489
|
+
|
1490
|
+
<code class="ruby"> ["__#{@id}__"]</code>
|
1491
|
+
</li>
|
1492
|
+
|
1493
|
+
<li class="never" data-hits="" data-linenumber="116">
|
1494
|
+
|
1495
|
+
|
1496
|
+
<code class="ruby"> end</code>
|
1497
|
+
</li>
|
1498
|
+
|
1499
|
+
<li class="never" data-hits="" data-linenumber="117">
|
1500
|
+
|
1501
|
+
|
1502
|
+
<code class="ruby"> end</code>
|
1503
|
+
</li>
|
1504
|
+
|
1505
|
+
<li class="never" data-hits="" data-linenumber="118">
|
1506
|
+
|
1507
|
+
|
1508
|
+
<code class="ruby"></code>
|
1509
|
+
</li>
|
1510
|
+
|
1511
|
+
<li class="never" data-hits="" data-linenumber="119">
|
1512
|
+
|
1513
|
+
|
1514
|
+
<code class="ruby">end</code>
|
1515
|
+
</li>
|
1516
|
+
|
1517
|
+
</ol>
|
1518
|
+
</pre>
|
1519
|
+
</div>
|
1520
|
+
|
1521
|
+
<div class="source_table" id="dad3c4bb6458db3261442a9292e1345b41afd730">
|
1522
|
+
<div class="header">
|
1523
|
+
<h3>lib/regexp-examples/helpers.rb</h3>
|
1524
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
1525
|
+
<div>
|
1526
|
+
<b>15</b> relevant lines.
|
1527
|
+
<span class="green"><b>15</b> lines covered</span> and
|
1528
|
+
<span class="red"><b>0</b> lines missed.</span>
|
1529
|
+
</div>
|
1530
|
+
</div>
|
1531
|
+
|
1532
|
+
<pre>
|
1533
|
+
<ol>
|
1534
|
+
|
1535
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
1536
|
+
<span class="hits">1</span>
|
1537
|
+
|
1538
|
+
<code class="ruby">module RegexpExamples</code>
|
1539
|
+
</li>
|
1540
|
+
|
1541
|
+
<li class="never" data-hits="" data-linenumber="2">
|
1542
|
+
|
1543
|
+
|
1544
|
+
<code class="ruby"> # Given an array of arrays of strings,</code>
|
1545
|
+
</li>
|
1546
|
+
|
1547
|
+
<li class="never" data-hits="" data-linenumber="3">
|
1548
|
+
|
1549
|
+
|
1550
|
+
<code class="ruby"> # returns all possible perutations,</code>
|
1551
|
+
</li>
|
1552
|
+
|
1553
|
+
<li class="never" data-hits="" data-linenumber="4">
|
1554
|
+
|
1555
|
+
|
1556
|
+
<code class="ruby"> # for strings created by joining one</code>
|
1557
|
+
</li>
|
1558
|
+
|
1559
|
+
<li class="never" data-hits="" data-linenumber="5">
|
1560
|
+
|
1561
|
+
|
1562
|
+
<code class="ruby"> # element from each array</code>
|
1563
|
+
</li>
|
1564
|
+
|
1565
|
+
<li class="never" data-hits="" data-linenumber="6">
|
1566
|
+
|
1567
|
+
|
1568
|
+
<code class="ruby"> #</code>
|
1569
|
+
</li>
|
1570
|
+
|
1571
|
+
<li class="never" data-hits="" data-linenumber="7">
|
1572
|
+
|
1573
|
+
|
1574
|
+
<code class="ruby"> # For example:</code>
|
1575
|
+
</li>
|
1576
|
+
|
1577
|
+
<li class="never" data-hits="" data-linenumber="8">
|
1578
|
+
|
1579
|
+
|
1580
|
+
<code class="ruby"> # permutations_of_strings [ ['a'], ['b'], ['c', 'd', 'e'] ] #=> ['acb', 'abd', 'abe']</code>
|
1581
|
+
</li>
|
1582
|
+
|
1583
|
+
<li class="never" data-hits="" data-linenumber="9">
|
1584
|
+
|
1585
|
+
|
1586
|
+
<code class="ruby"> # permutations_of_strings [ ['a', 'b'], ['c', 'd'] ] #=> [ 'ac', 'ad', 'bc', 'bd' ]</code>
|
1587
|
+
</li>
|
1588
|
+
|
1589
|
+
<li class="covered" data-hits="1" data-linenumber="10">
|
1590
|
+
<span class="hits">1</span>
|
1591
|
+
|
1592
|
+
<code class="ruby"> def self.permutations_of_strings(arrays_of_strings, options={})</code>
|
1593
|
+
</li>
|
1594
|
+
|
1595
|
+
<li class="covered" data-hits="271" data-linenumber="11">
|
1596
|
+
<span class="hits">271</span>
|
1597
|
+
|
1598
|
+
<code class="ruby"> first = arrays_of_strings.shift</code>
|
1599
|
+
</li>
|
1600
|
+
|
1601
|
+
<li class="covered" data-hits="271" data-linenumber="12">
|
1602
|
+
<span class="hits">271</span>
|
1603
|
+
|
1604
|
+
<code class="ruby"> return first if arrays_of_strings.empty?</code>
|
1605
|
+
</li>
|
1606
|
+
|
1607
|
+
<li class="covered" data-hits="164" data-linenumber="13">
|
1608
|
+
<span class="hits">164</span>
|
1609
|
+
|
1610
|
+
<code class="ruby"> first.product( permutations_of_strings(arrays_of_strings, options) ).map do |result|</code>
|
1611
|
+
</li>
|
1612
|
+
|
1613
|
+
<li class="covered" data-hits="237" data-linenumber="14">
|
1614
|
+
<span class="hits">237</span>
|
1615
|
+
|
1616
|
+
<code class="ruby"> if options[:no_join]</code>
|
1617
|
+
</li>
|
1618
|
+
|
1619
|
+
<li class="covered" data-hits="73" data-linenumber="15">
|
1620
|
+
<span class="hits">73</span>
|
1621
|
+
|
1622
|
+
<code class="ruby"> result.flatten</code>
|
1623
|
+
</li>
|
1624
|
+
|
1625
|
+
<li class="never" data-hits="" data-linenumber="16">
|
1626
|
+
|
1627
|
+
|
1628
|
+
<code class="ruby"> else</code>
|
1629
|
+
</li>
|
1630
|
+
|
1631
|
+
<li class="covered" data-hits="164" data-linenumber="17">
|
1632
|
+
<span class="hits">164</span>
|
1633
|
+
|
1634
|
+
<code class="ruby"> join_preserving_capture_groups(result)</code>
|
1635
|
+
</li>
|
1636
|
+
|
1637
|
+
<li class="never" data-hits="" data-linenumber="18">
|
1638
|
+
|
1639
|
+
|
1640
|
+
<code class="ruby"> end</code>
|
1641
|
+
</li>
|
1642
|
+
|
1643
|
+
<li class="never" data-hits="" data-linenumber="19">
|
1644
|
+
|
1645
|
+
|
1646
|
+
<code class="ruby"> end</code>
|
1647
|
+
</li>
|
1648
|
+
|
1649
|
+
<li class="never" data-hits="" data-linenumber="20">
|
1650
|
+
|
1651
|
+
|
1652
|
+
<code class="ruby"> end</code>
|
1653
|
+
</li>
|
1654
|
+
|
1655
|
+
<li class="never" data-hits="" data-linenumber="21">
|
1656
|
+
|
1657
|
+
|
1658
|
+
<code class="ruby"></code>
|
1659
|
+
</li>
|
1660
|
+
|
1661
|
+
<li class="covered" data-hits="1" data-linenumber="22">
|
1662
|
+
<span class="hits">1</span>
|
1663
|
+
|
1664
|
+
<code class="ruby"> def self.join_preserving_capture_groups(result)</code>
|
1665
|
+
</li>
|
1666
|
+
|
1667
|
+
<li class="covered" data-hits="164" data-linenumber="23">
|
1668
|
+
<span class="hits">164</span>
|
1669
|
+
|
1670
|
+
<code class="ruby"> result.flatten!</code>
|
1671
|
+
</li>
|
1672
|
+
|
1673
|
+
<li class="covered" data-hits="164" data-linenumber="24">
|
1674
|
+
<span class="hits">164</span>
|
1675
|
+
|
1676
|
+
<code class="ruby"> subgroups = result</code>
|
1677
|
+
</li>
|
1678
|
+
|
1679
|
+
<li class="covered" data-hits="328" data-linenumber="25">
|
1680
|
+
<span class="hits">328</span>
|
1681
|
+
|
1682
|
+
<code class="ruby"> .select { |partial| partial.respond_to? :group_id }</code>
|
1683
|
+
</li>
|
1684
|
+
|
1685
|
+
<li class="never" data-hits="" data-linenumber="26">
|
1686
|
+
|
1687
|
+
|
1688
|
+
<code class="ruby"> .map(&:all_subgroups)</code>
|
1689
|
+
</li>
|
1690
|
+
|
1691
|
+
<li class="never" data-hits="" data-linenumber="27">
|
1692
|
+
|
1693
|
+
|
1694
|
+
<code class="ruby"> .flatten</code>
|
1695
|
+
</li>
|
1696
|
+
|
1697
|
+
<li class="never" data-hits="" data-linenumber="28">
|
1698
|
+
|
1699
|
+
|
1700
|
+
<code class="ruby"></code>
|
1701
|
+
</li>
|
1702
|
+
|
1703
|
+
<li class="covered" data-hits="164" data-linenumber="29">
|
1704
|
+
<span class="hits">164</span>
|
1705
|
+
|
1706
|
+
<code class="ruby"> if subgroups.empty?</code>
|
1707
|
+
</li>
|
1708
|
+
|
1709
|
+
<li class="covered" data-hits="123" data-linenumber="30">
|
1710
|
+
<span class="hits">123</span>
|
1711
|
+
|
1712
|
+
<code class="ruby"> result.join</code>
|
1713
|
+
</li>
|
1714
|
+
|
1715
|
+
<li class="never" data-hits="" data-linenumber="31">
|
1716
|
+
|
1717
|
+
|
1718
|
+
<code class="ruby"> else</code>
|
1719
|
+
</li>
|
1720
|
+
|
1721
|
+
<li class="covered" data-hits="41" data-linenumber="32">
|
1722
|
+
<span class="hits">41</span>
|
1723
|
+
|
1724
|
+
<code class="ruby"> CaptureGroupResult.new(nil, subgroups, result.join)</code>
|
1725
|
+
</li>
|
1726
|
+
|
1727
|
+
<li class="never" data-hits="" data-linenumber="33">
|
1728
|
+
|
1729
|
+
|
1730
|
+
<code class="ruby"> end</code>
|
1731
|
+
</li>
|
1732
|
+
|
1733
|
+
<li class="never" data-hits="" data-linenumber="34">
|
1734
|
+
|
1735
|
+
|
1736
|
+
<code class="ruby"> end</code>
|
1737
|
+
</li>
|
1738
|
+
|
1739
|
+
<li class="never" data-hits="" data-linenumber="35">
|
1740
|
+
|
1741
|
+
|
1742
|
+
<code class="ruby">end</code>
|
1743
|
+
</li>
|
1744
|
+
|
1745
|
+
<li class="never" data-hits="" data-linenumber="36">
|
1746
|
+
|
1747
|
+
|
1748
|
+
<code class="ruby"></code>
|
1749
|
+
</li>
|
1750
|
+
|
1751
|
+
</ol>
|
1752
|
+
</pre>
|
1753
|
+
</div>
|
1754
|
+
|
1755
|
+
<div class="source_table" id="e013406b8d61f5ad15d0a3ad7ea7e8e96b6d7254">
|
1756
|
+
<div class="header">
|
1757
|
+
<h3>lib/regexp-examples/parser.rb</h3>
|
1758
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
1759
|
+
<div>
|
1760
|
+
<b>102</b> relevant lines.
|
1761
|
+
<span class="green"><b>102</b> lines covered</span> and
|
1762
|
+
<span class="red"><b>0</b> lines missed.</span>
|
1763
|
+
</div>
|
1764
|
+
</div>
|
1765
|
+
|
1766
|
+
<pre>
|
1767
|
+
<ol>
|
1768
|
+
|
1769
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
1770
|
+
<span class="hits">1</span>
|
1771
|
+
|
1772
|
+
<code class="ruby">module RegexpExamples</code>
|
1773
|
+
</li>
|
1774
|
+
|
1775
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
1776
|
+
<span class="hits">1</span>
|
1777
|
+
|
1778
|
+
<code class="ruby"> class Parser</code>
|
1779
|
+
</li>
|
1780
|
+
|
1781
|
+
<li class="covered" data-hits="1" data-linenumber="3">
|
1782
|
+
<span class="hits">1</span>
|
1783
|
+
|
1784
|
+
<code class="ruby"> attr_reader :regexp_string</code>
|
1785
|
+
</li>
|
1786
|
+
|
1787
|
+
<li class="covered" data-hits="1" data-linenumber="4">
|
1788
|
+
<span class="hits">1</span>
|
1789
|
+
|
1790
|
+
<code class="ruby"> def initialize(regexp_string)</code>
|
1791
|
+
</li>
|
1792
|
+
|
1793
|
+
<li class="covered" data-hits="54" data-linenumber="5">
|
1794
|
+
<span class="hits">54</span>
|
1795
|
+
|
1796
|
+
<code class="ruby"> @regexp_string = regexp_string</code>
|
1797
|
+
</li>
|
1798
|
+
|
1799
|
+
<li class="covered" data-hits="54" data-linenumber="6">
|
1800
|
+
<span class="hits">54</span>
|
1801
|
+
|
1802
|
+
<code class="ruby"> @num_groups = 0</code>
|
1803
|
+
</li>
|
1804
|
+
|
1805
|
+
<li class="covered" data-hits="54" data-linenumber="7">
|
1806
|
+
<span class="hits">54</span>
|
1807
|
+
|
1808
|
+
<code class="ruby"> @current_position = 0</code>
|
1809
|
+
</li>
|
1810
|
+
|
1811
|
+
<li class="never" data-hits="" data-linenumber="8">
|
1812
|
+
|
1813
|
+
|
1814
|
+
<code class="ruby"> end</code>
|
1815
|
+
</li>
|
1816
|
+
|
1817
|
+
<li class="never" data-hits="" data-linenumber="9">
|
1818
|
+
|
1819
|
+
|
1820
|
+
<code class="ruby"></code>
|
1821
|
+
</li>
|
1822
|
+
|
1823
|
+
<li class="covered" data-hits="1" data-linenumber="10">
|
1824
|
+
<span class="hits">1</span>
|
1825
|
+
|
1826
|
+
<code class="ruby"> def parse</code>
|
1827
|
+
</li>
|
1828
|
+
|
1829
|
+
<li class="covered" data-hits="101" data-linenumber="11">
|
1830
|
+
<span class="hits">101</span>
|
1831
|
+
|
1832
|
+
<code class="ruby"> repeaters = []</code>
|
1833
|
+
</li>
|
1834
|
+
|
1835
|
+
<li class="covered" data-hits="101" data-linenumber="12">
|
1836
|
+
<span class="hits">101</span>
|
1837
|
+
|
1838
|
+
<code class="ruby"> while @current_position < regexp_string.length</code>
|
1839
|
+
</li>
|
1840
|
+
|
1841
|
+
<li class="covered" data-hits="312" data-linenumber="13">
|
1842
|
+
<span class="hits">312</span>
|
1843
|
+
|
1844
|
+
<code class="ruby"> group = parse_group(repeaters)</code>
|
1845
|
+
</li>
|
1846
|
+
|
1847
|
+
<li class="covered" data-hits="312" data-linenumber="14">
|
1848
|
+
<span class="hits">312</span>
|
1849
|
+
|
1850
|
+
<code class="ruby"> break if group.is_a? MultiGroupEnd</code>
|
1851
|
+
</li>
|
1852
|
+
|
1853
|
+
<li class="covered" data-hits="271" data-linenumber="15">
|
1854
|
+
<span class="hits">271</span>
|
1855
|
+
|
1856
|
+
<code class="ruby"> repeaters = [] if group.is_a? OrGroup</code>
|
1857
|
+
</li>
|
1858
|
+
|
1859
|
+
<li class="covered" data-hits="271" data-linenumber="16">
|
1860
|
+
<span class="hits">271</span>
|
1861
|
+
|
1862
|
+
<code class="ruby"> @current_position += 1</code>
|
1863
|
+
</li>
|
1864
|
+
|
1865
|
+
<li class="covered" data-hits="271" data-linenumber="17">
|
1866
|
+
<span class="hits">271</span>
|
1867
|
+
|
1868
|
+
<code class="ruby"> repeaters << parse_repeater(group)</code>
|
1869
|
+
</li>
|
1870
|
+
|
1871
|
+
<li class="never" data-hits="" data-linenumber="18">
|
1872
|
+
|
1873
|
+
|
1874
|
+
<code class="ruby"> end</code>
|
1875
|
+
</li>
|
1876
|
+
|
1877
|
+
<li class="covered" data-hits="101" data-linenumber="19">
|
1878
|
+
<span class="hits">101</span>
|
1879
|
+
|
1880
|
+
<code class="ruby"> repeaters</code>
|
1881
|
+
</li>
|
1882
|
+
|
1883
|
+
<li class="never" data-hits="" data-linenumber="20">
|
1884
|
+
|
1885
|
+
|
1886
|
+
<code class="ruby"> end</code>
|
1887
|
+
</li>
|
1888
|
+
|
1889
|
+
<li class="never" data-hits="" data-linenumber="21">
|
1890
|
+
|
1891
|
+
|
1892
|
+
<code class="ruby"></code>
|
1893
|
+
</li>
|
1894
|
+
|
1895
|
+
<li class="covered" data-hits="1" data-linenumber="22">
|
1896
|
+
<span class="hits">1</span>
|
1897
|
+
|
1898
|
+
<code class="ruby"> private</code>
|
1899
|
+
</li>
|
1900
|
+
|
1901
|
+
<li class="never" data-hits="" data-linenumber="23">
|
1902
|
+
|
1903
|
+
|
1904
|
+
<code class="ruby"></code>
|
1905
|
+
</li>
|
1906
|
+
|
1907
|
+
<li class="covered" data-hits="1" data-linenumber="24">
|
1908
|
+
<span class="hits">1</span>
|
1909
|
+
|
1910
|
+
<code class="ruby"> def parse_group(repeaters)</code>
|
1911
|
+
</li>
|
1912
|
+
|
1913
|
+
<li class="covered" data-hits="312" data-linenumber="25">
|
1914
|
+
<span class="hits">312</span>
|
1915
|
+
|
1916
|
+
<code class="ruby"> char = regexp_string[@current_position]</code>
|
1917
|
+
</li>
|
1918
|
+
|
1919
|
+
<li class="covered" data-hits="312" data-linenumber="26">
|
1920
|
+
<span class="hits">312</span>
|
1921
|
+
|
1922
|
+
<code class="ruby"> case char</code>
|
1923
|
+
</li>
|
1924
|
+
|
1925
|
+
<li class="never" data-hits="" data-linenumber="27">
|
1926
|
+
|
1927
|
+
|
1928
|
+
<code class="ruby"> when '('</code>
|
1929
|
+
</li>
|
1930
|
+
|
1931
|
+
<li class="covered" data-hits="41" data-linenumber="28">
|
1932
|
+
<span class="hits">41</span>
|
1933
|
+
|
1934
|
+
<code class="ruby"> group = parse_multi_group</code>
|
1935
|
+
</li>
|
1936
|
+
|
1937
|
+
<li class="never" data-hits="" data-linenumber="29">
|
1938
|
+
|
1939
|
+
|
1940
|
+
<code class="ruby"> when ')'</code>
|
1941
|
+
</li>
|
1942
|
+
|
1943
|
+
<li class="covered" data-hits="41" data-linenumber="30">
|
1944
|
+
<span class="hits">41</span>
|
1945
|
+
|
1946
|
+
<code class="ruby"> group = parse_multi_end_group</code>
|
1947
|
+
</li>
|
1948
|
+
|
1949
|
+
<li class="never" data-hits="" data-linenumber="31">
|
1950
|
+
|
1951
|
+
|
1952
|
+
<code class="ruby"> when '['</code>
|
1953
|
+
</li>
|
1954
|
+
|
1955
|
+
<li class="covered" data-hits="14" data-linenumber="32">
|
1956
|
+
<span class="hits">14</span>
|
1957
|
+
|
1958
|
+
<code class="ruby"> group = parse_char_group</code>
|
1959
|
+
</li>
|
1960
|
+
|
1961
|
+
<li class="never" data-hits="" data-linenumber="33">
|
1962
|
+
|
1963
|
+
|
1964
|
+
<code class="ruby"> when '.'</code>
|
1965
|
+
</li>
|
1966
|
+
|
1967
|
+
<li class="covered" data-hits="1" data-linenumber="34">
|
1968
|
+
<span class="hits">1</span>
|
1969
|
+
|
1970
|
+
<code class="ruby"> group = parse_dot_group</code>
|
1971
|
+
</li>
|
1972
|
+
|
1973
|
+
<li class="never" data-hits="" data-linenumber="35">
|
1974
|
+
|
1975
|
+
|
1976
|
+
<code class="ruby"> when '|'</code>
|
1977
|
+
</li>
|
1978
|
+
|
1979
|
+
<li class="covered" data-hits="6" data-linenumber="36">
|
1980
|
+
<span class="hits">6</span>
|
1981
|
+
|
1982
|
+
<code class="ruby"> group = parse_or_group(repeaters)</code>
|
1983
|
+
</li>
|
1984
|
+
|
1985
|
+
<li class="never" data-hits="" data-linenumber="37">
|
1986
|
+
|
1987
|
+
|
1988
|
+
<code class="ruby"> when '\\'</code>
|
1989
|
+
</li>
|
1990
|
+
|
1991
|
+
<li class="covered" data-hits="36" data-linenumber="38">
|
1992
|
+
<span class="hits">36</span>
|
1993
|
+
|
1994
|
+
<code class="ruby"> group = parse_after_backslash_group</code>
|
1995
|
+
</li>
|
1996
|
+
|
1997
|
+
<li class="never" data-hits="" data-linenumber="39">
|
1998
|
+
|
1999
|
+
|
2000
|
+
<code class="ruby"> else</code>
|
2001
|
+
</li>
|
2002
|
+
|
2003
|
+
<li class="covered" data-hits="173" data-linenumber="40">
|
2004
|
+
<span class="hits">173</span>
|
2005
|
+
|
2006
|
+
<code class="ruby"> group = parse_single_char_group(char)</code>
|
2007
|
+
</li>
|
2008
|
+
|
2009
|
+
<li class="never" data-hits="" data-linenumber="41">
|
2010
|
+
|
2011
|
+
|
2012
|
+
<code class="ruby"> end</code>
|
2013
|
+
</li>
|
2014
|
+
|
2015
|
+
<li class="covered" data-hits="312" data-linenumber="42">
|
2016
|
+
<span class="hits">312</span>
|
2017
|
+
|
2018
|
+
<code class="ruby"> group</code>
|
2019
|
+
</li>
|
2020
|
+
|
2021
|
+
<li class="never" data-hits="" data-linenumber="43">
|
2022
|
+
|
2023
|
+
|
2024
|
+
<code class="ruby"> end</code>
|
2025
|
+
</li>
|
2026
|
+
|
2027
|
+
<li class="never" data-hits="" data-linenumber="44">
|
2028
|
+
|
2029
|
+
|
2030
|
+
<code class="ruby"></code>
|
2031
|
+
</li>
|
2032
|
+
|
2033
|
+
<li class="covered" data-hits="1" data-linenumber="45">
|
2034
|
+
<span class="hits">1</span>
|
2035
|
+
|
2036
|
+
<code class="ruby"> def parse_after_backslash_group</code>
|
2037
|
+
</li>
|
2038
|
+
|
2039
|
+
<li class="covered" data-hits="36" data-linenumber="46">
|
2040
|
+
<span class="hits">36</span>
|
2041
|
+
|
2042
|
+
<code class="ruby"> @current_position += 1</code>
|
2043
|
+
</li>
|
2044
|
+
|
2045
|
+
<li class="never" data-hits="" data-linenumber="47">
|
2046
|
+
|
2047
|
+
|
2048
|
+
<code class="ruby"> case</code>
|
2049
|
+
</li>
|
2050
|
+
|
2051
|
+
<li class="never" data-hits="" data-linenumber="48">
|
2052
|
+
|
2053
|
+
|
2054
|
+
<code class="ruby"> when rest_of_string =~ /\A(\d+)/</code>
|
2055
|
+
</li>
|
2056
|
+
|
2057
|
+
<li class="covered" data-hits="19" data-linenumber="49">
|
2058
|
+
<span class="hits">19</span>
|
2059
|
+
|
2060
|
+
<code class="ruby"> @current_position += ($1.length - 1) # In case of 10+ backrefs!</code>
|
2061
|
+
</li>
|
2062
|
+
|
2063
|
+
<li class="covered" data-hits="19" data-linenumber="50">
|
2064
|
+
<span class="hits">19</span>
|
2065
|
+
|
2066
|
+
<code class="ruby"> group = parse_backreference_group($1)</code>
|
2067
|
+
</li>
|
2068
|
+
|
2069
|
+
<li class="never" data-hits="" data-linenumber="51">
|
2070
|
+
|
2071
|
+
|
2072
|
+
<code class="ruby"> when rest_of_string =~ /\Ak<([^>]+)>/ # Named capture group</code>
|
2073
|
+
</li>
|
2074
|
+
|
2075
|
+
<li class="covered" data-hits="1" data-linenumber="52">
|
2076
|
+
<span class="hits">1</span>
|
2077
|
+
|
2078
|
+
<code class="ruby"> @current_position += ($1.length + 2)</code>
|
2079
|
+
</li>
|
2080
|
+
|
2081
|
+
<li class="covered" data-hits="1" data-linenumber="53">
|
2082
|
+
<span class="hits">1</span>
|
2083
|
+
|
2084
|
+
<code class="ruby"> group = parse_backreference_group($1)</code>
|
2085
|
+
</li>
|
2086
|
+
|
2087
|
+
<li class="never" data-hits="" data-linenumber="54">
|
2088
|
+
|
2089
|
+
|
2090
|
+
<code class="ruby"> when BackslashCharMap.keys.include?(regexp_string[@current_position])</code>
|
2091
|
+
</li>
|
2092
|
+
|
2093
|
+
<li class="covered" data-hits="14" data-linenumber="55">
|
2094
|
+
<span class="hits">14</span>
|
2095
|
+
|
2096
|
+
<code class="ruby"> group = CharGroup.new(</code>
|
2097
|
+
</li>
|
2098
|
+
|
2099
|
+
<li class="never" data-hits="" data-linenumber="56">
|
2100
|
+
|
2101
|
+
|
2102
|
+
<code class="ruby"> BackslashCharMap[regexp_string[@current_position]])</code>
|
2103
|
+
</li>
|
2104
|
+
|
2105
|
+
<li class="never" data-hits="" data-linenumber="57">
|
2106
|
+
|
2107
|
+
|
2108
|
+
<code class="ruby"> # TODO: There are also a bunch of multi-char matches to watch out for:</code>
|
2109
|
+
</li>
|
2110
|
+
|
2111
|
+
<li class="never" data-hits="" data-linenumber="58">
|
2112
|
+
|
2113
|
+
|
2114
|
+
<code class="ruby"> # http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals</code>
|
2115
|
+
</li>
|
2116
|
+
|
2117
|
+
<li class="never" data-hits="" data-linenumber="59">
|
2118
|
+
|
2119
|
+
|
2120
|
+
<code class="ruby"> else</code>
|
2121
|
+
</li>
|
2122
|
+
|
2123
|
+
<li class="covered" data-hits="2" data-linenumber="60">
|
2124
|
+
<span class="hits">2</span>
|
2125
|
+
|
2126
|
+
<code class="ruby"> group = parse_single_char_group( regexp_string[@current_position] )</code>
|
2127
|
+
</li>
|
2128
|
+
|
2129
|
+
<li class="never" data-hits="" data-linenumber="61">
|
2130
|
+
|
2131
|
+
|
2132
|
+
<code class="ruby"> # TODO: What about cases like \A, \z, \Z ?</code>
|
2133
|
+
</li>
|
2134
|
+
|
2135
|
+
<li class="covered" data-hits="36" data-linenumber="62">
|
2136
|
+
<span class="hits">36</span>
|
2137
|
+
|
2138
|
+
<code class="ruby"> end</code>
|
2139
|
+
</li>
|
2140
|
+
|
2141
|
+
<li class="covered" data-hits="36" data-linenumber="63">
|
2142
|
+
<span class="hits">36</span>
|
2143
|
+
|
2144
|
+
<code class="ruby"> group</code>
|
2145
|
+
</li>
|
2146
|
+
|
2147
|
+
<li class="never" data-hits="" data-linenumber="64">
|
2148
|
+
|
2149
|
+
|
2150
|
+
<code class="ruby"> end</code>
|
2151
|
+
</li>
|
2152
|
+
|
2153
|
+
<li class="never" data-hits="" data-linenumber="65">
|
2154
|
+
|
2155
|
+
|
2156
|
+
<code class="ruby"></code>
|
2157
|
+
</li>
|
2158
|
+
|
2159
|
+
<li class="covered" data-hits="1" data-linenumber="66">
|
2160
|
+
<span class="hits">1</span>
|
2161
|
+
|
2162
|
+
<code class="ruby"> def parse_repeater(group)</code>
|
2163
|
+
</li>
|
2164
|
+
|
2165
|
+
<li class="covered" data-hits="271" data-linenumber="67">
|
2166
|
+
<span class="hits">271</span>
|
2167
|
+
|
2168
|
+
<code class="ruby"> char = regexp_string[@current_position]</code>
|
2169
|
+
</li>
|
2170
|
+
|
2171
|
+
<li class="covered" data-hits="271" data-linenumber="68">
|
2172
|
+
<span class="hits">271</span>
|
2173
|
+
|
2174
|
+
<code class="ruby"> case char</code>
|
2175
|
+
</li>
|
2176
|
+
|
2177
|
+
<li class="never" data-hits="" data-linenumber="69">
|
2178
|
+
|
2179
|
+
|
2180
|
+
<code class="ruby"> when '*'</code>
|
2181
|
+
</li>
|
2182
|
+
|
2183
|
+
<li class="covered" data-hits="5" data-linenumber="70">
|
2184
|
+
<span class="hits">5</span>
|
2185
|
+
|
2186
|
+
<code class="ruby"> repeater = parse_star_repeater(group)</code>
|
2187
|
+
</li>
|
2188
|
+
|
2189
|
+
<li class="never" data-hits="" data-linenumber="71">
|
2190
|
+
|
2191
|
+
|
2192
|
+
<code class="ruby"> when '+'</code>
|
2193
|
+
</li>
|
2194
|
+
|
2195
|
+
<li class="covered" data-hits="4" data-linenumber="72">
|
2196
|
+
<span class="hits">4</span>
|
2197
|
+
|
2198
|
+
<code class="ruby"> repeater = parse_plus_repeater(group)</code>
|
2199
|
+
</li>
|
2200
|
+
|
2201
|
+
<li class="never" data-hits="" data-linenumber="73">
|
2202
|
+
|
2203
|
+
|
2204
|
+
<code class="ruby"> when '?'</code>
|
2205
|
+
</li>
|
2206
|
+
|
2207
|
+
<li class="covered" data-hits="11" data-linenumber="74">
|
2208
|
+
<span class="hits">11</span>
|
2209
|
+
|
2210
|
+
<code class="ruby"> repeater = parse_question_mark_repeater(group)</code>
|
2211
|
+
</li>
|
2212
|
+
|
2213
|
+
<li class="never" data-hits="" data-linenumber="75">
|
2214
|
+
|
2215
|
+
|
2216
|
+
<code class="ruby"> when '{'</code>
|
2217
|
+
</li>
|
2218
|
+
|
2219
|
+
<li class="covered" data-hits="4" data-linenumber="76">
|
2220
|
+
<span class="hits">4</span>
|
2221
|
+
|
2222
|
+
<code class="ruby"> repeater = parse_range_repeater(group)</code>
|
2223
|
+
</li>
|
2224
|
+
|
2225
|
+
<li class="never" data-hits="" data-linenumber="77">
|
2226
|
+
|
2227
|
+
|
2228
|
+
<code class="ruby"> else</code>
|
2229
|
+
</li>
|
2230
|
+
|
2231
|
+
<li class="covered" data-hits="247" data-linenumber="78">
|
2232
|
+
<span class="hits">247</span>
|
2233
|
+
|
2234
|
+
<code class="ruby"> repeater = parse_one_time_repeater(group)</code>
|
2235
|
+
</li>
|
2236
|
+
|
2237
|
+
<li class="never" data-hits="" data-linenumber="79">
|
2238
|
+
|
2239
|
+
|
2240
|
+
<code class="ruby"> end</code>
|
2241
|
+
</li>
|
2242
|
+
|
2243
|
+
<li class="covered" data-hits="271" data-linenumber="80">
|
2244
|
+
<span class="hits">271</span>
|
2245
|
+
|
2246
|
+
<code class="ruby"> repeater</code>
|
2247
|
+
</li>
|
2248
|
+
|
2249
|
+
<li class="never" data-hits="" data-linenumber="81">
|
2250
|
+
|
2251
|
+
|
2252
|
+
<code class="ruby"> end</code>
|
2253
|
+
</li>
|
2254
|
+
|
2255
|
+
<li class="never" data-hits="" data-linenumber="82">
|
2256
|
+
|
2257
|
+
|
2258
|
+
<code class="ruby"></code>
|
2259
|
+
</li>
|
2260
|
+
|
2261
|
+
<li class="covered" data-hits="1" data-linenumber="83">
|
2262
|
+
<span class="hits">1</span>
|
2263
|
+
|
2264
|
+
<code class="ruby"> def parse_multi_group</code>
|
2265
|
+
</li>
|
2266
|
+
|
2267
|
+
<li class="covered" data-hits="41" data-linenumber="84">
|
2268
|
+
<span class="hits">41</span>
|
2269
|
+
|
2270
|
+
<code class="ruby"> @current_position += 1</code>
|
2271
|
+
</li>
|
2272
|
+
|
2273
|
+
<li class="covered" data-hits="41" data-linenumber="85">
|
2274
|
+
<span class="hits">41</span>
|
2275
|
+
|
2276
|
+
<code class="ruby"> @num_groups += 1</code>
|
2277
|
+
</li>
|
2278
|
+
|
2279
|
+
<li class="covered" data-hits="41" data-linenumber="86">
|
2280
|
+
<span class="hits">41</span>
|
2281
|
+
|
2282
|
+
<code class="ruby"> group_id = nil # init</code>
|
2283
|
+
</li>
|
2284
|
+
|
2285
|
+
<li class="covered" data-hits="41" data-linenumber="87">
|
2286
|
+
<span class="hits">41</span>
|
2287
|
+
|
2288
|
+
<code class="ruby"> rest_of_string.match(/\A(\?)?(:|!|=|<(!|=|[^!=][^>]*))?/) do |match|</code>
|
2289
|
+
</li>
|
2290
|
+
|
2291
|
+
<li class="never" data-hits="" data-linenumber="88">
|
2292
|
+
|
2293
|
+
|
2294
|
+
<code class="ruby"> case</code>
|
2295
|
+
</li>
|
2296
|
+
|
2297
|
+
<li class="never" data-hits="" data-linenumber="89">
|
2298
|
+
|
2299
|
+
|
2300
|
+
<code class="ruby"> when match[1].nil? # e.g. /(normal)/</code>
|
2301
|
+
</li>
|
2302
|
+
|
2303
|
+
<li class="covered" data-hits="38" data-linenumber="90">
|
2304
|
+
<span class="hits">38</span>
|
2305
|
+
|
2306
|
+
<code class="ruby"> group_id = @num_groups.to_s</code>
|
2307
|
+
</li>
|
2308
|
+
|
2309
|
+
<li class="never" data-hits="" data-linenumber="91">
|
2310
|
+
|
2311
|
+
|
2312
|
+
<code class="ruby"> when match[2] == ':' # e.g. /(?:nocapture)/</code>
|
2313
|
+
</li>
|
2314
|
+
|
2315
|
+
<li class="covered" data-hits="1" data-linenumber="92">
|
2316
|
+
<span class="hits">1</span>
|
2317
|
+
|
2318
|
+
<code class="ruby"> @current_position += 2</code>
|
2319
|
+
</li>
|
2320
|
+
|
2321
|
+
<li class="covered" data-hits="1" data-linenumber="93">
|
2322
|
+
<span class="hits">1</span>
|
2323
|
+
|
2324
|
+
<code class="ruby"> group_id = nil</code>
|
2325
|
+
</li>
|
2326
|
+
|
2327
|
+
<li class="never" data-hits="" data-linenumber="94">
|
2328
|
+
|
2329
|
+
|
2330
|
+
<code class="ruby"> when %w(! =).include?(match[2]) # e.g. /(?=lookahead)/, /(?!neglookahead)/</code>
|
2331
|
+
</li>
|
2332
|
+
|
2333
|
+
<li class="never" data-hits="" data-linenumber="95">
|
2334
|
+
|
2335
|
+
|
2336
|
+
<code class="ruby"> # TODO: Raise exception</code>
|
2337
|
+
</li>
|
2338
|
+
|
2339
|
+
<li class="never" data-hits="" data-linenumber="96">
|
2340
|
+
|
2341
|
+
|
2342
|
+
<code class="ruby"> when %w(! =).include?(match[3]) # e.g. /(?<=lookbehind)/, /(?<!neglookbehind)/</code>
|
2343
|
+
</li>
|
2344
|
+
|
2345
|
+
<li class="never" data-hits="" data-linenumber="97">
|
2346
|
+
|
2347
|
+
|
2348
|
+
<code class="ruby"> # TODO: Raise exception</code>
|
2349
|
+
</li>
|
2350
|
+
|
2351
|
+
<li class="never" data-hits="" data-linenumber="98">
|
2352
|
+
|
2353
|
+
|
2354
|
+
<code class="ruby"> else # e.g. /(?<name>namedgroup)/</code>
|
2355
|
+
</li>
|
2356
|
+
|
2357
|
+
<li class="covered" data-hits="2" data-linenumber="99">
|
2358
|
+
<span class="hits">2</span>
|
2359
|
+
|
2360
|
+
<code class="ruby"> @current_position += (match[3].length + 3)</code>
|
2361
|
+
</li>
|
2362
|
+
|
2363
|
+
<li class="covered" data-hits="2" data-linenumber="100">
|
2364
|
+
<span class="hits">2</span>
|
2365
|
+
|
2366
|
+
<code class="ruby"> group_id = match[3]</code>
|
2367
|
+
</li>
|
2368
|
+
|
2369
|
+
<li class="covered" data-hits="41" data-linenumber="101">
|
2370
|
+
<span class="hits">41</span>
|
2371
|
+
|
2372
|
+
<code class="ruby"> end</code>
|
2373
|
+
</li>
|
2374
|
+
|
2375
|
+
<li class="never" data-hits="" data-linenumber="102">
|
2376
|
+
|
2377
|
+
|
2378
|
+
<code class="ruby"> end</code>
|
2379
|
+
</li>
|
2380
|
+
|
2381
|
+
<li class="covered" data-hits="41" data-linenumber="103">
|
2382
|
+
<span class="hits">41</span>
|
2383
|
+
|
2384
|
+
<code class="ruby"> groups = parse</code>
|
2385
|
+
</li>
|
2386
|
+
|
2387
|
+
<li class="covered" data-hits="41" data-linenumber="104">
|
2388
|
+
<span class="hits">41</span>
|
2389
|
+
|
2390
|
+
<code class="ruby"> MultiGroup.new(groups, group_id)</code>
|
2391
|
+
</li>
|
2392
|
+
|
2393
|
+
<li class="never" data-hits="" data-linenumber="105">
|
2394
|
+
|
2395
|
+
|
2396
|
+
<code class="ruby"> end</code>
|
2397
|
+
</li>
|
2398
|
+
|
2399
|
+
<li class="never" data-hits="" data-linenumber="106">
|
2400
|
+
|
2401
|
+
|
2402
|
+
<code class="ruby"></code>
|
2403
|
+
</li>
|
2404
|
+
|
2405
|
+
<li class="covered" data-hits="1" data-linenumber="107">
|
2406
|
+
<span class="hits">1</span>
|
2407
|
+
|
2408
|
+
<code class="ruby"> def parse_multi_end_group</code>
|
2409
|
+
</li>
|
2410
|
+
|
2411
|
+
<li class="covered" data-hits="41" data-linenumber="108">
|
2412
|
+
<span class="hits">41</span>
|
2413
|
+
|
2414
|
+
<code class="ruby"> MultiGroupEnd.new</code>
|
2415
|
+
</li>
|
2416
|
+
|
2417
|
+
<li class="never" data-hits="" data-linenumber="109">
|
2418
|
+
|
2419
|
+
|
2420
|
+
<code class="ruby"> end</code>
|
2421
|
+
</li>
|
2422
|
+
|
2423
|
+
<li class="never" data-hits="" data-linenumber="110">
|
2424
|
+
|
2425
|
+
|
2426
|
+
<code class="ruby"></code>
|
2427
|
+
</li>
|
2428
|
+
|
2429
|
+
<li class="covered" data-hits="1" data-linenumber="111">
|
2430
|
+
<span class="hits">1</span>
|
2431
|
+
|
2432
|
+
<code class="ruby"> def parse_char_group</code>
|
2433
|
+
</li>
|
2434
|
+
|
2435
|
+
<li class="covered" data-hits="14" data-linenumber="112">
|
2436
|
+
<span class="hits">14</span>
|
2437
|
+
|
2438
|
+
<code class="ruby"> chars = []</code>
|
2439
|
+
</li>
|
2440
|
+
|
2441
|
+
<li class="covered" data-hits="14" data-linenumber="113">
|
2442
|
+
<span class="hits">14</span>
|
2443
|
+
|
2444
|
+
<code class="ruby"> @current_position += 1</code>
|
2445
|
+
</li>
|
2446
|
+
|
2447
|
+
<li class="covered" data-hits="14" data-linenumber="114">
|
2448
|
+
<span class="hits">14</span>
|
2449
|
+
|
2450
|
+
<code class="ruby"> if regexp_string[@current_position] == ']'</code>
|
2451
|
+
</li>
|
2452
|
+
|
2453
|
+
<li class="never" data-hits="" data-linenumber="115">
|
2454
|
+
|
2455
|
+
|
2456
|
+
<code class="ruby"> # Beware of the sneaky edge case:</code>
|
2457
|
+
</li>
|
2458
|
+
|
2459
|
+
<li class="never" data-hits="" data-linenumber="116">
|
2460
|
+
|
2461
|
+
|
2462
|
+
<code class="ruby"> # /[]]/ (match "]")</code>
|
2463
|
+
</li>
|
2464
|
+
|
2465
|
+
<li class="covered" data-hits="1" data-linenumber="117">
|
2466
|
+
<span class="hits">1</span>
|
2467
|
+
|
2468
|
+
<code class="ruby"> chars << ']'</code>
|
2469
|
+
</li>
|
2470
|
+
|
2471
|
+
<li class="covered" data-hits="1" data-linenumber="118">
|
2472
|
+
<span class="hits">1</span>
|
2473
|
+
|
2474
|
+
<code class="ruby"> @current_position += 1</code>
|
2475
|
+
</li>
|
2476
|
+
|
2477
|
+
<li class="never" data-hits="" data-linenumber="119">
|
2478
|
+
|
2479
|
+
|
2480
|
+
<code class="ruby"> end</code>
|
2481
|
+
</li>
|
2482
|
+
|
2483
|
+
<li class="never" data-hits="" data-linenumber="120">
|
2484
|
+
|
2485
|
+
|
2486
|
+
<code class="ruby"> until regexp_string[@current_position] == ']' \</code>
|
2487
|
+
</li>
|
2488
|
+
|
2489
|
+
<li class="covered" data-hits="14" data-linenumber="121">
|
2490
|
+
<span class="hits">14</span>
|
2491
|
+
|
2492
|
+
<code class="ruby"> && !regexp_string[0..@current_position-1].match(/[^\\](\\{2})*\\\z/)</code>
|
2493
|
+
</li>
|
2494
|
+
|
2495
|
+
<li class="never" data-hits="" data-linenumber="122">
|
2496
|
+
|
2497
|
+
|
2498
|
+
<code class="ruby"> # Beware of having an ODD number of "\" before the "]", e.g.</code>
|
2499
|
+
</li>
|
2500
|
+
|
2501
|
+
<li class="never" data-hits="" data-linenumber="123">
|
2502
|
+
|
2503
|
+
|
2504
|
+
<code class="ruby"> # /[\]]/ (match "]")</code>
|
2505
|
+
</li>
|
2506
|
+
|
2507
|
+
<li class="never" data-hits="" data-linenumber="124">
|
2508
|
+
|
2509
|
+
|
2510
|
+
<code class="ruby"> # /[\\]/ (match "\")</code>
|
2511
|
+
</li>
|
2512
|
+
|
2513
|
+
<li class="never" data-hits="" data-linenumber="125">
|
2514
|
+
|
2515
|
+
|
2516
|
+
<code class="ruby"> # /[\\\]]/ (match "\" or "]")</code>
|
2517
|
+
</li>
|
2518
|
+
|
2519
|
+
<li class="covered" data-hits="41" data-linenumber="126">
|
2520
|
+
<span class="hits">41</span>
|
2521
|
+
|
2522
|
+
<code class="ruby"> chars << regexp_string[@current_position]</code>
|
2523
|
+
</li>
|
2524
|
+
|
2525
|
+
<li class="covered" data-hits="41" data-linenumber="127">
|
2526
|
+
<span class="hits">41</span>
|
2527
|
+
|
2528
|
+
<code class="ruby"> @current_position += 1</code>
|
2529
|
+
</li>
|
2530
|
+
|
2531
|
+
<li class="never" data-hits="" data-linenumber="128">
|
2532
|
+
|
2533
|
+
|
2534
|
+
<code class="ruby"> end</code>
|
2535
|
+
</li>
|
2536
|
+
|
2537
|
+
<li class="covered" data-hits="14" data-linenumber="129">
|
2538
|
+
<span class="hits">14</span>
|
2539
|
+
|
2540
|
+
<code class="ruby"> CharGroup.new(chars)</code>
|
2541
|
+
</li>
|
2542
|
+
|
2543
|
+
<li class="never" data-hits="" data-linenumber="130">
|
2544
|
+
|
2545
|
+
|
2546
|
+
<code class="ruby"> end</code>
|
2547
|
+
</li>
|
2548
|
+
|
2549
|
+
<li class="never" data-hits="" data-linenumber="131">
|
2550
|
+
|
2551
|
+
|
2552
|
+
<code class="ruby"></code>
|
2553
|
+
</li>
|
2554
|
+
|
2555
|
+
<li class="covered" data-hits="1" data-linenumber="132">
|
2556
|
+
<span class="hits">1</span>
|
2557
|
+
|
2558
|
+
<code class="ruby"> def parse_dot_group</code>
|
2559
|
+
</li>
|
2560
|
+
|
2561
|
+
<li class="covered" data-hits="1" data-linenumber="133">
|
2562
|
+
<span class="hits">1</span>
|
2563
|
+
|
2564
|
+
<code class="ruby"> DotGroup.new</code>
|
2565
|
+
</li>
|
2566
|
+
|
2567
|
+
<li class="never" data-hits="" data-linenumber="134">
|
2568
|
+
|
2569
|
+
|
2570
|
+
<code class="ruby"> end</code>
|
2571
|
+
</li>
|
2572
|
+
|
2573
|
+
<li class="never" data-hits="" data-linenumber="135">
|
2574
|
+
|
2575
|
+
|
2576
|
+
<code class="ruby"></code>
|
2577
|
+
</li>
|
2578
|
+
|
2579
|
+
<li class="covered" data-hits="1" data-linenumber="136">
|
2580
|
+
<span class="hits">1</span>
|
2581
|
+
|
2582
|
+
<code class="ruby"> def parse_or_group(left_repeaters)</code>
|
2583
|
+
</li>
|
2584
|
+
|
2585
|
+
<li class="covered" data-hits="6" data-linenumber="137">
|
2586
|
+
<span class="hits">6</span>
|
2587
|
+
|
2588
|
+
<code class="ruby"> @current_position += 1</code>
|
2589
|
+
</li>
|
2590
|
+
|
2591
|
+
<li class="covered" data-hits="6" data-linenumber="138">
|
2592
|
+
<span class="hits">6</span>
|
2593
|
+
|
2594
|
+
<code class="ruby"> right_repeaters = parse</code>
|
2595
|
+
</li>
|
2596
|
+
|
2597
|
+
<li class="covered" data-hits="6" data-linenumber="139">
|
2598
|
+
<span class="hits">6</span>
|
2599
|
+
|
2600
|
+
<code class="ruby"> OrGroup.new(left_repeaters, right_repeaters)</code>
|
2601
|
+
</li>
|
2602
|
+
|
2603
|
+
<li class="never" data-hits="" data-linenumber="140">
|
2604
|
+
|
2605
|
+
|
2606
|
+
<code class="ruby"> end</code>
|
2607
|
+
</li>
|
2608
|
+
|
2609
|
+
<li class="never" data-hits="" data-linenumber="141">
|
2610
|
+
|
2611
|
+
|
2612
|
+
<code class="ruby"></code>
|
2613
|
+
</li>
|
2614
|
+
|
2615
|
+
<li class="never" data-hits="" data-linenumber="142">
|
2616
|
+
|
2617
|
+
|
2618
|
+
<code class="ruby"></code>
|
2619
|
+
</li>
|
2620
|
+
|
2621
|
+
<li class="covered" data-hits="1" data-linenumber="143">
|
2622
|
+
<span class="hits">1</span>
|
2623
|
+
|
2624
|
+
<code class="ruby"> def parse_single_char_group(char)</code>
|
2625
|
+
</li>
|
2626
|
+
|
2627
|
+
<li class="covered" data-hits="175" data-linenumber="144">
|
2628
|
+
<span class="hits">175</span>
|
2629
|
+
|
2630
|
+
<code class="ruby"> SingleCharGroup.new(char)</code>
|
2631
|
+
</li>
|
2632
|
+
|
2633
|
+
<li class="never" data-hits="" data-linenumber="145">
|
2634
|
+
|
2635
|
+
|
2636
|
+
<code class="ruby"> end</code>
|
2637
|
+
</li>
|
2638
|
+
|
2639
|
+
<li class="never" data-hits="" data-linenumber="146">
|
2640
|
+
|
2641
|
+
|
2642
|
+
<code class="ruby"></code>
|
2643
|
+
</li>
|
2644
|
+
|
2645
|
+
<li class="covered" data-hits="1" data-linenumber="147">
|
2646
|
+
<span class="hits">1</span>
|
2647
|
+
|
2648
|
+
<code class="ruby"> def parse_backreference_group(match)</code>
|
2649
|
+
</li>
|
2650
|
+
|
2651
|
+
<li class="covered" data-hits="20" data-linenumber="148">
|
2652
|
+
<span class="hits">20</span>
|
2653
|
+
|
2654
|
+
<code class="ruby"> BackReferenceGroup.new(match)</code>
|
2655
|
+
</li>
|
2656
|
+
|
2657
|
+
<li class="never" data-hits="" data-linenumber="149">
|
2658
|
+
|
2659
|
+
|
2660
|
+
<code class="ruby"> end</code>
|
2661
|
+
</li>
|
2662
|
+
|
2663
|
+
<li class="never" data-hits="" data-linenumber="150">
|
2664
|
+
|
2665
|
+
|
2666
|
+
<code class="ruby"></code>
|
2667
|
+
</li>
|
2668
|
+
|
2669
|
+
<li class="covered" data-hits="1" data-linenumber="151">
|
2670
|
+
<span class="hits">1</span>
|
2671
|
+
|
2672
|
+
<code class="ruby"> def parse_star_repeater(group)</code>
|
2673
|
+
</li>
|
2674
|
+
|
2675
|
+
<li class="covered" data-hits="5" data-linenumber="152">
|
2676
|
+
<span class="hits">5</span>
|
2677
|
+
|
2678
|
+
<code class="ruby"> @current_position += 1</code>
|
2679
|
+
</li>
|
2680
|
+
|
2681
|
+
<li class="covered" data-hits="5" data-linenumber="153">
|
2682
|
+
<span class="hits">5</span>
|
2683
|
+
|
2684
|
+
<code class="ruby"> StarRepeater.new(group)</code>
|
2685
|
+
</li>
|
2686
|
+
|
2687
|
+
<li class="never" data-hits="" data-linenumber="154">
|
2688
|
+
|
2689
|
+
|
2690
|
+
<code class="ruby"> end</code>
|
2691
|
+
</li>
|
2692
|
+
|
2693
|
+
<li class="never" data-hits="" data-linenumber="155">
|
2694
|
+
|
2695
|
+
|
2696
|
+
<code class="ruby"></code>
|
2697
|
+
</li>
|
2698
|
+
|
2699
|
+
<li class="covered" data-hits="1" data-linenumber="156">
|
2700
|
+
<span class="hits">1</span>
|
2701
|
+
|
2702
|
+
<code class="ruby"> def parse_plus_repeater(group)</code>
|
2703
|
+
</li>
|
2704
|
+
|
2705
|
+
<li class="covered" data-hits="4" data-linenumber="157">
|
2706
|
+
<span class="hits">4</span>
|
2707
|
+
|
2708
|
+
<code class="ruby"> @current_position += 1</code>
|
2709
|
+
</li>
|
2710
|
+
|
2711
|
+
<li class="covered" data-hits="4" data-linenumber="158">
|
2712
|
+
<span class="hits">4</span>
|
2713
|
+
|
2714
|
+
<code class="ruby"> PlusRepeater.new(group)</code>
|
2715
|
+
</li>
|
2716
|
+
|
2717
|
+
<li class="never" data-hits="" data-linenumber="159">
|
2718
|
+
|
2719
|
+
|
2720
|
+
<code class="ruby"> end</code>
|
2721
|
+
</li>
|
2722
|
+
|
2723
|
+
<li class="never" data-hits="" data-linenumber="160">
|
2724
|
+
|
2725
|
+
|
2726
|
+
<code class="ruby"></code>
|
2727
|
+
</li>
|
2728
|
+
|
2729
|
+
<li class="covered" data-hits="1" data-linenumber="161">
|
2730
|
+
<span class="hits">1</span>
|
2731
|
+
|
2732
|
+
<code class="ruby"> def parse_question_mark_repeater(group)</code>
|
2733
|
+
</li>
|
2734
|
+
|
2735
|
+
<li class="covered" data-hits="11" data-linenumber="162">
|
2736
|
+
<span class="hits">11</span>
|
2737
|
+
|
2738
|
+
<code class="ruby"> @current_position += 1</code>
|
2739
|
+
</li>
|
2740
|
+
|
2741
|
+
<li class="covered" data-hits="11" data-linenumber="163">
|
2742
|
+
<span class="hits">11</span>
|
2743
|
+
|
2744
|
+
<code class="ruby"> QuestionMarkRepeater.new(group)</code>
|
2745
|
+
</li>
|
2746
|
+
|
2747
|
+
<li class="never" data-hits="" data-linenumber="164">
|
2748
|
+
|
2749
|
+
|
2750
|
+
<code class="ruby"> end</code>
|
2751
|
+
</li>
|
2752
|
+
|
2753
|
+
<li class="never" data-hits="" data-linenumber="165">
|
2754
|
+
|
2755
|
+
|
2756
|
+
<code class="ruby"></code>
|
2757
|
+
</li>
|
2758
|
+
|
2759
|
+
<li class="covered" data-hits="1" data-linenumber="166">
|
2760
|
+
<span class="hits">1</span>
|
2761
|
+
|
2762
|
+
<code class="ruby"> def parse_range_repeater(group)</code>
|
2763
|
+
</li>
|
2764
|
+
|
2765
|
+
<li class="covered" data-hits="4" data-linenumber="167">
|
2766
|
+
<span class="hits">4</span>
|
2767
|
+
|
2768
|
+
<code class="ruby"> match = rest_of_string.match(/\A\{(\d+)(,)?(\d+)?\}/)</code>
|
2769
|
+
</li>
|
2770
|
+
|
2771
|
+
<li class="covered" data-hits="4" data-linenumber="168">
|
2772
|
+
<span class="hits">4</span>
|
2773
|
+
|
2774
|
+
<code class="ruby"> @current_position += match[0].size</code>
|
2775
|
+
</li>
|
2776
|
+
|
2777
|
+
<li class="covered" data-hits="4" data-linenumber="169">
|
2778
|
+
<span class="hits">4</span>
|
2779
|
+
|
2780
|
+
<code class="ruby"> min = match[1].to_i if match[1]</code>
|
2781
|
+
</li>
|
2782
|
+
|
2783
|
+
<li class="covered" data-hits="4" data-linenumber="170">
|
2784
|
+
<span class="hits">4</span>
|
2785
|
+
|
2786
|
+
<code class="ruby"> has_comma = !match[2].nil?</code>
|
2787
|
+
</li>
|
2788
|
+
|
2789
|
+
<li class="covered" data-hits="4" data-linenumber="171">
|
2790
|
+
<span class="hits">4</span>
|
2791
|
+
|
2792
|
+
<code class="ruby"> max = match[3].to_i if match[3]</code>
|
2793
|
+
</li>
|
2794
|
+
|
2795
|
+
<li class="covered" data-hits="4" data-linenumber="172">
|
2796
|
+
<span class="hits">4</span>
|
2797
|
+
|
2798
|
+
<code class="ruby"> RangeRepeater.new(group, min, has_comma, max)</code>
|
2799
|
+
</li>
|
2800
|
+
|
2801
|
+
<li class="never" data-hits="" data-linenumber="173">
|
2802
|
+
|
2803
|
+
|
2804
|
+
<code class="ruby"> end</code>
|
2805
|
+
</li>
|
2806
|
+
|
2807
|
+
<li class="never" data-hits="" data-linenumber="174">
|
2808
|
+
|
2809
|
+
|
2810
|
+
<code class="ruby"></code>
|
2811
|
+
</li>
|
2812
|
+
|
2813
|
+
<li class="covered" data-hits="1" data-linenumber="175">
|
2814
|
+
<span class="hits">1</span>
|
2815
|
+
|
2816
|
+
<code class="ruby"> def parse_one_time_repeater(group)</code>
|
2817
|
+
</li>
|
2818
|
+
|
2819
|
+
<li class="covered" data-hits="247" data-linenumber="176">
|
2820
|
+
<span class="hits">247</span>
|
2821
|
+
|
2822
|
+
<code class="ruby"> OneTimeRepeater.new(group)</code>
|
2823
|
+
</li>
|
2824
|
+
|
2825
|
+
<li class="never" data-hits="" data-linenumber="177">
|
2826
|
+
|
2827
|
+
|
2828
|
+
<code class="ruby"> end</code>
|
2829
|
+
</li>
|
2830
|
+
|
2831
|
+
<li class="never" data-hits="" data-linenumber="178">
|
2832
|
+
|
2833
|
+
|
2834
|
+
<code class="ruby"></code>
|
2835
|
+
</li>
|
2836
|
+
|
2837
|
+
<li class="covered" data-hits="1" data-linenumber="179">
|
2838
|
+
<span class="hits">1</span>
|
2839
|
+
|
2840
|
+
<code class="ruby"> def rest_of_string</code>
|
2841
|
+
</li>
|
2842
|
+
|
2843
|
+
<li class="covered" data-hits="98" data-linenumber="180">
|
2844
|
+
<span class="hits">98</span>
|
2845
|
+
|
2846
|
+
<code class="ruby"> regexp_string[@current_position..-1]</code>
|
2847
|
+
</li>
|
2848
|
+
|
2849
|
+
<li class="never" data-hits="" data-linenumber="181">
|
2850
|
+
|
2851
|
+
|
2852
|
+
<code class="ruby"> end</code>
|
2853
|
+
</li>
|
2854
|
+
|
2855
|
+
<li class="never" data-hits="" data-linenumber="182">
|
2856
|
+
|
2857
|
+
|
2858
|
+
<code class="ruby"> end</code>
|
2859
|
+
</li>
|
2860
|
+
|
2861
|
+
<li class="never" data-hits="" data-linenumber="183">
|
2862
|
+
|
2863
|
+
|
2864
|
+
<code class="ruby">end</code>
|
2865
|
+
</li>
|
2866
|
+
|
2867
|
+
<li class="never" data-hits="" data-linenumber="184">
|
2868
|
+
|
2869
|
+
|
2870
|
+
<code class="ruby"></code>
|
2871
|
+
</li>
|
2872
|
+
|
2873
|
+
</ol>
|
2874
|
+
</pre>
|
2875
|
+
</div>
|
2876
|
+
|
2877
|
+
<div class="source_table" id="0dc204f32cb2876d2238a2aae7dea86ad7f9e679">
|
2878
|
+
<div class="header">
|
2879
|
+
<h3>lib/regexp-examples/regexp_extensions.rb</h3>
|
2880
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
2881
|
+
<div>
|
2882
|
+
<b>9</b> relevant lines.
|
2883
|
+
<span class="green"><b>9</b> lines covered</span> and
|
2884
|
+
<span class="red"><b>0</b> lines missed.</span>
|
2885
|
+
</div>
|
2886
|
+
</div>
|
2887
|
+
|
2888
|
+
<pre>
|
2889
|
+
<ol>
|
2890
|
+
|
2891
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
2892
|
+
<span class="hits">1</span>
|
2893
|
+
|
2894
|
+
<code class="ruby">class Regexp</code>
|
2895
|
+
</li>
|
2896
|
+
|
2897
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
2898
|
+
<span class="hits">1</span>
|
2899
|
+
|
2900
|
+
<code class="ruby"> module Examples</code>
|
2901
|
+
</li>
|
2902
|
+
|
2903
|
+
<li class="covered" data-hits="1" data-linenumber="3">
|
2904
|
+
<span class="hits">1</span>
|
2905
|
+
|
2906
|
+
<code class="ruby"> def examples</code>
|
2907
|
+
</li>
|
2908
|
+
|
2909
|
+
<li class="covered" data-hits="54" data-linenumber="4">
|
2910
|
+
<span class="hits">54</span>
|
2911
|
+
|
2912
|
+
<code class="ruby"> partial_examples =</code>
|
2913
|
+
</li>
|
2914
|
+
|
2915
|
+
<li class="never" data-hits="" data-linenumber="5">
|
2916
|
+
|
2917
|
+
|
2918
|
+
<code class="ruby"> RegexpExamples::Parser.new(source)</code>
|
2919
|
+
</li>
|
2920
|
+
|
2921
|
+
<li class="never" data-hits="" data-linenumber="6">
|
2922
|
+
|
2923
|
+
|
2924
|
+
<code class="ruby"> .parse</code>
|
2925
|
+
</li>
|
2926
|
+
|
2927
|
+
<li class="covered" data-hits="114" data-linenumber="7">
|
2928
|
+
<span class="hits">114</span>
|
2929
|
+
|
2930
|
+
<code class="ruby"> .map {|repeater| repeater.result}</code>
|
2931
|
+
</li>
|
2932
|
+
|
2933
|
+
<li class="covered" data-hits="54" data-linenumber="8">
|
2934
|
+
<span class="hits">54</span>
|
2935
|
+
|
2936
|
+
<code class="ruby"> full_examples = RegexpExamples::permutations_of_strings(partial_examples.dup, no_join: true)</code>
|
2937
|
+
</li>
|
2938
|
+
|
2939
|
+
<li class="covered" data-hits="54" data-linenumber="9">
|
2940
|
+
<span class="hits">54</span>
|
2941
|
+
|
2942
|
+
<code class="ruby"> full_examples_with_backrefs = \</code>
|
2943
|
+
</li>
|
2944
|
+
|
2945
|
+
<li class="never" data-hits="" data-linenumber="10">
|
2946
|
+
|
2947
|
+
|
2948
|
+
<code class="ruby"> RegexpExamples::BackReferenceReplacer.new.substitute_backreferences(full_examples)</code>
|
2949
|
+
</li>
|
2950
|
+
|
2951
|
+
<li class="covered" data-hits="54" data-linenumber="11">
|
2952
|
+
<span class="hits">54</span>
|
2953
|
+
|
2954
|
+
<code class="ruby"> full_examples_with_backrefs.map(&:join)</code>
|
2955
|
+
</li>
|
2956
|
+
|
2957
|
+
<li class="never" data-hits="" data-linenumber="12">
|
2958
|
+
|
2959
|
+
|
2960
|
+
<code class="ruby"> end</code>
|
2961
|
+
</li>
|
2962
|
+
|
2963
|
+
<li class="never" data-hits="" data-linenumber="13">
|
2964
|
+
|
2965
|
+
|
2966
|
+
<code class="ruby"> end</code>
|
2967
|
+
</li>
|
2968
|
+
|
2969
|
+
<li class="covered" data-hits="1" data-linenumber="14">
|
2970
|
+
<span class="hits">1</span>
|
2971
|
+
|
2972
|
+
<code class="ruby"> include Examples</code>
|
2973
|
+
</li>
|
2974
|
+
|
2975
|
+
<li class="never" data-hits="" data-linenumber="15">
|
2976
|
+
|
2977
|
+
|
2978
|
+
<code class="ruby">end</code>
|
2979
|
+
</li>
|
2980
|
+
|
2981
|
+
<li class="never" data-hits="" data-linenumber="16">
|
2982
|
+
|
2983
|
+
|
2984
|
+
<code class="ruby"></code>
|
2985
|
+
</li>
|
2986
|
+
|
2987
|
+
</ol>
|
2988
|
+
</pre>
|
2989
|
+
</div>
|
2990
|
+
|
2991
|
+
<div class="source_table" id="430477f0c86b2d77a18fe51e32b818d48ab7e74b">
|
2992
|
+
<div class="header">
|
2993
|
+
<h3>lib/regexp-examples/repeaters.rb</h3>
|
2994
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
2995
|
+
<div>
|
2996
|
+
<b>43</b> relevant lines.
|
2997
|
+
<span class="green"><b>43</b> lines covered</span> and
|
2998
|
+
<span class="red"><b>0</b> lines missed.</span>
|
2999
|
+
</div>
|
3000
|
+
</div>
|
3001
|
+
|
3002
|
+
<pre>
|
3003
|
+
<ol>
|
3004
|
+
|
3005
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
3006
|
+
<span class="hits">1</span>
|
3007
|
+
|
3008
|
+
<code class="ruby">module RegexpExamples</code>
|
3009
|
+
</li>
|
3010
|
+
|
3011
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
3012
|
+
<span class="hits">1</span>
|
3013
|
+
|
3014
|
+
<code class="ruby"> class BaseRepeater</code>
|
3015
|
+
</li>
|
3016
|
+
|
3017
|
+
<li class="covered" data-hits="1" data-linenumber="3">
|
3018
|
+
<span class="hits">1</span>
|
3019
|
+
|
3020
|
+
<code class="ruby"> attr_reader :group</code>
|
3021
|
+
</li>
|
3022
|
+
|
3023
|
+
<li class="covered" data-hits="1" data-linenumber="4">
|
3024
|
+
<span class="hits">1</span>
|
3025
|
+
|
3026
|
+
<code class="ruby"> def initialize(group)</code>
|
3027
|
+
</li>
|
3028
|
+
|
3029
|
+
<li class="covered" data-hits="271" data-linenumber="5">
|
3030
|
+
<span class="hits">271</span>
|
3031
|
+
|
3032
|
+
<code class="ruby"> @group = group</code>
|
3033
|
+
</li>
|
3034
|
+
|
3035
|
+
<li class="never" data-hits="" data-linenumber="6">
|
3036
|
+
|
3037
|
+
|
3038
|
+
<code class="ruby"> end</code>
|
3039
|
+
</li>
|
3040
|
+
|
3041
|
+
<li class="never" data-hits="" data-linenumber="7">
|
3042
|
+
|
3043
|
+
|
3044
|
+
<code class="ruby"></code>
|
3045
|
+
</li>
|
3046
|
+
|
3047
|
+
<li class="covered" data-hits="1" data-linenumber="8">
|
3048
|
+
<span class="hits">1</span>
|
3049
|
+
|
3050
|
+
<code class="ruby"> def result(min_repeats, max_repeats)</code>
|
3051
|
+
</li>
|
3052
|
+
|
3053
|
+
<li class="covered" data-hits="271" data-linenumber="9">
|
3054
|
+
<span class="hits">271</span>
|
3055
|
+
|
3056
|
+
<code class="ruby"> group_results = @group.result[0 .. MaxGroupResults-1]</code>
|
3057
|
+
</li>
|
3058
|
+
|
3059
|
+
<li class="covered" data-hits="271" data-linenumber="10">
|
3060
|
+
<span class="hits">271</span>
|
3061
|
+
|
3062
|
+
<code class="ruby"> results = []</code>
|
3063
|
+
</li>
|
3064
|
+
|
3065
|
+
<li class="covered" data-hits="271" data-linenumber="11">
|
3066
|
+
<span class="hits">271</span>
|
3067
|
+
|
3068
|
+
<code class="ruby"> min_repeats.upto(max_repeats) do |repeats|</code>
|
3069
|
+
</li>
|
3070
|
+
|
3071
|
+
<li class="covered" data-hits="299" data-linenumber="12">
|
3072
|
+
<span class="hits">299</span>
|
3073
|
+
|
3074
|
+
<code class="ruby"> group_results.each do |group_result|</code>
|
3075
|
+
</li>
|
3076
|
+
|
3077
|
+
<li class="covered" data-hits="413" data-linenumber="13">
|
3078
|
+
<span class="hits">413</span>
|
3079
|
+
|
3080
|
+
<code class="ruby"> results << group_result * repeats</code>
|
3081
|
+
</li>
|
3082
|
+
|
3083
|
+
<li class="never" data-hits="" data-linenumber="14">
|
3084
|
+
|
3085
|
+
|
3086
|
+
<code class="ruby"> end</code>
|
3087
|
+
</li>
|
3088
|
+
|
3089
|
+
<li class="never" data-hits="" data-linenumber="15">
|
3090
|
+
|
3091
|
+
|
3092
|
+
<code class="ruby"> end</code>
|
3093
|
+
</li>
|
3094
|
+
|
3095
|
+
<li class="covered" data-hits="271" data-linenumber="16">
|
3096
|
+
<span class="hits">271</span>
|
3097
|
+
|
3098
|
+
<code class="ruby"> results.uniq</code>
|
3099
|
+
</li>
|
3100
|
+
|
3101
|
+
<li class="never" data-hits="" data-linenumber="17">
|
3102
|
+
|
3103
|
+
|
3104
|
+
<code class="ruby"> end</code>
|
3105
|
+
</li>
|
3106
|
+
|
3107
|
+
<li class="never" data-hits="" data-linenumber="18">
|
3108
|
+
|
3109
|
+
|
3110
|
+
<code class="ruby"> end</code>
|
3111
|
+
</li>
|
3112
|
+
|
3113
|
+
<li class="never" data-hits="" data-linenumber="19">
|
3114
|
+
|
3115
|
+
|
3116
|
+
<code class="ruby"></code>
|
3117
|
+
</li>
|
3118
|
+
|
3119
|
+
<li class="covered" data-hits="1" data-linenumber="20">
|
3120
|
+
<span class="hits">1</span>
|
3121
|
+
|
3122
|
+
<code class="ruby"> class OneTimeRepeater < BaseRepeater</code>
|
3123
|
+
</li>
|
3124
|
+
|
3125
|
+
<li class="covered" data-hits="1" data-linenumber="21">
|
3126
|
+
<span class="hits">1</span>
|
3127
|
+
|
3128
|
+
<code class="ruby"> def initialize(group)</code>
|
3129
|
+
</li>
|
3130
|
+
|
3131
|
+
<li class="covered" data-hits="247" data-linenumber="22">
|
3132
|
+
<span class="hits">247</span>
|
3133
|
+
|
3134
|
+
<code class="ruby"> super</code>
|
3135
|
+
</li>
|
3136
|
+
|
3137
|
+
<li class="never" data-hits="" data-linenumber="23">
|
3138
|
+
|
3139
|
+
|
3140
|
+
<code class="ruby"> end</code>
|
3141
|
+
</li>
|
3142
|
+
|
3143
|
+
<li class="never" data-hits="" data-linenumber="24">
|
3144
|
+
|
3145
|
+
|
3146
|
+
<code class="ruby"></code>
|
3147
|
+
</li>
|
3148
|
+
|
3149
|
+
<li class="covered" data-hits="1" data-linenumber="25">
|
3150
|
+
<span class="hits">1</span>
|
3151
|
+
|
3152
|
+
<code class="ruby"> def result</code>
|
3153
|
+
</li>
|
3154
|
+
|
3155
|
+
<li class="covered" data-hits="247" data-linenumber="26">
|
3156
|
+
<span class="hits">247</span>
|
3157
|
+
|
3158
|
+
<code class="ruby"> super(1, 1)</code>
|
3159
|
+
</li>
|
3160
|
+
|
3161
|
+
<li class="never" data-hits="" data-linenumber="27">
|
3162
|
+
|
3163
|
+
|
3164
|
+
<code class="ruby"> end</code>
|
3165
|
+
</li>
|
3166
|
+
|
3167
|
+
<li class="never" data-hits="" data-linenumber="28">
|
3168
|
+
|
3169
|
+
|
3170
|
+
<code class="ruby"> end</code>
|
3171
|
+
</li>
|
3172
|
+
|
3173
|
+
<li class="never" data-hits="" data-linenumber="29">
|
3174
|
+
|
3175
|
+
|
3176
|
+
<code class="ruby"></code>
|
3177
|
+
</li>
|
3178
|
+
|
3179
|
+
<li class="covered" data-hits="1" data-linenumber="30">
|
3180
|
+
<span class="hits">1</span>
|
3181
|
+
|
3182
|
+
<code class="ruby"> class StarRepeater < BaseRepeater</code>
|
3183
|
+
</li>
|
3184
|
+
|
3185
|
+
<li class="covered" data-hits="1" data-linenumber="31">
|
3186
|
+
<span class="hits">1</span>
|
3187
|
+
|
3188
|
+
<code class="ruby"> def initialize(group)</code>
|
3189
|
+
</li>
|
3190
|
+
|
3191
|
+
<li class="covered" data-hits="5" data-linenumber="32">
|
3192
|
+
<span class="hits">5</span>
|
3193
|
+
|
3194
|
+
<code class="ruby"> super</code>
|
3195
|
+
</li>
|
3196
|
+
|
3197
|
+
<li class="never" data-hits="" data-linenumber="33">
|
3198
|
+
|
3199
|
+
|
3200
|
+
<code class="ruby"> end</code>
|
3201
|
+
</li>
|
3202
|
+
|
3203
|
+
<li class="never" data-hits="" data-linenumber="34">
|
3204
|
+
|
3205
|
+
|
3206
|
+
<code class="ruby"></code>
|
3207
|
+
</li>
|
3208
|
+
|
3209
|
+
<li class="covered" data-hits="1" data-linenumber="35">
|
3210
|
+
<span class="hits">1</span>
|
3211
|
+
|
3212
|
+
<code class="ruby"> def result</code>
|
3213
|
+
</li>
|
3214
|
+
|
3215
|
+
<li class="covered" data-hits="5" data-linenumber="36">
|
3216
|
+
<span class="hits">5</span>
|
3217
|
+
|
3218
|
+
<code class="ruby"> super(0, TIMES)</code>
|
3219
|
+
</li>
|
3220
|
+
|
3221
|
+
<li class="never" data-hits="" data-linenumber="37">
|
3222
|
+
|
3223
|
+
|
3224
|
+
<code class="ruby"> end</code>
|
3225
|
+
</li>
|
3226
|
+
|
3227
|
+
<li class="never" data-hits="" data-linenumber="38">
|
3228
|
+
|
3229
|
+
|
3230
|
+
<code class="ruby"> end</code>
|
3231
|
+
</li>
|
3232
|
+
|
3233
|
+
<li class="never" data-hits="" data-linenumber="39">
|
3234
|
+
|
3235
|
+
|
3236
|
+
<code class="ruby"></code>
|
3237
|
+
</li>
|
3238
|
+
|
3239
|
+
<li class="covered" data-hits="1" data-linenumber="40">
|
3240
|
+
<span class="hits">1</span>
|
3241
|
+
|
3242
|
+
<code class="ruby"> class PlusRepeater < BaseRepeater</code>
|
3243
|
+
</li>
|
3244
|
+
|
3245
|
+
<li class="covered" data-hits="1" data-linenumber="41">
|
3246
|
+
<span class="hits">1</span>
|
3247
|
+
|
3248
|
+
<code class="ruby"> def initialize(group)</code>
|
3249
|
+
</li>
|
3250
|
+
|
3251
|
+
<li class="covered" data-hits="4" data-linenumber="42">
|
3252
|
+
<span class="hits">4</span>
|
3253
|
+
|
3254
|
+
<code class="ruby"> super</code>
|
3255
|
+
</li>
|
3256
|
+
|
3257
|
+
<li class="never" data-hits="" data-linenumber="43">
|
3258
|
+
|
3259
|
+
|
3260
|
+
<code class="ruby"> end</code>
|
3261
|
+
</li>
|
3262
|
+
|
3263
|
+
<li class="never" data-hits="" data-linenumber="44">
|
3264
|
+
|
3265
|
+
|
3266
|
+
<code class="ruby"></code>
|
3267
|
+
</li>
|
3268
|
+
|
3269
|
+
<li class="covered" data-hits="1" data-linenumber="45">
|
3270
|
+
<span class="hits">1</span>
|
3271
|
+
|
3272
|
+
<code class="ruby"> def result</code>
|
3273
|
+
</li>
|
3274
|
+
|
3275
|
+
<li class="covered" data-hits="4" data-linenumber="46">
|
3276
|
+
<span class="hits">4</span>
|
3277
|
+
|
3278
|
+
<code class="ruby"> super(1, TIMES)</code>
|
3279
|
+
</li>
|
3280
|
+
|
3281
|
+
<li class="never" data-hits="" data-linenumber="47">
|
3282
|
+
|
3283
|
+
|
3284
|
+
<code class="ruby"> end</code>
|
3285
|
+
</li>
|
3286
|
+
|
3287
|
+
<li class="never" data-hits="" data-linenumber="48">
|
3288
|
+
|
3289
|
+
|
3290
|
+
<code class="ruby"> end</code>
|
3291
|
+
</li>
|
3292
|
+
|
3293
|
+
<li class="never" data-hits="" data-linenumber="49">
|
3294
|
+
|
3295
|
+
|
3296
|
+
<code class="ruby"></code>
|
3297
|
+
</li>
|
3298
|
+
|
3299
|
+
<li class="covered" data-hits="1" data-linenumber="50">
|
3300
|
+
<span class="hits">1</span>
|
3301
|
+
|
3302
|
+
<code class="ruby"> class QuestionMarkRepeater < BaseRepeater</code>
|
3303
|
+
</li>
|
3304
|
+
|
3305
|
+
<li class="covered" data-hits="1" data-linenumber="51">
|
3306
|
+
<span class="hits">1</span>
|
3307
|
+
|
3308
|
+
<code class="ruby"> def initialize(group)</code>
|
3309
|
+
</li>
|
3310
|
+
|
3311
|
+
<li class="covered" data-hits="11" data-linenumber="52">
|
3312
|
+
<span class="hits">11</span>
|
3313
|
+
|
3314
|
+
<code class="ruby"> super</code>
|
3315
|
+
</li>
|
3316
|
+
|
3317
|
+
<li class="never" data-hits="" data-linenumber="53">
|
3318
|
+
|
3319
|
+
|
3320
|
+
<code class="ruby"> end</code>
|
3321
|
+
</li>
|
3322
|
+
|
3323
|
+
<li class="never" data-hits="" data-linenumber="54">
|
3324
|
+
|
3325
|
+
|
3326
|
+
<code class="ruby"></code>
|
3327
|
+
</li>
|
3328
|
+
|
3329
|
+
<li class="covered" data-hits="1" data-linenumber="55">
|
3330
|
+
<span class="hits">1</span>
|
3331
|
+
|
3332
|
+
<code class="ruby"> def result</code>
|
3333
|
+
</li>
|
3334
|
+
|
3335
|
+
<li class="covered" data-hits="11" data-linenumber="56">
|
3336
|
+
<span class="hits">11</span>
|
3337
|
+
|
3338
|
+
<code class="ruby"> super(0, 1)</code>
|
3339
|
+
</li>
|
3340
|
+
|
3341
|
+
<li class="never" data-hits="" data-linenumber="57">
|
3342
|
+
|
3343
|
+
|
3344
|
+
<code class="ruby"> end</code>
|
3345
|
+
</li>
|
3346
|
+
|
3347
|
+
<li class="never" data-hits="" data-linenumber="58">
|
3348
|
+
|
3349
|
+
|
3350
|
+
<code class="ruby"> end</code>
|
3351
|
+
</li>
|
3352
|
+
|
3353
|
+
<li class="never" data-hits="" data-linenumber="59">
|
3354
|
+
|
3355
|
+
|
3356
|
+
<code class="ruby"></code>
|
3357
|
+
</li>
|
3358
|
+
|
3359
|
+
<li class="covered" data-hits="1" data-linenumber="60">
|
3360
|
+
<span class="hits">1</span>
|
3361
|
+
|
3362
|
+
<code class="ruby"> class RangeRepeater < BaseRepeater</code>
|
3363
|
+
</li>
|
3364
|
+
|
3365
|
+
<li class="covered" data-hits="1" data-linenumber="61">
|
3366
|
+
<span class="hits">1</span>
|
3367
|
+
|
3368
|
+
<code class="ruby"> def initialize(group, min, has_comma, max)</code>
|
3369
|
+
</li>
|
3370
|
+
|
3371
|
+
<li class="covered" data-hits="4" data-linenumber="62">
|
3372
|
+
<span class="hits">4</span>
|
3373
|
+
|
3374
|
+
<code class="ruby"> super(group)</code>
|
3375
|
+
</li>
|
3376
|
+
|
3377
|
+
<li class="covered" data-hits="4" data-linenumber="63">
|
3378
|
+
<span class="hits">4</span>
|
3379
|
+
|
3380
|
+
<code class="ruby"> @min = min</code>
|
3381
|
+
</li>
|
3382
|
+
|
3383
|
+
<li class="covered" data-hits="4" data-linenumber="64">
|
3384
|
+
<span class="hits">4</span>
|
3385
|
+
|
3386
|
+
<code class="ruby"> if max</code>
|
3387
|
+
</li>
|
3388
|
+
|
3389
|
+
<li class="covered" data-hits="1" data-linenumber="65">
|
3390
|
+
<span class="hits">1</span>
|
3391
|
+
|
3392
|
+
<code class="ruby"> @max = max</code>
|
3393
|
+
</li>
|
3394
|
+
|
3395
|
+
<li class="covered" data-hits="3" data-linenumber="66">
|
3396
|
+
<span class="hits">3</span>
|
3397
|
+
|
3398
|
+
<code class="ruby"> elsif has_comma</code>
|
3399
|
+
</li>
|
3400
|
+
|
3401
|
+
<li class="covered" data-hits="1" data-linenumber="67">
|
3402
|
+
<span class="hits">1</span>
|
3403
|
+
|
3404
|
+
<code class="ruby"> @max = min + TIMES</code>
|
3405
|
+
</li>
|
3406
|
+
|
3407
|
+
<li class="never" data-hits="" data-linenumber="68">
|
3408
|
+
|
3409
|
+
|
3410
|
+
<code class="ruby"> else</code>
|
3411
|
+
</li>
|
3412
|
+
|
3413
|
+
<li class="covered" data-hits="2" data-linenumber="69">
|
3414
|
+
<span class="hits">2</span>
|
3415
|
+
|
3416
|
+
<code class="ruby"> @max = min</code>
|
3417
|
+
</li>
|
3418
|
+
|
3419
|
+
<li class="never" data-hits="" data-linenumber="70">
|
3420
|
+
|
3421
|
+
|
3422
|
+
<code class="ruby"> end</code>
|
3423
|
+
</li>
|
3424
|
+
|
3425
|
+
<li class="never" data-hits="" data-linenumber="71">
|
3426
|
+
|
3427
|
+
|
3428
|
+
<code class="ruby"> end</code>
|
3429
|
+
</li>
|
3430
|
+
|
3431
|
+
<li class="never" data-hits="" data-linenumber="72">
|
3432
|
+
|
3433
|
+
|
3434
|
+
<code class="ruby"></code>
|
3435
|
+
</li>
|
3436
|
+
|
3437
|
+
<li class="covered" data-hits="1" data-linenumber="73">
|
3438
|
+
<span class="hits">1</span>
|
3439
|
+
|
3440
|
+
<code class="ruby"> def result</code>
|
3441
|
+
</li>
|
3442
|
+
|
3443
|
+
<li class="covered" data-hits="4" data-linenumber="74">
|
3444
|
+
<span class="hits">4</span>
|
3445
|
+
|
3446
|
+
<code class="ruby"> super(@min, @max)</code>
|
3447
|
+
</li>
|
3448
|
+
|
3449
|
+
<li class="never" data-hits="" data-linenumber="75">
|
3450
|
+
|
3451
|
+
|
3452
|
+
<code class="ruby"> end</code>
|
3453
|
+
</li>
|
3454
|
+
|
3455
|
+
<li class="never" data-hits="" data-linenumber="76">
|
3456
|
+
|
3457
|
+
|
3458
|
+
<code class="ruby"> end</code>
|
3459
|
+
</li>
|
3460
|
+
|
3461
|
+
<li class="never" data-hits="" data-linenumber="77">
|
3462
|
+
|
3463
|
+
|
3464
|
+
<code class="ruby">end</code>
|
3465
|
+
</li>
|
3466
|
+
|
3467
|
+
<li class="never" data-hits="" data-linenumber="78">
|
3468
|
+
|
3469
|
+
|
3470
|
+
<code class="ruby"></code>
|
3471
|
+
</li>
|
3472
|
+
|
3473
|
+
</ol>
|
3474
|
+
</pre>
|
3475
|
+
</div>
|
3476
|
+
|
3477
|
+
<div class="source_table" id="73ece59f571550448cda013ec330081f40e82321">
|
3478
|
+
<div class="header">
|
3479
|
+
<h3>spec/regexp-examples_spec.rb</h3>
|
3480
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
3481
|
+
<div>
|
3482
|
+
<b>22</b> relevant lines.
|
3483
|
+
<span class="green"><b>22</b> lines covered</span> and
|
3484
|
+
<span class="red"><b>0</b> lines missed.</span>
|
3485
|
+
</div>
|
3486
|
+
</div>
|
3487
|
+
|
3488
|
+
<pre>
|
3489
|
+
<ol>
|
3490
|
+
|
3491
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
3492
|
+
<span class="hits">1</span>
|
3493
|
+
|
3494
|
+
<code class="ruby">RSpec.describe Regexp, "#examples" do</code>
|
3495
|
+
</li>
|
3496
|
+
|
3497
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
3498
|
+
<span class="hits">1</span>
|
3499
|
+
|
3500
|
+
<code class="ruby"> def self.examples_exist_and_match(*regexps)</code>
|
3501
|
+
</li>
|
3502
|
+
|
3503
|
+
<li class="covered" data-hits="7" data-linenumber="3">
|
3504
|
+
<span class="hits">7</span>
|
3505
|
+
|
3506
|
+
<code class="ruby"> regexps.each do |regexp|</code>
|
3507
|
+
</li>
|
3508
|
+
|
3509
|
+
<li class="covered" data-hits="54" data-linenumber="4">
|
3510
|
+
<span class="hits">54</span>
|
3511
|
+
|
3512
|
+
<code class="ruby"> it do</code>
|
3513
|
+
</li>
|
3514
|
+
|
3515
|
+
<li class="covered" data-hits="54" data-linenumber="5">
|
3516
|
+
<span class="hits">54</span>
|
3517
|
+
|
3518
|
+
<code class="ruby"> regexp_examples = regexp.examples</code>
|
3519
|
+
</li>
|
3520
|
+
|
3521
|
+
<li class="covered" data-hits="54" data-linenumber="6">
|
3522
|
+
<span class="hits">54</span>
|
3523
|
+
|
3524
|
+
<code class="ruby"> expect(regexp_examples).not_to be_empty</code>
|
3525
|
+
</li>
|
3526
|
+
|
3527
|
+
<li class="covered" data-hits="202" data-linenumber="7">
|
3528
|
+
<span class="hits">202</span>
|
3529
|
+
|
3530
|
+
<code class="ruby"> regexp_examples.each { |example| expect(example).to match(/\A(?:#{regexp.source})\z/) }</code>
|
3531
|
+
</li>
|
3532
|
+
|
3533
|
+
<li class="never" data-hits="" data-linenumber="8">
|
3534
|
+
|
3535
|
+
|
3536
|
+
<code class="ruby"> # Note: /\A...\z/ is used, to prevent misleading examples from passing the test.</code>
|
3537
|
+
</li>
|
3538
|
+
|
3539
|
+
<li class="never" data-hits="" data-linenumber="9">
|
3540
|
+
|
3541
|
+
|
3542
|
+
<code class="ruby"> # For example, we don't want things like:</code>
|
3543
|
+
</li>
|
3544
|
+
|
3545
|
+
<li class="never" data-hits="" data-linenumber="10">
|
3546
|
+
|
3547
|
+
|
3548
|
+
<code class="ruby"> # /a*/.examples to include "xyz"</code>
|
3549
|
+
</li>
|
3550
|
+
|
3551
|
+
<li class="never" data-hits="" data-linenumber="11">
|
3552
|
+
|
3553
|
+
|
3554
|
+
<code class="ruby"> # /a|b/.examples to include "bad"</code>
|
3555
|
+
</li>
|
3556
|
+
|
3557
|
+
<li class="never" data-hits="" data-linenumber="12">
|
3558
|
+
|
3559
|
+
|
3560
|
+
<code class="ruby"> end</code>
|
3561
|
+
</li>
|
3562
|
+
|
3563
|
+
<li class="never" data-hits="" data-linenumber="13">
|
3564
|
+
|
3565
|
+
|
3566
|
+
<code class="ruby"> end</code>
|
3567
|
+
</li>
|
3568
|
+
|
3569
|
+
<li class="never" data-hits="" data-linenumber="14">
|
3570
|
+
|
3571
|
+
|
3572
|
+
<code class="ruby"> end</code>
|
3573
|
+
</li>
|
3574
|
+
|
3575
|
+
<li class="never" data-hits="" data-linenumber="15">
|
3576
|
+
|
3577
|
+
|
3578
|
+
<code class="ruby"></code>
|
3579
|
+
</li>
|
3580
|
+
|
3581
|
+
<li class="covered" data-hits="1" data-linenumber="16">
|
3582
|
+
<span class="hits">1</span>
|
3583
|
+
|
3584
|
+
<code class="ruby"> context 'returns matching strings' do</code>
|
3585
|
+
</li>
|
3586
|
+
|
3587
|
+
<li class="covered" data-hits="1" data-linenumber="17">
|
3588
|
+
<span class="hits">1</span>
|
3589
|
+
|
3590
|
+
<code class="ruby"> context "for basic repeaters" do</code>
|
3591
|
+
</li>
|
3592
|
+
|
3593
|
+
<li class="covered" data-hits="1" data-linenumber="18">
|
3594
|
+
<span class="hits">1</span>
|
3595
|
+
|
3596
|
+
<code class="ruby"> examples_exist_and_match(</code>
|
3597
|
+
</li>
|
3598
|
+
|
3599
|
+
<li class="never" data-hits="" data-linenumber="19">
|
3600
|
+
|
3601
|
+
|
3602
|
+
<code class="ruby"> /a/,</code>
|
3603
|
+
</li>
|
3604
|
+
|
3605
|
+
<li class="never" data-hits="" data-linenumber="20">
|
3606
|
+
|
3607
|
+
|
3608
|
+
<code class="ruby"> /a*/,</code>
|
3609
|
+
</li>
|
3610
|
+
|
3611
|
+
<li class="never" data-hits="" data-linenumber="21">
|
3612
|
+
|
3613
|
+
|
3614
|
+
<code class="ruby"> /a+/,</code>
|
3615
|
+
</li>
|
3616
|
+
|
3617
|
+
<li class="never" data-hits="" data-linenumber="22">
|
3618
|
+
|
3619
|
+
|
3620
|
+
<code class="ruby"> /a?/,</code>
|
3621
|
+
</li>
|
3622
|
+
|
3623
|
+
<li class="never" data-hits="" data-linenumber="23">
|
3624
|
+
|
3625
|
+
|
3626
|
+
<code class="ruby"> /a{1}/,</code>
|
3627
|
+
</li>
|
3628
|
+
|
3629
|
+
<li class="never" data-hits="" data-linenumber="24">
|
3630
|
+
|
3631
|
+
|
3632
|
+
<code class="ruby"> /a{1,}/,</code>
|
3633
|
+
</li>
|
3634
|
+
|
3635
|
+
<li class="never" data-hits="" data-linenumber="25">
|
3636
|
+
|
3637
|
+
|
3638
|
+
<code class="ruby"> /a{1,2}/</code>
|
3639
|
+
</li>
|
3640
|
+
|
3641
|
+
<li class="never" data-hits="" data-linenumber="26">
|
3642
|
+
|
3643
|
+
|
3644
|
+
<code class="ruby"> )</code>
|
3645
|
+
</li>
|
3646
|
+
|
3647
|
+
<li class="never" data-hits="" data-linenumber="27">
|
3648
|
+
|
3649
|
+
|
3650
|
+
<code class="ruby"> end</code>
|
3651
|
+
</li>
|
3652
|
+
|
3653
|
+
<li class="never" data-hits="" data-linenumber="28">
|
3654
|
+
|
3655
|
+
|
3656
|
+
<code class="ruby"></code>
|
3657
|
+
</li>
|
3658
|
+
|
3659
|
+
<li class="covered" data-hits="1" data-linenumber="29">
|
3660
|
+
<span class="hits">1</span>
|
3661
|
+
|
3662
|
+
<code class="ruby"> context "for basic groups" do</code>
|
3663
|
+
</li>
|
3664
|
+
|
3665
|
+
<li class="covered" data-hits="1" data-linenumber="30">
|
3666
|
+
<span class="hits">1</span>
|
3667
|
+
|
3668
|
+
<code class="ruby"> examples_exist_and_match(</code>
|
3669
|
+
</li>
|
3670
|
+
|
3671
|
+
<li class="never" data-hits="" data-linenumber="31">
|
3672
|
+
|
3673
|
+
|
3674
|
+
<code class="ruby"> /[a]/,</code>
|
3675
|
+
</li>
|
3676
|
+
|
3677
|
+
<li class="never" data-hits="" data-linenumber="32">
|
3678
|
+
|
3679
|
+
|
3680
|
+
<code class="ruby"> /(a)/,</code>
|
3681
|
+
</li>
|
3682
|
+
|
3683
|
+
<li class="never" data-hits="" data-linenumber="33">
|
3684
|
+
|
3685
|
+
|
3686
|
+
<code class="ruby"> /a|b/,</code>
|
3687
|
+
</li>
|
3688
|
+
|
3689
|
+
<li class="never" data-hits="" data-linenumber="34">
|
3690
|
+
|
3691
|
+
|
3692
|
+
<code class="ruby"> /./</code>
|
3693
|
+
</li>
|
3694
|
+
|
3695
|
+
<li class="never" data-hits="" data-linenumber="35">
|
3696
|
+
|
3697
|
+
|
3698
|
+
<code class="ruby"> )</code>
|
3699
|
+
</li>
|
3700
|
+
|
3701
|
+
<li class="never" data-hits="" data-linenumber="36">
|
3702
|
+
|
3703
|
+
|
3704
|
+
<code class="ruby"> end</code>
|
3705
|
+
</li>
|
3706
|
+
|
3707
|
+
<li class="never" data-hits="" data-linenumber="37">
|
3708
|
+
|
3709
|
+
|
3710
|
+
<code class="ruby"></code>
|
3711
|
+
</li>
|
3712
|
+
|
3713
|
+
<li class="covered" data-hits="1" data-linenumber="38">
|
3714
|
+
<span class="hits">1</span>
|
3715
|
+
|
3716
|
+
<code class="ruby"> context "for complex char groups (square brackets)" do</code>
|
3717
|
+
</li>
|
3718
|
+
|
3719
|
+
<li class="covered" data-hits="1" data-linenumber="39">
|
3720
|
+
<span class="hits">1</span>
|
3721
|
+
|
3722
|
+
<code class="ruby"> examples_exist_and_match(</code>
|
3723
|
+
</li>
|
3724
|
+
|
3725
|
+
<li class="never" data-hits="" data-linenumber="40">
|
3726
|
+
|
3727
|
+
|
3728
|
+
<code class="ruby"> /[abc]/,</code>
|
3729
|
+
</li>
|
3730
|
+
|
3731
|
+
<li class="never" data-hits="" data-linenumber="41">
|
3732
|
+
|
3733
|
+
|
3734
|
+
<code class="ruby"> /[a-c]/,</code>
|
3735
|
+
</li>
|
3736
|
+
|
3737
|
+
<li class="never" data-hits="" data-linenumber="42">
|
3738
|
+
|
3739
|
+
|
3740
|
+
<code class="ruby"> /[abc-e]/,</code>
|
3741
|
+
</li>
|
3742
|
+
|
3743
|
+
<li class="never" data-hits="" data-linenumber="43">
|
3744
|
+
|
3745
|
+
|
3746
|
+
<code class="ruby"> /[^a-zA-Z]/,</code>
|
3747
|
+
</li>
|
3748
|
+
|
3749
|
+
<li class="never" data-hits="" data-linenumber="44">
|
3750
|
+
|
3751
|
+
|
3752
|
+
<code class="ruby"> /[\w]/,</code>
|
3753
|
+
</li>
|
3754
|
+
|
3755
|
+
<li class="never" data-hits="" data-linenumber="45">
|
3756
|
+
|
3757
|
+
|
3758
|
+
<code class="ruby"> /[]]/, # TODO: How to suppress annoying warnings on this test?</code>
|
3759
|
+
</li>
|
3760
|
+
|
3761
|
+
<li class="never" data-hits="" data-linenumber="46">
|
3762
|
+
|
3763
|
+
|
3764
|
+
<code class="ruby"> /[\]]/,</code>
|
3765
|
+
</li>
|
3766
|
+
|
3767
|
+
<li class="never" data-hits="" data-linenumber="47">
|
3768
|
+
|
3769
|
+
|
3770
|
+
<code class="ruby"> /[\\]/,</code>
|
3771
|
+
</li>
|
3772
|
+
|
3773
|
+
<li class="never" data-hits="" data-linenumber="48">
|
3774
|
+
|
3775
|
+
|
3776
|
+
<code class="ruby"> /[\\\]]/,</code>
|
3777
|
+
</li>
|
3778
|
+
|
3779
|
+
<li class="never" data-hits="" data-linenumber="49">
|
3780
|
+
|
3781
|
+
|
3782
|
+
<code class="ruby"> /[\n-\r]/,</code>
|
3783
|
+
</li>
|
3784
|
+
|
3785
|
+
<li class="never" data-hits="" data-linenumber="50">
|
3786
|
+
|
3787
|
+
|
3788
|
+
<code class="ruby"> /[\-]/,</code>
|
3789
|
+
</li>
|
3790
|
+
|
3791
|
+
<li class="never" data-hits="" data-linenumber="51">
|
3792
|
+
|
3793
|
+
|
3794
|
+
<code class="ruby"> /[%-+]/ # This regex is "supposed to" match some surprising things!!!</code>
|
3795
|
+
</li>
|
3796
|
+
|
3797
|
+
<li class="never" data-hits="" data-linenumber="52">
|
3798
|
+
|
3799
|
+
|
3800
|
+
<code class="ruby"> )</code>
|
3801
|
+
</li>
|
3802
|
+
|
3803
|
+
<li class="never" data-hits="" data-linenumber="53">
|
3804
|
+
|
3805
|
+
|
3806
|
+
<code class="ruby"> end</code>
|
3807
|
+
</li>
|
3808
|
+
|
3809
|
+
<li class="never" data-hits="" data-linenumber="54">
|
3810
|
+
|
3811
|
+
|
3812
|
+
<code class="ruby"></code>
|
3813
|
+
</li>
|
3814
|
+
|
3815
|
+
<li class="covered" data-hits="1" data-linenumber="55">
|
3816
|
+
<span class="hits">1</span>
|
3817
|
+
|
3818
|
+
<code class="ruby"> context "for complex multi groups" do</code>
|
3819
|
+
</li>
|
3820
|
+
|
3821
|
+
<li class="covered" data-hits="1" data-linenumber="56">
|
3822
|
+
<span class="hits">1</span>
|
3823
|
+
|
3824
|
+
<code class="ruby"> examples_exist_and_match(</code>
|
3825
|
+
</li>
|
3826
|
+
|
3827
|
+
<li class="never" data-hits="" data-linenumber="57">
|
3828
|
+
|
3829
|
+
|
3830
|
+
<code class="ruby"> /(normal)/,</code>
|
3831
|
+
</li>
|
3832
|
+
|
3833
|
+
<li class="never" data-hits="" data-linenumber="58">
|
3834
|
+
|
3835
|
+
|
3836
|
+
<code class="ruby"> /(?:nocapture)/,</code>
|
3837
|
+
</li>
|
3838
|
+
|
3839
|
+
<li class="never" data-hits="" data-linenumber="59">
|
3840
|
+
|
3841
|
+
|
3842
|
+
<code class="ruby"> /(?<name>namedgroup)/,</code>
|
3843
|
+
</li>
|
3844
|
+
|
3845
|
+
<li class="never" data-hits="" data-linenumber="60">
|
3846
|
+
|
3847
|
+
|
3848
|
+
<code class="ruby"> /(?<name>namedgroup) \k<name>/</code>
|
3849
|
+
</li>
|
3850
|
+
|
3851
|
+
<li class="never" data-hits="" data-linenumber="61">
|
3852
|
+
|
3853
|
+
|
3854
|
+
<code class="ruby"> )</code>
|
3855
|
+
</li>
|
3856
|
+
|
3857
|
+
<li class="never" data-hits="" data-linenumber="62">
|
3858
|
+
|
3859
|
+
|
3860
|
+
<code class="ruby"> # TODO: These are not yet implemented</code>
|
3861
|
+
</li>
|
3862
|
+
|
3863
|
+
<li class="never" data-hits="" data-linenumber="63">
|
3864
|
+
|
3865
|
+
|
3866
|
+
<code class="ruby"> # (expect to raise exception)</code>
|
3867
|
+
</li>
|
3868
|
+
|
3869
|
+
<li class="never" data-hits="" data-linenumber="64">
|
3870
|
+
|
3871
|
+
|
3872
|
+
<code class="ruby"># /(?=lookahead)/,</code>
|
3873
|
+
</li>
|
3874
|
+
|
3875
|
+
<li class="never" data-hits="" data-linenumber="65">
|
3876
|
+
|
3877
|
+
|
3878
|
+
<code class="ruby"># /(?!neglookahead)/,</code>
|
3879
|
+
</li>
|
3880
|
+
|
3881
|
+
<li class="never" data-hits="" data-linenumber="66">
|
3882
|
+
|
3883
|
+
|
3884
|
+
<code class="ruby"># /(?<=lookbehind)/,</code>
|
3885
|
+
</li>
|
3886
|
+
|
3887
|
+
<li class="never" data-hits="" data-linenumber="67">
|
3888
|
+
|
3889
|
+
|
3890
|
+
<code class="ruby"># /(?<!neglookbehind)/,</code>
|
3891
|
+
</li>
|
3892
|
+
|
3893
|
+
<li class="never" data-hits="" data-linenumber="68">
|
3894
|
+
|
3895
|
+
|
3896
|
+
<code class="ruby"> end</code>
|
3897
|
+
</li>
|
3898
|
+
|
3899
|
+
<li class="never" data-hits="" data-linenumber="69">
|
3900
|
+
|
3901
|
+
|
3902
|
+
<code class="ruby"></code>
|
3903
|
+
</li>
|
3904
|
+
|
3905
|
+
<li class="covered" data-hits="1" data-linenumber="70">
|
3906
|
+
<span class="hits">1</span>
|
3907
|
+
|
3908
|
+
<code class="ruby"> context "for escaped characters" do</code>
|
3909
|
+
</li>
|
3910
|
+
|
3911
|
+
<li class="covered" data-hits="1" data-linenumber="71">
|
3912
|
+
<span class="hits">1</span>
|
3913
|
+
|
3914
|
+
<code class="ruby"> examples_exist_and_match(</code>
|
3915
|
+
</li>
|
3916
|
+
|
3917
|
+
<li class="never" data-hits="" data-linenumber="72">
|
3918
|
+
|
3919
|
+
|
3920
|
+
<code class="ruby"> /\w/,</code>
|
3921
|
+
</li>
|
3922
|
+
|
3923
|
+
<li class="never" data-hits="" data-linenumber="73">
|
3924
|
+
|
3925
|
+
|
3926
|
+
<code class="ruby"> /\W/,</code>
|
3927
|
+
</li>
|
3928
|
+
|
3929
|
+
<li class="never" data-hits="" data-linenumber="74">
|
3930
|
+
|
3931
|
+
|
3932
|
+
<code class="ruby"> /\s/,</code>
|
3933
|
+
</li>
|
3934
|
+
|
3935
|
+
<li class="never" data-hits="" data-linenumber="75">
|
3936
|
+
|
3937
|
+
|
3938
|
+
<code class="ruby"> /\S/,</code>
|
3939
|
+
</li>
|
3940
|
+
|
3941
|
+
<li class="never" data-hits="" data-linenumber="76">
|
3942
|
+
|
3943
|
+
|
3944
|
+
<code class="ruby"> /\d/,</code>
|
3945
|
+
</li>
|
3946
|
+
|
3947
|
+
<li class="never" data-hits="" data-linenumber="77">
|
3948
|
+
|
3949
|
+
|
3950
|
+
<code class="ruby"> /\D/,</code>
|
3951
|
+
</li>
|
3952
|
+
|
3953
|
+
<li class="never" data-hits="" data-linenumber="78">
|
3954
|
+
|
3955
|
+
|
3956
|
+
<code class="ruby"> /\h/,</code>
|
3957
|
+
</li>
|
3958
|
+
|
3959
|
+
<li class="never" data-hits="" data-linenumber="79">
|
3960
|
+
|
3961
|
+
|
3962
|
+
<code class="ruby"> /\H/,</code>
|
3963
|
+
</li>
|
3964
|
+
|
3965
|
+
<li class="never" data-hits="" data-linenumber="80">
|
3966
|
+
|
3967
|
+
|
3968
|
+
<code class="ruby"> /\t/,</code>
|
3969
|
+
</li>
|
3970
|
+
|
3971
|
+
<li class="never" data-hits="" data-linenumber="81">
|
3972
|
+
|
3973
|
+
|
3974
|
+
<code class="ruby"> /\n/,</code>
|
3975
|
+
</li>
|
3976
|
+
|
3977
|
+
<li class="never" data-hits="" data-linenumber="82">
|
3978
|
+
|
3979
|
+
|
3980
|
+
<code class="ruby"> /\f/,</code>
|
3981
|
+
</li>
|
3982
|
+
|
3983
|
+
<li class="never" data-hits="" data-linenumber="83">
|
3984
|
+
|
3985
|
+
|
3986
|
+
<code class="ruby"> /\a/,</code>
|
3987
|
+
</li>
|
3988
|
+
|
3989
|
+
<li class="never" data-hits="" data-linenumber="84">
|
3990
|
+
|
3991
|
+
|
3992
|
+
<code class="ruby"> /\v/,</code>
|
3993
|
+
</li>
|
3994
|
+
|
3995
|
+
<li class="never" data-hits="" data-linenumber="85">
|
3996
|
+
|
3997
|
+
|
3998
|
+
<code class="ruby"> /\e/</code>
|
3999
|
+
</li>
|
4000
|
+
|
4001
|
+
<li class="never" data-hits="" data-linenumber="86">
|
4002
|
+
|
4003
|
+
|
4004
|
+
<code class="ruby"> )</code>
|
4005
|
+
</li>
|
4006
|
+
|
4007
|
+
<li class="never" data-hits="" data-linenumber="87">
|
4008
|
+
|
4009
|
+
|
4010
|
+
<code class="ruby"> end</code>
|
4011
|
+
</li>
|
4012
|
+
|
4013
|
+
<li class="never" data-hits="" data-linenumber="88">
|
4014
|
+
|
4015
|
+
|
4016
|
+
<code class="ruby"></code>
|
4017
|
+
</li>
|
4018
|
+
|
4019
|
+
<li class="covered" data-hits="1" data-linenumber="89">
|
4020
|
+
<span class="hits">1</span>
|
4021
|
+
|
4022
|
+
<code class="ruby"> context "for backreferences" do</code>
|
4023
|
+
</li>
|
4024
|
+
|
4025
|
+
<li class="covered" data-hits="1" data-linenumber="90">
|
4026
|
+
<span class="hits">1</span>
|
4027
|
+
|
4028
|
+
<code class="ruby"> examples_exist_and_match(</code>
|
4029
|
+
</li>
|
4030
|
+
|
4031
|
+
<li class="never" data-hits="" data-linenumber="91">
|
4032
|
+
|
4033
|
+
|
4034
|
+
<code class="ruby"> /(repeat) \1/,</code>
|
4035
|
+
</li>
|
4036
|
+
|
4037
|
+
<li class="never" data-hits="" data-linenumber="92">
|
4038
|
+
|
4039
|
+
|
4040
|
+
<code class="ruby"> /(ref1) (ref2) \1 \2/,</code>
|
4041
|
+
</li>
|
4042
|
+
|
4043
|
+
<li class="never" data-hits="" data-linenumber="93">
|
4044
|
+
|
4045
|
+
|
4046
|
+
<code class="ruby"> /((ref2)ref1) \1 \2/,</code>
|
4047
|
+
</li>
|
4048
|
+
|
4049
|
+
<li class="never" data-hits="" data-linenumber="94">
|
4050
|
+
|
4051
|
+
|
4052
|
+
<code class="ruby"> /((ref1and2)) \1 \2/,</code>
|
4053
|
+
</li>
|
4054
|
+
|
4055
|
+
<li class="never" data-hits="" data-linenumber="95">
|
4056
|
+
|
4057
|
+
|
4058
|
+
<code class="ruby"> /(one)(two)(three)(four)(five)(six)(seven)(eight)(nine)(ten) \10\9\8\7\6\5\4\3\2\1/,</code>
|
4059
|
+
</li>
|
4060
|
+
|
4061
|
+
<li class="never" data-hits="" data-linenumber="96">
|
4062
|
+
|
4063
|
+
|
4064
|
+
<code class="ruby"> /(a?(b?(c?(d?(e?)))))/</code>
|
4065
|
+
</li>
|
4066
|
+
|
4067
|
+
<li class="never" data-hits="" data-linenumber="97">
|
4068
|
+
|
4069
|
+
|
4070
|
+
<code class="ruby"> )</code>
|
4071
|
+
</li>
|
4072
|
+
|
4073
|
+
<li class="never" data-hits="" data-linenumber="98">
|
4074
|
+
|
4075
|
+
|
4076
|
+
<code class="ruby"> end</code>
|
4077
|
+
</li>
|
4078
|
+
|
4079
|
+
<li class="never" data-hits="" data-linenumber="99">
|
4080
|
+
|
4081
|
+
|
4082
|
+
<code class="ruby"></code>
|
4083
|
+
</li>
|
4084
|
+
|
4085
|
+
<li class="covered" data-hits="1" data-linenumber="100">
|
4086
|
+
<span class="hits">1</span>
|
4087
|
+
|
4088
|
+
<code class="ruby"> context "for complex patterns" do</code>
|
4089
|
+
</li>
|
4090
|
+
|
4091
|
+
<li class="never" data-hits="" data-linenumber="101">
|
4092
|
+
|
4093
|
+
|
4094
|
+
<code class="ruby"> # Longer combinations of the above</code>
|
4095
|
+
</li>
|
4096
|
+
|
4097
|
+
<li class="covered" data-hits="1" data-linenumber="102">
|
4098
|
+
<span class="hits">1</span>
|
4099
|
+
|
4100
|
+
<code class="ruby"> examples_exist_and_match(</code>
|
4101
|
+
</li>
|
4102
|
+
|
4103
|
+
<li class="never" data-hits="" data-linenumber="103">
|
4104
|
+
|
4105
|
+
|
4106
|
+
<code class="ruby"> /https?:\/\/(www\.)github\.com/,</code>
|
4107
|
+
</li>
|
4108
|
+
|
4109
|
+
<li class="never" data-hits="" data-linenumber="104">
|
4110
|
+
|
4111
|
+
|
4112
|
+
<code class="ruby"> /(I(N(C(E(P(T(I(O(N)))))))))*/,</code>
|
4113
|
+
</li>
|
4114
|
+
|
4115
|
+
<li class="never" data-hits="" data-linenumber="105">
|
4116
|
+
|
4117
|
+
|
4118
|
+
<code class="ruby"> /[\w]{1}/,</code>
|
4119
|
+
</li>
|
4120
|
+
|
4121
|
+
<li class="never" data-hits="" data-linenumber="106">
|
4122
|
+
|
4123
|
+
|
4124
|
+
<code class="ruby"> /((a?b*c+)) \1/,</code>
|
4125
|
+
</li>
|
4126
|
+
|
4127
|
+
<li class="never" data-hits="" data-linenumber="107">
|
4128
|
+
|
4129
|
+
|
4130
|
+
<code class="ruby"> /((a?b*c+)?) \1/,</code>
|
4131
|
+
</li>
|
4132
|
+
|
4133
|
+
<li class="never" data-hits="" data-linenumber="108">
|
4134
|
+
|
4135
|
+
|
4136
|
+
<code class="ruby"> /a|b|c|d/,</code>
|
4137
|
+
</li>
|
4138
|
+
|
4139
|
+
<li class="never" data-hits="" data-linenumber="109">
|
4140
|
+
|
4141
|
+
|
4142
|
+
<code class="ruby"> /a+|b*|c?/</code>
|
4143
|
+
</li>
|
4144
|
+
|
4145
|
+
<li class="never" data-hits="" data-linenumber="110">
|
4146
|
+
|
4147
|
+
|
4148
|
+
<code class="ruby"> )</code>
|
4149
|
+
</li>
|
4150
|
+
|
4151
|
+
<li class="never" data-hits="" data-linenumber="111">
|
4152
|
+
|
4153
|
+
|
4154
|
+
<code class="ruby"> end</code>
|
4155
|
+
</li>
|
4156
|
+
|
4157
|
+
<li class="never" data-hits="" data-linenumber="112">
|
4158
|
+
|
4159
|
+
|
4160
|
+
<code class="ruby"> end</code>
|
4161
|
+
</li>
|
4162
|
+
|
4163
|
+
<li class="never" data-hits="" data-linenumber="113">
|
4164
|
+
|
4165
|
+
|
4166
|
+
<code class="ruby">end</code>
|
4167
|
+
</li>
|
4168
|
+
|
4169
|
+
</ol>
|
4170
|
+
</pre>
|
4171
|
+
</div>
|
4172
|
+
|
4173
|
+
</div>
|
4174
|
+
</div>
|
4175
|
+
</body>
|
4176
|
+
</html>
|