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 (222) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +663 -0
  3. data/ChangeLog +7 -0
  4. data/README +74 -0
  5. data/Rakefile +50 -0
  6. data/lib/nuggets.rb +73 -0
  7. data/lib/nuggets/all.rb +35 -0
  8. data/lib/nuggets/all_mixins.rb +33 -0
  9. data/lib/nuggets/ansicolor2css.rb +124 -0
  10. data/lib/nuggets/argv/option.rb +3 -0
  11. data/lib/nuggets/argv/option_mixin.rb +84 -0
  12. data/lib/nuggets/array/boost.rb +5 -0
  13. data/lib/nuggets/array/boost_mixin.rb +77 -0
  14. data/lib/nuggets/array/combination.rb +62 -0
  15. data/lib/nuggets/array/correlation.rb +5 -0
  16. data/lib/nuggets/array/correlation_mixin.rb +63 -0
  17. data/lib/nuggets/array/flatten_once.rb +56 -0
  18. data/lib/nuggets/array/flush.rb +5 -0
  19. data/lib/nuggets/array/flush_mixin.rb +46 -0
  20. data/lib/nuggets/array/format.rb +65 -0
  21. data/lib/nuggets/array/hashify.rb +5 -0
  22. data/lib/nuggets/array/hashify_mixin.rb +47 -0
  23. data/lib/nuggets/array/histogram.rb +5 -0
  24. data/lib/nuggets/array/histogram_mixin.rb +169 -0
  25. data/lib/nuggets/array/in_order.rb +50 -0
  26. data/lib/nuggets/array/limit.rb +5 -0
  27. data/lib/nuggets/array/limit_mixin.rb +56 -0
  28. data/lib/nuggets/array/mean.rb +5 -0
  29. data/lib/nuggets/array/mean_mixin.rb +202 -0
  30. data/lib/nuggets/array/median.rb +5 -0
  31. data/lib/nuggets/array/median_mixin.rb +73 -0
  32. data/lib/nuggets/array/mode.rb +5 -0
  33. data/lib/nuggets/array/mode_mixin.rb +69 -0
  34. data/lib/nuggets/array/monotone.rb +83 -0
  35. data/lib/nuggets/array/only.rb +41 -0
  36. data/lib/nuggets/array/rand.rb +44 -0
  37. data/lib/nuggets/array/regression.rb +5 -0
  38. data/lib/nuggets/array/regression_mixin.rb +149 -0
  39. data/lib/nuggets/array/runiq.rb +5 -0
  40. data/lib/nuggets/array/runiq_mixin.rb +52 -0
  41. data/lib/nuggets/array/shuffle.rb +132 -0
  42. data/lib/nuggets/array/standard_deviation.rb +5 -0
  43. data/lib/nuggets/array/standard_deviation_mixin.rb +50 -0
  44. data/lib/nuggets/array/to_hash.rb +64 -0
  45. data/lib/nuggets/array/variance.rb +5 -0
  46. data/lib/nuggets/array/variance_mixin.rb +81 -0
  47. data/lib/nuggets/content_type.rb +97 -0
  48. data/lib/nuggets/dotted_decimal.rb +59 -0
  49. data/lib/nuggets/enumerable/agrep.rb +79 -0
  50. data/lib/nuggets/enumerable/all_any_extended.rb +66 -0
  51. data/lib/nuggets/enumerable/minmax.rb +102 -0
  52. data/lib/nuggets/env/set.rb +3 -0
  53. data/lib/nuggets/env/set_mixin.rb +67 -0
  54. data/lib/nuggets/env/user_encoding.rb +3 -0
  55. data/lib/nuggets/env/user_encoding_mixin.rb +54 -0
  56. data/lib/nuggets/env/user_home.rb +3 -0
  57. data/lib/nuggets/env/user_home_mixin.rb +56 -0
  58. data/lib/nuggets/file/ext.rb +5 -0
  59. data/lib/nuggets/file/ext_mixin.rb +87 -0
  60. data/lib/nuggets/file/replace.rb +5 -0
  61. data/lib/nuggets/file/replace_mixin.rb +55 -0
  62. data/lib/nuggets/file/sub.rb +5 -0
  63. data/lib/nuggets/file/sub_mixin.rb +95 -0
  64. data/lib/nuggets/file/which.rb +5 -0
  65. data/lib/nuggets/file/which_mixin.rb +72 -0
  66. data/lib/nuggets/hash/at.rb +68 -0
  67. data/lib/nuggets/hash/deep_fetch.rb +5 -0
  68. data/lib/nuggets/hash/deep_fetch_mixin.rb +74 -0
  69. data/lib/nuggets/hash/deep_merge.rb +5 -0
  70. data/lib/nuggets/hash/deep_merge_mixin.rb +53 -0
  71. data/lib/nuggets/hash/idmap.rb +5 -0
  72. data/lib/nuggets/hash/idmap_mixin.rb +41 -0
  73. data/lib/nuggets/hash/in_order.rb +43 -0
  74. data/lib/nuggets/hash/insert.rb +53 -0
  75. data/lib/nuggets/hash/nest.rb +5 -0
  76. data/lib/nuggets/hash/nest_mixin.rb +78 -0
  77. data/lib/nuggets/hash/only.rb +52 -0
  78. data/lib/nuggets/hash/seen.rb +5 -0
  79. data/lib/nuggets/hash/seen_mixin.rb +58 -0
  80. data/lib/nuggets/hash/unroll.rb +5 -0
  81. data/lib/nuggets/hash/unroll_mixin.rb +88 -0
  82. data/lib/nuggets/hash/zip.rb +5 -0
  83. data/lib/nuggets/hash/zip_mixin.rb +159 -0
  84. data/lib/nuggets/i18n.rb +155 -0
  85. data/lib/nuggets/integer/factorial.rb +56 -0
  86. data/lib/nuggets/integer/length.rb +5 -0
  87. data/lib/nuggets/integer/length_mixin.rb +49 -0
  88. data/lib/nuggets/integer/map.rb +5 -0
  89. data/lib/nuggets/integer/map_mixin.rb +42 -0
  90. data/lib/nuggets/integer/to_binary_s.rb +38 -0
  91. data/lib/nuggets/io/agrep.rb +43 -0
  92. data/lib/nuggets/io/interact.rb +5 -0
  93. data/lib/nuggets/io/interact_mixin.rb +159 -0
  94. data/lib/nuggets/io/modes.rb +121 -0
  95. data/lib/nuggets/io/null.rb +5 -0
  96. data/lib/nuggets/io/null_mixin.rb +40 -0
  97. data/lib/nuggets/io/redirect.rb +5 -0
  98. data/lib/nuggets/io/redirect_mixin.rb +50 -0
  99. data/lib/nuggets/lazy_attr.rb +44 -0
  100. data/lib/nuggets/log_parser.rb +70 -0
  101. data/lib/nuggets/log_parser/apache.rb +101 -0
  102. data/lib/nuggets/log_parser/rails.rb +219 -0
  103. data/lib/nuggets/net/success.rb +59 -0
  104. data/lib/nuggets/numeric/between.rb +2 -0
  105. data/lib/nuggets/numeric/duration.rb +100 -0
  106. data/lib/nuggets/numeric/limit.rb +62 -0
  107. data/lib/nuggets/numeric/signum.rb +52 -0
  108. data/lib/nuggets/numeric/to_multiple.rb +61 -0
  109. data/lib/nuggets/object/blank.rb +20 -0
  110. data/lib/nuggets/object/blank_mixin.rb +99 -0
  111. data/lib/nuggets/object/boolean.rb +5 -0
  112. data/lib/nuggets/object/boolean_mixin.rb +61 -0
  113. data/lib/nuggets/object/eigenclass.rb +2 -0
  114. data/lib/nuggets/object/ghost_class.rb +2 -0
  115. data/lib/nuggets/object/metaclass.rb +2 -0
  116. data/lib/nuggets/object/msend.rb +5 -0
  117. data/lib/nuggets/object/msend_mixin.rb +43 -0
  118. data/lib/nuggets/object/silence.rb +5 -0
  119. data/lib/nuggets/object/silence_mixin.rb +44 -0
  120. data/lib/nuggets/object/singleton_class.rb +5 -0
  121. data/lib/nuggets/object/singleton_class_mixin.rb +95 -0
  122. data/lib/nuggets/object/uniclass.rb +2 -0
  123. data/lib/nuggets/object/virtual_class.rb +2 -0
  124. data/lib/nuggets/pluggable.rb +91 -0
  125. data/lib/nuggets/proc/bind.rb +5 -0
  126. data/lib/nuggets/proc/bind_mixin.rb +51 -0
  127. data/lib/nuggets/range/quantile.rb +5 -0
  128. data/lib/nuggets/range/quantile_mixin.rb +42 -0
  129. data/lib/nuggets/ruby.rb +235 -0
  130. data/lib/nuggets/statistics.rb +12 -0
  131. data/lib/nuggets/statistics_mixins.rb +12 -0
  132. data/lib/nuggets/string/camelscore.rb +5 -0
  133. data/lib/nuggets/string/camelscore_mixin.rb +116 -0
  134. data/lib/nuggets/string/capitalize_first.rb +46 -0
  135. data/lib/nuggets/string/case.rb +81 -0
  136. data/lib/nuggets/string/evaluate.rb +5 -0
  137. data/lib/nuggets/string/evaluate_mixin.rb +47 -0
  138. data/lib/nuggets/string/msub.rb +84 -0
  139. data/lib/nuggets/string/nsub.rb +65 -0
  140. data/lib/nuggets/string/sub_with_md.rb +111 -0
  141. data/lib/nuggets/string/wc.rb +5 -0
  142. data/lib/nuggets/string/wc_mixin.rb +95 -0
  143. data/lib/nuggets/string/word_wrap.rb +76 -0
  144. data/lib/nuggets/string/xor.rb +5 -0
  145. data/lib/nuggets/string/xor_mixin.rb +59 -0
  146. data/lib/nuggets/tempfile/open.rb +57 -0
  147. data/lib/nuggets/uri/content_type.rb +5 -0
  148. data/lib/nuggets/uri/content_type_mixin.rb +47 -0
  149. data/lib/nuggets/uri/exist.rb +5 -0
  150. data/lib/nuggets/uri/exist_mixin.rb +56 -0
  151. data/lib/nuggets/uri/redirect.rb +5 -0
  152. data/lib/nuggets/uri/redirect_mixin.rb +101 -0
  153. data/lib/nuggets/version.rb +27 -0
  154. data/spec/nuggets/array/boost_spec.rb +50 -0
  155. data/spec/nuggets/array/combination_spec.rb +25 -0
  156. data/spec/nuggets/array/correlation_spec.rb +81 -0
  157. data/spec/nuggets/array/flatten_once_spec.rb +16 -0
  158. data/spec/nuggets/array/flush_spec.rb +43 -0
  159. data/spec/nuggets/array/format_spec.rb +52 -0
  160. data/spec/nuggets/array/hashify_spec.rb +41 -0
  161. data/spec/nuggets/array/histogram_spec.rb +87 -0
  162. data/spec/nuggets/array/in_order_spec.rb +13 -0
  163. data/spec/nuggets/array/limit_spec.rb +62 -0
  164. data/spec/nuggets/array/mean_spec.rb +203 -0
  165. data/spec/nuggets/array/median_spec.rb +77 -0
  166. data/spec/nuggets/array/mode_spec.rb +57 -0
  167. data/spec/nuggets/array/monotone_spec.rb +30 -0
  168. data/spec/nuggets/array/only_spec.rb +26 -0
  169. data/spec/nuggets/array/regression_spec.rb +54 -0
  170. data/spec/nuggets/array/runiq_spec.rb +25 -0
  171. data/spec/nuggets/array/standard_deviation_spec.rb +33 -0
  172. data/spec/nuggets/array/to_hash_spec.rb +28 -0
  173. data/spec/nuggets/array/variance_spec.rb +106 -0
  174. data/spec/nuggets/dotted_decimal_spec.rb +27 -0
  175. data/spec/nuggets/enumerable/all_any_extended_spec.rb +31 -0
  176. data/spec/nuggets/enumerable/minmax_spec.rb +21 -0
  177. data/spec/nuggets/env/set_spec.rb +29 -0
  178. data/spec/nuggets/env/user_encoding_spec.rb +38 -0
  179. data/spec/nuggets/env/user_home_spec.rb +42 -0
  180. data/spec/nuggets/file/ext_spec.rb +38 -0
  181. data/spec/nuggets/file/replace_spec.rb +95 -0
  182. data/spec/nuggets/file/sub_spec.rb +149 -0
  183. data/spec/nuggets/file/which_spec.rb +22 -0
  184. data/spec/nuggets/hash/at_spec.rb +19 -0
  185. data/spec/nuggets/hash/deep_fetch_spec.rb +159 -0
  186. data/spec/nuggets/hash/deep_merge_spec.rb +78 -0
  187. data/spec/nuggets/hash/in_order_spec.rb +12 -0
  188. data/spec/nuggets/hash/insert_spec.rb +13 -0
  189. data/spec/nuggets/hash/nest_spec.rb +102 -0
  190. data/spec/nuggets/hash/only_spec.rb +29 -0
  191. data/spec/nuggets/hash/seen_spec.rb +36 -0
  192. data/spec/nuggets/hash/unroll_spec.rb +68 -0
  193. data/spec/nuggets/i18n_spec.rb +13 -0
  194. data/spec/nuggets/integer/factorial_spec.rb +10 -0
  195. data/spec/nuggets/integer/length_spec.rb +18 -0
  196. data/spec/nuggets/integer/map_spec.rb +19 -0
  197. data/spec/nuggets/integer/to_binary_s_spec.rb +19 -0
  198. data/spec/nuggets/numeric/duration_spec.rb +25 -0
  199. data/spec/nuggets/numeric/limit_spec.rb +16 -0
  200. data/spec/nuggets/numeric/signum_spec.rb +16 -0
  201. data/spec/nuggets/numeric/to_multiple_spec.rb +16 -0
  202. data/spec/nuggets/object/blank_spec.rb +34 -0
  203. data/spec/nuggets/object/boolean_spec.rb +23 -0
  204. data/spec/nuggets/object/msend_spec.rb +25 -0
  205. data/spec/nuggets/object/silence_spec.rb +36 -0
  206. data/spec/nuggets/object/singleton_class_spec.rb +51 -0
  207. data/spec/nuggets/proc/bind_spec.rb +28 -0
  208. data/spec/nuggets/range/quantile_spec.rb +33 -0
  209. data/spec/nuggets/string/camelscore_spec.rb +114 -0
  210. data/spec/nuggets/string/capitalize_first_spec.rb +13 -0
  211. data/spec/nuggets/string/case_spec.rb +31 -0
  212. data/spec/nuggets/string/evaluate_spec.rb +24 -0
  213. data/spec/nuggets/string/msub_spec.rb +20 -0
  214. data/spec/nuggets/string/nsub_spec.rb +13 -0
  215. data/spec/nuggets/string/sub_with_md_spec.rb +25 -0
  216. data/spec/nuggets/string/wc_spec.rb +73 -0
  217. data/spec/nuggets/string/word_wrap_spec.rb +81 -0
  218. data/spec/nuggets/string/xor_spec.rb +57 -0
  219. data/spec/nuggets/uri/content_type_spec.rb +42 -0
  220. data/spec/nuggets/uri/exist_spec.rb +49 -0
  221. data/spec/spec_helper.rb +36 -0
  222. metadata +309 -17
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+
3
+ require 'nuggets/string/wc'
4
+
5
+ describe_extended String, Nuggets::String::WcMixin do
6
+
7
+ describe 'empty' do
8
+
9
+ before do
10
+ @str = ''
11
+ end
12
+
13
+ example { @str.wc.should == [0, 0, 0] }
14
+
15
+ example { @str.line_count.should == 0 }
16
+
17
+ example { @str.word_count.should == 0 }
18
+
19
+ example { @str.byte_count.should == 0 }
20
+
21
+ example { @str.char_count.should == 0 }
22
+
23
+ end
24
+
25
+ describe 'non-empty' do
26
+
27
+ before do
28
+ @str = <<-STR
29
+ The fox went out on a chilly night / Prayed for the moon to give him light / For he had many a mile to go that night / Before he reached the town o
30
+ He ran til he came to a great big bin / Where the ducks and the geese were kept therein / Said, a couple of you are going to grease my chin / Before I leave this town o
31
+ He grabbed the grey goose by the neck / Throwed a duck across his back / He didn't mind the quack, quack, quack / And the legs all dangling down o
32
+ Then old mother Flipper-flopper jumped out of bed / Out of the window she cocked her head / Crying, John, John the grey goose is gone / and the fox is on the town o
33
+ Then John he went to the top of the hill / Blew his horn both loud and shrill / The fox, he said, I better flee with my kill / Or they'll soon be on my trail o
34
+ He ran till he came to his cozy den / There were the little ones, eight, nine, ten / Saying, Daddy, daddy, Better go back again / For it must be a mighty fine town o
35
+ Then the fox and his wife, without any strife / Cut up the goose with a carving knife / They never had such a supper in their life / And the little ones chewed on the bones o
36
+ STR
37
+ end
38
+
39
+ example { @str.wc.should == [7, 252, 1130] }
40
+
41
+ example { @str.line_count.should == 7 }
42
+
43
+ example { @str.word_count.should == 252 }
44
+
45
+ example { @str.byte_count.should == 1130 }
46
+
47
+ example { @str.char_count.should == 1130 }
48
+
49
+ end
50
+
51
+ describe 'special' do
52
+
53
+ before do
54
+ @str = <<-STR
55
+ TECHNICIÄNS ÖF SPÅCE SHIP EÅRTH
56
+ THIS IS YÖÜR CÄPTÅIN SPEÄKING
57
+ YÖÜR ØÅPTÅIN IS DEA̋D
58
+ STR
59
+ end
60
+
61
+ example { @str.wc.should == [3, 14, 99] }
62
+
63
+ example { @str.line_count.should == 3 }
64
+
65
+ example { @str.word_count.should == 14 }
66
+
67
+ example { @str.byte_count.should == 99 }
68
+
69
+ example { @str.char_count.should == 84 }
70
+
71
+ end
72
+
73
+ end
@@ -0,0 +1,81 @@
1
+ require 'nuggets/string/word_wrap'
2
+
3
+ describe String, 'word_wrap' do
4
+
5
+ let(:s) { <<-EOT }
6
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam nulla arcu,
7
+ ullamcorper non, vulputate eget, elementum quis, sapien. Quisque consequat
8
+ porta enim. Phasellus porta libero et turpis. Ut felis.
9
+
10
+ Phasellus eget est a enim rutrum accumsan. Integer nec purus. Maecenas
11
+ facilisis urna sed arcu. Suspendisse potenti.
12
+
13
+
14
+ Vestibulum lacus metus, faucibus sit amet, mattis non, mollis sed, pede. Aenean
15
+ vitae sem nec sem euismod sollicitudin. Cras rhoncus.
16
+
17
+
18
+
19
+ Phasellus condimentum, ante a cursus dictum, lectus ipsum convallis magna, sed
20
+ tincidunt massa eros vitae ante. Suspendisse nec sem.
21
+ In hac habitasse platea dictumst. Fusce purus leo, ullamcorper sit amet, luctus
22
+ in, mollis mollis, enim. In adipiscing erat.
23
+ EOT
24
+
25
+ s60 = <<-EOT
26
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
27
+ Nullam nulla arcu,
28
+ ullamcorper non, vulputate eget, elementum quis, sapien.
29
+ Quisque consequat
30
+ porta enim. Phasellus porta libero et turpis. Ut felis.
31
+
32
+ Phasellus eget est a enim rutrum accumsan. Integer nec
33
+ purus. Maecenas
34
+ facilisis urna sed arcu. Suspendisse potenti.
35
+
36
+
37
+ Vestibulum lacus metus, faucibus sit amet, mattis non,
38
+ mollis sed, pede. Aenean
39
+ vitae sem nec sem euismod sollicitudin. Cras rhoncus.
40
+
41
+
42
+
43
+ Phasellus condimentum, ante a cursus dictum, lectus ipsum
44
+ convallis magna, sed
45
+ tincidunt massa eros vitae ante. Suspendisse nec sem.
46
+ In hac habitasse platea dictumst. Fusce purus leo,
47
+ ullamcorper sit amet, luctus
48
+ in, mollis mollis, enim. In adipiscing erat.
49
+ EOT
50
+
51
+ example {
52
+ s.word_wrap(60).should == s60
53
+ }
54
+
55
+ example {
56
+ s.word_wrap!(60); s.should == s60
57
+ }
58
+
59
+ example {
60
+ s.word_wrap(79).should == <<-EOT
61
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam nulla arcu,
62
+ ullamcorper non, vulputate eget, elementum quis, sapien. Quisque consequat
63
+ porta enim. Phasellus porta libero et turpis. Ut felis.
64
+
65
+ Phasellus eget est a enim rutrum accumsan. Integer nec purus. Maecenas
66
+ facilisis urna sed arcu. Suspendisse potenti.
67
+
68
+
69
+ Vestibulum lacus metus, faucibus sit amet, mattis non, mollis sed, pede. Aenean
70
+ vitae sem nec sem euismod sollicitudin. Cras rhoncus.
71
+
72
+
73
+
74
+ Phasellus condimentum, ante a cursus dictum, lectus ipsum convallis magna, sed
75
+ tincidunt massa eros vitae ante. Suspendisse nec sem.
76
+ In hac habitasse platea dictumst. Fusce purus leo, ullamcorper sit amet, luctus
77
+ in, mollis mollis, enim. In adipiscing erat.
78
+ EOT
79
+ }
80
+
81
+ end
@@ -0,0 +1,57 @@
1
+ require 'nuggets/string/xor'
2
+
3
+ describe_extended String, Nuggets::String::XorMixin do
4
+
5
+ describe 'same length' do
6
+
7
+ before do
8
+ @str1 = 'foobar'
9
+ @str2 = 'secret'
10
+
11
+ @res = "\025\n\f\020\004\006"
12
+ end
13
+
14
+ example { @str1.xor(@str2).should == @res }
15
+
16
+ example { @str2.xor(@str1).should == @res }
17
+
18
+ example { (@str1 ^ @str2).should == @res }
19
+
20
+ example { (@str2 ^ @str1).should == @res }
21
+
22
+ end
23
+
24
+ describe 'different length' do
25
+
26
+ before do
27
+ @str1 = 'baz'
28
+ @str2 = 'secret'
29
+ @str3 = 'foobarbaz'
30
+
31
+ @res1 = "sec\020\004\016"
32
+ @res2 = "foo\021\004\021\020\004\016"
33
+ end
34
+
35
+ example { @str1.xor(@str2).should == @res1 }
36
+
37
+ example { @str2.xor(@str1).should == @res1 }
38
+
39
+ example { (@str1 ^ @str2).should == @res1 }
40
+
41
+ example { (@str2 ^ @str1).should == @res1 }
42
+
43
+ example { lambda { @str1.xor(@str2, true) }.should raise_error(ArgumentError, 'must be of same length') }
44
+
45
+ example { @str2.xor(@str3).should == @res2 }
46
+
47
+ example { @str3.xor(@str2).should == @res2 }
48
+
49
+ example { (@str2 ^ @str3).should == @res2 }
50
+
51
+ example { (@str3 ^ @str2).should == @res2 }
52
+
53
+ example { lambda { @str2.xor(@str3, true) }.should raise_error(ArgumentError, 'must be of same length') }
54
+
55
+ end
56
+
57
+ end
@@ -0,0 +1,42 @@
1
+ require 'nuggets/uri/content_type'
2
+
3
+ describe_extended URI, Nuggets::URI::ContentTypeMixin, true do
4
+
5
+ let(:cache) { Nuggets::URI::RedirectMixin::URI_REDIRECT_HTTP_CACHE }
6
+
7
+ {
8
+ 'http://www.google.de' => 'text/html',
9
+ 'http://example.de/misc/' => 'text/html',
10
+ 'http://example.de/misc/ww.png' => 'image/png',
11
+ 'http://example.de/misc/suicide_is_painless.mid' => 'audio/midi',
12
+ 'http://example.de/misc/fugmann/wille_-_fugmann-slides.tar.gz' => 'application/x-gzip',
13
+ 'http://example.de/misc/i_hate_ms.pdf' => 'application/pdf',
14
+ 'http://example.de/bla' => false,
15
+ 'http://blawinter.de' => nil,
16
+ 'htp://www.google.de' => nil,
17
+ 'ftp://example.org' => nil,
18
+ 'www.google.de' => nil
19
+ }.each { |u, t|
20
+ example {
21
+ begin
22
+ req, res = double(Net::HTTP), double(Net::HTTPResponse)
23
+
24
+ req.stub(:use_ssl=)
25
+ req.stub(:use_ssl?)
26
+
27
+ res.stub(:success?).and_return(t)
28
+ res.stub(:content_type).and_return(t)
29
+
30
+ req.stub(:head).and_return(res)
31
+
32
+ cache.update([(uri = URI(u)).host, uri.port] => req)
33
+
34
+ URI.content_type(u).should == t
35
+ cache.size.should == 1
36
+ ensure
37
+ cache.clear
38
+ end
39
+ }
40
+ }
41
+
42
+ end
@@ -0,0 +1,49 @@
1
+ require 'nuggets/uri/exist'
2
+
3
+ describe_extended URI, Nuggets::URI::ExistMixin, true do
4
+
5
+ let(:cache) { Nuggets::URI::RedirectMixin::URI_REDIRECT_HTTP_CACHE }
6
+
7
+ %w[
8
+ http://www.google.de
9
+ http://example.de
10
+ http://example.de/bla
11
+ http://example.de/index.html
12
+ http://example.de/index.htm
13
+ http://xuugle.de
14
+ ].each { |u|
15
+ [true, false, nil].each { |s|
16
+ example {
17
+ begin
18
+ req, res = double(Net::HTTP), double(Net::HTTPResponse)
19
+
20
+ req.stub(:use_ssl=)
21
+ req.stub(:use_ssl?)
22
+
23
+ res.stub(:success?).and_return(s)
24
+
25
+ req.stub(:head).and_return(res)
26
+
27
+ cache.update([(uri = URI(u)).host, uri.port] => req)
28
+
29
+ URI.exist?(u).should == s
30
+ cache.size.should == 1
31
+ ensure
32
+ cache.clear
33
+ end
34
+ }
35
+ }
36
+ }
37
+
38
+ %w[
39
+ htp://www.google.de
40
+ ftp://example.org
41
+ www.google.de
42
+ ].each { |u|
43
+ example {
44
+ URI.exist?(u).should be_nil
45
+ cache.should be_empty
46
+ }
47
+ }
48
+
49
+ end
@@ -0,0 +1,36 @@
1
+ $:.unshift('lib') unless $:.first == 'lib'
2
+
3
+ Float::NAN = 0 / 0.0 unless Float.const_defined?(:NAN)
4
+ Float::INFINITY = 1 / 0.0 unless Float.const_defined?(:INFINITY)
5
+
6
+ RSpec.configure { |config|
7
+ %w[expect mock].each { |what|
8
+ config.send("#{what}_with", :rspec) { |c| c.syntax = [:should, :expect] }
9
+ }
10
+
11
+ config.include(Module.new {
12
+ def equal_float(value, precision = 1.0e-14)
13
+ be_within(precision).of(value)
14
+ end
15
+
16
+ def tempfile(txt = @txt)
17
+ t = Tempfile.open("nuggets_spec_#{object_id}_temp") { |f| f.puts txt }
18
+ block_given? ? yield(t.path) : t.path
19
+ ensure
20
+ t.close(true) if t
21
+ end
22
+ })
23
+ }
24
+
25
+ extend(Module.new {
26
+ def describe_extended(mod, ext, singleton = false, &block)
27
+ describe(mod, "when extended by #{ext}") {
28
+ example {
29
+ klass = singleton ? class << mod; self; end : mod
30
+ klass.ancestors.should include(ext)
31
+ }
32
+
33
+ class_eval(&block)
34
+ }
35
+ end
36
+ })
metadata CHANGED
@@ -1,48 +1,340 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nuggets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Wille
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-06 00:00:00.000000000 Z
11
+ date: 2014-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: ruby-nuggets
14
+ name: mime-types
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.9
20
- type: :runtime
19
+ version: '0'
20
+ type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.9.9
27
- description: Some extensions to the Ruby programming language. [Meta-gem]
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: open4
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hen
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Various extensions to Ruby classes.
28
84
  email: jens.wille@gmail.com
29
85
  executables: []
30
86
  extensions: []
31
- extra_rdoc_files: []
32
- files: []
33
- homepage: http://github.com/blackwinter/ruby-nuggets
87
+ extra_rdoc_files:
88
+ - README
89
+ - COPYING
90
+ - ChangeLog
91
+ files:
92
+ - COPYING
93
+ - ChangeLog
94
+ - README
95
+ - Rakefile
96
+ - lib/nuggets.rb
97
+ - lib/nuggets/all.rb
98
+ - lib/nuggets/all_mixins.rb
99
+ - lib/nuggets/ansicolor2css.rb
100
+ - lib/nuggets/argv/option.rb
101
+ - lib/nuggets/argv/option_mixin.rb
102
+ - lib/nuggets/array/boost.rb
103
+ - lib/nuggets/array/boost_mixin.rb
104
+ - lib/nuggets/array/combination.rb
105
+ - lib/nuggets/array/correlation.rb
106
+ - lib/nuggets/array/correlation_mixin.rb
107
+ - lib/nuggets/array/flatten_once.rb
108
+ - lib/nuggets/array/flush.rb
109
+ - lib/nuggets/array/flush_mixin.rb
110
+ - lib/nuggets/array/format.rb
111
+ - lib/nuggets/array/hashify.rb
112
+ - lib/nuggets/array/hashify_mixin.rb
113
+ - lib/nuggets/array/histogram.rb
114
+ - lib/nuggets/array/histogram_mixin.rb
115
+ - lib/nuggets/array/in_order.rb
116
+ - lib/nuggets/array/limit.rb
117
+ - lib/nuggets/array/limit_mixin.rb
118
+ - lib/nuggets/array/mean.rb
119
+ - lib/nuggets/array/mean_mixin.rb
120
+ - lib/nuggets/array/median.rb
121
+ - lib/nuggets/array/median_mixin.rb
122
+ - lib/nuggets/array/mode.rb
123
+ - lib/nuggets/array/mode_mixin.rb
124
+ - lib/nuggets/array/monotone.rb
125
+ - lib/nuggets/array/only.rb
126
+ - lib/nuggets/array/rand.rb
127
+ - lib/nuggets/array/regression.rb
128
+ - lib/nuggets/array/regression_mixin.rb
129
+ - lib/nuggets/array/runiq.rb
130
+ - lib/nuggets/array/runiq_mixin.rb
131
+ - lib/nuggets/array/shuffle.rb
132
+ - lib/nuggets/array/standard_deviation.rb
133
+ - lib/nuggets/array/standard_deviation_mixin.rb
134
+ - lib/nuggets/array/to_hash.rb
135
+ - lib/nuggets/array/variance.rb
136
+ - lib/nuggets/array/variance_mixin.rb
137
+ - lib/nuggets/content_type.rb
138
+ - lib/nuggets/dotted_decimal.rb
139
+ - lib/nuggets/enumerable/agrep.rb
140
+ - lib/nuggets/enumerable/all_any_extended.rb
141
+ - lib/nuggets/enumerable/minmax.rb
142
+ - lib/nuggets/env/set.rb
143
+ - lib/nuggets/env/set_mixin.rb
144
+ - lib/nuggets/env/user_encoding.rb
145
+ - lib/nuggets/env/user_encoding_mixin.rb
146
+ - lib/nuggets/env/user_home.rb
147
+ - lib/nuggets/env/user_home_mixin.rb
148
+ - lib/nuggets/file/ext.rb
149
+ - lib/nuggets/file/ext_mixin.rb
150
+ - lib/nuggets/file/replace.rb
151
+ - lib/nuggets/file/replace_mixin.rb
152
+ - lib/nuggets/file/sub.rb
153
+ - lib/nuggets/file/sub_mixin.rb
154
+ - lib/nuggets/file/which.rb
155
+ - lib/nuggets/file/which_mixin.rb
156
+ - lib/nuggets/hash/at.rb
157
+ - lib/nuggets/hash/deep_fetch.rb
158
+ - lib/nuggets/hash/deep_fetch_mixin.rb
159
+ - lib/nuggets/hash/deep_merge.rb
160
+ - lib/nuggets/hash/deep_merge_mixin.rb
161
+ - lib/nuggets/hash/idmap.rb
162
+ - lib/nuggets/hash/idmap_mixin.rb
163
+ - lib/nuggets/hash/in_order.rb
164
+ - lib/nuggets/hash/insert.rb
165
+ - lib/nuggets/hash/nest.rb
166
+ - lib/nuggets/hash/nest_mixin.rb
167
+ - lib/nuggets/hash/only.rb
168
+ - lib/nuggets/hash/seen.rb
169
+ - lib/nuggets/hash/seen_mixin.rb
170
+ - lib/nuggets/hash/unroll.rb
171
+ - lib/nuggets/hash/unroll_mixin.rb
172
+ - lib/nuggets/hash/zip.rb
173
+ - lib/nuggets/hash/zip_mixin.rb
174
+ - lib/nuggets/i18n.rb
175
+ - lib/nuggets/integer/factorial.rb
176
+ - lib/nuggets/integer/length.rb
177
+ - lib/nuggets/integer/length_mixin.rb
178
+ - lib/nuggets/integer/map.rb
179
+ - lib/nuggets/integer/map_mixin.rb
180
+ - lib/nuggets/integer/to_binary_s.rb
181
+ - lib/nuggets/io/agrep.rb
182
+ - lib/nuggets/io/interact.rb
183
+ - lib/nuggets/io/interact_mixin.rb
184
+ - lib/nuggets/io/modes.rb
185
+ - lib/nuggets/io/null.rb
186
+ - lib/nuggets/io/null_mixin.rb
187
+ - lib/nuggets/io/redirect.rb
188
+ - lib/nuggets/io/redirect_mixin.rb
189
+ - lib/nuggets/lazy_attr.rb
190
+ - lib/nuggets/log_parser.rb
191
+ - lib/nuggets/log_parser/apache.rb
192
+ - lib/nuggets/log_parser/rails.rb
193
+ - lib/nuggets/net/success.rb
194
+ - lib/nuggets/numeric/between.rb
195
+ - lib/nuggets/numeric/duration.rb
196
+ - lib/nuggets/numeric/limit.rb
197
+ - lib/nuggets/numeric/signum.rb
198
+ - lib/nuggets/numeric/to_multiple.rb
199
+ - lib/nuggets/object/blank.rb
200
+ - lib/nuggets/object/blank_mixin.rb
201
+ - lib/nuggets/object/boolean.rb
202
+ - lib/nuggets/object/boolean_mixin.rb
203
+ - lib/nuggets/object/eigenclass.rb
204
+ - lib/nuggets/object/ghost_class.rb
205
+ - lib/nuggets/object/metaclass.rb
206
+ - lib/nuggets/object/msend.rb
207
+ - lib/nuggets/object/msend_mixin.rb
208
+ - lib/nuggets/object/silence.rb
209
+ - lib/nuggets/object/silence_mixin.rb
210
+ - lib/nuggets/object/singleton_class.rb
211
+ - lib/nuggets/object/singleton_class_mixin.rb
212
+ - lib/nuggets/object/uniclass.rb
213
+ - lib/nuggets/object/virtual_class.rb
214
+ - lib/nuggets/pluggable.rb
215
+ - lib/nuggets/proc/bind.rb
216
+ - lib/nuggets/proc/bind_mixin.rb
217
+ - lib/nuggets/range/quantile.rb
218
+ - lib/nuggets/range/quantile_mixin.rb
219
+ - lib/nuggets/ruby.rb
220
+ - lib/nuggets/statistics.rb
221
+ - lib/nuggets/statistics_mixins.rb
222
+ - lib/nuggets/string/camelscore.rb
223
+ - lib/nuggets/string/camelscore_mixin.rb
224
+ - lib/nuggets/string/capitalize_first.rb
225
+ - lib/nuggets/string/case.rb
226
+ - lib/nuggets/string/evaluate.rb
227
+ - lib/nuggets/string/evaluate_mixin.rb
228
+ - lib/nuggets/string/msub.rb
229
+ - lib/nuggets/string/nsub.rb
230
+ - lib/nuggets/string/sub_with_md.rb
231
+ - lib/nuggets/string/wc.rb
232
+ - lib/nuggets/string/wc_mixin.rb
233
+ - lib/nuggets/string/word_wrap.rb
234
+ - lib/nuggets/string/xor.rb
235
+ - lib/nuggets/string/xor_mixin.rb
236
+ - lib/nuggets/tempfile/open.rb
237
+ - lib/nuggets/uri/content_type.rb
238
+ - lib/nuggets/uri/content_type_mixin.rb
239
+ - lib/nuggets/uri/exist.rb
240
+ - lib/nuggets/uri/exist_mixin.rb
241
+ - lib/nuggets/uri/redirect.rb
242
+ - lib/nuggets/uri/redirect_mixin.rb
243
+ - lib/nuggets/version.rb
244
+ - spec/nuggets/array/boost_spec.rb
245
+ - spec/nuggets/array/combination_spec.rb
246
+ - spec/nuggets/array/correlation_spec.rb
247
+ - spec/nuggets/array/flatten_once_spec.rb
248
+ - spec/nuggets/array/flush_spec.rb
249
+ - spec/nuggets/array/format_spec.rb
250
+ - spec/nuggets/array/hashify_spec.rb
251
+ - spec/nuggets/array/histogram_spec.rb
252
+ - spec/nuggets/array/in_order_spec.rb
253
+ - spec/nuggets/array/limit_spec.rb
254
+ - spec/nuggets/array/mean_spec.rb
255
+ - spec/nuggets/array/median_spec.rb
256
+ - spec/nuggets/array/mode_spec.rb
257
+ - spec/nuggets/array/monotone_spec.rb
258
+ - spec/nuggets/array/only_spec.rb
259
+ - spec/nuggets/array/regression_spec.rb
260
+ - spec/nuggets/array/runiq_spec.rb
261
+ - spec/nuggets/array/standard_deviation_spec.rb
262
+ - spec/nuggets/array/to_hash_spec.rb
263
+ - spec/nuggets/array/variance_spec.rb
264
+ - spec/nuggets/dotted_decimal_spec.rb
265
+ - spec/nuggets/enumerable/all_any_extended_spec.rb
266
+ - spec/nuggets/enumerable/minmax_spec.rb
267
+ - spec/nuggets/env/set_spec.rb
268
+ - spec/nuggets/env/user_encoding_spec.rb
269
+ - spec/nuggets/env/user_home_spec.rb
270
+ - spec/nuggets/file/ext_spec.rb
271
+ - spec/nuggets/file/replace_spec.rb
272
+ - spec/nuggets/file/sub_spec.rb
273
+ - spec/nuggets/file/which_spec.rb
274
+ - spec/nuggets/hash/at_spec.rb
275
+ - spec/nuggets/hash/deep_fetch_spec.rb
276
+ - spec/nuggets/hash/deep_merge_spec.rb
277
+ - spec/nuggets/hash/in_order_spec.rb
278
+ - spec/nuggets/hash/insert_spec.rb
279
+ - spec/nuggets/hash/nest_spec.rb
280
+ - spec/nuggets/hash/only_spec.rb
281
+ - spec/nuggets/hash/seen_spec.rb
282
+ - spec/nuggets/hash/unroll_spec.rb
283
+ - spec/nuggets/i18n_spec.rb
284
+ - spec/nuggets/integer/factorial_spec.rb
285
+ - spec/nuggets/integer/length_spec.rb
286
+ - spec/nuggets/integer/map_spec.rb
287
+ - spec/nuggets/integer/to_binary_s_spec.rb
288
+ - spec/nuggets/numeric/duration_spec.rb
289
+ - spec/nuggets/numeric/limit_spec.rb
290
+ - spec/nuggets/numeric/signum_spec.rb
291
+ - spec/nuggets/numeric/to_multiple_spec.rb
292
+ - spec/nuggets/object/blank_spec.rb
293
+ - spec/nuggets/object/boolean_spec.rb
294
+ - spec/nuggets/object/msend_spec.rb
295
+ - spec/nuggets/object/silence_spec.rb
296
+ - spec/nuggets/object/singleton_class_spec.rb
297
+ - spec/nuggets/proc/bind_spec.rb
298
+ - spec/nuggets/range/quantile_spec.rb
299
+ - spec/nuggets/string/camelscore_spec.rb
300
+ - spec/nuggets/string/capitalize_first_spec.rb
301
+ - spec/nuggets/string/case_spec.rb
302
+ - spec/nuggets/string/evaluate_spec.rb
303
+ - spec/nuggets/string/msub_spec.rb
304
+ - spec/nuggets/string/nsub_spec.rb
305
+ - spec/nuggets/string/sub_with_md_spec.rb
306
+ - spec/nuggets/string/wc_spec.rb
307
+ - spec/nuggets/string/word_wrap_spec.rb
308
+ - spec/nuggets/string/xor_spec.rb
309
+ - spec/nuggets/uri/content_type_spec.rb
310
+ - spec/nuggets/uri/exist_spec.rb
311
+ - spec/spec_helper.rb
312
+ homepage: http://github.com/blackwinter/nuggets
34
313
  licenses:
35
314
  - AGPL-3.0
36
315
  metadata: {}
37
- post_install_message:
38
- rdoc_options: []
316
+ post_install_message: |2+
317
+
318
+ nuggets-1.0.0 [2014-06-20]:
319
+
320
+ * First release under new name. Formerly known as ruby-nuggets.
321
+
322
+ rdoc_options:
323
+ - "--title"
324
+ - nuggets Application documentation (v1.0.0)
325
+ - "--charset"
326
+ - UTF-8
327
+ - "--line-numbers"
328
+ - "--all"
329
+ - "--main"
330
+ - README
39
331
  require_paths:
40
332
  - lib
41
333
  required_ruby_version: !ruby/object:Gem::Requirement
42
334
  requirements:
43
335
  - - ">="
44
336
  - !ruby/object:Gem::Version
45
- version: '0'
337
+ version: 1.9.3
46
338
  required_rubygems_version: !ruby/object:Gem::Requirement
47
339
  requirements:
48
340
  - - ">="
@@ -50,8 +342,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
50
342
  version: '0'
51
343
  requirements: []
52
344
  rubyforge_project:
53
- rubygems_version: 2.2.2.x
345
+ rubygems_version: 2.3.0
54
346
  signing_key:
55
347
  specification_version: 4
56
- summary: Some extensions to the Ruby programming language. [Meta-gem]
348
+ summary: Extending Ruby.
57
349
  test_files: []