class Asciidoctor::Diagram::BarcodeConverter
@private
Constants
- BARCODE_TYPES
Public Instance Methods
collect_options(source)
click to toggle source
# File lib/asciidoctor-diagram/barcode/converter.rb, line 33 def collect_options(source) options = {} options[:xdim] = source.attr('xdim') options[:ydim] = source.attr('ydim') options[:margin] = source.attr('margin') options[:height] = source.attr('height') options[:foreground] = source.attr('foreground') options[:background] = source.attr('background') [:xdim, :ydim, :margin, :height].each { |o| options[o] = options[o].to_i if options[o] } options end
convert(source, format, options)
click to toggle source
# File lib/asciidoctor-diagram/barcode/converter.rb, line 48 def convert(source, format, options) BarcodeDependencies::BARCODE_DEPENDENCIES.each_pair { |n, v| source.ensure_gem(n, v) } require 'barby' code = source.code type = source.config[:type] case type when :bookland require 'barby/barcode/bookland' barcode = Barby::Bookland.new(code) when :codabar require 'barby/barcode/codabar' barcode = Barby::Codabar.new(code) when :code25 require 'barby/barcode/code_25' barcode = Barby::Code25.new(code) when :code25iata require 'barby/barcode/code_25_iata' barcode = Barby::Code25IATA.new(code) when :code25interleaved require 'barby/barcode/code_25_interleaved' barcode = Barby::Code25Interleaved.new(code) when :code39 require 'barby/barcode/code_39' barcode = Barby::Code39.new(code) when :code93 require 'barby/barcode/code_93' barcode = Barby::Code93.new(code) when :code128 require 'barby/barcode/code_128' barcode = Barby::Code128.new(code) when :code128a require 'barby/barcode/code_128' barcode = Barby::Code128A.new(code) when :code128b require 'barby/barcode/code_128' barcode = Barby::Code128B.new(code) when :code128c require 'barby/barcode/code_128' barcode = Barby::Code128C.new(code) when :ean8 require 'barby/barcode/ean_8' barcode = Barby::EAN8.new(code) when :ean13 require 'barby/barcode/ean_13' barcode = Barby::EAN13.new(code) when :gs1_128 require 'barby/barcode/code_128' code = code.gsub /\([^)]+\)/ do |control| case control.upcase when '(FNC1)' Barby::Code128::FNC1 when '(FNC2)' Barby::Code128::FNC2 when '(FNC3)' Barby::Code128::FNC3 when '(FNC4)' Barby::Code128::FNC4 when '(CODEA)' Barby::Code128::CODEA when '(CODEB)' Barby::Code128::CODEB when '(CODEC)' Barby::Code128::CODEC when '(SHIFT)' Barby::Code128::SHIFT when '(SP)' ' ' else control end end code = code.gsub(/\s+/, '') code = code.prepend(Barby::Code128::FNC1) unless code[0] == Barby::Code128::FNC1 barcode = Barby::Code128.new(code) when :qrcode BarcodeDependencies::QRCODE_DEPENDENCIES.each_pair { |n, v| source.ensure_gem(n, v) } require 'barby/barcode/qr_code' barcode = Barby::QrCode.new(code) when :upca require 'barby/barcode/ean_13' barcode = Barby::UPCA.new(code) else raise "Unsupported barcode type: #{type}" end case format when :png BarcodeDependencies::PNG_DEPENDENCIES.each_pair { |n, v| source.ensure_gem(n, v) } require 'barby/outputter/png_outputter' require 'chunky_png/color' options[:foreground] = ChunkyPNG::Color(options[:foreground]) if options[:foreground] options[:background] = ChunkyPNG::Color(options[:background]) if options[:background] barcode.to_png(options) when :svg require_relative 'svg_outputter' options[:foreground] = "##{options[:foreground]}" if options[:foreground] =~ /^[0-9a-f]+$/i options[:background] = "##{options[:background]}" if options[:background] =~ /^[0-9a-f]+$/i barcode.to_svg(options) when :txt require 'barby/outputter/ascii_outputter' barcode.to_ascii else raise "Unsupported format: #{format}" end end
supported_formats()
click to toggle source
# File lib/asciidoctor-diagram/barcode/converter.rb, line 29 def supported_formats [:png, :svg, :txt] end