csd 0.1.5 → 0.1.6

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 (258) hide show
  1. data/COPYING +1 -2
  2. data/README.rdoc +7 -1
  3. data/Rakefile +7 -2
  4. data/VERSION +1 -1
  5. data/csd.gemspec +18 -216
  6. data/lib/csd.rb +6 -16
  7. data/lib/csd/application.rb +2 -2
  8. data/lib/csd/application/default.rb +15 -14
  9. data/lib/csd/application/default/base.rb +1 -1
  10. data/lib/csd/application/minisip.rb +43 -11
  11. data/lib/csd/application/minisip/about.yml +5 -5
  12. data/lib/csd/application/minisip/base.rb +82 -70
  13. data/lib/csd/application/minisip/error.rb +1 -1
  14. data/lib/csd/application/minisip/options/common.rb +1 -1
  15. data/lib/csd/application/minisip/options/compile.rb +1 -1
  16. data/lib/csd/application/minisip/options/package.rb +1 -1
  17. data/lib/csd/application/minisip/unix.rb +40 -27
  18. data/lib/csd/application/minisip/unix/darwin.rb +12 -0
  19. data/lib/csd/application/minisip/unix/linux.rb +1 -11
  20. data/lib/csd/application/minisip/unix/linux/debian.rb +14 -25
  21. data/lib/csd/application/minisip/unix/linux/debian/ubuntu10.rb +12 -13
  22. data/lib/csd/applications.rb +5 -5
  23. data/lib/csd/commands.rb +164 -89
  24. data/lib/csd/container.rb +61 -0
  25. data/lib/csd/error.rb +10 -1
  26. data/lib/csd/extensions.rb +3 -2
  27. data/lib/csd/extensions/core/array.rb +29 -1
  28. data/lib/csd/extensions/core/dir.rb +15 -24
  29. data/lib/csd/extensions/core/object.rb +10 -2
  30. data/lib/csd/extensions/core/option_parser.rb +22 -3
  31. data/lib/csd/extensions/core/pathname.rb +30 -2
  32. data/lib/csd/extensions/core/string.rb +51 -4
  33. data/lib/csd/extensions/gem/platform.rb +18 -3
  34. data/lib/csd/{options.rb → options_parser.rb} +16 -20
  35. data/lib/csd/path_container.rb +24 -0
  36. data/lib/csd/user_interface.rb +2 -0
  37. data/lib/csd/user_interface/base.rb +26 -0
  38. data/lib/csd/user_interface/cli.rb +37 -0
  39. data/lib/csd/vendor/active_support/MIT-LICENSE +20 -0
  40. data/lib/csd/vendor/active_support/inflector.rb +155 -0
  41. data/lib/csd/vendor/term/GPL2-LICENSE +339 -0
  42. data/lib/csd/vendor/term/ansicolor.rb +113 -0
  43. data/lib/csd/version.rb +13 -4
  44. data/test/application/test_minisip.rb +45 -0
  45. data/test/functional/test_applications.rb +10 -16
  46. data/test/functional/test_commands.rb +260 -23
  47. data/test/unit/test_string.rb +1 -1
  48. metadata +18 -216
  49. data/lib/active_support.rb +0 -75
  50. data/lib/active_support/all.rb +0 -3
  51. data/lib/active_support/backtrace_cleaner.rb +0 -94
  52. data/lib/active_support/base64.rb +0 -42
  53. data/lib/active_support/basic_object.rb +0 -21
  54. data/lib/active_support/benchmarkable.rb +0 -60
  55. data/lib/active_support/buffered_logger.rb +0 -132
  56. data/lib/active_support/builder.rb +0 -6
  57. data/lib/active_support/cache.rb +0 -626
  58. data/lib/active_support/cache/compressed_mem_cache_store.rb +0 -13
  59. data/lib/active_support/cache/file_store.rb +0 -188
  60. data/lib/active_support/cache/mem_cache_store.rb +0 -191
  61. data/lib/active_support/cache/memory_store.rb +0 -159
  62. data/lib/active_support/cache/strategy/local_cache.rb +0 -164
  63. data/lib/active_support/cache/synchronized_memory_store.rb +0 -11
  64. data/lib/active_support/callbacks.rb +0 -600
  65. data/lib/active_support/concern.rb +0 -29
  66. data/lib/active_support/configurable.rb +0 -36
  67. data/lib/active_support/core_ext.rb +0 -3
  68. data/lib/active_support/core_ext/array.rb +0 -7
  69. data/lib/active_support/core_ext/array/access.rb +0 -46
  70. data/lib/active_support/core_ext/array/conversions.rb +0 -164
  71. data/lib/active_support/core_ext/array/extract_options.rb +0 -29
  72. data/lib/active_support/core_ext/array/grouping.rb +0 -100
  73. data/lib/active_support/core_ext/array/random_access.rb +0 -20
  74. data/lib/active_support/core_ext/array/uniq_by.rb +0 -17
  75. data/lib/active_support/core_ext/array/wrap.rb +0 -22
  76. data/lib/active_support/core_ext/benchmark.rb +0 -7
  77. data/lib/active_support/core_ext/big_decimal.rb +0 -1
  78. data/lib/active_support/core_ext/big_decimal/conversions.rb +0 -27
  79. data/lib/active_support/core_ext/cgi.rb +0 -1
  80. data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +0 -19
  81. data/lib/active_support/core_ext/class.rb +0 -4
  82. data/lib/active_support/core_ext/class/attribute.rb +0 -67
  83. data/lib/active_support/core_ext/class/attribute_accessors.rb +0 -63
  84. data/lib/active_support/core_ext/class/delegating_attributes.rb +0 -44
  85. data/lib/active_support/core_ext/class/inheritable_attributes.rb +0 -232
  86. data/lib/active_support/core_ext/class/subclasses.rb +0 -55
  87. data/lib/active_support/core_ext/date/acts_like.rb +0 -8
  88. data/lib/active_support/core_ext/date/calculations.rb +0 -240
  89. data/lib/active_support/core_ext/date/conversions.rb +0 -99
  90. data/lib/active_support/core_ext/date/freeze.rb +0 -31
  91. data/lib/active_support/core_ext/date_time/acts_like.rb +0 -13
  92. data/lib/active_support/core_ext/date_time/calculations.rb +0 -113
  93. data/lib/active_support/core_ext/date_time/conversions.rb +0 -102
  94. data/lib/active_support/core_ext/date_time/zones.rb +0 -17
  95. data/lib/active_support/core_ext/enumerable.rb +0 -119
  96. data/lib/active_support/core_ext/exception.rb +0 -3
  97. data/lib/active_support/core_ext/file.rb +0 -2
  98. data/lib/active_support/core_ext/file/atomic.rb +0 -41
  99. data/lib/active_support/core_ext/file/path.rb +0 -5
  100. data/lib/active_support/core_ext/float.rb +0 -1
  101. data/lib/active_support/core_ext/float/rounding.rb +0 -19
  102. data/lib/active_support/core_ext/hash.rb +0 -8
  103. data/lib/active_support/core_ext/hash/conversions.rb +0 -150
  104. data/lib/active_support/core_ext/hash/deep_merge.rb +0 -16
  105. data/lib/active_support/core_ext/hash/diff.rb +0 -13
  106. data/lib/active_support/core_ext/hash/except.rb +0 -24
  107. data/lib/active_support/core_ext/hash/indifferent_access.rb +0 -14
  108. data/lib/active_support/core_ext/hash/keys.rb +0 -45
  109. data/lib/active_support/core_ext/hash/reverse_merge.rb +0 -28
  110. data/lib/active_support/core_ext/hash/slice.rb +0 -38
  111. data/lib/active_support/core_ext/integer.rb +0 -3
  112. data/lib/active_support/core_ext/integer/inflections.rb +0 -14
  113. data/lib/active_support/core_ext/integer/multiple.rb +0 -6
  114. data/lib/active_support/core_ext/integer/time.rb +0 -39
  115. data/lib/active_support/core_ext/kernel.rb +0 -5
  116. data/lib/active_support/core_ext/kernel/agnostics.rb +0 -11
  117. data/lib/active_support/core_ext/kernel/debugger.rb +0 -16
  118. data/lib/active_support/core_ext/kernel/reporting.rb +0 -62
  119. data/lib/active_support/core_ext/kernel/requires.rb +0 -26
  120. data/lib/active_support/core_ext/kernel/singleton_class.rb +0 -13
  121. data/lib/active_support/core_ext/load_error.rb +0 -23
  122. data/lib/active_support/core_ext/logger.rb +0 -146
  123. data/lib/active_support/core_ext/module.rb +0 -12
  124. data/lib/active_support/core_ext/module/aliasing.rb +0 -70
  125. data/lib/active_support/core_ext/module/anonymous.rb +0 -24
  126. data/lib/active_support/core_ext/module/attr_accessor_with_default.rb +0 -31
  127. data/lib/active_support/core_ext/module/attr_internal.rb +0 -32
  128. data/lib/active_support/core_ext/module/attribute_accessors.rb +0 -66
  129. data/lib/active_support/core_ext/module/delegation.rb +0 -146
  130. data/lib/active_support/core_ext/module/deprecation.rb +0 -9
  131. data/lib/active_support/core_ext/module/introspection.rb +0 -88
  132. data/lib/active_support/core_ext/module/method_names.rb +0 -14
  133. data/lib/active_support/core_ext/module/reachable.rb +0 -10
  134. data/lib/active_support/core_ext/module/remove_method.rb +0 -6
  135. data/lib/active_support/core_ext/module/synchronization.rb +0 -42
  136. data/lib/active_support/core_ext/name_error.rb +0 -18
  137. data/lib/active_support/core_ext/numeric.rb +0 -2
  138. data/lib/active_support/core_ext/numeric/bytes.rb +0 -44
  139. data/lib/active_support/core_ext/numeric/time.rb +0 -77
  140. data/lib/active_support/core_ext/object.rb +0 -14
  141. data/lib/active_support/core_ext/object/acts_like.rb +0 -10
  142. data/lib/active_support/core_ext/object/blank.rb +0 -76
  143. data/lib/active_support/core_ext/object/conversions.rb +0 -4
  144. data/lib/active_support/core_ext/object/duplicable.rb +0 -65
  145. data/lib/active_support/core_ext/object/extending.rb +0 -11
  146. data/lib/active_support/core_ext/object/instance_variables.rb +0 -67
  147. data/lib/active_support/core_ext/object/misc.rb +0 -2
  148. data/lib/active_support/core_ext/object/returning.rb +0 -42
  149. data/lib/active_support/core_ext/object/to_param.rb +0 -49
  150. data/lib/active_support/core_ext/object/to_query.rb +0 -27
  151. data/lib/active_support/core_ext/object/try.rb +0 -36
  152. data/lib/active_support/core_ext/object/with_options.rb +0 -26
  153. data/lib/active_support/core_ext/proc.rb +0 -14
  154. data/lib/active_support/core_ext/process.rb +0 -1
  155. data/lib/active_support/core_ext/process/daemon.rb +0 -23
  156. data/lib/active_support/core_ext/range.rb +0 -4
  157. data/lib/active_support/core_ext/range/blockless_step.rb +0 -29
  158. data/lib/active_support/core_ext/range/conversions.rb +0 -21
  159. data/lib/active_support/core_ext/range/include_range.rb +0 -21
  160. data/lib/active_support/core_ext/range/overlaps.rb +0 -8
  161. data/lib/active_support/core_ext/regexp.rb +0 -5
  162. data/lib/active_support/core_ext/rexml.rb +0 -46
  163. data/lib/active_support/core_ext/string.rb +0 -12
  164. data/lib/active_support/core_ext/string/access.rb +0 -99
  165. data/lib/active_support/core_ext/string/behavior.rb +0 -7
  166. data/lib/active_support/core_ext/string/conversions.rb +0 -61
  167. data/lib/active_support/core_ext/string/encoding.rb +0 -11
  168. data/lib/active_support/core_ext/string/exclude.rb +0 -6
  169. data/lib/active_support/core_ext/string/filters.rb +0 -49
  170. data/lib/active_support/core_ext/string/inflections.rb +0 -149
  171. data/lib/active_support/core_ext/string/interpolation.rb +0 -2
  172. data/lib/active_support/core_ext/string/multibyte.rb +0 -72
  173. data/lib/active_support/core_ext/string/output_safety.rb +0 -109
  174. data/lib/active_support/core_ext/string/starts_ends_with.rb +0 -4
  175. data/lib/active_support/core_ext/string/xchar.rb +0 -18
  176. data/lib/active_support/core_ext/time/acts_like.rb +0 -8
  177. data/lib/active_support/core_ext/time/calculations.rb +0 -282
  178. data/lib/active_support/core_ext/time/conversions.rb +0 -85
  179. data/lib/active_support/core_ext/time/marshal.rb +0 -56
  180. data/lib/active_support/core_ext/time/publicize_conversion_methods.rb +0 -10
  181. data/lib/active_support/core_ext/time/zones.rb +0 -78
  182. data/lib/active_support/core_ext/uri.rb +0 -22
  183. data/lib/active_support/dependencies.rb +0 -628
  184. data/lib/active_support/dependencies/autoload.rb +0 -50
  185. data/lib/active_support/deprecation.rb +0 -18
  186. data/lib/active_support/deprecation/behaviors.rb +0 -38
  187. data/lib/active_support/deprecation/method_wrappers.rb +0 -29
  188. data/lib/active_support/deprecation/proxy_wrappers.rb +0 -74
  189. data/lib/active_support/deprecation/reporting.rb +0 -56
  190. data/lib/active_support/duration.rb +0 -105
  191. data/lib/active_support/gzip.rb +0 -25
  192. data/lib/active_support/hash_with_indifferent_access.rb +0 -145
  193. data/lib/active_support/i18n.rb +0 -8
  194. data/lib/active_support/inflections.rb +0 -56
  195. data/lib/active_support/inflector.rb +0 -7
  196. data/lib/active_support/inflector/inflections.rb +0 -211
  197. data/lib/active_support/inflector/methods.rb +0 -141
  198. data/lib/active_support/inflector/transliterate.rb +0 -97
  199. data/lib/active_support/json.rb +0 -2
  200. data/lib/active_support/json/backends/jsongem.rb +0 -43
  201. data/lib/active_support/json/backends/yajl.rb +0 -40
  202. data/lib/active_support/json/backends/yaml.rb +0 -90
  203. data/lib/active_support/json/decoding.rb +0 -51
  204. data/lib/active_support/json/encoding.rb +0 -254
  205. data/lib/active_support/json/variable.rb +0 -11
  206. data/lib/active_support/lazy_load_hooks.rb +0 -27
  207. data/lib/active_support/locale/en.yml +0 -36
  208. data/lib/active_support/memoizable.rb +0 -103
  209. data/lib/active_support/message_encryptor.rb +0 -71
  210. data/lib/active_support/message_verifier.rb +0 -62
  211. data/lib/active_support/multibyte.rb +0 -44
  212. data/lib/active_support/multibyte/chars.rb +0 -480
  213. data/lib/active_support/multibyte/exceptions.rb +0 -8
  214. data/lib/active_support/multibyte/unicode.rb +0 -393
  215. data/lib/active_support/multibyte/utils.rb +0 -60
  216. data/lib/active_support/notifications.rb +0 -81
  217. data/lib/active_support/notifications/fanout.rb +0 -93
  218. data/lib/active_support/notifications/instrumenter.rb +0 -56
  219. data/lib/active_support/option_merger.rb +0 -25
  220. data/lib/active_support/ordered_hash.rb +0 -158
  221. data/lib/active_support/ordered_options.rb +0 -27
  222. data/lib/active_support/railtie.rb +0 -100
  223. data/lib/active_support/rescuable.rb +0 -114
  224. data/lib/active_support/ruby/shim.rb +0 -22
  225. data/lib/active_support/secure_random.rb +0 -199
  226. data/lib/active_support/string_inquirer.rb +0 -21
  227. data/lib/active_support/test_case.rb +0 -42
  228. data/lib/active_support/testing/assertions.rb +0 -82
  229. data/lib/active_support/testing/declarative.rb +0 -40
  230. data/lib/active_support/testing/default.rb +0 -9
  231. data/lib/active_support/testing/deprecation.rb +0 -55
  232. data/lib/active_support/testing/isolation.rb +0 -154
  233. data/lib/active_support/testing/pending.rb +0 -48
  234. data/lib/active_support/testing/performance.rb +0 -455
  235. data/lib/active_support/testing/setup_and_teardown.rb +0 -111
  236. data/lib/active_support/time.rb +0 -34
  237. data/lib/active_support/time/autoload.rb +0 -5
  238. data/lib/active_support/time_with_zone.rb +0 -341
  239. data/lib/active_support/values/time_zone.rb +0 -377
  240. data/lib/active_support/values/unicode_tables.dat +0 -0
  241. data/lib/active_support/version.rb +0 -10
  242. data/lib/active_support/whiny_nil.rb +0 -60
  243. data/lib/active_support/xml_mini.rb +0 -158
  244. data/lib/active_support/xml_mini/jdom.rb +0 -168
  245. data/lib/active_support/xml_mini/libxml.rb +0 -80
  246. data/lib/active_support/xml_mini/libxmlsax.rb +0 -85
  247. data/lib/active_support/xml_mini/nokogiri.rb +0 -78
  248. data/lib/active_support/xml_mini/nokogirisax.rb +0 -83
  249. data/lib/active_support/xml_mini/rexml.rb +0 -129
  250. data/lib/csd/extensions/core/file.rb +0 -14
  251. data/lib/csd/global_open_struct.rb +0 -19
  252. data/lib/csd/path.rb +0 -32
  253. data/lib/csd/ui.rb +0 -2
  254. data/lib/csd/ui/cli.rb +0 -8
  255. data/lib/csd/ui/ui.rb +0 -45
  256. data/lib/term/ansicolor.rb +0 -102
  257. data/lib/term/ansicolor/.keep +0 -0
  258. data/lib/term/ansicolor/version.rb +0 -10
@@ -1,14 +0,0 @@
1
- class Module
2
- if instance_methods[0].is_a?(Symbol)
3
- def instance_method_names(*args)
4
- instance_methods(*args).map(&:to_s)
5
- end
6
-
7
- def method_names(*args)
8
- methods(*args).map(&:to_s)
9
- end
10
- else
11
- alias_method :instance_method_names, :instance_methods
12
- alias_method :method_names, :methods
13
- end
14
- end
@@ -1,10 +0,0 @@
1
- require 'active_support/core_ext/module/anonymous'
2
- require 'active_support/core_ext/string/inflections'
3
-
4
- class Module
5
- def reachable? #:nodoc:
6
- !anonymous? && name.constantize.equal?(self)
7
- rescue NameError
8
- false
9
- end
10
- end
@@ -1,6 +0,0 @@
1
- class Module
2
- def remove_possible_method(method)
3
- remove_method(method)
4
- rescue NameError
5
- end
6
- end
@@ -1,42 +0,0 @@
1
- require 'active_support/core_ext/module/aliasing'
2
- require 'active_support/core_ext/array/extract_options'
3
-
4
- class Module
5
- # Synchronize access around a method, delegating synchronization to a
6
- # particular mutex. A mutex (either a Mutex, or any object that responds to
7
- # #synchronize and yields to a block) must be provided as a final :with option.
8
- # The :with option should be a symbol or string, and can represent a method,
9
- # constant, or instance or class variable.
10
- # Example:
11
- # class SharedCache
12
- # @@lock = Mutex.new
13
- # def expire
14
- # ...
15
- # end
16
- # synchronize :expire, :with => :@@lock
17
- # end
18
- def synchronize(*methods)
19
- options = methods.extract_options!
20
- unless options.is_a?(Hash) && with = options[:with]
21
- raise ArgumentError, "Synchronization needs a mutex. Supply an options hash with a :with key as the last argument (e.g. synchronize :hello, :with => :@mutex)."
22
- end
23
-
24
- methods.each do |method|
25
- aliased_method, punctuation = method.to_s.sub(/([?!=])$/, ''), $1
26
-
27
- if method_defined?("#{aliased_method}_without_synchronization#{punctuation}")
28
- raise ArgumentError, "#{method} is already synchronized. Double synchronization is not currently supported."
29
- end
30
-
31
- module_eval(<<-EOS, __FILE__, __LINE__ + 1)
32
- def #{aliased_method}_with_synchronization#{punctuation}(*args, &block) # def expire_with_synchronization(*args, &block)
33
- #{with}.synchronize do # @@lock.synchronize do
34
- #{aliased_method}_without_synchronization#{punctuation}(*args, &block) # expire_without_synchronization(*args, &block)
35
- end # end
36
- end # end
37
- EOS
38
-
39
- alias_method_chain method, :synchronization
40
- end
41
- end
42
- end
@@ -1,18 +0,0 @@
1
- class NameError
2
- # Extract the name of the missing constant from the exception message.
3
- def missing_name
4
- if /undefined local variable or method/ !~ message
5
- $1 if /((::)?([A-Z]\w*)(::[A-Z]\w*)*)$/ =~ message
6
- end
7
- end
8
-
9
- # Was this exception raised because the given name was missing?
10
- def missing_name?(name)
11
- if name.is_a? Symbol
12
- last_name = (missing_name || '').split('::').last
13
- last_name == name.to_s
14
- else
15
- missing_name == name.to_s
16
- end
17
- end
18
- end
@@ -1,2 +0,0 @@
1
- require 'active_support/core_ext/numeric/bytes'
2
- require 'active_support/core_ext/numeric/time'
@@ -1,44 +0,0 @@
1
- class Numeric
2
- KILOBYTE = 1024
3
- MEGABYTE = KILOBYTE * 1024
4
- GIGABYTE = MEGABYTE * 1024
5
- TERABYTE = GIGABYTE * 1024
6
- PETABYTE = TERABYTE * 1024
7
- EXABYTE = PETABYTE * 1024
8
-
9
- # Enables the use of byte calculations and declarations, like 45.bytes + 2.6.megabytes
10
- def bytes
11
- self
12
- end
13
- alias :byte :bytes
14
-
15
- def kilobytes
16
- self * KILOBYTE
17
- end
18
- alias :kilobyte :kilobytes
19
-
20
- def megabytes
21
- self * MEGABYTE
22
- end
23
- alias :megabyte :megabytes
24
-
25
- def gigabytes
26
- self * GIGABYTE
27
- end
28
- alias :gigabyte :gigabytes
29
-
30
- def terabytes
31
- self * TERABYTE
32
- end
33
- alias :terabyte :terabytes
34
-
35
- def petabytes
36
- self * PETABYTE
37
- end
38
- alias :petabyte :petabytes
39
-
40
- def exabytes
41
- self * EXABYTE
42
- end
43
- alias :exabyte :exabytes
44
- end
@@ -1,77 +0,0 @@
1
- require 'active_support/duration'
2
-
3
- class Numeric
4
- # Enables the use of time calculations and declarations, like 45.minutes + 2.hours + 4.years.
5
- #
6
- # These methods use Time#advance for precise date calculations when using from_now, ago, etc.
7
- # as well as adding or subtracting their results from a Time object. For example:
8
- #
9
- # # equivalent to Time.now.advance(:months => 1)
10
- # 1.month.from_now
11
- #
12
- # # equivalent to Time.now.advance(:years => 2)
13
- # 2.years.from_now
14
- #
15
- # # equivalent to Time.now.advance(:months => 4, :years => 5)
16
- # (4.months + 5.years).from_now
17
- #
18
- # While these methods provide precise calculation when used as in the examples above, care
19
- # should be taken to note that this is not true if the result of `months', `years', etc is
20
- # converted before use:
21
- #
22
- # # equivalent to 30.days.to_i.from_now
23
- # 1.month.to_i.from_now
24
- #
25
- # # equivalent to 365.25.days.to_f.from_now
26
- # 1.year.to_f.from_now
27
- #
28
- # In such cases, Ruby's core
29
- # Date[http://stdlib.rubyonrails.org/libdoc/date/rdoc/index.html] and
30
- # Time[http://stdlib.rubyonrails.org/libdoc/time/rdoc/index.html] should be used for precision
31
- # date and time arithmetic
32
- def seconds
33
- ActiveSupport::Duration.new(self, [[:seconds, self]])
34
- end
35
- alias :second :seconds
36
-
37
- def minutes
38
- ActiveSupport::Duration.new(self * 60, [[:seconds, self * 60]])
39
- end
40
- alias :minute :minutes
41
-
42
- def hours
43
- ActiveSupport::Duration.new(self * 3600, [[:seconds, self * 3600]])
44
- end
45
- alias :hour :hours
46
-
47
- def days
48
- ActiveSupport::Duration.new(self * 24.hours, [[:days, self]])
49
- end
50
- alias :day :days
51
-
52
- def weeks
53
- ActiveSupport::Duration.new(self * 7.days, [[:days, self * 7]])
54
- end
55
- alias :week :weeks
56
-
57
- def fortnights
58
- ActiveSupport::Duration.new(self * 2.weeks, [[:days, self * 14]])
59
- end
60
- alias :fortnight :fortnights
61
-
62
- # Reads best without arguments: 10.minutes.ago
63
- def ago(time = ::Time.now)
64
- time - self
65
- end
66
-
67
- # Reads best with argument: 10.minutes.until(time)
68
- alias :until :ago
69
-
70
- # Reads best with argument: 10.minutes.since(time)
71
- def since(time = ::Time.now)
72
- time + self
73
- end
74
-
75
- # Reads best without arguments: 10.minutes.from_now
76
- alias :from_now :since
77
- end
@@ -1,14 +0,0 @@
1
- require 'active_support/core_ext/object/acts_like'
2
- require 'active_support/core_ext/object/blank'
3
- require 'active_support/core_ext/object/duplicable'
4
- require 'active_support/core_ext/object/try'
5
-
6
- require 'active_support/core_ext/object/conversions'
7
- require 'active_support/core_ext/object/instance_variables'
8
- require 'active_support/core_ext/object/misc'
9
- require 'active_support/core_ext/object/extending'
10
-
11
- require 'active_support/core_ext/object/returning'
12
- require 'active_support/core_ext/object/to_param'
13
- require 'active_support/core_ext/object/to_query'
14
- require 'active_support/core_ext/object/with_options'
@@ -1,10 +0,0 @@
1
- class Object
2
- # A duck-type assistant method. For example, Active Support extends Date
3
- # to define an acts_like_date? method, and extends Time to define
4
- # acts_like_time?. As a result, we can do "x.acts_like?(:time)" and
5
- # "x.acts_like?(:date)" to do duck-type-safe comparisons, since classes that
6
- # we want to act like Time simply need to define an acts_like_time? method.
7
- def acts_like?(duck)
8
- respond_to? :"acts_like_#{duck}?"
9
- end
10
- end
@@ -1,76 +0,0 @@
1
- class Object
2
- # An object is blank if it's false, empty, or a whitespace string.
3
- # For example, "", " ", +nil+, [], and {} are blank.
4
- #
5
- # This simplifies:
6
- #
7
- # if !address.nil? && !address.empty?
8
- #
9
- # ...to:
10
- #
11
- # if !address.blank?
12
- def blank?
13
- respond_to?(:empty?) ? empty? : !self
14
- end
15
-
16
- # An object is present if it's not blank.
17
- def present?
18
- !blank?
19
- end
20
-
21
- # Returns object if it's #present? otherwise returns nil.
22
- # object.presence is equivalent to object.present? ? object : nil.
23
- #
24
- # This is handy for any representation of objects where blank is the same
25
- # as not present at all. For example, this simplifies a common check for
26
- # HTTP POST/query parameters:
27
- #
28
- # state = params[:state] if params[:state].present?
29
- # country = params[:country] if params[:country].present?
30
- # region = state || country || 'US'
31
- #
32
- # ...becomes:
33
- #
34
- # region = params[:state].presence || params[:country].presence || 'US'
35
- def presence
36
- self if present?
37
- end
38
- end
39
-
40
- class NilClass #:nodoc:
41
- def blank?
42
- true
43
- end
44
- end
45
-
46
- class FalseClass #:nodoc:
47
- def blank?
48
- true
49
- end
50
- end
51
-
52
- class TrueClass #:nodoc:
53
- def blank?
54
- false
55
- end
56
- end
57
-
58
- class Array #:nodoc:
59
- alias_method :blank?, :empty?
60
- end
61
-
62
- class Hash #:nodoc:
63
- alias_method :blank?, :empty?
64
- end
65
-
66
- class String #:nodoc:
67
- def blank?
68
- self !~ /\S/
69
- end
70
- end
71
-
72
- class Numeric #:nodoc:
73
- def blank?
74
- false
75
- end
76
- end
@@ -1,4 +0,0 @@
1
- require 'active_support/core_ext/object/to_param'
2
- require 'active_support/core_ext/object/to_query'
3
- require 'active_support/core_ext/array/conversions'
4
- require 'active_support/core_ext/hash/conversions'
@@ -1,65 +0,0 @@
1
- # Most objects are cloneable, but not all. For example you can't dup +nil+:
2
- #
3
- # nil.dup # => TypeError: can't dup NilClass
4
- #
5
- # Classes may signal their instances are not duplicable removing +dup+/+clone+
6
- # or raising exceptions from them. So, to dup an arbitrary object you normally
7
- # use an optimistic approach and are ready to catch an exception, say:
8
- #
9
- # arbitrary_object.dup rescue object
10
- #
11
- # Rails dups objects in a few critical spots where they are not that arbitrary.
12
- # That rescue is very expensive (like 40 times slower than a predicate), and it
13
- # is often triggered.
14
- #
15
- # That's why we hardcode the following cases and check duplicable? instead of
16
- # using that rescue idiom.
17
- class Object
18
- # Can you safely .dup this object?
19
- # False for nil, false, true, symbols, numbers, class and module objects; true otherwise.
20
- def duplicable?
21
- true
22
- end
23
- end
24
-
25
- class NilClass #:nodoc:
26
- def duplicable?
27
- false
28
- end
29
- end
30
-
31
- class FalseClass #:nodoc:
32
- def duplicable?
33
- false
34
- end
35
- end
36
-
37
- class TrueClass #:nodoc:
38
- def duplicable?
39
- false
40
- end
41
- end
42
-
43
- class Symbol #:nodoc:
44
- def duplicable?
45
- false
46
- end
47
- end
48
-
49
- class Numeric #:nodoc:
50
- def duplicable?
51
- false
52
- end
53
- end
54
-
55
- class Class #:nodoc:
56
- def duplicable?
57
- false
58
- end
59
- end
60
-
61
- class Module #:nodoc:
62
- def duplicable?
63
- false
64
- end
65
- end
@@ -1,11 +0,0 @@
1
- require 'active_support/core_ext/class/subclasses'
2
-
3
- class Object
4
- # Exclude this class unless it's a subclass of our supers and is defined.
5
- # We check defined? in case we find a removed class that has yet to be
6
- # garbage collected. This also fails for anonymous classes -- please
7
- # submit a patch if you have a workaround.
8
- def subclasses_of(*superclasses) #:nodoc:
9
- Class.subclasses_of(*superclasses)
10
- end
11
- end
@@ -1,67 +0,0 @@
1
- class Object
2
- # Returns a hash that maps instance variable names without "@" to their
3
- # corresponding values. Keys are strings both in Ruby 1.8 and 1.9.
4
- #
5
- # class C
6
- # def initialize(x, y)
7
- # @x, @y = x, y
8
- # end
9
- # end
10
- #
11
- # C.new(0, 1).instance_values # => {"x" => 0, "y" => 1}
12
- def instance_values #:nodoc:
13
- instance_variables.inject({}) do |values, name|
14
- values[name.to_s[1..-1]] = instance_variable_get(name)
15
- values
16
- end
17
- end
18
-
19
- # Returns an array of instance variable names including "@". They are strings
20
- # both in Ruby 1.8 and 1.9.
21
- #
22
- # class C
23
- # def initialize(x, y)
24
- # @x, @y = x, y
25
- # end
26
- # end
27
- #
28
- # C.new(0, 1).instance_variable_names # => ["@y", "@x"]
29
- if RUBY_VERSION >= '1.9'
30
- def instance_variable_names
31
- instance_variables.map { |var| var.to_s }
32
- end
33
- else
34
- alias_method :instance_variable_names, :instance_variables
35
- end
36
-
37
- # Copies the instance variables of +object+ into +self+.
38
- #
39
- # Instance variable names in the +exclude+ array are ignored. If +object+
40
- # responds to <tt>protected_instance_variables</tt> the ones returned are
41
- # also ignored. For example, Rails controllers implement that method.
42
- #
43
- # In both cases strings and symbols are understood, and they have to include
44
- # the at sign.
45
- #
46
- # class C
47
- # def initialize(x, y, z)
48
- # @x, @y, @z = x, y, z
49
- # end
50
- #
51
- # def protected_instance_variables
52
- # %w(@z)
53
- # end
54
- # end
55
- #
56
- # a = C.new(0, 1, 2)
57
- # b = C.new(3, 4, 5)
58
- #
59
- # a.copy_instance_variables_from(b, [:@y])
60
- # # a is now: @x = 3, @y = 1, @z = 2
61
- def copy_instance_variables_from(object, exclude = []) #:nodoc:
62
- exclude += object.protected_instance_variables if object.respond_to? :protected_instance_variables
63
-
64
- vars = object.instance_variables.map(&:to_s) - exclude.map(&:to_s)
65
- vars.each { |name| instance_variable_set(name, object.instance_variable_get(name)) }
66
- end
67
- end