Sha256: 506c72af08f82e23bcb2b8fc5a60c7b1cf85759bd77fab946cd8e70ed61201d7

Contents?: true

Size: 911 Bytes

Versions: 16

Compression:

Stored size: 911 Bytes

Contents

require 'barby/outputter'

module Barby

  #Outputs an ASCII representation of the barcode. This is mostly useful for printing
  #the barcode directly to the terminal for testing.
  #
  #Registers to_ascii
  class AsciiOutputter < Outputter

    register :to_ascii


    def to_ascii(opts={})
      default_opts = {:height => 10, :xdim => 1, :bar => '#', :space => ' '}
      default_opts.update(:height => 1, :bar => ' X ', :space => '   ') if barcode.two_dimensional?
      opts = default_opts.merge(opts)

      if barcode.two_dimensional?
        booleans.map do |bools|
          line_to_ascii(bools, opts)
        end.join("\n")
      else
        line_to_ascii(booleans, opts)
      end
    end


  private

    def line_to_ascii(booleans, opts)
      Array.new(
        opts[:height],
        booleans.map{|b| (b ? opts[:bar] : opts[:space]) * opts[:xdim] }.join
      ).join("\n")
    end


  end

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
barby-0.7.0 lib/barby/outputter/ascii_outputter.rb
barby-0.6.9 lib/barby/outputter/ascii_outputter.rb
barby-0.6.8 lib/barby/outputter/ascii_outputter.rb
barby-0.6.7 lib/barby/outputter/ascii_outputter.rb
barby-0.6.6 lib/barby/outputter/ascii_outputter.rb
barby-0.6.5 lib/barby/outputter/ascii_outputter.rb
barby-0.6.4 lib/barby/outputter/ascii_outputter.rb
barby-0.6.3 lib/barby/outputter/ascii_outputter.rb
barby-0.6.2 lib/barby/outputter/ascii_outputter.rb
barby-0.6.1 lib/barby/outputter/ascii_outputter.rb
barby-0.6.0 lib/barby/outputter/ascii_outputter.rb
barby-0.5.1 lib/barby/outputter/ascii_outputter.rb
barby-0.5.0 lib/barby/outputter/ascii_outputter.rb
barby-0.4.5 lib/barby/outputter/ascii_outputter.rb
barby-0.4.4 lib/barby/outputter/ascii_outputter.rb
barby-0.4.3 lib/barby/outputter/ascii_outputter.rb