activesupport 3.0.pre → 3.0.0.rc
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.
- data/CHANGELOG +121 -1
- data/README.rdoc +33 -0
- data/lib/active_support.rb +42 -4
- data/lib/active_support/backtrace_cleaner.rb +31 -9
- data/lib/active_support/benchmarkable.rb +1 -0
- data/lib/active_support/buffered_logger.rb +5 -2
- data/lib/active_support/builder.rb +6 -0
- data/lib/active_support/cache.rb +454 -84
- data/lib/active_support/cache/compressed_mem_cache_store.rb +6 -13
- data/lib/active_support/cache/file_store.rb +140 -41
- data/lib/active_support/cache/mem_cache_store.rb +121 -76
- data/lib/active_support/cache/memory_store.rb +127 -27
- data/lib/active_support/cache/strategy/local_cache.rb +111 -58
- data/lib/active_support/cache/synchronized_memory_store.rb +2 -38
- data/lib/active_support/callbacks.rb +105 -76
- data/lib/active_support/configurable.rb +19 -18
- data/lib/active_support/core_ext/array.rb +1 -0
- data/lib/active_support/core_ext/array/access.rb +1 -1
- data/lib/active_support/core_ext/array/conversions.rb +29 -54
- data/lib/active_support/core_ext/array/extract_options.rb +16 -1
- data/lib/active_support/core_ext/array/grouping.rb +1 -1
- data/lib/active_support/core_ext/array/random_access.rb +26 -5
- data/lib/active_support/core_ext/array/uniq_by.rb +17 -0
- data/lib/active_support/core_ext/array/wrap.rb +13 -9
- data/lib/active_support/core_ext/benchmark.rb +0 -12
- data/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +2 -0
- data/lib/active_support/core_ext/class.rb +2 -1
- data/lib/active_support/core_ext/class/attribute.rb +67 -0
- data/lib/active_support/core_ext/class/attribute_accessors.rb +33 -27
- data/lib/active_support/core_ext/class/delegating_attributes.rb +35 -41
- data/lib/active_support/core_ext/class/inheritable_attributes.rb +23 -14
- data/lib/active_support/core_ext/class/subclasses.rb +50 -0
- data/lib/active_support/core_ext/date/calculations.rb +35 -12
- data/lib/active_support/core_ext/date/conversions.rb +5 -5
- data/lib/active_support/core_ext/date/zones.rb +14 -0
- data/lib/active_support/core_ext/date_time/calculations.rb +3 -1
- data/lib/active_support/core_ext/date_time/conversions.rb +24 -5
- data/lib/active_support/core_ext/date_time/zones.rb +4 -0
- data/lib/active_support/core_ext/enumerable.rb +5 -9
- data/lib/active_support/core_ext/exception.rb +0 -47
- data/lib/active_support/core_ext/file.rb +1 -0
- data/lib/active_support/core_ext/file/atomic.rb +3 -2
- data/lib/active_support/core_ext/file/path.rb +5 -0
- data/lib/active_support/core_ext/float/rounding.rb +3 -2
- data/lib/active_support/core_ext/hash/conversions.rb +65 -145
- data/lib/active_support/core_ext/hash/deep_merge.rb +6 -7
- data/lib/active_support/core_ext/hash/except.rb +8 -1
- data/lib/active_support/core_ext/hash/indifferent_access.rb +5 -0
- data/lib/active_support/core_ext/hash/keys.rb +10 -11
- data/lib/active_support/core_ext/hash/slice.rb +6 -0
- data/lib/active_support/core_ext/integer.rb +1 -1
- data/lib/active_support/core_ext/integer/multiple.rb +6 -0
- data/lib/active_support/core_ext/kernel.rb +1 -1
- data/lib/active_support/core_ext/kernel/debugger.rb +3 -2
- data/lib/active_support/core_ext/kernel/reporting.rb +2 -1
- data/lib/active_support/core_ext/kernel/requires.rb +2 -2
- data/lib/active_support/core_ext/kernel/singleton_class.rb +13 -0
- data/lib/active_support/core_ext/load_error.rb +17 -30
- data/lib/active_support/core_ext/logger.rb +2 -40
- data/lib/active_support/core_ext/module.rb +5 -3
- data/lib/active_support/core_ext/module/aliasing.rb +1 -1
- data/lib/active_support/core_ext/module/anonymous.rb +24 -0
- 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 +20 -22
- data/lib/active_support/core_ext/module/delegation.rb +21 -10
- data/lib/active_support/core_ext/module/introspection.rb +8 -8
- data/lib/active_support/core_ext/module/method_names.rb +14 -0
- data/lib/active_support/core_ext/module/reachable.rb +10 -0
- data/lib/active_support/core_ext/module/remove_method.rb +11 -0
- data/lib/active_support/core_ext/module/synchronization.rb +2 -1
- data/lib/active_support/core_ext/name_error.rb +3 -1
- data/lib/active_support/core_ext/object.rb +5 -3
- data/lib/active_support/core_ext/object/blank.rb +20 -2
- data/lib/active_support/core_ext/object/conversions.rb +2 -16
- data/lib/active_support/core_ext/object/duplicable.rb +23 -1
- data/lib/active_support/core_ext/object/instance_variables.rb +0 -7
- data/lib/active_support/core_ext/object/to_json.rb +19 -0
- data/lib/active_support/core_ext/object/to_param.rb +49 -0
- data/lib/active_support/core_ext/object/to_query.rb +27 -0
- data/lib/active_support/core_ext/object/with_options.rb +2 -0
- data/lib/active_support/core_ext/proc.rb +4 -4
- data/lib/active_support/core_ext/range/overlaps.rb +1 -1
- data/lib/active_support/core_ext/regexp.rb +0 -22
- data/lib/active_support/core_ext/rexml.rb +4 -1
- data/lib/active_support/core_ext/string.rb +3 -2
- data/lib/active_support/core_ext/string/access.rb +4 -2
- data/lib/active_support/core_ext/string/conversions.rb +28 -1
- data/lib/active_support/core_ext/string/encoding.rb +11 -0
- data/lib/active_support/core_ext/string/exclude.rb +6 -0
- data/lib/active_support/core_ext/string/filters.rb +29 -0
- data/lib/active_support/core_ext/string/inflections.rb +12 -12
- data/lib/active_support/core_ext/string/interpolation.rb +2 -92
- data/lib/active_support/core_ext/string/multibyte.rb +16 -19
- data/lib/active_support/core_ext/string/output_safety.rb +101 -35
- data/lib/active_support/core_ext/string/starts_ends_with.rb +0 -14
- data/lib/active_support/core_ext/string/xchar.rb +1 -1
- data/lib/active_support/core_ext/time/calculations.rb +14 -7
- data/lib/active_support/core_ext/time/conversions.rb +1 -0
- data/lib/active_support/core_ext/time/marshal.rb +56 -0
- data/lib/active_support/core_ext/time/zones.rb +2 -5
- data/lib/active_support/core_ext/uri.rb +10 -4
- data/lib/active_support/dependencies.rb +200 -197
- data/lib/active_support/dependencies/autoload.rb +50 -0
- data/lib/active_support/deprecation/behaviors.rb +13 -9
- data/lib/active_support/deprecation/method_wrappers.rb +10 -9
- data/lib/active_support/deprecation/proxy_wrappers.rb +7 -0
- data/lib/active_support/deprecation/reporting.rb +5 -3
- data/lib/active_support/descendants_tracker.rb +43 -0
- data/lib/active_support/duration.rb +8 -4
- data/lib/active_support/file_update_checker.rb +36 -0
- data/lib/active_support/hash_with_indifferent_access.rb +9 -1
- data/lib/active_support/i18n.rb +9 -0
- data/lib/active_support/i18n_railtie.rb +81 -0
- data/lib/active_support/inflections.rb +1 -1
- data/lib/active_support/inflector.rb +4 -407
- data/lib/active_support/inflector/inflections.rb +211 -0
- data/lib/active_support/inflector/methods.rb +151 -0
- data/lib/active_support/inflector/transliterate.rb +97 -0
- data/lib/active_support/json/backends/jsongem.rb +12 -9
- data/lib/active_support/json/backends/yajl.rb +40 -0
- data/lib/active_support/json/backends/yaml.rb +1 -1
- data/lib/active_support/json/decoding.rb +17 -2
- data/lib/active_support/json/encoding.rb +48 -31
- data/lib/active_support/json/variable.rb +2 -4
- data/lib/active_support/lazy_load_hooks.rb +27 -0
- data/lib/active_support/locale/en.yml +5 -2
- data/lib/active_support/log_subscriber.rb +123 -0
- data/lib/active_support/log_subscriber/test_helper.rb +99 -0
- data/lib/active_support/memoizable.rb +1 -1
- data/lib/active_support/message_encryptor.rb +1 -0
- data/lib/active_support/message_verifier.rb +2 -1
- data/lib/active_support/multibyte.rb +8 -23
- data/lib/active_support/multibyte/chars.rb +213 -446
- data/lib/active_support/multibyte/unicode.rb +392 -0
- data/lib/active_support/multibyte/utils.rb +6 -7
- data/lib/active_support/notifications.rb +29 -122
- data/lib/active_support/notifications/fanout.rb +61 -0
- data/lib/active_support/notifications/instrumenter.rb +54 -0
- data/lib/active_support/ordered_hash.rb +59 -14
- data/lib/active_support/ordered_options.rb +6 -0
- data/lib/active_support/railtie.rb +60 -0
- data/lib/active_support/rescuable.rb +7 -4
- data/lib/active_support/ruby/shim.rb +4 -6
- data/lib/active_support/test_case.rb +2 -7
- data/lib/active_support/testing/assertions.rb +15 -0
- data/lib/active_support/testing/declarative.rb +1 -1
- data/lib/active_support/testing/isolation.rb +64 -17
- data/lib/active_support/testing/performance.rb +306 -335
- data/lib/active_support/testing/setup_and_teardown.rb +51 -29
- data/lib/active_support/time.rb +24 -3
- data/lib/active_support/time_with_zone.rb +10 -14
- data/lib/active_support/values/time_zone.rb +192 -234
- data/lib/active_support/values/unicode_tables.dat +0 -0
- data/lib/active_support/version.rb +3 -2
- data/lib/active_support/whiny_nil.rb +9 -7
- data/lib/active_support/xml_mini.rb +130 -1
- data/lib/active_support/xml_mini/jdom.rb +2 -0
- data/lib/active_support/xml_mini/libxml.rb +23 -86
- data/lib/active_support/xml_mini/libxmlsax.rb +85 -0
- data/lib/active_support/xml_mini/nokogiri.rb +27 -24
- data/lib/active_support/xml_mini/nokogirisax.rb +83 -0
- data/lib/active_support/xml_mini/rexml.rb +8 -2
- metadata +62 -195
- data/README +0 -43
- data/lib/active_support/autoload.rb +0 -28
- data/lib/active_support/core_ext/boolean.rb +0 -1
- data/lib/active_support/core_ext/boolean/conversions.rb +0 -11
- data/lib/active_support/core_ext/class/removal.rb +0 -53
- data/lib/active_support/core_ext/date.rb +0 -7
- data/lib/active_support/core_ext/date_time.rb +0 -5
- data/lib/active_support/core_ext/integer/even_odd.rb +0 -16
- data/lib/active_support/core_ext/kernel/daemonizing.rb +0 -7
- data/lib/active_support/core_ext/module/inclusion.rb +0 -30
- data/lib/active_support/core_ext/module/loading.rb +0 -23
- data/lib/active_support/core_ext/nil.rb +0 -1
- data/lib/active_support/core_ext/nil/conversions.rb +0 -5
- data/lib/active_support/core_ext/object/extending.rb +0 -80
- data/lib/active_support/core_ext/object/metaclass.rb +0 -13
- data/lib/active_support/core_ext/object/misc.rb +0 -3
- data/lib/active_support/core_ext/object/returning.rb +0 -42
- data/lib/active_support/core_ext/object/tap.rb +0 -16
- data/lib/active_support/core_ext/string/bytesize.rb +0 -5
- data/lib/active_support/core_ext/string/iterators.rb +0 -13
- data/lib/active_support/core_ext/symbol.rb +0 -1
- data/lib/active_support/core_ext/symbol/to_proc.rb +0 -14
- data/lib/active_support/core_ext/time.rb +0 -10
- data/lib/active_support/core_ext/time/marshal_with_utc_flag.rb +0 -22
- data/lib/active_support/deprecated_callbacks.rb +0 -283
- data/lib/active_support/multibyte/unicode_database.rb +0 -71
- data/lib/active_support/vendor.rb +0 -16
- data/lib/active_support/vendor/builder-2.1.2/lib/blankslate.rb +0 -113
- data/lib/active_support/vendor/builder-2.1.2/lib/builder.rb +0 -13
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/blankslate.rb +0 -20
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/css.rb +0 -250
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xchar.rb +0 -115
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlbase.rb +0 -139
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlevents.rb +0 -63
- data/lib/active_support/vendor/builder-2.1.2/lib/builder/xmlmarkup.rb +0 -328
- data/lib/active_support/vendor/i18n-0.1.3/MIT-LICENSE +0 -20
- data/lib/active_support/vendor/i18n-0.1.3/README.textile +0 -20
- data/lib/active_support/vendor/i18n-0.1.3/Rakefile +0 -5
- data/lib/active_support/vendor/i18n-0.1.3/i18n.gemspec +0 -27
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb +0 -204
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/backend/simple.rb +0 -215
- data/lib/active_support/vendor/i18n-0.1.3/lib/i18n/exceptions.rb +0 -53
- data/lib/active_support/vendor/i18n-0.1.3/test/all.rb +0 -5
- data/lib/active_support/vendor/i18n-0.1.3/test/i18n_exceptions_test.rb +0 -99
- data/lib/active_support/vendor/i18n-0.1.3/test/i18n_test.rb +0 -124
- data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.rb +0 -1
- data/lib/active_support/vendor/i18n-0.1.3/test/locale/en.yml +0 -3
- data/lib/active_support/vendor/i18n-0.1.3/test/simple_backend_test.rb +0 -567
- data/lib/active_support/vendor/memcache-client-1.7.5/lib/memcache.rb +0 -1133
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo.rb +0 -33
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/data_timezone.rb +0 -47
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/data_timezone_info.rb +0 -228
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Algiers.rb +0 -55
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Cairo.rb +0 -219
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Casablanca.rb +0 -42
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Harare.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Johannesburg.rb +0 -25
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Monrovia.rb +0 -22
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Africa/Nairobi.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +0 -166
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Argentina/San_Juan.rb +0 -86
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Bogota.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Caracas.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Chicago.rb +0 -283
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Chihuahua.rb +0 -136
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Denver.rb +0 -204
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Godthab.rb +0 -161
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Guatemala.rb +0 -27
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Halifax.rb +0 -274
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Indiana/Indianapolis.rb +0 -149
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Juneau.rb +0 -194
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/La_Paz.rb +0 -22
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Lima.rb +0 -35
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Los_Angeles.rb +0 -232
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Mazatlan.rb +0 -139
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Mexico_City.rb +0 -144
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Monterrey.rb +0 -131
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/New_York.rb +0 -282
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Phoenix.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Regina.rb +0 -74
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Santiago.rb +0 -205
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Sao_Paulo.rb +0 -171
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/St_Johns.rb +0 -288
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/America/Tijuana.rb +0 -196
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Almaty.rb +0 -67
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Baghdad.rb +0 -73
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Baku.rb +0 -161
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Bangkok.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Chongqing.rb +0 -33
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Colombo.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Dhaka.rb +0 -27
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Hong_Kong.rb +0 -87
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Irkutsk.rb +0 -165
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Jakarta.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Jerusalem.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kabul.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kamchatka.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Karachi.rb +0 -32
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kathmandu.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kolkata.rb +0 -25
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Krasnoyarsk.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kuala_Lumpur.rb +0 -31
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Kuwait.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Magadan.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Muscat.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Novosibirsk.rb +0 -164
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Rangoon.rb +0 -24
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Riyadh.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Seoul.rb +0 -34
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Shanghai.rb +0 -35
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Singapore.rb +0 -33
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Taipei.rb +0 -59
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tashkent.rb +0 -47
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tbilisi.rb +0 -78
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tehran.rb +0 -121
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Tokyo.rb +0 -30
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Ulaanbaatar.rb +0 -65
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Urumqi.rb +0 -33
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Vladivostok.rb +0 -164
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yakutsk.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yekaterinburg.rb +0 -165
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Asia/Yerevan.rb +0 -165
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/Azores.rb +0 -270
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/Cape_Verde.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Atlantic/South_Georgia.rb +0 -18
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Adelaide.rb +0 -187
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Brisbane.rb +0 -35
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Darwin.rb +0 -29
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Hobart.rb +0 -193
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Melbourne.rb +0 -185
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Perth.rb +0 -37
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Australia/Sydney.rb +0 -185
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Etc/UTC.rb +0 -16
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Amsterdam.rb +0 -228
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Athens.rb +0 -185
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Belgrade.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Berlin.rb +0 -188
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Bratislava.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Brussels.rb +0 -232
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Bucharest.rb +0 -181
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Budapest.rb +0 -197
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Copenhagen.rb +0 -179
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Dublin.rb +0 -276
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Helsinki.rb +0 -163
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Istanbul.rb +0 -218
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Kiev.rb +0 -168
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Lisbon.rb +0 -268
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Ljubljana.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/London.rb +0 -288
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Madrid.rb +0 -211
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Minsk.rb +0 -170
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Moscow.rb +0 -181
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Paris.rb +0 -232
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Prague.rb +0 -187
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Riga.rb +0 -176
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Rome.rb +0 -215
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Sarajevo.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Skopje.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Sofia.rb +0 -173
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Stockholm.rb +0 -165
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Tallinn.rb +0 -172
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Vienna.rb +0 -183
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Vilnius.rb +0 -170
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Warsaw.rb +0 -212
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Europe/Zagreb.rb +0 -13
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Auckland.rb +0 -202
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Fiji.rb +0 -23
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Guam.rb +0 -22
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Honolulu.rb +0 -28
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Majuro.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Midway.rb +0 -25
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Noumea.rb +0 -25
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Pago_Pago.rb +0 -26
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Port_Moresby.rb +0 -20
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/definitions/Pacific/Tongatapu.rb +0 -27
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/info_timezone.rb +0 -52
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/linked_timezone.rb +0 -51
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/linked_timezone_info.rb +0 -44
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/offset_rationals.rb +0 -98
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/ruby_core_support.rb +0 -56
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/time_or_datetime.rb +0 -292
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone.rb +0 -508
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_definition.rb +0 -56
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_info.rb +0 -40
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_offset_info.rb +0 -94
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_period.rb +0 -198
- data/lib/active_support/vendor/tzinfo-0.3.13/lib/tzinfo/timezone_transition_info.rb +0 -129
data/README
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
= Active Support -- Utility classes and standard library extensions from Rails
|
2
|
-
|
3
|
-
Active Support is a collection of various utility classes and standard library extensions that were found useful
|
4
|
-
for Rails. All these additions have hence been collected in this bundle as way to gather all that sugar that makes
|
5
|
-
Ruby sweeter.
|
6
|
-
|
7
|
-
|
8
|
-
== Download
|
9
|
-
|
10
|
-
The latest version of Active Support can be found at
|
11
|
-
|
12
|
-
* http://rubyforge.org/project/showfiles.php?group_id=182
|
13
|
-
|
14
|
-
Documentation can be found at
|
15
|
-
|
16
|
-
* http://as.rubyonrails.com
|
17
|
-
|
18
|
-
|
19
|
-
== Installation
|
20
|
-
|
21
|
-
The preferred method of installing Active Support is through its GEM file. You'll need to have
|
22
|
-
RubyGems[http://rubygems.rubyforge.org/wiki/wiki.pl] installed for that, though. If you have it,
|
23
|
-
then use:
|
24
|
-
|
25
|
-
% [sudo] gem install activesupport-1.0.0.gem
|
26
|
-
|
27
|
-
|
28
|
-
== License
|
29
|
-
|
30
|
-
Active Support is released under the MIT license.
|
31
|
-
|
32
|
-
|
33
|
-
== Support
|
34
|
-
|
35
|
-
The Active Support homepage is http://www.rubyonrails.com. You can find the Active Support
|
36
|
-
RubyForge page at http://rubyforge.org/projects/activesupport. And as Jim from Rake says:
|
37
|
-
|
38
|
-
Feel free to submit commits or feature requests. If you send a patch,
|
39
|
-
remember to update the corresponding unit tests. If fact, I prefer
|
40
|
-
new feature to be submitted in the form of new unit tests.
|
41
|
-
|
42
|
-
For other information, feel free to ask on the ruby-talk mailing list
|
43
|
-
(which is mirrored to comp.lang.ruby) or contact mailto:david@loudthinking.com.
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module ActiveSupport
|
2
|
-
autoload :BacktraceCleaner, 'active_support/backtrace_cleaner'
|
3
|
-
autoload :Base64, 'active_support/base64'
|
4
|
-
autoload :BasicObject, 'active_support/basic_object'
|
5
|
-
autoload :Benchmarkable, 'active_support/benchmarkable'
|
6
|
-
autoload :BufferedLogger, 'active_support/buffered_logger'
|
7
|
-
autoload :Cache, 'active_support/cache'
|
8
|
-
autoload :Callbacks, 'active_support/callbacks'
|
9
|
-
autoload :Concern, 'active_support/concern'
|
10
|
-
autoload :Configurable, 'active_support/configurable'
|
11
|
-
autoload :DependencyModule, 'active_support/dependency_module'
|
12
|
-
autoload :DeprecatedCallbacks, 'active_support/deprecated_callbacks'
|
13
|
-
autoload :Deprecation, 'active_support/deprecation'
|
14
|
-
autoload :Gzip, 'active_support/gzip'
|
15
|
-
autoload :Inflector, 'active_support/inflector'
|
16
|
-
autoload :Memoizable, 'active_support/memoizable'
|
17
|
-
autoload :MessageEncryptor, 'active_support/message_encryptor'
|
18
|
-
autoload :MessageVerifier, 'active_support/message_verifier'
|
19
|
-
autoload :Multibyte, 'active_support/multibyte'
|
20
|
-
autoload :OptionMerger, 'active_support/option_merger'
|
21
|
-
autoload :OrderedHash, 'active_support/ordered_hash'
|
22
|
-
autoload :OrderedOptions, 'active_support/ordered_options'
|
23
|
-
autoload :Notifications, 'active_support/notifications'
|
24
|
-
autoload :Rescuable, 'active_support/rescuable'
|
25
|
-
autoload :SecureRandom, 'active_support/secure_random'
|
26
|
-
autoload :StringInquirer, 'active_support/string_inquirer'
|
27
|
-
autoload :XmlMini, 'active_support/xml_mini'
|
28
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/boolean/conversions'
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/object/extending'
|
2
|
-
require 'active_support/core_ext/module/introspection'
|
3
|
-
|
4
|
-
class Class #:nodoc:
|
5
|
-
|
6
|
-
# Unassociates the class with its subclasses and removes the subclasses
|
7
|
-
# themselves.
|
8
|
-
#
|
9
|
-
# Integer.remove_subclasses # => [Bignum, Fixnum]
|
10
|
-
# Fixnum # => NameError: uninitialized constant Fixnum
|
11
|
-
def remove_subclasses
|
12
|
-
Object.remove_subclasses_of(self)
|
13
|
-
end
|
14
|
-
|
15
|
-
# Returns an array with the names of the subclasses of +self+ as strings.
|
16
|
-
#
|
17
|
-
# Integer.subclasses # => ["Bignum", "Fixnum"]
|
18
|
-
def subclasses
|
19
|
-
Object.subclasses_of(self).map { |o| o.to_s }
|
20
|
-
end
|
21
|
-
|
22
|
-
# Removes the classes in +klasses+ from their parent module.
|
23
|
-
#
|
24
|
-
# Ordinary classes belong to some module via a constant. This method computes
|
25
|
-
# that constant name from the class name and removes it from the module it
|
26
|
-
# belongs to.
|
27
|
-
#
|
28
|
-
# Object.remove_class(Integer) # => [Integer]
|
29
|
-
# Integer # => NameError: uninitialized constant Integer
|
30
|
-
#
|
31
|
-
# Take into account that in general the class object could be still stored
|
32
|
-
# somewhere else.
|
33
|
-
#
|
34
|
-
# i = Integer # => Integer
|
35
|
-
# Object.remove_class(Integer) # => [Integer]
|
36
|
-
# Integer # => NameError: uninitialized constant Integer
|
37
|
-
# i.subclasses # => ["Bignum", "Fixnum"]
|
38
|
-
# Fixnum.superclass # => Integer
|
39
|
-
def remove_class(*klasses)
|
40
|
-
klasses.flatten.each do |klass|
|
41
|
-
# Skip this class if there is nothing bound to this name
|
42
|
-
next unless defined?(klass.name)
|
43
|
-
|
44
|
-
basename = klass.to_s.split("::").last
|
45
|
-
parent = klass.parent
|
46
|
-
|
47
|
-
# Skip this class if it does not match the current one bound to this name
|
48
|
-
next unless parent.const_defined?(basename) && klass = parent.const_get(basename)
|
49
|
-
|
50
|
-
parent.instance_eval { remove_const basename } unless parent == klass
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class Integer
|
2
|
-
# Check whether the integer is evenly divisible by the argument.
|
3
|
-
def multiple_of?(number)
|
4
|
-
self % number == 0
|
5
|
-
end
|
6
|
-
|
7
|
-
# Is the integer a multiple of 2?
|
8
|
-
def even?
|
9
|
-
multiple_of? 2
|
10
|
-
end unless method_defined?(:even?)
|
11
|
-
|
12
|
-
# Is the integer not a multiple of 2?
|
13
|
-
def odd?
|
14
|
-
!even?
|
15
|
-
end unless method_defined?(:odd?)
|
16
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
class Module
|
2
|
-
# Returns the classes in the current ObjectSpace where this module has been
|
3
|
-
# mixed in according to Module#included_modules.
|
4
|
-
#
|
5
|
-
# module M
|
6
|
-
# end
|
7
|
-
#
|
8
|
-
# module N
|
9
|
-
# include M
|
10
|
-
# end
|
11
|
-
#
|
12
|
-
# class C
|
13
|
-
# include M
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# class D < C
|
17
|
-
# end
|
18
|
-
#
|
19
|
-
# p M.included_in_classes # => [C, D]
|
20
|
-
#
|
21
|
-
def included_in_classes
|
22
|
-
classes = []
|
23
|
-
ObjectSpace.each_object(Class) { |k| classes << k if k.included_modules.include?(self) }
|
24
|
-
|
25
|
-
classes.reverse.inject([]) do |unique_classes, klass|
|
26
|
-
unique_classes << klass unless unique_classes.collect { |k| k.to_s }.include?(klass.to_s)
|
27
|
-
unique_classes
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class Module
|
2
|
-
# Returns String#underscore applied to the module name minus trailing classes.
|
3
|
-
#
|
4
|
-
# ActiveRecord.as_load_path # => "active_record"
|
5
|
-
# ActiveRecord::Associations.as_load_path # => "active_record/associations"
|
6
|
-
# ActiveRecord::Base.as_load_path # => "active_record" (Base is a class)
|
7
|
-
#
|
8
|
-
# The Kernel module gives an empty string by definition.
|
9
|
-
#
|
10
|
-
# Kernel.as_load_path # => ""
|
11
|
-
# Math.as_load_path # => "math"
|
12
|
-
def as_load_path
|
13
|
-
if self == Object || self == Kernel
|
14
|
-
''
|
15
|
-
elsif is_a? Class
|
16
|
-
parent == self ? '' : parent.as_load_path
|
17
|
-
else
|
18
|
-
name.split('::').collect do |word|
|
19
|
-
word.underscore
|
20
|
-
end * '/'
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/nil/conversions'
|
@@ -1,80 +0,0 @@
|
|
1
|
-
class Object
|
2
|
-
def remove_subclasses_of(*superclasses) #:nodoc:
|
3
|
-
Class.remove_class(*subclasses_of(*superclasses))
|
4
|
-
end
|
5
|
-
|
6
|
-
begin
|
7
|
-
ObjectSpace.each_object(Class.new) {}
|
8
|
-
|
9
|
-
# Exclude this class unless it's a subclass of our supers and is defined.
|
10
|
-
# We check defined? in case we find a removed class that has yet to be
|
11
|
-
# garbage collected. This also fails for anonymous classes -- please
|
12
|
-
# submit a patch if you have a workaround.
|
13
|
-
def subclasses_of(*superclasses) #:nodoc:
|
14
|
-
subclasses = []
|
15
|
-
|
16
|
-
superclasses.each do |sup|
|
17
|
-
ObjectSpace.each_object(class << sup; self; end) do |k|
|
18
|
-
if k != sup && (k.name.blank? || eval("defined?(::#{k}) && ::#{k}.object_id == k.object_id"))
|
19
|
-
subclasses << k
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
subclasses
|
25
|
-
end
|
26
|
-
rescue RuntimeError
|
27
|
-
# JRuby and any implementations which cannot handle the objectspace traversal
|
28
|
-
# above fall back to this implementation
|
29
|
-
def subclasses_of(*superclasses) #:nodoc:
|
30
|
-
subclasses = []
|
31
|
-
|
32
|
-
superclasses.each do |sup|
|
33
|
-
ObjectSpace.each_object(Class) do |k|
|
34
|
-
if superclasses.any? { |superclass| k < superclass } &&
|
35
|
-
(k.name.blank? || eval("defined?(::#{k}) && ::#{k}.object_id == k.object_id"))
|
36
|
-
subclasses << k
|
37
|
-
end
|
38
|
-
end
|
39
|
-
subclasses.uniq!
|
40
|
-
end
|
41
|
-
subclasses
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def extended_by #:nodoc:
|
46
|
-
ancestors = class << self; ancestors end
|
47
|
-
ancestors.select { |mod| mod.class == Module } - [ Object, Kernel ]
|
48
|
-
end
|
49
|
-
|
50
|
-
def extend_with_included_modules_from(object) #:nodoc:
|
51
|
-
object.extended_by.each { |mod| extend mod }
|
52
|
-
end
|
53
|
-
|
54
|
-
unless defined? instance_exec # 1.9
|
55
|
-
module InstanceExecMethods #:nodoc:
|
56
|
-
end
|
57
|
-
include InstanceExecMethods
|
58
|
-
|
59
|
-
# Evaluate the block with the given arguments within the context of
|
60
|
-
# this object, so self is set to the method receiver.
|
61
|
-
#
|
62
|
-
# From Mauricio's http://eigenclass.org/hiki/bounded+space+instance_exec
|
63
|
-
def instance_exec(*args, &block)
|
64
|
-
begin
|
65
|
-
old_critical, Thread.critical = Thread.critical, true
|
66
|
-
n = 0
|
67
|
-
n += 1 while respond_to?(method_name = "__instance_exec#{n}")
|
68
|
-
InstanceExecMethods.module_eval { define_method(method_name, &block) }
|
69
|
-
ensure
|
70
|
-
Thread.critical = old_critical
|
71
|
-
end
|
72
|
-
|
73
|
-
begin
|
74
|
-
send(method_name, *args)
|
75
|
-
ensure
|
76
|
-
InstanceExecMethods.module_eval { remove_method(method_name) } rescue nil
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
class Object
|
2
|
-
# Get object's meta (ghost, eigenclass, singleton) class
|
3
|
-
def metaclass
|
4
|
-
class << self
|
5
|
-
self
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
# If class_eval is called on an object, add those methods to its metaclass
|
10
|
-
def class_eval(*args, &block)
|
11
|
-
metaclass.class_eval(*args, &block)
|
12
|
-
end
|
13
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
class Object
|
2
|
-
# Returns +value+ after yielding +value+ to the block. This simplifies the
|
3
|
-
# process of constructing an object, performing work on the object, and then
|
4
|
-
# returning the object from a method. It is a Ruby-ized realization of the K
|
5
|
-
# combinator, courtesy of Mikael Brockman.
|
6
|
-
#
|
7
|
-
# ==== Examples
|
8
|
-
#
|
9
|
-
# # Without returning
|
10
|
-
# def foo
|
11
|
-
# values = []
|
12
|
-
# values << "bar"
|
13
|
-
# values << "baz"
|
14
|
-
# return values
|
15
|
-
# end
|
16
|
-
#
|
17
|
-
# foo # => ['bar', 'baz']
|
18
|
-
#
|
19
|
-
# # returning with a local variable
|
20
|
-
# def foo
|
21
|
-
# returning values = [] do
|
22
|
-
# values << 'bar'
|
23
|
-
# values << 'baz'
|
24
|
-
# end
|
25
|
-
# end
|
26
|
-
#
|
27
|
-
# foo # => ['bar', 'baz']
|
28
|
-
#
|
29
|
-
# # returning with a block argument
|
30
|
-
# def foo
|
31
|
-
# returning [] do |values|
|
32
|
-
# values << 'bar'
|
33
|
-
# values << 'baz'
|
34
|
-
# end
|
35
|
-
# end
|
36
|
-
#
|
37
|
-
# foo # => ['bar', 'baz']
|
38
|
-
def returning(value)
|
39
|
-
yield(value)
|
40
|
-
value
|
41
|
-
end
|
42
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class Object
|
2
|
-
# Yields <code>x</code> to the block, and then returns <code>x</code>.
|
3
|
-
# The primary purpose of this method is to "tap into" a method chain,
|
4
|
-
# in order to perform operations on intermediate results within the chain.
|
5
|
-
#
|
6
|
-
# (1..10).tap { |x| puts "original: #{x.inspect}" }.to_a.
|
7
|
-
# tap { |x| puts "array: #{x.inspect}" }.
|
8
|
-
# select { |x| x%2 == 0 }.
|
9
|
-
# tap { |x| puts "evens: #{x.inspect}" }.
|
10
|
-
# map { |x| x*x }.
|
11
|
-
# tap { |x| puts "squares: #{x.inspect}" }
|
12
|
-
def tap
|
13
|
-
yield self
|
14
|
-
self
|
15
|
-
end unless Object.respond_to?(:tap)
|
16
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
unless '1.9'.respond_to?(:each_char)
|
2
|
-
class String
|
3
|
-
# Yields a single-character string for each character in the string.
|
4
|
-
# When $KCODE = 'UTF8', multi-byte characters are yielded appropriately.
|
5
|
-
def each_char
|
6
|
-
require 'strscan' unless defined? ::StringScanner
|
7
|
-
scanner, char = ::StringScanner.new(self), /./mu
|
8
|
-
while c = scanner.scan(char)
|
9
|
-
yield c
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/symbol/to_proc'
|
@@ -1,14 +0,0 @@
|
|
1
|
-
class Symbol
|
2
|
-
# Turns the symbol into a simple proc, which is especially useful for enumerations. Examples:
|
3
|
-
#
|
4
|
-
# # The same as people.collect { |p| p.name }
|
5
|
-
# people.collect(&:name)
|
6
|
-
#
|
7
|
-
# # The same as people.select { |p| p.manager? }.collect { |p| p.salary }
|
8
|
-
# people.select(&:manager?).collect(&:salary)
|
9
|
-
#
|
10
|
-
# This is a builtin method in Ruby 1.8.7 and later.
|
11
|
-
def to_proc
|
12
|
-
Proc.new { |*args| args.shift.__send__(self, *args) }
|
13
|
-
end unless :to_proc.respond_to?(:to_proc)
|
14
|
-
end
|