coverage/index.html in regexp-examples-0.2.3 vs coverage/index.html in regexp-examples-0.2.4

- 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-16T17:34:09+00:00">2015-01-16T17:34:09+00:00</abbr></div> + <div class="timestamp">Generated <abbr class="timeago" title="2015-01-17T16:37:30+00:00">2015-01-17T16:37:30+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"> - 75.85 + 74.89 </span> </span> hits/line) </h2> <a name="AllFiles"></a> <div> <b>10</b> files in total. - <b>304</b> relevant lines. - <span class="green"><b>304</b> lines covered</span> and + <b>316</b> relevant lines. + <span class="green"><b>316</b> lines covered</span> and <span class="red"><b>0</b> lines missed </span> </div> <table class="file_list"> <thead> <tr> @@ -49,107 +49,107 @@ </tr> </thead> <tbody> <tr> - <td class="strong"><a href="#2803e22e3c56b48da477c2353232f0bc6e406a58" class="src_link" title="lib/regexp-examples.rb">lib/regexp-examples.rb</a></td> + <td class="strong"><a href="#54b5d2a122ff754d8ac3e44ac036a743f275d5cd" class="src_link" title="lib/regexp-examples.rb">lib/regexp-examples.rb</a></td> <td class="green strong">100.0 %</td> <td>2</td> <td>1</td> <td>1</td> <td>0</td> <td>10.0</td> </tr> <tr> - <td class="strong"><a href="#29a2a933bc8a3e2979023518566420381fb495fb" class="src_link" title="lib/regexp-examples/backreferences.rb">lib/regexp-examples/backreferences.rb</a></td> + <td class="strong"><a href="#93190cc93d103d3260faf0664b10ff54c6eea083" class="src_link" title="lib/regexp-examples/backreferences.rb">lib/regexp-examples/backreferences.rb</a></td> <td class="green strong">100.0 %</td> <td>21</td> <td>11</td> <td>11</td> <td>0</td> - <td>46.5</td> + <td>48.7</td> </tr> <tr> - <td class="strong"><a href="#e85042a89399d7715f4d8400e118fda97215b72c" class="src_link" title="lib/regexp-examples/constants.rb">lib/regexp-examples/constants.rb</a></td> + <td class="strong"><a href="#63a4d8bce3d583c95db1448751ea1a5d89880a5c" class="src_link" title="lib/regexp-examples/constants.rb">lib/regexp-examples/constants.rb</a></td> <td class="green strong">100.0 %</td> <td>42</td> <td>12</td> <td>12</td> <td>0</td> <td>6.8</td> </tr> <tr> - <td class="strong"><a href="#1e3a4050d8206287a142d9723d2991d09a3f7a81" class="src_link" title="lib/regexp-examples/exceptions.rb">lib/regexp-examples/exceptions.rb</a></td> + <td class="strong"><a href="#1bb4101b0e3c014469af0221a5549cd762b969cb" class="src_link" title="lib/regexp-examples/exceptions.rb">lib/regexp-examples/exceptions.rb</a></td> <td class="green strong">100.0 %</td> <td>5</td> <td>4</td> <td>4</td> <td>0</td> <td>1.0</td> </tr> <tr> - <td class="strong"><a href="#00d77fb2e4e21451442e29891ddf88bd05f0fbd7" class="src_link" title="lib/regexp-examples/groups.rb">lib/regexp-examples/groups.rb</a></td> + <td class="strong"><a href="#a6c87537a3f20f2e6e7fc1c61e4c6c791987b6f8" class="src_link" title="lib/regexp-examples/groups.rb">lib/regexp-examples/groups.rb</a></td> <td class="green strong">100.0 %</td> <td>145</td> <td>77</td> <td>77</td> <td>0</td> - <td>147.4</td> + <td>149.5</td> </tr> <tr> - <td class="strong"><a href="#dad3c4bb6458db3261442a9292e1345b41afd730" class="src_link" title="lib/regexp-examples/helpers.rb">lib/regexp-examples/helpers.rb</a></td> + <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>167.1</td> + <td>171.5</td> </tr> <tr> - <td class="strong"><a href="#e013406b8d61f5ad15d0a3ad7ea7e8e96b6d7254" class="src_link" title="lib/regexp-examples/parser.rb">lib/regexp-examples/parser.rb</a></td> + <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>192</td> - <td>108</td> - <td>108</td> + <td>205</td> + <td>116</td> + <td>116</td> <td>0</td> - <td>55.2</td> + <td>53.0</td> </tr> <tr> - <td class="strong"><a href="#0dc204f32cb2876d2238a2aae7dea86ad7f9e679" class="src_link" title="lib/regexp-examples/regexp_extensions.rb">lib/regexp-examples/regexp_extensions.rb</a></td> + <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>39.0</td> + <td>43.5</td> </tr> <tr> - <td class="strong"><a href="#430477f0c86b2d77a18fe51e32b818d48ab7e74b" class="src_link" title="lib/regexp-examples/repeaters.rb">lib/regexp-examples/repeaters.rb</a></td> + <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>63.1</td> + <td>65.6</td> </tr> <tr> - <td class="strong"><a href="#73ece59f571550448cda013ec330081f40e82321" class="src_link" title="spec/regexp-examples_spec.rb">spec/regexp-examples_spec.rb</a></td> + <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>136</td> - <td>30</td> - <td>30</td> + <td>155</td> + <td>34</td> + <td>34</td> <td>0</td> - <td>14.8</td> + <td>14.4</td> </tr> </tbody> </table> </div> @@ -164,11 +164,11 @@ using RSpec </div> <div class="source_files"> - <div class="source_table" id="2803e22e3c56b48da477c2353232f0bc6e406a58"> + <div class="source_table" id="54b5d2a122ff754d8ac3e44ac036a743f275d5cd"> <div class="header"> <h3>lib/regexp-examples.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> <b>1</b> relevant lines. @@ -194,11 +194,11 @@ </ol> </pre> </div> - <div class="source_table" id="29a2a933bc8a3e2979023518566420381fb495fb"> + <div class="source_table" id="93190cc93d103d3260faf0664b10ff54c6eea083"> <div class="header"> <h3>lib/regexp-examples/backreferences.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> <b>11</b> relevant lines. @@ -226,18 +226,18 @@ <span class="hits">1</span> <code class="ruby"> def substitute_backreferences(full_examples)</code> </li> - <li class="covered" data-hits="61" data-linenumber="4"> - <span class="hits">61</span> + <li class="covered" data-hits="69" data-linenumber="4"> + <span class="hits">69</span> <code class="ruby"> full_examples.map do |full_example|</code> </li> - <li class="covered" data-hits="157" data-linenumber="5"> - <span class="hits">157</span> + <li class="covered" data-hits="165" data-linenumber="5"> + <span class="hits">165</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="157" data-linenumber="8"> - <span class="hits">157</span> + <li class="covered" data-hits="165" data-linenumber="8"> + <span class="hits">165</span> <code class="ruby"> full_example</code> </li> <li class="never" data-hits="" data-linenumber="9"> @@ -338,11 +338,11 @@ </ol> </pre> </div> - <div class="source_table" id="e85042a89399d7715f4d8400e118fda97215b72c"> + <div class="source_table" id="63a4d8bce3d583c95db1448751ea1a5d89880a5c"> <div class="header"> <h3>lib/regexp-examples/constants.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> <b>12</b> relevant lines. @@ -608,11 +608,11 @@ </ol> </pre> </div> - <div class="source_table" id="1e3a4050d8206287a142d9723d2991d09a3f7a81"> + <div class="source_table" id="1bb4101b0e3c014469af0221a5549cd762b969cb"> <div class="header"> <h3>lib/regexp-examples/exceptions.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> <b>4</b> relevant lines. @@ -656,11 +656,11 @@ </ol> </pre> </div> - <div class="source_table" id="00d77fb2e4e21451442e29891ddf88bd05f0fbd7"> + <div class="source_table" id="a6c87537a3f20f2e6e7fc1c61e4c6c791987b6f8"> <div class="header"> <h3>lib/regexp-examples/groups.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> <b>77</b> relevant lines. @@ -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="1649" data-linenumber="8"> - <span class="hits">1649</span> + <li class="covered" data-hits="1677" data-linenumber="8"> + <span class="hits">1677</span> <code class="ruby"> @group_id = group_id</code> </li> - <li class="covered" data-hits="1649" data-linenumber="9"> - <span class="hits">1649</span> + <li class="covered" data-hits="1677" data-linenumber="9"> + <span class="hits">1677</span> <code class="ruby"> @subgroups = subgroups</code> </li> - <li class="covered" data-hits="1649" data-linenumber="10"> - <span class="hits">1649</span> + <li class="covered" data-hits="1677" data-linenumber="10"> + <span class="hits">1677</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="1649" data-linenumber="13"> - <span class="hits">1649</span> + <li class="covered" data-hits="1677" data-linenumber="13"> + <span class="hits">1677</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="1667" data-linenumber="17"> - <span class="hits">1667</span> + <li class="covered" data-hits="1683" data-linenumber="17"> + <span class="hits">1683</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="422" data-linenumber="23"> - <span class="hits">422</span> + <li class="covered" data-hits="434" data-linenumber="23"> + <span class="hits">434</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="182" data-linenumber="29"> - <span class="hits">182</span> + <li class="covered" data-hits="194" data-linenumber="29"> + <span class="hits">194</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="182" data-linenumber="32"> - <span class="hits">182</span> + <li class="covered" data-hits="194" data-linenumber="32"> + <span class="hits">194</span> <code class="ruby"> [GroupResult.new(@char)]</code> </li> <li class="never" data-hits="" data-linenumber="33"> @@ -1544,11 +1544,11 @@ </ol> </pre> </div> - <div class="source_table" id="dad3c4bb6458db3261442a9292e1345b41afd730"> + <div class="source_table" id="9ae955cbc95623603c71e3cb5269e0b5572d66bb"> <div class="header"> <h3>lib/regexp-examples/helpers.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> <b>10</b> relevant lines. @@ -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="278" data-linenumber="11"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="11"> + <span class="hits">290</span> <code class="ruby"> first = arrays_of_strings.shift</code> </li> - <li class="covered" data-hits="278" data-linenumber="12"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="12"> + <span class="hits">290</span> <code class="ruby"> return first if arrays_of_strings.empty?</code> </li> - <li class="covered" data-hits="164" data-linenumber="13"> - <span class="hits">164</span> + <li class="covered" data-hits="168" data-linenumber="13"> + <span class="hits">168</span> <code class="ruby"> first.product( permutations_of_strings(arrays_of_strings, options) ).map do |result|</code> </li> - <li class="covered" data-hits="237" data-linenumber="14"> - <span class="hits">237</span> + <li class="covered" data-hits="241" data-linenumber="14"> + <span class="hits">241</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="237" data-linenumber="19"> - <span class="hits">237</span> + <li class="covered" data-hits="241" data-linenumber="19"> + <span class="hits">241</span> <code class="ruby"> result.flatten!</code> </li> - <li class="covered" data-hits="237" data-linenumber="20"> - <span class="hits">237</span> + <li class="covered" data-hits="241" data-linenumber="20"> + <span class="hits">241</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="237" data-linenumber="23"> - <span class="hits">237</span> + <li class="covered" data-hits="241" data-linenumber="23"> + <span class="hits">241</span> <code class="ruby"> GroupResult.new(result.join, nil, subgroups)</code> </li> <li class="never" data-hits="" data-linenumber="24"> @@ -1718,17 +1718,17 @@ </ol> </pre> </div> - <div class="source_table" id="e013406b8d61f5ad15d0a3ad7ea7e8e96b6d7254"> + <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>108</b> relevant lines. - <span class="green"><b>108</b> lines covered</span> and + <b>116</b> relevant lines. + <span class="green"><b>116</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="65" data-linenumber="5"> - <span class="hits">65</span> + <li class="covered" data-hits="73" data-linenumber="5"> + <span class="hits">73</span> <code class="ruby"> @regexp_string = regexp_string</code> </li> - <li class="covered" data-hits="65" data-linenumber="6"> - <span class="hits">65</span> + <li class="covered" data-hits="73" data-linenumber="6"> + <span class="hits">73</span> <code class="ruby"> @num_groups = 0</code> </li> - <li class="covered" data-hits="65" data-linenumber="7"> - <span class="hits">65</span> + <li class="covered" data-hits="73" data-linenumber="7"> + <span class="hits">73</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="112" data-linenumber="11"> - <span class="hits">112</span> + <li class="covered" data-hits="120" data-linenumber="11"> + <span class="hits">120</span> <code class="ruby"> repeaters = []</code> </li> - <li class="covered" data-hits="112" data-linenumber="12"> - <span class="hits">112</span> + <li class="covered" data-hits="120" data-linenumber="12"> + <span class="hits">120</span> <code class="ruby"> while @current_position &lt; regexp_string.length</code> </li> - <li class="covered" data-hits="323" data-linenumber="13"> - <span class="hits">323</span> + <li class="covered" data-hits="335" data-linenumber="13"> + <span class="hits">335</span> <code class="ruby"> group = parse_group(repeaters)</code> </li> - <li class="covered" data-hits="319" data-linenumber="14"> - <span class="hits">319</span> + <li class="covered" data-hits="331" data-linenumber="14"> + <span class="hits">331</span> <code class="ruby"> break if group.is_a? MultiGroupEnd</code> </li> - <li class="covered" data-hits="278" data-linenumber="15"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="15"> + <span class="hits">290</span> <code class="ruby"> repeaters = [] if group.is_a? OrGroup</code> </li> - <li class="covered" data-hits="278" data-linenumber="16"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="16"> + <span class="hits">290</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="covered" data-hits="278" data-linenumber="17"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="17"> + <span class="hits">290</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="108" data-linenumber="19"> - <span class="hits">108</span> + <li class="covered" data-hits="116" data-linenumber="19"> + <span class="hits">116</span> <code class="ruby"> repeaters</code> </li> <li class="never" data-hits="" data-linenumber="20"> @@ -1876,18 +1876,18 @@ <span class="hits">1</span> <code class="ruby"> def parse_group(repeaters)</code> </li> - <li class="covered" data-hits="323" data-linenumber="25"> - <span class="hits">323</span> + <li class="covered" data-hits="335" data-linenumber="25"> + <span class="hits">335</span> <code class="ruby"> char = regexp_string[@current_position]</code> </li> - <li class="covered" data-hits="323" data-linenumber="26"> - <span class="hits">323</span> + <li class="covered" data-hits="335" data-linenumber="26"> + <span class="hits">335</span> <code class="ruby"> case char</code> </li> <li class="never" data-hits="" data-linenumber="27"> @@ -1954,36 +1954,36 @@ <code class="ruby"> when &#39;\\&#39;</code> </li> - <li class="covered" data-hits="42" data-linenumber="38"> - <span class="hits">42</span> + <li class="covered" data-hits="49" data-linenumber="38"> + <span class="hits">49</span> <code class="ruby"> group = parse_after_backslash_group</code> </li> <li class="never" data-hits="" data-linenumber="39"> <code class="ruby"> else</code> </li> - <li class="covered" data-hits="174" data-linenumber="40"> - <span class="hits">174</span> + <li class="covered" data-hits="179" data-linenumber="40"> + <span class="hits">179</span> <code class="ruby"> group = parse_single_char_group(char)</code> </li> <li class="never" data-hits="" data-linenumber="41"> <code class="ruby"> end</code> </li> - <li class="covered" data-hits="319" data-linenumber="42"> - <span class="hits">319</span> + <li class="covered" data-hits="331" data-linenumber="42"> + <span class="hits">331</span> <code class="ruby"> group</code> </li> <li class="never" data-hits="" data-linenumber="43"> @@ -2002,12 +2002,12 @@ <span class="hits">1</span> <code class="ruby"> def parse_after_backslash_group</code> </li> - <li class="covered" data-hits="42" data-linenumber="46"> - <span class="hits">42</span> + <li class="covered" data-hits="49" data-linenumber="46"> + <span class="hits">49</span> <code class="ruby"> @current_position += 1</code> </li> <li class="never" data-hits="" data-linenumber="47"> @@ -2071,828 +2071,906 @@ </li> <li class="never" data-hits="" data-linenumber="57"> - <code class="ruby"> when rest_of_string =~ /\Ac(.)/ # Control character</code> + <code class="ruby"> when rest_of_string =~ /\A(c|C-)(.)/ # Control character</code> </li> - <li class="covered" data-hits="6" data-linenumber="58"> - <span class="hits">6</span> + <li class="never" data-hits="" data-linenumber="58"> - <code class="ruby"> @current_position += 1</code> + + <code class="ruby"> # http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals</code> </li> - <li class="covered" data-hits="6" data-linenumber="59"> - <span class="hits">6</span> + <li class="covered" data-hits="8" data-linenumber="59"> + <span class="hits">8</span> - <code class="ruby"> group = parse_single_char_group( parse_control_character($1) )</code> + <code class="ruby"> @current_position += $1.length</code> </li> - <li class="never" data-hits="" data-linenumber="60"> + <li class="covered" data-hits="8" data-linenumber="60"> + <span class="hits">8</span> - - <code class="ruby"> # TODO: There are also a bunch of multi-char matches to watch out for:</code> + <code class="ruby"> group = parse_single_char_group( parse_control_character($2) )</code> </li> <li class="never" data-hits="" data-linenumber="61"> - <code class="ruby"> # http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals</code> + <code class="ruby"> when rest_of_string =~ /\Ax(\h{1,2})/ # Escape sequence</code> </li> - <li class="never" data-hits="" data-linenumber="62"> + <li class="covered" data-hits="3" data-linenumber="62"> + <span class="hits">3</span> + <code class="ruby"> @current_position += $1.length</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="63"> + <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"> + + + <code class="ruby"> when rest_of_string =~ /\Au(\h{4})/ # Unicode sequence</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="65"> + <span class="hits">2</span> + + <code class="ruby"> @current_position += 4</code> + </li> + + <li class="covered" data-hits="2" data-linenumber="66"> + <span class="hits">2</span> + + <code class="ruby"> group = parse_single_char_group( parse_unicode_sequence($1) )</code> + </li> + + <li class="never" data-hits="" data-linenumber="67"> + + <code class="ruby"> else</code> </li> - <li class="covered" data-hits="2" data-linenumber="63"> + <li class="covered" data-hits="2" data-linenumber="68"> <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="64"> + <li class="never" data-hits="" data-linenumber="69"> <code class="ruby"> # TODO: What about cases like \A, \z, \Z ?</code> </li> - <li class="covered" data-hits="42" data-linenumber="65"> - <span class="hits">42</span> + <li class="covered" data-hits="49" data-linenumber="70"> + <span class="hits">49</span> <code class="ruby"> end</code> </li> - <li class="covered" data-hits="42" data-linenumber="66"> - <span class="hits">42</span> + <li class="covered" data-hits="49" data-linenumber="71"> + <span class="hits">49</span> <code class="ruby"> group</code> </li> - <li class="never" data-hits="" data-linenumber="67"> + <li class="never" data-hits="" data-linenumber="72"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="68"> + <li class="never" data-hits="" data-linenumber="73"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="69"> + <li class="covered" data-hits="1" data-linenumber="74"> <span class="hits">1</span> <code class="ruby"> def parse_repeater(group)</code> </li> - <li class="covered" data-hits="278" data-linenumber="70"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="75"> + <span class="hits">290</span> <code class="ruby"> char = regexp_string[@current_position]</code> </li> - <li class="covered" data-hits="278" data-linenumber="71"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="76"> + <span class="hits">290</span> <code class="ruby"> case char</code> </li> - <li class="never" data-hits="" data-linenumber="72"> + <li class="never" data-hits="" data-linenumber="77"> <code class="ruby"> when &#39;*&#39;</code> </li> - <li class="covered" data-hits="5" data-linenumber="73"> + <li class="covered" data-hits="5" data-linenumber="78"> <span class="hits">5</span> <code class="ruby"> repeater = parse_star_repeater(group)</code> </li> - <li class="never" data-hits="" data-linenumber="74"> + <li class="never" data-hits="" data-linenumber="79"> <code class="ruby"> when &#39;+&#39;</code> </li> - <li class="covered" data-hits="4" data-linenumber="75"> + <li class="covered" data-hits="4" data-linenumber="80"> <span class="hits">4</span> <code class="ruby"> repeater = parse_plus_repeater(group)</code> </li> - <li class="never" data-hits="" data-linenumber="76"> + <li class="never" data-hits="" data-linenumber="81"> <code class="ruby"> when &#39;?&#39;</code> </li> - <li class="covered" data-hits="11" data-linenumber="77"> + <li class="covered" data-hits="11" data-linenumber="82"> <span class="hits">11</span> <code class="ruby"> repeater = parse_question_mark_repeater(group)</code> </li> - <li class="never" data-hits="" data-linenumber="78"> + <li class="never" data-hits="" data-linenumber="83"> <code class="ruby"> when &#39;{&#39;</code> </li> - <li class="covered" data-hits="5" data-linenumber="79"> + <li class="covered" data-hits="5" data-linenumber="84"> <span class="hits">5</span> <code class="ruby"> repeater = parse_range_repeater(group)</code> </li> - <li class="never" data-hits="" data-linenumber="80"> + <li class="never" data-hits="" data-linenumber="85"> <code class="ruby"> else</code> </li> - <li class="covered" data-hits="253" data-linenumber="81"> - <span class="hits">253</span> + <li class="covered" data-hits="265" data-linenumber="86"> + <span class="hits">265</span> <code class="ruby"> repeater = parse_one_time_repeater(group)</code> </li> - <li class="never" data-hits="" data-linenumber="82"> + <li class="never" data-hits="" data-linenumber="87"> <code class="ruby"> end</code> </li> - <li class="covered" data-hits="278" data-linenumber="83"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="88"> + <span class="hits">290</span> <code class="ruby"> repeater</code> </li> - <li class="never" data-hits="" data-linenumber="84"> + <li class="never" data-hits="" data-linenumber="89"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="85"> + <li class="never" data-hits="" data-linenumber="90"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="86"> + <li class="covered" data-hits="1" data-linenumber="91"> <span class="hits">1</span> <code class="ruby"> def parse_multi_group</code> </li> - <li class="covered" data-hits="45" data-linenumber="87"> + <li class="covered" data-hits="45" data-linenumber="92"> <span class="hits">45</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="covered" data-hits="45" data-linenumber="88"> + <li class="covered" data-hits="45" data-linenumber="93"> <span class="hits">45</span> <code class="ruby"> @num_groups += 1</code> </li> - <li class="covered" data-hits="45" data-linenumber="89"> + <li class="covered" data-hits="45" data-linenumber="94"> <span class="hits">45</span> <code class="ruby"> group_id = nil # init</code> </li> - <li class="covered" data-hits="45" data-linenumber="90"> + <li class="covered" data-hits="45" data-linenumber="95"> <span class="hits">45</span> <code class="ruby"> rest_of_string.match(/\A(\?)?(:|!|=|&lt;(!|=|[^!=][^&gt;]*))?/) do |match|</code> </li> - <li class="never" data-hits="" data-linenumber="91"> + <li class="never" data-hits="" data-linenumber="96"> <code class="ruby"> case</code> </li> - <li class="never" data-hits="" data-linenumber="92"> + <li class="never" data-hits="" data-linenumber="97"> <code class="ruby"> when match[1].nil? # e.g. /(normal)/</code> </li> - <li class="covered" data-hits="38" data-linenumber="93"> + <li class="covered" data-hits="38" data-linenumber="98"> <span class="hits">38</span> <code class="ruby"> group_id = @num_groups.to_s</code> </li> - <li class="never" data-hits="" data-linenumber="94"> + <li class="never" data-hits="" data-linenumber="99"> <code class="ruby"> when match[2] == &#39;:&#39; # e.g. /(?:nocapture)/</code> </li> - <li class="covered" data-hits="1" data-linenumber="95"> + <li class="covered" data-hits="1" data-linenumber="100"> <span class="hits">1</span> <code class="ruby"> @current_position += 2</code> </li> - <li class="covered" data-hits="1" data-linenumber="96"> + <li class="covered" data-hits="1" data-linenumber="101"> <span class="hits">1</span> <code class="ruby"> group_id = nil</code> </li> - <li class="never" data-hits="" data-linenumber="97"> + <li class="never" data-hits="" data-linenumber="102"> <code class="ruby"> when %w(! =).include?(match[2]) # e.g. /(?=lookahead)/, /(?!neglookahead)/</code> </li> - <li class="covered" data-hits="2" data-linenumber="98"> + <li class="covered" data-hits="2" data-linenumber="103"> <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="99"> + <li class="never" data-hits="" data-linenumber="104"> <code class="ruby"> when %w(! =).include?(match[3]) # e.g. /(?&lt;=lookbehind)/, /(?&lt;!neglookbehind)/</code> </li> - <li class="covered" data-hits="2" data-linenumber="100"> + <li class="covered" data-hits="2" data-linenumber="105"> <span class="hits">2</span> <code class="ruby"> raise IllegalSyntaxError, &quot;Lookbehinds are not regular; cannot generate examples&quot;</code> </li> - <li class="never" data-hits="" data-linenumber="101"> + <li class="never" data-hits="" data-linenumber="106"> <code class="ruby"> else # e.g. /(?&lt;name&gt;namedgroup)/</code> </li> - <li class="covered" data-hits="2" data-linenumber="102"> + <li class="covered" data-hits="2" data-linenumber="107"> <span class="hits">2</span> <code class="ruby"> @current_position += (match[3].length + 3)</code> </li> - <li class="covered" data-hits="2" data-linenumber="103"> + <li class="covered" data-hits="2" data-linenumber="108"> <span class="hits">2</span> <code class="ruby"> group_id = match[3]</code> </li> - <li class="covered" data-hits="45" data-linenumber="104"> + <li class="covered" data-hits="45" data-linenumber="109"> <span class="hits">45</span> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="105"> + <li class="never" data-hits="" data-linenumber="110"> <code class="ruby"> end</code> </li> - <li class="covered" data-hits="41" data-linenumber="106"> + <li class="covered" data-hits="41" data-linenumber="111"> <span class="hits">41</span> <code class="ruby"> groups = parse</code> </li> - <li class="covered" data-hits="41" data-linenumber="107"> + <li class="covered" data-hits="41" data-linenumber="112"> <span class="hits">41</span> <code class="ruby"> MultiGroup.new(groups, group_id)</code> </li> - <li class="never" data-hits="" data-linenumber="108"> + <li class="never" data-hits="" data-linenumber="113"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="109"> + <li class="never" data-hits="" data-linenumber="114"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="110"> + <li class="covered" data-hits="1" data-linenumber="115"> <span class="hits">1</span> <code class="ruby"> def parse_multi_end_group</code> </li> - <li class="covered" data-hits="41" data-linenumber="111"> + <li class="covered" data-hits="41" data-linenumber="116"> <span class="hits">41</span> <code class="ruby"> MultiGroupEnd.new</code> </li> - <li class="never" data-hits="" data-linenumber="112"> + <li class="never" data-hits="" data-linenumber="117"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="113"> + <li class="never" data-hits="" data-linenumber="118"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="114"> + <li class="covered" data-hits="1" data-linenumber="119"> <span class="hits">1</span> <code class="ruby"> def parse_char_group</code> </li> - <li class="covered" data-hits="14" data-linenumber="115"> + <li class="covered" data-hits="14" data-linenumber="120"> <span class="hits">14</span> <code class="ruby"> chars = []</code> </li> - <li class="covered" data-hits="14" data-linenumber="116"> + <li class="covered" data-hits="14" data-linenumber="121"> <span class="hits">14</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="covered" data-hits="14" data-linenumber="117"> + <li class="covered" data-hits="14" data-linenumber="122"> <span class="hits">14</span> <code class="ruby"> if regexp_string[@current_position] == &#39;]&#39;</code> </li> - <li class="never" data-hits="" data-linenumber="118"> + <li class="never" data-hits="" data-linenumber="123"> <code class="ruby"> # Beware of the sneaky edge case:</code> </li> - <li class="never" data-hits="" data-linenumber="119"> + <li class="never" data-hits="" data-linenumber="124"> <code class="ruby"> # /[]]/ (match &quot;]&quot;)</code> </li> - <li class="covered" data-hits="1" data-linenumber="120"> + <li class="covered" data-hits="1" data-linenumber="125"> <span class="hits">1</span> <code class="ruby"> chars &lt;&lt; &#39;]&#39;</code> </li> - <li class="covered" data-hits="1" data-linenumber="121"> + <li class="covered" data-hits="1" data-linenumber="126"> <span class="hits">1</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="never" data-hits="" data-linenumber="122"> + <li class="never" data-hits="" data-linenumber="127"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="123"> + <li class="never" data-hits="" data-linenumber="128"> <code class="ruby"> until regexp_string[@current_position] == &#39;]&#39; \</code> </li> - <li class="covered" data-hits="14" data-linenumber="124"> + <li class="covered" data-hits="14" data-linenumber="129"> <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="125"> + <li class="never" data-hits="" data-linenumber="130"> <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="126"> + <li class="never" data-hits="" data-linenumber="131"> <code class="ruby"> # /[\]]/ (match &quot;]&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="127"> + <li class="never" data-hits="" data-linenumber="132"> <code class="ruby"> # /[\\]/ (match &quot;\&quot;)</code> </li> - <li class="never" data-hits="" data-linenumber="128"> + <li class="never" data-hits="" data-linenumber="133"> <code class="ruby"> # /[\\\]]/ (match &quot;\&quot; or &quot;]&quot;)</code> </li> - <li class="covered" data-hits="41" data-linenumber="129"> + <li class="covered" data-hits="41" data-linenumber="134"> <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="130"> + <li class="covered" data-hits="41" data-linenumber="135"> <span class="hits">41</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="never" data-hits="" data-linenumber="131"> + <li class="never" data-hits="" data-linenumber="136"> <code class="ruby"> end</code> </li> - <li class="covered" data-hits="14" data-linenumber="132"> + <li class="covered" data-hits="14" data-linenumber="137"> <span class="hits">14</span> <code class="ruby"> CharGroup.new(chars)</code> </li> - <li class="never" data-hits="" data-linenumber="133"> + <li class="never" data-hits="" data-linenumber="138"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="134"> + <li class="never" data-hits="" data-linenumber="139"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="135"> + <li class="covered" data-hits="1" data-linenumber="140"> <span class="hits">1</span> <code class="ruby"> def parse_dot_group</code> </li> - <li class="covered" data-hits="1" data-linenumber="136"> + <li class="covered" data-hits="1" data-linenumber="141"> <span class="hits">1</span> <code class="ruby"> DotGroup.new</code> </li> - <li class="never" data-hits="" data-linenumber="137"> + <li class="never" data-hits="" data-linenumber="142"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="138"> + <li class="never" data-hits="" data-linenumber="143"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="139"> + <li class="covered" data-hits="1" data-linenumber="144"> <span class="hits">1</span> <code class="ruby"> def parse_or_group(left_repeaters)</code> </li> - <li class="covered" data-hits="6" data-linenumber="140"> + <li class="covered" data-hits="6" data-linenumber="145"> <span class="hits">6</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="covered" data-hits="6" data-linenumber="141"> + <li class="covered" data-hits="6" data-linenumber="146"> <span class="hits">6</span> <code class="ruby"> right_repeaters = parse</code> </li> - <li class="covered" data-hits="6" data-linenumber="142"> + <li class="covered" data-hits="6" data-linenumber="147"> <span class="hits">6</span> <code class="ruby"> OrGroup.new(left_repeaters, right_repeaters)</code> </li> - <li class="never" data-hits="" data-linenumber="143"> + <li class="never" data-hits="" data-linenumber="148"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="144"> + <li class="never" data-hits="" data-linenumber="149"> <code class="ruby"></code> </li> - <li class="never" data-hits="" data-linenumber="145"> + <li class="never" data-hits="" data-linenumber="150"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="146"> + <li class="covered" data-hits="1" data-linenumber="151"> <span class="hits">1</span> <code class="ruby"> def parse_single_char_group(char)</code> </li> - <li class="covered" data-hits="182" data-linenumber="147"> - <span class="hits">182</span> + <li class="covered" data-hits="194" data-linenumber="152"> + <span class="hits">194</span> <code class="ruby"> SingleCharGroup.new(char)</code> </li> - <li class="never" data-hits="" data-linenumber="148"> + <li class="never" data-hits="" data-linenumber="153"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="149"> + <li class="never" data-hits="" data-linenumber="154"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="150"> + <li class="covered" data-hits="1" data-linenumber="155"> <span class="hits">1</span> <code class="ruby"> def parse_backreference_group(match)</code> </li> - <li class="covered" data-hits="20" data-linenumber="151"> + <li class="covered" data-hits="20" data-linenumber="156"> <span class="hits">20</span> <code class="ruby"> BackReferenceGroup.new(match)</code> </li> - <li class="never" data-hits="" data-linenumber="152"> + <li class="never" data-hits="" data-linenumber="157"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="153"> + <li class="never" data-hits="" data-linenumber="158"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="154"> + <li class="covered" data-hits="1" data-linenumber="159"> <span class="hits">1</span> <code class="ruby"> def parse_control_character(char)</code> </li> - <li class="never" data-hits="" data-linenumber="155"> + <li class="covered" data-hits="8" data-linenumber="160"> + <span class="hits">8</span> + <code class="ruby"> (char.ord % 32).chr # Black magic!</code> + </li> + + <li class="never" data-hits="" data-linenumber="161"> - <code class="ruby"> # TODO: Is there a better way of doing this? I.e. not just brute-force</code> + + <code class="ruby"> # eval &quot;?\\C-#{char.chr}&quot; # Doesn&#39;t work for e.g. char = &quot;?&quot;</code> </li> - <li class="covered" data-hits="125" data-linenumber="156"> - <span class="hits">125</span> + <li class="never" data-hits="" data-linenumber="162"> - <code class="ruby"> (0..255).detect { |x| x.chr =~ Regexp.new(&quot;\\c#{char}&quot;) }.chr</code> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="157"> + <li class="never" data-hits="" data-linenumber="163"> + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="164"> + <span class="hits">1</span> + + <code class="ruby"> def parse_escape_sequence(match)</code> + </li> + + <li class="covered" data-hits="3" data-linenumber="165"> + <span class="hits">3</span> + + <code class="ruby"> eval &quot;?\\x#{match}&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="166"> + + <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="158"> + <li class="never" data-hits="" data-linenumber="167"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="159"> + <li class="covered" data-hits="1" data-linenumber="168"> <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> + + <code class="ruby"> eval &quot;?\\u#{match}&quot;</code> + </li> + + <li class="never" data-hits="" data-linenumber="170"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="171"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="172"> + <span class="hits">1</span> + <code class="ruby"> def parse_star_repeater(group)</code> </li> - <li class="covered" data-hits="5" data-linenumber="160"> + <li class="covered" data-hits="5" data-linenumber="173"> <span class="hits">5</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="covered" data-hits="5" data-linenumber="161"> + <li class="covered" data-hits="5" data-linenumber="174"> <span class="hits">5</span> <code class="ruby"> StarRepeater.new(group)</code> </li> - <li class="never" data-hits="" data-linenumber="162"> + <li class="never" data-hits="" data-linenumber="175"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="163"> + <li class="never" data-hits="" data-linenumber="176"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="164"> + <li class="covered" data-hits="1" data-linenumber="177"> <span class="hits">1</span> <code class="ruby"> def parse_plus_repeater(group)</code> </li> - <li class="covered" data-hits="4" data-linenumber="165"> + <li class="covered" data-hits="4" data-linenumber="178"> <span class="hits">4</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="covered" data-hits="4" data-linenumber="166"> + <li class="covered" data-hits="4" data-linenumber="179"> <span class="hits">4</span> <code class="ruby"> PlusRepeater.new(group)</code> </li> - <li class="never" data-hits="" data-linenumber="167"> + <li class="never" data-hits="" data-linenumber="180"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="168"> + <li class="never" data-hits="" data-linenumber="181"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="169"> + <li class="covered" data-hits="1" data-linenumber="182"> <span class="hits">1</span> <code class="ruby"> def parse_question_mark_repeater(group)</code> </li> - <li class="covered" data-hits="11" data-linenumber="170"> + <li class="covered" data-hits="11" data-linenumber="183"> <span class="hits">11</span> <code class="ruby"> @current_position += 1</code> </li> - <li class="covered" data-hits="11" data-linenumber="171"> + <li class="covered" data-hits="11" data-linenumber="184"> <span class="hits">11</span> <code class="ruby"> QuestionMarkRepeater.new(group)</code> </li> - <li class="never" data-hits="" data-linenumber="172"> + <li class="never" data-hits="" data-linenumber="185"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="173"> + <li class="never" data-hits="" data-linenumber="186"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="174"> + <li class="covered" data-hits="1" data-linenumber="187"> <span class="hits">1</span> <code class="ruby"> def parse_range_repeater(group)</code> </li> - <li class="covered" data-hits="5" data-linenumber="175"> + <li class="covered" data-hits="5" data-linenumber="188"> <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="176"> + <li class="covered" data-hits="5" data-linenumber="189"> <span class="hits">5</span> <code class="ruby"> @current_position += match[0].size</code> </li> - <li class="covered" data-hits="5" data-linenumber="177"> + <li class="covered" data-hits="5" data-linenumber="190"> <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="178"> + <li class="covered" data-hits="5" data-linenumber="191"> <span class="hits">5</span> <code class="ruby"> has_comma = !match[2].nil?</code> </li> - <li class="covered" data-hits="5" data-linenumber="179"> + <li class="covered" data-hits="5" data-linenumber="192"> <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="180"> + <li class="covered" data-hits="5" data-linenumber="193"> <span class="hits">5</span> <code class="ruby"> RangeRepeater.new(group, min, has_comma, max)</code> </li> - <li class="never" data-hits="" data-linenumber="181"> + <li class="never" data-hits="" data-linenumber="194"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="182"> + <li class="never" data-hits="" data-linenumber="195"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="183"> + <li class="covered" data-hits="1" data-linenumber="196"> <span class="hits">1</span> <code class="ruby"> def parse_one_time_repeater(group)</code> </li> - <li class="covered" data-hits="253" data-linenumber="184"> - <span class="hits">253</span> + <li class="covered" data-hits="265" data-linenumber="197"> + <span class="hits">265</span> <code class="ruby"> OneTimeRepeater.new(group)</code> </li> - <li class="never" data-hits="" data-linenumber="185"> + <li class="never" data-hits="" data-linenumber="198"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="186"> + <li class="never" data-hits="" data-linenumber="199"> <code class="ruby"></code> </li> - <li class="covered" data-hits="1" data-linenumber="187"> + <li class="covered" data-hits="1" data-linenumber="200"> <span class="hits">1</span> <code class="ruby"> def rest_of_string</code> </li> - <li class="covered" data-hits="123" data-linenumber="188"> - <span class="hits">123</span> + <li class="covered" data-hits="155" data-linenumber="201"> + <span class="hits">155</span> <code class="ruby"> regexp_string[@current_position..-1]</code> </li> - <li class="never" data-hits="" data-linenumber="189"> + <li class="never" data-hits="" data-linenumber="202"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="190"> + <li class="never" data-hits="" data-linenumber="203"> <code class="ruby"> end</code> </li> - <li class="never" data-hits="" data-linenumber="191"> + <li class="never" data-hits="" data-linenumber="204"> <code class="ruby">end</code> </li> - <li class="never" data-hits="" data-linenumber="192"> + <li class="never" data-hits="" data-linenumber="205"> <code class="ruby"></code> </li> </ol> </pre> </div> - <div class="source_table" id="0dc204f32cb2876d2238a2aae7dea86ad7f9e679"> + <div class="source_table" id="7f62a530f44ef896b613d357fee92d31ffb7ede8"> <div class="header"> <h3>lib/regexp-examples/regexp_extensions.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> <b>8</b> relevant lines. @@ -2920,12 +2998,12 @@ <span class="hits">1</span> <code class="ruby"> def examples</code> </li> - <li class="covered" data-hits="65" data-linenumber="4"> - <span class="hits">65</span> + <li class="covered" data-hits="73" data-linenumber="4"> + <span class="hits">73</span> <code class="ruby"> partial_examples =</code> </li> <li class="never" data-hits="" data-linenumber="5"> @@ -2938,24 +3016,24 @@ <code class="ruby"> .parse</code> </li> - <li class="covered" data-hits="121" data-linenumber="7"> - <span class="hits">121</span> + <li class="covered" data-hits="133" data-linenumber="7"> + <span class="hits">133</span> <code class="ruby"> .map {|repeater| repeater.result}</code> </li> - <li class="covered" data-hits="61" data-linenumber="8"> - <span class="hits">61</span> + <li class="covered" data-hits="69" data-linenumber="8"> + <span class="hits">69</span> <code class="ruby"> full_examples = RegexpExamples::permutations_of_strings(partial_examples)</code> </li> - <li class="covered" data-hits="61" data-linenumber="9"> - <span class="hits">61</span> + <li class="covered" data-hits="69" data-linenumber="9"> + <span class="hits">69</span> <code class="ruby"> RegexpExamples::BackReferenceReplacer.new.substitute_backreferences(full_examples)</code> </li> <li class="never" data-hits="" data-linenumber="10"> @@ -2990,11 +3068,11 @@ </ol> </pre> </div> - <div class="source_table" id="430477f0c86b2d77a18fe51e32b818d48ab7e74b"> + <div class="source_table" id="0688fc9c3b085e9a6444775c61767c9c5742fb69"> <div class="header"> <h3>lib/regexp-examples/repeaters.rb</h3> <h4><span class="green">100.0 %</span> covered</h4> <div> <b>43</b> relevant lines. @@ -3028,12 +3106,12 @@ <span class="hits">1</span> <code class="ruby"> def initialize(group)</code> </li> - <li class="covered" data-hits="278" data-linenumber="5"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="5"> + <span class="hits">290</span> <code class="ruby"> @group = group</code> </li> <li class="never" data-hits="" data-linenumber="6"> @@ -3052,36 +3130,36 @@ <span class="hits">1</span> <code class="ruby"> def result(min_repeats, max_repeats)</code> </li> - <li class="covered" data-hits="278" data-linenumber="9"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="9"> + <span class="hits">290</span> <code class="ruby"> group_results = @group.result[0 .. MaxGroupResults-1]</code> </li> - <li class="covered" data-hits="278" data-linenumber="10"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="10"> + <span class="hits">290</span> <code class="ruby"> results = []</code> </li> - <li class="covered" data-hits="278" data-linenumber="11"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="11"> + <span class="hits">290</span> <code class="ruby"> min_repeats.upto(max_repeats) do |repeats|</code> </li> - <li class="covered" data-hits="308" data-linenumber="12"> - <span class="hits">308</span> + <li class="covered" data-hits="320" data-linenumber="12"> + <span class="hits">320</span> <code class="ruby"> group_results.each do |group_result|</code> </li> - <li class="covered" data-hits="422" data-linenumber="13"> - <span class="hits">422</span> + <li class="covered" data-hits="434" data-linenumber="13"> + <span class="hits">434</span> <code class="ruby"> results &lt;&lt; group_result * repeats</code> </li> <li class="never" data-hits="" data-linenumber="14"> @@ -3094,12 +3172,12 @@ <code class="ruby"> end</code> </li> - <li class="covered" data-hits="278" data-linenumber="16"> - <span class="hits">278</span> + <li class="covered" data-hits="290" data-linenumber="16"> + <span class="hits">290</span> <code class="ruby"> results.uniq</code> </li> <li class="never" data-hits="" data-linenumber="17"> @@ -3130,12 +3208,12 @@ <span class="hits">1</span> <code class="ruby"> def initialize(group)</code> </li> - <li class="covered" data-hits="253" data-linenumber="22"> - <span class="hits">253</span> + <li class="covered" data-hits="265" data-linenumber="22"> + <span class="hits">265</span> <code class="ruby"> super</code> </li> <li class="never" data-hits="" data-linenumber="23"> @@ -3154,12 +3232,12 @@ <span class="hits">1</span> <code class="ruby"> def result</code> </li> - <li class="covered" data-hits="253" data-linenumber="26"> - <span class="hits">253</span> + <li class="covered" data-hits="265" data-linenumber="26"> + <span class="hits">265</span> <code class="ruby"> super(1, 1)</code> </li> <li class="never" data-hits="" data-linenumber="27"> @@ -3476,17 +3554,17 @@ </ol> </pre> </div> - <div class="source_table" id="73ece59f571550448cda013ec330081f40e82321"> + <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>30</b> relevant lines. - <span class="green"><b>30</b> lines covered</span> and + <b>34</b> relevant lines. + <span class="green"><b>34</b> lines covered</span> and <span class="red"><b>0</b> lines missed.</span> </div> </div> <pre> @@ -3502,36 +3580,36 @@ <span class="hits">1</span> <code class="ruby"> def self.examples_exist_and_match(*regexps)</code> </li> - <li class="covered" data-hits="8" data-linenumber="3"> - <span class="hits">8</span> + <li class="covered" data-hits="10" data-linenumber="3"> + <span class="hits">10</span> <code class="ruby"> regexps.each do |regexp|</code> </li> - <li class="covered" data-hits="61" data-linenumber="4"> - <span class="hits">61</span> + <li class="covered" data-hits="69" data-linenumber="4"> + <span class="hits">69</span> <code class="ruby"> it do</code> </li> - <li class="covered" data-hits="61" data-linenumber="5"> - <span class="hits">61</span> + <li class="covered" data-hits="69" data-linenumber="5"> + <span class="hits">69</span> <code class="ruby"> regexp_examples = regexp.examples</code> </li> - <li class="covered" data-hits="61" data-linenumber="6"> - <span class="hits">61</span> + <li class="covered" data-hits="69" data-linenumber="6"> + <span class="hits">69</span> <code class="ruby"> expect(regexp_examples).not_to be_empty</code> </li> - <li class="covered" data-hits="218" data-linenumber="7"> - <span class="hits">218</span> + <li class="covered" data-hits="234" data-linenumber="7"> + <span class="hits">234</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"> @@ -4279,31 +4357,145 @@ </li> <li class="never" data-hits="" data-linenumber="132"> - <code class="ruby"> /\c?/</code> + <code class="ruby"> /\c?/,</code> </li> <li class="never" data-hits="" data-linenumber="133"> - <code class="ruby"> )</code> + <code class="ruby"> /\C-a/,</code> </li> <li class="never" data-hits="" data-linenumber="134"> - <code class="ruby"> end</code> + <code class="ruby"> /\C-&amp;/</code> </li> <li class="never" data-hits="" data-linenumber="135"> - <code class="ruby"> end</code> + <code class="ruby"> )</code> </li> <li class="never" data-hits="" data-linenumber="136"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="137"> + + + <code class="ruby"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="138"> + <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"> + <span class="hits">1</span> + + <code class="ruby"> examples_exist_and_match(</code> + </li> + + <li class="never" data-hits="" data-linenumber="140"> + + + <code class="ruby"> /\x42/,</code> + </li> + + <li class="never" data-hits="" data-linenumber="141"> + + + <code class="ruby"> /\x1D/,</code> + </li> + + <li class="never" data-hits="" data-linenumber="142"> + + + <code class="ruby"> /\x3word/,</code> + </li> + + <li class="never" data-hits="" data-linenumber="143"> + + + <code class="ruby"> /#{&quot;\x80&quot;.force_encoding(&quot;ASCII-8BIT&quot;)}/</code> + </li> + + <li class="never" data-hits="" data-linenumber="144"> + + + <code class="ruby"> )</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"></code> + </li> + + <li class="covered" data-hits="1" data-linenumber="147"> + <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"> + <span class="hits">1</span> + + <code class="ruby"> examples_exist_and_match(</code> + </li> + + <li class="never" data-hits="" data-linenumber="149"> + + + <code class="ruby"> /\u6829/,</code> + </li> + + <li class="never" data-hits="" data-linenumber="150"> + + + <code class="ruby"> /\uabcd/</code> + </li> + + <li class="never" data-hits="" data-linenumber="151"> + + + <code class="ruby"> )</code> + </li> + + <li class="never" data-hits="" data-linenumber="152"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="153"> + + + <code class="ruby"></code> + </li> + + <li class="never" data-hits="" data-linenumber="154"> + + + <code class="ruby"> end</code> + </li> + + <li class="never" data-hits="" data-linenumber="155"> <code class="ruby">end</code> </li>