Updated the docs
[porter2stemmer.git] / doc / String.html
diff --git a/doc/String.html b/doc/String.html
deleted file mode 100644 (file)
index f04ae9a..0000000
+++ /dev/null
@@ -1,1144 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-       <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-
-       <title>Class: String</title>
-
-       <link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
-
-       <script src="./js/jquery.js" type="text/javascript"
-               charset="utf-8"></script>
-       <script src="./js/thickbox-compressed.js" type="text/javascript"
-               charset="utf-8"></script>
-       <script src="./js/quicksearch.js" type="text/javascript"
-               charset="utf-8"></script>
-       <script src="./js/darkfish.js" type="text/javascript"
-               charset="utf-8"></script>
-
-</head>
-<body class="class">
-
-       <div id="metadata">
-               <div id="home-metadata">
-                       <div id="home-section" class="section">
-        <h3 class="section-header">
-          <a href="./index.html">Home</a>
-          <a href="./index.html#classes">Classes</a>
-          <a href="./index.html#methods">Methods</a>
-        </h3>
-                       </div>
-               </div>
-
-               <div id="file-metadata">
-                       <div id="file-list-section" class="section">
-                               <h3 class="section-header">In Files</h3>
-                               <div class="section-body">
-                                       <ul>
-                                       
-                                               <li><a href="./lib/porter2_implementation_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
-                                                       class="thickbox" title="lib/porter2_implementation.rb">lib/porter2_implementation.rb</a></li>
-                                       
-                                       </ul>
-                               </div>
-                       </div>
-
-                       
-               </div>
-
-               <div id="class-metadata">
-
-                       <!-- Parent Class -->
-                       
-                       <div id="parent-class-section" class="section">
-                               <h3 class="section-header">Parent</h3>
-                               
-                               <p class="link">Object</p>
-                               
-                       </div>
-                       
-
-                       <!-- Namespace Contents -->
-                       
-
-                       <!-- Method Quickref -->
-                       
-                       <div id="method-list-section" class="section">
-                               <h3 class="section-header">Methods</h3>
-                               <ul class="link-list">
-                                       
-                                       <li><a href="#method-i-porter2_ends_with_short_syllable%3F">#porter2_ends_with_short_syllable?</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_is_short_word%3F">#porter2_is_short_word?</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_postprocess">#porter2_postprocess</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_preprocess">#porter2_preprocess</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_r1">#porter2_r1</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_r2">#porter2_r2</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_stem">#porter2_stem</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_stem_verbose">#porter2_stem_verbose</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_step0">#porter2_step0</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_step1a">#porter2_step1a</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_step1b">#porter2_step1b</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_step1c">#porter2_step1c</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_step2">#porter2_step2</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_step3">#porter2_step3</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_step4">#porter2_step4</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_step5">#porter2_step5</a></li>
-                                       
-                                       <li><a href="#method-i-porter2_tidy">#porter2_tidy</a></li>
-                                       
-                                       <li><a href="#method-i-stem">#stem</a></li>
-                                       
-                               </ul>
-                       </div>
-                       
-
-                       <!-- Included Modules -->
-                       
-               </div>
-
-               <div id="project-metadata">
-                       
-                       
-                       <div id="fileindex-section" class="section project-section">
-                               <h3 class="section-header">Files</h3>
-                               <ul>
-                               
-                                       <li class="file"><a href="./Readme_rdoc.html">Readme.rdoc</a></li>
-                               
-                               </ul>
-                       </div>
-                       
-
-                       <div id="classindex-section" class="section project-section">
-                               <h3 class="section-header">Class Index
-                                       <span class="search-toggle"><img src="./images/find.png"
-                                               height="16" width="16" alt="[+]"
-                                               title="show/hide quicksearch" /></span></h3>
-                               <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
-                               <fieldset>
-                                       <legend>Quicksearch</legend>
-                                       <input type="text" name="quicksearch" value=""
-                                               class="quicksearch-field" />
-                               </fieldset>
-                               </form>
-
-                               <ul class="link-list">
-                               
-                                       <li><a href="./Porter2.html">Porter2</a></li>
-                               
-                                       <li><a href="./String.html">String</a></li>
-                               
-                                       <li><a href="./TestPorter2.html">TestPorter2</a></li>
-                               
-                               </ul>
-                               <div id="no-class-search-results" style="display: none;">No matching classes.</div>
-                       </div>
-
-                       
-               </div>
-       </div>
-
-       <div id="documentation">
-               <h1 class="class">String</h1>
-
-               <div id="description">
-                       <p>
-Implementation of the Porter 2 stemmer. <a
-href="String.html#method-i-porter2_stem">String#porter2_stem</a> is the
-main stemming procedure.
-</p>
-
-               </div>
-
-               <!-- Constants -->
-               
-
-               <!-- Attributes -->
-               
-
-               <!-- Methods -->
-               
-               <div id="public-instance-method-details" class="method-section section">
-                       <h3 class="section-header">Public Instance Methods</h3>
-
-               
-                       <div id="porter-ends-with-short-syllable--method" class="method-detail ">
-                               <a name="method-i-porter2_ends_with_short_syllable%3F"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_ends_with_short_syllable?</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Returns true if the word ends with a short syllable
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-ends-with-short-syllable--source">
-<pre>
-    <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 59</span>
-59:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_ends_with_short_syllable?</span>
-60:     <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{Porter2::SHORT_SYLLABLE}$/</span> <span class="ruby-operator">?</span> <span class="ruby-keyword kw">true</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
-61:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-is-short-word--method" class="method-detail ">
-                               <a name="method-i-porter2_is_short_word%3F"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_is_short_word?</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-A word is short if it ends in a short syllable, and R1 is null
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-is-short-word--source">
-<pre>
-    <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 65</span>
-65:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_is_short_word?</span>
-66:     <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_ends_with_short_syllable?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r1</span>.<span class="ruby-identifier">empty?</span>
-67:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-postprocess-method" class="method-detail ">
-                               <a name="method-i-porter2_postprocess"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_postprocess</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Turn all Y letters into y
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-postprocess-source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 261</span>
-261:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_postprocess</span>
-262:     <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/Y/</span>, <span class="ruby-value str">'y'</span>)
-263:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-preprocess-method" class="method-detail ">
-                               <a name="method-i-porter2_preprocess"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_preprocess</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Preprocess the word.  Remove any initial &#8217;, if present. Then, set
-initial y, or y after a vowel, to Y
-</p>
-<p>
-(The comment to &#8216;establish the regions R1 and R2&#8217; in the
-original description  is an implementation optimisation that identifies
-where the regions start. As no modifications are made to the word that
-affect those positions, you may want to cache them now. This implementation
-doesn&#8217;t do that.)
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-preprocess-source">
-<pre>
-    <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 25</span>
-25:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_preprocess</span>    
-26:     <span class="ruby-identifier">w</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>
-27: 
-28:     <span class="ruby-comment cmt"># remove any initial apostrophe</span>
-29:     <span class="ruby-identifier">w</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/^'*(.)/</span>, <span class="ruby-value str">'\1'</span>)
-30:     
-31:     <span class="ruby-comment cmt"># set initial y, or y after a vowel, to Y</span>
-32:     <span class="ruby-identifier">w</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/^y/</span>, <span class="ruby-value str">&quot;Y&quot;</span>)
-33:     <span class="ruby-identifier">w</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-node">/(#{Porter2::V})y/</span>, <span class="ruby-value str">'\1Y'</span>)
-34:     
-35:     <span class="ruby-identifier">w</span>
-36:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-r--method" class="method-detail ">
-                               <a name="method-i-porter2_r1"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_r1</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-R1 is the portion of the word after the first non-vowel after the first
-vowel (with words beginning &#8216;gener-&#8217;, &#8216;commun-&#8217;,
-and &#8216;arsen-&#8217; treated as special cases
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-r--source">
-<pre>
-    <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 41</span>
-41:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_r1</span>
-42:     <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^(gener|commun|arsen)(?&lt;r1&gt;.*)/</span>
-43:       <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>(<span class="ruby-value">:r1</span>)
-44:     <span class="ruby-keyword kw">else</span>
-45:       <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{Porter2::V}#{Porter2::C}(?&lt;r1&gt;.*)$/</span>
-46:       <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>(<span class="ruby-value">:r1</span>) <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>
-47:     <span class="ruby-keyword kw">end</span>
-48:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-r--method" class="method-detail ">
-                               <a name="method-i-porter2_r2"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_r2</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-R2 is the portion of R1 (<a
-href="String.html#method-i-porter2_r1">porter2_r1</a>) after the first
-non-vowel after the first vowel
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-r--source">
-<pre>
-    <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 52</span>
-52:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_r2</span>
-53:     <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r1</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{Porter2::V}#{Porter2::C}(?&lt;r2&gt;.*)$/</span>
-54:     <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>(<span class="ruby-value">:r2</span>) <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>
-55:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-stem-method" class="method-detail ">
-                               <a name="method-i-porter2_stem"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_stem</span><span
-                                               class="method-args">(gb_english = false)</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Perform the stemming procedure. If <tt>gb_english</tt> is true, treat
-&#8217;-ise&#8217; and similar suffixes as &#8217;-ize&#8217; in American
-English.
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-stem-source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 269</span>
-269:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_stem</span>(<span class="ruby-identifier">gb_english</span> = <span class="ruby-keyword kw">false</span>)
-270:     <span class="ruby-identifier">preword</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_tidy</span>
-271:     <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">preword</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">preword</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">2</span>
-272: 
-273:     <span class="ruby-identifier">word</span> = <span class="ruby-identifier">preword</span>.<span class="ruby-identifier">porter2_preprocess</span>
-274:     
-275:     <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">SPECIAL_CASES</span>.<span class="ruby-identifier">has_key?</span> <span class="ruby-identifier">word</span>
-276:       <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">SPECIAL_CASES</span>[<span class="ruby-identifier">word</span>]
-277:     <span class="ruby-keyword kw">else</span>
-278:       <span class="ruby-identifier">w1a</span> = <span class="ruby-identifier">word</span>.<span class="ruby-identifier">porter2_step0</span>.<span class="ruby-identifier">porter2_step1a</span>
-279:       <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">STEP_1A_SPECIAL_CASES</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">w1a</span> 
-280:         <span class="ruby-identifier">w1a</span>
-281:       <span class="ruby-keyword kw">else</span>
-282:         <span class="ruby-identifier">w1a</span>.<span class="ruby-identifier">porter2_step1b</span>(<span class="ruby-identifier">gb_english</span>).<span class="ruby-identifier">porter2_step1c</span>.<span class="ruby-identifier">porter2_step2</span>(<span class="ruby-identifier">gb_english</span>).<span class="ruby-identifier">porter2_step3</span>(<span class="ruby-identifier">gb_english</span>).<span class="ruby-identifier">porter2_step4</span>(<span class="ruby-identifier">gb_english</span>).<span class="ruby-identifier">porter2_step5</span>.<span class="ruby-identifier">porter2_postprocess</span>
-283:       <span class="ruby-keyword kw">end</span>
-284:     <span class="ruby-keyword kw">end</span>
-285:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-                               <div class="aliases">
-                                       Also aliased as: <a href="String.html#method-i-stem">stem</a>
-                               </div>
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-stem-verbose-method" class="method-detail ">
-                               <a name="method-i-porter2_stem_verbose"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_stem_verbose</span><span
-                                               class="method-args">(gb_english = false)</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-A verbose version of <a
-href="String.html#method-i-porter2_stem">porter2_stem</a> that prints the
-output of each stage to STDOUT
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-stem-verbose-source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 288</span>
-288:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_stem_verbose</span>(<span class="ruby-identifier">gb_english</span> = <span class="ruby-keyword kw">false</span>)
-289:     <span class="ruby-identifier">preword</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_tidy</span>
-290:     <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Preword: #{preword}&quot;</span>
-291:     <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">preword</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">preword</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">2</span>
-292: 
-293:     <span class="ruby-identifier">word</span> = <span class="ruby-identifier">preword</span>.<span class="ruby-identifier">porter2_preprocess</span>
-294:     <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Preprocessed: #{word}&quot;</span>
-295:     
-296:     <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">SPECIAL_CASES</span>.<span class="ruby-identifier">has_key?</span> <span class="ruby-identifier">word</span>
-297:       <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Returning #{word} as special case #{Porter2::SPECIAL_CASES[word]}&quot;</span>
-298:       <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">SPECIAL_CASES</span>[<span class="ruby-identifier">word</span>]
-299:     <span class="ruby-keyword kw">else</span>
-300:       <span class="ruby-identifier">r1</span> = <span class="ruby-identifier">word</span>.<span class="ruby-identifier">porter2_r1</span>
-301:       <span class="ruby-identifier">r2</span> = <span class="ruby-identifier">word</span>.<span class="ruby-identifier">porter2_r2</span>
-302:       <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;R1 = #{r1}, R2 = #{r2}&quot;</span>
-303:     
-304:       <span class="ruby-identifier">w0</span> = <span class="ruby-identifier">word</span>.<span class="ruby-identifier">porter2_step0</span> ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After step 0:  #{w0} (R1 = #{w0.porter2_r1}, R2 = #{w0.porter2_r2})&quot;</span>
-305:       <span class="ruby-identifier">w1a</span> = <span class="ruby-identifier">w0</span>.<span class="ruby-identifier">porter2_step1a</span> ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After step 1a: #{w1a} (R1 = #{w1a.porter2_r1}, R2 = #{w1a.porter2_r2})&quot;</span>
-306:       
-307:       <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">STEP_1A_SPECIAL_CASES</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">w1a</span>
-308:         <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Returning #{w1a} as 1a special case&quot;</span>
-309:         <span class="ruby-identifier">w1a</span>
-310:       <span class="ruby-keyword kw">else</span>
-311:         <span class="ruby-identifier">w1b</span> = <span class="ruby-identifier">w1a</span>.<span class="ruby-identifier">porter2_step1b</span>(<span class="ruby-identifier">gb_english</span>) ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After step 1b: #{w1b} (R1 = #{w1b.porter2_r1}, R2 = #{w1b.porter2_r2})&quot;</span>
-312:         <span class="ruby-identifier">w1c</span> = <span class="ruby-identifier">w1b</span>.<span class="ruby-identifier">porter2_step1c</span> ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After step 1c: #{w1c} (R1 = #{w1c.porter2_r1}, R2 = #{w1c.porter2_r2})&quot;</span>
-313:         <span class="ruby-identifier">w2</span> = <span class="ruby-identifier">w1c</span>.<span class="ruby-identifier">porter2_step2</span>(<span class="ruby-identifier">gb_english</span>) ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After step 2:  #{w2} (R1 = #{w2.porter2_r1}, R2 = #{w2.porter2_r2})&quot;</span>
-314:         <span class="ruby-identifier">w3</span> = <span class="ruby-identifier">w2</span>.<span class="ruby-identifier">porter2_step3</span>(<span class="ruby-identifier">gb_english</span>) ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After step 3:  #{w3} (R1 = #{w3.porter2_r1}, R2 = #{w3.porter2_r2})&quot;</span>
-315:         <span class="ruby-identifier">w4</span> = <span class="ruby-identifier">w3</span>.<span class="ruby-identifier">porter2_step4</span>(<span class="ruby-identifier">gb_english</span>) ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After step 4:  #{w4} (R1 = #{w4.porter2_r1}, R2 = #{w4.porter2_r2})&quot;</span>
-316:         <span class="ruby-identifier">w5</span> = <span class="ruby-identifier">w4</span>.<span class="ruby-identifier">porter2_step5</span> ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After step 5:  #{w5}&quot;</span>
-317:         <span class="ruby-identifier">wpost</span> = <span class="ruby-identifier">w5</span>.<span class="ruby-identifier">porter2_postprocess</span> ; <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;After postprocess: #{wpost}&quot;</span>
-318:         <span class="ruby-identifier">wpost</span>
-319:       <span class="ruby-keyword kw">end</span>
-320:     <span class="ruby-keyword kw">end</span>
-321:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-step--method" class="method-detail ">
-                               <a name="method-i-porter2_step0"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_step0</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Search for the longest among the suffixes, 
-</p>
-<ul>
-<li><p>
-&#8216;
-</p>
-</li>
-<li><p>
-&#8217;s
-</p>
-</li>
-<li><p>
-&#8217;s&#8217;
-</p>
-</li>
-</ul>
-<p>
-and remove if found.
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-step--source">
-<pre>
-    <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 75</span>
-75:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_step0</span>
-76:     <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/(.)('s'|'s|')$/</span>, <span class="ruby-value str">'\1'</span>) <span class="ruby-operator">||</span> <span class="ruby-keyword kw">self</span>
-77:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-step-a-method" class="method-detail ">
-                               <a name="method-i-porter2_step1a"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_step1a</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Search for the longest among the following suffixes, and perform the action
-indicated. 
-</p>
-<table>
-<tr><td valign="top">sses</td><td><p>
-replace by ss 
-</p>
-</td></tr>
-<tr><td valign="top">ied, ies</td><td><p>
-replace by i if preceded by more than one letter, otherwise by ie
-</p>
-</td></tr>
-<tr><td valign="top">s</td><td><p>
-delete if the preceding word part contains a vowel not immediately before
-the s
-</p>
-</td></tr>
-<tr><td valign="top">us, ss</td><td><p>
-do nothing
-</p>
-</td></tr>
-</table>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-step-a-source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 85</span>
- 85:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_step1a</span>
- 86:     <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/sses$/</span>
- 87:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/sses$/</span>, <span class="ruby-value str">'ss'</span>)
- 88:     <span class="ruby-keyword kw">elsif</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/..(ied|ies)$/</span>
- 89:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/(ied|ies)$/</span>, <span class="ruby-value str">'i'</span>)
- 90:     <span class="ruby-keyword kw">elsif</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(ied|ies)$/</span>
- 91:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/(ied|ies)$/</span>, <span class="ruby-value str">'ie'</span>)
- 92:     <span class="ruby-keyword kw">elsif</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(us|ss)$/</span>
- 93:       <span class="ruby-keyword kw">self</span>
- 94:     <span class="ruby-keyword kw">elsif</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/s$/</span>
- 95:       <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/(#{Porter2::V}.+)s$/</span>
- 96:         <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/s$/</span>, <span class="ruby-value str">''</span>) 
- 97:       <span class="ruby-keyword kw">else</span>
- 98:         <span class="ruby-keyword kw">self</span>
- 99:       <span class="ruby-keyword kw">end</span>
-100:     <span class="ruby-keyword kw">else</span>
-101:       <span class="ruby-keyword kw">self</span>
-102:     <span class="ruby-keyword kw">end</span>
-103:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-step-b-method" class="method-detail ">
-                               <a name="method-i-porter2_step1b"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_step1b</span><span
-                                               class="method-args">(gb_english = false)</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Search for the longest among the following suffixes, and perform the action
-indicated. 
-</p>
-<table>
-<tr><td valign="top">eed, eedly</td><td><p>
-replace by ee if the suffix is also in R1 
-</p>
-</td></tr>
-<tr><td valign="top">ed, edly, ing, ingly</td><td><p>
-delete if the preceding word part contains a vowel and,  after the
-deletion:
-</p>
-<ul>
-<li><p>
-if the word ends at, bl or iz: add e, or
-</p>
-</li>
-</ul>
-<ul>
-<li><p>
-if the word ends with a double: remove the last letter, or
-</p>
-</li>
-</ul>
-<ul>
-<li><p>
-if the word is short: add e
-</p>
-</li>
-</ul>
-</td></tr>
-</table>
-<p>
-(If gb_english is <tt>true</tt>, treat the &#8216;is&#8217; suffix as
-&#8216;iz&#8217; above.)
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-step-b-source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 115</span>
-115:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_step1b</span>(<span class="ruby-identifier">gb_english</span> = <span class="ruby-keyword kw">false</span>)
-116:     <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(eed|eedly)$/</span>
-117:       <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r1</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(eed|eedly)$/</span>
-118:         <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/(eed|eedly)$/</span>, <span class="ruby-value str">'ee'</span>)
-119:       <span class="ruby-keyword kw">else</span>
-120:         <span class="ruby-keyword kw">self</span>
-121:       <span class="ruby-keyword kw">end</span>
-122:     <span class="ruby-keyword kw">else</span>
-123:       <span class="ruby-identifier">w</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>
-124:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">w</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{Porter2::V}.*(ed|edly|ing|ingly)$/</span>
-125:         <span class="ruby-identifier">w</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/(ed|edly|ing|ingly)$/</span>, <span class="ruby-value str">''</span>)
-126:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">w</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(at|lb|iz)$/</span>
-127:           <span class="ruby-identifier">w</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">'e'</span> 
-128:         <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">w</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/is$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">gb_english</span>
-129:           <span class="ruby-identifier">w</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">'e'</span> 
-130:         <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">w</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{Porter2::Double}$/</span>
-131:           <span class="ruby-identifier">w</span>.<span class="ruby-identifier">chop!</span>
-132:         <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">w</span>.<span class="ruby-identifier">porter2_is_short_word?</span>
-133:           <span class="ruby-identifier">w</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">'e'</span>
-134:         <span class="ruby-keyword kw">end</span>
-135:       <span class="ruby-keyword kw">end</span>
-136:       <span class="ruby-identifier">w</span>
-137:     <span class="ruby-keyword kw">end</span>
-138:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-step-c-method" class="method-detail ">
-                               <a name="method-i-porter2_step1c"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_step1c</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Replace a suffix of y or Y by i if it is preceded by a non-vowel which is 
-not the first letter of the word.
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-step-c-source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 143</span>
-143:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_step1c</span>
-144:     <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/.+#{Porter2::C}(y|Y)$/</span>
-145:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/(y|Y)$/</span>, <span class="ruby-value str">'i'</span>)
-146:     <span class="ruby-keyword kw">else</span>
-147:       <span class="ruby-keyword kw">self</span>
-148:     <span class="ruby-keyword kw">end</span>
-149:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-step--method" class="method-detail ">
-                               <a name="method-i-porter2_step2"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_step2</span><span
-                                               class="method-args">(gb_english = false)</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Search for the longest among the suffixes listed in the keys of
-Porter2::STEP_2_MAPS.  If one is found and that suffix occurs in R1,
-replace it with the value  found in STEP_2_MAPS.
-</p>
-<p>
-(Suffixes &#8216;ogi&#8217; and &#8216;li&#8217; are treated as special
-cases in the procedure.)
-</p>
-<p>
-(If gb_english is <tt>true</tt>, replace the &#8216;iser&#8217; and
-&#8216;isation&#8217; suffixes with &#8216;ise&#8217;, similarly to how
-&#8216;izer&#8217; and &#8216;ization&#8217; are treated.)
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-step--source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 160</span>
-160:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_step2</span>(<span class="ruby-identifier">gb_english</span> = <span class="ruby-keyword kw">false</span>)
-161:     <span class="ruby-identifier">r1</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r1</span>
-162:     <span class="ruby-identifier">s2m</span> = <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">STEP_2_MAPS</span>.<span class="ruby-identifier">dup</span>
-163:     <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">gb_english</span>
-164:       <span class="ruby-identifier">s2m</span>[<span class="ruby-value str">&quot;iser&quot;</span>] = <span class="ruby-value str">&quot;ise&quot;</span>
-165:       <span class="ruby-identifier">s2m</span>[<span class="ruby-value str">&quot;isation&quot;</span>] = <span class="ruby-value str">&quot;ise&quot;</span>
-166:     <span class="ruby-keyword kw">end</span>
-167:     <span class="ruby-identifier">step_2_re</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">union</span>(<span class="ruby-identifier">s2m</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">r</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;$&quot;</span>)})
-168:     <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">step_2_re</span>
-169:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r1</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{$&amp;}$/</span>
-170:         <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-node">/#{$&amp;}$/</span>, <span class="ruby-identifier">s2m</span>[<span class="ruby-node">$&amp;</span>])
-171:       <span class="ruby-keyword kw">else</span>
-172:         <span class="ruby-keyword kw">self</span>
-173:       <span class="ruby-keyword kw">end</span>
-174:     <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">r1</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/li$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/(#{Porter2::Valid_LI})li$/</span>
-175:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/li$/</span>, <span class="ruby-value str">''</span>)
-176:     <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">r1</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/ogi$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/logi$/</span>
-177:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/ogi$/</span>, <span class="ruby-value str">'og'</span>)
-178:     <span class="ruby-keyword kw">else</span>
-179:       <span class="ruby-keyword kw">self</span>
-180:     <span class="ruby-keyword kw">end</span>
-181:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-step--method" class="method-detail ">
-                               <a name="method-i-porter2_step3"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_step3</span><span
-                                               class="method-args">(gb_english = false)</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Search for the longest among the suffixes listed in the keys of
-Porter2::STEP_3_MAPS.  If one is found and that suffix occurs in R1,
-replace it with the value  found in STEP_3_MAPS.
-</p>
-<p>
-(Suffix &#8216;ative&#8217; is treated as a special case in the procedure.)
-</p>
-<p>
-(If gb_english is <tt>true</tt>, replace the &#8216;alise&#8217; suffix
-with &#8216;al&#8217;, similarly to how &#8216;alize&#8217; is treated.)
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-step--source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 192</span>
-192:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_step3</span>(<span class="ruby-identifier">gb_english</span> = <span class="ruby-keyword kw">false</span>)
-193:     <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/ative$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r2</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/ative$/</span>
-194:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/ative$/</span>, <span class="ruby-value str">''</span>)
-195:     <span class="ruby-keyword kw">else</span>
-196:       <span class="ruby-identifier">s3m</span> = <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">STEP_3_MAPS</span>.<span class="ruby-identifier">dup</span>
-197:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">gb_english</span>
-198:         <span class="ruby-identifier">s3m</span>[<span class="ruby-value str">&quot;alise&quot;</span>] = <span class="ruby-value str">&quot;al&quot;</span>
-199:       <span class="ruby-keyword kw">end</span>
-200:       <span class="ruby-identifier">step_3_re</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">union</span>(<span class="ruby-identifier">s3m</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">r</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;$&quot;</span>)})
-201:       <span class="ruby-identifier">r1</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r1</span>
-202:       <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">step_3_re</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">r1</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{$&amp;}$/</span> 
-203:         <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-node">/#{$&amp;}$/</span>, <span class="ruby-identifier">s3m</span>[<span class="ruby-node">$&amp;</span>])
-204:       <span class="ruby-keyword kw">else</span>
-205:         <span class="ruby-keyword kw">self</span>
-206:       <span class="ruby-keyword kw">end</span>
-207:     <span class="ruby-keyword kw">end</span>
-208:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-step--method" class="method-detail ">
-                               <a name="method-i-porter2_step4"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_step4</span><span
-                                               class="method-args">(gb_english = false)</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Search for the longest among the suffixes listed in the keys of
-Porter2::STEP_4_MAPS.  If one is found and that suffix occurs in R2,
-replace it with the value  found in STEP_4_MAPS.
-</p>
-<p>
-(Suffix &#8216;ion&#8217; is treated as a special case in the procedure.)
-</p>
-<p>
-(If gb_english is <tt>true</tt>, delete the &#8216;ise&#8217; suffix if
-found.)
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-step--source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 218</span>
-218:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_step4</span>(<span class="ruby-identifier">gb_english</span> = <span class="ruby-keyword kw">false</span>)
-219:     <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r2</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/ion$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(s|t)ion$/</span>
-220:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/ion$/</span>, <span class="ruby-value str">''</span>)
-221:     <span class="ruby-keyword kw">else</span>
-222:       <span class="ruby-identifier">s4m</span> = <span class="ruby-constant">Porter2</span><span class="ruby-operator">::</span><span class="ruby-constant">STEP_4_MAPS</span>.<span class="ruby-identifier">dup</span>
-223:       <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">gb_english</span>
-224:         <span class="ruby-identifier">s4m</span>[<span class="ruby-value str">&quot;ise&quot;</span>] = <span class="ruby-value str">&quot;&quot;</span>
-225:       <span class="ruby-keyword kw">end</span>
-226:       <span class="ruby-identifier">step_4_re</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">union</span>(<span class="ruby-identifier">s4m</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span> <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">r</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;$&quot;</span>)})
-227:       <span class="ruby-identifier">r2</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r2</span>
-228:       <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">step_4_re</span>
-229:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r2</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{$&amp;}/</span>
-230:           <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-node">/#{$&amp;}$/</span>, <span class="ruby-identifier">s4m</span>[<span class="ruby-node">$&amp;</span>])
-231:         <span class="ruby-keyword kw">else</span>
-232:           <span class="ruby-keyword kw">self</span>
-233:         <span class="ruby-keyword kw">end</span>
-234:       <span class="ruby-keyword kw">else</span>
-235:         <span class="ruby-keyword kw">self</span>
-236:       <span class="ruby-keyword kw">end</span>
-237:     <span class="ruby-keyword kw">end</span>
-238:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-step--method" class="method-detail ">
-                               <a name="method-i-porter2_step5"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_step5</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Search for the the following suffixes, and, if found, perform the action
-indicated. 
-</p>
-<table>
-<tr><td valign="top">e</td><td><p>
-delete if in R2, or in R1 and not preceded by a short syllable
-</p>
-</td></tr>
-<tr><td valign="top">l</td><td><p>
-delete if in R2 and preceded by l
-</p>
-</td></tr>
-</table>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-step--source">
-<pre>
-     <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 244</span>
-244:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_step5</span>
-245:     <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/ll$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r2</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/l$/</span>
-246:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/ll$/</span>, <span class="ruby-value str">'l'</span>) 
-247:     <span class="ruby-keyword kw">elsif</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/e$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r2</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/e$/</span> 
-248:       <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/e$/</span>, <span class="ruby-value str">''</span>) 
-249:     <span class="ruby-keyword kw">else</span>
-250:       <span class="ruby-identifier">r1</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">porter2_r1</span>
-251:       <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/e$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">r1</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/e$/</span> <span class="ruby-keyword kw">and</span> <span class="ruby-keyword kw">not</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">=~</span> <span class="ruby-node">/#{Porter2::SHORT_SYLLABLE}e$/</span>
-252:         <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/e$/</span>, <span class="ruby-value str">''</span>)
-253:       <span class="ruby-keyword kw">else</span>
-254:         <span class="ruby-keyword kw">self</span>
-255:       <span class="ruby-keyword kw">end</span>
-256:     <span class="ruby-keyword kw">end</span>
-257:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="porter-tidy-method" class="method-detail ">
-                               <a name="method-i-porter2_tidy"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">porter2_tidy</span><span
-                                               class="method-args">()</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       <p>
-Tidy up the word before we get down to the algorithm
-</p>
-                                       
-
-                                       
-                                       <div class="method-source-code"
-                                               id="porter-tidy-source">
-<pre>
-    <span class="ruby-comment cmt"># File lib/porter2_implementation.rb, line 7</span>
- 7:   <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">porter2_tidy</span>
- 8:     <span class="ruby-identifier">preword</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">downcase</span>
- 9:     
-10:     <span class="ruby-comment cmt"># map apostrophe-like characters to apostrophes</span>
-11:     <span class="ruby-identifier">preword</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/‘/</span>, <span class="ruby-value str">&quot;'&quot;</span>)
-12:     <span class="ruby-identifier">preword</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/’/</span>, <span class="ruby-value str">&quot;'&quot;</span>)
-13: 
-14:     <span class="ruby-identifier">preword</span>
-15:   <span class="ruby-keyword kw">end</span></pre>
-                                       </div>
-                                       
-                               </div>
-
-                               
-
-                               
-                       </div>
-
-               
-                       <div id="stem-method" class="method-detail method-alias">
-                               <a name="method-i-stem"></a>
-
-                               <div class="method-heading">
-                               
-                                       <span class="method-name">stem</span><span
-                                               class="method-args">(gb_english = false)</span>
-                                       <span class="method-click-advice">click to toggle source</span>
-                               
-                               </div>
-
-                               <div class="method-description">
-                                       
-                                       
-                                       
-
-                                       
-                               </div>
-
-                               
-
-                               
-                               <div class="aliases">
-          Alias for: <a href="String.html#method-i-porter2_stem">porter2_stem</a>
-                               </div>
-                               
-                       </div>
-
-               
-               </div>
-       
-
-       </div>
-
-
-       <div id="rdoc-debugging-section-dump" class="debugging-section">
-       
-               <p>Disabled; run with --debug to generate this.</p>
-       
-       </div>
-
-       <div id="validator-badges">
-               <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
-               <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
-                       Rdoc Generator</a> 1.1.6</small>.</p>
-       </div>
-
-</body>
-</html>
-