| Class | Barby::Code25Interleaved |
| In: |
lib/barby/barcode/code_25_interleaved.rb
|
| Parent: | Code25 |
Code 2 of 5 interleaved. Same as standard 2 of 5, but spaces are used for encoding as well as the bars. Each pair of numbers get interleaved, that is, the first is encoded in the bars and the second is encoded in the spaced. This means an interleaved 2/5 barcode must have an even number of digits.
| START_ENCODING | = | [N,N,N,N] |
| STOP_ENCODING | = | [W,N,N] |
# File lib/barby/barcode/code_25_interleaved.rb, line 29
29: def digit_encodings
30: raise_invalid unless valid?
31: digit_pairs.map{|p| encoding_for_pair(p) }
32: end
# File lib/barby/barcode/code_25_interleaved.rb, line 34
34: def digit_encodings_with_checksum
35: digit_pairs_with_checksum.map{|p| encoding_for_pair(p) }
36: end
# File lib/barby/barcode/code_25_interleaved.rb, line 16
16: def digit_pairs(d=nil)
17: (d || digits).inject [] do |ary,d|
18: ary << [] if !ary.last || ary.last.size == 2
19: ary.last << d
20: ary
21: end
22: end
# File lib/barby/barcode/code_25_interleaved.rb, line 24
24: def digit_pairs_with_checksum
25: digit_pairs(digits_with_checksum)
26: end
Encodes an array of interleaved W or N bars and spaces ex: [W,N,W,W,N,N] => "111011100010"
# File lib/barby/barcode/code_25_interleaved.rb, line 47
47: def encoding_for_interleaved(*bars_and_spaces)
48: bar = false#starts with bar
49: bars_and_spaces.flatten.inject '' do |enc,bar_or_space|
50: bar = !bar
51: enc << (bar ? '1' : '0') * (bar_or_space == WIDE ? wide_width : narrow_width)
52: end
53: end
# File lib/barby/barcode/code_25_interleaved.rb, line 39
39: def encoding_for_pair(pair)
40: bars, spaces = ENCODINGS[pair.first], ENCODINGS[pair.last]
41: encoding_for_interleaved(bars.zip(spaces))
42: end
# File lib/barby/barcode/code_25_interleaved.rb, line 56
56: def start_encoding
57: encoding_for_interleaved(START_ENCODING)
58: end