stupidedi 1.1.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 (500) hide show
  1. data/README.md +215 -0
  2. data/Rakefile +108 -0
  3. data/bin/edi-ed +71 -0
  4. data/bin/edi-pp +81 -0
  5. data/doc/Defining.md +0 -0
  6. data/doc/Generating.md +321 -0
  7. data/doc/LICENSE.md +0 -0
  8. data/doc/Navigating.md +645 -0
  9. data/doc/Parsing.md +0 -0
  10. data/doc/Serializing.md +7 -0
  11. data/doc/Tokenizing.md +0 -0
  12. data/doc/Validating.md +0 -0
  13. data/doc/design/Parser.md +0 -0
  14. data/doc/design/Reader.md +0 -0
  15. data/lib/ruby/array.rb +164 -0
  16. data/lib/ruby/blank.rb +67 -0
  17. data/lib/ruby/enumerable.rb +35 -0
  18. data/lib/ruby/exception.rb +33 -0
  19. data/lib/ruby/hash.rb +4 -0
  20. data/lib/ruby/instance_exec.rb +26 -0
  21. data/lib/ruby/module.rb +79 -0
  22. data/lib/ruby/object.rb +63 -0
  23. data/lib/ruby/string.rb +73 -0
  24. data/lib/ruby/symbol.rb +24 -0
  25. data/lib/ruby/to_d.rb +81 -0
  26. data/lib/ruby/to_date.rb +33 -0
  27. data/lib/ruby/to_time.rb +24 -0
  28. data/lib/ruby/try.rb +43 -0
  29. data/lib/stupidedi/blank_slate.rb +11 -0
  30. data/lib/stupidedi/builder/builder_dsl.rb +281 -0
  31. data/lib/stupidedi/builder/constraint_table.rb +418 -0
  32. data/lib/stupidedi/builder/generation.rb +112 -0
  33. data/lib/stupidedi/builder/instruction.rb +102 -0
  34. data/lib/stupidedi/builder/instruction_table.rb +204 -0
  35. data/lib/stupidedi/builder/navigation.rb +655 -0
  36. data/lib/stupidedi/builder/state_machine.rb +55 -0
  37. data/lib/stupidedi/builder/states/abstract_state.rb +332 -0
  38. data/lib/stupidedi/builder/states/failure_state.rb +69 -0
  39. data/lib/stupidedi/builder/states/functional_group_state.rb +97 -0
  40. data/lib/stupidedi/builder/states/initial_state.rb +63 -0
  41. data/lib/stupidedi/builder/states/interchange_state.rb +94 -0
  42. data/lib/stupidedi/builder/states/loop_state.rb +79 -0
  43. data/lib/stupidedi/builder/states/table_state.rb +96 -0
  44. data/lib/stupidedi/builder/states/transaction_set_state.rb +112 -0
  45. data/lib/stupidedi/builder/states/transmission_state.rb +59 -0
  46. data/lib/stupidedi/builder/tokenization.rb +196 -0
  47. data/lib/stupidedi/builder.rb +23 -0
  48. data/lib/stupidedi/color.rb +93 -0
  49. data/lib/stupidedi/config/code_list_config.rb +42 -0
  50. data/lib/stupidedi/config/editor_config.rb +51 -0
  51. data/lib/stupidedi/config/functional_group_config.rb +62 -0
  52. data/lib/stupidedi/config/interchange_config.rb +79 -0
  53. data/lib/stupidedi/config/transaction_set_config.rb +91 -0
  54. data/lib/stupidedi/config.rb +101 -0
  55. data/lib/stupidedi/editor/00501.rb +341 -0
  56. data/lib/stupidedi/editor/005010/N2.rb +0 -0
  57. data/lib/stupidedi/editor/005010/N3.rb +0 -0
  58. data/lib/stupidedi/editor/005010/N4.rb +63 -0
  59. data/lib/stupidedi/editor/005010/NM1.rb +0 -0
  60. data/lib/stupidedi/editor/005010.rb +469 -0
  61. data/lib/stupidedi/editor/X222-HC837.rb +195 -0
  62. data/lib/stupidedi/editor/abstract_ed.rb +36 -0
  63. data/lib/stupidedi/editor/claim_ack.rb +9 -0
  64. data/lib/stupidedi/editor/implementation_ack.rb +213 -0
  65. data/lib/stupidedi/editor/interchange_ack.rb +9 -0
  66. data/lib/stupidedi/editor/result.rb +100 -0
  67. data/lib/stupidedi/editor/result_set.rb +69 -0
  68. data/lib/stupidedi/editor/transaction_set_ed.rb +275 -0
  69. data/lib/stupidedi/editor/transmission_ed.rb +90 -0
  70. data/lib/stupidedi/editor.rb +37 -0
  71. data/lib/stupidedi/either.rb +287 -0
  72. data/lib/stupidedi/exceptions/invalid_element_error.rb +8 -0
  73. data/lib/stupidedi/exceptions/invalid_schema_error.rb +8 -0
  74. data/lib/stupidedi/exceptions/output_error.rb +8 -0
  75. data/lib/stupidedi/exceptions/parse_error.rb +8 -0
  76. data/lib/stupidedi/exceptions/stupidedi_error.rb +8 -0
  77. data/lib/stupidedi/exceptions/tokenize_error.rb +8 -0
  78. data/lib/stupidedi/exceptions/zipper_error.rb +8 -0
  79. data/lib/stupidedi/exceptions.rb +11 -0
  80. data/lib/stupidedi/guides/005010/X214-HN277.rb +409 -0
  81. data/lib/stupidedi/guides/005010/X221-HP835.rb +613 -0
  82. data/lib/stupidedi/guides/005010/X221A1-HP835.rb +613 -0
  83. data/lib/stupidedi/guides/005010/X222-HC837P.rb +2291 -0
  84. data/lib/stupidedi/guides/005010/X222A1-HC837P.rb +2297 -0
  85. data/lib/stupidedi/guides/005010/X231-FA999.rb +123 -0
  86. data/lib/stupidedi/guides/005010/X231A1-FA999.rb +119 -0
  87. data/lib/stupidedi/guides/005010/element_reqs.rb +38 -0
  88. data/lib/stupidedi/guides/005010/guide_builder.rb +180 -0
  89. data/lib/stupidedi/guides/005010/segment_reqs.rb +32 -0
  90. data/lib/stupidedi/guides/005010.rb +64 -0
  91. data/lib/stupidedi/guides.rb +5 -0
  92. data/lib/stupidedi/inspect.rb +26 -0
  93. data/lib/stupidedi/reader/input/abstract_input.rb +133 -0
  94. data/lib/stupidedi/reader/input/delegated_input.rb +111 -0
  95. data/lib/stupidedi/reader/input/file_input.rb +155 -0
  96. data/lib/stupidedi/reader/input.rb +30 -0
  97. data/lib/stupidedi/reader/position.rb +69 -0
  98. data/lib/stupidedi/reader/result.rb +168 -0
  99. data/lib/stupidedi/reader/segment_dict.rb +175 -0
  100. data/lib/stupidedi/reader/separators.rb +85 -0
  101. data/lib/stupidedi/reader/stream_reader.rb +172 -0
  102. data/lib/stupidedi/reader/token_reader.rb +466 -0
  103. data/lib/stupidedi/reader/tokens/component_element_tok.rb +56 -0
  104. data/lib/stupidedi/reader/tokens/composite_element_tok.rb +64 -0
  105. data/lib/stupidedi/reader/tokens/repeated_element_tok.rb +64 -0
  106. data/lib/stupidedi/reader/tokens/segment_tok.rb +51 -0
  107. data/lib/stupidedi/reader/tokens/simple_element_tok.rb +63 -0
  108. data/lib/stupidedi/reader.rb +121 -0
  109. data/lib/stupidedi/schema/abstract_def.rb +74 -0
  110. data/lib/stupidedi/schema/abstract_use.rb +73 -0
  111. data/lib/stupidedi/schema/code_list.rb +94 -0
  112. data/lib/stupidedi/schema/element_def.rb +173 -0
  113. data/lib/stupidedi/schema/element_req.rb +56 -0
  114. data/lib/stupidedi/schema/element_use.rb +251 -0
  115. data/lib/stupidedi/schema/functional_group_def.rb +114 -0
  116. data/lib/stupidedi/schema/interchange_def.rb +93 -0
  117. data/lib/stupidedi/schema/loop_def.rb +152 -0
  118. data/lib/stupidedi/schema/repeat_count.rb +85 -0
  119. data/lib/stupidedi/schema/segment_def.rb +108 -0
  120. data/lib/stupidedi/schema/segment_req.rb +43 -0
  121. data/lib/stupidedi/schema/segment_use.rb +98 -0
  122. data/lib/stupidedi/schema/syntax_note.rb +63 -0
  123. data/lib/stupidedi/schema/table_def.rb +139 -0
  124. data/lib/stupidedi/schema/transaction_set_def.rb +88 -0
  125. data/lib/stupidedi/schema.rb +28 -0
  126. data/lib/stupidedi/sets/absolute_set.rb +297 -0
  127. data/lib/stupidedi/sets/abstract_set.rb +174 -0
  128. data/lib/stupidedi/sets/null_set.rb +125 -0
  129. data/lib/stupidedi/sets/relative_complement.rb +137 -0
  130. data/lib/stupidedi/sets/relative_set.rb +269 -0
  131. data/lib/stupidedi/sets/universal_set.rb +104 -0
  132. data/lib/stupidedi/sets.rb +57 -0
  133. data/lib/stupidedi/tail_call.rb +109 -0
  134. data/lib/stupidedi/thread_local.rb +174 -0
  135. data/lib/stupidedi/values/abstract_element_val.rb +19 -0
  136. data/lib/stupidedi/values/abstract_val.rb +130 -0
  137. data/lib/stupidedi/values/composite_element_val.rb +95 -0
  138. data/lib/stupidedi/values/functional_group_val.rb +102 -0
  139. data/lib/stupidedi/values/interchange_val.rb +86 -0
  140. data/lib/stupidedi/values/invalid_envelope_val.rb +61 -0
  141. data/lib/stupidedi/values/invalid_segment_val.rb +78 -0
  142. data/lib/stupidedi/values/loop_val.rb +70 -0
  143. data/lib/stupidedi/values/repeated_element_val.rb +105 -0
  144. data/lib/stupidedi/values/segment_val.rb +104 -0
  145. data/lib/stupidedi/values/segment_val_group.rb +20 -0
  146. data/lib/stupidedi/values/simple_element_val.rb +80 -0
  147. data/lib/stupidedi/values/table_val.rb +66 -0
  148. data/lib/stupidedi/values/transaction_set_val.rb +66 -0
  149. data/lib/stupidedi/values/transmission_val.rb +52 -0
  150. data/lib/stupidedi/values.rb +21 -0
  151. data/lib/stupidedi/version.rb +3 -0
  152. data/lib/stupidedi/versions/functional_groups/004010/element_defs.rb +54 -0
  153. data/lib/stupidedi/versions/functional_groups/004010/element_reqs.rb +18 -0
  154. data/lib/stupidedi/versions/functional_groups/004010/element_types/date_val.rb +527 -0
  155. data/lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb +335 -0
  156. data/lib/stupidedi/versions/functional_groups/004010/element_types/float_val.rb +299 -0
  157. data/lib/stupidedi/versions/functional_groups/004010/element_types/identifier_val.rb +287 -0
  158. data/lib/stupidedi/versions/functional_groups/004010/element_types/string_val.rb +338 -0
  159. data/lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb +309 -0
  160. data/lib/stupidedi/versions/functional_groups/004010/element_types.rb +124 -0
  161. data/lib/stupidedi/versions/functional_groups/004010/functional_group_def.rb +30 -0
  162. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/GE.rb +20 -0
  163. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/GS.rb +27 -0
  164. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/SE.rb +20 -0
  165. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/ST.rb +20 -0
  166. data/lib/stupidedi/versions/functional_groups/004010/segment_defs.rb +23 -0
  167. data/lib/stupidedi/versions/functional_groups/004010/segment_reqs.rb +18 -0
  168. data/lib/stupidedi/versions/functional_groups/004010/syntax_notes.rb +174 -0
  169. data/lib/stupidedi/versions/functional_groups/004010.rb +38 -0
  170. data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +1405 -0
  171. data/lib/stupidedi/versions/functional_groups/005010/element_reqs.rb +18 -0
  172. data/lib/stupidedi/versions/functional_groups/005010/element_types/date_val.rb +577 -0
  173. data/lib/stupidedi/versions/functional_groups/005010/element_types/fixnum_val.rb +322 -0
  174. data/lib/stupidedi/versions/functional_groups/005010/element_types/float_val.rb +354 -0
  175. data/lib/stupidedi/versions/functional_groups/005010/element_types/identifier_val.rb +368 -0
  176. data/lib/stupidedi/versions/functional_groups/005010/element_types/operators.rb +117 -0
  177. data/lib/stupidedi/versions/functional_groups/005010/element_types/string_val.rb +398 -0
  178. data/lib/stupidedi/versions/functional_groups/005010/element_types/time_val.rb +327 -0
  179. data/lib/stupidedi/versions/functional_groups/005010/element_types.rb +132 -0
  180. data/lib/stupidedi/versions/functional_groups/005010/functional_group_def.rb +30 -0
  181. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK1.rb +21 -0
  182. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK2.rb +21 -0
  183. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK9.rb +28 -0
  184. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AMT.rb +21 -0
  185. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/BHT.rb +24 -0
  186. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/BPR.rb +49 -0
  187. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CAS.rb +56 -0
  188. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CL1.rb +22 -0
  189. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CLM.rb +41 -0
  190. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CLP.rb +34 -0
  191. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CN1.rb +24 -0
  192. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR1.rb +32 -0
  193. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR2.rb +35 -0
  194. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR3.rb +25 -0
  195. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CRC.rb +26 -0
  196. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CTP.rb +36 -0
  197. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CTX.rb +24 -0
  198. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CUR.rb +57 -0
  199. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DMG.rb +34 -0
  200. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DN1.rb +22 -0
  201. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DN2.rb +24 -0
  202. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DTM.rb +24 -0
  203. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DTP.rb +21 -0
  204. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/FRM.rb +25 -0
  205. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/GE.rb +20 -0
  206. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/GS.rb +27 -0
  207. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HCP.rb +39 -0
  208. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HI.rb +31 -0
  209. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HL.rb +22 -0
  210. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK3.rb +22 -0
  211. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK4.rb +22 -0
  212. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK5.rb +24 -0
  213. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/K3.rb +21 -0
  214. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LIN.rb +69 -0
  215. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LQ.rb +22 -0
  216. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LX.rb +19 -0
  217. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MEA.rb +39 -0
  218. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MIA.rb +45 -0
  219. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MOA.rb +28 -0
  220. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N1.rb +24 -0
  221. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N2.rb +20 -0
  222. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N3.rb +20 -0
  223. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N4.rb +30 -0
  224. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/NM1.rb +35 -0
  225. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/NTE.rb +20 -0
  226. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/OI.rb +24 -0
  227. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PAT.rb +31 -0
  228. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PER.rb +32 -0
  229. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PLB.rb +40 -0
  230. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PRV.rb +26 -0
  231. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PS1.rb +21 -0
  232. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PWK.rb +30 -0
  233. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/QTY.rb +25 -0
  234. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/RDM.rb +23 -0
  235. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/REF.rb +23 -0
  236. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SBR.rb +28 -0
  237. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SE.rb +20 -0
  238. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/ST.rb +21 -0
  239. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/STC.rb +30 -0
  240. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV1.rb +44 -0
  241. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV2.rb +29 -0
  242. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV3.rb +30 -0
  243. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV5.rb +29 -0
  244. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SVC.rb +26 -0
  245. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SVD.rb +24 -0
  246. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TOO.rb +21 -0
  247. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TRN.rb +22 -0
  248. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TS2.rb +40 -0
  249. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TS3.rb +45 -0
  250. data/lib/stupidedi/versions/functional_groups/005010/segment_defs.rb +227 -0
  251. data/lib/stupidedi/versions/functional_groups/005010/segment_reqs.rb +18 -0
  252. data/lib/stupidedi/versions/functional_groups/005010/syntax_notes.rb +165 -0
  253. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/FA999.rb +38 -0
  254. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HB271.rb +85 -0
  255. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HC837.rb +163 -0
  256. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HI278.rb +64 -0
  257. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HN277.rb +74 -0
  258. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HP835.rb +68 -0
  259. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HR276.rb +57 -0
  260. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HS270.rb +53 -0
  261. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/RA820.rb +240 -0
  262. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs.rb +68 -0
  263. data/lib/stupidedi/versions/functional_groups/005010.rb +38 -0
  264. data/lib/stupidedi/versions/functional_groups.rb +8 -0
  265. data/lib/stupidedi/versions/interchanges/00401/element_defs.rb +224 -0
  266. data/lib/stupidedi/versions/interchanges/00401/interchange_def.rb +45 -0
  267. data/lib/stupidedi/versions/interchanges/00401/segment_defs/IEA.rb +20 -0
  268. data/lib/stupidedi/versions/interchanges/00401/segment_defs/ISA.rb +34 -0
  269. data/lib/stupidedi/versions/interchanges/00401/segment_defs/TA1.rb +23 -0
  270. data/lib/stupidedi/versions/interchanges/00401/segment_defs.rb +28 -0
  271. data/lib/stupidedi/versions/interchanges/00401.rb +23 -0
  272. data/lib/stupidedi/versions/interchanges/00501/element_defs.rb +269 -0
  273. data/lib/stupidedi/versions/interchanges/00501/interchange_def.rb +47 -0
  274. data/lib/stupidedi/versions/interchanges/00501/segment_defs/IEA.rb +20 -0
  275. data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISA.rb +34 -0
  276. data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISB.rb +18 -0
  277. data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISE.rb +18 -0
  278. data/lib/stupidedi/versions/interchanges/00501/segment_defs/TA1.rb +23 -0
  279. data/lib/stupidedi/versions/interchanges/00501/segment_defs/TA3.rb +18 -0
  280. data/lib/stupidedi/versions/interchanges/00501/segment_defs.rb +37 -0
  281. data/lib/stupidedi/versions/interchanges/00501.rb +23 -0
  282. data/lib/stupidedi/versions/interchanges.rb +8 -0
  283. data/lib/stupidedi/versions.rb +6 -0
  284. data/lib/stupidedi/writer/claredi.rb +142 -0
  285. data/lib/stupidedi/writer/default.rb +124 -0
  286. data/lib/stupidedi/writer.rb +6 -0
  287. data/lib/stupidedi/zipper/abstract_cursor.rb +351 -0
  288. data/lib/stupidedi/zipper/dangling_cursor.rb +103 -0
  289. data/lib/stupidedi/zipper/edited_cursor.rb +157 -0
  290. data/lib/stupidedi/zipper/memoized_cursor.rb +131 -0
  291. data/lib/stupidedi/zipper/path.rb +124 -0
  292. data/lib/stupidedi/zipper/root_cursor.rb +120 -0
  293. data/lib/stupidedi/zipper.rb +25 -0
  294. data/lib/stupidedi.rb +66 -0
  295. data/spec/examples/integration/generating.example +551 -0
  296. data/spec/examples/integration/navigating.example +214 -0
  297. data/spec/examples/integration/parsing.example +445 -0
  298. data/spec/examples/ruby/array.example +476 -0
  299. data/spec/examples/ruby/blank.example +62 -0
  300. data/spec/examples/ruby/count.example +68 -0
  301. data/spec/examples/ruby/object.example +99 -0
  302. data/spec/examples/ruby/string.example +111 -0
  303. data/spec/examples/ruby/symbol.example +117 -0
  304. data/spec/examples/ruby/to_d.example +90 -0
  305. data/spec/examples/ruby/try.example +50 -0
  306. data/spec/examples/stupidedi/either.example +375 -0
  307. data/spec/examples/stupidedi/reader/failure.example +68 -0
  308. data/spec/examples/stupidedi/reader/input/delegated_input.example +292 -0
  309. data/spec/examples/stupidedi/reader/separators.example +73 -0
  310. data/spec/examples/stupidedi/reader/stream_reader.example +48 -0
  311. data/spec/examples/stupidedi/reader/success.example +34 -0
  312. data/spec/examples/stupidedi/reader/token_reader.example +775 -0
  313. data/spec/examples/stupidedi/reader.example +168 -0
  314. data/spec/examples/stupidedi/sets/absolute_set.example +1577 -0
  315. data/spec/examples/stupidedi/sets/null_set.example +2 -0
  316. data/spec/examples/stupidedi/sets/relative_set.example +2 -0
  317. data/spec/examples/stupidedi/sets/universal_set.example +1 -0
  318. data/spec/examples/stupidedi/versions/005010/element_types/an.example +201 -0
  319. data/spec/examples/stupidedi/versions/005010/element_types/dt.example +258 -0
  320. data/spec/examples/stupidedi/versions/005010/element_types/id.example +192 -0
  321. data/spec/examples/stupidedi/versions/005010/element_types/nn.example +177 -0
  322. data/spec/examples/stupidedi/versions/005010/element_types/r.example +178 -0
  323. data/spec/examples/stupidedi/versions/005010/element_types/tm.example +2 -0
  324. data/spec/examples/stupidedi/zipper/abstract_cursor.example +417 -0
  325. data/spec/examples/stupidedi/zipper.example +9 -0
  326. data/spec/fixtures/X186-AG824/1-bad.txt +21 -0
  327. data/spec/fixtures/X186-AG824/1-good.txt +17 -0
  328. data/spec/fixtures/X186-AG824/2-bad.txt +26 -0
  329. data/spec/fixtures/X186-AG824/2-good.txt +21 -0
  330. data/spec/fixtures/X186-AG824/3-bad.txt +87 -0
  331. data/spec/fixtures/X186-AG824/3-good.txt +61 -0
  332. data/spec/fixtures/X212-HN277/1-bad.txt +54 -0
  333. data/spec/fixtures/X212-HN277/1-good.txt +46 -0
  334. data/spec/fixtures/X212-HN277/2-bad.txt +37 -0
  335. data/spec/fixtures/X212-HN277/2-good.txt +29 -0
  336. data/spec/fixtures/X212-HN277/3-bad.txt +22 -0
  337. data/spec/fixtures/X212-HN277/3-good.txt +17 -0
  338. data/spec/fixtures/X212-HN277/4-bad.txt +30 -0
  339. data/spec/fixtures/X212-HN277/4-good.txt +24 -0
  340. data/spec/fixtures/X212-HR276/1-bad.txt +53 -0
  341. data/spec/fixtures/X212-HR276/1-good.txt +46 -0
  342. data/spec/fixtures/X212-HR276/2-bad.txt +45 -0
  343. data/spec/fixtures/X212-HR276/2-good.txt +38 -0
  344. data/spec/fixtures/X212-HR276/3-bad.txt +32 -0
  345. data/spec/fixtures/X212-HR276/3-good.txt +26 -0
  346. data/spec/fixtures/X212-HR276/4-bad.txt +32 -0
  347. data/spec/fixtures/X212-HR276/4-good.txt +26 -0
  348. data/spec/fixtures/X214-HN277/1-bad.txt +58 -0
  349. data/spec/fixtures/X214-HN277/1-good.txt +47 -0
  350. data/spec/fixtures/X214-HN277/2-bad.txt +34 -0
  351. data/spec/fixtures/X214-HN277/2-good.txt +22 -0
  352. data/spec/fixtures/X214-HN277/3-bad.txt +64 -0
  353. data/spec/fixtures/X214-HN277/3-good.txt +54 -0
  354. data/spec/fixtures/X214-HN277/4-bad.txt +77 -0
  355. data/spec/fixtures/X214-HN277/4-good.txt +63 -0
  356. data/spec/fixtures/X216-HI278/1-bad.txt +42 -0
  357. data/spec/fixtures/X216-HI278/1-good.txt +27 -0
  358. data/spec/fixtures/X216-HI278/2-bad.txt +43 -0
  359. data/spec/fixtures/X216-HI278/2-good.txt +29 -0
  360. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-1.txt +24 -0
  361. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-1_Clean.txt +20 -0
  362. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-2.txt +46 -0
  363. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-2_Clean.txt +30 -0
  364. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-3.txt +38 -0
  365. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-3_Clean.txt +24 -0
  366. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4a.txt +39 -0
  367. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4a_Clean.txt +24 -0
  368. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4b.txt +43 -0
  369. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4b_Clean.txt +25 -0
  370. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-5.txt +63 -0
  371. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-5_Clean.txt +41 -0
  372. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-6.txt +36 -0
  373. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-6_Clean.txt +20 -0
  374. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-1r.txt +34 -0
  375. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-1r_Clean.txt +23 -0
  376. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-2r.txt +46 -0
  377. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-2r_Clean.txt +31 -0
  378. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-3r.txt +44 -0
  379. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-3r_Clean.txt +26 -0
  380. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-4ar_Clean.txt +28 -0
  381. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-4br_Clean.txt +35 -0
  382. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-5r.txt +60 -0
  383. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-5r_Clean.txt +42 -0
  384. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-6r.txt +40 -0
  385. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-6r_Clean.txt +24 -0
  386. data/spec/fixtures/X218-RA820/1-bad.txt +31 -0
  387. data/spec/fixtures/X218-RA820/1-good.txt +25 -0
  388. data/spec/fixtures/X218-RA820/2-bad.txt +37 -0
  389. data/spec/fixtures/X218-RA820/2-good.txt +29 -0
  390. data/spec/fixtures/X218-RA820/3-bad.txt +29 -0
  391. data/spec/fixtures/X218-RA820/3-good.txt +23 -0
  392. data/spec/fixtures/X218-RA820/4-bad.txt +36 -0
  393. data/spec/fixtures/X218-RA820/4-good.txt +27 -0
  394. data/spec/fixtures/X220-BE834/1-bad.txt +35 -0
  395. data/spec/fixtures/X220-BE834/1-good.txt +29 -0
  396. data/spec/fixtures/X220-BE834/10-bad.txt +26 -0
  397. data/spec/fixtures/X220-BE834/10-good.txt +19 -0
  398. data/spec/fixtures/X220-BE834/2-bad.txt +31 -0
  399. data/spec/fixtures/X220-BE834/2-good.txt +23 -0
  400. data/spec/fixtures/X220-BE834/3-bad.txt +36 -0
  401. data/spec/fixtures/X220-BE834/3-good.txt +26 -0
  402. data/spec/fixtures/X220-BE834/4-bad.txt +27 -0
  403. data/spec/fixtures/X220-BE834/4-good.txt +21 -0
  404. data/spec/fixtures/X220-BE834/5-bad.txt +26 -0
  405. data/spec/fixtures/X220-BE834/5-good.txt +17 -0
  406. data/spec/fixtures/X220-BE834/6-bad.txt +25 -0
  407. data/spec/fixtures/X220-BE834/6-good.txt +20 -0
  408. data/spec/fixtures/X220-BE834/7-bad.txt +25 -0
  409. data/spec/fixtures/X220-BE834/7-good.txt +20 -0
  410. data/spec/fixtures/X220-BE834/8-bad.txt +25 -0
  411. data/spec/fixtures/X220-BE834/8-good.txt +20 -0
  412. data/spec/fixtures/X220-BE834/9-bad.txt +27 -0
  413. data/spec/fixtures/X220-BE834/9-good.txt +21 -0
  414. data/spec/fixtures/X221-HP835/1-bad.txt +58 -0
  415. data/spec/fixtures/X221-HP835/1-good.txt +40 -0
  416. data/spec/fixtures/X221-HP835/2-bad.txt +51 -0
  417. data/spec/fixtures/X221-HP835/2-good.txt +40 -0
  418. data/spec/fixtures/X221-HP835/3a-bad.txt +78 -0
  419. data/spec/fixtures/X221-HP835/3a-good.txt +49 -0
  420. data/spec/fixtures/X221-HP835/3b-bad.txt +60 -0
  421. data/spec/fixtures/X221-HP835/3b-good.txt +32 -0
  422. data/spec/fixtures/X221-HP835/3c-bad.txt +55 -0
  423. data/spec/fixtures/X221-HP835/3c-good.txt +34 -0
  424. data/spec/fixtures/X222-HC837/1-bad.txt +60 -0
  425. data/spec/fixtures/X222-HC837/1-good.txt +53 -0
  426. data/spec/fixtures/X222-HC837/10a-bad.txt +52 -0
  427. data/spec/fixtures/X222-HC837/10a-good.txt +40 -0
  428. data/spec/fixtures/X222-HC837/10b-bad.txt +99 -0
  429. data/spec/fixtures/X222-HC837/10b-good.txt +80 -0
  430. data/spec/fixtures/X222-HC837/10c-bad.txt +105 -0
  431. data/spec/fixtures/X222-HC837/10c-good.txt +80 -0
  432. data/spec/fixtures/X222-HC837/11-bad.txt +69 -0
  433. data/spec/fixtures/X222-HC837/11-good.txt +45 -0
  434. data/spec/fixtures/X222-HC837/12-bad.txt +73 -0
  435. data/spec/fixtures/X222-HC837/12-good.txt +51 -0
  436. data/spec/fixtures/X222-HC837/13-bad.txt +64 -0
  437. data/spec/fixtures/X222-HC837/13-good.txt +46 -0
  438. data/spec/fixtures/X222-HC837/3a-bad.txt +83 -0
  439. data/spec/fixtures/X222-HC837/3a-good.txt +59 -0
  440. data/spec/fixtures/X222-HC837/3b-bad.txt +97 -0
  441. data/spec/fixtures/X222-HC837/3b-good.txt +70 -0
  442. data/spec/fixtures/X222-HC837/3c-bad.txt +95 -0
  443. data/spec/fixtures/X222-HC837/3c-good.txt +74 -0
  444. data/spec/fixtures/X222-HC837/4-bad.txt +67 -0
  445. data/spec/fixtures/X222-HC837/4-good.txt +48 -0
  446. data/spec/fixtures/X222-HC837/5-bad.txt +73 -0
  447. data/spec/fixtures/X222-HC837/5-good.txt +60 -0
  448. data/spec/fixtures/X222-HC837/6-bad.txt +50 -0
  449. data/spec/fixtures/X222-HC837/6-good.txt +39 -0
  450. data/spec/fixtures/X222-HC837/7-bad.txt +93 -0
  451. data/spec/fixtures/X222-HC837/7-good.txt +78 -0
  452. data/spec/fixtures/X222-HC837/8-bad.txt +64 -0
  453. data/spec/fixtures/X222-HC837/8-good.txt +52 -0
  454. data/spec/fixtures/X222-HC837/9-bad.txt +56 -0
  455. data/spec/fixtures/X222-HC837/9-good.txt +38 -0
  456. data/spec/fixtures/X223-HC837/1-bad.txt +66 -0
  457. data/spec/fixtures/X223-HC837/1-good.txt +53 -0
  458. data/spec/fixtures/X223-HC837/2-bad.txt +69 -0
  459. data/spec/fixtures/X223-HC837/2-good.txt +60 -0
  460. data/spec/fixtures/X223-HC837/3-bad.txt +89 -0
  461. data/spec/fixtures/X223-HC837/3-good.txt +61 -0
  462. data/spec/fixtures/X223-HC837/4-bad.txt +60 -0
  463. data/spec/fixtures/X223-HC837/4-good.txt +40 -0
  464. data/spec/fixtures/X223-HC837/5-bad.txt +75 -0
  465. data/spec/fixtures/X223-HC837/5-good.txt +58 -0
  466. data/spec/fixtures/X224-HC837/1-bad.txt +54 -0
  467. data/spec/fixtures/X224-HC837/1-good.txt +44 -0
  468. data/spec/fixtures/X224-HC837/2a-bad.txt +52 -0
  469. data/spec/fixtures/X224-HC837/2a-good.txt +42 -0
  470. data/spec/fixtures/X224-HC837/2b-bad.txt +67 -0
  471. data/spec/fixtures/X224-HC837/2b-good.txt +52 -0
  472. data/spec/fixtures/X224-HC837/3-bad.txt +67 -0
  473. data/spec/fixtures/X224-HC837/3-good.txt +51 -0
  474. data/spec/fixtures/X224-HC837/4-bad.txt +49 -0
  475. data/spec/fixtures/X224-HC837/4-good.txt +40 -0
  476. data/spec/fixtures/X230-FA997/1-bad.txt +19 -0
  477. data/spec/fixtures/X230-FA997/1-good.txt +16 -0
  478. data/spec/fixtures/X231-FA999/1-bad.txt +20 -0
  479. data/spec/fixtures/X231-FA999/1-good.txt +20 -0
  480. data/spec/fixtures/X279-HB271/1-bad.txt +36 -0
  481. data/spec/fixtures/X279-HB271/1-good.txt +30 -0
  482. data/spec/fixtures/X279-HB271/2-bad.txt +22 -0
  483. data/spec/fixtures/X279-HB271/2-good.txt +16 -0
  484. data/spec/fixtures/X279-HB271/3-bad.txt +44 -0
  485. data/spec/fixtures/X279-HB271/3-good.txt +36 -0
  486. data/spec/fixtures/X279-HS270/1-bad.txt +29 -0
  487. data/spec/fixtures/X279-HS270/1-good.txt +23 -0
  488. data/spec/fixtures/X279-HS270/2-bad.txt +32 -0
  489. data/spec/fixtures/X279-HS270/2-good.txt +25 -0
  490. data/spec/spec_helper.rb +34 -0
  491. data/spec/support/fixtures.rb +26 -0
  492. data/spec/support/matchers/either_matchers.rb +26 -0
  493. data/spec/support/matchers/navigation_matchers.rb +247 -0
  494. data/spec/support/node.rb +41 -0
  495. data/spec/support/quickcheck/characters.rb +28 -0
  496. data/spec/support/quickcheck/property.rb +105 -0
  497. data/spec/support/quickcheck/serialized_edi.rb +399 -0
  498. data/spec/support/quickcheck.rb +302 -0
  499. data/spec/support/rcov.rb +34 -0
  500. metadata +577 -0
@@ -0,0 +1,240 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module FunctionalGroups
4
+ module FiftyTen
5
+ module TransactionSetDefs
6
+
7
+ d = Schema
8
+ r = SegmentReqs
9
+ s = SegmentDefs
10
+
11
+ RA820 = d::TransactionSetDef.build("RA", "820",
12
+ "Payment Order/Remittance Advice",
13
+
14
+ d::TableDef.header("Table 1 - Header",
15
+ s:: ST.use(100, r::Mandatory, d::RepeatCount.bounded(1)),
16
+ s::BHT.use(200, r::Mandatory, d::RepeatCount.bounded(1)),
17
+ s::NTE.use(300, r::Optional, d::RepeatCount.unbounded),
18
+ s::TRN.use(350, r::Optional, d::RepeatCount.bounded(1)),
19
+ s::CUR.use(400, r::Optional, d::RepeatCount.bounded(1)),
20
+ s::REF.use(500, r::Optional, d::RepeatCount.unbounded),
21
+ s::DTM.use(600, r::Optional, d::RepeatCount.unbounded),
22
+
23
+ d::LoopDef.build("N1", d::RepeatCount.unbounded,
24
+ s:: N1.use( 700, r::Optional, d::RepeatCount.bounded(1)),
25
+ s:: N2.use( 800, r::Optional, d::RepeatCount.unbounded),
26
+ s:: N3.use( 900, r::Optional, d::RepeatCount.unbounded),
27
+ s:: N4.use(1000, r::Optional, d::RepeatCount.bounded(1)),
28
+ s::REF.use(1100, r::Optional, d::RepeatCount.unbounded),
29
+ s::PER.use(1200, r::Optional, d::RepeatCount.unbounded),
30
+ s::RDM.use(1300, r::Optional, d::RepeatCount.bounded(1)),
31
+ s::DTM.use(1400, r::Optional, d::RepeatCount.bounded(1)))),
32
+
33
+ d::TableDef.detail("Table 2 - Detail",
34
+ d::LoopDef.build("ENT", d::RepeatCount.unbounded,
35
+ s::ENT.use( 100, r::Optional, d::RepeatCount.bounded(1)),
36
+
37
+ d::LoopDef.build("ENT/FA1", d::RepeatCount.unbounded,
38
+ s::FA1.use( 150, r::Optional, d::RepeatCount.bounded(1)),
39
+ s::FA2.use( 160, r::Mandatory, d::RepeatCount.unbounded)),
40
+
41
+ d::LoopDef.build("ENT/NM1", d::RepeatCount.unbounded,
42
+ s::NM1.use( 200, r::Optional, d::RepeatCount.bounded(1)),
43
+ s:: N2.use( 300, r::Optional, d::RepeatCount.unbounded),
44
+ s:: N3.use( 400, r::Optional, d::RepeatCount.unbounded),
45
+ s:: N4.use( 500, r::Optional, d::RepeatCount.bounded(1)),
46
+ s::REF.use( 600, r::Optional, d::RepeatCount.unbounded),
47
+ s::PER.use( 700, r::Optional, d::RepeatCount.unbounded)),
48
+
49
+ d::LoopDef.build("ENT/ADX", d::RepeatCount.unbounded,
50
+ s::ADX.use( 800, r::Optional, d::RepeatCount.bounded(1)),
51
+ s::NTE.use( 900, r::Optional, d::RepeatCount.unbounded),
52
+ s::PER.use(1000, r::Optional, d::RepeatCount.unbounded),
53
+ s::DTM.use(1050, r::Optional, d::RepeatCount.bounded(1)),
54
+
55
+ d::LoopDef.build("ENT/ADX/REF", d::RepeatCount.unbounded,
56
+ s::REF.use(1100, r::Optional, d::RepeatCount.bounded(1)),
57
+ s::DTM.use(1200, r::Optional, d::RepeatCount.unbounded)),
58
+
59
+ d::LoopDef.build("ENT/ADX/IT1", d::RepeatCount.unbounded,
60
+ s::IT1.use(1300, r::Optional, d::RepeatCount.bounded(1)),
61
+ s::RPA.use(1310, r::Optional, d::RepeatCount.bounded(1)),
62
+ s::QTY.use(1320, r::Optional, d::RepeatCount.bounded(1)),
63
+
64
+ d::LoopDef.build("ENT/ADX/IT1/REF", d::RepeatCount.unbounded,
65
+ s::REF.use(1400, r::Optional, d::RepeatCount.bounded(1)),
66
+ s::DTM.use(1410, r::Optional, d::RepeatCount.bounded(1))),
67
+
68
+ d::LoopDef.build("ENT/ADX/IT1/SAC", d::RepeatCount.unbounded,
69
+ s::SAC.use(1420, r::Optional, d::RepeatCount.bounded(1)),
70
+ s::TXI.use(1430, r::Optional, d::RepeatCount.unbounded),
71
+ s::DTM.use(1440, r::Optional, d::RepeatCount.bounded(10))),
72
+
73
+ d::LoopDef.build("ENT/ADX/IT1/SLN", d::RepeatCount.unbounded,
74
+ s::SLN.use(1450, r::Optional, d::RepeatCount.bounded(1)),
75
+
76
+ d::LoopDef.build("ENT/ADX/IT1/SLN/REF", d::RepeatCount.unbounded,
77
+ s::REF.use(1460, r::Optional, d::RepeatCount.bounded(1)),
78
+ s::DTM.use(1470, r::Optional, d::RepeatCount.unbounded)),
79
+
80
+ d::LoopDef.build("ENT/ADX/IT1/SLN/SAC", d::RepeatCount.unbounded,
81
+ s::SAC.use(1480, r::Optional, d::RepeatCount.bounded(1)),
82
+ s::TXI.use(1490, r::Optional, d::RepeatCount.unbounded)))),
83
+
84
+ d::LoopDef.build("ENT/ADX/FA1", d::RepeatCount.unbounded,
85
+ s::FA1.use(1495, r::Optional, d::RepeatCount.bounded(1)),
86
+ s::FA2.use(1496, r::Mandatory, d::RepeatCount.bounded(1)))),
87
+
88
+ d::LoopDef.build("ENT/RMR", d::RepeatCount.unbounded,
89
+ s::RMR.use(1500, r::Optional, d::RepeatCount.bounded(1)),
90
+ s::NTE.use(1600, r::Optional, d::RepeatCount.unbounded),
91
+ s::REF.use(1700, r::Optional, d::RepeatCount.unbounded),
92
+ s::DTM.use(1800, r::Optional, d::RepeatCount.unbounded),
93
+ s::VEH.use(1850, r::Optional, d::RepeatCount.bounded(1)),
94
+
95
+ d::LoopDef.build("ENT/RMR/IT1", d::RepeatCount.unbounded,
96
+ s::IT1.use(1900, r::Optional, d::RepeatCount.bounded(1)),
97
+ s::RPA.use(1920, r::Optional, d::RepeatCount.bounded(1)),
98
+ s::QTY.use(1940, r::Optional, d::RepeatCount.bounded(1)),
99
+
100
+ d::LoopDef.build("ENT/RMR/IT1/REF", d::RepeatCount.unbounded,
101
+ s::REF.use(2000, r::Optional, d::RepeatCount.bounded(1)),
102
+ s::DTM.use(2010, r::Optional, d::RepeatCount.bounded(1))),
103
+
104
+ d::LoopDef.build("ENT/RMR/IT1/SAC", d::RepeatCount.unbounded,
105
+ s::SAC.use(2020, r::Optional, d::RepeatCount.bounded(1)),
106
+ s::TXI.use(2030, r::Optional, d::RepeatCount.unbounded)),
107
+
108
+ d::LoopDef.build("ENT/RMR/IT1/SLN", d::RepeatCount.unbounded,
109
+ s::SLN.use(2040, r::Optional, d::RepeatCount.bounded(1)),
110
+
111
+ d::LoopDef.build("ENT/RMR/IT1/SLN/REF", d::RepeatCount.unbounded,
112
+ s::REF.use(2050, r::Optional, d::RepeatCount.bounded(1)),
113
+ s::DTM.use(2060, r::Optional, d::RepeatCount.unbounded)),
114
+
115
+ d::LoopDef.build("ENT/RMR/IT1/SLN/SAC", d::RepeatCount.unbounded,
116
+ s::SAC.use(2070, r::Optional, d::RepeatCount.bounded(1)),
117
+ s::TXI.use(2080, r::Optional, d::RepeatCount.unbounded)))),
118
+
119
+ d::LoopDef.build("ENT/RMR/ADX", d::RepeatCount.unbounded,
120
+ s::ADX.use(2100, r::Optional, d::RepeatCount.unbounded),
121
+ s::NTE.use(2200, r::Optional, d::RepeatCount.unbounded),
122
+ s::PER.use(2300, r::Optional, d::RepeatCount.unbounded),
123
+
124
+ d::LoopDef.build("ENT/RMR/ADX/REF", d::RepeatCount.unbounded,
125
+ s::REF.use(2400, r::Optional, d::RepeatCount.bounded(1)),
126
+ s::DTM.use(2500, r::Optional, d::RepeatCount.unbounded)),
127
+
128
+ d::LoopDef.build("ENT/RMR/ADX/IT1", d::RepeatCount.unbounded,
129
+ s::IT1.use(2600, r::Optional, d::RepeatCount.bounded(1)),
130
+ s::RPA.use(2610, r::Optional, d::RepeatCount.bounded(1)),
131
+ s::QTY.use(2620, r::Optional, d::RepeatCount.bounded(1)),
132
+
133
+ d::LoopDef.build("ENT/RMR/ADX/IT1/REF", d::RepeatCount.unbounded,
134
+ s::REF.use(2700, r::Optional, d::RepeatCount.bounded(1)),
135
+ s::DTM.use(2710, r::Optional, d::RepeatCount.bounded(1))),
136
+
137
+ d::LoopDef.build("ENT/RMR/ADX/IT1/SAC", d::RepeatCount.unbounded,
138
+ s::SAC.use(2720, r::Optional, d::RepeatCount.bounded(1)),
139
+ s::TXI.use(2730, r::Optional, d::RepeatCount.unbounded)),
140
+ s::DTM.use(2740, r::Optional, d::RepeatCount.bounded(10))),
141
+
142
+ d::LoopDef.build("ENT/RMR/ADX/IT1/SLN", d::RepeatCount.unbounded,
143
+ s::SLN.use(2750, r::Optional, d::RepeatCount.bounded(1)),
144
+
145
+ d::LoopDef.build("ENT/RMR/ADX/IT1/SLN/REF", d::RepeatCount.unbounded,
146
+ s::REF.use(2760, r::Optional, d::RepeatCount.bounded(1)),
147
+ s::DTM.use(2770, r::Optional, d::RepeatCount.unbounded)),
148
+
149
+ d::LoopDef.build("ENT/RMR/ADX/IT1/SLN/SAC", d::RepeatCount.unbounded,
150
+ s::SAC.use(2780, r::Optional, d::RepeatCount.bounded(1)),
151
+ s::TXI.use(2790, r::Optional, d::RepeatCount.unbounded)))),
152
+
153
+ d::LoopDef.build("ENT/RMR/FA1", d::RepeatCount.unbounded,
154
+ s::FA1.use(2795, r::Optional, d::RepeatCount.unbounded),
155
+ s::FA2.use(2796, r::Optional, d::RepeatCount.unbounded))),
156
+
157
+ d::LoopDef.build("TXP", d::RepeatCount.unbounded,
158
+ s::TXP.use(2800, r::Optional, d::RepeatCount.bounded(1)),
159
+ s::TXI.use(2850, r::Optional, d::RepeatCount.unbounded),
160
+ s::REF.use(2855, r::Optional, d::RepeatCount.unbounded),
161
+ s::DTM.use(2860, r::Optional, d::RepeatCount.unbounded)),
162
+
163
+ d::LoopDef.build("DED", d::RepeatCount.unbounded,
164
+ s::DED.use(2870, r::Optional, d::RepeatCount.bounded(1))),
165
+
166
+ d::LoopDef.build("LX", d::RepeatCount.unbounded,
167
+ s:: LX.use(2900, r::Optional, d::RepeatCount.bounded(1)),
168
+ s::REF.use( 100, r::Optional, d::RepeatCount.unbounded),
169
+ s::TRN.use( 100, r::Optional, d::RepeatCount.unbounded),
170
+
171
+ d::LoopDef.build("LX/NM1", d::RepeatCount.unbounded,
172
+ s::NM1.use( 100, r::Optional, d::RepeatCount.bounded(1)),
173
+ s::REF.use( 100, r::Optional, d::RepeatCount.unbounded),
174
+ s::G53.use( 100, r::Optional, d::RepeatCount.bounded(1)),
175
+
176
+ d::LoopDef.build("LX/NM1/AIN", d::RepeatCount.unbounded,
177
+ s::AIN.use( 100, r::Optional, d::RepeatCount.bounded(1)),
178
+ s::QTY.use( 100, r::Optional, d::RepeatCount.unbounded),
179
+ s::DTP.use( 100, r::Optional, d::RepeatCount.unbounded)),
180
+
181
+ d::LoopDef.build("LX/NM1/PEN", d::RepeatCount.unbounded,
182
+ s::PEN.use( 100, r::Optional, d::RepeatCount.bounded(1)),
183
+ s::AMT.use( 100, r::Optional, d::RepeatCount.unbounded),
184
+ s::DTP.use( 100, r::Optional, d::RepeatCount.unbounded),
185
+
186
+ d::LoopDef.build("LX/NM1/PEN/INV", d::RepeatCount.unbounded,
187
+ s::INV.use( 100, r::Optional, d::RepeatCount.bounded(1))),
188
+ s::DTP.use( 100, r::Optional, d::RepeatCount.unbounded)))),
189
+
190
+ d::LoopDef.build("N9", d::RepeatCount.unbounded,
191
+ s:: N9.use( 100, r::Optional, d::RepeatCount.bounded(1)),
192
+ s::REF.use( 100, r::Optional, d::RepeatCount.unbounded),
193
+
194
+ d::LoopDef.build("N9/AMT", d::RepeatCount.unbounded,
195
+ s::AMT.use( 100, r::Optional, d::RepeatCount.bounded(1)),
196
+ s::REF.use( 100, r::Optional, d::RepeatCount.unbounded)),
197
+
198
+ d::LoopDef.build("N9/N1", d::RepeatCount.unbounded,
199
+ s:: N1.use( 100, r::Optional, d::RepeatCount.bounded(1)),
200
+ s::REF.use( 100, r::Optional, d::RepeatCount.unbounded),
201
+
202
+ d::LoopDef.build("N9/N1/EMS", d::RepeatCount.unbounded,
203
+ s::EMS.use( 100, r::Optional, d::RepeatCount.bounded(1)),
204
+ s::ATN.use( 100, r::Optional, d::RepeatCount.unbounded),
205
+ s::AIN.use( 100, r::Optional, d::RepeatCount.unbounded),
206
+ s::PYD.use( 100, r::Optional, d::RepeatCount.unbounded)))),
207
+
208
+ d::LoopDef.build("RYL", d::RepeatCount.unbounded,
209
+ s::RYL.use( 100, r::Optional, d::RepeatCount.bounded(1)),
210
+
211
+ d::LoopDef.build("RYL/NM1", d::RepeatCount.unbounded,
212
+ s::NM1.use( 100, r::Optional, d::RepeatCount.bounded(1)),
213
+
214
+ d::LoopDef.build("RYL/NM1/LOC", d::RepeatCount.unbounded,
215
+ s::LOC.use( 100, r::Optional, d::RepeatCount.bounded(1)),
216
+
217
+ d::LoopDef.build("RYL/NM1/LOC/PID", d::RepeatCount.unbounded,
218
+ s::PID.use( 100, r::Optional, d::RepeatCount.bounded(1)),
219
+ s::DTM.use( 100, r::Optional, d::RepeatCount.bounded(1)),
220
+
221
+ d::LoopDef.build("RYL/NM1/LOC/PID/PCT", d::RepeatCount.unbounded,
222
+ s::PCT.use( 100, r::Optional, d::RepeatCount.bounded(1)),
223
+ s::QTY.use( 100, r::Optional, d::RepeatCount.bounded(1)),
224
+
225
+ d::LoopDef.build("RYL/NM1/LOC/PID/PCT/AMT", d::RepeatCount.unbounded,
226
+ s::AMT.use( 100, r::Optional, d::RepeatCount.bounded(1)),
227
+ s::ADX.use( 100, r::Optional, d::RepeatCount.unbounded))))),
228
+
229
+ d::LoopDef.build("RYL/NM1/ASM", d::RepeatCount.unbounded,
230
+ s::ASM.use( 100, r::Optional, d::RepeatCount.bounded(1)),
231
+ s::ADX.use( 100, r::Optional, d::RepeatCount.bounded(1))))))),
232
+
233
+ d::TableDef.summary("Table 3 - Summary",
234
+ s:: SE.use( 100, r::Mandatory, d::RepeatCount.bounded(1))))
235
+
236
+ end
237
+ end
238
+ end
239
+ end
240
+ end
@@ -0,0 +1,68 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module FunctionalGroups
4
+ module FiftyTen
5
+ module TransactionSetDefs
6
+
7
+ # 005010X187 xx269
8
+
9
+ # 005010X279 Eligibility, Coverage or Benefit Inquiry
10
+ autoload :HS270, # Eligibility, Coverage or Benefit Inquiry
11
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/HS270"
12
+
13
+ # 005010X279 Eligibility, Coverage or Benefit Response
14
+ autoload :HB271, # Eligibility, Coverage or Benefit Response
15
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/HB271"
16
+
17
+ # 005010X209 xx274
18
+ # 005010X254 xx275
19
+
20
+ # 005010X212 Health Care Claim Status Request
21
+ autoload :HR276, # Health Care Claim Status Request
22
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/HR276"
23
+
24
+ # 005010X212 Health Care Information Status Notification
25
+ # 005010X213
26
+ # 005010X214 Health Care Claim Acknowledgment
27
+ # 005010X228
28
+ autoload :HN277, # Health Care Information Status Notification
29
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/HN277"
30
+
31
+ # 005010X215
32
+ # 005010X216
33
+ # 005010X217 Health Care Services Review Information - Review
34
+ # 005010X217 Health Care Services Review Information - Response
35
+ autoload :HI278, # Health Care Services Review Information
36
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/HI278"
37
+
38
+ # 005010X218 Payment Order/Remittance Advice
39
+ autoload :RA820, # Payment Order/Remittance Advice
40
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/RA820"
41
+
42
+ # # 005010X220 Benefit Enrollment and Maintenance
43
+ # autoload :BE834, # Benefit Enrollment and Maintenance
44
+ # "stupidedi/versions/functional_groups/005010/transaction_set_defs/BE834"
45
+
46
+ # 005010X221 Health Care Claim Payment/Advice
47
+ autoload :HP835, # Health Care Claim Payment/Advice
48
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/HP835"
49
+
50
+ # 005010X222 Health Care Claim: Professional
51
+ # 005010X223 Health Care Claim: Institutional
52
+ # 005010X224 Health Care Claim: Dental
53
+ autoload :HC837, # Health Care Claim
54
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/HC837"
55
+
56
+ # # 005010X230 Functional Acknowledgement
57
+ # autoload :FA997, # Functional Acknowledgment
58
+ # "stupidedi/versions/functional_groups/005010/transaction_set_defs/FA997"
59
+
60
+ # 005010X231 Functional Acknowledgement
61
+ autoload :FA999, # Implementation Acknowledgment
62
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs/FA999"
63
+
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,38 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module FunctionalGroups
4
+
5
+ #
6
+ # @see Guides::FiftyTen
7
+ # @see Interchanges::FiveOhOne
8
+ #
9
+ module FiftyTen
10
+
11
+ autoload :ElementTypes,
12
+ "stupidedi/versions/functional_groups/005010/element_types"
13
+
14
+ autoload :ElementDefs,
15
+ "stupidedi/versions/functional_groups/005010/element_defs"
16
+
17
+ autoload :ElementReqs,
18
+ "stupidedi/versions/functional_groups/005010/element_reqs"
19
+
20
+ autoload :FunctionalGroupDef,
21
+ "stupidedi/versions/functional_groups/005010/functional_group_def"
22
+
23
+ autoload :SegmentDefs,
24
+ "stupidedi/versions/functional_groups/005010/segment_defs"
25
+
26
+ autoload :SegmentReqs,
27
+ "stupidedi/versions/functional_groups/005010/segment_reqs"
28
+
29
+ autoload :SyntaxNotes,
30
+ "stupidedi/versions/functional_groups/005010/syntax_notes"
31
+
32
+ autoload :TransactionSetDefs,
33
+ "stupidedi/versions/functional_groups/005010/transaction_set_defs"
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,8 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module FunctionalGroups
4
+ autoload :FortyTen, "stupidedi/versions/functional_groups/004010"
5
+ autoload :FiftyTen, "stupidedi/versions/functional_groups/005010"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,224 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module Interchanges
4
+ module FourOhOne
5
+
6
+ #
7
+ # @see FunctionalGroups::FortyTen::ElementTypes
8
+ # @see Schema::CodeList
9
+ #
10
+ module ElementDefs
11
+
12
+ # Import definitions of DT, R, ID, Nn, AN, TM, and SimpleElementDef
13
+ t = FunctionalGroups::FortyTen::ElementTypes
14
+ s = Schema
15
+
16
+ class SeparatorElementVal < Values::SimpleElementVal
17
+
18
+ delegate :to_s, :length, :to => :@value
19
+
20
+ def initialize(value, usage, position)
21
+ @value = value
22
+ super(usage, position)
23
+ end
24
+
25
+ # @return [SeparatorElementVal]
26
+ def copy(changes = {})
27
+ SeparatorElementVal.new \
28
+ changes.fetch(:value, @value),
29
+ changes.fetch(:usage, usage),
30
+ changes.fetch(:position, position)
31
+ end
32
+
33
+ def valid?
34
+ true
35
+ end
36
+
37
+ def empty?
38
+ @value.blank?
39
+ end
40
+
41
+ def too_short?
42
+ @value.length < 1
43
+ end
44
+
45
+ def too_long?
46
+ @value.length > 1
47
+ end
48
+
49
+ def separator?
50
+ true
51
+ end
52
+
53
+ def inspect
54
+ id = definition.try{|d| ansi.bold("[#{d.id}]") }
55
+ ansi.element("SeparatorElementVal.value#{id}") << "(#{@value || "nil"})"
56
+ end
57
+ end
58
+
59
+ class << SeparatorElementVal
60
+ # @group Constructors
61
+ ###################################################################
62
+
63
+ # @raise NoMethodError
64
+ def empty(usage, position)
65
+ SeparatorElementVal.new(nil, usage, position)
66
+ end
67
+
68
+ # @return [SeparatorElementVal]
69
+ def value(character, usage, position)
70
+ SeparatorElementVal.new(character, usage, position)
71
+ end
72
+
73
+ # @return [SeparatorElementVal]
74
+ def parse(character, usage, position)
75
+ SeparatorElementVal.new(character, usage, position)
76
+ end
77
+
78
+ # @endgroup
79
+ ###################################################################
80
+ end
81
+
82
+ I01 = t::ID.new(:I01, "Authorization Information Qualifier", 2, 2,
83
+ s::CodeList.build(
84
+ "00" => "No Authorization Information Present (No Meaningful Information in I02)",
85
+ # "01" => "UCS Communications ID",
86
+ # "02" => "EDX Communications ID",
87
+ "03" => "Additional Data Identification"))
88
+ # "04" => "Rail Communication ID",
89
+ # "05" => "Deparment of Defense (DoD) Communication Identifier",
90
+ # "06" => "United States Federal Government Communication Identifier"))
91
+
92
+ I02 = t::AN.new(:I02, "Authorization Information", 10, 10)
93
+
94
+ I03 = t::ID.new(:I03, "Security Information Qualifier", 2, 2,
95
+ s::CodeList.build(
96
+ "00" => "No Security Information (No Meaningful Information in I04)",
97
+ "01" => "Password"))
98
+
99
+ I04 = t::AN.new(:I04, "Security Information", 10, 10)
100
+
101
+ I05 = t::ID.new(:I05, "Interchange ID Qualifier", 2, 2,
102
+ s::CodeList.build(
103
+ "01" => "Duns (Dun & Bradstreet)",
104
+ # "02" => "SCAC (Standard Carrier Alpha Code)",
105
+ # "03" => "FMC (Federal Maritime Commission)",
106
+ # "04" => "IATA (International Air Transport Association)",
107
+ # "07" => s::CodeList.external("583"),
108
+ # "08" => "UCC EDI Communications ID (Comm ID)",
109
+ # "09" => "X.121 (CCITT)",
110
+ # "10" => s::CodeList.external("350"),
111
+ # "11" => "DEA (Drug Enforcement Administration)",
112
+ # "12" => "Phone (Telephone Companies)",
113
+ # "13" => "UCS Code (The UCS Code is a Code Used for UCS Transmissions; it includes the Area Code and Telephone Number of a Modem; it Does Not Include Punctation, Blanks, or Access Code)",
114
+ "14" => "Duns Plus Suffix",
115
+ # "15" => "Petroleum Accountants Society of Canada Company Code",
116
+ # "16" => "Duns Number With 4-Character Suffix",
117
+ # "17" => "American Bankers Association (ABA) Transit Routing Number (Including Check Digit, 9 Digit)",
118
+ # "18" => s::CodeList.external("420"),
119
+ # "19" => s::CodeList.external("421"),
120
+ "20" => s::CodeList.external("121"),
121
+ # "21" => s::CodeList.external("422"),
122
+ # "22" => s::CodeList.external("423"),
123
+ # "23" => s::CodeList.external("424"),
124
+ # "24" => s::CodeList.external("425"),
125
+ # "25" => s::CodeList.external("426"),
126
+ # "26" => s::CodeList.external("296", "300"),
127
+ "27" => "Carrier Identification Number as assigned by Health Care Financing Administration (HCFA)",
128
+ "28" => "Fiscal Intermediary Identification Number as assigned by Health Care Financing Administration (HCFA)",
129
+ "29" => "Medicare Provider and Supplier Identification Number as assigned by Health Care Financing Administration (HCFA)",
130
+ "30" => "US Federal Tax Identification Number",
131
+ # "31" => "Jurisdiction Identification Number Plus 4 as assigned by the Interational Association of Industrial Accident Boards and Commissions (IAIABC)",
132
+ # "32" => "US Federal Employer Identification Number (FEIN)",
133
+ "33" => "National Association of Insurance Commissioners Company Code (NAIC)",
134
+ # "34" => "Medicaid Provider and Supplier Identification Number as assigned by individual State Medicaid Agencies in conjunction with Health Care Financing Administration (HCFA)",
135
+ # "35" => "Statistics Canada Canadian College Student Information System Institution Codes",
136
+ # "36" => s::CodeList.external("300"),
137
+ # "37" => s::CodeList.external("573"),
138
+ # "38" => s::CodeList.external("862"),
139
+ # "AM" => s::CodeList.external("497"),
140
+ # "NR" => "National Retail Merchants Association (NRMA) Assigned",
141
+ # "SA" => s::CodeList.external("851"),
142
+ # "SN" => s::CodeList.external("42"),
143
+ "ZZ" => "Mutually Defined"))
144
+
145
+ I06 = t::AN.new(:I06, "Interchange Sender ID", 15, 15)
146
+ I07 = t::AN.new(:I07, "Interchange Receiver ID", 15, 15)
147
+ I08 = t::DT.new(:I08, "Interchange Date", 6, 6)
148
+ I09 = t::TM.new(:I09, "Interchange Time", 4, 4)
149
+
150
+ I10 = t::ID.new(:I10, "Interchange Control Standards Identifier", 1, 1,
151
+ s::CodeList.build(
152
+ "U" => "U.S. EDI Community of ASC X12, TDCC, and UCS"))
153
+
154
+ I11 = t::ID.new(:I11, "Interchange Control Version Number", 5, 5,
155
+ s::CodeList.build(
156
+ "00401" => "Draft Standards for Trial Use Approved for Publication by ASC X12 Procedures Review Board through October 1997"))
157
+
158
+ I12 = t::Nn.new(:I12, "Interchange Control Number", 9, 9, 0)
159
+
160
+ I13 = t::ID.new(:I13, "Acknowledgment Requested", 1, 1,
161
+ s::CodeList.build(
162
+ "0" => "No Interchange Acknowledgment Requested",
163
+ "1" => "Interchange Acknowledgment Requested (TA1)"))
164
+
165
+ I14 = t::ID.new(:I14, "Interchange Usage Indicator", 1, 1,
166
+ s::CodeList.build(
167
+ # "I" => "Information",
168
+ "P" => "Production Data",
169
+ "T" => "Test Data"))
170
+
171
+ I15 = Class.new(t::SimpleElementDef) do
172
+ def companion
173
+ SeparatorElementVal
174
+ end
175
+ end.new(:I15, "Component Element Separator", 1, 1)
176
+
177
+ I16 = t::Nn.new(:I16, "Number of Included Functional Groups", 1, 5, 0)
178
+
179
+ I17 = t::ID.new(:I17, "Interchange Acknowledgement Code", 1, 1,
180
+ s::CodeList.build(
181
+ "A" => "The Transmitted Interchange Control Structure Header and Trailer Have Been Received and Have No Errors",
182
+ "E" => "The Transmitted Interchange Control Structure Header and Trailer Have Been Received and Are Accepted But Errors Are Noted. This Means the Sender Must Not Resend the Data.",
183
+ "R" => "The Transmitted Interchange Control Structure Header and Trailer are Rejected Because of Errors"))
184
+
185
+ I18 = t::ID.new(:I18, "Interchange Note Code", 3, 3,
186
+ s::CodeList.build(
187
+ "000" => "No error",
188
+ "001" => "The Interchange Control Number in the Header and Trailer Do Not Match. The Value From the Header is Used in the Acknowledgement",
189
+ "002" => "This Standard as Noted in the Control Standards Identifier is Not Supported",
190
+ "003" => "This Version of the Controls is Not Supported",
191
+ "004" => "The Segment Terminator is Invalid",
192
+ "005" => "Invalid Interchange ID Qualifier for Sender",
193
+ "006" => "Invalid Interchange Sender ID",
194
+ "007" => "Invalid Interchange ID Qualifier for Receiver",
195
+ "008" => "Invalid Interchange Receiver ID",
196
+ "009" => "Unknown Interchange Receiver ID",
197
+ "010" => "Invalid Authorization Information Qualifier Value",
198
+ "011" => "Invalid Authorization Information Value",
199
+ "012" => "Invalid Security Information Qualifier Value",
200
+ "013" => "Invalid Security Information Value",
201
+ "014" => "Invalid Interchange Date Value",
202
+ "015" => "Invalid Interchange Time Value",
203
+ "016" => "Invalid Interchange Standards Identifier Value",
204
+ "017" => "Invalid Interchange Version ID Value",
205
+ "018" => "Invalid Interchange Control Number Value",
206
+ "019" => "Invalid Acknowledgement Requested Value",
207
+ "020" => "Invalid Test Indicator Value",
208
+ "021" => "Invalid Number of Included Groups Value",
209
+ "022" => "Invalid Control Characters",
210
+ "023" => "Improper (Premature) End-of-File (Transmission)",
211
+ "024" => "Invalid Interchange Content (ex Invalid GS Segment)",
212
+ "025" => "Duplicate Interchange Control Numbers",
213
+ "026" => "Invalid Data Structure Separator",
214
+ "027" => "Invalid Component Element Separator",
215
+ "028" => "Invalid Date in Deferred Delivery Request",
216
+ "029" => "Invalid Time in Deferred Delivery Request",
217
+ "030" => "Invalid Delivery Time Code in Deferred Delivery Request",
218
+ "031" => "Invalid Grade of Service"))
219
+
220
+ end
221
+ end
222
+ end
223
+ end
224
+ end
@@ -0,0 +1,45 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module Interchanges
4
+
5
+ #
6
+ # @see Values::InterchangeDef
7
+ #
8
+ module FourOhOne
9
+
10
+ s = Schema
11
+ r = FunctionalGroups::FortyTen::ElementReqs
12
+
13
+ InterchangeDef = Class.new(Schema::InterchangeDef) do
14
+ # @group Constructors
15
+ #####################################################################
16
+
17
+ # @return [Values::InterchangeVal]
18
+ def empty(separators)
19
+ Values::InterchangeVal.new(self, [], separators)
20
+ end
21
+
22
+ # @endgroup
23
+ #####################################################################
24
+
25
+ # @return [Module]
26
+ def segment_dict
27
+ SegmentDefs
28
+ end
29
+
30
+ # @return [Reader::Separators]
31
+ def separators(isa)
32
+ Reader::Separators.new(isa.element(16).to_s, nil, nil, nil)
33
+ end
34
+ end.new "00401",
35
+ # Interchange header
36
+ [ SegmentDefs::ISA.use(1, r::Mandatory, s::RepeatCount.bounded(1)),
37
+ SegmentDefs::TA1.use(4, r::Optional, s::RepeatCount.unbounded) ],
38
+
39
+ # Interchange trailer
40
+ [ SegmentDefs::IEA.use(5, r::Mandatory, s::RepeatCount.bounded(1)) ]
41
+
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,20 @@
1
+ module Stupidedi
2
+ module Versions
3
+ module Interchanges
4
+ module FourOhOne
5
+ module SegmentDefs
6
+
7
+ s = Schema
8
+ e = ElementDefs
9
+ r = FunctionalGroups::FortyTen::ElementReqs
10
+
11
+ IEA = s::SegmentDef.build(:IEA, "Interchange Control Trailer",
12
+ "To define the end of an interchange of zero or more functional groups and interchange-related control segments",
13
+ e::I16.simple_use(r::Mandatory, s::RepeatCount.bounded(1)),
14
+ e::I12.simple_use(r::Mandatory, s::RepeatCount.bounded(1)))
15
+
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end