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.
- data/AUTHORS +14 -12
- data/CHANGES +45 -2
- data/NOTES +9 -7
- data/lib/core/facets/1stclassmethod.rb +15 -11
- data/lib/core/facets/array.rb +0 -1
- data/lib/core/facets/array/conjoin.rb +40 -8
- data/lib/core/facets/array/delete.rb +8 -2
- data/lib/core/facets/array/indexable.rb +30 -3
- data/lib/core/facets/array/merge.rb +11 -0
- data/lib/core/facets/array/only.rb +3 -3
- data/lib/core/facets/array/pad.rb +4 -46
- data/lib/core/facets/array/rotate.rb +4 -4
- data/lib/core/facets/array/select.rb +2 -0
- data/lib/core/facets/array/splice.rb +16 -2
- data/lib/core/facets/array/stackable.rb +6 -40
- data/lib/core/facets/binding.rb +3 -0
- data/lib/core/facets/binding/cflow.rb +10 -64
- data/lib/core/facets/binding/defined.rb +10 -0
- data/lib/core/facets/binding/eval.rb +10 -76
- data/lib/core/facets/binding/here.rb +9 -0
- data/lib/core/facets/binding/self.rb +10 -0
- data/lib/core/facets/binding/vars.rb +0 -45
- data/lib/core/facets/boolean.rb +31 -103
- data/lib/core/facets/class/descendents.rb +17 -44
- data/lib/core/facets/comparable/bound.rb +8 -70
- data/lib/core/facets/comparable/cmp.rb +12 -92
- data/lib/core/facets/conversion.rb +122 -321
- data/lib/core/facets/dir/multiglob.rb +0 -13
- data/lib/core/facets/dir/traverse.rb +61 -111
- data/lib/core/facets/enumerable.rb +4 -2
- data/lib/core/facets/enumerable/cartesian.rb +36 -85
- data/lib/core/facets/enumerable/collect.rb +64 -152
- data/lib/core/facets/enumerable/combination.rb +40 -42
- data/lib/core/facets/enumerable/count.rb +99 -174
- data/lib/core/facets/enumerable/each.rb +86 -0
- data/lib/core/facets/enumerable/mash.rb +58 -0
- data/lib/core/facets/enumerable/permutation.rb +39 -44
- data/lib/core/facets/enumerable/probability.rb +16 -90
- data/lib/core/facets/enumerable/split.rb +113 -0
- data/lib/core/facets/exception/detail.rb +1 -2
- data/lib/core/facets/facets.rb +3 -2
- data/lib/core/facets/file/read.rb +4 -59
- data/lib/core/facets/file/topath.rb +8 -96
- data/lib/core/facets/file/write.rb +21 -49
- data/lib/core/facets/filetest/root.rb +4 -3
- data/lib/core/facets/functor.rb +5 -43
- data/lib/core/facets/hash/at.rb +7 -37
- data/lib/core/facets/hash/delete.rb +9 -58
- data/lib/core/facets/hash/has_keys.rb +4 -43
- data/lib/core/facets/hash/insert.rb +5 -38
- data/lib/core/facets/hash/inverse.rb +2 -41
- data/lib/core/facets/hash/iterate.rb +4 -45
- data/lib/core/facets/hash/keyize.rb +24 -92
- data/lib/core/facets/hash/merge.rb +4 -38
- data/lib/core/facets/hash/new.rb +5 -38
- data/lib/core/facets/hash/op.rb +20 -66
- data/lib/core/facets/hash/rekey.rb +9 -87
- data/lib/core/facets/hash/select.rb +1 -1
- data/lib/core/facets/hash/slice.rb +42 -0
- data/lib/core/facets/hash/traverse.rb +6 -46
- data/lib/core/facets/hash/update.rb +27 -67
- data/lib/core/facets/hash/weave.rb +22 -42
- data/lib/core/facets/indexable.rb +42 -14
- data/lib/core/facets/integer/bitmask.rb +69 -106
- data/lib/core/facets/integer/factorial.rb +1 -44
- data/lib/core/facets/integer/multiples.rb +27 -22
- data/lib/core/facets/integer/of.rb +1 -33
- data/lib/core/facets/kernel.rb +4 -2
- data/lib/core/facets/kernel/ask.rb +15 -3
- data/lib/core/facets/kernel/callstack.rb +38 -69
- data/lib/core/facets/kernel/constant.rb +2 -38
- data/lib/core/facets/kernel/deepcopy.rb +3 -55
- data/lib/core/facets/kernel/dir.rb +2 -0
- data/lib/core/facets/kernel/ergo.rb +2 -2
- data/lib/core/facets/kernel/instance.rb +51 -120
- data/lib/core/facets/kernel/metaid.rb +35 -73
- data/lib/core/facets/kernel/object.rb +14 -39
- data/lib/core/facets/kernel/op_esc.rb +24 -2
- data/lib/core/facets/kernel/populate.rb +6 -69
- data/lib/core/facets/kernel/report.rb +28 -33
- data/lib/core/facets/kernel/require.rb +7 -21
- data/lib/core/facets/kernel/respond.rb +11 -1
- data/lib/core/facets/kernel/returning.rb +50 -0
- data/lib/core/facets/kernel/silence.rb +12 -24
- data/lib/core/facets/kernel/super.rb +12 -76
- data/lib/core/facets/kernel/tap.rb +25 -107
- data/lib/core/facets/kernel/val.rb +7 -46
- data/lib/core/facets/kernel/withattr.rb +6 -64
- data/lib/core/facets/matchdata/matchset.rb +8 -50
- data/lib/core/facets/module.rb +3 -1
- data/lib/core/facets/module/abstract.rb +9 -47
- data/lib/core/facets/module/alias.rb +11 -68
- data/lib/core/facets/module/attr.rb +36 -15
- data/lib/core/facets/module/cattr.rb +8 -76
- data/lib/core/facets/module/clone.rb +15 -66
- data/lib/core/facets/module/include.rb +54 -114
- data/lib/core/facets/module/methods.rb +15 -13
- data/lib/core/facets/module/modify.rb +20 -206
- data/lib/core/facets/module/name.rb +19 -83
- data/lib/core/facets/module/require.rb +48 -53
- data/lib/core/facets/module/traits.rb +74 -33
- data/lib/core/facets/nilclass/status.rb +25 -2
- data/lib/core/facets/numeric/round.rb +24 -89
- data/lib/core/facets/proc/bind.rb +16 -59
- data/lib/core/facets/proc/compose.rb +6 -40
- data/lib/core/facets/proc/fn.rb +2 -0
- data/lib/core/facets/range/combine.rb +15 -51
- data/lib/core/facets/range/overlap.rb +8 -64
- data/lib/core/facets/regexp/arity.rb +6 -41
- data/lib/core/facets/stackable.rb +43 -4
- data/lib/core/facets/string.rb +2 -0
- data/lib/core/facets/string/align.rb +45 -55
- data/lib/core/facets/string/blank.rb +2 -46
- data/lib/core/facets/string/bracket.rb +14 -87
- data/lib/core/facets/string/case.rb +45 -32
- data/lib/core/facets/string/crypt.rb +3 -40
- data/lib/core/facets/string/filter.rb +7 -49
- data/lib/core/facets/string/format.rb +24 -126
- data/lib/core/facets/string/indexable.rb +50 -133
- data/lib/core/facets/string/interpolate.rb +24 -59
- data/lib/core/facets/string/natcmp.rb +5 -39
- data/lib/core/facets/string/nchar.rb +37 -45
- data/lib/core/facets/string/op.rb +13 -0
- data/lib/core/facets/string/partitions.rb +38 -99
- data/lib/core/facets/string/range.rb +8 -49
- data/lib/core/facets/string/regesc.rb +9 -42
- data/lib/core/facets/string/scan.rb +6 -52
- data/lib/core/facets/string/splice.rb +8 -13
- data/lib/core/facets/string/tabs.rb +16 -153
- data/lib/core/facets/symbol.rb +3 -1
- data/lib/core/facets/symbol/chomp.rb +11 -29
- data/lib/core/facets/symbol/generate.rb +4 -43
- data/lib/core/facets/symbol/not.rb +13 -25
- data/lib/core/facets/symbol/shadow.rb +2 -40
- data/lib/core/facets/symbol/succ.rb +14 -13
- data/lib/core/facets/symbol/to_proc.rb +33 -28
- data/lib/core/facets/time.rb +1 -0
- data/lib/core/facets/time/change.rb +5 -38
- data/lib/core/facets/time/elapse.rb +2 -41
- data/lib/core/facets/time/stamp.rb +47 -0
- data/lib/core/facets/unboundmethod.rb +3 -0
- data/lib/core/facets/unboundmethod/arguments.rb +27 -4
- data/lib/core/facets/unboundmethod/name.rb +21 -7
- data/lib/methods/facets/enumerable/cluster_by.rb +1 -1
- data/lib/methods/facets/enumerable/collate.rb +1 -0
- data/lib/methods/facets/enumerable/divide.rb +1 -1
- data/lib/methods/facets/enumerable/each_by.rb +1 -1
- data/lib/methods/facets/enumerable/each_pair.rb +1 -1
- data/lib/methods/facets/enumerable/eachn.rb +1 -1
- data/lib/methods/facets/enumerable/graph.rb +1 -1
- data/lib/methods/facets/enumerable/group_by.rb +1 -1
- data/lib/methods/facets/enumerable/inject.rb +1 -0
- data/lib/methods/facets/enumerable/map_send.rb +1 -0
- data/lib/methods/facets/enumerable/modulate.rb +1 -0
- data/lib/methods/facets/enumerable/partition_by.rb +1 -1
- data/lib/methods/facets/hash/collate.rb +1 -1
- data/lib/methods/facets/hash/except.rb +1 -0
- data/lib/methods/facets/hash/graph.rb +1 -1
- data/lib/methods/facets/hash/mash.rb +1 -0
- data/lib/methods/facets/kernel/Bit.rb +1 -0
- data/lib/methods/facets/kernel/complete.rb +1 -1
- data/lib/methods/facets/kernel/here.rb +1 -1
- data/lib/methods/facets/kernel/non_nil.rb +1 -0
- data/lib/methods/facets/kernel/respond_with_value.rb +1 -0
- data/lib/methods/facets/kernel/with.rb +1 -1
- data/lib/methods/facets/module/class_def.rb +1 -0
- data/lib/methods/facets/string/camelcase.rb +1 -0
- data/lib/methods/facets/string/op_minus.rb +1 -0
- data/lib/methods/facets/string/snakecase.rb +1 -0
- data/lib/more/facets/attributes.rb +5 -5
- data/lib/more/facets/basicobject.rb +0 -62
- data/lib/{core/facets/continuation/create.rb → more/facets/continuation.rb} +4 -21
- data/lib/more/facets/duration.rb +534 -0
- data/lib/more/facets/lazy.rb +3 -3
- data/lib/more/facets/namespace.rb +23 -71
- data/lib/more/facets/rbsystem.rb +42 -8
- data/lib/more/facets/stylize.rb +6 -3
- data/lib/more/facets/thread.rb +55 -0
- data/meta/MANIFEST +49 -18
- data/meta/ROLLRC +1 -1
- data/meta/project.yaml +2 -2
- data/task/install +1 -1
- data/task/test/general +8 -2
- data/test/unit/array/test_pad.rb +30 -45
- data/test/unit/array/test_stackable.rb +14 -28
- data/test/unit/binding/test_cflow.rb +34 -49
- data/test/unit/binding/test_defined.rb +17 -0
- data/test/unit/binding/test_eval.rb +11 -39
- data/test/unit/binding/test_here.rb +17 -0
- data/test/unit/binding/test_self.rb +17 -0
- data/test/unit/binding/test_vars.rb +22 -37
- data/test/unit/class/test_descendents.rb +15 -30
- data/test/unit/class/test_initializer.rb +1 -8
- data/test/unit/comparable/test_bound.rb +38 -53
- data/test/unit/comparable/test_cmp.rb +45 -60
- data/test/unit/dir/test_traverse.rb +56 -0
- data/test/unit/enumerable/test_cartesian.rb +34 -47
- data/test/unit/enumerable/test_collect.rb +16 -125
- data/test/unit/enumerable/test_combination.rb +1 -8
- data/test/unit/enumerable/test_count.rb +51 -66
- data/test/unit/enumerable/test_each.rb +77 -0
- data/test/unit/enumerable/test_mash.rb +51 -0
- data/test/unit/enumerable/test_permutation.rb +1 -7
- data/test/unit/enumerable/test_probability.rb +42 -55
- data/test/unit/enumerable/test_split.rb +52 -0
- data/test/unit/exception/test_detail.rb +19 -0
- data/test/unit/file/test_read.rb +34 -0
- data/test/unit/file/test_topath.rb +17 -25
- data/test/unit/file/test_write.rb +6 -12
- data/test/unit/filetest/test_root.rb +14 -0
- data/test/unit/hash/test_at.rb +9 -21
- data/test/unit/hash/test_delete.rb +22 -37
- data/test/unit/hash/test_has_keys.rb +13 -28
- data/test/unit/hash/test_insert.rb +9 -23
- data/test/unit/hash/test_inverse.rb +11 -26
- data/test/unit/hash/test_iterate.rb +16 -31
- data/test/unit/hash/test_keyize.rb +40 -55
- data/test/unit/hash/test_merge.rb +10 -25
- data/test/unit/hash/test_new.rb +9 -24
- data/test/unit/hash/test_op.rb +1 -7
- data/test/unit/hash/test_rekey.rb +47 -62
- data/test/unit/hash/test_traverse.rb +17 -32
- data/test/unit/hash/test_update.rb +30 -45
- data/test/unit/hash/test_weave.rb +10 -23
- data/test/unit/integer/test_bitmask.rb +48 -44
- data/test/unit/integer/test_factorial.rb +11 -26
- data/test/unit/integer/test_multiples.rb +1 -5
- data/test/unit/integer/test_of.rb +14 -29
- data/test/unit/kernel/test_callstack.rb +13 -28
- data/test/unit/kernel/test_constant.rb +14 -28
- data/test/unit/kernel/test_deepcopy.rb +20 -35
- data/test/unit/kernel/test_instance.rb +46 -61
- data/test/unit/kernel/test_metaid.rb +42 -57
- data/test/unit/kernel/test_object.rb +14 -29
- data/test/unit/kernel/test_populate.rb +38 -53
- data/test/unit/kernel/test_report.rb +1 -7
- data/test/unit/kernel/test_returning.rb +16 -0
- data/test/unit/kernel/test_silence.rb +8 -23
- data/test/unit/kernel/test_super.rb +41 -56
- data/test/unit/kernel/test_tap.rb +15 -39
- data/test/unit/kernel/test_val.rb +7 -20
- data/test/unit/kernel/test_withattr.rb +29 -44
- data/test/unit/matchdata/test_matchset.rb +20 -35
- data/test/unit/module/test_abstract.rb +15 -30
- data/test/unit/module/test_alias.rb +32 -45
- data/test/unit/module/test_cattr.rb +39 -54
- data/test/unit/module/test_clone.rb +31 -43
- data/test/unit/module/test_include.rb +1 -35
- data/test/unit/module/test_modify.rb +102 -114
- data/test/unit/module/test_name.rb +1 -7
- data/test/unit/numeric/test_round.rb +46 -61
- data/test/unit/proc/test_bind.rb +29 -44
- data/test/unit/proc/test_compose.rb +20 -35
- data/test/unit/range/test_combine.rb +14 -29
- data/test/unit/range/test_overlap.rb +34 -51
- data/test/unit/regexp/test_arity.rb +14 -29
- data/test/unit/string/test_align.rb +13 -27
- data/test/unit/string/test_blank.rb +12 -27
- data/test/unit/string/test_bracket.rb +52 -67
- data/test/unit/string/test_case.rb +19 -38
- data/test/unit/string/test_crypt.rb +10 -25
- data/test/unit/string/test_filter.rb +1 -7
- data/test/unit/string/test_format.rb +2 -7
- data/test/unit/string/test_indexable.rb +54 -69
- data/test/unit/string/test_interpolate.rb +8 -21
- data/test/unit/string/test_natcmp.rb +11 -26
- data/test/unit/string/test_nchar.rb +1 -14
- data/test/unit/string/test_op.rb +14 -0
- data/test/unit/string/test_partitions.rb +39 -54
- data/test/unit/string/test_range.rb +17 -32
- data/test/unit/string/test_regesc.rb +1 -7
- data/test/unit/string/test_scan.rb +23 -38
- data/test/unit/string/test_stackable.rb +79 -98
- data/test/unit/string/test_tabs.rb +1 -7
- data/test/unit/symbol/test_chomp.rb +10 -21
- data/test/unit/symbol/test_generate.rb +7 -22
- data/test/unit/symbol/test_not.rb +10 -25
- data/test/unit/symbol/test_shadow.rb +8 -23
- data/test/unit/symbol/test_succ.rb +1 -7
- data/test/unit/symbol/test_to_proc.rb +1 -7
- data/test/unit/test_attributes.rb +1 -1
- data/test/unit/test_continuation.rb +13 -0
- data/test/unit/test_conversion.rb +1 -14
- data/test/unit/test_namespace.rb +30 -3
- data/test/unit/test_thread.rb +23 -0
- data/test/unit/time/test_change.rb +11 -26
- data/test/unit/time/test_elapse.rb +10 -25
- data/test/unit/time/test_stamp.rb +28 -0
- metadata +65 -25
- data/lib/core/facets/array/unzip.rb +0 -14
- data/lib/core/facets/continuation.rb +0 -1
- data/lib/core/facets/enumerable/collate.rb +0 -104
- data/lib/core/facets/kernel/require_esc.rb +0 -44
- data/lib/more/facets/mapsend.rb +0 -98
- data/lib/more/facets/pp_s.rb +0 -30
- data/log/history.rd +0 -38
- data/log/todo.rd +0 -4
- data/task/special/quickopts +0 -15
- data/test/unit/continuation/test_create.rb +0 -28
- data/test/unit/enumerable/test_collate.rb +0 -51
- data/test/unit/kernel/test_require_esc.rb +0 -29
- data/test/unit/test_mapsend.rb +0 -18
- data/test/unit/test_pp_s.rb +0 -17
@@ -1 +0,0 @@
|
|
1
|
-
require 'facets/continuation/create.rb'
|
@@ -1,104 +0,0 @@
|
|
1
|
-
require 'enumerator'
|
2
|
-
|
3
|
-
module Enumerable
|
4
|
-
|
5
|
-
# Like <tt>#map</tt>/<tt>#collect</tt>, but generates a Hash. The block
|
6
|
-
# is expected to return two values: the key and the value for the new hash.
|
7
|
-
#
|
8
|
-
# numbers = (1..3)
|
9
|
-
# squares = numbers.collate { |n| [n, n*n] } # { 1=>1, 2=>4, 3=>9 }
|
10
|
-
# sq_roots = numbers.collate { |n| [n*n, n] } # { 1=>1, 4=>2, 9=>3 }
|
11
|
-
#
|
12
|
-
# CREDIT: Trans
|
13
|
-
# CREDIT: Andrew Dudzik (adudzik)
|
14
|
-
|
15
|
-
def collate(&yld)
|
16
|
-
if yld
|
17
|
-
inject({}) do |h, *kv| # Used to be inject({}) do |h,kv|
|
18
|
-
r = *yld[*kv] # The *-op works differnt from to_a on single element hash!!!
|
19
|
-
nk, nv = *r # Used to be nk, nv = *yld[*kv].to_a.flatten
|
20
|
-
h[nk] = nv
|
21
|
-
h
|
22
|
-
end
|
23
|
-
else
|
24
|
-
Enumerator.new(self,:collate) # Used to be Hash[*self.to_a] or Hash[*self.to_a.flatten]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
alias :graph :collate
|
29
|
-
|
30
|
-
# Returns a new hash built by iterating through each key,value
|
31
|
-
# pair and updating the new hash.
|
32
|
-
#def collate #:yield:
|
33
|
-
# newhash = {}
|
34
|
-
# each_pair{ |k,v| newhash.update(yield(k,v)) }
|
35
|
-
# newhash
|
36
|
-
#end
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
|
41
|
-
class Hash
|
42
|
-
|
43
|
-
# In place version of #collate.
|
44
|
-
#
|
45
|
-
# NOTE Hash#collate! is only useful for Hash. It is not generally
|
46
|
-
# applicable to Enumerable.
|
47
|
-
|
48
|
-
def collate!(&yld)
|
49
|
-
replace(collate(&yld))
|
50
|
-
end
|
51
|
-
|
52
|
-
# Alias for #collate! (THIS WILL BE DEPRECATED)
|
53
|
-
|
54
|
-
alias :graph! :collate!
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
|
59
|
-
# _____ _
|
60
|
-
# |_ _|__ ___| |_
|
61
|
-
# | |/ _ \/ __| __|
|
62
|
-
# | | __/\__ \ |_
|
63
|
-
# |_|\___||___/\__|
|
64
|
-
#
|
65
|
-
=begin test
|
66
|
-
|
67
|
-
require 'test/unit'
|
68
|
-
|
69
|
-
class TestEnumerableCollate < Test::Unit::TestCase
|
70
|
-
|
71
|
-
def test_collate_01
|
72
|
-
a = { :a => 1, :b => 2, :c => 3 }
|
73
|
-
e = { :a => 2, :b => 3, :c => 4 }
|
74
|
-
assert_equal( e, a.collate{ |k,v| { k => v+1 } } )
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_collate_02
|
78
|
-
numbers = (1..3)
|
79
|
-
squares = numbers.collate{ |n| [n, n*n] }
|
80
|
-
assert_equal( {1=>1, 2=>4, 3=>9}, squares )
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_collate_03
|
84
|
-
numbers = (1..3)
|
85
|
-
sq_roots = numbers.collate{ |n| [n*n, n] }
|
86
|
-
assert_equal( {1=>1, 4=>2, 9=>3}, sq_roots )
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_collate_01!
|
90
|
-
a = { :a => 1, :b => 2, :c => 3 }
|
91
|
-
e = { :a => 2, :b => 3, :c => 4 }
|
92
|
-
a.collate!{ |k,v| { k => v+1 } }
|
93
|
-
assert_equal( e, a )
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_collate_02!
|
97
|
-
h = {:a=>1,:b=>2,:c=>3}
|
98
|
-
h.collate!{ |k,v| [v, v*v] }
|
99
|
-
assert_equal( {1=>1, 2=>4, 3=>9}, h )
|
100
|
-
end
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
=end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'facets/kernel/op_esc'
|
2
|
-
|
3
|
-
module Kernel
|
4
|
-
|
5
|
-
private
|
6
|
-
|
7
|
-
# Require a file with puncuation marks escaped.
|
8
|
-
#
|
9
|
-
# require_esc '[].rb'
|
10
|
-
#
|
11
|
-
# in actuality requires the file 'op_fetch.rb'.
|
12
|
-
|
13
|
-
def require_esc( fpath )
|
14
|
-
fdir, fname = File.split(fpath)
|
15
|
-
ename = op_esc( fname )
|
16
|
-
case ename[-1,1] ; when '!','=','?' then ename = ename[0...-1] ; end
|
17
|
-
epath = File.join( fdir, ename )
|
18
|
-
require( epath )
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
# _____ _
|
26
|
-
# |_ _|__ ___| |_
|
27
|
-
# | |/ _ \/ __| __|
|
28
|
-
# | | __/\__ \ |_
|
29
|
-
# |_|\___||___/\__|
|
30
|
-
#
|
31
|
-
=begin test
|
32
|
-
|
33
|
-
require 'test/unit'
|
34
|
-
|
35
|
-
class TCKernel < Test::Unit::TestCase
|
36
|
-
|
37
|
-
def test_require_esc
|
38
|
-
assert_nothing_raised { require_esc 'facets/string/blank' }
|
39
|
-
assert( "".respond_to?( :blank? ) )
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
=end
|
data/lib/more/facets/mapsend.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
# TITLE:
|
2
|
-
# Map Send and Threaded Map Send
|
3
|
-
#
|
4
|
-
# SUMMARY:
|
5
|
-
# Extensions for Enumerable to send a message to each member
|
6
|
-
# and collect the results.
|
7
|
-
#
|
8
|
-
# AUTHORS:
|
9
|
-
# - Sean O'Halpin
|
10
|
-
#
|
11
|
-
# LOG:
|
12
|
-
# - Depreacated instance_map and instance_select.
|
13
|
-
#
|
14
|
-
# TODOs:
|
15
|
-
# - Better names for these methods.
|
16
|
-
#
|
17
|
-
# COPYRIGHT:
|
18
|
-
# Copyright (c) 2006 Sean O'Halpin
|
19
|
-
#
|
20
|
-
# LICENSE:
|
21
|
-
# Ruby License
|
22
|
-
#
|
23
|
-
# This module is free software. You may use, modify, and/or redistribute this
|
24
|
-
# software under the same terms as Ruby.
|
25
|
-
#
|
26
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
27
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
28
|
-
# FOR A PARTICULAR PURPOSE.
|
29
|
-
|
30
|
-
#
|
31
|
-
module Enumerable
|
32
|
-
|
33
|
-
#
|
34
|
-
# Send a message to each element and collect the result.
|
35
|
-
#
|
36
|
-
def map_send(meth, *args) #:yield:
|
37
|
-
if block_given?
|
38
|
-
map{|e| yield(e.send(meth, *args))}
|
39
|
-
else
|
40
|
-
map{|e| e.send(meth, *args)}
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
47
|
-
def threaded_map #:yield:
|
48
|
-
require 'thread'
|
49
|
-
|
50
|
-
map{|e| Thread.new(e){|t| yield t}}.map_send(:value)
|
51
|
-
end
|
52
|
-
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
def threaded_map_send(meth, *args) #:yield:
|
57
|
-
require 'thread'
|
58
|
-
|
59
|
-
if block_given?
|
60
|
-
map{|e| Thread.new(e){|t| yield t.send(meth, *args)}}.map_send(:value)
|
61
|
-
else
|
62
|
-
map{|e| Thread.new(e){|t| t.send(meth, *args)}}.map_send(:value)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
|
67
|
-
# # Cascade actions on each enumerated element.
|
68
|
-
# #
|
69
|
-
# # [9, 19, 29].cascade :succ, :to_s, :reverse
|
70
|
-
# # => ["01", "02", "03"]
|
71
|
-
# #
|
72
|
-
# # See ruby-talk:199877.
|
73
|
-
# def cascade(*methods)
|
74
|
-
# methods.inject(self){ |ary, method| ary.map{ |x| x.send(method)}}
|
75
|
-
# end
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
|
80
|
-
=begin test
|
81
|
-
|
82
|
-
require 'test/unit'
|
83
|
-
|
84
|
-
class TestThreadedMapSend < Test::Unit::TestCase
|
85
|
-
|
86
|
-
def test_map_send
|
87
|
-
r = [1,2,3].map_send(:+, 1)
|
88
|
-
assert_equal(r, [2,3,4])
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_map_send_with_block
|
92
|
-
r = [1,2,3].map_send(:+,1){ |x| x + 1 }
|
93
|
-
assert_equal(r, [3,4,5])
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
=end
|
data/lib/more/facets/pp_s.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# TODO How useful is this really? Or, can it go in with something else?
|
2
|
-
|
3
|
-
require 'pp'
|
4
|
-
require 'stringio'
|
5
|
-
|
6
|
-
module Kernel
|
7
|
-
|
8
|
-
# Returns a pretty-printed string of the object. Requires libraries +pp+ and
|
9
|
-
# +stringio+ from the Ruby standard library.
|
10
|
-
#
|
11
|
-
# The following code pretty-prints an object (much like +p+ plain-prints an
|
12
|
-
# object):
|
13
|
-
#
|
14
|
-
# pp object
|
15
|
-
#
|
16
|
-
# The following code captures the pretty-printing in +str+ instead of
|
17
|
-
# sending it to +STDOUT+.
|
18
|
-
#
|
19
|
-
# str = object.pp_s
|
20
|
-
#
|
21
|
-
# CREDIT Noah Gibbs
|
22
|
-
# CREDIT Gavin Sinclair
|
23
|
-
|
24
|
-
def pp_s
|
25
|
-
pps = StringIO.new
|
26
|
-
PP.pp(self, pps)
|
27
|
-
pps.string
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
data/log/history.rd
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
= Facets Revision History
|
2
|
-
|
3
|
-
== 2.1.3 / 2007-11-28
|
4
|
-
|
5
|
-
* Fixed minor oddity in Enumerable/collate.
|
6
|
-
* Fixed major issue with 2.1.2 where it would not core facets correctly.
|
7
|
-
|
8
|
-
== 2.1.2 / 2007-11-22
|
9
|
-
|
10
|
-
* Dir::multiglob no longer handels -/+ modifiers. Use FileList instead.
|
11
|
-
* Fixed task/install script.
|
12
|
-
* Improved task/changes.
|
13
|
-
|
14
|
-
== 2.1.1 / 2007-11-16
|
15
|
-
|
16
|
-
* Fixed bug in command.rb that clobbered options.
|
17
|
-
* Added kernel/ergo.rb.
|
18
|
-
|
19
|
-
== 2.1.0 / 2007-11-10
|
20
|
-
|
21
|
-
* Major Changes
|
22
|
-
* command.rb has been completely rewritten. The API has changed completely!
|
23
|
-
* There is no longer a Commmand::Optoins class. Use Console::Arguments instead.
|
24
|
-
* Added BiCrypt class to crypt.rb for simple two-way encyrption.
|
25
|
-
* Minor Changes
|
26
|
-
* module/attr.rb now has attr_reader!, attr_writer! and attr_accessor!
|
27
|
-
* All attr_xxx methods have coresponding alias_xxx methods.
|
28
|
-
* Fixed bug in Enumerable#cluster_by which returned nil instead of [].
|
29
|
-
|
30
|
-
== 2.0.5 / 2007-11-07
|
31
|
-
|
32
|
-
* Major Changes
|
33
|
-
* Added final methods Gavin Sinclair's Extensions project (contributed by Noah Gibbs).
|
34
|
-
* Minor Changes
|
35
|
-
* Fixes bug with Dictionary#initialize
|
36
|
-
* Fixes bug with Hash#-
|
37
|
-
* Also improves changelog production.
|
38
|
-
|
data/log/todo.rd
DELETED
data/task/special/quickopts
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ratch
|
2
|
-
|
3
|
-
# generate quick options .html part
|
4
|
-
|
5
|
-
main :quickopts do
|
6
|
-
str = ''
|
7
|
-
cd('doc/rdoc') do
|
8
|
-
dirs = Dir.glob('*') - ['core']
|
9
|
-
dirs.each do |f|
|
10
|
-
str << %{ <option value="#{f}"> #{f.capitalize} </option> \n}
|
11
|
-
end
|
12
|
-
end
|
13
|
-
File.open('doc/siteparts/quickopts.html', 'w'){ |f| f << str }
|
14
|
-
end
|
15
|
-
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# _____ _
|
2
|
-
# |_ _|__ ___| |_
|
3
|
-
# | |/ _ \/ __| __|
|
4
|
-
# | | __/\__ \ |
|
5
|
-
# |_|\___||___/\__|
|
6
|
-
#
|
7
|
-
# for lib/facets/continuation/create.rb
|
8
|
-
#
|
9
|
-
# Extracted Mon Sep 03 16:23:07 -0700 2007
|
10
|
-
# w/ Test Extraction Ratchet
|
11
|
-
#
|
12
|
-
|
13
|
-
require 'facets/continuation/create.rb'
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
require 'test/unit'
|
18
|
-
|
19
|
-
class TCContinuation < Test::Unit::TestCase
|
20
|
-
|
21
|
-
def test_Continuation_create
|
22
|
-
assert_nothing_raised { c, r = Continuation.create }
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# Test facets/enumerable/collate.rb
|
2
|
-
|
3
|
-
require 'facets/enumerable/collate.rb'
|
4
|
-
require 'test/unit'
|
5
|
-
|
6
|
-
class TestEnumerableCollate < Test::Unit::TestCase
|
7
|
-
|
8
|
-
def test_collate_hash_return
|
9
|
-
a = { :a => 1, :b => 2, :c => 3 }
|
10
|
-
e = { :a => 2, :b => 3, :c => 4 }
|
11
|
-
assert_equal( e, a.collate{ |k,v| {k => v+1} } )
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_collate_hash_of_array
|
15
|
-
a = { :a => [1,2], :b => [2,3], :c => [3,4] }
|
16
|
-
e = { :a => 2, :b => 6, :c => 12 }
|
17
|
-
assert_equal( e, a.collate{ |k,v| [k, v[0]*v[1] ] } )
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_collate_array_of_array
|
21
|
-
a = [ [1,2], [2,3], [3,4] ]
|
22
|
-
e = { [1,2] => 2, [2,3] => 6, [3,4] => 12 }
|
23
|
-
assert_equal( e, a.collate{ |a| [a, a[0]*a[1] ] } )
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_collate_squares
|
27
|
-
numbers = (1..3)
|
28
|
-
squares = numbers.collate{ |n| [n, n*n] }
|
29
|
-
assert_equal( {1=>1, 2=>4, 3=>9}, squares )
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_collate_roots
|
33
|
-
numbers = (1..3)
|
34
|
-
sq_roots = numbers.collate{ |n| [n*n, n] }
|
35
|
-
assert_equal( {1=>1, 4=>2, 9=>3}, sq_roots )
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_collate_inplace!
|
39
|
-
a = { :a => 1, :b => 2, :c => 3 }
|
40
|
-
e = { :a => 2, :b => 3, :c => 4 }
|
41
|
-
a.collate!{ |k,v| { k => v+1 } }
|
42
|
-
assert_equal( e, a )
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_collate_inplace_again!
|
46
|
-
h = {:a=>1,:b=>2,:c=>3}
|
47
|
-
h.collate!{ |k,v| [v, v*v] }
|
48
|
-
assert_equal( {1=>1, 2=>4, 3=>9}, h )
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# _____ _
|
2
|
-
# |_ _|__ ___| |_
|
3
|
-
# | |/ _ \/ __| __|
|
4
|
-
# | | __/\__ \ |
|
5
|
-
# |_|\___||___/\__|
|
6
|
-
#
|
7
|
-
# for lib/facets/kernel/require_esc.rb
|
8
|
-
#
|
9
|
-
# Extracted Mon Sep 03 16:23:07 -0700 2007
|
10
|
-
# w/ Test Extraction Ratchet
|
11
|
-
#
|
12
|
-
|
13
|
-
require 'facets/kernel/require_esc.rb'
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
require 'test/unit'
|
18
|
-
|
19
|
-
class TCKernel < Test::Unit::TestCase
|
20
|
-
|
21
|
-
def test_require_esc
|
22
|
-
assert_nothing_raised { require_esc 'facets/string/blank' }
|
23
|
-
assert( "".respond_to?( :blank? ) )
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
|