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/AUTHORS
CHANGED
@@ -1,25 +1,23 @@
|
|
1
|
-
= Facets
|
1
|
+
= Facets Authors
|
2
2
|
|
3
3
|
== Project Manager & Primary Developer
|
4
4
|
|
5
5
|
* Trans (Thomas Sawyer)
|
6
6
|
|
7
|
-
==
|
7
|
+
== Recent Contributors
|
8
8
|
|
9
|
-
The following developers have contributed
|
10
|
-
|
11
|
-
|
9
|
+
The following developers have recently contributed
|
10
|
+
to the development of Facets. They are held in the
|
11
|
+
highest regard for their efforts.
|
12
12
|
|
13
|
-
*
|
14
|
-
*
|
15
|
-
* Tyler Rick
|
16
|
-
* Noah Gibbs
|
13
|
+
* Matthew Harris Incorporated very useful Duration class.
|
14
|
+
* Noah Gibbs Completed port from Extensions project.
|
17
15
|
|
18
16
|
== Rubyists of Distinction
|
19
17
|
|
20
|
-
All of the following persons have contributed to
|
21
|
-
Facets is some form or fashion
|
22
|
-
work is greatly appreciated.
|
18
|
+
All of the following persons have contributed to
|
19
|
+
Facets is some form or fashion over the years.
|
20
|
+
All of their hard work is greatly appreciated.
|
23
21
|
|
24
22
|
* Thibaut Barrère
|
25
23
|
* Daniel J. Berger
|
@@ -32,9 +30,11 @@ work is greatly appreciated.
|
|
32
30
|
* Mauricio Fernandez
|
33
31
|
* Florian Frank
|
34
32
|
* Hal Fulton
|
33
|
+
* Noah Gibbs
|
35
34
|
* Michael Granger
|
36
35
|
* Florian Gross
|
37
36
|
* Sean O'Halpin
|
37
|
+
* Matthew Harris
|
38
38
|
* David Heinemeier Hansson
|
39
39
|
* Thomas-Ivo Heinen
|
40
40
|
* Dave Hoover
|
@@ -50,8 +50,10 @@ work is greatly appreciated.
|
|
50
50
|
* Jonas Pfenniger
|
51
51
|
* Ryan Platte
|
52
52
|
* Oliver Renaud
|
53
|
+
* Tyler Rick
|
53
54
|
* Christoph Rippel
|
54
55
|
* Daniel Schierbeck
|
56
|
+
* Louis J Scoras
|
55
57
|
* Gavin Sinclair
|
56
58
|
* Tilo Sloboda
|
57
59
|
* Phil Tomson
|
data/CHANGES
CHANGED
@@ -1,5 +1,48 @@
|
|
1
|
-
|
1
|
+
= Facets Change History
|
2
|
+
|
3
|
+
== 2.2.0 / 2007-12-13
|
4
|
+
|
5
|
+
* A lot of rdoc updates to core extensions --as promised ;)
|
6
|
+
* Just about every method now has at least a brief explinaiton and an example.
|
7
|
+
* integer/bitmask.rb has changed a bit --pun intended ;) Deprecated some methods and now use "~" instead of "-" to clear bits.
|
8
|
+
* The name Array#unzip didn't makes sense, it was renamed to #modulate (though #collate seems better?)
|
9
|
+
* Renamed Enumerable#collate to #mash (Map hASH); #collate and #graph remain aliases for the time being.
|
10
|
+
* Deprecated Module#include_and_extend. Just use both silly.
|
11
|
+
* More lib pp_s.rb has been removed. Use #pretty_inspect instead.
|
12
|
+
* Split binding extensions up a bit more finely --eval.rb sprouted here.rb, self.rb and defined.rb.
|
13
|
+
* Move Time#stamp out of conversion.rb and into time/ dir, and remove to_s alias.
|
14
|
+
* Preliminary addition of Matthew Harris' excellent duration.rb lib (will integrate with times.rb better in future).
|
15
|
+
* Added if clauses to handle upcoming Ruby 1.9 gracefully. Facets should now be just about ready for use with 1.9.
|
16
|
+
|
17
|
+
== 2.1.3 / 2007-11-28
|
18
|
+
|
19
|
+
* Fixed minor oddity in Enumerable/collate.
|
20
|
+
* Fixed major issue with 2.1.2 where it would not core facets correctly.
|
21
|
+
|
22
|
+
== 2.1.2 / 2007-11-22
|
2
23
|
|
3
24
|
* Dir::multiglob no longer handels -/+ modifiers. Use FileList instead.
|
4
25
|
* Fixed task/install script.
|
5
|
-
* Improved task/changes.
|
26
|
+
* Improved task/changes.
|
27
|
+
|
28
|
+
== 2.1.1 / 2007-11-16
|
29
|
+
|
30
|
+
* Fixed bug in command.rb that clobbered options.
|
31
|
+
* Added kernel/ergo.rb.
|
32
|
+
|
33
|
+
== 2.1.0 / 2007-11-10
|
34
|
+
|
35
|
+
* command.rb has been completely rewritten. The API has changed completely!
|
36
|
+
* There is no longer a Commmand::Optoins class. Use Console::Arguments instead.
|
37
|
+
* Added BiCrypt class to crypt.rb for simple two-way encyrption.
|
38
|
+
* module/attr.rb now has attr_reader!, attr_writer! and attr_accessor!
|
39
|
+
* All attr_xxx methods have coresponding alias_xxx methods.
|
40
|
+
* Fixed bug in Enumerable#cluster_by which returned nil instead of [].
|
41
|
+
|
42
|
+
== 2.0.5 / 2007-11-07
|
43
|
+
|
44
|
+
* Added final methods Gavin Sinclair's Extensions project (contributed by Noah Gibbs).
|
45
|
+
* Fixes bug with Dictionary#initialize
|
46
|
+
* Fixes bug with Hash#-
|
47
|
+
* Also improves changelog production.
|
48
|
+
* Made #alias_method_chain compatible with current ActiveSupport version.
|
data/NOTES
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
-
Facets 2.
|
1
|
+
Facets 2.2.0 has been released!
|
2
2
|
|
3
|
-
This release
|
3
|
+
This release provides improved rdocs and prepares facets for
|
4
|
+
use with RUby 1.9. It also adds Matthew Harris' duration.rb
|
5
|
+
library. Bug thanks to Matthew!
|
4
6
|
|
5
7
|
As of 2.1.0:
|
6
8
|
|
7
|
-
Major changes include a new and much-improved
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Major changes include a new and much-improved command.rb,
|
10
|
+
a new BiCrypt class for simple two-way crypotgraphy,
|
11
|
+
as well as attr_reader!, attr_writer! and attr_accessor!
|
12
|
+
for flag attributes, plus alias_xxx methods for all
|
13
|
+
attr_xxx methods.
|
12
14
|
|
13
15
|
Enjoy!
|
14
16
|
|
@@ -1,17 +1,15 @@
|
|
1
|
-
# TITLE:
|
1
|
+
# = TITLE:
|
2
2
|
#
|
3
3
|
# First Class Methods
|
4
4
|
#
|
5
|
-
# SUMMARY:
|
5
|
+
# = SUMMARY:
|
6
6
|
#
|
7
7
|
# Gives Ruby 1st class methods.
|
8
8
|
#
|
9
|
-
# COPYRIGHT:
|
9
|
+
# = COPYRIGHT:
|
10
10
|
#
|
11
11
|
# Copyright (c) 2005 Thomas Sawyer
|
12
12
|
#
|
13
|
-
# LICENSE:
|
14
|
-
#
|
15
13
|
# Ruby License
|
16
14
|
#
|
17
15
|
# This module is free software. You may use, modify, and/or redistribute this
|
@@ -21,11 +19,11 @@
|
|
21
19
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
22
20
|
# FOR A PARTICULAR PURPOSE.
|
23
21
|
#
|
24
|
-
# AUTHORS:
|
22
|
+
# = AUTHORS:
|
25
23
|
#
|
26
24
|
# - Thomas Sawyer
|
27
25
|
#
|
28
|
-
# NOTES:
|
26
|
+
# = NOTES:
|
29
27
|
#
|
30
28
|
# First Class Methods
|
31
29
|
#
|
@@ -52,7 +50,6 @@
|
|
52
50
|
#
|
53
51
|
# Which do you prefer?
|
54
52
|
|
55
|
-
|
56
53
|
#
|
57
54
|
module Kernel
|
58
55
|
|
@@ -61,8 +58,16 @@ module Kernel
|
|
61
58
|
# def hello
|
62
59
|
# puts "Hello World!"
|
63
60
|
# end
|
64
|
-
# p method!(:hello) #=> <Method: #hello>
|
65
61
|
#
|
62
|
+
# m1 = method!(:hello) #=> <Method: #hello>
|
63
|
+
#
|
64
|
+
# def m1.annotate
|
65
|
+
# "simple example"
|
66
|
+
# end
|
67
|
+
#
|
68
|
+
# m2 = method!(:hello)
|
69
|
+
# m2.annotate #=> "simple example"
|
70
|
+
|
66
71
|
def method!(s)
|
67
72
|
( @__methods__ ||= {} )[s] ||= method(s)
|
68
73
|
end
|
@@ -101,8 +106,7 @@ class Module
|
|
101
106
|
# end
|
102
107
|
# p K.instance_method!(:hello) #=> <UnboundMethod: #hello>
|
103
108
|
#
|
104
|
-
# CAUTION! This
|
105
|
-
# lookup is fixed. Presently it is limited to the scope of the
|
109
|
+
# CAUTION! This it is currently limited to the scope of the
|
106
110
|
# current module/class.
|
107
111
|
|
108
112
|
def instance_method!(s)
|
data/lib/core/facets/array.rb
CHANGED
@@ -1,15 +1,47 @@
|
|
1
|
-
# = Conjoin
|
2
|
-
|
3
|
-
#
|
4
1
|
class Array
|
5
2
|
|
6
|
-
|
3
|
+
# This is more advnaced form of #join. It allows for a different
|
4
|
+
# terminating separator, and even a different starting terminator.
|
5
|
+
#
|
6
|
+
# The default separator is ", " and default terminating separator
|
7
|
+
# is " and ".
|
8
|
+
#
|
9
|
+
# [1,2,3].conjoin
|
10
|
+
# => "1, 2 and 3
|
11
|
+
#
|
12
|
+
# [1,2,3].conjoin(:last => ' or ')
|
13
|
+
# => "1, 2 or 3
|
14
|
+
#
|
15
|
+
# [1,2,3].conjoin('.', :last => '-')
|
16
|
+
# => "1.2-3
|
17
|
+
#
|
18
|
+
# [2,4,2,3].conjoin(' == ', :first => " x ", :last => " ** ")
|
19
|
+
# => "2 x 4 == 2 ** 3"
|
20
|
+
#
|
21
|
+
# CREDIT: Trans
|
22
|
+
|
23
|
+
def conjoin(*args)
|
24
|
+
options = (Hash===args.last) ? args.pop : {}
|
25
|
+
separator = args.unshift || ", "
|
26
|
+
|
27
|
+
first = options[:first] || separator
|
28
|
+
last = options[:last] || " and "
|
29
|
+
|
7
30
|
case length
|
8
|
-
when 0
|
9
|
-
|
10
|
-
|
31
|
+
when 0
|
32
|
+
""
|
33
|
+
when 1
|
34
|
+
self[0]
|
35
|
+
else
|
36
|
+
[self[0], first, self[1..-2].join("#{separator}"), last, self[-1]].join
|
37
|
+
#[self[0..-2].join("#{separator}"), self[-1]].join("#{last}")
|
11
38
|
end
|
12
39
|
end
|
13
|
-
alias join_sentence conjoin
|
14
40
|
|
41
|
+
# Alias for #conjoin.
|
42
|
+
#
|
43
|
+
# NOTE: This will be deprecated.
|
44
|
+
|
45
|
+
alias_method :join_sentence, :conjoin
|
15
46
|
end
|
47
|
+
|
@@ -1,8 +1,11 @@
|
|
1
1
|
class Array
|
2
2
|
|
3
|
-
# CREDIT Daniel Schierbeck
|
4
|
-
|
5
3
|
# Inverse of #delete_if.
|
4
|
+
#
|
5
|
+
# [1,2,3].delete_unless{ |x| x < 2 }
|
6
|
+
# => [1,2]
|
7
|
+
#
|
8
|
+
# CREDIT: Daniel Schierbeck
|
6
9
|
|
7
10
|
def delete_unless(&block)
|
8
11
|
delete_if { |element| not block.call(element) }
|
@@ -14,6 +17,8 @@ class Array
|
|
14
17
|
# a.delete_values(1,2) #=> [1,2]
|
15
18
|
# a #=> [3,4]
|
16
19
|
#
|
20
|
+
# CREDIT: Trans
|
21
|
+
|
17
22
|
def delete_values(*values)
|
18
23
|
d = []
|
19
24
|
values.each{ |v| d << delete(v) }
|
@@ -30,6 +35,7 @@ class Array
|
|
30
35
|
# a.delete_values_at(0..2) #=> [1,2,3]
|
31
36
|
# a #=> [4]
|
32
37
|
#
|
38
|
+
# CREDIT: Trans
|
33
39
|
|
34
40
|
def delete_values_at(*selectors)
|
35
41
|
idx = []
|
@@ -4,9 +4,12 @@ require 'facets/array/splice'
|
|
4
4
|
class Array
|
5
5
|
include Indexable
|
6
6
|
|
7
|
-
|
8
|
-
#
|
9
|
-
|
7
|
+
# Alias for #include?.
|
8
|
+
#
|
9
|
+
# TODO: Maybe not appropriate for indexable.rb, but where?
|
10
|
+
#
|
11
|
+
# CREDIT: Trans
|
12
|
+
|
10
13
|
alias_method :contains?, :include?
|
11
14
|
|
12
15
|
#alias_method :/, :[]
|
@@ -18,6 +21,8 @@ class Array
|
|
18
21
|
# a.first! #=> "a"
|
19
22
|
# p a #=> ["y","z"]
|
20
23
|
#
|
24
|
+
# CREDIT: Trans
|
25
|
+
|
21
26
|
alias_method :first!, :shift
|
22
27
|
|
23
28
|
# Alias for pop, which removes and returns
|
@@ -27,6 +32,8 @@ class Array
|
|
27
32
|
# a.last! 3
|
28
33
|
# p a #=> [1,2,3]
|
29
34
|
#
|
35
|
+
# CREDIT: Trans
|
36
|
+
|
30
37
|
alias_method :last!, :pop
|
31
38
|
|
32
39
|
# Iteration object.
|
@@ -51,6 +58,26 @@ class Array
|
|
51
58
|
end
|
52
59
|
|
53
60
|
# Iterate over each element of array using an iteration object.
|
61
|
+
#
|
62
|
+
# [1,2,3].each_iteration do |it|
|
63
|
+
# p it.index
|
64
|
+
# p it.value
|
65
|
+
# p it.first?
|
66
|
+
# p it.last?
|
67
|
+
# p it.prior
|
68
|
+
# p it.after
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# on each successive iteration produces:
|
72
|
+
#
|
73
|
+
# 0 1 2
|
74
|
+
# 1 2 3
|
75
|
+
# true false false
|
76
|
+
# false false true
|
77
|
+
# [] [1] [1,2]
|
78
|
+
# [2,3] [3] []
|
79
|
+
#
|
80
|
+
# CREDIT: Trans
|
54
81
|
|
55
82
|
def each_iteration
|
56
83
|
if block_given?
|
@@ -1,10 +1,21 @@
|
|
1
1
|
class Array
|
2
2
|
|
3
3
|
# Alias for <tt>|</tt>.
|
4
|
+
#
|
5
|
+
# [1,2].merge [2,3] #=> [1,2,3]
|
6
|
+
#
|
7
|
+
# CREDIT: Trans
|
8
|
+
|
4
9
|
alias_method :merge, :|
|
5
10
|
|
6
11
|
# In place #merge.
|
7
12
|
#
|
13
|
+
# a = [1,2]
|
14
|
+
# a.merge! [2,3]
|
15
|
+
# a => [1,2,3]
|
16
|
+
#
|
17
|
+
# CREDIT: Trans
|
18
|
+
|
8
19
|
def merge!( other )
|
9
20
|
self.replace( self | other )
|
10
21
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class Array
|
2
|
-
|
2
|
+
|
3
3
|
# Returns the _only_ element in the array. Raises an IndexError if
|
4
4
|
# the array's size is not 1.
|
5
5
|
#
|
@@ -7,8 +7,8 @@ class Array
|
|
7
7
|
# [1,2,3].only # -> IndexError
|
8
8
|
# [].only # -> IndexError
|
9
9
|
#
|
10
|
-
# CREDIT
|
11
|
-
# CREDIT
|
10
|
+
# CREDIT: Gavin Sinclair
|
11
|
+
# CREDIT: Noah Gibbs
|
12
12
|
|
13
13
|
def only
|
14
14
|
unless size == 1
|
@@ -5,8 +5,6 @@
|
|
5
5
|
#
|
6
6
|
class Array
|
7
7
|
|
8
|
-
# CREDIT Richard Laugesen
|
9
|
-
|
10
8
|
# Pad an array with a given <tt>value</tt> upto a given <tt>length</tt>.
|
11
9
|
#
|
12
10
|
# [0,1,2].pad(6,"a") #=> [0,1,2,"a","a","a"]
|
@@ -15,6 +13,8 @@ class Array
|
|
15
13
|
# to the beginning of the array.
|
16
14
|
#
|
17
15
|
# [0,1,2].pad(-6,"a") #=> ["a","a","a",0,1,2]
|
16
|
+
#
|
17
|
+
# CREDIT: Richard Laugesen
|
18
18
|
|
19
19
|
def pad(len, val=nil)
|
20
20
|
return dup if self.size >= len.abs
|
@@ -30,6 +30,8 @@ class Array
|
|
30
30
|
# a = [0,1,2]
|
31
31
|
# a.pad!(6,"x")
|
32
32
|
# a #=> [0,1,2,"x","x","x"]
|
33
|
+
#
|
34
|
+
# CREDIT: Richard Laugesen
|
33
35
|
|
34
36
|
def pad!(len, val=nil)
|
35
37
|
return self if self.size >= len.abs
|
@@ -41,47 +43,3 @@ class Array
|
|
41
43
|
end
|
42
44
|
|
43
45
|
end
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
# _____ _
|
48
|
-
# |_ _|__ ___| |_
|
49
|
-
# | |/ _ \/ __| __|
|
50
|
-
# | | __/\__ \ |_
|
51
|
-
# |_|\___||___/\__|
|
52
|
-
#
|
53
|
-
=begin test
|
54
|
-
|
55
|
-
require 'test/unit'
|
56
|
-
|
57
|
-
class TestArray < Test::Unit::TestCase
|
58
|
-
|
59
|
-
def test_pad
|
60
|
-
r = [0,1,2,3].pad(7,"x")
|
61
|
-
x = [0,1,2,3,"x","x","x"]
|
62
|
-
assert_equal(x,r)
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_pad!
|
66
|
-
a = [0,1,2,3]
|
67
|
-
r = a.pad!(6,"y")
|
68
|
-
x = [0,1,2,3,"y","y"]
|
69
|
-
assert_equal(x,a)
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_pad_negative
|
73
|
-
r = [0,1,2,3].pad(-7,"n")
|
74
|
-
x = ["n","n","n",0,1,2,3]
|
75
|
-
assert_equal(x,r)
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_pad_negative!
|
79
|
-
a = [0,1,2,3]
|
80
|
-
r = a.pad!(-6,"q")
|
81
|
-
x = ["q","q",0,1,2,3]
|
82
|
-
assert_equal(x,a)
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
=end
|