ruby-nuggets 0.9.9 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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/range/quantile_mixin'
2
-
3
- class Range
4
- include Nuggets::Range::QuantileMixin
5
- end
@@ -1,43 +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 Range
30
- module QuantileMixin
31
-
32
- # call-seq:
33
- # range.quantile(value[, order]) => anInteger
34
- #
35
- # Determines the <tt>order</tt>-quantile of +value+ in _range_.
36
- def quantile(value, order = 100)
37
- value < first ? 1 : value >= last ? order :
38
- ((value - first) / ((last - first) / order.to_f)).to_i + 1
39
- end
40
-
41
- end
42
- end
43
- end
@@ -1,6 +0,0 @@
1
- begin
2
- require 'turtle_reader/rdf/compression'
3
- warn "#{__FILE__}: 'nuggets/rdf/compression' is deprecated, use 'turtle_reader/rdf/compression' instead." unless ENV['NUGGETS_DEPRECATED_RDF_COMPRESSION']
4
- rescue LoadError => err
5
- warn "#{__FILE__}: 'nuggets/rdf/compression' is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_COMPRESSION']
6
- end
@@ -1,6 +0,0 @@
1
- begin
2
- require 'turtle_reader/rdf/prefix'
3
- warn "#{__FILE__}: 'nuggets/rdf/prefix' is deprecated, use 'turtle_reader/rdf/prefix' instead." unless ENV['NUGGETS_DEPRECATED_RDF_PREFIX']
4
- rescue LoadError => err
5
- warn "#{__FILE__}: 'nuggets/rdf/prefix' is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_PREFIX']
6
- end
@@ -1,8 +0,0 @@
1
- begin
2
- require 'turtle_reader'
3
- module Nuggets; module RDF; Turtle = ::TurtleReader; end; end
4
-
5
- warn "#{__FILE__}: Nuggets::RDF::Turtle is deprecated, use TurtleReader instead." unless ENV['NUGGETS_DEPRECATED_RDF_TURTLE']
6
- rescue LoadError => err
7
- warn "#{__FILE__}: Nuggets::RDF::Turtle is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_TURTLE']
8
- end
@@ -1,6 +0,0 @@
1
- begin
2
- require 'turtle_reader/rdf/turtle/reader'
3
- warn "#{__FILE__}: 'nuggets/rdf/turtle/reader' is deprecated, use 'turtle_reader/rdf/turtle/reader' instead." unless ENV['NUGGETS_DEPRECATED_RDF_TURTLE_READER']
4
- rescue LoadError => err
5
- warn "#{__FILE__}: 'nuggets/rdf/turtle/reader' is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_TURTLE_READER']
6
- end
@@ -1,6 +0,0 @@
1
- begin
2
- require 'turtle_reader/rdf/uri'
3
- warn "#{__FILE__}: 'nuggets/rdf/uri' is deprecated, use 'turtle_reader/rdf/uri' instead." unless ENV['NUGGETS_DEPRECATED_RDF_URI']
4
- rescue LoadError => err
5
- warn "#{__FILE__}: 'nuggets/rdf/uri' is no longer available; install `turtle_reader' instead. (#{err})" unless ENV['NUGGETS_DEPRECATED_RDF_URI']
6
- end
@@ -1,236 +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 'rbconfig'
29
-
30
- module Nuggets
31
-
32
- # Originally based on Phusion Passenger's
33
- # {PlatformInfo}[https://github.com/FooBarWidget/passenger/blob/release-3.0.2/lib/phusion_passenger/platform_info/ruby.rb]
34
- # module.
35
- #
36
- #--
37
- # Phusion Passenger - http://www.modrails.com/
38
- # Copyright (c) 2010 Phusion
39
- #
40
- # "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
41
- #
42
- # Permission is hereby granted, free of charge, to any person obtaining a
43
- # copy of this software and associated documentation files (the "Software"),
44
- # to deal in the Software without restriction, including without limitation
45
- # the rights to use, copy, modify, merge, publish, distribute, sublicense,
46
- # and/or sell copies of the Software, and to permit persons to whom the
47
- # Software is furnished to do so, subject to the following conditions:
48
- #
49
- # The above copyright notice and this permission notice shall be included in
50
- # all copies or substantial portions of the Software.
51
- #++
52
-
53
- module Ruby
54
-
55
- extend self
56
-
57
- CONFIG = ::RbConfig::CONFIG
58
-
59
- # Store original $GEM_HOME value so that even if the app customizes
60
- # $GEM_HOME we can still work with the original value.
61
- if gem_home = ::ENV['GEM_HOME']
62
- gem_home = gem_home.strip.freeze
63
- gem_home = nil if gem_home.empty?
64
- end
65
-
66
- GEM_HOME = gem_home
67
-
68
- RUBY_ENGINE = defined?(::RUBY_ENGINE) ? ::RUBY_ENGINE : 'ruby'
69
-
70
- OSX_RUBY_RE = %r{\A/System/Library/Frameworks/Ruby.framework/Versions/.*?/usr/bin/ruby\Z}
71
-
72
- # Returns correct command for invoking the current Ruby interpreter.
73
- def ruby_command
74
- defined?(@ruby_command) ? @ruby_command : @ruby_command = ruby_executable
75
- end
76
-
77
- attr_writer :ruby_command
78
-
79
- # Returns the full path to the current Ruby interpreter's executable file.
80
- # This might not be the actual correct command to use for invoking the Ruby
81
- # interpreter; use ruby_command instead.
82
- def ruby_executable
83
- @ruby_executable ||= begin
84
- dir, name, ext = CONFIG.values_at(*%w[bindir RUBY_INSTALL_NAME EXEEXT])
85
- ::File.join(dir, name + ext).sub(/.*\s.*/m, '"\&"')
86
- end
87
- end
88
-
89
- attr_writer :ruby_executable
90
-
91
- # Locates a Ruby tool command +name+, e.g. 'gem', 'rake', 'bundle', etc. Instead
92
- # of naively looking in $PATH, this function uses a variety of search heuristics
93
- # to find the command that's really associated with the current Ruby interpreter.
94
- # It should never locate a command that's actually associated with a different
95
- # Ruby interpreter.
96
- #
97
- # NOTE: The return value may not be the actual correct invocation for the tool.
98
- # Use command_for_ruby_tool for that.
99
- #
100
- # Returns +nil+ when nothing's found.
101
- def locate_ruby_tool(name, extensions = ['', CONFIG['EXEEXT']].compact.uniq)
102
- # Deduce Ruby's --program-prefix and --program-suffix from its install name
103
- # and transform the given input name accordingly.
104
- #
105
- # "rake" => "jrake", "rake1.8", etc.
106
- [name, CONFIG['RUBY_INSTALL_NAME'].sub('ruby', name)].uniq.each { |basename|
107
- extensions.each { |ext|
108
- result = locate_ruby_tool_by_basename(basename + ext) and return result
109
- }
110
- }
111
-
112
- nil
113
- end
114
-
115
- # Returns the correct command string for invoking the +name+ executable
116
- # that belongs to the current Ruby interpreter. Returns +nil+ if the
117
- # command is not found.
118
- #
119
- # If the command executable is a Ruby program, then we need to run it
120
- # in the correct Ruby interpreter just in case the command doesn't
121
- # have the correct shebang line; we don't want a totally different
122
- # Ruby than the current one to be invoked.
123
- def command_for_ruby_tool(name)
124
- filename = respond_to?(name) ? send(name) : locate_ruby_tool(name)
125
- shebang_command(filename) =~ /ruby/ ? "#{ruby_command} #{filename}" : filename
126
- end
127
-
128
- def self.define_ruby_tool(name)
129
- class_eval <<-EOT, __FILE__, __LINE__ + 1
130
- def #{name}
131
- @#{name} ||= locate_ruby_tool('#{name}')
132
- end
133
-
134
- attr_writer :#{name}
135
-
136
- def #{name}_command
137
- @#{name}_command ||= command_for_ruby_tool('#{name}')
138
- end
139
-
140
- attr_writer :#{name}_command
141
- EOT
142
- end
143
-
144
- %w[gem rake rspec].each { |name| define_ruby_tool(name) }
145
-
146
- def ruby_options_to_argv(args, ruby_command = ruby_command)
147
- argv = [ruby_command]
148
-
149
- ruby_options_from_hash(args.pop, argv) if args.last.is_a?(::Hash)
150
-
151
- argv.concat(args.map! { |arg| arg.to_s.strip })
152
- end
153
-
154
- def ruby_options_from_hash(hash, argv = [])
155
- hash.each { |key, val|
156
- opt = "-#{key.to_s[0, 1]}"
157
-
158
- if val.is_a?(::Array)
159
- val.each { |v| argv << opt << v.to_s }
160
- elsif opt == '-e'
161
- argv << opt << val.to_s
162
- elsif val != false
163
- argv << "#{opt}#{val unless val == true}"
164
- end
165
- }
166
-
167
- argv
168
- end
169
-
170
- private
171
-
172
- def locate_ruby_tool_by_basename(name)
173
- # On OS X we must look for Ruby binaries in /usr/bin.
174
- # RubyGems puts executables (e.g. 'rake') in there, not in
175
- # /System/Libraries/(...)/bin.
176
- dir = ::RUBY_PLATFORM =~ /darwin/ && ruby_command =~ OSX_RUBY_RE ?
177
- '/usr/bin' : ::File.dirname(ruby_command)
178
-
179
- filename = executable_filename(dir, name) and return filename
180
-
181
- # RubyGems might put binaries in a directory other
182
- # than Ruby's bindir. Debian packaged RubyGems and
183
- # DebGem packaged RubyGems are the prime examples.
184
- filename = executable_filename(::Gem.bindir, name) and return filename
185
-
186
- # Looks like it's not in the RubyGems bindir. Search in $PATH, but
187
- # be very careful about this because whatever we find might belong
188
- # to a different Ruby interpreter than the current one.
189
- ::ENV['PATH'].split(::File::PATH_SEPARATOR).each { |path|
190
- if filename = executable_filename(path, name)
191
- return filename if shebang_command(filename) == ruby_command
192
- end
193
- }
194
-
195
- nil
196
- end
197
-
198
- def executable_filename(dir, name)
199
- filename = ::File.join(dir, name)
200
- filename if ::File.file?(filename) && ::File.executable?(filename)
201
- end
202
-
203
- def shebang_command(filename)
204
- ::File.foreach(filename) { |line|
205
- return $1 if line =~ /\A#!\s*(\S*)/
206
-
207
- # Allow one extra line for magic comment.
208
- break if $. > 1
209
- }
210
-
211
- nil
212
- end
213
-
214
- end
215
-
216
- end
217
-
218
- def File.ruby; ::Nuggets::Ruby.ruby_command; end
219
-
220
- begin
221
- require 'open4'
222
-
223
- def Process.ruby(*args, &block)
224
- argv = ::Nuggets::Ruby.ruby_options_to_argv(args)
225
- ::Open4.popen4(*argv, &block)
226
- end
227
-
228
- require 'nuggets/io/interact'
229
-
230
- def Process.interact_ruby(input, *args)
231
- ruby(*args) { |_, i, o, e|
232
- ::IO.interact({ input => i }, { o => $stdout, e => $stderr })
233
- }
234
- end
235
- rescue ::LoadError
236
- end
@@ -1,12 +0,0 @@
1
- # load statistics related nuggets
2
-
3
- require 'nuggets/array/boost'
4
- require 'nuggets/array/correlation'
5
- require 'nuggets/array/histogram'
6
- require 'nuggets/array/mean'
7
- require 'nuggets/array/median'
8
- require 'nuggets/array/mode'
9
- require 'nuggets/array/regression'
10
- require 'nuggets/array/standard_deviation'
11
- require 'nuggets/array/variance'
12
- require 'nuggets/range/quantile'
@@ -1,12 +0,0 @@
1
- # load statistics related nuggets (mixins)
2
-
3
- require 'nuggets/array/boost_mixin'
4
- require 'nuggets/array/correlation_mixin'
5
- require 'nuggets/array/histogram_mixin'
6
- require 'nuggets/array/mean_mixin'
7
- require 'nuggets/array/median_mixin'
8
- require 'nuggets/array/mode_mixin'
9
- require 'nuggets/array/regression_mixin'
10
- require 'nuggets/array/standard_deviation_mixin'
11
- require 'nuggets/array/variance_mixin'
12
- require 'nuggets/range/quantile_mixin'
@@ -1,5 +0,0 @@
1
- require 'nuggets/string/camelscore_mixin'
2
-
3
- class String
4
- include Nuggets::String::CamelscoreMixin
5
- end
@@ -1,117 +0,0 @@
1
- #--
2
- ###############################################################################
3
- # #
4
- # A component of ruby-nuggets, some extensions to the Ruby programming #
5
- # language. #
6
- # #
7
- # Copyright (C) 2007-2012 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 String
30
- module CamelscoreMixin
31
-
32
- # List of acronyms to treat specially
33
- # in #camelcase and #underscore.
34
- CAMELSCORE_ACRONYMS = {
35
- 'html' => 'HTML',
36
- 'rss' => 'RSS',
37
- 'sql' => 'SQL',
38
- 'ssl' => 'SSL',
39
- 'xml' => 'XML'
40
- }
41
-
42
- # call-seq:
43
- # str.camelcase => new_string
44
- #
45
- # Returns the CamelCase form of _str_.
46
- def camelcase
47
- dup.camelcase!
48
- end
49
-
50
- alias_method :camelize, :camelcase
51
-
52
- # call-seq:
53
- # str.camelcase! => str
54
- #
55
- # Replaces _str_ with its CamelCase form and returns _str_.
56
- def camelcase!
57
- sub!(/^[a-z]+/) {
58
- CAMELSCORE_ACRONYMS[$&] || $&.capitalize
59
- }
60
-
61
- gsub!(/(?:_|([\/\d]))([a-z]+)/i) {
62
- "#{$1}#{CAMELSCORE_ACRONYMS[$2] || $2.capitalize}"
63
- }
64
-
65
- gsub!('/', '::')
66
-
67
- self
68
- end
69
-
70
- alias_method :camelize!, :camelcase!
71
-
72
- # call-seq:
73
- # str.underscore => new_string
74
- #
75
- # Returns the under_score form of _str_.
76
- def underscore
77
- dup.underscore!
78
- end
79
-
80
- # call-seq:
81
- # str.underscore! => str
82
- #
83
- # Replaces _str_ with its under_score form and returns _str_.
84
- def underscore!
85
- gsub!(/::/, '/')
86
-
87
- a = CAMELSCORE_ACRONYMS.values
88
- r = a.empty? ? /(?=a)b/ : ::Regexp.union(*a.sort_by { |v| v.length })
89
-
90
- gsub!(/(?:([A-Za-z])|(\d)|^)(#{r})(?=\b|[^a-z])/) {
91
- "#{$1 || $2}#{'_' if $1}#{$3.downcase}"
92
- }
93
-
94
- gsub!(/([A-Z])(?=[A-Z])/, '\1_')
95
- gsub!(/([a-z\d])([A-Z])/, '\1_\2')
96
-
97
- downcase!
98
-
99
- self
100
- end
101
-
102
- # call-seq:
103
- # str.constantize(base = Object) => anObject
104
- #
105
- # Returns the constant pointed to by _str_, relative to +base+.
106
- def constantize(base = ::Object)
107
- names = split('::')
108
- return if names.empty?
109
-
110
- const = names.first.empty? ? (names.shift; ::Object) : base
111
- names.each { |name| const = const.const_get(name) }
112
- const
113
- end
114
-
115
- end
116
- end
117
- end