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