isbn-converter 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ Tue Mar 14 08:21:12 Eastern Standard Time 2006
@@ -0,0 +1,180 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: isbn-converter.rb</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>isbn-converter.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/isbn-converter.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Tue Mar 14 08:20:30 Eastern Standard Time 2006</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+ <div id="description">
72
+ <p>
73
+ Convert ISBN as 10-digit string to 13-digit string Can handle dashes,
74
+ returns nil if the ISBN is not 10 digits Also returns the ISBN if ISBN is
75
+ 13 digits and begins with 978 or 979 Por ejemplo:
76
+ to13(&quot;0940016737&quot;)
77
+ </p>
78
+
79
+ </div>
80
+
81
+
82
+ </div>
83
+
84
+ <div id="method-list">
85
+ <h3 class="section-bar">Methods</h3>
86
+
87
+ <div class="name-list">
88
+ <a href="#M000003">clean</a>&nbsp;&nbsp;
89
+ <a href="#M000002">to10</a>&nbsp;&nbsp;
90
+ <a href="#M000001">to13</a>&nbsp;&nbsp;
91
+ </div>
92
+ </div>
93
+
94
+ </div>
95
+
96
+
97
+ <!-- if includes -->
98
+
99
+ <div id="section">
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+ <!-- if method_list -->
109
+ <div id="methods">
110
+ <h3 class="section-bar">Public Instance methods</h3>
111
+
112
+ <div id="method-M000003" class="method-detail">
113
+ <a name="M000003"></a>
114
+
115
+ <div class="method-heading">
116
+ <a href="isbn-converter_rb.src/M000003.html" target="Code" class="method-signature"
117
+ onclick="popupCode('isbn-converter_rb.src/M000003.html');return false;">
118
+ <span class="method-name">clean</span><span class="method-args">(isbn)</span>
119
+ </a>
120
+ </div>
121
+
122
+ <div class="method-description">
123
+ <p>
124
+ This helper method just cleans up ISBNs
125
+ </p>
126
+ </div>
127
+ </div>
128
+
129
+ <div id="method-M000002" class="method-detail">
130
+ <a name="M000002"></a>
131
+
132
+ <div class="method-heading">
133
+ <a href="isbn-converter_rb.src/M000002.html" target="Code" class="method-signature"
134
+ onclick="popupCode('isbn-converter_rb.src/M000002.html');return false;">
135
+ <span class="method-name">to10</span><span class="method-args">(isbn)</span>
136
+ </a>
137
+ </div>
138
+
139
+ <div class="method-description">
140
+ <p>
141
+ Convert ISBN as 13-digit string to 10-digit string Can handle dashes,
142
+ returns nil if the ISBN is not 13 digits Por ejemplo:
143
+ to10(&quot;978-0-940016-73-6&quot;)
144
+ </p>
145
+ </div>
146
+ </div>
147
+
148
+ <div id="method-M000001" class="method-detail">
149
+ <a name="M000001"></a>
150
+
151
+ <div class="method-heading">
152
+ <a href="isbn-converter_rb.src/M000001.html" target="Code" class="method-signature"
153
+ onclick="popupCode('isbn-converter_rb.src/M000001.html');return false;">
154
+ <span class="method-name">to13</span><span class="method-args">(isbn)</span>
155
+ </a>
156
+ </div>
157
+
158
+ <div class="method-description">
159
+ <p>
160
+ Convert ISBN as 10-digit string to 13-digit string Can handle dashes,
161
+ returns nil if the ISBN is not 10 digits Also returns the ISBN if ISBN is
162
+ 13 digits and begins with 978 or 979 Por ejemplo:
163
+ to13(&quot;0940016737&quot;)
164
+ </p>
165
+ </div>
166
+ </div>
167
+
168
+
169
+ </div>
170
+
171
+
172
+ </div>
173
+
174
+
175
+ <div id="validator-badges">
176
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
177
+ </div>
178
+
179
+ </body>
180
+ </html>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>to13 (lib/isbn-converter.rb)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/isbn-converter.rb, line 5</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to13</span>(<span class="ruby-identifier">isbn</span>)
15
+ <span class="ruby-identifier">isbn</span> = <span class="ruby-identifier">clean</span>(<span class="ruby-identifier">isbn</span>)
16
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">isbn</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">13</span> <span class="ruby-operator">&amp;&amp;</span> [<span class="ruby-value str">&quot;978&quot;</span>,<span class="ruby-value str">&quot;979&quot;</span>].<span class="ruby-identifier">member?</span>(<span class="ruby-identifier">isbn</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>])
17
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">isbn</span>
18
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">isbn</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-value">10</span>
19
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
20
+ <span class="ruby-keyword kw">end</span>
21
+ <span class="ruby-identifier">new_isbn</span> = <span class="ruby-value str">&quot;978&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">isbn</span>.<span class="ruby-identifier">chop</span>
22
+ <span class="ruby-identifier">check</span> = <span class="ruby-value">0</span>
23
+ <span class="ruby-identifier">new_isbn</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">//</span>).<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">digit</span>, <span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
24
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">index</span> <span class="ruby-operator">%</span> <span class="ruby-value">2</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
25
+ <span class="ruby-identifier">check</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">digit</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-value">1</span>
26
+ <span class="ruby-keyword kw">else</span>
27
+ <span class="ruby-identifier">check</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">digit</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-value">3</span>
28
+ <span class="ruby-keyword kw">end</span>
29
+ <span class="ruby-keyword kw">end</span>
30
+ <span class="ruby-identifier">check</span> = <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">check</span> <span class="ruby-operator">%</span> <span class="ruby-value">10</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">else</span> <span class="ruby-value">10</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">check</span> <span class="ruby-operator">%</span> <span class="ruby-value">10</span>) <span class="ruby-keyword kw">end</span>
31
+ <span class="ruby-identifier">new_isbn</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">check</span>.<span class="ruby-identifier">to_s</span>
32
+ <span class="ruby-keyword kw">end</span></pre>
33
+ </body>
34
+ </html>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>to10 (lib/isbn-converter.rb)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/isbn-converter.rb, line 28</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to10</span>(<span class="ruby-identifier">isbn</span>)
15
+ <span class="ruby-identifier">isbn</span> = <span class="ruby-identifier">clean</span>(<span class="ruby-identifier">isbn</span>)
16
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">isbn</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">13</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">isbn</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;979&quot;</span>
17
+ <span class="ruby-identifier">new_isbn</span> = <span class="ruby-identifier">isbn</span>.<span class="ruby-identifier">chop</span>[<span class="ruby-value">3</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">isbn</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)]
18
+ <span class="ruby-identifier">check</span> = <span class="ruby-value">0</span>
19
+ <span class="ruby-value">10</span>.<span class="ruby-identifier">downto</span>(<span class="ruby-value">2</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">check</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">new_isbn</span>[(<span class="ruby-value">10</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">n</span>)<span class="ruby-operator">..</span>(<span class="ruby-value">10</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">n</span>)].<span class="ruby-identifier">to_i</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">n</span> }
20
+ <span class="ruby-identifier">check</span> = <span class="ruby-value">11</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">check</span> <span class="ruby-operator">%</span> <span class="ruby-value">11</span>)
21
+ <span class="ruby-identifier">check</span> = <span class="ruby-value str">&quot;X&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">check</span> <span class="ruby-operator">==</span> <span class="ruby-value">10</span>
22
+ <span class="ruby-identifier">new_isbn</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">check</span>.<span class="ruby-identifier">to_s</span>
23
+ <span class="ruby-keyword kw">end</span></pre>
24
+ </body>
25
+ </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>clean (lib/isbn-converter.rb)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/isbn-converter.rb, line 40</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clean</span>(<span class="ruby-identifier">isbn</span>)
15
+ <span class="ruby-identifier">isbn</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^0-9X]/</span>,<span class="ruby-value str">''</span>)
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,26 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Classes
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Classes</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Classes</h1>
22
+ <div id="index-entries">
23
+ </div>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,27 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Files
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Files</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Files</h1>
22
+ <div id="index-entries">
23
+ <a href="files/lib/isbn-converter_rb.html">lib/isbn-converter.rb</a><br />
24
+ </div>
25
+ </div>
26
+ </body>
27
+ </html>
@@ -0,0 +1,29 @@
1
+
2
+ <?xml version="1.0" encoding="iso-8859-1"?>
3
+ <!DOCTYPE html
4
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
5
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
+
7
+ <!--
8
+
9
+ Methods
10
+
11
+ -->
12
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
13
+ <head>
14
+ <title>Methods</title>
15
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
16
+ <link rel="stylesheet" href="rdoc-style.css" type="text/css" />
17
+ <base target="docwin" />
18
+ </head>
19
+ <body>
20
+ <div id="index">
21
+ <h1 class="section-bar">Methods</h1>
22
+ <div id="index-entries">
23
+ <a href="files/lib/isbn-converter_rb.html#M000003">clean (lib/isbn-converter.rb)</a><br />
24
+ <a href="files/lib/isbn-converter_rb.html#M000002">to10 (lib/isbn-converter.rb)</a><br />
25
+ <a href="files/lib/isbn-converter_rb.html#M000001">to13 (lib/isbn-converter.rb)</a><br />
26
+ </div>
27
+ </div>
28
+ </body>
29
+ </html>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
+
6
+ <!--
7
+
8
+ RDoc Documentation
9
+
10
+ -->
11
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
+ <head>
13
+ <title>RDoc Documentation</title>
14
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
+ </head>
16
+ <frameset rows="20%, 80%">
17
+ <frameset cols="25%,35%,45%">
18
+ <frame src="fr_file_index.html" title="Files" name="Files" />
19
+ <frame src="fr_class_index.html" name="Classes" />
20
+ <frame src="fr_method_index.html" name="Methods" />
21
+ </frameset>
22
+ <frame src="files/lib/isbn-converter_rb.html" name="docwin" />
23
+ </frameset>
24
+ </html>
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
@@ -0,0 +1,42 @@
1
+ # Convert ISBN as 10-digit string to 13-digit string
2
+ # Can handle dashes, returns nil if the ISBN is not 10 digits
3
+ # Also returns the ISBN if ISBN is 13 digits and begins with 978 or 979
4
+ # Por ejemplo: to13("0940016737")
5
+ def to13(isbn)
6
+ isbn = clean(isbn)
7
+ if isbn.length == 13 && ["978","979"].member?(isbn[0..2])
8
+ return isbn
9
+ elsif isbn.length != 10
10
+ return nil
11
+ end
12
+ new_isbn = "978" + isbn.chop
13
+ check = 0
14
+ new_isbn.split(//).each_with_index do |digit, index|
15
+ if index % 2 == 0
16
+ check += digit.to_i * 1
17
+ else
18
+ check += digit.to_i * 3
19
+ end
20
+ end
21
+ check = if check % 10 == 0 then 0 else 10 - (check % 10) end
22
+ new_isbn + check.to_s
23
+ end
24
+
25
+ # Convert ISBN as 13-digit string to 10-digit string
26
+ # Can handle dashes, returns nil if the ISBN is not 13 digits
27
+ # Por ejemplo: to10("978-0-940016-73-6")
28
+ def to10(isbn)
29
+ isbn = clean(isbn)
30
+ return nil unless isbn.length == 13 && isbn[0..2] != "979"
31
+ new_isbn = isbn.chop[3..(isbn.length - 1)]
32
+ check = 0
33
+ 10.downto(2) { |n| check += new_isbn[(10 - n)..(10 - n)].to_i * n }
34
+ check = 11 - (check % 11)
35
+ check = "X" if check == 10
36
+ new_isbn + check.to_s
37
+ end
38
+
39
+ # This helper method just cleans up ISBNs
40
+ def clean(isbn)
41
+ isbn.gsub(/[^0-9X]/,'')
42
+ end
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.10
3
+ specification_version: 1
4
+ name: isbn-converter
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2006-03-14
8
+ summary: Provides methods to convert ISBNs to and from 13-digit format.
9
+ require_paths:
10
+ - lib
11
+ email: justindz@gmail.com
12
+ homepage: http://rubyforge.org/projects/librarysolution
13
+ rubyforge_project:
14
+ description:
15
+ autorequire: isbn-converter
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: "true"
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ -
22
+ - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: ruby
27
+ authors:
28
+ - Justin Duewel-Zahniser
29
+ files:
30
+ - lib/isbn-converter.rb
31
+ - doc/classes
32
+ - doc/created.rid
33
+ - doc/files
34
+ - doc/fr_class_index.html
35
+ - doc/fr_file_index.html
36
+ - doc/fr_method_index.html
37
+ - doc/index.html
38
+ - doc/rdoc-style.css
39
+ - doc/files/lib
40
+ - doc/files/lib/isbn-converter_rb.html
41
+ - doc/files/lib/isbn-converter_rb.src
42
+ - doc/files/lib/isbn-converter_rb.src/M000001.html
43
+ - doc/files/lib/isbn-converter_rb.src/M000002.html
44
+ - doc/files/lib/isbn-converter_rb.src/M000003.html
45
+ test_files: []
46
+ rdoc_options: []
47
+ extra_rdoc_files: []
48
+ executables: []
49
+ extensions: []
50
+ requirements: []
51
+ dependencies: []