mack-facets 0.8.1 → 0.8.2

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 (492) hide show
  1. data/lib/gems.rb +25 -0
  2. data/lib/gems/english-0.3.1/VERSION +1 -0
  3. data/lib/gems/english-0.3.1/lib/english/array.rb +48 -0
  4. data/lib/gems/english-0.3.1/lib/english/censor.rb +76 -0
  5. data/lib/gems/english-0.3.1/lib/english/double_metaphone.rb +353 -0
  6. data/lib/gems/english-0.3.1/lib/english/dresner.rb +47 -0
  7. data/lib/gems/english-0.3.1/lib/english/inflect.rb +299 -0
  8. data/lib/gems/english-0.3.1/lib/english/jumble.rb +37 -0
  9. data/lib/gems/english-0.3.1/lib/english/levenshtein.rb +78 -0
  10. data/lib/gems/english-0.3.1/lib/english/metaphone.rb +110 -0
  11. data/lib/gems/english-0.3.1/lib/english/numerals.rb +71 -0
  12. data/lib/gems/english-0.3.1/lib/english/patterns.rb +49 -0
  13. data/lib/gems/english-0.3.1/lib/english/porter_stemming.rb +188 -0
  14. data/lib/gems/english-0.3.1/lib/english/roman.rb +174 -0
  15. data/lib/gems/english-0.3.1/lib/english/similarity.rb +103 -0
  16. data/lib/gems/english-0.3.1/lib/english/soundex.rb +70 -0
  17. data/lib/gems/english-0.3.1/lib/english/string.rb +210 -0
  18. data/lib/gems/english-0.3.1/lib/english/style.rb +294 -0
  19. data/lib/gems/english-0.3.1/lib/english/style_orm.rb +143 -0
  20. data/lib/gems/english-0.3.1/lib/english/textfilter.rb +91 -0
  21. data/lib/gems/extlib-0.9.8/lib/extlib.rb +56 -0
  22. data/lib/gems/extlib-0.9.8/lib/extlib/assertions.rb +8 -0
  23. data/lib/gems/extlib-0.9.8/lib/extlib/blank.rb +59 -0
  24. data/lib/gems/extlib-0.9.8/lib/extlib/boolean.rb +11 -0
  25. data/lib/gems/extlib-0.9.8/lib/extlib/class.rb +175 -0
  26. data/lib/gems/extlib-0.9.8/lib/extlib/datetime.rb +9 -0
  27. data/lib/gems/extlib-0.9.8/lib/extlib/dictionary.rb +433 -0
  28. data/lib/gems/extlib-0.9.8/lib/extlib/hash.rb +419 -0
  29. data/lib/gems/extlib-0.9.8/lib/extlib/hook.rb +366 -0
  30. data/lib/gems/extlib-0.9.8/lib/extlib/inflection.rb +435 -0
  31. data/lib/gems/extlib-0.9.8/lib/extlib/lazy_array.rb +106 -0
  32. data/lib/gems/extlib-0.9.8/lib/extlib/logger.rb +202 -0
  33. data/lib/gems/extlib-0.9.8/lib/extlib/mash.rb +148 -0
  34. data/lib/gems/extlib-0.9.8/lib/extlib/module.rb +41 -0
  35. data/lib/gems/extlib-0.9.8/lib/extlib/nil.rb +5 -0
  36. data/lib/gems/extlib-0.9.8/lib/extlib/numeric.rb +5 -0
  37. data/lib/gems/extlib-0.9.8/lib/extlib/object.rb +175 -0
  38. data/lib/gems/extlib-0.9.8/lib/extlib/object_space.rb +13 -0
  39. data/lib/gems/extlib-0.9.8/lib/extlib/pathname.rb +5 -0
  40. data/lib/gems/extlib-0.9.8/lib/extlib/pooling.rb +239 -0
  41. data/lib/gems/extlib-0.9.8/lib/extlib/rubygems.rb +38 -0
  42. data/lib/gems/extlib-0.9.8/lib/extlib/simple_set.rb +39 -0
  43. data/lib/gems/extlib-0.9.8/lib/extlib/string.rb +132 -0
  44. data/lib/gems/extlib-0.9.8/lib/extlib/struct.rb +8 -0
  45. data/lib/gems/extlib-0.9.8/lib/extlib/symbol.rb +17 -0
  46. data/lib/gems/extlib-0.9.8/lib/extlib/tasks/release.rb +15 -0
  47. data/lib/gems/extlib-0.9.8/lib/extlib/time.rb +19 -0
  48. data/lib/gems/extlib-0.9.8/lib/extlib/version.rb +3 -0
  49. data/lib/gems/extlib-0.9.8/lib/extlib/virtual_file.rb +10 -0
  50. data/lib/gems/facets-2.4.5/VERSION +1 -0
  51. data/lib/gems/facets-2.4.5/lib/core/facets-live.rb +17 -0
  52. data/lib/gems/facets-2.4.5/lib/core/facets-load.rb +12 -0
  53. data/lib/gems/facets-2.4.5/lib/core/facets.rb +11 -0
  54. data/lib/gems/facets-2.4.5/lib/core/facets/array.rb +6 -0
  55. data/lib/gems/facets-2.4.5/lib/core/facets/array/combination.rb +59 -0
  56. data/lib/gems/facets-2.4.5/lib/core/facets/array/conjoin.rb +58 -0
  57. data/lib/gems/facets-2.4.5/lib/core/facets/array/delete.rb +61 -0
  58. data/lib/gems/facets-2.4.5/lib/core/facets/array/index.rb +48 -0
  59. data/lib/gems/facets-2.4.5/lib/core/facets/array/indexable.rb +73 -0
  60. data/lib/gems/facets-2.4.5/lib/core/facets/array/merge.rb +21 -0
  61. data/lib/gems/facets-2.4.5/lib/core/facets/array/not_empty.rb +13 -0
  62. data/lib/gems/facets-2.4.5/lib/core/facets/array/only.rb +21 -0
  63. data/lib/gems/facets-2.4.5/lib/core/facets/array/pad.rb +41 -0
  64. data/lib/gems/facets-2.4.5/lib/core/facets/array/permutation.rb +30 -0
  65. data/lib/gems/facets-2.4.5/lib/core/facets/array/product.rb +57 -0
  66. data/lib/gems/facets-2.4.5/lib/core/facets/array/recursively.rb +30 -0
  67. data/lib/gems/facets-2.4.5/lib/core/facets/array/rotate.rb +42 -0
  68. data/lib/gems/facets-2.4.5/lib/core/facets/array/select.rb +16 -0
  69. data/lib/gems/facets-2.4.5/lib/core/facets/array/splice.rb +30 -0
  70. data/lib/gems/facets-2.4.5/lib/core/facets/array/stackable.rb +33 -0
  71. data/lib/gems/facets-2.4.5/lib/core/facets/array/traverse.rb +22 -0
  72. data/lib/gems/facets-2.4.5/lib/core/facets/binding.rb +6 -0
  73. data/lib/gems/facets-2.4.5/lib/core/facets/binding/caller.rb +54 -0
  74. data/lib/gems/facets-2.4.5/lib/core/facets/binding/defined.rb +13 -0
  75. data/lib/gems/facets-2.4.5/lib/core/facets/binding/eval.rb +18 -0
  76. data/lib/gems/facets-2.4.5/lib/core/facets/binding/local_variables.rb +15 -0
  77. data/lib/gems/facets-2.4.5/lib/core/facets/binding/self.rb +12 -0
  78. data/lib/gems/facets-2.4.5/lib/core/facets/bitmask.rb +104 -0
  79. data/lib/gems/facets-2.4.5/lib/core/facets/blank.rb +60 -0
  80. data/lib/gems/facets-2.4.5/lib/core/facets/boolean.rb +156 -0
  81. data/lib/gems/facets-2.4.5/lib/core/facets/callstack.rb +52 -0
  82. data/lib/gems/facets-2.4.5/lib/core/facets/cattr.rb +2 -0
  83. data/lib/gems/facets-2.4.5/lib/core/facets/class.rb +6 -0
  84. data/lib/gems/facets-2.4.5/lib/core/facets/class/cattr.rb +115 -0
  85. data/lib/gems/facets-2.4.5/lib/core/facets/class/cattr_accessor.rb +1 -0
  86. data/lib/gems/facets-2.4.5/lib/core/facets/class/cattr_reader.rb +1 -0
  87. data/lib/gems/facets-2.4.5/lib/core/facets/class/cattr_writer.rb +1 -0
  88. data/lib/gems/facets-2.4.5/lib/core/facets/class/descendents.rb +36 -0
  89. data/lib/gems/facets-2.4.5/lib/core/facets/class/methodize.rb +14 -0
  90. data/lib/gems/facets-2.4.5/lib/core/facets/class/pathize.rb +14 -0
  91. data/lib/gems/facets-2.4.5/lib/core/facets/class/prepend.rb +50 -0
  92. data/lib/gems/facets-2.4.5/lib/core/facets/class/subclasses.rb +2 -0
  93. data/lib/gems/facets-2.4.5/lib/core/facets/class/to_proc.rb +42 -0
  94. data/lib/gems/facets-2.4.5/lib/core/facets/comparable.rb +6 -0
  95. data/lib/gems/facets-2.4.5/lib/core/facets/comparable/bound.rb +65 -0
  96. data/lib/gems/facets-2.4.5/lib/core/facets/comparable/cmp.rb +38 -0
  97. data/lib/gems/facets-2.4.5/lib/core/facets/comparable/comparable.rb +42 -0
  98. data/lib/gems/facets-2.4.5/lib/core/facets/dir.rb +6 -0
  99. data/lib/gems/facets-2.4.5/lib/core/facets/dir/ascend.rb +59 -0
  100. data/lib/gems/facets-2.4.5/lib/core/facets/dir/descend.rb +1 -0
  101. data/lib/gems/facets-2.4.5/lib/core/facets/dir/multiglob.rb +92 -0
  102. data/lib/gems/facets-2.4.5/lib/core/facets/dir/parent.rb +13 -0
  103. data/lib/gems/facets-2.4.5/lib/core/facets/dir/recurse.rb +29 -0
  104. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable.rb +6 -0
  105. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/accumulate.rb +21 -0
  106. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/cluster_by.rb +21 -0
  107. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/collect.rb +54 -0
  108. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/commonality.rb +33 -0
  109. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/count.rb +26 -0
  110. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/divide.rb +33 -0
  111. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/duplicates.rb +38 -0
  112. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/each_by.rb +33 -0
  113. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/entropy.rb +37 -0
  114. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/frequency.rb +18 -0
  115. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/group_by.rb +27 -0
  116. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/inject.rb +31 -0
  117. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/map_send.rb +12 -0
  118. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/mash.rb +32 -0
  119. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/mode.rb +16 -0
  120. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/modulate.rb +22 -0
  121. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/none.rb +31 -0
  122. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/occur.rb +38 -0
  123. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/one.rb +38 -0
  124. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/probability.rb +36 -0
  125. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/split.rb +27 -0
  126. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/sum.rb +16 -0
  127. data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/uniq_by.rb +18 -0
  128. data/lib/gems/facets-2.4.5/lib/core/facets/exception.rb +6 -0
  129. data/lib/gems/facets-2.4.5/lib/core/facets/exception/detail.rb +19 -0
  130. data/lib/gems/facets-2.4.5/lib/core/facets/exception/suppress.rb +21 -0
  131. data/lib/gems/facets-2.4.5/lib/core/facets/file.rb +6 -0
  132. data/lib/gems/facets-2.4.5/lib/core/facets/file/append.rb +14 -0
  133. data/lib/gems/facets-2.4.5/lib/core/facets/file/create.rb +21 -0
  134. data/lib/gems/facets-2.4.5/lib/core/facets/file/null.rb +21 -0
  135. data/lib/gems/facets-2.4.5/lib/core/facets/file/read.rb +41 -0
  136. data/lib/gems/facets-2.4.5/lib/core/facets/file/rewrite.rb +88 -0
  137. data/lib/gems/facets-2.4.5/lib/core/facets/file/rootname.rb +33 -0
  138. data/lib/gems/facets-2.4.5/lib/core/facets/file/split_root.rb +10 -0
  139. data/lib/gems/facets-2.4.5/lib/core/facets/file/write.rb +22 -0
  140. data/lib/gems/facets-2.4.5/lib/core/facets/file/writelines.rb +24 -0
  141. data/lib/gems/facets-2.4.5/lib/core/facets/filetest.rb +6 -0
  142. data/lib/gems/facets-2.4.5/lib/core/facets/filetest/root.rb +17 -0
  143. data/lib/gems/facets-2.4.5/lib/core/facets/float.rb +6 -0
  144. data/lib/gems/facets-2.4.5/lib/core/facets/float/round.rb +2 -0
  145. data/lib/gems/facets-2.4.5/lib/core/facets/functor.rb +77 -0
  146. data/lib/gems/facets-2.4.5/lib/core/facets/hash.rb +6 -0
  147. data/lib/gems/facets-2.4.5/lib/core/facets/hash/alias.rb +31 -0
  148. data/lib/gems/facets-2.4.5/lib/core/facets/hash/argumentize.rb +22 -0
  149. data/lib/gems/facets-2.4.5/lib/core/facets/hash/at.rb +8 -0
  150. data/lib/gems/facets-2.4.5/lib/core/facets/hash/autonew.rb +42 -0
  151. data/lib/gems/facets-2.4.5/lib/core/facets/hash/collate.rb +45 -0
  152. data/lib/gems/facets-2.4.5/lib/core/facets/hash/delete.rb +47 -0
  153. data/lib/gems/facets-2.4.5/lib/core/facets/hash/diff.rb +11 -0
  154. data/lib/gems/facets-2.4.5/lib/core/facets/hash/except.rb +27 -0
  155. data/lib/gems/facets-2.4.5/lib/core/facets/hash/insert.rb +19 -0
  156. data/lib/gems/facets-2.4.5/lib/core/facets/hash/inverse.rb +27 -0
  157. data/lib/gems/facets-2.4.5/lib/core/facets/hash/join.rb +14 -0
  158. data/lib/gems/facets-2.4.5/lib/core/facets/hash/keys.rb +45 -0
  159. data/lib/gems/facets-2.4.5/lib/core/facets/hash/mash.rb +18 -0
  160. data/lib/gems/facets-2.4.5/lib/core/facets/hash/merge.rb +30 -0
  161. data/lib/gems/facets-2.4.5/lib/core/facets/hash/op.rb +7 -0
  162. data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_add.rb +12 -0
  163. data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_and.rb +33 -0
  164. data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_mul.rb +18 -0
  165. data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_or.rb +12 -0
  166. data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_push.rb +17 -0
  167. data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_sub.rb +26 -0
  168. data/lib/gems/facets-2.4.5/lib/core/facets/hash/recursive_merge.rb +33 -0
  169. data/lib/gems/facets-2.4.5/lib/core/facets/hash/recursively.rb +29 -0
  170. data/lib/gems/facets-2.4.5/lib/core/facets/hash/rekey.rb +59 -0
  171. data/lib/gems/facets-2.4.5/lib/core/facets/hash/select.rb +14 -0
  172. data/lib/gems/facets-2.4.5/lib/core/facets/hash/slice.rb +33 -0
  173. data/lib/gems/facets-2.4.5/lib/core/facets/hash/swap.rb +17 -0
  174. data/lib/gems/facets-2.4.5/lib/core/facets/hash/to_h.rb +1 -0
  175. data/lib/gems/facets-2.4.5/lib/core/facets/hash/to_proc.rb +41 -0
  176. data/lib/gems/facets-2.4.5/lib/core/facets/hash/to_struct.rb +17 -0
  177. data/lib/gems/facets-2.4.5/lib/core/facets/hash/traverse.rb +41 -0
  178. data/lib/gems/facets-2.4.5/lib/core/facets/hash/update.rb +81 -0
  179. data/lib/gems/facets-2.4.5/lib/core/facets/hash/weave.rb +81 -0
  180. data/lib/gems/facets-2.4.5/lib/core/facets/hash/zipnew.rb +2 -0
  181. data/lib/gems/facets-2.4.5/lib/core/facets/indexable.rb +251 -0
  182. data/lib/gems/facets-2.4.5/lib/core/facets/integer.rb +6 -0
  183. data/lib/gems/facets-2.4.5/lib/core/facets/integer/even.rb +1 -0
  184. data/lib/gems/facets-2.4.5/lib/core/facets/integer/factorial.rb +30 -0
  185. data/lib/gems/facets-2.4.5/lib/core/facets/integer/multiple.rb +15 -0
  186. data/lib/gems/facets-2.4.5/lib/core/facets/integer/odd.rb +35 -0
  187. data/lib/gems/facets-2.4.5/lib/core/facets/integer/of.rb +18 -0
  188. data/lib/gems/facets-2.4.5/lib/core/facets/integer/ordinal.rb +24 -0
  189. data/lib/gems/facets-2.4.5/lib/core/facets/kernel.rb +6 -0
  190. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__callee__.rb +1 -0
  191. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__class__.rb +9 -0
  192. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__dir__.rb +12 -0
  193. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__get__.rb +10 -0
  194. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__method__.rb +36 -0
  195. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__set__.rb +1 -0
  196. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/as.rb +100 -0
  197. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/ask.rb +27 -0
  198. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/attr_singleton.rb +62 -0
  199. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/complete.rb +18 -0
  200. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/constant.rb +24 -0
  201. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/d.rb +26 -0
  202. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/deep_copy.rb +13 -0
  203. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/demo.rb +23 -0
  204. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/ergo.rb +42 -0
  205. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/here.rb +12 -0
  206. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/in.rb +13 -0
  207. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance.rb +19 -0
  208. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_assign.rb +41 -0
  209. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_class.rb +24 -0
  210. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_exec.rb +40 -0
  211. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_send.rb +7 -0
  212. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_variables.rb +99 -0
  213. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/maybe.rb +18 -0
  214. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/not_nil.rb +17 -0
  215. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/object_class.rb +10 -0
  216. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/object_hexid.rb +12 -0
  217. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/object_send.rb +32 -0
  218. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/p.rb +24 -0
  219. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/populate.rb +73 -0
  220. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/qua_class.rb +19 -0
  221. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/require_all.rb +21 -0
  222. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/require_local.rb +24 -0
  223. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/resc.rb +16 -0
  224. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/respond.rb +23 -0
  225. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/returning.rb +23 -0
  226. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/silence.rb +75 -0
  227. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/singleton_class.rb +19 -0
  228. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/tap.rb +32 -0
  229. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/try.rb +23 -0
  230. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/val.rb +19 -0
  231. data/lib/gems/facets-2.4.5/lib/core/facets/kernel/with.rb +20 -0
  232. data/lib/gems/facets-2.4.5/lib/core/facets/lazy.rb +238 -0
  233. data/lib/gems/facets-2.4.5/lib/core/facets/matchdata.rb +6 -0
  234. data/lib/gems/facets-2.4.5/lib/core/facets/matchdata/match.rb +15 -0
  235. data/lib/gems/facets-2.4.5/lib/core/facets/matchdata/matchset.rb +44 -0
  236. data/lib/gems/facets-2.4.5/lib/core/facets/metaid.rb +94 -0
  237. data/lib/gems/facets-2.4.5/lib/core/facets/module.rb +6 -0
  238. data/lib/gems/facets-2.4.5/lib/core/facets/module/abstract.rb +21 -0
  239. data/lib/gems/facets-2.4.5/lib/core/facets/module/alias_accessor.rb +45 -0
  240. data/lib/gems/facets-2.4.5/lib/core/facets/module/alias_method_chain.rb +50 -0
  241. data/lib/gems/facets-2.4.5/lib/core/facets/module/alias_module_function.rb +30 -0
  242. data/lib/gems/facets-2.4.5/lib/core/facets/module/ancestor.rb +16 -0
  243. data/lib/gems/facets-2.4.5/lib/core/facets/module/basename.rb +31 -0
  244. data/lib/gems/facets-2.4.5/lib/core/facets/module/can.rb +14 -0
  245. data/lib/gems/facets-2.4.5/lib/core/facets/module/class.rb +12 -0
  246. data/lib/gems/facets-2.4.5/lib/core/facets/module/conflict.rb +63 -0
  247. data/lib/gems/facets-2.4.5/lib/core/facets/module/include_function_module.rb +25 -0
  248. data/lib/gems/facets-2.4.5/lib/core/facets/module/instance_methods.rb +40 -0
  249. data/lib/gems/facets-2.4.5/lib/core/facets/module/integrate.rb +2 -0
  250. data/lib/gems/facets-2.4.5/lib/core/facets/module/is.rb +57 -0
  251. data/lib/gems/facets-2.4.5/lib/core/facets/module/methodize.rb +14 -0
  252. data/lib/gems/facets-2.4.5/lib/core/facets/module/modspace.rb +22 -0
  253. data/lib/gems/facets-2.4.5/lib/core/facets/module/module_load.rb +56 -0
  254. data/lib/gems/facets-2.4.5/lib/core/facets/module/nesting.rb +18 -0
  255. data/lib/gems/facets-2.4.5/lib/core/facets/module/op.rb +95 -0
  256. data/lib/gems/facets-2.4.5/lib/core/facets/module/pathize.rb +22 -0
  257. data/lib/gems/facets-2.4.5/lib/core/facets/module/prepend.rb +26 -0
  258. data/lib/gems/facets-2.4.5/lib/core/facets/module/redefine_method.rb +35 -0
  259. data/lib/gems/facets-2.4.5/lib/core/facets/module/redirect_method.rb +45 -0
  260. data/lib/gems/facets-2.4.5/lib/core/facets/module/rename_method.rb +20 -0
  261. data/lib/gems/facets-2.4.5/lib/core/facets/module/revise.rb +62 -0
  262. data/lib/gems/facets-2.4.5/lib/core/facets/module/spacename.rb +25 -0
  263. data/lib/gems/facets-2.4.5/lib/core/facets/module/wrap_method.rb +28 -0
  264. data/lib/gems/facets-2.4.5/lib/core/facets/nilclass.rb +6 -0
  265. data/lib/gems/facets-2.4.5/lib/core/facets/nilclass/ergo.rb +1 -0
  266. data/lib/gems/facets-2.4.5/lib/core/facets/nilclass/to_f.rb +17 -0
  267. data/lib/gems/facets-2.4.5/lib/core/facets/numeric.rb +6 -0
  268. data/lib/gems/facets-2.4.5/lib/core/facets/numeric/approx.rb +15 -0
  269. data/lib/gems/facets-2.4.5/lib/core/facets/numeric/distance.rb +14 -0
  270. data/lib/gems/facets-2.4.5/lib/core/facets/numeric/round.rb +72 -0
  271. data/lib/gems/facets-2.4.5/lib/core/facets/proc.rb +6 -0
  272. data/lib/gems/facets-2.4.5/lib/core/facets/proc/bind.rb +22 -0
  273. data/lib/gems/facets-2.4.5/lib/core/facets/proc/compose.rb +42 -0
  274. data/lib/gems/facets-2.4.5/lib/core/facets/proc/curry.rb +31 -0
  275. data/lib/gems/facets-2.4.5/lib/core/facets/proc/to_method.rb +33 -0
  276. data/lib/gems/facets-2.4.5/lib/core/facets/proc/update.rb +9 -0
  277. data/lib/gems/facets-2.4.5/lib/core/facets/range.rb +6 -0
  278. data/lib/gems/facets-2.4.5/lib/core/facets/range/combine.rb +47 -0
  279. data/lib/gems/facets-2.4.5/lib/core/facets/range/overlap.rb +13 -0
  280. data/lib/gems/facets-2.4.5/lib/core/facets/range/to_r.rb +26 -0
  281. data/lib/gems/facets-2.4.5/lib/core/facets/range/umbrella.rb +1 -0
  282. data/lib/gems/facets-2.4.5/lib/core/facets/range/within.rb +66 -0
  283. data/lib/gems/facets-2.4.5/lib/core/facets/regexp.rb +6 -0
  284. data/lib/gems/facets-2.4.5/lib/core/facets/regexp/arity.rb +17 -0
  285. data/lib/gems/facets-2.4.5/lib/core/facets/regexp/to_re.rb +28 -0
  286. data/lib/gems/facets-2.4.5/lib/core/facets/stackable.rb +86 -0
  287. data/lib/gems/facets-2.4.5/lib/core/facets/string.rb +6 -0
  288. data/lib/gems/facets-2.4.5/lib/core/facets/string/align.rb +106 -0
  289. data/lib/gems/facets-2.4.5/lib/core/facets/string/bracket.rb +105 -0
  290. data/lib/gems/facets-2.4.5/lib/core/facets/string/bytes.rb +15 -0
  291. data/lib/gems/facets-2.4.5/lib/core/facets/string/camelcase.rb +26 -0
  292. data/lib/gems/facets-2.4.5/lib/core/facets/string/capitalized.rb +46 -0
  293. data/lib/gems/facets-2.4.5/lib/core/facets/string/chars.rb +16 -0
  294. data/lib/gems/facets-2.4.5/lib/core/facets/string/chomp.rb +33 -0
  295. data/lib/gems/facets-2.4.5/lib/core/facets/string/cleave.rb +36 -0
  296. data/lib/gems/facets-2.4.5/lib/core/facets/string/divide.rb +21 -0
  297. data/lib/gems/facets-2.4.5/lib/core/facets/string/each_char.rb +29 -0
  298. data/lib/gems/facets-2.4.5/lib/core/facets/string/each_word.rb +13 -0
  299. data/lib/gems/facets-2.4.5/lib/core/facets/string/end_with.rb +1 -0
  300. data/lib/gems/facets-2.4.5/lib/core/facets/string/fold.rb +39 -0
  301. data/lib/gems/facets-2.4.5/lib/core/facets/string/interpolate.rb +20 -0
  302. data/lib/gems/facets-2.4.5/lib/core/facets/string/line_wrap.rb +21 -0
  303. data/lib/gems/facets-2.4.5/lib/core/facets/string/lines.rb +16 -0
  304. data/lib/gems/facets-2.4.5/lib/core/facets/string/methodize.rb +17 -0
  305. data/lib/gems/facets-2.4.5/lib/core/facets/string/modulize.rb +21 -0
  306. data/lib/gems/facets-2.4.5/lib/core/facets/string/mscan.rb +19 -0
  307. data/lib/gems/facets-2.4.5/lib/core/facets/string/natcmp.rb +88 -0
  308. data/lib/gems/facets-2.4.5/lib/core/facets/string/nchar.rb +28 -0
  309. data/lib/gems/facets-2.4.5/lib/core/facets/string/op_sub.rb +14 -0
  310. data/lib/gems/facets-2.4.5/lib/core/facets/string/pathize.rb +16 -0
  311. data/lib/gems/facets-2.4.5/lib/core/facets/string/range.rb +77 -0
  312. data/lib/gems/facets-2.4.5/lib/core/facets/string/rewrite.rb +28 -0
  313. data/lib/gems/facets-2.4.5/lib/core/facets/string/shatter.rb +22 -0
  314. data/lib/gems/facets-2.4.5/lib/core/facets/string/snakecase.rb +21 -0
  315. data/lib/gems/facets-2.4.5/lib/core/facets/string/splice.rb +37 -0
  316. data/lib/gems/facets-2.4.5/lib/core/facets/string/start_with.rb +32 -0
  317. data/lib/gems/facets-2.4.5/lib/core/facets/string/subtract.rb +4 -0
  318. data/lib/gems/facets-2.4.5/lib/core/facets/string/tab.rb +103 -0
  319. data/lib/gems/facets-2.4.5/lib/core/facets/string/titlecase.rb +15 -0
  320. data/lib/gems/facets-2.4.5/lib/core/facets/string/to_re.rb +26 -0
  321. data/lib/gems/facets-2.4.5/lib/core/facets/string/variablize.rb +13 -0
  322. data/lib/gems/facets-2.4.5/lib/core/facets/string/word_wrap.rb +34 -0
  323. data/lib/gems/facets-2.4.5/lib/core/facets/string/words.rb +12 -0
  324. data/lib/gems/facets-2.4.5/lib/core/facets/string/xor.rb +22 -0
  325. data/lib/gems/facets-2.4.5/lib/core/facets/symbol.rb +6 -0
  326. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/chomp.rb +24 -0
  327. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/generate.rb +24 -0
  328. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/not.rb +29 -0
  329. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/plain.rb +17 -0
  330. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/query.rb +1 -0
  331. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/re_s.rb +18 -0
  332. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/setter.rb +1 -0
  333. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/succ.rb +19 -0
  334. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/to_proc.rb +38 -0
  335. data/lib/gems/facets-2.4.5/lib/core/facets/symbol/variablize.rb +12 -0
  336. data/lib/gems/facets-2.4.5/lib/core/facets/time.rb +6 -0
  337. data/lib/gems/facets-2.4.5/lib/core/facets/time/advance.rb +17 -0
  338. data/lib/gems/facets-2.4.5/lib/core/facets/time/ago.rb +1 -0
  339. data/lib/gems/facets-2.4.5/lib/core/facets/time/change.rb +41 -0
  340. data/lib/gems/facets-2.4.5/lib/core/facets/time/elapse.rb +16 -0
  341. data/lib/gems/facets-2.4.5/lib/core/facets/time/hence.rb +94 -0
  342. data/lib/gems/facets-2.4.5/lib/core/facets/time/round.rb +17 -0
  343. data/lib/gems/facets-2.4.5/lib/core/facets/time/set.rb +21 -0
  344. data/lib/gems/facets-2.4.5/lib/core/facets/time/stamp.rb +44 -0
  345. data/lib/gems/facets-2.4.5/lib/core/facets/time/to_time.rb +21 -0
  346. data/lib/gems/facets-2.4.5/lib/core/facets/time/trunc.rb +15 -0
  347. data/lib/gems/facets-2.4.5/lib/core/facets/to_hash.rb +87 -0
  348. data/lib/gems/facets-2.4.5/lib/core/facets/unboundmethod.rb +6 -0
  349. data/lib/gems/facets-2.4.5/lib/core/facets/unboundmethod/arguments.rb +44 -0
  350. data/lib/gems/facets-2.4.5/lib/core/facets/unboundmethod/name.rb +25 -0
  351. data/lib/gems/facets-2.4.5/lib/lore/facets/basicobject.rb +14 -0
  352. data/lib/gems/facets-2.4.5/lib/lore/facets/cgi.rb +50 -0
  353. data/lib/gems/facets-2.4.5/lib/lore/facets/continuation.rb +57 -0
  354. data/lib/gems/facets-2.4.5/lib/lore/facets/date.rb +396 -0
  355. data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils.rb +27 -0
  356. data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/head.rb +1 -0
  357. data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/safe_ln.rb +28 -0
  358. data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/slice.rb +141 -0
  359. data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/tail.rb +1 -0
  360. data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/wc.rb +114 -0
  361. data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/whereis.rb +64 -0
  362. data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/which.rb +101 -0
  363. data/lib/gems/facets-2.4.5/lib/lore/facets/getoptlong.rb +71 -0
  364. data/lib/gems/facets-2.4.5/lib/lore/facets/logger.rb +291 -0
  365. data/lib/gems/facets-2.4.5/lib/lore/facets/ostruct.rb +238 -0
  366. data/lib/gems/facets-2.4.5/lib/lore/facets/pathname.rb +172 -0
  367. data/lib/gems/facets-2.4.5/lib/lore/facets/rbconfig.rb +45 -0
  368. data/lib/gems/facets-2.4.5/lib/lore/facets/set.rb +27 -0
  369. data/lib/gems/facets-2.4.5/lib/lore/facets/shellwords.rb +89 -0
  370. data/lib/gems/facets-2.4.5/lib/lore/facets/uri.rb +249 -0
  371. data/lib/gems/facets-2.4.5/lib/lore/facets/yaml.rb +75 -0
  372. data/lib/gems/facets-2.4.5/lib/lore/facets/zlib.rb +38 -0
  373. data/lib/gems/facets-2.4.5/lib/more/facets/1stclassmethod.rb +140 -0
  374. data/lib/gems/facets-2.4.5/lib/more/facets/advisable.rb +162 -0
  375. data/lib/gems/facets-2.4.5/lib/more/facets/annotations.rb +302 -0
  376. data/lib/gems/facets-2.4.5/lib/more/facets/ansicode.rb +315 -0
  377. data/lib/gems/facets-2.4.5/lib/more/facets/arguments.rb +365 -0
  378. data/lib/gems/facets-2.4.5/lib/more/facets/argvector.rb +353 -0
  379. data/lib/gems/facets-2.4.5/lib/more/facets/association.rb +194 -0
  380. data/lib/gems/facets-2.4.5/lib/more/facets/attr.rb +208 -0
  381. data/lib/gems/facets-2.4.5/lib/more/facets/autoarray.rb +62 -0
  382. data/lib/gems/facets-2.4.5/lib/more/facets/autoreload.rb +150 -0
  383. data/lib/gems/facets-2.4.5/lib/more/facets/basex.rb +37 -0
  384. data/lib/gems/facets-2.4.5/lib/more/facets/bbcode.rb +397 -0
  385. data/lib/gems/facets-2.4.5/lib/more/facets/bicrypt.rb +265 -0
  386. data/lib/gems/facets-2.4.5/lib/more/facets/binding/opvars.rb +24 -0
  387. data/lib/gems/facets-2.4.5/lib/more/facets/binreadable.rb +221 -0
  388. data/lib/gems/facets-2.4.5/lib/more/facets/blankslate.rb +66 -0
  389. data/lib/gems/facets-2.4.5/lib/more/facets/buildable.rb +344 -0
  390. data/lib/gems/facets-2.4.5/lib/more/facets/bytes.rb +175 -0
  391. data/lib/gems/facets-2.4.5/lib/more/facets/cachedecorator.rb +117 -0
  392. data/lib/gems/facets-2.4.5/lib/more/facets/capsule.rb +258 -0
  393. data/lib/gems/facets-2.4.5/lib/more/facets/chain.rb +58 -0
  394. data/lib/gems/facets-2.4.5/lib/more/facets/class_extension.rb +114 -0
  395. data/lib/gems/facets-2.4.5/lib/more/facets/classmethods.rb +199 -0
  396. data/lib/gems/facets-2.4.5/lib/more/facets/cloneable.rb +76 -0
  397. data/lib/gems/facets-2.4.5/lib/more/facets/command.rb +439 -0
  398. data/lib/gems/facets-2.4.5/lib/more/facets/consoleutils.rb +113 -0
  399. data/lib/gems/facets-2.4.5/lib/more/facets/coroutine.rb +159 -0
  400. data/lib/gems/facets-2.4.5/lib/more/facets/crypt.rb +166 -0
  401. data/lib/gems/facets-2.4.5/lib/more/facets/cssfilter.rb +254 -0
  402. data/lib/gems/facets-2.4.5/lib/more/facets/daemonize.rb +44 -0
  403. data/lib/gems/facets-2.4.5/lib/more/facets/dependency.rb +151 -0
  404. data/lib/gems/facets-2.4.5/lib/more/facets/dictionary.rb +478 -0
  405. data/lib/gems/facets-2.4.5/lib/more/facets/dictionarymatcher.rb +136 -0
  406. data/lib/gems/facets-2.4.5/lib/more/facets/downloader.rb +281 -0
  407. data/lib/gems/facets-2.4.5/lib/more/facets/duplicable.rb +43 -0
  408. data/lib/gems/facets-2.4.5/lib/more/facets/duration.rb +540 -0
  409. data/lib/gems/facets-2.4.5/lib/more/facets/elementor.rb +133 -0
  410. data/lib/gems/facets-2.4.5/lib/more/facets/elementwise.rb +61 -0
  411. data/lib/gems/facets-2.4.5/lib/more/facets/enumerablepass.rb +217 -0
  412. data/lib/gems/facets-2.4.5/lib/more/facets/equatable.rb +120 -0
  413. data/lib/gems/facets-2.4.5/lib/more/facets/eventhook.rb +132 -0
  414. data/lib/gems/facets-2.4.5/lib/more/facets/expirable.rb +82 -0
  415. data/lib/gems/facets-2.4.5/lib/more/facets/fileable.rb +162 -0
  416. data/lib/gems/facets-2.4.5/lib/more/facets/filelist.rb +497 -0
  417. data/lib/gems/facets-2.4.5/lib/more/facets/fileshell.rb +202 -0
  418. data/lib/gems/facets-2.4.5/lib/more/facets/hash/stringify_keys.rb +1 -0
  419. data/lib/gems/facets-2.4.5/lib/more/facets/hash/symbolize_keys.rb +94 -0
  420. data/lib/gems/facets-2.4.5/lib/more/facets/heap.rb +22 -0
  421. data/lib/gems/facets-2.4.5/lib/more/facets/htmlfilter.rb +595 -0
  422. data/lib/gems/facets-2.4.5/lib/more/facets/infinity.rb +193 -0
  423. data/lib/gems/facets-2.4.5/lib/more/facets/inheritor.rb +130 -0
  424. data/lib/gems/facets-2.4.5/lib/more/facets/ini.rb +264 -0
  425. data/lib/gems/facets-2.4.5/lib/more/facets/instantiable.rb +47 -0
  426. data/lib/gems/facets-2.4.5/lib/more/facets/instantise.rb +1 -0
  427. data/lib/gems/facets-2.4.5/lib/more/facets/instantize.rb +95 -0
  428. data/lib/gems/facets-2.4.5/lib/more/facets/interval.rb +282 -0
  429. data/lib/gems/facets-2.4.5/lib/more/facets/ioredirect.rb +130 -0
  430. data/lib/gems/facets-2.4.5/lib/more/facets/iteration.rb +65 -0
  431. data/lib/gems/facets-2.4.5/lib/more/facets/kernel/meta.rb +32 -0
  432. data/lib/gems/facets-2.4.5/lib/more/facets/linkedlist.rb +222 -0
  433. data/lib/gems/facets-2.4.5/lib/more/facets/lrucache.rb +157 -0
  434. data/lib/gems/facets-2.4.5/lib/more/facets/main.rb +70 -0
  435. data/lib/gems/facets-2.4.5/lib/more/facets/memoize.rb +116 -0
  436. data/lib/gems/facets-2.4.5/lib/more/facets/methodspace.rb +141 -0
  437. data/lib/gems/facets-2.4.5/lib/more/facets/minitar.rb +1063 -0
  438. data/lib/gems/facets-2.4.5/lib/more/facets/multipliers.rb +109 -0
  439. data/lib/gems/facets-2.4.5/lib/more/facets/multiton.rb +386 -0
  440. data/lib/gems/facets-2.4.5/lib/more/facets/nackclass.rb +41 -0
  441. data/lib/gems/facets-2.4.5/lib/more/facets/net/smtp_tls.rb +131 -0
  442. data/lib/gems/facets-2.4.5/lib/more/facets/nilstatus.rb +47 -0
  443. data/lib/gems/facets-2.4.5/lib/more/facets/nullclass.rb +74 -0
  444. data/lib/gems/facets-2.4.5/lib/more/facets/opencascade.rb +94 -0
  445. data/lib/gems/facets-2.4.5/lib/more/facets/opencollection.rb +43 -0
  446. data/lib/gems/facets-2.4.5/lib/more/facets/openhash.rb +39 -0
  447. data/lib/gems/facets-2.4.5/lib/more/facets/openobject.rb +267 -0
  448. data/lib/gems/facets-2.4.5/lib/more/facets/opesc.rb +60 -0
  449. data/lib/gems/facets-2.4.5/lib/more/facets/orderedhash.rb +37 -0
  450. data/lib/gems/facets-2.4.5/lib/more/facets/overload.rb +94 -0
  451. data/lib/gems/facets-2.4.5/lib/more/facets/paramix.rb +202 -0
  452. data/lib/gems/facets-2.4.5/lib/more/facets/partial.rb +37 -0
  453. data/lib/gems/facets-2.4.5/lib/more/facets/pathlist.rb +112 -0
  454. data/lib/gems/facets-2.4.5/lib/more/facets/platform.rb +192 -0
  455. data/lib/gems/facets-2.4.5/lib/more/facets/pool.rb +91 -0
  456. data/lib/gems/facets-2.4.5/lib/more/facets/pqueue.rb +449 -0
  457. data/lib/gems/facets-2.4.5/lib/more/facets/progressbar.rb +253 -0
  458. data/lib/gems/facets-2.4.5/lib/more/facets/prototype.rb +88 -0
  459. data/lib/gems/facets-2.4.5/lib/more/facets/random.rb +451 -0
  460. data/lib/gems/facets-2.4.5/lib/more/facets/rbsystem.rb +222 -0
  461. data/lib/gems/facets-2.4.5/lib/more/facets/recorder.rb +109 -0
  462. data/lib/gems/facets-2.4.5/lib/more/facets/reference.rb +99 -0
  463. data/lib/gems/facets-2.4.5/lib/more/facets/reflection.rb +145 -0
  464. data/lib/gems/facets-2.4.5/lib/more/facets/registerable.rb +35 -0
  465. data/lib/gems/facets-2.4.5/lib/more/facets/rwdelegator.rb +74 -0
  466. data/lib/gems/facets-2.4.5/lib/more/facets/semaphore.rb +92 -0
  467. data/lib/gems/facets-2.4.5/lib/more/facets/settings.rb +248 -0
  468. data/lib/gems/facets-2.4.5/lib/more/facets/snapshot.rb +209 -0
  469. data/lib/gems/facets-2.4.5/lib/more/facets/string/mask.rb +278 -0
  470. data/lib/gems/facets-2.4.5/lib/more/facets/string/words.rb +173 -0
  471. data/lib/gems/facets-2.4.5/lib/more/facets/succ.rb +44 -0
  472. data/lib/gems/facets-2.4.5/lib/more/facets/syncarray.rb +114 -0
  473. data/lib/gems/facets-2.4.5/lib/more/facets/synchash.rb +157 -0
  474. data/lib/gems/facets-2.4.5/lib/more/facets/tagiter.rb +366 -0
  475. data/lib/gems/facets-2.4.5/lib/more/facets/thread.rb +51 -0
  476. data/lib/gems/facets-2.4.5/lib/more/facets/timer.rb +274 -0
  477. data/lib/gems/facets-2.4.5/lib/more/facets/times.rb +431 -0
  478. data/lib/gems/facets-2.4.5/lib/more/facets/tracepoint.rb +209 -0
  479. data/lib/gems/facets-2.4.5/lib/more/facets/tuple.rb +325 -0
  480. data/lib/gems/facets-2.4.5/lib/more/facets/typecast.rb +261 -0
  481. data/lib/gems/facets-2.4.5/lib/more/facets/uninheritable.rb +50 -0
  482. data/lib/gems/facets-2.4.5/lib/more/facets/uploadutils.rb +464 -0
  483. data/lib/gems/facets-2.4.5/lib/more/facets/version.rb +136 -0
  484. data/lib/gems/facets-2.4.5/lib/more/facets/xmlhash.rb +112 -0
  485. data/lib/gems/facets-2.4.5/lib/more/facets/xoxo.rb +259 -0
  486. data/lib/gems/facets-2.4.5/lib/more/facets/ziputils.rb +349 -0
  487. data/lib/mack-facets.rb +4 -2
  488. data/lib/mack-facets/english_extensions/inflect.rb +50 -50
  489. data/lib/mack-facets/extensions/string.rb +10 -1
  490. data/lib/mack-facets/utils/inflections.rb +50 -47
  491. data/lib/mack-facets/utils/inflector.rb +19 -19
  492. metadata +547 -36
@@ -0,0 +1,65 @@
1
+ # = Iteration
2
+ #
3
+ #
4
+
5
+ class It
6
+ attr_reader :index, :value, :prior, :after
7
+ def initialize(array)
8
+ @array = array
9
+ @index = 0
10
+ @value = array[0]
11
+ @prior = []
12
+ @after = array[1..-1]
13
+ end
14
+ def first? ; @index == 0 ; end
15
+ def last?
16
+ if Enumerable === self
17
+ nil
18
+ else
19
+ @index == @array.length
20
+ end
21
+ end
22
+ private
23
+ def next_iteration
24
+ @index += 1
25
+ @prior << @value
26
+ @value = @after.shift
27
+ end
28
+ end
29
+
30
+ class Array
31
+ # Iterate over each element of array using an iteration object.
32
+ #
33
+ # [1,2,3].each_iteration do |it|
34
+ # p it.index
35
+ # p it.value
36
+ # p it.first?
37
+ # p it.last?
38
+ # p it.prior
39
+ # p it.after
40
+ # end
41
+ #
42
+ # on each successive iteration produces:
43
+ #
44
+ # 0 1 2
45
+ # 1 2 3
46
+ # true false false
47
+ # false false true
48
+ # [] [1] [1,2]
49
+ # [2,3] [3] []
50
+ #
51
+ # CREDIT: Trans
52
+
53
+ def each_iteration
54
+ if block_given?
55
+ it = It.new(self)
56
+ each do |e|
57
+ yield(it)
58
+ it.send(:next_iteration)
59
+ end
60
+ else
61
+ return Enumerable::Enumerator.new(self, :each_iteration)
62
+ end
63
+ end
64
+ end
65
+
@@ -0,0 +1,32 @@
1
+ require 'facets/functor'
2
+
3
+ module Kernel
4
+
5
+ # Provides access to an object's metaclass (ie. singleton)
6
+ # by-passsing access provisions. So for example:
7
+ #
8
+ # class X
9
+ # meta.attr_accesser :a
10
+ # end
11
+ #
12
+ # X.a = 1
13
+ # X.a #=> 1
14
+ #
15
+ # The fact that some class methods are private and thus inaccessable
16
+ # via use of metaclass, is really a problem with them being private --which
17
+ # is probably not really neccessary. Short of making them public though, thiere
18
+ # is this method or one could use the #instance functor.
19
+ #
20
+ # TODO: Don't see any reason this can't go into core, but there is
21
+ # a conflict with URI prior to 1.8.6, so it will have to wait.
22
+ #
23
+ # CREDIT: Trans
24
+
25
+ def meta
26
+ @_meta_functor ||= Functor.new do |op,*args|
27
+ (class << self; self; end).send(op,*args)
28
+ end
29
+ end
30
+
31
+ end
32
+
@@ -0,0 +1,222 @@
1
+ # = LinkedList
2
+ #
3
+ # LinkedList implements a simple doubly linked list with efficient
4
+ # hash-like element access.
5
+ #
6
+ # This is a simple linked list implementation with efficient random
7
+ # access of data elements. It was inspired by George Moscovitis'
8
+ # LRUCache implementation found in Facets 1.7.30, but unlike the
9
+ # linked list in that cache, this one does not require the use of a
10
+ # mixin on any class to be stored. The linked list provides the
11
+ # push, pop, shift, unshift, first, last, delete and length methods
12
+ # which work just like their namesakes in the Array class, but it
13
+ # also supports setting and retrieving values by key, just like a
14
+ # hash.
15
+ #
16
+ # == History
17
+ #
18
+ # LinkedList was ported from the original in Kirk Hanes IOWA web framework.
19
+ #
20
+ # == Todo
21
+ #
22
+ # * Create an example of usage for docs.
23
+ #
24
+ # == Authors
25
+ #
26
+ # * Kirk Haines <khaines@enigo.com>.
27
+ #
28
+ # == Copying
29
+ #
30
+ # Copyright (C) 2006 Kirk Haines
31
+ #
32
+ # General Public License (GPL)
33
+ #
34
+ # Permission is hereby granted, free of charge, to any person obtaining
35
+ # a copy of this software and associated documentation files (the
36
+ # "Software"), to deal in the Software without restriction, including
37
+ # without limitation the rights to use, copy, modify, merge, publish,
38
+ # distribute, sublicense, and/or sell copies of the Software, and to
39
+ # permit persons to whom the Software is furnished to do so, subject to
40
+ # the following conditions:
41
+ #
42
+ # The above copyright notice and this permission notice shall be
43
+ # included in all copies or substantial portions of the Software.
44
+ #
45
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
46
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
47
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
48
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
49
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
50
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
51
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
52
+
53
+ require 'enumerator'
54
+
55
+ # = LinkedList
56
+ #
57
+ # LinkedList implements a simple doubly linked list with efficient
58
+ # hash-like element access.
59
+ #
60
+ # This is a simple linked list implementation with efficient random
61
+ # access of data elements. It was inspired by George Moscovitis'
62
+ # LRUCache implementation found in Facets 1.7.30, but unlike the
63
+ # linked list in that cache, this one does not require the use of a
64
+ # mixin on any class to be stored. The linked list provides the
65
+ # push, pop, shift, unshift, first, last, delete and length methods
66
+ # which work just like their namesakes in the Array class, but it
67
+ # also supports setting and retrieving values by key, just like a
68
+ # hash.
69
+ #
70
+ class LinkedList
71
+
72
+ include Enumerable
73
+
74
+ # Represents a single node of the linked list.
75
+
76
+ class Node
77
+ attr_accessor :key, :value, :prev_node, :next_node
78
+
79
+ def initialize(key=nil,value=nil,prev_node=nil,next_node=nil)
80
+ @key = key
81
+ @value = value
82
+ @prev_node = prev_node
83
+ @next_node = next_node
84
+ end
85
+ end
86
+
87
+ def initialize
88
+ @head = Node.new
89
+ @tail = Node.new
90
+ @lookup = Hash.new
91
+ node_join(@head,@tail)
92
+ end
93
+
94
+ def [](v)
95
+ @lookup[v].value
96
+ end
97
+
98
+ def []=(k,v)
99
+ if @lookup.has_key?(k)
100
+ @lookup[k].value = v
101
+ else
102
+ n = Node.new(k,v,@head,@head.next_node)
103
+ node_join(n,@head.next_node)
104
+ node_join(@head,n)
105
+ @lookup[k] = n
106
+ end
107
+ v
108
+ end
109
+
110
+ def empty?
111
+ @lookup.empty?
112
+ end
113
+
114
+ def delete(k)
115
+ n = @lookup.delete(k)
116
+ v = n ? node_purge(n) : nil
117
+ v
118
+ end
119
+
120
+ def first
121
+ @head.next_node.value
122
+ end
123
+
124
+ def last
125
+ @tail.prev_node.value
126
+ end
127
+
128
+ def shift
129
+ k = @head.next_node.key
130
+ n = @lookup.delete(k)
131
+ node_delete(n) if n
132
+ end
133
+
134
+ def unshift(v)
135
+ if @lookup.has_key?(v)
136
+ n = @lookup[v]
137
+ node_delete(n)
138
+ node_join(n,@head.next_node)
139
+ node_join(@head,n)
140
+ else
141
+ n = Node.new(v,v,@head,@head.next_node)
142
+ node_join(n,@head.next_node)
143
+ node_join(@head,n)
144
+ @lookup[v] = n
145
+ end
146
+ v
147
+ end
148
+
149
+ def pop
150
+ k = @tail.prev_node.key
151
+ n = @lookup.delete(k)
152
+ node_delete(n) if n
153
+ end
154
+
155
+ def push(v)
156
+ if @lookup.has_key?(v)
157
+ n = @lookup[v]
158
+ node_delete(n)
159
+ node_join(@tail.prev_node,n)
160
+ node_join(n,@tail)
161
+ else
162
+ n = Node.new(v,v,@tail.prev_node,@tail)
163
+ node_join(@tail.prev_node,n)
164
+ node_join(n,@tail)
165
+ @lookup[v] = n
166
+ end
167
+ v
168
+ end
169
+
170
+ def queue
171
+ r = []
172
+ n = @head
173
+ while (n = n.next_node) and n != @tail
174
+ r << n.key
175
+ end
176
+ r
177
+ end
178
+
179
+ def to_a
180
+ r = []
181
+ n = @head
182
+ while (n = n.next_node) and n != @tail
183
+ r << n.value
184
+ end
185
+ r
186
+ end
187
+
188
+ def length
189
+ @lookup.length
190
+ end
191
+
192
+ def each
193
+ n = @head
194
+ while (n = n.next_node) and n != @tail
195
+ yield(n.key,n.value)
196
+ end
197
+ end
198
+
199
+ private
200
+
201
+ def node_delete(n)
202
+ node_join(n.prev_node,n.next_node)
203
+ v = n.value
204
+ end
205
+
206
+ def node_purge(n)
207
+ node_join(n.prev_node,n.next_node)
208
+ v = n.value
209
+ n.value = nil
210
+ n.key = nil
211
+ n.next_node = nil
212
+ n.prev_node = nil
213
+ v
214
+ end
215
+
216
+ def node_join(a,b)
217
+ a.next_node = b
218
+ b.prev_node = a
219
+ end
220
+
221
+ end
222
+
@@ -0,0 +1,157 @@
1
+ # = LRUCache
2
+ #
3
+ # A cache utilizing a simple LRU (Least Recently Used) policy.
4
+ # The items managed by this cache must respond to the #key method.
5
+ # Attempts to optimize reads rather than inserts!
6
+ #
7
+ # LRU semantics are enforced by inserting the items in a queue.
8
+ # The lru item is always at the tail. Two special sentinels
9
+ # (head, tail) are used to simplify (?) the code.
10
+ #
11
+ # == Authors
12
+ #
13
+ # * George Moschovitis
14
+ # * Anastasios Koutoumanos
15
+ #
16
+ # == Copying
17
+ #
18
+ # Copyright 2004 George Moschovitis, Anastasios Koutoumanos
19
+ #
20
+ # Ruby License
21
+ #
22
+ # This module is free software. You may use, modify, and/or redistribute this
23
+ # software under the same terms as Ruby.
24
+ #
25
+ # This program is distributed in the hope that it will be useful, but WITHOUT
26
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
27
+ # FOR A PARTICULAR PURPOSE.
28
+
29
+ # = LRUCache
30
+ #
31
+ # A cache utilizing a simple LRU (Least Recently Used) policy.
32
+ # The items managed by this cache must respond to the #key method.
33
+ # Attempts to optimize reads rather than inserts!
34
+ #
35
+ # LRU semantics are enforced by inserting the items in a queue.
36
+ # The lru item is always at the tail. Two special sentinels
37
+ # (head, tail) are used to simplify (?) the code.
38
+ #
39
+ class LRUCache < Hash
40
+
41
+ # Mix this in your class to make LRU-managable.
42
+
43
+ module Item
44
+ attr_accessor :lru_key, :lru_prev, :lru_next
45
+ end
46
+
47
+ # head-tail sentinels
48
+
49
+ class Sentinel; include Item; end
50
+
51
+ # the maximum number of items in the cache.
52
+
53
+ attr_accessor :max_items
54
+
55
+ # the head sentinel and the tail sentinel, tail.prev points to the lru item.
56
+
57
+ attr_reader :head, :tail
58
+
59
+ def initialize(max_items)
60
+ @max_items = max_items
61
+ lru_clear()
62
+ end
63
+
64
+ # Lookup an item in the cache.
65
+
66
+ def [](key)
67
+ if item = super
68
+ return lru_touch(item)
69
+ end
70
+ end
71
+
72
+ # The inserted item is considered mru!
73
+
74
+ def []=(key, item)
75
+ item = super
76
+ item.lru_key = key
77
+ lru_insert(item)
78
+ end
79
+
80
+ # Delete an item from the cache.
81
+
82
+ def delete(key)
83
+ if item = super
84
+ lru_delete(item)
85
+ end
86
+ end
87
+
88
+ # Clear the cache.
89
+
90
+ def clear
91
+ super
92
+ lru_clear()
93
+ end
94
+
95
+ # The first (mru) element in the cache.
96
+
97
+ def first
98
+ @head.lru_next
99
+ end
100
+
101
+ # The last (lru) element in the cache.
102
+
103
+ def last
104
+ @tail.lru_prev
105
+ end
106
+ alias_method :lru, :last
107
+
108
+ private
109
+
110
+ # Delete an item from the lru list.
111
+
112
+ def lru_delete(item)
113
+ lru_join(item.lru_prev, item.lru_next)
114
+ return item
115
+ end
116
+
117
+ # Join two items in the lru list.
118
+ # Return y to allow for chaining.
119
+
120
+ def lru_join(x, y)
121
+ x.lru_next = y
122
+ y.lru_prev = x
123
+ return y
124
+ end
125
+
126
+ # Append a child item to a parent item in the lru list
127
+ # (Re)inserts the child in the list.
128
+
129
+ def lru_append(parent, child)
130
+ lru_join(child, parent.lru_next)
131
+ lru_join(parent, child)
132
+ end
133
+
134
+ # Insert an item
135
+
136
+ def lru_insert(item)
137
+ delete(last.lru_key) if size() > @max_items
138
+ lru_append(@head, item)
139
+ end
140
+
141
+ # Touch an item, make mru!
142
+ # Returns the item.
143
+
144
+ def lru_touch(item)
145
+ lru_append(@head, lru_delete(item))
146
+ end
147
+
148
+ # Clear the lru.
149
+
150
+ def lru_clear
151
+ @head = Sentinel.new
152
+ @tail = Sentinel.new
153
+ lru_join(@head, @tail)
154
+ end
155
+
156
+ end
157
+