Module: Eancom

Defined in:
lib/eancom.rb,
lib/eancom/parser.rb,
lib/eancom/edifact.rb,
lib/eancom/factory.rb,
lib/eancom/version.rb,
lib/eancom/definition.rb,
lib/eancom/edifact/body.rb,
lib/eancom/edifact/data.rb,
lib/eancom/edifact/item.rb,
lib/eancom/edifact/footer.rb,
lib/eancom/edifact/header.rb,
lib/eancom/parser/segment.rb,
lib/eancom/edifact/message.rb,
lib/eancom/edifact/segment.rb,
lib/eancom/parser/document.rb,
lib/eancom/edifact/document.rb,
lib/eancom/edifact/composite.rb,
lib/eancom/edifact/structure.rb,
lib/eancom/edifact/segments/ajt.rb,
lib/eancom/edifact/segments/alc.rb,
lib/eancom/edifact/segments/ali.rb,
lib/eancom/edifact/segments/bgm.rb,
lib/eancom/edifact/segments/cav.rb,
lib/eancom/edifact/segments/cci.rb,
lib/eancom/edifact/segments/cdi.rb,
lib/eancom/edifact/segments/cnt.rb,
lib/eancom/edifact/segments/cps.rb,
lib/eancom/edifact/segments/cta.rb,
lib/eancom/edifact/segments/cux.rb,
lib/eancom/edifact/segments/dgs.rb,
lib/eancom/edifact/segments/doc.rb,
lib/eancom/edifact/segments/dtm.rb,
lib/eancom/edifact/segments/efi.rb,
lib/eancom/edifact/segments/eqd.rb,
lib/eancom/edifact/segments/ftx.rb,
lib/eancom/edifact/segments/gin.rb,
lib/eancom/edifact/segments/imd.rb,
lib/eancom/edifact/segments/inv.rb,
lib/eancom/edifact/segments/lin.rb,
lib/eancom/edifact/segments/loc.rb,
lib/eancom/edifact/segments/mea.rb,
lib/eancom/edifact/segments/moa.rb,
lib/eancom/edifact/segments/nad.rb,
lib/eancom/edifact/segments/pac.rb,
lib/eancom/edifact/segments/pat.rb,
lib/eancom/edifact/segments/pcd.rb,
lib/eancom/edifact/segments/pci.rb,
lib/eancom/edifact/segments/pgi.rb,
lib/eancom/edifact/segments/pia.rb,
lib/eancom/edifact/segments/pri.rb,
lib/eancom/edifact/segments/qty.rb,
lib/eancom/edifact/segments/rff.rb,
lib/eancom/edifact/segments/rte.rb,
lib/eancom/edifact/segments/tax.rb,
lib/eancom/edifact/segments/tdt.rb,
lib/eancom/edifact/segments/tod.rb,
lib/eancom/edifact/segments/tru.rb,
lib/eancom/edifact/segments/una.rb,
lib/eancom/edifact/segments/unb.rb,
lib/eancom/edifact/segments/unh.rb,
lib/eancom/edifact/segments/uns.rb,
lib/eancom/edifact/segments/unt.rb,
lib/eancom/edifact/segments/unz.rb,
lib/eancom/edifact/document_element.rb

Defined Under Namespace

Modules: Edifact, Parser Classes: Definition, Error, Factory, StructureNotFoundError

Constant Summary collapse

FILE_TYPES =
%I[
  desadv
  pricat
  ordrsp
  slsrpt
  invrpt
  orders
  invoic
  retann
].freeze
DELIMITERS =
{
  component: ':',
  data: '+',
  release: '?',
  decimal: '.',
  reserve: ' ',
  segment: '\''
}.freeze
VERSION =
"2.0.0"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#definitionsObject

Returns the value of attribute definitions.



28
29
30
# File 'lib/eancom.rb', line 28

def definitions
  @definitions
end

#segmentsObject

Returns the value of attribute segments.



28
29
30
# File 'lib/eancom.rb', line 28

def segments
  @segments
end

Class Method Details

.definitionsObject



30
31
32
# File 'lib/eancom.rb', line 30

def self.definitions
  @configs ||= {}
end

.find_definition(name:, type:) ⇒ Object



49
50
51
# File 'lib/eancom.rb', line 49

def self.find_definition(name:, type:)
  definitions[type][name]
end

.find_segment(tag:) ⇒ Object



57
58
59
# File 'lib/eancom.rb', line 57

def self.find_segment(tag:)
  segments[tag]
end

.find_structure(tag:) ⇒ Object



65
66
67
68
69
70
71
72
73
# File 'lib/eancom.rb', line 65

def self.find_structure(tag:)
  structure = structures[tag]
  if structure.nil?
    raise StructureNotFoundError.new(
      "Structure for tag: #{tag} not found."
    )
  end
  structure
end

.register_definition(definition) ⇒ Object



42
43
44
45
46
47
# File 'lib/eancom.rb', line 42

def self.register_definition(definition)
  type = definition.type
  name = definition.name
  definitions[type] ||= {}
  definitions[type][name] = definition
end

.register_segment(tag:, klass:) ⇒ Object



53
54
55
# File 'lib/eancom.rb', line 53

def self.register_segment(tag:, klass:)
  segments[tag] ||= klass
end

.register_structure(tag:, structure:) ⇒ Object



61
62
63
# File 'lib/eancom.rb', line 61

def self.register_structure(tag:, structure:)
  structures[tag] ||= structure
end

.segmentsObject



34
35
36
# File 'lib/eancom.rb', line 34

def self.segments
  @segments ||= {}
end

.structuresObject



38
39
40
# File 'lib/eancom.rb', line 38

def self.structures
  @structures ||= {}
end