Sha256: 6b4c09ab3578f1a8eba6f598a1d80ee14d8eba62a95d8a2f31b730107ff2cb74

Contents?: true

Size: 890 Bytes

Versions: 18

Compression:

Stored size: 890 Bytes

Contents

require 'barby/barcode/ean_13'

module Barby

  #Bookland barcodes are EAN-13 barcodes with number system
  #978 (hence "Bookland"). The data they encode is an ISBN
  #with its check digit removed. This is a convenience class
  #that takes an ISBN no instead of "pure" EAN-13 data.
  class Bookland < EAN13

    BOOKLAND_NUMBER_SYSTEM = '978'

    attr_accessor :isbn

    def initialize(isbn)
      self.isbn = isbn
      raise ArgumentError, 'data not valid' unless valid?
    end

    def data
      BOOKLAND_NUMBER_SYSTEM+isbn_only
    end

    #Removes any non-digit characters, number system and check digit
    #from ISBN, so "978-82-92526-14-9" would result in "829252614"
    def isbn_only
      s = isbn.gsub(/[^0-9]/, '')
      if s.size > 10#Includes number system
        s[3,9]
      else#No number system, may include check digit
        s[0,9]
      end
    end

  end

end

Version data entries

18 entries across 18 versions & 3 rubygems

Version Path
arena_barby-0.3.2 lib/barby/barcode/bookland.rb
barby-chunky_png-0.3.4 lib/barby/barcode/bookland.rb
barby-0.5.0 lib/barby/barcode/bookland.rb
barby-0.4.5 lib/barby/barcode/bookland.rb
barby-0.4.4 lib/barby/barcode/bookland.rb
barby-0.4.3 lib/barby/barcode/bookland.rb
barby-0.4.2 lib/barby/barcode/bookland.rb
barby-0.4.1 lib/barby/barcode/bookland.rb
barby-0.4.0 lib/barby/barcode/bookland.rb
barby-chunky_png-0.3.3 lib/barby/barcode/bookland.rb
barby-0.3.2 lib/barby/barcode/bookland.rb
barby-0.3.1 lib/barby/barcode/bookland.rb
barby-0.2.0 lib/barby/barcode/bookland.rb
barby-0.1.2 lib/barby/barcode/bookland.rb
barby-0.1.1 lib/barby/barcode/bookland.rb
barby-0.3.0 lib/barby/barcode/bookland.rb
barby-0.1 lib/barby/barcode/bookland.rb
barby-0.2.1 lib/barby/barcode/bookland.rb