class EdifactConverter::XML112EDI::EdiHandler

Attributes

binary[RW]
edifact[RW]
first_value[RW]
first_value?[RW]
linebreak[RW]
processing_binary[RW]
processing_binary?[RW]

Public Class Methods

new(nexthandler = nil) click to toggle source
Calls superclass method EdifactConverter::EmptyHandler::new
# File lib/edifact_converter/xml112edi/edi_handler.rb, line 22
def initialize(nexthandler = nil)
  self.linebreak = "\n" if EdifactConverter::Configuration.format_edi
  super
end

Public Instance Methods

binary?() click to toggle source
# File lib/edifact_converter/xml112edi/edi_handler.rb, line 69
def binary?
  binary.any?
end
endSegment() click to toggle source
# File lib/edifact_converter/xml112edi/edi_handler.rb, line 61
def endSegment
  if processing_binary?
    self.processing_binary = false
  else
    edifact.write("'#{linebreak}")
  end
end
startDocument() click to toggle source
# File lib/edifact_converter/xml112edi/edi_handler.rb, line 27
def startDocument
  self.edifact = nil
  binary.clear
  edifact.write("UNA:+.? '#{linebreak}")
end
startElement() click to toggle source
# File lib/edifact_converter/xml112edi/edi_handler.rb, line 41
def startElement
  unless processing_binary?
    edifact.write('+')
    self.first_value = true
  end
end
startSegment(name, position = nil) click to toggle source
# File lib/edifact_converter/xml112edi/edi_handler.rb, line 33
def startSegment(name, position = nil)
  if name == "OBJ"
    self.processing_binary = true
  else
    edifact.write(name)
  end
end
value(text) click to toggle source
# File lib/edifact_converter/xml112edi/edi_handler.rb, line 48
def value(text)
  if processing_binary?
    id = binary_id
    binary[id] = text
    text = id
  elsif first_value
    self.first_value = false
  else
    edifact.write(':') unless first_value?
  end
  edifact.write text.to_s.gsub(/([\?:\'\+])/,'?\1')
end

Private Instance Methods

binary_id() click to toggle source
# File lib/edifact_converter/xml112edi/edi_handler.rb, line 79
def binary_id
  "@@BINARY#{SecureRandom.uuid}@@"
end