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 FortyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
 
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -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,
@@ -203,12 +204,7 @@ module Stupidedi
203
204
  def coerce(other)
204
205
  # me, he = other.coerce(self)
205
206
  # me <OP> he
206
- if other.respond_to?(:to_date)
207
- return DateVal.value(other, usage, position), self
208
- else
209
- raise TypeError,
210
- "cannot coerce DateVal to #{other.class}"
211
- end
207
+ return DateVal.value(other, usage, position), self
212
208
  end
213
209
 
214
210
  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 FiftyTen
@@ -193,11 +195,8 @@ 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
-
201
200
  def initialize(value, usage, position)
202
201
  @value = value
203
202
  super(usage, position)
@@ -214,12 +213,7 @@ module Stupidedi
214
213
  def coerce(other)
215
214
  # self', other' = other.coerce(self)
216
215
  # self' * other'
217
- if other.respond_to?(:to_d)
218
- return copy(:value => other.to_d), self
219
- else
220
- raise TypeError,
221
- "cannot coerce FixnumVal to #{other.class}"
222
- end
216
+ return copy(:value => other.to_d), self
223
217
  end
224
218
 
225
219
  def valid?
@@ -296,13 +290,11 @@ module Stupidedi
296
290
  def value(object, usage, position)
297
291
  if object.blank?
298
292
  self::Empty.new(usage, position)
299
- elsif object.respond_to?(:to_d)
293
+ else
300
294
  # The number of fractional digits is implied by usage.precision
301
295
  factor = 10 ** usage.definition.precision
302
296
 
303
297
  self::NonEmpty.new(object.to_d / factor, usage, position)
304
- else
305
- self::Invalid.new(object, usage, position)
306
298
  end
307
299
  rescue ArgumentError
308
300
  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 FiftyTen
@@ -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 FiftyTen
@@ -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,
@@ -275,12 +270,7 @@ module Stupidedi
275
270
  def coerce(other)
276
271
  # me, he = other.coerce(self)
277
272
  # me <OP> he
278
- if other.respond_to?(:to_str)
279
- return copy(:value => other.to_str), self
280
- else
281
- raise TypeError,
282
- "cannot coerce IdentifierVal to #{other.class}"
283
- end
273
+ return copy(:value => other.to_str), self
284
274
  end
285
275
 
286
276
  def valid?
@@ -346,10 +336,8 @@ module Stupidedi
346
336
  def value(object, usage, position)
347
337
  if object.blank?
348
338
  self::Empty.new(usage, position)
349
- elsif object.respond_to?(:to_s)
350
- self::NonEmpty.new(object.to_s.rstrip, usage, position)
351
339
  else
352
- self::Invalid.new(object, usage, position)
340
+ self::NonEmpty.new(object.to_s.rstrip, usage, position)
353
341
  end
354
342
  rescue
355
343
  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 FiftyTen
@@ -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 FiftyTen
@@ -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 FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen
@@ -1,4 +1,6 @@
1
1
  module Stupidedi
2
+ using Refinements
3
+
2
4
  module Versions
3
5
  module FunctionalGroups
4
6
  module FiftyTen