coverage/index.html in regexp-examples-0.3.1 vs coverage/index.html in regexp-examples-0.3.2
- old
+ new
@@ -12,30 +12,30 @@
<body>
<div id="loading">
<img src="./assets/0.8.0/loading.gif" alt="loading"/>
</div>
<div id="wrapper" style="display:none;">
- <div class="timestamp">Generated <abbr class="timeago" title="2015-01-17T19:44:01+00:00">2015-01-17T19:44:01+00:00</abbr></div>
+ <div class="timestamp">Generated <abbr class="timeago" title="2015-01-24T16:02:51+00:00">2015-01-24T16:02:51+00:00</abbr></div>
<ul class="group_tabs"></ul>
<div id="content">
<div class="file_list_container" id="AllFiles">
<h2>
<span class="group_name">All Files</span>
(<span class="covered_percent"><span class="green">100.0%</span></span>
covered at
<span class="covered_strength">
<span class="green">
- 76.73
+ 83.39
</span>
</span> hits/line)
</h2>
<a name="AllFiles"></a>
<div>
<b>10</b> files in total.
- <b>344</b> relevant lines.
- <span class="green"><b>344</b> lines covered</span> and
+ <b>365</b> relevant lines.
+ <span class="green"><b>365</b> lines covered</span> and
<span class="red"><b>0</b> lines missed </span>
</div>
<table class="file_list">
<thead>
<tr>
@@ -65,21 +65,21 @@
<td class="green strong">100.0 %</td>
<td>21</td>
<td>11</td>
<td>11</td>
<td>0</td>
- <td>50.6</td>
+ <td>53.8</td>
</tr>
<tr>
<td class="strong"><a href="#63a4d8bce3d583c95db1448751ea1a5d89880a5c" class="src_link" title="lib/regexp-examples/constants.rb">lib/regexp-examples/constants.rb</a></td>
<td class="green strong">100.0 %</td>
- <td>42</td>
- <td>12</td>
- <td>12</td>
+ <td>47</td>
+ <td>13</td>
+ <td>13</td>
<td>0</td>
- <td>6.8</td>
+ <td>6.2</td>
</tr>
<tr>
<td class="strong"><a href="#1bb4101b0e3c014469af0221a5549cd762b969cb" class="src_link" title="lib/regexp-examples/exceptions.rb">lib/regexp-examples/exceptions.rb</a></td>
<td class="green strong">100.0 %</td>
@@ -91,65 +91,65 @@
</tr>
<tr>
<td class="strong"><a href="#a6c87537a3f20f2e6e7fc1c61e4c6c791987b6f8" class="src_link" title="lib/regexp-examples/groups.rb">lib/regexp-examples/groups.rb</a></td>
<td class="green strong">100.0 %</td>
- <td>147</td>
- <td>78</td>
- <td>78</td>
+ <td>160</td>
+ <td>84</td>
+ <td>84</td>
<td>0</td>
- <td>154.9</td>
+ <td>173.7</td>
</tr>
<tr>
<td class="strong"><a href="#9ae955cbc95623603c71e3cb5269e0b5572d66bb" class="src_link" title="lib/regexp-examples/helpers.rb">lib/regexp-examples/helpers.rb</a></td>
<td class="green strong">100.0 %</td>
- <td>26</td>
- <td>10</td>
- <td>10</td>
+ <td>34</td>
+ <td>14</td>
+ <td>14</td>
<td>0</td>
- <td>189.0</td>
+ <td>179.8</td>
</tr>
<tr>
<td class="strong"><a href="#d0056bbc5aec01e743374a8696b2086c03bae8f0" class="src_link" title="lib/regexp-examples/parser.rb">lib/regexp-examples/parser.rb</a></td>
<td class="green strong">100.0 %</td>
- <td>240</td>
- <td>135</td>
- <td>135</td>
+ <td>244</td>
+ <td>136</td>
+ <td>136</td>
<td>0</td>
- <td>56.4</td>
+ <td>61.3</td>
</tr>
<tr>
<td class="strong"><a href="#7f62a530f44ef896b613d357fee92d31ffb7ede8" class="src_link" title="lib/regexp-examples/regexp_extensions.rb">lib/regexp-examples/regexp_extensions.rb</a></td>
<td class="green strong">100.0 %</td>
- <td>14</td>
- <td>8</td>
- <td>8</td>
+ <td>18</td>
+ <td>6</td>
+ <td>6</td>
<td>0</td>
- <td>51.5</td>
+ <td>33.2</td>
</tr>
<tr>
<td class="strong"><a href="#0688fc9c3b085e9a6444775c61767c9c5742fb69" class="src_link" title="lib/regexp-examples/repeaters.rb">lib/regexp-examples/repeaters.rb</a></td>
<td class="green strong">100.0 %</td>
- <td>78</td>
- <td>43</td>
- <td>43</td>
+ <td>84</td>
+ <td>46</td>
+ <td>46</td>
<td>0</td>
- <td>73.8</td>
+ <td>75.8</td>
</tr>
<tr>
<td class="strong"><a href="#953f94f8f5f8bad7e1fa800f942a74b781f8fa1c" class="src_link" title="spec/regexp-examples_spec.rb">spec/regexp-examples_spec.rb</a></td>
<td class="green strong">100.0 %</td>
- <td>193</td>
- <td>42</td>
- <td>42</td>
+ <td>225</td>
+ <td>50</td>
+ <td>50</td>
<td>0</td>
- <td>13.6</td>
+ <td>12.4</td>
</tr>
</tbody>
</table>
</div>
@@ -226,18 +226,18 @@
<span class="hits">1</span>
<code class="ruby"> def substitute_backreferences(full_examples)</code>
</li>
- <li class="covered" data-hits="76" data-linenumber="4">
- <span class="hits">76</span>
+ <li class="covered" data-hits="89" data-linenumber="4">
+ <span class="hits">89</span>
<code class="ruby"> full_examples.map do |full_example|</code>
</li>
- <li class="covered" data-hits="172" data-linenumber="5">
- <span class="hits">172</span>
+ <li class="covered" data-hits="183" data-linenumber="5">
+ <span class="hits">183</span>
<code class="ruby"> while full_example.match(/__(\w+?)__/)</code>
</li>
<li class="covered" data-hits="28" data-linenumber="6">
@@ -250,12 +250,12 @@
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="172" data-linenumber="8">
- <span class="hits">172</span>
+ <li class="covered" data-hits="183" data-linenumber="8">
+ <span class="hits">183</span>
<code class="ruby"> full_example</code>
</li>
<li class="never" data-hits="" data-linenumber="9">
@@ -343,12 +343,12 @@
<div class="source_table" id="63a4d8bce3d583c95db1448751ea1a5d89880a5c">
<div class="header">
<h3>lib/regexp-examples/constants.rb</h3>
<h4><span class="green">100.0 %</span> covered</h4>
<div>
- <b>12</b> relevant lines.
- <span class="green"><b>12</b> lines covered</span> and
+ <b>13</b> relevant lines.
+ <span class="green"><b>13</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -361,248 +361,278 @@
</li>
<li class="never" data-hits="" data-linenumber="2">
- <code class="ruby"> # Number of times to repeat for Star and Plus repeaters</code>
+ <code class="ruby"> # The maximum variance for any given repeater, to prevent a huge/infinite number of</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="3">
- <span class="hits">1</span>
+ <li class="never" data-hits="" data-linenumber="3">
- <code class="ruby"> TIMES = 2</code>
+
+ <code class="ruby"> # examples from being listed. For example, if MaxRepeaterVariance = 2 then:</code>
</li>
<li class="never" data-hits="" data-linenumber="4">
- <code class="ruby"></code>
+ <code class="ruby"> # .* is equivalent to .{0,2}</code>
</li>
<li class="never" data-hits="" data-linenumber="5">
- <code class="ruby"> # Maximum number of characters returned from a char set, to reduce output spam</code>
+ <code class="ruby"> # .+ is equivalent to .{1,3}</code>
</li>
<li class="never" data-hits="" data-linenumber="6">
- <code class="ruby"> # For example:</code>
+ <code class="ruby"> # .{2,} is equivalent to .{2,4}</code>
</li>
<li class="never" data-hits="" data-linenumber="7">
- <code class="ruby"> # If MaxGroupResults = 5, then</code>
+ <code class="ruby"> # .{,3} is equivalent to .{0,2}</code>
</li>
<li class="never" data-hits="" data-linenumber="8">
- <code class="ruby"> # \d = [0, 1, 2, 3, 4]</code>
+ <code class="ruby"> # .{3,8} is equivalent to .{3,5}</code>
</li>
<li class="covered" data-hits="1" data-linenumber="9">
<span class="hits">1</span>
- <code class="ruby"> MaxGroupResults = 5</code>
+ <code class="ruby"> MaxRepeaterVariance = 2</code>
</li>
<li class="never" data-hits="" data-linenumber="10">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="11">
- <span class="hits">1</span>
+ <li class="never" data-hits="" data-linenumber="11">
- <code class="ruby"> module CharSets</code>
+
+ <code class="ruby"> # Maximum number of characters returned from a char set, to reduce output spam</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="12">
- <span class="hits">1</span>
+ <li class="never" data-hits="" data-linenumber="12">
- <code class="ruby"> Lower = Array('a'..'z')</code>
+
+ <code class="ruby"> # For example:</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="13">
- <span class="hits">1</span>
+ <li class="never" data-hits="" data-linenumber="13">
- <code class="ruby"> Upper = Array('A'..'Z')</code>
+
+ <code class="ruby"> # If MaxGroupResults = 5, then</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="14">
- <span class="hits">1</span>
+ <li class="never" data-hits="" data-linenumber="14">
- <code class="ruby"> Digit = Array('0'..'9')</code>
+
+ <code class="ruby"> # \d = [0, 1, 2, 3, 4]</code>
</li>
- <li class="never" data-hits="" data-linenumber="15">
+ <li class="covered" data-hits="1" data-linenumber="15">
+ <span class="hits">1</span>
-
- <code class="ruby"> # 45.chr = "-". Need to make sure this is at the START of the array, or things break</code>
+ <code class="ruby"> MaxGroupResults = 5</code>
</li>
<li class="never" data-hits="" data-linenumber="16">
- <code class="ruby"> # This is because of the /[a-z]/ regex syntax, and how it's being parsed</code>
+ <code class="ruby"></code>
</li>
- <li class="covered" data-hits="39" data-linenumber="17">
- <span class="hits">39</span>
+ <li class="covered" data-hits="1" data-linenumber="17">
+ <span class="hits">1</span>
- <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>
+ <code class="ruby"> module CharSets</code>
</li>
<li class="covered" data-hits="1" data-linenumber="18">
<span class="hits">1</span>
- <code class="ruby"> Hex = Array('a'..'f') | Array('A'..'F') | Digit</code>
+ <code class="ruby"> Lower = Array('a'..'z')</code>
</li>
<li class="covered" data-hits="1" data-linenumber="19">
<span class="hits">1</span>
- <code class="ruby"> Any = Lower | Upper | Digit | Punct</code>
+ <code class="ruby"> Upper = Array('A'..'Z')</code>
</li>
- <li class="never" data-hits="" data-linenumber="20">
+ <li class="covered" data-hits="1" data-linenumber="20">
+ <span class="hits">1</span>
+ <code class="ruby"> Digit = Array('0'..'9')</code>
+ </li>
+
+ <li class="covered" data-hits="37" data-linenumber="21">
+ <span class="hits">37</span>
+ <code class="ruby"> Punct = [33..47, 58..64, 91..96, 123..126].map { |r| r.map { |val| val.chr } }.flatten</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="22">
+ <span class="hits">1</span>
+
+ <code class="ruby"> Hex = Array('a'..'f') | Array('A'..'F') | Digit</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="23">
+ <span class="hits">1</span>
+
+ <code class="ruby"> Whitespace = [' ', "\t", "\n", "\r", "\v", "\f"]</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="24">
+ <span class="hits">1</span>
+
+ <code class="ruby"> Any = Lower | Upper | Digit | Punct</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="25">
+
+
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="21">
+ <li class="never" data-hits="" data-linenumber="26">
<code class="ruby"></code>
</li>
- <li class="never" data-hits="" data-linenumber="22">
+ <li class="never" data-hits="" data-linenumber="27">
<code class="ruby"> # Map of special regex characters, to their associated character sets</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="23">
+ <li class="covered" data-hits="1" data-linenumber="28">
<span class="hits">1</span>
<code class="ruby"> BackslashCharMap = {</code>
</li>
- <li class="never" data-hits="" data-linenumber="24">
+ <li class="never" data-hits="" data-linenumber="29">
<code class="ruby"> 'd' => CharSets::Digit,</code>
</li>
- <li class="never" data-hits="" data-linenumber="25">
+ <li class="never" data-hits="" data-linenumber="30">
<code class="ruby"> 'D' => CharSets::Lower | CharSets::Upper | CharSets::Punct,</code>
</li>
- <li class="never" data-hits="" data-linenumber="26">
+ <li class="never" data-hits="" data-linenumber="31">
<code class="ruby"> 'w' => CharSets::Lower | CharSets::Upper | CharSets::Digit | ['_'],</code>
</li>
- <li class="covered" data-hits="32" data-linenumber="27">
+ <li class="covered" data-hits="32" data-linenumber="32">
<span class="hits">32</span>
<code class="ruby"> 'W' => CharSets::Punct.reject { |val| val == '_' },</code>
</li>
- <li class="never" data-hits="" data-linenumber="28">
+ <li class="never" data-hits="" data-linenumber="33">
- <code class="ruby"> 's' => [' ', "\t", "\n", "\r", "\v", "\f"],</code>
+ <code class="ruby"> 's' => CharSets::Whitespace,</code>
</li>
- <li class="never" data-hits="" data-linenumber="29">
+ <li class="never" data-hits="" data-linenumber="34">
- <code class="ruby"> 'S' => CharSets::Any - [' ', "\t", "\n", "\r", "\v", "\f"],</code>
+ <code class="ruby"> 'S' => CharSets::Any - CharSets::Whitespace,</code>
</li>
- <li class="never" data-hits="" data-linenumber="30">
+ <li class="never" data-hits="" data-linenumber="35">
<code class="ruby"> 'h' => CharSets::Hex,</code>
</li>
- <li class="never" data-hits="" data-linenumber="31">
+ <li class="never" data-hits="" data-linenumber="36">
<code class="ruby"> 'H' => CharSets::Any - CharSets::Hex,</code>
</li>
- <li class="never" data-hits="" data-linenumber="32">
+ <li class="never" data-hits="" data-linenumber="37">
<code class="ruby"></code>
</li>
- <li class="never" data-hits="" data-linenumber="33">
+ <li class="never" data-hits="" data-linenumber="38">
<code class="ruby"> 't' => ["\t"], # tab</code>
</li>
- <li class="never" data-hits="" data-linenumber="34">
+ <li class="never" data-hits="" data-linenumber="39">
<code class="ruby"> 'n' => ["\n"], # new line</code>
</li>
- <li class="never" data-hits="" data-linenumber="35">
+ <li class="never" data-hits="" data-linenumber="40">
<code class="ruby"> 'r' => ["\r"], # carriage return</code>
</li>
- <li class="never" data-hits="" data-linenumber="36">
+ <li class="never" data-hits="" data-linenumber="41">
<code class="ruby"> 'f' => ["\f"], # form feed</code>
</li>
- <li class="never" data-hits="" data-linenumber="37">
+ <li class="never" data-hits="" data-linenumber="42">
<code class="ruby"> 'a' => ["\a"], # alarm</code>
</li>
- <li class="never" data-hits="" data-linenumber="38">
+ <li class="never" data-hits="" data-linenumber="43">
<code class="ruby"> 'v' => ["\v"], # vertical tab</code>
</li>
- <li class="never" data-hits="" data-linenumber="39">
+ <li class="never" data-hits="" data-linenumber="44">
<code class="ruby"> 'e' => ["\e"], # escape</code>
</li>
- <li class="never" data-hits="" data-linenumber="40">
+ <li class="never" data-hits="" data-linenumber="45">
<code class="ruby"> }</code>
</li>
- <li class="never" data-hits="" data-linenumber="41">
+ <li class="never" data-hits="" data-linenumber="46">
<code class="ruby">end</code>
</li>
- <li class="never" data-hits="" data-linenumber="42">
+ <li class="never" data-hits="" data-linenumber="47">
<code class="ruby"></code>
</li>
@@ -661,12 +691,12 @@
<div class="source_table" id="a6c87537a3f20f2e6e7fc1c61e4c6c791987b6f8">
<div class="header">
<h3>lib/regexp-examples/groups.rb</h3>
<h4><span class="green">100.0 %</span> covered</h4>
<div>
- <b>78</b> relevant lines.
- <span class="green"><b>78</b> lines covered</span> and
+ <b>84</b> relevant lines.
+ <span class="green"><b>84</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -712,42 +742,42 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(result, group_id = nil, subgroups = [])</code>
</li>
- <li class="covered" data-hits="1760" data-linenumber="8">
- <span class="hits">1760</span>
+ <li class="covered" data-hits="1882" data-linenumber="8">
+ <span class="hits">1882</span>
<code class="ruby"> @group_id = group_id</code>
</li>
- <li class="covered" data-hits="1760" data-linenumber="9">
- <span class="hits">1760</span>
+ <li class="covered" data-hits="1882" data-linenumber="9">
+ <span class="hits">1882</span>
<code class="ruby"> @subgroups = subgroups</code>
</li>
- <li class="covered" data-hits="1760" data-linenumber="10">
- <span class="hits">1760</span>
+ <li class="covered" data-hits="1882" data-linenumber="10">
+ <span class="hits">1882</span>
<code class="ruby"> if result.respond_to?(:group_id)</code>
</li>
- <li class="covered" data-hits="122" data-linenumber="11">
- <span class="hits">122</span>
+ <li class="covered" data-hits="142" data-linenumber="11">
+ <span class="hits">142</span>
<code class="ruby"> @subgroups = result.all_subgroups</code>
</li>
<li class="never" data-hits="" data-linenumber="12">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="1760" data-linenumber="13">
- <span class="hits">1760</span>
+ <li class="covered" data-hits="1882" data-linenumber="13">
+ <span class="hits">1882</span>
<code class="ruby"> super(result)</code>
</li>
<li class="never" data-hits="" data-linenumber="14">
@@ -766,12 +796,12 @@
<span class="hits">1</span>
<code class="ruby"> def all_subgroups</code>
</li>
- <li class="covered" data-hits="1775" data-linenumber="17">
- <span class="hits">1775</span>
+ <li class="covered" data-hits="1939" data-linenumber="17">
+ <span class="hits">1939</span>
<code class="ruby"> [self, subgroups].flatten.reject { |subgroup| subgroup.group_id.nil? }</code>
</li>
<li class="never" data-hits="" data-linenumber="18">
@@ -802,12 +832,12 @@
<span class="hits">1</span>
<code class="ruby"> def *(int)</code>
</li>
- <li class="covered" data-hits="464" data-linenumber="23">
- <span class="hits">464</span>
+ <li class="covered" data-hits="499" data-linenumber="23">
+ <span class="hits">499</span>
<code class="ruby"> self.class.new(super.to_s, group_id, subgroups)</code>
</li>
<li class="never" data-hits="" data-linenumber="24">
@@ -838,12 +868,12 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(char)</code>
</li>
- <li class="covered" data-hits="261" data-linenumber="29">
- <span class="hits">261</span>
+ <li class="covered" data-hits="280" data-linenumber="29">
+ <span class="hits">280</span>
<code class="ruby"> @char = char</code>
</li>
<li class="never" data-hits="" data-linenumber="30">
@@ -856,12 +886,12 @@
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="223" data-linenumber="32">
- <span class="hits">223</span>
+ <li class="covered" data-hits="242" data-linenumber="32">
+ <span class="hits">242</span>
<code class="ruby"> [GroupResult.new(@char)]</code>
</li>
<li class="never" data-hits="" data-linenumber="33">
@@ -892,42 +922,42 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(chars)</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="38">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="38">
+ <span class="hits">40</span>
<code class="ruby"> @chars = chars</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="39">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="39">
+ <span class="hits">40</span>
<code class="ruby"> if chars[0] == "^"</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="40">
- <span class="hits">1</span>
+ <li class="covered" data-hits="11" data-linenumber="40">
+ <span class="hits">11</span>
<code class="ruby"> @negative = true</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="41">
- <span class="hits">1</span>
+ <li class="covered" data-hits="11" data-linenumber="41">
+ <span class="hits">11</span>
<code class="ruby"> @chars = @chars[1..-1]</code>
</li>
<li class="never" data-hits="" data-linenumber="42">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="28" data-linenumber="43">
- <span class="hits">28</span>
+ <li class="covered" data-hits="29" data-linenumber="43">
+ <span class="hits">29</span>
<code class="ruby"> @negative = false</code>
</li>
<li class="never" data-hits="" data-linenumber="44">
@@ -940,18 +970,18 @@
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="29" data-linenumber="46">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="46">
+ <span class="hits">40</span>
<code class="ruby"> init_backslash_chars</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="47">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="47">
+ <span class="hits">40</span>
<code class="ruby"> init_ranges</code>
</li>
<li class="never" data-hits="" data-linenumber="48">
@@ -976,581 +1006,659 @@
<code class="ruby"> # save first and last "-" if present</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="52">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="52">
+ <span class="hits">40</span>
<code class="ruby"> first = nil</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="53">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="53">
+ <span class="hits">40</span>
<code class="ruby"> last = nil</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="54">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="54">
+ <span class="hits">40</span>
<code class="ruby"> first = @chars.shift if @chars.first == "-"</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="55">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="55">
+ <span class="hits">40</span>
<code class="ruby"> last = @chars.pop if @chars.last == "-"</code>
</li>
<li class="never" data-hits="" data-linenumber="56">
- <code class="ruby"> # Replace all instances of e.g. ["a" "-" "z"] with ["a", "b", ..., "z"]</code>
+ <code class="ruby"> # Replace all instances of e.g. ["a", "-", "z"] with ["a", "b", ..., "z"]</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="57">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="57">
+ <span class="hits">40</span>
<code class="ruby"> while i = @chars.index("-")</code>
</li>
- <li class="covered" data-hits="9" data-linenumber="58">
- <span class="hits">9</span>
+ <li class="never" data-hits="" data-linenumber="58">
- <code class="ruby"> @chars[i-1..i+1] = (@chars[i-1]..@chars[i+1]).to_a</code>
+
+ <code class="ruby"> # Prevent infinite loops from expanding [",", "-", "."] to itself</code>
</li>
<li class="never" data-hits="" data-linenumber="59">
+ <code class="ruby"> # (Since ",".ord = 44, "-".ord = 45, ".".ord = 46)</code>
+ </li>
+
+ <li class="covered" data-hits="26" data-linenumber="60">
+ <span class="hits">26</span>
+
+ <code class="ruby"> if (@chars[i-1] == ',' && @chars[i+1] == '.')</code>
+ </li>
+
+ <li class="covered" data-hits="15" data-linenumber="61">
+ <span class="hits">15</span>
+
+ <code class="ruby"> first = '-'</code>
+ </li>
+
+ <li class="covered" data-hits="15" data-linenumber="62">
+ <span class="hits">15</span>
+
+ <code class="ruby"> @chars.delete_at(i)</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="63">
+
+
+ <code class="ruby"> else</code>
+ </li>
+
+ <li class="covered" data-hits="11" data-linenumber="64">
+ <span class="hits">11</span>
+
+ <code class="ruby"> @chars[i-1..i+1] = (@chars[i-1]..@chars[i+1]).to_a</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="65">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="66">
+
+
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="60">
+ <li class="never" data-hits="" data-linenumber="67">
<code class="ruby"> # restore them back</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="61">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="68">
+ <span class="hits">40</span>
<code class="ruby"> @chars.unshift(first) if first</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="62">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="69">
+ <span class="hits">40</span>
<code class="ruby"> @chars.push(last) if last</code>
</li>
- <li class="never" data-hits="" data-linenumber="63">
+ <li class="never" data-hits="" data-linenumber="70">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="64">
+ <li class="never" data-hits="" data-linenumber="71">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="65">
+ <li class="covered" data-hits="1" data-linenumber="72">
<span class="hits">1</span>
<code class="ruby"> def init_backslash_chars</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="66">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="73">
+ <span class="hits">40</span>
<code class="ruby"> @chars.each_with_index do |char, i|</code>
</li>
- <li class="covered" data-hits="541" data-linenumber="67">
- <span class="hits">541</span>
+ <li class="covered" data-hits="1430" data-linenumber="74">
+ <span class="hits">1430</span>
<code class="ruby"> if char == "\\"</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="68">
- <span class="hits">14</span>
+ <li class="covered" data-hits="32" data-linenumber="75">
+ <span class="hits">32</span>
<code class="ruby"> if BackslashCharMap.keys.include?(@chars[i+1])</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="69">
- <span class="hits">4</span>
+ <li class="covered" data-hits="22" data-linenumber="76">
+ <span class="hits">22</span>
- <code class="ruby"> @chars[i..i+1] = BackslashCharMap[@chars[i+1]]</code>
+ <code class="ruby"> @chars[i..i+1] = move_backslash_to_front( BackslashCharMap[@chars[i+1]] )</code>
</li>
- <li class="never" data-hits="" data-linenumber="70">
+ <li class="never" data-hits="" data-linenumber="77">
<code class="ruby"> elsif @chars[i+1] == 'b'</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="71">
+ <li class="covered" data-hits="1" data-linenumber="78">
<span class="hits">1</span>
<code class="ruby"> @chars[i..i+1] = "\b"</code>
</li>
- <li class="never" data-hits="" data-linenumber="72">
+ <li class="never" data-hits="" data-linenumber="79">
<code class="ruby"> elsif @chars[i+1] == "\\"</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="73">
+ <li class="covered" data-hits="2" data-linenumber="80">
<span class="hits">2</span>
<code class="ruby"> @chars.delete_at(i+1)</code>
</li>
- <li class="never" data-hits="" data-linenumber="74">
+ <li class="never" data-hits="" data-linenumber="81">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="7" data-linenumber="75">
+ <li class="covered" data-hits="7" data-linenumber="82">
<span class="hits">7</span>
<code class="ruby"> @chars.delete_at(i)</code>
</li>
- <li class="never" data-hits="" data-linenumber="76">
+ <li class="never" data-hits="" data-linenumber="83">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="77">
+ <li class="never" data-hits="" data-linenumber="84">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="78">
+ <li class="never" data-hits="" data-linenumber="85">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="79">
+ <li class="never" data-hits="" data-linenumber="86">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="80">
+ <li class="never" data-hits="" data-linenumber="87">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="81">
+ <li class="covered" data-hits="1" data-linenumber="88">
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="29" data-linenumber="82">
- <span class="hits">29</span>
+ <li class="covered" data-hits="40" data-linenumber="89">
+ <span class="hits">40</span>
<code class="ruby"> (@negative ? (CharSets::Any - @chars) : @chars).map do |result|</code>
</li>
- <li class="covered" data-hits="573" data-linenumber="83">
- <span class="hits">573</span>
+ <li class="covered" data-hits="590" data-linenumber="90">
+ <span class="hits">590</span>
<code class="ruby"> GroupResult.new(result)</code>
</li>
- <li class="never" data-hits="" data-linenumber="84">
+ <li class="never" data-hits="" data-linenumber="91">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="85">
+ <li class="never" data-hits="" data-linenumber="92">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="86">
+ <li class="never" data-hits="" data-linenumber="93">
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="94">
+ <span class="hits">1</span>
+
+ <code class="ruby"> private</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="95">
+ <span class="hits">1</span>
+
+ <code class="ruby"> def move_backslash_to_front(chars)</code>
+ </li>
+
+ <li class="covered" data-hits="547" data-linenumber="96">
+ <span class="hits">547</span>
+
+ <code class="ruby"> if index = chars.index { |char| char == '\\' }</code>
+ </li>
+
+ <li class="covered" data-hits="10" data-linenumber="97">
+ <span class="hits">10</span>
+
+ <code class="ruby"> chars.unshift chars.delete_at(index)</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="98">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="covered" data-hits="22" data-linenumber="99">
+ <span class="hits">22</span>
+
+ <code class="ruby"> chars</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="100">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="101">
+
+
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="87">
+ <li class="never" data-hits="" data-linenumber="102">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="88">
+ <li class="covered" data-hits="1" data-linenumber="103">
<span class="hits">1</span>
<code class="ruby"> class DotGroup</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="89">
+ <li class="covered" data-hits="1" data-linenumber="104">
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="90">
+ <li class="covered" data-hits="1" data-linenumber="105">
<span class="hits">1</span>
<code class="ruby"> CharSets::Any.map do |result|</code>
</li>
- <li class="covered" data-hits="94" data-linenumber="91">
+ <li class="covered" data-hits="94" data-linenumber="106">
<span class="hits">94</span>
<code class="ruby"> GroupResult.new(result)</code>
</li>
- <li class="never" data-hits="" data-linenumber="92">
+ <li class="never" data-hits="" data-linenumber="107">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="93">
+ <li class="never" data-hits="" data-linenumber="108">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="94">
+ <li class="never" data-hits="" data-linenumber="109">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="95">
+ <li class="never" data-hits="" data-linenumber="110">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="96">
+ <li class="covered" data-hits="1" data-linenumber="111">
<span class="hits">1</span>
<code class="ruby"> class MultiGroup</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="97">
+ <li class="covered" data-hits="1" data-linenumber="112">
<span class="hits">1</span>
<code class="ruby"> attr_reader :group_id</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="98">
+ <li class="covered" data-hits="1" data-linenumber="113">
<span class="hits">1</span>
<code class="ruby"> def initialize(groups, group_id)</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="99">
+ <li class="covered" data-hits="41" data-linenumber="114">
<span class="hits">41</span>
<code class="ruby"> @groups = groups</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="100">
+ <li class="covered" data-hits="41" data-linenumber="115">
<span class="hits">41</span>
<code class="ruby"> @group_id = group_id</code>
</li>
- <li class="never" data-hits="" data-linenumber="101">
+ <li class="never" data-hits="" data-linenumber="116">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="102">
+ <li class="never" data-hits="" data-linenumber="117">
<code class="ruby"></code>
</li>
- <li class="never" data-hits="" data-linenumber="103">
+ <li class="never" data-hits="" data-linenumber="118">
<code class="ruby"> # Generates the result of each contained group</code>
</li>
- <li class="never" data-hits="" data-linenumber="104">
+ <li class="never" data-hits="" data-linenumber="119">
<code class="ruby"> # and adds the filled group of each result to</code>
</li>
- <li class="never" data-hits="" data-linenumber="105">
+ <li class="never" data-hits="" data-linenumber="120">
<code class="ruby"> # itself</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="106">
+ <li class="covered" data-hits="1" data-linenumber="121">
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="186" data-linenumber="107">
+ <li class="covered" data-hits="186" data-linenumber="122">
<span class="hits">186</span>
<code class="ruby"> strings = @groups.map {|repeater| repeater.result}</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="108">
+ <li class="covered" data-hits="41" data-linenumber="123">
<span class="hits">41</span>
<code class="ruby"> RegexpExamples::permutations_of_strings(strings).map do |result|</code>
</li>
- <li class="covered" data-hits="101" data-linenumber="109">
- <span class="hits">101</span>
+ <li class="covered" data-hits="113" data-linenumber="124">
+ <span class="hits">113</span>
<code class="ruby"> GroupResult.new(result, group_id)</code>
</li>
- <li class="never" data-hits="" data-linenumber="110">
+ <li class="never" data-hits="" data-linenumber="125">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="111">
+ <li class="never" data-hits="" data-linenumber="126">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="112">
+ <li class="never" data-hits="" data-linenumber="127">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="113">
+ <li class="never" data-hits="" data-linenumber="128">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="114">
+ <li class="covered" data-hits="1" data-linenumber="129">
<span class="hits">1</span>
<code class="ruby"> class MultiGroupEnd</code>
</li>
- <li class="never" data-hits="" data-linenumber="115">
+ <li class="never" data-hits="" data-linenumber="130">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="116">
+ <li class="never" data-hits="" data-linenumber="131">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="117">
+ <li class="covered" data-hits="1" data-linenumber="132">
<span class="hits">1</span>
<code class="ruby"> class OrGroup</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="118">
+ <li class="covered" data-hits="1" data-linenumber="133">
<span class="hits">1</span>
<code class="ruby"> def initialize(left_repeaters, right_repeaters)</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="119">
- <span class="hits">6</span>
+ <li class="covered" data-hits="9" data-linenumber="134">
+ <span class="hits">9</span>
<code class="ruby"> @left_repeaters = left_repeaters</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="120">
- <span class="hits">6</span>
+ <li class="covered" data-hits="9" data-linenumber="135">
+ <span class="hits">9</span>
<code class="ruby"> @right_repeaters = right_repeaters</code>
</li>
- <li class="never" data-hits="" data-linenumber="121">
+ <li class="never" data-hits="" data-linenumber="136">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="122">
+ <li class="never" data-hits="" data-linenumber="137">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="123">
- <span class="hits">1</span>
+ <li class="never" data-hits="" data-linenumber="138">
- <code class="ruby"> def result</code>
- </li>
-
- <li class="covered" data-hits="6" data-linenumber="124">
- <span class="hits">6</span>
- <code class="ruby"> left_result = @left_repeaters.map do |repeater|</code>
+ <code class="ruby"></code>
</li>
- <li class="covered" data-hits="6" data-linenumber="125">
- <span class="hits">6</span>
+ <li class="covered" data-hits="1" data-linenumber="139">
+ <span class="hits">1</span>
- <code class="ruby"> RegexpExamples::permutations_of_strings([repeater.result])</code>
+ <code class="ruby"> def result</code>
</li>
- <li class="never" data-hits="" data-linenumber="126">
+ <li class="covered" data-hits="9" data-linenumber="140">
+ <span class="hits">9</span>
-
- <code class="ruby"> end</code>
+ <code class="ruby"> left_result = RegexpExamples::map_results(@left_repeaters)</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="127">
- <span class="hits">6</span>
+ <li class="covered" data-hits="9" data-linenumber="141">
+ <span class="hits">9</span>
- <code class="ruby"> right_result = @right_repeaters.map do |repeater|</code>
+ <code class="ruby"> right_result = RegexpExamples::map_results(@right_repeaters)</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="128">
- <span class="hits">6</span>
+ <li class="never" data-hits="" data-linenumber="142">
- <code class="ruby"> RegexpExamples::permutations_of_strings([repeater.result])</code>
- </li>
-
- <li class="never" data-hits="" data-linenumber="129">
-
- <code class="ruby"> end</code>
+ <code class="ruby"> </code>
</li>
- <li class="covered" data-hits="6" data-linenumber="130">
- <span class="hits">6</span>
+ <li class="covered" data-hits="9" data-linenumber="143">
+ <span class="hits">9</span>
<code class="ruby"> left_result.concat(right_result).flatten.uniq.map do |result|</code>
</li>
- <li class="covered" data-hits="21" data-linenumber="131">
- <span class="hits">21</span>
+ <li class="covered" data-hits="29" data-linenumber="144">
+ <span class="hits">29</span>
<code class="ruby"> GroupResult.new(result)</code>
</li>
- <li class="never" data-hits="" data-linenumber="132">
+ <li class="never" data-hits="" data-linenumber="145">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="133">
+ <li class="never" data-hits="" data-linenumber="146">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="134">
+ <li class="never" data-hits="" data-linenumber="147">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="135">
+ <li class="never" data-hits="" data-linenumber="148">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="136">
+ <li class="covered" data-hits="1" data-linenumber="149">
<span class="hits">1</span>
<code class="ruby"> class BackReferenceGroup</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="137">
+ <li class="covered" data-hits="1" data-linenumber="150">
<span class="hits">1</span>
<code class="ruby"> attr_reader :id</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="138">
+ <li class="covered" data-hits="1" data-linenumber="151">
<span class="hits">1</span>
<code class="ruby"> def initialize(id)</code>
</li>
- <li class="covered" data-hits="20" data-linenumber="139">
+ <li class="covered" data-hits="20" data-linenumber="152">
<span class="hits">20</span>
<code class="ruby"> @id = id</code>
</li>
- <li class="never" data-hits="" data-linenumber="140">
+ <li class="never" data-hits="" data-linenumber="153">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="141">
+ <li class="never" data-hits="" data-linenumber="154">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="142">
+ <li class="covered" data-hits="1" data-linenumber="155">
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="20" data-linenumber="143">
+ <li class="covered" data-hits="20" data-linenumber="156">
<span class="hits">20</span>
<code class="ruby"> [ GroupResult.new("__#{@id}__") ]</code>
</li>
- <li class="never" data-hits="" data-linenumber="144">
+ <li class="never" data-hits="" data-linenumber="157">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="145">
+ <li class="never" data-hits="" data-linenumber="158">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="146">
+ <li class="never" data-hits="" data-linenumber="159">
<code class="ruby"></code>
</li>
- <li class="never" data-hits="" data-linenumber="147">
+ <li class="never" data-hits="" data-linenumber="160">
<code class="ruby">end</code>
</li>
@@ -1561,12 +1669,12 @@
<div class="source_table" id="9ae955cbc95623603c71e3cb5269e0b5572d66bb">
<div class="header">
<h3>lib/regexp-examples/helpers.rb</h3>
<h4><span class="green">100.0 %</span> covered</h4>
<div>
- <b>10</b> relevant lines.
- <span class="green"><b>10</b> lines covered</span> and
+ <b>14</b> relevant lines.
+ <span class="green"><b>14</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -1627,33 +1735,33 @@
</li>
<li class="covered" data-hits="1" data-linenumber="10">
<span class="hits">1</span>
- <code class="ruby"> def self.permutations_of_strings(arrays_of_strings, options={})</code>
+ <code class="ruby"> def self.permutations_of_strings(arrays_of_strings)</code>
</li>
- <li class="covered" data-hits="320" data-linenumber="11">
- <span class="hits">320</span>
+ <li class="covered" data-hits="353" data-linenumber="11">
+ <span class="hits">353</span>
<code class="ruby"> first = arrays_of_strings.shift</code>
</li>
- <li class="covered" data-hits="320" data-linenumber="12">
- <span class="hits">320</span>
+ <li class="covered" data-hits="353" data-linenumber="12">
+ <span class="hits">353</span>
<code class="ruby"> return first if arrays_of_strings.empty?</code>
</li>
- <li class="covered" data-hits="191" data-linenumber="13">
- <span class="hits">191</span>
+ <li class="covered" data-hits="205" data-linenumber="13">
+ <span class="hits">205</span>
- <code class="ruby"> first.product( permutations_of_strings(arrays_of_strings, options) ).map do |result|</code>
+ <code class="ruby"> first.product( permutations_of_strings(arrays_of_strings) ).map do |result|</code>
</li>
- <li class="covered" data-hits="264" data-linenumber="14">
- <span class="hits">264</span>
+ <li class="covered" data-hits="295" data-linenumber="14">
+ <span class="hits">295</span>
<code class="ruby"> join_preserving_capture_groups(result)</code>
</li>
<li class="never" data-hits="" data-linenumber="15">
@@ -1678,18 +1786,18 @@
<span class="hits">1</span>
<code class="ruby"> def self.join_preserving_capture_groups(result)</code>
</li>
- <li class="covered" data-hits="264" data-linenumber="19">
- <span class="hits">264</span>
+ <li class="covered" data-hits="295" data-linenumber="19">
+ <span class="hits">295</span>
<code class="ruby"> result.flatten!</code>
</li>
- <li class="covered" data-hits="264" data-linenumber="20">
- <span class="hits">264</span>
+ <li class="covered" data-hits="295" data-linenumber="20">
+ <span class="hits">295</span>
<code class="ruby"> subgroups = result</code>
</li>
<li class="never" data-hits="" data-linenumber="21">
@@ -1702,12 +1810,12 @@
<code class="ruby"> .flatten</code>
</li>
- <li class="covered" data-hits="264" data-linenumber="23">
- <span class="hits">264</span>
+ <li class="covered" data-hits="295" data-linenumber="23">
+ <span class="hits">295</span>
<code class="ruby"> GroupResult.new(result.join, nil, subgroups)</code>
</li>
<li class="never" data-hits="" data-linenumber="24">
@@ -1717,14 +1825,62 @@
</li>
<li class="never" data-hits="" data-linenumber="25">
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="26">
+ <span class="hits">1</span>
+
+ <code class="ruby"> def self.map_results(repeaters)</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="27">
+
+
+ <code class="ruby"> repeaters</code>
+ </li>
+
+ <li class="covered" data-hits="208" data-linenumber="28">
+ <span class="hits">208</span>
+
+ <code class="ruby"> .map {|repeater| repeater.result}</code>
+ </li>
+
+ <li class="covered" data-hits="107" data-linenumber="29">
+ <span class="hits">107</span>
+
+ <code class="ruby"> .instance_eval do |partial_results|</code>
+ </li>
+
+ <li class="covered" data-hits="107" data-linenumber="30">
+ <span class="hits">107</span>
+
+ <code class="ruby"> RegexpExamples::permutations_of_strings(partial_results)</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="31">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="32">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="33">
+
+
<code class="ruby">end</code>
</li>
- <li class="never" data-hits="" data-linenumber="26">
+ <li class="never" data-hits="" data-linenumber="34">
<code class="ruby"></code>
</li>
@@ -1735,12 +1891,12 @@
<div class="source_table" id="d0056bbc5aec01e743374a8696b2086c03bae8f0">
<div class="header">
<h3>lib/regexp-examples/parser.rb</h3>
<h4><span class="green">100.0 %</span> covered</h4>
<div>
- <b>135</b> relevant lines.
- <span class="green"><b>135</b> lines covered</span> and
+ <b>136</b> relevant lines.
+ <span class="green"><b>136</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -1768,24 +1924,24 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(regexp_string)</code>
</li>
- <li class="covered" data-hits="93" data-linenumber="5">
- <span class="hits">93</span>
+ <li class="covered" data-hits="106" data-linenumber="5">
+ <span class="hits">106</span>
<code class="ruby"> @regexp_string = regexp_string</code>
</li>
- <li class="covered" data-hits="93" data-linenumber="6">
- <span class="hits">93</span>
+ <li class="covered" data-hits="106" data-linenumber="6">
+ <span class="hits">106</span>
<code class="ruby"> @num_groups = 0</code>
</li>
- <li class="covered" data-hits="93" data-linenumber="7">
- <span class="hits">93</span>
+ <li class="covered" data-hits="106" data-linenumber="7">
+ <span class="hits">106</span>
<code class="ruby"> @current_position = 0</code>
</li>
<li class="never" data-hits="" data-linenumber="8">
@@ -1804,1385 +1960,1409 @@
<span class="hits">1</span>
<code class="ruby"> def parse</code>
</li>
- <li class="covered" data-hits="141" data-linenumber="11">
- <span class="hits">141</span>
+ <li class="covered" data-hits="157" data-linenumber="11">
+ <span class="hits">157</span>
<code class="ruby"> repeaters = []</code>
</li>
- <li class="covered" data-hits="141" data-linenumber="12">
- <span class="hits">141</span>
+ <li class="covered" data-hits="157" data-linenumber="12">
+ <span class="hits">157</span>
<code class="ruby"> while @current_position < regexp_string.length</code>
</li>
- <li class="covered" data-hits="420" data-linenumber="13">
- <span class="hits">420</span>
+ <li class="covered" data-hits="453" data-linenumber="13">
+ <span class="hits">453</span>
<code class="ruby"> group = parse_group(repeaters)</code>
</li>
- <li class="covered" data-hits="402" data-linenumber="14">
- <span class="hits">402</span>
+ <li class="covered" data-hits="435" data-linenumber="14">
+ <span class="hits">435</span>
<code class="ruby"> break if group.is_a? MultiGroupEnd</code>
</li>
- <li class="covered" data-hits="361" data-linenumber="15">
- <span class="hits">361</span>
+ <li class="covered" data-hits="394" data-linenumber="15">
+ <span class="hits">394</span>
- <code class="ruby"> repeaters = [] if group.is_a? OrGroup</code>
+ <code class="ruby"> if group.is_a? OrGroup</code>
</li>
- <li class="covered" data-hits="361" data-linenumber="16">
- <span class="hits">361</span>
+ <li class="covered" data-hits="9" data-linenumber="16">
+ <span class="hits">9</span>
+ <code class="ruby"> return [OneTimeRepeater.new(group)]</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="17">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="covered" data-hits="385" data-linenumber="18">
+ <span class="hits">385</span>
+
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="361" data-linenumber="17">
- <span class="hits">361</span>
+ <li class="covered" data-hits="385" data-linenumber="19">
+ <span class="hits">385</span>
<code class="ruby"> repeaters << parse_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="18">
+ <li class="never" data-hits="" data-linenumber="20">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="123" data-linenumber="19">
- <span class="hits">123</span>
+ <li class="covered" data-hits="130" data-linenumber="21">
+ <span class="hits">130</span>
<code class="ruby"> repeaters</code>
</li>
- <li class="never" data-hits="" data-linenumber="20">
+ <li class="never" data-hits="" data-linenumber="22">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="21">
+ <li class="never" data-hits="" data-linenumber="23">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="22">
+ <li class="covered" data-hits="1" data-linenumber="24">
<span class="hits">1</span>
<code class="ruby"> private</code>
</li>
- <li class="never" data-hits="" data-linenumber="23">
+ <li class="never" data-hits="" data-linenumber="25">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="24">
+ <li class="covered" data-hits="1" data-linenumber="26">
<span class="hits">1</span>
<code class="ruby"> def parse_group(repeaters)</code>
</li>
- <li class="covered" data-hits="420" data-linenumber="25">
- <span class="hits">420</span>
+ <li class="covered" data-hits="453" data-linenumber="27">
+ <span class="hits">453</span>
<code class="ruby"> char = regexp_string[@current_position]</code>
</li>
- <li class="covered" data-hits="420" data-linenumber="26">
- <span class="hits">420</span>
+ <li class="covered" data-hits="453" data-linenumber="28">
+ <span class="hits">453</span>
<code class="ruby"> case char</code>
</li>
- <li class="never" data-hits="" data-linenumber="27">
+ <li class="never" data-hits="" data-linenumber="29">
<code class="ruby"> when '('</code>
</li>
- <li class="covered" data-hits="46" data-linenumber="28">
+ <li class="covered" data-hits="46" data-linenumber="30">
<span class="hits">46</span>
<code class="ruby"> group = parse_multi_group</code>
</li>
- <li class="never" data-hits="" data-linenumber="29">
+ <li class="never" data-hits="" data-linenumber="31">
<code class="ruby"> when ')'</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="30">
+ <li class="covered" data-hits="41" data-linenumber="32">
<span class="hits">41</span>
<code class="ruby"> group = parse_multi_end_group</code>
</li>
- <li class="never" data-hits="" data-linenumber="31">
+ <li class="never" data-hits="" data-linenumber="33">
<code class="ruby"> when '['</code>
</li>
- <li class="covered" data-hits="16" data-linenumber="32">
- <span class="hits">16</span>
+ <li class="covered" data-hits="27" data-linenumber="34">
+ <span class="hits">27</span>
<code class="ruby"> group = parse_char_group</code>
</li>
- <li class="never" data-hits="" data-linenumber="33">
+ <li class="never" data-hits="" data-linenumber="35">
<code class="ruby"> when '.'</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="34">
+ <li class="covered" data-hits="4" data-linenumber="36">
<span class="hits">4</span>
<code class="ruby"> group = parse_dot_group</code>
</li>
- <li class="never" data-hits="" data-linenumber="35">
+ <li class="never" data-hits="" data-linenumber="37">
<code class="ruby"> when '|'</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="36">
- <span class="hits">6</span>
+ <li class="covered" data-hits="9" data-linenumber="38">
+ <span class="hits">9</span>
<code class="ruby"> group = parse_or_group(repeaters)</code>
</li>
- <li class="never" data-hits="" data-linenumber="37">
+ <li class="never" data-hits="" data-linenumber="39">
<code class="ruby"> when '\\'</code>
</li>
- <li class="covered" data-hits="63" data-linenumber="38">
+ <li class="covered" data-hits="63" data-linenumber="40">
<span class="hits">63</span>
<code class="ruby"> group = parse_after_backslash_group</code>
</li>
- <li class="never" data-hits="" data-linenumber="39">
+ <li class="never" data-hits="" data-linenumber="41">
<code class="ruby"> when '^', 'A'</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="40">
+ <li class="covered" data-hits="2" data-linenumber="42">
<span class="hits">2</span>
<code class="ruby"> if @current_position == 0</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="41">
+ <li class="covered" data-hits="1" data-linenumber="43">
<span class="hits">1</span>
<code class="ruby"> group = parse_single_char_group('') # Ignore the "illegal" character</code>
</li>
- <li class="never" data-hits="" data-linenumber="42">
+ <li class="never" data-hits="" data-linenumber="44">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="43">
+ <li class="covered" data-hits="1" data-linenumber="45">
<span class="hits">1</span>
<code class="ruby"> raise IllegalSyntaxError, "Anchors cannot be supported, as they are not regular"</code>
</li>
- <li class="never" data-hits="" data-linenumber="44">
+ <li class="never" data-hits="" data-linenumber="46">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="45">
+ <li class="never" data-hits="" data-linenumber="47">
<code class="ruby"> when '$', 'z', 'Z'</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="46">
+ <li class="covered" data-hits="2" data-linenumber="48">
<span class="hits">2</span>
<code class="ruby"> if @current_position == (regexp_string.length - 1)</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="47">
+ <li class="covered" data-hits="1" data-linenumber="49">
<span class="hits">1</span>
<code class="ruby"> group = parse_single_char_group('') # Ignore the "illegal" character</code>
</li>
- <li class="never" data-hits="" data-linenumber="48">
+ <li class="never" data-hits="" data-linenumber="50">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="49">
+ <li class="covered" data-hits="1" data-linenumber="51">
<span class="hits">1</span>
<code class="ruby"> raise IllegalSyntaxError, "Anchors cannot be supported, as they are not regular"</code>
</li>
- <li class="never" data-hits="" data-linenumber="50">
+ <li class="never" data-hits="" data-linenumber="52">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="51">
+ <li class="never" data-hits="" data-linenumber="53">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="240" data-linenumber="52">
- <span class="hits">240</span>
+ <li class="covered" data-hits="259" data-linenumber="54">
+ <span class="hits">259</span>
<code class="ruby"> group = parse_single_char_group(char)</code>
</li>
- <li class="never" data-hits="" data-linenumber="53">
+ <li class="never" data-hits="" data-linenumber="55">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="402" data-linenumber="54">
- <span class="hits">402</span>
+ <li class="covered" data-hits="435" data-linenumber="56">
+ <span class="hits">435</span>
<code class="ruby"> group</code>
</li>
- <li class="never" data-hits="" data-linenumber="55">
+ <li class="never" data-hits="" data-linenumber="57">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="56">
+ <li class="never" data-hits="" data-linenumber="58">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="57">
+ <li class="covered" data-hits="1" data-linenumber="59">
<span class="hits">1</span>
<code class="ruby"> def parse_after_backslash_group</code>
</li>
- <li class="covered" data-hits="63" data-linenumber="58">
+ <li class="covered" data-hits="63" data-linenumber="60">
<span class="hits">63</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="never" data-hits="" data-linenumber="59">
+ <li class="never" data-hits="" data-linenumber="61">
<code class="ruby"> case</code>
</li>
- <li class="never" data-hits="" data-linenumber="60">
+ <li class="never" data-hits="" data-linenumber="62">
<code class="ruby"> when rest_of_string =~ /\A(\d+)/</code>
</li>
- <li class="covered" data-hits="19" data-linenumber="61">
+ <li class="covered" data-hits="19" data-linenumber="63">
<span class="hits">19</span>
<code class="ruby"> @current_position += ($1.length - 1) # In case of 10+ backrefs!</code>
</li>
- <li class="covered" data-hits="19" data-linenumber="62">
+ <li class="covered" data-hits="19" data-linenumber="64">
<span class="hits">19</span>
<code class="ruby"> group = parse_backreference_group($1)</code>
</li>
- <li class="never" data-hits="" data-linenumber="63">
+ <li class="never" data-hits="" data-linenumber="65">
<code class="ruby"> when rest_of_string =~ /\Ak<([^>]+)>/ # Named capture group</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="64">
+ <li class="covered" data-hits="1" data-linenumber="66">
<span class="hits">1</span>
<code class="ruby"> @current_position += ($1.length + 2)</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="65">
+ <li class="covered" data-hits="1" data-linenumber="67">
<span class="hits">1</span>
<code class="ruby"> group = parse_backreference_group($1)</code>
</li>
- <li class="never" data-hits="" data-linenumber="66">
+ <li class="never" data-hits="" data-linenumber="68">
<code class="ruby"> when BackslashCharMap.keys.include?(regexp_string[@current_position])</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="67">
+ <li class="covered" data-hits="14" data-linenumber="69">
<span class="hits">14</span>
<code class="ruby"> group = CharGroup.new(</code>
</li>
- <li class="never" data-hits="" data-linenumber="68">
+ <li class="never" data-hits="" data-linenumber="70">
- <code class="ruby"> BackslashCharMap[regexp_string[@current_position]])</code>
+ <code class="ruby"> # Note: The `.dup` is important, as it prevents modifying the constant, in</code>
</li>
- <li class="never" data-hits="" data-linenumber="69">
+ <li class="never" data-hits="" data-linenumber="71">
+ <code class="ruby"> # CharGroup#init_ranges (where the '-' is moved to the front)</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="72">
+
+
+ <code class="ruby"> BackslashCharMap[regexp_string[@current_position]].dup</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="73">
+
+
+ <code class="ruby"> )</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="74">
+
+
<code class="ruby"> when rest_of_string =~ /\A(c|C-)(.)/ # Control character</code>
</li>
- <li class="covered" data-hits="8" data-linenumber="70">
+ <li class="covered" data-hits="8" data-linenumber="75">
<span class="hits">8</span>
<code class="ruby"> @current_position += $1.length</code>
</li>
- <li class="covered" data-hits="8" data-linenumber="71">
+ <li class="covered" data-hits="8" data-linenumber="76">
<span class="hits">8</span>
<code class="ruby"> group = parse_single_char_group( parse_control_character($2) )</code>
</li>
- <li class="never" data-hits="" data-linenumber="72">
+ <li class="never" data-hits="" data-linenumber="77">
<code class="ruby"> when rest_of_string =~ /\Ax(\h{1,2})/ # Escape sequence</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="73">
+ <li class="covered" data-hits="3" data-linenumber="78">
<span class="hits">3</span>
<code class="ruby"> @current_position += $1.length</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="74">
+ <li class="covered" data-hits="3" data-linenumber="79">
<span class="hits">3</span>
<code class="ruby"> group = parse_single_char_group( parse_escape_sequence($1) )</code>
</li>
- <li class="never" data-hits="" data-linenumber="75">
+ <li class="never" data-hits="" data-linenumber="80">
<code class="ruby"> when rest_of_string =~ /\Au(\h{4}|\{\h{1,4}\})/ # Unicode sequence</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="76">
+ <li class="covered" data-hits="3" data-linenumber="81">
<span class="hits">3</span>
<code class="ruby"> @current_position += $1.length</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="77">
+ <li class="covered" data-hits="3" data-linenumber="82">
<span class="hits">3</span>
<code class="ruby"> sequence = $1.match(/\h{1,4}/)[0] # Strip off "{" and "}"</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="78">
+ <li class="covered" data-hits="3" data-linenumber="83">
<span class="hits">3</span>
<code class="ruby"> group = parse_single_char_group( parse_unicode_sequence(sequence) )</code>
</li>
- <li class="never" data-hits="" data-linenumber="79">
+ <li class="never" data-hits="" data-linenumber="84">
<code class="ruby"> when rest_of_string =~ /\Ap\{([^}]+)\}/ # Named properties</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="80">
+ <li class="covered" data-hits="3" data-linenumber="85">
<span class="hits">3</span>
<code class="ruby"> @current_position += ($1.length + 2)</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="81">
+ <li class="covered" data-hits="3" data-linenumber="86">
<span class="hits">3</span>
<code class="ruby"> raise UnsupportedSyntaxError, "Named properties ({\\p#{$1}}) are not yet supported"</code>
</li>
- <li class="never" data-hits="" data-linenumber="82">
+ <li class="never" data-hits="" data-linenumber="87">
<code class="ruby"> when rest_of_string =~ /\Ag/ # Subexpression call</code>
</li>
- <li class="never" data-hits="" data-linenumber="83">
+ <li class="never" data-hits="" data-linenumber="88">
<code class="ruby"> # TODO: Should this be IllegalSyntaxError ?</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="84">
+ <li class="covered" data-hits="1" data-linenumber="89">
<span class="hits">1</span>
<code class="ruby"> raise UnsupportedSyntaxError, "Subexpression calls (\g) are not yet supported"</code>
</li>
- <li class="never" data-hits="" data-linenumber="85">
+ <li class="never" data-hits="" data-linenumber="90">
<code class="ruby"> when rest_of_string =~ /\A[GbB]/ # Anchors</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="86">
+ <li class="covered" data-hits="3" data-linenumber="91">
<span class="hits">3</span>
<code class="ruby"> raise IllegalSyntaxError, "Anchors cannot be supported, as they are not regular"</code>
</li>
- <li class="never" data-hits="" data-linenumber="87">
+ <li class="never" data-hits="" data-linenumber="92">
<code class="ruby"> when rest_of_string =~ /\AA/ # Start of string</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="88">
+ <li class="covered" data-hits="2" data-linenumber="93">
<span class="hits">2</span>
<code class="ruby"> if @current_position == 1</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="89">
+ <li class="covered" data-hits="1" data-linenumber="94">
<span class="hits">1</span>
<code class="ruby"> group = parse_single_char_group('') # Ignore the "illegal" character</code>
</li>
- <li class="never" data-hits="" data-linenumber="90">
+ <li class="never" data-hits="" data-linenumber="95">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="91">
+ <li class="covered" data-hits="1" data-linenumber="96">
<span class="hits">1</span>
<code class="ruby"> raise IllegalSyntaxError, "Anchors cannot be supported, as they are not regular"</code>
</li>
- <li class="never" data-hits="" data-linenumber="92">
+ <li class="never" data-hits="" data-linenumber="97">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="93">
+ <li class="never" data-hits="" data-linenumber="98">
<code class="ruby"> when rest_of_string =~ /\A[zZ]/ # End of string</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="94">
+ <li class="covered" data-hits="4" data-linenumber="99">
<span class="hits">4</span>
<code class="ruby"> if @current_position == (regexp_string.length - 1)</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="95">
+ <li class="covered" data-hits="2" data-linenumber="100">
<span class="hits">2</span>
<code class="ruby"> group = parse_single_char_group('') # Ignore the "illegal" character</code>
</li>
- <li class="never" data-hits="" data-linenumber="96">
+ <li class="never" data-hits="" data-linenumber="101">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="97">
+ <li class="covered" data-hits="2" data-linenumber="102">
<span class="hits">2</span>
<code class="ruby"> raise IllegalSyntaxError, "Anchors cannot be supported, as they are not regular"</code>
</li>
- <li class="never" data-hits="" data-linenumber="98">
+ <li class="never" data-hits="" data-linenumber="103">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="99">
+ <li class="never" data-hits="" data-linenumber="104">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="100">
+ <li class="covered" data-hits="2" data-linenumber="105">
<span class="hits">2</span>
<code class="ruby"> group = parse_single_char_group( regexp_string[@current_position] )</code>
</li>
- <li class="never" data-hits="" data-linenumber="101">
-
-
- <code class="ruby"> # TODO: What about cases like \A, \z, \Z ?</code>
- </li>
-
- <li class="covered" data-hits="63" data-linenumber="102">
+ <li class="covered" data-hits="63" data-linenumber="106">
<span class="hits">63</span>
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="53" data-linenumber="103">
+ <li class="covered" data-hits="53" data-linenumber="107">
<span class="hits">53</span>
<code class="ruby"> group</code>
</li>
- <li class="never" data-hits="" data-linenumber="104">
+ <li class="never" data-hits="" data-linenumber="108">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="105">
+ <li class="never" data-hits="" data-linenumber="109">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="106">
+ <li class="covered" data-hits="1" data-linenumber="110">
<span class="hits">1</span>
<code class="ruby"> def parse_repeater(group)</code>
</li>
- <li class="covered" data-hits="361" data-linenumber="107">
- <span class="hits">361</span>
+ <li class="covered" data-hits="385" data-linenumber="111">
+ <span class="hits">385</span>
<code class="ruby"> char = regexp_string[@current_position]</code>
</li>
- <li class="covered" data-hits="361" data-linenumber="108">
- <span class="hits">361</span>
+ <li class="covered" data-hits="385" data-linenumber="112">
+ <span class="hits">385</span>
<code class="ruby"> case char</code>
</li>
- <li class="never" data-hits="" data-linenumber="109">
+ <li class="never" data-hits="" data-linenumber="113">
<code class="ruby"> when '*'</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="110">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="114">
+ <span class="hits">6</span>
<code class="ruby"> repeater = parse_star_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="111">
+ <li class="never" data-hits="" data-linenumber="115">
<code class="ruby"> when '+'</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="112">
- <span class="hits">4</span>
+ <li class="covered" data-hits="5" data-linenumber="116">
+ <span class="hits">5</span>
<code class="ruby"> repeater = parse_plus_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="113">
+ <li class="never" data-hits="" data-linenumber="117">
<code class="ruby"> when '?'</code>
</li>
- <li class="covered" data-hits="11" data-linenumber="114">
+ <li class="covered" data-hits="11" data-linenumber="118">
<span class="hits">11</span>
<code class="ruby"> repeater = parse_question_mark_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="115">
+ <li class="never" data-hits="" data-linenumber="119">
<code class="ruby"> when '{'</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="116">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="120">
+ <span class="hits">6</span>
<code class="ruby"> repeater = parse_range_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="117">
+ <li class="never" data-hits="" data-linenumber="121">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="336" data-linenumber="118">
- <span class="hits">336</span>
+ <li class="covered" data-hits="357" data-linenumber="122">
+ <span class="hits">357</span>
<code class="ruby"> repeater = parse_one_time_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="119">
+ <li class="never" data-hits="" data-linenumber="123">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="361" data-linenumber="120">
- <span class="hits">361</span>
+ <li class="covered" data-hits="385" data-linenumber="124">
+ <span class="hits">385</span>
<code class="ruby"> repeater</code>
</li>
- <li class="never" data-hits="" data-linenumber="121">
+ <li class="never" data-hits="" data-linenumber="125">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="122">
+ <li class="never" data-hits="" data-linenumber="126">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="123">
+ <li class="covered" data-hits="1" data-linenumber="127">
<span class="hits">1</span>
<code class="ruby"> def parse_multi_group</code>
</li>
- <li class="covered" data-hits="46" data-linenumber="124">
+ <li class="covered" data-hits="46" data-linenumber="128">
<span class="hits">46</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="46" data-linenumber="125">
+ <li class="covered" data-hits="46" data-linenumber="129">
<span class="hits">46</span>
<code class="ruby"> @num_groups += 1</code>
</li>
- <li class="covered" data-hits="46" data-linenumber="126">
+ <li class="covered" data-hits="46" data-linenumber="130">
<span class="hits">46</span>
<code class="ruby"> group_id = nil # init</code>
</li>
- <li class="covered" data-hits="46" data-linenumber="127">
+ <li class="covered" data-hits="46" data-linenumber="131">
<span class="hits">46</span>
<code class="ruby"> rest_of_string.match(/\A(\?)?(:|!|=|<(!|=|[^!=][^>]*))?/) do |match|</code>
</li>
- <li class="never" data-hits="" data-linenumber="128">
+ <li class="never" data-hits="" data-linenumber="132">
<code class="ruby"> case</code>
</li>
- <li class="never" data-hits="" data-linenumber="129">
+ <li class="never" data-hits="" data-linenumber="133">
<code class="ruby"> when match[1].nil? # e.g. /(normal)/</code>
</li>
- <li class="covered" data-hits="38" data-linenumber="130">
+ <li class="covered" data-hits="38" data-linenumber="134">
<span class="hits">38</span>
<code class="ruby"> group_id = @num_groups.to_s</code>
</li>
- <li class="never" data-hits="" data-linenumber="131">
+ <li class="never" data-hits="" data-linenumber="135">
<code class="ruby"> when match[2] == ':' # e.g. /(?:nocapture)/</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="132">
+ <li class="covered" data-hits="1" data-linenumber="136">
<span class="hits">1</span>
<code class="ruby"> @current_position += 2</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="133">
+ <li class="covered" data-hits="1" data-linenumber="137">
<span class="hits">1</span>
<code class="ruby"> group_id = nil</code>
</li>
- <li class="never" data-hits="" data-linenumber="134">
+ <li class="never" data-hits="" data-linenumber="138">
<code class="ruby"> when %w(! =).include?(match[2]) # e.g. /(?=lookahead)/, /(?!neglookahead)/</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="135">
+ <li class="covered" data-hits="2" data-linenumber="139">
<span class="hits">2</span>
<code class="ruby"> raise IllegalSyntaxError, "Lookaheads are not regular; cannot generate examples"</code>
</li>
- <li class="never" data-hits="" data-linenumber="136">
+ <li class="never" data-hits="" data-linenumber="140">
<code class="ruby"> when %w(! =).include?(match[3]) # e.g. /(?<=lookbehind)/, /(?<!neglookbehind)/</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="137">
+ <li class="covered" data-hits="2" data-linenumber="141">
<span class="hits">2</span>
<code class="ruby"> raise IllegalSyntaxError, "Lookbehinds are not regular; cannot generate examples"</code>
</li>
- <li class="never" data-hits="" data-linenumber="138">
+ <li class="never" data-hits="" data-linenumber="142">
<code class="ruby"> else # e.g. /(?<name>namedgroup)/</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="139">
+ <li class="covered" data-hits="3" data-linenumber="143">
<span class="hits">3</span>
<code class="ruby"> @current_position += (match[3].length + 3)</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="140">
+ <li class="covered" data-hits="3" data-linenumber="144">
<span class="hits">3</span>
<code class="ruby"> group_id = match[3]</code>
</li>
- <li class="covered" data-hits="46" data-linenumber="141">
+ <li class="covered" data-hits="46" data-linenumber="145">
<span class="hits">46</span>
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="142">
+ <li class="never" data-hits="" data-linenumber="146">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="42" data-linenumber="143">
+ <li class="covered" data-hits="42" data-linenumber="147">
<span class="hits">42</span>
<code class="ruby"> groups = parse</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="144">
+ <li class="covered" data-hits="41" data-linenumber="148">
<span class="hits">41</span>
<code class="ruby"> MultiGroup.new(groups, group_id)</code>
</li>
- <li class="never" data-hits="" data-linenumber="145">
+ <li class="never" data-hits="" data-linenumber="149">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="146">
+ <li class="never" data-hits="" data-linenumber="150">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="147">
+ <li class="covered" data-hits="1" data-linenumber="151">
<span class="hits">1</span>
<code class="ruby"> def parse_multi_end_group</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="148">
+ <li class="covered" data-hits="41" data-linenumber="152">
<span class="hits">41</span>
<code class="ruby"> MultiGroupEnd.new</code>
</li>
- <li class="never" data-hits="" data-linenumber="149">
+ <li class="never" data-hits="" data-linenumber="153">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="150">
+ <li class="never" data-hits="" data-linenumber="154">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="151">
+ <li class="covered" data-hits="1" data-linenumber="155">
<span class="hits">1</span>
<code class="ruby"> def parse_char_group</code>
</li>
- <li class="covered" data-hits="16" data-linenumber="152">
- <span class="hits">16</span>
+ <li class="covered" data-hits="27" data-linenumber="156">
+ <span class="hits">27</span>
<code class="ruby"> if rest_of_string =~ /\A\[\[:[^:]+:\]\]/</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="153">
+ <li class="covered" data-hits="1" data-linenumber="157">
<span class="hits">1</span>
<code class="ruby"> raise UnsupportedSyntaxError, "POSIX bracket expressions are not yet implemented"</code>
</li>
- <li class="never" data-hits="" data-linenumber="154">
+ <li class="never" data-hits="" data-linenumber="158">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="15" data-linenumber="155">
- <span class="hits">15</span>
+ <li class="covered" data-hits="26" data-linenumber="159">
+ <span class="hits">26</span>
<code class="ruby"> chars = []</code>
</li>
- <li class="covered" data-hits="15" data-linenumber="156">
- <span class="hits">15</span>
+ <li class="covered" data-hits="26" data-linenumber="160">
+ <span class="hits">26</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="15" data-linenumber="157">
- <span class="hits">15</span>
+ <li class="covered" data-hits="26" data-linenumber="161">
+ <span class="hits">26</span>
<code class="ruby"> if regexp_string[@current_position] == ']'</code>
</li>
- <li class="never" data-hits="" data-linenumber="158">
+ <li class="never" data-hits="" data-linenumber="162">
<code class="ruby"> # Beware of the sneaky edge case:</code>
</li>
- <li class="never" data-hits="" data-linenumber="159">
+ <li class="never" data-hits="" data-linenumber="163">
<code class="ruby"> # /[]]/ (match "]")</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="160">
+ <li class="covered" data-hits="1" data-linenumber="164">
<span class="hits">1</span>
<code class="ruby"> chars << ']'</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="161">
+ <li class="covered" data-hits="1" data-linenumber="165">
<span class="hits">1</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="never" data-hits="" data-linenumber="162">
+ <li class="never" data-hits="" data-linenumber="166">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="163">
+ <li class="never" data-hits="" data-linenumber="167">
<code class="ruby"> until regexp_string[@current_position] == ']' \</code>
</li>
- <li class="covered" data-hits="15" data-linenumber="164">
- <span class="hits">15</span>
+ <li class="covered" data-hits="26" data-linenumber="168">
+ <span class="hits">26</span>
<code class="ruby"> && !regexp_string[0..@current_position-1].match(/[^\\](\\{2})*\\\z/)</code>
</li>
- <li class="never" data-hits="" data-linenumber="165">
+ <li class="never" data-hits="" data-linenumber="169">
<code class="ruby"> # Beware of having an ODD number of "\" before the "]", e.g.</code>
</li>
- <li class="never" data-hits="" data-linenumber="166">
+ <li class="never" data-hits="" data-linenumber="170">
<code class="ruby"> # /[\]]/ (match "]")</code>
</li>
- <li class="never" data-hits="" data-linenumber="167">
+ <li class="never" data-hits="" data-linenumber="171">
<code class="ruby"> # /[\\]/ (match "\")</code>
</li>
- <li class="never" data-hits="" data-linenumber="168">
+ <li class="never" data-hits="" data-linenumber="172">
<code class="ruby"> # /[\\\]]/ (match "\" or "]")</code>
</li>
- <li class="covered" data-hits="43" data-linenumber="169">
- <span class="hits">43</span>
+ <li class="covered" data-hits="105" data-linenumber="173">
+ <span class="hits">105</span>
<code class="ruby"> chars << regexp_string[@current_position]</code>
</li>
- <li class="covered" data-hits="43" data-linenumber="170">
- <span class="hits">43</span>
+ <li class="covered" data-hits="105" data-linenumber="174">
+ <span class="hits">105</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="never" data-hits="" data-linenumber="171">
+ <li class="never" data-hits="" data-linenumber="175">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="15" data-linenumber="172">
- <span class="hits">15</span>
+ <li class="covered" data-hits="26" data-linenumber="176">
+ <span class="hits">26</span>
<code class="ruby"> CharGroup.new(chars)</code>
</li>
- <li class="never" data-hits="" data-linenumber="173">
+ <li class="never" data-hits="" data-linenumber="177">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="174">
+ <li class="never" data-hits="" data-linenumber="178">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="175">
+ <li class="covered" data-hits="1" data-linenumber="179">
<span class="hits">1</span>
<code class="ruby"> def parse_dot_group</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="176">
+ <li class="covered" data-hits="4" data-linenumber="180">
<span class="hits">4</span>
<code class="ruby"> DotGroup.new</code>
</li>
- <li class="never" data-hits="" data-linenumber="177">
+ <li class="never" data-hits="" data-linenumber="181">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="178">
+ <li class="never" data-hits="" data-linenumber="182">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="179">
+ <li class="covered" data-hits="1" data-linenumber="183">
<span class="hits">1</span>
<code class="ruby"> def parse_or_group(left_repeaters)</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="180">
- <span class="hits">6</span>
+ <li class="covered" data-hits="9" data-linenumber="184">
+ <span class="hits">9</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="181">
- <span class="hits">6</span>
+ <li class="covered" data-hits="9" data-linenumber="185">
+ <span class="hits">9</span>
<code class="ruby"> right_repeaters = parse</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="182">
- <span class="hits">6</span>
+ <li class="covered" data-hits="9" data-linenumber="186">
+ <span class="hits">9</span>
<code class="ruby"> OrGroup.new(left_repeaters, right_repeaters)</code>
</li>
- <li class="never" data-hits="" data-linenumber="183">
+ <li class="never" data-hits="" data-linenumber="187">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="184">
+ <li class="never" data-hits="" data-linenumber="188">
<code class="ruby"></code>
</li>
- <li class="never" data-hits="" data-linenumber="185">
+ <li class="never" data-hits="" data-linenumber="189">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="186">
+ <li class="covered" data-hits="1" data-linenumber="190">
<span class="hits">1</span>
<code class="ruby"> def parse_single_char_group(char)</code>
</li>
- <li class="covered" data-hits="261" data-linenumber="187">
- <span class="hits">261</span>
+ <li class="covered" data-hits="280" data-linenumber="191">
+ <span class="hits">280</span>
<code class="ruby"> SingleCharGroup.new(char)</code>
</li>
- <li class="never" data-hits="" data-linenumber="188">
+ <li class="never" data-hits="" data-linenumber="192">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="189">
+ <li class="never" data-hits="" data-linenumber="193">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="190">
+ <li class="covered" data-hits="1" data-linenumber="194">
<span class="hits">1</span>
<code class="ruby"> def parse_backreference_group(match)</code>
</li>
- <li class="covered" data-hits="20" data-linenumber="191">
+ <li class="covered" data-hits="20" data-linenumber="195">
<span class="hits">20</span>
<code class="ruby"> BackReferenceGroup.new(match)</code>
</li>
- <li class="never" data-hits="" data-linenumber="192">
+ <li class="never" data-hits="" data-linenumber="196">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="193">
+ <li class="never" data-hits="" data-linenumber="197">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="194">
+ <li class="covered" data-hits="1" data-linenumber="198">
<span class="hits">1</span>
<code class="ruby"> def parse_control_character(char)</code>
</li>
- <li class="covered" data-hits="8" data-linenumber="195">
+ <li class="covered" data-hits="8" data-linenumber="199">
<span class="hits">8</span>
<code class="ruby"> (char.ord % 32).chr # Black magic!</code>
</li>
- <li class="never" data-hits="" data-linenumber="196">
+ <li class="never" data-hits="" data-linenumber="200">
<code class="ruby"> # eval "?\\C-#{char.chr}" # Doesn't work for e.g. char = "?"</code>
</li>
- <li class="never" data-hits="" data-linenumber="197">
+ <li class="never" data-hits="" data-linenumber="201">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="198">
+ <li class="never" data-hits="" data-linenumber="202">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="199">
+ <li class="covered" data-hits="1" data-linenumber="203">
<span class="hits">1</span>
<code class="ruby"> def parse_escape_sequence(match)</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="200">
+ <li class="covered" data-hits="3" data-linenumber="204">
<span class="hits">3</span>
<code class="ruby"> eval "?\\x#{match}"</code>
</li>
- <li class="never" data-hits="" data-linenumber="201">
+ <li class="never" data-hits="" data-linenumber="205">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="202">
+ <li class="never" data-hits="" data-linenumber="206">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="203">
+ <li class="covered" data-hits="1" data-linenumber="207">
<span class="hits">1</span>
<code class="ruby"> def parse_unicode_sequence(match)</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="204">
+ <li class="covered" data-hits="3" data-linenumber="208">
<span class="hits">3</span>
<code class="ruby"> eval "?\\u{#{match}}"</code>
</li>
- <li class="never" data-hits="" data-linenumber="205">
+ <li class="never" data-hits="" data-linenumber="209">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="206">
+ <li class="never" data-hits="" data-linenumber="210">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="207">
+ <li class="covered" data-hits="1" data-linenumber="211">
<span class="hits">1</span>
<code class="ruby"> def parse_star_repeater(group)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="208">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="212">
+ <span class="hits">6</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="209">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="213">
+ <span class="hits">6</span>
<code class="ruby"> StarRepeater.new(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="210">
+ <li class="never" data-hits="" data-linenumber="214">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="211">
+ <li class="never" data-hits="" data-linenumber="215">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="212">
+ <li class="covered" data-hits="1" data-linenumber="216">
<span class="hits">1</span>
<code class="ruby"> def parse_plus_repeater(group)</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="213">
- <span class="hits">4</span>
+ <li class="covered" data-hits="5" data-linenumber="217">
+ <span class="hits">5</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="214">
- <span class="hits">4</span>
+ <li class="covered" data-hits="5" data-linenumber="218">
+ <span class="hits">5</span>
<code class="ruby"> PlusRepeater.new(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="215">
+ <li class="never" data-hits="" data-linenumber="219">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="216">
+ <li class="never" data-hits="" data-linenumber="220">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="217">
+ <li class="covered" data-hits="1" data-linenumber="221">
<span class="hits">1</span>
<code class="ruby"> def parse_question_mark_repeater(group)</code>
</li>
- <li class="covered" data-hits="11" data-linenumber="218">
+ <li class="covered" data-hits="11" data-linenumber="222">
<span class="hits">11</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="11" data-linenumber="219">
+ <li class="covered" data-hits="11" data-linenumber="223">
<span class="hits">11</span>
<code class="ruby"> QuestionMarkRepeater.new(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="220">
+ <li class="never" data-hits="" data-linenumber="224">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="221">
+ <li class="never" data-hits="" data-linenumber="225">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="222">
+ <li class="covered" data-hits="1" data-linenumber="226">
<span class="hits">1</span>
<code class="ruby"> def parse_range_repeater(group)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="223">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="227">
+ <span class="hits">6</span>
<code class="ruby"> match = rest_of_string.match(/\A\{(\d+)?(,)?(\d+)?\}/)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="224">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="228">
+ <span class="hits">6</span>
<code class="ruby"> @current_position += match[0].size</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="225">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="229">
+ <span class="hits">6</span>
<code class="ruby"> min = match[1].to_i if match[1]</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="226">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="230">
+ <span class="hits">6</span>
<code class="ruby"> has_comma = !match[2].nil?</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="227">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="231">
+ <span class="hits">6</span>
<code class="ruby"> max = match[3].to_i if match[3]</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="228">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="232">
+ <span class="hits">6</span>
<code class="ruby"> RangeRepeater.new(group, min, has_comma, max)</code>
</li>
- <li class="never" data-hits="" data-linenumber="229">
+ <li class="never" data-hits="" data-linenumber="233">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="230">
+ <li class="never" data-hits="" data-linenumber="234">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="231">
+ <li class="covered" data-hits="1" data-linenumber="235">
<span class="hits">1</span>
<code class="ruby"> def parse_one_time_repeater(group)</code>
</li>
- <li class="covered" data-hits="336" data-linenumber="232">
- <span class="hits">336</span>
+ <li class="covered" data-hits="357" data-linenumber="236">
+ <span class="hits">357</span>
<code class="ruby"> OneTimeRepeater.new(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="233">
+ <li class="never" data-hits="" data-linenumber="237">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="234">
+ <li class="never" data-hits="" data-linenumber="238">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="235">
+ <li class="covered" data-hits="1" data-linenumber="239">
<span class="hits">1</span>
<code class="ruby"> def rest_of_string</code>
</li>
- <li class="covered" data-hits="294" data-linenumber="236">
- <span class="hits">294</span>
+ <li class="covered" data-hits="306" data-linenumber="240">
+ <span class="hits">306</span>
<code class="ruby"> regexp_string[@current_position..-1]</code>
</li>
- <li class="never" data-hits="" data-linenumber="237">
+ <li class="never" data-hits="" data-linenumber="241">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="238">
+ <li class="never" data-hits="" data-linenumber="242">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="239">
+ <li class="never" data-hits="" data-linenumber="243">
<code class="ruby">end</code>
</li>
- <li class="never" data-hits="" data-linenumber="240">
+ <li class="never" data-hits="" data-linenumber="244">
<code class="ruby"></code>
</li>
@@ -3193,12 +3373,12 @@
<div class="source_table" id="7f62a530f44ef896b613d357fee92d31ffb7ede8">
<div class="header">
<h3>lib/regexp-examples/regexp_extensions.rb</h3>
<h4><span class="green">100.0 %</span> covered</h4>
<div>
- <b>8</b> relevant lines.
- <span class="green"><b>8</b> lines covered</span> and
+ <b>6</b> relevant lines.
+ <span class="green"><b>6</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -3220,71 +3400,95 @@
<span class="hits">1</span>
<code class="ruby"> def examples</code>
</li>
- <li class="covered" data-hits="93" data-linenumber="4">
- <span class="hits">93</span>
+ <li class="never" data-hits="" data-linenumber="4">
- <code class="ruby"> partial_examples =</code>
+
+ <code class="ruby"># partial_examples =</code>
</li>
<li class="never" data-hits="" data-linenumber="5">
- <code class="ruby"> RegexpExamples::Parser.new(source)</code>
+ <code class="ruby"># RegexpExamples::Parser.new(source)</code>
</li>
<li class="never" data-hits="" data-linenumber="6">
- <code class="ruby"> .parse</code>
+ <code class="ruby"># .parse</code>
</li>
- <li class="covered" data-hits="163" data-linenumber="7">
- <span class="hits">163</span>
+ <li class="never" data-hits="" data-linenumber="7">
- <code class="ruby"> .map {|repeater| repeater.result}</code>
+
+ <code class="ruby"># .map {|repeater| repeater.result}</code>
</li>
- <li class="covered" data-hits="76" data-linenumber="8">
- <span class="hits">76</span>
+ <li class="never" data-hits="" data-linenumber="8">
- <code class="ruby"> full_examples = RegexpExamples::permutations_of_strings(partial_examples)</code>
+
+ <code class="ruby"># full_examples = RegexpExamples::permutations_of_strings(partial_examples)</code>
</li>
- <li class="covered" data-hits="76" data-linenumber="9">
- <span class="hits">76</span>
+ <li class="never" data-hits="" data-linenumber="9">
+
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="106" data-linenumber="10">
+ <span class="hits">106</span>
+
+ <code class="ruby"> full_examples = RegexpExamples::map_results(</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="11">
+
+
+ <code class="ruby"> RegexpExamples::Parser.new(source).parse</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="12">
+
+
+ <code class="ruby"> )</code>
+ </li>
+
+ <li class="covered" data-hits="89" data-linenumber="13">
+ <span class="hits">89</span>
+
<code class="ruby"> RegexpExamples::BackReferenceReplacer.new.substitute_backreferences(full_examples)</code>
</li>
- <li class="never" data-hits="" data-linenumber="10">
+ <li class="never" data-hits="" data-linenumber="14">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="11">
+ <li class="never" data-hits="" data-linenumber="15">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="12">
+ <li class="covered" data-hits="1" data-linenumber="16">
<span class="hits">1</span>
<code class="ruby"> include Examples</code>
</li>
- <li class="never" data-hits="" data-linenumber="13">
+ <li class="never" data-hits="" data-linenumber="17">
<code class="ruby">end</code>
</li>
- <li class="never" data-hits="" data-linenumber="14">
+ <li class="never" data-hits="" data-linenumber="18">
<code class="ruby"></code>
</li>
@@ -3295,12 +3499,12 @@
<div class="source_table" id="0688fc9c3b085e9a6444775c61767c9c5742fb69">
<div class="header">
<h3>lib/regexp-examples/repeaters.rb</h3>
<h4><span class="green">100.0 %</span> covered</h4>
<div>
- <b>43</b> relevant lines.
- <span class="green"><b>43</b> lines covered</span> and
+ <b>46</b> relevant lines.
+ <span class="green"><b>46</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -3328,12 +3532,12 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(group)</code>
</li>
- <li class="covered" data-hits="361" data-linenumber="5">
- <span class="hits">361</span>
+ <li class="covered" data-hits="394" data-linenumber="5">
+ <span class="hits">394</span>
<code class="ruby"> @group = group</code>
</li>
<li class="never" data-hits="" data-linenumber="6">
@@ -3352,36 +3556,36 @@
<span class="hits">1</span>
<code class="ruby"> def result(min_repeats, max_repeats)</code>
</li>
- <li class="covered" data-hits="320" data-linenumber="9">
- <span class="hits">320</span>
+ <li class="covered" data-hits="353" data-linenumber="9">
+ <span class="hits">353</span>
<code class="ruby"> group_results = @group.result[0 .. MaxGroupResults-1]</code>
</li>
- <li class="covered" data-hits="320" data-linenumber="10">
- <span class="hits">320</span>
+ <li class="covered" data-hits="353" data-linenumber="10">
+ <span class="hits">353</span>
<code class="ruby"> results = []</code>
</li>
- <li class="covered" data-hits="320" data-linenumber="11">
- <span class="hits">320</span>
+ <li class="covered" data-hits="353" data-linenumber="11">
+ <span class="hits">353</span>
<code class="ruby"> min_repeats.upto(max_repeats) do |repeats|</code>
</li>
- <li class="covered" data-hits="350" data-linenumber="12">
- <span class="hits">350</span>
+ <li class="covered" data-hits="391" data-linenumber="12">
+ <span class="hits">391</span>
<code class="ruby"> group_results.each do |group_result|</code>
</li>
- <li class="covered" data-hits="464" data-linenumber="13">
- <span class="hits">464</span>
+ <li class="covered" data-hits="499" data-linenumber="13">
+ <span class="hits">499</span>
<code class="ruby"> results << group_result * repeats</code>
</li>
<li class="never" data-hits="" data-linenumber="14">
@@ -3394,12 +3598,12 @@
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="320" data-linenumber="16">
- <span class="hits">320</span>
+ <li class="covered" data-hits="353" data-linenumber="16">
+ <span class="hits">353</span>
<code class="ruby"> results.uniq</code>
</li>
<li class="never" data-hits="" data-linenumber="17">
@@ -3430,12 +3634,12 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(group)</code>
</li>
- <li class="covered" data-hits="336" data-linenumber="22">
- <span class="hits">336</span>
+ <li class="covered" data-hits="366" data-linenumber="22">
+ <span class="hits">366</span>
<code class="ruby"> super</code>
</li>
<li class="never" data-hits="" data-linenumber="23">
@@ -3454,12 +3658,12 @@
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="295" data-linenumber="26">
- <span class="hits">295</span>
+ <li class="covered" data-hits="325" data-linenumber="26">
+ <span class="hits">325</span>
<code class="ruby"> super(1, 1)</code>
</li>
<li class="never" data-hits="" data-linenumber="27">
@@ -3490,12 +3694,12 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(group)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="32">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="32">
+ <span class="hits">6</span>
<code class="ruby"> super</code>
</li>
<li class="never" data-hits="" data-linenumber="33">
@@ -3514,14 +3718,14 @@
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="36">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="36">
+ <span class="hits">6</span>
- <code class="ruby"> super(0, TIMES)</code>
+ <code class="ruby"> super(0, MaxRepeaterVariance)</code>
</li>
<li class="never" data-hits="" data-linenumber="37">
@@ -3550,12 +3754,12 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(group)</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="42">
- <span class="hits">4</span>
+ <li class="covered" data-hits="5" data-linenumber="42">
+ <span class="hits">5</span>
<code class="ruby"> super</code>
</li>
<li class="never" data-hits="" data-linenumber="43">
@@ -3574,14 +3778,14 @@
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="46">
- <span class="hits">4</span>
+ <li class="covered" data-hits="5" data-linenumber="46">
+ <span class="hits">5</span>
- <code class="ruby"> super(1, TIMES)</code>
+ <code class="ruby"> super(1, MaxRepeaterVariance + 1)</code>
</li>
<li class="never" data-hits="" data-linenumber="47">
@@ -3670,107 +3874,143 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(group, min, has_comma, max)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="62">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="62">
+ <span class="hits">6</span>
<code class="ruby"> super(group)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="63">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="63">
+ <span class="hits">6</span>
<code class="ruby"> @min = min || 0</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="64">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="64">
+ <span class="hits">6</span>
<code class="ruby"> if max</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="65">
+ <li class="never" data-hits="" data-linenumber="65">
+
+
+ <code class="ruby"> # Prevent huge number of results in case of e.g. /.{1,100}/.examples</code>
+ </li>
+
+ <li class="covered" data-hits="2" data-linenumber="66">
<span class="hits">2</span>
- <code class="ruby"> @max = max</code>
+ <code class="ruby"> @max = smallest(max, @min + MaxRepeaterVariance)</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="66">
- <span class="hits">3</span>
+ <li class="covered" data-hits="4" data-linenumber="67">
+ <span class="hits">4</span>
<code class="ruby"> elsif has_comma</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="67">
+ <li class="covered" data-hits="1" data-linenumber="68">
<span class="hits">1</span>
- <code class="ruby"> @max = min + TIMES</code>
+ <code class="ruby"> @max = @min + MaxRepeaterVariance</code>
</li>
- <li class="never" data-hits="" data-linenumber="68">
+ <li class="never" data-hits="" data-linenumber="69">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="69">
- <span class="hits">2</span>
+ <li class="covered" data-hits="3" data-linenumber="70">
+ <span class="hits">3</span>
- <code class="ruby"> @max = min</code>
+ <code class="ruby"> @max = @min</code>
</li>
- <li class="never" data-hits="" data-linenumber="70">
+ <li class="never" data-hits="" data-linenumber="71">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="71">
+ <li class="never" data-hits="" data-linenumber="72">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="72">
+ <li class="never" data-hits="" data-linenumber="73">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="73">
+ <li class="covered" data-hits="1" data-linenumber="74">
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="74">
- <span class="hits">5</span>
+ <li class="covered" data-hits="6" data-linenumber="75">
+ <span class="hits">6</span>
<code class="ruby"> super(@min, @max)</code>
</li>
- <li class="never" data-hits="" data-linenumber="75">
+ <li class="never" data-hits="" data-linenumber="76">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="76">
+ <li class="never" data-hits="" data-linenumber="77">
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="78">
+ <span class="hits">1</span>
+
+ <code class="ruby"> private</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="79">
+ <span class="hits">1</span>
+
+ <code class="ruby"> def smallest(x, y)</code>
+ </li>
+
+ <li class="covered" data-hits="2" data-linenumber="80">
+ <span class="hits">2</span>
+
+ <code class="ruby"> (x < y) ? x : y</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="81">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="82">
+
+
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="77">
+ <li class="never" data-hits="" data-linenumber="83">
<code class="ruby">end</code>
</li>
- <li class="never" data-hits="" data-linenumber="78">
+ <li class="never" data-hits="" data-linenumber="84">
<code class="ruby"></code>
</li>
@@ -3781,12 +4021,12 @@
<div class="source_table" id="953f94f8f5f8bad7e1fa800f942a74b781f8fa1c">
<div class="header">
<h3>spec/regexp-examples_spec.rb</h3>
<h4><span class="green">100.0 %</span> covered</h4>
<div>
- <b>42</b> relevant lines.
- <span class="green"><b>42</b> lines covered</span> and
+ <b>50</b> relevant lines.
+ <span class="green"><b>50</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -3802,36 +4042,36 @@
<span class="hits">1</span>
<code class="ruby"> def self.examples_exist_and_match(*regexps)</code>
</li>
- <li class="covered" data-hits="11" data-linenumber="3">
- <span class="hits">11</span>
+ <li class="covered" data-hits="12" data-linenumber="3">
+ <span class="hits">12</span>
<code class="ruby"> regexps.each do |regexp|</code>
</li>
- <li class="covered" data-hits="76" data-linenumber="4">
- <span class="hits">76</span>
+ <li class="covered" data-hits="79" data-linenumber="4">
+ <span class="hits">79</span>
<code class="ruby"> it do</code>
</li>
- <li class="covered" data-hits="76" data-linenumber="5">
- <span class="hits">76</span>
+ <li class="covered" data-hits="79" data-linenumber="5">
+ <span class="hits">79</span>
<code class="ruby"> regexp_examples = regexp.examples</code>
</li>
- <li class="covered" data-hits="76" data-linenumber="6">
- <span class="hits">76</span>
+ <li class="covered" data-hits="79" data-linenumber="6">
+ <span class="hits">79</span>
<code class="ruby"> expect(regexp_examples).not_to be_empty</code>
</li>
- <li class="covered" data-hits="248" data-linenumber="7">
- <span class="hits">248</span>
+ <li class="covered" data-hits="262" data-linenumber="7">
+ <span class="hits">262</span>
<code class="ruby"> regexp_examples.each { |example| expect(example).to match(/\A(?:#{regexp.source})\z/) }</code>
</li>
<li class="never" data-hits="" data-linenumber="8">
@@ -3979,973 +4219,1165 @@
</li>
<li class="covered" data-hits="1" data-linenumber="32">
<span class="hits">1</span>
- <code class="ruby"> context 'returns matching strings' do</code>
+ <code class="ruby"> def self.examples_are_empty(*regexps)</code>
</li>
<li class="covered" data-hits="1" data-linenumber="33">
<span class="hits">1</span>
+ <code class="ruby"> regexps.each do |regexp|</code>
+ </li>
+
+ <li class="covered" data-hits="10" data-linenumber="34">
+ <span class="hits">10</span>
+
+ <code class="ruby"> it do</code>
+ </li>
+
+ <li class="covered" data-hits="10" data-linenumber="35">
+ <span class="hits">10</span>
+
+ <code class="ruby"> expect(regexp.examples).to be_empty</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="36">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="37">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="38">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="39">
+
+
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="40">
+ <span class="hits">1</span>
+
+ <code class="ruby"> context 'returns matching strings' do</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="41">
+ <span class="hits">1</span>
+
<code class="ruby"> context "for basic repeaters" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="34">
+ <li class="covered" data-hits="1" data-linenumber="42">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="35">
+ <li class="never" data-hits="" data-linenumber="43">
<code class="ruby"> /a/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="36">
+ <li class="never" data-hits="" data-linenumber="44">
<code class="ruby"> /a*/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="37">
+ <li class="never" data-hits="" data-linenumber="45">
<code class="ruby"> /a+/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="38">
+ <li class="never" data-hits="" data-linenumber="46">
<code class="ruby"> /a?/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="39">
+ <li class="never" data-hits="" data-linenumber="47">
<code class="ruby"> /a{1}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="40">
+ <li class="never" data-hits="" data-linenumber="48">
<code class="ruby"> /a{1,}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="41">
+ <li class="never" data-hits="" data-linenumber="49">
<code class="ruby"> /a{,2}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="42">
+ <li class="never" data-hits="" data-linenumber="50">
<code class="ruby"> /a{1,2}/</code>
</li>
- <li class="never" data-hits="" data-linenumber="43">
+ <li class="never" data-hits="" data-linenumber="51">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="44">
+ <li class="never" data-hits="" data-linenumber="52">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="45">
+ <li class="never" data-hits="" data-linenumber="53">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="46">
+ <li class="covered" data-hits="1" data-linenumber="54">
<span class="hits">1</span>
<code class="ruby"> context "for basic groups" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="47">
+ <li class="covered" data-hits="1" data-linenumber="55">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="48">
+ <li class="never" data-hits="" data-linenumber="56">
<code class="ruby"> /[a]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="49">
+ <li class="never" data-hits="" data-linenumber="57">
<code class="ruby"> /(a)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="50">
+ <li class="never" data-hits="" data-linenumber="58">
<code class="ruby"> /a|b/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="51">
+ <li class="never" data-hits="" data-linenumber="59">
<code class="ruby"> /./</code>
</li>
- <li class="never" data-hits="" data-linenumber="52">
+ <li class="never" data-hits="" data-linenumber="60">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="53">
+ <li class="never" data-hits="" data-linenumber="61">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="54">
+ <li class="never" data-hits="" data-linenumber="62">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="55">
+ <li class="covered" data-hits="1" data-linenumber="63">
<span class="hits">1</span>
<code class="ruby"> context "for complex char groups (square brackets)" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="56">
+ <li class="covered" data-hits="1" data-linenumber="64">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="57">
+ <li class="never" data-hits="" data-linenumber="65">
+ <code class="ruby"></code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="66">
+
+
<code class="ruby"> /[abc]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="58">
+ <li class="never" data-hits="" data-linenumber="67">
<code class="ruby"> /[a-c]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="59">
+ <li class="never" data-hits="" data-linenumber="68">
<code class="ruby"> /[abc-e]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="60">
+ <li class="never" data-hits="" data-linenumber="69">
<code class="ruby"> /[^a-zA-Z]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="61">
+ <li class="never" data-hits="" data-linenumber="70">
<code class="ruby"> /[\w]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="62">
+ <li class="never" data-hits="" data-linenumber="71">
<code class="ruby"> /[]]/, # TODO: How to suppress annoying warnings on this test?</code>
</li>
- <li class="never" data-hits="" data-linenumber="63">
+ <li class="never" data-hits="" data-linenumber="72">
<code class="ruby"> /[\]]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="64">
+ <li class="never" data-hits="" data-linenumber="73">
<code class="ruby"> /[\\]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="65">
+ <li class="never" data-hits="" data-linenumber="74">
<code class="ruby"> /[\\\]]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="66">
+ <li class="never" data-hits="" data-linenumber="75">
<code class="ruby"> /[\n-\r]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="67">
+ <li class="never" data-hits="" data-linenumber="76">
<code class="ruby"> /[\-]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="68">
+ <li class="never" data-hits="" data-linenumber="77">
- <code class="ruby"> /[%-+]/ # This regex is "supposed to" match some surprising things!!!</code>
+ <code class="ruby"> /[%-+]/, # This regex is "supposed to" match some surprising things!!!</code>
</li>
- <li class="never" data-hits="" data-linenumber="69">
+ <li class="never" data-hits="" data-linenumber="78">
+ <code class="ruby"> /['-.]/ # Test to ensure no "infinite loop" on character set expansion</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="79">
+
+
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="70">
+ <li class="never" data-hits="" data-linenumber="80">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="71">
+ <li class="never" data-hits="" data-linenumber="81">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="72">
+ <li class="covered" data-hits="1" data-linenumber="82">
<span class="hits">1</span>
<code class="ruby"> context "for complex multi groups" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="73">
+ <li class="covered" data-hits="1" data-linenumber="83">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="74">
+ <li class="never" data-hits="" data-linenumber="84">
<code class="ruby"> /(normal)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="75">
+ <li class="never" data-hits="" data-linenumber="85">
<code class="ruby"> /(?:nocapture)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="76">
+ <li class="never" data-hits="" data-linenumber="86">
<code class="ruby"> /(?<name>namedgroup)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="77">
+ <li class="never" data-hits="" data-linenumber="87">
<code class="ruby"> /(?<name>namedgroup) \k<name>/</code>
</li>
- <li class="never" data-hits="" data-linenumber="78">
+ <li class="never" data-hits="" data-linenumber="88">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="79">
+ <li class="never" data-hits="" data-linenumber="89">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="80">
+ <li class="never" data-hits="" data-linenumber="90">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="81">
+ <li class="covered" data-hits="1" data-linenumber="91">
<span class="hits">1</span>
<code class="ruby"> context "for escaped characters" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="82">
+ <li class="covered" data-hits="1" data-linenumber="92">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="83">
+ <li class="never" data-hits="" data-linenumber="93">
<code class="ruby"> /\w/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="84">
+ <li class="never" data-hits="" data-linenumber="94">
<code class="ruby"> /\W/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="85">
+ <li class="never" data-hits="" data-linenumber="95">
<code class="ruby"> /\s/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="86">
+ <li class="never" data-hits="" data-linenumber="96">
<code class="ruby"> /\S/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="87">
+ <li class="never" data-hits="" data-linenumber="97">
<code class="ruby"> /\d/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="88">
+ <li class="never" data-hits="" data-linenumber="98">
<code class="ruby"> /\D/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="89">
+ <li class="never" data-hits="" data-linenumber="99">
<code class="ruby"> /\h/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="90">
+ <li class="never" data-hits="" data-linenumber="100">
<code class="ruby"> /\H/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="91">
+ <li class="never" data-hits="" data-linenumber="101">
<code class="ruby"> /\t/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="92">
+ <li class="never" data-hits="" data-linenumber="102">
<code class="ruby"> /\n/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="93">
+ <li class="never" data-hits="" data-linenumber="103">
<code class="ruby"> /\f/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="94">
+ <li class="never" data-hits="" data-linenumber="104">
<code class="ruby"> /\a/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="95">
+ <li class="never" data-hits="" data-linenumber="105">
<code class="ruby"> /\v/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="96">
+ <li class="never" data-hits="" data-linenumber="106">
<code class="ruby"> /\e/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="97">
+ <li class="never" data-hits="" data-linenumber="107">
<code class="ruby"> /[\b]/</code>
</li>
- <li class="never" data-hits="" data-linenumber="98">
+ <li class="never" data-hits="" data-linenumber="108">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="99">
+ <li class="never" data-hits="" data-linenumber="109">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="100">
+ <li class="never" data-hits="" data-linenumber="110">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="101">
+ <li class="covered" data-hits="1" data-linenumber="111">
<span class="hits">1</span>
<code class="ruby"> context "for backreferences" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="102">
+ <li class="covered" data-hits="1" data-linenumber="112">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="103">
+ <li class="never" data-hits="" data-linenumber="113">
<code class="ruby"> /(repeat) \1/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="104">
+ <li class="never" data-hits="" data-linenumber="114">
<code class="ruby"> /(ref1) (ref2) \1 \2/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="105">
+ <li class="never" data-hits="" data-linenumber="115">
<code class="ruby"> /((ref2)ref1) \1 \2/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="106">
+ <li class="never" data-hits="" data-linenumber="116">
<code class="ruby"> /((ref1and2)) \1 \2/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="107">
+ <li class="never" data-hits="" data-linenumber="117">
<code class="ruby"> /(one)(two)(three)(four)(five)(six)(seven)(eight)(nine)(ten) \10\9\8\7\6\5\4\3\2\1/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="108">
+ <li class="never" data-hits="" data-linenumber="118">
<code class="ruby"> /(a?(b?(c?(d?(e?)))))/</code>
</li>
- <li class="never" data-hits="" data-linenumber="109">
+ <li class="never" data-hits="" data-linenumber="119">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="110">
+ <li class="never" data-hits="" data-linenumber="120">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="111">
+ <li class="never" data-hits="" data-linenumber="121">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="112">
+ <li class="covered" data-hits="1" data-linenumber="122">
<span class="hits">1</span>
<code class="ruby"> context "for complex patterns" do</code>
</li>
- <li class="never" data-hits="" data-linenumber="113">
+ <li class="never" data-hits="" data-linenumber="123">
<code class="ruby"> # Longer combinations of the above</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="114">
+ <li class="covered" data-hits="1" data-linenumber="124">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="115">
+ <li class="never" data-hits="" data-linenumber="125">
<code class="ruby"> /https?:\/\/(www\.)github\.com/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="116">
+ <li class="never" data-hits="" data-linenumber="126">
<code class="ruby"> /(I(N(C(E(P(T(I(O(N)))))))))*/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="117">
+ <li class="never" data-hits="" data-linenumber="127">
<code class="ruby"> /[\w]{1}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="118">
+ <li class="never" data-hits="" data-linenumber="128">
<code class="ruby"> /((a?b*c+)) \1/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="119">
+ <li class="never" data-hits="" data-linenumber="129">
<code class="ruby"> /((a?b*c+)?) \1/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="120">
+ <li class="never" data-hits="" data-linenumber="130">
<code class="ruby"> /a|b|c|d/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="121">
+ <li class="never" data-hits="" data-linenumber="131">
- <code class="ruby"> /a+|b*|c?/</code>
+ <code class="ruby"> /a+|b*|c?/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="122">
+ <li class="never" data-hits="" data-linenumber="132">
+ <code class="ruby"> /one|two|three/</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="133">
+
+
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="123">
+ <li class="never" data-hits="" data-linenumber="134">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="124">
+ <li class="never" data-hits="" data-linenumber="135">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="125">
+ <li class="covered" data-hits="1" data-linenumber="136">
<span class="hits">1</span>
<code class="ruby"> context "for illegal syntax" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="126">
+ <li class="covered" data-hits="1" data-linenumber="137">
<span class="hits">1</span>
<code class="ruby"> examples_raise_illegal_syntax_error(</code>
</li>
- <li class="never" data-hits="" data-linenumber="127">
+ <li class="never" data-hits="" data-linenumber="138">
<code class="ruby"> /(?=lookahead)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="128">
+ <li class="never" data-hits="" data-linenumber="139">
<code class="ruby"> /(?!neglookahead)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="129">
+ <li class="never" data-hits="" data-linenumber="140">
<code class="ruby"> /(?<=lookbehind)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="130">
+ <li class="never" data-hits="" data-linenumber="141">
<code class="ruby"> /(?<!neglookbehind)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="131">
+ <li class="never" data-hits="" data-linenumber="142">
<code class="ruby"> /\bword-boundary/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="132">
+ <li class="never" data-hits="" data-linenumber="143">
<code class="ruby"> /no\Bn-word-boundary/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="133">
+ <li class="never" data-hits="" data-linenumber="144">
<code class="ruby"> /\Glast-match/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="134">
+ <li class="never" data-hits="" data-linenumber="145">
<code class="ruby"> /start-of\A-string/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="135">
+ <li class="never" data-hits="" data-linenumber="146">
<code class="ruby"> /start-of^-line/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="136">
+ <li class="never" data-hits="" data-linenumber="147">
<code class="ruby"> /end-of\Z-string/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="137">
+ <li class="never" data-hits="" data-linenumber="148">
<code class="ruby"> /end-of\z-string/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="138">
+ <li class="never" data-hits="" data-linenumber="149">
<code class="ruby"> /end-of$-line/</code>
</li>
- <li class="never" data-hits="" data-linenumber="139">
+ <li class="never" data-hits="" data-linenumber="150">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="140">
+ <li class="never" data-hits="" data-linenumber="151">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="141">
+ <li class="never" data-hits="" data-linenumber="152">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="142">
+ <li class="covered" data-hits="1" data-linenumber="153">
<span class="hits">1</span>
<code class="ruby"> context "ignore start/end anchors if at start/end" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="143">
+ <li class="covered" data-hits="1" data-linenumber="154">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="144">
+ <li class="never" data-hits="" data-linenumber="155">
<code class="ruby"> /\Astart/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="145">
+ <li class="never" data-hits="" data-linenumber="156">
<code class="ruby"> /^start/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="146">
+ <li class="never" data-hits="" data-linenumber="157">
<code class="ruby"> /end$/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="147">
+ <li class="never" data-hits="" data-linenumber="158">
<code class="ruby"> /end\z/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="148">
+ <li class="never" data-hits="" data-linenumber="159">
<code class="ruby"> /end\Z/</code>
</li>
- <li class="never" data-hits="" data-linenumber="149">
+ <li class="never" data-hits="" data-linenumber="160">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="150">
+ <li class="never" data-hits="" data-linenumber="161">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="151">
+ <li class="never" data-hits="" data-linenumber="162">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="152">
+ <li class="covered" data-hits="1" data-linenumber="163">
<span class="hits">1</span>
<code class="ruby"> context "for unsupported syntax" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="153">
+ <li class="covered" data-hits="1" data-linenumber="164">
<span class="hits">1</span>
<code class="ruby"> examples_raise_unsupported_syntax_error(</code>
</li>
- <li class="never" data-hits="" data-linenumber="154">
+ <li class="never" data-hits="" data-linenumber="165">
<code class="ruby"> /\p{L}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="155">
+ <li class="never" data-hits="" data-linenumber="166">
<code class="ruby"> /\p{Arabic}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="156">
+ <li class="never" data-hits="" data-linenumber="167">
<code class="ruby"> /\p{^Ll}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="157">
+ <li class="never" data-hits="" data-linenumber="168">
<code class="ruby"> /(?<name> ... \g<name>*)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="158">
+ <li class="never" data-hits="" data-linenumber="169">
<code class="ruby"> /[[:space:]]/</code>
</li>
- <li class="never" data-hits="" data-linenumber="159">
+ <li class="never" data-hits="" data-linenumber="170">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="160">
+ <li class="never" data-hits="" data-linenumber="171">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="161">
+ <li class="never" data-hits="" data-linenumber="172">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="162">
+ <li class="covered" data-hits="1" data-linenumber="173">
<span class="hits">1</span>
<code class="ruby"> context "for control characters" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="163">
+ <li class="covered" data-hits="1" data-linenumber="174">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="164">
+ <li class="never" data-hits="" data-linenumber="175">
<code class="ruby"> /\ca/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="165">
+ <li class="never" data-hits="" data-linenumber="176">
<code class="ruby"> /\cZ/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="166">
+ <li class="never" data-hits="" data-linenumber="177">
<code class="ruby"> /\c9/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="167">
+ <li class="never" data-hits="" data-linenumber="178">
<code class="ruby"> /\c[/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="168">
+ <li class="never" data-hits="" data-linenumber="179">
<code class="ruby"> /\c#/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="169">
+ <li class="never" data-hits="" data-linenumber="180">
<code class="ruby"> /\c?/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="170">
+ <li class="never" data-hits="" data-linenumber="181">
<code class="ruby"> /\C-a/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="171">
+ <li class="never" data-hits="" data-linenumber="182">
<code class="ruby"> /\C-&/</code>
</li>
- <li class="never" data-hits="" data-linenumber="172">
+ <li class="never" data-hits="" data-linenumber="183">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="173">
+ <li class="never" data-hits="" data-linenumber="184">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="174">
+ <li class="never" data-hits="" data-linenumber="185">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="175">
+ <li class="covered" data-hits="1" data-linenumber="186">
<span class="hits">1</span>
<code class="ruby"> context "for escape sequences" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="176">
+ <li class="covered" data-hits="1" data-linenumber="187">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="177">
+ <li class="never" data-hits="" data-linenumber="188">
<code class="ruby"> /\x42/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="178">
+ <li class="never" data-hits="" data-linenumber="189">
<code class="ruby"> /\x1D/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="179">
+ <li class="never" data-hits="" data-linenumber="190">
<code class="ruby"> /\x3word/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="180">
+ <li class="never" data-hits="" data-linenumber="191">
<code class="ruby"> /#{"\x80".force_encoding("ASCII-8BIT")}/</code>
</li>
- <li class="never" data-hits="" data-linenumber="181">
+ <li class="never" data-hits="" data-linenumber="192">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="182">
+ <li class="never" data-hits="" data-linenumber="193">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="183">
+ <li class="never" data-hits="" data-linenumber="194">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="184">
+ <li class="covered" data-hits="1" data-linenumber="195">
<span class="hits">1</span>
<code class="ruby"> context "for unicode sequences" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="185">
+ <li class="covered" data-hits="1" data-linenumber="196">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="186">
+ <li class="never" data-hits="" data-linenumber="197">
<code class="ruby"> /\u6829/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="187">
+ <li class="never" data-hits="" data-linenumber="198">
<code class="ruby"> /\uabcd/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="188">
+ <li class="never" data-hits="" data-linenumber="199">
<code class="ruby"> /\u{42}word/</code>
</li>
- <li class="never" data-hits="" data-linenumber="189">
+ <li class="never" data-hits="" data-linenumber="200">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="190">
+ <li class="never" data-hits="" data-linenumber="201">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="191">
+ <li class="never" data-hits="" data-linenumber="202">
<code class="ruby"></code>
</li>
- <li class="never" data-hits="" data-linenumber="192">
+ <li class="covered" data-hits="1" data-linenumber="203">
+ <span class="hits">1</span>
+ <code class="ruby"> context "for empty character sets" do</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="204">
+ <span class="hits">1</span>
+ <code class="ruby"> examples_are_empty(</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="205">
+
+
+ <code class="ruby"> /[^\d\D]/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="206">
+
+
+ <code class="ruby"> /[^\w\W]/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="207">
+
+
+ <code class="ruby"> /[^\s\S]/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="208">
+
+
+ <code class="ruby"> /[^\h\H]/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="209">
+
+
+ <code class="ruby"> /[^\D0-9]/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="210">
+
+
+ <code class="ruby"> /[^\Wa-zA-Z0-9_]/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="211">
+
+
+ <code class="ruby"> /[^\d\D]*/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="212">
+
+
+ <code class="ruby"> /[^\d\D]+/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="213">
+
+
+ <code class="ruby"> /[^\d\D]{2}/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="214">
+
+
+ <code class="ruby"> /[^\d\D]word/</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="215">
+
+
+ <code class="ruby"> )</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="216">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="217">
+
+
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="218">
+ <span class="hits">1</span>
+
+ <code class="ruby"> context 'failing' do</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="219">
+ <span class="hits">1</span>
+
+ <code class="ruby"> examples_exist_and_match(</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="220">
+
+
+ <code class="ruby"> /ab|cd/</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="221">
+
+
+ <code class="ruby"> )</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="222">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="223">
+
+
+ <code class="ruby"></code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="224">
+
+
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="193">
+ <li class="never" data-hits="" data-linenumber="225">
<code class="ruby">end</code>
</li>