library_stdnums 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ * 1.3.0 (2013.05.24)
2
+ * Added #at_least_trying? to do a basic syntax check for ISSN/ISBN
3
+ * Overload #valid? for ISBN/ISSN such that it returns 'nil' for bad syntax and
4
+ 'false' for good-looking syntax, but bad checkdigit
1
5
  * 1.2.0 (2012.07.24)
2
6
  * Added a bunch of tests for LCCN normalization from perl module Business::LCCN
3
7
  (http://search.cpan.org/~anirvan/Business-LCCN/)
@@ -51,6 +51,12 @@ module StdNum
51
51
  # Validate, convert, and normalize ISBNs (10-digit or 13-digit)
52
52
  module ISBN
53
53
  extend Helpers
54
+
55
+ # Does it even look like an ISBN?
56
+ def self.at_least_trying? isbn
57
+ return !(reduce_to_basics(isbn, [10,13]))
58
+ end
59
+
54
60
 
55
61
  # Compute check digits for 10 or 13-digit ISBNs. See algorithm at
56
62
  # http://en.wikipedia.org/wiki/International_Standard_Book_Number
@@ -86,11 +92,13 @@ module StdNum
86
92
  # Check to see if the checkdigit is correct
87
93
  # @param [String] isbn The ISBN (we'll try to clean it up if possible)
88
94
  # @param [Boolean] preprocessed Set to true if the ISBN has already been through reduce_to_basics
89
- # @return [Boolean] Whether or not the checkdigit is correct
95
+ # @return [Boolean] Whether or not the checkdigit is correct. Sneakily, return 'nil' for
96
+ # values that don't even look like ISBNs, and 'false' for those that look possible but
97
+ # don't normalize / have bad checkdigits
90
98
  def self.valid? isbn, preprocessed = false
91
99
  return nil if isbn.nil?
92
100
  isbn = reduce_to_basics(isbn, [10,13]) unless preprocessed
93
- return false unless isbn
101
+ return nil unless isbn
94
102
  return false unless isbn[-1..-1] == self.checkdigit(isbn, true)
95
103
  return true
96
104
  end
@@ -171,6 +179,13 @@ module StdNum
171
179
  module ISSN
172
180
  extend Helpers
173
181
 
182
+
183
+ # Does it even look like an ISSN?
184
+ def self.at_least_trying? isbn
185
+ return !(reduce_to_basics(issn, 8))
186
+ end
187
+
188
+
174
189
  # Compute the checkdigit of an ISSN
175
190
  # @param [String] issn The ISSN (we'll try to clean it up if possible)
176
191
  # @param [Boolean] preprocessed Set to true if the number has already been through reduce_to_basic
@@ -195,11 +210,13 @@ module StdNum
195
210
  # Check to see if the checkdigit is correct
196
211
  # @param [String] issn The ISSN (we'll try to clean it up if possible)
197
212
  # @param [Boolean] preprocessed Set to true if the number has already been through reduce_to_basic
198
- # @return [Boolean] Whether or not the checkdigit is correct
213
+ # @return [Boolean] Whether or not the checkdigit is correct. Sneakily, return 'nil' for
214
+ # values that don't even look like ISBNs, and 'false' for those that look possible but
215
+ # don't normalize / have bad checkdigits
199
216
 
200
217
  def self.valid? issn, preprocessed = false
201
218
  issn = reduce_to_basics issn, 8 unless preprocessed
202
- return false unless issn
219
+ return nil unless issn
203
220
  return issn[-1..-1] == self.checkdigit(issn, true)
204
221
  end
205
222
 
@@ -1,4 +1,4 @@
1
1
  module LibraryStdnums
2
2
  # library_stdnums version
3
- VERSION = "1.2.0"
3
+ VERSION = "1.3.0"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: library_stdnums
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-25 00:00:00.000000000 Z
12
+ date: 2013-05-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  version: '0'
89
89
  requirements: []
90
90
  rubyforge_project:
91
- rubygems_version: 1.8.24
91
+ rubygems_version: 1.8.23
92
92
  signing_key:
93
93
  specification_version: 3
94
94
  summary: Normalize and validate ISBN / ISSN/ LCCN