barcodes 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/Gemfile +6 -0
  2. data/README.md +24 -24
  3. data/Rakefile +6 -0
  4. data/barcodes.gemspec +6 -0
  5. data/lib/barcodes.rb +52 -0
  6. data/lib/barcodes/exec.rb +52 -31
  7. data/lib/barcodes/renderer.rb +6 -0
  8. data/lib/barcodes/renderer/ascii.rb +7 -0
  9. data/lib/barcodes/renderer/pdf.rb +6 -0
  10. data/lib/barcodes/symbology.rb +6 -0
  11. data/lib/barcodes/symbology/base.rb +55 -15
  12. data/lib/barcodes/symbology/codabar.rb +23 -0
  13. data/lib/barcodes/symbology/code11.rb +18 -0
  14. data/lib/barcodes/symbology/code128.rb +44 -5
  15. data/lib/barcodes/symbology/code39.rb +21 -0
  16. data/lib/barcodes/symbology/code39extended.rb +12 -0
  17. data/lib/barcodes/symbology/code39extendedmod43.rb +14 -0
  18. data/lib/barcodes/symbology/code39mod43.rb +14 -0
  19. data/lib/barcodes/symbology/code93.rb +23 -0
  20. data/lib/barcodes/symbology/code93extended.rb +17 -1
  21. data/lib/barcodes/symbology/ean.rb +28 -1
  22. data/lib/barcodes/symbology/ean13.rb +17 -0
  23. data/lib/barcodes/symbology/ean8.rb +18 -0
  24. data/lib/barcodes/symbology/interleaved2of5.rb +18 -0
  25. data/lib/barcodes/symbology/interleaved2of5mod10.rb +14 -0
  26. data/lib/barcodes/symbology/msi.rb +16 -0
  27. data/lib/barcodes/symbology/msimod10.rb +14 -0
  28. data/lib/barcodes/symbology/msimod11.rb +14 -0
  29. data/lib/barcodes/symbology/planet.rb +24 -1
  30. data/lib/barcodes/symbology/postnet.rb +24 -1
  31. data/lib/barcodes/symbology/standard2of5.rb +16 -0
  32. data/lib/barcodes/symbology/standard2of5mod10.rb +14 -0
  33. data/lib/barcodes/symbology/upca.rb +16 -0
  34. data/lib/barcodes/version.rb +9 -1
  35. data/spec/barcodes/exec_spec.rb +7 -1
  36. data/spec/barcodes/renderer/ascii_spec.rb +6 -0
  37. data/spec/barcodes/renderer/pdf_spec.rb +6 -0
  38. data/spec/barcodes/symbology/base_spec.rb +6 -0
  39. data/spec/barcodes/symbology/codabar_spec.rb +6 -0
  40. data/spec/barcodes/symbology/code11_spec.rb +6 -0
  41. data/spec/barcodes/symbology/code128_spec.rb +6 -0
  42. data/spec/barcodes/symbology/code39_spec.rb +6 -0
  43. data/spec/barcodes/symbology/code39extended_spec.rb +6 -0
  44. data/spec/barcodes/symbology/code39extendedmod43_spec.rb +6 -0
  45. data/spec/barcodes/symbology/code39mod43_spec.rb +6 -0
  46. data/spec/barcodes/symbology/code93_spec.rb +6 -0
  47. data/spec/barcodes/symbology/code93extended_spec.rb +6 -0
  48. data/spec/barcodes/symbology/ean13_spec.rb +6 -0
  49. data/spec/barcodes/symbology/ean8_spec.rb +6 -0
  50. data/spec/barcodes/symbology/ean_spec.rb +6 -0
  51. data/spec/barcodes/symbology/interleaved2of5_spec.rb +6 -0
  52. data/spec/barcodes/symbology/interleaved2of5mod10_spec.rb +6 -0
  53. data/spec/barcodes/symbology/msi_spec.rb +6 -0
  54. data/spec/barcodes/symbology/msimod10_spec.rb +6 -0
  55. data/spec/barcodes/symbology/msimod11_spec.rb +6 -0
  56. data/spec/barcodes/symbology/planet_spec.rb +6 -0
  57. data/spec/barcodes/symbology/postnet_spec.rb +6 -0
  58. data/spec/barcodes/symbology/standard2of5_spec.rb +6 -0
  59. data/spec/barcodes/symbology/standard2of5mod10_spec.rb +6 -0
  60. data/spec/barcodes/symbology/upca_spec.rb +6 -0
  61. data/spec/barcodes_spec.rb +6 -0
  62. data/spec/spec_helper.rb +6 -0
  63. metadata +8 -8
data/Gemfile CHANGED
@@ -1,3 +1,9 @@
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
  source "http://rubygems.org"
2
8
 
3
9
  # Specify your gem's dependencies in labels.gemspec
data/README.md CHANGED
@@ -35,53 +35,53 @@ Installation
35
35
 
36
36
  Barcodes is a RubyGem and can be installed using:
37
37
 
38
- gem install barcodes
38
+ $ gem install barcodes
39
39
 
40
40
  Usage
41
41
  -----
42
42
 
43
43
  If you want to create and render a barcode all in one step you can simply do the following:
44
44
 
45
- Barcodes.render('Codabar', '/path/to/output.pdf', {:data => '12345'})
45
+ Barcodes.render('Codabar', '/path/to/output.pdf', {:data => '12345'})
46
46
 
47
47
  The output path can be left empty and the rendered output will be returned as a string.
48
48
 
49
49
  By default Barcodes uses the PDF renderer. To use the ASCII renderer you would do the following:
50
50
 
51
- Barcodes.render('Codabar', '/path/to/output.pdf', {:data => '12345'}, Barcodes::Renderer::Ascii)
51
+ Barcodes.render('Codabar', '/path/to/output.pdf', {:data => '12345'}, Barcodes::Renderer::Ascii)
52
52
 
53
53
  You could also do this:
54
54
 
55
- barcode = Barcodes.create('Postnet', {:data => '44555'})
55
+ barcode = Barcodes.create('Postnet', {:data => '44555'})
56
56
 
57
- pdf_renderer = Barcodes::Renderer::Pdf.new(barcode)
58
- pdf_renderer.render('/path/to/output.pdf')
57
+ pdf_renderer = Barcodes::Renderer::Pdf.new(barcode)
58
+ pdf_renderer.render('/path/to/output.pdf')
59
59
 
60
- ascii_renderer = Barcodes::Renderer::Ascii.new(barcode)
61
- ascii_renderer.render('/path/to/output.txt')
60
+ ascii_renderer = Barcodes::Renderer::Ascii.new(barcode)
61
+ ascii_renderer.render('/path/to/output.txt')
62
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
- }
63
+ The following options (defaults shown below) are available (where applicable) 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
77
 
78
78
  Command Line
79
79
  ------------
80
80
 
81
81
  Barcodes also provides a command line tool for rendering barcodes:
82
82
 
83
- $ barcodes -h
84
- Usage: barcodes [OPTIONS] symbology target
83
+ $ barcodes -h
84
+ Usage: barcodes [OPTIONS] symbology target
85
85
 
86
86
  -D, --data [DATA] The barcode data to encode (0123456789)
87
87
  -s [START_CHARACTER], The barcode start character if applicable
data/Rakefile CHANGED
@@ -1,3 +1,9 @@
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 'bundler/gem_tasks'
2
8
 
3
9
  require 'rspec/core/rake_task'
data/barcodes.gemspec CHANGED
@@ -1,3 +1,9 @@
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
  # -*- encoding: utf-8 -*-
2
8
  $:.push File.expand_path("../lib", __FILE__)
3
9
  require "barcodes/version"
data/lib/barcodes.rb CHANGED
@@ -1,9 +1,53 @@
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/version'
2
8
  require 'barcodes/symbology'
3
9
  require 'barcodes/renderer'
4
10
 
11
+ # Barcodes is a RubyGem for creating and rendering common barcode symbologies. Here are some of the current features:
12
+ #
13
+ # * Many common symbologies to choose from
14
+ # * PDF and ASCII rendering support
15
+ # * Command line interface for rendering barcodes to console or file
16
+ #
17
+ # Currently supported symbologies:
18
+ #
19
+ # * Code 11
20
+ # * Code 128
21
+ # * Code 39
22
+ # * Code 39 Mod 43
23
+ # * Code 39 Extended
24
+ # * Code 39 Extended Mod 43
25
+ # * Code 93
26
+ # * Code 93 Extended
27
+ # * EAN8
28
+ # * EAN13
29
+ # * Interleaved 2 of 5
30
+ # * Interleaved 2 of 5 Mod 10
31
+ # * MSI
32
+ # * MSI Mod 10
33
+ # * MSI Mod 11
34
+ # * PLANET
35
+ # * POSTNET
36
+ # * Standard 2 of 5
37
+ # * Standard 2 of 5 Mod 10
38
+ # * UPC-A
39
+
5
40
  module Barcodes
41
+
42
+ # This class is a helper for quickly instantiating
43
+ # a concrete barcode class and also provides a helper
44
+ # for quick rendering.
6
45
  class << self
46
+
47
+ # Creates a new barcode of type <symbology> with given
48
+ # options and returns an instantiated instance.
49
+ #
50
+ # See Barcodes::Symbology::Base for options
7
51
  def create(symbology, options={})
8
52
  if Symbology::CODABAR.include? symbology
9
53
  return Symbology::Codabar.new(options)
@@ -52,6 +96,14 @@ module Barcodes
52
96
  end
53
97
  end
54
98
 
99
+ # Creates a new barcode of type <symbology> with given
100
+ # options and renders barcode using given renderer.
101
+ #
102
+ # Optionally takes <filename> and <renderer>. If no
103
+ # filename is given rendering will be outputted as a
104
+ # string. Uses PDF renderer by default.
105
+ #
106
+ # See Barcodes::Symbology::Base for options
55
107
  def render(symbology, filename=nil, options={}, renderer=Barcodes::Renderer::PDF)
56
108
  if renderer == Barcodes::Renderer::ASCII
57
109
  Barcodes::Renderer::Ascii.new(self.create(symbology, options)).render(filename)
data/lib/barcodes/exec.rb CHANGED
@@ -1,72 +1,93 @@
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 'optparse'
2
8
 
3
9
  require 'barcodes'
4
10
  require 'barcodes/version'
5
11
 
6
12
  module Barcodes
13
+
14
+ # This class is the main handler for the command line tool interface.
15
+ # It takes command line arguments and options and renders a barcode
16
+ # using those options.
7
17
  class Exec
8
- attr_reader :argv
18
+ # The parser instance
9
19
  attr_reader :parser
20
+
21
+ # Hash of parsed options
10
22
  attr_reader :options
11
- attr_reader :command
23
+
24
+ # The barcode symbology
25
+ attr_reader :symbology
26
+
27
+ # The output target
28
+ attr_reader :target
29
+
30
+ # Array of command line arguments
12
31
  attr_reader :arguments
13
-
32
+
33
+ # Creates a new instance with given command line arguments and options
14
34
  def initialize(argv)
15
- @argv = argv
35
+ @arguments = arguments
16
36
  @options = {}
17
37
  self._init_parser
38
+ self._parse!
18
39
  end
19
-
40
+
41
+ # Runs the command and renders barcode
20
42
  def run
21
- self._parse!
22
-
23
- unless @symbology.nil?
24
- unless @options[:ascii]
25
- Barcodes.render(@symbology, @target, @options)
43
+ unless self.symbology.nil?
44
+ unless self.options[:ascii]
45
+ Barcodes.render(self.symbology, self.target, self.options)
26
46
  else
27
- Barcodes.render(@symbology, @target, @options, Barcodes::Renderer::Ascii)
47
+ Barcodes.render(self.symbology, self.target, self.options, Barcodes::Renderer::Ascii)
28
48
  end
29
49
  end
30
50
  end
31
51
 
32
52
  protected
33
-
53
+
54
+ # Initializes the option parser instance
34
55
  def _init_parser
35
56
  @parser ||= OptionParser.new do |opts|
36
57
  opts.banner = "Usage: barcodes [OPTIONS] symbology target"
37
58
  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 }
59
+ opts.on('-D', '--data [DATA]', 'The barcode data to encode (0123456789)') { |v| @options[:data] = v ||= '0123456789' }
60
+ opts.on('-s', '--start_character [START_CHARACTER]', 'The barcode start character if applicable') { |v| @options[:start_character] = v ||= '' }
61
+ opts.on('-e', '--stop_character [STOP_CHARACTER]', 'The barcode stop character if applicable') { |v| @options[:stop_character] = v ||= '' }
62
+ opts.on('-W', '--bar_width [BAR_WIDTH]', 'The barcode bar width in mils (20)') { |v| @options[:bar_width] = v.to_i ||= 20 }
63
+ opts.on('-H', '--bar_height [BAR_HEIGHT]', 'The barcode bar height in mils (1000)') { |v| @options[:bar_height] = v.to_i ||= 1000 }
64
+ opts.on('-c', '--caption_height [CAPTION_HEIGHT]', 'The barcode caption height in mils (180)') { |v| @options[:caption_height] = v.to_i ||= 180 }
65
+ opts.on('-p', '--caption_size [CAPTION_SIZE]', 'The caption font size in mils (167)') { |v| @options[:font_size] = v.to_f ||= 167 }
66
+ opts.on('-A', '--alpha [ALPHA]', 'The barcode transparency (1.0)') { |v| @options[:alpha] = v.to_f ||= 1.0 }
67
+ opts.on('-O', '--color [COLOR]', 'The barcode color in hex (000000)') { |v| @options[:color] = v ||= '000000' }
68
+ opts.on('-a', '--captioned', 'Render barcode caption (true)') { |v| @options[:captioned] = v ||= true }
69
+ opts.on('-i', '--ascii', 'Render barcode as ASCII string (false)') { |v| @options[:ascii] = v ||= false }
70
+ opts.on('-v', '--version') { puts self._version; exit }
50
71
  opts.on('-h', '--help') { puts opts; exit }
51
72
  opts.separator ""
52
73
  end
53
74
  end
54
75
 
76
+ # Parses the command line arguments
55
77
  def _parse!
56
78
 
57
79
  begin
58
- @parser.parse!(@argv)
80
+ self.parser.parse!(self.arguments)
59
81
  rescue
60
- puts @parser.help
82
+ puts self.parser.help
61
83
  exit 1
62
84
  end
63
85
 
64
- @symbology = @argv.shift
65
- @target = @argv.shift
66
- @arguments = @argv
67
-
86
+ @symbology = self.arguments.shift
87
+ @target = self.arguments.shift
68
88
  end
69
-
89
+
90
+ # Returns the current version
70
91
  def _version
71
92
  "barcodes #{Barcodes::VERSION}"
72
93
  end
@@ -1,3 +1,9 @@
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/renderer/ascii'
2
8
  require 'barcodes/renderer/pdf'
3
9
 
@@ -1,3 +1,10 @@
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
+
7
+ #
1
8
  module Barcodes
2
9
  module Renderer
3
10
  class Ascii
@@ -1,3 +1,9 @@
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 'prawn'
2
8
 
3
9
  module Barcodes
@@ -1,3 +1,9 @@
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/codabar'
2
8
  require 'barcodes/symbology/code11'
3
9
  require 'barcodes/symbology/code39'
@@ -1,31 +1,58 @@
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
+
7
+ #
1
8
  module Barcodes
2
9
  module Symbology
10
+
11
+ # Base class for all barcode symbologies.
3
12
  class Base
13
+ # Data to be encoded.
4
14
  attr_accessor :data
5
- attr_accessor :start_character
6
- attr_accessor :stop_character
15
+
16
+ # Bar width in mils
7
17
  attr_accessor :bar_width
18
+
19
+ # Bar height in mils
8
20
  attr_accessor :bar_height
21
+
22
+ # Alpha (transparency)
9
23
  attr_accessor :alpha
24
+
25
+ # Color in hex
10
26
  attr_accessor :color
27
+
28
+ # Caption height in mils
11
29
  attr_accessor :caption_height
30
+
31
+ # Caption font size in mils
12
32
  attr_accessor :caption_size
33
+
34
+ # Whether or not to print caption
13
35
  attr_accessor :captioned
14
36
 
37
+ # Returns the barcode symbologies character set as array of
38
+ # ASCII integer values. This method should be overridden by
39
+ # concrete subclass to provide character set for symbology.
15
40
  def self.charset
16
41
  # Should be overridden by subclass to provide charset
17
42
  [].collect {|c| c.bytes.to_a[0] }
18
43
  end
19
44
 
45
+ # Returns the values of the symbologies character set as
46
+ # array of encoded sets. This method should be overridden by
47
+ # concrete subclass to provide value set for symbology.
20
48
  def self.valueset
21
- # Should be overridden by subclass to provide valueset
22
49
  []
23
50
  end
24
51
 
52
+ # Creates a new barcode instance with given arguments.
53
+ # See class attributes for list of acceptable arguments.
25
54
  def initialize(args={})
26
55
  @data = '0123456789'
27
- @start_character = ''
28
- @stop_character = ''
29
56
  @bar_width = 20
30
57
  @bar_height = 1000
31
58
  @alpha = 1.0
@@ -38,17 +65,22 @@ module Barcodes
38
65
  instance_variable_set("@#{k}", v) unless v.nil?
39
66
  end
40
67
  end
41
-
68
+
69
+ # Returns the data to be printed in barcode caption.
70
+ # Could be overridden by concrete subclass to provide
71
+ # additional formatting.
42
72
  def caption_data
43
- # Can be overridden by subclass to format data string for display
44
73
  self.data
45
74
  end
46
-
75
+
76
+ # Returns the formatted barcode data to be encoded
77
+ # Could be overridden by concrete subclass to add additional
78
+ # formatting to data string.
47
79
  def formatted_data
48
- # Can be overridden by subclass to add additional formatting to data string
49
80
  self.data
50
81
  end
51
82
 
83
+ # Returns the formatted barcode data encoded as 1's and 0's.
52
84
  def encoded_data
53
85
  if self.valid?
54
86
  encoded_data = ""
@@ -59,11 +91,14 @@ module Barcodes
59
91
  end
60
92
  end
61
93
 
94
+ # Returns the symbologies quiet zone width in mils.
95
+ # Should be overridden by concrete subclass to provide
96
+ # quiet zone width if applicable.
62
97
  def quiet_zone_width
63
- # Can be overriden in subclass to adjust quiet zone width
64
98
  0
65
99
  end
66
-
100
+
101
+ # Returns the overall width of the barcode in mils.
67
102
  def width
68
103
  if valid?
69
104
  (self.encoded_data.length * self.bar_width) + (self.quiet_zone_width * 2)
@@ -71,13 +106,16 @@ module Barcodes
71
106
  0
72
107
  end
73
108
  end
74
-
109
+
110
+ # Returns the overall height of the barcode in mils.
75
111
  def height
76
112
  self.captioned ? self.caption_height + self.bar_height : self.bar_height
77
113
  end
78
-
114
+
115
+ # Determines whether or not the barcode data to be encoded
116
+ # is valid.
117
+ # Should be overridden in concrete subclass to provide validation.
79
118
  def valid?
80
- # Can be overridden in subclass to validate barcode
81
119
  valid = self.data.length > 0 ? true : false
82
120
 
83
121
  self.data.each_byte do |char|
@@ -90,7 +128,9 @@ module Barcodes
90
128
  end
91
129
 
92
130
  protected
93
-
131
+
132
+ # Encodes a single given ASCII character (as integer) into 1's and 0's.
133
+ # Returns nil if character is not found in character set.
94
134
  def _encode_character(character)
95
135
  if self.class.charset.include? character
96
136
  return self.class.valueset.at(self.class.charset.index(character))