Sha256: 8ebd45713a91e509cbe3a6b92fa78f531dff8a2ff3d3a3413f9284d6f03551d6

Contents?: true

Size: 714 Bytes

Versions: 1

Compression:

Stored size: 714 Bytes

Contents

require 'json'

module Eancom
  class Factory

    attr_reader :config, :definition, :document

    def initialize(json:)
      @config = JSON.parse(json, object_class: OpenStruct)
      @document = Eancom::Edifact::Document.new
    end

    def build
      @definition = Eancom.find_definition(name: name, type: type)
      @definition.run(document: document, config: message)
      puts document.to_s
    end

    private

    def type
      type = config.type.to_sym
      if Eancom::FILE_TYPES.include?(type)
        type
      else
        raise Eancom::Error.new("EANCOM FILE TYPE NOT VALID!")
      end
    end

    def name
      config.name
    end

    def message
      config.message
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
eancom-0.1.0 lib/eancom/factory.rb