This library Petrarca provides some utility functions to manipulate ISBN numbers:
- Validation
- Calculate check digit
- Mutual conversion of ISBN-13 and ISBN-10
- Hyphenation / Dehyphenation
- Split to an array that includes ISBN segments
All functions support both ISBN-13 and ISBN-10.
All ranges of registration groups and registrants are supported. Those depend indirectly on data published by the International ISBN agency through 'isbnranges' gem.
In version 1.0.0, the range files have been removed. Instead, the data provided by 'isbnranges' gem is used. See https://github.com/takatoh/ISBNRanges for more information.
No longer update just for range files.
Add this line to your application's Gemfile:
gem "petrarca"
And then execute:
$ bundle
Or install it yourself as:
$ gem install petrarca
irb(main):001:0> require "petrarca"
=> true
irb(main):002:0> Petrarca.valid?("978-4-8156-0644-2")
=> true
irb(main):003:0> Petrarca.calc_check_digit("978-4-8156-0644-2")
=> "2"
irb(main):004:0> Petrarca.to_10("978-4-8156-0644-2")
=> "4-8156-0644-7"
irb(main):005:0> Petrarca.to_13("4-8156-0644-7")
=> "978-4-8156-0644-2"
irb(main):006:0> Petrarca.hyphenate("9784815606442")
=> "978-4-8156-0644-2"
irb(main):007:0> Petrarca.dehyphenate("978-4-8156-0644-2")
=> "9784815605442"
irb(main):008:0> Petrarca.split("9784815606442")
=> ["978", "4", "8156", "0644", "2"]
Petrarca.dehyphenate
and Petrarca.split
are new in v0.6.0.
Accept Integer as ISBN, only if no -
and X
including. (New in v0.5.0)
irb(main):001:0> require 'petrarca'
=> true
irb(main):002:0> Petrarca.calc_check_digit(978481560644)
=> "2"
irb(main):003:0> Petrarca.to_10(9784815606442)
=> "4-8156-0644-7"
irb(main):004:0> Petrarca.to_13(4815606447)
=> "978-4-8156-0644-2"
irb(main):005:0> Petrarca.hyphenate(9784815606442)
=> "978-4-8156-0644-2"
If the ISBN is hyphenated, registration group and registrant are considered in Petrarca.valid?
. The second example below has the invalid registrant.
irb(main):006:0> Petrarca.valid?("978-4-8156-0644-2")
=> true
irb(main):007:0> Petrarca.valid?("978-4-815-60644-2")
=> false
MIT License
Bug reports and pull requests are welcome on GitHub at https://github.com/takatoh/Petrarca.