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/element/id.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Element
|
|
3
|
-
|
|
4
|
-
# Identifier (works with a code list specified by the dictionary).
|
|
5
|
-
class ID < Element::Base
|
|
6
|
-
# @return [Array<String>]
|
|
7
|
-
def code_list
|
|
8
|
-
raise NotImplementedError, "Each ID element must define its own code_list"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# @param min [Integer]
|
|
12
|
-
# @param max [Integer]
|
|
13
|
-
# @return [void]
|
|
14
|
-
def initialize(min, max)
|
|
15
|
-
self.min = min
|
|
16
|
-
self.max = max
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# @return [String]
|
|
20
|
-
def value()
|
|
21
|
-
# raise Eddy::ElementNilValueError if @value.nil?
|
|
22
|
-
return @value
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# @param arg [String]
|
|
26
|
-
# return [void]
|
|
27
|
-
def value=(arg)
|
|
28
|
-
if arg.nil?
|
|
29
|
-
@value = arg
|
|
30
|
-
return
|
|
31
|
-
end
|
|
32
|
-
raise Eddy::ElementValidationError, "value not present in code list" unless self.code_list().include?(arg)
|
|
33
|
-
raise Eddy::ElementValidationError, "value can't be shorter than #{self.min}" if arg.length < self.min
|
|
34
|
-
raise Eddy::ElementValidationError, "value can't be longer than #{self.max}" if arg.length > self.max
|
|
35
|
-
@value = arg
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
data/lib/eddy/element/n.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Element
|
|
3
|
-
# Numeric (implies the number of decimal points, e.g., N2 would be two decimal positions)
|
|
4
|
-
class N < Base
|
|
5
|
-
# Number of decimal points.
|
|
6
|
-
# @return [Integer]
|
|
7
|
-
attr_accessor :decimal_points
|
|
8
|
-
|
|
9
|
-
# @param min [Integer]
|
|
10
|
-
# @param max [Integer]
|
|
11
|
-
# @param decimal_points [Integer]
|
|
12
|
-
# @param val [Integer,nil] (nil)
|
|
13
|
-
# @return [void]
|
|
14
|
-
def initialize(min, max, decimal_points, val = nil)
|
|
15
|
-
self.min = min
|
|
16
|
-
self.max = max
|
|
17
|
-
self.decimal_points = decimal_points
|
|
18
|
-
self.value = val
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# @return [String]
|
|
22
|
-
def value
|
|
23
|
-
# raise Eddy::ElementNilValueError if @value.nil?
|
|
24
|
-
return @value.to_s
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# @param arg [Integer]
|
|
28
|
-
# @raise [Eddy::ElementValidationError]
|
|
29
|
-
# @return [void]
|
|
30
|
-
def value=(arg)
|
|
31
|
-
if arg.nil?
|
|
32
|
-
@value = arg
|
|
33
|
-
return
|
|
34
|
-
end
|
|
35
|
-
raise Eddy::ElementValidationError, "value needs to be an integer" unless arg.is_a?(Integer)
|
|
36
|
-
raise Eddy::ElementValidationError, "value can't be shorter than #{self.min}" if arg.to_s.length < self.min
|
|
37
|
-
raise Eddy::ElementValidationError, "value can't be longer than #{self.max}" if arg.to_s.length > self.max
|
|
38
|
-
@value = arg
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
data/lib/eddy/element/r.rb
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
module Element
|
|
3
|
-
# Decimal Numeric (decimal points must be transmitted if used).
|
|
4
|
-
class R < Base
|
|
5
|
-
|
|
6
|
-
# @param min [Integer]
|
|
7
|
-
# @param max [Integer]
|
|
8
|
-
# @param val [Integer]
|
|
9
|
-
# @return [void]
|
|
10
|
-
def initialize(min, max, val = nil)
|
|
11
|
-
self.min = min
|
|
12
|
-
self.max = max
|
|
13
|
-
self.value = val
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# @return [String]
|
|
17
|
-
def value()
|
|
18
|
-
# raise Eddy::ElementNilValueError if @value.nil?
|
|
19
|
-
return process(@value)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# @param arg [Float]
|
|
23
|
-
# @raise [ArgumentError] Unless passed a Float value.
|
|
24
|
-
# @return [void]
|
|
25
|
-
def value=(arg)
|
|
26
|
-
if arg.nil?
|
|
27
|
-
@value = arg
|
|
28
|
-
return
|
|
29
|
-
end
|
|
30
|
-
raise Eddy::ElementValidationError, "value needs to be a float" unless arg.is_a?(Float)
|
|
31
|
-
raise Eddy::ElementValidationError, "value can't be shorter than #{self.min}" if process(arg).length < self.min
|
|
32
|
-
raise Eddy::ElementValidationError, "value can't be longer than #{self.max}" if process(arg).length > self.max
|
|
33
|
-
@value = arg
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Stringify a float value and trim to the element's `max` attribute.
|
|
37
|
-
# TODO: Use `printf` here.
|
|
38
|
-
#
|
|
39
|
-
# @param float [Float]
|
|
40
|
-
# @return [String]
|
|
41
|
-
def process(float)
|
|
42
|
-
return float.to_s.slice(0..(self.max + 1))
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
data/lib/eddy/element/tm.rb
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
require "time"
|
|
2
|
-
|
|
3
|
-
module Eddy
|
|
4
|
-
module Element
|
|
5
|
-
# Time in `HHMMSSDD` format.
|
|
6
|
-
# Time expressed in 24-hour clock time as follows:
|
|
7
|
-
# `HHMM`, or `HHMMSS`, or `HHMMSSD`, or `HHMMSSDD`, where H = hours (00-23), M = minutes (00-59), S = integer seconds (00-59) and DD = decimal seconds;
|
|
8
|
-
# decimal seconds are expressed as follows: D = tenths (0-9) and DD = hundredths (00-99)
|
|
9
|
-
#
|
|
10
|
-
# Values for this type are generated from a *UTC* formatted [Time][time] object.
|
|
11
|
-
#
|
|
12
|
-
# [time]: https://ruby-doc.org/stdlib-2.6.5/libdoc/time/rdoc/Time.html
|
|
13
|
-
class TM < Base
|
|
14
|
-
|
|
15
|
-
# @return [Array<Symbol>]
|
|
16
|
-
ACCEPTED_FORMATS = [:hhmm, :hhmmss, :hhmmssd, :hhmmssdd].freeze
|
|
17
|
-
|
|
18
|
-
# A [time](https://ruby-doc.org/stdlib-2.6.5/libdoc/time/rdoc/Time.html) object in `UTC` format.
|
|
19
|
-
# @return [Time]
|
|
20
|
-
attr_reader :time
|
|
21
|
-
# Format for the date. Valid values: `:hhmm`, `:hhmmss`, `:hhmmssd`, and `:hhmmssdd`
|
|
22
|
-
# @return [Symbol<:hhmm, :hhmmss, :hhmmssd, :hhmmssdd>]
|
|
23
|
-
attr_reader :fmt
|
|
24
|
-
|
|
25
|
-
# @param fmt [Symbol] Format for the date. Valid values: `:hhmm`, `:hhmmss`, `:hhmmssd`, and `:hhmmssdd`
|
|
26
|
-
# @param time [Time] A *UTC* formatted Time object.
|
|
27
|
-
# @raise [ArgumentError] If an invalid format argument is passed.
|
|
28
|
-
# @return [void]
|
|
29
|
-
def initialize(fmt, time = nil)
|
|
30
|
-
fmt = fmt.to_sym.downcase
|
|
31
|
-
raise ArgumentError unless ACCEPTED_FORMATS.include?(fmt)
|
|
32
|
-
@fmt = fmt
|
|
33
|
-
self.value = time
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# @param time [Time] A *UTC* formatted `Time` object.
|
|
37
|
-
# @raise [ElementValidationError] Unless passed a *UTC* formatted Time object.
|
|
38
|
-
# @return [void]
|
|
39
|
-
def value=(time)
|
|
40
|
-
if time.nil?
|
|
41
|
-
@time = time
|
|
42
|
-
return
|
|
43
|
-
end
|
|
44
|
-
raise Eddy::ElementValidationError unless time.is_a?(Time)
|
|
45
|
-
raise Eddy::ElementValidationError "argument is not in UTC format" unless time.utc?()
|
|
46
|
-
@time = time
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# @raise [ElementNilValueError] if `time` is `nil`
|
|
50
|
-
# @return [String]
|
|
51
|
-
def value()
|
|
52
|
-
raise Eddy::ElementNilValueError if self.time.nil?
|
|
53
|
-
case self.fmt
|
|
54
|
-
when :hhmm
|
|
55
|
-
return TM.hhmm(self.time)
|
|
56
|
-
when :hhmmss
|
|
57
|
-
return TM.hhmmss(self.time)
|
|
58
|
-
when :hhmmssd
|
|
59
|
-
return TM.hhmmssd(self.time)
|
|
60
|
-
when :hhmmssdd
|
|
61
|
-
return TM.hhmmssdd(self.time)
|
|
62
|
-
else
|
|
63
|
-
raise Eddy::Error "invalid fmt value for TM object"
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# @return [Symbol]
|
|
68
|
-
def determine_format
|
|
69
|
-
case self.max
|
|
70
|
-
when 4
|
|
71
|
-
return :hhmm
|
|
72
|
-
when 6
|
|
73
|
-
return :hhmmss
|
|
74
|
-
when 7
|
|
75
|
-
return :hhmmssd
|
|
76
|
-
when 8
|
|
77
|
-
return :hhmmssdd
|
|
78
|
-
else
|
|
79
|
-
raise Eddy::Error, "unable to determine format for tm element"
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# @param time [Time] A *UTC* formatted `Time` object.
|
|
84
|
-
# @return [String]
|
|
85
|
-
def self.hhmm(time = Time.now.utc)
|
|
86
|
-
return time.strftime("%m%d")
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# @param time [Time] A *UTC* formatted `Time` object.
|
|
90
|
-
# @return [String]
|
|
91
|
-
def self.hhmmss(time = Time.now.utc)
|
|
92
|
-
return time.strftime("%m%d%S")
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# @param time [Time] A *UTC* formatted `Time` object.
|
|
96
|
-
# @return [String]
|
|
97
|
-
def self.hhmmssd(time = Time.now.utc)
|
|
98
|
-
return time.strftime("%m%d%S%1N")
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# @param time [Time] A *UTC* formatted `Time` object.
|
|
102
|
-
# @return [String]
|
|
103
|
-
def self.hhmmssdd(time = Time.now.utc)
|
|
104
|
-
return time.strftime("%m%d%S%2N")
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
data/lib/eddy/error.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
# Exceptions raised by Eddy inherit from Error.
|
|
3
|
-
# @abstract
|
|
4
|
-
class Error < StandardError; end
|
|
5
|
-
|
|
6
|
-
# Exception raised when an invalid argument is passed to the `value=` method of an {Element} class.
|
|
7
|
-
class ElementValidationError < Error; end
|
|
8
|
-
|
|
9
|
-
# Exception raised when `value` has been called before `value=` and no default value is set.
|
|
10
|
-
class ElementNilValueError < Error; end
|
|
11
|
-
|
|
12
|
-
# Exception raised when a class inherits from {Element} and doesn't set all instance attributes properly.
|
|
13
|
-
class ElementNilAttributeError < Error; end
|
|
14
|
-
end
|
data/lib/eddy/helpers.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require "csv"
|
|
2
|
-
|
|
3
|
-
module Eddy
|
|
4
|
-
|
|
5
|
-
# Read a TSV file and return its contents as an array of hashes.
|
|
6
|
-
#
|
|
7
|
-
# @param filepath [String] Path to the TSV file.
|
|
8
|
-
# @return [Array<Hash>]
|
|
9
|
-
def self.parse_tsv(filepath)
|
|
10
|
-
return CSV.read(
|
|
11
|
-
filepath,
|
|
12
|
-
col_sep: "\t",
|
|
13
|
-
headers: true,
|
|
14
|
-
quote_char: nil,
|
|
15
|
-
header_converters: :symbol,
|
|
16
|
-
).map(&:to_hash)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# Directory where the gem is located.
|
|
20
|
-
# @return [String]
|
|
21
|
-
def self.root_dir
|
|
22
|
-
return File.expand_path("../../..", __FILE__)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# Directory for writing out files.
|
|
26
|
-
# @return [String]
|
|
27
|
-
def self.data_dir
|
|
28
|
-
return File.join(self.root_dir, "data")
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
data/lib/eddy/segment.rb
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
class Segment
|
|
3
|
-
# An alphanumeric code unique to each Segment type.
|
|
4
|
-
# @return [String]
|
|
5
|
-
attr_reader :id
|
|
6
|
-
# Short name of the Segment. Should probably be called `name`...
|
|
7
|
-
# @return [String]
|
|
8
|
-
attr_reader :description
|
|
9
|
-
# @return [Array<Element>]
|
|
10
|
-
attr_accessor :elements
|
|
11
|
-
end
|
|
12
|
-
end
|
data/lib/eddy/transaction_set.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
module Eddy
|
|
2
|
-
# Interchange / Document / Envelope / Group / File
|
|
3
|
-
class TransactionSet
|
|
4
|
-
# @return [Integer]
|
|
5
|
-
attr_accessor :code
|
|
6
|
-
# @return [String]
|
|
7
|
-
attr_accessor :functional_group
|
|
8
|
-
# @return [String]
|
|
9
|
-
attr_accessor :description
|
|
10
|
-
# @return [Array<Segment>]
|
|
11
|
-
attr_accessor :segments
|
|
12
|
-
# Time value for use by DT/TM Elements.
|
|
13
|
-
# @return [Time]
|
|
14
|
-
attr_accessor :time
|
|
15
|
-
# Component Element Separator
|
|
16
|
-
# (defaults to `">"`)
|
|
17
|
-
# @return [String]
|
|
18
|
-
attr_accessor :component_separator
|
|
19
|
-
# (defaults to `"~"`)
|
|
20
|
-
# @return [String]
|
|
21
|
-
attr_accessor :segment_separator
|
|
22
|
-
# Data Element Separator
|
|
23
|
-
# (defaults to `"*"`)
|
|
24
|
-
# @return [String]
|
|
25
|
-
attr_accessor :element_separator
|
|
26
|
-
|
|
27
|
-
# @return [void]
|
|
28
|
-
def initialize()
|
|
29
|
-
self.time = Time.now().utc()
|
|
30
|
-
self.component_separator = ">"
|
|
31
|
-
self.segment_separator = "~"
|
|
32
|
-
self.element_separator = "*"
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|