class ShippingMaterials::Packager

Attributes

groups[RW]
objects[RW]
template[RW]

Public Class Methods

new() click to toggle source
# File lib/shipping_materials/packager.rb, line 7
def initialize
  @groups = []
  @sorters = {}
end

Public Instance Methods

group(basename, &block) click to toggle source
# File lib/shipping_materials/packager.rb, line 36
def group(basename, &block)
  group = Group.new(basename, @objects)
  group.instance_eval(&block) if block
  @groups << group
end
html(template) click to toggle source
# File lib/shipping_materials/packager.rb, line 26
def html(template)
  @packing_slip_template = template
  @packing_slip_ext = :html
end
package(objects, &block) click to toggle source
# File lib/shipping_materials/packager.rb, line 12
def package(objects, &block)
  @objects = objects
  instance_eval(&block)
  @groups.each do |group|
    sort_group(group)
    create_packing_slips(group)
    create_csvs(group)
  end
  if Config.use_gzip?
    Storage.write_gzip rescue nil
  end
  self
end
pdf(template) click to toggle source
# File lib/shipping_materials/packager.rb, line 31
def pdf(template)
  @packing_slip_template = template
  @packing_slip_ext = :pdf
end

Private Instance Methods

create_csvs(group) click to toggle source
# File lib/shipping_materials/packager.rb, line 54
  def create_csvs(group)
    group.csvs.each do |csv|
      filename = Storage.filenameize(group.basename) + '.' + csv.extension
      Storage.write_file(filename, csv.generate(group.objects))
  end
end
create_packing_slips(group) click to toggle source
# File lib/shipping_materials/packager.rb, line 48
def create_packing_slips(group)
  packing_slip = PackingSlips.new(group.objects, @packing_slip_template)
  filename = "#{group.basename}.#{@packing_slip_ext}"
  Storage.send(:"write_#{@packing_slip_ext}", filename , packing_slip.to_s)
end
sort_group(group) click to toggle source
# File lib/shipping_materials/packager.rb, line 43
def sort_group(group)
  group.sorters ||= self.sorters
  group.sort!
end