activesupport 3.0.0.beta4 → 3.0.pre
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.
Potentially problematic release.
This version of activesupport might be problematic. Click here for more details.
- data/CHANGELOG +1 -100
- data/lib/active_support.rb +4 -38
- data/lib/active_support/autoload.rb +28 -0
- data/lib/active_support/backtrace_cleaner.rb +9 -31
- data/lib/active_support/benchmarkable.rb +0 -1
- data/lib/active_support/buffered_logger.rb +1 -0
- data/lib/active_support/cache.rb +81 -436
- data/lib/active_support/cache/compressed_mem_cache_store.rb +13 -6
- data/lib/active_support/cache/file_store.rb +41 -139
- data/lib/active_support/cache/mem_cache_store.rb +75 -120
- data/lib/active_support/cache/memory_store.rb +27 -127
- data/lib/active_support/cache/strategy/local_cache.rb +58 -111
- data/lib/active_support/cache/synchronized_memory_store.rb +38 -2
- data/lib/active_support/callbacks.rb +48 -87
- data/lib/active_support/configurable.rb +18 -19
- data/lib/active_support/core_ext/array.rb +0 -1
- data/lib/active_support/core_ext/array/access.rb +1 -1
- data/lib/active_support/core_ext/array/conversions.rb +54 -29
- data/lib/active_support/core_ext/array/extract_options.rb +1 -16
- data/lib/active_support/core_ext/array/random_access.rb +5 -19
- data/lib/active_support/core_ext/array/wrap.rb +9 -13
- data/lib/active_support/core_ext/benchmark.rb +12 -0
- data/lib/active_support/core_ext/boolean.rb +1 -0
- data/lib/active_support/core_ext/boolean/conversions.rb +11 -0
- data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +0 -2
- data/lib/active_support/core_ext/class.rb +1 -1
- data/lib/active_support/core_ext/class/attribute_accessors.rb +27 -33
- data/lib/active_support/core_ext/class/delegating_attributes.rb +41 -35
- data/lib/active_support/core_ext/class/inheritable_attributes.rb +13 -22
- data/lib/active_support/core_ext/class/removal.rb +53 -0
- data/lib/active_support/core_ext/date.rb +7 -0
- data/lib/active_support/core_ext/date/calculations.rb +8 -30
- data/lib/active_support/core_ext/date/conversions.rb +2 -2
- data/lib/active_support/core_ext/date_time.rb +5 -0
- data/lib/active_support/core_ext/date_time/calculations.rb +1 -2
- data/lib/active_support/core_ext/date_time/conversions.rb +5 -23
- data/lib/active_support/core_ext/enumerable.rb +9 -5
- data/lib/active_support/core_ext/exception.rb +47 -0
- data/lib/active_support/core_ext/file.rb +0 -1
- data/lib/active_support/core_ext/file/atomic.rb +2 -3
- data/lib/active_support/core_ext/float/rounding.rb +2 -3
- data/lib/active_support/core_ext/hash/conversions.rb +145 -65
- data/lib/active_support/core_ext/hash/deep_merge.rb +7 -6
- data/lib/active_support/core_ext/hash/except.rb +0 -8
- data/lib/active_support/core_ext/hash/indifferent_access.rb +0 -5
- data/lib/active_support/core_ext/hash/keys.rb +11 -10
- data/lib/active_support/core_ext/hash/slice.rb +0 -6
- data/lib/active_support/core_ext/integer.rb +1 -1
- data/lib/active_support/core_ext/integer/even_odd.rb +16 -0
- data/lib/active_support/core_ext/kernel.rb +1 -1
- data/lib/active_support/core_ext/kernel/daemonizing.rb +7 -0
- data/lib/active_support/core_ext/kernel/debugger.rb +2 -3
- data/lib/active_support/core_ext/kernel/reporting.rb +1 -2
- data/lib/active_support/core_ext/load_error.rb +30 -17
- data/lib/active_support/core_ext/logger.rb +1 -1
- data/lib/active_support/core_ext/module.rb +3 -5
- data/lib/active_support/core_ext/module/aliasing.rb +1 -1
- data/lib/active_support/core_ext/module/attr_accessor_with_default.rb +1 -1
- data/lib/active_support/core_ext/module/attr_internal.rb +2 -2
- data/lib/active_support/core_ext/module/attribute_accessors.rb +21 -25
- data/lib/active_support/core_ext/module/delegation.rb +10 -21
- data/lib/active_support/core_ext/module/inclusion.rb +30 -0
- data/lib/active_support/core_ext/module/introspection.rb +8 -8
- data/lib/active_support/core_ext/module/loading.rb +23 -0
- data/lib/active_support/core_ext/module/synchronization.rb +1 -2
- data/lib/active_support/core_ext/name_error.rb +1 -3
- data/lib/active_support/core_ext/nil.rb +1 -0
- data/lib/active_support/core_ext/nil/conversions.rb +5 -0
- data/lib/active_support/core_ext/object.rb +2 -6
- data/lib/active_support/core_ext/object/blank.rb +2 -20
- data/lib/active_support/core_ext/object/conversions.rb +16 -2
- data/lib/active_support/core_ext/object/duplicable.rb +1 -23
- data/lib/active_support/core_ext/object/extending.rb +77 -8
- data/lib/active_support/core_ext/object/instance_variables.rb +7 -0
- data/lib/active_support/core_ext/object/metaclass.rb +13 -0
- data/lib/active_support/core_ext/object/misc.rb +1 -0
- data/lib/active_support/core_ext/object/tap.rb +16 -0
- data/lib/active_support/core_ext/object/with_options.rb +0 -2
- data/lib/active_support/core_ext/proc.rb +4 -4
- data/lib/active_support/core_ext/regexp.rb +22 -0
- data/lib/active_support/core_ext/rexml.rb +1 -4
- data/lib/active_support/core_ext/string.rb +2 -3
- data/lib/active_support/core_ext/string/access.rb +2 -4
- data/lib/active_support/core_ext/string/bytesize.rb +5 -0
- data/lib/active_support/core_ext/string/conversions.rb +1 -36
- data/lib/active_support/core_ext/string/filters.rb +0 -29
- data/lib/active_support/core_ext/string/inflections.rb +12 -1
- data/lib/active_support/core_ext/string/interpolation.rb +92 -2
- data/lib/active_support/core_ext/string/iterators.rb +13 -0
- data/lib/active_support/core_ext/string/multibyte.rb +19 -16
- data/lib/active_support/core_ext/string/output_safety.rb +35 -101
- data/lib/active_support/core_ext/string/starts_ends_with.rb +14 -0
- data/lib/active_support/core_ext/string/xchar.rb +1 -1
- data/lib/active_support/core_ext/symbol.rb +1 -0
- data/lib/active_support/core_ext/symbol/to_proc.rb +14 -0
- data/lib/active_support/core_ext/time.rb +10 -0
- data/lib/active_support/core_ext/time/calculations.rb +7 -9
- data/lib/active_support/core_ext/time/conversions.rb +0 -1
- data/lib/active_support/core_ext/time/marshal_with_utc_flag.rb +22 -0
- data/lib/active_support/core_ext/uri.rb +4 -10
- data/lib/active_support/dependencies.rb +192 -179
- data/lib/active_support/deprecated_callbacks.rb +283 -0
- data/lib/active_support/deprecation/behaviors.rb +1 -1
- data/lib/active_support/deprecation/method_wrappers.rb +9 -10
- data/lib/active_support/deprecation/reporting.rb +1 -2
- data/lib/active_support/duration.rb +2 -6
- data/lib/active_support/hash_with_indifferent_access.rb +1 -9
- data/lib/active_support/inflections.rb +1 -1
- data/lib/active_support/inflector.rb +407 -4
- data/lib/active_support/json/backends/jsongem.rb +9 -12
- data/lib/active_support/json/decoding.rb +1 -16
- data/lib/active_support/json/encoding.rb +12 -42
- data/lib/active_support/locale/en.yml +1 -4
- data/lib/active_support/memoizable.rb +1 -1
- data/lib/active_support/message_encryptor.rb +0 -1
- data/lib/active_support/message_verifier.rb +5 -6
- data/lib/active_support/multibyte.rb +22 -7
- data/lib/active_support/multibyte/chars.rb +392 -164
- data/lib/active_support/multibyte/unicode_database.rb +71 -0
- data/lib/active_support/multibyte/utils.rb +7 -6
- data/lib/active_support/notifications.rb +113 -23
- data/lib/active_support/ordered_hash.rb +11 -35
- data/lib/active_support/ordered_options.rb +0 -6
- data/lib/active_support/rescuable.rb +4 -7
- data/lib/active_support/ruby/shim.rb +6 -4
- data/lib/active_support/test_case.rb +7 -2
- data/lib/active_support/testing/assertions.rb +0 -15
- data/lib/active_support/testing/declarative.rb +1 -1
- data/lib/active_support/testing/isolation.rb +19 -63
- data/lib/active_support/testing/performance.rb +337 -342
- data/lib/active_support/testing/setup_and_teardown.rb +29 -51
- data/lib/active_support/time.rb +3 -23
- data/lib/active_support/time_with_zone.rb +10 -5
- data/lib/active_support/values/time_zone.rb +84 -40
- data/lib/active_support/values/unicode_tables.dat +0 -0
- data/lib/active_support/vendor.rb +16 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/blankslate.rb +113 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder.rb +13 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/blankslate.rb +20 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/css.rb +250 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xchar.rb +115 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlbase.rb +139 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlevents.rb +63 -0
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlmarkup.rb +328 -0
- data/lib/active_support/vendor/i18n-0.1.3/MIT-LICENSE +20 -0
- data/lib/active_support/vendor/i18n-0.1.3/README.textile +20 -0
- data/lib/active_support/vendor/i18n-0.1.3/Rakefile +5 -0
- data/lib/active_support/vendor/i18n-0.1.3/i18n.gemspec +27 -0
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb +204 -0
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/backend/simple.rb +215 -0
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/exceptions.rb +53 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/all.rb +5 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/i18n_exceptions_test.rb +99 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/i18n_test.rb +124 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.rb +1 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.yml +3 -0
- data/lib/active_support/vendor/i18n-0.1.3/test/simple_backend_test.rb +567 -0
- data/lib/active_support/vendor/memcache-client-1.7.5/lib/memcache.rb +1133 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo.rb +33 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/data_timezone.rb +47 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/data_timezone_info.rb +228 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Algiers.rb +55 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Cairo.rb +219 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Casablanca.rb +42 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Harare.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Johannesburg.rb +25 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Monrovia.rb +22 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Nairobi.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +166 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Argentina/San_Juan.rb +86 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Bogota.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Caracas.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Chicago.rb +283 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Chihuahua.rb +136 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Denver.rb +204 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Godthab.rb +161 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Guatemala.rb +27 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Halifax.rb +274 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Indiana/Indianapolis.rb +149 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Juneau.rb +194 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/La_Paz.rb +22 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Lima.rb +35 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Los_Angeles.rb +232 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Mazatlan.rb +139 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Mexico_City.rb +144 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Monterrey.rb +131 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/New_York.rb +282 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Phoenix.rb +30 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Regina.rb +74 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Santiago.rb +205 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Sao_Paulo.rb +171 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/St_Johns.rb +288 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Tijuana.rb +196 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Almaty.rb +67 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Baghdad.rb +73 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Baku.rb +161 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Bangkok.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Chongqing.rb +33 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Colombo.rb +30 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Dhaka.rb +27 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Hong_Kong.rb +87 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Irkutsk.rb +165 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Jakarta.rb +30 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Jerusalem.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kabul.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kamchatka.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Karachi.rb +32 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kathmandu.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kolkata.rb +25 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Krasnoyarsk.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kuala_Lumpur.rb +31 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kuwait.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Magadan.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Muscat.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Novosibirsk.rb +164 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Rangoon.rb +24 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Riyadh.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Seoul.rb +34 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Shanghai.rb +35 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Singapore.rb +33 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Taipei.rb +59 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tashkent.rb +47 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tbilisi.rb +78 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tehran.rb +121 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tokyo.rb +30 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Ulaanbaatar.rb +65 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Urumqi.rb +33 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Vladivostok.rb +164 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yakutsk.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yekaterinburg.rb +165 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yerevan.rb +165 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/Azores.rb +270 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/Cape_Verde.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/South_Georgia.rb +18 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Adelaide.rb +187 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Brisbane.rb +35 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Darwin.rb +29 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Hobart.rb +193 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Melbourne.rb +185 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Perth.rb +37 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Sydney.rb +185 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Etc/UTC.rb +16 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Amsterdam.rb +228 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Athens.rb +185 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Belgrade.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Berlin.rb +188 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Bratislava.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Brussels.rb +232 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Bucharest.rb +181 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Budapest.rb +197 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Copenhagen.rb +179 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Dublin.rb +276 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Helsinki.rb +163 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Istanbul.rb +218 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Kiev.rb +168 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Lisbon.rb +268 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Ljubljana.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/London.rb +288 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Madrid.rb +211 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Minsk.rb +170 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Moscow.rb +181 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Paris.rb +232 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Prague.rb +187 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Riga.rb +176 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Rome.rb +215 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Sarajevo.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Skopje.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Sofia.rb +173 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Stockholm.rb +165 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Tallinn.rb +172 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Vienna.rb +183 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Vilnius.rb +170 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Warsaw.rb +212 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Zagreb.rb +13 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Auckland.rb +202 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Fiji.rb +23 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Guam.rb +22 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Honolulu.rb +28 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Majuro.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Midway.rb +25 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Noumea.rb +25 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Pago_Pago.rb +26 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Port_Moresby.rb +20 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Tongatapu.rb +27 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/info_timezone.rb +52 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/linked_timezone.rb +51 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/linked_timezone_info.rb +44 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/offset_rationals.rb +98 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/ruby_core_support.rb +56 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/time_or_datetime.rb +292 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone.rb +508 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_definition.rb +56 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_info.rb +40 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_offset_info.rb +94 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_period.rb +198 -0
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_transition_info.rb +129 -0
- data/lib/active_support/version.rb +2 -3
- data/lib/active_support/whiny_nil.rb +7 -9
- data/lib/active_support/xml_mini.rb +1 -126
- data/lib/active_support/xml_mini/jdom.rb +0 -2
- data/lib/active_support/xml_mini/libxml.rb +86 -24
- data/lib/active_support/xml_mini/nokogiri.rb +24 -27
- data/lib/active_support/xml_mini/rexml.rb +1 -7
- metadata +191 -49
- data/lib/active_support/builder.rb +0 -6
- data/lib/active_support/core_ext/array/uniq_by.rb +0 -17
- data/lib/active_support/core_ext/class/attribute.rb +0 -67
- data/lib/active_support/core_ext/class/subclasses.rb +0 -55
- data/lib/active_support/core_ext/file/path.rb +0 -5
- data/lib/active_support/core_ext/integer/multiple.rb +0 -6
- data/lib/active_support/core_ext/kernel/singleton_class.rb +0 -13
- data/lib/active_support/core_ext/module/anonymous.rb +0 -24
- data/lib/active_support/core_ext/module/method_names.rb +0 -14
- data/lib/active_support/core_ext/module/reachable.rb +0 -10
- data/lib/active_support/core_ext/module/remove_method.rb +0 -6
- data/lib/active_support/core_ext/object/to_param.rb +0 -49
- data/lib/active_support/core_ext/object/to_query.rb +0 -27
- data/lib/active_support/core_ext/string/encoding.rb +0 -11
- data/lib/active_support/core_ext/string/exclude.rb +0 -6
- data/lib/active_support/core_ext/time/marshal.rb +0 -56
- data/lib/active_support/dependencies/autoload.rb +0 -50
- data/lib/active_support/i18n.rb +0 -8
- data/lib/active_support/inflector/inflections.rb +0 -211
- data/lib/active_support/inflector/methods.rb +0 -141
- data/lib/active_support/inflector/transliterate.rb +0 -97
- data/lib/active_support/json/backends/yajl.rb +0 -40
- data/lib/active_support/lazy_load_hooks.rb +0 -27
- data/lib/active_support/multibyte/unicode.rb +0 -393
- data/lib/active_support/notifications/fanout.rb +0 -93
- data/lib/active_support/notifications/instrumenter.rb +0 -56
- data/lib/active_support/railtie.rb +0 -100
- data/lib/active_support/xml_mini/libxmlsax.rb +0 -85
- data/lib/active_support/xml_mini/nokogirisax.rb +0 -83
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'active_support/core_ext/array/wrap'
|
2
2
|
require 'active_support/core_ext/class/inheritable_attributes'
|
3
3
|
require 'active_support/core_ext/kernel/reporting'
|
4
|
-
require 'active_support/core_ext/kernel/singleton_class'
|
5
4
|
|
6
5
|
module ActiveSupport
|
7
6
|
# Callbacks are hooks into the lifecycle of an object that allow you to trigger logic
|
@@ -91,7 +90,7 @@ module ActiveSupport
|
|
91
90
|
class Callback
|
92
91
|
@@_callback_sequence = 0
|
93
92
|
|
94
|
-
attr_accessor :chain, :filter, :kind, :options, :per_key, :klass
|
93
|
+
attr_accessor :chain, :filter, :kind, :options, :per_key, :klass
|
95
94
|
|
96
95
|
def initialize(chain, filter, kind, options, klass)
|
97
96
|
@chain, @kind, @klass = chain, kind, klass
|
@@ -203,8 +202,8 @@ module ActiveSupport
|
|
203
202
|
# end
|
204
203
|
#
|
205
204
|
name = "_conditional_callback_#{@kind}_#{next_id}"
|
206
|
-
|
207
|
-
|
205
|
+
txt, line = <<-RUBY_EVAL, __LINE__ + 1
|
206
|
+
def #{name}(halted)
|
208
207
|
#{@compiled_options[0] || "if true"} && !halted
|
209
208
|
#{@filter} do
|
210
209
|
yield self
|
@@ -214,6 +213,7 @@ module ActiveSupport
|
|
214
213
|
end
|
215
214
|
end
|
216
215
|
RUBY_EVAL
|
216
|
+
@klass.class_eval(txt, __FILE__, line)
|
217
217
|
"#{name}(halted) do"
|
218
218
|
end
|
219
219
|
end
|
@@ -311,9 +311,9 @@ module ActiveSupport
|
|
311
311
|
|
312
312
|
def _normalize_legacy_filter(kind, filter)
|
313
313
|
if !filter.respond_to?(kind) && filter.respond_to?(:filter)
|
314
|
-
filter.
|
315
|
-
def #{kind}(context, &block) filter(context, &block) end
|
316
|
-
|
314
|
+
filter.metaclass.class_eval(
|
315
|
+
"def #{kind}(context, &block) filter(context, &block) end",
|
316
|
+
__FILE__, __LINE__ - 1)
|
317
317
|
elsif filter.respond_to?(:before) && filter.respond_to?(:after) && kind == :around
|
318
318
|
def filter.around(context)
|
319
319
|
should_continue = before(context)
|
@@ -367,6 +367,12 @@ module ActiveSupport
|
|
367
367
|
method << "halted ? false : (block_given? ? value : true)"
|
368
368
|
method.compact.join("\n")
|
369
369
|
end
|
370
|
+
|
371
|
+
def clone(klass)
|
372
|
+
chain = CallbackChain.new(@name, @config.dup)
|
373
|
+
callbacks = map { |c| c.clone(chain, klass) }
|
374
|
+
chain.push(*callbacks)
|
375
|
+
end
|
370
376
|
end
|
371
377
|
|
372
378
|
module ClassMethods
|
@@ -383,35 +389,28 @@ module ActiveSupport
|
|
383
389
|
# key. See #define_callbacks for more information.
|
384
390
|
#
|
385
391
|
def __define_runner(symbol) #:nodoc:
|
386
|
-
send("_update_#{symbol}_superclass_callbacks")
|
387
392
|
body = send("_#{symbol}_callbacks").compile(nil)
|
388
393
|
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
@_initialized_#{symbol}_callbacks ||= begin
|
394
|
-
if self.class.send("_update_#{symbol}_superclass_callbacks")
|
395
|
-
self.class.__define_runner(#{symbol.inspect})
|
396
|
-
return _run_#{symbol}_callbacks(key, &blk)
|
397
|
-
end
|
398
|
-
true
|
399
|
-
end
|
400
|
-
|
401
|
-
if key
|
402
|
-
name = "_run__\#{self.class.name.hash.abs}__#{symbol}__\#{key.hash.abs}__callbacks"
|
394
|
+
body, line = <<-RUBY_EVAL, __LINE__
|
395
|
+
def _run_#{symbol}_callbacks(key = nil, &blk)
|
396
|
+
if key
|
397
|
+
name = "_run__\#{self.class.name.hash.abs}__#{symbol}__\#{key.hash.abs}__callbacks"
|
403
398
|
|
404
|
-
|
405
|
-
|
406
|
-
end
|
407
|
-
|
408
|
-
send(name, &blk)
|
409
|
-
else
|
410
|
-
#{body}
|
399
|
+
unless respond_to?(name)
|
400
|
+
self.class.__create_keyed_callback(name, :#{symbol}, self, &blk)
|
411
401
|
end
|
402
|
+
|
403
|
+
send(name, &blk)
|
404
|
+
else
|
405
|
+
#{body}
|
412
406
|
end
|
413
|
-
|
414
|
-
|
407
|
+
end
|
408
|
+
private :_run_#{symbol}_callbacks
|
409
|
+
RUBY_EVAL
|
410
|
+
|
411
|
+
silence_warnings do
|
412
|
+
undef_method "_run_#{symbol}_callbacks" if method_defined?("_run_#{symbol}_callbacks")
|
413
|
+
class_eval body, __FILE__, line
|
415
414
|
end
|
416
415
|
end
|
417
416
|
|
@@ -432,8 +431,6 @@ module ActiveSupport
|
|
432
431
|
# CallbackChain.
|
433
432
|
#
|
434
433
|
def __update_callbacks(name, filters = [], block = nil) #:nodoc:
|
435
|
-
send("_update_#{name}_superclass_callbacks")
|
436
|
-
|
437
434
|
type = [:before, :after, :around].include?(filters.first) ? filters.shift : :before
|
438
435
|
options = filters.last.is_a?(Hash) ? filters.pop : {}
|
439
436
|
filters.unshift(block) if block
|
@@ -470,11 +467,10 @@ module ActiveSupport
|
|
470
467
|
# method that took into consideration the per_key conditions. This
|
471
468
|
# is a speed improvement for ActionPack.
|
472
469
|
#
|
473
|
-
def set_callback(name, *
|
474
|
-
__update_callbacks(name,
|
470
|
+
def set_callback(name, *filters, &block)
|
471
|
+
__update_callbacks(name, filters, block) do |chain, type, filters, options|
|
475
472
|
filters.map! do |filter|
|
476
|
-
|
477
|
-
send("_removed_#{name}_callbacks").push(*removed)
|
473
|
+
chain.delete_if {|c| c.matches?(type, filter) }
|
478
474
|
Callback.new(chain, filter, type, options.dup, self)
|
479
475
|
end
|
480
476
|
|
@@ -484,19 +480,18 @@ module ActiveSupport
|
|
484
480
|
|
485
481
|
# Skip a previously defined callback for a given type.
|
486
482
|
#
|
487
|
-
def skip_callback(name, *
|
488
|
-
__update_callbacks(name,
|
483
|
+
def skip_callback(name, *filters, &block)
|
484
|
+
__update_callbacks(name, filters, block) do |chain, type, filters, options|
|
485
|
+
chain = send("_#{name}_callbacks=", chain.clone(self))
|
486
|
+
|
489
487
|
filters.each do |filter|
|
490
488
|
filter = chain.find {|c| c.matches?(type, filter) }
|
491
489
|
|
492
490
|
if filter && options.any?
|
493
|
-
|
494
|
-
|
495
|
-
|
491
|
+
filter.recompile!(options, options[:per_key] || {})
|
492
|
+
else
|
493
|
+
chain.delete(filter)
|
496
494
|
end
|
497
|
-
|
498
|
-
chain.delete(filter)
|
499
|
-
send("_removed_#{name}_callbacks") << filter
|
500
495
|
end
|
501
496
|
end
|
502
497
|
end
|
@@ -504,9 +499,7 @@ module ActiveSupport
|
|
504
499
|
# Reset callbacks for a given type.
|
505
500
|
#
|
506
501
|
def reset_callbacks(symbol)
|
507
|
-
|
508
|
-
callbacks.clear
|
509
|
-
send("_removed_#{symbol}_callbacks").concat(callbacks)
|
502
|
+
send("_#{symbol}_callbacks").clear
|
510
503
|
__define_runner(symbol)
|
511
504
|
end
|
512
505
|
|
@@ -531,7 +524,7 @@ module ActiveSupport
|
|
531
524
|
# to change this behavior.
|
532
525
|
#
|
533
526
|
# * <tt>:scope</tt> - Show which methods should be executed when a class
|
534
|
-
# is
|
527
|
+
# is giben as callback:
|
535
528
|
#
|
536
529
|
# define_callbacks :filters, :scope => [ :kind ]
|
537
530
|
#
|
@@ -553,46 +546,14 @@ module ActiveSupport
|
|
553
546
|
#
|
554
547
|
# Defaults to :kind.
|
555
548
|
#
|
556
|
-
def define_callbacks(*
|
557
|
-
config =
|
558
|
-
|
559
|
-
|
560
|
-
CallbackChain.new(
|
549
|
+
def define_callbacks(*symbols)
|
550
|
+
config = symbols.last.is_a?(Hash) ? symbols.pop : {}
|
551
|
+
symbols.each do |symbol|
|
552
|
+
extlib_inheritable_accessor("_#{symbol}_callbacks") do
|
553
|
+
CallbackChain.new(symbol, config)
|
561
554
|
end
|
562
555
|
|
563
|
-
|
564
|
-
[]
|
565
|
-
end
|
566
|
-
|
567
|
-
class_eval <<-METHOD, __FILE__, __LINE__ + 1
|
568
|
-
def self._#{callback}_superclass_callbacks
|
569
|
-
if superclass.respond_to?(:_#{callback}_callbacks)
|
570
|
-
superclass._#{callback}_callbacks + superclass._#{callback}_superclass_callbacks
|
571
|
-
else
|
572
|
-
[]
|
573
|
-
end
|
574
|
-
end
|
575
|
-
|
576
|
-
def self._update_#{callback}_superclass_callbacks
|
577
|
-
changed, index = false, 0
|
578
|
-
|
579
|
-
callbacks = (_#{callback}_superclass_callbacks -
|
580
|
-
_#{callback}_callbacks) - _removed_#{callback}_callbacks
|
581
|
-
|
582
|
-
callbacks.each do |callback|
|
583
|
-
if new_index = _#{callback}_callbacks.index(callback)
|
584
|
-
index = new_index + 1
|
585
|
-
else
|
586
|
-
changed = true
|
587
|
-
_#{callback}_callbacks.insert(index, callback)
|
588
|
-
index = index + 1
|
589
|
-
end
|
590
|
-
end
|
591
|
-
changed
|
592
|
-
end
|
593
|
-
METHOD
|
594
|
-
|
595
|
-
__define_runner(callback)
|
556
|
+
__define_runner(symbol)
|
596
557
|
end
|
597
558
|
end
|
598
559
|
end
|
@@ -1,36 +1,35 @@
|
|
1
|
-
require
|
2
|
-
require 'active_support/ordered_options'
|
3
|
-
require 'active_support/core_ext/kernel/singleton_class'
|
4
|
-
require 'active_support/core_ext/module/delegation'
|
1
|
+
require "active_support/concern"
|
5
2
|
|
6
3
|
module ActiveSupport
|
7
4
|
module Configurable
|
8
5
|
extend ActiveSupport::Concern
|
9
6
|
|
10
7
|
module ClassMethods
|
11
|
-
def
|
12
|
-
|
8
|
+
def get_config
|
9
|
+
module_parts = name.split("::")
|
10
|
+
modules = [Object]
|
11
|
+
module_parts.each {|name| modules.push modules.last.const_get(name) }
|
12
|
+
modules.reverse_each do |mod|
|
13
|
+
return mod.const_get(:DEFAULT_CONFIG) if const_defined?(:DEFAULT_CONFIG)
|
14
|
+
end
|
15
|
+
{}
|
13
16
|
end
|
14
|
-
|
15
|
-
def
|
16
|
-
|
17
|
+
|
18
|
+
def config
|
19
|
+
self.config = get_config unless @config
|
20
|
+
@config
|
17
21
|
end
|
18
22
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
def #{name}=(value); config.#{name} = value; end
|
24
|
-
RUBY
|
25
|
-
|
26
|
-
singleton_class.class_eval code, __FILE__, line
|
27
|
-
class_eval code, __FILE__, line
|
23
|
+
def config=(hash)
|
24
|
+
@config = ActiveSupport::OrderedOptions.new
|
25
|
+
hash.each do |key, value|
|
26
|
+
@config[key] = value
|
28
27
|
end
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
32
31
|
def config
|
33
|
-
|
32
|
+
self.class.config
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'active_support/core_ext/array/wrap'
|
2
2
|
require 'active_support/core_ext/array/access'
|
3
|
-
require 'active_support/core_ext/array/uniq_by'
|
4
3
|
require 'active_support/core_ext/array/conversions'
|
5
4
|
require 'active_support/core_ext/array/extract_options'
|
6
5
|
require 'active_support/core_ext/array/grouping'
|
@@ -1,7 +1,6 @@
|
|
1
|
-
require 'active_support/xml_mini'
|
2
1
|
require 'active_support/core_ext/hash/keys'
|
3
2
|
require 'active_support/core_ext/hash/reverse_merge'
|
4
|
-
require 'active_support/
|
3
|
+
require 'active_support/inflector'
|
5
4
|
|
6
5
|
class Array
|
7
6
|
# Converts the array to a comma-separated sentence where the last element is joined by the connector word. Options:
|
@@ -9,14 +8,21 @@ class Array
|
|
9
8
|
# * <tt>:two_words_connector</tt> - The sign or word used to join the elements in arrays with two elements (default: " and ")
|
10
9
|
# * <tt>:last_word_connector</tt> - The sign or word used to join the last element in arrays with three or more elements (default: ", and ")
|
11
10
|
def to_sentence(options = {})
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
11
|
+
default_words_connector = I18n.translate(:'support.array.words_connector', :locale => options[:locale])
|
12
|
+
default_two_words_connector = I18n.translate(:'support.array.two_words_connector', :locale => options[:locale])
|
13
|
+
default_last_word_connector = I18n.translate(:'support.array.last_word_connector', :locale => options[:locale])
|
14
|
+
|
15
|
+
# Try to emulate to_sentences previous to 2.3
|
16
|
+
if options.has_key?(:connector) || options.has_key?(:skip_last_comma)
|
17
|
+
::ActiveSupport::Deprecation.warn(":connector has been deprecated. Use :words_connector instead", caller) if options.has_key? :connector
|
18
|
+
::ActiveSupport::Deprecation.warn(":skip_last_comma has been deprecated. Use :last_word_connector instead", caller) if options.has_key? :skip_last_comma
|
19
|
+
|
20
|
+
skip_last_comma = options.delete :skip_last_comma
|
21
|
+
if connector = options.delete(:connector)
|
22
|
+
options[:last_word_connector] ||= skip_last_comma ? connector : ", #{connector}"
|
23
|
+
else
|
24
|
+
options[:last_word_connector] ||= skip_last_comma ? default_two_words_connector : default_last_word_connector
|
25
|
+
end
|
20
26
|
end
|
21
27
|
|
22
28
|
options.assert_valid_keys(:words_connector, :two_words_connector, :last_word_connector, :locale)
|
@@ -34,6 +40,22 @@ class Array
|
|
34
40
|
end
|
35
41
|
end
|
36
42
|
|
43
|
+
|
44
|
+
# Calls <tt>to_param</tt> on all its elements and joins the result with
|
45
|
+
# slashes. This is used by <tt>url_for</tt> in Action Pack.
|
46
|
+
def to_param
|
47
|
+
collect { |e| e.to_param }.join '/'
|
48
|
+
end
|
49
|
+
|
50
|
+
# Converts an array into a string suitable for use as a URL query string,
|
51
|
+
# using the given +key+ as the param name.
|
52
|
+
#
|
53
|
+
# ['Rails', 'coding'].to_query('hobbies') # => "hobbies%5B%5D=Rails&hobbies%5B%5D=coding"
|
54
|
+
def to_query(key)
|
55
|
+
prefix = "#{key}[]"
|
56
|
+
collect { |value| value.to_query(prefix) }.join '&'
|
57
|
+
end
|
58
|
+
|
37
59
|
# Converts a collection of elements into a formatted string by calling
|
38
60
|
# <tt>to_s</tt> on all elements and joining them:
|
39
61
|
#
|
@@ -134,31 +156,34 @@ class Array
|
|
134
156
|
# </messages>
|
135
157
|
#
|
136
158
|
def to_xml(options = {})
|
137
|
-
|
159
|
+
raise "Not all elements respond to to_xml" unless all? { |e| e.respond_to? :to_xml }
|
160
|
+
require 'builder' unless defined?(Builder)
|
138
161
|
|
139
162
|
options = options.dup
|
140
|
-
options[:
|
141
|
-
options[:
|
142
|
-
options[:
|
143
|
-
|
144
|
-
ActiveSupport::Inflector.pluralize(underscored).tr('/', '_')
|
145
|
-
else
|
146
|
-
"objects"
|
147
|
-
end
|
163
|
+
options[:root] ||= all? { |e| e.is_a?(first.class) && first.class.to_s != "Hash" } ? ActiveSupport::Inflector.pluralize(ActiveSupport::Inflector.underscore(first.class.name)) : "records"
|
164
|
+
options[:children] ||= options[:root].singularize
|
165
|
+
options[:indent] ||= 2
|
166
|
+
options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
|
148
167
|
|
149
|
-
|
150
|
-
|
168
|
+
root = options.delete(:root).to_s
|
169
|
+
children = options.delete(:children)
|
151
170
|
|
152
|
-
|
153
|
-
|
171
|
+
if !options.has_key?(:dasherize) || options[:dasherize]
|
172
|
+
root = root.dasherize
|
173
|
+
end
|
174
|
+
|
175
|
+
options[:builder].instruct! unless options.delete(:skip_instruct)
|
154
176
|
|
155
|
-
|
156
|
-
return builder.tag!(root, attributes) if empty?
|
177
|
+
opts = options.merge({ :root => children })
|
157
178
|
|
158
|
-
|
159
|
-
|
160
|
-
|
179
|
+
xml = options[:builder]
|
180
|
+
if empty?
|
181
|
+
xml.tag!(root, options[:skip_types] ? {} : {:type => "array"})
|
182
|
+
else
|
183
|
+
xml.tag!(root, options[:skip_types] ? {} : {:type => "array"}) {
|
184
|
+
yield xml if block_given?
|
185
|
+
each { |e| e.to_xml(opts.merge({ :skip_instruct => true })) }
|
186
|
+
}
|
161
187
|
end
|
162
188
|
end
|
163
|
-
|
164
189
|
end
|
@@ -1,14 +1,3 @@
|
|
1
|
-
class Hash
|
2
|
-
# By default, only instances of Hash itself are extractable.
|
3
|
-
# Subclasses of Hash may implement this method and return
|
4
|
-
# true to declare themselves as extractable. If a Hash
|
5
|
-
# is extractable, Array#extract_options! pops it from
|
6
|
-
# the Array when it is the last element of the Array.
|
7
|
-
def extractable_options?
|
8
|
-
instance_of?(Hash)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
1
|
class Array
|
13
2
|
# Extracts options from a set of arguments. Removes and returns the last
|
14
3
|
# element in the array if it's a hash, otherwise returns a blank hash.
|
@@ -20,10 +9,6 @@ class Array
|
|
20
9
|
# options(1, 2) # => {}
|
21
10
|
# options(1, 2, :a => :b) # => {:a=>:b}
|
22
11
|
def extract_options!
|
23
|
-
|
24
|
-
pop
|
25
|
-
else
|
26
|
-
{}
|
27
|
-
end
|
12
|
+
last.is_a?(::Hash) ? pop : {}
|
28
13
|
end
|
29
14
|
end
|
@@ -1,20 +1,6 @@
|
|
1
1
|
class Array
|
2
|
-
#
|
3
|
-
def
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
raise TypeError, "Coercion error: #{n.inspect}.to_int => Integer failed:\n(#{e.message})"
|
8
|
-
else
|
9
|
-
raise TypeError, "Coercion error: obj.to_int did NOT return an Integer (was #{n.class})" unless n.kind_of? Integer
|
10
|
-
raise ArgumentError, "negative array size" if n < 0
|
11
|
-
n = size if n > size
|
12
|
-
result = Array.new(self)
|
13
|
-
n.times do |i|
|
14
|
-
r = i + Kernel.rand(size - i)
|
15
|
-
result[i], result[r] = result[r], result[i]
|
16
|
-
end
|
17
|
-
result[n..size] = []
|
18
|
-
result
|
19
|
-
end unless method_defined? :sample
|
20
|
-
end
|
2
|
+
# Returns a random element from the array.
|
3
|
+
def rand
|
4
|
+
self[Kernel.rand(length)]
|
5
|
+
end
|
6
|
+
end
|