barcodes 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +6 -0
- data/README.md +24 -24
- data/Rakefile +6 -0
- data/barcodes.gemspec +6 -0
- data/lib/barcodes.rb +52 -0
- data/lib/barcodes/exec.rb +52 -31
- data/lib/barcodes/renderer.rb +6 -0
- data/lib/barcodes/renderer/ascii.rb +7 -0
- data/lib/barcodes/renderer/pdf.rb +6 -0
- data/lib/barcodes/symbology.rb +6 -0
- data/lib/barcodes/symbology/base.rb +55 -15
- data/lib/barcodes/symbology/codabar.rb +23 -0
- data/lib/barcodes/symbology/code11.rb +18 -0
- data/lib/barcodes/symbology/code128.rb +44 -5
- data/lib/barcodes/symbology/code39.rb +21 -0
- data/lib/barcodes/symbology/code39extended.rb +12 -0
- data/lib/barcodes/symbology/code39extendedmod43.rb +14 -0
- data/lib/barcodes/symbology/code39mod43.rb +14 -0
- data/lib/barcodes/symbology/code93.rb +23 -0
- data/lib/barcodes/symbology/code93extended.rb +17 -1
- data/lib/barcodes/symbology/ean.rb +28 -1
- data/lib/barcodes/symbology/ean13.rb +17 -0
- data/lib/barcodes/symbology/ean8.rb +18 -0
- data/lib/barcodes/symbology/interleaved2of5.rb +18 -0
- data/lib/barcodes/symbology/interleaved2of5mod10.rb +14 -0
- data/lib/barcodes/symbology/msi.rb +16 -0
- data/lib/barcodes/symbology/msimod10.rb +14 -0
- data/lib/barcodes/symbology/msimod11.rb +14 -0
- data/lib/barcodes/symbology/planet.rb +24 -1
- data/lib/barcodes/symbology/postnet.rb +24 -1
- data/lib/barcodes/symbology/standard2of5.rb +16 -0
- data/lib/barcodes/symbology/standard2of5mod10.rb +14 -0
- data/lib/barcodes/symbology/upca.rb +16 -0
- data/lib/barcodes/version.rb +9 -1
- data/spec/barcodes/exec_spec.rb +7 -1
- data/spec/barcodes/renderer/ascii_spec.rb +6 -0
- data/spec/barcodes/renderer/pdf_spec.rb +6 -0
- data/spec/barcodes/symbology/base_spec.rb +6 -0
- data/spec/barcodes/symbology/codabar_spec.rb +6 -0
- data/spec/barcodes/symbology/code11_spec.rb +6 -0
- data/spec/barcodes/symbology/code128_spec.rb +6 -0
- data/spec/barcodes/symbology/code39_spec.rb +6 -0
- data/spec/barcodes/symbology/code39extended_spec.rb +6 -0
- data/spec/barcodes/symbology/code39extendedmod43_spec.rb +6 -0
- data/spec/barcodes/symbology/code39mod43_spec.rb +6 -0
- data/spec/barcodes/symbology/code93_spec.rb +6 -0
- data/spec/barcodes/symbology/code93extended_spec.rb +6 -0
- data/spec/barcodes/symbology/ean13_spec.rb +6 -0
- data/spec/barcodes/symbology/ean8_spec.rb +6 -0
- data/spec/barcodes/symbology/ean_spec.rb +6 -0
- data/spec/barcodes/symbology/interleaved2of5_spec.rb +6 -0
- data/spec/barcodes/symbology/interleaved2of5mod10_spec.rb +6 -0
- data/spec/barcodes/symbology/msi_spec.rb +6 -0
- data/spec/barcodes/symbology/msimod10_spec.rb +6 -0
- data/spec/barcodes/symbology/msimod11_spec.rb +6 -0
- data/spec/barcodes/symbology/planet_spec.rb +6 -0
- data/spec/barcodes/symbology/postnet_spec.rb +6 -0
- data/spec/barcodes/symbology/standard2of5_spec.rb +6 -0
- data/spec/barcodes/symbology/standard2of5mod10_spec.rb +6 -0
- data/spec/barcodes/symbology/upca_spec.rb +6 -0
- data/spec/barcodes_spec.rb +6 -0
- data/spec/spec_helper.rb +6 -0
- metadata +8 -8
@@ -1,12 +1,33 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/base'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# This class represents the Codabar symbology.
|
13
|
+
# Codabar can encode the numbers 0-9 and the
|
14
|
+
# following symbols: -,$,:,/,.,+
|
15
|
+
#
|
16
|
+
# More info: http://en.wikipedia.org/wiki/Codabar
|
5
17
|
class Codabar < Base
|
18
|
+
|
19
|
+
# Start character
|
20
|
+
attr_accessor :start_character
|
21
|
+
|
22
|
+
# Stop character
|
23
|
+
attr_accessor :stop_character
|
24
|
+
|
25
|
+
# Codabar character set (0-9,-,$,:,/,.,+)
|
6
26
|
def self.charset
|
7
27
|
['0','1','2','3','4','5','6','7','8','9','-','$',':','/','.','+','A','B','C','D'].collect {|c| c.bytes.to_a[0] }
|
8
28
|
end
|
9
29
|
|
30
|
+
# Codabar values set
|
10
31
|
def self.valueset
|
11
32
|
[
|
12
33
|
'1010100110','1010110010','1010010110','110010101',
|
@@ -17,6 +38,7 @@ module Barcodes
|
|
17
38
|
]
|
18
39
|
end
|
19
40
|
|
41
|
+
# Creates a new Codabar instance with given arguments.
|
20
42
|
def initialize(args={})
|
21
43
|
unless args.has_key? :start_character
|
22
44
|
args[:start_character] = 'A'
|
@@ -28,6 +50,7 @@ module Barcodes
|
|
28
50
|
super(args)
|
29
51
|
end
|
30
52
|
|
53
|
+
# Start character + data + stop character
|
31
54
|
def formatted_data
|
32
55
|
@start_character + @data + @stop_character
|
33
56
|
end
|
@@ -1,12 +1,26 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/base'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# This class represents the Code 11 symbology.
|
13
|
+
# Code 11 can encode the numbers 0-9 and the '-' dash symbol.
|
14
|
+
#
|
15
|
+
# More info: http://en.wikipedia.org/wiki/Code_11
|
5
16
|
class Code11 < Base
|
17
|
+
|
18
|
+
# The Code 11 character set 0-9 and the '-' dash symbol.
|
6
19
|
def self.charset
|
7
20
|
['0','1','2','3','4','5','6','7','8','9','-','S'].collect {|c| c.bytes.to_a[0] }
|
8
21
|
end
|
9
22
|
|
23
|
+
# The Code 11 values set
|
10
24
|
def self.valueset
|
11
25
|
[
|
12
26
|
'1010110','11010110','10010110',
|
@@ -16,6 +30,7 @@ module Barcodes
|
|
16
30
|
]
|
17
31
|
end
|
18
32
|
|
33
|
+
# Creates a new Code11 instance.
|
19
34
|
def initialize(args={})
|
20
35
|
super(args)
|
21
36
|
|
@@ -23,6 +38,7 @@ module Barcodes
|
|
23
38
|
@stop_character = 'S'
|
24
39
|
end
|
25
40
|
|
41
|
+
# Start character + data + checksum + stop character
|
26
42
|
def formatted_data
|
27
43
|
checksum = self.checksum
|
28
44
|
unless checksum.nil?
|
@@ -30,6 +46,7 @@ module Barcodes
|
|
30
46
|
end
|
31
47
|
end
|
32
48
|
|
49
|
+
# Calculates the C and K checksums from the barcode data
|
33
50
|
def checksum
|
34
51
|
if valid?
|
35
52
|
unless @data.length >= 10
|
@@ -45,6 +62,7 @@ module Barcodes
|
|
45
62
|
|
46
63
|
protected
|
47
64
|
|
65
|
+
# Calculate the checksum with given data and weighting
|
48
66
|
def _checksum(data, weight_max)
|
49
67
|
sum = 0
|
50
68
|
weight = 0
|
@@ -1,17 +1,44 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/base'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# This class represents the Code 128 symbology.
|
13
|
+
# Code 128 can encode all 128 ASCII characters using
|
14
|
+
# three different code sets.
|
15
|
+
#
|
16
|
+
# More info: http://en.wikipedia.org/wiki/Code_128
|
17
|
+
#
|
18
|
+
# Assigned to code sets where applicable are the following
|
19
|
+
# special characters representing Code 128 functions:
|
20
|
+
#
|
21
|
+
# * START_A - \xF4
|
22
|
+
# * START_B - \xF5
|
23
|
+
# * START_C - \xF6
|
24
|
+
# * CODE_A - \xF7
|
25
|
+
# * CODE_B - \xF8
|
26
|
+
# * CODE_C - \xF9
|
27
|
+
# * FNC1 - \xFA
|
28
|
+
# * FNC2 - \xFB
|
29
|
+
# * FNC3 - \xFC
|
30
|
+
# * FNC4 - \xFD
|
31
|
+
# * SHIFT - \xFE
|
32
|
+
# * STOP - \xFF
|
5
33
|
class Code128 < Base
|
6
|
-
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# FNC1 - \xFA, FNC2 - \xFB, FNC3 - \xFC, FNC4 - \xFD,
|
10
|
-
# SHIFT - \xFE, STOP - \xFF
|
34
|
+
|
35
|
+
# Code 128 uses three special character sets so this
|
36
|
+
# returns an empty array
|
11
37
|
def self.charset
|
12
38
|
[].collect {|c| c.bytes.to_a[0] }
|
13
39
|
end
|
14
40
|
|
41
|
+
# Character code set A
|
15
42
|
def self.charset_a
|
16
43
|
[
|
17
44
|
" ","!","\"","#","$","%","&","'","(",")","*","+",",","-",".","/",
|
@@ -26,6 +53,7 @@ module Barcodes
|
|
26
53
|
].collect {|c| c.bytes.to_a[0] }
|
27
54
|
end
|
28
55
|
|
56
|
+
# Character code set B
|
29
57
|
def self.charset_b
|
30
58
|
[
|
31
59
|
" ","!","\"","#","$","%","&","'","(",")","*","+",",","-",".","/",
|
@@ -38,6 +66,7 @@ module Barcodes
|
|
38
66
|
].collect {|c| c.bytes.to_a[0] }
|
39
67
|
end
|
40
68
|
|
69
|
+
# Character code set C
|
41
70
|
def self.charset_c
|
42
71
|
[
|
43
72
|
"00","01","02","03","04","05","06","07","08","09","10","11","12","13",
|
@@ -51,6 +80,7 @@ module Barcodes
|
|
51
80
|
].collect {|c| c.bytes.to_a.length > 1 ? c.bytes.to_a : c.bytes.to_a[0] }
|
52
81
|
end
|
53
82
|
|
83
|
+
# Code 128 values set
|
54
84
|
def self.valueset
|
55
85
|
[
|
56
86
|
"11011001100","11001101100","11001100110","10010011000","10010001100",
|
@@ -78,10 +108,12 @@ module Barcodes
|
|
78
108
|
]
|
79
109
|
end
|
80
110
|
|
111
|
+
# Data + checksum + stop character
|
81
112
|
def formatted_data
|
82
113
|
self._prepared_data + self.checksum + "\xFF"
|
83
114
|
end
|
84
115
|
|
116
|
+
# Data encoded as 1's and 0's using three code sets
|
85
117
|
def encoded_data
|
86
118
|
if self.valid?
|
87
119
|
encoded_data = ""
|
@@ -141,6 +173,7 @@ module Barcodes
|
|
141
173
|
end
|
142
174
|
end
|
143
175
|
|
176
|
+
# Calculates the checksum using barcode data
|
144
177
|
def checksum
|
145
178
|
if valid?
|
146
179
|
sum = 0
|
@@ -204,6 +237,7 @@ module Barcodes
|
|
204
237
|
end
|
205
238
|
end
|
206
239
|
|
240
|
+
# Validates the data
|
207
241
|
def valid?
|
208
242
|
valid = @data.length > 0 ? true : false
|
209
243
|
|
@@ -219,6 +253,8 @@ module Barcodes
|
|
219
253
|
|
220
254
|
protected
|
221
255
|
|
256
|
+
# Inspects barcode data and determines the best character sets to use
|
257
|
+
# for provided data
|
222
258
|
def _prepared_data
|
223
259
|
start = "\xF5"
|
224
260
|
charset = "B"
|
@@ -290,10 +326,13 @@ module Barcodes
|
|
290
326
|
return data
|
291
327
|
end
|
292
328
|
|
329
|
+
# Returns nil due to Code 128 using special character sets
|
293
330
|
def _encode_character(character)
|
294
331
|
return nil
|
295
332
|
end
|
296
333
|
|
334
|
+
# Encodes a single character (as ASCII integer) using given
|
335
|
+
# character set
|
297
336
|
def _encode_character_in_charset(character, charset)
|
298
337
|
case charset
|
299
338
|
when 'A'
|
@@ -1,8 +1,23 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/base'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# This class represents the Code 39 symbology.
|
13
|
+
# Code 39 can encode the numbers 0-9 and all capital
|
14
|
+
# letters along with the following symbols: ' ','-',
|
15
|
+
# '.','$','/','+','%','*'
|
16
|
+
#
|
17
|
+
# More info: http://en.wikipedia.org/wiki/Code_39
|
5
18
|
class Code39 < Base
|
19
|
+
|
20
|
+
# The Code 39 character set
|
6
21
|
def self.charset
|
7
22
|
[
|
8
23
|
'0','1','2','3','4','5','6','7','8','9',
|
@@ -13,6 +28,7 @@ module Barcodes
|
|
13
28
|
].collect {|c| c.bytes.to_a[0] }
|
14
29
|
end
|
15
30
|
|
31
|
+
# The Code 39 values set
|
16
32
|
def self.valueset
|
17
33
|
[
|
18
34
|
"1010011011010","1101001010110","1011001010110","1101100101010",
|
@@ -29,6 +45,7 @@ module Barcodes
|
|
29
45
|
]
|
30
46
|
end
|
31
47
|
|
48
|
+
# Creates a new Code39 instance.
|
32
49
|
def initialize(args={})
|
33
50
|
super(args)
|
34
51
|
|
@@ -36,10 +53,14 @@ module Barcodes
|
|
36
53
|
@stop_character = '*'
|
37
54
|
end
|
38
55
|
|
56
|
+
# Code 39 includes the start and stop symbols in
|
57
|
+
# the caption so caption_data is overridden here
|
58
|
+
# to return the formatted data string
|
39
59
|
def caption_data
|
40
60
|
self.formatted_data
|
41
61
|
end
|
42
62
|
|
63
|
+
# Start character + data + stop character
|
43
64
|
def formatted_data
|
44
65
|
@start_character + @data + @stop_character
|
45
66
|
end
|
@@ -1,11 +1,23 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/code39'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# This class represents the Code 39 Extended symbology.
|
13
|
+
# Code 39 Extended can encode all standard ASCII characters.
|
14
|
+
#
|
15
|
+
# More info: http://en.wikipedia.org/wiki/Code_39
|
5
16
|
class Code39Extended < Code39
|
6
17
|
|
7
18
|
protected
|
8
19
|
|
20
|
+
# Encodes given character (as ASCII integer) into 1's and 0's
|
9
21
|
def _encode_character(character)
|
10
22
|
unless (character == 36 || character == 37 || character == 43)
|
11
23
|
unless super(character).nil?
|
@@ -1,12 +1,25 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/code39extended'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# Modulo 43 checksum version of Code 39 Extended
|
13
|
+
#
|
14
|
+
# More info: http://en.wikipedia.org/wiki/Code_39
|
5
15
|
class Code39ExtendedMod43 < Code39Extended
|
16
|
+
|
17
|
+
# Returns caption data without checksum
|
6
18
|
def caption_data
|
7
19
|
@start_character + @data + @stop_character
|
8
20
|
end
|
9
21
|
|
22
|
+
# Start character + data + checksum + stop character
|
10
23
|
def formatted_data
|
11
24
|
checksum = self.checksum
|
12
25
|
unless checksum.nil?
|
@@ -14,6 +27,7 @@ module Barcodes
|
|
14
27
|
end
|
15
28
|
end
|
16
29
|
|
30
|
+
# Calculates the checksum using the provided data
|
17
31
|
def checksum
|
18
32
|
if valid?
|
19
33
|
sum = 0
|
@@ -1,12 +1,25 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/code39'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# Modulo 43 checksum version of Code 39
|
13
|
+
#
|
14
|
+
# More info: http://en.wikipedia.org/wiki/Code_39
|
5
15
|
class Code39Mod43 < Code39
|
16
|
+
|
17
|
+
# Returns caption data without checksum
|
6
18
|
def caption_data
|
7
19
|
@start_character + @data + @stop_character
|
8
20
|
end
|
9
21
|
|
22
|
+
# Start character + data + checksum + stop character
|
10
23
|
def formatted_data
|
11
24
|
checksum = self.checksum
|
12
25
|
unless checksum.nil?
|
@@ -14,6 +27,7 @@ module Barcodes
|
|
14
27
|
end
|
15
28
|
end
|
16
29
|
|
30
|
+
# Calculates the checksum using the provided data
|
17
31
|
def checksum
|
18
32
|
if self.valid?
|
19
33
|
sum = 0
|
@@ -1,8 +1,23 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/base'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# This class represents the Code 93 symbology.
|
13
|
+
# Code 93 can encode the characters 0-9 and A-Z along
|
14
|
+
# with the following characters: "-","."," ","$",
|
15
|
+
# "/","+","%","*"
|
16
|
+
#
|
17
|
+
# More info: http://en.wikipedia.org/wiki/Code_93
|
5
18
|
class Code93 < Base
|
19
|
+
|
20
|
+
# The Code 93 character set
|
6
21
|
def self.charset
|
7
22
|
[
|
8
23
|
"0","1","2","3","4","5","6","7","8","9",
|
@@ -13,6 +28,7 @@ module Barcodes
|
|
13
28
|
].collect {|c| c.bytes.to_a[0] }
|
14
29
|
end
|
15
30
|
|
31
|
+
# The Code 93 values set
|
16
32
|
def self.valueset
|
17
33
|
[
|
18
34
|
"100010100","101001000","101000100","101000010",
|
@@ -30,6 +46,7 @@ module Barcodes
|
|
30
46
|
]
|
31
47
|
end
|
32
48
|
|
49
|
+
# Creates a new Code93 instance.
|
33
50
|
def initialize(args={})
|
34
51
|
super(args)
|
35
52
|
|
@@ -37,10 +54,14 @@ module Barcodes
|
|
37
54
|
@stop_character = '*'
|
38
55
|
end
|
39
56
|
|
57
|
+
# Code 39 includes the start and stop symbols in
|
58
|
+
# the caption so caption_data is overridden here
|
59
|
+
# to return the formatted data string
|
40
60
|
def caption_data
|
41
61
|
@start_character + @data + @stop_character
|
42
62
|
end
|
43
63
|
|
64
|
+
# Start character + data + checksum + stop character
|
44
65
|
def formatted_data
|
45
66
|
checksum = self.checksum
|
46
67
|
unless checksum.nil?
|
@@ -48,6 +69,7 @@ module Barcodes
|
|
48
69
|
end
|
49
70
|
end
|
50
71
|
|
72
|
+
# Calculates the C and K checksum values
|
51
73
|
def checksum
|
52
74
|
if self.valid?
|
53
75
|
c_value = self._checksum(@data, 20)
|
@@ -58,6 +80,7 @@ module Barcodes
|
|
58
80
|
|
59
81
|
protected
|
60
82
|
|
83
|
+
# Calculates the checksum with given data and given weighting
|
61
84
|
def _checksum(data, weight_max)
|
62
85
|
sum = 0
|
63
86
|
weight = 1
|
@@ -1,9 +1,21 @@
|
|
1
|
+
# Barcodes is a RubyGem for creating and rendering common barcode symbologies.
|
2
|
+
#
|
3
|
+
# Author:: Aaron Wright (mailto:acwrightdesign@gmail.com)
|
4
|
+
# Copyright:: Copyright (c) 2012 Infinite Token LLC
|
5
|
+
# License:: MIT License
|
6
|
+
|
1
7
|
require 'barcodes/symbology/code93'
|
2
8
|
|
3
9
|
module Barcodes
|
4
10
|
module Symbology
|
11
|
+
|
12
|
+
# This class represents the Code 93 Extended symbology.
|
13
|
+
# Code 93 Extended can encode all standard ASCII characters.
|
14
|
+
#
|
15
|
+
# More info: http://en.wikipedia.org/wiki/Code_93
|
5
16
|
class Code93Extended < Code93
|
6
17
|
|
18
|
+
# Start character + data + checksum + stop character
|
7
19
|
def formatted_data
|
8
20
|
checksum = self.checksum
|
9
21
|
unless checksum.nil?
|
@@ -11,6 +23,7 @@ module Barcodes
|
|
11
23
|
end
|
12
24
|
end
|
13
25
|
|
26
|
+
# Calculates the C and K checksum values
|
14
27
|
def checksum
|
15
28
|
if self.valid?
|
16
29
|
data = self._data
|
@@ -20,12 +33,15 @@ module Barcodes
|
|
20
33
|
end
|
21
34
|
end
|
22
35
|
|
36
|
+
# Validates the data
|
23
37
|
def valid?
|
24
38
|
return !self._data.nil?
|
25
39
|
end
|
26
40
|
|
27
41
|
protected
|
28
|
-
|
42
|
+
|
43
|
+
# Format the data string by adding shift characters when
|
44
|
+
# applicable
|
29
45
|
def _data
|
30
46
|
_data = ''
|
31
47
|
self.data.each_byte do |char|
|