1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8 <title>Class: Base36</title>
10 <link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
12 <script src="./js/jquery.js" type="text/javascript"
13 charset="utf-8"></script>
14 <script src="./js/thickbox-compressed.js" type="text/javascript"
15 charset="utf-8"></script>
16 <script src="./js/quicksearch.js" type="text/javascript"
17 charset="utf-8"></script>
18 <script src="./js/darkfish.js" type="text/javascript"
19 charset="utf-8"></script>
25 <div id="home-metadata">
26 <div id="home-section" class="section">
27 <h3 class="section-header">
28 <a href="./index.html">Home</a>
29 <a href="./index.html#classes">Classes</a>
30 <a href="./index.html#methods">Methods</a>
35 <div id="file-metadata">
36 <div id="file-list-section" class="section">
37 <h3 class="section-header">In Files</h3>
38 <div class="section-body">
41 <li><a href="./base36_rb.html?TB_iframe=true&height=550&width=785"
42 class="thickbox" title="base36.rb">base36.rb</a></li>
51 <div id="class-metadata">
55 <div id="parent-class-section" class="section">
56 <h3 class="section-header">Parent</h3>
58 <p class="link">Object</p>
63 <!-- Namespace Contents -->
66 <!-- Method Quickref -->
68 <div id="method-list-section" class="section">
69 <h3 class="section-header">Methods</h3>
70 <ul class="link-list">
72 <li><a href="#method-c-decode">::decode</a></li>
74 <li><a href="#method-c-encode">::encode</a></li>
80 <!-- Included Modules -->
84 <div id="project-metadata">
88 <div id="classindex-section" class="section project-section">
89 <h3 class="section-header">Class Index
90 <span class="search-toggle"><img src="./images/find.png"
91 height="16" width="16" alt="[+]"
92 title="show/hide quicksearch" /></span></h3>
93 <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
95 <legend>Quicksearch</legend>
96 <input type="text" name="quicksearch" value=""
97 class="quicksearch-field" />
101 <ul class="link-list">
103 <li><a href="./Base36.html">Base36</a></li>
105 <li><a href="./Base36Error.html">Base36Error</a></li>
107 <li><a href="./Biopieces.html">Biopieces</a></li>
109 <li><a href="./BitArray.html">BitArray</a></li>
111 <li><a href="./BitArrayError.html">BitArrayError</a></li>
113 <li><a href="./Boulder.html">Boulder</a></li>
115 <li><a href="./BoulderError.html">BoulderError</a></li>
117 <li><a href="./CastError.html">CastError</a></li>
119 <li><a href="./Casts.html">Casts</a></li>
121 <li><a href="./Digest.html">Digest</a></li>
123 <li><a href="./DigestError.html">DigestError</a></li>
125 <li><a href="./Fasta.html">Fasta</a></li>
127 <li><a href="./FastaError.html">FastaError</a></li>
129 <li><a href="./Fastq.html">Fastq</a></li>
131 <li><a href="./FastqError.html">FastqError</a></li>
133 <li><a href="./Filesys.html">Filesys</a></li>
135 <li><a href="./FilesysError.html">FilesysError</a></li>
137 <li><a href="./Genbank.html">Genbank</a></li>
139 <li><a href="./GenbankError.html">GenbankError</a></li>
141 <li><a href="./GenbankFeatures.html">GenbankFeatures</a></li>
143 <li><a href="./Locator.html">Locator</a></li>
145 <li><a href="./LocatorError.html">LocatorError</a></li>
147 <li><a href="./OptionHandler.html">OptionHandler</a></li>
149 <li><a href="./Read.html">Read</a></li>
151 <li><a href="./SFF.html">SFF</a></li>
153 <li><a href="./SFFError.html">SFFError</a></li>
155 <li><a href="./Seq.html">Seq</a></li>
157 <li><a href="./SeqError.html">SeqError</a></li>
159 <li><a href="./Status.html">Status</a></li>
161 <li><a href="./Stream.html">Stream</a></li>
163 <li><a href="./String.html">String</a></li>
165 <li><a href="./StringError.html">StringError</a></li>
168 <div id="no-class-search-results" style="display: none;">No matching classes.</div>
175 <div id="documentation">
176 <h1 class="class">Base36</h1>
178 <div id="description">
180 Class containing methods to encode and decode Base 36. Note that the ALPH
181 is [alph + num] and not [num + alph] which prevents us from simply using
182 .to_i(36) and .to_s(36).
186 href="http://en.wikipedia.org/wiki/Base_36">en.wikipedia.org/wiki/Base_36</a>
199 <div id="public-class-method-details" class="method-section section">
200 <h3 class="section-header">Public Class Methods</h3>
203 <div id="decode-method" class="method-detail ">
204 <a name="method-c-decode"></a>
206 <div class="method-heading">
208 <span class="method-name">decode</span><span
209 class="method-args">(base36)</span>
210 <span class="method-click-advice">click to toggle source</span>
214 <div class="method-description">
217 Method that decodes a base36 string and returns an integer.
222 <div class="method-source-code"
225 <span class="ruby-comment cmt"># File base36.rb, line 55</span>
226 55: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">decode</span>(<span class="ruby-identifier">base36</span>)
227 56: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Base36Error</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">base36</span>.<span class="ruby-identifier">empty?</span>
229 58: <span class="ruby-identifier">result</span> = <span class="ruby-value">0</span>
230 59: <span class="ruby-identifier">pos</span> = <span class="ruby-value">0</span>
232 61: <span class="ruby-identifier">base36</span>.<span class="ruby-identifier">upcase</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">each_char</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">char</span><span class="ruby-operator">|</span>
233 62: <span class="ruby-identifier">result</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">ALPH</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">char</span>) * (<span class="ruby-constant">BASE36</span> <span class="ruby-operator">**</span> <span class="ruby-identifier">pos</span>)
234 63: <span class="ruby-identifier">pos</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
235 64: <span class="ruby-keyword kw">end</span>
237 66: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>;
238 67: <span class="ruby-keyword kw">end</span></pre>
249 <div id="encode-method" class="method-detail ">
250 <a name="method-c-encode"></a>
252 <div class="method-heading">
254 <span class="method-name">encode</span><span
255 class="method-args">(num)</span>
256 <span class="method-click-advice">click to toggle source</span>
260 <div class="method-description">
263 Method that encodes an integer into a base36 string that is returned.
268 <div class="method-source-code"
271 <span class="ruby-comment cmt"># File base36.rb, line 39</span>
272 39: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">encode</span>(<span class="ruby-identifier">num</span>)
273 40: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Base36Error</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">num</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Fixnum</span>
275 42: <span class="ruby-identifier">base36</span> = <span class="ruby-value str">""</span>
277 44: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">num</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
278 45: <span class="ruby-identifier">base36</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">ALPH</span>[(<span class="ruby-identifier">num</span> <span class="ruby-operator">%</span> <span class="ruby-constant">BASE36</span>)]
279 46: <span class="ruby-identifier">num</span> <span class="ruby-operator">/=</span> <span class="ruby-constant">BASE36</span>
280 47: <span class="ruby-keyword kw">end</span>
282 49: <span class="ruby-identifier">base36</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">ALPH</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">num</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
284 51: <span class="ruby-identifier">base36</span>.<span class="ruby-identifier">reverse</span>
285 52: <span class="ruby-keyword kw">end</span></pre>
302 <div id="rdoc-debugging-section-dump" class="debugging-section">
304 <p>Disabled; run with --debug to generate this.</p>
308 <div id="validator-badges">
309 <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
310 <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
311 Rdoc Generator</a> 1.1.6</small>.</p>