Project

sjekksum

0.01
Repository is archived
No commit activity in last 3 years
No release in over 3 years
A gem to provide some checksum algorithms like Damm, ISBN-10/13, Luhn, UPC and Verhoeff.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.5
~> 0.5
>= 0
>= 0
~> 3.1
 Project Readme

Sjekksum

Gem Version Gem License Build Status Support via Gratipay

A gem to provide some checksum algorithms like Damm, ISBN-10/13, Luhn, UPC and Verhoeff.


All used algorithms for generating and validating checksums must calculate a single check digit only.

More extensive checksum algorithms like Adler-32, CRC, BSD checksum, SYSV checksum, all hash algorithms and friends are not part of this project.

Furthermore this gem does not allow any other input type than integers or strings of integer digits to simplify transformations here (so all extended algorithms allowing characters are not included as well).

For the string inputs all non-integer bytes are thrown away:

"01-234.567 89"
#=>
"0123456789" # cleaned string
#=>
[0,1,2,3,4,5,6,7,8,9] # internal digits representation

Shortly: This gem tries to follow the UNIX philosophy in parts: »Write programs that do one thing and do it well.«

Installation

Add this line to your application's Gemfile:

gem "sjekksum"

And then execute:

bundle

Or install it yourself as:

gem install sjekksum

Usage

require "sjekksum"

Sjekksum.damm(572)                     #=> 4
Sjekksum.damm!(572)                    #=> 5724
Sjekksum.damm?(5724)                   #=> true

Sjekksum.isbn10("147743025")           #=> 3
Sjekksum.isbn10!("147743025")          #=> "1477430253"
Sjekksum.isbn10?("1477430253")         #=> true

Sjekksum.isbn13("978-0-306-40615-")    #=> 7
Sjekksum.isbn13!("978-0-306-40615-")   #=> "978-0-306-40615-7"
Sjekksum.isbn13?("978-0-306-40615-7")  #=> true

Sjekksum.luhn(7992739871)              #=> 3
Sjekksum.luhn!(7992739871)             #=> 79927398713
Sjekksum.luhn?(79927398713)            #=> true

Sjekksum.upc("03600024145")            #=> 7
Sjekksum.upc!("03600024145")           #=> "036000241457"
Sjekksum.upc?("036000241457")          #=> true

Sjekksum.verhoeff(142857)              #=> 0
Sjekksum.verhoeff!(142857)             #=> 1428570
Sjekksum.verhoeff?(1428570)            #=> true

Sjekksum.primitive(232323)             #=> 6
Sjekksum.primitive!(232323)            #=> 2323236
Sjekksum.primitive?(2323236)           #=> true

Sjekksum.primitive97(23569)            #=> 5
Sjekksum.primitive97!(23569)           #=> 235695
Sjekksum.primitive97?(235695)          #=> true

Documentation

... can be found at http://rdoc.info/github/asaaki/sjekksum/master/frames

License

MIT/X11

Copyright (c) 2013—2014 Christoph Grabo