Sha256: f8d7f2f73a332564fcf176d6d6578b3138af59a9eecf7a3fbdf8a1e9ce6edf44

Contents?: true

Size: 1.55 KB

Versions: 6

Compression:

Stored size: 1.55 KB

Contents

require "zebra/epl/printable"

module Zebra
  module Epl
    class Barcode
      include Printable

      class InvalidNarrowBarWidthError < StandardError; end
      class InvalidWideBarWidthError   < StandardError; end

      attr_accessor :height
      attr_reader :type, :narrow_bar_width, :wide_bar_width
      attr_writer :print_human_readable_code

      def type=(type)
        BarcodeType.validate_barcode_type(type)
        @type = type
      end

      def narrow_bar_width=(width)
        raise InvalidNarrowBarWidthError unless (1..10).include?(width.to_i)
        @narrow_bar_width = width
      end

      def wide_bar_width=(width)
        raise InvalidWideBarWidthError unless (2..30).include?(width.to_i)
        @wide_bar_width = width
      end

      def print_human_readable_code
        @print_human_readable_code || false
      end

      def to_epl
        check_attributes
        human_readable = print_human_readable_code ? "B" : "N"
        ["B#{x}", y, rotation, type, narrow_bar_width, wide_bar_width, height, human_readable, "\"#{data}\""].join(",")
      end

      private

      def check_attributes
        super
        raise MissingAttributeError.new("the barcode type to be used is not given") unless @type
        raise MissingAttributeError.new("the height to be used is not given") unless @height
        raise MissingAttributeError.new("the narrow bar width to be used is not given") unless @narrow_bar_width
        raise MissingAttributeError.new("the wide bar width to be used is not given") unless @wide_bar_width
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
zebra-epl-0.0.8 lib/zebra/epl/barcode.rb
zebra-epl-0.0.7 lib/zebra/epl/barcode.rb
zebra-epl-0.0.6 lib/zebra/epl/barcode.rb
zebra-epl-0.0.5 lib/zebra/epl/barcode.rb
zebra-epl-0.0.2 lib/zebra/epl/barcode.rb
zebra-epl-0.0.1 lib/zebra/epl/barcode.rb