backports 3.0.3 → 3.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 (487) hide show
  1. data/.gitignore +1 -1
  2. data/.gitmodules +3 -0
  3. data/.travis.yml +11 -2
  4. data/CHANGELOG.rdoc +6 -0
  5. data/Gemfile +20 -0
  6. data/Gemfile.lock +24 -0
  7. data/README.rdoc +39 -11
  8. data/Rakefile +98 -1
  9. data/default.mspec +9 -0
  10. data/lib/backports.rb +4 -4
  11. data/lib/backports/1.8.7.rb +2 -3
  12. data/lib/backports/1.8.7/argf.rb +2 -43
  13. data/lib/backports/1.8.7/argf/bytes.rb +1 -0
  14. data/lib/backports/1.8.7/argf/chars.rb +1 -0
  15. data/lib/backports/1.8.7/argf/each.rb +3 -0
  16. data/lib/backports/1.8.7/argf/each_byte.rb +9 -0
  17. data/lib/backports/1.8.7/argf/each_char.rb +35 -0
  18. data/lib/backports/1.8.7/argf/each_line.rb +3 -0
  19. data/lib/backports/1.8.7/argf/getbyte.rb +5 -0
  20. data/lib/backports/1.8.7/argf/lines.rb +5 -0
  21. data/lib/backports/1.8.7/argf/readbyte.rb +5 -0
  22. data/lib/backports/1.8.7/array.rb +2 -207
  23. data/lib/backports/1.8.7/array/collect.rb +3 -0
  24. data/lib/backports/1.8.7/array/combination.rb +24 -0
  25. data/lib/backports/1.8.7/array/cycle.rb +16 -0
  26. data/lib/backports/1.8.7/array/delete_if.rb +3 -0
  27. data/lib/backports/1.8.7/array/each.rb +3 -0
  28. data/lib/backports/1.8.7/array/each_index.rb +3 -0
  29. data/lib/backports/1.8.7/array/find_index.rb +1 -0
  30. data/lib/backports/1.8.7/array/flatten.rb +47 -0
  31. data/lib/backports/1.8.7/array/index.rb +15 -0
  32. data/lib/backports/1.8.7/array/map.rb +3 -0
  33. data/lib/backports/1.8.7/array/permutation.rb +30 -0
  34. data/lib/backports/1.8.7/array/pop.rb +15 -0
  35. data/lib/backports/1.8.7/array/product.rb +32 -0
  36. data/lib/backports/1.8.7/array/reject.rb +3 -0
  37. data/lib/backports/1.8.7/array/reverse_each.rb +3 -0
  38. data/lib/backports/1.8.7/array/rindex.rb +15 -0
  39. data/lib/backports/1.8.7/array/select.rb +3 -0
  40. data/lib/backports/1.8.7/array/shift.rb +13 -0
  41. data/lib/backports/1.8.7/array/shuffle.rb +17 -0
  42. data/lib/backports/1.8.7/binding.rb +3 -6
  43. data/lib/backports/1.8.7/binding/eval.rb +7 -0
  44. data/lib/backports/1.8.7/dir.rb +2 -57
  45. data/lib/backports/1.8.7/dir/each.rb +7 -0
  46. data/lib/backports/1.8.7/dir/foreach.rb +9 -0
  47. data/lib/backports/1.8.7/dir/mktmpdir.rb +44 -0
  48. data/lib/backports/1.8.7/enumerable.rb +2 -240
  49. data/lib/backports/1.8.7/enumerable/count.rb +17 -0
  50. data/lib/backports/1.8.7/enumerable/cycle.rb +24 -0
  51. data/lib/backports/1.8.7/enumerable/detect.rb +3 -0
  52. data/lib/backports/1.8.7/enumerable/drop.rb +13 -0
  53. data/lib/backports/1.8.7/enumerable/drop_while.rb +16 -0
  54. data/lib/backports/1.8.7/enumerable/each_cons.rb +4 -0
  55. data/lib/backports/1.8.7/enumerable/each_slice.rb +4 -0
  56. data/lib/backports/1.8.7/enumerable/each_with_index.rb +3 -0
  57. data/lib/backports/1.8.7/enumerable/entries.rb +11 -0
  58. data/lib/backports/1.8.7/enumerable/find.rb +3 -0
  59. data/lib/backports/1.8.7/enumerable/find_all.rb +3 -0
  60. data/lib/backports/1.8.7/enumerable/find_index.rb +21 -0
  61. data/lib/backports/1.8.7/enumerable/first.rb +21 -0
  62. data/lib/backports/1.8.7/enumerable/group_by.rb +14 -0
  63. data/lib/backports/1.8.7/enumerable/inject.rb +14 -0
  64. data/lib/backports/1.8.7/enumerable/max_by.rb +16 -0
  65. data/lib/backports/1.8.7/enumerable/min_by.rb +16 -0
  66. data/lib/backports/1.8.7/enumerable/minmax.rb +21 -0
  67. data/lib/backports/1.8.7/enumerable/minmax_by.rb +19 -0
  68. data/lib/backports/1.8.7/enumerable/none.rb +7 -0
  69. data/lib/backports/1.8.7/enumerable/one.rb +23 -0
  70. data/lib/backports/1.8.7/enumerable/partition.rb +3 -0
  71. data/lib/backports/1.8.7/enumerable/reduce.rb +1 -0
  72. data/lib/backports/1.8.7/enumerable/reject.rb +3 -0
  73. data/lib/backports/1.8.7/enumerable/reverse_each.rb +12 -0
  74. data/lib/backports/1.8.7/enumerable/select.rb +3 -0
  75. data/lib/backports/1.8.7/enumerable/sort_by.rb +3 -0
  76. data/lib/backports/1.8.7/enumerable/take.rb +9 -0
  77. data/lib/backports/1.8.7/enumerable/take_while.rb +14 -0
  78. data/lib/backports/1.8.7/enumerable/to_a.rb +12 -0
  79. data/lib/backports/1.8.7/enumerator.rb +2 -31
  80. data/lib/backports/1.8.7/enumerator/each.rb +6 -0
  81. data/lib/backports/1.8.7/enumerator/next.rb +15 -0
  82. data/lib/backports/1.8.7/enumerator/rewind.rb +13 -0
  83. data/lib/backports/1.8.7/enumerator/with_index.rb +14 -0
  84. data/lib/backports/1.8.7/env.rb +3 -3
  85. data/lib/backports/1.8.7/env/delete_if.rb +3 -0
  86. data/lib/backports/1.8.7/env/each.rb +3 -0
  87. data/lib/backports/1.8.7/env/each_key.rb +3 -0
  88. data/lib/backports/1.8.7/env/each_pair.rb +3 -0
  89. data/lib/backports/1.8.7/env/each_value.rb +3 -0
  90. data/lib/backports/1.8.7/env/reject.rb +4 -0
  91. data/lib/backports/1.8.7/env/select.rb +3 -0
  92. data/lib/backports/1.8.7/fixnum.rb +2 -10
  93. data/lib/backports/1.8.7/fixnum/div.rb +7 -0
  94. data/lib/backports/1.8.7/fixnum/fdiv.rb +7 -0
  95. data/lib/backports/1.8.7/float.rb +3 -4
  96. data/lib/backports/1.8.7/float/fdiv.rb +3 -0
  97. data/lib/backports/1.8.7/gc.rb +2 -10
  98. data/lib/backports/1.8.7/gc/stress.rb +9 -0
  99. data/lib/backports/1.8.7/hash.rb +2 -41
  100. data/lib/backports/1.8.7/hash/constructor.rb +25 -0
  101. data/lib/backports/1.8.7/hash/delete_if.rb +3 -0
  102. data/lib/backports/1.8.7/hash/each.rb +3 -0
  103. data/lib/backports/1.8.7/hash/each_key.rb +3 -0
  104. data/lib/backports/1.8.7/hash/each_pair.rb +3 -0
  105. data/lib/backports/1.8.7/hash/each_value.rb +3 -0
  106. data/lib/backports/1.8.7/hash/eql.rb +1 -0
  107. data/lib/backports/1.8.7/hash/hash.rb +17 -0
  108. data/lib/backports/1.8.7/hash/key.rb +3 -0
  109. data/lib/backports/1.8.7/hash/reject.rb +3 -0
  110. data/lib/backports/1.8.7/hash/select.rb +3 -0
  111. data/lib/backports/1.8.7/integer.rb +2 -23
  112. data/lib/backports/1.8.7/integer/downto.rb +3 -0
  113. data/lib/backports/1.8.7/integer/even.rb +7 -0
  114. data/lib/backports/1.8.7/integer/odd.rb +7 -0
  115. data/lib/backports/1.8.7/integer/ord.rb +7 -0
  116. data/lib/backports/1.8.7/integer/pred.rb +7 -0
  117. data/lib/backports/1.8.7/integer/times.rb +3 -0
  118. data/lib/backports/1.8.7/integer/upto.rb +3 -0
  119. data/lib/backports/1.8.7/io.rb +2 -42
  120. data/lib/backports/1.8.7/io/bytes.rb +1 -0
  121. data/lib/backports/1.8.7/io/chars.rb +1 -0
  122. data/lib/backports/1.8.7/io/each.rb +3 -0
  123. data/lib/backports/1.8.7/io/each_byte.rb +6 -0
  124. data/lib/backports/1.8.7/io/each_char.rb +34 -0
  125. data/lib/backports/1.8.7/io/each_line.rb +6 -0
  126. data/lib/backports/1.8.7/io/foreach.rb +7 -0
  127. data/lib/backports/1.8.7/io/getbyte.rb +3 -0
  128. data/lib/backports/1.8.7/io/lines.rb +1 -0
  129. data/lib/backports/1.8.7/io/readbyte.rb +3 -0
  130. data/lib/backports/1.8.7/kernel.rb +2 -35
  131. data/lib/backports/1.8.7/kernel/__method__.rb +8 -0
  132. data/lib/backports/1.8.7/kernel/instance_exec.rb +10 -0
  133. data/lib/backports/1.8.7/kernel/tap.rb +8 -0
  134. data/lib/backports/1.8.7/method.rb +2 -46
  135. data/lib/backports/1.8.7/method/name.rb +49 -0
  136. data/lib/backports/1.8.7/module.rb +3 -7
  137. data/lib/backports/1.8.7/module/class_exec.rb +1 -0
  138. data/lib/backports/1.8.7/module/module_exec.rb +11 -0
  139. data/lib/backports/1.8.7/numeric.rb +3 -3
  140. data/lib/backports/1.8.7/numeric/step.rb +3 -0
  141. data/lib/backports/1.8.7/object_space.rb +3 -5
  142. data/lib/backports/1.8.7/object_space/each_object.rb +5 -0
  143. data/lib/backports/1.8.7/proc.rb +3 -4
  144. data/lib/backports/1.8.7/proc/yield.rb +3 -0
  145. data/lib/backports/1.8.7/process.rb +3 -5
  146. data/lib/backports/1.8.7/process/exec.rb +3 -0
  147. data/lib/backports/1.8.7/range.rb +3 -4
  148. data/lib/backports/1.8.7/range/each.rb +3 -0
  149. data/lib/backports/1.8.7/range/step.rb +3 -0
  150. data/lib/backports/1.8.7/regexp.rb +3 -12
  151. data/lib/backports/1.8.7/regexp/union.rb +11 -0
  152. data/lib/backports/1.8.7/stop_iteration.rb +14 -0
  153. data/lib/backports/1.8.7/string.rb +2 -91
  154. data/lib/backports/1.8.7/string/bytes.rb +1 -0
  155. data/lib/backports/1.8.7/string/bytesize.rb +3 -0
  156. data/lib/backports/1.8.7/string/each.rb +3 -0
  157. data/lib/backports/1.8.7/string/each_byte.rb +5 -0
  158. data/lib/backports/1.8.7/string/each_char.rb +13 -0
  159. data/lib/backports/1.8.7/string/each_line.rb +5 -0
  160. data/lib/backports/1.8.7/string/end_with.rb +12 -0
  161. data/lib/backports/1.8.7/string/lines.rb +1 -0
  162. data/lib/backports/1.8.7/string/partition.rb +20 -0
  163. data/lib/backports/1.8.7/string/rpartition.rb +19 -0
  164. data/lib/backports/1.8.7/string/start_with.rb +12 -0
  165. data/lib/backports/1.8.7/string/upto.rb +15 -0
  166. data/lib/backports/1.8.7/struct.rb +3 -3
  167. data/lib/backports/1.8.7/struct/each.rb +3 -0
  168. data/lib/backports/1.8.7/struct/each_pair.rb +3 -0
  169. data/lib/backports/1.8.7/symbol.rb +3 -6
  170. data/lib/backports/1.8.7/symbol/to_proc.rb +8 -0
  171. data/lib/backports/1.8.8.rb +1 -3
  172. data/lib/backports/1.8.rb +1 -3
  173. data/lib/backports/1.9.1.rb +2 -4
  174. data/lib/backports/1.9.1/array.rb +3 -8
  175. data/lib/backports/1.9.1/array/sample.rb +19 -0
  176. data/lib/backports/1.9.1/array/try_convert.rb +7 -0
  177. data/lib/backports/1.9.1/dir.rb +3 -3
  178. data/lib/backports/1.9.1/dir/to_path.rb +3 -0
  179. data/lib/backports/1.9.1/enumerable.rb +2 -18
  180. data/lib/backports/1.9.1/enumerable/each_with_index.rb +14 -0
  181. data/lib/backports/1.9.1/enumerable/each_with_object.rb +9 -0
  182. data/lib/backports/1.9.1/enumerator.rb +2 -40
  183. data/lib/backports/1.9.1/enumerator/new.rb +40 -0
  184. data/lib/backports/1.9.1/enumerator/with_object.rb +6 -0
  185. data/lib/backports/1.9.1/env.rb +3 -3
  186. data/lib/backports/1.9.1/env/key.rb +5 -0
  187. data/lib/backports/1.9.1/file.rb +2 -43
  188. data/lib/backports/1.9.1/file/atime.rb +5 -0
  189. data/lib/backports/1.9.1/file/basename.rb +5 -0
  190. data/lib/backports/1.9.1/file/binary.rb +6 -0
  191. data/lib/backports/1.9.1/file/blockdev.rb +5 -0
  192. data/lib/backports/1.9.1/file/chardev.rb +5 -0
  193. data/lib/backports/1.9.1/file/chmod.rb +5 -0
  194. data/lib/backports/1.9.1/file/chown.rb +5 -0
  195. data/lib/backports/1.9.1/file/ctime.rb +5 -0
  196. data/lib/backports/1.9.1/file/delete.rb +5 -0
  197. data/lib/backports/1.9.1/file/directory.rb +5 -0
  198. data/lib/backports/1.9.1/file/dirname.rb +5 -0
  199. data/lib/backports/1.9.1/file/executable.rb +5 -0
  200. data/lib/backports/1.9.1/file/executable_real.rb +5 -0
  201. data/lib/backports/1.9.1/file/exist.rb +5 -0
  202. data/lib/backports/1.9.1/file/exists.rb +5 -0
  203. data/lib/backports/1.9.1/file/expand_path.rb +14 -0
  204. data/lib/backports/1.9.1/file/extname.rb +5 -0
  205. data/lib/backports/1.9.1/file/file.rb +5 -0
  206. data/lib/backports/1.9.1/file/ftype.rb +5 -0
  207. data/lib/backports/1.9.1/file/grpowned.rb +5 -0
  208. data/lib/backports/1.9.1/file/join.rb +5 -0
  209. data/lib/backports/1.9.1/file/lchmod.rb +5 -0
  210. data/lib/backports/1.9.1/file/lchown.rb +5 -0
  211. data/lib/backports/1.9.1/file/link.rb +5 -0
  212. data/lib/backports/1.9.1/file/lstat.rb +5 -0
  213. data/lib/backports/1.9.1/file/mtime.rb +5 -0
  214. data/lib/backports/1.9.1/file/new.rb +5 -0
  215. data/lib/backports/1.9.1/file/open.rb +23 -0
  216. data/lib/backports/1.9.1/file/owned.rb +5 -0
  217. data/lib/backports/1.9.1/file/pipe.rb +5 -0
  218. data/lib/backports/1.9.1/file/readable.rb +5 -0
  219. data/lib/backports/1.9.1/file/readable_real.rb +5 -0
  220. data/lib/backports/1.9.1/file/readlink.rb +5 -0
  221. data/lib/backports/1.9.1/file/rename.rb +5 -0
  222. data/lib/backports/1.9.1/file/setgid.rb +5 -0
  223. data/lib/backports/1.9.1/file/setuid.rb +5 -0
  224. data/lib/backports/1.9.1/file/size.rb +14 -0
  225. data/lib/backports/1.9.1/file/socket.rb +5 -0
  226. data/lib/backports/1.9.1/file/split.rb +5 -0
  227. data/lib/backports/1.9.1/file/stat.rb +5 -0
  228. data/lib/backports/1.9.1/file/sticky.rb +5 -0
  229. data/lib/backports/1.9.1/file/symlink.rb +6 -0
  230. data/lib/backports/1.9.1/file/to_path.rb +3 -0
  231. data/lib/backports/1.9.1/file/truncate.rb +5 -0
  232. data/lib/backports/1.9.1/file/unlink.rb +5 -0
  233. data/lib/backports/1.9.1/file/writable.rb +5 -0
  234. data/lib/backports/1.9.1/file/writable_real.rb +5 -0
  235. data/lib/backports/1.9.1/file/zero.rb +5 -0
  236. data/lib/backports/1.9.1/float.rb +3 -19
  237. data/lib/backports/1.9.1/float/round.rb +21 -0
  238. data/lib/backports/1.9.1/hash.rb +2 -35
  239. data/lib/backports/1.9.1/hash/assoc.rb +12 -0
  240. data/lib/backports/1.9.1/hash/default_proc.rb +14 -0
  241. data/lib/backports/1.9.1/hash/rassoc.rb +9 -0
  242. data/lib/backports/1.9.1/hash/try_convert.rb +7 -0
  243. data/lib/backports/1.9.1/integer.rb +2 -21
  244. data/lib/backports/1.9.1/integer/magnitude.rb +3 -0
  245. data/lib/backports/1.9.1/integer/round.rb +24 -0
  246. data/lib/backports/1.9.1/io.rb +2 -33
  247. data/lib/backports/1.9.1/io/binread.rb +10 -0
  248. data/lib/backports/1.9.1/io/open.rb +21 -0
  249. data/lib/backports/1.9.1/io/try_convert.rb +7 -0
  250. data/lib/backports/1.9.1/io/ungetbyte.rb +3 -0
  251. data/lib/backports/1.9.1/kernel.rb +2 -39
  252. data/lib/backports/1.9.1/kernel/__callee__.rb +7 -0
  253. data/lib/backports/1.9.1/kernel/define_singleton_method.rb +9 -0
  254. data/lib/backports/1.9.1/kernel/public_method.rb +11 -0
  255. data/lib/backports/1.9.1/kernel/public_send.rb +13 -0
  256. data/lib/backports/1.9.1/kernel/require_relative.rb +14 -0
  257. data/lib/backports/1.9.1/math.rb +2 -24
  258. data/lib/backports/1.9.1/math/log.rb +22 -0
  259. data/lib/backports/1.9.1/math/log2.rb +5 -0
  260. data/lib/backports/1.9.1/numeric.rb +3 -9
  261. data/lib/backports/1.9.1/numeric/round.rb +11 -0
  262. data/lib/backports/1.9.1/proc.rb +2 -53
  263. data/lib/backports/1.9.1/proc/case_compare.rb +6 -0
  264. data/lib/backports/1.9.1/proc/curry.rb +24 -0
  265. data/lib/backports/1.9.1/proc/lambda.rb +40 -0
  266. data/lib/backports/1.9.1/range.rb +3 -3
  267. data/lib/backports/1.9.1/range/cover.rb +3 -0
  268. data/lib/backports/1.9.1/regexp.rb +3 -8
  269. data/lib/backports/1.9.1/regexp/try_convert.rb +7 -0
  270. data/lib/backports/1.9.1/stdlib.rb +1 -1
  271. data/lib/backports/1.9.1/string.rb +2 -44
  272. data/lib/backports/1.9.1/string/ascii_only.rb +7 -0
  273. data/lib/backports/1.9.1/string/chr.rb +7 -0
  274. data/lib/backports/1.9.1/string/clear.rb +8 -0
  275. data/lib/backports/1.9.1/string/codepoints.rb +8 -0
  276. data/lib/backports/1.9.1/string/each_codepoint.rb +3 -0
  277. data/lib/backports/1.9.1/string/getbyte.rb +3 -0
  278. data/lib/backports/1.9.1/string/ord.rb +7 -0
  279. data/lib/backports/1.9.1/string/setbyte.rb +3 -0
  280. data/lib/backports/1.9.1/string/try_convert.rb +7 -0
  281. data/lib/backports/1.9.1/symbol.rb +2 -31
  282. data/lib/backports/1.9.1/symbol/capitalize.rb +7 -0
  283. data/lib/backports/1.9.1/symbol/casecmp.rb +8 -0
  284. data/lib/backports/1.9.1/symbol/comparable.rb +7 -0
  285. data/lib/backports/1.9.1/symbol/comparison.rb +8 -0
  286. data/lib/backports/1.9.1/symbol/downcase.rb +7 -0
  287. data/lib/backports/1.9.1/symbol/element_reference.rb +7 -0
  288. data/lib/backports/1.9.1/symbol/empty.rb +7 -0
  289. data/lib/backports/1.9.1/symbol/length.rb +7 -0
  290. data/lib/backports/1.9.1/symbol/match.rb +9 -0
  291. data/lib/backports/1.9.1/symbol/next.rb +1 -0
  292. data/lib/backports/1.9.1/symbol/size.rb +7 -0
  293. data/lib/backports/1.9.1/symbol/succ.rb +8 -0
  294. data/lib/backports/1.9.1/symbol/swapcase.rb +7 -0
  295. data/lib/backports/1.9.1/symbol/upcase.rb +7 -0
  296. data/lib/backports/1.9.2.rb +2 -4
  297. data/lib/backports/1.9.2/array.rb +2 -109
  298. data/lib/backports/1.9.2/array/keep_if.rb +8 -0
  299. data/lib/backports/1.9.2/array/product.rb +26 -0
  300. data/lib/backports/1.9.2/array/repeated_combination.rb +25 -0
  301. data/lib/backports/1.9.2/array/repeated_permutation.rb +26 -0
  302. data/lib/backports/1.9.2/array/rotate.rb +17 -0
  303. data/lib/backports/1.9.2/array/select.rb +8 -0
  304. data/lib/backports/1.9.2/array/sort_by.rb +9 -0
  305. data/lib/backports/1.9.2/array/uniq.rb +29 -0
  306. data/lib/backports/1.9.2/complex.rb +3 -6
  307. data/lib/backports/1.9.2/complex/to_r.rb +10 -0
  308. data/lib/backports/1.9.2/dir.rb +3 -5
  309. data/lib/backports/1.9.2/dir/home.rb +5 -0
  310. data/lib/backports/1.9.2/enumerable.rb +2 -73
  311. data/lib/backports/1.9.2/enumerable/chunk.rb +39 -0
  312. data/lib/backports/1.9.2/enumerable/collect_concat.rb +1 -0
  313. data/lib/backports/1.9.2/enumerable/each_entry.rb +11 -0
  314. data/lib/backports/1.9.2/enumerable/flat_map.rb +11 -0
  315. data/lib/backports/1.9.2/enumerable/slice_before.rb +30 -0
  316. data/lib/backports/1.9.2/float.rb +3 -4
  317. data/lib/backports/1.9.2/float/infinity.rb +3 -0
  318. data/lib/backports/1.9.2/float/nan.rb +3 -0
  319. data/lib/backports/1.9.2/hash.rb +2 -10
  320. data/lib/backports/1.9.2/hash/keep_if.rb +8 -0
  321. data/lib/backports/1.9.2/hash/select.rb +9 -0
  322. data/lib/backports/1.9.2/kernel.rb +3 -5
  323. data/lib/backports/1.9.2/kernel/singleton_class.rb +7 -0
  324. data/lib/backports/1.9.2/random.rb +1 -1
  325. data/lib/backports/1.9.2/stdlib.rb +1 -1
  326. data/lib/backports/1.9.2/stdlib/matrix.rb +9 -8
  327. data/lib/backports/1.9.2/stdlib/set.rb +1 -1
  328. data/lib/backports/1.9.3.rb +2 -4
  329. data/lib/backports/1.9.3/file.rb +3 -14
  330. data/lib/backports/1.9.3/file/null.rb +16 -0
  331. data/lib/backports/1.9.3/io.rb +2 -31
  332. data/lib/backports/1.9.3/io/advise.rb +24 -0
  333. data/lib/backports/1.9.3/io/binwrite.rb +7 -0
  334. data/lib/backports/1.9.3/io/write.rb +7 -0
  335. data/lib/backports/1.9.3/string.rb +2 -38
  336. data/lib/backports/1.9.3/string/byteslice.rb +36 -0
  337. data/lib/backports/1.9.3/string/prepend.rb +10 -0
  338. data/lib/backports/1.9.rb +1 -3
  339. data/lib/backports/2.0.0.rb +2 -4
  340. data/lib/backports/2.0.0/array.rb +2 -29
  341. data/lib/backports/2.0.0/array/bsearch.rb +32 -0
  342. data/lib/backports/2.0.0/enumerable.rb +2 -11
  343. data/lib/backports/2.0.0/enumerable/lazy.rb +216 -0
  344. data/lib/backports/2.0.0/enumerator.rb +3 -0
  345. data/lib/backports/2.0.0/enumerator/lazy.rb +1 -203
  346. data/lib/backports/2.0.0/env.rb +3 -0
  347. data/lib/backports/2.0.0/env/to_h.rb +5 -0
  348. data/lib/backports/2.0.0/hash.rb +2 -18
  349. data/lib/backports/2.0.0/hash/default_proc.rb +16 -0
  350. data/lib/backports/2.0.0/hash/to_h.rb +7 -0
  351. data/lib/backports/2.0.0/nil.rb +3 -0
  352. data/lib/backports/2.0.0/nil/to_h.rb +7 -0
  353. data/lib/backports/2.0.0/range.rb +2 -48
  354. data/lib/backports/2.0.0/range/bsearch.rb +49 -0
  355. data/lib/backports/2.0.0/stdlib/abbrev.rb +1 -0
  356. data/lib/backports/2.0.0/stdlib/fake_stdlib_lib.rb +1 -0
  357. data/lib/backports/2.0.0/stdlib/ostruct.rb +1 -1
  358. data/lib/backports/2.0.0/struct.rb +3 -7
  359. data/lib/backports/2.0.0/struct/to_h.rb +9 -0
  360. data/lib/backports/2.0.rb +1 -3
  361. data/lib/backports/basic_object.rb +29 -29
  362. data/lib/backports/{1.9.2 → extra}/random/MT19937.rb +2 -2
  363. data/lib/backports/{1.9.2 → extra}/random/bits_and_bytes.rb +1 -1
  364. data/lib/backports/{1.9.2 → extra}/random/implementation.rb +1 -1
  365. data/lib/backports/extra/random/load.rb +17 -0
  366. data/lib/backports/force/array_map.rb +1 -1
  367. data/lib/backports/force/enumerable_map.rb +1 -1
  368. data/lib/backports/force/hash_select.rb +1 -1
  369. data/lib/backports/force/string_size.rb +1 -1
  370. data/lib/backports/rails.rb +2 -2
  371. data/lib/backports/rails/enumerable.rb +1 -1
  372. data/lib/backports/rails/hash.rb +1 -1
  373. data/lib/backports/rails/kernel.rb +1 -1
  374. data/lib/backports/rails/module.rb +1 -1
  375. data/lib/backports/rails/string.rb +6 -6
  376. data/lib/backports/tools.rb +74 -64
  377. data/lib/backports/version.rb +1 -1
  378. data/set_version/1.8.7.rb +1 -0
  379. data/set_version/1.9.1.rb +1 -0
  380. data/set_version/1.9.2.rb +1 -0
  381. data/set_version/1.9.3.rb +1 -0
  382. data/set_version/2.0.0.rb +1 -0
  383. data/set_version/setter.rb +14 -0
  384. data/tags/1.8.6/core/array/rotate_spec.rb +2 -0
  385. data/tags/1.8.6/core/array/uniq_spec.rb +3 -0
  386. data/tags/1.8.6/core/complex/to_r_spec.rb +3 -0
  387. data/tags/1.8.6/core/enumerable/each_entry_spec.rb +1 -0
  388. data/tags/1.8.6/core/enumerator/next_spec.rb +1 -0
  389. data/tags/1.8.6/core/env/to_h_spec.rb +2 -0
  390. data/tags/1.8.6/core/file/join_spec.rb +3 -0
  391. data/tags/1.8.6/core/file/lchmod_spec.rb +2 -0
  392. data/tags/1.8.6/core/file/new_spec.rb +2 -0
  393. data/tags/1.8.6/core/file/open_spec.rb +10 -0
  394. data/tags/1.8.6/core/file/to_path_spec.rb +1 -0
  395. data/tags/1.8.6/core/fixnum/fdiv_spec.rb +1 -0
  396. data/tags/1.8.6/core/gc/stress_spec.rb +2 -0
  397. data/tags/1.8.6/core/hash/assoc_spec.rb +1 -0
  398. data/tags/1.8.6/core/hash/default_proc_spec.rb +2 -0
  399. data/tags/1.8.6/core/hash/eql_spec.rb +3 -0
  400. data/tags/1.8.6/core/hash/hash_spec.rb +3 -0
  401. data/tags/1.8.6/core/hash/keep_if_spec.rb +1 -0
  402. data/tags/1.8.6/core/hash/select_spec.rb +1 -0
  403. data/tags/1.8.6/core/integer/round_spec.rb +1 -0
  404. data/tags/1.8.6/core/io/binread_spec.rb +7 -0
  405. data/tags/1.8.6/core/io/chars_spec.rb +1 -0
  406. data/tags/1.8.6/core/io/each_char_spec.rb +1 -0
  407. data/tags/1.8.6/core/io/lines_spec.rb +1 -0
  408. data/tags/1.8.6/core/io/open_spec.rb +24 -0
  409. data/tags/1.8.6/core/io/ungetbyte_spec.rb +4 -0
  410. data/tags/1.8.6/core/io/write_spec.rb +3 -0
  411. data/tags/1.8.6/core/kernel/__callee___spec.rb +5 -0
  412. data/tags/1.8.6/core/kernel/__method___spec.rb +1 -0
  413. data/tags/1.8.6/core/kernel/define_singleton_method_spec.rb +2 -0
  414. data/tags/1.8.6/core/kernel/public_method_spec.rb +2 -0
  415. data/tags/1.8.6/core/math/log2_spec.rb +4 -0
  416. data/tags/1.8.6/core/math/log_spec.rb +3 -0
  417. data/tags/1.8.6/core/module/class_exec_spec.rb +2 -0
  418. data/tags/1.8.6/core/module/module_exec_spec.rb +2 -0
  419. data/tags/1.8.6/core/numeric/step_spec.rb +12 -0
  420. data/tags/1.8.6/core/proc/curry_spec.rb +4 -0
  421. data/tags/1.8.6/core/range/step_spec.rb +12 -0
  422. data/tags/1.8.6/core/string/getbyte_spec.rb +6 -0
  423. data/tags/1.8.6/core/string/partition_spec.rb +1 -0
  424. data/tags/1.8.6/core/string/prepend_spec.rb +1 -0
  425. data/tags/1.8.6/core/string/rpartition_spec.rb +1 -0
  426. data/tags/1.8.6/core/string/setbyte_spec.rb +5 -0
  427. data/tags/1.8.6/core/string/upto_spec.rb +1 -0
  428. data/tags/1.8.6/core/symbol/capitalize_spec.rb +3 -0
  429. data/tags/1.8.6/core/symbol/comparison_spec.rb +1 -0
  430. data/tags/1.8.6/core/symbol/downcase_spec.rb +2 -0
  431. data/tags/1.8.6/core/symbol/element_reference_spec.rb +2 -0
  432. data/tags/1.8.6/core/symbol/empty_spec.rb +1 -0
  433. data/tags/1.8.6/core/symbol/match_spec.rb +2 -0
  434. data/tags/1.8.6/core/symbol/swapcase_spec.rb +2 -0
  435. data/tags/1.8.6/core/symbol/upcase_spec.rb +1 -0
  436. data/tags/1.8.7/core/array/rotate_spec.rb +2 -0
  437. data/tags/1.8.7/core/array/uniq_spec.rb +3 -0
  438. data/tags/1.8.7/core/complex/to_r_spec.rb +3 -0
  439. data/tags/1.8.7/core/env/to_h_spec.rb +2 -0
  440. data/tags/1.8.7/core/file/lchmod_spec.rb +2 -0
  441. data/tags/1.8.7/core/file/new_spec.rb +1 -0
  442. data/tags/1.8.7/core/file/open_spec.rb +1 -0
  443. data/tags/1.8.7/core/file/readlink_spec.rb +6 -0
  444. data/tags/1.8.7/core/file/to_path_spec.rb +1 -0
  445. data/tags/1.8.7/core/hash/assoc_spec.rb +1 -0
  446. data/tags/1.8.7/core/hash/default_proc_spec.rb +2 -0
  447. data/tags/1.8.7/core/hash/keep_if_spec.rb +1 -0
  448. data/tags/1.8.7/core/hash/rassoc_spec.rb +1 -0
  449. data/tags/1.8.7/core/hash/select_spec.rb +1 -0
  450. data/tags/1.8.7/core/integer/round_spec.rb +1 -0
  451. data/tags/1.8.7/core/io/binread_spec.rb +7 -0
  452. data/tags/1.8.7/core/io/open_spec.rb +25 -0
  453. data/tags/1.8.7/core/io/ungetbyte_spec.rb +4 -0
  454. data/tags/1.8.7/core/io/write_spec.rb +3 -0
  455. data/tags/1.8.7/core/kernel/__callee___spec.rb +5 -0
  456. data/tags/1.8.7/core/kernel/define_singleton_method_spec.rb +2 -0
  457. data/tags/1.8.7/core/kernel/public_method_spec.rb +1 -0
  458. data/tags/1.8.7/core/math/log2_spec.rb +4 -0
  459. data/tags/1.8.7/core/math/log_spec.rb +3 -0
  460. data/tags/1.8.7/core/proc/curry_spec.rb +3 -0
  461. data/tags/1.8.7/core/string/getbyte_spec.rb +5 -0
  462. data/tags/1.8.7/core/string/prepend_spec.rb +1 -0
  463. data/tags/1.8.7/core/string/setbyte_spec.rb +5 -0
  464. data/tags/1.8.7/core/symbol/capitalize_spec.rb +3 -0
  465. data/tags/1.8.7/core/symbol/comparison_spec.rb +1 -0
  466. data/tags/1.8.7/core/symbol/downcase_spec.rb +2 -0
  467. data/tags/1.8.7/core/symbol/element_reference_spec.rb +2 -0
  468. data/tags/1.8.7/core/symbol/empty_spec.rb +1 -0
  469. data/tags/1.8.7/core/symbol/match_spec.rb +2 -0
  470. data/tags/1.8.7/core/symbol/swapcase_spec.rb +2 -0
  471. data/tags/1.8.7/core/symbol/upcase_spec.rb +1 -0
  472. data/tags/1.9.1/core/array/rotate_spec.rb +1 -0
  473. data/tags/1.9.1/core/env/to_h_spec.rb +2 -0
  474. data/tags/1.9.1/core/hash/default_proc_spec.rb +1 -0
  475. data/tags/1.9.1/core/io/write_spec.rb +2 -0
  476. data/tags/1.9.2/core/io/write_spec.rb +2 -0
  477. data/test/README +1 -1
  478. data/test/_backport_guards_test.rb +140 -0
  479. data/test/{test_lazy.rb → lazy_test.rb} +25 -20
  480. data/test/{test_socket_interaction.rb → socket_interaction_test.rb} +3 -3
  481. data/test/test_helper.rb +0 -4
  482. metadata +392 -16
  483. data/lib/backports/1.9.2/match_data.rb +0 -3
  484. data/lib/backports/1.9.2/random/load.rb +0 -16
  485. data/lib/backports/2.0.0/nil_class.rb +0 -5
  486. data/test/std_lib_loading_test.rb +0 -57
  487. data/test/test__me_first.rb +0 -51
@@ -0,0 +1,3 @@
1
+ require 'backports/tools'
2
+
3
+ Backports.require_relative_dir
@@ -1,203 +1 @@
1
- class Enumerator
2
- class Yielder
3
- # Current API for Lazy Enumerator does not provide an easy way
4
- # to handle internal state. We "cheat" and use yielder to hold it for us.
5
- # A new yielder is created when generating or after a `rewind`.
6
- # This way we avoid issues like http://bugs.ruby-lang.org/issues/7691
7
- # or http://bugs.ruby-lang.org/issues/7696
8
- attr_accessor :backports_memo
9
- end
10
-
11
- class Lazy < Enumerator
12
- @@done = :__backports_lazy_enumeration_done__ # used internally to bail out of an iteration
13
- @@lazy_with_no_block = Struct.new(:object, :method, :args) # used internally to create lazy without block
14
-
15
- def initialize(obj)
16
- if obj.is_a?(@@lazy_with_no_block)
17
- @inspect_info = obj
18
- return super(@receiver = obj.object, @method = obj.method || :each, * @args = obj.args)
19
- end
20
- raise ArgumentError, "must supply a block" unless block_given?
21
- @receiver = obj
22
- @method = caller[1][/`([^']*)'/, 1]
23
- super() do |yielder, *args|
24
- catch @@done do
25
- obj.each(*args) do |*x|
26
- yield yielder, *x
27
- end
28
- end
29
- end
30
- end
31
-
32
- alias_method :force, :to_a
33
-
34
- def lazy
35
- self
36
- end
37
-
38
- def to_enum(method = :each, *args)
39
- Lazy.new(@@lazy_with_no_block.new(self, method, args))
40
- end
41
- alias_method :enum_for, :to_enum
42
-
43
- def inspect
44
- suff = ''
45
- suff << ":#{@method}" unless @method == :each
46
- suff << "(#{@args.inspect[1...-1]})" if @args && !@args.empty?
47
- "#<#{self.class}: #{@receiver.inspect}#{suff}>"
48
- end
49
-
50
- {
51
- :slice_before => //,
52
- :with_index => [],
53
- :cycle => [],
54
- :each_with_object => 42,
55
- :each_slice => 42,
56
- :each_entry => [],
57
- :each_cons => 42,
58
- }.each do |method, args|
59
- unless [].lazy.send(method, *args).is_a?(Lazy) # Nothing to do if already backported, since it would use to_enum...
60
- module_eval <<-EOT, __FILE__, __LINE__ + 1
61
- def #{method}(*args) # def cycle(*args)
62
- return to_enum(:#{method}, *args) unless block_given? # return to_enum(:cycle, *args) unless block_given?
63
- super # super
64
- end # end
65
- EOT
66
- end
67
- end
68
-
69
- def chunk(*)
70
- super.lazy
71
- end unless [].lazy.chunk{}.is_a?(Lazy)
72
-
73
- def map
74
- raise ArgumentError, "tried to call lazy map without a block" unless block_given?
75
- Lazy.new(self) do |yielder, *values|
76
- yielder << yield(*values)
77
- end
78
- end
79
- alias_method :collect, :map
80
-
81
- def select
82
- raise ArgumentError, "tried to call lazy select without a block" unless block_given?
83
- Lazy.new(self) do |yielder, *values|
84
- values = values.first unless values.size > 1
85
- yielder.yield values if yield values
86
- end
87
- end
88
- alias_method :find_all, :select
89
-
90
- def reject
91
- raise ArgumentError, "tried to call lazy reject without a block" unless block_given?
92
- Lazy.new(self) do |yielder, *values|
93
- values = values.first unless values.size > 1
94
- yielder.yield(values) unless yield values
95
- end
96
- end
97
-
98
- def grep(pattern)
99
- if block_given?
100
- # Split for performance
101
- Lazy.new(self) do |yielder, *values|
102
- values = values.first unless values.size > 1
103
- yielder.yield(yield(values)) if pattern === values
104
- end
105
- else
106
- Lazy.new(self) do |yielder, *values|
107
- values = values.first unless values.size > 1
108
- yielder.yield(values) if pattern === values
109
- end
110
- end.__set_inspect([pattern])
111
- end
112
-
113
- def drop(n)
114
- n = Backports::coerce_to_int(n)
115
- Lazy.new(self) do |yielder, *values|
116
- data = yielder.backports_memo ||= {:remain => n}
117
- if data[:remain] > 0
118
- data[:remain] -= 1
119
- else
120
- yielder.yield(*values)
121
- end
122
- end.__set_inspect([n])
123
- end
124
-
125
- def drop_while
126
- raise ArgumentError, "tried to call lazy drop_while without a block" unless block_given?
127
- Lazy.new(self) do |yielder, *values|
128
- data = yielder.backports_memo ||= {:dropping => true}
129
- yielder.yield(*values) unless data[:dropping] &&= yield(*values)
130
- end
131
- end
132
-
133
- def take(n)
134
- n = Backports::coerce_to_int(n)
135
- raise ArgumentError, 'attempt to take negative size' if n < 0
136
- Lazy.new(n == 0 ? [] : self) do |yielder, *values|
137
- data = yielder.backports_memo ||= {:remain => n}
138
- yielder.yield(*values)
139
- throw @@done if (data[:remain] -= 1) == 0
140
- end.__set_inspect([n], self)
141
- end
142
-
143
- def take_while
144
- raise ArgumentError, "tried to call lazy take_while without a block" unless block_given?
145
- Lazy.new(self) do |yielder, *values|
146
- throw @@done unless yield(*values)
147
- yielder.yield(*values)
148
- end
149
- end
150
-
151
- def flat_map
152
- raise ArgumentError, "tried to call lazy flat_map without a block" unless block_given?
153
- Lazy.new(self) do |yielder, *values|
154
- result = yield(*values)
155
- ary = Backports.is_array?(result)
156
- if ary || (result.respond_to?(:each) && result.respond_to?(:force))
157
- (ary || result).each{|x| yielder << x }
158
- else
159
- yielder << result
160
- end
161
- end
162
- end
163
- alias_method :collect_concat, :flat_map
164
-
165
- def zip(*args)
166
- return super if block_given?
167
- arys = args.map{ |arg| Backports.is_array?(arg) }
168
- if arys.all?
169
- # Handle trivial case of multiple array arguments separately
170
- # by avoiding Enumerator#next for efficiency & compatibility
171
- Lazy.new(self) do |yielder, *values|
172
- data = yielder.backports_memo ||= {:iter => 0}
173
- values = values.first unless values.size > 1
174
- yielder << arys.map{|ary| ary[data[:iter]]}.unshift(values)
175
- data[:iter] += 1
176
- end
177
- else
178
- args.each do |a|
179
- raise TypeError, "wrong argument type #{a.class} (must respond to :each)" unless a.respond_to? :each
180
- end
181
- Lazy.new(self) do |yielder, *values|
182
- enums = yielder.backports_memo ||= args.map(&:to_enum)
183
- values = values.first unless values.size > 1
184
- others = enums.map do |arg|
185
- begin
186
- arg.next
187
- rescue StopIteration
188
- nil
189
- end
190
- end
191
- yielder << others.unshift(values)
192
- end
193
- end.__set_inspect(args)
194
- end
195
-
196
- protected
197
- def __set_inspect(args, receiver = nil)
198
- @args = args
199
- @receiver = receiver if receiver
200
- self
201
- end
202
- end
203
- end
1
+ require 'backports/2.0.0/enumerable/lazy'
@@ -0,0 +1,3 @@
1
+ require 'backports/tools'
2
+
3
+ Backports.require_relative_dir
@@ -0,0 +1,5 @@
1
+ unless ENV.respond_to? :to_h
2
+ class << ENV
3
+ alias_method :to_h, :to_hash
4
+ end
5
+ end
@@ -1,19 +1,3 @@
1
- class Hash
2
- def to_h
3
- self
4
- end unless method_defined? :to_h
1
+ require 'backports/tools'
5
2
 
6
- if (({}.default_proc = nil) rescue true)
7
- def default_proc_with_nil=(proc)
8
- if proc == nil
9
- self.default = nil
10
- self
11
- else
12
- self.default_proc_without_nil=(proc)
13
- end
14
- end
15
- Backports.alias_method_chain(self, :default_proc=, :nil)
16
- end
17
- end
18
-
19
- Backports.alias_method(ENV.singleton_class, :to_h, :to_hash)
3
+ Backports.require_relative_dir
@@ -0,0 +1,16 @@
1
+ if (({}.default_proc = nil) rescue true)
2
+ require 'backports/tools'
3
+ require 'backports/1.9.1/hash/default_proc'
4
+
5
+ class Hash
6
+ def default_proc_with_nil=(proc)
7
+ if proc == nil
8
+ self.default = nil
9
+ self
10
+ else
11
+ self.default_proc_without_nil=(proc)
12
+ end
13
+ end
14
+ Backports.alias_method_chain(self, :default_proc=, :nil)
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ unless Hash.method_defined? :to_h
2
+ class Hash
3
+ def to_h
4
+ self.class == Hash ? self : {}.replace(self)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ require 'backports/tools'
2
+
3
+ Backports.require_relative_dir
@@ -0,0 +1,7 @@
1
+ unless NilClass.method_defined? :to_h
2
+ class NilClass
3
+ def to_h
4
+ {}
5
+ end
6
+ end
7
+ end
@@ -1,49 +1,3 @@
1
- class Range
2
- def bsearch
3
- return to_enum(__method__) unless block_given?
4
- from = self.begin
5
- to = self.end
6
- unless from.is_a?(Numeric) && to.is_a?(Numeric)
7
- raise TypeError, "can't do binary search for #{from.class}"
8
- end
1
+ require 'backports/tools'
9
2
 
10
- midpoint = nil
11
- if from.is_a?(Integer) && to.is_a?(Integer)
12
- convert = Proc.new{ midpoint }
13
- else
14
- map = Proc.new do |pk, unpk, nb|
15
- result, = [nb.abs].pack(pk).unpack(unpk)
16
- nb < 0 ? -result : result
17
- end.curry
18
- i2f = map['q', 'D']
19
- f2i = map['D', 'q']
20
- from = f2i[from.to_f]
21
- to = f2i[to.to_f]
22
- convert = Proc.new{ i2f[midpoint] }
23
- end
24
- to -= 1 if exclude_end?
25
- satisfied = nil
26
- while from <= to do
27
- midpoint = (from + to).div(2)
28
- result = yield(cur = convert.call)
29
- case result
30
- when Numeric
31
- return cur if result == 0
32
- result = result < 0
33
- when true
34
- satisfied = cur
35
- when nil, false
36
- # nothing to do
37
- else
38
- raise TypeError, "wrong argument type #{result.class} (must be numeric, true, false or nil)"
39
- end
40
-
41
- if result
42
- to = midpoint - 1
43
- else
44
- from = midpoint + 1
45
- end
46
- end
47
- satisfied
48
- end unless method_defined? :bsearch
49
- end
3
+ Backports.require_relative_dir
@@ -0,0 +1,49 @@
1
+ unless Range.method_defined? :bsearch
2
+ class Range
3
+ def bsearch
4
+ return to_enum(:bsearch) unless block_given?
5
+ from = self.begin
6
+ to = self.end
7
+ unless from.is_a?(Numeric) && to.is_a?(Numeric)
8
+ raise TypeError, "can't do binary search for #{from.class}"
9
+ end
10
+
11
+ midpoint = nil
12
+ if from.is_a?(Integer) && to.is_a?(Integer)
13
+ convert = Proc.new{ midpoint }
14
+ else
15
+ map = Proc.new do |pk, unpk, nb|
16
+ result, = [nb.abs].pack(pk).unpack(unpk)
17
+ nb < 0 ? -result : result
18
+ end
19
+ from = map['D', 'q', to.to_f]
20
+ to = map['D', 'q', to.to_f]
21
+ convert = Proc.new{ map['q', 'D', midpoint] }
22
+ end
23
+ to -= 1 if exclude_end?
24
+ satisfied = nil
25
+ while from <= to do
26
+ midpoint = (from + to).div(2)
27
+ result = yield(cur = convert.call)
28
+ case result
29
+ when Numeric
30
+ return cur if result == 0
31
+ result = result < 0
32
+ when true
33
+ satisfied = cur
34
+ when nil, false
35
+ # nothing to do
36
+ else
37
+ raise TypeError, "wrong argument type #{result.class} (must be numeric, true, false or nil)"
38
+ end
39
+
40
+ if result
41
+ to = midpoint - 1
42
+ else
43
+ from = midpoint + 1
44
+ end
45
+ end
46
+ satisfied
47
+ end
48
+ end
49
+ end
@@ -0,0 +1 @@
1
+ # For testing purposes only, see _backport_guards_test
@@ -0,0 +1 @@
1
+ # For testing purposes only, see _backport_guards_test
@@ -17,7 +17,7 @@ class OpenStruct
17
17
  end unless method_defined? :hash
18
18
 
19
19
  def each_pair
20
- return to_enum __method__ unless block_given?
20
+ return to_enum(:each_pair) unless block_given?
21
21
  @table.each_pair{|p| yield p}
22
22
  end unless method_defined? :each_pair
23
23
 
@@ -1,7 +1,3 @@
1
- class Struct
2
- def to_h
3
- Hash[
4
- self.class.members.each{|m| [m.to_sym, self[m]]}
5
- ]
6
- end unless method_defined? :to_h
7
- end
1
+ require 'backports/tools'
2
+
3
+ Backports.require_relative_dir
@@ -0,0 +1,9 @@
1
+ unless Struct.method_defined? :to_h
2
+ class Struct
3
+ def to_h
4
+ h = {}
5
+ self.class.members.each{|m| h[m.to_sym] = self[m]}
6
+ h
7
+ end
8
+ end
9
+ end
@@ -1,4 +1,2 @@
1
1
  # require this file to load all the backports of Ruby 2.0.x
2
-
3
- require File.expand_path(File.dirname(__FILE__) + "/tools")
4
- Backports.require_relative "2.0.0"
2
+ require 'backports/2.0.0'
@@ -12,42 +12,42 @@
12
12
  # (they will only be undefined whenever a subclass of BasicObject is created)
13
13
  # Because of all the fineprint, BasicObject must be required explicitely
14
14
 
15
- require File.expand_path(File.dirname(__FILE__) + "/tools")
16
- Backports.require_relative '1.8.7'
15
+ unless Kernel.const_defined? :BasicObject
17
16
 
18
- class BasicObject
19
- KEEP = %w[== equal? ! != instance_eval instance_exec __send__]
20
- KEEP.concat KEEP.map { |e| e.to_sym }
17
+ class BasicObject
18
+ KEEP = %w[== equal? ! != instance_eval instance_exec __send__]
19
+ KEEP.concat KEEP.map { |e| e.to_sym }
21
20
 
22
- # undefine almost all instance methods
23
- begin
24
- old_verbose, $VERBOSE = $VERBOSE, nil # silence the warning for undefining __id__
25
- (instance_methods - KEEP).each do |method|
26
- undef_method method
21
+ # undefine almost all instance methods
22
+ begin
23
+ old_verbose, $VERBOSE = $VERBOSE, nil # silence the warning for undefining __id__
24
+ (instance_methods - KEEP).each do |method|
25
+ undef_method method
26
+ end
27
+ ensure
28
+ $VERBOSE = old_verbose
27
29
  end
28
- ensure
29
- $VERBOSE = old_verbose
30
- end
31
30
 
32
- class << self
33
- def === (cmp)
34
- true
35
- end
31
+ class << self
32
+ def === (cmp)
33
+ true
34
+ end
36
35
 
37
- # Let's try to keep things clean, in case methods have been added to Object
38
- # either directly or through an included module.
39
- # We'll do this whenever a class is derived from BasicObject
40
- # Ideally, we'd do this by trapping Object.method_added
41
- # and M.method_added for any module M included in Object or a submodule
42
- # Seems really though to get right, but pull requests welcome ;-)
43
- def inherited(sub)
44
- BasicObject.class_eval do
45
- (instance_methods - KEEP).each do |method|
46
- if Object.method_defined?(method) && instance_method(method).owner == Object.instance_method(method).owner
47
- undef_method method
36
+ # Let's try to keep things clean, in case methods have been added to Object
37
+ # either directly or through an included module.
38
+ # We'll do this whenever a class is derived from BasicObject
39
+ # Ideally, we'd do this by trapping Object.method_added
40
+ # and M.method_added for any module M included in Object or a submodule
41
+ # Seems really though to get right, but pull requests welcome ;-)
42
+ def inherited(sub)
43
+ BasicObject.class_eval do
44
+ (instance_methods - KEEP).each do |method|
45
+ if Object.method_defined?(method) && instance_method(method).owner == Object.instance_method(method).owner
46
+ undef_method method
47
+ end
48
48
  end
49
49
  end
50
50
  end
51
51
  end
52
52
  end
53
- end unless Kernel.const_defined? :BasicObject
53
+ end