Class Barby::Code25
In: lib/barby/barcode/code_25.rb
Parent: Barcode1D
Barcode1D EAN13 Code128 Code25 Code93 Code39 Bookland EAN8 Barcode Barcode2D QrCode Code128A Code128B Code128C GS1128 Outputter CairoOutputter PngOutputter ASCIIOutputter RmagickOutputter PDFWriterOutputter SvgOutputter PrawnOutputter 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/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

Standard/Industrial 2 of 5, non-interleaved

Checksum not included by default, to include it, set include_checksum = true

Methods

Constants

WIDE = W = true
NARROW = N = false
START_ENCODING = [W,W,N]
STOP_ENCODING = [W,N,W]
ENCODINGS = { 0 => [N,N,W,W,N], 1 => [W,N,N,N,W], 2 => [N,W,N,N,W], 3 => [W,W,N,N,N], 4 => [N,N,W,N,W], 5 => [W,N,W,N,N], 6 => [N,W,W,N,N], 7 => [N,N,N,W,W], 8 => [W,N,N,W,N], 9 => [N,W,N,W,N]

Attributes

data  [RW] 
include_checksum  [RW] 
narrow_width  [RW] 
space_width  [RW] 
wide_width  [RW] 

Public Class methods

[Source]

    # File lib/barby/barcode/code_25.rb, line 34
34:     def initialize(data)
35:       self.data = data
36:     end

Public Instance methods

character_encodings()

Alias for digit_encodings

character_encodings_with_checksum()

[Source]

    # File lib/barby/barcode/code_25.rb, line 52
52:     def characters
53:       data.split(//)
54:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 56
56:     def characters_with_checksum
57:       characters.push(checksum.to_s)
58:     end

Mod10

[Source]

     # File lib/barby/barcode/code_25.rb, line 106
106:     def checksum
107:       evens, odds = even_and_odd_digits
108:       sum = odds.inject(0){|sum,d| sum + d } + evens.inject(0){|sum,d| sum + (d*3) }
109:       sum %= 10
110:       sum.zero? ? 0 : 10-sum
111:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 113
113:     def checksum_encoding
114:       encoding_for(checksum)
115:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 146
146:     def data=(data)
147:       @data = "#{data}"
148:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 39
39:     def data_encoding
40:       digit_encodings.join
41:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 43
43:     def data_encoding_with_checksum
44:       digit_encodings_with_checksum.join
45:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 74
74:     def digit_encodings
75:       raise_invalid unless valid?
76:       digits.map{|d| encoding_for(d) }
77:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 80
80:     def digit_encodings_with_checksum
81:       raise_invalid unless valid?
82:       digits_with_checksum.map{|d| encoding_for(d) }
83:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 60
60:     def digits
61:       characters.map{|c| c.to_i }
62:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 64
64:     def digits_with_checksum
65:       digits.push(checksum)
66:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 47
47:     def encoding
48:       start_encoding+(include_checksum? ? data_encoding_with_checksum : data_encoding)+stop_encoding
49:     end

Returns the encoding for a single digit

[Source]

    # File lib/barby/barcode/code_25.rb, line 88
88:     def encoding_for(digit)
89:       encoding_for_bars(ENCODINGS[digit])
90:     end

Generate encoding for an array of W,N

[Source]

    # File lib/barby/barcode/code_25.rb, line 93
93:     def encoding_for_bars(*bars)
94:       wide, narrow, space = wide_encoding, narrow_encoding, space_encoding
95:       bars.flatten.inject '' do |enc,bar|
96:         enc + (bar == WIDE ? wide : narrow) + space
97:       end
98:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 100
100:     def encoding_for_bars_without_end_space(*a)
101:       encoding_for_bars(*a).gsub(/0+$/, '')
102:     end

[Source]

    # File lib/barby/barcode/code_25.rb, line 68
68:     def even_and_odd_digits
69:       alternater = false
70:       digits.reverse.partition{ alternater = !alternater }
71:     end

2 of 5 doesn‘t require a checksum, but you can include a Mod10 checksum by setting include_checksum to true

[Source]

     # File lib/barby/barcode/code_25.rb, line 141
141:     def include_checksum?
142:       include_checksum
143:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 160
160:     def narrow_encoding
161:       '1' * narrow_width
162:     end

The width of a narrow bar in xdims

[Source]

     # File lib/barby/barcode/code_25.rb, line 119
119:     def narrow_width
120:       @narrow_width || 1
121:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 168
168:     def space_encoding
169:       '0' * space_width
170:     end

The width of the space between the bars in xdims By default the same width as a narrow bar

A space serves only as a separator for the bars, there is no encoded meaning in them

[Source]

     # File lib/barby/barcode/code_25.rb, line 134
134:     def space_width
135:       @space_width || narrow_width
136:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 151
151:     def start_encoding
152:       encoding_for_bars(START_ENCODING)
153:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 155
155:     def stop_encoding
156:       encoding_for_bars_without_end_space(STOP_ENCODING)
157:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 178
178:     def to_s
179:       (include_checksum? ? characters_with_checksum : characters).join
180:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 173
173:     def valid?
174:       data =~ /^[0-9]*$/
175:     end

[Source]

     # File lib/barby/barcode/code_25.rb, line 164
164:     def wide_encoding
165:       '1' * wide_width
166:     end

The width of a wide bar in xdims By default three times as wide as a narrow bar

[Source]

     # File lib/barby/barcode/code_25.rb, line 125
125:     def wide_width
126:       @wide_width || narrow_width*3
127:     end

Private Instance methods

[Source]

     # File lib/barby/barcode/code_25.rb, line 185
185:     def raise_invalid
186:       raise ArgumentError, "data not valid"
187:     end

[Validate]