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.
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: []