summaryrefslogtreecommitdiff
path: root/LCS
diff options
context:
space:
mode:
Diffstat (limited to 'LCS')
-rw-r--r--LCS/Block.html240
-rw-r--r--LCS/Change.html500
-rw-r--r--LCS/ContextChange.html353
-rw-r--r--LCS/ContextDiffCallbacks.html255
-rw-r--r--LCS/DefaultCallbacks.html207
-rw-r--r--LCS/DiffCallbacks.html305
-rw-r--r--LCS/HTMLDiff.html231
-rw-r--r--LCS/Hunk.html397
-rw-r--r--LCS/SDiffCallbacks.html312
9 files changed, 2800 insertions, 0 deletions
diff --git a/LCS/Block.html b/LCS/Block.html
new file mode 100644
index 0000000..b786ef6
--- /dev/null
+++ b/LCS/Block.html
@@ -0,0 +1,240 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::Block - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Object
+</div>
+
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-c-new">::new</a>
+ <li ><a href="#method-i-diff_size">#diff_size</a>
+ <li ><a href="#method-i-op">#op</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::Block">
+ <h1 id="class-LCS::Block" class="class">
+ class LCS::Block
+ </h1>
+
+ <section class="description">
+
+<p>A block is an operation removing, adding, or changing a group of items. Basically, this is just a list of changes, where each change adds or deletes a single item. Used by bin/ldiff.</p>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+
+ <section class="attribute-method-details" class="method-section">
+ <header>
+ <h3>Attributes</h3>
+ </header>
+
+ <div id="attribute-i-changes" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">changes</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ <div id="attribute-i-insert" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">insert</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ <div id="attribute-i-remove" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">remove</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ </section>
+
+
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Class Methods</h3>
+ </header>
+
+ <div id="method-c-new" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">new</span><span
+ class="method-args">(chunk)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="new-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/block.rb, line 9</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">chunk</span>)
+ <span class="ruby-ivar">@changes</span> = []
+ <span class="ruby-ivar">@insert</span> = []
+ <span class="ruby-ivar">@remove</span> = []
+
+ <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
+ <span class="ruby-ivar">@changes</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">item</span>
+ <span class="ruby-ivar">@remove</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">item</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">deleting?</span>
+ <span class="ruby-ivar">@insert</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">item</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">adding?</span>
+ <span class="ruby-keyword">end</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Instance Methods</h3>
+ </header>
+
+ <div id="method-i-diff_size" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">diff_size</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="diff_size-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/block.rb, line 21</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">diff_size</span>
+ <span class="ruby-ivar">@insert</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@remove</span>.<span class="ruby-identifier">size</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-op" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">op</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="op-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/block.rb, line 25</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">op</span>
+ <span class="ruby-keyword">case</span> [<span class="ruby-ivar">@remove</span>.<span class="ruby-identifier">empty?</span>, <span class="ruby-ivar">@insert</span>.<span class="ruby-identifier">empty?</span>]
+ <span class="ruby-keyword">when</span> [<span class="ruby-keyword">false</span>, <span class="ruby-keyword">false</span>]
+ <span class="ruby-string">&#39;!&#39;</span>
+ <span class="ruby-keyword">when</span> [<span class="ruby-keyword">false</span>, <span class="ruby-keyword">true</span>]
+ <span class="ruby-string">&#39;-&#39;</span>
+ <span class="ruby-keyword">when</span> [<span class="ruby-keyword">true</span>, <span class="ruby-keyword">false</span>]
+ <span class="ruby-string">&#39;+&#39;</span>
+ <span class="ruby-keyword">else</span> <span class="ruby-comment"># [true, true]</span>
+ <span class="ruby-string">&#39;^&#39;</span>
+ <span class="ruby-keyword">end</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+
diff --git a/LCS/Change.html b/LCS/Change.html
new file mode 100644
index 0000000..c714eea
--- /dev/null
+++ b/LCS/Change.html
@@ -0,0 +1,500 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::Change - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Object
+</div>
+
+
+<div id="includes-section" class="nav-section">
+ <h3>Included Modules</h3>
+
+ <ul class="link-list">
+ <li><span class="include">Comparable</span>
+ </ul>
+</div>
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-c-from_a">::from_a</a>
+ <li ><a href="#method-c-new">::new</a>
+ <li ><a href="#method-c-valid_action-3F">::valid_action?</a>
+ <li ><a href="#method-i-3C-3D-3E">#&lt;=&gt;</a>
+ <li ><a href="#method-i-3D-3D">#==</a>
+ <li ><a href="#method-i-adding-3F">#adding?</a>
+ <li ><a href="#method-i-changed-3F">#changed?</a>
+ <li ><a href="#method-i-deleting-3F">#deleting?</a>
+ <li ><a href="#method-i-finished_a-3F">#finished_a?</a>
+ <li ><a href="#method-i-finished_b-3F">#finished_b?</a>
+ <li ><a href="#method-i-inspect">#inspect</a>
+ <li ><a href="#method-i-to_a">#to_a</a>
+ <li ><a href="#method-i-to_ary">#to_ary</a>
+ <li ><a href="#method-i-unchanged-3F">#unchanged?</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::Change">
+ <h1 id="class-LCS::Change" class="class">
+ class LCS::Change
+ </h1>
+
+ <section class="description">
+
+<p>Represents a simplistic (non-contextual) change. Represents the removal or addition of an element from either the old or the new sequenced enumerable.</p>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+ <section class="constants-list">
+ <header>
+ <h3>Constants</h3>
+ </header>
+ <dl>
+ <dt id="IntClass">IntClass
+ <dd>
+ <dt id="VALID_ACTIONS">VALID_ACTIONS
+ <dd><p>The only actions valid for changes are &#39;+&#39; (add), &#39;-&#39; (delete), &#39;=&#39; (no change), &#39;!&#39; (changed), &#39;&lt;&#39; (tail changes from first sequence), or &#39;&gt;&#39; (tail changes from second sequence). The last two (&#39;&lt;&gt;&#39;) are only found with <a href="../LCS.html#method-c-diff"><code>Diff::LCS::diff</code></a> and <a href="../LCS.html#method-c-sdiff"><code>Diff::LCS::sdiff</code></a>.</p>
+ </dl>
+ </section>
+
+ <section class="attribute-method-details" class="method-section">
+ <header>
+ <h3>Attributes</h3>
+ </header>
+
+ <div id="attribute-i-action" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">action</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the action this <a href="Change.html"><code>Change</code></a> represents.</p>
+ </div>
+ </div>
+ <div id="attribute-i-element" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">element</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the sequence element of the <a href="Change.html"><code>Change</code></a>.</p>
+ </div>
+ </div>
+ <div id="attribute-i-position" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">position</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the position of the <a href="Change.html"><code>Change</code></a>.</p>
+ </div>
+ </div>
+ </section>
+
+
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Class Methods</h3>
+ </header>
+
+ <div id="method-c-from_a" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">from_a</span><span
+ class="method-args">(arr)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="from_a-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 44</span>
+<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">from_a</span>(<span class="ruby-identifier">arr</span>)
+ <span class="ruby-identifier">arr</span> = <span class="ruby-identifier">arr</span>.<span class="ruby-identifier">flatten</span>(<span class="ruby-value">1</span>)
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">arr</span>.<span class="ruby-identifier">size</span>
+ <span class="ruby-keyword">when</span> <span class="ruby-value">5</span>
+ <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span>(<span class="ruby-identifier">arr</span>[<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-value">5</span>]))
+ <span class="ruby-keyword">when</span> <span class="ruby-value">3</span>
+ <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">Change</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span>(<span class="ruby-identifier">arr</span>[<span class="ruby-value">0</span><span class="ruby-operator">...</span><span class="ruby-value">3</span>]))
+ <span class="ruby-keyword">else</span>
+ <span class="ruby-identifier">fail</span> <span class="ruby-string">&#39;Invalid change array format provided.&#39;</span>
+ <span class="ruby-keyword">end</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-c-new" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">new</span><span
+ class="method-args">(*args)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="new-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 27</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
+ <span class="ruby-ivar">@action</span>, <span class="ruby-ivar">@position</span>, <span class="ruby-ivar">@element</span> = <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>
+
+ <span class="ruby-identifier">fail</span> <span class="ruby-node">&quot;Invalid Change Action &#39;#{@action}&#39;&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">Change</span>.<span class="ruby-identifier">valid_action?</span>(<span class="ruby-ivar">@action</span>)
+ <span class="ruby-identifier">fail</span> <span class="ruby-string">&#39;Invalid Position Type&#39;</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@position</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">IntClass</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-c-valid_action-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">valid_action?</span><span
+ class="method-args">(action)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="valid_action-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 15</span>
+<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">valid_action?</span>(<span class="ruby-identifier">action</span>)
+ <span class="ruby-constant">VALID_ACTIONS</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">action</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Instance Methods</h3>
+ </header>
+
+ <div id="method-i-3C-3D-3E" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">&lt;=&gt;</span><span
+ class="method-args">(other)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="3C-3D-3E-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 65</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">&lt;=&gt;</span>(<span class="ruby-identifier">other</span>)
+ <span class="ruby-identifier">r</span> = <span class="ruby-identifier">action</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">action</span>
+ <span class="ruby-identifier">r</span> = <span class="ruby-identifier">position</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">position</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">zero?</span>
+ <span class="ruby-identifier">r</span> = <span class="ruby-identifier">element</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">element</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">zero?</span>
+ <span class="ruby-identifier">r</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-3D-3D" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">==</span><span
+ class="method-args">(other)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="3D-3D-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 58</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">==</span>(<span class="ruby-identifier">other</span>)
+ (<span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">class</span>) <span class="ruby-keyword">and</span>
+ (<span class="ruby-identifier">action</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">action</span>) <span class="ruby-keyword">and</span>
+ (<span class="ruby-identifier">position</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">position</span>) <span class="ruby-keyword">and</span>
+ (<span class="ruby-identifier">element</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">element</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-adding-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">adding?</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="adding-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 72</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">adding?</span>
+ <span class="ruby-ivar">@action</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;+&#39;</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-changed-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">changed?</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="changed-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 84</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">changed?</span>
+ <span class="ruby-ivar">@action</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;!&#39;</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-deleting-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">deleting?</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="deleting-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 76</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">deleting?</span>
+ <span class="ruby-ivar">@action</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;-&#39;</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-finished_a-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">finished_a?</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="finished_a-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 88</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">finished_a?</span>
+ <span class="ruby-ivar">@action</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;&gt;&#39;</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-finished_b-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">finished_b?</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="finished_b-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 92</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">finished_b?</span>
+ <span class="ruby-ivar">@action</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;&lt;&#39;</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-inspect" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">inspect</span><span
+ class="method-args">(*_args)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="inspect-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 34</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">_args</span>)
+ <span class="ruby-node">&quot;#&lt;#{self.class}: #{to_a.inspect}&gt;&quot;</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-to_a" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">to_a</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="to_a-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 38</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_a</span>
+ [<span class="ruby-ivar">@action</span>, <span class="ruby-ivar">@position</span>, <span class="ruby-ivar">@element</span>]
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+ <div class="aliases">
+ Also aliased as: <a href="Change.html#method-i-to_ary">to_ary</a>
+ </div>
+
+ </div>
+
+ <div id="method-i-to_ary" class="method-detail method-alias">
+ <div class="method-heading">
+ <span class="method-name">to_ary</span><span
+ class="method-args">()</span>
+ </div>
+
+ <div class="method-description">
+
+
+ </div>
+
+
+ <div class="aliases">
+ Alias for: <a href="Change.html#method-i-to_a">to_a</a>
+ </div>
+ </div>
+
+ <div id="method-i-unchanged-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">unchanged?</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="unchanged-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 80</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">unchanged?</span>
+ <span class="ruby-ivar">@action</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;=&#39;</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+
diff --git a/LCS/ContextChange.html b/LCS/ContextChange.html
new file mode 100644
index 0000000..b9b279c
--- /dev/null
+++ b/LCS/ContextChange.html
@@ -0,0 +1,353 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::ContextChange - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Diff::LCS::Change
+</div>
+
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-c-from_a">::from_a</a>
+ <li ><a href="#method-c-new">::new</a>
+ <li ><a href="#method-c-simplify">::simplify</a>
+ <li ><a href="#method-i-3C-3D-3E">#&lt;=&gt;</a>
+ <li ><a href="#method-i-3D-3D">#==</a>
+ <li ><a href="#method-i-to_a">#to_a</a>
+ <li ><a href="#method-i-to_ary">#to_ary</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::ContextChange">
+ <h1 id="class-LCS::ContextChange" class="class">
+ class LCS::ContextChange
+ </h1>
+
+ <section class="description">
+
+<p>Represents a contextual change. Contains the position and values of the elements in the old and the new sequenced enumerables as well as the action taken.</p>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+
+ <section class="attribute-method-details" class="method-section">
+ <header>
+ <h3>Attributes</h3>
+ </header>
+
+ <div id="attribute-i-new_element" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">new_element</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the new element being changed.</p>
+ </div>
+ </div>
+ <div id="attribute-i-new_position" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">new_position</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the new position being changed.</p>
+ </div>
+ </div>
+ <div id="attribute-i-old_element" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">old_element</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the old element being changed.</p>
+ </div>
+ </div>
+ <div id="attribute-i-old_position" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">old_position</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the old position being changed.</p>
+ </div>
+ </div>
+ </section>
+
+
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Class Methods</h3>
+ </header>
+
+ <div id="method-c-from_a" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">from_a</span><span
+ class="method-args">(arr)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="from_a-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 132</span>
+<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">from_a</span>(<span class="ruby-identifier">arr</span>)
+ <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">Change</span>.<span class="ruby-identifier">from_a</span>(<span class="ruby-identifier">arr</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-c-new" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">new</span><span
+ class="method-args">(*args)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="new-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 114</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
+ <span class="ruby-ivar">@action</span>, <span class="ruby-ivar">@old_position</span>, <span class="ruby-ivar">@old_element</span>, <span class="ruby-ivar">@new_position</span>, <span class="ruby-ivar">@new_element</span> = <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>
+
+ <span class="ruby-identifier">fail</span> <span class="ruby-node">&quot;Invalid Change Action &#39;#{@action}&#39;&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">Change</span>.<span class="ruby-identifier">valid_action?</span>(<span class="ruby-ivar">@action</span>)
+ <span class="ruby-identifier">fail</span> <span class="ruby-string">&#39;Invalid (Old) Position Type&#39;</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@old_position</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword">or</span> <span class="ruby-ivar">@old_position</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">IntClass</span>
+ <span class="ruby-identifier">fail</span> <span class="ruby-string">&#39;Invalid (New) Position Type&#39;</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@new_position</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword">or</span> <span class="ruby-ivar">@new_position</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">IntClass</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-c-simplify" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">simplify</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Simplifies a context change for use in some diff callbacks. &#39;&lt;&#39; actions are converted to &#39;-&#39; and &#39;&gt;&#39; actions are converted to &#39;+&#39;.</p>
+
+ <div class="method-source-code" id="simplify-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 138</span>
+<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">simplify</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-identifier">ea</span> = <span class="ruby-identifier">event</span>.<span class="ruby-identifier">to_a</span>
+
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">ea</span>[<span class="ruby-value">0</span>]
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;-&#39;</span>
+ <span class="ruby-identifier">ea</span>[<span class="ruby-value">2</span>][<span class="ruby-value">1</span>] = <span class="ruby-keyword">nil</span>
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;&lt;&#39;</span>
+ <span class="ruby-identifier">ea</span>[<span class="ruby-value">0</span>] = <span class="ruby-string">&#39;-&#39;</span>
+ <span class="ruby-identifier">ea</span>[<span class="ruby-value">2</span>][<span class="ruby-value">1</span>] = <span class="ruby-keyword">nil</span>
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;+&#39;</span>
+ <span class="ruby-identifier">ea</span>[<span class="ruby-value">1</span>][<span class="ruby-value">1</span>] = <span class="ruby-keyword">nil</span>
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;&gt;&#39;</span>
+ <span class="ruby-identifier">ea</span>[<span class="ruby-value">0</span>] = <span class="ruby-string">&#39;+&#39;</span>
+ <span class="ruby-identifier">ea</span>[<span class="ruby-value">1</span>][<span class="ruby-value">1</span>] = <span class="ruby-keyword">nil</span>
+ <span class="ruby-keyword">end</span>
+
+ <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">from_a</span>(<span class="ruby-identifier">ea</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Instance Methods</h3>
+ </header>
+
+ <div id="method-i-3C-3D-3E" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">&lt;=&gt;</span><span
+ class="method-args">(other)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="3C-3D-3E-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 166</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">&lt;=&gt;</span>(<span class="ruby-identifier">other</span>)
+ <span class="ruby-identifier">r</span> = <span class="ruby-ivar">@action</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">action</span>
+ <span class="ruby-identifier">r</span> = <span class="ruby-ivar">@old_position</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">old_position</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">zero?</span>
+ <span class="ruby-identifier">r</span> = <span class="ruby-ivar">@new_position</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">new_position</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">zero?</span>
+ <span class="ruby-identifier">r</span> = <span class="ruby-ivar">@old_element</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">old_element</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">zero?</span>
+ <span class="ruby-identifier">r</span> = <span class="ruby-ivar">@new_element</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">new_element</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">zero?</span>
+ <span class="ruby-identifier">r</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-3D-3D" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">==</span><span
+ class="method-args">(other)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="3D-3D-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 157</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">==</span>(<span class="ruby-identifier">other</span>)
+ (<span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">class</span>) <span class="ruby-keyword">and</span>
+ (<span class="ruby-ivar">@action</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">action</span>) <span class="ruby-keyword">and</span>
+ (<span class="ruby-ivar">@old_position</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">old_position</span>) <span class="ruby-keyword">and</span>
+ (<span class="ruby-ivar">@new_position</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">new_position</span>) <span class="ruby-keyword">and</span>
+ (<span class="ruby-ivar">@old_element</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">old_element</span>) <span class="ruby-keyword">and</span>
+ (<span class="ruby-ivar">@new_element</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">new_element</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-to_a" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">to_a</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="to_a-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/change.rb, line 122</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_a</span>
+ [
+ <span class="ruby-ivar">@action</span>,
+ [<span class="ruby-ivar">@old_position</span>, <span class="ruby-ivar">@old_element</span>],
+ [<span class="ruby-ivar">@new_position</span>, <span class="ruby-ivar">@new_element</span>]
+ ]
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+ <div class="aliases">
+ Also aliased as: <a href="ContextChange.html#method-i-to_ary">to_ary</a>
+ </div>
+
+ </div>
+
+ <div id="method-i-to_ary" class="method-detail method-alias">
+ <div class="method-heading">
+ <span class="method-name">to_ary</span><span
+ class="method-args">()</span>
+ </div>
+
+ <div class="method-description">
+
+
+ </div>
+
+
+ <div class="aliases">
+ Alias for: <a href="ContextChange.html#method-i-to_a">to_a</a>
+ </div>
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+
diff --git a/LCS/ContextDiffCallbacks.html b/LCS/ContextDiffCallbacks.html
new file mode 100644
index 0000000..2a1345b
--- /dev/null
+++ b/LCS/ContextDiffCallbacks.html
@@ -0,0 +1,255 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::ContextDiffCallbacks - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+<div class="nav-section">
+ <h3>Table of Contents</h3>
+
+ <ul class="link-list" role="directory">
+ <li><a href="#class-LCS::ContextDiffCallbacks-label-Use">Use</a>
+ <li><a href="#class-LCS::ContextDiffCallbacks-label-Simplified+Array+Format">Simplified Array Format</a>
+ </ul>
+</div>
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Diff::LCS::DiffCallbacks
+</div>
+
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-i-change">#change</a>
+ <li ><a href="#method-i-discard_a">#discard_a</a>
+ <li ><a href="#method-i-discard_b">#discard_b</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::ContextDiffCallbacks">
+ <h1 id="class-LCS::ContextDiffCallbacks" class="class">
+ class LCS::ContextDiffCallbacks
+ </h1>
+
+ <section class="description">
+
+<p>This will produce a compound array of contextual diff change objects. Each element in the diffs array is a “hunk” array, where each element in each “hunk” array is a single change. Each change is a Diff::LCS::ContextChange that contains both the old index and new index values for the change. The “hunk” provides the full context for the changes. Both old and new objects will be presented for changed objects. <code>nil</code> will be substituted for a discarded object.</p>
+
+<pre class="ruby"><span class="ruby-identifier">seq1</span> = <span class="ruby-node">%w(a b c e h j l m n p)</span>
+<span class="ruby-identifier">seq2</span> = <span class="ruby-node">%w(b c d e f j k l m r s t)</span>
+
+<span class="ruby-identifier">diffs</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-identifier">diff</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextDiffCallbacks</span>)
+ <span class="ruby-comment"># This example shows a simplified array format.</span>
+ <span class="ruby-comment"># [ [ [ &#39;-&#39;, [ 0, &#39;a&#39; ], [ 0, nil ] ] ], # 1</span>
+ <span class="ruby-comment"># [ [ &#39;+&#39;, [ 3, nil ], [ 2, &#39;d&#39; ] ] ], # 2</span>
+ <span class="ruby-comment"># [ [ &#39;-&#39;, [ 4, &#39;h&#39; ], [ 4, nil ] ], # 3</span>
+ <span class="ruby-comment"># [ &#39;+&#39;, [ 5, nil ], [ 4, &#39;f&#39; ] ] ],</span>
+ <span class="ruby-comment"># [ [ &#39;+&#39;, [ 6, nil ], [ 6, &#39;k&#39; ] ] ], # 4</span>
+ <span class="ruby-comment"># [ [ &#39;-&#39;, [ 8, &#39;n&#39; ], [ 9, nil ] ], # 5</span>
+ <span class="ruby-comment"># [ &#39;+&#39;, [ 9, nil ], [ 9, &#39;r&#39; ] ],</span>
+ <span class="ruby-comment"># [ &#39;-&#39;, [ 9, &#39;p&#39; ], [ 10, nil ] ],</span>
+ <span class="ruby-comment"># [ &#39;+&#39;, [ 10, nil ], [ 10, &#39;s&#39; ] ],</span>
+ <span class="ruby-comment"># [ &#39;+&#39;, [ 10, nil ], [ 11, &#39;t&#39; ] ] ] ]</span>
+</pre>
+
+<p>The five hunks shown are comprised of individual changes; if there is a related set of changes, they are still shown individually.</p>
+
+<p>This callback can also be used with <a href="../LCS.html#method-i-sdiff"><code>Diff::LCS#sdiff</code></a>, which will produce results like:</p>
+
+<pre class="ruby"><span class="ruby-identifier">diffs</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-identifier">sdiff</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextCallbacks</span>)
+ <span class="ruby-comment"># This example shows a simplified array format.</span>
+ <span class="ruby-comment"># [ [ [ &quot;-&quot;, [ 0, &quot;a&quot; ], [ 0, nil ] ] ], # 1</span>
+ <span class="ruby-comment"># [ [ &quot;+&quot;, [ 3, nil ], [ 2, &quot;d&quot; ] ] ], # 2</span>
+ <span class="ruby-comment"># [ [ &quot;!&quot;, [ 4, &quot;h&quot; ], [ 4, &quot;f&quot; ] ] ], # 3</span>
+ <span class="ruby-comment"># [ [ &quot;+&quot;, [ 6, nil ], [ 6, &quot;k&quot; ] ] ], # 4</span>
+ <span class="ruby-comment"># [ [ &quot;!&quot;, [ 8, &quot;n&quot; ], [ 9, &quot;r&quot; ] ], # 5</span>
+ <span class="ruby-comment"># [ &quot;!&quot;, [ 9, &quot;p&quot; ], [ 10, &quot;s&quot; ] ],</span>
+ <span class="ruby-comment"># [ &quot;+&quot;, [ 10, nil ], [ 11, &quot;t&quot; ] ] ] ]</span>
+</pre>
+
+<p>The five hunks are still present, but are significantly shorter in total presentation, because changed items are shown as changes (“!”) instead of potentially “mismatched” pairs of additions and deletions.</p>
+
+<p>The result of this operation is similar to that of Diff::LCS::SDiffCallbacks. They may be compared as:</p>
+
+<pre class="ruby"><span class="ruby-identifier">s</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-identifier">sdiff</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>).<span class="ruby-identifier">reject</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">action</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;=&quot;</span> }
+<span class="ruby-identifier">c</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-identifier">sdiff</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextDiffCallbacks</span>).<span class="ruby-identifier">flatten</span>(<span class="ruby-value">1</span>)
+
+<span class="ruby-identifier">s</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">c</span> <span class="ruby-comment"># -&gt; true</span>
+</pre>
+
+<h3 id="class-LCS::ContextDiffCallbacks-label-Use">Use<span><a href="#class-LCS::ContextDiffCallbacks-label-Use">&para;</a> <a href="#top">&uarr;</a></span></h3>
+
+<p>This callback object must be initialised and can be used by the <a href="../LCS.html#method-i-diff"><code>Diff::LCS#diff</code></a> or <a href="../LCS.html#method-i-sdiff"><code>Diff::LCS#sdiff</code></a> methods.</p>
+
+<pre class="ruby"><span class="ruby-identifier">cbo</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextDiffCallbacks</span>.<span class="ruby-identifier">new</span>
+<span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-constant">LCS</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-identifier">cbo</span>)
+<span class="ruby-identifier">cbo</span>.<span class="ruby-identifier">finish</span>
+</pre>
+
+<p>Note that the call to finish is absolutely necessary, or the last set of changes will not be visible. Alternatively, can be used as:</p>
+
+<pre class="ruby"><span class="ruby-identifier">cbo</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextDiffCallbacks</span>.<span class="ruby-identifier">new</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">tcbo</span><span class="ruby-operator">|</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-constant">LCS</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-identifier">tcbo</span>) }
+</pre>
+
+<p>The necessary finish call will be made.</p>
+
+<h3 id="class-LCS::ContextDiffCallbacks-label-Simplified+Array+Format">Simplified <a href="../Array.html"><code>Array</code></a> Format<span><a href="#class-LCS::ContextDiffCallbacks-label-Simplified+Array+Format">&para;</a> <a href="#top">&uarr;</a></span></h3>
+
+<p>The simplified array format used in the example above can be obtained with:</p>
+
+<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;pp&#39;</span>
+<span class="ruby-identifier">pp</span> <span class="ruby-identifier">diffs</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">to_a</span> } }
+</pre>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+
+
+
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Instance Methods</h3>
+ </header>
+
+ <div id="method-i-change" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">change</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="change-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 232</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">change</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@hunk</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">simplify</span>(<span class="ruby-identifier">event</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-discard_a" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">discard_a</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="discard_a-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 224</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">discard_a</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@hunk</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">simplify</span>(<span class="ruby-identifier">event</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-discard_b" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">discard_b</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="discard_b-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 228</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">discard_b</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@hunk</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">simplify</span>(<span class="ruby-identifier">event</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+
diff --git a/LCS/DefaultCallbacks.html b/LCS/DefaultCallbacks.html
new file mode 100644
index 0000000..a63bb94
--- /dev/null
+++ b/LCS/DefaultCallbacks.html
@@ -0,0 +1,207 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::SequenceCallbacks - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Object
+</div>
+
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-c-change">::change</a>
+ <li ><a href="#method-c-discard_a">::discard_a</a>
+ <li ><a href="#method-c-discard_b">::discard_b</a>
+ <li ><a href="#method-c-match">::match</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::SequenceCallbacks">
+ <h1 id="class-LCS::SequenceCallbacks" class="class">
+ class LCS::SequenceCallbacks
+ </h1>
+
+ <section class="description">
+
+<p>This callback object implements the default set of callback events, which only returns the event itself. Note that finished_a and finished_b are not implemented – I haven&#39;t yet figured out where they would be useful.</p>
+
+<p>Note that this is intended to be called as is, e.g.,</p>
+
+<pre class="ruby"><span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-constant">LCS</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">DefaultCallbacks</span>)
+</pre>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+
+
+
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Class Methods</h3>
+ </header>
+
+ <div id="method-c-change" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">change</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Called when both the old and new values have changed.</p>
+
+ <div class="method-source-code" id="change-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 32</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">change</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-identifier">event</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-c-discard_a" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">discard_a</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Called when the old value is discarded in favour of the new value.</p>
+
+ <div class="method-source-code" id="discard_a-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 22</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">discard_a</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-identifier">event</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-c-discard_b" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">discard_b</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Called when the new value is discarded in favour of the old value.</p>
+
+ <div class="method-source-code" id="discard_b-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 27</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">discard_b</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-identifier">event</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-c-match" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">match</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Called when two items match.</p>
+
+ <div class="method-source-code" id="match-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 17</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">match</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-identifier">event</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+
diff --git a/LCS/DiffCallbacks.html b/LCS/DiffCallbacks.html
new file mode 100644
index 0000000..d82b399
--- /dev/null
+++ b/LCS/DiffCallbacks.html
@@ -0,0 +1,305 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::DiffCallbacks - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+<div class="nav-section">
+ <h3>Table of Contents</h3>
+
+ <ul class="link-list" role="directory">
+ <li><a href="#class-LCS::DiffCallbacks-label-Use">Use</a>
+ <li><a href="#class-LCS::DiffCallbacks-label-Simplified+Array+Format">Simplified Array Format</a>
+ </ul>
+</div>
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Object
+</div>
+
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-c-new">::new</a>
+ <li ><a href="#method-i-discard_a">#discard_a</a>
+ <li ><a href="#method-i-discard_b">#discard_b</a>
+ <li ><a href="#method-i-finish">#finish</a>
+ <li ><a href="#method-i-match">#match</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::DiffCallbacks">
+ <h1 id="class-LCS::DiffCallbacks" class="class">
+ class LCS::DiffCallbacks
+ </h1>
+
+ <section class="description">
+
+<p>This will produce a compound array of simple diff change objects. Each element in the <a href="DiffCallbacks.html#attribute-i-diffs"><code>diffs</code></a> array is a <code>hunk</code> or <code>hunk</code> array, where each element in each <code>hunk</code> array is a single Change object representing the addition or removal of a single element from one of the two tested sequences. The <code>hunk</code> provides the full context for the changes.</p>
+
+<pre class="ruby"><span class="ruby-identifier">diffs</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-identifier">diff</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>)
+ <span class="ruby-comment"># This example shows a simplified array format.</span>
+ <span class="ruby-comment"># [ [ [ &#39;-&#39;, 0, &#39;a&#39; ] ], # 1</span>
+ <span class="ruby-comment"># [ [ &#39;+&#39;, 2, &#39;d&#39; ] ], # 2</span>
+ <span class="ruby-comment"># [ [ &#39;-&#39;, 4, &#39;h&#39; ], # 3</span>
+ <span class="ruby-comment"># [ &#39;+&#39;, 4, &#39;f&#39; ] ],</span>
+ <span class="ruby-comment"># [ [ &#39;+&#39;, 6, &#39;k&#39; ] ], # 4</span>
+ <span class="ruby-comment"># [ [ &#39;-&#39;, 8, &#39;n&#39; ], # 5</span>
+ <span class="ruby-comment"># [ &#39;-&#39;, 9, &#39;p&#39; ],</span>
+ <span class="ruby-comment"># [ &#39;+&#39;, 9, &#39;r&#39; ],</span>
+ <span class="ruby-comment"># [ &#39;+&#39;, 10, &#39;s&#39; ],</span>
+ <span class="ruby-comment"># [ &#39;+&#39;, 11, &#39;t&#39; ] ] ]</span>
+</pre>
+
+<p>There are five hunks here. The first hunk says that the <code>a</code> at position 0 of the first sequence should be deleted (<code>&#39;-&#39;</code>). The second hunk says that the <code>d</code> at position 2 of the second sequence should be inserted (<code>&#39;+&#39;</code>). The third hunk says that the <code>h</code> at position 4 of the first sequence should be removed and replaced with the <code>f</code> from position 4 of the second sequence. The other two hunks are described similarly.</p>
+
+<h3 id="class-LCS::DiffCallbacks-label-Use">Use<span><a href="#class-LCS::DiffCallbacks-label-Use">&para;</a> <a href="#top">&uarr;</a></span></h3>
+
+<p>This callback object must be initialised and is used by the <a href="../LCS.html#method-i-diff"><code>Diff::LCS#diff</code></a> method.</p>
+
+<pre class="ruby"><span class="ruby-identifier">cbo</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">DiffCallbacks</span>.<span class="ruby-identifier">new</span>
+<span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-constant">LCS</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-identifier">cbo</span>)
+<span class="ruby-identifier">cbo</span>.<span class="ruby-identifier">finish</span>
+</pre>
+
+<p>Note that the call to <a href="DiffCallbacks.html#method-i-finish"><code>finish</code></a> is absolutely necessary, or the last set of changes will not be visible. Alternatively, can be used as:</p>
+
+<pre class="ruby"><span class="ruby-identifier">cbo</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">DiffCallbacks</span>.<span class="ruby-identifier">new</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">tcbo</span><span class="ruby-operator">|</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-constant">LCS</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-identifier">tcbo</span>) }
+</pre>
+
+<p>The necessary <a href="DiffCallbacks.html#method-i-finish"><code>finish</code></a> call will be made.</p>
+
+<h3 id="class-LCS::DiffCallbacks-label-Simplified+Array+Format">Simplified <a href="../Array.html"><code>Array</code></a> Format<span><a href="#class-LCS::DiffCallbacks-label-Simplified+Array+Format">&para;</a> <a href="#top">&uarr;</a></span></h3>
+
+<p>The simplified array format used in the example above can be obtained with:</p>
+
+<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;pp&#39;</span>
+<span class="ruby-identifier">pp</span> <span class="ruby-identifier">diffs</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">to_a</span> } }
+</pre>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+
+ <section class="attribute-method-details" class="method-section">
+ <header>
+ <h3>Attributes</h3>
+ </header>
+
+ <div id="attribute-i-diffs" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">diffs</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the difference set collected during the diff process.</p>
+ </div>
+ </div>
+ </section>
+
+
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Class Methods</h3>
+ </header>
+
+ <div id="method-c-new" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">new</span><span
+ class="method-args">() { |self| ... }</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="new-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 110</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span> <span class="ruby-comment"># :yields self:</span>
+ <span class="ruby-ivar">@hunk</span> = []
+ <span class="ruby-ivar">@diffs</span> = []
+
+ <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">block_given?</span>
+
+ <span class="ruby-keyword">begin</span>
+ <span class="ruby-keyword">yield</span> <span class="ruby-keyword">self</span>
+ <span class="ruby-keyword">ensure</span>
+ <span class="ruby-identifier">finish</span>
+ <span class="ruby-keyword">end</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Instance Methods</h3>
+ </header>
+
+ <div id="method-i-discard_a" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">discard_a</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="discard_a-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 133</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">discard_a</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@hunk</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">Change</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&#39;-&#39;</span>, <span class="ruby-identifier">event</span>.<span class="ruby-identifier">old_position</span>, <span class="ruby-identifier">event</span>.<span class="ruby-identifier">old_element</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-discard_b" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">discard_b</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="discard_b-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 137</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">discard_b</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@hunk</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">Change</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&#39;+&#39;</span>, <span class="ruby-identifier">event</span>.<span class="ruby-identifier">new_position</span>, <span class="ruby-identifier">event</span>.<span class="ruby-identifier">new_element</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-finish" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">finish</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Finalizes the diff process. If an unprocessed hunk still exists, then it is appended to the diff list.</p>
+
+ <div class="method-source-code" id="finish-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 125</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">finish</span>
+ <span class="ruby-identifier">finish_hunk</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-match" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">match</span><span
+ class="method-args">(_event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="match-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 129</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">match</span>(<span class="ruby-identifier">_event</span>)
+ <span class="ruby-identifier">finish_hunk</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+
diff --git a/LCS/HTMLDiff.html b/LCS/HTMLDiff.html
new file mode 100644
index 0000000..19314fc
--- /dev/null
+++ b/LCS/HTMLDiff.html
@@ -0,0 +1,231 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::HTMLDiff - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Object
+</div>
+
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-c-new">::new</a>
+ <li ><a href="#method-i-run">#run</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::HTMLDiff">
+ <h1 id="class-LCS::HTMLDiff" class="class">
+ class LCS::HTMLDiff
+ </h1>
+
+ <section class="description">
+
+<p>Produce a simple HTML diff view.</p>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+ <section class="constants-list">
+ <header>
+ <h3>Constants</h3>
+ </header>
+ <dl>
+ <dt id="DEFAULT_CSS">DEFAULT_CSS
+ <dd>
+ <dt id="DEFAULT_OPTIONS">DEFAULT_OPTIONS
+ <dd>
+ </dl>
+ </section>
+
+ <section class="attribute-method-details" class="method-section">
+ <header>
+ <h3>Attributes</h3>
+ </header>
+
+ <div id="attribute-i-options" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">options</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ </section>
+
+
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Class Methods</h3>
+ </header>
+
+ <div id="method-c-new" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">new</span><span
+ class="method-args">(left, right, options = nil)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="new-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/htmldiff.rb, line 90</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">left</span>, <span class="ruby-identifier">right</span>, <span class="ruby-identifier">options</span> = <span class="ruby-keyword">nil</span>)
+ <span class="ruby-ivar">@left</span> = <span class="ruby-identifier">left</span>
+ <span class="ruby-ivar">@right</span> = <span class="ruby-identifier">right</span>
+ <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">options</span>
+
+ <span class="ruby-ivar">@options</span> = <span class="ruby-constant">DEFAULT_OPTIONS</span>.<span class="ruby-identifier">dup</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">nil?</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Instance Methods</h3>
+ </header>
+
+ <div id="method-i-run" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">run</span><span
+ class="method-args">()</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="run-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/htmldiff.rb, line 112</span>
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">run</span>
+ <span class="ruby-identifier">verify_options</span>
+
+ <span class="ruby-keyword">if</span> <span class="ruby-ivar">@options</span>[<span class="ruby-value">:expand_tabs</span>].<span class="ruby-identifier">positive?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">can_expand_tabs</span>
+ <span class="ruby-identifier">formatter</span> = <span class="ruby-constant">Text</span><span class="ruby-operator">::</span><span class="ruby-constant">Format</span>.<span class="ruby-identifier">new</span>
+ <span class="ruby-identifier">formatter</span>.<span class="ruby-identifier">tabstop</span> = <span class="ruby-ivar">@options</span>[<span class="ruby-value">:expand_tabs</span>]
+
+ <span class="ruby-ivar">@left</span>.<span class="ruby-identifier">map!</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span> <span class="ruby-identifier">formatter</span>.<span class="ruby-identifier">expand</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">chomp</span>) <span class="ruby-keyword">end</span>
+ <span class="ruby-ivar">@right</span>.<span class="ruby-identifier">map!</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span> <span class="ruby-identifier">formatter</span>.<span class="ruby-identifier">expand</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">chomp</span>) <span class="ruby-keyword">end</span>
+ <span class="ruby-keyword">end</span>
+
+ <span class="ruby-ivar">@left</span>.<span class="ruby-identifier">map!</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span> <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">escapeHTML</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">chomp</span>) <span class="ruby-keyword">end</span>
+ <span class="ruby-ivar">@right</span>.<span class="ruby-identifier">map!</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span> <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">escapeHTML</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">chomp</span>) <span class="ruby-keyword">end</span>
+
+ <span class="ruby-ivar">@options</span>[<span class="ruby-value">:output</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">&lt;&lt;-OUTPUT</span>
+<span class="ruby-value">&lt;html&gt;
+ &lt;head&gt;
+ &lt;title&gt;#{@options[:title]}&lt;/title&gt;
+ &lt;style type=&quot;text/css&quot;&gt;
+ #{@options[:css]}
+ &lt;/style&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h1&gt;#{@options[:title]}&lt;/h1&gt;
+ &lt;p&gt;Legend: &lt;span class=&quot;only_a&quot;&gt;Only in Old&lt;/span&gt;&amp;nbsp;
+ &lt;span class=&quot;only_b&quot;&gt;Only in New&lt;/span&gt;&lt;/p&gt;
+ &lt;div class=&quot;diff&quot;&gt;
+</span><span class="ruby-identifier"> OUTPUT</span>
+
+ <span class="ruby-identifier">callbacks</span> = <span class="ruby-constant">Callbacks</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@options</span>[<span class="ruby-value">:output</span>])
+ <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-identifier">traverse_sequences</span>(<span class="ruby-ivar">@left</span>, <span class="ruby-ivar">@right</span>, <span class="ruby-identifier">callbacks</span>)
+
+ <span class="ruby-ivar">@options</span>[<span class="ruby-value">:output</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">&lt;&lt;-OUTPUT</span>
+<span class="ruby-value"> &lt;/div&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</span><span class="ruby-identifier"> OUTPUT</span>
+ <span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+
diff --git a/LCS/Hunk.html b/LCS/Hunk.html
new file mode 100644
index 0000000..0a22329
--- /dev/null
+++ b/LCS/Hunk.html
@@ -0,0 +1,397 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::Hunk - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Object
+</div>
+
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-c-new">::new</a>
+ <li ><a href="#method-i-diff">#diff</a>
+ <li ><a href="#method-i-merge">#merge</a>
+ <li ><a href="#method-i-missing_last_newline-3F">#missing_last_newline?</a>
+ <li ><a href="#method-i-overlaps-3F">#overlaps?</a>
+ <li ><a href="#method-i-unshift">#unshift</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::Hunk">
+ <h1 id="class-LCS::Hunk" class="class">
+ class LCS::Hunk
+ </h1>
+
+ <section class="description">
+
+<p>A <a href="Hunk.html"><code>Hunk</code></a> is a group of Blocks which overlap because of the context surrounding each block. (So if we&#39;re not using context, every hunk will contain one block.) Used in the diff program (bin/ldiff).</p>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+
+ <section class="attribute-method-details" class="method-section">
+ <header>
+ <h3>Attributes</h3>
+ </header>
+
+ <div id="attribute-i-blocks" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">blocks</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ <div id="attribute-i-end_new" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">end_new</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ <div id="attribute-i-end_old" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">end_old</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ <div id="attribute-i-file_length_difference" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">file_length_difference</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ <div id="attribute-i-flag_context" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">flag_context</span><span
+ class="attribute-access-type">[RW]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Change the “start” and “end” fields to note that context should be added to this hunk.</p>
+ </div>
+ </div>
+ <div id="attribute-i-start_new" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">start_new</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ <div id="attribute-i-start_old" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">start_old</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+
+ </div>
+ </div>
+ </section>
+
+
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Class Methods</h3>
+ </header>
+
+ <div id="method-c-new" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">new</span><span
+ class="method-args">(data_old, data_new, piece, flag_context, file_length_difference)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Create a hunk using references to both the old and new data, as well as the piece of data.</p>
+
+ <div class="method-source-code" id="new-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/hunk.rb, line 16</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">data_old</span>, <span class="ruby-identifier">data_new</span>, <span class="ruby-identifier">piece</span>, <span class="ruby-identifier">flag_context</span>, <span class="ruby-identifier">file_length_difference</span>)
+ <span class="ruby-comment"># At first, a hunk will have just one Block in it</span>
+ <span class="ruby-ivar">@blocks</span> = [<span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">Block</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">piece</span>)]
+
+ <span class="ruby-keyword">if</span> <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">remove</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">insert</span>.<span class="ruby-identifier">empty?</span>
+ <span class="ruby-identifier">fail</span> <span class="ruby-node">&quot;Cannot build a hunk from #{piece.inspect}; has no add or remove actions&quot;</span>
+ <span class="ruby-keyword">end</span>
+
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">String</span>.<span class="ruby-identifier">method_defined?</span>(<span class="ruby-value">:encoding</span>)
+ <span class="ruby-ivar">@preferred_data_encoding</span> = <span class="ruby-identifier">data_old</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">data_new</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;&#39;</span>)).<span class="ruby-identifier">encoding</span>
+ <span class="ruby-keyword">end</span>
+
+ <span class="ruby-ivar">@data_old</span> = <span class="ruby-identifier">data_old</span>
+ <span class="ruby-ivar">@data_new</span> = <span class="ruby-identifier">data_new</span>
+
+ <span class="ruby-identifier">before</span> = <span class="ruby-identifier">after</span> = <span class="ruby-identifier">file_length_difference</span>
+ <span class="ruby-identifier">after</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">diff_size</span>
+ <span class="ruby-ivar">@file_length_difference</span> = <span class="ruby-identifier">after</span> <span class="ruby-comment"># The caller must get this manually</span>
+ <span class="ruby-ivar">@max_diff_size</span> = <span class="ruby-ivar">@blocks</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">diff_size</span>.<span class="ruby-identifier">abs</span> }.<span class="ruby-identifier">max</span>
+
+
+ <span class="ruby-comment"># Save the start &amp; end of each array. If the array doesn&#39;t exist (e.g.,</span>
+ <span class="ruby-comment"># we&#39;re only adding items in this block), then figure out the line number</span>
+ <span class="ruby-comment"># based on the line number of the other file and the current difference in</span>
+ <span class="ruby-comment"># file lengths.</span>
+ <span class="ruby-keyword">if</span> <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">remove</span>.<span class="ruby-identifier">empty?</span>
+ <span class="ruby-identifier">a1</span> = <span class="ruby-identifier">a2</span> = <span class="ruby-keyword">nil</span>
+ <span class="ruby-keyword">else</span>
+ <span class="ruby-identifier">a1</span> = <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">remove</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">position</span>
+ <span class="ruby-identifier">a2</span> = <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">remove</span>[<span class="ruby-value">-1</span>].<span class="ruby-identifier">position</span>
+ <span class="ruby-keyword">end</span>
+
+ <span class="ruby-keyword">if</span> <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">insert</span>.<span class="ruby-identifier">empty?</span>
+ <span class="ruby-identifier">b1</span> = <span class="ruby-identifier">b2</span> = <span class="ruby-keyword">nil</span>
+ <span class="ruby-keyword">else</span>
+ <span class="ruby-identifier">b1</span> = <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">insert</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">position</span>
+ <span class="ruby-identifier">b2</span> = <span class="ruby-ivar">@blocks</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">insert</span>[<span class="ruby-value">-1</span>].<span class="ruby-identifier">position</span>
+ <span class="ruby-keyword">end</span>
+
+ <span class="ruby-ivar">@start_old</span> = <span class="ruby-identifier">a1</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">b1</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">before</span>)
+ <span class="ruby-ivar">@start_new</span> = <span class="ruby-identifier">b1</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">a1</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">before</span>)
+ <span class="ruby-ivar">@end_old</span> = <span class="ruby-identifier">a2</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">b2</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">after</span>)
+ <span class="ruby-ivar">@end_new</span> = <span class="ruby-identifier">b2</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">a2</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">after</span>)
+
+ <span class="ruby-keyword">self</span>.<span class="ruby-identifier">flag_context</span> = <span class="ruby-identifier">flag_context</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Instance Methods</h3>
+ </header>
+
+ <div id="method-i-diff" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">diff</span><span
+ class="method-args">(format, last = false)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns a diff string based on a format.</p>
+
+ <div class="method-source-code" id="diff-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/hunk.rb, line 116</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">diff</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">last</span> = <span class="ruby-keyword">false</span>)
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">format</span>
+ <span class="ruby-keyword">when</span> <span class="ruby-value">:old</span>
+ <span class="ruby-identifier">old_diff</span>(<span class="ruby-identifier">last</span>)
+ <span class="ruby-keyword">when</span> <span class="ruby-value">:unified</span>
+ <span class="ruby-identifier">unified_diff</span>(<span class="ruby-identifier">last</span>)
+ <span class="ruby-keyword">when</span> <span class="ruby-value">:context</span>
+ <span class="ruby-identifier">context_diff</span>(<span class="ruby-identifier">last</span>)
+ <span class="ruby-keyword">when</span> <span class="ruby-value">:ed</span>
+ <span class="ruby-keyword">self</span>
+ <span class="ruby-keyword">when</span> <span class="ruby-value">:reverse_ed</span>, <span class="ruby-value">:ed_finish</span>
+ <span class="ruby-identifier">ed_diff</span>(<span class="ruby-identifier">format</span>, <span class="ruby-identifier">last</span>)
+ <span class="ruby-keyword">else</span>
+ <span class="ruby-identifier">fail</span> <span class="ruby-node">&quot;Unknown diff format #{format}.&quot;</span>
+ <span class="ruby-keyword">end</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-merge" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">merge</span><span
+ class="method-args">(hunk)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Merges this hunk and the provided hunk together if they overlap. Returns a truthy value so that if there is no overlap, you can know the merge was skipped.</p>
+
+ <div class="method-source-code" id="merge-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/hunk.rb, line 98</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">merge</span>(<span class="ruby-identifier">hunk</span>)
+ <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">hunk</span>)
+
+ <span class="ruby-ivar">@start_old</span> = <span class="ruby-identifier">hunk</span>.<span class="ruby-identifier">start_old</span>
+ <span class="ruby-ivar">@start_new</span> = <span class="ruby-identifier">hunk</span>.<span class="ruby-identifier">start_new</span>
+ <span class="ruby-identifier">blocks</span>.<span class="ruby-identifier">unshift</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">hunk</span>.<span class="ruby-identifier">blocks</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+ <div class="aliases">
+ Also aliased as: <a href="Hunk.html#method-i-unshift">unshift</a>
+ </div>
+
+ </div>
+
+ <div id="method-i-missing_last_newline-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">missing_last_newline?</span><span
+ class="method-args">(data)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="missing_last_newline-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/hunk.rb, line 326</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">missing_last_newline?</span>(<span class="ruby-identifier">data</span>)
+ <span class="ruby-identifier">newline</span> = <span class="ruby-identifier">encode</span>(<span class="ruby-string">&quot;\n&quot;</span>)
+
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">data</span>[<span class="ruby-value">-2</span>]
+ <span class="ruby-identifier">data</span>[<span class="ruby-value">-2</span>].<span class="ruby-identifier">end_with?</span>(<span class="ruby-identifier">newline</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">data</span>[<span class="ruby-value">-1</span>].<span class="ruby-identifier">end_with?</span>(<span class="ruby-identifier">newline</span>)
+ <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">data</span>[<span class="ruby-value">-1</span>]
+ <span class="ruby-operator">!</span><span class="ruby-identifier">data</span>[<span class="ruby-value">-1</span>].<span class="ruby-identifier">end_with?</span>(<span class="ruby-identifier">newline</span>)
+ <span class="ruby-keyword">else</span>
+ <span class="ruby-keyword">true</span>
+ <span class="ruby-keyword">end</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-overlaps-3F" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">overlaps?</span><span
+ class="method-args">(hunk)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+ <p>Determines whether there is an overlap between this hunk and the provided hunk. This will be true if the difference between the two hunks start or end positions is within one position of each other.</p>
+
+ <div class="method-source-code" id="overlaps-3F-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/hunk.rb, line 110</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">overlaps?</span>(<span class="ruby-identifier">hunk</span>)
+ <span class="ruby-identifier">hunk</span> <span class="ruby-keyword">and</span> (((<span class="ruby-ivar">@start_old</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">hunk</span>.<span class="ruby-identifier">end_old</span>) <span class="ruby-operator">&lt;=</span> <span class="ruby-value">1</span>) <span class="ruby-keyword">or</span>
+ ((<span class="ruby-ivar">@start_new</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">hunk</span>.<span class="ruby-identifier">end_new</span>) <span class="ruby-operator">&lt;=</span> <span class="ruby-value">1</span>))
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-unshift" class="method-detail method-alias">
+ <div class="method-heading">
+ <span class="method-name">unshift</span><span
+ class="method-args">(hunk)</span>
+ </div>
+
+ <div class="method-description">
+
+
+ </div>
+
+
+ <div class="aliases">
+ Alias for: <a href="Hunk.html#method-i-merge">merge</a>
+ </div>
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+
diff --git a/LCS/SDiffCallbacks.html b/LCS/SDiffCallbacks.html
new file mode 100644
index 0000000..46b385f
--- /dev/null
+++ b/LCS/SDiffCallbacks.html
@@ -0,0 +1,312 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+<meta charset="UTF-8">
+
+<title>class LCS::SDiffCallbacks - diff-lcs-1.5.0 Documentation</title>
+
+<script type="text/javascript">
+ var rdoc_rel_prefix = "../";
+ var index_rel_prefix = "../";
+</script>
+
+<script src="../js/navigation.js" defer></script>
+<script src="../js/search.js" defer></script>
+<script src="../js/search_index.js" defer></script>
+<script src="../js/searcher.js" defer></script>
+<script src="../js/darkfish.js" defer></script>
+
+<link href="../css/fonts.css" rel="stylesheet">
+<link href="../css/rdoc.css" rel="stylesheet">
+
+
+<body id="top" role="document" class="class">
+<nav role="navigation">
+ <div id="project-navigation">
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
+ <h2>
+ <a href="../index.html" rel="home">Home</a>
+ </h2>
+
+ <div id="table-of-contents-navigation">
+ <a href="../table_of_contents.html#pages">Pages</a>
+ <a href="../table_of_contents.html#classes">Classes</a>
+ <a href="../table_of_contents.html#methods">Methods</a>
+ </div>
+</div>
+
+ <div id="search-section" role="search" class="project-section initially-hidden">
+ <form action="#" method="get" accept-charset="utf-8">
+ <div id="search-field-wrapper">
+ <input id="search-field" role="combobox" aria-label="Search"
+ aria-autocomplete="list" aria-controls="search-results"
+ type="text" name="search" placeholder="Search" spellcheck="false"
+ title="Type to search, Up and Down to navigate, Enter to load">
+ </div>
+
+ <ul id="search-results" aria-label="Search Results"
+ aria-busy="false" aria-expanded="false"
+ aria-atomic="false" class="initially-hidden"></ul>
+ </form>
+</div>
+
+ </div>
+
+
+<div class="nav-section">
+ <h3>Table of Contents</h3>
+
+ <ul class="link-list" role="directory">
+ <li><a href="#class-LCS::SDiffCallbacks-label-Use">Use</a>
+ <li><a href="#class-LCS::SDiffCallbacks-label-Simplified+Array+Format">Simplified Array Format</a>
+ </ul>
+</div>
+
+
+ <div id="class-metadata">
+
+
+<div id="parent-class-section" class="nav-section">
+ <h3>Parent</h3>
+
+ <p class="link">Object
+</div>
+
+
+
+
+<!-- Method Quickref -->
+<div id="method-list-section" class="nav-section">
+ <h3>Methods</h3>
+
+ <ul class="link-list" role="directory">
+ <li ><a href="#method-c-new">::new</a>
+ <li ><a href="#method-i-change">#change</a>
+ <li ><a href="#method-i-discard_a">#discard_a</a>
+ <li ><a href="#method-i-discard_b">#discard_b</a>
+ <li ><a href="#method-i-match">#match</a>
+ </ul>
+</div>
+
+ </div>
+</nav>
+
+<main role="main" aria-labelledby="class-LCS::SDiffCallbacks">
+ <h1 id="class-LCS::SDiffCallbacks" class="class">
+ class LCS::SDiffCallbacks
+ </h1>
+
+ <section class="description">
+
+<p>This will produce a simple array of diff change objects. Each element in the <a href="SDiffCallbacks.html#attribute-i-diffs"><code>diffs</code></a> array is a single ContextChange. In the set of <a href="SDiffCallbacks.html#attribute-i-diffs"><code>diffs</code></a> provided by <a href="SDiffCallbacks.html"><code>SDiffCallbacks</code></a>, both old and new objects will be presented for both changed &lt;strong&gt;and unchanged&lt;/strong&gt; objects. <code>nil</code> will be substituted for a discarded object.</p>
+
+<p>The diffset produced by this callback, when provided to <a href="../LCS.html#method-i-sdiff"><code>Diff::LCS#sdiff</code></a>, will compute and display the necessary components to show two sequences and their minimized differences side by side, just like the Unix utility <code>sdiff</code>.</p>
+
+<pre>same same
+before | after
+old &lt; -
+- &gt; new
+
+seq1 = %w(a b c e h j l m n p)
+seq2 = %w(b c d e f j k l m r s t)
+
+diffs = Diff::LCS.sdiff(seq1, seq2)
+ # This example shows a simplified array format.
+ # [ [ &quot;-&quot;, [ 0, &quot;a&quot;], [ 0, nil ] ],
+ # [ &quot;=&quot;, [ 1, &quot;b&quot;], [ 0, &quot;b&quot; ] ],
+ # [ &quot;=&quot;, [ 2, &quot;c&quot;], [ 1, &quot;c&quot; ] ],
+ # [ &quot;+&quot;, [ 3, nil], [ 2, &quot;d&quot; ] ],
+ # [ &quot;=&quot;, [ 3, &quot;e&quot;], [ 3, &quot;e&quot; ] ],
+ # [ &quot;!&quot;, [ 4, &quot;h&quot;], [ 4, &quot;f&quot; ] ],
+ # [ &quot;=&quot;, [ 5, &quot;j&quot;], [ 5, &quot;j&quot; ] ],
+ # [ &quot;+&quot;, [ 6, nil], [ 6, &quot;k&quot; ] ],
+ # [ &quot;=&quot;, [ 6, &quot;l&quot;], [ 7, &quot;l&quot; ] ],
+ # [ &quot;=&quot;, [ 7, &quot;m&quot;], [ 8, &quot;m&quot; ] ],
+ # [ &quot;!&quot;, [ 8, &quot;n&quot;], [ 9, &quot;r&quot; ] ],
+ # [ &quot;!&quot;, [ 9, &quot;p&quot;], [ 10, &quot;s&quot; ] ],
+ # [ &quot;+&quot;, [ 10, nil], [ 11, &quot;t&quot; ] ] ]</pre>
+
+<p>The result of this operation is similar to that of Diff::LCS::ContextDiffCallbacks. They may be compared as:</p>
+
+<pre class="ruby"><span class="ruby-identifier">s</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-identifier">sdiff</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>).<span class="ruby-identifier">reject</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">action</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;=&quot;</span> }
+<span class="ruby-identifier">c</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-identifier">sdiff</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextDiffCallbacks</span>).<span class="ruby-identifier">flatten</span>(<span class="ruby-value">1</span>)
+
+<span class="ruby-identifier">s</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">c</span> <span class="ruby-comment"># -&gt; true</span>
+</pre>
+
+<h3 id="class-LCS::SDiffCallbacks-label-Use">Use<span><a href="#class-LCS::SDiffCallbacks-label-Use">&para;</a> <a href="#top">&uarr;</a></span></h3>
+
+<p>This callback object must be initialised and is used by the <a href="../LCS.html#method-i-sdiff"><code>Diff::LCS#sdiff</code></a> method.</p>
+
+<pre class="ruby"><span class="ruby-identifier">cbo</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">SDiffCallbacks</span>.<span class="ruby-identifier">new</span>
+<span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-constant">LCS</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-identifier">cbo</span>)
+</pre>
+
+<p>As with the other initialisable callback objects, Diff::LCS::SDiffCallbacks can be initialised with a block. As there is no “fininishing” to be done, this has no effect on the state of the object.</p>
+
+<pre class="ruby"><span class="ruby-identifier">cbo</span> = <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">SDiffCallbacks</span>.<span class="ruby-identifier">new</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">tcbo</span><span class="ruby-operator">|</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span>.<span class="ruby-constant">LCS</span>(<span class="ruby-identifier">seq1</span>, <span class="ruby-identifier">seq2</span>, <span class="ruby-identifier">tcbo</span>) }
+</pre>
+
+<h3 id="class-LCS::SDiffCallbacks-label-Simplified+Array+Format">Simplified <a href="../Array.html"><code>Array</code></a> Format<span><a href="#class-LCS::SDiffCallbacks-label-Simplified+Array+Format">&para;</a> <a href="#top">&uarr;</a></span></h3>
+
+<p>The simplified array format used in the example above can be obtained with:</p>
+
+<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;pp&#39;</span>
+<span class="ruby-identifier">pp</span> <span class="ruby-identifier">diffs</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_a</span> }
+</pre>
+
+ </section>
+
+ <section id="5Buntitled-5D" class="documentation-section">
+
+
+
+ <section class="attribute-method-details" class="method-section">
+ <header>
+ <h3>Attributes</h3>
+ </header>
+
+ <div id="attribute-i-diffs" class="method-detail">
+ <div class="method-heading attribute-method-heading">
+ <span class="method-name">diffs</span><span
+ class="attribute-access-type">[R]</span>
+ </div>
+
+ <div class="method-description">
+ <p>Returns the difference set collected during the diff process.</p>
+ </div>
+ </div>
+ </section>
+
+
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Class Methods</h3>
+ </header>
+
+ <div id="method-c-new" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">new</span><span
+ class="method-args">() { |self| ... }</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="new-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 305</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span> <span class="ruby-comment">#:yields self:</span>
+ <span class="ruby-ivar">@diffs</span> = []
+ <span class="ruby-keyword">yield</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
+ <header>
+ <h3>Public Instance Methods</h3>
+ </header>
+
+ <div id="method-i-change" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">change</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="change-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 322</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">change</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@diffs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">simplify</span>(<span class="ruby-identifier">event</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-discard_a" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">discard_a</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="discard_a-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 314</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">discard_a</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@diffs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">simplify</span>(<span class="ruby-identifier">event</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-discard_b" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">discard_b</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="discard_b-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 318</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">discard_b</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@diffs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">simplify</span>(<span class="ruby-identifier">event</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ <div id="method-i-match" class="method-detail ">
+ <div class="method-heading">
+ <span class="method-name">match</span><span
+ class="method-args">(event)</span>
+ <span class="method-click-advice">click to toggle source</span>
+ </div>
+
+ <div class="method-description">
+
+
+ <div class="method-source-code" id="match-source">
+ <pre><span class="ruby-comment"># File lib/diff/lcs/callbacks.rb, line 310</span>
+<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">match</span>(<span class="ruby-identifier">event</span>)
+ <span class="ruby-ivar">@diffs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Diff</span><span class="ruby-operator">::</span><span class="ruby-constant">LCS</span><span class="ruby-operator">::</span><span class="ruby-constant">ContextChange</span>.<span class="ruby-identifier">simplify</span>(<span class="ruby-identifier">event</span>)
+<span class="ruby-keyword">end</span></pre>
+ </div>
+ </div>
+
+
+ </div>
+
+ </section>
+
+ </section>
+</main>
+
+
+<footer id="validator-badges" role="contentinfo">
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.3.3.
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
+</footer>
+