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
@@ -0,0 +1,49 @@
1
+
2
+
3
+ class Object
4
+ # Alias of <tt>to_s</tt>.
5
+ def to_param
6
+ to_s
7
+ end
8
+ end
9
+
10
+ class NilClass
11
+ def to_param
12
+ self
13
+ end
14
+ end
15
+
16
+ class TrueClass
17
+ def to_param
18
+ self
19
+ end
20
+ end
21
+
22
+ class FalseClass
23
+ def to_param
24
+ self
25
+ end
26
+ end
27
+
28
+ class Array
29
+ # Calls <tt>to_param</tt> on all its elements and joins the result with
30
+ # slashes. This is used by <tt>url_for</tt> in Action Pack.
31
+ def to_param
32
+ collect { |e| e.to_param }.join '/'
33
+ end
34
+ end
35
+
36
+ class Hash
37
+ # Converts a hash into a string suitable for use as a URL query string. An optional <tt>namespace</tt> can be
38
+ # passed to enclose the param names (see example below).
39
+ #
40
+ # ==== Examples
41
+ # { :name => 'David', :nationality => 'Danish' }.to_query # => "name=David&nationality=Danish"
42
+ #
43
+ # { :name => 'David', :nationality => 'Danish' }.to_query('user') # => "user[name]=David&user[nationality]=Danish"
44
+ def to_param(namespace = nil)
45
+ collect do |key, value|
46
+ value.to_query(namespace ? "#{namespace}[#{key}]" : key)
47
+ end.sort * '&'
48
+ end
49
+ end
@@ -0,0 +1,27 @@
1
+ require 'active_support/core_ext/object/to_param'
2
+
3
+ class Object
4
+ # Converts an object into a string suitable for use as a URL query string, using the given <tt>key</tt> as the
5
+ # param name.
6
+ #
7
+ # Note: This method is defined as a default implementation for all Objects for Hash#to_query to work.
8
+ def to_query(key)
9
+ require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
10
+ "#{CGI.escape(key.to_s).gsub(/%(5B|5D)/n) { [$1].pack('H*') }}=#{CGI.escape(to_param.to_s)}"
11
+ end
12
+ end
13
+
14
+ class Array
15
+ # Converts an array into a string suitable for use as a URL query string,
16
+ # using the given +key+ as the param name.
17
+ #
18
+ # ['Rails', 'coding'].to_query('hobbies') # => "hobbies[]=Rails&hobbies[]=coding"
19
+ def to_query(key)
20
+ prefix = "#{key}[]"
21
+ collect { |value| value.to_query(prefix) }.join '&'
22
+ end
23
+ end
24
+
25
+ class Hash
26
+ alias_method :to_query, :to_param
27
+ end
@@ -1,8 +1,8 @@
1
1
  class Object
2
- # Invokes the method identified by the symbol +method+, passing it any arguments
2
+ # Invokes the method identified by the symbol +method+, passing it any arguments
3
3
  # and/or the block specified, just like the regular Ruby <tt>Object#send</tt> does.
4
4
  #
5
- # *Unlike* that method however, a +NoMethodError+ exception will *not* be raised
5
+ # *Unlike* that method however, a +NoMethodError+ exception will *not* be raised
6
6
  # and +nil+ will be returned instead, if the receiving object is a +nil+ object or NilClass.
7
7
  #
8
8
  # ==== Examples
@@ -19,7 +19,7 @@ class Object
19
19
  # Person.try(:find, 1)
20
20
  # @people.try(:collect) {|p| p.name}
21
21
  #--
22
- # This method definition below is for rdoc purposes only. The alias_method call
22
+ # This method definition below is for rdoc purposes only. The alias_method call
23
23
  # below overrides it as an optimization since +try+ behaves like +Object#send+,
24
24
  # unless called on +NilClass+.
25
25
  def try(method, *args, &block)
@@ -29,7 +29,7 @@ class Object
29
29
  alias_method :try, :__send__
30
30
  end
31
31
 
32
- class NilClass
32
+ class NilClass #:nodoc:
33
33
  def try(*args)
34
34
  nil
35
35
  end
@@ -0,0 +1,24 @@
1
+ class Object
2
+ # An elegant way to factor duplication out of options passed to a series of
3
+ # method calls. Each method called in the block, with the block variable as
4
+ # the receiver, will have its options merged with the default +options+ hash
5
+ # provided. Each method called on the block variable must take an options
6
+ # hash as its final argument.
7
+ #
8
+ # with_options :order => 'created_at', :class_name => 'Comment' do |post|
9
+ # post.has_many :comments, :conditions => ['approved = ?', true], :dependent => :delete_all
10
+ # post.has_many :unapproved_comments, :conditions => ['approved = ?', false]
11
+ # post.has_many :all_comments
12
+ # end
13
+ #
14
+ # Can also be used with an explicit receiver:
15
+ #
16
+ # map.with_options :controller => "people" do |people|
17
+ # people.connect "/people", :action => "index"
18
+ # people.connect "/people/:id", :action => "show"
19
+ # end
20
+ #
21
+ def with_options(options)
22
+ yield ActiveSupport::OptionMerger.new(self, options)
23
+ end
24
+ end
@@ -1,6 +1,14 @@
1
+ require 'active_support/core_ext/object/acts_like'
1
2
  require 'active_support/core_ext/object/blank'
3
+ require 'active_support/core_ext/object/duplicable'
4
+ require 'active_support/core_ext/object/try'
5
+
2
6
  require 'active_support/core_ext/object/conversions'
3
- require 'active_support/core_ext/object/extending'
4
7
  require 'active_support/core_ext/object/instance_variables'
5
- require 'active_support/core_ext/object/metaclass'
6
8
  require 'active_support/core_ext/object/misc'
9
+ require 'active_support/core_ext/object/extending'
10
+
11
+ require 'active_support/core_ext/object/returning'
12
+ require 'active_support/core_ext/object/to_param'
13
+ require 'active_support/core_ext/object/to_query'
14
+ require 'active_support/core_ext/object/with_options'
@@ -1,7 +1,9 @@
1
+ require "active_support/core_ext/kernel/singleton_class"
2
+
1
3
  class Proc #:nodoc:
2
4
  def bind(object)
3
5
  block, time = self, Time.now
4
- (class << object; self end).class_eval do
6
+ object.class_eval do
5
7
  method_name = "__bind_#{time.to_i}_#{time.usec}"
6
8
  define_method(method_name, &block)
7
9
  method = instance_method(method_name)
@@ -1,25 +1,23 @@
1
- if RUBY_VERSION < "1.9"
2
- module Process
3
- def self.daemon(nochdir = nil, noclose = nil)
4
- exit if fork # Parent exits, child continues.
5
- Process.setsid # Become session leader.
6
- exit if fork # Zap session leader. See [1].
1
+ module Process
2
+ def self.daemon(nochdir = nil, noclose = nil)
3
+ exit if fork # Parent exits, child continues.
4
+ Process.setsid # Become session leader.
5
+ exit if fork # Zap session leader. See [1].
7
6
 
8
- unless nochdir
9
- Dir.chdir "/" # Release old working directory.
10
- end
7
+ unless nochdir
8
+ Dir.chdir "/" # Release old working directory.
9
+ end
11
10
 
12
- File.umask 0000 # Ensure sensible umask. Adjust as needed.
11
+ File.umask 0000 # Ensure sensible umask. Adjust as needed.
13
12
 
14
- unless noclose
15
- STDIN.reopen "/dev/null" # Free file descriptors and
16
- STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
17
- STDERR.reopen '/dev/null', 'a'
18
- end
13
+ unless noclose
14
+ STDIN.reopen "/dev/null" # Free file descriptors and
15
+ STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
16
+ STDERR.reopen '/dev/null', 'a'
17
+ end
19
18
 
20
- trap("TERM") { exit }
19
+ trap("TERM") { exit }
21
20
 
22
- return 0
23
- end
24
- end
21
+ return 0
22
+ end unless respond_to?(:daemon)
25
23
  end
@@ -1,32 +1,29 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Range #:nodoc:
4
- # Return an array when step is called without a block.
5
- module BlocklessStep
6
- def self.included(base) #:nodoc:
7
- base.alias_method_chain :step, :blockless
8
- end
1
+ require 'active_support/core_ext/module/aliasing'
9
2
 
10
- if RUBY_VERSION < '1.9'
11
- def step_with_blockless(value = 1, &block)
12
- if block_given?
13
- step_without_blockless(value, &block)
14
- else
15
- returning [] do |array|
16
- step_without_blockless(value) { |step| array << step }
17
- end
18
- end
19
- end
20
- else
21
- def step_with_blockless(value = 1, &block)
22
- if block_given?
23
- step_without_blockless(value, &block)
24
- else
25
- step_without_blockless(value).to_a
26
- end
27
- end
28
- end
3
+ class Range
4
+ begin
5
+ (1..2).step
6
+ # Range#step doesn't return an Enumerator
7
+ rescue LocalJumpError
8
+ # Return an array when step is called without a block.
9
+ def step_with_blockless(*args, &block)
10
+ if block_given?
11
+ step_without_blockless(*args, &block)
12
+ else
13
+ array = []
14
+ step_without_blockless(*args) { |step| array << step }
15
+ array
16
+ end
17
+ end
18
+ else
19
+ def step_with_blockless(*args, &block) #:nodoc:
20
+ if block_given?
21
+ step_without_blockless(*args, &block)
22
+ else
23
+ step_without_blockless(*args).to_a
29
24
  end
30
25
  end
31
26
  end
27
+
28
+ alias_method_chain :step, :blockless
32
29
  end
@@ -1,27 +1,21 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Range #:nodoc:
4
- # Getting ranges in different convenient string representations and other objects
5
- module Conversions
6
- RANGE_FORMATS = {
7
- :db => Proc.new { |start, stop| "BETWEEN '#{start.to_s(:db)}' AND '#{stop.to_s(:db)}'" }
8
- }
1
+ class Range
2
+ RANGE_FORMATS = {
3
+ :db => Proc.new { |start, stop| "BETWEEN '#{start.to_s(:db)}' AND '#{stop.to_s(:db)}'" }
4
+ }
9
5
 
10
- def self.included(base) #:nodoc:
11
- base.class_eval do
12
- alias_method :to_default_s, :to_s
13
- alias_method :to_s, :to_formatted_s
14
- end
15
- end
16
- # Gives a human readable format of the range.
17
- #
18
- # ==== Example
19
- #
20
- # [1..100].to_formatted_s # => "1..100"
21
- def to_formatted_s(format = :default)
22
- RANGE_FORMATS[format] ? RANGE_FORMATS[format].call(first, last) : to_default_s
23
- end
24
- end
6
+ # Gives a human readable format of the range.
7
+ #
8
+ # ==== Example
9
+ #
10
+ # [1..100].to_formatted_s # => "1..100"
11
+ def to_formatted_s(format = :default)
12
+ if formatter = RANGE_FORMATS[format]
13
+ formatter.call(first, last)
14
+ else
15
+ to_default_s
25
16
  end
26
17
  end
18
+
19
+ alias_method :to_default_s, :to_s
20
+ alias_method :to_s, :to_formatted_s
27
21
  end
@@ -1,30 +1,21 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Range #:nodoc:
4
- # Check if a Range includes another Range.
5
- module IncludeRange
6
- def self.included(base) #:nodoc:
7
- base.alias_method_chain :include?, :range
8
- end
9
-
10
- # Extends the default Range#include? to support range comparisons.
11
- # (1..5).include?(1..5) # => true
12
- # (1..5).include?(2..3) # => true
13
- # (1..5).include?(2..6) # => false
14
- #
15
- # The native Range#include? behavior is untouched.
16
- # ("a".."f").include?("c") # => true
17
- # (5..9).include?(11) # => false
18
- def include_with_range?(value)
19
- if value.is_a?(::Range)
20
- operator = exclude_end? ? :< : :<=
21
- end_value = value.exclude_end? ? last.succ : last
22
- include?(value.first) && (value.last <=> end_value).send(operator, 0)
23
- else
24
- include_without_range?(value)
25
- end
26
- end
27
- end
1
+ class Range
2
+ # Extends the default Range#include? to support range comparisons.
3
+ # (1..5).include?(1..5) # => true
4
+ # (1..5).include?(2..3) # => true
5
+ # (1..5).include?(2..6) # => false
6
+ #
7
+ # The native Range#include? behavior is untouched.
8
+ # ("a".."f").include?("c") # => true
9
+ # (5..9).include?(11) # => false
10
+ def include_with_range?(value)
11
+ if value.is_a?(::Range)
12
+ operator = exclude_end? ? :< : :<=
13
+ end_value = value.exclude_end? ? last.succ : last
14
+ include_without_range?(value.first) && (value.last <=> end_value).send(operator, 0)
15
+ else
16
+ include_without_range?(value)
28
17
  end
29
18
  end
19
+
20
+ alias_method_chain :include?, :range
30
21
  end
@@ -1,15 +1,8 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module Range #:nodoc:
4
- # Check if Ranges overlap.
5
- module Overlaps
6
- # Compare two ranges and see if they overlap eachother
7
- # (1..5).overlaps?(4..6) # => true
8
- # (1..5).overlaps?(7..9) # => false
9
- def overlaps?(other)
10
- include?(other.first) || other.include?(first)
11
- end
12
- end
13
- end
1
+ class Range
2
+ # Compare two ranges and see if they overlap eachother
3
+ # (1..5).overlaps?(4..6) # => true
4
+ # (1..5).overlaps?(7..9) # => false
5
+ def overlaps?(other)
6
+ include?(other.first) || other.include?(first)
14
7
  end
15
8
  end
@@ -1,11 +1,4 @@
1
+ require 'active_support/core_ext/range/blockless_step'
1
2
  require 'active_support/core_ext/range/conversions'
2
- require 'active_support/core_ext/range/overlaps'
3
3
  require 'active_support/core_ext/range/include_range'
4
- require 'active_support/core_ext/range/blockless_step'
5
-
6
- class Range #:nodoc:
7
- include ActiveSupport::CoreExtensions::Range::Conversions
8
- include ActiveSupport::CoreExtensions::Range::Overlaps
9
- include ActiveSupport::CoreExtensions::Range::IncludeRange
10
- include ActiveSupport::CoreExtensions::Range::BlocklessStep
11
- end
4
+ require 'active_support/core_ext/range/overlaps'
@@ -0,0 +1,5 @@
1
+ class Regexp #:nodoc:
2
+ def multiline?
3
+ options & MULTILINE == MULTILINE
4
+ end
5
+ end
@@ -1,18 +1,23 @@
1
+ require 'active_support/core_ext/kernel/reporting'
2
+
1
3
  # Fixes the rexml vulnerability disclosed at:
2
4
  # http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/
3
- # This fix is identical to rexml-expansion-fix version 1.0.1
5
+ # This fix is identical to rexml-expansion-fix version 1.0.1.
6
+ #
7
+ # We still need to distribute this fix because albeit the REXML
8
+ # in recent 1.8.7s is patched, it wasn't in early patchlevels.
4
9
  require 'rexml/rexml'
5
10
 
6
11
  # Earlier versions of rexml defined REXML::Version, newer ones REXML::VERSION
7
12
  unless (defined?(REXML::VERSION) ? REXML::VERSION : REXML::Version) > "3.1.7.2"
8
- require 'rexml/document'
13
+ silence_warnings { require 'rexml/document' }
9
14
 
10
- # REXML in 1.8.7 has the patch but didn't update Version from 3.1.7.2.
15
+ # REXML in 1.8.7 has the patch but early patchlevels didn't update Version from 3.1.7.2.
11
16
  unless REXML::Document.respond_to?(:entity_expansion_limit=)
12
- require 'rexml/entity'
17
+ silence_warnings { require 'rexml/entity' }
13
18
 
14
- module REXML
15
- class Entity < Child
19
+ module REXML #:nodoc:
20
+ class Entity < Child #:nodoc:
16
21
  undef_method :unnormalized
17
22
  def unnormalized
18
23
  document.record_entity_expansion! if document
@@ -22,7 +27,7 @@ unless (defined?(REXML::VERSION) ? REXML::VERSION : REXML::Version) > "3.1.7.2"
22
27
  @unnormalized
23
28
  end
24
29
  end
25
- class Document < Element
30
+ class Document < Element #:nodoc:
26
31
  @@entity_expansion_limit = 10_000
27
32
  def self.entity_expansion_limit= val
28
33
  @@entity_expansion_limit = val
@@ -1,105 +1,98 @@
1
- module ActiveSupport #:nodoc:
2
- module CoreExtensions #:nodoc:
3
- module String #:nodoc:
4
- unless '1.9'.respond_to?(:force_encoding)
5
- # Makes it easier to access parts of a string, such as specific characters and substrings.
6
- module Access
7
- # Returns the character at the +position+ treating the string as an array (where 0 is the first character).
8
- #
9
- # Examples:
10
- # "hello".at(0) # => "h"
11
- # "hello".at(4) # => "o"
12
- # "hello".at(10) # => nil
13
- def at(position)
14
- mb_chars[position, 1].to_s
15
- end
16
-
17
- # Returns the remaining of the string from the +position+ treating the string as an array (where 0 is the first character).
18
- #
19
- # Examples:
20
- # "hello".from(0) # => "hello"
21
- # "hello".from(2) # => "llo"
22
- # "hello".from(10) # => nil
23
- def from(position)
24
- mb_chars[position..-1].to_s
25
- end
26
-
27
- # Returns the beginning of the string up to the +position+ treating the string as an array (where 0 is the first character).
28
- #
29
- # Examples:
30
- # "hello".to(0) # => "h"
31
- # "hello".to(2) # => "hel"
32
- # "hello".to(10) # => "hello"
33
- def to(position)
34
- mb_chars[0..position].to_s
35
- end
1
+ require "active_support/multibyte"
36
2
 
37
- # Returns the first character of the string or the first +limit+ characters.
38
- #
39
- # Examples:
40
- # "hello".first # => "h"
41
- # "hello".first(2) # => "he"
42
- # "hello".first(10) # => "hello"
43
- def first(limit = 1)
44
- if limit == 0
45
- ''
46
- elsif limit >= size
47
- self
48
- else
49
- mb_chars[0...limit].to_s
50
- end
51
- end
3
+ class String
4
+ unless '1.9'.respond_to?(:force_encoding)
5
+ # Returns the character at the +position+ treating the string as an array (where 0 is the first character).
6
+ #
7
+ # Examples:
8
+ # "hello".at(0) # => "h"
9
+ # "hello".at(4) # => "o"
10
+ # "hello".at(10) # => ERROR if < 1.9, nil in 1.9
11
+ def at(position)
12
+ mb_chars[position, 1].to_s
13
+ end
14
+
15
+ # Returns the remaining of the string from the +position+ treating the string as an array (where 0 is the first character).
16
+ #
17
+ # Examples:
18
+ # "hello".from(0) # => "hello"
19
+ # "hello".from(2) # => "llo"
20
+ # "hello".from(10) # => "" if < 1.9, nil in 1.9
21
+ def from(position)
22
+ mb_chars[position..-1].to_s
23
+ end
24
+
25
+ # Returns the beginning of the string up to the +position+ treating the string as an array (where 0 is the first character).
26
+ #
27
+ # Examples:
28
+ # "hello".to(0) # => "h"
29
+ # "hello".to(2) # => "hel"
30
+ # "hello".to(10) # => "hello"
31
+ def to(position)
32
+ mb_chars[0..position].to_s
33
+ end
34
+
35
+ # Returns the first character of the string or the first +limit+ characters.
36
+ #
37
+ # Examples:
38
+ # "hello".first # => "h"
39
+ # "hello".first(2) # => "he"
40
+ # "hello".first(10) # => "hello"
41
+ def first(limit = 1)
42
+ if limit == 0
43
+ ''
44
+ elsif limit >= size
45
+ self
46
+ else
47
+ mb_chars[0...limit].to_s
48
+ end
49
+ end
52
50
 
53
- # Returns the last character of the string or the last +limit+ characters.
54
- #
55
- # Examples:
56
- # "hello".last # => "o"
57
- # "hello".last(2) # => "lo"
58
- # "hello".last(10) # => "hello"
59
- def last(limit = 1)
60
- if limit == 0
61
- ''
62
- elsif limit >= size
63
- self
64
- else
65
- mb_chars[(-limit)..-1].to_s
66
- end
67
- end
68
- end
51
+ # Returns the last character of the string or the last +limit+ characters.
52
+ #
53
+ # Examples:
54
+ # "hello".last # => "o"
55
+ # "hello".last(2) # => "lo"
56
+ # "hello".last(10) # => "hello"
57
+ def last(limit = 1)
58
+ if limit == 0
59
+ ''
60
+ elsif limit >= size
61
+ self
69
62
  else
70
- module Access #:nodoc:
71
- def at(position)
72
- self[position]
73
- end
63
+ mb_chars[(-limit)..-1].to_s
64
+ end
65
+ end
66
+ else
67
+ def at(position)
68
+ self[position]
69
+ end
74
70
 
75
- def from(position)
76
- self[position..-1]
77
- end
71
+ def from(position)
72
+ self[position..-1]
73
+ end
78
74
 
79
- def to(position)
80
- self[0..position]
81
- end
75
+ def to(position)
76
+ self[0..position]
77
+ end
82
78
 
83
- def first(limit = 1)
84
- if limit == 0
85
- ''
86
- elsif limit >= size
87
- self
88
- else
89
- to(limit - 1)
90
- end
91
- end
79
+ def first(limit = 1)
80
+ if limit == 0
81
+ ''
82
+ elsif limit >= size
83
+ self
84
+ else
85
+ to(limit - 1)
86
+ end
87
+ end
92
88
 
93
- def last(limit = 1)
94
- if limit == 0
95
- ''
96
- elsif limit >= size
97
- self
98
- else
99
- from(-limit)
100
- end
101
- end
102
- end
89
+ def last(limit = 1)
90
+ if limit == 0
91
+ ''
92
+ elsif limit >= size
93
+ self
94
+ else
95
+ from(-limit)
103
96
  end
104
97
  end
105
98
  end
@@ -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