ruby-nuggets 0.9.9 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (244) hide show
  1. checksums.yaml +4 -4
  2. metadata +20 -324
  3. data/COPYING +0 -663
  4. data/ChangeLog +0 -7
  5. data/README +0 -62
  6. data/Rakefile +0 -47
  7. data/lib/nuggets.rb +0 -73
  8. data/lib/nuggets/all.rb +0 -36
  9. data/lib/nuggets/all_mixins.rb +0 -34
  10. data/lib/nuggets/ansicolor2css.rb +0 -125
  11. data/lib/nuggets/argv/option.rb +0 -3
  12. data/lib/nuggets/argv/option_mixin.rb +0 -85
  13. data/lib/nuggets/array/boost.rb +0 -5
  14. data/lib/nuggets/array/boost_mixin.rb +0 -78
  15. data/lib/nuggets/array/combination.rb +0 -63
  16. data/lib/nuggets/array/correlation.rb +0 -5
  17. data/lib/nuggets/array/correlation_mixin.rb +0 -64
  18. data/lib/nuggets/array/flatten_once.rb +0 -57
  19. data/lib/nuggets/array/flush.rb +0 -5
  20. data/lib/nuggets/array/flush_mixin.rb +0 -47
  21. data/lib/nuggets/array/format.rb +0 -66
  22. data/lib/nuggets/array/hashify.rb +0 -5
  23. data/lib/nuggets/array/hashify_mixin.rb +0 -48
  24. data/lib/nuggets/array/histogram.rb +0 -5
  25. data/lib/nuggets/array/histogram_mixin.rb +0 -170
  26. data/lib/nuggets/array/in_order.rb +0 -51
  27. data/lib/nuggets/array/limit.rb +0 -5
  28. data/lib/nuggets/array/limit_mixin.rb +0 -57
  29. data/lib/nuggets/array/mean.rb +0 -5
  30. data/lib/nuggets/array/mean_mixin.rb +0 -203
  31. data/lib/nuggets/array/median.rb +0 -5
  32. data/lib/nuggets/array/median_mixin.rb +0 -74
  33. data/lib/nuggets/array/mode.rb +0 -5
  34. data/lib/nuggets/array/mode_mixin.rb +0 -70
  35. data/lib/nuggets/array/monotone.rb +0 -84
  36. data/lib/nuggets/array/only.rb +0 -42
  37. data/lib/nuggets/array/rand.rb +0 -45
  38. data/lib/nuggets/array/regression.rb +0 -5
  39. data/lib/nuggets/array/regression_mixin.rb +0 -150
  40. data/lib/nuggets/array/runiq.rb +0 -5
  41. data/lib/nuggets/array/runiq_mixin.rb +0 -53
  42. data/lib/nuggets/array/shuffle.rb +0 -133
  43. data/lib/nuggets/array/standard_deviation.rb +0 -5
  44. data/lib/nuggets/array/standard_deviation_mixin.rb +0 -51
  45. data/lib/nuggets/array/to_hash.rb +0 -65
  46. data/lib/nuggets/array/variance.rb +0 -5
  47. data/lib/nuggets/array/variance_mixin.rb +0 -82
  48. data/lib/nuggets/cli.rb +0 -8
  49. data/lib/nuggets/content_type.rb +0 -98
  50. data/lib/nuggets/dotted_decimal.rb +0 -60
  51. data/lib/nuggets/enumerable/agrep.rb +0 -80
  52. data/lib/nuggets/enumerable/all_any_extended.rb +0 -67
  53. data/lib/nuggets/enumerable/minmax.rb +0 -103
  54. data/lib/nuggets/env/set.rb +0 -3
  55. data/lib/nuggets/env/set_mixin.rb +0 -68
  56. data/lib/nuggets/env/user_encoding.rb +0 -3
  57. data/lib/nuggets/env/user_encoding_mixin.rb +0 -55
  58. data/lib/nuggets/env/user_home.rb +0 -3
  59. data/lib/nuggets/env/user_home_mixin.rb +0 -57
  60. data/lib/nuggets/file/ext.rb +0 -5
  61. data/lib/nuggets/file/ext_mixin.rb +0 -88
  62. data/lib/nuggets/file/replace.rb +0 -5
  63. data/lib/nuggets/file/replace_mixin.rb +0 -56
  64. data/lib/nuggets/file/sub.rb +0 -5
  65. data/lib/nuggets/file/sub_mixin.rb +0 -96
  66. data/lib/nuggets/file/which.rb +0 -5
  67. data/lib/nuggets/file/which_mixin.rb +0 -73
  68. data/lib/nuggets/hash/at.rb +0 -69
  69. data/lib/nuggets/hash/deep_fetch.rb +0 -5
  70. data/lib/nuggets/hash/deep_fetch_mixin.rb +0 -75
  71. data/lib/nuggets/hash/deep_merge.rb +0 -5
  72. data/lib/nuggets/hash/deep_merge_mixin.rb +0 -54
  73. data/lib/nuggets/hash/idmap.rb +0 -5
  74. data/lib/nuggets/hash/idmap_mixin.rb +0 -42
  75. data/lib/nuggets/hash/in_order.rb +0 -44
  76. data/lib/nuggets/hash/insert.rb +0 -54
  77. data/lib/nuggets/hash/nest.rb +0 -5
  78. data/lib/nuggets/hash/nest_mixin.rb +0 -79
  79. data/lib/nuggets/hash/only.rb +0 -53
  80. data/lib/nuggets/hash/seen.rb +0 -5
  81. data/lib/nuggets/hash/seen_mixin.rb +0 -59
  82. data/lib/nuggets/hash/unroll.rb +0 -5
  83. data/lib/nuggets/hash/unroll_mixin.rb +0 -89
  84. data/lib/nuggets/hash/zip.rb +0 -5
  85. data/lib/nuggets/hash/zip_mixin.rb +0 -160
  86. data/lib/nuggets/i18n.rb +0 -156
  87. data/lib/nuggets/integer/factorial.rb +0 -57
  88. data/lib/nuggets/integer/length.rb +0 -5
  89. data/lib/nuggets/integer/length_mixin.rb +0 -50
  90. data/lib/nuggets/integer/map.rb +0 -5
  91. data/lib/nuggets/integer/map_mixin.rb +0 -43
  92. data/lib/nuggets/integer/to_binary_s.rb +0 -39
  93. data/lib/nuggets/io/agrep.rb +0 -44
  94. data/lib/nuggets/io/interact.rb +0 -5
  95. data/lib/nuggets/io/interact_mixin.rb +0 -160
  96. data/lib/nuggets/io/modes.rb +0 -122
  97. data/lib/nuggets/io/null.rb +0 -5
  98. data/lib/nuggets/io/null_mixin.rb +0 -41
  99. data/lib/nuggets/io/redirect.rb +0 -5
  100. data/lib/nuggets/io/redirect_mixin.rb +0 -51
  101. data/lib/nuggets/lazy_attr.rb +0 -45
  102. data/lib/nuggets/log_parser.rb +0 -71
  103. data/lib/nuggets/log_parser/apache.rb +0 -102
  104. data/lib/nuggets/log_parser/rails.rb +0 -220
  105. data/lib/nuggets/lsi.rb +0 -8
  106. data/lib/nuggets/midos.rb +0 -8
  107. data/lib/nuggets/mysql.rb +0 -8
  108. data/lib/nuggets/net/success.rb +0 -60
  109. data/lib/nuggets/numeric/between.rb +0 -2
  110. data/lib/nuggets/numeric/duration.rb +0 -101
  111. data/lib/nuggets/numeric/limit.rb +0 -63
  112. data/lib/nuggets/numeric/signum.rb +0 -53
  113. data/lib/nuggets/numeric/to_multiple.rb +0 -62
  114. data/lib/nuggets/object/blank.rb +0 -20
  115. data/lib/nuggets/object/blank_mixin.rb +0 -100
  116. data/lib/nuggets/object/boolean.rb +0 -5
  117. data/lib/nuggets/object/boolean_mixin.rb +0 -62
  118. data/lib/nuggets/object/eigenclass.rb +0 -2
  119. data/lib/nuggets/object/ghost_class.rb +0 -2
  120. data/lib/nuggets/object/metaclass.rb +0 -2
  121. data/lib/nuggets/object/msend.rb +0 -5
  122. data/lib/nuggets/object/msend_mixin.rb +0 -44
  123. data/lib/nuggets/object/silence.rb +0 -5
  124. data/lib/nuggets/object/silence_mixin.rb +0 -45
  125. data/lib/nuggets/object/singleton_class.rb +0 -5
  126. data/lib/nuggets/object/singleton_class_mixin.rb +0 -96
  127. data/lib/nuggets/object/uniclass.rb +0 -2
  128. data/lib/nuggets/object/virtual_class.rb +0 -2
  129. data/lib/nuggets/pluggable.rb +0 -92
  130. data/lib/nuggets/proc/bind.rb +0 -5
  131. data/lib/nuggets/proc/bind_mixin.rb +0 -52
  132. data/lib/nuggets/range/quantile.rb +0 -5
  133. data/lib/nuggets/range/quantile_mixin.rb +0 -43
  134. data/lib/nuggets/rdf/compression.rb +0 -6
  135. data/lib/nuggets/rdf/prefix.rb +0 -6
  136. data/lib/nuggets/rdf/turtle.rb +0 -8
  137. data/lib/nuggets/rdf/turtle/reader.rb +0 -6
  138. data/lib/nuggets/rdf/uri.rb +0 -6
  139. data/lib/nuggets/ruby.rb +0 -236
  140. data/lib/nuggets/statistics.rb +0 -12
  141. data/lib/nuggets/statistics_mixins.rb +0 -12
  142. data/lib/nuggets/string/camelscore.rb +0 -5
  143. data/lib/nuggets/string/camelscore_mixin.rb +0 -117
  144. data/lib/nuggets/string/capitalize_first.rb +0 -47
  145. data/lib/nuggets/string/case.rb +0 -82
  146. data/lib/nuggets/string/evaluate.rb +0 -5
  147. data/lib/nuggets/string/evaluate_mixin.rb +0 -48
  148. data/lib/nuggets/string/msub.rb +0 -85
  149. data/lib/nuggets/string/nsub.rb +0 -66
  150. data/lib/nuggets/string/sub_with_md.rb +0 -112
  151. data/lib/nuggets/string/wc.rb +0 -5
  152. data/lib/nuggets/string/wc_mixin.rb +0 -96
  153. data/lib/nuggets/string/word_wrap.rb +0 -77
  154. data/lib/nuggets/string/xor.rb +0 -5
  155. data/lib/nuggets/string/xor_mixin.rb +0 -60
  156. data/lib/nuggets/tempfile/open.rb +0 -58
  157. data/lib/nuggets/uri/content_type.rb +0 -5
  158. data/lib/nuggets/uri/content_type_mixin.rb +0 -48
  159. data/lib/nuggets/uri/exist.rb +0 -5
  160. data/lib/nuggets/uri/exist_mixin.rb +0 -57
  161. data/lib/nuggets/uri/redirect.rb +0 -5
  162. data/lib/nuggets/uri/redirect_mixin.rb +0 -102
  163. data/lib/nuggets/util/ansicolor2css.rb +0 -4
  164. data/lib/nuggets/util/cli.rb +0 -4
  165. data/lib/nuggets/util/content_type.rb +0 -4
  166. data/lib/nuggets/util/dotted_decimal.rb +0 -3
  167. data/lib/nuggets/util/i18n.rb +0 -4
  168. data/lib/nuggets/util/lazy_attr.rb +0 -4
  169. data/lib/nuggets/util/log_parser.rb +0 -4
  170. data/lib/nuggets/util/log_parser/apache.rb +0 -4
  171. data/lib/nuggets/util/log_parser/rails.rb +0 -4
  172. data/lib/nuggets/util/midos.rb +0 -4
  173. data/lib/nuggets/util/mysql.rb +0 -4
  174. data/lib/nuggets/util/pluggable.rb +0 -4
  175. data/lib/nuggets/util/ruby.rb +0 -4
  176. data/lib/nuggets/version.rb +0 -27
  177. data/spec/nuggets/array/boost_spec.rb +0 -50
  178. data/spec/nuggets/array/combination_spec.rb +0 -25
  179. data/spec/nuggets/array/correlation_spec.rb +0 -81
  180. data/spec/nuggets/array/flatten_once_spec.rb +0 -16
  181. data/spec/nuggets/array/flush_spec.rb +0 -43
  182. data/spec/nuggets/array/format_spec.rb +0 -52
  183. data/spec/nuggets/array/hashify_spec.rb +0 -41
  184. data/spec/nuggets/array/histogram_spec.rb +0 -87
  185. data/spec/nuggets/array/in_order_spec.rb +0 -13
  186. data/spec/nuggets/array/limit_spec.rb +0 -62
  187. data/spec/nuggets/array/mean_spec.rb +0 -203
  188. data/spec/nuggets/array/median_spec.rb +0 -77
  189. data/spec/nuggets/array/mode_spec.rb +0 -57
  190. data/spec/nuggets/array/monotone_spec.rb +0 -30
  191. data/spec/nuggets/array/only_spec.rb +0 -26
  192. data/spec/nuggets/array/regression_spec.rb +0 -54
  193. data/spec/nuggets/array/runiq_spec.rb +0 -25
  194. data/spec/nuggets/array/standard_deviation_spec.rb +0 -33
  195. data/spec/nuggets/array/to_hash_spec.rb +0 -28
  196. data/spec/nuggets/array/variance_spec.rb +0 -106
  197. data/spec/nuggets/dotted_decimal_spec.rb +0 -27
  198. data/spec/nuggets/enumerable/all_any_extended_spec.rb +0 -31
  199. data/spec/nuggets/enumerable/minmax_spec.rb +0 -21
  200. data/spec/nuggets/env/set_spec.rb +0 -29
  201. data/spec/nuggets/env/user_encoding_spec.rb +0 -38
  202. data/spec/nuggets/env/user_home_spec.rb +0 -42
  203. data/spec/nuggets/file/ext_spec.rb +0 -38
  204. data/spec/nuggets/file/replace_spec.rb +0 -95
  205. data/spec/nuggets/file/sub_spec.rb +0 -149
  206. data/spec/nuggets/file/which_spec.rb +0 -22
  207. data/spec/nuggets/hash/at_spec.rb +0 -19
  208. data/spec/nuggets/hash/deep_fetch_spec.rb +0 -159
  209. data/spec/nuggets/hash/deep_merge_spec.rb +0 -78
  210. data/spec/nuggets/hash/in_order_spec.rb +0 -12
  211. data/spec/nuggets/hash/insert_spec.rb +0 -13
  212. data/spec/nuggets/hash/nest_spec.rb +0 -102
  213. data/spec/nuggets/hash/only_spec.rb +0 -29
  214. data/spec/nuggets/hash/seen_spec.rb +0 -36
  215. data/spec/nuggets/hash/unroll_spec.rb +0 -68
  216. data/spec/nuggets/i18n_spec.rb +0 -13
  217. data/spec/nuggets/integer/factorial_spec.rb +0 -10
  218. data/spec/nuggets/integer/length_spec.rb +0 -18
  219. data/spec/nuggets/integer/map_spec.rb +0 -19
  220. data/spec/nuggets/integer/to_binary_s_spec.rb +0 -19
  221. data/spec/nuggets/numeric/duration_spec.rb +0 -25
  222. data/spec/nuggets/numeric/limit_spec.rb +0 -16
  223. data/spec/nuggets/numeric/signum_spec.rb +0 -16
  224. data/spec/nuggets/numeric/to_multiple_spec.rb +0 -16
  225. data/spec/nuggets/object/blank_spec.rb +0 -34
  226. data/spec/nuggets/object/boolean_spec.rb +0 -23
  227. data/spec/nuggets/object/msend_spec.rb +0 -25
  228. data/spec/nuggets/object/silence_spec.rb +0 -36
  229. data/spec/nuggets/object/singleton_class_spec.rb +0 -51
  230. data/spec/nuggets/proc/bind_spec.rb +0 -28
  231. data/spec/nuggets/range/quantile_spec.rb +0 -33
  232. data/spec/nuggets/string/camelscore_spec.rb +0 -114
  233. data/spec/nuggets/string/capitalize_first_spec.rb +0 -13
  234. data/spec/nuggets/string/case_spec.rb +0 -31
  235. data/spec/nuggets/string/evaluate_spec.rb +0 -24
  236. data/spec/nuggets/string/msub_spec.rb +0 -20
  237. data/spec/nuggets/string/nsub_spec.rb +0 -13
  238. data/spec/nuggets/string/sub_with_md_spec.rb +0 -25
  239. data/spec/nuggets/string/wc_spec.rb +0 -73
  240. data/spec/nuggets/string/word_wrap_spec.rb +0 -81
  241. data/spec/nuggets/string/xor_spec.rb +0 -57
  242. data/spec/nuggets/uri/content_type_spec.rb +0 -42
  243. data/spec/nuggets/uri/exist_spec.rb +0 -49
  244. data/spec/spec_helper.rb +0 -36
@@ -1,5 +0,0 @@
1
- require 'nuggets/hash/unroll_mixin'
2
-
3
- class Hash
4
- include Nuggets::Hash::UnrollMixin
5
- end
@@ -1,89 +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
- class Hash
30
- module UnrollMixin
31
-
32
- # call-seq:
33
- # hash.unroll(*value_keys) => anArray
34
- # hash.unroll(*value_keys, :sort_by => ...) => anArray
35
- # hash.unroll(*value_keys) { |value_hash| ... } => anArray
36
- #
37
- # "Unrolls" a nested hash, so that each path through _hash_ results in a
38
- # row that is, e.g., suitable for use with CSV.
39
- #
40
- # Note that from the final hash ("value hash") only the values are used,
41
- # namely, if +value_keys+ are given, the values at those keys are returned.
42
- # If a block is given, the +value_hash+ is passed to that block for any
43
- # additional processing or sanitization.
44
- #
45
- # If +sort_by+ is given, all hashes are passed through that block for
46
- # sorting before being put into the result array.
47
- #
48
- # Examples:
49
- #
50
- # { :foo => { :bar => { :a => { :x => 1, :y => 2 }, :b => { :x => 0, :y => 3 } } } }.unroll
51
- # #=> [[:foo, :bar, :b, 3, 0], [:foo, :bar, :a, 2, 1]]
52
- #
53
- # { :foo => { :bar => { :a => { :x => 1, :y => 2 }, :b => { :x => 0, :y => 3 } } } }.unroll(:sort_by => :to_s)
54
- # #=> [[:foo, :bar, :a, 1, 2], [:foo, :bar, :b, 0, 3]]
55
- #
56
- # { :foo => { :bar => { :a => { :x => 1, :y => 2 }, :b => { :x => 0, :y => 3 } } } }.unroll { |data| data[:x] = nil; data[:y] *= 2 }
57
- # #=> [[:foo, :bar, :b, 6, nil], [:foo, :bar, :a, 4, nil]]
58
- def unroll(*value_keys, &block)
59
- args = value_keys.dup
60
- options = value_keys.last.is_a?(::Hash) ? value_keys.pop : {}
61
-
62
- sort_proc = if options.key?(:sort_by)
63
- lambda { sort_by(&options[:sort_by]) }
64
- elsif options.key?(:sort)
65
- options[:sort] == true ? lambda { sort } : lambda { sort(&options[:sort]) }
66
- end
67
-
68
- rows = []
69
-
70
- if values.first.is_a?(self.class) # if any is, then all are
71
- (sort_proc ? sort_proc.call : self).each { |key, value|
72
- value.unroll(*args, &block).each { |row| rows << [key, *row] }
73
- }
74
- else
75
- block[self] if block
76
-
77
- rows << if value_keys.empty?
78
- sort_proc ? sort_proc.call.map { |key, value| value } : values
79
- else
80
- values_at(*value_keys)
81
- end
82
- end
83
-
84
- rows
85
- end
86
-
87
- end
88
- end
89
- end
@@ -1,5 +0,0 @@
1
- require 'nuggets/hash/zip_mixin'
2
-
3
- class Hash
4
- extend Nuggets::Hash::ZipMixin
5
- end
@@ -1,160 +0,0 @@
1
- #--
2
- ###############################################################################
3
- # #
4
- # A component of ruby-nuggets, some extensions to the Ruby programming #
5
- # language. #
6
- # #
7
- # Copyright (C) 2007-2014 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 'zlib'
29
-
30
- module Nuggets
31
- class Hash
32
- module ZipMixin
33
-
34
- def zip(*args, &block)
35
- ZipHash.new(*args, &block)
36
- end
37
-
38
- def zipval(*args, &block)
39
- ZipValHash.new(*args, &block)
40
- end
41
-
42
- def zipkey(*args, &block)
43
- ZipKeyHash.new(*args, &block)
44
- end
45
-
46
- class ZipHash < ::Hash
47
-
48
- def [](key)
49
- unzipval(super(zipkey(key)))
50
- end
51
-
52
- def []=(key, value)
53
- super(zipkey(key), zipval(value))
54
- end
55
-
56
- def fetch(key, *args)
57
- unzipval(super(zipkey(key), *args))
58
- end
59
-
60
- def store(key, value)
61
- super(zipkey(key), zipval(value))
62
- end
63
-
64
- private
65
-
66
- def zipval(value)
67
- value.is_a?(ZipVal) ? value : ZipVal.new(value)
68
- end
69
-
70
- def unzipval(value)
71
- value.is_a?(ZipVal) ? value.to_s : value
72
- end
73
-
74
- def zipkey(key)
75
- key.is_a?(ZipKey) ? key : ZipKey.new(key)
76
- end
77
-
78
- def unzipkey(key)
79
- key.is_a?(ZipKey) ? key.to_s : key
80
- end
81
-
82
- end
83
-
84
- class ZipValHash < ZipHash
85
-
86
- private
87
-
88
- def zipkey(key)
89
- key
90
- end
91
-
92
- def unzipkey(key)
93
- key
94
- end
95
-
96
- end
97
-
98
- class ZipKeyHash < ZipHash
99
-
100
- private
101
-
102
- def zipval(value)
103
- value
104
- end
105
-
106
- def unzipval(value)
107
- value
108
- end
109
-
110
- end
111
-
112
- class ZipVal
113
-
114
- include Comparable
115
-
116
- def initialize(value)
117
- @value = zip(value)
118
- end
119
-
120
- def <=>(other)
121
- to_s <=> other.to_s if self.class.equal?(other.class)
122
- end
123
-
124
- def to_s
125
- unzip(@value)
126
- end
127
-
128
- def inspect
129
- !((s = to_s).length > 64 || s.include?($/)) ? to_s :
130
- '#<%s:0x%x length=%p>' % [self.class, object_id, @value.length]
131
- end
132
-
133
- def hash
134
- to_s.hash
135
- end
136
-
137
- def eql?(other)
138
- (self <=> other) == 0
139
- end
140
-
141
- alias_method :==, :eql?
142
-
143
- private
144
-
145
- def zip(string)
146
- Zlib::Deflate.deflate(string)
147
- end
148
-
149
- def unzip(string)
150
- Zlib::Inflate.inflate(string)
151
- end
152
-
153
- end
154
-
155
- class ZipKey < ZipVal
156
- end
157
-
158
- end
159
- end
160
- end
@@ -1,156 +0,0 @@
1
- # encoding: utf-8
2
-
3
- #--
4
- ###############################################################################
5
- # #
6
- # A component of ruby-nuggets, some extensions to the Ruby programming #
7
- # language. #
8
- # #
9
- # Copyright (C) 2007-2011 Jens Wille #
10
- # #
11
- # Authors: #
12
- # Jens Wille <jens.wille@gmail.com> #
13
- # #
14
- # ruby-nuggets is free software; you can redistribute it and/or modify it #
15
- # under the terms of the GNU Affero General Public License as published by #
16
- # the Free Software Foundation; either version 3 of the License, or (at your #
17
- # option) any later version. #
18
- # #
19
- # ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
20
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
21
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
22
- # for more details. #
23
- # #
24
- # You should have received a copy of the GNU Affero General Public License #
25
- # along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
26
- # #
27
- ###############################################################################
28
- #++
29
-
30
- module Nuggets
31
- module I18n
32
-
33
- DIACRITICS = {
34
- 'À' => 'A', # LATIN CAPITAL LETTER A WITH GRAVE
35
- 'Á' => 'A', # LATIN CAPITAL LETTER A WITH ACUTE
36
- 'Â' => 'A', # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
37
- 'Ã' => 'A', # LATIN CAPITAL LETTER A WITH TILDE
38
- 'Ä' => 'AE', # LATIN CAPITAL LETTER A WITH DIAERESIS
39
- 'Å' => 'A', # LATIN CAPITAL LETTER A WITH RING ABOVE
40
- 'Æ' => 'AE', # LATIN CAPITAL LETTER AE
41
- 'Ç' => 'C', # LATIN CAPITAL LETTER C WITH CEDILLA
42
- 'È' => 'E', # LATIN CAPITAL LETTER E WITH GRAVE
43
- 'É' => 'E', # LATIN CAPITAL LETTER E WITH ACUTE
44
- 'Ê' => 'E', # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
45
- 'Ë' => 'E', # LATIN CAPITAL LETTER E WITH DIAERESIS
46
- 'Ì' => 'I', # LATIN CAPITAL LETTER I WITH GRAVE
47
- 'Í' => 'I', # LATIN CAPITAL LETTER I WITH ACUTE
48
- 'Î' => 'I', # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
49
- 'Ï' => 'I', # LATIN CAPITAL LETTER I WITH DIAERESIS
50
- 'Ð' => 'DH', # LATIN CAPITAL LETTER ETH
51
- 'Ñ' => 'N', # LATIN CAPITAL LETTER N WITH TILDE
52
- 'Ò' => 'O', # LATIN CAPITAL LETTER O WITH GRAVE
53
- 'Ó' => 'O', # LATIN CAPITAL LETTER O WITH ACUTE
54
- 'Ô' => 'O', # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
55
- 'Õ' => 'O', # LATIN CAPITAL LETTER O WITH TILDE
56
- 'Ö' => 'OE', # LATIN CAPITAL LETTER O WITH DIAERESIS
57
- 'Ø' => 'O', # LATIN CAPITAL LETTER O WITH STROKE
58
- 'Ù' => 'U', # LATIN CAPITAL LETTER U WITH GRAVE
59
- 'Ú' => 'U', # LATIN CAPITAL LETTER U WITH ACUTE
60
- 'Û' => 'U', # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
61
- 'Ü' => 'UE', # LATIN CAPITAL LETTER U WITH DIAERESIS
62
- 'Ý' => 'Y', # LATIN CAPITAL LETTER Y WITH ACUTE
63
- 'Þ' => 'TH', # LATIN CAPITAL LETTER THORN
64
- 'ß' => 'ss', # LATIN SMALL LETTER SHARP S
65
- 'à' => 'a', # LATIN SMALL LETTER A WITH GRAVE
66
- 'á' => 'a', # LATIN SMALL LETTER A WITH ACUTE
67
- 'â' => 'a', # LATIN SMALL LETTER A WITH CIRCUMFLEX
68
- 'ã' => 'a', # LATIN SMALL LETTER A WITH TILDE
69
- 'ä' => 'ae', # LATIN SMALL LETTER A WITH DIAERESIS
70
- 'å' => 'a', # LATIN SMALL LETTER A WITH RING ABOVE
71
- 'æ' => 'ae', # LATIN SMALL LETTER AE
72
- 'ç' => 'c', # LATIN SMALL LETTER C WITH CEDILLA
73
- 'è' => 'e', # LATIN SMALL LETTER E WITH GRAVE
74
- 'é' => 'e', # LATIN SMALL LETTER E WITH ACUTE
75
- 'ê' => 'e', # LATIN SMALL LETTER E WITH CIRCUMFLEX
76
- 'ë' => 'e', # LATIN SMALL LETTER E WITH DIAERESIS
77
- 'ì' => 'i', # LATIN SMALL LETTER I WITH GRAVE
78
- 'í' => 'i', # LATIN SMALL LETTER I WITH ACUTE
79
- 'î' => 'i', # LATIN SMALL LETTER I WITH CIRCUMFLEX
80
- 'ï' => 'i', # LATIN SMALL LETTER I WITH DIAERESIS
81
- 'ð' => 'dh', # LATIN SMALL LETTER ETH
82
- 'ñ' => 'n', # LATIN SMALL LETTER N WITH TILDE
83
- 'ò' => 'o', # LATIN SMALL LETTER O WITH GRAVE
84
- 'ó' => 'o', # LATIN SMALL LETTER O WITH ACUTE
85
- 'ô' => 'o', # LATIN SMALL LETTER O WITH CIRCUMFLEX
86
- 'õ' => 'o', # LATIN SMALL LETTER O WITH TILDE
87
- 'ö' => 'oe', # LATIN SMALL LETTER O WITH DIAERESIS
88
- 'ø' => 'o', # LATIN SMALL LETTER O WITH STROKE
89
- 'ù' => 'u', # LATIN SMALL LETTER U WITH GRAVE
90
- 'ú' => 'u', # LATIN SMALL LETTER U WITH ACUTE
91
- 'û' => 'u', # LATIN SMALL LETTER U WITH CIRCUMFLEX
92
- 'ü' => 'ue', # LATIN SMALL LETTER U WITH DIAERESIS
93
- 'ý' => 'y', # LATIN SMALL LETTER Y WITH ACUTE
94
- 'þ' => 'th', # LATIN SMALL LETTER THORN
95
- 'ÿ' => 'y' # LATIN SMALL LETTER Y WITH DIAERESIS
96
- }
97
-
98
- def self.args_for_map_diacritics
99
- @args_for_map_diacritics ||= begin
100
- map = ::Hash.new { |h, k| h[k] = [] }
101
-
102
- DIACRITICS.each { |a| a.each { |i| map[i].concat(a) } }
103
- map.each { |k, v| v.uniq!; map[k] = "(#{::Regexp.union(*v).source})" }
104
-
105
- [::Regexp.union(*map.keys.sort_by { |k| -k.length }), map.method(:[])]
106
- end
107
- end
108
-
109
- end
110
- end
111
-
112
- class String
113
-
114
- # call-seq:
115
- # str.replace_diacritics => new_str
116
- #
117
- # Substitutes any diacritics in _str_ with their replacements as per
118
- # Nuggets::I18n::DIACRITICS.
119
- def replace_diacritics
120
- (_dup = dup).replace_diacritics! || _dup
121
- end
122
-
123
- # call-seq:
124
- # str.replace_diacritics! => str or +nil+
125
- #
126
- # Destructive version of #replace_diacritics.
127
- def replace_diacritics!
128
- diacritics = ::Nuggets::I18n::DIACRITICS
129
-
130
- gsub!(/#{::Regexp.union(*diacritics.keys)}/) { |m|
131
- s = diacritics[m]
132
-
133
- # Try to adjust case:
134
- # 'Äh' => 'AEh' => 'Aeh'
135
- #
136
- # But:
137
- # 'SÖS' => 'SOES' (not 'SOeS'!)
138
- if s.length > 1
139
- t = $'[0, 1]
140
- s[1..-1] = s[1..-1].downcase if t == t.downcase
141
- end
142
-
143
- s
144
- }
145
- end
146
-
147
- def map_diacritics
148
- (_dup = dup).map_diacritics! || _dup
149
- end
150
-
151
- def map_diacritics!
152
- re, block = ::Nuggets::I18n.args_for_map_diacritics
153
- gsub!(re, &block)
154
- end
155
-
156
- end
@@ -1,57 +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
- class Integer
29
-
30
- # Memoization container: integer => factorial(integer)
31
- FACTORIAL = { 0 => 1 }
32
-
33
- # call-seq:
34
- # int.factorial => anInteger
35
- #
36
- # Calculate the factorial of _int_. To use the memoized version:
37
- # <tt>Integer.send(:alias_method, :factorial, :factorial_memoized)</tt>
38
- def factorial
39
- (1..self).inject { |f, i| f * i }
40
- end
41
-
42
- # call-seq:
43
- # int.factorial_memoized => anInteger
44
- #
45
- # Calculate the factorial of _int_ with the help of memoization (Which gives
46
- # a considerable speedup for repeated calculations -- at the cost of memory).
47
- #
48
- # WARNING: Don't try to calculate the factorial this way for "large"
49
- # integers! This might well bring your system down to its knees... ;-)
50
- def factorial_memoized
51
- FACTORIAL[self] ||= (1..self).inject { |f, i| FACTORIAL[i] ||= f * i }
52
- end
53
-
54
- alias_method :fac, :factorial
55
- alias_method :f!, :factorial
56
-
57
- end