coverage/index.html in regexp-examples-0.2.4 vs coverage/index.html in regexp-examples-0.3.0
- 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-17T16:37:30+00:00">2015-01-17T16:37:30+00:00</abbr></div>
+ <div class="timestamp">Generated <abbr class="timeago" title="2015-01-17T18:36:38+00:00">2015-01-17T18:36:38+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">
- 74.89
+ 76.72
</span>
</span> hits/line)
</h2>
<a name="AllFiles"></a>
<div>
<b>10</b> files in total.
- <b>316</b> relevant lines.
- <span class="green"><b>316</b> lines covered</span> and
+ <b>343</b> relevant lines.
+ <span class="green"><b>343</b> lines covered</span> and
<span class="red"><b>0</b> lines missed </span>
</div>
<table class="file_list">
<thead>
<tr>
@@ -65,11 +65,11 @@
<td class="green strong">100.0 %</td>
<td>21</td>
<td>11</td>
<td>11</td>
<td>0</td>
- <td>48.7</td>
+ <td>50.4</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>
@@ -95,61 +95,61 @@
<td class="green strong">100.0 %</td>
<td>145</td>
<td>77</td>
<td>77</td>
<td>0</td>
- <td>149.5</td>
+ <td>156.5</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>0</td>
- <td>171.5</td>
+ <td>188.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>205</td>
- <td>116</td>
- <td>116</td>
+ <td>240</td>
+ <td>135</td>
+ <td>135</td>
<td>0</td>
- <td>53.0</td>
+ <td>56.2</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>0</td>
- <td>43.5</td>
+ <td>51.0</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>0</td>
- <td>65.6</td>
+ <td>73.6</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>155</td>
- <td>34</td>
- <td>34</td>
+ <td>192</td>
+ <td>42</td>
+ <td>42</td>
<td>0</td>
- <td>14.4</td>
+ <td>13.5</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="69" data-linenumber="4">
- <span class="hits">69</span>
+ <li class="covered" data-hits="75" data-linenumber="4">
+ <span class="hits">75</span>
<code class="ruby"> full_examples.map do |full_example|</code>
</li>
- <li class="covered" data-hits="165" data-linenumber="5">
- <span class="hits">165</span>
+ <li class="covered" data-hits="171" data-linenumber="5">
+ <span class="hits">171</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="165" data-linenumber="8">
- <span class="hits">165</span>
+ <li class="covered" data-hits="171" data-linenumber="8">
+ <span class="hits">171</span>
<code class="ruby"> full_example</code>
</li>
<li class="never" data-hits="" data-linenumber="9">
@@ -712,24 +712,24 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(result, group_id = nil, subgroups = [])</code>
</li>
- <li class="covered" data-hits="1677" data-linenumber="8">
- <span class="hits">1677</span>
+ <li class="covered" data-hits="1758" data-linenumber="8">
+ <span class="hits">1758</span>
<code class="ruby"> @group_id = group_id</code>
</li>
- <li class="covered" data-hits="1677" data-linenumber="9">
- <span class="hits">1677</span>
+ <li class="covered" data-hits="1758" data-linenumber="9">
+ <span class="hits">1758</span>
<code class="ruby"> @subgroups = subgroups</code>
</li>
- <li class="covered" data-hits="1677" data-linenumber="10">
- <span class="hits">1677</span>
+ <li class="covered" data-hits="1758" data-linenumber="10">
+ <span class="hits">1758</span>
<code class="ruby"> if result.respond_to?(:group_id)</code>
</li>
<li class="covered" data-hits="122" data-linenumber="11">
@@ -742,12 +742,12 @@
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="1677" data-linenumber="13">
- <span class="hits">1677</span>
+ <li class="covered" data-hits="1758" data-linenumber="13">
+ <span class="hits">1758</span>
<code class="ruby"> super(result)</code>
</li>
<li class="never" data-hits="" data-linenumber="14">
@@ -766,12 +766,12 @@
<span class="hits">1</span>
<code class="ruby"> def all_subgroups</code>
</li>
- <li class="covered" data-hits="1683" data-linenumber="17">
- <span class="hits">1683</span>
+ <li class="covered" data-hits="1775" data-linenumber="17">
+ <span class="hits">1775</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 +802,12 @@
<span class="hits">1</span>
<code class="ruby"> def *(int)</code>
</li>
- <li class="covered" data-hits="434" data-linenumber="23">
- <span class="hits">434</span>
+ <li class="covered" data-hits="463" data-linenumber="23">
+ <span class="hits">463</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 +838,12 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(char)</code>
</li>
- <li class="covered" data-hits="194" data-linenumber="29">
- <span class="hits">194</span>
+ <li class="covered" data-hits="261" data-linenumber="29">
+ <span class="hits">261</span>
<code class="ruby"> @char = char</code>
</li>
<li class="never" data-hits="" data-linenumber="30">
@@ -856,12 +856,12 @@
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="194" data-linenumber="32">
- <span class="hits">194</span>
+ <li class="covered" data-hits="223" data-linenumber="32">
+ <span class="hits">223</span>
<code class="ruby"> [GroupResult.new(@char)]</code>
</li>
<li class="never" data-hits="" data-linenumber="33">
@@ -1618,30 +1618,30 @@
<span class="hits">1</span>
<code class="ruby"> def self.permutations_of_strings(arrays_of_strings, options={})</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="11">
- <span class="hits">290</span>
+ <li class="covered" data-hits="319" data-linenumber="11">
+ <span class="hits">319</span>
<code class="ruby"> first = arrays_of_strings.shift</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="12">
- <span class="hits">290</span>
+ <li class="covered" data-hits="319" data-linenumber="12">
+ <span class="hits">319</span>
<code class="ruby"> return first if arrays_of_strings.empty?</code>
</li>
- <li class="covered" data-hits="168" data-linenumber="13">
- <span class="hits">168</span>
+ <li class="covered" data-hits="191" data-linenumber="13">
+ <span class="hits">191</span>
<code class="ruby"> first.product( permutations_of_strings(arrays_of_strings, options) ).map do |result|</code>
</li>
- <li class="covered" data-hits="241" data-linenumber="14">
- <span class="hits">241</span>
+ <li class="covered" data-hits="264" data-linenumber="14">
+ <span class="hits">264</span>
<code class="ruby"> join_preserving_capture_groups(result)</code>
</li>
<li class="never" data-hits="" data-linenumber="15">
@@ -1666,18 +1666,18 @@
<span class="hits">1</span>
<code class="ruby"> def self.join_preserving_capture_groups(result)</code>
</li>
- <li class="covered" data-hits="241" data-linenumber="19">
- <span class="hits">241</span>
+ <li class="covered" data-hits="264" data-linenumber="19">
+ <span class="hits">264</span>
<code class="ruby"> result.flatten!</code>
</li>
- <li class="covered" data-hits="241" data-linenumber="20">
- <span class="hits">241</span>
+ <li class="covered" data-hits="264" data-linenumber="20">
+ <span class="hits">264</span>
<code class="ruby"> subgroups = result</code>
</li>
<li class="never" data-hits="" data-linenumber="21">
@@ -1690,12 +1690,12 @@
<code class="ruby"> .flatten</code>
</li>
- <li class="covered" data-hits="241" data-linenumber="23">
- <span class="hits">241</span>
+ <li class="covered" data-hits="264" data-linenumber="23">
+ <span class="hits">264</span>
<code class="ruby"> GroupResult.new(result.join, nil, subgroups)</code>
</li>
<li class="never" data-hits="" data-linenumber="24">
@@ -1723,12 +1723,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>116</b> relevant lines.
- <span class="green"><b>116</b> lines covered</span> and
+ <b>135</b> relevant lines.
+ <span class="green"><b>135</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -1756,24 +1756,24 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(regexp_string)</code>
</li>
- <li class="covered" data-hits="73" data-linenumber="5">
- <span class="hits">73</span>
+ <li class="covered" data-hits="92" data-linenumber="5">
+ <span class="hits">92</span>
<code class="ruby"> @regexp_string = regexp_string</code>
</li>
- <li class="covered" data-hits="73" data-linenumber="6">
- <span class="hits">73</span>
+ <li class="covered" data-hits="92" data-linenumber="6">
+ <span class="hits">92</span>
<code class="ruby"> @num_groups = 0</code>
</li>
- <li class="covered" data-hits="73" data-linenumber="7">
- <span class="hits">73</span>
+ <li class="covered" data-hits="92" data-linenumber="7">
+ <span class="hits">92</span>
<code class="ruby"> @current_position = 0</code>
</li>
<li class="never" data-hits="" data-linenumber="8">
@@ -1792,60 +1792,60 @@
<span class="hits">1</span>
<code class="ruby"> def parse</code>
</li>
- <li class="covered" data-hits="120" data-linenumber="11">
- <span class="hits">120</span>
+ <li class="covered" data-hits="140" data-linenumber="11">
+ <span class="hits">140</span>
<code class="ruby"> repeaters = []</code>
</li>
- <li class="covered" data-hits="120" data-linenumber="12">
- <span class="hits">120</span>
+ <li class="covered" data-hits="140" data-linenumber="12">
+ <span class="hits">140</span>
<code class="ruby"> while @current_position < regexp_string.length</code>
</li>
- <li class="covered" data-hits="335" data-linenumber="13">
- <span class="hits">335</span>
+ <li class="covered" data-hits="419" data-linenumber="13">
+ <span class="hits">419</span>
<code class="ruby"> group = parse_group(repeaters)</code>
</li>
- <li class="covered" data-hits="331" data-linenumber="14">
- <span class="hits">331</span>
+ <li class="covered" data-hits="401" data-linenumber="14">
+ <span class="hits">401</span>
<code class="ruby"> break if group.is_a? MultiGroupEnd</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="15">
- <span class="hits">290</span>
+ <li class="covered" data-hits="360" data-linenumber="15">
+ <span class="hits">360</span>
<code class="ruby"> repeaters = [] if group.is_a? OrGroup</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="16">
- <span class="hits">290</span>
+ <li class="covered" data-hits="360" data-linenumber="16">
+ <span class="hits">360</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="17">
- <span class="hits">290</span>
+ <li class="covered" data-hits="360" data-linenumber="17">
+ <span class="hits">360</span>
<code class="ruby"> repeaters << parse_repeater(group)</code>
</li>
<li class="never" data-hits="" data-linenumber="18">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="116" data-linenumber="19">
- <span class="hits">116</span>
+ <li class="covered" data-hits="122" data-linenumber="19">
+ <span class="hits">122</span>
<code class="ruby"> repeaters</code>
</li>
<li class="never" data-hits="" data-linenumber="20">
@@ -1876,30 +1876,30 @@
<span class="hits">1</span>
<code class="ruby"> def parse_group(repeaters)</code>
</li>
- <li class="covered" data-hits="335" data-linenumber="25">
- <span class="hits">335</span>
+ <li class="covered" data-hits="419" data-linenumber="25">
+ <span class="hits">419</span>
<code class="ruby"> char = regexp_string[@current_position]</code>
</li>
- <li class="covered" data-hits="335" data-linenumber="26">
- <span class="hits">335</span>
+ <li class="covered" data-hits="419" data-linenumber="26">
+ <span class="hits">419</span>
<code class="ruby"> case char</code>
</li>
<li class="never" data-hits="" data-linenumber="27">
<code class="ruby"> when '('</code>
</li>
- <li class="covered" data-hits="45" data-linenumber="28">
- <span class="hits">45</span>
+ <li class="covered" data-hits="46" data-linenumber="28">
+ <span class="hits">46</span>
<code class="ruby"> group = parse_multi_group</code>
</li>
<li class="never" data-hits="" data-linenumber="29">
@@ -1918,24 +1918,24 @@
<code class="ruby"> when '['</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="32">
- <span class="hits">14</span>
+ <li class="covered" data-hits="15" data-linenumber="32">
+ <span class="hits">15</span>
<code class="ruby"> group = parse_char_group</code>
</li>
<li class="never" data-hits="" data-linenumber="33">
<code class="ruby"> when '.'</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="34">
- <span class="hits">1</span>
+ <li class="covered" data-hits="4" data-linenumber="34">
+ <span class="hits">4</span>
<code class="ruby"> group = parse_dot_group</code>
</li>
<li class="never" data-hits="" data-linenumber="35">
@@ -1954,1013 +1954,1223 @@
<code class="ruby"> when '\\'</code>
</li>
- <li class="covered" data-hits="49" data-linenumber="38">
- <span class="hits">49</span>
+ <li class="covered" data-hits="63" data-linenumber="38">
+ <span class="hits">63</span>
<code class="ruby"> group = parse_after_backslash_group</code>
</li>
<li class="never" data-hits="" data-linenumber="39">
+ <code class="ruby"> when '^', 'A'</code>
+ </li>
+
+ <li class="covered" data-hits="2" data-linenumber="40">
+ <span class="hits">2</span>
+
+ <code class="ruby"> if @current_position == 0</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="41">
+ <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">
+
+
+ <code class="ruby"> else</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="43">
+ <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">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="45">
+
+
+ <code class="ruby"> when '$', 'z', 'Z'</code>
+ </li>
+
+ <li class="covered" data-hits="2" data-linenumber="46">
+ <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">
+ <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">
+
+
+ <code class="ruby"> else</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="49">
+ <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">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="51">
+
+
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="179" data-linenumber="40">
- <span class="hits">179</span>
+ <li class="covered" data-hits="240" data-linenumber="52">
+ <span class="hits">240</span>
<code class="ruby"> group = parse_single_char_group(char)</code>
</li>
- <li class="never" data-hits="" data-linenumber="41">
+ <li class="never" data-hits="" data-linenumber="53">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="331" data-linenumber="42">
- <span class="hits">331</span>
+ <li class="covered" data-hits="401" data-linenumber="54">
+ <span class="hits">401</span>
<code class="ruby"> group</code>
</li>
- <li class="never" data-hits="" data-linenumber="43">
+ <li class="never" data-hits="" data-linenumber="55">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="44">
+ <li class="never" data-hits="" data-linenumber="56">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="45">
+ <li class="covered" data-hits="1" data-linenumber="57">
<span class="hits">1</span>
<code class="ruby"> def parse_after_backslash_group</code>
</li>
- <li class="covered" data-hits="49" data-linenumber="46">
- <span class="hits">49</span>
+ <li class="covered" data-hits="63" data-linenumber="58">
+ <span class="hits">63</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="never" data-hits="" data-linenumber="47">
+ <li class="never" data-hits="" data-linenumber="59">
<code class="ruby"> case</code>
</li>
- <li class="never" data-hits="" data-linenumber="48">
+ <li class="never" data-hits="" data-linenumber="60">
<code class="ruby"> when rest_of_string =~ /\A(\d+)/</code>
</li>
- <li class="covered" data-hits="19" data-linenumber="49">
+ <li class="covered" data-hits="19" data-linenumber="61">
<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="50">
+ <li class="covered" data-hits="19" data-linenumber="62">
<span class="hits">19</span>
<code class="ruby"> group = parse_backreference_group($1)</code>
</li>
- <li class="never" data-hits="" data-linenumber="51">
+ <li class="never" data-hits="" data-linenumber="63">
<code class="ruby"> when rest_of_string =~ /\Ak<([^>]+)>/ # Named capture group</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="52">
+ <li class="covered" data-hits="1" data-linenumber="64">
<span class="hits">1</span>
<code class="ruby"> @current_position += ($1.length + 2)</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="53">
+ <li class="covered" data-hits="1" data-linenumber="65">
<span class="hits">1</span>
<code class="ruby"> group = parse_backreference_group($1)</code>
</li>
- <li class="never" data-hits="" data-linenumber="54">
+ <li class="never" data-hits="" data-linenumber="66">
<code class="ruby"> when BackslashCharMap.keys.include?(regexp_string[@current_position])</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="55">
+ <li class="covered" data-hits="14" data-linenumber="67">
<span class="hits">14</span>
<code class="ruby"> group = CharGroup.new(</code>
</li>
- <li class="never" data-hits="" data-linenumber="56">
+ <li class="never" data-hits="" data-linenumber="68">
<code class="ruby"> BackslashCharMap[regexp_string[@current_position]])</code>
</li>
- <li class="never" data-hits="" data-linenumber="57">
+ <li class="never" data-hits="" data-linenumber="69">
<code class="ruby"> when rest_of_string =~ /\A(c|C-)(.)/ # Control character</code>
</li>
- <li class="never" data-hits="" data-linenumber="58">
-
-
- <code class="ruby"> # http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals</code>
- </li>
-
- <li class="covered" data-hits="8" data-linenumber="59">
+ <li class="covered" data-hits="8" data-linenumber="70">
<span class="hits">8</span>
<code class="ruby"> @current_position += $1.length</code>
</li>
- <li class="covered" data-hits="8" data-linenumber="60">
+ <li class="covered" data-hits="8" data-linenumber="71">
<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="61">
+ <li class="never" data-hits="" data-linenumber="72">
<code class="ruby"> when rest_of_string =~ /\Ax(\h{1,2})/ # Escape sequence</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="62">
+ <li class="covered" data-hits="3" data-linenumber="73">
<span class="hits">3</span>
<code class="ruby"> @current_position += $1.length</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="63">
+ <li class="covered" data-hits="3" data-linenumber="74">
<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="64">
+ <li class="never" data-hits="" data-linenumber="75">
- <code class="ruby"> when rest_of_string =~ /\Au(\h{4})/ # Unicode sequence</code>
+ <code class="ruby"> when rest_of_string =~ /\Au(\h{4}|\{\h{1,4}\})/ # Unicode sequence</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="65">
+ <li class="covered" data-hits="3" data-linenumber="76">
+ <span class="hits">3</span>
+
+ <code class="ruby"> @current_position += $1.length</code>
+ </li>
+
+ <li class="covered" data-hits="3" data-linenumber="77">
+ <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">
+ <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">
+
+
+ <code class="ruby"> when rest_of_string =~ /\Ap\{([^}]+)\}/ # Named properties</code>
+ </li>
+
+ <li class="covered" data-hits="3" data-linenumber="80">
+ <span class="hits">3</span>
+
+ <code class="ruby"> @current_position += ($1.length + 2)</code>
+ </li>
+
+ <li class="covered" data-hits="3" data-linenumber="81">
+ <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">
+
+
+ <code class="ruby"> when rest_of_string =~ /\Ag/ # Subexpression call</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="83">
+
+
+ <code class="ruby"> # TODO: Should this be IllegalSyntaxError ?</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="84">
+ <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">
+
+
+ <code class="ruby"> when rest_of_string =~ /\A[GbB]/ # Anchors</code>
+ </li>
+
+ <li class="covered" data-hits="3" data-linenumber="86">
+ <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">
+
+
+ <code class="ruby"> when rest_of_string =~ /\AA/ # Start of string</code>
+ </li>
+
+ <li class="covered" data-hits="2" data-linenumber="88">
<span class="hits">2</span>
- <code class="ruby"> @current_position += 4</code>
+ <code class="ruby"> if @current_position == 1</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="66">
+ <li class="covered" data-hits="1" data-linenumber="89">
+ <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">
+
+
+ <code class="ruby"> else</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="91">
+ <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">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="93">
+
+
+ <code class="ruby"> when rest_of_string =~ /\A[zZ]/ # End of string</code>
+ </li>
+
+ <li class="covered" data-hits="4" data-linenumber="94">
+ <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">
<span class="hits">2</span>
- <code class="ruby"> group = parse_single_char_group( parse_unicode_sequence($1) )</code>
+ <code class="ruby"> group = parse_single_char_group('') # Ignore the "illegal" character</code>
</li>
- <li class="never" data-hits="" data-linenumber="67">
+ <li class="never" data-hits="" data-linenumber="96">
+ <code class="ruby"> else</code>
+ </li>
+
+ <li class="covered" data-hits="2" data-linenumber="97">
+ <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">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="99">
+
+
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="68">
+ <li class="covered" data-hits="2" data-linenumber="100">
<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="69">
+ <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="49" data-linenumber="70">
- <span class="hits">49</span>
+ <li class="covered" data-hits="63" data-linenumber="102">
+ <span class="hits">63</span>
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="49" data-linenumber="71">
- <span class="hits">49</span>
+ <li class="covered" data-hits="53" data-linenumber="103">
+ <span class="hits">53</span>
<code class="ruby"> group</code>
</li>
- <li class="never" data-hits="" data-linenumber="72">
+ <li class="never" data-hits="" data-linenumber="104">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="73">
+ <li class="never" data-hits="" data-linenumber="105">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="74">
+ <li class="covered" data-hits="1" data-linenumber="106">
<span class="hits">1</span>
<code class="ruby"> def parse_repeater(group)</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="75">
- <span class="hits">290</span>
+ <li class="covered" data-hits="360" data-linenumber="107">
+ <span class="hits">360</span>
<code class="ruby"> char = regexp_string[@current_position]</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="76">
- <span class="hits">290</span>
+ <li class="covered" data-hits="360" data-linenumber="108">
+ <span class="hits">360</span>
<code class="ruby"> case char</code>
</li>
- <li class="never" data-hits="" data-linenumber="77">
+ <li class="never" data-hits="" data-linenumber="109">
<code class="ruby"> when '*'</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="78">
+ <li class="covered" data-hits="5" data-linenumber="110">
<span class="hits">5</span>
<code class="ruby"> repeater = parse_star_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="79">
+ <li class="never" data-hits="" data-linenumber="111">
<code class="ruby"> when '+'</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="80">
+ <li class="covered" data-hits="4" data-linenumber="112">
<span class="hits">4</span>
<code class="ruby"> repeater = parse_plus_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="81">
+ <li class="never" data-hits="" data-linenumber="113">
<code class="ruby"> when '?'</code>
</li>
- <li class="covered" data-hits="11" data-linenumber="82">
+ <li class="covered" data-hits="11" data-linenumber="114">
<span class="hits">11</span>
<code class="ruby"> repeater = parse_question_mark_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="83">
+ <li class="never" data-hits="" data-linenumber="115">
<code class="ruby"> when '{'</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="84">
+ <li class="covered" data-hits="5" data-linenumber="116">
<span class="hits">5</span>
<code class="ruby"> repeater = parse_range_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="85">
+ <li class="never" data-hits="" data-linenumber="117">
<code class="ruby"> else</code>
</li>
- <li class="covered" data-hits="265" data-linenumber="86">
- <span class="hits">265</span>
+ <li class="covered" data-hits="335" data-linenumber="118">
+ <span class="hits">335</span>
<code class="ruby"> repeater = parse_one_time_repeater(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="87">
+ <li class="never" data-hits="" data-linenumber="119">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="88">
- <span class="hits">290</span>
+ <li class="covered" data-hits="360" data-linenumber="120">
+ <span class="hits">360</span>
<code class="ruby"> repeater</code>
</li>
- <li class="never" data-hits="" data-linenumber="89">
+ <li class="never" data-hits="" data-linenumber="121">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="90">
+ <li class="never" data-hits="" data-linenumber="122">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="91">
+ <li class="covered" data-hits="1" data-linenumber="123">
<span class="hits">1</span>
<code class="ruby"> def parse_multi_group</code>
</li>
- <li class="covered" data-hits="45" data-linenumber="92">
- <span class="hits">45</span>
+ <li class="covered" data-hits="46" data-linenumber="124">
+ <span class="hits">46</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="45" data-linenumber="93">
- <span class="hits">45</span>
+ <li class="covered" data-hits="46" data-linenumber="125">
+ <span class="hits">46</span>
<code class="ruby"> @num_groups += 1</code>
</li>
- <li class="covered" data-hits="45" data-linenumber="94">
- <span class="hits">45</span>
+ <li class="covered" data-hits="46" data-linenumber="126">
+ <span class="hits">46</span>
<code class="ruby"> group_id = nil # init</code>
</li>
- <li class="covered" data-hits="45" data-linenumber="95">
- <span class="hits">45</span>
+ <li class="covered" data-hits="46" data-linenumber="127">
+ <span class="hits">46</span>
<code class="ruby"> rest_of_string.match(/\A(\?)?(:|!|=|<(!|=|[^!=][^>]*))?/) do |match|</code>
</li>
- <li class="never" data-hits="" data-linenumber="96">
+ <li class="never" data-hits="" data-linenumber="128">
<code class="ruby"> case</code>
</li>
- <li class="never" data-hits="" data-linenumber="97">
+ <li class="never" data-hits="" data-linenumber="129">
<code class="ruby"> when match[1].nil? # e.g. /(normal)/</code>
</li>
- <li class="covered" data-hits="38" data-linenumber="98">
+ <li class="covered" data-hits="38" data-linenumber="130">
<span class="hits">38</span>
<code class="ruby"> group_id = @num_groups.to_s</code>
</li>
- <li class="never" data-hits="" data-linenumber="99">
+ <li class="never" data-hits="" data-linenumber="131">
<code class="ruby"> when match[2] == ':' # e.g. /(?:nocapture)/</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="100">
+ <li class="covered" data-hits="1" data-linenumber="132">
<span class="hits">1</span>
<code class="ruby"> @current_position += 2</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="101">
+ <li class="covered" data-hits="1" data-linenumber="133">
<span class="hits">1</span>
<code class="ruby"> group_id = nil</code>
</li>
- <li class="never" data-hits="" data-linenumber="102">
+ <li class="never" data-hits="" data-linenumber="134">
<code class="ruby"> when %w(! =).include?(match[2]) # e.g. /(?=lookahead)/, /(?!neglookahead)/</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="103">
+ <li class="covered" data-hits="2" data-linenumber="135">
<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="104">
+ <li class="never" data-hits="" data-linenumber="136">
<code class="ruby"> when %w(! =).include?(match[3]) # e.g. /(?<=lookbehind)/, /(?<!neglookbehind)/</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="105">
+ <li class="covered" data-hits="2" data-linenumber="137">
<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="106">
+ <li class="never" data-hits="" data-linenumber="138">
<code class="ruby"> else # e.g. /(?<name>namedgroup)/</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="107">
- <span class="hits">2</span>
+ <li class="covered" data-hits="3" data-linenumber="139">
+ <span class="hits">3</span>
<code class="ruby"> @current_position += (match[3].length + 3)</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="108">
- <span class="hits">2</span>
+ <li class="covered" data-hits="3" data-linenumber="140">
+ <span class="hits">3</span>
<code class="ruby"> group_id = match[3]</code>
</li>
- <li class="covered" data-hits="45" data-linenumber="109">
- <span class="hits">45</span>
+ <li class="covered" data-hits="46" data-linenumber="141">
+ <span class="hits">46</span>
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="110">
+ <li class="never" data-hits="" data-linenumber="142">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="111">
- <span class="hits">41</span>
+ <li class="covered" data-hits="42" data-linenumber="143">
+ <span class="hits">42</span>
<code class="ruby"> groups = parse</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="112">
+ <li class="covered" data-hits="41" data-linenumber="144">
<span class="hits">41</span>
<code class="ruby"> MultiGroup.new(groups, group_id)</code>
</li>
- <li class="never" data-hits="" data-linenumber="113">
+ <li class="never" data-hits="" data-linenumber="145">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="114">
+ <li class="never" data-hits="" data-linenumber="146">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="115">
+ <li class="covered" data-hits="1" data-linenumber="147">
<span class="hits">1</span>
<code class="ruby"> def parse_multi_end_group</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="116">
+ <li class="covered" data-hits="41" data-linenumber="148">
<span class="hits">41</span>
<code class="ruby"> MultiGroupEnd.new</code>
</li>
- <li class="never" data-hits="" data-linenumber="117">
+ <li class="never" data-hits="" data-linenumber="149">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="118">
+ <li class="never" data-hits="" data-linenumber="150">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="119">
+ <li class="covered" data-hits="1" data-linenumber="151">
<span class="hits">1</span>
<code class="ruby"> def parse_char_group</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="120">
+ <li class="covered" data-hits="15" data-linenumber="152">
+ <span class="hits">15</span>
+
+ <code class="ruby"> if rest_of_string =~ /\A\[\[:[^:]+:\]\]/</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="153">
+ <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">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="covered" data-hits="14" data-linenumber="155">
<span class="hits">14</span>
<code class="ruby"> chars = []</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="121">
+ <li class="covered" data-hits="14" data-linenumber="156">
<span class="hits">14</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="122">
+ <li class="covered" data-hits="14" data-linenumber="157">
<span class="hits">14</span>
<code class="ruby"> if regexp_string[@current_position] == ']'</code>
</li>
- <li class="never" data-hits="" data-linenumber="123">
+ <li class="never" data-hits="" data-linenumber="158">
<code class="ruby"> # Beware of the sneaky edge case:</code>
</li>
- <li class="never" data-hits="" data-linenumber="124">
+ <li class="never" data-hits="" data-linenumber="159">
<code class="ruby"> # /[]]/ (match "]")</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="125">
+ <li class="covered" data-hits="1" data-linenumber="160">
<span class="hits">1</span>
<code class="ruby"> chars << ']'</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="126">
+ <li class="covered" data-hits="1" data-linenumber="161">
<span class="hits">1</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="never" data-hits="" data-linenumber="127">
+ <li class="never" data-hits="" data-linenumber="162">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="128">
+ <li class="never" data-hits="" data-linenumber="163">
<code class="ruby"> until regexp_string[@current_position] == ']' \</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="129">
+ <li class="covered" data-hits="14" data-linenumber="164">
<span class="hits">14</span>
<code class="ruby"> && !regexp_string[0..@current_position-1].match(/[^\\](\\{2})*\\\z/)</code>
</li>
- <li class="never" data-hits="" data-linenumber="130">
+ <li class="never" data-hits="" data-linenumber="165">
<code class="ruby"> # Beware of having an ODD number of "\" before the "]", e.g.</code>
</li>
- <li class="never" data-hits="" data-linenumber="131">
+ <li class="never" data-hits="" data-linenumber="166">
<code class="ruby"> # /[\]]/ (match "]")</code>
</li>
- <li class="never" data-hits="" data-linenumber="132">
+ <li class="never" data-hits="" data-linenumber="167">
<code class="ruby"> # /[\\]/ (match "\")</code>
</li>
- <li class="never" data-hits="" data-linenumber="133">
+ <li class="never" data-hits="" data-linenumber="168">
<code class="ruby"> # /[\\\]]/ (match "\" or "]")</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="134">
+ <li class="covered" data-hits="41" data-linenumber="169">
<span class="hits">41</span>
<code class="ruby"> chars << regexp_string[@current_position]</code>
</li>
- <li class="covered" data-hits="41" data-linenumber="135">
+ <li class="covered" data-hits="41" data-linenumber="170">
<span class="hits">41</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="never" data-hits="" data-linenumber="136">
+ <li class="never" data-hits="" data-linenumber="171">
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="14" data-linenumber="137">
+ <li class="covered" data-hits="14" data-linenumber="172">
<span class="hits">14</span>
<code class="ruby"> CharGroup.new(chars)</code>
</li>
- <li class="never" data-hits="" data-linenumber="138">
+ <li class="never" data-hits="" data-linenumber="173">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="139">
+ <li class="never" data-hits="" data-linenumber="174">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="140">
+ <li class="covered" data-hits="1" data-linenumber="175">
<span class="hits">1</span>
<code class="ruby"> def parse_dot_group</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="141">
- <span class="hits">1</span>
+ <li class="covered" data-hits="4" data-linenumber="176">
+ <span class="hits">4</span>
<code class="ruby"> DotGroup.new</code>
</li>
- <li class="never" data-hits="" data-linenumber="142">
+ <li class="never" data-hits="" data-linenumber="177">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="143">
+ <li class="never" data-hits="" data-linenumber="178">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="144">
+ <li class="covered" data-hits="1" data-linenumber="179">
<span class="hits">1</span>
<code class="ruby"> def parse_or_group(left_repeaters)</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="145">
+ <li class="covered" data-hits="6" data-linenumber="180">
<span class="hits">6</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="146">
+ <li class="covered" data-hits="6" data-linenumber="181">
<span class="hits">6</span>
<code class="ruby"> right_repeaters = parse</code>
</li>
- <li class="covered" data-hits="6" data-linenumber="147">
+ <li class="covered" data-hits="6" data-linenumber="182">
<span class="hits">6</span>
<code class="ruby"> OrGroup.new(left_repeaters, right_repeaters)</code>
</li>
- <li class="never" data-hits="" data-linenumber="148">
+ <li class="never" data-hits="" data-linenumber="183">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="149">
+ <li class="never" data-hits="" data-linenumber="184">
<code class="ruby"></code>
</li>
- <li class="never" data-hits="" data-linenumber="150">
+ <li class="never" data-hits="" data-linenumber="185">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="151">
+ <li class="covered" data-hits="1" data-linenumber="186">
<span class="hits">1</span>
<code class="ruby"> def parse_single_char_group(char)</code>
</li>
- <li class="covered" data-hits="194" data-linenumber="152">
- <span class="hits">194</span>
+ <li class="covered" data-hits="261" data-linenumber="187">
+ <span class="hits">261</span>
<code class="ruby"> SingleCharGroup.new(char)</code>
</li>
- <li class="never" data-hits="" data-linenumber="153">
+ <li class="never" data-hits="" data-linenumber="188">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="154">
+ <li class="never" data-hits="" data-linenumber="189">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="155">
+ <li class="covered" data-hits="1" data-linenumber="190">
<span class="hits">1</span>
<code class="ruby"> def parse_backreference_group(match)</code>
</li>
- <li class="covered" data-hits="20" data-linenumber="156">
+ <li class="covered" data-hits="20" data-linenumber="191">
<span class="hits">20</span>
<code class="ruby"> BackReferenceGroup.new(match)</code>
</li>
- <li class="never" data-hits="" data-linenumber="157">
+ <li class="never" data-hits="" data-linenumber="192">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="158">
+ <li class="never" data-hits="" data-linenumber="193">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="159">
+ <li class="covered" data-hits="1" data-linenumber="194">
<span class="hits">1</span>
<code class="ruby"> def parse_control_character(char)</code>
</li>
- <li class="covered" data-hits="8" data-linenumber="160">
+ <li class="covered" data-hits="8" data-linenumber="195">
<span class="hits">8</span>
<code class="ruby"> (char.ord % 32).chr # Black magic!</code>
</li>
- <li class="never" data-hits="" data-linenumber="161">
+ <li class="never" data-hits="" data-linenumber="196">
<code class="ruby"> # eval "?\\C-#{char.chr}" # Doesn't work for e.g. char = "?"</code>
</li>
- <li class="never" data-hits="" data-linenumber="162">
+ <li class="never" data-hits="" data-linenumber="197">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="163">
+ <li class="never" data-hits="" data-linenumber="198">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="164">
+ <li class="covered" data-hits="1" data-linenumber="199">
<span class="hits">1</span>
<code class="ruby"> def parse_escape_sequence(match)</code>
</li>
- <li class="covered" data-hits="3" data-linenumber="165">
+ <li class="covered" data-hits="3" data-linenumber="200">
<span class="hits">3</span>
<code class="ruby"> eval "?\\x#{match}"</code>
</li>
- <li class="never" data-hits="" data-linenumber="166">
+ <li class="never" data-hits="" data-linenumber="201">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="167">
+ <li class="never" data-hits="" data-linenumber="202">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="168">
+ <li class="covered" data-hits="1" data-linenumber="203">
<span class="hits">1</span>
<code class="ruby"> def parse_unicode_sequence(match)</code>
</li>
- <li class="covered" data-hits="2" data-linenumber="169">
- <span class="hits">2</span>
+ <li class="covered" data-hits="3" data-linenumber="204">
+ <span class="hits">3</span>
- <code class="ruby"> eval "?\\u#{match}"</code>
+ <code class="ruby"> eval "?\\u{#{match}}"</code>
</li>
- <li class="never" data-hits="" data-linenumber="170">
+ <li class="never" data-hits="" data-linenumber="205">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="171">
+ <li class="never" data-hits="" data-linenumber="206">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="172">
+ <li class="covered" data-hits="1" data-linenumber="207">
<span class="hits">1</span>
<code class="ruby"> def parse_star_repeater(group)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="173">
+ <li class="covered" data-hits="5" data-linenumber="208">
<span class="hits">5</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="174">
+ <li class="covered" data-hits="5" data-linenumber="209">
<span class="hits">5</span>
<code class="ruby"> StarRepeater.new(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="175">
+ <li class="never" data-hits="" data-linenumber="210">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="176">
+ <li class="never" data-hits="" data-linenumber="211">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="177">
+ <li class="covered" data-hits="1" data-linenumber="212">
<span class="hits">1</span>
<code class="ruby"> def parse_plus_repeater(group)</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="178">
+ <li class="covered" data-hits="4" data-linenumber="213">
<span class="hits">4</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="179">
+ <li class="covered" data-hits="4" data-linenumber="214">
<span class="hits">4</span>
<code class="ruby"> PlusRepeater.new(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="180">
+ <li class="never" data-hits="" data-linenumber="215">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="181">
+ <li class="never" data-hits="" data-linenumber="216">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="182">
+ <li class="covered" data-hits="1" data-linenumber="217">
<span class="hits">1</span>
<code class="ruby"> def parse_question_mark_repeater(group)</code>
</li>
- <li class="covered" data-hits="11" data-linenumber="183">
+ <li class="covered" data-hits="11" data-linenumber="218">
<span class="hits">11</span>
<code class="ruby"> @current_position += 1</code>
</li>
- <li class="covered" data-hits="11" data-linenumber="184">
+ <li class="covered" data-hits="11" data-linenumber="219">
<span class="hits">11</span>
<code class="ruby"> QuestionMarkRepeater.new(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="185">
+ <li class="never" data-hits="" data-linenumber="220">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="186">
+ <li class="never" data-hits="" data-linenumber="221">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="187">
+ <li class="covered" data-hits="1" data-linenumber="222">
<span class="hits">1</span>
<code class="ruby"> def parse_range_repeater(group)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="188">
+ <li class="covered" data-hits="5" data-linenumber="223">
<span class="hits">5</span>
<code class="ruby"> match = rest_of_string.match(/\A\{(\d+)?(,)?(\d+)?\}/)</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="189">
+ <li class="covered" data-hits="5" data-linenumber="224">
<span class="hits">5</span>
<code class="ruby"> @current_position += match[0].size</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="190">
+ <li class="covered" data-hits="5" data-linenumber="225">
<span class="hits">5</span>
<code class="ruby"> min = match[1].to_i if match[1]</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="191">
+ <li class="covered" data-hits="5" data-linenumber="226">
<span class="hits">5</span>
<code class="ruby"> has_comma = !match[2].nil?</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="192">
+ <li class="covered" data-hits="5" data-linenumber="227">
<span class="hits">5</span>
<code class="ruby"> max = match[3].to_i if match[3]</code>
</li>
- <li class="covered" data-hits="5" data-linenumber="193">
+ <li class="covered" data-hits="5" data-linenumber="228">
<span class="hits">5</span>
<code class="ruby"> RangeRepeater.new(group, min, has_comma, max)</code>
</li>
- <li class="never" data-hits="" data-linenumber="194">
+ <li class="never" data-hits="" data-linenumber="229">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="195">
+ <li class="never" data-hits="" data-linenumber="230">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="196">
+ <li class="covered" data-hits="1" data-linenumber="231">
<span class="hits">1</span>
<code class="ruby"> def parse_one_time_repeater(group)</code>
</li>
- <li class="covered" data-hits="265" data-linenumber="197">
- <span class="hits">265</span>
+ <li class="covered" data-hits="335" data-linenumber="232">
+ <span class="hits">335</span>
<code class="ruby"> OneTimeRepeater.new(group)</code>
</li>
- <li class="never" data-hits="" data-linenumber="198">
+ <li class="never" data-hits="" data-linenumber="233">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="199">
+ <li class="never" data-hits="" data-linenumber="234">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="200">
+ <li class="covered" data-hits="1" data-linenumber="235">
<span class="hits">1</span>
<code class="ruby"> def rest_of_string</code>
</li>
- <li class="covered" data-hits="155" data-linenumber="201">
- <span class="hits">155</span>
+ <li class="covered" data-hits="293" data-linenumber="236">
+ <span class="hits">293</span>
<code class="ruby"> regexp_string[@current_position..-1]</code>
</li>
- <li class="never" data-hits="" data-linenumber="202">
+ <li class="never" data-hits="" data-linenumber="237">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="203">
+ <li class="never" data-hits="" data-linenumber="238">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="204">
+ <li class="never" data-hits="" data-linenumber="239">
<code class="ruby">end</code>
</li>
- <li class="never" data-hits="" data-linenumber="205">
+ <li class="never" data-hits="" data-linenumber="240">
<code class="ruby"></code>
</li>
@@ -2998,12 +3208,12 @@
<span class="hits">1</span>
<code class="ruby"> def examples</code>
</li>
- <li class="covered" data-hits="73" data-linenumber="4">
- <span class="hits">73</span>
+ <li class="covered" data-hits="92" data-linenumber="4">
+ <span class="hits">92</span>
<code class="ruby"> partial_examples =</code>
</li>
<li class="never" data-hits="" data-linenumber="5">
@@ -3016,24 +3226,24 @@
<code class="ruby"> .parse</code>
</li>
- <li class="covered" data-hits="133" data-linenumber="7">
- <span class="hits">133</span>
+ <li class="covered" data-hits="162" data-linenumber="7">
+ <span class="hits">162</span>
<code class="ruby"> .map {|repeater| repeater.result}</code>
</li>
- <li class="covered" data-hits="69" data-linenumber="8">
- <span class="hits">69</span>
+ <li class="covered" data-hits="75" data-linenumber="8">
+ <span class="hits">75</span>
<code class="ruby"> full_examples = RegexpExamples::permutations_of_strings(partial_examples)</code>
</li>
- <li class="covered" data-hits="69" data-linenumber="9">
- <span class="hits">69</span>
+ <li class="covered" data-hits="75" data-linenumber="9">
+ <span class="hits">75</span>
<code class="ruby"> RegexpExamples::BackReferenceReplacer.new.substitute_backreferences(full_examples)</code>
</li>
<li class="never" data-hits="" data-linenumber="10">
@@ -3106,12 +3316,12 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(group)</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="5">
- <span class="hits">290</span>
+ <li class="covered" data-hits="360" data-linenumber="5">
+ <span class="hits">360</span>
<code class="ruby"> @group = group</code>
</li>
<li class="never" data-hits="" data-linenumber="6">
@@ -3130,36 +3340,36 @@
<span class="hits">1</span>
<code class="ruby"> def result(min_repeats, max_repeats)</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="9">
- <span class="hits">290</span>
+ <li class="covered" data-hits="319" data-linenumber="9">
+ <span class="hits">319</span>
<code class="ruby"> group_results = @group.result[0 .. MaxGroupResults-1]</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="10">
- <span class="hits">290</span>
+ <li class="covered" data-hits="319" data-linenumber="10">
+ <span class="hits">319</span>
<code class="ruby"> results = []</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="11">
- <span class="hits">290</span>
+ <li class="covered" data-hits="319" data-linenumber="11">
+ <span class="hits">319</span>
<code class="ruby"> min_repeats.upto(max_repeats) do |repeats|</code>
</li>
- <li class="covered" data-hits="320" data-linenumber="12">
- <span class="hits">320</span>
+ <li class="covered" data-hits="349" data-linenumber="12">
+ <span class="hits">349</span>
<code class="ruby"> group_results.each do |group_result|</code>
</li>
- <li class="covered" data-hits="434" data-linenumber="13">
- <span class="hits">434</span>
+ <li class="covered" data-hits="463" data-linenumber="13">
+ <span class="hits">463</span>
<code class="ruby"> results << group_result * repeats</code>
</li>
<li class="never" data-hits="" data-linenumber="14">
@@ -3172,12 +3382,12 @@
<code class="ruby"> end</code>
</li>
- <li class="covered" data-hits="290" data-linenumber="16">
- <span class="hits">290</span>
+ <li class="covered" data-hits="319" data-linenumber="16">
+ <span class="hits">319</span>
<code class="ruby"> results.uniq</code>
</li>
<li class="never" data-hits="" data-linenumber="17">
@@ -3208,12 +3418,12 @@
<span class="hits">1</span>
<code class="ruby"> def initialize(group)</code>
</li>
- <li class="covered" data-hits="265" data-linenumber="22">
- <span class="hits">265</span>
+ <li class="covered" data-hits="335" data-linenumber="22">
+ <span class="hits">335</span>
<code class="ruby"> super</code>
</li>
<li class="never" data-hits="" data-linenumber="23">
@@ -3232,12 +3442,12 @@
<span class="hits">1</span>
<code class="ruby"> def result</code>
</li>
- <li class="covered" data-hits="265" data-linenumber="26">
- <span class="hits">265</span>
+ <li class="covered" data-hits="294" data-linenumber="26">
+ <span class="hits">294</span>
<code class="ruby"> super(1, 1)</code>
</li>
<li class="never" data-hits="" data-linenumber="27">
@@ -3559,12 +3769,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>34</b> relevant lines.
- <span class="green"><b>34</b> lines covered</span> and
+ <b>42</b> relevant lines.
+ <span class="green"><b>42</b> lines covered</span> and
<span class="red"><b>0</b> lines missed.</span>
</div>
</div>
<pre>
@@ -3580,36 +3790,36 @@
<span class="hits">1</span>
<code class="ruby"> def self.examples_exist_and_match(*regexps)</code>
</li>
- <li class="covered" data-hits="10" data-linenumber="3">
- <span class="hits">10</span>
+ <li class="covered" data-hits="11" data-linenumber="3">
+ <span class="hits">11</span>
<code class="ruby"> regexps.each do |regexp|</code>
</li>
- <li class="covered" data-hits="69" data-linenumber="4">
- <span class="hits">69</span>
+ <li class="covered" data-hits="75" data-linenumber="4">
+ <span class="hits">75</span>
<code class="ruby"> it do</code>
</li>
- <li class="covered" data-hits="69" data-linenumber="5">
- <span class="hits">69</span>
+ <li class="covered" data-hits="75" data-linenumber="5">
+ <span class="hits">75</span>
<code class="ruby"> regexp_examples = regexp.examples</code>
</li>
- <li class="covered" data-hits="69" data-linenumber="6">
- <span class="hits">69</span>
+ <li class="covered" data-hits="75" data-linenumber="6">
+ <span class="hits">75</span>
<code class="ruby"> expect(regexp_examples).not_to be_empty</code>
</li>
- <li class="covered" data-hits="234" data-linenumber="7">
- <span class="hits">234</span>
+ <li class="covered" data-hits="246" data-linenumber="7">
+ <span class="hits">246</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">
@@ -3670,18 +3880,18 @@
<span class="hits">1</span>
<code class="ruby"> regexps.each do |regexp|</code>
</li>
- <li class="covered" data-hits="4" data-linenumber="18">
- <span class="hits">4</span>
+ <li class="covered" data-hits="12" data-linenumber="18">
+ <span class="hits">12</span>
<code class="ruby"> it do</code>
</li>
- <li class="covered" data-hits="8" data-linenumber="19">
- <span class="hits">8</span>
+ <li class="covered" data-hits="24" data-linenumber="19">
+ <span class="hits">24</span>
<code class="ruby"> expect{regexp.examples}.to raise_error RegexpExamples::IllegalSyntaxError</code>
</li>
<li class="never" data-hits="" data-linenumber="20">
@@ -3709,793 +3919,1015 @@
</li>
<li class="covered" data-hits="1" data-linenumber="24">
<span class="hits">1</span>
- <code class="ruby"> context 'returns matching strings' do</code>
+ <code class="ruby"> def self.examples_raise_unsupported_syntax_error(*regexps)</code>
</li>
<li class="covered" data-hits="1" data-linenumber="25">
<span class="hits">1</span>
+ <code class="ruby"> regexps.each do |regexp|</code>
+ </li>
+
+ <li class="covered" data-hits="5" data-linenumber="26">
+ <span class="hits">5</span>
+
+ <code class="ruby"> it do</code>
+ </li>
+
+ <li class="covered" data-hits="10" data-linenumber="27">
+ <span class="hits">10</span>
+
+ <code class="ruby"> expect{regexp.examples}.to raise_error RegexpExamples::UnsupportedSyntaxError</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="28">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="29">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="30">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="31">
+
+
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="32">
+ <span class="hits">1</span>
+
+ <code class="ruby"> context 'returns matching strings' do</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="33">
+ <span class="hits">1</span>
+
<code class="ruby"> context "for basic repeaters" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="26">
+ <li class="covered" data-hits="1" data-linenumber="34">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="27">
+ <li class="never" data-hits="" data-linenumber="35">
<code class="ruby"> /a/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="28">
+ <li class="never" data-hits="" data-linenumber="36">
<code class="ruby"> /a*/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="29">
+ <li class="never" data-hits="" data-linenumber="37">
<code class="ruby"> /a+/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="30">
+ <li class="never" data-hits="" data-linenumber="38">
<code class="ruby"> /a?/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="31">
+ <li class="never" data-hits="" data-linenumber="39">
<code class="ruby"> /a{1}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="32">
+ <li class="never" data-hits="" data-linenumber="40">
<code class="ruby"> /a{1,}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="33">
+ <li class="never" data-hits="" data-linenumber="41">
<code class="ruby"> /a{,2}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="34">
+ <li class="never" data-hits="" data-linenumber="42">
<code class="ruby"> /a{1,2}/</code>
</li>
- <li class="never" data-hits="" data-linenumber="35">
+ <li class="never" data-hits="" data-linenumber="43">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="36">
+ <li class="never" data-hits="" data-linenumber="44">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="37">
+ <li class="never" data-hits="" data-linenumber="45">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="38">
+ <li class="covered" data-hits="1" data-linenumber="46">
<span class="hits">1</span>
<code class="ruby"> context "for basic groups" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="39">
+ <li class="covered" data-hits="1" data-linenumber="47">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="40">
+ <li class="never" data-hits="" data-linenumber="48">
<code class="ruby"> /[a]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="41">
+ <li class="never" data-hits="" data-linenumber="49">
<code class="ruby"> /(a)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="42">
+ <li class="never" data-hits="" data-linenumber="50">
<code class="ruby"> /a|b/,</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"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="45">
+ <li class="never" data-hits="" data-linenumber="53">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="46">
+ <li class="never" data-hits="" data-linenumber="54">
<code class="ruby"></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"> context "for complex char groups (square brackets)" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="48">
+ <li class="covered" data-hits="1" data-linenumber="56">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="49">
+ <li class="never" data-hits="" data-linenumber="57">
<code class="ruby"> /[abc]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="50">
+ <li class="never" data-hits="" data-linenumber="58">
<code class="ruby"> /[a-c]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="51">
+ <li class="never" data-hits="" data-linenumber="59">
<code class="ruby"> /[abc-e]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="52">
+ <li class="never" data-hits="" data-linenumber="60">
<code class="ruby"> /[^a-zA-Z]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="53">
+ <li class="never" data-hits="" data-linenumber="61">
<code class="ruby"> /[\w]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="54">
+ <li class="never" data-hits="" data-linenumber="62">
<code class="ruby"> /[]]/, # TODO: How to suppress annoying warnings on this test?</code>
</li>
- <li class="never" data-hits="" data-linenumber="55">
+ <li class="never" data-hits="" data-linenumber="63">
<code class="ruby"> /[\]]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="56">
+ <li class="never" data-hits="" data-linenumber="64">
<code class="ruby"> /[\\]/,</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="58">
+ <li class="never" data-hits="" data-linenumber="66">
<code class="ruby"> /[\n-\r]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="59">
+ <li class="never" data-hits="" data-linenumber="67">
<code class="ruby"> /[\-]/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="60">
+ <li class="never" data-hits="" data-linenumber="68">
<code class="ruby"> /[%-+]/ # This regex is "supposed to" match some surprising things!!!</code>
</li>
- <li class="never" data-hits="" data-linenumber="61">
+ <li class="never" data-hits="" data-linenumber="69">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="62">
+ <li class="never" data-hits="" data-linenumber="70">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="63">
+ <li class="never" data-hits="" data-linenumber="71">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="64">
+ <li class="covered" data-hits="1" data-linenumber="72">
<span class="hits">1</span>
<code class="ruby"> context "for complex multi groups" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="65">
+ <li class="covered" data-hits="1" data-linenumber="73">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="66">
+ <li class="never" data-hits="" data-linenumber="74">
<code class="ruby"> /(normal)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="67">
+ <li class="never" data-hits="" data-linenumber="75">
<code class="ruby"> /(?:nocapture)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="68">
+ <li class="never" data-hits="" data-linenumber="76">
<code class="ruby"> /(?<name>namedgroup)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="69">
+ <li class="never" data-hits="" data-linenumber="77">
<code class="ruby"> /(?<name>namedgroup) \k<name>/</code>
</li>
- <li class="never" data-hits="" data-linenumber="70">
+ <li class="never" data-hits="" data-linenumber="78">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="71">
+ <li class="never" data-hits="" data-linenumber="79">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="72">
+ <li class="never" data-hits="" data-linenumber="80">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="73">
+ <li class="covered" data-hits="1" data-linenumber="81">
<span class="hits">1</span>
<code class="ruby"> context "for escaped characters" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="74">
+ <li class="covered" data-hits="1" data-linenumber="82">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="75">
+ <li class="never" data-hits="" data-linenumber="83">
<code class="ruby"> /\w/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="76">
+ <li class="never" data-hits="" data-linenumber="84">
<code class="ruby"> /\W/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="77">
+ <li class="never" data-hits="" data-linenumber="85">
<code class="ruby"> /\s/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="78">
+ <li class="never" data-hits="" data-linenumber="86">
<code class="ruby"> /\S/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="79">
+ <li class="never" data-hits="" data-linenumber="87">
<code class="ruby"> /\d/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="80">
+ <li class="never" data-hits="" data-linenumber="88">
<code class="ruby"> /\D/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="81">
+ <li class="never" data-hits="" data-linenumber="89">
<code class="ruby"> /\h/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="82">
+ <li class="never" data-hits="" data-linenumber="90">
<code class="ruby"> /\H/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="83">
+ <li class="never" data-hits="" data-linenumber="91">
<code class="ruby"> /\t/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="84">
+ <li class="never" data-hits="" data-linenumber="92">
<code class="ruby"> /\n/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="85">
+ <li class="never" data-hits="" data-linenumber="93">
<code class="ruby"> /\f/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="86">
+ <li class="never" data-hits="" data-linenumber="94">
<code class="ruby"> /\a/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="87">
+ <li class="never" data-hits="" data-linenumber="95">
<code class="ruby"> /\v/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="88">
+ <li class="never" data-hits="" data-linenumber="96">
<code class="ruby"> /\e/</code>
</li>
- <li class="never" data-hits="" data-linenumber="89">
+ <li class="never" data-hits="" data-linenumber="97">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="90">
+ <li class="never" data-hits="" data-linenumber="98">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="91">
+ <li class="never" data-hits="" data-linenumber="99">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="92">
+ <li class="covered" data-hits="1" data-linenumber="100">
<span class="hits">1</span>
<code class="ruby"> context "for backreferences" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="93">
+ <li class="covered" data-hits="1" data-linenumber="101">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="94">
+ <li class="never" data-hits="" data-linenumber="102">
<code class="ruby"> /(repeat) \1/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="95">
+ <li class="never" data-hits="" data-linenumber="103">
<code class="ruby"> /(ref1) (ref2) \1 \2/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="96">
+ <li class="never" data-hits="" data-linenumber="104">
<code class="ruby"> /((ref2)ref1) \1 \2/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="97">
+ <li class="never" data-hits="" data-linenumber="105">
<code class="ruby"> /((ref1and2)) \1 \2/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="98">
+ <li class="never" data-hits="" data-linenumber="106">
<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="99">
+ <li class="never" data-hits="" data-linenumber="107">
<code class="ruby"> /(a?(b?(c?(d?(e?)))))/</code>
</li>
- <li class="never" data-hits="" data-linenumber="100">
+ <li class="never" data-hits="" data-linenumber="108">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="101">
+ <li class="never" data-hits="" data-linenumber="109">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="102">
+ <li class="never" data-hits="" data-linenumber="110">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="103">
+ <li class="covered" data-hits="1" data-linenumber="111">
<span class="hits">1</span>
<code class="ruby"> context "for complex patterns" do</code>
</li>
- <li class="never" data-hits="" data-linenumber="104">
+ <li class="never" data-hits="" data-linenumber="112">
<code class="ruby"> # Longer combinations of the above</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="105">
+ <li class="covered" data-hits="1" data-linenumber="113">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="106">
+ <li class="never" data-hits="" data-linenumber="114">
<code class="ruby"> /https?:\/\/(www\.)github\.com/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="107">
+ <li class="never" data-hits="" data-linenumber="115">
<code class="ruby"> /(I(N(C(E(P(T(I(O(N)))))))))*/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="108">
+ <li class="never" data-hits="" data-linenumber="116">
<code class="ruby"> /[\w]{1}/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="109">
+ <li class="never" data-hits="" data-linenumber="117">
<code class="ruby"> /((a?b*c+)) \1/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="110">
+ <li class="never" data-hits="" data-linenumber="118">
<code class="ruby"> /((a?b*c+)?) \1/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="111">
+ <li class="never" data-hits="" data-linenumber="119">
<code class="ruby"> /a|b|c|d/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="112">
+ <li class="never" data-hits="" data-linenumber="120">
<code class="ruby"> /a+|b*|c?/</code>
</li>
- <li class="never" data-hits="" data-linenumber="113">
+ <li class="never" data-hits="" data-linenumber="121">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="114">
+ <li class="never" data-hits="" data-linenumber="122">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="115">
+ <li class="never" data-hits="" data-linenumber="123">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="116">
+ <li class="covered" data-hits="1" data-linenumber="124">
<span class="hits">1</span>
<code class="ruby"> context "for illegal syntax" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="117">
+ <li class="covered" data-hits="1" data-linenumber="125">
<span class="hits">1</span>
<code class="ruby"> examples_raise_illegal_syntax_error(</code>
</li>
- <li class="never" data-hits="" data-linenumber="118">
+ <li class="never" data-hits="" data-linenumber="126">
<code class="ruby"> /(?=lookahead)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="119">
+ <li class="never" data-hits="" data-linenumber="127">
<code class="ruby"> /(?!neglookahead)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="120">
+ <li class="never" data-hits="" data-linenumber="128">
<code class="ruby"> /(?<=lookbehind)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="121">
+ <li class="never" data-hits="" data-linenumber="129">
- <code class="ruby"> /(?<!neglookbehind)/</code>
+ <code class="ruby"> /(?<!neglookbehind)/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="122">
+ <li class="never" data-hits="" data-linenumber="130">
+ <code class="ruby"> /\bword-boundary/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="131">
+
+
+ <code class="ruby"> /no\Bn-word-boundary/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="132">
+
+
+ <code class="ruby"> /\Glast-match/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="133">
+
+
+ <code class="ruby"> /start-of\A-string/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="134">
+
+
+ <code class="ruby"> /start-of^-line/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="135">
+
+
+ <code class="ruby"> /end-of\Z-string/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="136">
+
+
+ <code class="ruby"> /end-of\z-string/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="137">
+
+
+ <code class="ruby"> /end-of$-line/</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="138">
+
+
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="123">
+ <li class="never" data-hits="" data-linenumber="139">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="124">
+ <li class="never" data-hits="" data-linenumber="140">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="125">
+ <li class="covered" data-hits="1" data-linenumber="141">
<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="142">
+ <span class="hits">1</span>
+
+ <code class="ruby"> examples_exist_and_match(</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="143">
+
+
+ <code class="ruby"> /\Astart/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="144">
+
+
+ <code class="ruby"> /^start/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="145">
+
+
+ <code class="ruby"> /end$/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="146">
+
+
+ <code class="ruby"> /end\z/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="147">
+
+
+ <code class="ruby"> /end\Z/</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="148">
+
+
+ <code class="ruby"> )</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="149">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="150">
+
+
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="151">
+ <span class="hits">1</span>
+
+ <code class="ruby"> context "for unsupported syntax" do</code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="152">
+ <span class="hits">1</span>
+
+ <code class="ruby"> examples_raise_unsupported_syntax_error(</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="153">
+
+
+ <code class="ruby"> /\p{L}/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="154">
+
+
+ <code class="ruby"> /\p{Arabic}/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="155">
+
+
+ <code class="ruby"> /\p{^Ll}/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="156">
+
+
+ <code class="ruby"> /(?<name> ... \g<name>*)/,</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="157">
+
+
+ <code class="ruby"> /[[:space:]]/</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="158">
+
+
+ <code class="ruby"> )</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="159">
+
+
+ <code class="ruby"> end</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="160">
+
+
+ <code class="ruby"></code>
+ </li>
+
+ <li class="covered" data-hits="1" data-linenumber="161">
+ <span class="hits">1</span>
+
<code class="ruby"> context "for control characters" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="126">
+ <li class="covered" data-hits="1" data-linenumber="162">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="127">
+ <li class="never" data-hits="" data-linenumber="163">
<code class="ruby"> /\ca/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="128">
+ <li class="never" data-hits="" data-linenumber="164">
<code class="ruby"> /\cZ/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="129">
+ <li class="never" data-hits="" data-linenumber="165">
<code class="ruby"> /\c9/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="130">
+ <li class="never" data-hits="" data-linenumber="166">
<code class="ruby"> /\c[/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="131">
+ <li class="never" data-hits="" data-linenumber="167">
<code class="ruby"> /\c#/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="132">
+ <li class="never" data-hits="" data-linenumber="168">
<code class="ruby"> /\c?/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="133">
+ <li class="never" data-hits="" data-linenumber="169">
<code class="ruby"> /\C-a/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="134">
+ <li class="never" data-hits="" data-linenumber="170">
<code class="ruby"> /\C-&/</code>
</li>
- <li class="never" data-hits="" data-linenumber="135">
+ <li class="never" data-hits="" data-linenumber="171">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="136">
+ <li class="never" data-hits="" data-linenumber="172">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="137">
+ <li class="never" data-hits="" data-linenumber="173">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="138">
+ <li class="covered" data-hits="1" data-linenumber="174">
<span class="hits">1</span>
<code class="ruby"> context "for escape sequences" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="139">
+ <li class="covered" data-hits="1" data-linenumber="175">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="140">
+ <li class="never" data-hits="" data-linenumber="176">
<code class="ruby"> /\x42/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="141">
+ <li class="never" data-hits="" data-linenumber="177">
<code class="ruby"> /\x1D/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="142">
+ <li class="never" data-hits="" data-linenumber="178">
<code class="ruby"> /\x3word/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="143">
+ <li class="never" data-hits="" data-linenumber="179">
<code class="ruby"> /#{"\x80".force_encoding("ASCII-8BIT")}/</code>
</li>
- <li class="never" data-hits="" data-linenumber="144">
+ <li class="never" data-hits="" data-linenumber="180">
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="145">
+ <li class="never" data-hits="" data-linenumber="181">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="146">
+ <li class="never" data-hits="" data-linenumber="182">
<code class="ruby"></code>
</li>
- <li class="covered" data-hits="1" data-linenumber="147">
+ <li class="covered" data-hits="1" data-linenumber="183">
<span class="hits">1</span>
<code class="ruby"> context "for unicode sequences" do</code>
</li>
- <li class="covered" data-hits="1" data-linenumber="148">
+ <li class="covered" data-hits="1" data-linenumber="184">
<span class="hits">1</span>
<code class="ruby"> examples_exist_and_match(</code>
</li>
- <li class="never" data-hits="" data-linenumber="149">
+ <li class="never" data-hits="" data-linenumber="185">
<code class="ruby"> /\u6829/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="150">
+ <li class="never" data-hits="" data-linenumber="186">
- <code class="ruby"> /\uabcd/</code>
+ <code class="ruby"> /\uabcd/,</code>
</li>
- <li class="never" data-hits="" data-linenumber="151">
+ <li class="never" data-hits="" data-linenumber="187">
+ <code class="ruby"> /\u{42}word/</code>
+ </li>
+
+ <li class="never" data-hits="" data-linenumber="188">
+
+
<code class="ruby"> )</code>
</li>
- <li class="never" data-hits="" data-linenumber="152">
+ <li class="never" data-hits="" data-linenumber="189">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="153">
+ <li class="never" data-hits="" data-linenumber="190">
<code class="ruby"></code>
</li>
- <li class="never" data-hits="" data-linenumber="154">
+ <li class="never" data-hits="" data-linenumber="191">
<code class="ruby"> end</code>
</li>
- <li class="never" data-hits="" data-linenumber="155">
+ <li class="never" data-hits="" data-linenumber="192">
<code class="ruby">end</code>
</li>