File: barby

package info (click to toggle)
ruby-barby 0.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 360 kB
  • ctags: 511
  • sloc: ruby: 2,169; java: 1,228; makefile: 7
file content (42 lines) | stat: -rwxr-xr-x 1,308 bytes parent folder | download | duplicates (7)
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
42
#!/usr/bin/env ruby
#encoding: UTF-8
require 'optparse'
require 'rubygems'

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

options = {
  :outputter => 'Ascii',
  :outputter_method => 'to_ascii',
  :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 (Ascii)'){|v| options[:outputter] = v }
  o.on('-m', '--method=method_name', String, 'Outputter method (to_ascii)'){|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 : $*[0])
outputter_class = Barby.const_get("#{options[:outputter]}Outputter")
outputter = outputter_class.new(barcode)

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