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
data/lib/core/facets/symbol.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'facets/symbol/shadow.rb'
|
2
|
-
require 'facets/symbol/succ.rb'
|
3
2
|
require 'facets/symbol/not.rb'
|
4
3
|
require 'facets/symbol/generate.rb'
|
5
4
|
require 'facets/symbol/chomp.rb'
|
5
|
+
|
6
|
+
# remove for 1.9
|
7
|
+
require 'facets/symbol/succ.rb'
|
6
8
|
require 'facets/symbol/to_proc.rb'
|
@@ -1,41 +1,23 @@
|
|
1
|
-
#--
|
2
|
-
# CREDIT Thomas Sawyer
|
3
|
-
#++
|
4
|
-
|
5
1
|
class Symbol
|
6
2
|
|
7
3
|
# Just like String#chomp.
|
8
4
|
#
|
9
|
-
|
5
|
+
# :ab.chomp(:b) #=> :a
|
6
|
+
#
|
7
|
+
# CREDIT: Trans
|
8
|
+
|
9
|
+
def chomp(seperator)
|
10
10
|
to_s.chomp(seperator.to_s).to_sym
|
11
11
|
end
|
12
12
|
|
13
13
|
# Just like String#lchomp.
|
14
14
|
#
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
# _____ _
|
23
|
-
# |_ _|__ ___| |_
|
24
|
-
# | |/ _ \/ __| __|
|
25
|
-
# | | __/\__ \ |_
|
26
|
-
# |_|\___||___/\__|
|
27
|
-
#
|
28
|
-
=begin test
|
29
|
-
|
30
|
-
require 'test/unit'
|
31
|
-
|
32
|
-
class TestSymbol < Test::Unit::TestCase
|
33
|
-
|
34
|
-
def test_chomp
|
35
|
-
assert_equal( :a, :ab.chomp(:b) )
|
36
|
-
end
|
15
|
+
# :ab.lchomp(:a) #=> :b
|
16
|
+
#
|
17
|
+
# CREDIT: Trans
|
37
18
|
|
19
|
+
def lchomp(seperator)
|
20
|
+
to_s.reverse.chomp(seperator.to_s).reverse.to_sym
|
38
21
|
end
|
39
22
|
|
40
|
-
|
41
|
-
|
23
|
+
end
|
@@ -1,21 +1,3 @@
|
|
1
|
-
# TITLE:
|
2
|
-
#
|
3
|
-
# Symbol Generation
|
4
|
-
#
|
5
|
-
# DESCRIPTION:
|
6
|
-
#
|
7
|
-
# Symbol generation extensions.
|
8
|
-
#
|
9
|
-
# AUTHORS:
|
10
|
-
#
|
11
|
-
# CREDIT Thomas Sawyer
|
12
|
-
#
|
13
|
-
# NOTES:
|
14
|
-
#
|
15
|
-
# TODO Is Symbol#chomp worth having? Are the any other
|
16
|
-
# String methods that Symbols really should have too?
|
17
|
-
|
18
|
-
#
|
19
1
|
class Symbol
|
20
2
|
|
21
3
|
# Generate a unique symbol.
|
@@ -26,34 +8,13 @@ class Symbol
|
|
26
8
|
#
|
27
9
|
# Symbol.generate(:this) => :<2>this
|
28
10
|
#
|
29
|
-
|
30
|
-
#
|
31
|
-
|
11
|
+
# TODO: Is the generated symbol format acceptable?
|
12
|
+
#
|
13
|
+
# CREDIT: Trans
|
14
|
+
|
32
15
|
def self.generate(suffix=nil)
|
33
16
|
@symbol_generate_counter ||= 0
|
34
17
|
("<%X>#{suffix}" % @symbol_generate_counter += 1).to_sym
|
35
18
|
end
|
36
19
|
|
37
20
|
end
|
38
|
-
|
39
|
-
|
40
|
-
# _____ _
|
41
|
-
# |_ _|__ ___| |_
|
42
|
-
# | |/ _ \/ __| __|
|
43
|
-
# | | __/\__ \ |_
|
44
|
-
# |_|\___||___/\__|
|
45
|
-
#
|
46
|
-
=begin test
|
47
|
-
|
48
|
-
require 'test/unit'
|
49
|
-
|
50
|
-
class TestSymbol < Test::Unit::TestCase
|
51
|
-
|
52
|
-
def test_generate
|
53
|
-
assert_equal( Symbol.generate, :'<1>' )
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
=end
|
59
|
-
|
@@ -1,10 +1,22 @@
|
|
1
|
-
|
2
1
|
class Symbol
|
3
2
|
|
3
|
+
# Does a symbol have a "not" sign?
|
4
|
+
#
|
5
|
+
# "friend".to_sym.not? #=> false
|
6
|
+
# "~friend".to_sym.not? #=> true
|
7
|
+
#
|
8
|
+
# CREDIT: Trans
|
9
|
+
|
4
10
|
def not?
|
5
11
|
self.to_s.slice(0,1) == '~'
|
6
12
|
end
|
7
13
|
|
14
|
+
# Add a "not" sign to the front of a symbol.
|
15
|
+
#
|
16
|
+
# ~:friend #=> :"~friend"
|
17
|
+
#
|
18
|
+
# CREDIT: Trans
|
19
|
+
|
8
20
|
def ~@
|
9
21
|
if self.to_s.slice(0,1) == '~'
|
10
22
|
"#{self.to_s[1..-1]}".to_sym
|
@@ -14,27 +26,3 @@ class Symbol
|
|
14
26
|
end
|
15
27
|
|
16
28
|
end
|
17
|
-
|
18
|
-
|
19
|
-
# _____ _
|
20
|
-
# |_ _|__ ___| |_
|
21
|
-
# | |/ _ \/ __| __|
|
22
|
-
# | | __/\__ \ |_
|
23
|
-
# |_|\___||___/\__|
|
24
|
-
#
|
25
|
-
=begin test
|
26
|
-
|
27
|
-
require 'test/unit'
|
28
|
-
|
29
|
-
class TCSymbol < Test::Unit::TestCase
|
30
|
-
|
31
|
-
def test_not
|
32
|
-
assert_equal( :"~a", ~:a )
|
33
|
-
a = :a
|
34
|
-
n = ~a
|
35
|
-
assert( n.not? )
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
=end
|
@@ -1,21 +1,3 @@
|
|
1
|
-
# TITLE:
|
2
|
-
#
|
3
|
-
# Symbol Generation
|
4
|
-
#
|
5
|
-
# DESCRIPTION:
|
6
|
-
#
|
7
|
-
# Symbol generation extensions.
|
8
|
-
#
|
9
|
-
# AUTHORS:
|
10
|
-
#
|
11
|
-
# CREDIT Thomas Sawyer
|
12
|
-
#
|
13
|
-
# NOTES:
|
14
|
-
#
|
15
|
-
# TODO Is Symbol#chomp worth having? Are the any other
|
16
|
-
# String methods that Symbols really should have too?
|
17
|
-
|
18
|
-
#
|
19
1
|
class Symbol
|
20
2
|
|
21
3
|
# Easily manipulate undercores on symbols.
|
@@ -23,6 +5,8 @@ class Symbol
|
|
23
5
|
# :a.pad(2) #=> :__a__
|
24
6
|
# :__a__.pad(-1) #=> :_a_
|
25
7
|
#
|
8
|
+
# CREDIT: Trans
|
9
|
+
|
26
10
|
def shadow(i=1)
|
27
11
|
return self if i == 0
|
28
12
|
s = self.to_s
|
@@ -37,25 +21,3 @@ class Symbol
|
|
37
21
|
alias :pad :shadow
|
38
22
|
|
39
23
|
end
|
40
|
-
|
41
|
-
|
42
|
-
# _____ _
|
43
|
-
# |_ _|__ ___| |_
|
44
|
-
# | |/ _ \/ __| __|
|
45
|
-
# | | __/\__ \ |_
|
46
|
-
# |_|\___||___/\__|
|
47
|
-
#
|
48
|
-
=begin test
|
49
|
-
|
50
|
-
require 'test/unit'
|
51
|
-
|
52
|
-
class TestSymbol < Test::Unit::TestCase
|
53
|
-
|
54
|
-
def test_shadow
|
55
|
-
assert_equal( :__a__, :a.shadow(2) )
|
56
|
-
assert_equal( :_a_, :__a__.shadow(-1) )
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
=end
|
@@ -1,18 +1,19 @@
|
|
1
|
-
|
1
|
+
# DEPRECATE for 1.9
|
2
|
+
unless (RUBY_VERSION[0,3] == '1.9')
|
2
3
|
|
3
|
-
|
4
|
-
# the symbol to a string uses String#succ and then
|
5
|
-
# converts it back to a symbol.
|
6
|
-
#
|
7
|
-
# :a.succ => :b
|
8
|
-
#
|
9
|
-
#--
|
10
|
-
# In the future I would like this to work more like
|
11
|
-
# a simple character dial.
|
12
|
-
#++
|
4
|
+
class Symbol
|
13
5
|
|
14
|
-
|
15
|
-
|
6
|
+
# Successor method for symobol. This simply converts
|
7
|
+
# the symbol to a string uses String#succ and then
|
8
|
+
# converts it back to a symbol.
|
9
|
+
#
|
10
|
+
# :a.succ => :b
|
11
|
+
#
|
12
|
+
# TODO: Make this work more like a simple character dial.
|
13
|
+
|
14
|
+
def succ
|
15
|
+
self.to_s.succ.intern
|
16
|
+
end
|
16
17
|
end
|
17
18
|
|
18
19
|
end
|
@@ -1,34 +1,39 @@
|
|
1
|
-
|
1
|
+
# DEPRECATE for 1.9
|
2
|
+
unless (RUBY_VERSION[0,3] == '1.9')
|
2
3
|
|
3
|
-
|
4
|
-
# which it refers.
|
5
|
-
#
|
6
|
-
# up = :upcase.to_proc
|
7
|
-
# up.call("hello") #=> HELLO
|
8
|
-
#
|
9
|
-
# More useful is the fact that this allows <tt>&</tt>
|
10
|
-
# to be used to coerce Symbol into Proc.
|
11
|
-
#
|
12
|
-
# %w{foo bar qux}.map(&:upcase) #=> ["FOO","BAR","QUX"]
|
13
|
-
# [1, 2, 3].inject(&:+) #=> 6
|
14
|
-
#
|
15
|
-
# And other conveniences such as:
|
16
|
-
#
|
17
|
-
# %{john terry fiona}.map(&:capitalize) # -> %{John Terry Fiona}
|
18
|
-
# sum = numbers.inject(&:+)
|
19
|
-
#
|
20
|
-
# TODO This will be deprecated as of Ruby 1.9, since it will become standard Ruby.
|
21
|
-
#
|
22
|
-
# CREDIT Florian Gross (orignal)
|
23
|
-
# CREDIT Nobuhiro Imai (current)
|
4
|
+
class Symbol
|
24
5
|
|
25
|
-
|
26
|
-
|
27
|
-
|
6
|
+
# Turn a symbol into a proc calling the method to
|
7
|
+
# which it refers.
|
8
|
+
#
|
9
|
+
# up = :upcase.to_proc
|
10
|
+
# up.call("hello") #=> HELLO
|
11
|
+
#
|
12
|
+
# More useful is the fact that this allows <tt>&</tt>
|
13
|
+
# to be used to coerce Symbol into Proc.
|
14
|
+
#
|
15
|
+
# %w{foo bar qux}.map(&:upcase) #=> ["FOO","BAR","QUX"]
|
16
|
+
# [1, 2, 3].inject(&:+) #=> 6
|
17
|
+
#
|
18
|
+
# And other conveniences such as:
|
19
|
+
#
|
20
|
+
# %{john terry fiona}.map(&:capitalize) # -> %{John Terry Fiona}
|
21
|
+
# sum = numbers.inject(&:+)
|
22
|
+
#
|
23
|
+
# TODO: This will be deprecated as of Ruby 1.9, since it will become standard Ruby.
|
24
|
+
#
|
25
|
+
# CREDIT: Florian Gross (orignal)
|
26
|
+
# CREDIT: Nobuhiro Imai (current)
|
27
|
+
|
28
|
+
def to_proc
|
29
|
+
Proc.new{|*args| args.shift.__send__(self, *args)}
|
30
|
+
end
|
28
31
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
+
# OLD DEFINITION
|
33
|
+
#def to_proc
|
34
|
+
# proc { |obj, *args| obj.send(self, *args) }
|
35
|
+
#end
|
36
|
+
end
|
32
37
|
|
33
38
|
end
|
34
39
|
|
data/lib/core/facets/time.rb
CHANGED
@@ -1,16 +1,3 @@
|
|
1
|
-
# = FILE
|
2
|
-
#
|
3
|
-
# time/change.rb
|
4
|
-
#
|
5
|
-
# = DESCRIPTION
|
6
|
-
#
|
7
|
-
# Time extension for changing time.
|
8
|
-
#
|
9
|
-
# = AUTHORS
|
10
|
-
#
|
11
|
-
# CREDIT Thomas Sawyer
|
12
|
-
|
13
|
-
#
|
14
1
|
class Time
|
15
2
|
|
16
3
|
# Returns a new Time where one or more of the elements
|
@@ -19,6 +6,11 @@ class Time
|
|
19
6
|
# cascadingly, so if only the hour is passed, then
|
20
7
|
# minute, sec, and usec is set to 0. If the hour and
|
21
8
|
# minute is passed, then sec and usec is set to 0.
|
9
|
+
#
|
10
|
+
# t = Time.now #=> Sat Dec 01 14:10:15 -0500 2007
|
11
|
+
# t.change(:hour => 11) #=> Sat Dec 01 11:00:00 -0500 2007
|
12
|
+
#
|
13
|
+
# CREDIT: David Hansson (?)
|
22
14
|
|
23
15
|
def change(options)
|
24
16
|
opts={}; options.each_pair{ |k,v| opts[k] = v.to_i }
|
@@ -34,28 +26,3 @@ class Time
|
|
34
26
|
end
|
35
27
|
|
36
28
|
end
|
37
|
-
|
38
|
-
|
39
|
-
# _____ _
|
40
|
-
# |_ _|__ ___| |_
|
41
|
-
# | |/ _ \/ __| __|
|
42
|
-
# | | __/\__ \ |_
|
43
|
-
# |_|\___||___/\__|
|
44
|
-
#
|
45
|
-
=begin test
|
46
|
-
|
47
|
-
require 'test/unit'
|
48
|
-
|
49
|
-
class TestTimeChange < Test::Unit::TestCase
|
50
|
-
|
51
|
-
def test_change
|
52
|
-
t = Time.parse('4/20/2006 15:37')
|
53
|
-
n = Time.now
|
54
|
-
n = n.change( :month=>4, :day=>20, :hour=>15, :min=>37, :year=>2006 )
|
55
|
-
assert_equal( t, n )
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
|
-
=end
|
61
|
-
|
@@ -1,25 +1,11 @@
|
|
1
|
-
# = FILE
|
2
|
-
#
|
3
|
-
# time/change.rb
|
4
|
-
#
|
5
|
-
# = DESCRIPTION
|
6
|
-
#
|
7
|
-
# Time extension for changing time.
|
8
|
-
#
|
9
|
-
# = AUTHORS
|
10
|
-
#
|
11
|
-
# CREDIT Thomas Sawyer
|
12
|
-
|
13
|
-
#
|
14
1
|
class Time
|
15
2
|
|
16
3
|
# Tracks the elapse time of a code block.
|
17
4
|
#
|
18
5
|
# Time.elapse { sleep 1 } #=> 0.999188899993896
|
19
6
|
#
|
20
|
-
|
21
|
-
|
22
|
-
#++
|
7
|
+
# CREDIT: Hal Fulton
|
8
|
+
|
23
9
|
def self.elapse
|
24
10
|
raise "Need block" unless block_given?
|
25
11
|
t0 = Time.now.to_f
|
@@ -28,28 +14,3 @@ class Time
|
|
28
14
|
end
|
29
15
|
|
30
16
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
# _____ _
|
35
|
-
# |_ _|__ ___| |_
|
36
|
-
# | |/ _ \/ __| __|
|
37
|
-
# | | __/\__ \ |_
|
38
|
-
# |_|\___||___/\__|
|
39
|
-
#
|
40
|
-
=begin test
|
41
|
-
|
42
|
-
require 'test/unit'
|
43
|
-
|
44
|
-
class TestTime < Test::Unit::TestCase
|
45
|
-
|
46
|
-
def test_elapse
|
47
|
-
#t = Time.parse('4/20/2006 15:37')
|
48
|
-
t = Time.elapse { sleep 1 }
|
49
|
-
assert( (t > 0.9) && (t < 2.1 ))
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
=end
|
55
|
-
|