barcodes 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +107 -0
- data/Rakefile +11 -0
- data/barcodes.gemspec +24 -0
- data/bin/barcodes +6 -0
- data/lib/barcodes.rb +63 -0
- data/lib/barcodes/exec.rb +74 -0
- data/lib/barcodes/renderer.rb +9 -0
- data/lib/barcodes/renderer/ascii.rb +199 -0
- data/lib/barcodes/renderer/pdf.rb +257 -0
- data/lib/barcodes/symbology.rb +47 -0
- data/lib/barcodes/symbology/base.rb +103 -0
- data/lib/barcodes/symbology/codabar.rb +36 -0
- data/lib/barcodes/symbology/code11.rb +74 -0
- data/lib/barcodes/symbology/code128.rb +317 -0
- data/lib/barcodes/symbology/code39.rb +48 -0
- data/lib/barcodes/symbology/code39extended.rb +93 -0
- data/lib/barcodes/symbology/code39extendedmod43.rb +73 -0
- data/lib/barcodes/symbology/code39mod43.rb +73 -0
- data/lib/barcodes/symbology/code93.rb +142 -0
- data/lib/barcodes/symbology/code93extended.rb +116 -0
- data/lib/barcodes/symbology/ean.rb +149 -0
- data/lib/barcodes/symbology/ean13.rb +27 -0
- data/lib/barcodes/symbology/ean8.rb +50 -0
- data/lib/barcodes/symbology/interleaved2of5.rb +30 -0
- data/lib/barcodes/symbology/interleaved2of5mod10.rb +40 -0
- data/lib/barcodes/symbology/msi.rb +30 -0
- data/lib/barcodes/symbology/msimod10.rb +50 -0
- data/lib/barcodes/symbology/msimod11.rb +37 -0
- data/lib/barcodes/symbology/planet.rb +83 -0
- data/lib/barcodes/symbology/postnet.rb +83 -0
- data/lib/barcodes/symbology/standard2of5.rb +30 -0
- data/lib/barcodes/symbology/standard2of5mod10.rb +40 -0
- data/lib/barcodes/symbology/upca.rb +27 -0
- data/lib/barcodes/version.rb +3 -0
- data/spec/barcodes/exec_spec.rb +14 -0
- data/spec/barcodes/renderer/ascii_spec.rb +12 -0
- data/spec/barcodes/renderer/pdf_spec.rb +12 -0
- data/spec/barcodes/symbology/base_spec.rb +8 -0
- data/spec/barcodes/symbology/codabar_spec.rb +8 -0
- data/spec/barcodes/symbology/code11_spec.rb +8 -0
- data/spec/barcodes/symbology/code128_spec.rb +8 -0
- data/spec/barcodes/symbology/code39_spec.rb +8 -0
- data/spec/barcodes/symbology/code39extended_spec.rb +8 -0
- data/spec/barcodes/symbology/code39extendedmod43_spec.rb +8 -0
- data/spec/barcodes/symbology/code39mod43_spec.rb +8 -0
- data/spec/barcodes/symbology/code93_spec.rb +8 -0
- data/spec/barcodes/symbology/code93extended_spec.rb +8 -0
- data/spec/barcodes/symbology/ean13_spec.rb +8 -0
- data/spec/barcodes/symbology/ean8_spec.rb +8 -0
- data/spec/barcodes/symbology/ean_spec.rb +8 -0
- data/spec/barcodes/symbology/interleaved2of5_spec.rb +8 -0
- data/spec/barcodes/symbology/interleaved2of5mod10_spec.rb +8 -0
- data/spec/barcodes/symbology/msi_spec.rb +8 -0
- data/spec/barcodes/symbology/msimod10_spec.rb +8 -0
- data/spec/barcodes/symbology/msimod11_spec.rb +8 -0
- data/spec/barcodes/symbology/planet_spec.rb +8 -0
- data/spec/barcodes/symbology/postnet_spec.rb +8 -0
- data/spec/barcodes/symbology/standard2of5_spec.rb +8 -0
- data/spec/barcodes/symbology/standard2of5mod10_spec.rb +8 -0
- data/spec/barcodes/symbology/upca_spec.rb +8 -0
- data/spec/barcodes_spec.rb +27 -0
- data/spec/spec_helper.rb +17 -0
- metadata +174 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use ruby-1.9.2-p290@barcodes
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Infinite Token LLC
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
4
|
+
obtaining a copy of this software and associated documentation
|
5
|
+
files (the "Software"), to deal in the Software without
|
6
|
+
restriction, including without limitation the rights to use,
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the
|
9
|
+
Software is furnished to do so, subject to the following
|
10
|
+
conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
Barcodes
|
2
|
+
========
|
3
|
+
|
4
|
+
Barcodes is a RubyGem for creating and rendering common barcode symbologies. Here are some of the current features:
|
5
|
+
|
6
|
+
* Many common symbologies to choose from
|
7
|
+
* PDF and ASCII rendering support
|
8
|
+
* Command line interface for rendering barcodes to console or file
|
9
|
+
|
10
|
+
Currently supported symbologies:
|
11
|
+
|
12
|
+
* Code 11
|
13
|
+
* Code 128
|
14
|
+
* Code 39
|
15
|
+
* Code 39 Mod 43
|
16
|
+
* Code 39 Extended
|
17
|
+
* Code 39 Extended Mod 43
|
18
|
+
* Code 93
|
19
|
+
* Code 93 Extended
|
20
|
+
* EAN8
|
21
|
+
* EAN13
|
22
|
+
* Interleaved 2 of 5
|
23
|
+
* Interleaved 2 of 5 Mod 10
|
24
|
+
* MSI
|
25
|
+
* MSI Mod 10
|
26
|
+
* MSI Mod 11
|
27
|
+
* PLANET
|
28
|
+
* POSTNET
|
29
|
+
* Standard 2 of 5
|
30
|
+
* Standard 2 of 5 Mod 10
|
31
|
+
* UPC-A
|
32
|
+
|
33
|
+
Installation
|
34
|
+
------------
|
35
|
+
|
36
|
+
Barcodes is a RubyGem and can be installed using:
|
37
|
+
|
38
|
+
gem install barcodes
|
39
|
+
|
40
|
+
Usage
|
41
|
+
-----
|
42
|
+
|
43
|
+
If you want to create and render a barcode all in one step you can simply do the following:
|
44
|
+
|
45
|
+
Barcodes.render('Codabar', '/path/to/output.pdf', {:data => '12345'})
|
46
|
+
|
47
|
+
The output path can be left empty and the rendered output will be returned as a string.
|
48
|
+
|
49
|
+
By default Barcodes uses the PDF renderer. To use the ASCII renderer you would do the following:
|
50
|
+
|
51
|
+
Barcodes.render('Codabar', '/path/to/output.pdf', {:data => '12345'}, Barcodes::Renderer::Ascii)
|
52
|
+
|
53
|
+
You could also do this:
|
54
|
+
|
55
|
+
barcode = Barcodes.create('Postnet', {:data => '44555'})
|
56
|
+
|
57
|
+
pdf_renderer = Barcodes::Renderer::Pdf.new(barcode)
|
58
|
+
pdf_renderer.render('/path/to/output.pdf')
|
59
|
+
|
60
|
+
ascii_renderer = Barcodes::Renderer::Ascii.new(barcode)
|
61
|
+
ascii_renderer.render('/path/to/output.txt')
|
62
|
+
|
63
|
+
The following options (defaults shown below) are available for all barcode symbologies:
|
64
|
+
|
65
|
+
{
|
66
|
+
:data => '0123456789',
|
67
|
+
:start_character => '',
|
68
|
+
:stop_character => '',
|
69
|
+
:bar_width => 20, # in mils
|
70
|
+
:bar_height => 1000, # in mils
|
71
|
+
:alpha => 1.0,
|
72
|
+
:color => '000000',
|
73
|
+
:caption_height => 180, # in mils
|
74
|
+
:caption_size => 167, # in mils
|
75
|
+
:captioned => true,
|
76
|
+
}
|
77
|
+
|
78
|
+
Command Line
|
79
|
+
------------
|
80
|
+
|
81
|
+
Barcodes also provides a command line tool for rendering barcodes:
|
82
|
+
|
83
|
+
$ barcodes -h
|
84
|
+
Usage: barcodes [OPTIONS] symbology target
|
85
|
+
|
86
|
+
-D, --data [DATA] The barcode data to encode (0123456789)
|
87
|
+
-s [START_CHARACTER], The barcode start character if applicable
|
88
|
+
--start_character
|
89
|
+
-e [STOP_CHARACTER], The barcode stop character if applicable
|
90
|
+
--stop_character
|
91
|
+
-W, --bar_width [BAR_WIDTH] The barcode bar width in mils (20)
|
92
|
+
-H, --bar_height [BAR_HEIGHT] The barcode bar height in mils (1000)
|
93
|
+
-c [CAPTION_HEIGHT], The barcode caption height in mils (180)
|
94
|
+
--caption_height
|
95
|
+
-p [CAPTION_SIZE], The caption font size in mils (167)
|
96
|
+
--caption_size
|
97
|
+
-A, --alpha [ALPHA] The barcode transparency (1.0)
|
98
|
+
-O, --color [COLOR] The barcode color in hex (000000)
|
99
|
+
-a, --captioned Render barcode caption (true)
|
100
|
+
-i, --ascii Render barcode as ASCII string (false)
|
101
|
+
-v, --version
|
102
|
+
-h, --help
|
103
|
+
|
104
|
+
License
|
105
|
+
-------
|
106
|
+
|
107
|
+
MIT License. See LICENSE file for details.
|
data/Rakefile
ADDED
data/barcodes.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "barcodes/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "barcodes"
|
7
|
+
s.version = Barcodes::VERSION
|
8
|
+
s.authors = ["Aaron Wright"]
|
9
|
+
s.email = ["acwrightdesign@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Barcode creation using Ruby!}
|
12
|
+
s.description = %q{Barcodes is a RubyGem for creating and rendering common barcode symbologies.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "barcodes"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency 'rake'
|
22
|
+
s.add_development_dependency 'rspec'
|
23
|
+
s.add_runtime_dependency 'prawn'
|
24
|
+
end
|
data/bin/barcodes
ADDED
data/lib/barcodes.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'barcodes/version'
|
2
|
+
require 'barcodes/symbology'
|
3
|
+
require 'barcodes/renderer'
|
4
|
+
|
5
|
+
module Barcodes
|
6
|
+
class << self
|
7
|
+
def create(symbology, options={})
|
8
|
+
if Symbology::CODABAR.include? symbology
|
9
|
+
return Symbology::Codabar.new(options)
|
10
|
+
elsif Symbology::CODE_11.include? symbology
|
11
|
+
return Symbology::Code11.new(options)
|
12
|
+
elsif Symbology::CODE_39.include? symbology
|
13
|
+
return Symbology::Code39.new(options)
|
14
|
+
elsif Symbology::CODE_39_MOD_43.include? symbology
|
15
|
+
return Symbology::Code39Mod43.new(options)
|
16
|
+
elsif Symbology::CODE_39_EXTENDED.include? symbology
|
17
|
+
return Symbology::Code39Extended.new(options)
|
18
|
+
elsif Symbology::CODE_39_EXTENDED_MOD_43.include? symbology
|
19
|
+
return Symbology::Code39ExtendedMod43.new(options)
|
20
|
+
elsif Symbology::CODE_93.include? symbology
|
21
|
+
return Symbology::Code93.new(options)
|
22
|
+
elsif Symbology::CODE_93_EXTENDED.include? symbology
|
23
|
+
return Symbology::Code93Extended.new(options)
|
24
|
+
elsif Symbology::CODE_128.include? symbology
|
25
|
+
return Symbology::Code128.new(options)
|
26
|
+
elsif Symbology::EAN_8.include? symbology
|
27
|
+
return Symbology::Ean8.new(options)
|
28
|
+
elsif Symbology::EAN_13.include? symbology
|
29
|
+
return Symbology::Ean13.new(options)
|
30
|
+
elsif Symbology::MSI.include? symbology
|
31
|
+
return Symbology::Msi.new(options)
|
32
|
+
elsif Symbology::MSI_MOD_10.include? symbology
|
33
|
+
return Symbology::MsiMod10.new(options)
|
34
|
+
elsif Symbology::MSI_MOD_11.include? symbology
|
35
|
+
return Symbology::MsiMod11.new(options)
|
36
|
+
elsif Symbology::STANDARD_2_OF_5.include? symbology
|
37
|
+
return Symbology::Standard2Of5.new(options)
|
38
|
+
elsif Symbology::STANDARD_2_OF_5_MOD_10.include? symbology
|
39
|
+
return Symbology::Standard2Of5Mod10.new(options)
|
40
|
+
elsif Symbology::INTERLEAVED_2_OF_5.include? symbology
|
41
|
+
return Symbology::Interleaved2Of5.new(options)
|
42
|
+
elsif Symbology::INTERLEAVED_2_OF_5_MOD_10.include? symbology
|
43
|
+
return Symbology::Interleaved2Of5Mod10.new(options)
|
44
|
+
elsif Symbology::PLANET.include? symbology
|
45
|
+
return Symbology::Planet.new(options)
|
46
|
+
elsif Symbology::POSTNET.include? symbology
|
47
|
+
return Symbology::Postnet.new(options)
|
48
|
+
elsif Symbology::UPC_A.include? symbology
|
49
|
+
return Symbology::UpcA.new(options)
|
50
|
+
else
|
51
|
+
raise ArgumentError, 'Unsupported symbology'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def render(symbology, filename=nil, options={}, renderer=Barcodes::Renderer::PDF)
|
56
|
+
if renderer == Barcodes::Renderer::ASCII
|
57
|
+
Barcodes::Renderer::Ascii.new(self.create(symbology, options)).render(filename)
|
58
|
+
elsif renderer == Barcodes::Renderer::PDF
|
59
|
+
Barcodes::Renderer::Pdf.new(self.create(symbology, options)).render(filename)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
require 'barcodes'
|
4
|
+
require 'barcodes/version'
|
5
|
+
|
6
|
+
module Barcodes
|
7
|
+
class Exec
|
8
|
+
attr_reader :argv
|
9
|
+
attr_reader :parser
|
10
|
+
attr_reader :options
|
11
|
+
attr_reader :command
|
12
|
+
attr_reader :arguments
|
13
|
+
|
14
|
+
def initialize(argv)
|
15
|
+
@argv = argv
|
16
|
+
@options = {}
|
17
|
+
self._init_parser
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
self._parse!
|
22
|
+
|
23
|
+
unless @symbology.nil?
|
24
|
+
unless @options[:ascii]
|
25
|
+
Barcodes.render(@symbology, @target, @options)
|
26
|
+
else
|
27
|
+
Barcodes.render(@symbology, @target, @options, Barcodes::Renderer::Ascii)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
def _init_parser
|
35
|
+
@parser ||= OptionParser.new do |opts|
|
36
|
+
opts.banner = "Usage: barcodes [OPTIONS] symbology target"
|
37
|
+
opts.separator ""
|
38
|
+
opts.on('-D', '--data [DATA]', 'The barcode data to encode (0123456789)') { |v| options[:data] = v ||= '0123456789' }
|
39
|
+
opts.on('-s', '--start_character [START_CHARACTER]', 'The barcode start character if applicable') { |v| options[:start_character] = v ||= '' }
|
40
|
+
opts.on('-e', '--stop_character [STOP_CHARACTER]', 'The barcode stop character if applicable') { |v| options[:stop_character] = v ||= '' }
|
41
|
+
opts.on('-W', '--bar_width [BAR_WIDTH]', 'The barcode bar width in mils (20)') { |v| options[:bar_width] = v.to_i ||= 20 }
|
42
|
+
opts.on('-H', '--bar_height [BAR_HEIGHT]', 'The barcode bar height in mils (1000)') { |v| options[:bar_height] = v.to_i ||= 1000 }
|
43
|
+
opts.on('-c', '--caption_height [CAPTION_HEIGHT]', 'The barcode caption height in mils (180)') { |v| options[:caption_height] = v.to_i ||= 180 }
|
44
|
+
opts.on('-p', '--caption_size [CAPTION_SIZE]', 'The caption font size in mils (167)') { |v| options[:font_size] = v.to_f ||= 167 }
|
45
|
+
opts.on('-A', '--alpha [ALPHA]', 'The barcode transparency (1.0)') { |v| options[:alpha] = v.to_f ||= 1.0 }
|
46
|
+
opts.on('-O', '--color [COLOR]', 'The barcode color in hex (000000)') { |v| options[:color] = v ||= '000000' }
|
47
|
+
opts.on('-a', '--captioned', 'Render barcode caption (true)') { |v| options[:captioned] = v ||= true }
|
48
|
+
opts.on('-i', '--ascii', 'Render barcode as ASCII string (false)') { |v| options[:ascii] = v ||= false }
|
49
|
+
opts.on('-v', '--version') { puts version; exit }
|
50
|
+
opts.on('-h', '--help') { puts opts; exit }
|
51
|
+
opts.separator ""
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def _parse!
|
56
|
+
|
57
|
+
begin
|
58
|
+
@parser.parse!(@argv)
|
59
|
+
rescue
|
60
|
+
puts @parser.help
|
61
|
+
exit 1
|
62
|
+
end
|
63
|
+
|
64
|
+
@symbology = @argv.shift
|
65
|
+
@target = @argv.shift
|
66
|
+
@arguments = @argv
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def _version
|
71
|
+
"barcodes #{Barcodes::VERSION}"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,199 @@
|
|
1
|
+
module Barcodes
|
2
|
+
module Renderer
|
3
|
+
class Ascii
|
4
|
+
attr_accessor :barcode
|
5
|
+
|
6
|
+
def initialize(barcode=nil)
|
7
|
+
@barcode = barcode
|
8
|
+
end
|
9
|
+
|
10
|
+
def render(filename=nil)
|
11
|
+
rendering = ''
|
12
|
+
if @barcode.class == Barcodes::Symbology::Ean8
|
13
|
+
rendering = self._render_ean8(@barcode)
|
14
|
+
elsif @barcode.class == Barcodes::Symbology::Ean13
|
15
|
+
rendering = self._render_ean13(@barcode)
|
16
|
+
elsif @barcode.class == Barcodes::Symbology::Planet || @barcode.class == Barcodes::Symbology::Postnet
|
17
|
+
rendering = self._render_planet_postnet(@barcode)
|
18
|
+
elsif @barcode.class == Barcodes::Symbology::UpcA
|
19
|
+
rendering = self._render_upca(@barcode)
|
20
|
+
else
|
21
|
+
rendering = self._render_standard(@barcode)
|
22
|
+
end
|
23
|
+
|
24
|
+
unless filename.nil?
|
25
|
+
File.open(filename, 'w') {|f| f.write(rendering) }
|
26
|
+
else
|
27
|
+
rendering
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
protected
|
32
|
+
|
33
|
+
def _render_standard(barcode)
|
34
|
+
ascii = ""
|
35
|
+
10.times do |i|
|
36
|
+
barcode.encoded_data.each_char do |char|
|
37
|
+
if char == '1'
|
38
|
+
ascii += "*"
|
39
|
+
else
|
40
|
+
ascii += " "
|
41
|
+
end
|
42
|
+
end
|
43
|
+
ascii += "\n"
|
44
|
+
end
|
45
|
+
|
46
|
+
if barcode.captioned
|
47
|
+
offset = ((barcode.encoded_data.length - barcode.caption_data.length) / 2).floor
|
48
|
+
offset.times do |t|
|
49
|
+
ascii += ' '
|
50
|
+
end
|
51
|
+
ascii += barcode.caption_data + "\n"
|
52
|
+
end
|
53
|
+
ascii += "\n"
|
54
|
+
end
|
55
|
+
|
56
|
+
def _render_ean8(barcode)
|
57
|
+
encoded_data = barcode.encoded_data
|
58
|
+
|
59
|
+
ascii = ""
|
60
|
+
10.times do |i|
|
61
|
+
ascii += " "
|
62
|
+
encoded_data.each_char do |char|
|
63
|
+
if char == '1'
|
64
|
+
ascii += "*"
|
65
|
+
else
|
66
|
+
ascii += " "
|
67
|
+
end
|
68
|
+
end
|
69
|
+
ascii += " \n"
|
70
|
+
end
|
71
|
+
|
72
|
+
ascii += " "
|
73
|
+
encoded_data.length.times.each do |index|
|
74
|
+
if encoded_data[index] == '1' && ((index >= 0 && index <= 3) || (index >= 32 && index <= 35) || (index >= 65))
|
75
|
+
ascii += "*"
|
76
|
+
elsif (index >= 14 && index < 18)
|
77
|
+
if barcode.captioned
|
78
|
+
ascii += barcode.caption_data[index - 13]
|
79
|
+
end
|
80
|
+
elsif (index >= 49 && index < 53)
|
81
|
+
if barcode.captioned
|
82
|
+
ascii += barcode.caption_data[index - 45]
|
83
|
+
end
|
84
|
+
else
|
85
|
+
ascii += " "
|
86
|
+
end
|
87
|
+
end
|
88
|
+
ascii += " \n"
|
89
|
+
end
|
90
|
+
|
91
|
+
def _render_ean13(barcode)
|
92
|
+
encoded_data = barcode.encoded_data
|
93
|
+
|
94
|
+
ascii = ""
|
95
|
+
10.times do |i|
|
96
|
+
if i == 9
|
97
|
+
if barcode.captioned
|
98
|
+
ascii += barcode.caption_data[0] + " "
|
99
|
+
end
|
100
|
+
else
|
101
|
+
ascii += " "
|
102
|
+
end
|
103
|
+
encoded_data.each_char do |char|
|
104
|
+
if char == '1'
|
105
|
+
ascii += "*"
|
106
|
+
else
|
107
|
+
ascii += " "
|
108
|
+
end
|
109
|
+
end
|
110
|
+
ascii += " \n"
|
111
|
+
end
|
112
|
+
|
113
|
+
ascii += " "
|
114
|
+
encoded_data.length.times.each do |index|
|
115
|
+
if encoded_data[index] == '1' && ((index >= 0 && index <= 3) || (index >= 46 && index <= 49) || (index >= 93))
|
116
|
+
ascii += "*"
|
117
|
+
elsif (index >= 21 && index < 27)
|
118
|
+
if barcode.captioned
|
119
|
+
ascii += barcode.caption_data[index - 21]
|
120
|
+
end
|
121
|
+
elsif (index >= 69 && index < 75)
|
122
|
+
if barcode.captioned
|
123
|
+
ascii += barcode.caption_data[index - 63]
|
124
|
+
end
|
125
|
+
else
|
126
|
+
ascii += " "
|
127
|
+
end
|
128
|
+
end
|
129
|
+
ascii += " \n"
|
130
|
+
end
|
131
|
+
|
132
|
+
def _render_planet_postnet(barcode)
|
133
|
+
ascii = ""
|
134
|
+
6.times do |i|
|
135
|
+
barcode.encoded_data.each_char do |char|
|
136
|
+
if char == '1'
|
137
|
+
ascii += "* "
|
138
|
+
else
|
139
|
+
if i < 3
|
140
|
+
ascii += " "
|
141
|
+
else
|
142
|
+
ascii += "* "
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
ascii += "\n"
|
147
|
+
end
|
148
|
+
ascii += "\n"
|
149
|
+
end
|
150
|
+
|
151
|
+
def _render_upca(barcode)
|
152
|
+
encoded_data = barcode.encoded_data
|
153
|
+
|
154
|
+
ascii = ""
|
155
|
+
10.times do |i|
|
156
|
+
if i == 9
|
157
|
+
if barcode.captioned
|
158
|
+
ascii += barcode.caption_data[0] + " "
|
159
|
+
end
|
160
|
+
else
|
161
|
+
ascii += " "
|
162
|
+
end
|
163
|
+
encoded_data.each_char do |char|
|
164
|
+
if char == '1'
|
165
|
+
ascii += "*"
|
166
|
+
else
|
167
|
+
ascii += " "
|
168
|
+
end
|
169
|
+
end
|
170
|
+
if i == 9
|
171
|
+
if barcode.captioned
|
172
|
+
ascii += " " + barcode.caption_data[barcode.caption_data.length - 1] + "\n"
|
173
|
+
end
|
174
|
+
else
|
175
|
+
ascii += " \n"
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
ascii += " "
|
180
|
+
encoded_data.length.times.each do |index|
|
181
|
+
if encoded_data[index] == '1' && ((index >= 0 && index <= 3) || (index >= 46 && index <= 49) || (index >= 93))
|
182
|
+
ascii += "*"
|
183
|
+
elsif (index >= 22 && index < 27)
|
184
|
+
if barcode.captioned
|
185
|
+
ascii += barcode.caption_data[index - 21]
|
186
|
+
end
|
187
|
+
elsif (index >= 70 && index < 75)
|
188
|
+
if barcode.captioned
|
189
|
+
ascii += barcode.caption_data[index - 63]
|
190
|
+
end
|
191
|
+
else
|
192
|
+
ascii += " "
|
193
|
+
end
|
194
|
+
end
|
195
|
+
ascii += " \n"
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|