lib/zebra/zpl/label.rb in zebra-zpl-1.1.3 vs lib/zebra/zpl/label.rb in zebra-zpl-1.1.4
- old
+ new
@@ -1,86 +1,89 @@
-# encoding: utf-8
-
-module Zebra
- module Zpl
- class Label
- class InvalidPrintSpeedError < StandardError; end
- class InvalidPrintDensityError < StandardError; end
- class PrintSpeedNotInformedError < StandardError; end
-
- attr_writer :copies
- attr_reader :elements, :tempfile
- attr_accessor :width, :length, :print_speed
-
- def initialize(options = {})
- options.each_pair { |key, value| self.__send__("#{key}=", value) if self.respond_to?("#{key}=") }
- @elements = []
- end
-
- def print_speed=(s)
- raise InvalidPrintSpeedError unless (0..14).include?(s)
- @print_speed = s
- end
-
- def copies
- @copies || 1
- end
-
- def <<(element)
- element.width = self.width if element.respond_to?("width=") && element.width.nil?
- elements << element
- end
-
- def dump_contents(io = STDOUT)
- check_required_configurations
- # Start format
- io << "^XA"
- # ^LL<label height in dots>,<space between labels in dots>
- # io << "^LL#{length},#{gap}\n" if length && gap
- io << "^LL#{length}" if length
- # ^LH<label home - x,y coordinates of top left label>
- io << "^LH0,0"
- # ^LS<shift the label to the left(or right)>
- io << "^LS10"
- # ^PW<label width in dots>
- io << "^PW#{width}" if width
- # Print Rate(speed) (^PR command)
- io << "^PR#{print_speed}"
- # Density (D command) "Carried over from EPL, does this exist in ZPL ????"
- # io << "D#{print_density}\n" if print_density
-
- # TEST ZPL (comment everything else out)...
- # io << "^XA^WD*:*.FNT*^XZ"
- # TEST ZPL SEGMENT
- # io << "^WD*:*.FNT*"
- # TEST AND GET CONFIGS
- # io << "^HH"
-
- elements.each do |element|
- io << element.to_zpl
- end
- # Specify how many copies to print
- io << "^PQ#{copies}"
- # End format
- io << "^XZ"
- end
-
- def persist
- tempfile = Tempfile.new "zebra_label"
- dump_contents tempfile
- tempfile.close
- @tempfile = tempfile
- tempfile
- end
-
- def persisted?
- !!self.tempfile
- end
-
- private
-
- def check_required_configurations
- raise PrintSpeedNotInformedError unless print_speed
- end
- end
- end
-end
+# encoding: utf-8
+
+module Zebra
+ module Zpl
+ class Label
+ class InvalidPrintSpeedError < StandardError; end
+ class PrintSpeedNotInformedError < StandardError; end
+
+ attr_writer :copies, :label_shift
+ attr_reader :elements, :tempfile
+ attr_accessor :width, :length, :print_speed
+
+ def initialize(options = {})
+ options.each_pair { |key, value| self.__send__("#{key}=", value) if self.respond_to?("#{key}=") }
+ @elements = []
+ end
+
+ def print_speed=(s)
+ raise InvalidPrintSpeedError unless (0..14).include?(s)
+ @print_speed = s
+ end
+
+ def copies
+ @copies || 1
+ end
+
+ def label_shift
+ @label_shift || 10
+ end
+
+ def <<(element)
+ element.width = self.width if element.respond_to?("width=") && element.width.nil?
+ elements << element
+ end
+
+ def dump_contents(io = STDOUT)
+ check_required_configurations
+ # Start format
+ io << "^XA"
+ # ^LL<label height in dots>,<space between labels in dots>
+ # io << "^LL#{length},#{gap}\n" if length && gap
+ io << "^LL#{length}" if length
+ # ^LH<label home - x,y coordinates of top left label>
+ io << "^LH0,0"
+ # ^LS<shift the label to the left(or right)>
+ io << "^LS#{label_shift}"
+ # ^PW<label width in dots>
+ io << "^PW#{width}" if width
+ # Print Rate(speed) (^PR command)
+ io << "^PR#{print_speed}"
+ # Density (D command) "Carried over from EPL, does this exist in ZPL ????"
+ # io << "D#{print_density}\n" if print_density
+
+ # TEST ZPL (comment everything else out)...
+ # io << "^XA^WD*:*.FNT*^XZ"
+ # TEST ZPL SEGMENT
+ # io << "^WD*:*.FNT*"
+ # TEST AND GET CONFIGS
+ # io << "^HH"
+
+ elements.each do |element|
+ io << element.to_zpl
+ end
+ # Specify how many copies to print
+ io << "^PQ#{copies}"
+ # End format
+ io << "^XZ"
+ end
+
+ def persist
+ tempfile = Tempfile.new "zebra_label"
+ dump_contents tempfile
+ tempfile.close
+ @tempfile = tempfile
+ tempfile
+ end
+
+ def persisted?
+ !!self.tempfile
+ end
+
+ private
+
+ def check_required_configurations
+ raise PrintSpeedNotInformedError unless print_speed
+ end
+ end
+ end
+end