facets 3.0.0 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.index +11 -7
- data/CONTRIBUTING.md +112 -0
- data/HISTORY.md +38 -0
- data/{README.rdoc → README.md} +59 -59
- data/demo/core/array/after.md +13 -0
- data/demo/core/array/arrange.md +17 -0
- data/demo/core/array/before.md +14 -0
- data/demo/core/array/collapse.md +15 -0
- data/demo/core/array/collisions.md +30 -0
- data/demo/core/array/commonality.md +31 -0
- data/demo/core/array/conjoin.md +47 -0
- data/demo/core/array/contains.md +9 -0
- data/demo/core/array/delete_unless.md +13 -0
- data/demo/core/array/delete_values.md +10 -0
- data/demo/core/array/delete_values_at.md +15 -0
- data/demo/core/array/divide.md +14 -0
- data/demo/core/array/duplicates.md +14 -0
- data/demo/core/array/each_overlap.md +12 -0
- data/demo/core/array/each_pair.md +13 -0
- data/demo/core/array/each_value.md +12 -0
- data/demo/core/array/entropy.md +13 -0
- data/demo/core/array/extract_options.md +13 -0
- data/demo/core/array/first.md +11 -0
- data/demo/core/array/from.md +11 -0
- data/demo/core/array/ideal_entropy.md +11 -0
- data/demo/core/array/intersection.md +11 -0
- data/demo/core/array/last.md +11 -0
- data/demo/core/array/median.md +23 -0
- data/demo/core/array/merge.md +15 -0
- data/demo/core/array/missing.md +10 -0
- data/demo/core/array/mode.md +9 -0
- data/demo/core/array/nonuniq.md +16 -0
- data/demo/core/array/not_empty.md +8 -0
- data/demo/core/array/occur.md +18 -0
- data/demo/core/array/occurrence.md +13 -0
- data/demo/core/array/only.md +9 -0
- data/demo/core/array/op_pow.md +10 -0
- data/demo/core/array/pad.md +28 -0
- data/demo/core/array/peek.md +10 -0
- data/demo/core/array/poke.md +15 -0
- data/demo/core/array/probability +8 -0
- data/demo/core/array/pull.md +10 -0
- data/demo/core/array/recurse.md +10 -0
- data/demo/core/array/recursively.md +20 -0
- data/demo/core/array/reject_values.md +10 -0
- data/demo/core/array/splice.md +14 -0
- data/demo/core/array/split.md +13 -0
- data/demo/core/array/squeeze.md +14 -0
- data/demo/core/array/step.md +16 -0
- data/demo/core/array/store.md +9 -0
- data/demo/core/array/thru.md +12 -0
- data/demo/core/array/to_h.md +11 -0
- data/demo/core/array/traverse.md +20 -0
- data/demo/core/array/uniq_by.md +16 -0
- data/demo/core/array/unique_permutation.md +14 -0
- data/demo/core/array/zip.md +8 -0
- data/demo/core/binding/caller.md +57 -0
- data/demo/core/binding/defined.md +10 -0
- data/demo/core/binding/opvars.md +16 -0
- data/demo/core/binding/self.md +6 -0
- data/demo/core/class/descendants.md +13 -0
- data/demo/core/class/to_proc.md +11 -0
- data/demo/core/comparable/at_least.md +11 -0
- data/demo/core/comparable/at_most.md +11 -0
- data/demo/core/comparable/bound.md +13 -0
- data/demo/core/comparable/cap.md +11 -0
- data/demo/core/comparable/clip.md +29 -0
- data/demo/core/comparable/cmp.md +18 -0
- data/demo/core/comparable/op_get.md +32 -0
- data/demo/core/dir/ascend.md +24 -0
- data/demo/core/dir/descend.md +16 -0
- data/demo/core/dir/multiglob.md +41 -0
- data/demo/core/dir/parent.md +6 -0
- data/demo/core/dir/recurse.md +41 -0
- data/demo/core/exception/detail.md +19 -0
- data/demo/core/{facets.rdoc → facets.md} +1 -1
- data/demo/core/filetest/root.md +13 -0
- data/demo/core/hash/recursively.md +21 -0
- data/demo/core/indexable.md +95 -0
- data/demo/core/integer/bitmask.md +46 -0
- data/demo/core/integer/{factorial.rdoc → factorial.md} +1 -1
- data/demo/core/integer/{length.rdoc → length.md} +1 -1
- data/demo/core/integer/{multiple.rdoc → multiple.md} +3 -1
- data/demo/core/integer/of.md +11 -0
- data/demo/core/integer/{ordinal.rdoc → ordinal.md} +3 -1
- data/demo/core/integer/{of.rdoc → times_collect.md} +2 -7
- data/demo/core/matchdata/match.md +7 -0
- data/demo/core/matchdata/matchset.md +7 -0
- data/demo/core/matchdata/matchtree.md +10 -0
- data/demo/core/module/cattr.md +43 -0
- data/demo/core/module/class_extend.md +64 -0
- data/demo/core/module/{class_inheritor.rdoc → class_inheritor.md} +2 -2
- data/demo/core/module/{copy_inheritor.rdoc → copy_inheritor.md} +4 -4
- data/demo/core/module/include_as.md +31 -0
- data/demo/core/module/method_space.md +24 -0
- data/demo/core/string/acronym.md +9 -0
- data/demo/core/string/{align.rdoc → align.md} +10 -10
- data/demo/core/string/ascii_only.md +37 -0
- data/demo/core/string/{bracket.rdoc → bracket.md} +10 -10
- data/demo/core/string/camelcase.md +47 -0
- data/demo/core/string/{capitalized.rdoc → capitalized.md} +9 -9
- data/demo/core/string/characters.md +11 -0
- data/demo/core/string/{cleanlines.rdoc → cleanlines.md} +3 -3
- data/demo/core/string/cleave.md +49 -0
- data/demo/core/string/compress_lines.md +22 -0
- data/demo/core/string/crypt.md +15 -0
- data/demo/core/string/divide.md +9 -0
- data/demo/core/string/each_word.md +11 -0
- data/demo/core/string/edit_distance.md +15 -0
- data/demo/core/string/exclude.md +15 -0
- data/demo/core/string/expand_tabs.md +69 -0
- data/demo/core/string/fold.md +14 -0
- data/demo/core/string/indent.md +65 -0
- data/demo/core/string/index_all.md +14 -0
- data/demo/core/string/interpolate.md +8 -0
- data/demo/core/string/lchomp.md +14 -0
- data/demo/core/string/line_wrap.md +7 -0
- data/demo/core/string/lowercase.md +12 -0
- data/demo/core/string/methodize.md +22 -0
- data/demo/core/string/modulize.md +22 -0
- data/demo/core/string/mscan.md +10 -0
- data/demo/core/string/natcmp.md +10 -0
- data/demo/core/string/nchar.md +9 -0
- data/demo/core/string/{newlines.rdoc → newlines.md} +3 -3
- data/demo/core/string/number.md +27 -0
- data/demo/core/string/op_div.md +10 -0
- data/demo/core/string/op_sub.md +7 -0
- data/demo/core/string/pathize.md +22 -0
- data/demo/core/string/quote.md +20 -0
- data/demo/core/string/random.md +25 -0
- data/demo/core/string/range.md +19 -0
- data/demo/core/string/remove.md +33 -0
- data/demo/core/string/rewrite.md +9 -0
- data/demo/core/string/shatter.md +9 -0
- data/demo/core/string/similarity.md +12 -0
- data/demo/core/string/snakecase.md +14 -0
- data/demo/core/string/splice.md +28 -0
- data/demo/core/string/squish.md +27 -0
- data/demo/core/string/store.md +10 -0
- data/demo/core/string/subtract.md +8 -0
- data/demo/core/string/titlecase.md +8 -0
- data/demo/core/string/to_re.md +22 -0
- data/demo/core/string/{margin.rdoc → trim.md} +14 -14
- data/demo/core/string/unbracket.md +24 -0
- data/demo/core/string/underscore.md +17 -0
- data/demo/core/string/unfold.md +9 -0
- data/demo/core/string/unindent.md +65 -0
- data/demo/core/string/unquote.md +6 -0
- data/demo/core/string/uppercase.md +15 -0
- data/demo/core/string/variablize.md +7 -0
- data/demo/core/string/word_wrap.md +54 -0
- data/demo/core/string/words.md +13 -0
- data/demo/core/string/xor.md +8 -0
- data/lib/core/facets.yml +11 -7
- data/lib/core/facets/array.rb +1 -0
- data/lib/core/facets/array/average.rb +16 -0
- data/lib/core/facets/array/collapse.rb +4 -0
- data/lib/core/facets/array/delete_values_at.rb +1 -0
- data/lib/core/facets/array/divide.rb +7 -0
- data/lib/core/facets/array/duplicates.rb +2 -0
- data/lib/core/facets/array/each_pair.rb +1 -4
- data/lib/core/facets/array/first.rb +1 -0
- data/lib/core/facets/array/from.rb +11 -16
- data/lib/core/facets/array/intersection.rb +1 -1
- data/lib/core/facets/array/last.rb +1 -0
- data/lib/core/facets/array/mode.rb +2 -2
- data/lib/core/facets/array/occurrence.rb +4 -3
- data/lib/core/facets/array/op_pow.rb +0 -2
- data/lib/core/facets/array/probability.rb +1 -1
- data/lib/core/facets/array/recursively.rb +2 -2
- data/lib/core/facets/array/splice.rb +1 -1
- data/lib/core/facets/array/standard_deviation.rb +23 -0
- data/lib/core/facets/array/to_h.rb +0 -3
- data/lib/core/facets/array/uniq_by.rb +4 -0
- data/lib/core/facets/array/variance.rb +20 -0
- data/lib/core/facets/binding.rb +0 -1
- data/lib/core/facets/enumerable/cluster.rb +6 -4
- data/lib/core/facets/enumerable/hashify.rb +27 -31
- data/lib/core/facets/enumerable/sum.rb +12 -2
- data/lib/core/facets/file/atomic_open.rb +1 -1
- data/lib/core/facets/hash/except.rb +13 -1
- data/lib/core/facets/indexable.rb +1 -1
- data/lib/core/facets/kernel/ergo.rb +3 -3
- data/lib/core/facets/kernel/like.rb +1 -1
- data/lib/core/facets/matchdata/matchtree.rb +2 -0
- data/lib/core/facets/numeric/delimit.rb +20 -0
- data/lib/core/facets/range/nudge.rb +29 -0
- data/lib/core/facets/string.rb +0 -2
- data/lib/core/facets/string/indent.rb +0 -8
- data/lib/core/facets/string/margin.rb +0 -4
- data/lib/core/facets/string/random.rb +13 -3
- data/lib/core/facets/string/similarity.rb +7 -6
- data/lib/standard/facets/enumargs.rb +5 -0
- data/lib/standard/facets/math/percentile.rb +1 -1
- data/lib/standard/facets/net/http.rb +33 -14
- data/lib/standard/facets/timer.rb +3 -3
- data/test/core/array/test_average.rb +16 -0
- data/test/core/array/test_before.rb +21 -0
- data/test/core/array/test_collapse.rb +10 -1
- data/test/core/array/test_delete_unless.rb +17 -0
- data/test/core/array/test_delete_values.rb +31 -0
- data/test/core/array/test_divide.rb +10 -0
- data/test/core/array/test_each_pair.rb +16 -0
- data/test/core/array/test_each_value.rb +16 -0
- data/test/core/array/test_from.rb +42 -0
- data/test/core/array/test_op_pow.rb +13 -0
- data/test/core/array/test_standard_deviation.rb +18 -0
- data/test/core/array/test_to_h.rb +14 -0
- data/test/core/array/test_uniq_by.rb +7 -0
- data/test/core/array/test_variance.rb +17 -0
- data/test/core/array/test_zip.rb +13 -0
- data/test/core/dir/test_each_child.rb +1 -1
- data/test/core/dir/test_multiglob.rb +1 -1
- data/test/core/enumerable/test_cluster.rb +36 -0
- data/test/core/enumerable/test_hashify.rb +113 -0
- data/test/core/hash/test_expect.rb +11 -1
- data/test/core/kernel/test_ergo.rb +7 -5
- data/test/core/{object/test_replace.rb → kernel/test_instance_replace.rb} +6 -28
- data/test/core/numeric/test_delimit.rb +68 -0
- data/test/core/numeric/{test_round.rb → test_round_to.rb} +27 -27
- data/test/core/range/test_nudge.rb +32 -0
- data/test/core/range/{test_to_r.rb → test_to_rng.rb} +3 -3
- data/test/core/string/test_acronym.rb +14 -0
- data/test/core/string/test_ascii_only.rb +21 -0
- data/test/core/string/test_compress_lines.rb +9 -0
- data/test/core/string/test_crypt.rb +17 -0
- data/test/core/string/test_index_all.rb +4 -0
- data/test/core/string/test_random.rb +25 -0
- data/test/core/string/test_remove.rb +14 -0
- data/test/core/string/test_similarity.rb +9 -1
- data/test/core/struct/test_replace.rb +18 -0
- data/test/standard/test_enumargs.rb +26 -10
- data/test/standard/test_timer.rb +1 -1
- metadata +634 -588
- data/CONTRIBUTE.md +0 -78
- data/demo/core/array/combination.rdoc +0 -19
- data/demo/core/array/delete.rdoc +0 -23
- data/demo/core/array/index.rdoc +0 -14
- data/demo/core/array/merge.rdoc +0 -15
- data/demo/core/array/only.rdoc +0 -9
- data/demo/core/array/pad.rdoc +0 -28
- data/demo/core/array/permutation.rdoc +0 -10
- data/demo/core/array/product.rdoc +0 -26
- data/demo/core/array/recursively.rdoc +0 -16
- data/demo/core/array/rotate.rdoc +0 -30
- data/demo/core/array/select.rdoc +0 -8
- data/demo/core/array/uniq_by.rdoc +0 -9
- data/demo/core/binding/caller.rdoc +0 -57
- data/demo/core/binding/defined.rdoc +0 -10
- data/demo/core/binding/eval.rdoc +0 -8
- data/demo/core/binding/local_variables.rdoc +0 -26
- data/demo/core/binding/opvars.rdoc +0 -16
- data/demo/core/binding/self.rdoc +0 -6
- data/demo/core/class/descendants.rdoc +0 -10
- data/demo/core/class/to_proc.rdoc +0 -8
- data/demo/core/comparable/cap.rdoc +0 -20
- data/demo/core/comparable/clip.rdoc +0 -37
- data/demo/core/comparable/cmp.rdoc +0 -18
- data/demo/core/comparable/op_get.rdoc +0 -29
- data/demo/core/dir/ascend.rdoc +0 -24
- data/demo/core/dir/descend.rdoc +0 -14
- data/demo/core/dir/multiglob.rdoc +0 -41
- data/demo/core/dir/parent.rdoc +0 -6
- data/demo/core/dir/recurse.rdoc +0 -41
- data/demo/core/exception/detail.rdoc +0 -12
- data/demo/core/filetest/root.rdoc +0 -6
- data/demo/core/hash/recursively.rdoc +0 -21
- data/demo/core/indexable.rdoc +0 -95
- data/demo/core/integer/bitmask.rdoc +0 -46
- data/demo/core/integer/even.rdoc +0 -12
- data/demo/core/integer/odd.rdoc +0 -12
- data/demo/core/matchdata/match.rdoc +0 -7
- data/demo/core/matchdata/matchset.rdoc +0 -15
- data/demo/core/module/cattr.rdoc +0 -43
- data/demo/core/module/class_extend.rdoc +0 -64
- data/demo/core/module/method_space.rdoc +0 -55
- data/demo/core/string/bytes.rdoc +0 -8
- data/demo/core/string/camelcase.rdoc +0 -47
- data/demo/core/string/characters.rdoc +0 -11
- data/demo/core/string/cleave.rdoc +0 -49
- data/demo/core/string/divide.rdoc +0 -9
- data/demo/core/string/each_char.rdoc +0 -9
- data/demo/core/string/each_word.rdoc +0 -9
- data/demo/core/string/end_with.rdoc +0 -6
- data/demo/core/string/expand_tabs.rdoc +0 -69
- data/demo/core/string/fold.rdoc +0 -14
- data/demo/core/string/indent.rdoc +0 -65
- data/demo/core/string/interpolate.rdoc +0 -7
- data/demo/core/string/lchomp.rdoc +0 -14
- data/demo/core/string/line_wrap.rdoc +0 -7
- data/demo/core/string/lines.rdoc +0 -8
- data/demo/core/string/methodize.rdoc +0 -22
- data/demo/core/string/modulize.rdoc +0 -22
- data/demo/core/string/mscan.rdoc +0 -10
- data/demo/core/string/natcmp.rdoc +0 -10
- data/demo/core/string/nchar.rdoc +0 -9
- data/demo/core/string/op_sub.rdoc +0 -7
- data/demo/core/string/pathize.rdoc +0 -22
- data/demo/core/string/quote.rdoc +0 -20
- data/demo/core/string/range.rdoc +0 -19
- data/demo/core/string/rewrite.rdoc +0 -9
- data/demo/core/string/shatter.rdoc +0 -9
- data/demo/core/string/snakecase.rdoc +0 -10
- data/demo/core/string/splice.rdoc +0 -28
- data/demo/core/string/start_with.rdoc +0 -7
- data/demo/core/string/subtract.rdoc +0 -8
- data/demo/core/string/tab.rdoc +0 -16
- data/demo/core/string/tabto.rdoc +0 -29
- data/demo/core/string/titlecase.rdoc +0 -8
- data/demo/core/string/to_re.rdoc +0 -22
- data/demo/core/string/unfold.rdoc +0 -9
- data/demo/core/string/unindent.rdoc +0 -65
- data/demo/core/string/unquote.rdoc +0 -6
- data/demo/core/string/variablize.rdoc +0 -7
- data/demo/core/string/word_wrap.rdoc +0 -54
- data/demo/core/string/words.rdoc +0 -13
- data/demo/core/string/xor.rdoc +0 -8
- data/lib/core/facets/binding/local_variables.rb +0 -16
- data/lib/core/facets/string/tab.rb +0 -2
- data/lib/core/facets/string/tabto.rb +0 -2
- data/test/core/array/test_after.rb +0 -27
- data/test/core/array/test_combination.rb +0 -25
- data/test/core/array/test_index.rb +0 -20
- data/test/core/array/test_permutation.rb +0 -20
- data/test/core/array/test_product.rb +0 -64
- data/test/core/array/test_rotate.rb +0 -38
- data/test/core/array/test_select.rb +0 -16
- data/test/core/binding/test_eval.rb +0 -15
- data/test/core/binding/test_local_variables.rb +0 -36
- data/test/core/enumerable/test_cluster_by.rb +0 -30
- data/test/core/enumerable/test_count.rb +0 -32
- data/test/core/enumerable/test_each_with_object.rb +0 -18
- data/test/core/enumerable/test_group_by.rb +0 -36
- data/test/core/enumerable/test_none.rb +0 -29
- data/test/core/enumerable/test_one.rb +0 -34
- data/test/core/enumerable/test_take.rb +0 -15
- data/test/core/hash/test_select.rb +0 -44
- data/test/core/hash/test_url_params.rb +0 -26
- data/test/core/integer/test_even.rb +0 -24
- data/test/core/integer/test_odd.rb +0 -24
- data/test/core/kernel/test_require_relative.rb +0 -12
- data/test/core/nilclass/test_to_f.rb +0 -13
- data/test/core/proc/test_curry.rb +0 -38
- data/test/core/string/test_bytes.rb +0 -13
- data/test/core/string/test_each_char.rb +0 -17
- data/test/core/string/test_end_with.rb +0 -24
- data/test/core/string/test_lines.rb +0 -15
- data/test/core/string/test_start_with.rb +0 -24
- data/test/core/string/test_tab.rb +0 -16
- data/test/core/symbol/test_to_proc.rb +0 -35
- data/test/core/to_hash_tc.rb +0 -210
- data/test/core/unboundmethod/test_name.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6968b01e3ed3e46be3265a381de7443ec38bb966
|
4
|
+
data.tar.gz: 4668e23ad2f1e44a65cf8ba895f0daccbf65c175
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6deb1971ac97f93bb75d4c144fabb91d6e9f6424867e4be70a2b99623d35080a49cf774c18e36236877c3f35d3549ca5563eb6a6c18912beccd3e67b1a414ec0
|
7
|
+
data.tar.gz: 4fefcae7db154ac8b054aa4d5fc293653ea2376a1a36a59968bbad9a70763a06ca8bde410c1c3bb1c89d10e455420feee977264bfd8d1f4e49494bf90a16b9cf
|
data/.index
CHANGED
@@ -12,24 +12,28 @@ organizations:
|
|
12
12
|
requirements:
|
13
13
|
- groups:
|
14
14
|
- test
|
15
|
-
version:
|
15
|
+
version: ">= 0"
|
16
16
|
name: lemon
|
17
17
|
- groups:
|
18
18
|
- test
|
19
|
-
version:
|
19
|
+
version: ">= 0"
|
20
20
|
name: qed
|
21
21
|
- groups:
|
22
22
|
- test
|
23
|
-
version:
|
23
|
+
version: ">= 0"
|
24
24
|
name: rubytest-cli
|
25
25
|
- groups:
|
26
26
|
- test
|
27
|
-
version:
|
27
|
+
version: ">= 0"
|
28
28
|
name: rake
|
29
29
|
- groups:
|
30
30
|
- test
|
31
|
-
version:
|
31
|
+
version: ">= 0"
|
32
32
|
name: simplecov
|
33
|
+
- groups:
|
34
|
+
- guard
|
35
|
+
version: ">= 0"
|
36
|
+
name: guard
|
33
37
|
conflicts: []
|
34
38
|
alternatives: []
|
35
39
|
resources:
|
@@ -63,7 +67,7 @@ paths:
|
|
63
67
|
- lib/standard
|
64
68
|
name: facets
|
65
69
|
title: Ruby Facets
|
66
|
-
version: 3.
|
70
|
+
version: 3.1.0
|
67
71
|
summary: The orginal well curated collection of extension methods for Ruby.
|
68
72
|
slogan: ALL YOUR BASE ARE BELONG TO RUBY!
|
69
73
|
description: Facets is the premier collection of extension methods for the Ruby programming
|
@@ -73,4 +77,4 @@ description: Facets is the premier collection of extension methods for the Ruby
|
|
73
77
|
applications.
|
74
78
|
scm_uri: https://github.com/rubyworks/facets/tree/master
|
75
79
|
created: '2004-12-16'
|
76
|
-
date: '
|
80
|
+
date: '2016-05-09'
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
# CONTRIBUTING TO FACETS
|
2
|
+
|
3
|
+
## General Rules
|
4
|
+
|
5
|
+
* Facets methods must have no external dependencies. (The only possible
|
6
|
+
exception to this is if the functor gets spun-off as a separate gem along
|
7
|
+
with related methods, but for now that hasn't happened.)
|
8
|
+
|
9
|
+
* Each method must be in it's own file of the same name. If the method ends
|
10
|
+
with `=` or `?` just leave it off the file name.
|
11
|
+
|
12
|
+
* On rare occasion two or more methods can be very tightly related. In these
|
13
|
+
cases the methods can all go in a single file under the name of the method
|
14
|
+
considered most significant. Usually files for the other methods should
|
15
|
+
still be created that simply require the main file.
|
16
|
+
|
17
|
+
* Methods must be tested both via a Lemon unit test and as a QED demo.
|
18
|
+
The Lemon unit tests are for testing a method in detail whereas the QED
|
19
|
+
demos are for demonstrating usage.
|
20
|
+
|
21
|
+
* Facets is divided into two parts, *core* and *standard* libraries.
|
22
|
+
Almost all of the core library can be loaded at once using `require 'facets'`
|
23
|
+
The standard library (also called the *more* library) must be required
|
24
|
+
per-script.
|
25
|
+
|
26
|
+
* Some core methods are included on a *trial* basis, and these are not
|
27
|
+
necessary loaded automatically with `require 'facets'`. These should be
|
28
|
+
documented as such in the method comments.
|
29
|
+
|
30
|
+
* Standard libraries that are not extensions of existing standard libraries
|
31
|
+
do not have to be divvied up into individual method files. But note that
|
32
|
+
full classes and/or modules are less likely to make it into Facets, as
|
33
|
+
these sorts of additions to Facets are only for very basic sorts of things.
|
34
|
+
Otherwise they'd deserve their own gem.
|
35
|
+
|
36
|
+
* When submitting new methods for consideration, it is best if each method
|
37
|
+
(or *tightly related* set of methods) is in it's own pull request. If you
|
38
|
+
have only one method to submit then a simple commit will do the trick. If
|
39
|
+
you have more than one it best to use separate branches. Let me emphasizes
|
40
|
+
this point because it makes it *much more likely* that your pull request
|
41
|
+
will be merged. If you submit a bunch of methods in a single pull request,
|
42
|
+
it is very likely that it will not be merged even if methods you submitted
|
43
|
+
are accepted!!!
|
44
|
+
|
45
|
+
* Don't be discouraged when you get feedback about a method that isn't
|
46
|
+
all sunshine and roses. Facets has been around long enough now that
|
47
|
+
it needs to maintain a certain degree of quality control, and that means
|
48
|
+
serious discernment about what goes into the library. That includes
|
49
|
+
having in depth discussions the merits of methods, even about the best
|
50
|
+
name for a method --even if the functionality has been accepted the name
|
51
|
+
may not.
|
52
|
+
|
53
|
+
|
54
|
+
## Versioning
|
55
|
+
|
56
|
+
Facets tries to follow a semantic versioning system, but with a slightly
|
57
|
+
differt scheme than most projects. For Facets the version number represents:
|
58
|
+
|
59
|
+
gestault.major.minor
|
60
|
+
|
61
|
+
Techinically there can be a fouth `build` number, but we never use it for
|
62
|
+
releases.
|
63
|
+
|
64
|
+
|
65
|
+
## Commit Tags
|
66
|
+
|
67
|
+
When making a commit, it is helpful to add a *commit tag* to the end of the
|
68
|
+
first line of commit message. Commit tags are single words wrapped in colons.
|
69
|
+
|
70
|
+
* If the commit is only a documentation change, then and `:doc:`.
|
71
|
+
* If it is only a change to tests then add `:test:`.
|
72
|
+
* If the change only effects project build or config files then add `:admin:`.
|
73
|
+
* If the change fixes a bug that was reported via the issue system be sure
|
74
|
+
to reference the issue number in the message using `#` and add a `:bug:` tag.
|
75
|
+
* For actual code changes, if the change is *very minor* and not something
|
76
|
+
anyone would notice, you can use `:tweak:`, if you want.
|
77
|
+
* If the change would require a minor version change than use `:minor:`.
|
78
|
+
* But if a change is a significant change to the API, and thus will require
|
79
|
+
a major version change, then end the message with `:major:`.
|
80
|
+
|
81
|
+
These are all rules of thumb, and no one expects them to be applied perfectly.
|
82
|
+
|
83
|
+
|
84
|
+
## Documentation
|
85
|
+
|
86
|
+
Facets started when the only choice for API documentation was RDoc. So originally
|
87
|
+
that's how methods were documented. Since then both YARD and Tomdoc have come
|
88
|
+
along. And some of these documentation styles have crept into a number of
|
89
|
+
methods. So right now, things are a bit messy. But going forward it looks like we
|
90
|
+
are going to settle on Tomdoc as the official documentation style (but using
|
91
|
+
the tomparse gem's extensions). Using Tomdoc will give us reasonable
|
92
|
+
interoperability with both RDoc and YARD, both of which now have support for
|
93
|
+
Tomdoc (albeit support is not 100% the same, but hopefully it's close enough).
|
94
|
+
|
95
|
+
Officially we publish documentation via rubydoc.info, which is the YARD server,
|
96
|
+
and via the Facets website in Shomen JSON format.
|
97
|
+
|
98
|
+
When writing documentation for a method it is best to give a simple summary
|
99
|
+
explanation, followed by some basic examples. Follow that up with deeper
|
100
|
+
explanation if needed, including *when* and *why* the method could be useful.
|
101
|
+
|
102
|
+
|
103
|
+
## Testing
|
104
|
+
|
105
|
+
* Methods in `lib/core/facets/{class}/{method}.rb` will be tested in `test/foo/{class}/test_{method}.rb`.
|
106
|
+
* If `lib/core/facets/{class}/{method}.rb` consists only of a require statement, no test file is expected.
|
107
|
+
* If `lib/core/facets/{class}/{method}.rb` consists only of a require and an alias, then `test/foo/{class}/{method}.rb`, only needs to test the existence of the alias and not the underlying code. But it's okay if the alias is tested further.
|
108
|
+
* Methods in `lib/core/facets/{class}/{method}.rb` will be demoed in `demo/core/{class}/{method}.md`.
|
109
|
+
* Require only files will have a full demo of it's method or methods. Code in a single file may be split into multiple demos, named after the method. This is to promote discoverability in the documentation.
|
110
|
+
* Demos of aliases will have a simple demo, and a reference to the file it aliases
|
111
|
+
|
112
|
+
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,39 @@
|
|
1
1
|
# Facets Release History
|
2
2
|
|
3
|
+
## 3.1.0 / 2016-05-10
|
4
|
+
|
5
|
+
More or less a minor release, but there are some backward incompatabilites
|
6
|
+
such as `Hash#except!` which no longer returns the rejected entries (use
|
7
|
+
`Hash#remove!` for old behavior).
|
8
|
+
|
9
|
+
Special thanks to Scott Parrish for all his help getting Facets in tip-top
|
10
|
+
shape.
|
11
|
+
|
12
|
+
Changes:
|
13
|
+
|
14
|
+
* New Features
|
15
|
+
|
16
|
+
* Add `Hash#remove!` for old `except!` behavior.
|
17
|
+
* Add `Array#standard_deviation`.
|
18
|
+
* Add `Array#variance`.
|
19
|
+
* Add `Array#average`.
|
20
|
+
* Add `Numeric#delimit`.
|
21
|
+
|
22
|
+
* Improved Features
|
23
|
+
|
24
|
+
* Change `Hash#except!` to not return rejected entries.
|
25
|
+
* Improve definition of Character Set in `String.random`.
|
26
|
+
* Add one to denominator of `String#similarity` score.
|
27
|
+
* Enhanced download methods.
|
28
|
+
* Improvements on compatability with ActiveSupport.
|
29
|
+
* Enumerable#from and #thru return empty set when index is out of bounds.
|
30
|
+
|
31
|
+
* Bug Fixes
|
32
|
+
|
33
|
+
* Fix `Enumerable#key_by`.
|
34
|
+
* Fix `Enumerable#sum` to take initial value.
|
35
|
+
|
36
|
+
|
3
37
|
## 3.0.0 / 2014-11-11
|
4
38
|
|
5
39
|
This major release has been a long time in coming --too long in fact. As with
|
@@ -21,8 +55,10 @@ Changes:
|
|
21
55
|
* Add Dir.lookup method
|
22
56
|
* Add Enumerator::Lazy#squeeze
|
23
57
|
* Add Hash#fetch_nested
|
58
|
+
* Add Hash#deep_rekey and Hash#deep_rekey!
|
24
59
|
* Add Kernel#instance_extract
|
25
60
|
* Add Math#EC for Euler's constant
|
61
|
+
* Add Module#alias_class_method
|
26
62
|
* Add Pathname#chdir
|
27
63
|
* Add Pathname#readline
|
28
64
|
* Add Proc.wrap (may become `Kernel#Proc()`)
|
@@ -34,6 +70,7 @@ Changes:
|
|
34
70
|
* Improved Features
|
35
71
|
|
36
72
|
* Enumerable#sum argument is initial value.
|
73
|
+
* Generalize Enumerable#sum to duck-type on `#+`.
|
37
74
|
* Hash#collate can take multiple arguments.
|
38
75
|
* Hash#collate no longer flattens automatically.
|
39
76
|
* Time#past? and #future? use Time.current.
|
@@ -43,6 +80,7 @@ Changes:
|
|
43
80
|
|
44
81
|
* Rename Object#replace to Object#instance_replace.
|
45
82
|
* Rename Range#to_r to Range#to_rng, since #to_r is now for Rational.
|
83
|
+
* Rename Kernel#eigen to #meta.
|
46
84
|
|
47
85
|
* Bug Fixes
|
48
86
|
|
data/{README.rdoc → README.md}
RENAMED
@@ -1,9 +1,14 @@
|
|
1
|
-
|
1
|
+
# Ruby Facets
|
2
2
|
|
3
|
-
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/facets.png)](http://badge.fury.io/rb/facets)
|
4
|
+
[![Build Status](https://secure.travis-ci.org/rubyworks/facets.png)](http://travis-ci.org/rubyworks/facets)
|
5
|
+
[![Flattr Me](http://api.flattr.com/button/flattr-badge-large.png)](http://flattr.com/thing/324911/Rubyworks-Ruby-Development-Fund)
|
4
6
|
|
5
7
|
|
6
|
-
|
8
|
+
*"ALL YOUR BASE ARE BELONG TO RUBY"*
|
9
|
+
|
10
|
+
|
11
|
+
## Introduction
|
7
12
|
|
8
13
|
Ruby Facets is the premiere collection of general purpose method
|
9
14
|
extensions and standard additions for the Ruby programming language.
|
@@ -21,7 +26,7 @@ libraries constitute an reliable source of reusable components, suitable
|
|
21
26
|
to a wide variety of usecases.
|
22
27
|
|
23
28
|
|
24
|
-
|
29
|
+
## Resources
|
25
30
|
|
26
31
|
* Homepage: http://rubyworks.github.com/facets
|
27
32
|
* Report Bugs: http://github.com/rubyworks/facets/issues
|
@@ -30,7 +35,7 @@ to a wide variety of usecases.
|
|
30
35
|
* Source Code: http://github.com/rubyworks/facets
|
31
36
|
|
32
37
|
|
33
|
-
|
38
|
+
## Documentation
|
34
39
|
|
35
40
|
Facets has special documentation needs due to its extensive breadth.
|
36
41
|
The documentation generated when installing via RubyGems, or the YARD
|
@@ -40,13 +45,12 @@ it is important to remain aware of the source location of particular
|
|
40
45
|
methods.
|
41
46
|
|
42
47
|
For better organized online documentation, generated to separate core
|
43
|
-
extensions from standard libraries, see the
|
44
|
-
on the website for links to available documentation.
|
48
|
+
extensions from standard libraries, see the [Learn Facets](http://rubyworks.github.com/facets/learn.html) page on the website for links to available documentation.
|
45
49
|
|
46
50
|
|
47
|
-
|
51
|
+
## Installation
|
48
52
|
|
49
|
-
|
53
|
+
### Bundler
|
50
54
|
|
51
55
|
If you are using Bundler with your project, add the facets gem to the project's
|
52
56
|
Gemfile. Unless you want all of facets loaded be sure to add the `:require => false`
|
@@ -54,25 +58,25 @@ option.
|
|
54
58
|
|
55
59
|
gem "facets", require: false
|
56
60
|
|
57
|
-
|
61
|
+
### RubyGems
|
58
62
|
|
59
63
|
The easiest way to install is via RubyGems.
|
60
64
|
|
61
65
|
$ gem install facets
|
62
66
|
|
63
|
-
|
67
|
+
### Setup.rb
|
64
68
|
|
65
|
-
Facets can be installed the old-fashioned way using
|
69
|
+
Facets can be installed the old-fashioned way using [Setup.rb](http://rubyworks.github.com/setup).
|
66
70
|
Download and unpack the .tar.gz package and run setup.rb, like so:
|
67
71
|
|
68
72
|
$ tar -xvzf facets-2.x.x.tar.gz
|
69
73
|
$ cd facets-2.x.x
|
70
74
|
$ sudo setup.rb
|
71
75
|
|
72
|
-
Facets 2.8+ requires Ruby 1.8.7 or higher.
|
76
|
+
Facets 2.8+ requires Ruby 1.8.7 or higher. Facets 3.0+ requires Ruby 2.0.0 or higher.
|
73
77
|
|
74
78
|
|
75
|
-
|
79
|
+
## Mission
|
76
80
|
|
77
81
|
Facets holds to the notion that the more we can *reasonably* integrate into
|
78
82
|
a common foundation, directed toward general needs, the better that foundation
|
@@ -84,9 +88,9 @@ will be able to serve the community. There are a number of advantages here:
|
|
84
88
|
* One-stop Shop and Installation
|
85
89
|
|
86
90
|
|
87
|
-
|
91
|
+
## Usage
|
88
92
|
|
89
|
-
|
93
|
+
### CORE Library
|
90
94
|
|
91
95
|
At the heart of Ruby Facets is the CORE extensions library. CORE provides
|
92
96
|
a sizable collection of generally useful methods, along with a few supporting
|
@@ -95,7 +99,7 @@ classes, that extend the functionality of Ruby's core classes and modules.
|
|
95
99
|
With the exception of a few *uncommon* extensions, CORE contains anything that
|
96
100
|
will load automatically when issuing:
|
97
101
|
|
98
|
-
|
102
|
+
require 'facets'
|
99
103
|
|
100
104
|
This loads all the CORE functionality at once. If you plan to use more then a
|
101
105
|
handful of Facets core methods it is recommended that you require the library in
|
@@ -103,11 +107,11 @@ this way. However, you can also "cherry pick" the CORE library as you prefer.
|
|
103
107
|
And for uncommon extensions this must be done. The general require statement for
|
104
108
|
a core extension library is:
|
105
109
|
|
106
|
-
|
110
|
+
require 'facets/<class|module>/<method>'
|
107
111
|
|
108
112
|
For example:
|
109
113
|
|
110
|
-
|
114
|
+
require 'facets/time/stamp'
|
111
115
|
|
112
116
|
Most "atoms" contain only one method, but exceptions occur when methods
|
113
117
|
are closely tied together.
|
@@ -115,7 +119,7 @@ are closely tied together.
|
|
115
119
|
You can load per-class or per-module groups of core methods by requiring the
|
116
120
|
class or module by name. For example"
|
117
121
|
|
118
|
-
|
122
|
+
require 'facets/time'
|
119
123
|
|
120
124
|
Will require all the core Time method extensions.
|
121
125
|
|
@@ -124,7 +128,7 @@ of MORE libraries. A good example is 'random.rb'. There were separated because
|
|
124
128
|
they had more specialized use cases, where as CORE extensions are intended as
|
125
129
|
general purpose.
|
126
130
|
|
127
|
-
|
131
|
+
#### Method File Names
|
128
132
|
|
129
133
|
Operator method redirect files are stored using English names. For instance
|
130
134
|
`Proc#*` is `proc/op_mul`.
|
@@ -160,36 +164,34 @@ Facets simply takes the '*' and translates it into a string acceptable to all
|
|
160
164
|
file systems. Also, if a method ends in '=', '?' or '!' it is simply removed.
|
161
165
|
|
162
166
|
|
163
|
-
|
167
|
+
### MORE Library (aka Standard Library)
|
164
168
|
|
165
169
|
On top of the extensive CORE library, Facets provides extensions for Ruby's
|
166
|
-
standard library, as well as
|
170
|
+
standard library, as well as a small collection of additional modules and
|
167
171
|
classes to supplement it.
|
168
172
|
|
169
173
|
Use this library like you would any other 3rd party library.
|
170
174
|
The only difference between Facet's Standard library and other libraries
|
171
|
-
is the lack of any enclosing
|
172
|
-
the libraries provided by Facets are fairly low-level and very general
|
173
|
-
purpose.
|
175
|
+
is the lack of any enclosing `Facets::` namespace.
|
174
176
|
|
175
177
|
When using Facets extended versions of Ruby's standard libraries,
|
176
|
-
the libraries have to loaded
|
177
|
-
|
178
|
-
|
178
|
+
the libraries have to loaded individually. However you do not need
|
179
|
+
to load Ruby's library first, as the Facets' library will do that
|
180
|
+
automatically.
|
179
181
|
|
180
182
|
For example, normally one load Ruby's OpenStruct class via:
|
181
183
|
|
182
|
-
|
184
|
+
require 'ostruct'
|
183
185
|
|
184
186
|
To load 'ostruct.rb' plus Facets extensions for it simply use:
|
185
187
|
|
186
|
-
|
188
|
+
require 'facets/ostruct'
|
187
189
|
|
188
190
|
For details pertaining to the functionality of each feature,
|
189
191
|
please see the API documentation.
|
190
192
|
|
191
193
|
|
192
|
-
|
194
|
+
## Contribute
|
193
195
|
|
194
196
|
This project thrives on contribution!
|
195
197
|
|
@@ -200,48 +202,46 @@ of any thing already included or simply have a patch, they are more than
|
|
200
202
|
welcome. We want Ruby Facets to be of the highest quality.
|
201
203
|
|
202
204
|
|
203
|
-
|
204
|
-
|
205
|
-
Facets uses the {Lemon}[http://rubyworks.github.com/lemon] testing framework
|
206
|
-
to handle unit testing. And uses QED specifications to provide a higher level
|
207
|
-
of testing along wth documentation. It is most important to provide Lemon
|
208
|
-
tests when contributing, but feel free to provide QED specs if you are feeling
|
209
|
-
particularly verbose!
|
205
|
+
## Development
|
210
206
|
|
211
|
-
Facets uses
|
212
|
-
|
213
|
-
|
214
|
-
tools such as `mast` and `vclog`.
|
207
|
+
Facets uses the [Lemon](http://rubyworks.github.com/lemon) testing framework
|
208
|
+
to handle unit testing, while [QED](http://rubyworks.github.com/qed) specifications
|
209
|
+
provide tested documentation.
|
215
210
|
|
211
|
+
Facets uses [Detroit](http://detroit.github.com) and [Rulebow](http://rubyworks.github.com/rulebow)
|
212
|
+
build tools. Detroit is a life-cycle tool and Rulebow is continuous integrations tool. The build
|
213
|
+
scripts (`Assembly` and `Rulebook` respectively), sometimes use other tools such as
|
214
|
+
[Mast](http://rubyworks.github.com/mast) and [Indexer](http://rubyworks.github.com/indexer).
|
216
215
|
|
217
|
-
== Authors
|
218
216
|
|
219
|
-
|
220
|
-
reached via email at transfire at gmail.com.
|
217
|
+
## Authors
|
221
218
|
|
222
|
-
|
223
|
-
Fortunately nearly all were copyrighted under the same
|
224
|
-
|
225
|
-
|
226
|
-
specifically labeled othewise shall fall under the Ruby
|
219
|
+
Much of this collection was written and/or inspired by a variety of great Ruby
|
220
|
+
developers. Fortunately nearly all utilized works were copyrighted under the same
|
221
|
+
open licenses, the Ruby License or the more liberal BSD and MIT licenses. In the
|
222
|
+
one or two exceptions the copyright notice has been included with the source code.
|
223
|
+
Any code file not specifically labeled othewise shall fall under the current Ruby
|
224
|
+
License (which is BSD 2-clause).
|
227
225
|
|
228
|
-
In all cases,
|
226
|
+
In all cases, every effort has been made to give credit where credit is due.
|
229
227
|
You will find these acknowledgments embedded in the source code. You can see
|
230
228
|
them in "CREDIT:" and/or "@author" lines.
|
231
|
-
|
232
|
-
Also see the {Contibutors page}[https://github.com/rubyworks/facets/wiki/Contributors]
|
229
|
+
Also see the [Contibutors page](https://github.com/rubyworks/facets/wiki/Contributors)
|
233
230
|
on the Wiki for a list of all contributing Rubyists. If anyone is missing from
|
234
|
-
the list, please let
|
231
|
+
the list, please let us know so we can correct right away. Thanks.
|
232
|
+
|
233
|
+
This collection was put together by, and much of it written by [trans](https://github.com/trans).
|
234
|
+
If need be, he can be reached via email at transfire at gmail.com.
|
235
235
|
|
236
236
|
|
237
|
-
|
237
|
+
## License
|
238
238
|
|
239
239
|
The collection PER COLLECTION is licensed as follows:
|
240
240
|
|
241
|
-
|
242
|
-
|
241
|
+
Ruby Facets
|
242
|
+
Copyright (c) 2004,2010 Rubyworks
|
243
243
|
|
244
|
-
|
244
|
+
Distributed under the terms of the Ruby license.
|
245
245
|
|
246
246
|
The Ruby license is a dual license that also provides for use of the GPL.
|
247
247
|
Complete texts of both licenses accompany this document (see LICENSE).
|