ruby-nuggets 0.9.9 → 1.0.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.
- checksums.yaml +4 -4
- metadata +20 -324
- data/COPYING +0 -663
- data/ChangeLog +0 -7
- data/README +0 -62
- data/Rakefile +0 -47
- data/lib/nuggets.rb +0 -73
- data/lib/nuggets/all.rb +0 -36
- data/lib/nuggets/all_mixins.rb +0 -34
- data/lib/nuggets/ansicolor2css.rb +0 -125
- data/lib/nuggets/argv/option.rb +0 -3
- data/lib/nuggets/argv/option_mixin.rb +0 -85
- data/lib/nuggets/array/boost.rb +0 -5
- data/lib/nuggets/array/boost_mixin.rb +0 -78
- data/lib/nuggets/array/combination.rb +0 -63
- data/lib/nuggets/array/correlation.rb +0 -5
- data/lib/nuggets/array/correlation_mixin.rb +0 -64
- data/lib/nuggets/array/flatten_once.rb +0 -57
- data/lib/nuggets/array/flush.rb +0 -5
- data/lib/nuggets/array/flush_mixin.rb +0 -47
- data/lib/nuggets/array/format.rb +0 -66
- data/lib/nuggets/array/hashify.rb +0 -5
- data/lib/nuggets/array/hashify_mixin.rb +0 -48
- data/lib/nuggets/array/histogram.rb +0 -5
- data/lib/nuggets/array/histogram_mixin.rb +0 -170
- data/lib/nuggets/array/in_order.rb +0 -51
- data/lib/nuggets/array/limit.rb +0 -5
- data/lib/nuggets/array/limit_mixin.rb +0 -57
- data/lib/nuggets/array/mean.rb +0 -5
- data/lib/nuggets/array/mean_mixin.rb +0 -203
- data/lib/nuggets/array/median.rb +0 -5
- data/lib/nuggets/array/median_mixin.rb +0 -74
- data/lib/nuggets/array/mode.rb +0 -5
- data/lib/nuggets/array/mode_mixin.rb +0 -70
- data/lib/nuggets/array/monotone.rb +0 -84
- data/lib/nuggets/array/only.rb +0 -42
- data/lib/nuggets/array/rand.rb +0 -45
- data/lib/nuggets/array/regression.rb +0 -5
- data/lib/nuggets/array/regression_mixin.rb +0 -150
- data/lib/nuggets/array/runiq.rb +0 -5
- data/lib/nuggets/array/runiq_mixin.rb +0 -53
- data/lib/nuggets/array/shuffle.rb +0 -133
- data/lib/nuggets/array/standard_deviation.rb +0 -5
- data/lib/nuggets/array/standard_deviation_mixin.rb +0 -51
- data/lib/nuggets/array/to_hash.rb +0 -65
- data/lib/nuggets/array/variance.rb +0 -5
- data/lib/nuggets/array/variance_mixin.rb +0 -82
- data/lib/nuggets/cli.rb +0 -8
- data/lib/nuggets/content_type.rb +0 -98
- data/lib/nuggets/dotted_decimal.rb +0 -60
- data/lib/nuggets/enumerable/agrep.rb +0 -80
- data/lib/nuggets/enumerable/all_any_extended.rb +0 -67
- data/lib/nuggets/enumerable/minmax.rb +0 -103
- data/lib/nuggets/env/set.rb +0 -3
- data/lib/nuggets/env/set_mixin.rb +0 -68
- data/lib/nuggets/env/user_encoding.rb +0 -3
- data/lib/nuggets/env/user_encoding_mixin.rb +0 -55
- data/lib/nuggets/env/user_home.rb +0 -3
- data/lib/nuggets/env/user_home_mixin.rb +0 -57
- data/lib/nuggets/file/ext.rb +0 -5
- data/lib/nuggets/file/ext_mixin.rb +0 -88
- data/lib/nuggets/file/replace.rb +0 -5
- data/lib/nuggets/file/replace_mixin.rb +0 -56
- data/lib/nuggets/file/sub.rb +0 -5
- data/lib/nuggets/file/sub_mixin.rb +0 -96
- data/lib/nuggets/file/which.rb +0 -5
- data/lib/nuggets/file/which_mixin.rb +0 -73
- data/lib/nuggets/hash/at.rb +0 -69
- data/lib/nuggets/hash/deep_fetch.rb +0 -5
- data/lib/nuggets/hash/deep_fetch_mixin.rb +0 -75
- data/lib/nuggets/hash/deep_merge.rb +0 -5
- data/lib/nuggets/hash/deep_merge_mixin.rb +0 -54
- data/lib/nuggets/hash/idmap.rb +0 -5
- data/lib/nuggets/hash/idmap_mixin.rb +0 -42
- data/lib/nuggets/hash/in_order.rb +0 -44
- data/lib/nuggets/hash/insert.rb +0 -54
- data/lib/nuggets/hash/nest.rb +0 -5
- data/lib/nuggets/hash/nest_mixin.rb +0 -79
- data/lib/nuggets/hash/only.rb +0 -53
- data/lib/nuggets/hash/seen.rb +0 -5
- data/lib/nuggets/hash/seen_mixin.rb +0 -59
- data/lib/nuggets/hash/unroll.rb +0 -5
- data/lib/nuggets/hash/unroll_mixin.rb +0 -89
- data/lib/nuggets/hash/zip.rb +0 -5
- data/lib/nuggets/hash/zip_mixin.rb +0 -160
- data/lib/nuggets/i18n.rb +0 -156
- data/lib/nuggets/integer/factorial.rb +0 -57
- data/lib/nuggets/integer/length.rb +0 -5
- data/lib/nuggets/integer/length_mixin.rb +0 -50
- data/lib/nuggets/integer/map.rb +0 -5
- data/lib/nuggets/integer/map_mixin.rb +0 -43
- data/lib/nuggets/integer/to_binary_s.rb +0 -39
- data/lib/nuggets/io/agrep.rb +0 -44
- data/lib/nuggets/io/interact.rb +0 -5
- data/lib/nuggets/io/interact_mixin.rb +0 -160
- data/lib/nuggets/io/modes.rb +0 -122
- data/lib/nuggets/io/null.rb +0 -5
- data/lib/nuggets/io/null_mixin.rb +0 -41
- data/lib/nuggets/io/redirect.rb +0 -5
- data/lib/nuggets/io/redirect_mixin.rb +0 -51
- data/lib/nuggets/lazy_attr.rb +0 -45
- data/lib/nuggets/log_parser.rb +0 -71
- data/lib/nuggets/log_parser/apache.rb +0 -102
- data/lib/nuggets/log_parser/rails.rb +0 -220
- data/lib/nuggets/lsi.rb +0 -8
- data/lib/nuggets/midos.rb +0 -8
- data/lib/nuggets/mysql.rb +0 -8
- data/lib/nuggets/net/success.rb +0 -60
- data/lib/nuggets/numeric/between.rb +0 -2
- data/lib/nuggets/numeric/duration.rb +0 -101
- data/lib/nuggets/numeric/limit.rb +0 -63
- data/lib/nuggets/numeric/signum.rb +0 -53
- data/lib/nuggets/numeric/to_multiple.rb +0 -62
- data/lib/nuggets/object/blank.rb +0 -20
- data/lib/nuggets/object/blank_mixin.rb +0 -100
- data/lib/nuggets/object/boolean.rb +0 -5
- data/lib/nuggets/object/boolean_mixin.rb +0 -62
- data/lib/nuggets/object/eigenclass.rb +0 -2
- data/lib/nuggets/object/ghost_class.rb +0 -2
- data/lib/nuggets/object/metaclass.rb +0 -2
- data/lib/nuggets/object/msend.rb +0 -5
- data/lib/nuggets/object/msend_mixin.rb +0 -44
- data/lib/nuggets/object/silence.rb +0 -5
- data/lib/nuggets/object/silence_mixin.rb +0 -45
- data/lib/nuggets/object/singleton_class.rb +0 -5
- data/lib/nuggets/object/singleton_class_mixin.rb +0 -96
- data/lib/nuggets/object/uniclass.rb +0 -2
- data/lib/nuggets/object/virtual_class.rb +0 -2
- data/lib/nuggets/pluggable.rb +0 -92
- data/lib/nuggets/proc/bind.rb +0 -5
- data/lib/nuggets/proc/bind_mixin.rb +0 -52
- data/lib/nuggets/range/quantile.rb +0 -5
- data/lib/nuggets/range/quantile_mixin.rb +0 -43
- data/lib/nuggets/rdf/compression.rb +0 -6
- data/lib/nuggets/rdf/prefix.rb +0 -6
- data/lib/nuggets/rdf/turtle.rb +0 -8
- data/lib/nuggets/rdf/turtle/reader.rb +0 -6
- data/lib/nuggets/rdf/uri.rb +0 -6
- data/lib/nuggets/ruby.rb +0 -236
- data/lib/nuggets/statistics.rb +0 -12
- data/lib/nuggets/statistics_mixins.rb +0 -12
- data/lib/nuggets/string/camelscore.rb +0 -5
- data/lib/nuggets/string/camelscore_mixin.rb +0 -117
- data/lib/nuggets/string/capitalize_first.rb +0 -47
- data/lib/nuggets/string/case.rb +0 -82
- data/lib/nuggets/string/evaluate.rb +0 -5
- data/lib/nuggets/string/evaluate_mixin.rb +0 -48
- data/lib/nuggets/string/msub.rb +0 -85
- data/lib/nuggets/string/nsub.rb +0 -66
- data/lib/nuggets/string/sub_with_md.rb +0 -112
- data/lib/nuggets/string/wc.rb +0 -5
- data/lib/nuggets/string/wc_mixin.rb +0 -96
- data/lib/nuggets/string/word_wrap.rb +0 -77
- data/lib/nuggets/string/xor.rb +0 -5
- data/lib/nuggets/string/xor_mixin.rb +0 -60
- data/lib/nuggets/tempfile/open.rb +0 -58
- data/lib/nuggets/uri/content_type.rb +0 -5
- data/lib/nuggets/uri/content_type_mixin.rb +0 -48
- data/lib/nuggets/uri/exist.rb +0 -5
- data/lib/nuggets/uri/exist_mixin.rb +0 -57
- data/lib/nuggets/uri/redirect.rb +0 -5
- data/lib/nuggets/uri/redirect_mixin.rb +0 -102
- data/lib/nuggets/util/ansicolor2css.rb +0 -4
- data/lib/nuggets/util/cli.rb +0 -4
- data/lib/nuggets/util/content_type.rb +0 -4
- data/lib/nuggets/util/dotted_decimal.rb +0 -3
- data/lib/nuggets/util/i18n.rb +0 -4
- data/lib/nuggets/util/lazy_attr.rb +0 -4
- data/lib/nuggets/util/log_parser.rb +0 -4
- data/lib/nuggets/util/log_parser/apache.rb +0 -4
- data/lib/nuggets/util/log_parser/rails.rb +0 -4
- data/lib/nuggets/util/midos.rb +0 -4
- data/lib/nuggets/util/mysql.rb +0 -4
- data/lib/nuggets/util/pluggable.rb +0 -4
- data/lib/nuggets/util/ruby.rb +0 -4
- data/lib/nuggets/version.rb +0 -27
- data/spec/nuggets/array/boost_spec.rb +0 -50
- data/spec/nuggets/array/combination_spec.rb +0 -25
- data/spec/nuggets/array/correlation_spec.rb +0 -81
- data/spec/nuggets/array/flatten_once_spec.rb +0 -16
- data/spec/nuggets/array/flush_spec.rb +0 -43
- data/spec/nuggets/array/format_spec.rb +0 -52
- data/spec/nuggets/array/hashify_spec.rb +0 -41
- data/spec/nuggets/array/histogram_spec.rb +0 -87
- data/spec/nuggets/array/in_order_spec.rb +0 -13
- data/spec/nuggets/array/limit_spec.rb +0 -62
- data/spec/nuggets/array/mean_spec.rb +0 -203
- data/spec/nuggets/array/median_spec.rb +0 -77
- data/spec/nuggets/array/mode_spec.rb +0 -57
- data/spec/nuggets/array/monotone_spec.rb +0 -30
- data/spec/nuggets/array/only_spec.rb +0 -26
- data/spec/nuggets/array/regression_spec.rb +0 -54
- data/spec/nuggets/array/runiq_spec.rb +0 -25
- data/spec/nuggets/array/standard_deviation_spec.rb +0 -33
- data/spec/nuggets/array/to_hash_spec.rb +0 -28
- data/spec/nuggets/array/variance_spec.rb +0 -106
- data/spec/nuggets/dotted_decimal_spec.rb +0 -27
- data/spec/nuggets/enumerable/all_any_extended_spec.rb +0 -31
- data/spec/nuggets/enumerable/minmax_spec.rb +0 -21
- data/spec/nuggets/env/set_spec.rb +0 -29
- data/spec/nuggets/env/user_encoding_spec.rb +0 -38
- data/spec/nuggets/env/user_home_spec.rb +0 -42
- data/spec/nuggets/file/ext_spec.rb +0 -38
- data/spec/nuggets/file/replace_spec.rb +0 -95
- data/spec/nuggets/file/sub_spec.rb +0 -149
- data/spec/nuggets/file/which_spec.rb +0 -22
- data/spec/nuggets/hash/at_spec.rb +0 -19
- data/spec/nuggets/hash/deep_fetch_spec.rb +0 -159
- data/spec/nuggets/hash/deep_merge_spec.rb +0 -78
- data/spec/nuggets/hash/in_order_spec.rb +0 -12
- data/spec/nuggets/hash/insert_spec.rb +0 -13
- data/spec/nuggets/hash/nest_spec.rb +0 -102
- data/spec/nuggets/hash/only_spec.rb +0 -29
- data/spec/nuggets/hash/seen_spec.rb +0 -36
- data/spec/nuggets/hash/unroll_spec.rb +0 -68
- data/spec/nuggets/i18n_spec.rb +0 -13
- data/spec/nuggets/integer/factorial_spec.rb +0 -10
- data/spec/nuggets/integer/length_spec.rb +0 -18
- data/spec/nuggets/integer/map_spec.rb +0 -19
- data/spec/nuggets/integer/to_binary_s_spec.rb +0 -19
- data/spec/nuggets/numeric/duration_spec.rb +0 -25
- data/spec/nuggets/numeric/limit_spec.rb +0 -16
- data/spec/nuggets/numeric/signum_spec.rb +0 -16
- data/spec/nuggets/numeric/to_multiple_spec.rb +0 -16
- data/spec/nuggets/object/blank_spec.rb +0 -34
- data/spec/nuggets/object/boolean_spec.rb +0 -23
- data/spec/nuggets/object/msend_spec.rb +0 -25
- data/spec/nuggets/object/silence_spec.rb +0 -36
- data/spec/nuggets/object/singleton_class_spec.rb +0 -51
- data/spec/nuggets/proc/bind_spec.rb +0 -28
- data/spec/nuggets/range/quantile_spec.rb +0 -33
- data/spec/nuggets/string/camelscore_spec.rb +0 -114
- data/spec/nuggets/string/capitalize_first_spec.rb +0 -13
- data/spec/nuggets/string/case_spec.rb +0 -31
- data/spec/nuggets/string/evaluate_spec.rb +0 -24
- data/spec/nuggets/string/msub_spec.rb +0 -20
- data/spec/nuggets/string/nsub_spec.rb +0 -13
- data/spec/nuggets/string/sub_with_md_spec.rb +0 -25
- data/spec/nuggets/string/wc_spec.rb +0 -73
- data/spec/nuggets/string/word_wrap_spec.rb +0 -81
- data/spec/nuggets/string/xor_spec.rb +0 -57
- data/spec/nuggets/uri/content_type_spec.rb +0 -42
- data/spec/nuggets/uri/exist_spec.rb +0 -49
- data/spec/spec_helper.rb +0 -36
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
#--
|
|
2
|
-
###############################################################################
|
|
3
|
-
# #
|
|
4
|
-
# A component of ruby-nuggets, some extensions to the Ruby programming #
|
|
5
|
-
# language. #
|
|
6
|
-
# #
|
|
7
|
-
# Copyright (C) 2007-2011 Jens Wille #
|
|
8
|
-
# #
|
|
9
|
-
# Authors: #
|
|
10
|
-
# Jens Wille <jens.wille@gmail.com> #
|
|
11
|
-
# #
|
|
12
|
-
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
|
13
|
-
# under the terms of the GNU Affero General Public License as published by #
|
|
14
|
-
# the Free Software Foundation; either version 3 of the License, or (at your #
|
|
15
|
-
# option) any later version. #
|
|
16
|
-
# #
|
|
17
|
-
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
|
18
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
|
|
20
|
-
# for more details. #
|
|
21
|
-
# #
|
|
22
|
-
# You should have received a copy of the GNU Affero General Public License #
|
|
23
|
-
# along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
|
24
|
-
# #
|
|
25
|
-
###############################################################################
|
|
26
|
-
#++
|
|
27
|
-
|
|
28
|
-
require 'nuggets/integer/to_binary_s'
|
|
29
|
-
|
|
30
|
-
class Integer
|
|
31
|
-
|
|
32
|
-
# call-seq:
|
|
33
|
-
# int.to_dotted_decimal => aString
|
|
34
|
-
#
|
|
35
|
-
# Converts _int_ to dotted-decimal notation.
|
|
36
|
-
def to_dotted_decimal
|
|
37
|
-
to_binary_s(32).unpack('a8' * 4).map { |s| s.to_i(2) }.join('.')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
class String
|
|
43
|
-
|
|
44
|
-
# call-seq:
|
|
45
|
-
# str.from_dotted_decimal => anInteger
|
|
46
|
-
#
|
|
47
|
-
# Converts _str_ from dotted-decimal notation to integer.
|
|
48
|
-
def from_dotted_decimal
|
|
49
|
-
split('.').map { |i| i.to_i.to_binary_s(8) }.join.to_i(2)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
class Array
|
|
55
|
-
|
|
56
|
-
def sort_by_dotted_decimal
|
|
57
|
-
sort_by { |i| i.split('.').map { |j| j.to_i } }
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
end
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
#--
|
|
2
|
-
###############################################################################
|
|
3
|
-
# #
|
|
4
|
-
# A component of ruby-nuggets, some extensions to the Ruby programming #
|
|
5
|
-
# language. #
|
|
6
|
-
# #
|
|
7
|
-
# Copyright (C) 2007-2011 Jens Wille #
|
|
8
|
-
# #
|
|
9
|
-
# Authors: #
|
|
10
|
-
# Jens Wille <jens.wille@gmail.com> #
|
|
11
|
-
# #
|
|
12
|
-
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
|
13
|
-
# under the terms of the GNU Affero General Public License as published by #
|
|
14
|
-
# the Free Software Foundation; either version 3 of the License, or (at your #
|
|
15
|
-
# option) any later version. #
|
|
16
|
-
# #
|
|
17
|
-
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
|
18
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
|
|
20
|
-
# for more details. #
|
|
21
|
-
# #
|
|
22
|
-
# You should have received a copy of the GNU Affero General Public License #
|
|
23
|
-
# along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
|
24
|
-
# #
|
|
25
|
-
###############################################################################
|
|
26
|
-
#++
|
|
27
|
-
|
|
28
|
-
begin
|
|
29
|
-
require 'rubygems'
|
|
30
|
-
rescue ::LoadError
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
begin
|
|
34
|
-
require 'amatch'
|
|
35
|
-
rescue ::LoadError
|
|
36
|
-
warn "Couldn't load amatch..." if $VERBOSE
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
module Enumerable
|
|
40
|
-
|
|
41
|
-
# call-seq:
|
|
42
|
-
# enum.agrep(pattern[, distance]) -> anArray
|
|
43
|
-
# enum.agrep(pattern[, distance]) { |element| ... } -> enum
|
|
44
|
-
#
|
|
45
|
-
# Returns an array of all elements in _enum_ for which +pattern+ approximately
|
|
46
|
-
# matches +element+ (see Amatch::Levenshtein#search). If the optional +block+
|
|
47
|
-
# is supplied, each matching element is passed to it, and the _enum_ itself is
|
|
48
|
-
# returned.
|
|
49
|
-
#
|
|
50
|
-
# LIMITATIONS:
|
|
51
|
-
#
|
|
52
|
-
# - Only strings are allowed as +pattern+. Regular expressions are reverted
|
|
53
|
-
# to their respective source. (Equivalent to <tt>agrep -k</tt>)
|
|
54
|
-
# - Only works with string elements in _enum_. (Calls +to_s+ on each element)
|
|
55
|
-
# - The cost for individual error types (substitution, insertion, deletion)
|
|
56
|
-
# cannot be adjusted.
|
|
57
|
-
def agrep(pattern, distance = 0)
|
|
58
|
-
pattern = pattern.source if pattern.is_a?(::Regexp)
|
|
59
|
-
|
|
60
|
-
am = ::Amatch::Levenshtein.new(pattern)
|
|
61
|
-
ma = lambda { |i| am.search(i.to_s) <= distance }
|
|
62
|
-
|
|
63
|
-
block_given? ? each { |i| yield i if ma[i] } : select(&ma)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
if $0 == __FILE__
|
|
69
|
-
e = %w[quux quuux quix quixx]
|
|
70
|
-
p e
|
|
71
|
-
|
|
72
|
-
p e.agrep(/quux/)
|
|
73
|
-
p e.agrep(/quux/, 1)
|
|
74
|
-
p e.agrep(/quux/, 2)
|
|
75
|
-
|
|
76
|
-
p e.grep(/qu.x/)
|
|
77
|
-
p e.agrep(/qu.x/)
|
|
78
|
-
|
|
79
|
-
#p [123, 124, 1233].agrep(/123/, 1)
|
|
80
|
-
end
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#--
|
|
2
|
-
###############################################################################
|
|
3
|
-
# #
|
|
4
|
-
# A component of ruby-nuggets, some extensions to the Ruby programming #
|
|
5
|
-
# language. #
|
|
6
|
-
# #
|
|
7
|
-
# Copyright (C) 2007-2011 Jens Wille #
|
|
8
|
-
# #
|
|
9
|
-
# Authors: #
|
|
10
|
-
# Jens Wille <jens.wille@gmail.com> #
|
|
11
|
-
# #
|
|
12
|
-
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
|
13
|
-
# under the terms of the GNU Affero General Public License as published by #
|
|
14
|
-
# the Free Software Foundation; either version 3 of the License, or (at your #
|
|
15
|
-
# option) any later version. #
|
|
16
|
-
# #
|
|
17
|
-
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
|
18
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
|
|
20
|
-
# for more details. #
|
|
21
|
-
# #
|
|
22
|
-
# You should have received a copy of the GNU Affero General Public License #
|
|
23
|
-
# along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
|
24
|
-
# #
|
|
25
|
-
###############################################################################
|
|
26
|
-
#++
|
|
27
|
-
|
|
28
|
-
module Enumerable
|
|
29
|
-
|
|
30
|
-
alias_method :_nuggets_original_all?, :all?
|
|
31
|
-
alias_method :_nuggets_original_any?, :any?
|
|
32
|
-
|
|
33
|
-
# call-seq:
|
|
34
|
-
# enum.all?(obj[, operator]) => +true+ or +false+
|
|
35
|
-
# enum.all? { ... } => +true+ or +false+
|
|
36
|
-
#
|
|
37
|
-
# Adds the ability to pass an +object+ instead of a block, which will then
|
|
38
|
-
# be tested against each item in _enum_ according to +operator+, defaulting
|
|
39
|
-
# to <tt>:===</tt>.
|
|
40
|
-
def all?(object = default = true, operator = :===, &block)
|
|
41
|
-
_nuggets_original_all?(&_block_for_all_any_extended(object, default, operator, &block))
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# call-seq:
|
|
45
|
-
# enum.any?(obj[, operator]) => +true+ or +false+
|
|
46
|
-
# enum.any? { ... } => +true+ or +false+
|
|
47
|
-
#
|
|
48
|
-
# Adds the ability to pass an +object+ instead of a block, which will then
|
|
49
|
-
# be tested against each item in _enum_ according to +operator+, defaulting
|
|
50
|
-
# to <tt>:===</tt>.
|
|
51
|
-
def any?(object = default = true, operator = :===, &block)
|
|
52
|
-
_nuggets_original_any?(&_block_for_all_any_extended(object, default, operator, &block))
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
private
|
|
56
|
-
|
|
57
|
-
# Common argument processing for extended versions of #all? and #any?.
|
|
58
|
-
def _block_for_all_any_extended(object, default, operator, &block)
|
|
59
|
-
unless default
|
|
60
|
-
raise ::ArgumentError, 'both block and object argument given', caller(1) if block
|
|
61
|
-
lambda { |*a| object.send(operator, *a) }
|
|
62
|
-
else
|
|
63
|
-
block
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
end
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
#--
|
|
2
|
-
###############################################################################
|
|
3
|
-
# #
|
|
4
|
-
# A component of ruby-nuggets, some extensions to the Ruby programming #
|
|
5
|
-
# language. #
|
|
6
|
-
# #
|
|
7
|
-
# Copyright (C) 2007-2011 Jens Wille #
|
|
8
|
-
# #
|
|
9
|
-
# Authors: #
|
|
10
|
-
# Jens Wille <jens.wille@gmail.com> #
|
|
11
|
-
# #
|
|
12
|
-
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
|
13
|
-
# under the terms of the GNU Affero General Public License as published by #
|
|
14
|
-
# the Free Software Foundation; either version 3 of the License, or (at your #
|
|
15
|
-
# option) any later version. #
|
|
16
|
-
# #
|
|
17
|
-
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
|
18
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
|
|
20
|
-
# for more details. #
|
|
21
|
-
# #
|
|
22
|
-
# You should have received a copy of the GNU Affero General Public License #
|
|
23
|
-
# along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
|
24
|
-
# #
|
|
25
|
-
###############################################################################
|
|
26
|
-
#++
|
|
27
|
-
|
|
28
|
-
module Enumerable
|
|
29
|
-
|
|
30
|
-
alias_method :_nuggets_original_minmax_by, :minmax_by if method_defined?(:minmax_by)
|
|
31
|
-
alias_method :_nuggets_original_min_by, :min_by if method_defined?(:min_by)
|
|
32
|
-
alias_method :_nuggets_original_max_by, :max_by if method_defined?(:max_by)
|
|
33
|
-
alias_method :_nuggets_original_minmax, :minmax if method_defined?(:minmax)
|
|
34
|
-
|
|
35
|
-
alias_method :_nuggets_original_max, :max
|
|
36
|
-
alias_method :_nuggets_original_min, :min
|
|
37
|
-
|
|
38
|
-
# call-seq:
|
|
39
|
-
# enum.minmax_by(meth, by) => aValue
|
|
40
|
-
#
|
|
41
|
-
# Finds the maximum/minimum (or whatever +meth+ is) value in _enum_ according
|
|
42
|
-
# to +by+ (which may be a symbol/string that is sent to each value, or a proc
|
|
43
|
-
# that receives each value as parameter).
|
|
44
|
-
def minmax_by(meth, by)
|
|
45
|
-
_by = by.is_a?(::Proc) ? by : lambda { |i| i.send(by) }
|
|
46
|
-
send(meth) { |a, b| _by[a] <=> _by[b] }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# call-seq:
|
|
50
|
-
# enum.max_by(by) => aValue
|
|
51
|
-
#
|
|
52
|
-
# Maximum #minmax_by.
|
|
53
|
-
def max_by(by)
|
|
54
|
-
minmax_by(:max, by)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# call-seq:
|
|
58
|
-
# enum.min_by(by) => aValue
|
|
59
|
-
#
|
|
60
|
-
# Minimum #minmax_by.
|
|
61
|
-
def min_by(by)
|
|
62
|
-
minmax_by(:min, by)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# call-seq:
|
|
66
|
-
# enum.minmax(meth, what) => anObject
|
|
67
|
-
#
|
|
68
|
-
# Finds the #minmax_by according to +what+ and returns that "what".
|
|
69
|
-
#
|
|
70
|
-
# Example:
|
|
71
|
-
# %w[a bcd ef].max(:length) #=> 3
|
|
72
|
-
def minmax(meth, what)
|
|
73
|
-
#m = minmax_by(meth, what)
|
|
74
|
-
#what.is_a?(Proc) ? what[m] : m.send(what)
|
|
75
|
-
|
|
76
|
-
_what = what.is_a?(::Proc) ? what : lambda { |i| i.send(what) }
|
|
77
|
-
map { |i| _what[i] }.send(meth)
|
|
78
|
-
|
|
79
|
-
# Benchmark (:max, :length; enum.size = 20, N = 100_000):
|
|
80
|
-
#
|
|
81
|
-
# max_by(:length).length 7.920000 0.890000 8.810000 ( 8.991915)
|
|
82
|
-
# map(:length).max 4.800000 0.600000 5.400000 ( 5.418114)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# call-seq:
|
|
86
|
-
# enum.max(what) => aValue
|
|
87
|
-
#
|
|
88
|
-
# Maximum #minmax. If +what+ is omitted, or +nil+, the original Enumerable#max
|
|
89
|
-
# is called.
|
|
90
|
-
def max(what = nil, &block)
|
|
91
|
-
what ? minmax(:max, what) : _nuggets_original_max(&block)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
# call-seq:
|
|
95
|
-
# enum.min(what) => aValue
|
|
96
|
-
#
|
|
97
|
-
# Minimum #minmax. If +what+ is omitted, or +nil+, the original Enumerable#min
|
|
98
|
-
# is called.
|
|
99
|
-
def min(what = nil, &block)
|
|
100
|
-
what ? minmax(:min, what) : _nuggets_original_min(&block)
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
end
|
data/lib/nuggets/env/set.rb
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
#--
|
|
2
|
-
###############################################################################
|
|
3
|
-
# #
|
|
4
|
-
# A component of ruby-nuggets, some extensions to the Ruby programming #
|
|
5
|
-
# language. #
|
|
6
|
-
# #
|
|
7
|
-
# Copyright (C) 2007-2011 Jens Wille #
|
|
8
|
-
# #
|
|
9
|
-
# Authors: #
|
|
10
|
-
# Jens Wille <jens.wille@gmail.com> #
|
|
11
|
-
# #
|
|
12
|
-
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
|
13
|
-
# under the terms of the GNU Affero General Public License as published by #
|
|
14
|
-
# the Free Software Foundation; either version 3 of the License, or (at your #
|
|
15
|
-
# option) any later version. #
|
|
16
|
-
# #
|
|
17
|
-
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
|
18
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
|
|
20
|
-
# for more details. #
|
|
21
|
-
# #
|
|
22
|
-
# You should have received a copy of the GNU Affero General Public License #
|
|
23
|
-
# along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
|
24
|
-
# #
|
|
25
|
-
###############################################################################
|
|
26
|
-
#++
|
|
27
|
-
|
|
28
|
-
module Nuggets
|
|
29
|
-
module Env
|
|
30
|
-
module SetMixin
|
|
31
|
-
|
|
32
|
-
# call-seq:
|
|
33
|
-
# ENV.set([env[, clear]]) => aHash
|
|
34
|
-
# ENV.set([env[, clear]]) { ... } => anObject
|
|
35
|
-
#
|
|
36
|
-
# Overrides ENV with +env+, clearing it beforehand if +clear+ is +true+. If a
|
|
37
|
-
# block is given, restores ENV to its original state afterwards and returns
|
|
38
|
-
# the result of the block; otherwise returns the original ENV as a hash.
|
|
39
|
-
def set(env = {}, clear = true)
|
|
40
|
-
old_env = to_hash
|
|
41
|
-
|
|
42
|
-
self.clear if clear
|
|
43
|
-
|
|
44
|
-
env.each { |key, value|
|
|
45
|
-
key = key.to_s.upcase unless key.is_a?(::String)
|
|
46
|
-
value = value.to_s unless value.is_a?(::String)
|
|
47
|
-
|
|
48
|
-
self[key] = value
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
block_given? ? yield : old_env
|
|
52
|
-
ensure
|
|
53
|
-
set(old_env) if old_env && block_given?
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
alias_method :without, :set
|
|
57
|
-
|
|
58
|
-
# call-seq:
|
|
59
|
-
# ENV.with([env[, clear]]) { ... } => anObject
|
|
60
|
-
#
|
|
61
|
-
# Temporarily overrides ENV with +env+ for the block execution. See #set.
|
|
62
|
-
def with(env = {}, clear = false)
|
|
63
|
-
set(env, clear) { yield }
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#--
|
|
2
|
-
###############################################################################
|
|
3
|
-
# #
|
|
4
|
-
# A component of ruby-nuggets, some extensions to the Ruby programming #
|
|
5
|
-
# language. #
|
|
6
|
-
# #
|
|
7
|
-
# Copyright (C) 2007-2011 Jens Wille #
|
|
8
|
-
# #
|
|
9
|
-
# Authors: #
|
|
10
|
-
# Jens Wille <jens.wille@gmail.com> #
|
|
11
|
-
# #
|
|
12
|
-
# ruby-nuggets is free software; you can redistribute it and/or modify it #
|
|
13
|
-
# under the terms of the GNU Affero General Public License as published by #
|
|
14
|
-
# the Free Software Foundation; either version 3 of the License, or (at your #
|
|
15
|
-
# option) any later version. #
|
|
16
|
-
# #
|
|
17
|
-
# ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
|
|
18
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
|
|
19
|
-
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
|
|
20
|
-
# for more details. #
|
|
21
|
-
# #
|
|
22
|
-
# You should have received a copy of the GNU Affero General Public License #
|
|
23
|
-
# along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
|
|
24
|
-
# #
|
|
25
|
-
###############################################################################
|
|
26
|
-
#++
|
|
27
|
-
|
|
28
|
-
begin
|
|
29
|
-
require 'win32console'
|
|
30
|
-
rescue ::LoadError
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
module Nuggets
|
|
34
|
-
module Env
|
|
35
|
-
module UserEncodingMixin
|
|
36
|
-
|
|
37
|
-
# call-seq:
|
|
38
|
-
# ENV.user_encoding => aString
|
|
39
|
-
#
|
|
40
|
-
# Finds the user's selected encoding.
|
|
41
|
-
def user_encoding(default = 'UTF-8')
|
|
42
|
-
self['ENCODING'] || begin
|
|
43
|
-
lang = self['LANG']
|
|
44
|
-
lang[/\.(.*)/, 1] if lang
|
|
45
|
-
end || if defined?(::Win32::Console)
|
|
46
|
-
"CP#{::Win32::Console.InputCP}"
|
|
47
|
-
elsif ::File::ALT_SEPARATOR
|
|
48
|
-
cp = %x{chcp}[/:\s*(.*?)\./, 1]
|
|
49
|
-
"CP#{cp}" if cp
|
|
50
|
-
end || default
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|