eddy 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +103 -37
- data/.solargraph.yml +4 -0
- data/.vscode/settings.json +17 -0
- data/.yardopts +2 -2
- data/CHANGELOG.md +50 -0
- data/Gemfile.lock +21 -7
- data/README.md +32 -3
- data/Rakefile +1 -10
- data/data/004010/code-lists/100.tsv +164 -0
- data/data/004010/code-lists/156.tsv +52 -0
- data/data/004010/code-lists/26.tsv +499 -0
- data/data/004010/code-lists/etc/100-fancy-definitions.tsv +164 -0
- data/data/004010/code-lists/etc/100-with-funds-codes.tsv +180 -0
- data/data/004010/code-lists/etc/26-alpha2.tsv +250 -0
- data/data/004010/code-lists/etc/26-alpha3.tsv +250 -0
- data/data/004010/elements-short.tsv +1405 -0
- data/data/004010/elements.tsv +3 -3
- data/data/004010/segments.tsv +1009 -1003
- data/data/004010/segments/ack.segment.yml +15 -0
- data/data/004010/segments/bak.segment.yml +9 -0
- data/data/004010/segments/beg.segment.yml +17 -0
- data/data/004010/segments/big.segment.yml +10 -0
- data/data/004010/segments/bsn.segment.yml +10 -0
- data/data/004010/segments/cad.segment.yml +14 -0
- data/data/004010/segments/ctp.segment.yml +19 -0
- data/data/004010/segments/ctt.segment.yml +13 -0
- data/data/004010/segments/dtm.segment.yml +7 -0
- data/data/004010/segments/envelope/ge.segment.yml +7 -0
- data/data/004010/segments/envelope/gs.segment.yml +13 -0
- data/data/004010/segments/envelope/iea.segment.yml +8 -0
- data/data/004010/segments/envelope/isa.segment.yml +22 -0
- data/data/004010/segments/envelope/se.segment.yml +7 -0
- data/data/004010/segments/envelope/st.segment.yml +12 -0
- data/data/004010/segments/hl.segment.yml +9 -0
- data/data/004010/segments/it1.segment.yml +20 -0
- data/data/004010/segments/lin.segment.yml +10 -0
- data/data/004010/segments/loop/hl.segment.yml +8 -0
- data/data/004010/segments/man.segment.yml +7 -0
- data/data/004010/segments/n1.segment.yml +9 -0
- data/data/004010/segments/n2.segment.yml +7 -0
- data/data/004010/segments/n3.segment.yml +6 -0
- data/data/004010/segments/n4.segment.yml +9 -0
- data/data/004010/segments/pid.segment.yml +10 -0
- data/data/004010/segments/po1.segment.yml +14 -0
- data/data/004010/segments/prf.segment.yml +9 -0
- data/data/004010/segments/ref.segment.yml +7 -0
- data/data/004010/segments/sac.segment.yml +20 -0
- data/data/004010/segments/sln.segment.yml +12 -0
- data/data/004010/segments/sn1.segment.yml +11 -0
- data/data/004010/segments/td1.segment.yml +13 -0
- data/data/004010/segments/td5.segment.yml +11 -0
- data/data/004010/segments/tds.segment.yml +10 -0
- data/data/schema/element_summary.json +60 -0
- data/data/schema/loop_summary.json +49 -0
- data/data/schema/segment_summary.json +66 -0
- data/data/schema/src/element_summary.schema.yml +73 -0
- data/data/schema/src/loop_summary.schema.yml +50 -0
- data/data/schema/src/segment_summary.schema.yml +59 -0
- data/data/schema/src/transaction_set_summary.schema.yml +27 -0
- data/data/schema/transaction_set_summary.json +33 -0
- data/data/sources.md +114 -145
- data/eddy.gemspec +6 -3
- data/exe/eddy +14 -0
- data/lib/definitions/elements/generated/1005.hierarchical_structure_code.rb +98 -0
- data/lib/definitions/elements/generated/1019.invoice_type_code.rb +40 -0
- data/lib/definitions/elements/generated/103.packaging_code.rb +29 -0
- data/lib/definitions/elements/generated/1166.contract_type_code.rb +87 -0
- data/lib/definitions/elements/generated/1232.purchase_category.rb +53 -0
- data/lib/definitions/elements/generated/127.reference_identification.rb +29 -0
- data/lib/definitions/elements/generated/128.reference_identification_qualifier.rb +1540 -0
- data/lib/definitions/elements/generated/1300.service_promotion_allowance_or_charge_code.rb +1090 -0
- data/lib/definitions/elements/generated/1301.agency_service_promotion_allowance_or_charge_code.rb +29 -0
- data/lib/definitions/elements/generated/133.routing_sequence_code.rb +60 -0
- data/lib/definitions/elements/generated/166.address_information.rb +29 -0
- data/lib/definitions/elements/generated/183.volume.rb +29 -0
- data/lib/definitions/elements/generated/187.weight_qualifier.rb +88 -0
- data/lib/definitions/elements/generated/19.city_name.rb +29 -0
- data/lib/definitions/elements/generated/206.equipment_initial.rb +29 -0
- data/lib/definitions/elements/generated/207.equipment_number.rb +29 -0
- data/lib/definitions/elements/generated/212.unit_price.rb +29 -0
- data/lib/definitions/elements/generated/22.commodity_code.rb +29 -0
- data/lib/definitions/elements/generated/23.commodity_code_qualifier.rb +60 -0
- data/lib/definitions/elements/generated/234.product_service_id.rb +29 -0
- data/lib/definitions/elements/generated/235.product_service_id_qualifier.rb +514 -0
- data/lib/definitions/elements/generated/236.price_identifier_code.rb +201 -0
- data/lib/definitions/elements/generated/248.allowance_or_charge_indicator.rb +44 -0
- data/lib/definitions/elements/generated/26.country_code.rb +535 -0
- data/lib/definitions/elements/generated/284.service_level_code.rb +103 -0
- data/lib/definitions/elements/generated/324.purchase_order_number.rb +29 -0
- data/lib/definitions/elements/generated/326.request_reference_number.rb +29 -0
- data/lib/definitions/elements/generated/327.change_order_sequence_number.rb +29 -0
- data/lib/definitions/elements/generated/328.release_number.rb +29 -0
- data/lib/definitions/elements/generated/330.quantity_ordered.rb +29 -0
- data/lib/definitions/elements/generated/347.hash_total.rb +29 -0
- data/lib/definitions/elements/generated/349.item_description_type.rb +40 -0
- data/lib/definitions/elements/generated/352.description.rb +29 -0
- data/lib/definitions/elements/generated/353.transaction_set_purpose_code.rb +102 -0
- data/lib/definitions/elements/generated/354.number_of_line_items.rb +30 -0
- data/lib/definitions/elements/generated/355.unit_or_basis_for_measurement_code.rb +831 -0
- data/lib/definitions/elements/generated/358.quantity_invoiced.rb +29 -0
- data/lib/definitions/elements/generated/367.contract_number.rb +29 -0
- data/lib/definitions/elements/generated/368.shipment_order_status_code.rb +139 -0
- data/lib/definitions/elements/generated/374.date_time_qualifier.rb +1149 -0
- data/lib/definitions/elements/generated/380.quantity.rb +29 -0
- data/lib/definitions/elements/generated/382.number_of_units_shipped.rb +29 -0
- data/lib/definitions/elements/generated/387.routing.rb +29 -0
- data/lib/definitions/elements/generated/396.shipment_identification.rb +29 -0
- data/lib/definitions/elements/generated/559.agency_qualifier_code.rb +213 -0
- data/lib/definitions/elements/generated/587.acknowledgment_type.rb +52 -0
- data/lib/definitions/elements/generated/610.amount.rb +30 -0
- data/lib/definitions/elements/generated/639.basis_of_unit_price_code.rb +128 -0
- data/lib/definitions/elements/generated/640.transaction_type_code.rb +483 -0
- data/lib/definitions/elements/generated/646.quantity_shipped_to_date.rb +29 -0
- data/lib/definitions/elements/generated/648.price_multiplier_qualifier.rb +43 -0
- data/lib/definitions/elements/generated/649.multiplier.rb +29 -0
- data/lib/definitions/elements/generated/66.identification_code_qualifier.rb +252 -0
- data/lib/definitions/elements/generated/662.relationship_code.rb +42 -0
- data/lib/definitions/elements/generated/668.line_item_status_code.rb +63 -0
- data/lib/definitions/elements/generated/67.identification_code.rb +29 -0
- data/lib/definitions/elements/generated/687.class_of_trade_code.rb +89 -0
- data/lib/definitions/elements/generated/750.product_process_characteristic_code.rb +254 -0
- data/lib/definitions/elements/generated/751.product_description_code.rb +29 -0
- data/lib/definitions/elements/generated/76.invoice_number.rb +29 -0
- data/lib/definitions/elements/generated/782.monetary_amount.rb +29 -0
- data/lib/definitions/elements/generated/786.security_level_code.rb +54 -0
- data/lib/definitions/elements/generated/79.lading_description.rb +29 -0
- data/lib/definitions/elements/generated/80.lading_quantity.rb +30 -0
- data/lib/definitions/elements/generated/87.marks_and_numbers.rb +29 -0
- data/lib/definitions/elements/generated/88.marks_and_numbers_qualifier.rb +57 -0
- data/lib/definitions/elements/generated/91.transportation_method_type_code.rb +108 -0
- data/lib/definitions/elements/generated/92.purchase_order_type_code.rb +106 -0
- data/lib/definitions/elements/generated/98.entity_identifier_code.rb +1349 -0
- data/lib/definitions/elements/manual/116.postal_code.rb +44 -0
- data/lib/definitions/elements/manual/124.application_receivers_code.rb +29 -0
- data/lib/definitions/elements/manual/140.standard_carrier_alpha_code.rb +211 -0
- data/lib/definitions/elements/manual/142.application_senders_code.rb +29 -0
- data/lib/definitions/elements/manual/143.transaction_set_identifier_code.rb +335 -0
- data/lib/definitions/elements/manual/156.state_or_province_code.rb +92 -0
- data/lib/definitions/elements/manual/28.group_control_number.rb +34 -0
- data/lib/definitions/elements/manual/329.transactional_set_control_number.rb +35 -0
- data/lib/definitions/elements/manual/337.time.rb +30 -0
- data/lib/definitions/elements/manual/350.assigned_identification.rb +33 -0
- data/lib/definitions/elements/manual/373.date.rb +30 -0
- data/lib/definitions/elements/manual/455.responsible_agency_code.rb +43 -0
- data/lib/definitions/elements/manual/479.functional_identifier_code.rb +271 -0
- data/lib/definitions/elements/manual/480.version_release_industry_identifier_code.rb +145 -0
- data/lib/definitions/elements/manual/784.length_of_binary_data.rb +30 -0
- data/lib/definitions/elements/manual/785.binary_data.rb +30 -0
- data/lib/definitions/elements/manual/96.number_of_included_segments.rb +30 -0
- data/lib/definitions/elements/manual/97.number_of_transaction_sets_included.rb +30 -0
- data/lib/definitions/elements/manual/hl/628.hierarchical_id_number.rb +29 -0
- data/lib/definitions/elements/manual/hl/734.hierarchical_parent_id_number.rb +29 -0
- data/lib/definitions/elements/manual/hl/735.hierarchical_level_code.rb +207 -0
- data/lib/definitions/elements/manual/hl/736.hierarchical_child_code.rb +39 -0
- data/lib/definitions/elements/manual/i/I01.authorization_information_qualifier.rb +48 -0
- data/lib/definitions/elements/manual/i/I02.authorization_information.rb +33 -0
- data/lib/definitions/elements/manual/i/I03.security_information_qualifier.rb +43 -0
- data/lib/definitions/elements/manual/i/I04.security_information.rb +33 -0
- data/lib/definitions/elements/manual/i/I05.interchange_id_qualifier.rb +75 -0
- data/lib/definitions/elements/manual/i/I06.interchange_sender_id.rb +29 -0
- data/lib/definitions/elements/manual/i/I07.interchange_receiver_id.rb +29 -0
- data/lib/definitions/elements/manual/i/I08.interchange_date.rb +35 -0
- data/lib/definitions/elements/manual/i/I09.interchange_time.rb +36 -0
- data/lib/definitions/elements/manual/i/I10.interchange_control_standards_identifier.rb +42 -0
- data/lib/definitions/elements/manual/i/I11.interchange_control_version_number.rb +55 -0
- data/lib/definitions/elements/manual/i/I12.interchange_control_number.rb +34 -0
- data/lib/definitions/elements/manual/i/I13.acknowledgment_requested.rb +43 -0
- data/lib/definitions/elements/manual/i/I14.usage_indicator.rb +40 -0
- data/lib/definitions/elements/manual/i/I15.component_element_separator.rb +36 -0
- data/lib/definitions/elements/manual/i/I16.number_of_included_functional_groups.rb +30 -0
- data/lib/definitions/elements/manual/misc/81.weight.rb +29 -0
- data/lib/definitions/elements/manual/misc/93.name.rb +29 -0
- data/lib/definitions/segments/generated/ack.rb +192 -0
- data/lib/definitions/segments/generated/bak.rb +90 -0
- data/lib/definitions/segments/generated/beg.rb +226 -0
- data/lib/definitions/segments/generated/big.rb +107 -0
- data/lib/definitions/segments/generated/bsn.rb +107 -0
- data/lib/definitions/segments/generated/cad.rb +175 -0
- data/lib/definitions/segments/generated/ctp.rb +158 -0
- data/lib/definitions/segments/generated/ctt.rb +141 -0
- data/lib/definitions/segments/generated/dtm.rb +56 -0
- data/lib/definitions/segments/generated/it1.rb +277 -0
- data/lib/definitions/segments/generated/lin.rb +107 -0
- data/lib/definitions/segments/generated/man.rb +56 -0
- data/lib/definitions/segments/generated/n1.rb +90 -0
- data/lib/definitions/segments/generated/n3.rb +39 -0
- data/lib/definitions/segments/generated/n4.rb +90 -0
- data/lib/definitions/segments/generated/pid.rb +107 -0
- data/lib/definitions/segments/generated/po1.rb +175 -0
- data/lib/definitions/segments/generated/prf.rb +90 -0
- data/lib/definitions/segments/generated/ref.rb +56 -0
- data/lib/definitions/segments/generated/sac.rb +107 -0
- data/lib/definitions/segments/generated/sln.rb +141 -0
- data/lib/definitions/segments/generated/sn1.rb +124 -0
- data/lib/definitions/segments/generated/td1.rb +158 -0
- data/lib/definitions/segments/generated/td5.rb +107 -0
- data/lib/definitions/segments/generated/tds.rb +39 -0
- data/lib/definitions/segments/manual/envelopes/ge.rb +53 -0
- data/lib/definitions/segments/manual/envelopes/gs.rb +163 -0
- data/lib/definitions/segments/manual/envelopes/iea.rb +53 -0
- data/lib/definitions/segments/manual/envelopes/isa.rb +295 -0
- data/lib/definitions/segments/manual/envelopes/se.rb +52 -0
- data/lib/definitions/segments/manual/envelopes/st.rb +52 -0
- data/lib/definitions/segments/manual/hl.rb +96 -0
- data/lib/definitions/segments/manual/n2.rb +52 -0
- data/lib/definitions/transaction_sets/manual/810/810.rb +143 -0
- data/lib/definitions/transaction_sets/manual/810/loops.rb +109 -0
- data/lib/definitions/transaction_sets/manual/850/850.rb +92 -0
- data/lib/definitions/transaction_sets/manual/850/loops.rb +58 -0
- data/lib/definitions/transaction_sets/manual/855/855.rb +83 -0
- data/lib/definitions/transaction_sets/manual/855/loops.rb +104 -0
- data/lib/definitions/transaction_sets/manual/856/856.rb +83 -0
- data/lib/definitions/transaction_sets/manual/856/loops.rb +155 -0
- data/lib/eddy.rb +29 -7
- data/lib/eddy/build/build.rb +47 -0
- data/lib/eddy/build/elements/element.rb +67 -0
- data/lib/eddy/build/elements/elements.rb +46 -0
- data/lib/eddy/build/elements/id.rb +55 -0
- data/lib/eddy/build/elements/n.rb +48 -0
- data/lib/eddy/build/loop_builder.rb +93 -0
- data/lib/eddy/build/segment_builder.rb +169 -0
- data/lib/eddy/build/transaction_set_builder.rb +218 -0
- data/lib/eddy/cli/cli.rb +39 -0
- data/lib/eddy/config.rb +51 -0
- data/lib/eddy/data.rb +50 -0
- data/lib/eddy/data/persistence/active_record.rb +10 -0
- data/lib/eddy/data/persistence/base.rb +47 -0
- data/lib/eddy/data/persistence/file.rb +50 -0
- data/lib/eddy/data/persistence/memory.rb +65 -0
- data/lib/eddy/data/store.rb +108 -0
- data/lib/eddy/errors.rb +112 -0
- data/lib/eddy/models/element.rb +14 -0
- data/lib/eddy/models/element/an.rb +55 -0
- data/lib/eddy/models/element/b.rb +53 -0
- data/lib/eddy/models/element/base.rb +116 -0
- data/lib/eddy/models/element/composite.rb +6 -0
- data/lib/eddy/models/element/dt.rb +100 -0
- data/lib/eddy/models/element/id.rb +58 -0
- data/lib/eddy/models/element/n.rb +94 -0
- data/lib/eddy/models/element/r.rb +84 -0
- data/lib/eddy/models/element/tm.rb +113 -0
- data/lib/eddy/models/loop.rb +74 -0
- data/lib/eddy/models/segment.rb +35 -0
- data/lib/eddy/models/transaction_set.rb +101 -0
- data/lib/eddy/parse.rb +58 -0
- data/lib/eddy/schema/element_summary.rb +123 -0
- data/lib/eddy/schema/loop_summary.rb +101 -0
- data/lib/eddy/schema/segment_summary.rb +116 -0
- data/lib/eddy/schema/transaction_set_summary.rb +96 -0
- data/lib/eddy/schema/validate.rb +41 -0
- data/lib/eddy/util.rb +16 -0
- data/lib/eddy/util/clean_folder.rb +14 -0
- data/lib/eddy/util/edi_data.rb +153 -0
- data/lib/eddy/util/new_number.rb +24 -0
- data/lib/eddy/util/normalize.rb +51 -0
- data/lib/eddy/util/paths.rb +19 -0
- data/lib/eddy/util/read.rb +38 -0
- data/lib/eddy/util/time.rb +56 -0
- data/lib/eddy/util/timestamp.rb +12 -0
- data/lib/eddy/util/trim.rb +29 -0
- data/lib/eddy/version.rb +1 -1
- data/lib/eddy/write/functional_group.rb +33 -0
- data/lib/eddy/write/interchange.rb +28 -0
- data/lib/eddy/write/simple_interchange.rb +57 -0
- data/lib/generators/eddy/initializer/initializer_generator.rb +17 -0
- data/lib/generators/eddy/initializer/templates/eddy.rb.erb +6 -0
- data/lib/generators/eddy/migration/migration_generator.rb +53 -0
- data/lib/generators/eddy/migration/templates/migration.rb.erb +35 -0
- data/tasks/build.rake +15 -0
- data/tasks/misc/gemspec.rake +12 -0
- data/tasks/misc/missing_lists.rake +240 -0
- data/tasks/misc/yaml2json.rake +20 -0
- data/todo.txt +16 -0
- metadata +297 -42
- data/data/004010/segments/ISA.tsv +0 -17
- data/data/schema.jsonc +0 -67
- data/lib/eddy/build/build_an.rb +0 -31
- data/lib/eddy/build/build_dt.rb +0 -46
- data/lib/eddy/build/build_elements.rb +0 -181
- data/lib/eddy/build/build_id.rb +0 -56
- data/lib/eddy/build/build_r_and_n.rb +0 -69
- data/lib/eddy/build/build_tm.rb +0 -52
- data/lib/eddy/build/segments.rb +0 -25
- data/lib/eddy/definitions/manual/elements/109.dt.pickup_date.rb +0 -20
- data/lib/eddy/definitions/manual/elements/111.tm.pickup_time.rb +0 -20
- data/lib/eddy/definitions/manual/elements/112.an.pier_name.rb +0 -19
- data/lib/eddy/definitions/manual/elements/785.b.binary_data.rb +0 -19
- data/lib/eddy/definitions/manual/elements/81.r.weight.rb +0 -19
- data/lib/eddy/definitions/manual/elements/86.n0.total_equipment.rb +0 -20
- data/lib/eddy/definitions/manual/elements/I02.authorization_information.rb +0 -20
- data/lib/eddy/definitions/manual/elements/I04.security_information.rb +0 -20
- data/lib/eddy/definitions/manual/elements/I08.interchange_date.rb +0 -20
- data/lib/eddy/definitions/manual/elements/I09.interchange_time.rb +0 -20
- data/lib/eddy/definitions/manual/elements/I15.component_element_separator.rb +0 -32
- data/lib/eddy/definitions/manual/segments/n1.rb +0 -14
- data/lib/eddy/element.rb +0 -14
- data/lib/eddy/element/an.rb +0 -36
- data/lib/eddy/element/b.rb +0 -9
- data/lib/eddy/element/base.rb +0 -37
- data/lib/eddy/element/dt.rb +0 -89
- data/lib/eddy/element/id.rb +0 -40
- data/lib/eddy/element/n.rb +0 -43
- data/lib/eddy/element/r.rb +0 -47
- data/lib/eddy/element/tm.rb +0 -108
- data/lib/eddy/error.rb +0 -14
- data/lib/eddy/helpers.rb +0 -31
- data/lib/eddy/segment.rb +0 -12
- data/lib/eddy/transaction_set.rb +0 -35
data/lib/eddy/build/build_tm.rb
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
require "food_truck"
|
|
2
|
-
|
|
3
|
-
module Eddy
|
|
4
|
-
module Build
|
|
5
|
-
|
|
6
|
-
# @param e [Hash]
|
|
7
|
-
# @return [void]
|
|
8
|
-
def self.build_tm(e)
|
|
9
|
-
fmt = determine_tm_format(e[:max])
|
|
10
|
-
constructor = FoodTruck::Func.create({
|
|
11
|
-
name: "initialize",
|
|
12
|
-
body: <<~FUNC_BODY,
|
|
13
|
-
@id = "#{e[:id]}"
|
|
14
|
-
@name = "#{e[:name]}"
|
|
15
|
-
@type = "TM"
|
|
16
|
-
self.min = #{e[:min]}
|
|
17
|
-
self.max = #{e[:max]}
|
|
18
|
-
super(:#{fmt})
|
|
19
|
-
FUNC_BODY
|
|
20
|
-
}).render()
|
|
21
|
-
data = {
|
|
22
|
-
name: e[:name],
|
|
23
|
-
description: e[:description],
|
|
24
|
-
parent: "Eddy::Element::TM",
|
|
25
|
-
modules: ["Eddy", "Elements"],
|
|
26
|
-
body: constructor,
|
|
27
|
-
file_prefix: "#{e[:id]}.",
|
|
28
|
-
}
|
|
29
|
-
c = FoodTruck::Class.create(data)
|
|
30
|
-
c.generate(File.join(Eddy.root_dir, "build", "elements", "tm"))
|
|
31
|
-
return nil
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# @param int [Integer]
|
|
35
|
-
# @return [Symbol]
|
|
36
|
-
def self.determine_tm_format(int)
|
|
37
|
-
case int
|
|
38
|
-
when 4
|
|
39
|
-
return :hhmm
|
|
40
|
-
when 6
|
|
41
|
-
return :hhmmss
|
|
42
|
-
when 7
|
|
43
|
-
return :hhmmssd
|
|
44
|
-
when 8
|
|
45
|
-
return :hhmmssdd
|
|
46
|
-
else
|
|
47
|
-
raise Eddy::Error, "unable to determine format for tm element"
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
end
|
|
52
|
-
end
|
data/lib/eddy/build/segments.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Build
|
|
3
|
-
|
|
4
|
-
segment_file = File.join(Eddy.data_dir, "004010", "segments.tsv")
|
|
5
|
-
segment_data = Eddy.parse_tsv(segment_file)
|
|
6
|
-
|
|
7
|
-
headers = [
|
|
8
|
-
"Ref",
|
|
9
|
-
"Id",
|
|
10
|
-
"ElementName",
|
|
11
|
-
"Description",
|
|
12
|
-
"Req",
|
|
13
|
-
"Type",
|
|
14
|
-
"Min",
|
|
15
|
-
"Max",
|
|
16
|
-
"Usage",
|
|
17
|
-
"Default",
|
|
18
|
-
].join("\t")
|
|
19
|
-
|
|
20
|
-
segment_data.each do |segment|
|
|
21
|
-
File.open("tmp/segments/#{segment[:id]}.tsv", "a") { |f| f.write(headers) }
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: 109
|
|
4
|
-
# - Name: Pick-up Date
|
|
5
|
-
# - Type: DT (CCYYMMDD)
|
|
6
|
-
# - Min/Max: 8/8
|
|
7
|
-
# - Description: Date the carrier picks up the shipment from the shipper or supplier expressed in format CCYYMMDD
|
|
8
|
-
class PickupDate < Eddy::Element::DT
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "109"
|
|
12
|
-
@name = "Pick-up Date"
|
|
13
|
-
@type = "DT"
|
|
14
|
-
self.min = 8
|
|
15
|
-
self.max = 8
|
|
16
|
-
super(:ccyymmdd)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: 111
|
|
4
|
-
# - Name: Pick-up Time
|
|
5
|
-
# - Type: TM (HHMM)
|
|
6
|
-
# - Min/Max: 4/4
|
|
7
|
-
# - Description: Time (HHMM) that the carrier is to pick up the shipment.
|
|
8
|
-
class PickupTime < Eddy::Element::TM
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "111"
|
|
12
|
-
@name = "Pick-up Time"
|
|
13
|
-
@type = "TM"
|
|
14
|
-
self.min = 4
|
|
15
|
-
self.max = 4
|
|
16
|
-
super(:hhmm)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: 112
|
|
4
|
-
# - Name: Pier Name
|
|
5
|
-
# - Type: AN
|
|
6
|
-
# - Min/Max: 2/14
|
|
7
|
-
# - Description: Free-form name of the pier.
|
|
8
|
-
class PierName < Eddy::Element::AN
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "112"
|
|
12
|
-
@name = "Pier Name"
|
|
13
|
-
@type = "AN"
|
|
14
|
-
self.min = 2
|
|
15
|
-
self.max = 14
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: 785
|
|
4
|
-
# - Name: Binary Data
|
|
5
|
-
# - Type: B
|
|
6
|
-
# - Min/Max: 1/?
|
|
7
|
-
# - Description: A string of octets which can assume any binary pattern from hexadecimal 00 to FF
|
|
8
|
-
class BinaryData < Eddy::Element::B
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
self.id = "785"
|
|
12
|
-
self.name = "Binary Data"
|
|
13
|
-
self.type = "B"
|
|
14
|
-
self.min = 1
|
|
15
|
-
self.max = 10_000_000_000_000_000
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: 81
|
|
4
|
-
# - Name: Weight
|
|
5
|
-
# - Type: R
|
|
6
|
-
# - Min/Max: 1/10
|
|
7
|
-
# - Description: Numeric value of weight
|
|
8
|
-
class Weight < Eddy::Element::R
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "81"
|
|
12
|
-
@name = "Weight"
|
|
13
|
-
@type = "R"
|
|
14
|
-
self.min = 1
|
|
15
|
-
self.max = 10
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: 86
|
|
4
|
-
# - Name: Total Equipment
|
|
5
|
-
# - Type: N0
|
|
6
|
-
# - Min/Max: 1/3
|
|
7
|
-
# - Description: Total pieces of equipment
|
|
8
|
-
class TotalEquipment < Eddy::Element::N
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "86"
|
|
12
|
-
@name = "Total Equipment"
|
|
13
|
-
@type = "N0"
|
|
14
|
-
self.min = 1
|
|
15
|
-
self.max = 3
|
|
16
|
-
self.decimal_points = 0
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: I02
|
|
4
|
-
# - Name: Authorization Information
|
|
5
|
-
# - Type: AN
|
|
6
|
-
# - Min/Max: 10/10
|
|
7
|
-
# - Description: Information used for additional identification or authorization of the interchange sender or the data in the interchange; the type of information is set by the Authorization Information Qualifier (I01)
|
|
8
|
-
class AuthorizationInformation < Eddy::Element::AN
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "I02"
|
|
12
|
-
@name = "AuthorizationInformation"
|
|
13
|
-
@type = "AN"
|
|
14
|
-
self.min = 10
|
|
15
|
-
self.max = 10
|
|
16
|
-
self.value = (" " * 10) # " "
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: I04
|
|
4
|
-
# - Name: Security Information
|
|
5
|
-
# - Type: AN
|
|
6
|
-
# - Min/Max: 10/10
|
|
7
|
-
# - Description: This is used for identifying the security information about the interchange sender or the data in the interchange; the type of information is set by the Security Information Qualifier (I03)
|
|
8
|
-
class SecurityInformation < Eddy::Element::AN
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "I04"
|
|
12
|
-
@name = "SecurityInformation"
|
|
13
|
-
@type = "AN"
|
|
14
|
-
self.min = 10
|
|
15
|
-
self.max = 10
|
|
16
|
-
self.value = (" " * 10) # " "
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: I08
|
|
4
|
-
# - Name: Interchange Date
|
|
5
|
-
# - Type: DT (YYMMDD)
|
|
6
|
-
# - Min/Max: 6/6
|
|
7
|
-
# - Description: Date of the interchange
|
|
8
|
-
class InterchangeDate < Eddy::Element::DT
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "I08"
|
|
12
|
-
@name = "Interchange Date"
|
|
13
|
-
@type = "DT"
|
|
14
|
-
self.min = 6
|
|
15
|
-
self.max = 6
|
|
16
|
-
super(:yymmdd, Time.now.utc)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: I09
|
|
4
|
-
# - Name: Interchange Time
|
|
5
|
-
# - Type: TM (HHMM)
|
|
6
|
-
# - Min/Max: 4/4
|
|
7
|
-
# - Description: Time of the interchange
|
|
8
|
-
class InterchangeTime < Eddy::Element::TM
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize()
|
|
11
|
-
@id = "I09"
|
|
12
|
-
@name = "Interchange Time"
|
|
13
|
-
@type = "TM"
|
|
14
|
-
self.min = 4
|
|
15
|
-
self.max = 4
|
|
16
|
-
super(:hhmm, Time.now.utc)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Elements
|
|
3
|
-
# - Id: I15
|
|
4
|
-
# - Name: Component Element Separator
|
|
5
|
-
# - Type: N/A (Type is not applicable)
|
|
6
|
-
# - Min/Max: 1/1
|
|
7
|
-
# - Description:
|
|
8
|
-
# - The component element separator is a delimiter and not a data element;
|
|
9
|
-
# - this field provides the delimiter used to separate component data elements within a composite data structure;
|
|
10
|
-
# - this value must be different than the data element separator and the segment terminator
|
|
11
|
-
class ComponentElementSeparator
|
|
12
|
-
# @return [void]
|
|
13
|
-
def initialize()
|
|
14
|
-
@id = "I15"
|
|
15
|
-
@name = "Component Element Separator"
|
|
16
|
-
@type = "AN"
|
|
17
|
-
self.min = 1
|
|
18
|
-
self.max = 1
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# @return [String]
|
|
22
|
-
def value()
|
|
23
|
-
return ">"
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# @return [void]
|
|
27
|
-
def value=(_arg)
|
|
28
|
-
# FIXME: Need to implement this...
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Segments
|
|
3
|
-
# Id: N1
|
|
4
|
-
# Description: Party Identification
|
|
5
|
-
class N1 < Eddy::Segment
|
|
6
|
-
# @return [void]
|
|
7
|
-
def initialize()
|
|
8
|
-
self.id = "N1"
|
|
9
|
-
self.description = "Party Identification"
|
|
10
|
-
self.elements = []
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
data/lib/eddy/element.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
# Base types for EDI Data Elements.
|
|
3
|
-
module Element; end
|
|
4
|
-
end
|
|
5
|
-
|
|
6
|
-
require "eddy/element/base"
|
|
7
|
-
|
|
8
|
-
require "eddy/element/an"
|
|
9
|
-
require "eddy/element/b"
|
|
10
|
-
require "eddy/element/dt"
|
|
11
|
-
require "eddy/element/id"
|
|
12
|
-
require "eddy/element/n"
|
|
13
|
-
require "eddy/element/r"
|
|
14
|
-
require "eddy/element/tm"
|
data/lib/eddy/element/an.rb
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Element
|
|
3
|
-
# Alphanumeric string including special characters
|
|
4
|
-
class AN < Base
|
|
5
|
-
# @param min [Integer]
|
|
6
|
-
# @param max [Integer]
|
|
7
|
-
# @param val [String]
|
|
8
|
-
# @return [void]
|
|
9
|
-
def initialize(min, max, val = nil)
|
|
10
|
-
self.min = min
|
|
11
|
-
self.max = max
|
|
12
|
-
self.value = val
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# @return [String]
|
|
16
|
-
def value()
|
|
17
|
-
# raise Eddy::ElementNilValueError if @value.nil?
|
|
18
|
-
return @value
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# @param arg [String]
|
|
22
|
-
# @raise [Eddy::ElementValidationError]
|
|
23
|
-
# @return [void]
|
|
24
|
-
def value=(arg)
|
|
25
|
-
if arg.nil?
|
|
26
|
-
@value = arg
|
|
27
|
-
return
|
|
28
|
-
end
|
|
29
|
-
raise Eddy::ElementValidationError, "value needs to be a string" unless arg.is_a?(String)
|
|
30
|
-
raise Eddy::ElementValidationError, "value can't be shorter than #{self.min}" if arg.length < self.min
|
|
31
|
-
raise Eddy::ElementValidationError, "value can't be longer than #{self.max}" if arg.length > self.max
|
|
32
|
-
@value = arg
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
data/lib/eddy/element/b.rb
DELETED
data/lib/eddy/element/base.rb
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
# Base types for EDI Data Elements.
|
|
3
|
-
module Element
|
|
4
|
-
|
|
5
|
-
# Base class for EDI Data Element types.
|
|
6
|
-
class Base
|
|
7
|
-
# Positive number under 1688, or I01-I64
|
|
8
|
-
# @return [String]
|
|
9
|
-
attr_reader :id
|
|
10
|
-
# @return [String]
|
|
11
|
-
attr_reader :name
|
|
12
|
-
# One of: AN, B, DT, ID, N, R, or TM
|
|
13
|
-
# @return [String]
|
|
14
|
-
attr_reader :type
|
|
15
|
-
# Minimum length for a valid value.
|
|
16
|
-
# @return [Integer]
|
|
17
|
-
attr_accessor :min
|
|
18
|
-
# Maximum length for a valid value.
|
|
19
|
-
# @return [Integer]
|
|
20
|
-
attr_accessor :max
|
|
21
|
-
|
|
22
|
-
# Inheriting classes need to define a getter for `value`.
|
|
23
|
-
# @return [void]
|
|
24
|
-
def value()
|
|
25
|
-
raise NotImplementedError
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Inheriting classes need to define a setter for `value`.
|
|
29
|
-
# @param _arg [Object] Whatever is to be assigned to `value`
|
|
30
|
-
# @return [void]
|
|
31
|
-
def value=(_arg)
|
|
32
|
-
raise NotImplementedError
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
end
|
|
37
|
-
end
|
data/lib/eddy/element/dt.rb
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
require "time"
|
|
2
|
-
|
|
3
|
-
module Eddy
|
|
4
|
-
module Element
|
|
5
|
-
# Date in `YYMMDD` or `CCYYMMDD` format based on EDI version being used (DLMS Baseline is 004010)
|
|
6
|
-
#
|
|
7
|
-
# Values for this type are generated from a *UTC* formatted [Time][time] object.
|
|
8
|
-
#
|
|
9
|
-
# [time]: https://ruby-doc.org/stdlib-2.6.5/libdoc/time/rdoc/Time.html
|
|
10
|
-
class DT < Base
|
|
11
|
-
|
|
12
|
-
ACCEPTED_FORMATS = [:yymmdd, :ccyymmdd].freeze
|
|
13
|
-
|
|
14
|
-
# A *UTC* formatted [Time](https://ruby-doc.org/stdlib-2.6.5/libdoc/time/rdoc/Time.html) object.
|
|
15
|
-
# @return [Time]
|
|
16
|
-
attr_reader :date
|
|
17
|
-
# Format for the date. Valid values: `:yymmdd` or `:ccyymmdd`
|
|
18
|
-
# @return [Symbol<:yymmdd, :ccyymmdd>]
|
|
19
|
-
attr_reader :fmt
|
|
20
|
-
|
|
21
|
-
# @param fmt [Symbol] Format for the date. Valid values: `:yymmdd` or `:ccyymmdd`
|
|
22
|
-
# @param date [Time] A *UTC* formatted Time object.
|
|
23
|
-
# @raise [ArgumentError] If an invalid format argument is passed.
|
|
24
|
-
# @return [void]
|
|
25
|
-
def initialize(fmt, date = nil)
|
|
26
|
-
fmt = fmt.to_sym.downcase
|
|
27
|
-
raise ArgumentError unless ACCEPTED_FORMATS.include?(fmt)
|
|
28
|
-
@fmt = fmt
|
|
29
|
-
self.value = date
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# @raise [ElementNilValueError] if `date` is `nil`
|
|
33
|
-
# @return [String]
|
|
34
|
-
def value()
|
|
35
|
-
# raise Eddy::ElementNilValueError if self.date.nil?
|
|
36
|
-
case self.fmt
|
|
37
|
-
when :yymmdd
|
|
38
|
-
return DT.yymmdd(self.date)
|
|
39
|
-
when :ccyymmdd
|
|
40
|
-
return DT.ccyymmdd(self.date)
|
|
41
|
-
else
|
|
42
|
-
raise Eddy::Error "invalid fmt value for DT object"
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# @param date [Time] A *UTC* formatted `Time` object.
|
|
47
|
-
# @raise [ElementValidationError] Unless passed a *UTC* formatted `Time` object.
|
|
48
|
-
# @return [void]
|
|
49
|
-
def value=(date)
|
|
50
|
-
if date.nil?
|
|
51
|
-
@date = date
|
|
52
|
-
return
|
|
53
|
-
end
|
|
54
|
-
raise Eddy::ElementValidationError unless date.is_a?(Time)
|
|
55
|
-
raise Eddy::ElementValidationError "argument is not in UTC format" unless date.utc?()
|
|
56
|
-
@date = date
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# @return [Symbol]
|
|
60
|
-
def determine_format
|
|
61
|
-
case self.max
|
|
62
|
-
when 6
|
|
63
|
-
return :yymmdd
|
|
64
|
-
when 8
|
|
65
|
-
return :ccyymmdd
|
|
66
|
-
else
|
|
67
|
-
raise Eddy::Error, "unable to determine format for dt element"
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# Generates an timestamp in `CCYYMMDD` format.
|
|
72
|
-
#
|
|
73
|
-
# @param date [Time] A *UTC* formatted `Time` object.
|
|
74
|
-
# @return [String]
|
|
75
|
-
def self.ccyymmdd(date = Time.now.utc)
|
|
76
|
-
return date.strftime("%Y%m%d")
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Generates an timestamp in `YYMMDD` format.
|
|
80
|
-
#
|
|
81
|
-
# @param date [Time] A *UTC* formatted `Time` object.
|
|
82
|
-
# @return [String]
|
|
83
|
-
def self.yymmdd(date = Time.now.utc)
|
|
84
|
-
return date.strftime("%y%m%d")
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|