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.
Files changed (309) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +103 -37
  3. data/.solargraph.yml +4 -0
  4. data/.vscode/settings.json +17 -0
  5. data/.yardopts +2 -2
  6. data/CHANGELOG.md +50 -0
  7. data/Gemfile.lock +21 -7
  8. data/README.md +32 -3
  9. data/Rakefile +1 -10
  10. data/data/004010/code-lists/100.tsv +164 -0
  11. data/data/004010/code-lists/156.tsv +52 -0
  12. data/data/004010/code-lists/26.tsv +499 -0
  13. data/data/004010/code-lists/etc/100-fancy-definitions.tsv +164 -0
  14. data/data/004010/code-lists/etc/100-with-funds-codes.tsv +180 -0
  15. data/data/004010/code-lists/etc/26-alpha2.tsv +250 -0
  16. data/data/004010/code-lists/etc/26-alpha3.tsv +250 -0
  17. data/data/004010/elements-short.tsv +1405 -0
  18. data/data/004010/elements.tsv +3 -3
  19. data/data/004010/segments.tsv +1009 -1003
  20. data/data/004010/segments/ack.segment.yml +15 -0
  21. data/data/004010/segments/bak.segment.yml +9 -0
  22. data/data/004010/segments/beg.segment.yml +17 -0
  23. data/data/004010/segments/big.segment.yml +10 -0
  24. data/data/004010/segments/bsn.segment.yml +10 -0
  25. data/data/004010/segments/cad.segment.yml +14 -0
  26. data/data/004010/segments/ctp.segment.yml +19 -0
  27. data/data/004010/segments/ctt.segment.yml +13 -0
  28. data/data/004010/segments/dtm.segment.yml +7 -0
  29. data/data/004010/segments/envelope/ge.segment.yml +7 -0
  30. data/data/004010/segments/envelope/gs.segment.yml +13 -0
  31. data/data/004010/segments/envelope/iea.segment.yml +8 -0
  32. data/data/004010/segments/envelope/isa.segment.yml +22 -0
  33. data/data/004010/segments/envelope/se.segment.yml +7 -0
  34. data/data/004010/segments/envelope/st.segment.yml +12 -0
  35. data/data/004010/segments/hl.segment.yml +9 -0
  36. data/data/004010/segments/it1.segment.yml +20 -0
  37. data/data/004010/segments/lin.segment.yml +10 -0
  38. data/data/004010/segments/loop/hl.segment.yml +8 -0
  39. data/data/004010/segments/man.segment.yml +7 -0
  40. data/data/004010/segments/n1.segment.yml +9 -0
  41. data/data/004010/segments/n2.segment.yml +7 -0
  42. data/data/004010/segments/n3.segment.yml +6 -0
  43. data/data/004010/segments/n4.segment.yml +9 -0
  44. data/data/004010/segments/pid.segment.yml +10 -0
  45. data/data/004010/segments/po1.segment.yml +14 -0
  46. data/data/004010/segments/prf.segment.yml +9 -0
  47. data/data/004010/segments/ref.segment.yml +7 -0
  48. data/data/004010/segments/sac.segment.yml +20 -0
  49. data/data/004010/segments/sln.segment.yml +12 -0
  50. data/data/004010/segments/sn1.segment.yml +11 -0
  51. data/data/004010/segments/td1.segment.yml +13 -0
  52. data/data/004010/segments/td5.segment.yml +11 -0
  53. data/data/004010/segments/tds.segment.yml +10 -0
  54. data/data/schema/element_summary.json +60 -0
  55. data/data/schema/loop_summary.json +49 -0
  56. data/data/schema/segment_summary.json +66 -0
  57. data/data/schema/src/element_summary.schema.yml +73 -0
  58. data/data/schema/src/loop_summary.schema.yml +50 -0
  59. data/data/schema/src/segment_summary.schema.yml +59 -0
  60. data/data/schema/src/transaction_set_summary.schema.yml +27 -0
  61. data/data/schema/transaction_set_summary.json +33 -0
  62. data/data/sources.md +114 -145
  63. data/eddy.gemspec +6 -3
  64. data/exe/eddy +14 -0
  65. data/lib/definitions/elements/generated/1005.hierarchical_structure_code.rb +98 -0
  66. data/lib/definitions/elements/generated/1019.invoice_type_code.rb +40 -0
  67. data/lib/definitions/elements/generated/103.packaging_code.rb +29 -0
  68. data/lib/definitions/elements/generated/1166.contract_type_code.rb +87 -0
  69. data/lib/definitions/elements/generated/1232.purchase_category.rb +53 -0
  70. data/lib/definitions/elements/generated/127.reference_identification.rb +29 -0
  71. data/lib/definitions/elements/generated/128.reference_identification_qualifier.rb +1540 -0
  72. data/lib/definitions/elements/generated/1300.service_promotion_allowance_or_charge_code.rb +1090 -0
  73. data/lib/definitions/elements/generated/1301.agency_service_promotion_allowance_or_charge_code.rb +29 -0
  74. data/lib/definitions/elements/generated/133.routing_sequence_code.rb +60 -0
  75. data/lib/definitions/elements/generated/166.address_information.rb +29 -0
  76. data/lib/definitions/elements/generated/183.volume.rb +29 -0
  77. data/lib/definitions/elements/generated/187.weight_qualifier.rb +88 -0
  78. data/lib/definitions/elements/generated/19.city_name.rb +29 -0
  79. data/lib/definitions/elements/generated/206.equipment_initial.rb +29 -0
  80. data/lib/definitions/elements/generated/207.equipment_number.rb +29 -0
  81. data/lib/definitions/elements/generated/212.unit_price.rb +29 -0
  82. data/lib/definitions/elements/generated/22.commodity_code.rb +29 -0
  83. data/lib/definitions/elements/generated/23.commodity_code_qualifier.rb +60 -0
  84. data/lib/definitions/elements/generated/234.product_service_id.rb +29 -0
  85. data/lib/definitions/elements/generated/235.product_service_id_qualifier.rb +514 -0
  86. data/lib/definitions/elements/generated/236.price_identifier_code.rb +201 -0
  87. data/lib/definitions/elements/generated/248.allowance_or_charge_indicator.rb +44 -0
  88. data/lib/definitions/elements/generated/26.country_code.rb +535 -0
  89. data/lib/definitions/elements/generated/284.service_level_code.rb +103 -0
  90. data/lib/definitions/elements/generated/324.purchase_order_number.rb +29 -0
  91. data/lib/definitions/elements/generated/326.request_reference_number.rb +29 -0
  92. data/lib/definitions/elements/generated/327.change_order_sequence_number.rb +29 -0
  93. data/lib/definitions/elements/generated/328.release_number.rb +29 -0
  94. data/lib/definitions/elements/generated/330.quantity_ordered.rb +29 -0
  95. data/lib/definitions/elements/generated/347.hash_total.rb +29 -0
  96. data/lib/definitions/elements/generated/349.item_description_type.rb +40 -0
  97. data/lib/definitions/elements/generated/352.description.rb +29 -0
  98. data/lib/definitions/elements/generated/353.transaction_set_purpose_code.rb +102 -0
  99. data/lib/definitions/elements/generated/354.number_of_line_items.rb +30 -0
  100. data/lib/definitions/elements/generated/355.unit_or_basis_for_measurement_code.rb +831 -0
  101. data/lib/definitions/elements/generated/358.quantity_invoiced.rb +29 -0
  102. data/lib/definitions/elements/generated/367.contract_number.rb +29 -0
  103. data/lib/definitions/elements/generated/368.shipment_order_status_code.rb +139 -0
  104. data/lib/definitions/elements/generated/374.date_time_qualifier.rb +1149 -0
  105. data/lib/definitions/elements/generated/380.quantity.rb +29 -0
  106. data/lib/definitions/elements/generated/382.number_of_units_shipped.rb +29 -0
  107. data/lib/definitions/elements/generated/387.routing.rb +29 -0
  108. data/lib/definitions/elements/generated/396.shipment_identification.rb +29 -0
  109. data/lib/definitions/elements/generated/559.agency_qualifier_code.rb +213 -0
  110. data/lib/definitions/elements/generated/587.acknowledgment_type.rb +52 -0
  111. data/lib/definitions/elements/generated/610.amount.rb +30 -0
  112. data/lib/definitions/elements/generated/639.basis_of_unit_price_code.rb +128 -0
  113. data/lib/definitions/elements/generated/640.transaction_type_code.rb +483 -0
  114. data/lib/definitions/elements/generated/646.quantity_shipped_to_date.rb +29 -0
  115. data/lib/definitions/elements/generated/648.price_multiplier_qualifier.rb +43 -0
  116. data/lib/definitions/elements/generated/649.multiplier.rb +29 -0
  117. data/lib/definitions/elements/generated/66.identification_code_qualifier.rb +252 -0
  118. data/lib/definitions/elements/generated/662.relationship_code.rb +42 -0
  119. data/lib/definitions/elements/generated/668.line_item_status_code.rb +63 -0
  120. data/lib/definitions/elements/generated/67.identification_code.rb +29 -0
  121. data/lib/definitions/elements/generated/687.class_of_trade_code.rb +89 -0
  122. data/lib/definitions/elements/generated/750.product_process_characteristic_code.rb +254 -0
  123. data/lib/definitions/elements/generated/751.product_description_code.rb +29 -0
  124. data/lib/definitions/elements/generated/76.invoice_number.rb +29 -0
  125. data/lib/definitions/elements/generated/782.monetary_amount.rb +29 -0
  126. data/lib/definitions/elements/generated/786.security_level_code.rb +54 -0
  127. data/lib/definitions/elements/generated/79.lading_description.rb +29 -0
  128. data/lib/definitions/elements/generated/80.lading_quantity.rb +30 -0
  129. data/lib/definitions/elements/generated/87.marks_and_numbers.rb +29 -0
  130. data/lib/definitions/elements/generated/88.marks_and_numbers_qualifier.rb +57 -0
  131. data/lib/definitions/elements/generated/91.transportation_method_type_code.rb +108 -0
  132. data/lib/definitions/elements/generated/92.purchase_order_type_code.rb +106 -0
  133. data/lib/definitions/elements/generated/98.entity_identifier_code.rb +1349 -0
  134. data/lib/definitions/elements/manual/116.postal_code.rb +44 -0
  135. data/lib/definitions/elements/manual/124.application_receivers_code.rb +29 -0
  136. data/lib/definitions/elements/manual/140.standard_carrier_alpha_code.rb +211 -0
  137. data/lib/definitions/elements/manual/142.application_senders_code.rb +29 -0
  138. data/lib/definitions/elements/manual/143.transaction_set_identifier_code.rb +335 -0
  139. data/lib/definitions/elements/manual/156.state_or_province_code.rb +92 -0
  140. data/lib/definitions/elements/manual/28.group_control_number.rb +34 -0
  141. data/lib/definitions/elements/manual/329.transactional_set_control_number.rb +35 -0
  142. data/lib/definitions/elements/manual/337.time.rb +30 -0
  143. data/lib/definitions/elements/manual/350.assigned_identification.rb +33 -0
  144. data/lib/definitions/elements/manual/373.date.rb +30 -0
  145. data/lib/definitions/elements/manual/455.responsible_agency_code.rb +43 -0
  146. data/lib/definitions/elements/manual/479.functional_identifier_code.rb +271 -0
  147. data/lib/definitions/elements/manual/480.version_release_industry_identifier_code.rb +145 -0
  148. data/lib/definitions/elements/manual/784.length_of_binary_data.rb +30 -0
  149. data/lib/definitions/elements/manual/785.binary_data.rb +30 -0
  150. data/lib/definitions/elements/manual/96.number_of_included_segments.rb +30 -0
  151. data/lib/definitions/elements/manual/97.number_of_transaction_sets_included.rb +30 -0
  152. data/lib/definitions/elements/manual/hl/628.hierarchical_id_number.rb +29 -0
  153. data/lib/definitions/elements/manual/hl/734.hierarchical_parent_id_number.rb +29 -0
  154. data/lib/definitions/elements/manual/hl/735.hierarchical_level_code.rb +207 -0
  155. data/lib/definitions/elements/manual/hl/736.hierarchical_child_code.rb +39 -0
  156. data/lib/definitions/elements/manual/i/I01.authorization_information_qualifier.rb +48 -0
  157. data/lib/definitions/elements/manual/i/I02.authorization_information.rb +33 -0
  158. data/lib/definitions/elements/manual/i/I03.security_information_qualifier.rb +43 -0
  159. data/lib/definitions/elements/manual/i/I04.security_information.rb +33 -0
  160. data/lib/definitions/elements/manual/i/I05.interchange_id_qualifier.rb +75 -0
  161. data/lib/definitions/elements/manual/i/I06.interchange_sender_id.rb +29 -0
  162. data/lib/definitions/elements/manual/i/I07.interchange_receiver_id.rb +29 -0
  163. data/lib/definitions/elements/manual/i/I08.interchange_date.rb +35 -0
  164. data/lib/definitions/elements/manual/i/I09.interchange_time.rb +36 -0
  165. data/lib/definitions/elements/manual/i/I10.interchange_control_standards_identifier.rb +42 -0
  166. data/lib/definitions/elements/manual/i/I11.interchange_control_version_number.rb +55 -0
  167. data/lib/definitions/elements/manual/i/I12.interchange_control_number.rb +34 -0
  168. data/lib/definitions/elements/manual/i/I13.acknowledgment_requested.rb +43 -0
  169. data/lib/definitions/elements/manual/i/I14.usage_indicator.rb +40 -0
  170. data/lib/definitions/elements/manual/i/I15.component_element_separator.rb +36 -0
  171. data/lib/definitions/elements/manual/i/I16.number_of_included_functional_groups.rb +30 -0
  172. data/lib/definitions/elements/manual/misc/81.weight.rb +29 -0
  173. data/lib/definitions/elements/manual/misc/93.name.rb +29 -0
  174. data/lib/definitions/segments/generated/ack.rb +192 -0
  175. data/lib/definitions/segments/generated/bak.rb +90 -0
  176. data/lib/definitions/segments/generated/beg.rb +226 -0
  177. data/lib/definitions/segments/generated/big.rb +107 -0
  178. data/lib/definitions/segments/generated/bsn.rb +107 -0
  179. data/lib/definitions/segments/generated/cad.rb +175 -0
  180. data/lib/definitions/segments/generated/ctp.rb +158 -0
  181. data/lib/definitions/segments/generated/ctt.rb +141 -0
  182. data/lib/definitions/segments/generated/dtm.rb +56 -0
  183. data/lib/definitions/segments/generated/it1.rb +277 -0
  184. data/lib/definitions/segments/generated/lin.rb +107 -0
  185. data/lib/definitions/segments/generated/man.rb +56 -0
  186. data/lib/definitions/segments/generated/n1.rb +90 -0
  187. data/lib/definitions/segments/generated/n3.rb +39 -0
  188. data/lib/definitions/segments/generated/n4.rb +90 -0
  189. data/lib/definitions/segments/generated/pid.rb +107 -0
  190. data/lib/definitions/segments/generated/po1.rb +175 -0
  191. data/lib/definitions/segments/generated/prf.rb +90 -0
  192. data/lib/definitions/segments/generated/ref.rb +56 -0
  193. data/lib/definitions/segments/generated/sac.rb +107 -0
  194. data/lib/definitions/segments/generated/sln.rb +141 -0
  195. data/lib/definitions/segments/generated/sn1.rb +124 -0
  196. data/lib/definitions/segments/generated/td1.rb +158 -0
  197. data/lib/definitions/segments/generated/td5.rb +107 -0
  198. data/lib/definitions/segments/generated/tds.rb +39 -0
  199. data/lib/definitions/segments/manual/envelopes/ge.rb +53 -0
  200. data/lib/definitions/segments/manual/envelopes/gs.rb +163 -0
  201. data/lib/definitions/segments/manual/envelopes/iea.rb +53 -0
  202. data/lib/definitions/segments/manual/envelopes/isa.rb +295 -0
  203. data/lib/definitions/segments/manual/envelopes/se.rb +52 -0
  204. data/lib/definitions/segments/manual/envelopes/st.rb +52 -0
  205. data/lib/definitions/segments/manual/hl.rb +96 -0
  206. data/lib/definitions/segments/manual/n2.rb +52 -0
  207. data/lib/definitions/transaction_sets/manual/810/810.rb +143 -0
  208. data/lib/definitions/transaction_sets/manual/810/loops.rb +109 -0
  209. data/lib/definitions/transaction_sets/manual/850/850.rb +92 -0
  210. data/lib/definitions/transaction_sets/manual/850/loops.rb +58 -0
  211. data/lib/definitions/transaction_sets/manual/855/855.rb +83 -0
  212. data/lib/definitions/transaction_sets/manual/855/loops.rb +104 -0
  213. data/lib/definitions/transaction_sets/manual/856/856.rb +83 -0
  214. data/lib/definitions/transaction_sets/manual/856/loops.rb +155 -0
  215. data/lib/eddy.rb +29 -7
  216. data/lib/eddy/build/build.rb +47 -0
  217. data/lib/eddy/build/elements/element.rb +67 -0
  218. data/lib/eddy/build/elements/elements.rb +46 -0
  219. data/lib/eddy/build/elements/id.rb +55 -0
  220. data/lib/eddy/build/elements/n.rb +48 -0
  221. data/lib/eddy/build/loop_builder.rb +93 -0
  222. data/lib/eddy/build/segment_builder.rb +169 -0
  223. data/lib/eddy/build/transaction_set_builder.rb +218 -0
  224. data/lib/eddy/cli/cli.rb +39 -0
  225. data/lib/eddy/config.rb +51 -0
  226. data/lib/eddy/data.rb +50 -0
  227. data/lib/eddy/data/persistence/active_record.rb +10 -0
  228. data/lib/eddy/data/persistence/base.rb +47 -0
  229. data/lib/eddy/data/persistence/file.rb +50 -0
  230. data/lib/eddy/data/persistence/memory.rb +65 -0
  231. data/lib/eddy/data/store.rb +108 -0
  232. data/lib/eddy/errors.rb +112 -0
  233. data/lib/eddy/models/element.rb +14 -0
  234. data/lib/eddy/models/element/an.rb +55 -0
  235. data/lib/eddy/models/element/b.rb +53 -0
  236. data/lib/eddy/models/element/base.rb +116 -0
  237. data/lib/eddy/models/element/composite.rb +6 -0
  238. data/lib/eddy/models/element/dt.rb +100 -0
  239. data/lib/eddy/models/element/id.rb +58 -0
  240. data/lib/eddy/models/element/n.rb +94 -0
  241. data/lib/eddy/models/element/r.rb +84 -0
  242. data/lib/eddy/models/element/tm.rb +113 -0
  243. data/lib/eddy/models/loop.rb +74 -0
  244. data/lib/eddy/models/segment.rb +35 -0
  245. data/lib/eddy/models/transaction_set.rb +101 -0
  246. data/lib/eddy/parse.rb +58 -0
  247. data/lib/eddy/schema/element_summary.rb +123 -0
  248. data/lib/eddy/schema/loop_summary.rb +101 -0
  249. data/lib/eddy/schema/segment_summary.rb +116 -0
  250. data/lib/eddy/schema/transaction_set_summary.rb +96 -0
  251. data/lib/eddy/schema/validate.rb +41 -0
  252. data/lib/eddy/util.rb +16 -0
  253. data/lib/eddy/util/clean_folder.rb +14 -0
  254. data/lib/eddy/util/edi_data.rb +153 -0
  255. data/lib/eddy/util/new_number.rb +24 -0
  256. data/lib/eddy/util/normalize.rb +51 -0
  257. data/lib/eddy/util/paths.rb +19 -0
  258. data/lib/eddy/util/read.rb +38 -0
  259. data/lib/eddy/util/time.rb +56 -0
  260. data/lib/eddy/util/timestamp.rb +12 -0
  261. data/lib/eddy/util/trim.rb +29 -0
  262. data/lib/eddy/version.rb +1 -1
  263. data/lib/eddy/write/functional_group.rb +33 -0
  264. data/lib/eddy/write/interchange.rb +28 -0
  265. data/lib/eddy/write/simple_interchange.rb +57 -0
  266. data/lib/generators/eddy/initializer/initializer_generator.rb +17 -0
  267. data/lib/generators/eddy/initializer/templates/eddy.rb.erb +6 -0
  268. data/lib/generators/eddy/migration/migration_generator.rb +53 -0
  269. data/lib/generators/eddy/migration/templates/migration.rb.erb +35 -0
  270. data/tasks/build.rake +15 -0
  271. data/tasks/misc/gemspec.rake +12 -0
  272. data/tasks/misc/missing_lists.rake +240 -0
  273. data/tasks/misc/yaml2json.rake +20 -0
  274. data/todo.txt +16 -0
  275. metadata +297 -42
  276. data/data/004010/segments/ISA.tsv +0 -17
  277. data/data/schema.jsonc +0 -67
  278. data/lib/eddy/build/build_an.rb +0 -31
  279. data/lib/eddy/build/build_dt.rb +0 -46
  280. data/lib/eddy/build/build_elements.rb +0 -181
  281. data/lib/eddy/build/build_id.rb +0 -56
  282. data/lib/eddy/build/build_r_and_n.rb +0 -69
  283. data/lib/eddy/build/build_tm.rb +0 -52
  284. data/lib/eddy/build/segments.rb +0 -25
  285. data/lib/eddy/definitions/manual/elements/109.dt.pickup_date.rb +0 -20
  286. data/lib/eddy/definitions/manual/elements/111.tm.pickup_time.rb +0 -20
  287. data/lib/eddy/definitions/manual/elements/112.an.pier_name.rb +0 -19
  288. data/lib/eddy/definitions/manual/elements/785.b.binary_data.rb +0 -19
  289. data/lib/eddy/definitions/manual/elements/81.r.weight.rb +0 -19
  290. data/lib/eddy/definitions/manual/elements/86.n0.total_equipment.rb +0 -20
  291. data/lib/eddy/definitions/manual/elements/I02.authorization_information.rb +0 -20
  292. data/lib/eddy/definitions/manual/elements/I04.security_information.rb +0 -20
  293. data/lib/eddy/definitions/manual/elements/I08.interchange_date.rb +0 -20
  294. data/lib/eddy/definitions/manual/elements/I09.interchange_time.rb +0 -20
  295. data/lib/eddy/definitions/manual/elements/I15.component_element_separator.rb +0 -32
  296. data/lib/eddy/definitions/manual/segments/n1.rb +0 -14
  297. data/lib/eddy/element.rb +0 -14
  298. data/lib/eddy/element/an.rb +0 -36
  299. data/lib/eddy/element/b.rb +0 -9
  300. data/lib/eddy/element/base.rb +0 -37
  301. data/lib/eddy/element/dt.rb +0 -89
  302. data/lib/eddy/element/id.rb +0 -40
  303. data/lib/eddy/element/n.rb +0 -43
  304. data/lib/eddy/element/r.rb +0 -47
  305. data/lib/eddy/element/tm.rb +0 -108
  306. data/lib/eddy/error.rb +0 -14
  307. data/lib/eddy/helpers.rb +0 -31
  308. data/lib/eddy/segment.rb +0 -12
  309. data/lib/eddy/transaction_set.rb +0 -35
@@ -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
@@ -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
@@ -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"
@@ -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
@@ -1,9 +0,0 @@
1
- module Eddy
2
- module Element
3
- # Binary Data (example: 010101101)
4
- class B < Base
5
- # @return [String<Binary>]
6
- attr_accessor :value
7
- end
8
- end
9
- end
@@ -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
@@ -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