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']})")
|