facets 2.1.3 → 2.2.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 (303) hide show
  1. data/AUTHORS +14 -12
  2. data/CHANGES +45 -2
  3. data/NOTES +9 -7
  4. data/lib/core/facets/1stclassmethod.rb +15 -11
  5. data/lib/core/facets/array.rb +0 -1
  6. data/lib/core/facets/array/conjoin.rb +40 -8
  7. data/lib/core/facets/array/delete.rb +8 -2
  8. data/lib/core/facets/array/indexable.rb +30 -3
  9. data/lib/core/facets/array/merge.rb +11 -0
  10. data/lib/core/facets/array/only.rb +3 -3
  11. data/lib/core/facets/array/pad.rb +4 -46
  12. data/lib/core/facets/array/rotate.rb +4 -4
  13. data/lib/core/facets/array/select.rb +2 -0
  14. data/lib/core/facets/array/splice.rb +16 -2
  15. data/lib/core/facets/array/stackable.rb +6 -40
  16. data/lib/core/facets/binding.rb +3 -0
  17. data/lib/core/facets/binding/cflow.rb +10 -64
  18. data/lib/core/facets/binding/defined.rb +10 -0
  19. data/lib/core/facets/binding/eval.rb +10 -76
  20. data/lib/core/facets/binding/here.rb +9 -0
  21. data/lib/core/facets/binding/self.rb +10 -0
  22. data/lib/core/facets/binding/vars.rb +0 -45
  23. data/lib/core/facets/boolean.rb +31 -103
  24. data/lib/core/facets/class/descendents.rb +17 -44
  25. data/lib/core/facets/comparable/bound.rb +8 -70
  26. data/lib/core/facets/comparable/cmp.rb +12 -92
  27. data/lib/core/facets/conversion.rb +122 -321
  28. data/lib/core/facets/dir/multiglob.rb +0 -13
  29. data/lib/core/facets/dir/traverse.rb +61 -111
  30. data/lib/core/facets/enumerable.rb +4 -2
  31. data/lib/core/facets/enumerable/cartesian.rb +36 -85
  32. data/lib/core/facets/enumerable/collect.rb +64 -152
  33. data/lib/core/facets/enumerable/combination.rb +40 -42
  34. data/lib/core/facets/enumerable/count.rb +99 -174
  35. data/lib/core/facets/enumerable/each.rb +86 -0
  36. data/lib/core/facets/enumerable/mash.rb +58 -0
  37. data/lib/core/facets/enumerable/permutation.rb +39 -44
  38. data/lib/core/facets/enumerable/probability.rb +16 -90
  39. data/lib/core/facets/enumerable/split.rb +113 -0
  40. data/lib/core/facets/exception/detail.rb +1 -2
  41. data/lib/core/facets/facets.rb +3 -2
  42. data/lib/core/facets/file/read.rb +4 -59
  43. data/lib/core/facets/file/topath.rb +8 -96
  44. data/lib/core/facets/file/write.rb +21 -49
  45. data/lib/core/facets/filetest/root.rb +4 -3
  46. data/lib/core/facets/functor.rb +5 -43
  47. data/lib/core/facets/hash/at.rb +7 -37
  48. data/lib/core/facets/hash/delete.rb +9 -58
  49. data/lib/core/facets/hash/has_keys.rb +4 -43
  50. data/lib/core/facets/hash/insert.rb +5 -38
  51. data/lib/core/facets/hash/inverse.rb +2 -41
  52. data/lib/core/facets/hash/iterate.rb +4 -45
  53. data/lib/core/facets/hash/keyize.rb +24 -92
  54. data/lib/core/facets/hash/merge.rb +4 -38
  55. data/lib/core/facets/hash/new.rb +5 -38
  56. data/lib/core/facets/hash/op.rb +20 -66
  57. data/lib/core/facets/hash/rekey.rb +9 -87
  58. data/lib/core/facets/hash/select.rb +1 -1
  59. data/lib/core/facets/hash/slice.rb +42 -0
  60. data/lib/core/facets/hash/traverse.rb +6 -46
  61. data/lib/core/facets/hash/update.rb +27 -67
  62. data/lib/core/facets/hash/weave.rb +22 -42
  63. data/lib/core/facets/indexable.rb +42 -14
  64. data/lib/core/facets/integer/bitmask.rb +69 -106
  65. data/lib/core/facets/integer/factorial.rb +1 -44
  66. data/lib/core/facets/integer/multiples.rb +27 -22
  67. data/lib/core/facets/integer/of.rb +1 -33
  68. data/lib/core/facets/kernel.rb +4 -2
  69. data/lib/core/facets/kernel/ask.rb +15 -3
  70. data/lib/core/facets/kernel/callstack.rb +38 -69
  71. data/lib/core/facets/kernel/constant.rb +2 -38
  72. data/lib/core/facets/kernel/deepcopy.rb +3 -55
  73. data/lib/core/facets/kernel/dir.rb +2 -0
  74. data/lib/core/facets/kernel/ergo.rb +2 -2
  75. data/lib/core/facets/kernel/instance.rb +51 -120
  76. data/lib/core/facets/kernel/metaid.rb +35 -73
  77. data/lib/core/facets/kernel/object.rb +14 -39
  78. data/lib/core/facets/kernel/op_esc.rb +24 -2
  79. data/lib/core/facets/kernel/populate.rb +6 -69
  80. data/lib/core/facets/kernel/report.rb +28 -33
  81. data/lib/core/facets/kernel/require.rb +7 -21
  82. data/lib/core/facets/kernel/respond.rb +11 -1
  83. data/lib/core/facets/kernel/returning.rb +50 -0
  84. data/lib/core/facets/kernel/silence.rb +12 -24
  85. data/lib/core/facets/kernel/super.rb +12 -76
  86. data/lib/core/facets/kernel/tap.rb +25 -107
  87. data/lib/core/facets/kernel/val.rb +7 -46
  88. data/lib/core/facets/kernel/withattr.rb +6 -64
  89. data/lib/core/facets/matchdata/matchset.rb +8 -50
  90. data/lib/core/facets/module.rb +3 -1
  91. data/lib/core/facets/module/abstract.rb +9 -47
  92. data/lib/core/facets/module/alias.rb +11 -68
  93. data/lib/core/facets/module/attr.rb +36 -15
  94. data/lib/core/facets/module/cattr.rb +8 -76
  95. data/lib/core/facets/module/clone.rb +15 -66
  96. data/lib/core/facets/module/include.rb +54 -114
  97. data/lib/core/facets/module/methods.rb +15 -13
  98. data/lib/core/facets/module/modify.rb +20 -206
  99. data/lib/core/facets/module/name.rb +19 -83
  100. data/lib/core/facets/module/require.rb +48 -53
  101. data/lib/core/facets/module/traits.rb +74 -33
  102. data/lib/core/facets/nilclass/status.rb +25 -2
  103. data/lib/core/facets/numeric/round.rb +24 -89
  104. data/lib/core/facets/proc/bind.rb +16 -59
  105. data/lib/core/facets/proc/compose.rb +6 -40
  106. data/lib/core/facets/proc/fn.rb +2 -0
  107. data/lib/core/facets/range/combine.rb +15 -51
  108. data/lib/core/facets/range/overlap.rb +8 -64
  109. data/lib/core/facets/regexp/arity.rb +6 -41
  110. data/lib/core/facets/stackable.rb +43 -4
  111. data/lib/core/facets/string.rb +2 -0
  112. data/lib/core/facets/string/align.rb +45 -55
  113. data/lib/core/facets/string/blank.rb +2 -46
  114. data/lib/core/facets/string/bracket.rb +14 -87
  115. data/lib/core/facets/string/case.rb +45 -32
  116. data/lib/core/facets/string/crypt.rb +3 -40
  117. data/lib/core/facets/string/filter.rb +7 -49
  118. data/lib/core/facets/string/format.rb +24 -126
  119. data/lib/core/facets/string/indexable.rb +50 -133
  120. data/lib/core/facets/string/interpolate.rb +24 -59
  121. data/lib/core/facets/string/natcmp.rb +5 -39
  122. data/lib/core/facets/string/nchar.rb +37 -45
  123. data/lib/core/facets/string/op.rb +13 -0
  124. data/lib/core/facets/string/partitions.rb +38 -99
  125. data/lib/core/facets/string/range.rb +8 -49
  126. data/lib/core/facets/string/regesc.rb +9 -42
  127. data/lib/core/facets/string/scan.rb +6 -52
  128. data/lib/core/facets/string/splice.rb +8 -13
  129. data/lib/core/facets/string/tabs.rb +16 -153
  130. data/lib/core/facets/symbol.rb +3 -1
  131. data/lib/core/facets/symbol/chomp.rb +11 -29
  132. data/lib/core/facets/symbol/generate.rb +4 -43
  133. data/lib/core/facets/symbol/not.rb +13 -25
  134. data/lib/core/facets/symbol/shadow.rb +2 -40
  135. data/lib/core/facets/symbol/succ.rb +14 -13
  136. data/lib/core/facets/symbol/to_proc.rb +33 -28
  137. data/lib/core/facets/time.rb +1 -0
  138. data/lib/core/facets/time/change.rb +5 -38
  139. data/lib/core/facets/time/elapse.rb +2 -41
  140. data/lib/core/facets/time/stamp.rb +47 -0
  141. data/lib/core/facets/unboundmethod.rb +3 -0
  142. data/lib/core/facets/unboundmethod/arguments.rb +27 -4
  143. data/lib/core/facets/unboundmethod/name.rb +21 -7
  144. data/lib/methods/facets/enumerable/cluster_by.rb +1 -1
  145. data/lib/methods/facets/enumerable/collate.rb +1 -0
  146. data/lib/methods/facets/enumerable/divide.rb +1 -1
  147. data/lib/methods/facets/enumerable/each_by.rb +1 -1
  148. data/lib/methods/facets/enumerable/each_pair.rb +1 -1
  149. data/lib/methods/facets/enumerable/eachn.rb +1 -1
  150. data/lib/methods/facets/enumerable/graph.rb +1 -1
  151. data/lib/methods/facets/enumerable/group_by.rb +1 -1
  152. data/lib/methods/facets/enumerable/inject.rb +1 -0
  153. data/lib/methods/facets/enumerable/map_send.rb +1 -0
  154. data/lib/methods/facets/enumerable/modulate.rb +1 -0
  155. data/lib/methods/facets/enumerable/partition_by.rb +1 -1
  156. data/lib/methods/facets/hash/collate.rb +1 -1
  157. data/lib/methods/facets/hash/except.rb +1 -0
  158. data/lib/methods/facets/hash/graph.rb +1 -1
  159. data/lib/methods/facets/hash/mash.rb +1 -0
  160. data/lib/methods/facets/kernel/Bit.rb +1 -0
  161. data/lib/methods/facets/kernel/complete.rb +1 -1
  162. data/lib/methods/facets/kernel/here.rb +1 -1
  163. data/lib/methods/facets/kernel/non_nil.rb +1 -0
  164. data/lib/methods/facets/kernel/respond_with_value.rb +1 -0
  165. data/lib/methods/facets/kernel/with.rb +1 -1
  166. data/lib/methods/facets/module/class_def.rb +1 -0
  167. data/lib/methods/facets/string/camelcase.rb +1 -0
  168. data/lib/methods/facets/string/op_minus.rb +1 -0
  169. data/lib/methods/facets/string/snakecase.rb +1 -0
  170. data/lib/more/facets/attributes.rb +5 -5
  171. data/lib/more/facets/basicobject.rb +0 -62
  172. data/lib/{core/facets/continuation/create.rb → more/facets/continuation.rb} +4 -21
  173. data/lib/more/facets/duration.rb +534 -0
  174. data/lib/more/facets/lazy.rb +3 -3
  175. data/lib/more/facets/namespace.rb +23 -71
  176. data/lib/more/facets/rbsystem.rb +42 -8
  177. data/lib/more/facets/stylize.rb +6 -3
  178. data/lib/more/facets/thread.rb +55 -0
  179. data/meta/MANIFEST +49 -18
  180. data/meta/ROLLRC +1 -1
  181. data/meta/project.yaml +2 -2
  182. data/task/install +1 -1
  183. data/task/test/general +8 -2
  184. data/test/unit/array/test_pad.rb +30 -45
  185. data/test/unit/array/test_stackable.rb +14 -28
  186. data/test/unit/binding/test_cflow.rb +34 -49
  187. data/test/unit/binding/test_defined.rb +17 -0
  188. data/test/unit/binding/test_eval.rb +11 -39
  189. data/test/unit/binding/test_here.rb +17 -0
  190. data/test/unit/binding/test_self.rb +17 -0
  191. data/test/unit/binding/test_vars.rb +22 -37
  192. data/test/unit/class/test_descendents.rb +15 -30
  193. data/test/unit/class/test_initializer.rb +1 -8
  194. data/test/unit/comparable/test_bound.rb +38 -53
  195. data/test/unit/comparable/test_cmp.rb +45 -60
  196. data/test/unit/dir/test_traverse.rb +56 -0
  197. data/test/unit/enumerable/test_cartesian.rb +34 -47
  198. data/test/unit/enumerable/test_collect.rb +16 -125
  199. data/test/unit/enumerable/test_combination.rb +1 -8
  200. data/test/unit/enumerable/test_count.rb +51 -66
  201. data/test/unit/enumerable/test_each.rb +77 -0
  202. data/test/unit/enumerable/test_mash.rb +51 -0
  203. data/test/unit/enumerable/test_permutation.rb +1 -7
  204. data/test/unit/enumerable/test_probability.rb +42 -55
  205. data/test/unit/enumerable/test_split.rb +52 -0
  206. data/test/unit/exception/test_detail.rb +19 -0
  207. data/test/unit/file/test_read.rb +34 -0
  208. data/test/unit/file/test_topath.rb +17 -25
  209. data/test/unit/file/test_write.rb +6 -12
  210. data/test/unit/filetest/test_root.rb +14 -0
  211. data/test/unit/hash/test_at.rb +9 -21
  212. data/test/unit/hash/test_delete.rb +22 -37
  213. data/test/unit/hash/test_has_keys.rb +13 -28
  214. data/test/unit/hash/test_insert.rb +9 -23
  215. data/test/unit/hash/test_inverse.rb +11 -26
  216. data/test/unit/hash/test_iterate.rb +16 -31
  217. data/test/unit/hash/test_keyize.rb +40 -55
  218. data/test/unit/hash/test_merge.rb +10 -25
  219. data/test/unit/hash/test_new.rb +9 -24
  220. data/test/unit/hash/test_op.rb +1 -7
  221. data/test/unit/hash/test_rekey.rb +47 -62
  222. data/test/unit/hash/test_traverse.rb +17 -32
  223. data/test/unit/hash/test_update.rb +30 -45
  224. data/test/unit/hash/test_weave.rb +10 -23
  225. data/test/unit/integer/test_bitmask.rb +48 -44
  226. data/test/unit/integer/test_factorial.rb +11 -26
  227. data/test/unit/integer/test_multiples.rb +1 -5
  228. data/test/unit/integer/test_of.rb +14 -29
  229. data/test/unit/kernel/test_callstack.rb +13 -28
  230. data/test/unit/kernel/test_constant.rb +14 -28
  231. data/test/unit/kernel/test_deepcopy.rb +20 -35
  232. data/test/unit/kernel/test_instance.rb +46 -61
  233. data/test/unit/kernel/test_metaid.rb +42 -57
  234. data/test/unit/kernel/test_object.rb +14 -29
  235. data/test/unit/kernel/test_populate.rb +38 -53
  236. data/test/unit/kernel/test_report.rb +1 -7
  237. data/test/unit/kernel/test_returning.rb +16 -0
  238. data/test/unit/kernel/test_silence.rb +8 -23
  239. data/test/unit/kernel/test_super.rb +41 -56
  240. data/test/unit/kernel/test_tap.rb +15 -39
  241. data/test/unit/kernel/test_val.rb +7 -20
  242. data/test/unit/kernel/test_withattr.rb +29 -44
  243. data/test/unit/matchdata/test_matchset.rb +20 -35
  244. data/test/unit/module/test_abstract.rb +15 -30
  245. data/test/unit/module/test_alias.rb +32 -45
  246. data/test/unit/module/test_cattr.rb +39 -54
  247. data/test/unit/module/test_clone.rb +31 -43
  248. data/test/unit/module/test_include.rb +1 -35
  249. data/test/unit/module/test_modify.rb +102 -114
  250. data/test/unit/module/test_name.rb +1 -7
  251. data/test/unit/numeric/test_round.rb +46 -61
  252. data/test/unit/proc/test_bind.rb +29 -44
  253. data/test/unit/proc/test_compose.rb +20 -35
  254. data/test/unit/range/test_combine.rb +14 -29
  255. data/test/unit/range/test_overlap.rb +34 -51
  256. data/test/unit/regexp/test_arity.rb +14 -29
  257. data/test/unit/string/test_align.rb +13 -27
  258. data/test/unit/string/test_blank.rb +12 -27
  259. data/test/unit/string/test_bracket.rb +52 -67
  260. data/test/unit/string/test_case.rb +19 -38
  261. data/test/unit/string/test_crypt.rb +10 -25
  262. data/test/unit/string/test_filter.rb +1 -7
  263. data/test/unit/string/test_format.rb +2 -7
  264. data/test/unit/string/test_indexable.rb +54 -69
  265. data/test/unit/string/test_interpolate.rb +8 -21
  266. data/test/unit/string/test_natcmp.rb +11 -26
  267. data/test/unit/string/test_nchar.rb +1 -14
  268. data/test/unit/string/test_op.rb +14 -0
  269. data/test/unit/string/test_partitions.rb +39 -54
  270. data/test/unit/string/test_range.rb +17 -32
  271. data/test/unit/string/test_regesc.rb +1 -7
  272. data/test/unit/string/test_scan.rb +23 -38
  273. data/test/unit/string/test_stackable.rb +79 -98
  274. data/test/unit/string/test_tabs.rb +1 -7
  275. data/test/unit/symbol/test_chomp.rb +10 -21
  276. data/test/unit/symbol/test_generate.rb +7 -22
  277. data/test/unit/symbol/test_not.rb +10 -25
  278. data/test/unit/symbol/test_shadow.rb +8 -23
  279. data/test/unit/symbol/test_succ.rb +1 -7
  280. data/test/unit/symbol/test_to_proc.rb +1 -7
  281. data/test/unit/test_attributes.rb +1 -1
  282. data/test/unit/test_continuation.rb +13 -0
  283. data/test/unit/test_conversion.rb +1 -14
  284. data/test/unit/test_namespace.rb +30 -3
  285. data/test/unit/test_thread.rb +23 -0
  286. data/test/unit/time/test_change.rb +11 -26
  287. data/test/unit/time/test_elapse.rb +10 -25
  288. data/test/unit/time/test_stamp.rb +28 -0
  289. metadata +65 -25
  290. data/lib/core/facets/array/unzip.rb +0 -14
  291. data/lib/core/facets/continuation.rb +0 -1
  292. data/lib/core/facets/enumerable/collate.rb +0 -104
  293. data/lib/core/facets/kernel/require_esc.rb +0 -44
  294. data/lib/more/facets/mapsend.rb +0 -98
  295. data/lib/more/facets/pp_s.rb +0 -30
  296. data/log/history.rd +0 -38
  297. data/log/todo.rd +0 -4
  298. data/task/special/quickopts +0 -15
  299. data/test/unit/continuation/test_create.rb +0 -28
  300. data/test/unit/enumerable/test_collate.rb +0 -51
  301. data/test/unit/kernel/test_require_esc.rb +0 -29
  302. data/test/unit/test_mapsend.rb +0 -18
  303. data/test/unit/test_pp_s.rb +0 -17
@@ -11,8 +11,8 @@ class Array
11
11
  #
12
12
  # [1,2,3].rotate(-1) #=> [2,3,1]
13
13
  #
14
- # CREDIT Florian Gross
15
- # CREDIT Thomas Sawyer
14
+ # CREDIT: Florian Gross
15
+ # CREDIT: Thomas Sawyer
16
16
 
17
17
  def rotate(n=1)
18
18
  self.dup.rotate!(n)
@@ -24,8 +24,8 @@ class Array
24
24
  # a.rotate!
25
25
  # a #=> [3,1,2]
26
26
  #
27
- # CREDIT Florian Gross
28
- # CREDIT Thomas Sawyer
27
+ # CREDIT: Florian Gross
28
+ # CREDIT: Thomas Sawyer
29
29
 
30
30
  def rotate!(n=1)
31
31
  n = n.to_int
@@ -5,6 +5,8 @@ class Array
5
5
  # a = [1,2,3,4,5,6,7,8,9,10]
6
6
  # a.select!{ |e| e % 2 == 0 }
7
7
  # a #=> [2,4,6,8,10]
8
+ #
9
+ # CREDIT: Gavin Sinclair
8
10
 
9
11
  def select! # :yield:
10
12
  reject!{ |e| not yield(e) }
@@ -1,9 +1,23 @@
1
1
  class Array
2
2
 
3
+ # Store a value at a givne index.
4
+ # Store is an alias for #[]=.
5
+
3
6
  alias_method :store, :[]=
4
7
 
5
- # Like #store, but acts like slice!
6
- # when given only one argument.
8
+ # Splice acts a combination of #slice! and #store.
9
+ # If two arguments are given it calls #store.
10
+ # If a single argument is give it calls slice!.
11
+ #
12
+ # a = [1,2,3]
13
+ # a.splice(1) #=> 2
14
+ # a #=> [1,3]
15
+ #
16
+ # a = [1,2,3]
17
+ # a.splice(1,4) #=> 4
18
+ # a #=>[1,4,3]
19
+ #
20
+ # CREDIT: Trans
7
21
 
8
22
  def splice(*args)
9
23
  if args.size == 1
@@ -1,12 +1,3 @@
1
- # TITLE:
2
- # Stackable
3
- #
4
- # DESCRIPTION:
5
- # Array extensions for stack maniipulation.
6
- #
7
- # NOTES:
8
- # - TODO Better name than #place --top, put, or what?
9
-
10
1
  require 'facets/array/splice'
11
2
  require 'facets/stackable'
12
3
 
@@ -18,9 +9,11 @@ class Array
18
9
  # It is the converse of push.
19
10
  #
20
11
  # a=[1,2,3]
21
- # a.place(9) #=> [9,1,2,3]
22
- # a #=> [9,1,2,3]
12
+ # a.poke(9) #=> [9,1,2,3]
13
+ # a #=> [9,1,2,3]
23
14
  #
15
+ # CREDIT: Trans
16
+
24
17
  alias_method :poke, :unshift
25
18
 
26
19
  # Alias for shift which removes an object
@@ -31,34 +24,7 @@ class Array
31
24
  # a.pull #=> 1
32
25
  # a #=> [2,3]
33
26
  #
27
+ # CREDIT: Trans
28
+
34
29
  alias_method :pull, :shift
35
30
  end
36
-
37
-
38
- # _____ _
39
- # |_ _|__ ___| |_
40
- # | |/ _ \/ __| __|
41
- # | | __/\__ \ |_
42
- # |_|\___||___/\__|
43
- #
44
- =begin test
45
-
46
- require 'test/unit'
47
-
48
- class TestArray < Test::Unit::TestCase
49
-
50
- def test_poke
51
- a = [2,3]
52
- assert_equal( [1,2,3], a.poke(1) )
53
- assert_equal( [4,1,2,3], a.poke(4) )
54
- end
55
-
56
- def test_pull
57
- a = [1,2,3]
58
- assert_equal( 1, a.pull )
59
- assert_equal( [2,3], a )
60
- end
61
-
62
- end
63
-
64
- =end
@@ -1,3 +1,6 @@
1
1
  require 'facets/binding/eval.rb'
2
+ require 'facets/binding/defined.rb'
3
+ require 'facets/binding/self.rb'
4
+ require 'facets/binding/here.rb' # technically should be in kernel.
2
5
  require 'facets/binding/cflow.rb'
3
6
  require 'facets/binding/vars.rb'
@@ -10,27 +10,27 @@ require 'facets/kernel/callstack'
10
10
  #
11
11
  class Binding
12
12
 
13
- def self.included(base)
14
- base.send(:include, Eval)
15
- end
13
+ # Returns line number.
16
14
 
17
- # returns line number
18
15
  def __LINE__
19
16
  eval("__LINE__")
20
17
  end
21
18
 
22
- # returns file name
19
+ # Returns file name.
20
+
23
21
  def __FILE__
24
22
  eval("__FILE__")
25
23
  end
26
24
 
27
- # return the directory of the file
25
+ # Return the directory of the file.
26
+
28
27
  def __DIR__
29
28
  eval("File.dirname(__FILE__)")
30
29
  end
31
30
 
32
31
  # Returns the call stack, in array format.
33
- def call_stack( level = 1 )
32
+
33
+ def call_stack(level=1)
34
34
  eval( "call_stack( #{level} )" )
35
35
  end
36
36
 
@@ -39,12 +39,14 @@ class Binding
39
39
  # def tester; p called; end
40
40
  # tester #=> :tester
41
41
  #
42
+
42
43
  def called
43
44
  name = /\`([^\']+)\'/.match(caller(1).first)[1]
44
45
  return name.to_sym
45
46
  end
46
47
 
47
48
  # Returns the call stack, same format as Kernel#caller()
49
+
48
50
  def caller( skip=0 )
49
51
  eval("caller(#{skip})")
50
52
  end
@@ -56,66 +58,10 @@ class Binding
56
58
  # def tester; p methodname; end
57
59
  # tester #=> "tester"
58
60
  #
61
+
59
62
  def methodname
60
63
  name = /\`([^\']+)\'/.match(caller(1).first)[1]
61
64
  return name
62
65
  end
63
66
 
64
67
  end
65
-
66
-
67
-
68
- # _____ _
69
- # |_ _|__ ___| |_
70
- # | |/ _ \/ __| __|
71
- # | | __/\__ \ |_
72
- # |_|\___||___/\__|
73
- #
74
- =begin test
75
-
76
- require 'test/unit'
77
-
78
- class TestBindingCallStack < Test::Unit::TestCase
79
-
80
- def setup
81
- a = 1
82
- b = 2
83
- x = "hello"
84
- # the line number must be updated if it moves
85
- @bind = binding; @this_line_no = __LINE__
86
- @this_file_name = File.basename( __FILE__ ) # why does it equal basename only?
87
- end
88
-
89
- def test___LINE__
90
- assert_equal( @this_line_no, @bind.__LINE__ )
91
- end
92
-
93
- def test___FILE__
94
- assert_equal( @this_file_name, File.basename( @bind.__FILE__ ) )
95
- end
96
-
97
- def test___DIR__
98
- assert_equal( File.dirname( @bind.__FILE__ ), @bind.__DIR__ )
99
- end
100
-
101
- def test_call_stack
102
- assert_instance_of( Array, @bind.call_stack )
103
- end
104
-
105
- def test_called
106
- assert_equal( :setup, @bind.called )
107
- end
108
-
109
- def test_caller
110
- # how to test?
111
- assert_nothing_raised{ @bind.caller }
112
- end
113
-
114
- def test_methodname
115
- assert_equal( 'setup', @bind.methodname )
116
- end
117
-
118
- end
119
-
120
- =end
121
-
@@ -0,0 +1,10 @@
1
+ class Binding
2
+
3
+ # Returns the nature of something within the context of the binding.
4
+ # Returns nil if that thing is not defined.
5
+
6
+ def defined?(x)
7
+ eval("defined? #{x}")
8
+ end
9
+
10
+ end
@@ -1,83 +1,17 @@
1
- # TITLE:
2
- # Primary Binding Extensions
3
- #
4
- # SUMMARY:
5
- # The heart of all binding extensions.
6
- # Some of this will be standard Ruby in future version.
1
+ unless (RUBY_VERSION[0,3] == '1.9')
7
2
 
8
- class Binding
3
+ class Binding
9
4
 
10
- # Evaluate a Ruby source code string (or block) in the binding context.
5
+ # Evaluate a Ruby source code string (or block) in the binding context.
11
6
 
12
- def eval(str) #='', &blk )
13
- #if block_given?
14
- # Kernel.eval( self, &blk )
15
- #elsif str
16
- Kernel.eval(str, self)
17
- #end
18
- end
19
-
20
- # Returns the nature of something, nil if that thing is not defined.
21
-
22
- def defined?(x)
23
- eval("defined? #{x}")
24
- end
25
-
26
- # Returns self of the binding context.
27
-
28
- def self()
29
- @self ||= eval("self")
30
- @self
31
- end
32
-
33
- end
34
-
35
-
36
- module Kernel
37
- # A shorthand pronoun for binding().
38
- #
39
- # a = 3
40
- # b = here
41
- # eval( "a", b ) #=> 3
42
- #
43
- alias_method :here, :binding
44
- end
45
-
46
-
47
- # _____ _
48
- # |_ _|__ ___| |_
49
- # | |/ _ \/ __| __|
50
- # | | __/\__ \ |_
51
- # |_|\___||___/\__|
52
- #
53
- =begin test
54
-
55
- require 'test/unit'
56
-
57
- class TestBindingEval < Test::Unit::TestCase
58
-
59
- def setup
60
- x = "hello"
61
- @bind = binding; @this_line_no = __LINE__
62
- end
63
-
64
- def test_eval
65
- assert_equal( "hello", @bind.eval("x") )
66
- end
67
-
68
- def test_self
69
- assert_equal( self, @bind.self )
70
- end
71
-
72
- def test_defined?
73
- assert( @bind.defined?("x") )
74
- end
75
-
76
- def test_here
77
- assert_instance_of( Binding, here )
7
+ def eval(str) #='', &blk )
8
+ #if block_given?
9
+ # Kernel.eval( self, &blk )
10
+ #elsif str
11
+ Kernel.eval(str, self)
12
+ #end
78
13
  end
79
14
 
80
15
  end
81
16
 
82
- =end
83
-
17
+ end
@@ -0,0 +1,9 @@
1
+ module Kernel
2
+ # A shorthand pronoun for binding().
3
+ #
4
+ # a = 3
5
+ # b = here
6
+ # eval( "a", b ) #=> 3
7
+ #
8
+ alias_method :here, :binding
9
+ end
@@ -0,0 +1,10 @@
1
+ class Binding
2
+
3
+ # Returns self of the binding context.
4
+
5
+ def self()
6
+ @self ||= eval("self")
7
+ @self
8
+ end
9
+
10
+ end
@@ -11,10 +11,6 @@ require 'facets/binding/eval.rb'
11
11
  #
12
12
  class Binding
13
13
 
14
- def self.included(base) #:nodoc:
15
- base.send(:include, Eval)
16
- end
17
-
18
14
  # Returns the local variables defined in the binding context
19
15
  #
20
16
  # a = 2
@@ -43,44 +39,3 @@ class Binding
43
39
  end
44
40
 
45
41
  end
46
-
47
-
48
-
49
- # _____ _
50
- # |_ _|__ ___| |_
51
- # | |/ _ \/ __| __|
52
- # | | __/\__ \ |_
53
- # |_|\___||___/\__|
54
- #
55
- =begin test
56
-
57
- require 'test/unit'
58
-
59
- class TestBindingVariables < Test::Unit::TestCase
60
-
61
- def setup
62
- a = 1
63
- b = 2
64
- x = "hello"
65
- # the line number must be updated if it moves
66
- @bind = binding; @this_line_no = __LINE__
67
- @this_file_name = File.basename( __FILE__ ) # why does it equal basename only?
68
- end
69
-
70
- def test_local_variables
71
- assert_equal( ["a","b","x"], @bind.local_variables )
72
- end
73
-
74
- def test_op_store
75
- assert_nothing_raised{ @bind["x"] = "goodbye" }
76
- assert_equal( "goodbye", @bind["x"] )
77
- end
78
-
79
- def test_op_fetch
80
- assert_equal( "hello", @bind["x"] )
81
- end
82
-
83
- end
84
-
85
- =end
86
-
@@ -1,7 +1,35 @@
1
- # boolean.rb
2
-
3
- # As suggested by Ara T. Howard
1
+ # = TITLE:
2
+ #
3
+ # Boolean
4
+ #
5
+ # = DESCRIPTION:
6
+ #
7
+ # Stackable mixin provides #pop, #push, #pull, etc.
8
+ # It depends on #slice, #splice and #insert.
9
+ #
10
+ # = COPYRIGHT:
11
+ #
12
+ # Copyright (c) 2006 Thomas Sawyer
13
+ #
14
+ # Ruby License
15
+ #
16
+ # This module is free software. You may use, modify, and/or redistribute this
17
+ # software under the same terms as Ruby.
18
+ #
19
+ # This program is distributed in the hope that it will be useful, but WITHOUT
20
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
21
+ # FOR A PARTICULAR PURPOSE.
22
+ #
23
+ #
24
+ # = AUTHORS:
25
+ #
26
+ # - Thomas Sawyer
27
+ #
28
+ # = NOTES:
29
+ #
30
+ # - This was suggested by Ara T. Howard
4
31
 
32
+ #
5
33
  class String
6
34
 
7
35
  # Interpret common affirmative string meanings as true,
@@ -131,103 +159,3 @@ class NilClass
131
159
  false
132
160
  end
133
161
  end
134
-
135
-
136
-
137
-
138
- # _____ _
139
- # |_ _|__ ___| |_
140
- # | |/ _ \/ __| __|
141
- # | | __/\__ \ |_
142
- # |_|\___||___/\__|
143
- #
144
- =begin test
145
-
146
- require 'test/unit'
147
-
148
-
149
- class TestStringBoolean < Test::Unit::TestCase
150
-
151
- def test_to_b
152
- assert( 'true'.to_b )
153
- assert( 'True'.to_b )
154
- assert( 'yes'.to_b )
155
- assert( 'YES'.to_b )
156
- assert( 'on'.to_b )
157
- assert( 'ON'.to_b )
158
- assert( 't'.to_b )
159
- assert( '1'.to_b )
160
- assert( 'y'.to_b )
161
- assert( 'Y'.to_b )
162
- assert( '=='.to_b )
163
- assert( ! 'nil'.to_b )
164
- assert( ! 'false'.to_b )
165
- assert( ! 'blahblahtrueblah'.to_b )
166
- assert_equal( nil, 'nil'.to_b )
167
- assert_equal( nil, 'null'.to_b )
168
- end
169
-
170
- end
171
-
172
-
173
- class TestArrayBoolean < Test::Unit::TestCase
174
-
175
- def test_to_b
176
- a = []
177
- assert_equal( false, a.to_b )
178
- end
179
-
180
- end
181
-
182
-
183
- class TestNumericBoolean < Test::Unit::TestCase
184
-
185
- def test_to_b
186
- assert_equal( false, 0.to_b )
187
- assert_equal( true, 1.to_b )
188
- end
189
-
190
- end
191
-
192
-
193
- class TestKernelBoolean < Test::Unit::TestCase
194
-
195
- def test_to_b
196
- assert_equal( true, true.to_b )
197
- assert_equal( false, false.to_b )
198
- assert_equal( false, nil.to_b )
199
- end
200
-
201
- def test_false?
202
- assert( false.false? )
203
- assert( (1 == 2).false? )
204
- assert( ! (1 == 1).false? )
205
- end
206
-
207
- def test_true?
208
- assert( true.true? )
209
- assert( (1 == 1).true? )
210
- assert( ! (1 == 2).true? )
211
- end
212
-
213
- def test_bool?
214
- assert_equal( true, true.bool? )
215
- assert_equal( true, false.bool? )
216
- assert_equal( false, nil.bool? )
217
- assert_equal( false, 0.bool? )
218
- end
219
-
220
- end
221
-
222
-
223
- class TestBoolean < Test::Unit::TestCase
224
-
225
- def test_to_bool
226
- assert_equal( true, true.to_bool )
227
- assert_equal( false, false.to_bool )
228
- assert_equal( false, nil.to_bool )
229
- end
230
-
231
- end
232
-
233
- =end