File: barby

package info (click to toggle)
libbarby-ruby 0.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 452 kB
  • ctags: 503
  • sloc: ruby: 2,794; java: 1,228; makefile: 8
file content (41 lines) | stat: -rwxr-xr-x 1,280 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env ruby
require 'optparse'
require 'rubygems'

#$: << File.join(File.dirname(__FILE__), '..', 'lib')
require 'barby'

options = {
  :outputter => 'Png',
  :outputter_method => 'to_png',
  :barcode => 'Code128B'
}

ARGV.options do |o|
  o.banner = "  Usage: #{File.basename(__FILE__)} [OPTIONS] data"
  o.define_head '  Generates barcodes and prints the generated output to STDOUT'

  o.separator ''
  o.separator '  EXPERIMENTAL'
  o.separator ''

  o.on('-b', '--barcode=ClassName', String, 'Barcode type (Code128B)'){|v| options[:barcode] = v }
  o.on('-o', '--outputter=ClassName', String, 'Outputter (Png)'){|v| options[:outputter] = v }
  o.on('-m', '--method=method_name', String, 'Outputter method (to_png)'){|v| options[:outputter_method] = v }

  o.on_tail("-h", "--help", "Show this help message.") { puts o; exit }
    
  o.parse!
end

#p STDIN.read
#exit

require "barby/outputter/#{options[:outputter].gsub(/[A-Z]/){|c| '_'+c.downcase }[1..-1]}_outputter"

barcode_class = Barby.const_get(options[:barcode])
barcode = barcode_class.new($*.empty? ? STDIN.read.chomp : $*)
outputter_class = Barby.const_get("#{options[:outputter]}Outputter")
outputter = outputter_class.new(barcode)

print eval("outputter.#{options[:outputter_method]}(#{ENV['OPTIONS']})")