Module: Tritech

Defined in:
lib/tritech.rb,
lib/tritech/version.rb

Constant Summary collapse

SPECIFICATION =
Slither.define :tritech do |batch|
  batch.template :record do |r|
    r.column :record_type, 3
  end

  batch.template :call_record do |r|
    r.column :record_type, 3
    r.spacer 1
    r.column :call_number, 15, :align => :left #pkey
    r.column :leg, 1, :type => :integer, :align =>:right, :padding=>:zero
    r.column :patient_rank, 1
  end

  batch.header do |header|
    header.trap { |line| line[0,3] == 'HDR'}
    header.template :record
    header.column :batch_number, 6, :padding => :zero
  end

  dir = File.join(File.expand_path('../lib/tritech',__FILE__),
                  "sections/**/*.rb")
  Dir[dir].each { |section|batch.instance_eval(File.read(section)) }
end
VERSION =
'0.5.2'

Class Method Summary collapse

Class Method Details

.generate(data) ⇒ Object



38
39
40
41
42
43
44
45
46
47
# File 'lib/tritech.rb', line 38

def self.generate(data)
  builder = []
  data.each do |record|
    section = SPECIFICATION.sections.find { |s| s.match(record[:record_type])}
    builder << section.format(record)
  end
  #Tritech Amazon is a windows product, so it needs
  #windows style line endings.
  builder.join("\r\n")
end

.parse(file) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/tritech.rb', line 29

def self.parse(file)
  parsed = []
  content = File.foreach(file) do |line|
    section = SPECIFICATION.sections.find { |s|s.match(line)}
    parsed << section.parse(line) if section
  end
  parsed
end

.write(filename, data) ⇒ Object



49
50
51
52
53
# File 'lib/tritech.rb', line 49

def self.write(filename, data)
  File.open(filename, 'w') do |f|
    f.write generate(data)
  end
end