stupidedi 1.2.5 → 1.2.6

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 (286) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -10
  3. data/lib/ruby/array.rb +223 -185
  4. data/lib/ruby/blank.rb +50 -66
  5. data/lib/ruby/hash.rb +14 -3
  6. data/lib/ruby/instance_exec.rb +20 -17
  7. data/lib/ruby/module.rb +53 -43
  8. data/lib/ruby/object.rb +61 -56
  9. data/lib/ruby/string.rb +70 -65
  10. data/lib/ruby/symbol.rb +22 -19
  11. data/lib/ruby/to_d.rb +71 -70
  12. data/lib/ruby/to_date.rb +18 -24
  13. data/lib/ruby/to_time.rb +16 -18
  14. data/lib/ruby/try.rb +40 -38
  15. data/lib/stupidedi.rb +3 -6
  16. data/lib/stupidedi/builder/builder_dsl.rb +2 -1
  17. data/lib/stupidedi/builder/constraint_table.rb +2 -0
  18. data/lib/stupidedi/builder/generation.rb +2 -0
  19. data/lib/stupidedi/builder/identifier_stack.rb +2 -0
  20. data/lib/stupidedi/builder/instruction.rb +2 -0
  21. data/lib/stupidedi/builder/instruction_table.rb +2 -0
  22. data/lib/stupidedi/builder/navigation.rb +2 -0
  23. data/lib/stupidedi/builder/state_machine.rb +2 -0
  24. data/lib/stupidedi/builder/states/abstract_state.rb +2 -0
  25. data/lib/stupidedi/builder/states/failure_state.rb +2 -0
  26. data/lib/stupidedi/builder/states/functional_group_state.rb +2 -0
  27. data/lib/stupidedi/builder/states/initial_state.rb +2 -0
  28. data/lib/stupidedi/builder/states/interchange_state.rb +2 -0
  29. data/lib/stupidedi/builder/states/loop_state.rb +2 -0
  30. data/lib/stupidedi/builder/states/table_state.rb +2 -0
  31. data/lib/stupidedi/builder/states/transaction_set_state.rb +2 -0
  32. data/lib/stupidedi/builder/states/transmission_state.rb +2 -0
  33. data/lib/stupidedi/builder/tokenization.rb +2 -0
  34. data/lib/stupidedi/color.rb +2 -0
  35. data/lib/stupidedi/config.rb +4 -1
  36. data/lib/stupidedi/config/code_list_config.rb +5 -1
  37. data/lib/stupidedi/config/editor_config.rb +5 -1
  38. data/lib/stupidedi/config/functional_group_config.rb +5 -2
  39. data/lib/stupidedi/config/interchange_config.rb +9 -5
  40. data/lib/stupidedi/config/transaction_set_config.rb +5 -1
  41. data/lib/stupidedi/contrib/003010/guides/PS830.rb +4 -4
  42. data/lib/stupidedi/contrib/004010/guides/SH856.rb +2 -2
  43. data/lib/stupidedi/editor.rb +0 -1
  44. data/lib/stupidedi/editor/00401.rb +2 -0
  45. data/lib/stupidedi/editor/004010.rb +2 -0
  46. data/lib/stupidedi/editor/004010/N4.rb +2 -0
  47. data/lib/stupidedi/editor/00501.rb +2 -0
  48. data/lib/stupidedi/editor/005010.rb +2 -0
  49. data/lib/stupidedi/editor/005010/N4.rb +2 -0
  50. data/lib/stupidedi/editor/X12.rb +2 -0
  51. data/lib/stupidedi/editor/X222-HC837.rb +2 -0
  52. data/lib/stupidedi/editor/abstract_ed.rb +2 -0
  53. data/lib/stupidedi/editor/claim_ack.rb +2 -0
  54. data/lib/stupidedi/editor/implementation_ack.rb +2 -0
  55. data/lib/stupidedi/editor/interchange_ack.rb +2 -0
  56. data/lib/stupidedi/editor/result.rb +2 -0
  57. data/lib/stupidedi/editor/result_set.rb +2 -0
  58. data/lib/stupidedi/editor/transaction_set_ed.rb +2 -0
  59. data/lib/stupidedi/editor/transmission_ed.rb +2 -0
  60. data/lib/stupidedi/either.rb +2 -0
  61. data/lib/stupidedi/guides/004010.rb +2 -0
  62. data/lib/stupidedi/guides/004010/X091A1-HP835.rb +2 -0
  63. data/lib/stupidedi/guides/004010/element_reqs.rb +2 -0
  64. data/lib/stupidedi/guides/004010/guide_builder.rb +2 -0
  65. data/lib/stupidedi/guides/004010/segment_reqs.rb +2 -0
  66. data/lib/stupidedi/guides/005010.rb +2 -0
  67. data/lib/stupidedi/guides/005010/X214-HN277.rb +2 -0
  68. data/lib/stupidedi/guides/005010/X221-HP835.rb +2 -0
  69. data/lib/stupidedi/guides/005010/X221A1-HP835.rb +2 -0
  70. data/lib/stupidedi/guides/005010/X222-HC837P.rb +2 -0
  71. data/lib/stupidedi/guides/005010/X222A1-HC837P.rb +2 -0
  72. data/lib/stupidedi/guides/005010/X231-FA999.rb +2 -0
  73. data/lib/stupidedi/guides/005010/X231A1-FA999.rb +2 -0
  74. data/lib/stupidedi/guides/005010/element_reqs.rb +2 -0
  75. data/lib/stupidedi/guides/005010/guide_builder.rb +2 -0
  76. data/lib/stupidedi/guides/005010/segment_reqs.rb +2 -0
  77. data/lib/stupidedi/inspect.rb +1 -0
  78. data/lib/stupidedi/reader.rb +2 -1
  79. data/lib/stupidedi/reader/input.rb +2 -0
  80. data/lib/stupidedi/reader/input/abstract_input.rb +2 -1
  81. data/lib/stupidedi/reader/input/delegated_input.rb +2 -1
  82. data/lib/stupidedi/reader/input/file_input.rb +2 -0
  83. data/lib/stupidedi/reader/position.rb +2 -0
  84. data/lib/stupidedi/reader/result.rb +2 -0
  85. data/lib/stupidedi/reader/segment_dict.rb +2 -0
  86. data/lib/stupidedi/reader/separators.rb +2 -0
  87. data/lib/stupidedi/reader/stream_reader.rb +2 -0
  88. data/lib/stupidedi/reader/token_reader.rb +2 -0
  89. data/lib/stupidedi/reader/tokens/component_element_tok.rb +2 -0
  90. data/lib/stupidedi/reader/tokens/composite_element_tok.rb +2 -0
  91. data/lib/stupidedi/reader/tokens/repeated_element_tok.rb +2 -1
  92. data/lib/stupidedi/reader/tokens/segment_tok.rb +2 -0
  93. data/lib/stupidedi/reader/tokens/simple_element_tok.rb +2 -0
  94. data/lib/stupidedi/schema/abstract_def.rb +2 -0
  95. data/lib/stupidedi/schema/abstract_use.rb +2 -0
  96. data/lib/stupidedi/schema/code_list.rb +3 -2
  97. data/lib/stupidedi/schema/element_def.rb +2 -0
  98. data/lib/stupidedi/schema/element_req.rb +2 -0
  99. data/lib/stupidedi/schema/element_use.rb +3 -2
  100. data/lib/stupidedi/schema/functional_group_def.rb +2 -0
  101. data/lib/stupidedi/schema/interchange_def.rb +2 -0
  102. data/lib/stupidedi/schema/loop_def.rb +3 -2
  103. data/lib/stupidedi/schema/repeat_count.rb +3 -2
  104. data/lib/stupidedi/schema/segment_def.rb +2 -0
  105. data/lib/stupidedi/schema/segment_req.rb +2 -0
  106. data/lib/stupidedi/schema/segment_use.rb +4 -3
  107. data/lib/stupidedi/schema/syntax_note.rb +2 -0
  108. data/lib/stupidedi/schema/table_def.rb +2 -0
  109. data/lib/stupidedi/schema/transaction_set_def.rb +2 -0
  110. data/lib/stupidedi/sets.rb +1 -0
  111. data/lib/stupidedi/tail_call.rb +1 -0
  112. data/lib/stupidedi/thread_local.rb +1 -0
  113. data/lib/stupidedi/values/abstract_element_val.rb +2 -0
  114. data/lib/stupidedi/values/abstract_val.rb +2 -0
  115. data/lib/stupidedi/values/composite_element_val.rb +4 -3
  116. data/lib/stupidedi/values/functional_group_val.rb +3 -2
  117. data/lib/stupidedi/values/interchange_val.rb +2 -1
  118. data/lib/stupidedi/values/invalid_envelope_val.rb +3 -2
  119. data/lib/stupidedi/values/invalid_segment_val.rb +2 -1
  120. data/lib/stupidedi/values/loop_val.rb +3 -2
  121. data/lib/stupidedi/values/repeated_element_val.rb +3 -2
  122. data/lib/stupidedi/values/segment_val.rb +3 -2
  123. data/lib/stupidedi/values/segment_val_group.rb +2 -0
  124. data/lib/stupidedi/values/simple_element_val.rb +3 -2
  125. data/lib/stupidedi/values/table_val.rb +3 -2
  126. data/lib/stupidedi/values/transaction_set_val.rb +3 -2
  127. data/lib/stupidedi/values/transmission_val.rb +2 -0
  128. data/lib/stupidedi/version.rb +1 -1
  129. data/lib/stupidedi/versions/functional_groups.rb +2 -0
  130. data/lib/stupidedi/versions/functional_groups/002001.rb +2 -0
  131. data/lib/stupidedi/versions/functional_groups/002001/element_defs.rb +2 -1
  132. data/lib/stupidedi/versions/functional_groups/002001/element_reqs.rb +2 -0
  133. data/lib/stupidedi/versions/functional_groups/002001/element_types.rb +2 -0
  134. data/lib/stupidedi/versions/functional_groups/002001/element_types/date_val.rb +3 -7
  135. data/lib/stupidedi/versions/functional_groups/002001/element_types/fixnum_val.rb +5 -12
  136. data/lib/stupidedi/versions/functional_groups/002001/element_types/float_val.rb +6 -15
  137. data/lib/stupidedi/versions/functional_groups/002001/element_types/identifier_val.rb +5 -17
  138. data/lib/stupidedi/versions/functional_groups/002001/element_types/operators.rb +34 -18
  139. data/lib/stupidedi/versions/functional_groups/002001/element_types/string_val.rb +7 -17
  140. data/lib/stupidedi/versions/functional_groups/002001/element_types/time_val.rb +2 -0
  141. data/lib/stupidedi/versions/functional_groups/002001/functional_group_def.rb +2 -0
  142. data/lib/stupidedi/versions/functional_groups/002001/segment_defs.rb +2 -0
  143. data/lib/stupidedi/versions/functional_groups/002001/segment_reqs.rb +2 -0
  144. data/lib/stupidedi/versions/functional_groups/002001/syntax_notes.rb +2 -0
  145. data/lib/stupidedi/versions/functional_groups/002001/transaction_set_defs.rb +2 -0
  146. data/lib/stupidedi/versions/functional_groups/003010.rb +2 -0
  147. data/lib/stupidedi/versions/functional_groups/003010/element_defs.rb +2 -1
  148. data/lib/stupidedi/versions/functional_groups/003010/element_reqs.rb +2 -0
  149. data/lib/stupidedi/versions/functional_groups/003010/element_types.rb +2 -0
  150. data/lib/stupidedi/versions/functional_groups/003010/element_types/date_val.rb +3 -7
  151. data/lib/stupidedi/versions/functional_groups/003010/element_types/fixnum_val.rb +4 -10
  152. data/lib/stupidedi/versions/functional_groups/003010/element_types/float_val.rb +6 -14
  153. data/lib/stupidedi/versions/functional_groups/003010/element_types/identifier_val.rb +5 -17
  154. data/lib/stupidedi/versions/functional_groups/003010/element_types/operators.rb +34 -18
  155. data/lib/stupidedi/versions/functional_groups/003010/element_types/string_val.rb +7 -17
  156. data/lib/stupidedi/versions/functional_groups/003010/element_types/time_val.rb +2 -0
  157. data/lib/stupidedi/versions/functional_groups/003010/functional_group_def.rb +2 -0
  158. data/lib/stupidedi/versions/functional_groups/003010/segment_defs.rb +2 -0
  159. data/lib/stupidedi/versions/functional_groups/003010/segment_reqs.rb +2 -0
  160. data/lib/stupidedi/versions/functional_groups/003010/syntax_notes.rb +2 -0
  161. data/lib/stupidedi/versions/functional_groups/003010/transaction_set_defs.rb +2 -0
  162. data/lib/stupidedi/versions/functional_groups/003040.rb +2 -0
  163. data/lib/stupidedi/versions/functional_groups/003040/element_defs.rb +2 -1
  164. data/lib/stupidedi/versions/functional_groups/003040/element_reqs.rb +2 -0
  165. data/lib/stupidedi/versions/functional_groups/003040/element_types.rb +2 -0
  166. data/lib/stupidedi/versions/functional_groups/003040/element_types/date_val.rb +3 -7
  167. data/lib/stupidedi/versions/functional_groups/003040/element_types/fixnum_val.rb +5 -11
  168. data/lib/stupidedi/versions/functional_groups/003040/element_types/float_val.rb +6 -14
  169. data/lib/stupidedi/versions/functional_groups/003040/element_types/identifier_val.rb +5 -17
  170. data/lib/stupidedi/versions/functional_groups/003040/element_types/operators.rb +34 -18
  171. data/lib/stupidedi/versions/functional_groups/003040/element_types/string_val.rb +7 -17
  172. data/lib/stupidedi/versions/functional_groups/003040/element_types/time_val.rb +2 -0
  173. data/lib/stupidedi/versions/functional_groups/003040/functional_group_def.rb +2 -0
  174. data/lib/stupidedi/versions/functional_groups/003040/segment_defs.rb +2 -0
  175. data/lib/stupidedi/versions/functional_groups/003040/segment_reqs.rb +2 -0
  176. data/lib/stupidedi/versions/functional_groups/003040/syntax_notes.rb +2 -0
  177. data/lib/stupidedi/versions/functional_groups/003040/transaction_set_defs.rb +2 -0
  178. data/lib/stupidedi/versions/functional_groups/003050.rb +2 -0
  179. data/lib/stupidedi/versions/functional_groups/003050/element_defs.rb +2 -1
  180. data/lib/stupidedi/versions/functional_groups/003050/element_reqs.rb +2 -0
  181. data/lib/stupidedi/versions/functional_groups/003050/element_types.rb +2 -0
  182. data/lib/stupidedi/versions/functional_groups/003050/element_types/date_val.rb +3 -7
  183. data/lib/stupidedi/versions/functional_groups/003050/element_types/fixnum_val.rb +5 -11
  184. data/lib/stupidedi/versions/functional_groups/003050/element_types/float_val.rb +6 -14
  185. data/lib/stupidedi/versions/functional_groups/003050/element_types/identifier_val.rb +5 -17
  186. data/lib/stupidedi/versions/functional_groups/003050/element_types/operators.rb +34 -18
  187. data/lib/stupidedi/versions/functional_groups/003050/element_types/string_val.rb +7 -17
  188. data/lib/stupidedi/versions/functional_groups/003050/element_types/time_val.rb +2 -0
  189. data/lib/stupidedi/versions/functional_groups/003050/functional_group_def.rb +2 -0
  190. data/lib/stupidedi/versions/functional_groups/003050/segment_defs.rb +2 -0
  191. data/lib/stupidedi/versions/functional_groups/003050/segment_reqs.rb +2 -0
  192. data/lib/stupidedi/versions/functional_groups/003050/syntax_notes.rb +2 -0
  193. data/lib/stupidedi/versions/functional_groups/003050/transaction_set_defs.rb +2 -0
  194. data/lib/stupidedi/versions/functional_groups/004010.rb +2 -0
  195. data/lib/stupidedi/versions/functional_groups/004010/element_defs.rb +2 -1
  196. data/lib/stupidedi/versions/functional_groups/004010/element_reqs.rb +2 -0
  197. data/lib/stupidedi/versions/functional_groups/004010/element_types.rb +2 -0
  198. data/lib/stupidedi/versions/functional_groups/004010/element_types/date_val.rb +3 -7
  199. data/lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb +5 -11
  200. data/lib/stupidedi/versions/functional_groups/004010/element_types/float_val.rb +6 -14
  201. data/lib/stupidedi/versions/functional_groups/004010/element_types/identifier_val.rb +5 -17
  202. data/lib/stupidedi/versions/functional_groups/004010/element_types/operators.rb +34 -18
  203. data/lib/stupidedi/versions/functional_groups/004010/element_types/string_val.rb +7 -17
  204. data/lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb +2 -0
  205. data/lib/stupidedi/versions/functional_groups/004010/functional_group_def.rb +2 -0
  206. data/lib/stupidedi/versions/functional_groups/004010/segment_defs.rb +2 -0
  207. data/lib/stupidedi/versions/functional_groups/004010/segment_reqs.rb +2 -0
  208. data/lib/stupidedi/versions/functional_groups/004010/syntax_notes.rb +2 -0
  209. data/lib/stupidedi/versions/functional_groups/004010/transaction_set_defs.rb +2 -0
  210. data/lib/stupidedi/versions/functional_groups/004010/transaction_set_defs/HP835.rb +2 -0
  211. data/lib/stupidedi/versions/functional_groups/005010.rb +2 -0
  212. data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +2 -0
  213. data/lib/stupidedi/versions/functional_groups/005010/element_reqs.rb +2 -0
  214. data/lib/stupidedi/versions/functional_groups/005010/element_types.rb +2 -0
  215. data/lib/stupidedi/versions/functional_groups/005010/element_types/date_val.rb +3 -7
  216. data/lib/stupidedi/versions/functional_groups/005010/element_types/fixnum_val.rb +4 -12
  217. data/lib/stupidedi/versions/functional_groups/005010/element_types/float_val.rb +6 -14
  218. data/lib/stupidedi/versions/functional_groups/005010/element_types/identifier_val.rb +5 -17
  219. data/lib/stupidedi/versions/functional_groups/005010/element_types/operators.rb +34 -18
  220. data/lib/stupidedi/versions/functional_groups/005010/element_types/string_val.rb +7 -17
  221. data/lib/stupidedi/versions/functional_groups/005010/element_types/time_val.rb +2 -0
  222. data/lib/stupidedi/versions/functional_groups/005010/functional_group_def.rb +2 -0
  223. data/lib/stupidedi/versions/functional_groups/005010/segment_defs.rb +2 -0
  224. data/lib/stupidedi/versions/functional_groups/005010/segment_reqs.rb +2 -0
  225. data/lib/stupidedi/versions/functional_groups/005010/syntax_notes.rb +2 -0
  226. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs.rb +2 -0
  227. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/FA999.rb +2 -0
  228. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HB271.rb +2 -0
  229. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HC837.rb +2 -0
  230. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HI278.rb +2 -0
  231. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HN277.rb +2 -0
  232. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HP835.rb +2 -0
  233. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HR276.rb +2 -0
  234. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HS270.rb +2 -0
  235. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/RA820.rb +2 -0
  236. data/lib/stupidedi/versions/interchanges.rb +2 -0
  237. data/lib/stupidedi/versions/interchanges/00200.rb +2 -0
  238. data/lib/stupidedi/versions/interchanges/00200/element_defs.rb +2 -1
  239. data/lib/stupidedi/versions/interchanges/00200/interchange_def.rb +2 -0
  240. data/lib/stupidedi/versions/interchanges/00200/segment_defs.rb +2 -0
  241. data/lib/stupidedi/versions/interchanges/00300.rb +2 -0
  242. data/lib/stupidedi/versions/interchanges/00300/element_defs.rb +2 -1
  243. data/lib/stupidedi/versions/interchanges/00300/interchange_def.rb +2 -0
  244. data/lib/stupidedi/versions/interchanges/00300/segment_defs.rb +2 -0
  245. data/lib/stupidedi/versions/interchanges/00400.rb +2 -0
  246. data/lib/stupidedi/versions/interchanges/00400/element_defs.rb +2 -1
  247. data/lib/stupidedi/versions/interchanges/00400/interchange_def.rb +2 -0
  248. data/lib/stupidedi/versions/interchanges/00400/segment_defs.rb +2 -0
  249. data/lib/stupidedi/versions/interchanges/00401.rb +2 -0
  250. data/lib/stupidedi/versions/interchanges/00401/element_defs.rb +2 -1
  251. data/lib/stupidedi/versions/interchanges/00401/interchange_def.rb +2 -0
  252. data/lib/stupidedi/versions/interchanges/00401/segment_defs.rb +2 -0
  253. data/lib/stupidedi/versions/interchanges/00501.rb +2 -0
  254. data/lib/stupidedi/versions/interchanges/00501/element_defs.rb +2 -1
  255. data/lib/stupidedi/versions/interchanges/00501/interchange_def.rb +2 -0
  256. data/lib/stupidedi/versions/interchanges/00501/segment_defs.rb +2 -0
  257. data/lib/stupidedi/writer/claredi.rb +2 -0
  258. data/lib/stupidedi/writer/default.rb +2 -0
  259. data/lib/stupidedi/zipper.rb +2 -0
  260. data/lib/stupidedi/zipper/abstract_cursor.rb +2 -0
  261. data/lib/stupidedi/zipper/dangling_cursor.rb +2 -0
  262. data/lib/stupidedi/zipper/edited_cursor.rb +2 -0
  263. data/lib/stupidedi/zipper/memoized_cursor.rb +2 -0
  264. data/lib/stupidedi/zipper/path.rb +2 -0
  265. data/lib/stupidedi/zipper/root_cursor.rb +2 -0
  266. data/spec/examples/integration/parsing.example +1 -0
  267. data/spec/examples/ruby/array.example +3 -2
  268. data/spec/examples/ruby/blank.example +15 -14
  269. data/spec/examples/ruby/count.example +1 -0
  270. data/spec/examples/ruby/object.example +2 -2
  271. data/spec/examples/ruby/string.example +1 -0
  272. data/spec/examples/ruby/symbol.example +2 -21
  273. data/spec/examples/ruby/to_d.example +1 -0
  274. data/spec/examples/ruby/try.example +1 -0
  275. data/spec/examples/stupidedi/reader/input/delegated_input.example +1 -0
  276. data/spec/examples/stupidedi/reader/token_reader.example +2 -1
  277. data/spec/examples/stupidedi/versions/005010/element_types/an.example +1 -0
  278. data/spec/examples/stupidedi/versions/005010/element_types/nn.example +1 -0
  279. data/spec/examples/stupidedi/versions/005010/element_types/r.example +1 -0
  280. data/spec/spec_helper.rb +3 -4
  281. data/spec/support/matchers/navigation_matchers.rb +1 -0
  282. data/spec/support/quickcheck.rb +2 -1
  283. data/spec/support/quickcheck/serialized_edi.rb +1 -0
  284. data/spec/support/rcov.rb +3 -3
  285. metadata +3 -4
  286. data/lib/ruby/enumerable.rb +0 -35
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyForty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyForty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyForty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyForty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyForty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyForty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
 
@@ -1,6 +1,7 @@
1
1
  # encoding: ISO-8859-1
2
-
3
2
  module Stupidedi
3
+ using Refinements
4
+
4
5
  module Versions
5
6
  module FunctionalGroups
6
7
  module ThirtyFifty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -165,7 +167,6 @@ module Stupidedi
165
167
  include Comparable
166
168
 
167
169
  # (date any* -> any)
168
- extend Forwardable
169
170
  def_delegators :@value, :year, :month, :day, :cwday, :cweek, :downto, :upto,
170
171
  :step, :httpdate, :to_s, :to_i, :strftime, :iso8601, :rfc2822,
171
172
  :rfc3339, :rfc822, :leap?, :julian?, :gregorian?, :mday, :mon,
@@ -204,12 +205,7 @@ module Stupidedi
204
205
  def coerce(other)
205
206
  # me, he = other.coerce(self)
206
207
  # me <OP> he
207
- if other.respond_to?(:to_date)
208
- return DateVal.value(other, usage, position), self
209
- else
210
- raise TypeError,
211
- "cannot coerce DateVal to #{other.class}"
212
- end
208
+ return DateVal.value(other, usage, position), self
213
209
  end
214
210
 
215
211
  def valid?
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -193,7 +195,6 @@ module Stupidedi
193
195
  # @return [BigDecimal]
194
196
  attr_reader :value
195
197
 
196
- extend Forwardable
197
198
  def_delegators :@value, :to_i, :to_d, :to_f, :to_r, :to_c
198
199
 
199
200
 
@@ -213,12 +214,7 @@ module Stupidedi
213
214
  def coerce(other)
214
215
  # self', other' = other.coerce(self)
215
216
  # self' * other'
216
- if other.respond_to?(:to_d)
217
- return copy(:value => other.to_d), self
218
- else
219
- raise TypeError,
220
- "cannot coerce FixnumVal to #{other.class}"
221
- end
217
+ return copy(:value => other.to_d), self
222
218
  end
223
219
 
224
220
  def valid?
@@ -295,15 +291,13 @@ module Stupidedi
295
291
  def value(object, usage, position)
296
292
  if object.blank?
297
293
  self::Empty.new(usage, position)
298
- elsif object.respond_to?(:to_d)
294
+ else
299
295
  # The number of fractional digits is implied by usage.precision
300
296
  factor = 10 ** usage.definition.precision
301
297
 
302
298
  self::NonEmpty.new(object.to_d / factor, usage, position)
303
- else
304
- self::Invalid.new(object, usage, position)
305
299
  end
306
- rescue ArgumentError
300
+ rescue
307
301
  self::Invalid.new(object, usage, position)
308
302
  end
309
303
 
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -182,7 +184,6 @@ module Stupidedi
182
184
  # @return [BigDecimal]
183
185
  attr_reader :value
184
186
 
185
- extend Forwardable
186
187
  def_delegators :@value, :to_i, :to_d, :to_f, :to_r, :to_c
187
188
 
188
189
 
@@ -203,12 +204,7 @@ module Stupidedi
203
204
  def coerce(other)
204
205
  # self', other' = other.coerce(self)
205
206
  # self' * other'
206
- if other.respond_to?(:to_d)
207
- return copy(:value => other.to_d), self
208
- else
209
- raise TypeError,
210
- "cannot coerce FloatVal to #{other.class}"
211
- end
207
+ return copy(:value => other.to_d), self
212
208
  end
213
209
 
214
210
  def valid?
@@ -329,15 +325,11 @@ module Stupidedi
329
325
  def value(object, usage, position)
330
326
  if object.blank?
331
327
  self::Empty.new(usage, position)
332
- elsif object.respond_to?(:to_d)
333
- begin
334
- self::NonEmpty.new(object.to_d, usage, position)
335
- rescue ArgumentError
336
- self::Invalid.new(object, usage, position)
337
- end
338
328
  else
339
- self::Invalid.new(object, usage, position)
329
+ self::NonEmpty.new(object.to_d, usage, position)
340
330
  end
331
+ rescue
332
+ self::Invalid.new(object, usage, position)
341
333
  end
342
334
 
343
335
  # @endgroup
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -144,7 +146,6 @@ module Stupidedi
144
146
  include Comparable
145
147
 
146
148
  # (string any* -> any)
147
- extend Forwardable
148
149
  def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
149
150
  :hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
150
151
  :lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
@@ -180,12 +181,7 @@ module Stupidedi
180
181
  def coerce(other)
181
182
  # me, he = other.coerce(self)
182
183
  # me <OP> he
183
- if other.respond_to?(:to_str)
184
- return copy(:value => other.to_str), self
185
- else
186
- raise TypeError,
187
- "cannot coerce IdentifierVal to #{other.class}"
188
- end
184
+ return copy(:value => other.to_str), self
189
185
  end
190
186
 
191
187
  def value
@@ -234,7 +230,6 @@ module Stupidedi
234
230
  # @return [String]
235
231
  attr_reader :value
236
232
  # (string any* -> any)
237
- extend Forwardable
238
233
  def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
239
234
  :hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
240
235
  :lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
@@ -274,12 +269,7 @@ module Stupidedi
274
269
  def coerce(other)
275
270
  # me, he = other.coerce(self)
276
271
  # me <OP> he
277
- if other.respond_to?(:to_str)
278
- return copy(:value => other.to_str), self
279
- else
280
- raise TypeError,
281
- "cannot coerce IdentifierVal to #{other.class}"
282
- end
272
+ return copy(:value => other.to_str), self
283
273
  end
284
274
 
285
275
  def valid?
@@ -345,10 +335,8 @@ module Stupidedi
345
335
  def value(object, usage, position)
346
336
  if object.blank?
347
337
  self::Empty.new(usage, position)
348
- elsif object.respond_to?(:to_s)
349
- self::NonEmpty.new(object.to_s.rstrip, usage, position)
350
338
  else
351
- self::Invalid.new(object, usage, position)
339
+ self::NonEmpty.new(object.to_s.rstrip, usage, position)
352
340
  end
353
341
  rescue
354
342
  self::Invalid.new(object, usage, position)
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -13,7 +15,7 @@ module Stupidedi
13
15
  ops.each do |op|
14
16
  class_eval(<<-RUBY, file, line.to_i - 1)
15
17
  def #{op}(&block)
16
- copy(:value => value.__send__(:#{op}, &block))
18
+ copy(:value => value.#{op}(&block))
17
19
  end
18
20
  RUBY
19
21
  end
@@ -39,17 +41,24 @@ module Stupidedi
39
41
  "must pass :coerce => :method"
40
42
  end
41
43
 
44
+ # Note that we can't test respond_to?(coerce) because coerce is
45
+ # often a refinement method, like #to_d, #to_time, etc. Currently
46
+ # respond_to? returns false on refinment methods, so we just call
47
+ # the method and assume a NoMethodError is due to coerce (hopefully
48
+ # not some other missing method)
42
49
  ops.each do |op|
43
50
  class_eval(<<-RUBY, file, line.to_i - 1)
44
51
  def #{op}(other, &block)
45
- if other.respond_to?(:#{coerce})
46
- copy(:value => value.__send__(:#{op}, other.#{coerce}, &block))
47
- elsif other.respond_to?(:coerce)
48
- me, he = other.coerce(self)
49
- copy(:value => me.__send__(:#{op}, he, &block).#{coerce})
50
- else
51
- raise TypeError,
52
- "cannot coerce \#{other.class} to \#{self.class}"
52
+ begin
53
+ copy(:value => value.#{op}(other.#{coerce}, &block))
54
+ rescue NoMethodError
55
+ begin
56
+ me, he = other.coerce(self)
57
+ copy(:value => me.#{op}(he, &block).#{coerce})
58
+ rescue NoMethodError
59
+ raise TypeError,
60
+ "cannot coerce \#{other.class} to \#{self.class}"
61
+ end
53
62
  end
54
63
  end
55
64
  RUBY
@@ -76,17 +85,24 @@ module Stupidedi
76
85
  "must pass :coerce => :method"
77
86
  end
78
87
 
88
+ # Note that we can't test respond_to?(coerce) because coerce is
89
+ # often a refinement method, like #to_d, #to_time, etc. Currently
90
+ # respond_to? returns false on refinment methods, so we just call
91
+ # the method and assume a NoMethodError is due to coerce (hopefully
92
+ # not some other missing method)
79
93
  ops.each do |op|
80
94
  class_eval(<<-RUBY, file, line.to_i - 1)
81
95
  def #{op}(other, &block)
82
- if other.respond_to?(:#{coerce})
83
- value.__send__(:#{op}, other.#{coerce}, &block)
84
- elsif other.respond_to?(:coerce)
85
- me, he = other.coerce(self)
86
- me.__send__(:#{op}, he, &block)
87
- else
88
- raise TypeError,
89
- "cannot coerce \#{other.class} to \#{self.class}"
96
+ begin
97
+ value.#{op}(other.#{coerce}, &block)
98
+ rescue NoMethodError
99
+ begin
100
+ me, he = other.coerce(self)
101
+ me.#{op}(he, &block)
102
+ rescue NoMethodError
103
+ raise TypeError,
104
+ "cannot coerce \#{other.class} to \#{self.class}"
105
+ end
90
106
  end
91
107
  end
92
108
  RUBY
@@ -101,7 +117,7 @@ module Stupidedi
101
117
  ops.each do |op|
102
118
  class_eval(<<-RUBY, file, line.to_i - 1)
103
119
  def #{op}(*args, &block)
104
- copy(:value => value.__send__(:#{op}, *args, &block))
120
+ copy(:value => value.#{op}(*args, &block))
105
121
  end
106
122
  RUBY
107
123
  end
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -103,7 +105,6 @@ module Stupidedi
103
105
  include Comparable
104
106
 
105
107
  # (string any* -> any)
106
- extend Forwardable
107
108
  def_delegators :value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
108
109
  :hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
109
110
  :lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
@@ -139,12 +140,7 @@ module Stupidedi
139
140
  def coerce(other)
140
141
  # me, he = other.coerce(self)
141
142
  # me <OP> he
142
- if other.respond_to?(:to_str)
143
- return copy(:value => other.to_str), self
144
- else
145
- raise TypeError,
146
- "cannot coerce StringVal to #{other.class}"
147
- end
143
+ return copy(:value => other.to_str), self
148
144
  end
149
145
 
150
146
  def value
@@ -194,7 +190,6 @@ module Stupidedi
194
190
  attr_reader :value
195
191
 
196
192
  # (string any* -> any)
197
- extend Forwardable
198
193
  def_delegators :@value, :to_d, :to_s, :to_f, :to_c, :to_r, :to_sym, :to_str,
199
194
  :hex, :oct, :ord, :sum, :length, :count, :index, :rindex,
200
195
  :lines, :bytes, :chars, :each, :upto, :split, :scan, :unpack,
@@ -235,12 +230,7 @@ module Stupidedi
235
230
  def coerce(other)
236
231
  # me, he = other.coerce(self)
237
232
  # me <OP> he
238
- if other.respond_to?(:to_str)
239
- return copy(:value => other.to_str), self
240
- else
241
- raise TypeError,
242
- "cannot coerce StringVal to #{other.class}"
243
- end
233
+ return copy(:value => other.to_str), self
244
234
  end
245
235
 
246
236
  def too_long?
@@ -378,11 +368,11 @@ module Stupidedi
378
368
  def value(object, usage, position)
379
369
  if object.blank?
380
370
  self::Empty.new(usage, position)
381
- elsif object.respond_to?(:to_s)
382
- self::NonEmpty.new(object.to_s.rstrip, usage, position)
383
371
  else
384
- self::Invalid.new(object, usage, position)
372
+ self::NonEmpty.new(object.to_s.rstrip, usage, position)
385
373
  end
374
+ rescue
375
+ self::Invalid.new(object, usage, position)
386
376
  end
387
377
 
388
378
  # @endgroup
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module ThirtyFifty