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 &lt; 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 &lt;&lt; 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 &#39;(&#39;</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 &#39;[&#39;</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 &#39;.&#39;</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 &#39;\\&#39;</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 &#39;^&#39;, &#39;A&#39;</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(&#39;&#39;) # Ignore the &quot;illegal&quot; 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, &quot;Anchors cannot be supported, as they are not regular&quot;</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 &#39;$&#39;, &#39;z&#39;, &#39;Z&#39;</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(&#39;&#39;) # Ignore the &quot;illegal&quot; 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, &quot;Anchors cannot be supported, as they are not regular&quot;</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&lt;([^&gt;]+)&gt;/ # 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 &quot;{&quot; and &quot;}&quot;</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, &quot;Named properties ({\\p#{$1}}) are not yet supported&quot;</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, &quot;Subexpression calls (\g) are not yet supported&quot;</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, &quot;Anchors cannot be supported, as they are not regular&quot;</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(&#39;&#39;) # Ignore the &quot;illegal&quot; 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, &quot;Anchors cannot be supported, as they are not regular&quot;</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(&#39;&#39;) # Ignore the &quot;illegal&quot; 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, &quot;Anchors cannot be supported, as they are not regular&quot;</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 &#39;*&#39;</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 &#39;+&#39;</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 &#39;?&#39;</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 &#39;{&#39;</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(\?)?(:|!|=|&lt;(!|=|[^!=][^&gt;]*))?/) 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] == &#39;:&#39; # 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, &quot;Lookaheads are not regular; cannot generate examples&quot;</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. /(?&lt;=lookbehind)/, /(?&lt;!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, &quot;Lookbehinds are not regular; cannot generate examples&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="106"> + <li class="never" data-hits="" data-linenumber="138"> <code class="ruby"> else # e.g. /(?&lt;name&gt;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, &quot;POSIX bracket expressions are not yet implemented&quot;</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] == &#39;]&#39;</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 &quot;]&quot;)</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 &lt;&lt; &#39;]&#39;</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] == &#39;]&#39; \</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"> &amp;&amp; !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 &quot;\&quot; before the &quot;]&quot;, e.g.</code> </li> - <li class="never" data-hits="" data-linenumber="131"> + <li class="never" data-hits="" data-linenumber="166"> <code class="ruby"> # /[\]]/ (match &quot;]&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="132"> + <li class="never" data-hits="" data-linenumber="167"> <code class="ruby"> # /[\\]/ (match &quot;\&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="133"> + <li class="never" data-hits="" data-linenumber="168"> <code class="ruby"> # /[\\\]]/ (match &quot;\&quot; or &quot;]&quot;)</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 &lt;&lt; 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 &quot;?\\C-#{char.chr}&quot; # Doesn&#39;t work for e.g. char = &quot;?&quot;</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 &quot;?\\x#{match}&quot;</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 &quot;?\\u#{match}&quot;</code> + <code class="ruby"> eval &quot;?\\u{#{match}}&quot;</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 &lt;&lt; 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 &#39;returns matching strings&#39; 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 &#39;returns matching strings&#39; do</code> + </li> + + <li class="covered" data-hits="1" data-linenumber="33"> + <span class="hits">1</span> + <code class="ruby"> context &quot;for basic repeaters&quot; 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 &quot;for basic groups&quot; 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 &quot;for complex char groups (square brackets)&quot; 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 &quot;supposed to&quot; 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 &quot;for complex multi groups&quot; 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"> /(?&lt;name&gt;namedgroup)/,</code> </li> - <li class="never" data-hits="" data-linenumber="69"> + <li class="never" data-hits="" data-linenumber="77"> <code class="ruby"> /(?&lt;name&gt;namedgroup) \k&lt;name&gt;/</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 &quot;for escaped characters&quot; 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 &quot;for backreferences&quot; 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 &quot;for complex patterns&quot; 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 &quot;for illegal syntax&quot; 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"> /(?&lt;=lookbehind)/,</code> </li> - <li class="never" data-hits="" data-linenumber="121"> + <li class="never" data-hits="" data-linenumber="129"> - <code class="ruby"> /(?&lt;!neglookbehind)/</code> + <code class="ruby"> /(?&lt;!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 &quot;ignore start/end anchors if at start/end&quot; 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 &quot;for unsupported syntax&quot; 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"> /(?&lt;name&gt; ... \g&lt;name&gt;*)/,</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 &quot;for control characters&quot; 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-&amp;/</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 &quot;for escape sequences&quot; 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"> /#{&quot;\x80&quot;.force_encoding(&quot;ASCII-8BIT&quot;)}/</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 &quot;for unicode sequences&quot; 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>