Class Barby::Barcode
In: lib/barby/barcode.rb
Parent: Object
EAN13 Bookland EAN8 Barcode1D Code128 Code25 Code93 Code39 Barcode Barcode2D QrCode Pdf417 Code128A Code128B Code128C GS1128 Outputter CairoOutputter PngOutputter ASCIIOutputter PDFWriterOutputter RmagickOutputter PrawnOutputter SvgOutputter Code25IATA Code25Interleaved lib/barby/barcode/gs1_128.rb lib/barby/outputter/png_outputter.rb lib/barby/outputter/svg_outputter.rb lib/barby/outputter/rmagick_outputter.rb lib/barby/barcode.rb lib/barby/outputter/ascii_outputter.rb lib/barby/outputter.rb lib/barby/barcode/code_128.rb lib/barby/barcode/code_39.rb lib/barby/outputter/pdfwriter_outputter.rb lib/barby/barcode/code_93.rb lib/barby/outputter/prawn_outputter.rb lib/barby/barcode/pdf_417.rb lib/barby/barcode/ean_8.rb lib/barby/barcode/code_25_iata.rb lib/barby/outputter/cairo_outputter.rb lib/barby/barcode/ean_13.rb lib/barby/barcode/code_25.rb lib/barby/barcode/code_25_interleaved.rb lib/barby/barcode/qr_code.rb lib/barby/barcode/bookland.rb VERSION Barby dot/m_22_0.png

The base class for all barcodes. It includes some method_missing magic that is used to find registered outputters.

The only interface requirement of a barcode class is that is has an encoding method that returns a string consisting of 1s and 0s representing the barcode‘s "black" and "white" parts. One digit is the width of the "X dimension"; that is, "101100" represents a single-width bar followed by a single-width space, then a bar and a space twice that width.

Example implementation:

 class StaticBarcode < Barby::Barcode1D
  def encoding
   '101100111000111100001'
  end
 end

 require 'barby/outputter/ascii_outputter'
 puts StaticBarcode.new.to_ascii(:height => 3)

 # ##  ###   ####    #
 # ##  ###   ####    #
 # ##  ###   ####    #

2D implementation:

 class Static2DBarcode < Barby::Barcode2D
   def encoding
     ['1010101', '010101110', '0001010100']
   end
 end

Methods

Public Class methods

[Source]

    # File lib/barby/barcode.rb, line 91
91:       def outputters
92:         @@outputters ||= {}
93:       end

Registers an outputter with name so that a call to name on a Barcode instance will be delegated to this outputter

[Source]

    # File lib/barby/barcode.rb, line 97
97:       def register_outputter(name, klass, method_name)
98:         outputters[name] = [klass, method_name]
99:       end

Public Instance methods

Every barcode must have an encoding method. This method returns a string containing a series of 1 and 0, representing bars and spaces. One digit is the width of one "module" or X dimension.

If the barcode is 2D, it returns an array of strings representing each line in the barcode

[Source]

    # File lib/barby/barcode.rb, line 44
44:     def encoding
45:       raise NotImplementedError, 'Every barcode should implement this method'
46:     end

Get the outputter class object for name

[Source]

    # File lib/barby/barcode.rb, line 84
84:     def outputter_class_for(name)
85:       self.class.outputters[name].first
86:     end

Returns an instantiated outputter for name if any outputter has registered that name

[Source]

    # File lib/barby/barcode.rb, line 79
79:     def outputter_for(name, *a, &b)
80:       outputter_class_for(name).new(self, *a, &b)
81:     end

[Source]

    # File lib/barby/barcode.rb, line 55
55:     def to_s
56:       self.class.name.split('::').last
57:     end

Is this barcode 2D?

[Source]

    # File lib/barby/barcode.rb, line 61
61:     def two_dimensional?
62:       is_a? Barcode2D
63:     end

Is this barcode valid?

[Source]

    # File lib/barby/barcode.rb, line 50
50:     def valid?
51:       false
52:     end

[Validate]