activesupport 2.3.5 → 3.0.0.beta3

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 (391) hide show
  1. data/CHANGELOG +66 -9
  2. data/lib/active_support/all.rb +2 -7
  3. data/lib/active_support/backtrace_cleaner.rb +31 -9
  4. data/lib/active_support/base64.rb +9 -0
  5. data/lib/active_support/basic_object.rb +7 -10
  6. data/lib/active_support/benchmarkable.rb +60 -0
  7. data/lib/active_support/buffered_logger.rb +14 -9
  8. data/lib/active_support/cache/compressed_mem_cache_store.rb +2 -0
  9. data/lib/active_support/cache/file_store.rb +35 -17
  10. data/lib/active_support/cache/mem_cache_store.rb +32 -23
  11. data/lib/active_support/cache/memory_store.rb +17 -10
  12. data/lib/active_support/cache/strategy/local_cache.rb +9 -1
  13. data/lib/active_support/cache.rb +75 -55
  14. data/lib/active_support/callbacks.rb +490 -169
  15. data/lib/active_support/concern.rb +29 -0
  16. data/lib/active_support/configurable.rb +35 -0
  17. data/lib/active_support/core_ext/array/access.rb +39 -46
  18. data/lib/active_support/core_ext/array/conversions.rb +145 -182
  19. data/lib/active_support/core_ext/array/extract_options.rb +26 -17
  20. data/lib/active_support/core_ext/array/grouping.rb +87 -93
  21. data/lib/active_support/core_ext/array/random_access.rb +4 -10
  22. data/lib/active_support/core_ext/array/uniq_by.rb +17 -0
  23. data/lib/active_support/core_ext/array/wrap.rb +22 -0
  24. data/lib/active_support/core_ext/array.rb +2 -10
  25. data/lib/active_support/core_ext/big_decimal/conversions.rb +27 -0
  26. data/lib/active_support/core_ext/big_decimal.rb +1 -0
  27. data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +16 -20
  28. data/lib/active_support/core_ext/cgi.rb +0 -4
  29. data/lib/active_support/core_ext/class/attribute.rb +70 -0
  30. data/lib/active_support/core_ext/class/attribute_accessors.rb +40 -31
  31. data/lib/active_support/core_ext/class/delegating_attributes.rb +37 -40
  32. data/lib/active_support/core_ext/class/inheritable_attributes.rb +100 -11
  33. data/lib/active_support/core_ext/class/subclasses.rb +55 -0
  34. data/lib/active_support/core_ext/class.rb +1 -1
  35. data/lib/active_support/core_ext/date/acts_like.rb +8 -0
  36. data/lib/active_support/core_ext/date/calculations.rb +218 -228
  37. data/lib/active_support/core_ext/date/conversions.rb +87 -96
  38. data/lib/active_support/core_ext/date/freeze.rb +31 -0
  39. data/lib/active_support/core_ext/date_time/acts_like.rb +13 -0
  40. data/lib/active_support/core_ext/date_time/calculations.rb +97 -110
  41. data/lib/active_support/core_ext/date_time/conversions.rb +85 -85
  42. data/lib/active_support/core_ext/date_time/zones.rb +17 -0
  43. data/lib/active_support/core_ext/enumerable.rb +18 -13
  44. data/lib/active_support/core_ext/exception.rb +1 -43
  45. data/lib/active_support/core_ext/file/atomic.rb +35 -40
  46. data/lib/active_support/core_ext/file/path.rb +5 -0
  47. data/lib/active_support/core_ext/file.rb +0 -4
  48. data/lib/active_support/core_ext/float/rounding.rb +15 -20
  49. data/lib/active_support/core_ext/float.rb +0 -6
  50. data/lib/active_support/core_ext/hash/conversions.rb +255 -229
  51. data/lib/active_support/core_ext/hash/deep_merge.rb +12 -19
  52. data/lib/active_support/core_ext/hash/diff.rb +11 -17
  53. data/lib/active_support/core_ext/hash/except.rb +21 -22
  54. data/lib/active_support/core_ext/hash/indifferent_access.rb +8 -137
  55. data/lib/active_support/core_ext/hash/keys.rb +38 -45
  56. data/lib/active_support/core_ext/hash/reverse_merge.rb +25 -32
  57. data/lib/active_support/core_ext/hash/slice.rb +35 -37
  58. data/lib/active_support/core_ext/hash.rb +8 -14
  59. data/lib/active_support/core_ext/integer/inflections.rb +10 -16
  60. data/lib/active_support/core_ext/integer/multiple.rb +6 -0
  61. data/lib/active_support/core_ext/integer/time.rb +36 -42
  62. data/lib/active_support/core_ext/integer.rb +1 -7
  63. data/lib/active_support/core_ext/kernel/debugger.rb +1 -1
  64. data/lib/active_support/core_ext/kernel/reporting.rb +9 -7
  65. data/lib/active_support/core_ext/kernel/requires.rb +3 -1
  66. data/lib/active_support/core_ext/kernel/singleton_class.rb +13 -0
  67. data/lib/active_support/core_ext/kernel.rb +1 -1
  68. data/lib/active_support/core_ext/load_error.rb +16 -32
  69. data/lib/active_support/core_ext/logger.rb +3 -2
  70. data/lib/active_support/core_ext/module/aliasing.rb +64 -68
  71. data/lib/active_support/core_ext/module/anonymous.rb +24 -0
  72. data/lib/active_support/core_ext/module/attr_accessor_with_default.rb +1 -1
  73. data/lib/active_support/core_ext/module/attr_internal.rb +4 -4
  74. data/lib/active_support/core_ext/module/attribute_accessors.rb +48 -42
  75. data/lib/active_support/core_ext/module/delegation.rb +22 -11
  76. data/lib/active_support/core_ext/module/deprecation.rb +9 -0
  77. data/lib/active_support/core_ext/module/introspection.rb +77 -79
  78. data/lib/active_support/core_ext/module/method_names.rb +14 -0
  79. data/lib/active_support/core_ext/module/reachable.rb +10 -0
  80. data/lib/active_support/core_ext/module/remove_method.rb +6 -0
  81. data/lib/active_support/core_ext/module/synchronization.rb +4 -1
  82. data/lib/active_support/core_ext/module.rb +7 -18
  83. data/lib/active_support/core_ext/name_error.rb +3 -4
  84. data/lib/active_support/core_ext/numeric/bytes.rb +35 -41
  85. data/lib/active_support/core_ext/numeric/time.rb +70 -74
  86. data/lib/active_support/core_ext/numeric.rb +1 -8
  87. data/lib/active_support/core_ext/object/acts_like.rb +10 -0
  88. data/lib/active_support/core_ext/object/blank.rb +20 -2
  89. data/lib/active_support/core_ext/object/conversions.rb +4 -15
  90. data/lib/active_support/core_ext/object/duplicable.rb +65 -0
  91. data/lib/active_support/core_ext/object/extending.rb +8 -77
  92. data/lib/active_support/core_ext/object/instance_variables.rb +0 -7
  93. data/lib/active_support/core_ext/object/misc.rb +2 -90
  94. data/lib/active_support/core_ext/object/returning.rb +42 -0
  95. data/lib/active_support/core_ext/object/to_param.rb +49 -0
  96. data/lib/active_support/core_ext/object/to_query.rb +27 -0
  97. data/lib/active_support/core_ext/{try.rb → object/try.rb} +4 -4
  98. data/lib/active_support/core_ext/object/with_options.rb +24 -0
  99. data/lib/active_support/core_ext/object.rb +10 -2
  100. data/lib/active_support/core_ext/proc.rb +3 -1
  101. data/lib/active_support/core_ext/process/daemon.rb +17 -19
  102. data/lib/active_support/core_ext/range/blockless_step.rb +24 -27
  103. data/lib/active_support/core_ext/range/conversions.rb +17 -23
  104. data/lib/active_support/core_ext/range/include_range.rb +18 -27
  105. data/lib/active_support/core_ext/range/overlaps.rb +6 -13
  106. data/lib/active_support/core_ext/range.rb +2 -9
  107. data/lib/active_support/core_ext/regexp.rb +5 -0
  108. data/lib/active_support/core_ext/rexml.rb +12 -7
  109. data/lib/active_support/core_ext/string/access.rb +88 -95
  110. data/lib/active_support/core_ext/string/behavior.rb +6 -12
  111. data/lib/active_support/core_ext/string/conversions.rb +20 -21
  112. data/lib/active_support/core_ext/string/exclude.rb +6 -0
  113. data/lib/active_support/core_ext/string/filters.rb +17 -23
  114. data/lib/active_support/core_ext/string/inflections.rb +147 -154
  115. data/lib/active_support/core_ext/string/interpolation.rb +1 -0
  116. data/lib/active_support/core_ext/string/multibyte.rb +68 -74
  117. data/lib/active_support/core_ext/string/output_safety.rb +105 -44
  118. data/lib/active_support/core_ext/string/starts_ends_with.rb +3 -34
  119. data/lib/active_support/core_ext/string/xchar.rb +10 -3
  120. data/lib/active_support/core_ext/string.rb +6 -20
  121. data/lib/active_support/core_ext/time/acts_like.rb +8 -0
  122. data/lib/active_support/core_ext/time/calculations.rb +276 -299
  123. data/lib/active_support/core_ext/time/conversions.rb +79 -84
  124. data/lib/active_support/core_ext/time/marshal.rb +56 -0
  125. data/lib/active_support/core_ext/time/publicize_conversion_methods.rb +10 -0
  126. data/lib/active_support/core_ext/time/zones.rb +73 -81
  127. data/lib/active_support/core_ext/uri.rb +2 -1
  128. data/lib/active_support/core_ext.rb +2 -7
  129. data/lib/active_support/dependencies/autoload.rb +50 -0
  130. data/lib/active_support/dependencies.rb +168 -197
  131. data/lib/active_support/deprecation/behaviors.rb +38 -0
  132. data/lib/active_support/deprecation/method_wrappers.rb +29 -0
  133. data/lib/active_support/deprecation/proxy_wrappers.rb +74 -0
  134. data/lib/active_support/deprecation/reporting.rb +56 -0
  135. data/lib/active_support/deprecation.rb +9 -187
  136. data/lib/active_support/duration.rb +6 -2
  137. data/lib/active_support/hash_with_indifferent_access.rb +141 -0
  138. data/lib/active_support/i18n.rb +3 -0
  139. data/lib/active_support/inflections.rb +1 -1
  140. data/lib/active_support/inflector/inflections.rb +211 -0
  141. data/lib/active_support/inflector/methods.rb +141 -0
  142. data/lib/active_support/inflector/transliterate.rb +77 -0
  143. data/lib/active_support/inflector.rb +4 -403
  144. data/lib/active_support/json/backends/jsongem.rb +16 -10
  145. data/lib/active_support/json/backends/yajl.rb +40 -0
  146. data/lib/active_support/json/backends/yaml.rb +14 -8
  147. data/lib/active_support/json/decoding.rb +17 -1
  148. data/lib/active_support/json/encoding.rb +164 -35
  149. data/lib/active_support/json/variable.rb +4 -3
  150. data/lib/active_support/lazy_load_hooks.rb +17 -0
  151. data/lib/active_support/memoizable.rb +8 -5
  152. data/lib/active_support/message_encryptor.rb +1 -0
  153. data/lib/active_support/message_verifier.rb +12 -29
  154. data/lib/active_support/multibyte/chars.rb +88 -31
  155. data/lib/active_support/multibyte/unicode_database.rb +5 -5
  156. data/lib/active_support/multibyte/utils.rb +6 -7
  157. data/lib/active_support/multibyte.rb +11 -6
  158. data/lib/active_support/notifications/fanout.rb +83 -0
  159. data/lib/active_support/notifications/instrumenter.rb +50 -0
  160. data/lib/active_support/notifications.rb +81 -0
  161. data/lib/active_support/option_merger.rb +2 -0
  162. data/lib/active_support/ordered_hash.rb +28 -11
  163. data/lib/active_support/ordered_options.rb +9 -1
  164. data/lib/active_support/railtie.rb +64 -0
  165. data/lib/active_support/rescuable.rb +11 -6
  166. data/lib/active_support/ruby/shim.rb +21 -0
  167. data/lib/active_support/test_case.rb +10 -8
  168. data/lib/active_support/testing/assertions.rb +17 -0
  169. data/lib/active_support/testing/declarative.rb +31 -12
  170. data/lib/active_support/testing/deprecation.rb +8 -10
  171. data/lib/active_support/testing/isolation.rb +153 -0
  172. data/lib/active_support/testing/pending.rb +48 -0
  173. data/lib/active_support/testing/performance.rb +342 -339
  174. data/lib/active_support/testing/setup_and_teardown.rb +48 -31
  175. data/lib/active_support/time/autoload.rb +5 -0
  176. data/lib/active_support/time.rb +34 -0
  177. data/lib/active_support/time_with_zone.rb +18 -12
  178. data/lib/active_support/values/time_zone.rb +51 -68
  179. data/lib/active_support/version.rb +5 -4
  180. data/lib/active_support/whiny_nil.rb +5 -9
  181. data/lib/active_support/xml_mini/jdom.rb +13 -7
  182. data/lib/active_support/xml_mini/libxml.rb +38 -91
  183. data/lib/active_support/xml_mini/libxmlsax.rb +85 -0
  184. data/lib/active_support/xml_mini/nokogiri.rb +40 -31
  185. data/lib/active_support/xml_mini/nokogirisax.rb +83 -0
  186. data/lib/active_support/xml_mini/rexml.rb +30 -9
  187. data/lib/active_support/xml_mini.rb +2 -0
  188. data/lib/active_support.rb +46 -30
  189. metadata +136 -215
  190. data/lib/active_support/cache/drb_store.rb +0 -14
  191. data/lib/active_support/core_ext/array/wrapper.rb +0 -24
  192. data/lib/active_support/core_ext/base64/encoding.rb +0 -16
  193. data/lib/active_support/core_ext/base64.rb +0 -4
  194. data/lib/active_support/core_ext/bigdecimal/conversions.rb +0 -37
  195. data/lib/active_support/core_ext/bigdecimal.rb +0 -6
  196. data/lib/active_support/core_ext/blank.rb +0 -2
  197. data/lib/active_support/core_ext/class/removal.rb +0 -50
  198. data/lib/active_support/core_ext/date/behavior.rb +0 -42
  199. data/lib/active_support/core_ext/date.rb +0 -10
  200. data/lib/active_support/core_ext/date_time.rb +0 -12
  201. data/lib/active_support/core_ext/duplicable.rb +0 -43
  202. data/lib/active_support/core_ext/float/time.rb +0 -27
  203. data/lib/active_support/core_ext/integer/even_odd.rb +0 -29
  204. data/lib/active_support/core_ext/kernel/daemonizing.rb +0 -7
  205. data/lib/active_support/core_ext/module/inclusion.rb +0 -30
  206. data/lib/active_support/core_ext/module/loading.rb +0 -23
  207. data/lib/active_support/core_ext/module/model_naming.rb +0 -25
  208. data/lib/active_support/core_ext/numeric/conversions.rb +0 -19
  209. data/lib/active_support/core_ext/object/metaclass.rb +0 -13
  210. data/lib/active_support/core_ext/pathname/clean_within.rb +0 -14
  211. data/lib/active_support/core_ext/pathname.rb +0 -7
  212. data/lib/active_support/core_ext/string/bytesize.rb +0 -5
  213. data/lib/active_support/core_ext/string/iterators.rb +0 -23
  214. data/lib/active_support/core_ext/symbol.rb +0 -14
  215. data/lib/active_support/core_ext/time/behavior.rb +0 -13
  216. data/lib/active_support/core_ext/time.rb +0 -42
  217. data/lib/active_support/json/encoders/date.rb +0 -22
  218. data/lib/active_support/json/encoders/date_time.rb +0 -22
  219. data/lib/active_support/json/encoders/enumerable.rb +0 -17
  220. data/lib/active_support/json/encoders/false_class.rb +0 -7
  221. data/lib/active_support/json/encoders/hash.rb +0 -56
  222. data/lib/active_support/json/encoders/nil_class.rb +0 -7
  223. data/lib/active_support/json/encoders/numeric.rb +0 -21
  224. data/lib/active_support/json/encoders/object.rb +0 -10
  225. data/lib/active_support/json/encoders/regexp.rb +0 -9
  226. data/lib/active_support/json/encoders/string.rb +0 -9
  227. data/lib/active_support/json/encoders/symbol.rb +0 -5
  228. data/lib/active_support/json/encoders/time.rb +0 -22
  229. data/lib/active_support/json/encoders/true_class.rb +0 -7
  230. data/lib/active_support/vendor/builder-2.1.2/blankslate.rb +0 -113
  231. data/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +0 -20
  232. data/lib/active_support/vendor/builder-2.1.2/builder/css.rb +0 -250
  233. data/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +0 -115
  234. data/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +0 -139
  235. data/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +0 -63
  236. data/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +0 -328
  237. data/lib/active_support/vendor/builder-2.1.2/builder.rb +0 -13
  238. data/lib/active_support/vendor/i18n-0.1.3/MIT-LICENSE +0 -20
  239. data/lib/active_support/vendor/i18n-0.1.3/README.textile +0 -20
  240. data/lib/active_support/vendor/i18n-0.1.3/Rakefile +0 -5
  241. data/lib/active_support/vendor/i18n-0.1.3/i18n.gemspec +0 -27
  242. data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/backend/simple.rb +0 -214
  243. data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/exceptions.rb +0 -53
  244. data/lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb +0 -199
  245. data/lib/active_support/vendor/i18n-0.1.3/test/all.rb +0 -5
  246. data/lib/active_support/vendor/i18n-0.1.3/test/i18n_exceptions_test.rb +0 -99
  247. data/lib/active_support/vendor/i18n-0.1.3/test/i18n_test.rb +0 -124
  248. data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.rb +0 -1
  249. data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.yml +0 -3
  250. data/lib/active_support/vendor/i18n-0.1.3/test/simple_backend_test.rb +0 -567
  251. data/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb +0 -1107
  252. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb +0 -47
  253. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb +0 -228
  254. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb +0 -55
  255. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb +0 -219
  256. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb +0 -40
  257. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb +0 -18
  258. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb +0 -25
  259. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb +0 -22
  260. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb +0 -23
  261. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +0 -166
  262. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb +0 -86
  263. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb +0 -23
  264. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb +0 -23
  265. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb +0 -283
  266. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb +0 -136
  267. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb +0 -204
  268. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb +0 -161
  269. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb +0 -27
  270. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb +0 -274
  271. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb +0 -149
  272. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb +0 -194
  273. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb +0 -22
  274. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb +0 -35
  275. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb +0 -232
  276. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb +0 -139
  277. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb +0 -144
  278. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb +0 -131
  279. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb +0 -282
  280. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb +0 -30
  281. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb +0 -74
  282. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb +0 -205
  283. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb +0 -171
  284. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb +0 -288
  285. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb +0 -196
  286. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb +0 -67
  287. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb +0 -73
  288. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb +0 -161
  289. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb +0 -20
  290. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb +0 -33
  291. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb +0 -30
  292. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb +0 -27
  293. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb +0 -87
  294. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb +0 -165
  295. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb +0 -30
  296. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb +0 -163
  297. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb +0 -20
  298. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb +0 -163
  299. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb +0 -30
  300. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb +0 -20
  301. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb +0 -25
  302. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb +0 -163
  303. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb +0 -31
  304. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb +0 -18
  305. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb +0 -163
  306. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb +0 -18
  307. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb +0 -164
  308. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb +0 -24
  309. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb +0 -18
  310. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb +0 -34
  311. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb +0 -35
  312. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb +0 -33
  313. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb +0 -59
  314. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb +0 -47
  315. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb +0 -78
  316. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb +0 -121
  317. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb +0 -30
  318. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb +0 -65
  319. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb +0 -33
  320. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb +0 -164
  321. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb +0 -163
  322. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb +0 -165
  323. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb +0 -165
  324. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb +0 -270
  325. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb +0 -23
  326. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb +0 -18
  327. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb +0 -187
  328. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb +0 -35
  329. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb +0 -29
  330. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb +0 -193
  331. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb +0 -185
  332. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb +0 -37
  333. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb +0 -185
  334. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb +0 -16
  335. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb +0 -228
  336. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb +0 -185
  337. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb +0 -163
  338. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb +0 -188
  339. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb +0 -13
  340. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb +0 -232
  341. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb +0 -181
  342. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb +0 -197
  343. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb +0 -179
  344. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb +0 -276
  345. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb +0 -163
  346. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb +0 -218
  347. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb +0 -168
  348. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb +0 -268
  349. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb +0 -13
  350. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb +0 -288
  351. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb +0 -211
  352. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb +0 -170
  353. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb +0 -181
  354. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb +0 -232
  355. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb +0 -187
  356. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb +0 -176
  357. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb +0 -215
  358. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb +0 -13
  359. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb +0 -13
  360. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb +0 -173
  361. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb +0 -165
  362. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb +0 -172
  363. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb +0 -183
  364. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb +0 -170
  365. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb +0 -212
  366. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb +0 -13
  367. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb +0 -202
  368. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb +0 -23
  369. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb +0 -22
  370. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb +0 -28
  371. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb +0 -20
  372. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb +0 -25
  373. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb +0 -25
  374. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb +0 -26
  375. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb +0 -20
  376. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb +0 -27
  377. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb +0 -52
  378. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb +0 -51
  379. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb +0 -44
  380. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb +0 -98
  381. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb +0 -56
  382. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb +0 -292
  383. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb +0 -508
  384. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb +0 -56
  385. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb +0 -40
  386. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb +0 -94
  387. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb +0 -198
  388. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb +0 -129
  389. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +0 -33
  390. data/lib/active_support/vendor.rb +0 -28
  391. data/lib/activesupport.rb +0 -2
@@ -1,50 +0,0 @@
1
- class Class #:nodoc:
2
-
3
- # Unassociates the class with its subclasses and removes the subclasses
4
- # themselves.
5
- #
6
- # Integer.remove_subclasses # => [Bignum, Fixnum]
7
- # Fixnum # => NameError: uninitialized constant Fixnum
8
- def remove_subclasses
9
- Object.remove_subclasses_of(self)
10
- end
11
-
12
- # Returns an array with the names of the subclasses of +self+ as strings.
13
- #
14
- # Integer.subclasses # => ["Bignum", "Fixnum"]
15
- def subclasses
16
- Object.subclasses_of(self).map { |o| o.to_s }
17
- end
18
-
19
- # Removes the classes in +klasses+ from their parent module.
20
- #
21
- # Ordinary classes belong to some module via a constant. This method computes
22
- # that constant name from the class name and removes it from the module it
23
- # belongs to.
24
- #
25
- # Object.remove_class(Integer) # => [Integer]
26
- # Integer # => NameError: uninitialized constant Integer
27
- #
28
- # Take into account that in general the class object could be still stored
29
- # somewhere else.
30
- #
31
- # i = Integer # => Integer
32
- # Object.remove_class(Integer) # => [Integer]
33
- # Integer # => NameError: uninitialized constant Integer
34
- # i.subclasses # => ["Bignum", "Fixnum"]
35
- # Fixnum.superclass # => Integer
36
- def remove_class(*klasses)
37
- klasses.flatten.each do |klass|
38
- # Skip this class if there is nothing bound to this name
39
- next unless defined?(klass.name)
40
-
41
- basename = klass.to_s.split("::").last
42
- parent = klass.parent
43
-
44
- # Skip this class if it does not match the current one bound to this name
45
- next unless parent.const_defined?(basename) && klass = parent.const_get(basename)
46
-
47
- parent.instance_eval { remove_const basename } unless parent == klass
48
- end
49
- end
50
- end
@@ -1,42 +0,0 @@
1
- require 'date'
2
-
3
- module ActiveSupport #:nodoc:
4
- module CoreExtensions #:nodoc:
5
- module Date #:nodoc:
6
- module Behavior
7
- # Enable more predictable duck-typing on Date-like classes. See
8
- # Object#acts_like?.
9
- def acts_like_date?
10
- true
11
- end
12
-
13
- # Date memoizes some instance methods using metaprogramming to wrap
14
- # the methods with one that caches the result in an instance variable.
15
- #
16
- # If a Date is frozen but the memoized method hasn't been called, the
17
- # first call will result in a frozen object error since the memo
18
- # instance variable is uninitialized.
19
- #
20
- # Work around by eagerly memoizing before freezing.
21
- #
22
- # Ruby 1.9 uses a preinitialized instance variable so it's unaffected.
23
- # This hack is as close as we can get to feature detection:
24
- begin
25
- ::Date.today.freeze.jd
26
- rescue => frozen_object_error
27
- if frozen_object_error.message =~ /frozen/
28
- def freeze #:nodoc:
29
- self.class.private_instance_methods(false).each do |m|
30
- if m.to_s =~ /\A__\d+__\Z/
31
- instance_variable_set(:"@#{m}", [send(m)])
32
- end
33
- end
34
-
35
- super
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,10 +0,0 @@
1
- require 'date'
2
- require 'active_support/core_ext/date/behavior'
3
- require 'active_support/core_ext/date/calculations'
4
- require 'active_support/core_ext/date/conversions'
5
-
6
- class Date#:nodoc:
7
- include ActiveSupport::CoreExtensions::Date::Behavior
8
- include ActiveSupport::CoreExtensions::Date::Calculations
9
- include ActiveSupport::CoreExtensions::Date::Conversions
10
- end
@@ -1,12 +0,0 @@
1
- require 'date'
2
- require 'active_support/core_ext/time/behavior'
3
- require 'active_support/core_ext/time/zones'
4
- require 'active_support/core_ext/date_time/calculations'
5
- require 'active_support/core_ext/date_time/conversions'
6
-
7
- class DateTime
8
- include ActiveSupport::CoreExtensions::Time::Behavior
9
- include ActiveSupport::CoreExtensions::Time::Zones
10
- include ActiveSupport::CoreExtensions::DateTime::Calculations
11
- include ActiveSupport::CoreExtensions::DateTime::Conversions
12
- end
@@ -1,43 +0,0 @@
1
- class Object
2
- # Can you safely .dup this object?
3
- # False for nil, false, true, symbols, and numbers; true otherwise.
4
- def duplicable?
5
- true
6
- end
7
- end
8
-
9
- class NilClass #:nodoc:
10
- def duplicable?
11
- false
12
- end
13
- end
14
-
15
- class FalseClass #:nodoc:
16
- def duplicable?
17
- false
18
- end
19
- end
20
-
21
- class TrueClass #:nodoc:
22
- def duplicable?
23
- false
24
- end
25
- end
26
-
27
- class Symbol #:nodoc:
28
- def duplicable?
29
- false
30
- end
31
- end
32
-
33
- class Numeric #:nodoc:
34
- def duplicable?
35
- false
36
- end
37
- end
38
-
39
- class Class #:nodoc:
40
- def duplicable?
41
- false
42
- end
43
- end
@@ -1,27 +0,0 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Float #:nodoc:
4
- module Time
5
- # Deprication helper methods not available as core_ext is loaded first.
6
- def years
7
- ::ActiveSupport::Deprecation.warn(self.class.deprecated_method_warning(:years, "Fractional years are not respected. Convert value to integer before calling #years."), caller)
8
- years_without_deprecation
9
- end
10
- def months
11
- ::ActiveSupport::Deprecation.warn(self.class.deprecated_method_warning(:months, "Fractional months are not respected. Convert value to integer before calling #months."), caller)
12
- months_without_deprecation
13
- end
14
-
15
- def months_without_deprecation
16
- ActiveSupport::Duration.new(self * 30.days, [[:months, self]])
17
- end
18
- alias :month :months
19
-
20
- def years_without_deprecation
21
- ActiveSupport::Duration.new(self * 365.25.days, [[:years, self]])
22
- end
23
- alias :year :years
24
- end
25
- end
26
- end
27
- end
@@ -1,29 +0,0 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Integer #:nodoc:
4
- # For checking if a fixnum is even or odd.
5
- #
6
- # 2.even? # => true
7
- # 2.odd? # => false
8
- # 1.even? # => false
9
- # 1.odd? # => true
10
- # 0.even? # => true
11
- # 0.odd? # => false
12
- # -1.even? # => false
13
- # -1.odd? # => true
14
- module EvenOdd
15
- def multiple_of?(number)
16
- self % number == 0
17
- end
18
-
19
- def even?
20
- multiple_of? 2
21
- end if RUBY_VERSION < '1.9'
22
-
23
- def odd?
24
- !even?
25
- end if RUBY_VERSION < '1.9'
26
- end
27
- end
28
- end
29
- end
@@ -1,7 +0,0 @@
1
- module Kernel
2
- # Turns the current script into a daemon process that detaches from the console.
3
- # It can be shut down with a TERM signal.
4
- def daemonize
5
- Process.daemon
6
- end
7
- end
@@ -1,30 +0,0 @@
1
- class Module
2
- # Returns the classes in the current ObjectSpace where this module has been
3
- # mixed in according to Module#included_modules.
4
- #
5
- # module M
6
- # end
7
- #
8
- # module N
9
- # include M
10
- # end
11
- #
12
- # class C
13
- # include M
14
- # end
15
- #
16
- # class D < C
17
- # end
18
- #
19
- # p M.included_in_classes # => [C, D]
20
- #
21
- def included_in_classes
22
- classes = []
23
- ObjectSpace.each_object(Class) { |k| classes << k if k.included_modules.include?(self) }
24
-
25
- classes.reverse.inject([]) do |unique_classes, klass|
26
- unique_classes << klass unless unique_classes.collect { |k| k.to_s }.include?(klass.to_s)
27
- unique_classes
28
- end
29
- end
30
- end
@@ -1,23 +0,0 @@
1
- class Module
2
- # Returns String#underscore applied to the module name minus trailing classes.
3
- #
4
- # ActiveRecord.as_load_path # => "active_record"
5
- # ActiveRecord::Associations.as_load_path # => "active_record/associations"
6
- # ActiveRecord::Base.as_load_path # => "active_record" (Base is a class)
7
- #
8
- # The Kernel module gives an empty string by definition.
9
- #
10
- # Kernel.as_load_path # => ""
11
- # Math.as_load_path # => "math"
12
- def as_load_path
13
- if self == Object || self == Kernel
14
- ''
15
- elsif is_a? Class
16
- parent == self ? '' : parent.as_load_path
17
- else
18
- name.split('::').collect do |word|
19
- word.underscore
20
- end * '/'
21
- end
22
- end
23
- end
@@ -1,25 +0,0 @@
1
- module ActiveSupport
2
- class ModelName < String
3
- attr_reader :singular, :plural, :element, :collection, :partial_path
4
- alias_method :cache_key, :collection
5
-
6
- def initialize(name)
7
- super
8
- @singular = ActiveSupport::Inflector.underscore(self).tr('/', '_').freeze
9
- @plural = ActiveSupport::Inflector.pluralize(@singular).freeze
10
- @element = ActiveSupport::Inflector.underscore(ActiveSupport::Inflector.demodulize(self)).freeze
11
- @collection = ActiveSupport::Inflector.tableize(self).freeze
12
- @partial_path = "#{@collection}/#{@element}".freeze
13
- end
14
- end
15
-
16
- module CoreExtensions
17
- module Module
18
- # Returns an ActiveSupport::ModelName object for module. It can be
19
- # used to retrieve all kinds of naming-related information.
20
- def model_name
21
- @model_name ||= ::ActiveSupport::ModelName.new(name)
22
- end
23
- end
24
- end
25
- end
@@ -1,19 +0,0 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Numeric #:nodoc:
4
- module Conversions
5
- # Assumes self represents an offset from UTC in seconds (as returned from Time#utc_offset)
6
- # and turns this into an +HH:MM formatted string. Example:
7
- #
8
- # -21_600.to_utc_offset_s # => "-06:00"
9
- def to_utc_offset_s(colon=true)
10
- seconds = self
11
- sign = (seconds < 0 ? -1 : 1)
12
- hours = seconds.abs / 3600
13
- minutes = (seconds.abs % 3600) / 60
14
- "%+03d%s%02d" % [ hours * sign, colon ? ":" : "", minutes ]
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,13 +0,0 @@
1
- class Object
2
- # Get object's meta (ghost, eigenclass, singleton) class
3
- def metaclass
4
- class << self
5
- self
6
- end
7
- end
8
-
9
- # If class_eval is called on an object, add those methods to its metaclass
10
- def class_eval(*args, &block)
11
- metaclass.class_eval(*args, &block)
12
- end
13
- end
@@ -1,14 +0,0 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Pathname #:nodoc:
4
- module CleanWithin
5
- # Clean the paths contained in the provided string.
6
- def clean_within(string)
7
- string.gsub(%r{[\w. ]+(/[\w. ]+)+(\.rb)?(\b|$)}) do |path|
8
- new(path).cleanpath
9
- end
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -1,7 +0,0 @@
1
- require 'pathname'
2
- require 'active_support/core_ext/pathname/clean_within'
3
-
4
- class Pathname#:nodoc:
5
- extend ActiveSupport::CoreExtensions::Pathname::CleanWithin
6
- end
7
-
@@ -1,5 +0,0 @@
1
- unless '1.9'.respond_to?(:bytesize)
2
- class String
3
- alias :bytesize :size
4
- end
5
- end
@@ -1,23 +0,0 @@
1
- require 'strscan'
2
-
3
- module ActiveSupport #:nodoc:
4
- module CoreExtensions #:nodoc:
5
- module String #:nodoc:
6
- # Custom string iterators
7
- module Iterators
8
- def self.append_features(base)
9
- super unless '1.9'.respond_to?(:each_char)
10
- end
11
-
12
- # Yields a single-character string for each character in the string.
13
- # When $KCODE = 'UTF8', multi-byte characters are yielded appropriately.
14
- def each_char
15
- scanner, char = StringScanner.new(self), /./mu
16
- while c = scanner.scan(char)
17
- yield c
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,14 +0,0 @@
1
- unless :to_proc.respond_to?(:to_proc)
2
- class Symbol
3
- # Turns the symbol into a simple proc, which is especially useful for enumerations. Examples:
4
- #
5
- # # The same as people.collect { |p| p.name }
6
- # people.collect(&:name)
7
- #
8
- # # The same as people.select { |p| p.manager? }.collect { |p| p.salary }
9
- # people.select(&:manager?).collect(&:salary)
10
- def to_proc
11
- Proc.new { |*args| args.shift.__send__(self, *args) }
12
- end
13
- end
14
- end
@@ -1,13 +0,0 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Time #:nodoc:
4
- module Behavior
5
- # Enable more predictable duck-typing on Time-like classes. See
6
- # Object#acts_like?.
7
- def acts_like_time?
8
- true
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,42 +0,0 @@
1
- require 'date'
2
- require 'time'
3
-
4
- class Time
5
- # Ruby 1.8-cvs and 1.9 define private Time#to_date
6
- %w(to_date to_datetime).each do |method|
7
- public method if private_instance_methods.include?(method)
8
- end
9
-
10
- # Pre-1.9 versions of Ruby have a bug with marshaling Time instances, where utc instances are
11
- # unmarshaled in the local zone, instead of utc. We're layering behavior on the _dump and _load
12
- # methods so that utc instances can be flagged on dump, and coerced back to utc on load.
13
- if RUBY_VERSION < '1.9'
14
- class << self
15
- alias_method :_original_load, :_load
16
- def _load(marshaled_time)
17
- time = _original_load(marshaled_time)
18
- utc = time.instance_variable_get('@marshal_with_utc_coercion')
19
- utc ? time.utc : time
20
- end
21
- end
22
-
23
- alias_method :_original_dump, :_dump
24
- def _dump(*args)
25
- obj = self.frozen? ? self.dup : self
26
- obj.instance_variable_set('@marshal_with_utc_coercion', utc?)
27
- obj._original_dump(*args)
28
- end
29
- end
30
- end
31
-
32
- require 'active_support/core_ext/time/behavior'
33
- require 'active_support/core_ext/time/calculations'
34
- require 'active_support/core_ext/time/conversions'
35
- require 'active_support/core_ext/time/zones'
36
-
37
- class Time#:nodoc:
38
- include ActiveSupport::CoreExtensions::Time::Behavior
39
- include ActiveSupport::CoreExtensions::Time::Calculations
40
- include ActiveSupport::CoreExtensions::Time::Conversions
41
- include ActiveSupport::CoreExtensions::Time::Zones
42
- end
@@ -1,22 +0,0 @@
1
- class Date
2
- # Coerces the date to a string for JSON encoding.
3
- #
4
- # ISO 8601 format is used if ActiveSupport::JSON::Encoding.use_standard_json_time_format is set.
5
- #
6
- # ==== Examples
7
- #
8
- # # With ActiveSupport::JSON::Encoding.use_standard_json_time_format = true
9
- # Date.new(2005,2,1).to_json
10
- # # => "2005-02-01"
11
- #
12
- # # With ActiveSupport::JSON::Encoding.use_standard_json_time_format = false
13
- # Date.new(2005,2,1).to_json
14
- # # => "2005/02/01"
15
- def as_json(options = nil)
16
- if ActiveSupport::JSON::Encoding.use_standard_json_time_format
17
- strftime("%Y-%m-%d")
18
- else
19
- strftime("%Y/%m/%d")
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- class DateTime
2
- # Coerces the datetime to a string for JSON encoding.
3
- #
4
- # ISO 8601 format is used if ActiveSupport::JSON::Encoding.use_standard_json_time_format is set.
5
- #
6
- # ==== Examples
7
- #
8
- # # With ActiveSupport::JSON::Encoding.use_standard_json_time_format = true
9
- # DateTime.civil(2005,2,1,15,15,10).to_json
10
- # # => "2005-02-01T15:15:10+00:00"
11
- #
12
- # # With ActiveSupport::JSON::Encoding.use_standard_json_time_format = false
13
- # DateTime.civil(2005,2,1,15,15,10).to_json
14
- # # => "2005/02/01 15:15:10 +0000"
15
- def as_json(options = nil)
16
- if ActiveSupport::JSON::Encoding.use_standard_json_time_format
17
- xmlschema
18
- else
19
- strftime('%Y/%m/%d %H:%M:%S %z')
20
- end
21
- end
22
- end
@@ -1,17 +0,0 @@
1
- module Enumerable
2
- # Coerces the enumerable to an array for JSON encoding.
3
- def as_json(options = nil) #:nodoc:
4
- to_a
5
- end
6
- end
7
-
8
- class Array
9
- # Returns a JSON string representing the Array. +options+ are passed to each element.
10
- def to_json(options = nil) #:nodoc:
11
- "[#{map { |value| ActiveSupport::JSON.encode(value, options) } * ','}]"
12
- end
13
-
14
- def as_json(options = nil) #:nodoc:
15
- self
16
- end
17
- end
@@ -1,7 +0,0 @@
1
- class FalseClass
2
- AS_JSON = ActiveSupport::JSON::Variable.new('false').freeze
3
-
4
- def as_json(options = nil) #:nodoc:
5
- AS_JSON
6
- end
7
- end
@@ -1,56 +0,0 @@
1
- require 'active_support/core_ext/array/wrapper'
2
-
3
- class Hash
4
- # Returns a JSON string representing the hash.
5
- #
6
- # Without any +options+, the returned JSON string will include all
7
- # the hash keys. For example:
8
- #
9
- # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json
10
- # # => {"name": "Konata Izumi", "1": 2, "age": 16}
11
- #
12
- # The keys in the JSON string are unordered due to the nature of hashes.
13
- #
14
- # The <tt>:only</tt> and <tt>:except</tt> options can be used to limit the
15
- # attributes included, and will accept 1 or more hash keys to include/exclude.
16
- #
17
- # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json(:only => [:name, 'age'])
18
- # # => {"name": "Konata Izumi", "age": 16}
19
- #
20
- # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json(:except => 1)
21
- # # => {"name": "Konata Izumi", "age": 16}
22
- #
23
- # The +options+ also filter down to any hash values. This is particularly
24
- # useful for converting hashes containing ActiveRecord objects or any object
25
- # that responds to options in their <tt>to_json</tt> method. For example:
26
- #
27
- # users = User.find(:all)
28
- # { :users => users, :count => users.size }.to_json(:include => :posts)
29
- #
30
- # would pass the <tt>:include => :posts</tt> option to <tt>users</tt>,
31
- # allowing the posts association in the User model to be converted to JSON
32
- # as well.
33
- def to_json(options = nil) #:nodoc:
34
- hash = as_json(options)
35
-
36
- result = '{'
37
- result << hash.map do |key, value|
38
- "#{ActiveSupport::JSON.encode(key.to_s)}:#{ActiveSupport::JSON.encode(value, options)}"
39
- end * ','
40
- result << '}'
41
- end
42
-
43
- def as_json(options = nil) #:nodoc:
44
- if options
45
- if attrs = options[:except]
46
- except(*Array.wrap(attrs))
47
- elsif attrs = options[:only]
48
- slice(*Array.wrap(attrs))
49
- else
50
- self
51
- end
52
- else
53
- self
54
- end
55
- end
56
- end
@@ -1,7 +0,0 @@
1
- class NilClass
2
- AS_JSON = ActiveSupport::JSON::Variable.new('null').freeze
3
-
4
- def as_json(options = nil) #:nodoc:
5
- AS_JSON
6
- end
7
- end
@@ -1,21 +0,0 @@
1
- class Numeric
2
- def to_json(options = nil) #:nodoc:
3
- to_s
4
- end
5
-
6
- def as_json(options = nil) #:nodoc:
7
- self
8
- end
9
- end
10
-
11
- class Float
12
- def to_json(options = nil) #:nodoc:
13
- to_s
14
- end
15
- end
16
-
17
- class Integer
18
- def to_json(options = nil) #:nodoc:
19
- to_s
20
- end
21
- end
@@ -1,10 +0,0 @@
1
- class Object
2
- # Dumps object in JSON (JavaScript Object Notation). See www.json.org for more info.
3
- def to_json(options = nil)
4
- ActiveSupport::JSON.encode(as_json(options))
5
- end
6
-
7
- def as_json(options = nil)
8
- instance_values
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- class Regexp
2
- def to_json(options = nil) #:nodoc:
3
- inspect
4
- end
5
-
6
- def as_json(options = nil) #:nodoc:
7
- self
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- class String
2
- def to_json(options = nil) #:nodoc:
3
- ActiveSupport::JSON::Encoding.escape(self)
4
- end
5
-
6
- def as_json(options = nil) #:nodoc:
7
- self
8
- end
9
- end
@@ -1,5 +0,0 @@
1
- class Symbol
2
- def as_json(options = nil) #:nodoc:
3
- to_s
4
- end
5
- end