activesupport 2.3.18 → 3.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activesupport might be problematic. Click here for more details.

Files changed (403) hide show
  1. data/CHANGELOG +30 -53
  2. data/lib/active_support.rb +43 -31
  3. data/lib/active_support/all.rb +3 -7
  4. data/lib/active_support/backtrace_cleaner.rb +24 -8
  5. data/lib/active_support/base64.rb +9 -0
  6. data/lib/active_support/benchmarkable.rb +60 -0
  7. data/lib/active_support/buffered_logger.rb +12 -9
  8. data/lib/active_support/cache.rb +75 -55
  9. data/lib/active_support/cache/compressed_mem_cache_store.rb +2 -0
  10. data/lib/active_support/cache/file_store.rb +35 -17
  11. data/lib/active_support/cache/mem_cache_store.rb +29 -20
  12. data/lib/active_support/cache/memory_store.rb +18 -17
  13. data/lib/active_support/cache/strategy/local_cache.rb +9 -1
  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.rb +2 -7
  18. data/lib/active_support/core_ext/array.rb +2 -10
  19. data/lib/active_support/core_ext/array/access.rb +39 -46
  20. data/lib/active_support/core_ext/array/conversions.rb +146 -182
  21. data/lib/active_support/core_ext/array/extract_options.rb +12 -18
  22. data/lib/active_support/core_ext/array/grouping.rb +87 -93
  23. data/lib/active_support/core_ext/array/random_access.rb +4 -40
  24. data/lib/active_support/core_ext/array/uniq_by.rb +17 -0
  25. data/lib/active_support/core_ext/array/wrap.rb +22 -0
  26. data/lib/active_support/core_ext/big_decimal.rb +1 -0
  27. data/lib/active_support/core_ext/big_decimal/conversions.rb +27 -0
  28. data/lib/active_support/core_ext/cgi.rb +0 -4
  29. data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +16 -20
  30. data/lib/active_support/core_ext/class.rb +0 -2
  31. data/lib/active_support/core_ext/class/attribute.rb +8 -39
  32. data/lib/active_support/core_ext/class/attribute_accessors.rb +31 -35
  33. data/lib/active_support/core_ext/class/delegating_attributes.rb +34 -40
  34. data/lib/active_support/core_ext/class/inheritable_attributes.rb +100 -16
  35. data/lib/active_support/core_ext/date/acts_like.rb +8 -0
  36. data/lib/active_support/core_ext/date/calculations.rb +218 -238
  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 +83 -95
  42. data/lib/active_support/core_ext/date_time/zones.rb +17 -0
  43. data/lib/active_support/core_ext/enumerable.rb +14 -15
  44. data/lib/active_support/core_ext/exception.rb +1 -43
  45. data/lib/active_support/core_ext/file.rb +0 -4
  46. data/lib/active_support/core_ext/file/atomic.rb +34 -41
  47. data/lib/active_support/core_ext/float.rb +0 -6
  48. data/lib/active_support/core_ext/float/rounding.rb +15 -20
  49. data/lib/active_support/core_ext/hash.rb +8 -14
  50. data/lib/active_support/core_ext/hash/conversions.rb +236 -236
  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/integer.rb +1 -7
  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/kernel/reporting.rb +9 -7
  63. data/lib/active_support/core_ext/kernel/requires.rb +3 -1
  64. data/lib/active_support/core_ext/load_error.rb +16 -33
  65. data/lib/active_support/core_ext/logger.rb +3 -2
  66. data/lib/active_support/core_ext/module.rb +3 -16
  67. data/lib/active_support/core_ext/module/aliasing.rb +64 -68
  68. data/lib/active_support/core_ext/module/attr_accessor_with_default.rb +1 -1
  69. data/lib/active_support/core_ext/module/attr_internal.rb +4 -4
  70. data/lib/active_support/core_ext/module/attribute_accessors.rb +36 -41
  71. data/lib/active_support/core_ext/module/delegation.rb +1 -1
  72. data/lib/active_support/core_ext/module/deprecation.rb +9 -0
  73. data/lib/active_support/core_ext/module/introspection.rb +77 -79
  74. data/lib/active_support/core_ext/module/loading.rb +2 -0
  75. data/lib/active_support/core_ext/module/synchronization.rb +4 -1
  76. data/lib/active_support/core_ext/name_error.rb +3 -4
  77. data/lib/active_support/core_ext/numeric.rb +1 -8
  78. data/lib/active_support/core_ext/numeric/bytes.rb +35 -41
  79. data/lib/active_support/core_ext/numeric/time.rb +70 -74
  80. data/lib/active_support/core_ext/object.rb +4 -2
  81. data/lib/active_support/core_ext/object/acts_like.rb +10 -0
  82. data/lib/active_support/core_ext/object/conversions.rb +4 -15
  83. data/lib/active_support/core_ext/object/duplicable.rb +65 -0
  84. data/lib/active_support/core_ext/object/instance_variables.rb +0 -7
  85. data/lib/active_support/core_ext/object/metaclass.rb +5 -6
  86. data/lib/active_support/core_ext/object/misc.rb +2 -93
  87. data/lib/active_support/core_ext/object/returning.rb +42 -0
  88. data/lib/active_support/core_ext/object/to_param.rb +49 -0
  89. data/lib/active_support/core_ext/object/to_query.rb +27 -0
  90. data/lib/active_support/core_ext/{try.rb → object/try.rb} +4 -4
  91. data/lib/active_support/core_ext/object/with_options.rb +24 -0
  92. data/lib/active_support/core_ext/proc.rb +6 -4
  93. data/lib/active_support/core_ext/process/daemon.rb +17 -19
  94. data/lib/active_support/core_ext/range.rb +2 -9
  95. data/lib/active_support/core_ext/range/blockless_step.rb +24 -27
  96. data/lib/active_support/core_ext/range/conversions.rb +17 -23
  97. data/lib/active_support/core_ext/range/include_range.rb +18 -27
  98. data/lib/active_support/core_ext/range/overlaps.rb +6 -13
  99. data/lib/active_support/core_ext/regexp.rb +5 -0
  100. data/lib/active_support/core_ext/rexml.rb +12 -7
  101. data/lib/active_support/core_ext/string.rb +6 -19
  102. data/lib/active_support/core_ext/string/access.rb +88 -95
  103. data/lib/active_support/core_ext/string/behavior.rb +6 -12
  104. data/lib/active_support/core_ext/string/conversions.rb +19 -21
  105. data/lib/active_support/core_ext/string/exclude.rb +6 -0
  106. data/lib/active_support/core_ext/string/filters.rb +17 -23
  107. data/lib/active_support/core_ext/string/inflections.rb +146 -153
  108. data/lib/active_support/{vendor/i18n-0.4.1/i18n/core_ext/string/interpolate.rb → core_ext/string/interpolation.rb} +8 -15
  109. data/lib/active_support/core_ext/string/multibyte.rb +68 -74
  110. data/lib/active_support/core_ext/string/output_safety.rb +21 -17
  111. data/lib/active_support/core_ext/string/starts_ends_with.rb +3 -32
  112. data/lib/active_support/core_ext/string/xchar.rb +10 -3
  113. data/lib/active_support/core_ext/time/acts_like.rb +8 -0
  114. data/lib/active_support/core_ext/time/calculations.rb +276 -308
  115. data/lib/active_support/core_ext/time/conversions.rb +78 -84
  116. data/lib/active_support/core_ext/time/marshal_with_utc_flag.rb +22 -0
  117. data/lib/active_support/core_ext/time/publicize_conversion_methods.rb +10 -0
  118. data/lib/active_support/core_ext/time/zones.rb +73 -81
  119. data/lib/active_support/core_ext/uri.rb +2 -1
  120. data/lib/active_support/dependencies.rb +38 -48
  121. data/lib/active_support/dependencies/autoload.rb +49 -0
  122. data/lib/active_support/deprecation.rb +9 -195
  123. data/lib/active_support/deprecation/behaviors.rb +38 -0
  124. data/lib/active_support/deprecation/method_wrappers.rb +29 -0
  125. data/lib/active_support/deprecation/proxy_wrappers.rb +74 -0
  126. data/lib/active_support/deprecation/reporting.rb +55 -0
  127. data/lib/active_support/duration.rb +6 -2
  128. data/lib/active_support/hash_with_indifferent_access.rb +137 -0
  129. data/lib/active_support/i18n.rb +2 -0
  130. data/lib/active_support/inflections.rb +1 -1
  131. data/lib/active_support/inflector.rb +4 -406
  132. data/lib/active_support/inflector/inflections.rb +211 -0
  133. data/lib/active_support/inflector/methods.rb +139 -0
  134. data/lib/active_support/inflector/transliterate.rb +61 -0
  135. data/lib/active_support/json/backends/jsongem.rb +16 -10
  136. data/lib/active_support/json/backends/yaml.rb +72 -2
  137. data/lib/active_support/json/decoding.rb +2 -16
  138. data/lib/active_support/json/encoding.rb +153 -33
  139. data/lib/active_support/json/variable.rb +4 -3
  140. data/lib/active_support/locale/en.yml +1 -4
  141. data/lib/active_support/memoizable.rb +7 -6
  142. data/lib/active_support/message_encryptor.rb +1 -0
  143. data/lib/active_support/message_verifier.rb +12 -29
  144. data/lib/active_support/multibyte.rb +9 -4
  145. data/lib/active_support/multibyte/chars.rb +25 -17
  146. data/lib/active_support/multibyte/unicode_database.rb +5 -5
  147. data/lib/active_support/multibyte/utils.rb +1 -1
  148. data/lib/active_support/notifications.rb +77 -0
  149. data/lib/active_support/notifications/fanout.rb +69 -0
  150. data/lib/active_support/notifications/instrumenter.rb +50 -0
  151. data/lib/active_support/option_merger.rb +2 -0
  152. data/lib/active_support/ordered_hash.rb +33 -37
  153. data/lib/active_support/ordered_options.rb +3 -1
  154. data/lib/active_support/railtie.rb +64 -0
  155. data/lib/active_support/rescuable.rb +11 -6
  156. data/lib/active_support/ruby/shim.rb +19 -0
  157. data/lib/active_support/test_case.rb +8 -1
  158. data/lib/active_support/testing/assertions.rb +2 -14
  159. data/lib/active_support/testing/declarative.rb +31 -12
  160. data/lib/active_support/testing/deprecation.rb +8 -10
  161. data/lib/active_support/testing/isolation.rb +153 -0
  162. data/lib/active_support/testing/pending.rb +48 -0
  163. data/lib/active_support/testing/performance.rb +342 -339
  164. data/lib/active_support/testing/setup_and_teardown.rb +48 -31
  165. data/lib/active_support/time.rb +34 -0
  166. data/lib/active_support/time/autoload.rb +5 -0
  167. data/lib/active_support/time_with_zone.rb +18 -12
  168. data/lib/active_support/values/time_zone.rb +97 -93
  169. data/lib/active_support/version.rb +3 -3
  170. data/lib/active_support/whiny_nil.rb +1 -4
  171. data/lib/active_support/xml_mini.rb +2 -0
  172. data/lib/active_support/xml_mini/jdom.rb +13 -7
  173. data/lib/active_support/xml_mini/libxml.rb +19 -12
  174. data/lib/active_support/xml_mini/libxmlsax.rb +19 -9
  175. data/lib/active_support/xml_mini/nokogiri.rb +18 -12
  176. data/lib/active_support/xml_mini/nokogirisax.rb +15 -6
  177. data/lib/active_support/xml_mini/rexml.rb +24 -9
  178. metadata +94 -244
  179. data/lib/active_support/cache/drb_store.rb +0 -14
  180. data/lib/active_support/core_ext/array/wrapper.rb +0 -24
  181. data/lib/active_support/core_ext/base64.rb +0 -4
  182. data/lib/active_support/core_ext/base64/encoding.rb +0 -16
  183. data/lib/active_support/core_ext/bigdecimal.rb +0 -6
  184. data/lib/active_support/core_ext/bigdecimal/conversions.rb +0 -37
  185. data/lib/active_support/core_ext/blank.rb +0 -2
  186. data/lib/active_support/core_ext/class/removal.rb +0 -50
  187. data/lib/active_support/core_ext/date.rb +0 -10
  188. data/lib/active_support/core_ext/date/behavior.rb +0 -42
  189. data/lib/active_support/core_ext/date_time.rb +0 -12
  190. data/lib/active_support/core_ext/duplicable.rb +0 -43
  191. data/lib/active_support/core_ext/float/time.rb +0 -27
  192. data/lib/active_support/core_ext/integer/even_odd.rb +0 -29
  193. data/lib/active_support/core_ext/kernel/singleton_class.rb +0 -13
  194. data/lib/active_support/core_ext/module/model_naming.rb +0 -25
  195. data/lib/active_support/core_ext/module/remove_method.rb +0 -6
  196. data/lib/active_support/core_ext/numeric/conversions.rb +0 -19
  197. data/lib/active_support/core_ext/object/extending.rb +0 -80
  198. data/lib/active_support/core_ext/object/singleton_class.rb +0 -13
  199. data/lib/active_support/core_ext/pathname.rb +0 -7
  200. data/lib/active_support/core_ext/pathname/clean_within.rb +0 -14
  201. data/lib/active_support/core_ext/string/bytesize.rb +0 -5
  202. data/lib/active_support/core_ext/string/iterators.rb +0 -23
  203. data/lib/active_support/core_ext/symbol.rb +0 -14
  204. data/lib/active_support/core_ext/time.rb +0 -46
  205. data/lib/active_support/core_ext/time/behavior.rb +0 -13
  206. data/lib/active_support/json/backends/okjson.rb +0 -644
  207. data/lib/active_support/json/backends/yajl.rb +0 -40
  208. data/lib/active_support/json/encoders/date.rb +0 -22
  209. data/lib/active_support/json/encoders/date_time.rb +0 -22
  210. data/lib/active_support/json/encoders/enumerable.rb +0 -17
  211. data/lib/active_support/json/encoders/false_class.rb +0 -7
  212. data/lib/active_support/json/encoders/hash.rb +0 -56
  213. data/lib/active_support/json/encoders/nil_class.rb +0 -7
  214. data/lib/active_support/json/encoders/numeric.rb +0 -21
  215. data/lib/active_support/json/encoders/object.rb +0 -10
  216. data/lib/active_support/json/encoders/regexp.rb +0 -9
  217. data/lib/active_support/json/encoders/string.rb +0 -9
  218. data/lib/active_support/json/encoders/symbol.rb +0 -5
  219. data/lib/active_support/json/encoders/time.rb +0 -22
  220. data/lib/active_support/json/encoders/true_class.rb +0 -7
  221. data/lib/active_support/vendor.rb +0 -36
  222. data/lib/active_support/vendor/builder-2.1.2/blankslate.rb +0 -113
  223. data/lib/active_support/vendor/builder-2.1.2/builder.rb +0 -13
  224. data/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +0 -20
  225. data/lib/active_support/vendor/builder-2.1.2/builder/css.rb +0 -250
  226. data/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +0 -115
  227. data/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +0 -139
  228. data/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +0 -63
  229. data/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +0 -328
  230. data/lib/active_support/vendor/i18n-0.4.1/i18n.rb +0 -322
  231. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend.rb +0 -20
  232. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record.rb +0 -61
  233. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/missing.rb +0 -65
  234. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/store_procs.rb +0 -38
  235. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/active_record/translation.rb +0 -93
  236. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/base.rb +0 -237
  237. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cache.rb +0 -77
  238. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cascade.rb +0 -57
  239. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/chain.rb +0 -77
  240. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/cldr.rb +0 -100
  241. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/fallbacks.rb +0 -69
  242. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/flatten.rb +0 -113
  243. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/gettext.rb +0 -75
  244. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/interpolation_compiler.rb +0 -123
  245. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/key_value.rb +0 -102
  246. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/memoize.rb +0 -48
  247. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/metadata.rb +0 -65
  248. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/pluralization.rb +0 -57
  249. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/simple.rb +0 -87
  250. data/lib/active_support/vendor/i18n-0.4.1/i18n/backend/transliterator.rb +0 -98
  251. data/lib/active_support/vendor/i18n-0.4.1/i18n/config.rb +0 -84
  252. data/lib/active_support/vendor/i18n-0.4.1/i18n/core_ext/hash.rb +0 -29
  253. data/lib/active_support/vendor/i18n-0.4.1/i18n/exceptions.rb +0 -61
  254. data/lib/active_support/vendor/i18n-0.4.1/i18n/gettext.rb +0 -27
  255. data/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/helpers.rb +0 -65
  256. data/lib/active_support/vendor/i18n-0.4.1/i18n/gettext/po_parser.rb +0 -329
  257. data/lib/active_support/vendor/i18n-0.4.1/i18n/locale.rb +0 -6
  258. data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/fallbacks.rb +0 -98
  259. data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag.rb +0 -28
  260. data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/parents.rb +0 -24
  261. data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/rfc4646.rb +0 -76
  262. data/lib/active_support/vendor/i18n-0.4.1/i18n/locale/tag/simple.rb +0 -41
  263. data/lib/active_support/vendor/i18n-0.4.1/i18n/version.rb +0 -3
  264. data/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb +0 -1107
  265. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo.rb +0 -33
  266. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone.rb +0 -47
  267. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/data_timezone_info.rb +0 -228
  268. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Algiers.rb +0 -55
  269. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Cairo.rb +0 -219
  270. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Casablanca.rb +0 -40
  271. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Harare.rb +0 -18
  272. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Johannesburg.rb +0 -25
  273. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Monrovia.rb +0 -22
  274. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Africa/Nairobi.rb +0 -23
  275. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +0 -166
  276. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/San_Juan.rb +0 -86
  277. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Bogota.rb +0 -23
  278. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Caracas.rb +0 -23
  279. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chicago.rb +0 -283
  280. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Chihuahua.rb +0 -136
  281. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Denver.rb +0 -204
  282. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Godthab.rb +0 -161
  283. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Guatemala.rb +0 -27
  284. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Halifax.rb +0 -274
  285. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Indiana/Indianapolis.rb +0 -149
  286. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Juneau.rb +0 -194
  287. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/La_Paz.rb +0 -22
  288. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Lima.rb +0 -35
  289. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Los_Angeles.rb +0 -232
  290. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mazatlan.rb +0 -139
  291. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Mexico_City.rb +0 -144
  292. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Monterrey.rb +0 -131
  293. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/New_York.rb +0 -282
  294. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Phoenix.rb +0 -30
  295. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Regina.rb +0 -74
  296. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Santiago.rb +0 -205
  297. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Sao_Paulo.rb +0 -171
  298. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/St_Johns.rb +0 -288
  299. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Tijuana.rb +0 -196
  300. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Almaty.rb +0 -67
  301. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baghdad.rb +0 -73
  302. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Baku.rb +0 -161
  303. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Bangkok.rb +0 -20
  304. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Chongqing.rb +0 -33
  305. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Colombo.rb +0 -30
  306. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Dhaka.rb +0 -27
  307. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Hong_Kong.rb +0 -87
  308. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Irkutsk.rb +0 -165
  309. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jakarta.rb +0 -30
  310. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Jerusalem.rb +0 -163
  311. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kabul.rb +0 -20
  312. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kamchatka.rb +0 -163
  313. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Karachi.rb +0 -30
  314. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Katmandu.rb +0 -20
  315. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kolkata.rb +0 -25
  316. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Krasnoyarsk.rb +0 -163
  317. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuala_Lumpur.rb +0 -31
  318. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Kuwait.rb +0 -18
  319. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Magadan.rb +0 -163
  320. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Muscat.rb +0 -18
  321. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Novosibirsk.rb +0 -164
  322. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Rangoon.rb +0 -24
  323. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Riyadh.rb +0 -18
  324. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Seoul.rb +0 -34
  325. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Shanghai.rb +0 -35
  326. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Singapore.rb +0 -33
  327. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Taipei.rb +0 -59
  328. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tashkent.rb +0 -47
  329. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tbilisi.rb +0 -78
  330. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tehran.rb +0 -121
  331. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Tokyo.rb +0 -30
  332. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Ulaanbaatar.rb +0 -65
  333. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Urumqi.rb +0 -33
  334. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Vladivostok.rb +0 -164
  335. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yakutsk.rb +0 -163
  336. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yekaterinburg.rb +0 -165
  337. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Asia/Yerevan.rb +0 -165
  338. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Azores.rb +0 -270
  339. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/Cape_Verde.rb +0 -23
  340. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Atlantic/South_Georgia.rb +0 -18
  341. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Adelaide.rb +0 -187
  342. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Brisbane.rb +0 -35
  343. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Darwin.rb +0 -29
  344. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Hobart.rb +0 -193
  345. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Melbourne.rb +0 -185
  346. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Perth.rb +0 -37
  347. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Australia/Sydney.rb +0 -185
  348. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Etc/UTC.rb +0 -16
  349. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Amsterdam.rb +0 -228
  350. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Athens.rb +0 -185
  351. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Belgrade.rb +0 -163
  352. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Berlin.rb +0 -188
  353. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bratislava.rb +0 -13
  354. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Brussels.rb +0 -232
  355. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Bucharest.rb +0 -181
  356. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Budapest.rb +0 -197
  357. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Copenhagen.rb +0 -179
  358. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Dublin.rb +0 -276
  359. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Helsinki.rb +0 -163
  360. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Istanbul.rb +0 -218
  361. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Kiev.rb +0 -168
  362. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Lisbon.rb +0 -268
  363. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Ljubljana.rb +0 -13
  364. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/London.rb +0 -288
  365. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Madrid.rb +0 -211
  366. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Minsk.rb +0 -170
  367. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Moscow.rb +0 -181
  368. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Paris.rb +0 -232
  369. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Prague.rb +0 -187
  370. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Riga.rb +0 -176
  371. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Rome.rb +0 -215
  372. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sarajevo.rb +0 -13
  373. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Skopje.rb +0 -13
  374. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb +0 -173
  375. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Stockholm.rb +0 -165
  376. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Tallinn.rb +0 -172
  377. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vienna.rb +0 -183
  378. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Vilnius.rb +0 -170
  379. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Warsaw.rb +0 -212
  380. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Zagreb.rb +0 -13
  381. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Auckland.rb +0 -202
  382. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Fiji.rb +0 -23
  383. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Guam.rb +0 -22
  384. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Honolulu.rb +0 -28
  385. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Majuro.rb +0 -20
  386. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Midway.rb +0 -25
  387. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Noumea.rb +0 -25
  388. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Pago_Pago.rb +0 -26
  389. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Port_Moresby.rb +0 -20
  390. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Pacific/Tongatapu.rb +0 -27
  391. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/info_timezone.rb +0 -52
  392. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone.rb +0 -51
  393. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/linked_timezone_info.rb +0 -44
  394. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/offset_rationals.rb +0 -98
  395. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/ruby_core_support.rb +0 -56
  396. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/time_or_datetime.rb +0 -292
  397. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone.rb +0 -508
  398. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_definition.rb +0 -56
  399. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_info.rb +0 -40
  400. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_offset_info.rb +0 -94
  401. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_period.rb +0 -198
  402. data/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/timezone_transition_info.rb +0 -129
  403. data/lib/activesupport.rb +0 -2
@@ -1,13 +1,7 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module String #:nodoc:
4
- module Behavior
5
- # Enable more predictable duck-typing on String-like classes. See
6
- # Object#acts_like?.
7
- def acts_like_string?
8
- true
9
- end
10
- end
11
- end
1
+ class String
2
+ # Enable more predictable duck-typing on String-like classes. See
3
+ # Object#acts_like?.
4
+ def acts_like_string?
5
+ true
12
6
  end
13
- end
7
+ end
@@ -1,28 +1,26 @@
1
1
  require 'date'
2
+ require 'active_support/core_ext/time/calculations'
2
3
 
3
- module ActiveSupport #:nodoc:
4
- module CoreExtensions #:nodoc:
5
- module String #:nodoc:
6
- # Converting strings to other objects
7
- module Conversions
8
- # 'a'.ord == 'a'[0] for Ruby 1.9 forward compatibility.
9
- def ord
10
- self[0]
11
- end if RUBY_VERSION < '1.9'
4
+ class String
5
+ # 'a'.ord == 'a'[0] for Ruby 1.9 forward compatibility.
6
+ def ord
7
+ self[0]
8
+ end unless method_defined?(:ord)
12
9
 
13
- # Form can be either :utc (default) or :local.
14
- def to_time(form = :utc)
15
- ::Time.send("#{form}_time", *::Date._parse(self, false).values_at(:year, :mon, :mday, :hour, :min, :sec).map { |arg| arg || 0 })
16
- end
10
+ # Form can be either :utc (default) or :local.
11
+ def to_time(form = :utc)
12
+ d = ::Date._parse(self, false).values_at(:year, :mon, :mday, :hour, :min, :sec, :sec_fraction).map { |arg| arg || 0 }
13
+ d[6] *= 1000000
14
+ ::Time.send("#{form}_time", *d)
15
+ end
17
16
 
18
- def to_date
19
- ::Date.new(*::Date._parse(self, false).values_at(:year, :mon, :mday))
20
- end
17
+ def to_date
18
+ ::Date.new(*::Date._parse(self, false).values_at(:year, :mon, :mday))
19
+ end
21
20
 
22
- def to_datetime
23
- ::DateTime.civil(*::Date._parse(self, false).values_at(:year, :mon, :mday, :hour, :min, :sec).map { |arg| arg || 0 })
24
- end
25
- end
26
- end
21
+ def to_datetime
22
+ d = ::Date._parse(self, false).values_at(:year, :mon, :mday, :hour, :min, :sec, :zone, :sec_fraction).map { |arg| arg || 0 }
23
+ d[5] += d.pop
24
+ ::DateTime.civil(*d)
27
25
  end
28
26
  end
@@ -0,0 +1,6 @@
1
+ class String
2
+ # The inverse of String#include?. Returns true if the string does not include the other string.
3
+ def exclude?(string)
4
+ !include?(string)
5
+ end
6
+ end
@@ -1,26 +1,20 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module String #:nodoc:
4
- module Filters
5
- # Returns the string, first removing all whitespace on both ends of
6
- # the string, and then changing remaining consecutive whitespace
7
- # groups into one space each.
8
- #
9
- # Examples:
10
- # %{ Multi-line
11
- # string }.squish # => "Multi-line string"
12
- # " foo bar \n \t boo".squish # => "foo bar boo"
13
- def squish
14
- dup.squish!
15
- end
1
+ class String
2
+ # Returns the string, first removing all whitespace on both ends of
3
+ # the string, and then changing remaining consecutive whitespace
4
+ # groups into one space each.
5
+ #
6
+ # Examples:
7
+ # %{ Multi-line
8
+ # string }.squish # => "Multi-line string"
9
+ # " foo bar \n \t boo".squish # => "foo bar boo"
10
+ def squish
11
+ dup.squish!
12
+ end
16
13
 
17
- # Performs a destructive squish. See String#squish.
18
- def squish!
19
- strip!
20
- gsub!(/\s+/, ' ')
21
- self
22
- end
23
- end
24
- end
14
+ # Performs a destructive squish. See String#squish.
15
+ def squish!
16
+ strip!
17
+ gsub!(/\s+/, ' ')
18
+ self
25
19
  end
26
20
  end
@@ -1,167 +1,160 @@
1
- require 'active_support/inflector' unless defined?(ActiveSupport::Inflector)
1
+ # String inflections define new methods on the String class to transform names for different purposes.
2
+ # For instance, you can figure out the name of a database from the name of a class.
3
+ #
4
+ # "ScaleScore".tableize # => "scale_scores"
2
5
 
3
- module ActiveSupport #:nodoc:
4
- module CoreExtensions #:nodoc:
5
- module String #:nodoc:
6
- # String inflections define new methods on the String class to transform names for different purposes.
7
- # For instance, you can figure out the name of a database from the name of a class.
8
- #
9
- # "ScaleScore".tableize # => "scale_scores"
10
- module Inflections
11
- # Returns the plural form of the word in the string.
12
- #
13
- # "post".pluralize # => "posts"
14
- # "octopus".pluralize # => "octopi"
15
- # "sheep".pluralize # => "sheep"
16
- # "words".pluralize # => "words"
17
- # "the blue mailman".pluralize # => "the blue mailmen"
18
- # "CamelOctopus".pluralize # => "CamelOctopi"
19
- def pluralize
20
- Inflector.pluralize(self)
21
- end
6
+ class String
7
+ # Returns the plural form of the word in the string.
8
+ #
9
+ # "post".pluralize # => "posts"
10
+ # "octopus".pluralize # => "octopi"
11
+ # "sheep".pluralize # => "sheep"
12
+ # "words".pluralize # => "words"
13
+ # "the blue mailman".pluralize # => "the blue mailmen"
14
+ # "CamelOctopus".pluralize # => "CamelOctopi"
15
+ def pluralize
16
+ ActiveSupport::Inflector.pluralize(self)
17
+ end
22
18
 
23
- # The reverse of +pluralize+, returns the singular form of a word in a string.
24
- #
25
- # "posts".singularize # => "post"
26
- # "octopi".singularize # => "octopus"
27
- # "sheep".singularize # => "sheep"
28
- # "word".singularize # => "word"
29
- # "the blue mailmen".singularize # => "the blue mailman"
30
- # "CamelOctopi".singularize # => "CamelOctopus"
31
- def singularize
32
- Inflector.singularize(self)
33
- end
19
+ # The reverse of +pluralize+, returns the singular form of a word in a string.
20
+ #
21
+ # "posts".singularize # => "post"
22
+ # "octopi".singularize # => "octopus"
23
+ # "sheep".singularize # => "sheep"
24
+ # "word".singularize # => "word"
25
+ # "the blue mailmen".singularize # => "the blue mailman"
26
+ # "CamelOctopi".singularize # => "CamelOctopus"
27
+ def singularize
28
+ ActiveSupport::Inflector.singularize(self)
29
+ end
34
30
 
35
- # By default, +camelize+ converts strings to UpperCamelCase. If the argument to camelize
36
- # is set to <tt>:lower</tt> then camelize produces lowerCamelCase.
37
- #
38
- # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
39
- #
40
- # "active_record".camelize # => "ActiveRecord"
41
- # "active_record".camelize(:lower) # => "activeRecord"
42
- # "active_record/errors".camelize # => "ActiveRecord::Errors"
43
- # "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
44
- def camelize(first_letter = :upper)
45
- case first_letter
46
- when :upper then Inflector.camelize(self, true)
47
- when :lower then Inflector.camelize(self, false)
48
- end
49
- end
50
- alias_method :camelcase, :camelize
31
+ # By default, +camelize+ converts strings to UpperCamelCase. If the argument to camelize
32
+ # is set to <tt>:lower</tt> then camelize produces lowerCamelCase.
33
+ #
34
+ # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
35
+ #
36
+ # "active_record".camelize # => "ActiveRecord"
37
+ # "active_record".camelize(:lower) # => "activeRecord"
38
+ # "active_record/errors".camelize # => "ActiveRecord::Errors"
39
+ # "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
40
+ def camelize(first_letter = :upper)
41
+ case first_letter
42
+ when :upper then ActiveSupport::Inflector.camelize(self, true)
43
+ when :lower then ActiveSupport::Inflector.camelize(self, false)
44
+ end
45
+ end
46
+ alias_method :camelcase, :camelize
51
47
 
52
- # Capitalizes all the words and replaces some characters in the string to create
53
- # a nicer looking title. +titleize+ is meant for creating pretty output. It is not
54
- # used in the Rails internals.
55
- #
56
- # +titleize+ is also aliased as +titlecase+.
57
- #
58
- # "man from the boondocks".titleize # => "Man From The Boondocks"
59
- # "x-men: the last stand".titleize # => "X Men: The Last Stand"
60
- def titleize
61
- Inflector.titleize(self)
62
- end
63
- alias_method :titlecase, :titleize
48
+ # Capitalizes all the words and replaces some characters in the string to create
49
+ # a nicer looking title. +titleize+ is meant for creating pretty output. It is not
50
+ # used in the Rails internals.
51
+ #
52
+ # +titleize+ is also aliased as +titlecase+.
53
+ #
54
+ # "man from the boondocks".titleize # => "Man From The Boondocks"
55
+ # "x-men: the last stand".titleize # => "X Men: The Last Stand"
56
+ def titleize
57
+ ActiveSupport::Inflector.titleize(self)
58
+ end
59
+ alias_method :titlecase, :titleize
64
60
 
65
- # The reverse of +camelize+. Makes an underscored, lowercase form from the expression in the string.
66
- #
67
- # +underscore+ will also change '::' to '/' to convert namespaces to paths.
68
- #
69
- # "ActiveRecord".underscore # => "active_record"
70
- # "ActiveRecord::Errors".underscore # => active_record/errors
71
- def underscore
72
- Inflector.underscore(self)
73
- end
61
+ # The reverse of +camelize+. Makes an underscored, lowercase form from the expression in the string.
62
+ #
63
+ # +underscore+ will also change '::' to '/' to convert namespaces to paths.
64
+ #
65
+ # "ActiveRecord".underscore # => "active_record"
66
+ # "ActiveRecord::Errors".underscore # => active_record/errors
67
+ def underscore
68
+ ActiveSupport::Inflector.underscore(self)
69
+ end
74
70
 
75
- # Replaces underscores with dashes in the string.
76
- #
77
- # "puni_puni" # => "puni-puni"
78
- def dasherize
79
- Inflector.dasherize(self)
80
- end
71
+ # Replaces underscores with dashes in the string.
72
+ #
73
+ # "puni_puni" # => "puni-puni"
74
+ def dasherize
75
+ ActiveSupport::Inflector.dasherize(self)
76
+ end
81
77
 
82
- # Removes the module part from the constant expression in the string.
83
- #
84
- # "ActiveRecord::CoreExtensions::String::Inflections".demodulize # => "Inflections"
85
- # "Inflections".demodulize # => "Inflections"
86
- def demodulize
87
- Inflector.demodulize(self)
88
- end
78
+ # Removes the module part from the constant expression in the string.
79
+ #
80
+ # "ActiveRecord::CoreExtensions::String::Inflections".demodulize # => "Inflections"
81
+ # "Inflections".demodulize # => "Inflections"
82
+ def demodulize
83
+ ActiveSupport::Inflector.demodulize(self)
84
+ end
89
85
 
90
- # Replaces special characters in a string so that it may be used as part of a 'pretty' URL.
91
- #
92
- # ==== Examples
93
- #
94
- # class Person
95
- # def to_param
96
- # "#{id}-#{name.parameterize}"
97
- # end
98
- # end
99
- #
100
- # @person = Person.find(1)
101
- # # => #<Person id: 1, name: "Donald E. Knuth">
102
- #
103
- # <%= link_to(@person.name, person_path %>
104
- # # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
105
- def parameterize(sep = '-')
106
- Inflector.parameterize(self, sep)
107
- end
86
+ # Replaces special characters in a string so that it may be used as part of a 'pretty' URL.
87
+ #
88
+ # ==== Examples
89
+ #
90
+ # class Person
91
+ # def to_param
92
+ # "#{id}-#{name.parameterize}"
93
+ # end
94
+ # end
95
+ #
96
+ # @person = Person.find(1)
97
+ # # => #<Person id: 1, name: "Donald E. Knuth">
98
+ #
99
+ # <%= link_to(@person.name, person_path %>
100
+ # # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
101
+ def parameterize(sep = '-')
102
+ ActiveSupport::Inflector.parameterize(self, sep)
103
+ end
108
104
 
109
- # Creates the name of a table like Rails does for models to table names. This method
110
- # uses the +pluralize+ method on the last word in the string.
111
- #
112
- # "RawScaledScorer".tableize # => "raw_scaled_scorers"
113
- # "egg_and_ham".tableize # => "egg_and_hams"
114
- # "fancyCategory".tableize # => "fancy_categories"
115
- def tableize
116
- Inflector.tableize(self)
117
- end
105
+ # Creates the name of a table like Rails does for models to table names. This method
106
+ # uses the +pluralize+ method on the last word in the string.
107
+ #
108
+ # "RawScaledScorer".tableize # => "raw_scaled_scorers"
109
+ # "egg_and_ham".tableize # => "egg_and_hams"
110
+ # "fancyCategory".tableize # => "fancy_categories"
111
+ def tableize
112
+ ActiveSupport::Inflector.tableize(self)
113
+ end
118
114
 
119
- # Create a class name from a plural table name like Rails does for table names to models.
120
- # Note that this returns a string and not a class. (To convert to an actual class
121
- # follow +classify+ with +constantize+.)
122
- #
123
- # "egg_and_hams".classify # => "EggAndHam"
124
- # "posts".classify # => "Post"
125
- #
126
- # Singular names are not handled correctly.
127
- #
128
- # "business".classify # => "Busines"
129
- def classify
130
- Inflector.classify(self)
131
- end
132
-
133
- # Capitalizes the first word, turns underscores into spaces, and strips '_id'.
134
- # Like +titleize+, this is meant for creating pretty output.
135
- #
136
- # "employee_salary" # => "Employee salary"
137
- # "author_id" # => "Author"
138
- def humanize
139
- Inflector.humanize(self)
140
- end
115
+ # Create a class name from a plural table name like Rails does for table names to models.
116
+ # Note that this returns a string and not a class. (To convert to an actual class
117
+ # follow +classify+ with +constantize+.)
118
+ #
119
+ # "egg_and_hams".classify # => "EggAndHam"
120
+ # "posts".classify # => "Post"
121
+ #
122
+ # Singular names are not handled correctly.
123
+ #
124
+ # "business".classify # => "Busines"
125
+ def classify
126
+ ActiveSupport::Inflector.classify(self)
127
+ end
128
+
129
+ # Capitalizes the first word, turns underscores into spaces, and strips '_id'.
130
+ # Like +titleize+, this is meant for creating pretty output.
131
+ #
132
+ # "employee_salary" # => "Employee salary"
133
+ # "author_id" # => "Author"
134
+ def humanize
135
+ ActiveSupport::Inflector.humanize(self)
136
+ end
141
137
 
142
- # Creates a foreign key name from a class name.
143
- # +separate_class_name_and_id_with_underscore+ sets whether
144
- # the method should put '_' between the name and 'id'.
145
- #
146
- # Examples
147
- # "Message".foreign_key # => "message_id"
148
- # "Message".foreign_key(false) # => "messageid"
149
- # "Admin::Post".foreign_key # => "post_id"
150
- def foreign_key(separate_class_name_and_id_with_underscore = true)
151
- Inflector.foreign_key(self, separate_class_name_and_id_with_underscore)
152
- end
138
+ # Creates a foreign key name from a class name.
139
+ # +separate_class_name_and_id_with_underscore+ sets whether
140
+ # the method should put '_' between the name and 'id'.
141
+ #
142
+ # Examples
143
+ # "Message".foreign_key # => "message_id"
144
+ # "Message".foreign_key(false) # => "messageid"
145
+ # "Admin::Post".foreign_key # => "post_id"
146
+ def foreign_key(separate_class_name_and_id_with_underscore = true)
147
+ ActiveSupport::Inflector.foreign_key(self, separate_class_name_and_id_with_underscore)
148
+ end
153
149
 
154
- # +constantize+ tries to find a declared constant with the name specified
155
- # in the string. It raises a NameError when the name is not in CamelCase
156
- # or is not initialized.
157
- #
158
- # Examples
159
- # "Module".constantize # => Module
160
- # "Class".constantize # => Class
161
- def constantize
162
- Inflector.constantize(self)
163
- end
164
- end
165
- end
150
+ # +constantize+ tries to find a declared constant with the name specified
151
+ # in the string. It raises a NameError when the name is not in CamelCase
152
+ # or is not initialized.
153
+ #
154
+ # Examples
155
+ # "Module".constantize # => Module
156
+ # "Class".constantize # => Class
157
+ def constantize
158
+ ActiveSupport::Inflector.constantize(self)
166
159
  end
167
160
  end
@@ -1,19 +1,17 @@
1
- # encoding: utf-8
2
-
3
1
  =begin
4
2
  heavily based on Masao Mutoh's gettext String interpolation extension
5
3
  http://github.com/mutoh/gettext/blob/f6566738b981fe0952548c421042ad1e0cdfb31e/lib/gettext/core_ext/string.rb
6
- Copyright (C) 2005-2009 Masao Mutoh
4
+ Copyright (C) 2005-2010 Masao Mutoh
7
5
  You may redistribute it and/or modify it under the same license terms as Ruby.
8
6
  =end
9
7
 
10
- begin
11
- raise ArgumentError if ("a %{x}" % {:x=>'b'}) != 'a b'
12
- rescue ArgumentError
8
+ if RUBY_VERSION < '1.9' && !"".respond_to?(:interpolate_without_ruby_19_syntax)
9
+
13
10
  # KeyError is raised by String#% when the string contains a named placeholder
14
11
  # that is not contained in the given arguments hash. Ruby 1.9 includes and
15
12
  # raises this exception natively. We define it to mimic Ruby 1.9's behaviour
16
13
  # in Ruby 1.8.x
14
+
17
15
  class KeyError < IndexError
18
16
  def initialize(message = nil)
19
17
  super(message || "key not found")
@@ -24,21 +22,16 @@ rescue ArgumentError
24
22
  #
25
23
  # String#% method which accept "named argument". The translator can know
26
24
  # the meaning of the msgids using "named argument" instead of %s/%d style.
25
+
27
26
  class String
28
- # For older ruby versions, such as ruby-1.8.5
29
- alias :bytesize :size unless instance_methods.find {|m| m.to_s == 'bytesize'}
30
27
  alias :interpolate_without_ruby_19_syntax :% # :nodoc:
31
28
 
32
29
  INTERPOLATION_PATTERN = Regexp.union(
30
+ /%%/,
33
31
  /%\{(\w+)\}/, # matches placeholders like "%{foo}"
34
32
  /%<(\w+)>(.*?\d*\.?\d*[bBdiouxXeEfgGcps])/ # matches placeholders like "%<foo>.d"
35
33
  )
36
34
 
37
- INTERPOLATION_PATTERN_WITH_ESCAPE = Regexp.union(
38
- /%%/,
39
- INTERPOLATION_PATTERN
40
- )
41
-
42
35
  # % uses self (i.e. the String) as a format specification and returns the
43
36
  # result of applying it to the given arguments. In other words it interpolates
44
37
  # the given arguments to the string according to the formats the string
@@ -78,7 +71,7 @@ rescue ArgumentError
78
71
  # # => "10, 43.3"
79
72
  def %(args)
80
73
  if args.kind_of?(Hash)
81
- dup.gsub(INTERPOLATION_PATTERN_WITH_ESCAPE) do |match|
74
+ dup.gsub(INTERPOLATION_PATTERN) do |match|
82
75
  if match == '%%'
83
76
  '%'
84
77
  else
@@ -95,4 +88,4 @@ rescue ArgumentError
95
88
  end
96
89
  end
97
90
  end
98
- end
91
+ end