aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rw-r--r--.gitmodules3
-rw-r--r--Gemfile45
-rw-r--r--Gemfile.lock95
-rw-r--r--README.md2
-rw-r--r--Rakefile1
-rw-r--r--app/controllers/admin_censor_rule_controller.rb2
-rw-r--r--app/controllers/admin_controller.rb47
-rw-r--r--app/controllers/admin_general_controller.rb6
-rw-r--r--app/controllers/admin_public_body_controller.rb32
-rw-r--r--app/controllers/admin_request_controller.rb139
-rw-r--r--app/controllers/admin_user_controller.rb8
-rw-r--r--app/controllers/application_controller.rb57
-rw-r--r--app/controllers/comment_controller.rb6
-rw-r--r--app/controllers/general_controller.rb16
-rw-r--r--app/controllers/help_controller.rb6
-rw-r--r--app/controllers/holiday_controller.rb4
-rw-r--r--app/controllers/public_body_controller.rb34
-rw-r--r--app/controllers/request_controller.rb120
-rw-r--r--app/controllers/request_game_controller.rb6
-rw-r--r--app/controllers/services_controller.rb14
-rw-r--r--app/controllers/track_controller.rb29
-rw-r--r--app/controllers/user_controller.rb72
-rw-r--r--app/helpers/application_helper.rb31
-rw-r--r--app/helpers/config_helper.rb2
-rwxr-xr-xapp/helpers/link_to_helper.rb51
-rw-r--r--app/helpers/mailer_helper.rb7
-rw-r--r--app/models/about_me_validator.rb2
-rw-r--r--app/models/application_mailer.rb9
-rw-r--r--app/models/censor_rule.rb11
-rw-r--r--app/models/change_email_validator.rb4
-rw-r--r--app/models/comment.rb10
-rw-r--r--app/models/contact_mailer.rb16
-rw-r--r--app/models/contact_validator.rb2
-rw-r--r--app/models/exim_log.rb6
-rw-r--r--app/models/exim_log_done.rb2
-rw-r--r--app/models/foi_attachment.rb22
-rw-r--r--app/models/holiday.rb6
-rw-r--r--app/models/incoming_message.rb88
-rw-r--r--app/models/info_request.rb119
-rw-r--r--app/models/info_request_event.rb101
-rw-r--r--app/models/outgoing_mailer.rb6
-rw-r--r--app/models/outgoing_message.rb25
-rw-r--r--app/models/post_redirect.rb4
-rw-r--r--app/models/profile_photo.rb14
-rw-r--r--app/models/public_body.rb98
-rw-r--r--app/models/purge_request.rb52
-rw-r--r--app/models/raw_email.rb8
-rw-r--r--app/models/request_mailer.rb32
-rw-r--r--app/models/track_mailer.rb10
-rw-r--r--app/models/track_thing.rb80
-rw-r--r--app/models/track_things_sent_email.rb2
-rw-r--r--app/models/user.rb74
-rw-r--r--app/models/user_info_request_sent_alert.rb4
-rw-r--r--app/views/admin_general/debug.rhtml2
-rw-r--r--app/views/admin_general/index.rhtml14
-rw-r--r--app/views/admin_request/_incoming_message_actions.rhtml2
-rw-r--r--app/views/admin_request/edit.rhtml17
-rw-r--r--app/views/admin_request/hidden_user_explanation.rhtml9
-rw-r--r--app/views/contact_mailer/from_admin_message.rhtml2
-rw-r--r--app/views/general/_locale_switcher.rhtml22
-rw-r--r--app/views/general/search.rhtml3
-rw-r--r--app/views/layouts/admin.rhtml2
-rw-r--r--app/views/layouts/default.rhtml17
-rw-r--r--app/views/public_body/show.rhtml2
-rw-r--r--app/views/request/_sidebar.rhtml13
-rw-r--r--app/views/request/_wall_listing.rhtml30
-rw-r--r--app/views/request/show.rhtml12
-rw-r--r--app/views/request_mailer/not_clarified_alert.rhtml6
-rw-r--r--app/views/track/_tracking_links.rhtml19
-rw-r--r--app/views/user/_change_receive_email.rhtml16
-rw-r--r--app/views/user/confirm.rhtml4
-rw-r--r--app/views/user/rate_limited.rhtml2
-rw-r--r--app/views/user/show.rhtml13
-rw-r--r--app/views/user/sign.rhtml5
-rw-r--r--app/views/user/wall.rhtml16
m---------commonlib0
-rw-r--r--config.ru2
-rw-r--r--config/boot.rb7
-rw-r--r--config/crontab.ugly1
-rw-r--r--config/environment.rb17
-rw-r--r--config/environments/development.rb3
-rw-r--r--config/environments/test.rb2
-rw-r--r--config/general.yml-example24
-rw-r--r--config/initializers/fast_gettext.rb1
-rw-r--r--config/initializers/session_store.rb2
-rw-r--r--config/initializers/theme_loader.rb10
-rw-r--r--config/packages28
-rw-r--r--config/preinitializer.rb20
-rw-r--r--config/purge-varnish-debian.ugly81
-rw-r--r--config/routes.rb7
-rw-r--r--config/test.yml2
-rw-r--r--config/varnish-alaveteli.vcl24
-rw-r--r--db/migrate/111_create_purge_requests.rb14
-rw-r--r--db/migrate/112_add_receive_email_alerts_to_user.rb11
-rw-r--r--db/migrate/114_add_attention_requested_flag_to_info_requests.rb13
-rw-r--r--doc/CHANGES.md71
-rw-r--r--doc/INSTALL-exim4.md8
-rw-r--r--doc/INSTALL-postfix.md40
-rw-r--r--doc/INSTALL.md334
-rw-r--r--lib/alaveteli_file_types.rb2
-rw-r--r--lib/quiet_opener.rb34
-rw-r--r--lib/tasks/rspec.rake19
-rw-r--r--lib/world_foi_websites.rb33
-rw-r--r--locale/es/app.po1348
-rwxr-xr-xpublic/dispatch.fcgi2
-rw-r--r--public/images/logo.pngbin1348 -> 1351 bytes
-rw-r--r--public/javascripts/admin.coffee10
-rw-r--r--public/javascripts/admin.js14
-rw-r--r--public/javascripts/bootstrap-collapse.js138
-rw-r--r--public/javascripts/bootstrap-tab.js130
-rw-r--r--public/javascripts/jquery.js22
-rw-r--r--public/robots.txt23
-rw-r--r--public/stylesheets/main.css52
-rwxr-xr-xscript/about2
-rwxr-xr-xscript/annotate-models5
-rwxr-xr-xscript/breakpointer2
-rwxr-xr-xscript/dbconsole2
-rwxr-xr-xscript/destroy2
-rwxr-xr-xscript/generate2
-rwxr-xr-xscript/generate_pot.sh4
-rwxr-xr-xscript/handle-mail-replies38
-rwxr-xr-xscript/load-sample-data2
-rwxr-xr-xscript/performance/benchmarker2
-rwxr-xr-xscript/performance/profiler2
-rwxr-xr-xscript/performance/request2
-rwxr-xr-xscript/plugin2
-rwxr-xr-xscript/process/inspector2
-rwxr-xr-xscript/process/reaper2
-rwxr-xr-xscript/process/spawner2
-rwxr-xr-xscript/purge-varnish11
-rwxr-xr-xscript/rails-post-deploy20
-rwxr-xr-xscript/rebuild-xapian-index2
-rwxr-xr-xscript/spec-all-pairs2
-rwxr-xr-xscript/spec_server4
-rwxr-xr-xscript/test-run2
-rwxr-xr-xscript/update-xapian-index2
-rw-r--r--spec/controllers/admin_censor_rule_controller_spec.rb19
-rw-r--r--spec/controllers/admin_public_body_controller_spec.rb66
-rw-r--r--spec/controllers/admin_request_controller_spec.rb43
-rw-r--r--spec/controllers/admin_user_controller_spec.rb3
-rw-r--r--spec/controllers/general_controller_spec.rb5
-rw-r--r--spec/controllers/public_body_controller_spec.rb2
-rw-r--r--spec/controllers/request_controller_spec.rb155
-rw-r--r--spec/controllers/services_controller_spec.rb8
-rw-r--r--spec/controllers/track_controller_spec.rb16
-rw-r--r--spec/controllers/user_controller_spec.rb37
-rw-r--r--spec/fixtures/files/track-response-ms-bounce.email168
-rw-r--r--spec/fixtures/files/track-response-webshield-bounce.email513
-rw-r--r--spec/fixtures/users.yml5
-rw-r--r--spec/integration/search_request_spec.rb7
-rw-r--r--spec/models/public_body_spec.rb34
-rw-r--r--spec/models/purge_request_spec.rb32
-rw-r--r--spec/models/track_mailer_spec.rb9
-rw-r--r--spec/models/track_thing_spec.rb7
-rw-r--r--spec/script/handle-mail-replies_spec.rb14
-rw-r--r--spec/spec_helper.rb5
-rw-r--r--tmp/.gitkeep (renamed from vendor/gems/gettext-2.1.0/test/tools/files/app.pot)0
l---------vendor/actionmailer1
l---------vendor/actionpack1
l---------vendor/activerecord1
l---------vendor/activeresource1
l---------vendor/activesupport1
-rw-r--r--vendor/gems/fast_gettext-0.5.10/.gitignore2
-rw-r--r--vendor/gems/fast_gettext-0.5.10/.specification153
-rw-r--r--vendor/gems/fast_gettext-0.5.10/CHANGELOG6
-rw-r--r--vendor/gems/fast_gettext-0.5.10/README.markdown200
-rw-r--r--vendor/gems/fast_gettext-0.5.10/Rakefile32
-rw-r--r--vendor/gems/fast_gettext-0.5.10/VERSION1
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/base.rb42
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/baseline.rb5
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/fast_gettext.rb18
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/i18n_simple.rb7
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/ideal.rb24
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/locale/de.yml127
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/locale/de/LC_MESSAGES/large.mobin112696 -> 0 bytes
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/misc/threadsave.rb21
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/namespace/fast_gettext.rb15
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/namespace/original.rb14
-rw-r--r--vendor/gems/fast_gettext-0.5.10/benchmark/original.rb19
-rw-r--r--vendor/gems/fast_gettext-0.5.10/examples/db/migration.rb22
-rw-r--r--vendor/gems/fast_gettext-0.5.10/examples/missing_translation_logger.rb13
-rw-r--r--vendor/gems/fast_gettext-0.5.10/fast_gettext.gemspec125
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext.rb30
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/VERSION1
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/mo_file.rb71
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/po_file.rb14
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/storage.rb192
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation.rb57
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository.rb17
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/base.rb49
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/chain.rb43
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db.rb62
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db_models/translation_key.rb18
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db_models/translation_text.rb5
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/logger.rb27
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/mo.rb35
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/po.rb18
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/yaml.rb72
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/README.rdoc236
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/empty.mobin40 -> 0 bytes
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/iconv.rb107
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/mofile.rb296
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/poparser.rb333
-rw-r--r--vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/string.rb76
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/aa_unconfigued_spec.rb21
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/mo_file_spec.rb34
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/storage_spec.rb313
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/base_spec.rb20
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/chain_spec.rb81
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/db_spec.rb70
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/logger_spec.rb40
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/mo_spec.rb29
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/po_spec.rb53
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/yaml_spec.rb61
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository_spec.rb33
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_spec.rb158
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/fake_load_path/iconv.rb2
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/iconv_spec.rb33
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/string_spec.rb86
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fast_gettext_spec.rb43
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/fuzzy_locale/de/test.po22
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/de/LC_MESSAGES/test.mobin901 -> 0 bytes
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/de/test.po61
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/en/LC_MESSAGES/plural_test.mobin410 -> 0 bytes
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/en/LC_MESSAGES/test.mobin393 -> 0 bytes
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/en/plural_test.po20
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/en/test.po59
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/de.yml25
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/en.yml21
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/notfound.yml2
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/obsolete_locale/de/test.po21
-rw-r--r--vendor/gems/fast_gettext-0.5.10/spec/spec_helper.rb26
-rw-r--r--vendor/gems/gettext-2.1.0/.specification839
-rw-r--r--vendor/gems/gettext-2.1.0/COPYING56
-rw-r--r--vendor/gems/gettext-2.1.0/ChangeLog78
-rw-r--r--vendor/gems/gettext-2.1.0/ChangeLog-12016
-rw-r--r--vendor/gems/gettext-2.1.0/NEWS-1414
-rw-r--r--vendor/gems/gettext-2.1.0/README.rdoc245
-rw-r--r--vendor/gems/gettext-2.1.0/Rakefile234
-rw-r--r--vendor/gems/gettext-2.1.0/benchmark/1.93.0.txt8
-rw-r--r--vendor/gems/gettext-2.1.0/benchmark/2.0.0.txt8
-rw-r--r--vendor/gems/gettext-2.1.0/benchmark/2.0.4.txt11
-rw-r--r--vendor/gems/gettext-2.1.0/benchmark/2.1.0.txt11
-rw-r--r--vendor/gems/gettext-2.1.0/benchmark/benchmark.rb68
-rw-r--r--vendor/gems/gettext-2.1.0/benchmark/test.rb28
-rwxr-xr-xvendor/gems/gettext-2.1.0/bin/rgettext23
-rwxr-xr-xvendor/gems/gettext-2.1.0/bin/rmsgfmt22
-rwxr-xr-xvendor/gems/gettext-2.1.0/bin/rmsgmerge22
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/bg/LC_MESSAGES/rgettext.mobin3716 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/bs/LC_MESSAGES/rgettext.mobin2670 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/ca/LC_MESSAGES/rgettext.mobin3077 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/cs/LC_MESSAGES/rgettext.mobin2763 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/de/LC_MESSAGES/rgettext.mobin3267 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/el/LC_MESSAGES/rgettext.mobin3753 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/eo/LC_MESSAGES/rgettext.mobin2846 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/es/LC_MESSAGES/rgettext.mobin3051 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/et/LC_MESSAGES/rgettext.mobin2854 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/fr/LC_MESSAGES/rgettext.mobin3210 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/hr/LC_MESSAGES/rgettext.mobin2671 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/hu/LC_MESSAGES/rgettext.mobin3131 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/it/LC_MESSAGES/rgettext.mobin2237 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/ja/LC_MESSAGES/rgettext.mobin3745 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/ko/LC_MESSAGES/rgettext.mobin2839 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/lv/LC_MESSAGES/rgettext.mobin3090 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/nb/LC_MESSAGES/rgettext.mobin3082 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/nl/LC_MESSAGES/rgettext.mobin2610 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/pt_BR/LC_MESSAGES/rgettext.mobin3163 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/ru/LC_MESSAGES/rgettext.mobin3955 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/sr/LC_MESSAGES/rgettext.mobin3715 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/sv/LC_MESSAGES/rgettext.mobin956 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/ua/LC_MESSAGES/rgettext.mobin3963 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/vi/LC_MESSAGES/rgettext.mobin3280 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/zh/LC_MESSAGES/rgettext.mobin2938 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/data/locale/zh_TW/LC_MESSAGES/rgettext.mobin2890 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/gettext.gemspec40
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext.rb310
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/cgi.rb37
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/core_ext/iconv.rb110
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/core_ext/string.rb84
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/parser/erb.rb3
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/parser/glade.rb3
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/parser/ruby.rb172
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/runtime/class_info.rb67
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/runtime/locale_path.rb122
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/runtime/mofile.rb330
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain.rb177
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain_group.rb24
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain_manager.rb211
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools.rb195
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/erb.rb52
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/glade.rb98
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/ruby.rb226
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools/pomessage.rb197
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools/poparser.rb356
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools/rgettext.rb226
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools/rmsgfmt.rb84
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/tools/rmsgmerge.rb498
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/utils.rb37
-rw-r--r--vendor/gems/gettext-2.1.0/lib/gettext/version.rb12
-rw-r--r--vendor/gems/gettext-2.1.0/po/bg/rgettext.po134
-rw-r--r--vendor/gems/gettext-2.1.0/po/bs/rgettext.po135
-rw-r--r--vendor/gems/gettext-2.1.0/po/ca/rgettext.po133
-rw-r--r--vendor/gems/gettext-2.1.0/po/cs/rgettext.po136
-rw-r--r--vendor/gems/gettext-2.1.0/po/de/rgettext.po141
-rw-r--r--vendor/gems/gettext-2.1.0/po/el/rgettext.po132
-rw-r--r--vendor/gems/gettext-2.1.0/po/eo/rgettext.po133
-rw-r--r--vendor/gems/gettext-2.1.0/po/es/rgettext.po134
-rw-r--r--vendor/gems/gettext-2.1.0/po/et/rgettext.po131
-rw-r--r--vendor/gems/gettext-2.1.0/po/fr/rgettext.po137
-rw-r--r--vendor/gems/gettext-2.1.0/po/hr/rgettext.po135
-rw-r--r--vendor/gems/gettext-2.1.0/po/hu/rgettext.po133
-rw-r--r--vendor/gems/gettext-2.1.0/po/it/rgettext.po134
-rw-r--r--vendor/gems/gettext-2.1.0/po/ja/rgettext.po134
-rw-r--r--vendor/gems/gettext-2.1.0/po/ko/rgettext.po133
-rw-r--r--vendor/gems/gettext-2.1.0/po/lv/rgettext.po134
-rw-r--r--vendor/gems/gettext-2.1.0/po/nb/rgettext.po135
-rw-r--r--vendor/gems/gettext-2.1.0/po/nl/rgettext.po134
-rw-r--r--vendor/gems/gettext-2.1.0/po/pt_BR/rgettext.po136
-rw-r--r--vendor/gems/gettext-2.1.0/po/rgettext.pot125
-rw-r--r--vendor/gems/gettext-2.1.0/po/ru/rgettext.po135
-rw-r--r--vendor/gems/gettext-2.1.0/po/sr/rgettext.po134
-rw-r--r--vendor/gems/gettext-2.1.0/po/sv/rgettext.po127
-rw-r--r--vendor/gems/gettext-2.1.0/po/ua/rgettext.po138
-rw-r--r--vendor/gems/gettext-2.1.0/po/vi/rgettext.po132
-rw-r--r--vendor/gems/gettext-2.1.0/po/zh/rgettext.po133
-rw-r--r--vendor/gems/gettext-2.1.0/po/zh_TW/rgettext.po132
-rw-r--r--vendor/gems/gettext-2.1.0/replace.rb8
-rw-r--r--vendor/gems/gettext-2.1.0/samples/README16
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/README43
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/Rakefile27
-rwxr-xr-xvendor/gems/gettext-2.1.0/samples/cgi/cookie.cgi64
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/gettext.css116
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/helloerb.rhtml28
-rwxr-xr-xvendor/gems/gettext-2.1.0/samples/cgi/helloerb1.cgi58
-rwxr-xr-xvendor/gems/gettext-2.1.0/samples/cgi/helloerb2.cgi51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/hellolib.rb18
-rwxr-xr-xvendor/gems/gettext-2.1.0/samples/cgi/http.rb49
-rwxr-xr-xvendor/gems/gettext-2.1.0/samples/cgi/index.cgi111
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/helloerb1.mobin1400 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/helloerb2.mobin1244 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/hellolib.mobin510 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/main.mobin2440 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/helloerb1.mobin1246 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/helloerb2.mobin1086 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/hellolib.mobin567 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/main.mobin2017 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/helloerb1.mobin1032 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/helloerb2.mobin865 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/hellolib.mobin473 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/main.mobin1981 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/helloerb1.mobin1253 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/helloerb2.mobin1039 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/hellolib.mobin553 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/main.mobin2020 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/helloerb1.mobin1038 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/helloerb2.mobin865 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/hellolib.mobin467 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/main.mobin1964 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/helloerb1.mobin1319 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/helloerb2.mobin1120 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/hellolib.mobin480 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/main.mobin2264 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/helloerb1.mobin1134 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/helloerb2.mobin943 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/hellolib.mobin469 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/main.mobin1936 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/helloerb1.mobin1135 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/helloerb2.mobin916 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/hellolib.mobin382 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/main.mobin1894 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/helloerb1.mobin1170 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/helloerb2.mobin1011 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/hellolib.mobin450 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/main.mobin2095 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/helloerb1.mobin1247 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/helloerb2.mobin1087 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/hellolib.mobin568 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/main.mobin2018 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/helloerb1.mobin1170 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/helloerb2.mobin1008 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/hellolib.mobin470 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/main.mobin2011 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/helloerb1.mobin1082 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/helloerb2.mobin925 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/hellolib.mobin515 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/main.mobin2030 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/helloerb1.mobin1305 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/helloerb2.mobin1096 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/hellolib.mobin502 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/main.mobin2206 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/helloerb1.mobin1172 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/helloerb2.mobin976 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/hellolib.mobin477 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/main.mobin2039 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/helloerb1.mobin1191 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/helloerb2.mobin1024 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/hellolib.mobin500 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/main.mobin1982 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/helloerb1.mobin1233 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/helloerb2.mobin1042 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/hellolib.mobin536 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/main.mobin1996 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/helloerb1.mobin1203 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/helloerb2.mobin1005 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/hellolib.mobin491 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/main.mobin1961 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb1.mobin1192 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb2.mobin1006 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/hellolib.mobin474 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/main.mobin1966 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/helloerb1.mobin1361 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/helloerb2.mobin1169 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/hellolib.mobin485 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/main.mobin2282 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/helloerb1.mobin1369 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/helloerb2.mobin1153 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/hellolib.mobin560 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/main.mobin2372 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/helloerb1.mobin1454 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/helloerb2.mobin1275 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/hellolib.mobin641 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/main.mobin2461 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/helloerb1.mobin1224 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/helloerb2.mobin1016 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/hellolib.mobin481 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/main.mobin2106 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/helloerb1.mobin1162 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/helloerb2.mobin989 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/hellolib.mobin493 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/main.mobin1908 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb1.mobin1188 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb2.mobin1004 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/hellolib.mobin524 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/main.mobin1857 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/other.rhtml20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/bg/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/bg/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/bg/hellolib.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/bg/main.po83
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/bs/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/bs/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/bs/hellolib.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/bs/main.po83
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ca/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ca/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ca/hellolib.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ca/main.po83
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/cs/helloerb1.po61
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/cs/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/cs/hellolib.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/cs/main.po85
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/de/helloerb1.po61
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/de/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/de/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/de/main.po86
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/el/helloerb1.po60
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/el/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/el/hellolib.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/el/main.po84
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/eo/helloerb1.po60
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/eo/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/eo/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/eo/main.po84
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/es/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/es/helloerb2.po50
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/es/hellolib.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/es/main.po83
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/fr/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/fr/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/fr/hellolib.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/fr/main.po85
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/helloerb1.pot60
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/helloerb2.pot52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hellolib.pot24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hr/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hr/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hr/hellolib.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hr/main.po83
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hu/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hu/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hu/hellolib.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/hu/main.po82
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/it/helloerb1.po60
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/it/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/it/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/it/main.po84
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ja/helloerb1.po60
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ja/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ja/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ja/main.po85
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ko/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ko/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ko/hellolib.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ko/main.po84
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/lv/helloerb1.po65
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/lv/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/lv/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/lv/main.po77
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/main.pot80
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/nb/helloerb1.po60
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/nb/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/nb/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/nb/main.po84
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/nl/helloerb1.po61
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/nl/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/nl/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/nl/main.po86
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/helloerb1.po59
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/helloerb2.po51
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/hellolib.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/main.po84
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ru/helloerb1.po58
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ru/helloerb2.po50
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ru/hellolib.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ru/main.po82
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/sr/helloerb1.po60
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/sr/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/sr/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/sr/main.po80
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ua/helloerb1.po62
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ua/helloerb2.po54
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ua/hellolib.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/ua/main.po84
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/vi/helloerb1.po65
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/vi/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/vi/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/vi/main.po77
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/zh/helloerb1.po60
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/zh/helloerb2.po52
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/zh/hellolib.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/zh/main.po80
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/helloerb1.po67
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/helloerb2.po54
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/hellolib.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/main.po79
-rw-r--r--vendor/gems/gettext-2.1.0/samples/hello.rb36
-rw-r--r--vendor/gems/gettext-2.1.0/samples/hello2.rb23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/hello_glade2.glade70
-rw-r--r--vendor/gems/gettext-2.1.0/samples/hello_glade2.rb25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/hello_gtk2.rb27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/hello_noop.rb31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/hello_plural.rb26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/hello_tk.rb19
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello.mobin488 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello2.mobin596 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_glade2.mobin649 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_gtk.mobin496 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_noop.mobin546 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_plural.mobin561 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_tk.mobin491 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello.mobin536 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello2.mobin635 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_glade2.mobin670 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_gtk.mobin548 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_noop.mobin592 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_plural.mobin625 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_tk.mobin542 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello.mobin435 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello2.mobin531 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_glade2.mobin578 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_gtk.mobin443 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_noop.mobin481 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_plural.mobin498 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_tk.mobin438 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello.mobin525 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello2.mobin622 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_glade2.mobin666 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_gtk.mobin533 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_noop.mobin573 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_plural.mobin592 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_tk.mobin528 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello.mobin428 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello2.mobin526 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_glade2.mobin604 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_gtk.mobin436 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_noop.mobin464 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_plural.mobin530 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_tk.mobin474 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello.mobin435 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello2.mobin537 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_glade2.mobin617 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_gtk.mobin449 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_noop.mobin499 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_plural.mobin507 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_tk.mobin444 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello.mobin388 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello2.mobin495 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_glade2.mobin562 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_gtk.mobin398 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_noop.mobin440 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_plural.mobin490 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_tk.mobin436 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello.mobin400 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello2.mobin497 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_glade2.mobin535 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_gtk.mobin401 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_noop.mobin439 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_plural.mobin506 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_tk.mobin396 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello.mobin381 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello2.mobin485 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_glade2.mobin570 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_gtk.mobin381 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_noop.mobin423 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_plural.mobin482 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_tk.mobin383 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello.mobin537 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello2.mobin636 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_glade2.mobin671 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_gtk.mobin549 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_noop.mobin593 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_plural.mobin626 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_tk.mobin543 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello.mobin392 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello2.mobin484 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_glade2.mobin567 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_gtk.mobin400 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_noop.mobin442 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_plural.mobin497 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_tk.mobin438 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello.mobin438 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello2.mobin534 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_glade2.mobin578 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_gtk.mobin444 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_noop.mobin487 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_plural.mobin544 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_tk.mobin442 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello.mobin382 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello2.mobin468 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_glade2.mobin542 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_gtk.mobin381 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_noop.mobin432 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_plural.mobin484 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_tk.mobin380 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello.mobin389 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello2.mobin488 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_glade2.mobin580 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_gtk.mobin397 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_noop.mobin440 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_plural.mobin531 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_tk.mobin443 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello.mobin477 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello2.mobin575 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_glade2.mobin611 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_gtk.mobin485 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_noop.mobin533 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_plural.mobin509 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_tk.mobin480 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello.mobin453 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello2.mobin548 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_glade2.mobin638 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_gtk.mobin460 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_noop.mobin506 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_plural.mobin557 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_tk.mobin506 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello.mobin469 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello2.mobin565 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_glade2.mobin608 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_gtk.mobin477 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_noop.mobin518 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_plural.mobin533 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_tk.mobin475 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello.mobin441 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello2.mobin536 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_glade2.mobin585 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_gtk.mobin451 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_noop.mobin489 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_plural.mobin509 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_tk.mobin451 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello.mobin468 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello2.mobin587 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_glade2.mobin644 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_gtk.mobin475 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_noop.mobin533 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_plural.mobin575 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_tk.mobin470 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello.mobin417 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello2.mobin520 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_glade2.mobin705 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_gtk.mobin425 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_noop.mobin477 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_plural.mobin602 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_tk.mobin535 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello.mobin371 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello2.mobin468 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_glade2.mobin509 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_gtk.mobin378 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_noop.mobin421 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_plural.mobin488 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_tk.mobin373 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello.mobin402 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello2.mobin494 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_glade2.mobin788 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_gtk.mobin409 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_noop.mobin461 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_plural.mobin685 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_tk.mobin611 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello.mobin415 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello2.mobin512 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_glade2.mobin605 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_gtk.mobin418 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_noop.mobin479 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_plural.mobin515 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_tk.mobin456 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello.mobin437 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello2.mobin535 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_glade2.mobin565 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_gtk.mobin443 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_noop.mobin480 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_plural.mobin490 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_tk.mobin442 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello.mobin497 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello2.mobin597 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_glade2.mobin626 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_gtk.mobin470 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_noop.mobin548 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_plural.mobin574 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_tk.mobin501 -> 0 bytes
-rwxr-xr-xvendor/gems/gettext-2.1.0/samples/makemo.rb4
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bg/hello.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bg/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bg/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bg/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bg/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bg/hello_plural.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bg/hello_tk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bs/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bs/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bs/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bs/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bs/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bs/hello_plural.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/bs/hello_tk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ca/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ca/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ca/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ca/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ca/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ca/hello_plural.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ca/hello_tk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/cs/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/cs/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/cs/hello_glade2.po37
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/cs/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/cs/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/cs/hello_plural.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/cs/hello_tk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/de/hello.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/de/hello2.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/de/hello_glade2.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/de/hello_gtk.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/de/hello_noop.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/de/hello_plural.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/de/hello_tk.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/el/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/el/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/el/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/el/hello_gtk.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/el/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/el/hello_plural.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/el/hello_tk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/eo/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/eo/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/eo/hello_glade2.po32
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/eo/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/eo/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/eo/hello_plural.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/eo/hello_tk.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/es/hello.po21
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/es/hello2.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/es/hello_glade2.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/es/hello_gtk.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/es/hello_noop.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/es/hello_plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/es/hello_tk.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/fr/hello.po18
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/fr/hello2.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/fr/hello_glade2.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/fr/hello_gtk.po18
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/fr/hello_noop.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/fr/hello_plural.po21
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/fr/hello_tk.po18
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hello.pot23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hello2.pot31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hello_glade2.pot32
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hello_gtk.pot23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hello_noop.pot27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hello_plural.pot26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hello_tk.pot24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hr/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hr/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hr/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hr/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hr/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hr/hello_plural.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hr/hello_tk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hu/hello.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hu/hello2.po30
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hu/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hu/hello_gtk.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hu/hello_noop.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hu/hello_plural.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/hu/hello_tk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/it/hello.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/it/hello2.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/it/hello_glade2.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/it/hello_gtk.po21
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/it/hello_noop.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/it/hello_plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/it/hello_tk.po21
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ja/hello.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ja/hello2.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ja/hello_glade2.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ja/hello_gtk.po19
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ja/hello_noop.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ja/hello_plural.po21
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ja/hello_tk.po19
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ko/hello.po18
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ko/hello2.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ko/hello_glade2.po29
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ko/hello_gtk.po18
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ko/hello_noop.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ko/hello_plural.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ko/hello_tk.po19
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/lv/hello.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/lv/hello2.po32
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/lv/hello_glade2.po38
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/lv/hello_gtk.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/lv/hello_noop.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/lv/hello_plural.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/lv/hello_tk.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nb/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nb/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nb/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nb/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nb/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nb/hello_plural.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nb/hello_tk.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nl/hello.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nl/hello2.po32
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nl/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nl/hello_gtk.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nl/hello_noop.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nl/hello_plural.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/nl/hello_tk.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello.po21
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello2.po29
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_glade2.po29
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_gtk.po21
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_noop.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_tk.po21
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ru/hello.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ru/hello2.po30
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ru/hello_glade2.po30
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ru/hello_gtk.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ru/hello_noop.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ru/hello_plural.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ru/hello_tk.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sr/hello.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sr/hello2.po30
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sr/hello_glade2.po32
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sr/hello_gtk.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sr/hello_noop.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sr/hello_plural.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sr/hello_tk.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sv/hello.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sv/hello2.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sv/hello_glade2.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sv/hello_gtk.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sv/hello_noop.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sv/hello_plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/sv/hello_tk.po20
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/test.rb11
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ua/hello.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ua/hello2.po30
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ua/hello_glade2.po34
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ua/hello_gtk.po22
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ua/hello_noop.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ua/hello_plural.po29
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/ua/hello_tk.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/vi/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/vi/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/vi/hello_glade2.po38
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/vi/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/vi/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/vi/hello_plural.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/vi/hello_tk.po24
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh/hello.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh/hello2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh/hello_glade2.po31
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh/hello_gtk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh/hello_noop.po27
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh/hello_plural.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh/hello_tk.po23
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello.po26
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello2.po34
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_glade2.po40
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_gtk.po25
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_noop.po30
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_plural.po28
-rw-r--r--vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_tk.po26
-rw-r--r--vendor/gems/gettext-2.1.0/src/poparser.ry217
-rw-r--r--vendor/gems/gettext-2.1.0/test.rb33
-rw-r--r--vendor/gems/gettext-2.1.0/test/README1
-rw-r--r--vendor/gems/gettext-2.1.0/test/Rakefile17
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/cr/LC_MESSAGES/plural.mobin528 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/da/LC_MESSAGES/plural.mobin437 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/da/LC_MESSAGES/plural_error.mobin453 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/plural.mobin492 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/plural_error.mobin392 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/test1.mobin436 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/test2.mobin383 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ir/LC_MESSAGES/plural.mobin460 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/npgettext.mobin745 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/nsgettext.mobin480 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/pgettext.mobin542 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/plural.mobin472 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/plural_error.mobin385 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/rubyparser.mobin635 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/sgettext.mobin468 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test1.mobin431 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test2.mobin385 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test3.mobin385 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/la/LC_MESSAGES/plural.mobin478 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/la/LC_MESSAGES/plural_error.mobin434 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/li/LC_MESSAGES/plural.mobin506 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/li/LC_MESSAGES/plural_error.mobin483 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/po/LC_MESSAGES/plural.mobin500 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/locale/sl/LC_MESSAGES/plural.mobin502 -> 0 bytes
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/cr/plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/da/plural.po22
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/da/plural_error.po22
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/fr/plural.po28
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/fr/plural_error.po20
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/fr/test1.po23
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/fr/test2.po19
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ir/plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/npgettext.po46
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/nsgettext.po65
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/pgettext.po41
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/plural.po28
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/plural_error.po20
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/rubyparser.po43
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/sgettext.po47
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/test1.po23
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/test2.po19
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/ja/test3.po19
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/la/plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/la/plural_error.po21
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/li/plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/li/plural_error.po27
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/po/plural.po23
-rw-r--r--vendor/gems/gettext-2.1.0/test/po/sl/plural.po24
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_class_info.rb83
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_gettext.rb311
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_locale_path.rb50
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_parser.rb158
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_po_generation.rb20
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_pomessage.rb99
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_string.rb65
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_textdomain_bind.rb37
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_textdomain_multi.rb80
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_textdomain_toplevel.rb42
-rw-r--r--vendor/gems/gettext-2.1.0/test/test_thread.rb41
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/N_.rb66
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/erb.rhtml15
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/erb.rxml16
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/gettext.rb113
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/gladeparser.glade183
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/helper.rb11
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/multi_textdomain.rb131
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/ngettext.rb79
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/npgettext.rb31
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/nsgettext.rb42
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/pgettext.rb36
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/sgettext.rb46
-rw-r--r--vendor/gems/gettext-2.1.0/test/testlib/simple.rb14
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/files/de/app.po0
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/files/en/app.po0
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/files/en/test.po21
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/files/simple_1.po2
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/files/simple_2.po2
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/files/simple_translation.rb1
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/files/version.po7
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/test.pot21
-rw-r--r--vendor/gems/gettext-2.1.0/test/tools/test_tools.rb61
-rw-r--r--vendor/gems/json-1.5.1/.specification65
-rw-r--r--vendor/gems/json-1.5.1/CHANGES188
-rw-r--r--vendor/gems/json-1.5.1/COPYING58
-rw-r--r--vendor/gems/json-1.5.1/COPYING-json-jruby57
-rw-r--r--vendor/gems/json-1.5.1/GPL340
-rw-r--r--vendor/gems/json-1.5.1/README356
-rw-r--r--vendor/gems/json-1.5.1/README-json-jruby.markdown33
-rw-r--r--vendor/gems/json-1.5.1/Rakefile401
-rw-r--r--vendor/gems/json-1.5.1/TODO1
-rw-r--r--vendor/gems/json-1.5.1/VERSION1
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log52
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat900
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat901
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log261
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log262
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log82
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log34
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat900
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat901
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log81
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log82
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log82
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat1000
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat1001
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log82
-rwxr-xr-xvendor/gems/json-1.5.1/benchmarks/generator2_benchmark.rb222
-rwxr-xr-xvendor/gems/json-1.5.1/benchmarks/generator_benchmark.rb224
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/ohai.json1216
-rw-r--r--vendor/gems/json-1.5.1/benchmarks/ohai.ruby1
-rwxr-xr-xvendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb251
-rwxr-xr-xvendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb259
-rwxr-xr-xvendor/gems/json-1.5.1/bin/edit_json.rb9
-rwxr-xr-xvendor/gems/json-1.5.1/bin/prettify_json.rb75
-rw-r--r--vendor/gems/json-1.5.1/data/example.json1
-rw-r--r--vendor/gems/json-1.5.1/data/index.html38
-rw-r--r--vendor/gems/json-1.5.1/data/prototype.js4184
-rw-r--r--vendor/gems/json-1.5.1/ext/json/ext/generator/extconf.rb20
-rw-r--r--vendor/gems/json-1.5.1/ext/json/ext/generator/generator.c1417
-rw-r--r--vendor/gems/json-1.5.1/ext/json/ext/generator/generator.h197
-rw-r--r--vendor/gems/json-1.5.1/ext/json/ext/parser/extconf.rb16
-rw-r--r--vendor/gems/json-1.5.1/ext/json/ext/parser/parser.c1969
-rw-r--r--vendor/gems/json-1.5.1/ext/json/ext/parser/parser.h78
-rw-r--r--vendor/gems/json-1.5.1/ext/json/ext/parser/parser.rl826
-rwxr-xr-xvendor/gems/json-1.5.1/install.rb26
-rw-r--r--vendor/gems/json-1.5.1/java/lib/bytelist-1.0.6.jarbin10493 -> 0 bytes
-rw-r--r--vendor/gems/json-1.5.1/java/lib/jcodings.jarbin242327 -> 0 bytes
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/ByteListTranscoder.java167
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/Generator.java441
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/GeneratorMethods.java231
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/GeneratorService.java42
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/GeneratorState.java473
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/OptionsReader.java119
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/Parser.java2295
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/Parser.rl825
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/ParserService.java34
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/RuntimeInfo.java119
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/StringDecoder.java166
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/StringEncoder.java106
-rw-r--r--vendor/gems/json-1.5.1/java/src/json/ext/Utils.java89
-rw-r--r--vendor/gems/json-1.5.1/json-java.gemspec20
-rw-r--r--vendor/gems/json-1.5.1/lib/json.rb10
-rw-r--r--vendor/gems/json-1.5.1/lib/json/Array.xpm21
-rw-r--r--vendor/gems/json-1.5.1/lib/json/FalseClass.xpm21
-rw-r--r--vendor/gems/json-1.5.1/lib/json/Hash.xpm21
-rw-r--r--vendor/gems/json-1.5.1/lib/json/Key.xpm73
-rw-r--r--vendor/gems/json-1.5.1/lib/json/NilClass.xpm21
-rw-r--r--vendor/gems/json-1.5.1/lib/json/Numeric.xpm28
-rw-r--r--vendor/gems/json-1.5.1/lib/json/String.xpm96
-rw-r--r--vendor/gems/json-1.5.1/lib/json/TrueClass.xpm21
-rw-r--r--vendor/gems/json-1.5.1/lib/json/add/core.rb147
-rw-r--r--vendor/gems/json-1.5.1/lib/json/add/rails.rb8
-rw-r--r--vendor/gems/json-1.5.1/lib/json/common.rb419
-rw-r--r--vendor/gems/json-1.5.1/lib/json/editor.rb1369
-rw-r--r--vendor/gems/json-1.5.1/lib/json/ext.rb28
-rw-r--r--vendor/gems/json-1.5.1/lib/json/json.xpm1499
-rw-r--r--vendor/gems/json-1.5.1/lib/json/pure.rb15
-rw-r--r--vendor/gems/json-1.5.1/lib/json/pure/generator.rb441
-rw-r--r--vendor/gems/json-1.5.1/lib/json/pure/parser.rb320
-rw-r--r--vendor/gems/json-1.5.1/lib/json/version.rb8
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail1.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail10.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail11.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail12.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail13.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail14.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail18.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail19.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail2.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail20.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail21.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail22.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail23.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail24.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail25.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail27.json2
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail28.json2
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail3.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail4.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail5.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail6.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail7.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail8.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/fail9.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/pass1.json56
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/pass15.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/pass16.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/pass17.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/pass2.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/pass26.json1
-rw-r--r--vendor/gems/json-1.5.1/tests/fixtures/pass3.json6
-rw-r--r--vendor/gems/json-1.5.1/tests/setup_variant.rb11
-rwxr-xr-xvendor/gems/json-1.5.1/tests/test_json.rb390
-rwxr-xr-xvendor/gems/json-1.5.1/tests/test_json_addition.rb167
-rw-r--r--vendor/gems/json-1.5.1/tests/test_json_encoding.rb65
-rwxr-xr-xvendor/gems/json-1.5.1/tests/test_json_fixtures.rb35
-rwxr-xr-xvendor/gems/json-1.5.1/tests/test_json_generate.rb179
-rw-r--r--vendor/gems/json-1.5.1/tests/test_json_string_matching.rb40
-rwxr-xr-xvendor/gems/json-1.5.1/tests/test_json_unicode.rb72
-rwxr-xr-xvendor/gems/json-1.5.1/tools/fuzz.rb139
-rwxr-xr-xvendor/gems/json-1.5.1/tools/server.rb61
-rw-r--r--vendor/gems/locale-2.0.5/.specification112
-rw-r--r--vendor/gems/locale-2.0.5/COPYING56
-rw-r--r--vendor/gems/locale-2.0.5/ChangeLog157
-rw-r--r--vendor/gems/locale-2.0.5/README.rdoc111
-rw-r--r--vendor/gems/locale-2.0.5/Rakefile82
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale.rb329
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/data/languages.tab.gzbin62732 -> 0 bytes
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/data/regions.tab.gzbin2125 -> 0 bytes
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/driver/cgi.rb136
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/driver/env.rb64
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/driver/jruby.rb52
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/driver/posix.rb49
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/driver/win32.rb81
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/driver/win32_table.rb298
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/info.rb12
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/info/language.rb135
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/info/region.rb75
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/tag.rb39
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/tag/cldr.rb99
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/tag/common.rb129
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/tag/irregular.rb40
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/tag/posix.rb97
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/tag/rfc.rb112
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/tag/simple.rb162
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/taglist.rb109
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/util/memoizable.rb108
-rw-r--r--vendor/gems/locale-2.0.5/lib/locale/version.rb12
-rw-r--r--vendor/gems/locale-2.0.5/samples/cgi/README20
-rwxr-xr-xvendor/gems/locale-2.0.5/samples/cgi/cookie.cgi62
-rwxr-xr-xvendor/gems/locale-2.0.5/samples/cgi/http.rb52
-rwxr-xr-xvendor/gems/locale-2.0.5/samples/cgi/index.cgi90
-rw-r--r--vendor/gems/locale-2.0.5/samples/cgi/locale.css115
-rw-r--r--vendor/gems/locale-2.0.5/samples/rack/README10
-rw-r--r--vendor/gems/locale-2.0.5/samples/rack/hello_rack.rb17
-rw-r--r--vendor/gems/locale-2.0.5/samples/rack/hello_rack.ru5
-rw-r--r--vendor/gems/locale-2.0.5/samples/sample_1.rb25
-rw-r--r--vendor/gems/locale-2.0.5/samples/sample_info.rb6
-rw-r--r--vendor/gems/locale-2.0.5/setup.rb1585
-rw-r--r--vendor/gems/locale-2.0.5/test/test_detect_cgi.rb216
-rw-r--r--vendor/gems/locale-2.0.5/test/test_detect_general.rb164
-rw-r--r--vendor/gems/locale-2.0.5/test/test_driver_jruby.rb43
-rw-r--r--vendor/gems/locale-2.0.5/test/test_driver_win32.rb65
-rw-r--r--vendor/gems/locale-2.0.5/test/test_info.rb28
-rw-r--r--vendor/gems/locale-2.0.5/test/test_memoizable.rb133
-rw-r--r--vendor/gems/locale-2.0.5/test/test_tag.rb1233
-rw-r--r--vendor/gems/locale-2.0.5/test/test_taglist.rb34
-rw-r--r--vendor/gems/locale-2.0.5/test/test_thread.rb37
-rw-r--r--vendor/gems/rack-1.1.0/.specification314
-rw-r--r--vendor/gems/rack-1.1.0/COPYING18
-rw-r--r--vendor/gems/rack-1.1.0/KNOWN-ISSUES21
-rw-r--r--vendor/gems/rack-1.1.0/RDOX0
-rw-r--r--vendor/gems/rack-1.1.0/README399
-rw-r--r--vendor/gems/rack-1.1.0/SPEC171
-rwxr-xr-xvendor/gems/rack-1.1.0/bin/rackup4
-rw-r--r--vendor/gems/rack-1.1.0/contrib/rack_logo.svg111
-rw-r--r--vendor/gems/rack-1.1.0/example/lobster.ru4
-rw-r--r--vendor/gems/rack-1.1.0/example/protectedlobster.rb14
-rw-r--r--vendor/gems/rack-1.1.0/example/protectedlobster.ru8
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack.rb92
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/adapter/camping.rb22
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/auth/abstract/handler.rb37
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/auth/abstract/request.rb37
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/auth/basic.rb58
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/auth/digest/md5.rb124
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/auth/digest/nonce.rb51
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/auth/digest/params.rb55
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/auth/digest/request.rb40
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/builder.rb80
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/cascade.rb41
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/chunked.rb49
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/commonlogger.rb49
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/conditionalget.rb47
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/config.rb15
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/content_length.rb29
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/content_type.rb23
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/deflater.rb96
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/directory.rb157
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/etag.rb23
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/file.rb90
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler.rb88
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/cgi.rb61
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/evented_mongrel.rb8
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/fastcgi.rb89
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/lsws.rb63
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/mongrel.rb90
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/scgi.rb62
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/swiftiplied_mongrel.rb8
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/thin.rb18
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/handler/webrick.rb69
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/head.rb19
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/lint.rb575
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/lobster.rb65
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/lock.rb16
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/logger.rb20
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/methodoverride.rb27
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/mime.rb206
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/mock.rb189
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/nulllogger.rb18
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/recursive.rb57
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/reloader.rb109
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/request.rb271
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/response.rb149
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/rewindable_input.rb100
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/runtime.rb27
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/sendfile.rb142
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/server.rb212
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/session/abstract/id.rb140
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/session/cookie.rb90
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/session/memcache.rb119
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/session/pool.rb100
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/showexceptions.rb349
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/showstatus.rb106
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/static.rb38
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/urlmap.rb56
-rw-r--r--vendor/gems/rack-1.1.0/lib/rack/utils.rb620
-rw-r--r--vendor/gems/rack-1.1.0/rack.gemspec38
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_auth_basic.rb73
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_auth_digest.rb226
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_builder.rb84
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_camping.rb51
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_cascade.rb48
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_cgi.rb89
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_chunked.rb62
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_commonlogger.rb61
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_conditionalget.rb41
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_config.rb24
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_content_length.rb43
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_content_type.rb30
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_deflater.rb127
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_directory.rb61
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_etag.rb17
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_fastcgi.rb89
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_file.rb75
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_handler.rb43
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_head.rb30
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_lint.rb528
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_lobster.rb45
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_lock.rb38
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_logger.rb21
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_methodoverride.rb60
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_mock.rb243
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_mongrel.rb189
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_nulllogger.rb13
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_recursive.rb77
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_request.rb545
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_response.rb221
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb118
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_runtime.rb35
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_sendfile.rb86
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_session_cookie.rb73
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_session_memcache.rb273
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_session_pool.rb172
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_showexceptions.rb21
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_showstatus.rb72
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_static.rb37
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_thin.rb91
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_urlmap.rb215
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_utils.rb552
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rack_webrick.rb130
-rw-r--r--vendor/gems/rack-1.1.0/test/spec_rackup.rb154
-rw-r--r--vendor/gems/rdoc-2.4.3/.document4
-rw-r--r--vendor/gems/rdoc-2.4.3/.specification57
-rw-r--r--vendor/gems/rdoc-2.4.3/History.txt260
-rw-r--r--vendor/gems/rdoc-2.4.3/Manifest.txt126
-rw-r--r--vendor/gems/rdoc-2.4.3/README.txt47
-rw-r--r--vendor/gems/rdoc-2.4.3/RI.txt58
-rw-r--r--vendor/gems/rdoc-2.4.3/Rakefile71
-rwxr-xr-xvendor/gems/rdoc-2.4.3/bin/rdoc35
-rwxr-xr-xvendor/gems/rdoc-2.4.3/bin/ri5
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc.rb398
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/alias.rb54
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/anon_class.rb10
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/any_method.rb190
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/attr.rb79
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/cache.rb41
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/class_module.rb87
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/code_object.rb152
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/code_objects.rb23
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/constant.rb36
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/context.rb712
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/diagram.rb340
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/dot.rb249
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator.rb8
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/darkfish.rb455
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/markup.rb194
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb230
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/.document0
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/classpage.rhtml281
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/filepage.rhtml114
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/brick.pngbin452 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/brick_link.pngbin764 -> 0 bytes
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bug.pngbin774 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_black.pngbin211 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.pngbin207 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.pngbin209 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/date.pngbin626 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/find.pngbin659 -> 0 bytes
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gifbin5886 -> 0 bytes
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/macFFBgHack.pngbin207 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/package.pngbin853 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_green.pngbin621 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_white_text.pngbin342 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_white_width.pngbin309 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/plugin.pngbin591 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/ruby.pngbin592 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/tag_green.pngbin613 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/wrench.pngbin610 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/wrench_orange.pngbin584 -> 0 bytes
-rwxr-xr-xvendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/zoom.pngbin692 -> 0 bytes
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/index.rhtml64
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/darkfish.js116
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/jquery.js32
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/quicksearch.js114
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js10
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/rdoc.css696
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ghost_method.rb8
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/include.rb39
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/known_classes.rb68
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup.rb378
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/attribute_manager.rb311
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/formatter.rb25
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/fragments.rb377
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/inline.rb126
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/lines.rb156
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/preprocess.rb80
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_flow.rb211
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_html.rb406
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_html_crossref.rb140
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_latex.rb328
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_test.rb53
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_texinfo.rb73
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/meta_method.rb8
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/normal_class.rb18
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/normal_module.rb34
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/options.rb542
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/parser.rb138
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/parser/c.rb678
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/parser/perl.rb165
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/parser/ruby.rb2904
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/parser/simple.rb39
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/rdoc.rb375
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/require.rb32
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri.rb8
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/cache.rb187
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/descriptions.rb156
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/display.rb340
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/driver.rb828
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/formatter.rb654
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/paths.rb93
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/reader.rb106
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/util.rb79
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb68
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/single_class.rb8
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/stats.rb178
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/task.rb276
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/tokenstream.rb33
-rw-r--r--vendor/gems/rdoc-2.4.3/lib/rdoc/top_level.rb242
-rw-r--r--vendor/gems/rdoc-2.4.3/test/binary.datbin1024 -> 0 bytes
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test.ja.rdoc8
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test.ja.txt8
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_attribute_manager.rb76
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_any_method.rb10
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_code_object.rb80
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_constant.rb15
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_context.rb250
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_include.rb17
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_markup.rb626
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_attribute_manager.rb243
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html.rb81
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html_crossref.rb161
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_normal_module.rb26
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_parser.rb29
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_c.rb401
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_perl.rb74
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_ruby.rb1040
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_require.rb25
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_attribute_formatter.rb44
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_default_display.rb302
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_driver.rb94
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_formatter.rb320
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_html_formatter.rb141
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_overstrike_formatter.rb71
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_task.rb64
-rw-r--r--vendor/gems/rdoc-2.4.3/test/test_rdoc_top_level.rb85
-rw-r--r--vendor/gems/rdoc-2.4.3/test/xref_data.rb46
-rw-r--r--vendor/gems/rdoc-2.4.3/test/xref_test_case.rb48
-rw-r--r--vendor/gems/recaptcha-0.3.1/.specification111
-rw-r--r--vendor/gems/recaptcha-0.3.1/CHANGELOG23
-rw-r--r--vendor/gems/recaptcha-0.3.1/LICENSE19
-rw-r--r--vendor/gems/recaptcha-0.3.1/README.rdoc123
-rw-r--r--vendor/gems/recaptcha-0.3.1/Rakefile60
-rw-r--r--vendor/gems/recaptcha-0.3.1/VERSION1
-rw-r--r--vendor/gems/recaptcha-0.3.1/init.rb6
-rw-r--r--vendor/gems/recaptcha-0.3.1/lib/recaptcha.rb40
-rw-r--r--vendor/gems/recaptcha-0.3.1/lib/recaptcha/client_helper.rb42
-rw-r--r--vendor/gems/recaptcha-0.3.1/lib/recaptcha/configuration.rb52
-rw-r--r--vendor/gems/recaptcha-0.3.1/lib/recaptcha/merb.rb4
-rw-r--r--vendor/gems/recaptcha-0.3.1/lib/recaptcha/rails.rb4
-rw-r--r--vendor/gems/recaptcha-0.3.1/lib/recaptcha/verify.rb51
-rw-r--r--vendor/gems/recaptcha-0.3.1/recaptcha.gemspec62
-rw-r--r--vendor/gems/recaptcha-0.3.1/tasks/recaptcha_tasks.rake4
-rw-r--r--vendor/gems/recaptcha-0.3.1/test/recaptcha_test.rb39
-rw-r--r--vendor/gems/recaptcha-0.3.1/test/verify_recaptcha_test.rb95
-rw-r--r--vendor/gems/routing-filter-0.2.3/.specification151
-rw-r--r--vendor/gems/routing-filter-0.2.3/Gemfile8
-rw-r--r--vendor/gems/routing-filter-0.2.3/Gemfile.lock82
-rw-r--r--vendor/gems/routing-filter-0.2.3/MIT-LICENSE20
-rw-r--r--vendor/gems/routing-filter-0.2.3/README.markdown204
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing-filter.rb1
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter.rb27
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/adapters/rails_2.rb69
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/adapters/rails_3.rb77
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/chain.rb22
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/filter.rb37
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/extension.rb76
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/locale.rb82
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/pagination.rb47
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/uuid.rb40
-rw-r--r--vendor/gems/routing-filter-0.2.3/lib/routing_filter/version.rb3
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/all.rb1
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/blocks.rb33
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/filters/all_filters/generation.rb42
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/filters/all_filters/recognition.rb92
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/filters/all_filters_test.rb25
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/filters/extension_test.rb54
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/filters/locale_test.rb69
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/filters/pagination_test.rb29
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/filters/uuid_test.rb40
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/rails_test.rb92
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/routes_test.rb31
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/routing_filter_test.rb47
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/test_adapters/rails_2.rb17
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/test_adapters/rails_3.rb28
-rw-r--r--vendor/gems/routing-filter-0.2.3/test/test_helper.rb41
-rw-r--r--vendor/gems/rspec-1.3.1/.document7
-rw-r--r--vendor/gems/rspec-1.3.1/.specification574
-rw-r--r--vendor/gems/rspec-1.3.1/History.rdoc1546
-rw-r--r--vendor/gems/rspec-1.3.1/License.txt22
-rw-r--r--vendor/gems/rspec-1.3.1/Manifest.txt384
-rw-r--r--vendor/gems/rspec-1.3.1/README.rdoc41
-rw-r--r--vendor/gems/rspec-1.3.1/Rakefile149
-rw-r--r--vendor/gems/rspec-1.3.1/Ruby1.9.rdoc31
-rw-r--r--vendor/gems/rspec-1.3.1/TODO.txt17
-rw-r--r--vendor/gems/rspec-1.3.1/Upgrade.rdoc260
-rwxr-xr-xvendor/gems/rspec-1.3.1/bin/autospec4
-rwxr-xr-xvendor/gems/rspec-1.3.1/bin/spec5
-rw-r--r--vendor/gems/rspec-1.3.1/cucumber.yml5
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/README.txt11
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/diffing_spec.rb36
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/failing_implicit_docstrings_example.rb17
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/failure_in_after.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/failure_in_before.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/mocking_example.rb38
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/mocking_with_flexmock.rb26
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/mocking_with_mocha.rb25
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/mocking_with_rr.rb27
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/partial_mock_example.rb18
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/pending_example.rb7
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/predicate_example.rb32
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/raising_example.rb47
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/syntax_error_example.rb7
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/team_spec.rb41
-rw-r--r--vendor/gems/rspec-1.3.1/examples/failing/timeout_behaviour.rb5
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/custom_formatter.rb11
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/custom_matchers.rb54
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/dynamic_spec.rb7
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/file_accessor.rb18
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/file_accessor_spec.rb37
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/filtered_formatter.rb17
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/filtered_formatter_example.rb31
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/greeter_spec.rb30
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/helper_method_example.rb12
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/implicit_docstrings_example.rb16
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/io_processor.rb8
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/io_processor_spec.rb20
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/mocking_example.rb25
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/multi_threaded_example_group_runner.rb26
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/nested_classes_example.rb35
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/options_example.rb29
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/options_formatter.rb20
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/partial_mock_example.rb27
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/pending_example.rb18
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/predicate_example.rb25
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/shared_example_group_example.rb43
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/shared_stack_examples.rb36
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/simple_matcher_example.rb29
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/stack.rb36
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/stack_spec.rb63
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/stack_spec_with_nested_example_groups.rb66
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/stubbing_example.rb67
-rw-r--r--vendor/gems/rspec-1.3.1/examples/passing/yielding_example.rb31
-rw-r--r--vendor/gems/rspec-1.3.1/examples/ruby1.9.compatibility/access_to_constants_spec.rb85
-rw-r--r--vendor/gems/rspec-1.3.1/features/before_and_after_blocks/before_and_after_blocks.feature167
-rw-r--r--vendor/gems/rspec-1.3.1/features/command_line/line_number_option.feature56
-rw-r--r--vendor/gems/rspec-1.3.1/features/command_line/line_number_option_with_example_with_no_name.feature22
-rw-r--r--vendor/gems/rspec-1.3.1/features/example_groups/define_example_attribute.feature41
-rw-r--r--vendor/gems/rspec-1.3.1/features/example_groups/example_group_with_should_methods.feature29
-rw-r--r--vendor/gems/rspec-1.3.1/features/example_groups/implicit_docstrings.feature59
-rw-r--r--vendor/gems/rspec-1.3.1/features/example_groups/nested_groups.feature32
-rw-r--r--vendor/gems/rspec-1.3.1/features/expectations/customized_message.feature54
-rw-r--r--vendor/gems/rspec-1.3.1/features/expectations/expect_change.feature65
-rw-r--r--vendor/gems/rspec-1.3.1/features/expectations/expect_error.feature44
-rw-r--r--vendor/gems/rspec-1.3.1/features/extensions/custom_example_group.feature19
-rw-r--r--vendor/gems/rspec-1.3.1/features/formatters/custom_formatter.feature30
-rw-r--r--vendor/gems/rspec-1.3.1/features/formatters/nested_formatter.feature32
-rw-r--r--vendor/gems/rspec-1.3.1/features/interop/cucumber_stubs_dont_leak.feature11
-rw-r--r--vendor/gems/rspec-1.3.1/features/interop/examples_and_tests_together.feature84
-rw-r--r--vendor/gems/rspec-1.3.1/features/interop/rspec_output.feature25
-rw-r--r--vendor/gems/rspec-1.3.1/features/interop/test_but_not_test_unit.feature26
-rw-r--r--vendor/gems/rspec-1.3.1/features/interop/test_case_with_should_methods.feature46
-rw-r--r--vendor/gems/rspec-1.3.1/features/load_paths/add_lib_to_load_path.feature20
-rw-r--r--vendor/gems/rspec-1.3.1/features/load_paths/add_spec_to_load_path.feature20
-rw-r--r--vendor/gems/rspec-1.3.1/features/matchers/define_diffable_matcher.feature26
-rw-r--r--vendor/gems/rspec-1.3.1/features/matchers/define_matcher.feature179
-rw-r--r--vendor/gems/rspec-1.3.1/features/matchers/define_matcher_outside_rspec.feature38
-rw-r--r--vendor/gems/rspec-1.3.1/features/matchers/define_matcher_with_fluent_interface.feature48
-rw-r--r--vendor/gems/rspec-1.3.1/features/matchers/define_wrapped_matcher.feature56
-rw-r--r--vendor/gems/rspec-1.3.1/features/matchers/match_unless_raises.feature60
-rw-r--r--vendor/gems/rspec-1.3.1/features/matchers/match_unless_raises_unexpected_error.feature39
-rw-r--r--vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_flexmock.feature27
-rw-r--r--vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_mocha.feature27
-rw-r--r--vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_rr.feature27
-rw-r--r--vendor/gems/rspec-1.3.1/features/mocks/block_local_expectations.feature62
-rw-r--r--vendor/gems/rspec-1.3.1/features/mocks/mix_stubs_and_mocks.feature22
-rw-r--r--vendor/gems/rspec-1.3.1/features/mocks/stub_implementation.feature26
-rw-r--r--vendor/gems/rspec-1.3.1/features/pending/pending_examples.feature81
-rw-r--r--vendor/gems/rspec-1.3.1/features/runner/specify_line_number.feature32
-rw-r--r--vendor/gems/rspec-1.3.1/features/spec_helper/spec_helper.feature25
-rw-r--r--vendor/gems/rspec-1.3.1/features/step_definitions/running_rspec_steps.rb52
-rw-r--r--vendor/gems/rspec-1.3.1/features/step_definitions/stubbing_steps.rb16
-rw-r--r--vendor/gems/rspec-1.3.1/features/subject/explicit_subject.feature31
-rw-r--r--vendor/gems/rspec-1.3.1/features/subject/implicit_subject.feature43
-rw-r--r--vendor/gems/rspec-1.3.1/features/support/env.rb83
-rw-r--r--vendor/gems/rspec-1.3.1/features/support/matchers/smart_match.rb31
-rw-r--r--vendor/gems/rspec-1.3.1/geminstaller.yml29
-rw-r--r--vendor/gems/rspec-1.3.1/init.rb9
-rw-r--r--vendor/gems/rspec-1.3.1/lib/autotest/discover.rb3
-rw-r--r--vendor/gems/rspec-1.3.1/lib/autotest/rspec.rb54
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec.rb8
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/flexmock.rb24
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/mocha.rb25
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/rr.rb22
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/rspec.rb21
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/autorun.rb3
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/deprecation.rb41
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/dsl.rb1
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/dsl/main.rb93
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example.rb164
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/args_and_options.rb27
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/before_and_after_hooks.rb93
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/errors.rb25
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/example_group.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/example_group_factory.rb82
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/example_group_hierarchy.rb53
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/example_group_methods.rb287
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/example_group_proxy.rb61
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/example_matcher.rb43
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/example_methods.rb152
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/example_proxy.rb41
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/module_reopening_fix.rb43
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/pending.rb18
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/predicate_matchers.rb46
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/shared_example_group.rb59
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/example/subject.rb114
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/expectations.rb35
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/expectations/errors.rb12
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/expectations/extensions.rb1
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/expectations/extensions/kernel.rb52
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/expectations/fail_with.rb45
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/expectations/handler.rb50
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/extensions/instance_exec.rb31
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/interop/test.rb44
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/autorunner.rb6
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testcase.rb56
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testresult.rb6
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testsuite_adapter.rb36
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/ui/console/testrunner.rb61
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers.rb214
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/be.rb249
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/be_close.rb32
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/be_instance_of.rb26
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/be_kind_of.rb26
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/change.rb151
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/compatibility.rb14
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/dsl.rb20
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/eql.rb42
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/equal.rb53
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/errors.rb5
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/exist.rb16
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/generated_descriptions.rb36
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/has.rb35
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/have.rb152
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/include.rb44
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/match.rb21
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/match_array.rb71
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/matcher.rb132
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/method_missing.rb9
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/operator_matcher.rb83
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/pretty.rb37
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/raise_exception.rb131
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/respond_to.rb71
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/satisfy.rb47
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/simple_matcher.rb134
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/throw_symbol.rb100
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/matchers/wrap_expectation.rb55
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks.rb200
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/argument_expectation.rb51
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/argument_matchers.rb237
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/error_generator.rb92
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/errors.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/example_methods.rb69
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/extensions.rb1
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/extensions/object.rb3
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/framework.rb15
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/message_expectation.rb344
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/methods.rb94
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/mock.rb71
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/order_group.rb29
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/proxy.rb268
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/mocks/space.rb28
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/rake/spectask.rb230
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/rake/verify_rcov.rb52
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/ruby.rb9
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner.rb66
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/backtrace_tweaker.rb78
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/class_and_arguments_parser.rb14
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/command_line.rb15
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/configuration.rb202
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/differs/default.rb93
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/differs/load-diff-lcs.rb12
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/drb_command_line.rb32
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/example_group_runner.rb58
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/extensions/kernel.rb9
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/base_formatter.rb139
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/base_text_formatter.rb142
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/failing_example_groups_formatter.rb25
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/failing_examples_formatter.rb20
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/html_formatter.rb338
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/nested_text_formatter.rb50
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/no_op_method_missing.rb21
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/profile_formatter.rb47
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/progress_bar_formatter.rb33
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/silent_formatter.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/snippet_extractor.rb52
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/specdoc_formatter.rb33
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/text_mate_formatter.rb16
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/heckle_runner.rb72
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/heckle_runner_unsupported.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/line_number_query.rb78
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/option_parser.rb225
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/options.rb406
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/runner/reporter.rb171
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/stubs/cucumber.rb5
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/test/unit.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/lib/spec/version.rb14
-rw-r--r--vendor/gems/rspec-1.3.1/resources/helpers/cmdline.rb8
-rw-r--r--vendor/gems/rspec-1.3.1/resources/rake/examples.rake7
-rw-r--r--vendor/gems/rspec-1.3.1/resources/rake/examples_with_rcov.rake9
-rw-r--r--vendor/gems/rspec-1.3.1/resources/rake/failing_examples_with_html.rake9
-rw-r--r--vendor/gems/rspec-1.3.1/resources/rake/verify_rcov.rake7
-rw-r--r--vendor/gems/rspec-1.3.1/spec/README.jruby15
-rw-r--r--vendor/gems/rspec-1.3.1/spec/autotest/autotest_helper.rb8
-rw-r--r--vendor/gems/rspec-1.3.1/spec/autotest/autotest_matchers.rb38
-rw-r--r--vendor/gems/rspec-1.3.1/spec/autotest/discover_spec.rb8
-rw-r--r--vendor/gems/rspec-1.3.1/spec/autotest/failed_results_re_spec.rb31
-rw-r--r--vendor/gems/rspec-1.3.1/spec/autotest/rspec_spec.rb126
-rw-r--r--vendor/gems/rspec-1.3.1/spec/ruby_forker.rb13
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec.opts6
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/dsl/main_spec.rb103
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/example_group_class_definition_spec.rb51
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/example_group_factory_spec.rb180
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/example_group_methods_spec.rb778
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/example_group_proxy_spec.rb107
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/example_group_spec.rb632
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/example_matcher_spec.rb85
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/example_methods_spec.rb162
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/example_proxy_spec.rb57
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/helper_method_spec.rb24
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/nested_example_group_spec.rb71
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/pending_module_spec.rb58
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/predicate_matcher_spec.rb41
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/shared_example_group_spec.rb257
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/subclassing_example_group_spec.rb25
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/example/subject_spec.rb110
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/expectations/differs/default_spec.rb194
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/expectations/extensions/kernel_spec.rb45
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/expectations/fail_with_spec.rb96
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/expectations/handler_spec.rb206
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/expectations/wrap_expectation_spec.rb31
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_that_fails.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_that_passes.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_with_errors.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb13
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_that_fails.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_that_passes.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_with_errors.rb10
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb22
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb38
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/spec_spec.rb48
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/test_unit_spec_helper.rb18
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/testcase_spec.rb50
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/testsuite_adapter_spec.rb9
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/be_close_spec.rb50
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/be_instance_of_spec.rb36
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/be_kind_of_spec.rb33
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/be_spec.rb460
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/change_spec.rb349
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/compatibility_spec.rb28
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/description_generation_spec.rb160
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/dsl_spec.rb34
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/eql_spec.rb33
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/equal_spec.rb57
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/exist_spec.rb65
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/has_spec.rb190
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/have_spec.rb381
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/include_spec.rb88
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/match_array_spec.rb115
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/match_spec.rb57
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/matcher_spec.rb289
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/matchers_spec.rb2
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/operator_matcher_spec.rb191
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/raise_exception_spec.rb345
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/respond_to_spec.rb116
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/satisfy_spec.rb36
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/simple_matcher_spec.rb100
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/matchers/throw_symbol_spec.rb121
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/and_yield_spec.rb117
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/any_number_of_times_spec.rb36
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/argument_expectation_spec.rb23
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/argument_matchers_spec.rb19
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/at_least_spec.rb97
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/at_most_spec.rb93
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_10260_spec.rb8
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_10263_spec.rb27
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_11545_spec.rb32
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_15719_spec.rb30
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_496_spec.rb17
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_600_spec.rb22
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_7611_spec.rb19
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_7805_spec.rb22
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_8165_spec.rb31
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_8302_spec.rb26
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_830_spec.rb21
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/double_spec.rb12
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/failing_argument_matchers_spec.rb95
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/hash_including_matcher_spec.rb90
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/hash_not_including_matcher_spec.rb67
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_ordering_spec.rb94
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_space_spec.rb54
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_spec.rb594
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/multiple_return_value_spec.rb113
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/nil_expectation_warning_spec.rb53
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/null_object_mock_spec.rb54
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/once_counts_spec.rb53
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/options_hash_spec.rb35
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/partial_mock_spec.rb164
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb66
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/passing_argument_matchers_spec.rb145
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/precise_counts_spec.rb52
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/record_messages_spec.rb26
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_chain_spec.rb42
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_implementation_spec.rb31
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_spec.rb203
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/stubbed_message_expectations_spec.rb26
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/twice_counts_spec.rb67
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/mocks/unstub_spec.rb127
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/package/bin_spec_spec.rb16
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/rake/spectask_spec.rb150
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/class_and_argument_parser_spec.rb23
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/command_line_spec.rb162
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/configuration_spec.rb320
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/drb_command_line_spec.rb146
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/empty_file.txt0
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/example_group_runner_spec.rb26
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/examples.txt2
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/failed.txt3
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/base_formatter_spec.rb30
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/base_text_formatter_spec.rb113
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb45
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/failing_examples_formatter_spec.rb33
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html377
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.6.html377
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.7.html377
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.9.1.html377
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatter_spec.rb118
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/nested_text_formatter_spec.rb329
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/profile_formatter_spec.rb70
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/progress_bar_formatter_spec.rb149
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/snippet_extractor_spec.rb18
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/specdoc_formatter_spec.rb159
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html371
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html371
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html371
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html371
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatter_spec.rb106
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/heckle_runner_spec.rb78
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/heckler_spec.rb20
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/line_number_query/line_number_query_fixture.rb70
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/line_number_query_spec.rb129
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/noisy_backtrace_tweaker_spec.rb51
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/option_parser_spec.rb551
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/options_spec.rb554
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_fixture.rb7
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_fixture_runner.rb7
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_spec.rb15
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/quiet_backtrace_tweaker_spec.rb123
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/reporter_spec.rb244
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_bar.rb0
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_foo.rb0
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_spec.rb1
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/resources/custom_example_group_runner.rb14
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/resources/utf8_encoded.rb8
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/spec.opts2
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/spec_drb.opts2
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner/spec_spaced.opts2
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec/runner_spec.rb13
-rw-r--r--vendor/gems/rspec-1.3.1/spec/spec_helper.rb113
-rw-r--r--vendor/gems/rspec-1.3.1/spec/support/macros.rb29
-rw-r--r--vendor/gems/rspec-1.3.1/spec/support/spec_classes.rb133
-rw-r--r--vendor/gems/rspec-rails-1.3.3/.document7
-rw-r--r--vendor/gems/rspec-rails-1.3.3/.specification313
-rw-r--r--vendor/gems/rspec-rails-1.3.3/Contribute.rdoc4
-rw-r--r--vendor/gems/rspec-rails-1.3.3/History.rdoc314
-rw-r--r--vendor/gems/rspec-rails-1.3.3/License.txt33
-rw-r--r--vendor/gems/rspec-rails-1.3.3/Manifest.txt165
-rw-r--r--vendor/gems/rspec-rails-1.3.3/README.rdoc48
-rw-r--r--vendor/gems/rspec-rails-1.3.3/Rakefile72
-rw-r--r--vendor/gems/rspec-rails-1.3.3/TODO.txt17
-rw-r--r--vendor/gems/rspec-rails-1.3.3/Upgrade.rdoc148
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/integration_spec/integration_spec_generator.rb10
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/integration_spec/templates/integration_spec.rb4
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/CHANGES1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/rspec_generator.rb72
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/previous_failures.txt0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/rcov.opts2
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/rspec.rake144
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/script/autospec6
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/script/spec10
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/spec.opts4
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/spec_helper.rb54
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/generators/rspec_controller/USAGE33
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/generators/rspec_controller/rspec_controller_generator.rb47
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/controller_spec.rb25
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/helper_spec.rb11
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/view_spec.rb12
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_default_values.rb28
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/generators/rspec_model/USAGE18
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/generators/rspec_model/rspec_model_generator.rb35
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/generators/rspec_model/templates/model_spec.rb13
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/rspec_scaffold_generator.rb154
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/controller_spec.rb131
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/edit_erb_spec.rb25
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/helper_spec.rb11
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/index_erb_spec.rb27
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/new_erb_spec.rb25
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/routing_spec.rb33
-rw-r--r--vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/show_erb_spec.rb22
-rw-r--r--vendor/gems/rspec-rails-1.3.3/init.rb9
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/autotest/discover.rb5
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/autotest/rails_rspec.rb76
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails.rb26
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example.rb48
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/assigns_hash_proxy.rb39
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/controller_example_group.rb285
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/cookies_proxy.rb29
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/functional_example_group.rb106
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/helper_example_group.rb153
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/integration_example_group.rb16
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/model_example_group.rb15
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/render_observer.rb80
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/routing_example_group.rb16
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/routing_helpers.rb66
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/view_example_group.rb203
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions.rb11
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/rescue.rb42
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/test_case.rb16
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/test_response.rb21
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_view/base.rb35
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/active_record/base.rb45
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/active_support/test_case.rb7
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/spec/matchers/have.rb23
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/spec/runner/configuration.rb45
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/interop/testcase.rb14
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers.rb32
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/ar_be_valid.rb27
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/assert_select.rb180
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/change.rb13
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/have_text.rb57
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/include_text.rb54
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/redirect_to.rb126
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/render_template.rb129
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/route_to.rb149
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/mocks.rb140
-rw-r--r--vendor/gems/rspec-rails-1.3.3/lib/spec/rails/version.rb16
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/autotest/mappings_spec.rb86
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/rails_suite.rb7
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/action_view_base_spec_controller.rb2
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/application.rb9
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/controller_spec_controller.rb127
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/example.txt1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/redirect_spec_controller.rb70
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/render_spec_controller.rb34
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/rjs_spec_controller.rb58
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/addition_helper.rb5
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/explicit_helper.rb46
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/more_explicit_helper.rb5
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/plugin_application_helper.rb6
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/view_spec_helper.rb13
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/models/animal.rb4
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/models/person.rb18
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/models/thing.rb3
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/_partial.html.erb0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_with_errors_in_template.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_with_template.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/layouts/application.html.erb0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/layouts/simple.html.erb0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/objects/_object.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/_a_partial.html.erb0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/action_with_alternate_layout.html.erb0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/some_action.html.erb0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/some_action.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/_replacement_partial.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/hide_div.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/hide_page_element.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/insert_html.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace_html.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/visual_effect.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/no_tags.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial.html.erb2
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_used_twice.html.erb0
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_with_local_variable.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_with_sub_partial.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_spacer.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/accessor.html.erb6
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/block_helper.html.erb3
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/entry_form.html.erb2
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/explicit_helper.html.erb2
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/foo/show.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/implicit_helper.html.erb2
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/multiple_helpers.html.erb3
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/path_params.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/should_not_receive.html.erb3
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial.html.erb5
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial_using_collection.html.erb3
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial_with_array.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/view_helpers.html.erb1
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/assigns_hash_proxy_spec.rb109
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/configuration_spec.rb67
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/controller_example_group_spec.rb307
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/controller_isolation_spec.rb75
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/cookies_proxy_spec.rb87
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/error_handling_spec.rb90
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/example_group_factory_spec.rb112
-rwxr-xr-xvendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/helper_example_group_spec.rb247
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/model_example_group_spec.rb32
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/routing_example_group_spec.rb9
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/shared_routing_example_group_examples.rb237
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb33
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/view_example_group_spec.rb346
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/extensions/action_view_base_spec.rb79
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/extensions/active_record_spec.rb14
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/interop/testcase_spec.rb70
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/ar_be_valid_spec.rb19
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/assert_select_spec.rb835
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/errors_on_spec.rb37
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/have_text_spec.rb69
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/include_text_spec.rb62
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/redirect_to_spec.rb253
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/render_template_spec.rb208
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/should_change_spec.rb15
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/ar_classes.rb10
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/mock_model_spec.rb112
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/stub_model_spec.rb80
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/sample_modified_fixture.rb8
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/sample_spec.rb8
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec/rails/spec_spec.rb11
-rw-r--r--vendor/gems/rspec-rails-1.3.3/spec/spec_helper.rb78
-rw-r--r--vendor/gems/will_paginate-2.3.15/.specification108
-rw-r--r--vendor/gems/will_paginate-2.3.15/CHANGELOG.rdoc139
-rw-r--r--vendor/gems/will_paginate-2.3.15/LICENSE18
-rw-r--r--vendor/gems/will_paginate-2.3.15/README.rdoc107
-rw-r--r--vendor/gems/will_paginate-2.3.15/Rakefile53
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate.rb90
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate/array.rb16
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate/collection.rb144
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate/core_ext.rb43
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate/finder.rb264
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate/named_scope.rb170
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate/named_scope_patch.rb37
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate/version.rb9
-rw-r--r--vendor/gems/will_paginate-2.3.15/lib/will_paginate/view_helpers.rb410
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/boot.rb21
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/collection_test.rb143
-rwxr-xr-xvendor/gems/will_paginate-2.3.15/test/console8
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/database.yml22
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/finder_test.rb496
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/admin.rb3
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/developer.rb14
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/developers_projects.yml13
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/project.rb17
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/projects.yml6
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/replies.yml29
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/reply.rb7
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/schema.rb38
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/topic.rb12
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/topics.yml30
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/user.rb2
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/fixtures/users.yml35
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/helper.rb37
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/lib/activerecord_test_case.rb43
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/lib/activerecord_test_connector.rb76
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/lib/load_fixtures.rb11
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/lib/view_test_process.rb179
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/tasks.rake59
-rw-r--r--vendor/gems/will_paginate-2.3.15/test/view_test.rb373
m---------vendor/rails0
l---------vendor/railties1
-rw-r--r--vendor/ruby-msg/ChangeLog82
-rw-r--r--vendor/ruby-msg/FIXES56
-rw-r--r--vendor/ruby-msg/README128
-rw-r--r--vendor/ruby-msg/Rakefile77
-rw-r--r--vendor/ruby-msg/TODO184
-rwxr-xr-xvendor/ruby-msg/bin/mapitool195
-rw-r--r--vendor/ruby-msg/contrib/rtf2html.c155
-rw-r--r--vendor/ruby-msg/contrib/rtfdecompr.c105
-rw-r--r--vendor/ruby-msg/contrib/wmf.rb107
-rw-r--r--vendor/ruby-msg/data/mapitags.yaml4168
-rw-r--r--vendor/ruby-msg/data/named_map.yaml114
-rw-r--r--vendor/ruby-msg/data/types.yaml15
-rw-r--r--vendor/ruby-msg/lib/mapi.rb109
-rw-r--r--vendor/ruby-msg/lib/mapi/convert.rb61
-rw-r--r--vendor/ruby-msg/lib/mapi/convert/contact.rb142
-rw-r--r--vendor/ruby-msg/lib/mapi/convert/note-mime.rb274
-rw-r--r--vendor/ruby-msg/lib/mapi/convert/note-tmail.rb287
-rw-r--r--vendor/ruby-msg/lib/mapi/msg.rb440
-rw-r--r--vendor/ruby-msg/lib/mapi/property_set.rb269
-rw-r--r--vendor/ruby-msg/lib/mapi/pst.rb1806
-rw-r--r--vendor/ruby-msg/lib/mapi/rtf.rb169
-rw-r--r--vendor/ruby-msg/lib/mapi/types.rb51
-rw-r--r--vendor/ruby-msg/lib/mime.rb165
-rw-r--r--vendor/ruby-msg/lib/orderedhash.rb218
-rwxr-xr-xvendor/ruby-msg/lib/rtf.rb109
-rw-r--r--vendor/ruby-ole/ChangeLog62
-rw-r--r--vendor/ruby-ole/README115
-rw-r--r--vendor/ruby-ole/Rakefile209
-rwxr-xr-xvendor/ruby-ole/bin/oletool41
-rw-r--r--vendor/ruby-ole/data/propids.yaml56
-rw-r--r--vendor/ruby-ole/lib/ole/base.rb7
-rw-r--r--vendor/ruby-ole/lib/ole/file_system.rb2
-rw-r--r--vendor/ruby-ole/lib/ole/ranges_io.rb231
-rw-r--r--vendor/ruby-ole/lib/ole/storage.rb3
-rwxr-xr-xvendor/ruby-ole/lib/ole/storage/base.rb916
-rw-r--r--vendor/ruby-ole/lib/ole/storage/file_system.rb423
-rw-r--r--vendor/ruby-ole/lib/ole/storage/meta_data.rb148
-rw-r--r--vendor/ruby-ole/lib/ole/support.rb256
-rw-r--r--vendor/ruby-ole/lib/ole/types.rb2
-rw-r--r--vendor/ruby-ole/lib/ole/types/base.rb251
-rw-r--r--vendor/ruby-ole/lib/ole/types/property_set.rb165
2090 files changed, 3773 insertions, 174993 deletions
diff --git a/.gitignore b/.gitignore
index e1f12f68c..45865fd02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,8 @@ TAGS
/files/
/public/download
/public/*theme
+/vendor/bundle
+.bundle
+bin/
+config/aliases
+.sass-cache
diff --git a/.gitmodules b/.gitmodules
index 5bd943c5b..4f9ece146 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,6 @@
[submodule "commonlib"]
path = commonlib
url = git://git.mysociety.org/commonlib
-[submodule "vendor/rails"]
- path = vendor/rails
- url = git://github.com/rails/rails.git
[submodule "vendor/rails-locales"]
path = vendor/rails-locales
url = git://github.com/svenfuchs/rails-i18n.git
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 000000000..0a2e1f927
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,45 @@
+# Work around bug in Debian Squeeze - see https://github.com/sebbacon/alaveteli/pull/297#issuecomment-4101012
+if File.exist? "/etc/debian_version" and File.open("/etc/debian_version").read.strip == "6.0.4"
+ if File.exist? "/lib/libuuid.so.1"
+ require 'dl'
+ DL::dlopen('/lib/libuuid.so.1')
+ end
+end
+source :rubygems
+
+gem 'rails', '2.3.14'
+gem 'pg'
+
+gem 'fast_gettext', '>= 0.6.0'
+gem 'gettext', '>= 1.9.3'
+gem 'json', '~> 1.5.1'
+gem 'mahoro'
+gem 'memcache-client', :require => 'memcache'
+gem 'locale', '>= 2.0.5'
+gem 'net-purge'
+gem 'rack', '~> 1.1.0'
+gem 'rdoc', '~> 2.4.3'
+gem 'recaptcha', '~> 0.3.1', :require => 'recaptcha/rails'
+# :require avoids "already initialized constant" warnings
+gem 'rmagick', :require => 'RMagick'
+gem 'routing-filter', '~> 0.2.4'
+gem 'rspec', '~> 1.3.2'
+gem 'rspec-rails', '~> 1.3.4'
+gem 'ruby-msg', '~> 1.5.0'
+gem 'test-unit', '~> 1.2.3' if RUBY_VERSION.to_f >= 1.9
+gem 'vpim'
+gem 'will_paginate', '~> 2.3.11'
+# when 1.2.9 is released by the maintainer, we can stop using this fork:
+gem 'xapian-full', '~> 1.2.9', :git => 'git://github.com/sebbacon/xapian-full.git'
+gem 'xml-simple'
+gem 'zip'
+
+group :test do
+ gem 'fakeweb'
+ gem 'rspec-rails', '~> 1.3.4'
+end
+
+group :develop do
+ gem 'ruby-debug'
+ gem 'annotate'
+end
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 000000000..084ce19f3
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,95 @@
+GIT
+ remote: git://github.com/sebbacon/xapian-full.git
+ revision: 8f0f827d5964b28daa72c756e40caabfa2981fd0
+ specs:
+ xapian-full (1.2.9)
+
+GEM
+ remote: http://rubygems.org/
+ specs:
+ actionmailer (2.3.14)
+ actionpack (= 2.3.14)
+ actionpack (2.3.14)
+ activesupport (= 2.3.14)
+ rack (~> 1.1.0)
+ activerecord (2.3.14)
+ activesupport (= 2.3.14)
+ activeresource (2.3.14)
+ activesupport (= 2.3.14)
+ activesupport (2.3.14)
+ annotate (2.4.0)
+ columnize (0.3.6)
+ fakeweb (1.3.0)
+ fast_gettext (0.6.1)
+ gettext (2.1.0)
+ locale (>= 2.0.5)
+ json (1.5.4)
+ linecache (0.46)
+ rbx-require-relative (> 0.0.4)
+ locale (2.0.5)
+ mahoro (0.3)
+ memcache-client (1.8.5)
+ net-purge (0.1.0)
+ pg (0.11.0)
+ rack (1.1.0)
+ rails (2.3.14)
+ actionmailer (= 2.3.14)
+ actionpack (= 2.3.14)
+ activerecord (= 2.3.14)
+ activeresource (= 2.3.14)
+ activesupport (= 2.3.14)
+ rake (>= 0.8.3)
+ rake (0.9.2)
+ rbx-require-relative (0.0.9)
+ rdoc (2.4.3)
+ recaptcha (0.3.1)
+ rmagick (2.13.1)
+ routing-filter (0.2.4)
+ actionpack
+ rspec (1.3.2)
+ rspec-rails (1.3.4)
+ rack (>= 1.0.0)
+ rspec (~> 1.3.1)
+ ruby-debug (0.10.4)
+ columnize (>= 0.1)
+ ruby-debug-base (~> 0.10.4.0)
+ ruby-debug-base (0.10.4)
+ linecache (>= 0.3)
+ ruby-msg (1.5.0)
+ ruby-ole (>= 1.2.8)
+ vpim (>= 0.360)
+ ruby-ole (1.2.11.2)
+ vpim (0.695)
+ will_paginate (2.3.16)
+ xml-simple (1.1.0)
+ zip (2.0.2)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ annotate
+ fakeweb
+ fast_gettext (>= 0.6.0)
+ gettext (>= 1.9.3)
+ json (~> 1.5.1)
+ locale (>= 2.0.5)
+ mahoro
+ memcache-client
+ net-purge
+ pg
+ rack (~> 1.1.0)
+ rails (= 2.3.14)
+ rdoc (~> 2.4.3)
+ recaptcha (~> 0.3.1)
+ rmagick
+ routing-filter (~> 0.2.4)
+ rspec (~> 1.3.2)
+ rspec-rails (~> 1.3.4)
+ ruby-debug
+ ruby-msg (~> 1.5.0)
+ vpim
+ will_paginate (~> 2.3.11)
+ xapian-full (~> 1.2.9)!
+ xml-simple
+ zip
diff --git a/README.md b/README.md
index 168c52634..ca484348b 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
This is an open source project to create a standard, internationalised
platform for making Freedom of Information (FOI) requests in different
countries around the world. The software started off life as
-[WhatDoTheyKnow](http://github.com), a website produced by
+[WhatDoTheyKnow](http://www.whatdotheyknow.com), a website produced by
[mySociety](http://mysociety.org) for making FOI requests in the UK.
We hope that by joining forces between teams across the world, we can
diff --git a/Rakefile b/Rakefile
index d4ebade51..903989e5b 100644
--- a/Rakefile
+++ b/Rakefile
@@ -3,6 +3,7 @@
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
+require 'rake/dsl_definition'
require 'rake'
require 'rake/testtask'
require 'rdoc/task'
diff --git a/app/controllers/admin_censor_rule_controller.rb b/app/controllers/admin_censor_rule_controller.rb
index 2c0c7ca4e..52df8dfc1 100644
--- a/app/controllers/admin_censor_rule_controller.rb
+++ b/app/controllers/admin_censor_rule_controller.rb
@@ -65,7 +65,7 @@ class AdminCensorRuleController < AdminController
render :action => 'edit'
end
end
-
+
def destroy
censor_rule = CensorRule.find(params[:censor_rule_id])
info_request = censor_rule.info_request
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb
index adb506b91..884d7e540 100644
--- a/app/controllers/admin_controller.rb
+++ b/app/controllers/admin_controller.rb
@@ -36,6 +36,8 @@ class AdminController < ApplicationController
# also force a search reindexing (so changed text reflected in search)
info_request.reindex_request_events
+ # and remove from varnsi
+ info_request.purge_in_cache
end
# Expire cached attachment files for a user
@@ -44,23 +46,40 @@ class AdminController < ApplicationController
expire_for_request(info_request)
end
end
- private
- def authenticate
- config_username = MySociety::Config.get('ADMIN_USERNAME', '')
- config_password = MySociety::Config.get('ADMIN_PASSWORD', '')
- if !config_username.empty? && !config_password.empty?
- authenticate_or_request_with_http_basic do |user_name, password|
- if user_name == config_username && password == config_password
- session[:using_admin] = 1
- request.env['REMOTE_USER'] = user_name
- else
- request_http_basic_authentication
+ private
+
+ def authenticate
+ if MySociety::Config.get('SKIP_ADMIN_AUTH', false)
+ session[:using_admin] = 1
+ return
+ else
+ if session[:using_admin].nil?
+ if params[:emergency].nil?
+ if authenticated?(
+ :web => _("To log into the administrative interface"),
+ :email => _("Then you can log into the administrative interface"),
+ :email_subject => _("Log into the admin interface"),
+ :user_name => "a superuser")
+ if !@user.nil? && @user.admin_level == "super"
+ session[:using_admin] = 1
+ request.env['REMOTE_USER'] = @user.url_name
+ end
+ end
+ else
+ config_username = MySociety::Config.get('ADMIN_USERNAME', '')
+ config_password = MySociety::Config.get('ADMIN_PASSWORD', '')
+ authenticate_or_request_with_http_basic do |user_name, password|
+ if user_name == config_username && password == config_password
+ session[:using_admin] = 1
+ request.env['REMOTE_USER'] = user_name
+ else
+ request_http_basic_authentication
+ end
end
end
- else
- session[:using_admin] = 1
end
- end
+ end
+ end
end
diff --git a/app/controllers/admin_general_controller.rb b/app/controllers/admin_general_controller.rb
index 0b7e9bec0..c83ae0f37 100644
--- a/app/controllers/admin_general_controller.rb
+++ b/app/controllers/admin_general_controller.rb
@@ -30,8 +30,9 @@ class AdminGeneralController < AdminController
# Tasks to do
@requires_admin_requests = InfoRequest.find(:all, :select => '*, ' + InfoRequest.last_event_time_clause + ' as last_event_time', :conditions => ["described_state = 'requires_admin'"], :order => "last_event_time")
@error_message_requests = InfoRequest.find(:all, :select => '*, ' + InfoRequest.last_event_time_clause + ' as last_event_time', :conditions => ["described_state = 'error_message'"], :order => "last_event_time")
+ @attention_requests = InfoRequest.find(:all, :select => '*, ' + InfoRequest.last_event_time_clause + ' as last_event_time', :conditions => ["described_state = 'attention_requested'"], :order => "last_event_time")
@blank_contacts = PublicBody.find(:all, :conditions => ["request_email = ''"], :order => "updated_at")
- @old_unclassified = InfoRequest.find_old_unclassified(:limit => 20,
+ @old_unclassified = InfoRequest.find_old_unclassified(:limit => 20,
:conditions => ["prominence = 'normal'"])
@holding_pen_messages = InfoRequest.holding_pen_request.incoming_messages
end
@@ -80,9 +81,10 @@ class AdminGeneralController < AdminController
def debug
@current_commit = `git log -1 --format="%H"`
@current_branch = `git branch | grep "\*" | awk '{print $2}'`
+ @current_version = `git describe --always --tags`
repo = `git remote show origin -n | grep Fetch | awk '{print $3}' | sed -re 's/.*:(.*).git/\\1/'`
@github_origin = "https://github.com/#{repo.strip}/tree/"
- @request_env = request.env
+ @request_env = request.env
end
end
diff --git a/app/controllers/admin_public_body_controller.rb b/app/controllers/admin_public_body_controller.rb
index bf7c07905..be733ab7d 100644
--- a/app/controllers/admin_public_body_controller.rb
+++ b/app/controllers/admin_public_body_controller.rb
@@ -16,7 +16,7 @@ class AdminPublicBodyController < AdminController
def _lookup_query_internal
@locale = self.locale_from_params()
- PublicBody.with_locale(@locale) do
+ PublicBody.with_locale(@locale) do
@query = params[:query]
if @query == ""
@query = nil
@@ -26,13 +26,13 @@ class AdminPublicBodyController < AdminController
@page = nil
end
@public_bodies = PublicBody.paginate :order => "public_body_translations.name", :page => @page, :per_page => 100,
- :conditions => @query.nil? ? "public_body_translations.locale = '#{@locale}'" :
- ["(lower(public_body_translations.name) like lower('%'||?||'%') or
- lower(public_body_translations.short_name) like lower('%'||?||'%') or
+ :conditions => @query.nil? ? "public_body_translations.locale = '#{@locale}'" :
+ ["(lower(public_body_translations.name) like lower('%'||?||'%') or
+ lower(public_body_translations.short_name) like lower('%'||?||'%') or
lower(public_body_translations.request_email) like lower('%'||?||'%' )) AND (public_body_translations.locale = '#{@locale}')", @query, @query, @query],
:joins => :translations
end
- @public_bodies_by_tag = PublicBody.find_by_tag(@query)
+ @public_bodies_by_tag = PublicBody.find_by_tag(@query)
end
def list
@@ -62,11 +62,11 @@ class AdminPublicBodyController < AdminController
def missing_scheme
# There might be a way to do this in ActiveRecord, but I can't find it
@public_bodies = PublicBody.find_by_sql("
- SELECT a.id, a.name, a.url_name, COUNT(*) AS howmany
- FROM public_bodies a JOIN info_requests r ON a.id = r.public_body_id
- WHERE a.publication_scheme = ''
- GROUP BY a.id, a.name, a.url_name
- ORDER BY howmany DESC
+ SELECT a.id, a.name, a.url_name, COUNT(*) AS howmany
+ FROM public_bodies a JOIN info_requests r ON a.id = r.public_body_id
+ WHERE a.publication_scheme = ''
+ GROUP BY a.id, a.name, a.url_name
+ ORDER BY howmany DESC
LIMIT 20
")
@stats = {
@@ -77,7 +77,7 @@ class AdminPublicBodyController < AdminController
def show
@locale = self.locale_from_params()
- PublicBody.with_locale(@locale) do
+ PublicBody.with_locale(@locale) do
@public_body = PublicBody.find(params[:id])
render
end
@@ -87,7 +87,7 @@ class AdminPublicBodyController < AdminController
@public_body = PublicBody.new
render
end
-
+
def create
PublicBody.with_locale(I18n.default_locale) do
params[:public_body][:last_edit_editor] = admin_http_auth_user()
@@ -103,7 +103,7 @@ class AdminPublicBodyController < AdminController
def edit
@public_body = PublicBody.find(params[:id])
- @public_body.last_edit_comment = ""
+ @public_body.last_edit_comment = ""
render
end
@@ -122,7 +122,7 @@ class AdminPublicBodyController < AdminController
def destroy
@locale = self.locale_from_params()
- PublicBody.with_locale(@locale) do
+ PublicBody.with_locale(@locale) do
public_body = PublicBody.find(params[:id])
if public_body.info_requests.size > 0
@@ -147,7 +147,7 @@ class AdminPublicBodyController < AdminController
else
raise "internal error, unknown button label"
end
-
+
# Try with dry run first
csv_contents = params[:csv_file].read
en = PublicBody.import_csv(csv_contents, params[:tag], params[:tag_behaviour], true, admin_http_auth_user(), I18n.available_locales)
@@ -174,7 +174,7 @@ class AdminPublicBodyController < AdminController
@errors = ""
@notes = ""
end
-
+
end
private
diff --git a/app/controllers/admin_request_controller.rb b/app/controllers/admin_request_controller.rb
index e5de4f8b7..522e1cd39 100644
--- a/app/controllers/admin_request_controller.rb
+++ b/app/controllers/admin_request_controller.rb
@@ -6,6 +6,8 @@
#
# $Id: admin_request_controller.rb,v 1.42 2009-10-03 01:28:33 francis Exp $
+require 'ostruct'
+
class AdminRequestController < AdminController
def index
list
@@ -24,6 +26,15 @@ class AdminRequestController < AdminController
def show
@info_request = InfoRequest.find(params[:id])
+ # XXX is this *really* the only way to render a template to a
+ # variable, rather than to the response?
+ vars = OpenStruct.new(:name_to => @info_request.user.name,
+ :name_from => MySociety::Config.get("CONTACT_NAME", 'Alaveteli'),
+ :info_request => @info_request, :reason => params[:reason],
+ :info_request_url => 'http://' + MySociety::Config.get('DOMAIN') + request_url(@info_request),
+ :site_name => site_name)
+ template = File.read(File.join(File.dirname(__FILE__), "..", "views", "admin_request", "hidden_user_explanation.rhtml"))
+ @request_hidden_user_explanation = ERB.new(template).result(vars.instance_eval { binding })
end
def resend
@@ -60,10 +71,10 @@ class AdminRequestController < AdminController
if @info_request.valid?
@info_request.save!
- @info_request.log_event("edit",
- { :editor => admin_http_auth_user(),
- :old_title => old_title, :title => @info_request.title,
- :old_prominence => old_prominence, :prominence => @info_request.prominence,
+ @info_request.log_event("edit",
+ { :editor => admin_http_auth_user(),
+ :old_title => old_title, :title => @info_request.title,
+ :old_prominence => old_prominence, :prominence => @info_request.prominence,
:old_described_state => old_described_state, :described_state => @info_request.described_state,
:old_awaiting_description => old_awaiting_description, :awaiting_description => @info_request.awaiting_description,
:old_allow_new_responses_from => old_allow_new_responses_from, :allow_new_responses_from => @info_request.allow_new_responses_from,
@@ -75,7 +86,7 @@ class AdminRequestController < AdminController
else
render :action => 'edit'
end
- end
+ end
def fully_destroy
@info_request = InfoRequest.find(params[:id])
@@ -99,28 +110,28 @@ class AdminRequestController < AdminController
outgoing_message_id = @outgoing_message.id
@outgoing_message.fully_destroy
- @outgoing_message.info_request.log_event("destroy_outgoing",
+ @outgoing_message.info_request.log_event("destroy_outgoing",
{ :editor => admin_http_auth_user(), :deleted_outgoing_message_id => outgoing_message_id })
flash[:notice] = 'Outgoing message successfully destroyed.'
redirect_to request_admin_url(@info_request)
- end
+ end
def update_outgoing
@outgoing_message = OutgoingMessage.find(params[:id])
old_body = @outgoing_message.body
- if @outgoing_message.update_attributes(params[:outgoing_message])
- @outgoing_message.info_request.log_event("edit_outgoing",
- { :outgoing_message_id => @outgoing_message.id, :editor => admin_http_auth_user(),
+ if @outgoing_message.update_attributes(params[:outgoing_message])
+ @outgoing_message.info_request.log_event("edit_outgoing",
+ { :outgoing_message_id => @outgoing_message.id, :editor => admin_http_auth_user(),
:old_body => old_body, :body => @outgoing_message.body })
flash[:notice] = 'Outgoing message successfully updated.'
redirect_to request_admin_url(@outgoing_message.info_request)
else
render :action => 'edit_outgoing'
end
- end
+ end
def edit_comment
@comment = Comment.find(params[:id])
@@ -133,9 +144,9 @@ class AdminRequestController < AdminController
old_visible = @comment.visible
@comment.visible = params[:comment][:visible] == "true" ? true : false
- if @comment.update_attributes(params[:comment])
- @comment.info_request.log_event("edit_comment",
- { :comment_id => @comment.id, :editor => admin_http_auth_user(),
+ if @comment.update_attributes(params[:comment])
+ @comment.info_request.log_event("edit_comment",
+ { :comment_id => @comment.id, :editor => admin_http_auth_user(),
:old_body => old_body, :body => @comment.body,
:old_visible => old_visible, :visible => @comment.visible,
})
@@ -144,7 +155,7 @@ class AdminRequestController < AdminController
else
render :action => 'edit_comment'
end
- end
+ end
def destroy_incoming
@@ -153,41 +164,45 @@ class AdminRequestController < AdminController
incoming_message_id = @incoming_message.id
@incoming_message.fully_destroy
- @incoming_message.info_request.log_event("destroy_incoming",
+ @incoming_message.info_request.log_event("destroy_incoming",
{ :editor => admin_http_auth_user(), :deleted_incoming_message_id => incoming_message_id })
flash[:notice] = 'Incoming message successfully destroyed.'
redirect_to request_admin_url(@info_request)
- end
+ end
def redeliver_incoming
incoming_message = IncomingMessage.find(params[:redeliver_incoming_message_id])
-
- if params[:url_title].match(/^[0-9]+$/)
- destination_request = InfoRequest.find(params[:url_title].to_i)
- else
- destination_request = InfoRequest.find_by_url_title(params[:url_title])
- end
-
- if destination_request.nil?
- flash[:error] = "Failed to find destination request '" + params[:url_title] + "'"
- redirect_to request_admin_url(incoming_message.info_request)
+ message_ids = params[:url_title].split(",").each {|x| x.strip}
+ destination_request = nil
+ ActiveRecord::Base.transaction do
+ for m in message_ids
+ if m.match(/^[0-9]+$/)
+ destination_request = InfoRequest.find_by_id(m.to_i)
+ else
+ destination_request = InfoRequest.find_by_url_title(m)
+ end
+ if destination_request.nil?
+ flash[:error] = "Failed to find destination request '" + m + "'"
+ return redirect_to request_admin_url(incoming_message.info_request)
+ end
+
+ raw_email_data = incoming_message.raw_email.data
+ mail = TMail::Mail.parse(raw_email_data)
+ mail.base64_decode
+ destination_request.receive(mail, raw_email_data, true)
+
+ incoming_message_id = incoming_message.id
+ incoming_message.info_request.log_event("redeliver_incoming", {
+ :editor => admin_http_auth_user(),
+ :destination_request => destination_request.id,
+ :deleted_incoming_message_id => incoming_message_id
+ })
+
+ flash[:notice] = "Message has been moved to request(s). Showing the last one:"
+ end
+ incoming_message.fully_destroy
end
-
- raw_email_data = incoming_message.raw_email.data
- mail = TMail::Mail.parse(raw_email_data)
- mail.base64_decode
- destination_request.receive(mail, raw_email_data, true)
-
- incoming_message_id = incoming_message.id
- incoming_message.fully_destroy
- incoming_message.info_request.log_event("redeliver_incoming", {
- :editor => admin_http_auth_user(),
- :destination_request => destination_request.id,
- :deleted_incoming_message_id => incoming_message_id
- })
-
- flash[:notice] = "Message has been moved to this request"
redirect_to request_admin_url(destination_request)
end
@@ -202,10 +217,10 @@ class AdminRequestController < AdminController
else
info_request.user = destination_user
info_request.save!
- info_request.log_event("move_request", {
- :editor => admin_http_auth_user(),
- :old_user_url_name => old_user.url_name,
- :user_url_name => destination_user.url_name
+ info_request.log_event("move_request", {
+ :editor => admin_http_auth_user(),
+ :old_user_url_name => old_user.url_name,
+ :user_url_name => destination_user.url_name
})
info_request.reindex_request_events
@@ -220,10 +235,10 @@ class AdminRequestController < AdminController
else
info_request.public_body = destination_public_body
info_request.save!
- info_request.log_event("move_request", {
- :editor => admin_http_auth_user(),
- :old_public_body_url_name => old_public_body.url_name,
- :public_body_url_name => destination_public_body.url_name
+ info_request.log_event("move_request", {
+ :editor => admin_http_auth_user(),
+ :old_public_body_url_name => old_public_body.url_name,
+ :public_body_url_name => destination_public_body.url_name
})
info_request.reindex_request_events
@@ -288,16 +303,16 @@ class AdminRequestController < AdminController
if domain.nil?
@public_bodies = []
else
- @public_bodies = PublicBody.find(:all, :order => "name",
+ @public_bodies = PublicBody.find(:all, :order => "name",
:conditions => [ "lower(request_email) like lower('%'||?||'%')", domain ])
end
-
+
# 2. Match the email address in the message without matching the hash
@info_requests = InfoRequest.guess_by_incoming_email(@raw_email.incoming_message)
# 3. Give a reason why it's in the holding pen
last_event = InfoRequestEvent.find_by_incoming_message_id(@raw_email.incoming_message.id)
- @rejected_reason = last_event.params[:rejected_reason]
+ @rejected_reason = last_event.params[:rejected_reason] || "unknown reason"
end
end
@@ -323,6 +338,24 @@ class AdminRequestController < AdminController
redirect_to request_admin_url(info_request_event.info_request)
end
+ def hide_request
+ ActiveRecord::Base.transaction do
+ explanation = params[:explanation]
+ info_request = InfoRequest.find(params[:id])
+ info_request.set_described_state(params[:reason])
+ info_request.prominence = "requester_only"
+ info_request.save!
+
+ ContactMailer.deliver_from_admin_message(
+ info_request.user,
+ "hello",
+ params[:explanation]
+ )
+ flash[:notice] = _("Your message to {{recipient_user_name}} has been sent",:recipient_user_name=>CGI.escapeHTML(info_request.user.name))
+ redirect_to request_admin_url(info_request)
+ end
+ end
+
private
end
diff --git a/app/controllers/admin_user_controller.rb b/app/controllers/admin_user_controller.rb
index 249030537..4059ac0bb 100644
--- a/app/controllers/admin_user_controller.rb
+++ b/app/controllers/admin_user_controller.rb
@@ -15,7 +15,7 @@ class AdminUserController < AdminController
def list
@query = params[:query]
@admin_users = User.paginate :order => "name", :page => params[:page], :per_page => 100,
- :conditions => @query.nil? ? nil : ["lower(name) like lower('%'||?||'%') or
+ :conditions => @query.nil? ? nil : ["lower(name) like lower('%'||?||'%') or
lower(email) like lower('%'||?||'%')", @query, @query]
end
@@ -28,7 +28,7 @@ class AdminUserController < AdminController
# Don't use @user as that is any logged in user
@admin_user = User.find(params[:id])
end
-
+
def show_bounce_message
@admin_user = User.find(params[:id])
end
@@ -54,7 +54,7 @@ class AdminUserController < AdminController
else
render :action => 'edit'
end
- end
+ end
def destroy_track
track_thing = TrackThing.find(params[:track_id].to_i)
@@ -62,7 +62,7 @@ class AdminUserController < AdminController
flash[:notice] = 'Track destroyed'
redirect_to user_admin_url(track_thing.tracking_user)
end
-
+
def clear_bounce
user = User.find(params[:id])
user.email_bounced_at = nil
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 0508abe76..e305e90f4 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
# controllers/application.rb:
# Parent class of all controllers in FOI site. Filters added to this controller
# apply to all controllers in the application. Likewise, all the methods added
@@ -19,7 +20,7 @@ class ApplicationController < ActionController::Base
# Send notification email on exceptions
include ExceptionNotification::Notifiable
-
+
# Note: a filter stops the chain if it redirects or renders something
before_filter :authentication_check
before_filter :set_gettext_locale
@@ -33,7 +34,7 @@ class ApplicationController < ActionController::Base
def set_vary_header
response.headers['Vary'] = 'Cookie'
end
-
+
helper_method :anonymous_cache, :short_cache, :medium_cache, :long_cache
def anonymous_cache(time)
if session[:user_id].nil?
@@ -117,8 +118,20 @@ class ApplicationController < ActionController::Base
# Override default error handler, for production sites.
def rescue_action_in_public(exception)
+ # Call `set_view_paths` from the theme, if it exists.
+ # Normally, this is called by the theme itself in a
+ # :before_filter, but when there's an error, this doesn't
+ # happen. By calling it here, we can ensure error pages are
+ # still styled according to the theme.
+ begin
+ set_view_paths
+ rescue NameError => e
+ if !(e.message =~ /undefined local variable or method `set_view_paths'/)
+ raise
+ end
+ end
# Make sure expiry time for session is set (before_filters are
- # otherwise missed by this override)
+ # otherwise missed by this override)
session_remember_me
case exception
when ActiveRecord::RecordNotFound, ActionController::UnknownAction, ActionController::RoutingError
@@ -140,13 +153,13 @@ class ApplicationController < ActionController::Base
alias original_rescue_action_locally rescue_action_locally
def rescue_action_locally(exception)
# Make sure expiry time for session is set (before_filters are
- # otherwise missed by this override)
+ # otherwise missed by this override)
session_remember_me
# Display default, detailed error for developers
original_rescue_action_locally(exception)
end
-
+
def local_request?
false
end
@@ -178,7 +191,7 @@ class ApplicationController < ActionController::Base
end
def foi_fragment_cache_path(param)
- path = File.join(RAILS_ROOT, 'cache', 'views', foi_fragment_cache_part_path(param))
+ path = File.join(Rails.root, 'cache', 'views', foi_fragment_cache_part_path(param))
max_file_length = 255 - 35 # we subtract 35 because tempfile
# adds on a variable number of
# characters
@@ -207,7 +220,7 @@ class ApplicationController < ActionController::Base
end
end
- # get the local locale
+ # get the local locale
def locale_from_params(*args)
if params[:show_locale]
params[:show_locale]
@@ -307,7 +320,7 @@ class ApplicationController < ActionController::Base
end
end
- #
+ #
def check_read_only
read_only = MySociety::Config.get('READ_ONLY', '')
if !read_only.empty?
@@ -336,7 +349,7 @@ class ApplicationController < ActionController::Base
@http_auth_user = admin_http_auth_user
end
- # Convert URL name for sort by order, to Xapian query
+ # Convert URL name for sort by order, to Xapian query
def order_to_sort_by(sortby)
if sortby.nil?
return [nil, nil]
@@ -352,7 +365,7 @@ class ApplicationController < ActionController::Base
end
# Function for search
- def perform_search(models, query, sortby, collapse, per_page = 25, this_page = nil)
+ def perform_search(models, query, sortby, collapse, per_page = 25, this_page = nil)
@query = query
@sortby = sortby
@@ -388,7 +401,7 @@ class ApplicationController < ActionController::Base
collapse = 'request_collapse'
end
options = {
- :offset => (@page - 1) * @per_page,
+ :offset => (@page - 1) * @per_page,
:limit => @per_page,
:sort_by_prefix => nil,
:sort_by_ascending => true,
@@ -407,7 +420,7 @@ class ApplicationController < ActionController::Base
if e.message =~ /^QueryParserError: Wildcard/
# Wildcard expands to too many terms
logger.info "Wildcard query '#{query.strip + '*'}' caused: #{e.message}"
-
+
user_query = ActsAsXapian.query_parser.parse_query(
query,
Xapian::QueryParser::FLAG_LOVEHATE |
@@ -436,8 +449,8 @@ class ApplicationController < ActionController::Base
def param_exists(item)
return params[item] && !params[item].empty?
- end
-
+ end
+
def get_request_variety_from_params
query = ""
sortby = "newest"
@@ -462,7 +475,7 @@ class ApplicationController < ActionController::Base
def get_status_from_params
query = ""
- if params[:latest_status]
+ if params[:latest_status]
statuses = []
if params[:latest_status].class == String
params[:latest_status] = [params[:latest_status]]
@@ -513,7 +526,7 @@ class ApplicationController < ActionController::Base
query = ""
tags = []
if param_exists(:tags)
- params[:tags].split().each do |tag|
+ params[:tags].split().each do |tag|
tags << "tag:#{tag}"
end
end
@@ -522,7 +535,7 @@ class ApplicationController < ActionController::Base
end
return query
end
-
+
def make_query_from_params
query = params[:query] || "" if query.nil?
query += get_date_range_from_params
@@ -543,16 +556,6 @@ class ApplicationController < ActionController::Base
return country
end
- def quietly_try_to_open(url)
- begin
- result = open(url).read.strip
- rescue OpenURI::HTTPError, SocketError, Errno::ETIMEDOUT, Errno::ECONNREFUSED, Errno::EHOSTUNREACH
- logger.warn("Unable to open third-party URL #{url}")
- result = ""
- end
- return result
- end
-
# URL generating functions are needed by all controllers (for redirects),
# views (for links) and mailers (for use in emails), so include them into
# all of all.
diff --git a/app/controllers/comment_controller.rb b/app/controllers/comment_controller.rb
index 86d5b0a06..d9cd002dd 100644
--- a/app/controllers/comment_controller.rb
+++ b/app/controllers/comment_controller.rb
@@ -9,14 +9,14 @@
class CommentController < ApplicationController
before_filter :check_read_only, :only => [ :new ]
protect_from_forgery :only => [ :new ]
-
+
def new
if params[:type] == 'request'
@info_request = InfoRequest.find_by_url_title(params[:url_title])
@track_thing = TrackThing.create_track_for_request(@info_request)
if params[:comment]
@comment = Comment.new(params[:comment].merge({
- :comment_type => 'request',
+ :comment_type => 'request',
:user => @user
}))
end
@@ -38,7 +38,7 @@ class CommentController < ApplicationController
# Default to subscribing to request when first viewing form
params[:subscribe_to_request] = true
end
-
+
# See if values were valid or not
if !params[:comment] || !@existing_comment.nil? || !@comment.valid? || params[:reedit]
render :action => 'new'
diff --git a/app/controllers/general_controller.rb b/app/controllers/general_controller.rb
index 82b1b8629..6e89a2832 100644
--- a/app/controllers/general_controller.rb
+++ b/app/controllers/general_controller.rb
@@ -28,19 +28,19 @@ class GeneralController < ApplicationController
@locale = self.locale_from_params()
locale_condition = 'public_body_translations.locale = ?'
conditions = [locale_condition, @locale]
- PublicBody.with_locale(@locale) do
+ PublicBody.with_locale(@locale) do
if body_short_names.empty?
# This is too slow
- @popular_bodies = PublicBody.find(:all,
- :select => "public_bodies.*, (select count(*) from info_requests where info_requests.public_body_id = public_bodies.id) as c",
- :order => "c desc",
+ @popular_bodies = PublicBody.find(:all,
+ :select => "public_bodies.*, (select count(*) from info_requests where info_requests.public_body_id = public_bodies.id) as c",
+ :order => "c desc",
:limit => 32,
:conditions => conditions,
:joins => :translations
)
else
conditions[0] += " and public_bodies.url_name in (" + body_short_names + ")"
- @popular_bodies = PublicBody.find(:all,
+ @popular_bodies = PublicBody.find(:all,
:conditions => conditions,
:joins => :translations)
end
@@ -52,7 +52,7 @@ class GeneralController < ApplicationController
max_count = 5
xapian_object = perform_search([InfoRequestEvent], query, sortby, 'request_title_collapse', max_count)
@request_events = xapian_object.results.map { |r| r[:model] }
-
+
# If there are not yet enough successful requests, fill out the list with
# other requests
if @request_events.count < max_count
@@ -97,7 +97,7 @@ class GeneralController < ApplicationController
query_parts = @query.split("/")
if !['bodies', 'requests', 'users', 'all'].include?(query_parts[-1])
redirect_to search_url([@query, "all"], params)
- else
+ else
redirect_to search_url(@query, params)
end
end
@@ -236,4 +236,4 @@ class GeneralController < ApplicationController
end
-
+
diff --git a/app/controllers/help_controller.rb b/app/controllers/help_controller.rb
index b08438b52..e3b77271e 100644
--- a/app/controllers/help_controller.rb
+++ b/app/controllers/help_controller.rb
@@ -9,7 +9,7 @@
class HelpController < ApplicationController
# we don't even have a control subroutine for most help pages, just see their templates
-
+
before_filter :long_cache
def unhappy
@@ -61,7 +61,7 @@ class HelpController < ApplicationController
@last_request, @last_body
)
flash[:notice] = _("Your message has been sent. Thank you for getting in touch! We'll get back to you soon.")
- redirect_to frontpage_url
+ redirect_to frontpage_url
return
end
@@ -69,7 +69,7 @@ class HelpController < ApplicationController
@contact.errors.clear
end
end
-
+
end
end
diff --git a/app/controllers/holiday_controller.rb b/app/controllers/holiday_controller.rb
index 916ff54c8..7f62aa26d 100644
--- a/app/controllers/holiday_controller.rb
+++ b/app/controllers/holiday_controller.rb
@@ -1,5 +1,5 @@
# app/controllers/holiday_controller.rb:
-# Calculate dates
+# Calculate dates
#
# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
@@ -16,7 +16,7 @@ class HolidayController < ApplicationController
@request_date = Date.strptime(params[:holiday]) or raise "Invalid date"
@due_date = Holiday.due_date_from(@request_date, 20)
@skipped = Holiday.all(
- :conditions => [ 'day >= ? AND day <= ?',
+ :conditions => [ 'day >= ? AND day <= ?',
@request_date.strftime("%F"), @due_date.strftime("%F")
]
).collect { |h| h.day }.sort
diff --git a/app/controllers/public_body_controller.rb b/app/controllers/public_body_controller.rb
index 00d1cc1e0..95d936e54 100644
--- a/app/controllers/public_body_controller.rb
+++ b/app/controllers/public_body_controller.rb
@@ -14,23 +14,23 @@ class PublicBodyController < ApplicationController
def show
long_cache
if MySociety::Format.simplify_url_part(params[:url_name], 'body') != params[:url_name]
- redirect_to :url_name => MySociety::Format.simplify_url_part(params[:url_name], 'body'), :status => :moved_permanently
+ redirect_to :url_name => MySociety::Format.simplify_url_part(params[:url_name], 'body'), :status => :moved_permanently
return
end
@locale = self.locale_from_params()
- PublicBody.with_locale(@locale) do
+ PublicBody.with_locale(@locale) do
@public_body = PublicBody.find_by_url_name_with_historic(params[:url_name])
raise ActiveRecord::RecordNotFound.new("None found") if @public_body.nil?
if @public_body.url_name.nil?
redirect_to :back
return
- end
+ end
# If found by historic name, or alternate locale name, redirect to new name
if @public_body.url_name != params[:url_name]
- redirect_to show_public_body_url(:url_name => @public_body.url_name)
+ redirect_to show_public_body_url(:url_name => @public_body.url_name)
return
end
-
+
set_last_body(@public_body)
top_url = main_url("/")
@@ -50,8 +50,8 @@ class PublicBodyController < ApplicationController
begin
@xapian_requests = perform_search([InfoRequestEvent], query, sortby, 'request_collapse')
if (@page > 1)
- @page_desc = " (page " + @page.to_s + ")"
- else
+ @page_desc = " (page " + @page.to_s + ")"
+ else
@page_desc = ""
end
rescue
@@ -65,7 +65,7 @@ class PublicBodyController < ApplicationController
format.html { @has_json = true; render :template => "public_body/show"}
format.json { render :json => @public_body.json_for_api }
end
-
+
end
end
@@ -93,8 +93,8 @@ class PublicBodyController < ApplicationController
@tag = params[:tag]
@locale = self.locale_from_params()
default_locale = I18n.default_locale.to_s
- locale_condition = "(upper(public_body_translations.name) LIKE upper(?)
- OR upper(public_body_translations.notes) LIKE upper (?))
+ locale_condition = "(upper(public_body_translations.name) LIKE upper(?)
+ OR upper(public_body_translations.notes) LIKE upper (?))
AND public_body_translations.locale = ?
AND public_bodies.id <> #{PublicBody.internal_admin_body.id}"
if @tag.nil? or @tag == "all"
@@ -152,10 +152,10 @@ class PublicBodyController < ApplicationController
report = StringIO.new
CSV::Writer.generate(report, ',') do |title|
title << [
- 'Name',
+ 'Name',
'Short name',
# deliberately not including 'Request email'
- 'URL name',
+ 'URL name',
'Tags',
'Home page',
'Publication scheme',
@@ -164,12 +164,12 @@ class PublicBodyController < ApplicationController
'Version',
]
public_bodies.each do |public_body|
- title << [
- public_body.name,
- public_body.short_name,
+ title << [
+ public_body.name,
+ public_body.short_name,
# DO NOT include request_email (we don't want to make it
# easy to spam all authorities with requests)
- public_body.url_name,
+ public_body.url_name,
public_body.tag_string,
public_body.calculated_home_page,
public_body.publication_scheme,
@@ -181,7 +181,7 @@ class PublicBodyController < ApplicationController
end
report.rewind
send_data(report.read, :type=> 'text/csv; charset=utf-8; header=present',
- :filename => 'all-authorities.csv',
+ :filename => 'all-authorities.csv',
:disposition =>'attachment', :encoding => 'utf8')
end
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index 96c501755..94fbcde29 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.rb
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
# app/controllers/request_controller.rb:
# Show information about one particular request.
#
@@ -16,7 +17,7 @@ class RequestController < ApplicationController
MAX_RESULTS = 500
PER_PAGE = 25
-
+
@@custom_states_loaded = false
begin
if ENV["RAILS_ENV"] != "test"
@@ -44,11 +45,11 @@ class RequestController < ApplicationController
end
medium_cache
end
-
+
def show
medium_cache
@locale = self.locale_from_params()
- PublicBody.with_locale(@locale) do
+ PublicBody.with_locale(@locale) do
# Look up by old style numeric identifiers
if params[:url_title].match(/^[0-9]+$/)
@@ -57,7 +58,7 @@ class RequestController < ApplicationController
return
end
- # Look up by new style text names
+ # Look up by new style text names
@info_request = InfoRequest.find_by_url_title(params[:url_title])
if @info_request.nil?
raise ActiveRecord::RecordNotFound.new("Request not found")
@@ -69,7 +70,7 @@ class RequestController < ApplicationController
render :template => 'request/hidden', :status => 410 # gone
return
end
-
+
# Other parameters
@info_request_events = @info_request.info_request_events
@status = @info_request.calculate_status
@@ -77,7 +78,7 @@ class RequestController < ApplicationController
@update_status = params[:update_status] ? true : false
@old_unclassified = @info_request.is_old_unclassified? && !authenticated_user.nil?
@is_owning_user = @info_request.is_owning_user?(authenticated_user)
-
+
if @update_status
return if !@is_owning_user && !authenticated_as_user?(@info_request.user,
:web => _("To update the status of this FOI request"),
@@ -85,7 +86,7 @@ class RequestController < ApplicationController
:email_subject => _("Update the status of your request to ") + @info_request.public_body.name
)
end
-
+
@last_info_request_event_id = @info_request.last_event_id_needing_description
@new_responses_count = @info_request.events_needing_description.select {|i| i.event_type == 'response'}.size
@@ -95,14 +96,14 @@ class RequestController < ApplicationController
behavior_cache :tag => ['similar', @info_request.id] do
begin
limit = 10
- @xapian_similar = ::ActsAsXapian::Similar.new([InfoRequestEvent], @info_request.info_request_events,
+ @xapian_similar = ::ActsAsXapian::Similar.new([InfoRequestEvent], @info_request.info_request_events,
:limit => limit, :collapse_by_prefix => 'request_collapse')
@xapian_similar_more = (@xapian_similar.matches_estimated > limit)
rescue
@xapian_similar = nil
end
end
-
+
# Track corresponding to this page
@track_thing = TrackThing.create_track_for_request(@info_request)
@feed_autodetect = [ { :url => do_track_url(@track_thing, 'feed'), :title => @track_thing.params[:title_in_rss], :has_json => true } ]
@@ -122,7 +123,7 @@ class RequestController < ApplicationController
@info_request = InfoRequest.find_by_url_title(params[:url_title])
if @info_request.nil?
raise ActiveRecord::RecordNotFound.new("Request not found")
- else
+ else
if !@info_request.user_can_view?(authenticated_user)
render :template => 'request/hidden', :status => 410 # gone
return
@@ -137,16 +138,18 @@ class RequestController < ApplicationController
@per_page = 25
@page = (params[:page] || "1").to_i
@info_request = InfoRequest.find_by_url_title(params[:url_title])
+ raise ActiveRecord::RecordNotFound.new("Request not found") if @info_request.nil?
+
if !@info_request.user_can_view?(authenticated_user)
render :template => 'request/hidden', :status => 410 # gone
return
end
- @xapian_object = ::ActsAsXapian::Similar.new([InfoRequestEvent], @info_request.info_request_events,
+ @xapian_object = ::ActsAsXapian::Similar.new([InfoRequestEvent], @info_request.info_request_events,
:offset => (@page - 1) * @per_page, :limit => @per_page, :collapse_by_prefix => 'request_collapse')
-
+
if (@page > 1)
- @page_desc = " (page " + @page.to_s + ")"
- else
+ @page_desc = " (page " + @page.to_s + ")"
+ else
@page_desc = ""
end
end
@@ -158,7 +161,7 @@ class RequestController < ApplicationController
if @view == "recent"
return redirect_to request_list_all_path(:action => "list", :view => "all", :page => @page), :status => :moved_permanently
end
-
+
# Later pages are very expensive to load
if @page > MAX_RESULTS / PER_PAGE
raise ActiveRecord::RecordNotFound.new("Sorry. No pages after #{MAX_RESULTS / PER_PAGE}.")
@@ -168,14 +171,14 @@ class RequestController < ApplicationController
query = make_query_from_params
@title = _("View and search requests")
sortby = "newest"
- @cache_tag = Digest::MD5.hexdigest(query + @page.to_s)
+ @cache_tag = Digest::MD5.hexdigest(query + @page.to_s + I18n.locale.to_s)
behavior_cache :tag => [@cache_tag] do
xapian_object = perform_search([InfoRequestEvent], query, sortby, 'request_collapse')
@list_results = xapian_object.results.map { |r| r[:model] }
@matches_estimated = xapian_object.matches_estimated
@show_no_more_than = (@matches_estimated > MAX_RESULTS) ? MAX_RESULTS : @matches_estimated
end
-
+
@title = @title + " (page " + @page.to_s + ")" if (@page > 1)
@track_thing = TrackThing.create_track_for_search_query(query)
@feed_autodetect = [ { :url => do_track_url(@track_thing, 'feed'), :title => @track_thing.params[:title_in_rss], :has_json => true } ]
@@ -199,7 +202,7 @@ class RequestController < ApplicationController
# get_undescribed_requests also allows one day since the response
# arrived.
if !@user.nil? && params[:submitted_new_request].nil? && !@user.can_leave_requests_undescribed?
- @undescribed_requests = @user.get_undescribed_requests
+ @undescribed_requests = @user.get_undescribed_requests
if @undescribed_requests.size > 1
render :action => 'new_please_describe'
return
@@ -245,7 +248,7 @@ class RequestController < ApplicationController
elsif params[:public_body_id]
params[:info_request][:public_body_id] = params[:public_body_id]
end
- if !params[:info_request][:public_body_id]
+ if !params[:info_request][:public_body_id]
# compulsory to have a body by here, or go to front page which is start of process
redirect_to frontpage_url
return
@@ -263,7 +266,7 @@ class RequestController < ApplicationController
params[:outgoing_message][:info_request] = @info_request
@outgoing_message = OutgoingMessage.new(params[:outgoing_message])
@outgoing_message.set_signature_name(@user.name) if !@user.nil?
-
+
if @info_request.public_body.is_requestable?
render :action => 'new'
else
@@ -286,8 +289,8 @@ class RequestController < ApplicationController
# Create both FOI request and the first request message
@info_request = InfoRequest.new(params[:info_request])
- @outgoing_message = OutgoingMessage.new(params[:outgoing_message].merge({
- :status => 'ready',
+ @outgoing_message = OutgoingMessage.new(params[:outgoing_message].merge({
+ :status => 'ready',
:message_type => 'initial_request'
}))
@info_request.outgoing_messages << @outgoing_message
@@ -312,7 +315,7 @@ class RequestController < ApplicationController
if params[:preview].to_i == 1
message = ""
if @outgoing_message.contains_email?
- if @user.nil?
+ if @user.nil?
message += _("<p>You do not need to include your email in the request in order to get a reply, as we will ask for it on the next screen (<a href=\"%s\">details</a>).</p>") % [help_privacy_path+"#email_address"];
else
message += _("<p>You do not need to include your email in the request in order to get a reply (<a href=\"%s\">details</a>).</p>") % [help_privacy_path+"#email_address"];
@@ -358,7 +361,7 @@ class RequestController < ApplicationController
flash[:notice] = _("<p>Your {{law_used_full}} request has been <strong>sent on its way</strong>!</p>
<p><strong>We will email you</strong> when there is a response, or after {{late_number_of_days}} working days if the authority still hasn't
replied by then.</p>
- <p>If you write about this request (for example in a forum or a blog) please link to this page, and add an
+ <p>If you write about this request (for example in a forum or a blog) please link to this page, and add an
annotation below telling people about your writing.</p>",:law_used_full=>@info_request.law_used_full,
:late_number_of_days => MySociety::Config.get('REPLY_LATE_AFTER_DAYS', 20))
redirect_to show_new_request_path(:url_title => @info_request.url_title)
@@ -375,10 +378,10 @@ class RequestController < ApplicationController
return
end
- @is_owning_user = @info_request.is_owning_user?(authenticated_user)
+ @is_owning_user = @info_request.is_owning_user?(authenticated_user)
@last_info_request_event_id = @info_request.last_event_id_needing_description
@old_unclassified = @info_request.is_old_unclassified? && !authenticated_user.nil?
-
+
# Check authenticated, and parameters set. We check is_owning_user
# to get admin overrides (see is_owning_user? above)
if !@old_unclassified && !@is_owning_user && !authenticated_as_user?(@info_request.user,
@@ -405,7 +408,7 @@ class RequestController < ApplicationController
# Make the state change
old_described_state = @info_request.described_state
@info_request.set_described_state(params[:incoming_message][:described_state])
-
+
# If you're not the *actual* requester owner. e.g. you are playing the
# classification game, or you're doing this just because you are an
# admin user (not because you also own the request).
@@ -414,24 +417,24 @@ class RequestController < ApplicationController
# don't log if you were the requester XXX This is presumably so you
# don't score for classifying your own requests. Could instead
# always log and filter at display time.
- @info_request.log_event("status_update",
- { :user_id => authenticated_user.id,
- :old_described_state => old_described_state,
+ @info_request.log_event("status_update",
+ { :user_id => authenticated_user.id,
+ :old_described_state => old_described_state,
:described_state => @info_request.described_state,
})
-
+
# Don't give advice on what to do next, as it isn't their request
RequestMailer.deliver_old_unclassified_updated(@info_request)
- if session[:request_game]
+ if session[:request_game]
flash[:notice] = _('Thank you for updating the status of the request \'<a href="{{url}}">{{info_request_title}}</a>\'. There are some more requests below for you to classify.',:info_request_title=>CGI.escapeHTML(@info_request.title), :url=>CGI.escapeHTML(request_url(@info_request)))
- redirect_to play_url
+ redirect_to play_url
else
flash[:notice] = _('Thank you for updating this request!')
redirect_to request_url(@info_request)
end
return
end
-
+
# Display advice for requester on what to do next, as appropriate
if @info_request.calculate_status == 'waiting_response'
flash[:notice] = _("<p>Thank you! Hopefully your wait isn't too long.</p> <p>By law, you should get a response promptly, and normally before the end of <strong>
@@ -447,14 +450,14 @@ class RequestController < ApplicationController
flash[:notice] = _("<p>Thank you! Here are some ideas on what to do next:</p>
<ul>
<li>To send your request to another authority, first copy the text of your request below, then <a href=\"{{find_authority_url}}\">find the other authority</a>.</li>
- <li>If you would like to contest the authority's claim that they do not hold the information, here is
+ <li>If you would like to contest the authority's claim that they do not hold the information, here is
<a href=\"{{complain_url}}\">how to complain</a>.
</li>
<li>We have <a href=\"{{other_means_url}}\">suggestions</a>
on other means to answer your question.
</li>
- </ul>",
- :find_authority_url => "/new",
+ </ul>",
+ :find_authority_url => "/new",
:complain_url => CGI.escapeHTML(unhappy_url(@info_request)),
:other_means_url => CGI.escapeHTML(unhappy_url(@info_request)) + "#other_means")
redirect_to request_url(@info_request)
@@ -493,7 +496,7 @@ class RequestController < ApplicationController
end
end
- # Used for links from polymorphic URLs e.g. in Atom feeds - just redirect to
+ # Used for links from polymorphic URLs e.g. in Atom feeds - just redirect to
# proper URL for the message the event refers to
def show_request_event
@info_request_event = InfoRequestEvent.find(params[:info_request_event_id])
@@ -503,8 +506,8 @@ class RequestController < ApplicationController
redirect_to outgoing_message_url(@info_request_event.outgoing_message), :status => :moved_permanently
else
# XXX maybe there are better URLs for some events than this
- redirect_to request_url(@info_request_event.info_request), :status => :moved_permanently
- end
+ redirect_to request_url(@info_request_event.info_request), :status => :moved_permanently
+ end
end
# Show an individual incoming message, and allow followup
@@ -548,8 +551,8 @@ class RequestController < ApplicationController
if params_outgoing_message.nil?
params_outgoing_message = {}
end
- params_outgoing_message.merge!({
- :status => 'ready',
+ params_outgoing_message.merge!({
+ :status => 'ready',
:message_type => 'followup',
:incoming_message_followup => @incoming_message,
:info_request_id => @info_request.id
@@ -573,7 +576,7 @@ class RequestController < ApplicationController
render :template => 'request/hidden', :status => 410 # gone
return
end
-
+
# Check address is good
if !OutgoingMailer.is_followupable?(@info_request, @incoming_message)
raise "unexpected followupable inconsistency" if @info_request.public_body.is_requestable?
@@ -586,7 +589,7 @@ class RequestController < ApplicationController
# to make sure they're the right user first, before they start writing a
# message and wasting their time if they are not the requester.
if !authenticated_as_user?(@info_request.user,
- :web => @incoming_message.nil? ?
+ :web => @incoming_message.nil? ?
_("To send a follow up message to ") + @info_request.public_body.name :
_("To reply to ") + @info_request.public_body.name,
:email => @incoming_message.nil? ?
@@ -651,6 +654,19 @@ class RequestController < ApplicationController
end
end
+ def report_request
+ info_request = InfoRequest.find_by_url_title(params[:url_title])
+ if !info_request.attention_requested
+ info_request.set_described_state('attention_requested')
+ info_request.attention_requested = true # tells us if attention has ever been requested
+ info_request.save!
+ flash[:notice] = _("This request has been reported for administrator attention")
+ else
+ flash[:notice] = _("This request has already been reported for administrator attention")
+ end
+ redirect_to request_url(info_request)
+ end
+
# special caching code so mime types are handled right
around_filter :cache_attachments, :only => [ :get_attachment, :get_attachment_as_html ]
def cache_attachments
@@ -684,11 +700,11 @@ class RequestController < ApplicationController
# Prevent spam to magic request address. Note that the binary
# subsitution method used depends on the content type
- @incoming_message.binary_mask_stuff!(@attachment.body, @attachment.content_type)
+ @incoming_message.binary_mask_stuff!(@attachment.body, @attachment.content_type)
# we don't use @attachment.content_type here, as we want same mime type when cached in cache_attachments above
response.content_type = AlaveteliFileTypes.filename_to_mimetype(params[:file_name].join("/")) || 'application/octet-stream'
-
+ headers["Content-Disposition"] = "attachment; filename=#{params[:file_name]}"
render :text => @attachment.body
end
@@ -712,7 +728,7 @@ class RequestController < ApplicationController
html.sub!("<prefix-here>", view_html_prefix)
html.sub!("<attachment-url-here>", CGI.escape(@attachment_url))
- @incoming_message.html_mask_stuff!(html)
+ @incoming_message.html_mask_stuff!(html)
response.content_type = 'text/html'
render :text => html
end
@@ -737,7 +753,7 @@ class RequestController < ApplicationController
else
@original_filename = @filename
end
-
+
# check permissions
raise "internal error, pre-auth filter should have caught this" if !@info_request.user_can_view?(authenticated_user)
@attachment = IncomingMessage.get_attachment_by_url_part_number(@incoming_message.get_attachments_for_display, @part_number)
@@ -754,7 +770,7 @@ class RequestController < ApplicationController
# FOI officers can upload a response
def upload_response
@locale = self.locale_from_params()
- PublicBody.with_locale(@locale) do
+ PublicBody.with_locale(@locale) do
@info_request = InfoRequest.find_by_url_title(params[:url_title])
@reason_params = {
@@ -824,7 +840,7 @@ class RequestController < ApplicationController
updated = Digest::SHA1.hexdigest(info_request.get_last_event.created_at.to_i.to_s + info_request.updated_at.to_i.to_s)
@url_path = "/download/#{updated[0..1]}/#{updated}/#{params[:url_title]}.zip"
file_path = File.join(File.dirname(__FILE__), '../../cache/zips', @url_path)
- if !File.exists?(file_path)
+ if !File.exists?(file_path)
FileUtils.mkdir_p(File.dirname(file_path))
Zip::ZipFile.open(file_path, Zip::ZipFile::CREATE) { |zipfile|
convert_command = MySociety::Config.get("HTML_TO_PDF_COMMAND")
@@ -843,7 +859,7 @@ class RequestController < ApplicationController
logger.error("Could not convert info request #{info_request.id} to PDF with command '#{convert_command} #{url} #{tempfile.path}'")
end
tempfile.close
- else
+ else
logger.warn("No HTML -> PDF converter found at #{convert_command}")
end
if !done
@@ -855,7 +871,7 @@ class RequestController < ApplicationController
f.puts(output)
}
end
- for message in info_request.incoming_messages
+ for message in info_request.incoming_messages
attachments = message.get_attachments_for_display
for attachment in attachments
filename = "#{attachment.url_part_number}_#{attachment.display_filename}"
diff --git a/app/controllers/request_game_controller.rb b/app/controllers/request_game_controller.rb
index 8a84575bb..904c44759 100644
--- a/app/controllers/request_game_controller.rb
+++ b/app/controllers/request_game_controller.rb
@@ -7,7 +7,7 @@
# $Id: request_game_controller.rb,v 1.9 2009-10-19 22:06:54 francis Exp $
class RequestGameController < ApplicationController
-
+
def play
session[:request_game] = Time.now
@@ -20,7 +20,7 @@ class RequestGameController < ApplicationController
@requests = old.sort_by{ rand }.slice(0..2)
if @missing == 0
- flash[:notice] = _('<p>All done! Thank you very much for your help.</p><p>There are <a href="{{helpus_url}}">more things you can do</a> to help {{site_name}}.</p>',
+ flash[:notice] = _('<p>All done! Thank you very much for your help.</p><p>There are <a href="{{helpus_url}}">more things you can do</a> to help {{site_name}}.</p>',
:helpus_url => help_credits_path+"#helpus",
:site_name => site_name)
end
@@ -38,7 +38,7 @@ class RequestGameController < ApplicationController
url_title = params[:url_title]
if !authenticated?(
:web => _("To play the request categorisation game"),
- :email => _("Then you can play the request categorisation game."),
+ :email => _("Then you can play the request categorisation game."),
:email_subject => _("Play the request categorisation game")
)
# do nothing - as "authenticated?" has done the redirect to signin page for us
diff --git a/app/controllers/services_controller.rb b/app/controllers/services_controller.rb
index 225790d71..00c0e61bd 100644
--- a/app/controllers/services_controller.rb
+++ b/app/controllers/services_controller.rb
@@ -9,16 +9,30 @@ class ServicesController < ApplicationController
if country_from_ip.downcase != iso_country_code
found_country = WorldFOIWebsites.by_code(country_from_ip)
found_country_name = !found_country.nil? && found_country[:country_name]
+ old_locale = FastGettext.locale
+ FastGettext.locale = FastGettext.best_locale_in(request.env['HTTP_ACCEPT_LANGUAGE'])
if found_country_name
text = _("Hello! You can make Freedom of Information requests within {{country_name}} at {{link_to_website}}", :country_name => found_country_name, :link_to_website => "<a href=\"#{found_country[:url]}\">#{found_country[:name]}</a>")
else
current_country = WorldFOIWebsites.by_code(iso_country_code)[:country_name]
text = _("Hello! We have an <a href=\"/help/alaveteli?country_name=#{CGI.escape(current_country)}\">important message</a> for visitors outside {{country_name}}", :country_name => current_country)
end
+ FastGettext.locale = old_locale
end
if !text.empty?
text += ' <span class="close-button">X</span>'
end
render :text => text, :content_type => "text/plain" # XXX workaround the HTML validation in test suite
end
+ def hidden_user_explanation
+ info_request = InfoRequest.find(params[:info_request_id])
+ render :template => "admin_request/hidden_user_explanation",
+ :content_type => "text/plain",
+ :layout => false,
+ :locals => {:name_to => info_request.user.name,
+ :name_from => MySociety::Config.get("CONTACT_NAME", 'Alaveteli'),
+ :info_request => info_request, :reason => params[:reason],
+ :info_request_url => 'http://' + MySociety::Config.get('DOMAIN') + request_url(info_request),
+ :site_name => site_name}
+ end
end
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb
index 95b573cdc..07e807451 100644
--- a/app/controllers/track_controller.rb
+++ b/app/controllers/track_controller.rb
@@ -98,7 +98,23 @@ class TrackController < ApplicationController
return atom_feed_internal if params[:feed] == 'feed'
if self.track_set
- redirect_to search_url(@query)
+ if @query.scan("variety").length == 1
+ # we're making a track for a simple filter, for which
+ # there's an expression in the UI (rather than relying
+ # on index:value strings in the query)
+ if @query =~ /variety:user/
+ postfix = "users"
+ @query.sub!("variety:user", "")
+ elsif @query =~ /variety:authority/
+ postfix = "bodies"
+ @query.sub!("variety:authority", "")
+ elsif @query =~ /variety:sent/
+ postfix = "requests"
+ @query.sub!("variety:sent", "")
+ end
+ @query.strip!
+ end
+ redirect_to search_url([@query, postfix])
end
end
@@ -107,7 +123,7 @@ class TrackController < ApplicationController
if @user
@existing_track = TrackThing.find_by_existing_track(@user, @track_thing)
if @existing_track
- flash[:notice] = _("You are already being emailed updates about ") + @track_thing.params[:list_description]
+ flash[:notice] = _("You are already following updates about {{track_description}}", :track_description => @track_thing.params[:list_description])
return true
end
end
@@ -119,8 +135,11 @@ class TrackController < ApplicationController
@track_thing.track_medium = 'email_daily'
@track_thing.tracking_user_id = @user.id
@track_thing.save!
-
- flash[:notice] = _("You will now be emailed updates about ") + @track_thing.params[:list_description]
+ if @user.receive_email_alerts
+ flash[:notice] = _('You will now be emailed updates about {{track_description}}. <a href="{{change_email_alerts_url}}">Prefer not to receive emails?</a>', :track_description => @track_thing.params[:list_description], :change_email_alerts_url => url_for(:controller => "user", :action => "wall", :url_name => @user.url_name))
+ else
+ flash[:notice] = _('You are now <a href="{{wall_url_user}}">following</a> updates about {{track_description}}', :track_description => @track_thing.params[:list_description], :wall_url_user => url_for(:controller => "user", :action => "wall", :url_name => @user.url_name))
+ end
return true
end
@@ -163,7 +182,7 @@ class TrackController < ApplicationController
new_medium = params[:track_medium]
if new_medium == 'delete'
track_thing.destroy
- flash[:notice] = _("You will no longer be emailed updates about ") + track_thing.params[:list_description]
+ flash[:notice] = _("You are no longer following {{track_description}}", :track_description => track_thing.params[:list_description])
redirect_to params[:r]
# Reuse code like this if we let medium change again.
#elsif new_medium == 'email_daily'
diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb
index 08726183e..e56c4dd33 100644
--- a/app/controllers/user_controller.rb
+++ b/app/controllers/user_controller.rb
@@ -6,10 +6,12 @@
#
# $Id: user_controller.rb,v 1.71 2009-09-17 07:51:47 francis Exp $
+require 'set'
+
class UserController < ApplicationController
layout :select_layout
-
+
protect_from_forgery :only => [ :contact,
:set_profile_photo,
:signchangeemail,
@@ -33,7 +35,7 @@ class UserController < ApplicationController
@show_profile = false
@show_requests = true
end
-
+
@display_user = User.find(:first, :conditions => [ "url_name = ? and email_confirmed = ?", params[:url_name], true ])
if not @display_user
raise ActiveRecord::RecordNotFound.new("user not found, url_name=" + params[:url_name])
@@ -55,7 +57,7 @@ class UserController < ApplicationController
end
@xapian_requests = perform_search([InfoRequestEvent], requests_query, 'newest', 'request_collapse')
@xapian_comments = perform_search([InfoRequestEvent], comments_query, 'newest', nil)
-
+
if (@page > 1)
@page_desc = " (page " + @page.to_s + ")"
else
@@ -89,6 +91,50 @@ class UserController < ApplicationController
end
+ # Show the user's wall
+ def wall
+ long_cache
+ @display_user = User.find(:first, :conditions => [ "url_name = ? and email_confirmed = ?", params[:url_name], true ])
+ if not @display_user
+ raise ActiveRecord::RecordNotFound.new("user not found, url_name=" + params[:url_name])
+ end
+ @is_you = !@user.nil? && @user.id == @display_user.id
+ feed_results = Set.new
+ # Use search query for this so can collapse and paginate easily
+ # XXX really should just use SQL query here rather than Xapian.
+ begin
+ requests_query = 'requested_by:' + @display_user.url_name
+ comments_query = 'commented_by:' + @display_user.url_name
+ # XXX combine these as OR query
+ @xapian_requests = perform_search([InfoRequestEvent], requests_query, 'newest', 'request_collapse')
+ @xapian_comments = perform_search([InfoRequestEvent], comments_query, 'newest', nil)
+ rescue
+ @xapian_requests = nil
+ @xapian_comments = nil
+ end
+
+ feed_results += @xapian_requests.results.map {|x| x[:model]} if !@xapian_requests.nil?
+ feed_results += @xapian_comments.results.map {|x| x[:model]} if !@xapian_comments.nil?
+
+ # All tracks for the user
+ if @is_you
+ @track_things = TrackThing.find(:all, :conditions => ["tracking_user_id = ? and track_medium = ?", @display_user.id, 'email_daily'], :order => 'created_at desc')
+ for track_thing in @track_things
+ # XXX factor out of track_mailer.rb
+ xapian_object = InfoRequest.full_search([InfoRequestEvent], track_thing.track_query, 'described_at', true, nil, 20, 1)
+ feed_results += xapian_object.results.map {|x| x[:model]}
+ end
+ end
+
+ @feed_results = Array(feed_results).sort {|x,y| y.created_at <=> x.created_at}.first(20)
+
+ respond_to do |format|
+ format.html { @has_json = true }
+ format.json { render :json => @display_user.json_for_api }
+ end
+
+ end
+
# Login form
def signin
work_out_post_redirect
@@ -129,7 +175,7 @@ class UserController < ApplicationController
session[:user_id] = @user_signin.id
session[:user_circumstance] = nil
session[:remember_me] = params[:remember_me] ? true : false
-
+
if is_modal_dialog
render :action => 'signin_successful'
else
@@ -319,7 +365,7 @@ class UserController < ApplicationController
if (not session[:user_circumstance]) or (session[:user_circumstance] != "change_email")
# don't store the password in the db
params[:signchangeemail].delete(:password)
- post_redirect = PostRedirect.new(:uri => signchangeemail_url(),
+ post_redirect = PostRedirect.new(:uri => signchangeemail_url(),
:post_params => params,
:circumstance => "change_email" # special login that lets you change your email
)
@@ -533,17 +579,29 @@ class UserController < ApplicationController
end
end
+ # Change about me text on your profile page
+ def set_receive_email_alerts
+ if authenticated_user.nil?
+ flash[:error] = _("You need to be logged in to edit your profile.")
+ redirect_to frontpage_url
+ return
+ end
+ @user.receive_email_alerts = params[:receive_email_alerts]
+ @user.save!
+ redirect_to params[:came_from]
+ end
+
private
def is_modal_dialog
(params[:modal].to_i != 0)
end
-
+
# when logging in through a modal iframe, don't display chrome around the content
def select_layout
is_modal_dialog ? 'no_chrome' : 'default'
end
-
+
# Decide where we are going to redirect back to after signin/signup, and record that
def work_out_post_redirect
# Redirect to front page later if nothing else specified
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index a0f16dfaf..df016a249 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -17,6 +17,9 @@ module ApplicationHelper
# Site-wide access to configuration settings
include ConfigHelper
+ # Useful for sending emails
+ include MailerHelper
+
# Copied from error_messages_for in active_record_helper.rb
def foi_error_messages_for(*params)
options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {}
@@ -32,14 +35,14 @@ module ApplicationHelper
html[key] = 'errorExplanation'
end
end
-
+
error_messages = []
for object in objects
object.errors.each do |attr, message|
error_messages << content_tag(:li, message)
end
end
-
+
content_tag(:div,
content_tag(:ul, error_messages),
html
@@ -48,7 +51,7 @@ module ApplicationHelper
''
end
end
-
+
# Highlight words, also escapes HTML (other than spans that we add)
def highlight_words(t, words, html = true)
if html
@@ -70,10 +73,10 @@ module ApplicationHelper
t = highlight_words(t, words, html)
return t
end
-
+
def locale_name(locale)
return LanguageNames::get_language_name(locale)
- end
+ end
# Use our own algorithm for finding path of cache
def foi_cache(name = {}, options = nil, &block)
@@ -100,11 +103,11 @@ module ApplicationHelper
def sanitized_object_name(object_name)
object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/,"_").sub(/_$/,"")
end
-
+
def sanitized_method_name(method_name)
method_name.sub(/\?$/, "")
end
-
+
def form_tag_id(object_name, method_name, locale=nil)
if locale.nil?
return "#{sanitized_object_name(object_name.to_s)}_#{sanitized_method_name(method_name.to_s)}"
@@ -113,5 +116,19 @@ module ApplicationHelper
end
end
+ def admin_value(v)
+ if v.nil?
+ nil
+ elsif v.instance_of?(Time)
+ admin_date(v)
+ else
+ h(v)
+ end
+ end
+
+ def admin_date(date)
+ "#{I18n.l(date, :format => "%e %B %Y %H:%M:%S")} (#{_('{{length_of_time}} ago', :length_of_time => time_ago_in_words(date))})"
+ end
+
end
diff --git a/app/helpers/config_helper.rb b/app/helpers/config_helper.rb
index b0381a2f5..543b60256 100644
--- a/app/helpers/config_helper.rb
+++ b/app/helpers/config_helper.rb
@@ -2,7 +2,7 @@ module ConfigHelper
def site_name
MySociety::Config.get('SITE_NAME', 'Alaveteli')
end
-
+
def force_registration_on_new_request
MySociety::Config.get('FORCE_REGISTRATION_ON_NEW_REQUEST', false)
end
diff --git a/app/helpers/link_to_helper.rb b/app/helpers/link_to_helper.rb
index 56c33e512..f621721b6 100755
--- a/app/helpers/link_to_helper.rb
+++ b/app/helpers/link_to_helper.rb
@@ -1,6 +1,6 @@
# app/helpers/link_to_helper.rb:
# This module is included into all controllers via controllers/application.rb
-# -
+# -
#
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
@@ -10,25 +10,29 @@
module LinkToHelper
# Links to various models
-
+
# Requests
def request_url(info_request, extra_params={})
params = {:url_title => info_request.url_title, :only_path => true}
return show_request_url(params.merge(extra_params))
end
-
- def request_link(info_request)
- link_to h(info_request.title), request_url(info_request)
+
+ def request_link(info_request, cls=nil )
+ link_to h(info_request.title), request_url(info_request), :class => cls
end
-
+
def request_admin_url(info_request)
return admin_url('request/show/' + info_request.id.to_s)
end
-
+
+ def request_admin_link(info_request, name="admin", cls=nil)
+ link_to name, request_admin_url(info_request), :class => cls
+ end
+
def request_both_links(info_request)
link_to(h(info_request.title), main_url(request_url(info_request))) + " (" + link_to("admin", request_admin_url(info_request)) + ")"
end
-
+
def request_similar_url(info_request)
return similar_request_url(:url_title => info_request.url_title, :only_path => true)
end
@@ -58,7 +62,7 @@ module LinkToHelper
end
return respond_url
end
-
+
# Public bodies
def public_body_url(public_body)
public_body.url_name.nil? ? '' : show_public_body_url(:url_name => public_body.url_name, :only_path => true)
@@ -66,8 +70,8 @@ module LinkToHelper
def public_body_link_short(public_body)
link_to h(public_body.short_or_long_name), public_body_url(public_body)
end
- def public_body_link(public_body)
- link_to h(public_body.name), public_body_url(public_body)
+ def public_body_link(public_body, cls=nil)
+ link_to h(public_body.name), public_body_url(public_body), :class => cls
end
def public_body_link_absolute(public_body) # e.g. for in RSS
link_to h(public_body.name), main_url(public_body_url(public_body))
@@ -79,15 +83,15 @@ module LinkToHelper
link_to(h(public_body.name), main_url(public_body_url(public_body))) + " (" + link_to("admin", public_body_admin_url(public_body)) + ")"
end
def list_public_bodies_default
- list_public_bodies_url(:tag => 'all')
+ list_public_bodies_url(:tag => 'all')
end
# Users
def user_url(user)
return show_user_url(:url_name => user.url_name, :only_path => true)
end
- def user_link(user)
- link_to h(user.name), user_url(user)
+ def user_link(user, cls=nil)
+ link_to h(user.name), user_url(user), :class => cls
end
def user_link_absolute(user)
link_to h(user.name), main_url(user_url(user))
@@ -112,6 +116,9 @@ module LinkToHelper
def user_admin_url(user)
return admin_url('user/show/' + user.id.to_s)
end
+ def user_admin_link(user, name="admin", cls=nil)
+ link_to name, user_admin_url(user), :class => cls
+ end
def user_both_links(user)
link_to(h(user.name), main_url(user_url(user))) + " (" + link_to("admin", user_admin_url(user)) + ")"
end
@@ -120,15 +127,15 @@ module LinkToHelper
def do_track_url(track_thing, feed = 'track')
if track_thing.track_type == 'request_updates'
track_request_url(:url_title => track_thing.info_request.url_title, :feed => feed)
- elsif track_thing.track_type == 'all_new_requests'
+ elsif track_thing.track_type == 'all_new_requests'
track_list_url(:view => 'recent', :feed => feed)
- elsif track_thing.track_type == 'all_successful_requests'
+ elsif track_thing.track_type == 'all_successful_requests'
track_list_url(:view => 'successful', :feed => feed)
- elsif track_thing.track_type == 'public_body_updates'
+ elsif track_thing.track_type == 'public_body_updates'
track_public_body_url(:url_name => track_thing.public_body.url_name, :feed => feed)
- elsif track_thing.track_type == 'user_updates'
+ elsif track_thing.track_type == 'user_updates'
track_user_url(:url_name => track_thing.tracked_user.url_name, :feed => feed)
- elsif track_thing.track_type == 'search_query'
+ elsif track_thing.track_type == 'search_query'
track_search_url(:query_array => track_thing.track_query, :feed => feed)
else
raise "unknown tracking type " + track_thing.track_type
@@ -141,7 +148,7 @@ module LinkToHelper
query = query - ["", nil]
query = query.join("/")
end
- routing_info = {:controller => 'general',
+ routing_info = {:controller => 'general',
:action => 'search',
:combined => query,
:view => nil}
@@ -204,7 +211,9 @@ module LinkToHelper
# Basic date format
def simple_date(date)
- return I18n.l(date, :format => "%e %B %Y")
+ date_format = _("simple_date_format")
+ date_format = :long if date_format == "simple_date_format"
+ return I18n.l(date.to_date, :format => date_format)
end
def simple_time(date)
diff --git a/app/helpers/mailer_helper.rb b/app/helpers/mailer_helper.rb
new file mode 100644
index 000000000..c0a950d47
--- /dev/null
+++ b/app/helpers/mailer_helper.rb
@@ -0,0 +1,7 @@
+module MailerHelper
+ def contact_from_name_and_email
+ contact_name = MySociety::Config.get("CONTACT_NAME", 'Alaveteli')
+ contact_email = MySociety::Config.get("CONTACT_EMAIL", 'contact@localhost')
+ return "#{contact_name} <#{contact_email}>"
+ end
+end
diff --git a/app/models/about_me_validator.rb b/app/models/about_me_validator.rb
index e24c5512c..67b81bc9c 100644
--- a/app/models/about_me_validator.rb
+++ b/app/models/about_me_validator.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 95
+# Schema version: 114
#
# Table name: about_me_validators
#
diff --git a/app/models/application_mailer.rb b/app/models/application_mailer.rb
index e9f82a2c3..044006f7c 100644
--- a/app/models/application_mailer.rb
+++ b/app/models/application_mailer.rb
@@ -9,17 +9,12 @@
class ApplicationMailer < ActionMailer::Base
# Include all the functions views get, as emails call similar things.
helper :application
+ include MailerHelper
# This really should be the default - otherwise you lose any information
# about the errors, and have to do error checking on return codes.
self.raise_delivery_errors = true
- def contact_from_name_and_email
- contact_name = MySociety::Config.get("CONTACT_NAME", 'Alaveteli')
- contact_email = MySociety::Config.get("CONTACT_EMAIL", 'contact@localhost')
- return "#{contact_name} <#{contact_email}>"
- end
-
def blackhole_email
MySociety::Config.get("BLACKHOLE_PREFIX", 'do-not-reply-to-this-address')+"@"+MySociety::Config.get("INCOMING_EMAIL_DOMAIN", "localhost")
end
@@ -28,7 +23,7 @@ class ApplicationMailer < ActionMailer::Base
# views (for links) and mailers (for use in emails), so include them into
# all of all.
include LinkToHelper
-
+
# Site-wide access to configuration settings
include ConfigHelper
end
diff --git a/app/models/censor_rule.rb b/app/models/censor_rule.rb
index 201e60746..a477d2568 100644
--- a/app/models/censor_rule.rb
+++ b/app/models/censor_rule.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: censor_rules
#
@@ -51,7 +51,10 @@ class CensorRule < ActiveRecord::Base
errors.add("Censor must apply to an info request a user or a body; ")
end
end
-end
-
-
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
+end
diff --git a/app/models/change_email_validator.rb b/app/models/change_email_validator.rb
index e3f8fa892..0395ab6d5 100644
--- a/app/models/change_email_validator.rb
+++ b/app/models/change_email_validator.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: change_email_validators
#
@@ -30,7 +30,7 @@ class ChangeEmailValidator < ActiveRecord::BaseWithoutTable
validates_presence_of :old_email, :message => N_("Please enter your old email address")
validates_presence_of :new_email, :message => N_("Please enter your new email address")
validates_presence_of :password, :message => N_("Please enter your password"), :unless => :changing_email
-
+
def changing_email()
self.user_circumstance == 'change_email'
end
diff --git a/app/models/comment.rb b/app/models/comment.rb
index 44a1079cd..6edfaa24f 100644
--- a/app/models/comment.rb
+++ b/app/models/comment.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: comments
#
@@ -84,7 +84,9 @@ class Comment < ActiveRecord::Base
return Comment.find(:first, :conditions => [ "info_request_id = ? and body = ?", info_request_id, body ])
end
end
-
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
end
-
-
diff --git a/app/models/contact_mailer.rb b/app/models/contact_mailer.rb
index 0390fc347..800fe54e4 100644
--- a/app/models/contact_mailer.rb
+++ b/app/models/contact_mailer.rb
@@ -25,7 +25,7 @@ class ContactMailer < ApplicationMailer
# they shouldn't, and this might help. (Have had mysterious cases of a
# reply coming in duplicate from a public body to both From and envelope
# from)
-
+
# Send message to another user
def user_message(from_user, recipient_user, from_user_url, subject, message)
@from = from_user.name_and_email
@@ -34,7 +34,7 @@ class ContactMailer < ApplicationMailer
headers 'Return-Path' => blackhole_email, 'Reply-To' => @from
@recipients = recipient_user.name_and_email
@subject = subject
- @body = {
+ @body = {
:message => message,
:from_user => from_user,
:recipient_user => recipient_user,
@@ -42,4 +42,16 @@ class ContactMailer < ApplicationMailer
}
end
+ # Send message to a user from the administrator
+ def from_admin_message(recipient_user, subject, message)
+ @from = contact_from_name_and_email
+ @recipients = recipient_user.name_and_email
+ @subject = subject
+ @body = {
+ :message => message,
+ :from_user => @from,
+ :recipient_user => recipient_user,
+ }
+ end
+
end
diff --git a/app/models/contact_validator.rb b/app/models/contact_validator.rb
index 0bc562835..a9748a739 100644
--- a/app/models/contact_validator.rb
+++ b/app/models/contact_validator.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 95
+# Schema version: 114
#
# Table name: contact_validators
#
diff --git a/app/models/exim_log.rb b/app/models/exim_log.rb
index 77e5e2d21..60faa7f0b 100644
--- a/app/models/exim_log.rb
+++ b/app/models/exim_log.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: exim_logs
#
@@ -40,7 +40,7 @@ class EximLog < ActiveRecord::Base
ActiveRecord::Base.transaction do
# see if we already have it
- done = EximLogDone.find_by_filename(file_name_db)
+ done = EximLogDone.find_by_filename(file_name_db)
if !done.nil?
if modified.utc == done.last_stat.utc
# already have that, nothing to do
@@ -124,7 +124,7 @@ class EximLog < ActiveRecord::Base
return ok
end
-
+
end
diff --git a/app/models/exim_log_done.rb b/app/models/exim_log_done.rb
index b8a39033a..3cedc1379 100644
--- a/app/models/exim_log_done.rb
+++ b/app/models/exim_log_done.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 95
+# Schema version: 114
#
# Table name: exim_log_dones
#
diff --git a/app/models/foi_attachment.rb b/app/models/foi_attachment.rb
index da92d1c2d..f3e3d7e00 100644
--- a/app/models/foi_attachment.rb
+++ b/app/models/foi_attachment.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: foi_attachments
#
@@ -177,7 +177,7 @@ class FoiAttachment < ActiveRecord::Base
filename = filename.gsub(/\//, "-")
return filename
- end
+ end
# XXX changing this will break existing URLs, so have a care - maybe
# make another old_display_filename see above
@@ -248,16 +248,16 @@ class FoiAttachment < ActiveRecord::Base
return !! {
"application/pdf" => true, # .pdf
"image/tiff" => true, # .tiff
-
+
"application/vnd.ms-word" => true, # .doc
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" => true, # .docx
-
+
"application/vnd.ms-powerpoint" => true, # .ppt
"application/vnd.openxmlformats-officedocument.presentationml.presentation" => true, # .pptx
-
+
"application/vnd.ms-excel" => true, # .xls
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" => true, # .xlsx
-
+
} [self.content_type]
end
@@ -277,16 +277,16 @@ class FoiAttachment < ActiveRecord::Base
return {
"text/plain" => "Text file",
'application/rtf' => "RTF file",
-
+
'application/pdf' => "PDF file",
'image/tiff' => "TIFF image",
-
+
'application/vnd.ms-word' => "Word document",
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => "Word document",
-
+
'application/vnd.ms-powerpoint' => "PowerPoint presentation",
'application/vnd.openxmlformats-officedocument.presentationml.presentation' => "PowerPoint presentation",
-
+
'application/vnd.ms-excel' => "Excel spreadsheet",
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => "Excel spreadsheet",
}[self.content_type]
@@ -345,7 +345,7 @@ class FoiAttachment < ActiveRecord::Base
if self.has_google_docs_viewer?
wrapper_id = "wrapper_google_embed"
ret = ret + "<iframe src='http://docs.google.com/viewer?url=<attachment-url-here>&embedded=true' width='100%' height='100%' style='border: none;'></iframe>";
- else
+ else
ret = ret + "<p>Sorry, we were unable to convert this file to HTML. Please use the download link at the top right.</p>"
end
ret = ret + "</body></html>"
diff --git a/app/models/holiday.rb b/app/models/holiday.rb
index 60b5ff443..debd88dec 100644
--- a/app/models/holiday.rb
+++ b/app/models/holiday.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: holidays
#
@@ -10,7 +10,7 @@
# models/holiday.rb:
#
-# Store details on, and perform calculations with, public holidays on which
+# Store details on, and perform calculations with, public holidays on which
# the clock for answering FOI requests does not run:
#
# ... "working day" means any day other than a Saturday, a Sunday, Christmas
@@ -37,7 +37,7 @@ class Holiday < ActiveRecord::Base
# Count forward (20) working days. We start with today as "day zero". The
# first of the twenty full working days is the next day. We return the
# date of the last of the twenty.
-
+
# This response for example of a public authority complains that we had
# it wrong. We didn't (even thought I changed the code for a while,
# it's changed back now). A day is a day, our lawyer tells us.
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb
index cbbcf5aa6..3419956d6 100644
--- a/app/models/incoming_message.rb
+++ b/app/models/incoming_message.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: incoming_messages
#
@@ -11,12 +11,12 @@
# cached_attachment_text_clipped :text
# cached_main_body_text_folded :text
# cached_main_body_text_unfolded :text
-# sent_at :time
# subject :text
# mail_from_domain :text
# valid_to_reply_to :boolean
# last_parsed :datetime
# mail_from :text
+# sent_at :datetime
#
# encoding: UTF-8
@@ -81,7 +81,7 @@ class IncomingMessage < ActiveRecord::Base
# http://www.whatdotheyknow.com/request/reviews_of_unduly_lenient_senten#incoming-4830
# Report of TMail bug:
# http://rubyforge.org/tracker/index.php?func=detail&aid=21810&group_id=4512&atid=17370
- copy_of_raw_data = self.raw_email.data.gsub(/; boundary=\s+"/ims,'; boundary="')
+ copy_of_raw_data = self.raw_email.data.gsub(/; boundary=\s+"/ims,'; boundary="')
@mail = TMail::Mail.parse(copy_of_raw_data)
@mail.base64_decode
@@ -92,7 +92,7 @@ class IncomingMessage < ActiveRecord::Base
# Returns the name of the person the incoming message is from, or nil if
# there isn't one or if there is only an email address. XXX can probably
# remove from_name_if_present (which is a monkey patch) by just calling
- # .from_addrs[0].name here instead?
+ # .from_addrs[0].name here instead?
# Return false if for some reason this is a message that we shouldn't let them reply to
def _calculate_valid_to_reply_to
@@ -178,7 +178,7 @@ class IncomingMessage < ActiveRecord::Base
def safe_mail_from
if !self.mail_from.nil?
mail_from = self.mail_from.dup
- self.info_request.apply_censor_rules_to_text!(mail_from)
+ self.info_request.apply_censor_rules_to_text!(mail_from)
return mail_from
end
end
@@ -191,7 +191,7 @@ class IncomingMessage < ActiveRecord::Base
# XXX This fills in part.rfc822_attachment and part.url_part_number within
# all the parts of the email (see TMail monkeypatch above for how these
# attributes are added). ensure_parts_counted must be called before using
- # the attributes.
+ # the attributes.
def ensure_parts_counted
@count_parts_count = 0
_count_parts_recursive(self.mail)
@@ -215,7 +215,7 @@ class IncomingMessage < ActiveRecord::Base
# e.g. http://www.whatdotheyknow.com/request/chinese_names_for_british_politi
msg = Mapi::Msg.open(StringIO.new(part.body))
part.rfc822_attachment = TMail::Mail.parse(msg.to_mime.to_s)
- elsif part.content_type == 'application/ms-tnef'
+ elsif part.content_type == 'application/ms-tnef'
# A set of attachments in a TNEF file
part.rfc822_attachment = TNEF.as_tmail(part.body)
end
@@ -250,10 +250,10 @@ class IncomingMessage < ActiveRecord::Base
# if they are public anyway. For now just be precautionary and only
# put in descriptions of them in square brackets.
if self.info_request.public_body.is_followupable?
- text.gsub!(self.info_request.public_body.request_email, "[" + self.info_request.public_body.short_or_long_name + " request email]")
+ text.gsub!(self.info_request.public_body.request_email, _("[{{public_body}} request email]", :public_body => self.info_request.public_body.short_or_long_name))
end
- text.gsub!(self.info_request.incoming_email, "[FOI #" + self.info_request.id.to_s + " email]")
- text.gsub!(MySociety::Config.get("CONTACT_EMAIL", 'contact@localhost'), "[#{MySociety::Config.get('SITE_NAME', 'Alaveteli')} contact email]")
+ text.gsub!(self.info_request.incoming_email, _('[FOI #{{request}} email]', :request => self.info_request.id.to_s) )
+ text.gsub!(MySociety::Config.get("CONTACT_EMAIL", 'contact@localhost'), _("[{{site_name}} contact email]", :site_name => MySociety::Config.get('SITE_NAME', 'Alaveteli')) )
end
# Replaces all email addresses in (possibly binary data) with equal length alternative ones.
@@ -289,7 +289,7 @@ class IncomingMessage < ActiveRecord::Base
# buggy versions of pdftk sometimes fail on
# compression, I don't see it's a disaster in
# these cases to save an uncompressed version?
- recompressed_text = censored_uncompressed_text
+ recompressed_text = censored_uncompressed_text
logger.warn "Unable to compress PDF; problem with your pdftk version?"
end
if !recompressed_text.nil? && !recompressed_text.empty?
@@ -297,10 +297,10 @@ class IncomingMessage < ActiveRecord::Base
end
end
end
- return
+ return
end
- self._binary_mask_stuff_internal!(text)
+ self._binary_mask_stuff_internal!(text)
end
# Used by binary_mask_stuff - replace text in place
@@ -309,7 +309,7 @@ class IncomingMessage < ActiveRecord::Base
orig_size = text.size
# Replace ASCII email addresses...
- text.gsub!(MySociety::Validate.email_find_regexp) do |email|
+ text.gsub!(MySociety::Validate.email_find_regexp) do |email|
email.gsub(/[^@.]/, 'x')
end
@@ -320,7 +320,7 @@ class IncomingMessage < ActiveRecord::Base
emails = ascii_chars.scan(MySociety::Validate.email_find_regexp)
# Convert back to UCS-2, making a mask at the same time
emails.map! {|email| [
- Iconv.conv('ucs-2le', 'ascii', email[0]),
+ Iconv.conv('ucs-2le', 'ascii', email[0]),
Iconv.conv('ucs-2le', 'ascii', email[0].gsub(/[^@.]/, 'x'))
] }
# Now search and replace the UCS-2 email with the UCS-2 mask
@@ -416,7 +416,7 @@ class IncomingMessage < ActiveRecord::Base
# http://www.whatdotheyknow.com/request/secured_convictions_aided_by_cct
multiline_original_message = '(' + '''>>>.* \d\d/\d\d/\d\d\d\d\s+\d\d:\d\d(?::\d\d)?\s*>>>''' + ')'
text.gsub!(/^(#{multiline_original_message}\n.*)$/ms, replacement)
-
+
# Single line sections
text.gsub!(/^(>.*\n)/, replacement)
text.gsub!(/^(On .+ (wrote|said):\n)/, replacement)
@@ -453,8 +453,8 @@ class IncomingMessage < ActiveRecord::Base
# http://www.whatdotheyknow.com/request/123/response/192
# http://www.whatdotheyknow.com/request/235/response/513
# http://www.whatdotheyknow.com/request/445/response/743
- original_message =
- '(' + '''----* This is a copy of the message, including all the headers. ----*''' +
+ original_message =
+ '(' + '''----* This is a copy of the message, including all the headers. ----*''' +
'|' + '''----*\s*Original Message\s*----*''' +
'|' + '''----*\s*Forwarded message.+----*''' +
'|' + '''----*\s*Forwarded by.+----*''' +
@@ -482,7 +482,7 @@ class IncomingMessage < ActiveRecord::Base
return part_file_name
end
- # (This risks losing info if the unchosen alternative is the only one to contain
+ # (This risks losing info if the unchosen alternative is the only one to contain
# useful info, but let's worry about that another time)
def get_attachment_leaves
force = true
@@ -538,7 +538,7 @@ class IncomingMessage < ActiveRecord::Base
if calc_mime
curr_mail.content_type = calc_mime
end
- end
+ end
# Use standard content types for Word documents etc.
curr_mail.content_type = normalise_content_type(curr_mail.content_type)
@@ -660,11 +660,11 @@ class IncomingMessage < ActiveRecord::Base
# Test if it's good UTF-8
text = Iconv.conv('utf-8', 'utf-8', text)
rescue Iconv::IllegalSequence
- # Text looks like unlabelled nonsense,
+ # Text looks like unlabelled nonsense,
# strip out anything that isn't UTF-8
begin
- text = Iconv.conv('utf-8//IGNORE', source_charset, text) +
- _("\n\n[ {{site_name}} note: The above text was badly encoded, and has had strange characters removed. ]",
+ text = Iconv.conv('utf-8//IGNORE', source_charset, text) +
+ _("\n\n[ {{site_name}} note: The above text was badly encoded, and has had strange characters removed. ]",
:site_name => MySociety::Config.get('SITE_NAME', 'Alaveteli'))
rescue Iconv::InvalidEncoding, Iconv::IllegalSequence
if source_charset != "utf-8"
@@ -673,7 +673,6 @@ class IncomingMessage < ActiveRecord::Base
end
end
end
-
# Fix DOS style linefeeds to Unix style ones (or other later regexps won't work)
# Needed for e.g. http://www.whatdotheyknow.com/request/60/response/98
@@ -693,7 +692,7 @@ class IncomingMessage < ActiveRecord::Base
# Find first part which is text/plain or text/html
# (We have to include HTML, as increasingly there are mail clients that
# include no text alternative for the main part, and we don't want to
- # instead use the first text attachment
+ # instead use the first text attachment
# e.g. http://www.whatdotheyknow.com/request/list_of_public_authorties)
leaves.each do |p|
if p.content_type == 'text/plain' or p.content_type == 'text/html'
@@ -707,8 +706,8 @@ class IncomingMessage < ActiveRecord::Base
return p
end
end
-
- # ... or if none, consider first part
+
+ # ... or if none, consider first part
p = leaves[0]
# if it is a known type then don't use it, return no body (nil)
if !p.nil? && AlaveteliFileTypes.mimetype_to_extension(p.content_type)
@@ -752,7 +751,7 @@ class IncomingMessage < ActiveRecord::Base
:display_size => "0K")
attachment.save!
attachments << attachment
- end
+ end
return attachments
end
@@ -802,7 +801,7 @@ class IncomingMessage < ActiveRecord::Base
# XXX call _convert_part_body_to_text here, but need to get charset somehow
# e.g. http://www.whatdotheyknow.com/request/1593/response/3088/attach/4/Freedom%20of%20Information%20request%20-%20car%20oval%20sticker:%20Article%2020,%20Convention%20on%20Road%20Traffic%201949.txt
body = headers + "\n" + body
-
+
# This is quick way of getting all headers, but instead we only add some a) to
# make it more usable, b) as at least one authority accidentally leaked security
# information into a header.
@@ -816,7 +815,6 @@ class IncomingMessage < ActiveRecord::Base
:filename => _get_part_file_name(leaf),
:charset => leaf.charset,
:within_rfc822_subject => within_rfc822_subject,
- :display_size => "0K",
:body => body)
attachment.save!
attachments << attachment.id
@@ -837,7 +835,7 @@ class IncomingMessage < ActiveRecord::Base
end
# now get rid of any attachments we no longer have
- FoiAttachment.destroy_all("id NOT IN (#{attachments.join(',')}) AND incoming_message_id = #{self.id}")
+ FoiAttachment.destroy_all("id NOT IN (#{attachments.join(',')}) AND incoming_message_id = #{self.id}")
end
# Returns body text as HTML with quotes flattened, and emails removed.
@@ -866,10 +864,10 @@ class IncomingMessage < ActiveRecord::Base
text = "[Subject only] " + CGI.escapeHTML(self.subject) + text
end
# and display link for quoted stuff
- text = text.gsub(/FOLDED_QUOTED_SECTION/, "\n\n" + '<span class="unfold_link"><a href="?unfold=1#incoming-'+self.id.to_s+'">show quoted sections</a></span>' + "\n\n")
+ text = text.gsub(/FOLDED_QUOTED_SECTION/, "\n\n" + '<span class="unfold_link"><a href="?unfold=1#incoming-'+self.id.to_s+'">'+_("show quoted sections")+'</a></span>' + "\n\n")
else
if folded_quoted_text.include?('FOLDED_QUOTED_SECTION')
- text = text + "\n\n" + '<span class="unfold_link"><a href="?#incoming-'+self.id.to_s+'">hide quoted sections</a></span>'
+ text = text + "\n\n" + '<span class="unfold_link"><a href="?#incoming-'+self.id.to_s+'">'+_("hide quoted sections")+'</a></span>'
end
end
text.strip!
@@ -899,13 +897,13 @@ class IncomingMessage < ActiveRecord::Base
self.remove_privacy_sensitive_things!(text)
# This can be useful for memory debugging
#STDOUT.puts 'xxx '+ MySociety::DebugHelpers::allocated_string_size_around_gc
-
+
# Save clipped version for snippets
if self.cached_attachment_text_clipped.nil?
self.cached_attachment_text_clipped = text[0..MAX_ATTACHMENT_TEXT_CLIPPED]
self.save!
end
-
+
return text
end
# Returns a version reduced to a sensible maximum size - this
@@ -988,7 +986,7 @@ class IncomingMessage < ActiveRecord::Base
for entry in zip_file
if entry.file?
filename = entry.to_s
- begin
+ begin
body = entry.get_input_stream.read
rescue
# move to next attachment silently if there were problems
@@ -1002,7 +1000,7 @@ class IncomingMessage < ActiveRecord::Base
else
content_type = 'application/octet-stream'
end
-
+
text += _get_attachment_text_internal_one_file(content_type, body)
end
end
@@ -1030,8 +1028,6 @@ class IncomingMessage < ActiveRecord::Base
return get_body_for_quoting + "\n\n" + get_attachment_text_clipped
end
-
-
# Has message arrived "recently"?
def recently_arrived
(Time.now - self.created_at) <= 3.days
@@ -1052,7 +1048,7 @@ class IncomingMessage < ActiveRecord::Base
end
end
- # Search all info requests for
+ # Search all info requests for
def IncomingMessage.find_all_unknown_mime_types
for incoming_message in IncomingMessage.find(:all)
for attachment in incoming_message.get_attachments_for_display
@@ -1118,7 +1114,7 @@ class IncomingMessage < ActiveRecord::Base
content_type = 'application/vnd.ms-excel'
end
if content_type == 'application/mspowerpoint' or content_type == 'application/x-ms-powerpoint'
- content_type = 'application/vnd.ms-powerpoint'
+ content_type = 'application/vnd.ms-powerpoint'
end
if content_type == 'application/msword' or content_type == 'application/x-ms-word'
content_type = 'application/vnd.ms-word'
@@ -1134,8 +1130,16 @@ class IncomingMessage < ActiveRecord::Base
return content_type
end
- private :normalise_content_type
+
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
+
+ private :normalise_content_type
end
+
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index b5a1cd833..095a1b1af 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: info_requests
#
@@ -17,12 +17,16 @@
# allow_new_responses_from :string(255) default("anybody"), not null
# handle_rejected_responses :string(255) default("bounce"), not null
# idhash :string(255) not null
+# attention_requested :boolean default(FALSE)
#
require 'digest/sha1'
class InfoRequest < ActiveRecord::Base
+ include ActionView::Helpers::UrlHelper
+ include ActionController::UrlWriter
+
strip_attributes!
validates_presence_of :title, :message => N_("Please enter a summary of your request")
@@ -48,14 +52,14 @@ class InfoRequest < ActiveRecord::Base
# user described state (also update in info_request_event, admin_request/edit.rhtml)
validate :must_be_valid_state
- validates_inclusion_of :prominence, :in => [
- 'normal',
+ validates_inclusion_of :prominence, :in => [
+ 'normal',
'backpage',
'hidden',
'requester_only'
]
- validates_inclusion_of :law_used, :in => [
+ validates_inclusion_of :law_used, :in => [
'foi', # Freedom of Information Act
'eir', # Environmental Information Regulations
]
@@ -74,18 +78,21 @@ class InfoRequest < ActiveRecord::Base
]
def self.enumerate_states
- states = [
+ states = [
'waiting_response',
- 'waiting_clarification',
+ 'waiting_clarification',
'gone_postal',
'not_held',
'rejected', # this is called 'refused' in UK FOI law and the user interface, but 'rejected' internally for historic reasons
- 'successful',
+ 'successful',
'partially_successful',
'internal_review',
'error_message',
'requires_admin',
- 'user_withdrawn'
+ 'user_withdrawn',
+ 'attention_requested',
+ 'vexatious',
+ 'not_foi'
]
if @@custom_states_loaded
states += InfoRequest.theme_extra_states
@@ -94,7 +101,7 @@ class InfoRequest < ActiveRecord::Base
end
def must_be_valid_state
- errors.add(:described_state, "is not a valid state") if
+ errors.add(:described_state, "is not a valid state") if
!InfoRequest.enumerate_states.include? described_state
end
@@ -120,7 +127,7 @@ class InfoRequest < ActiveRecord::Base
errors.add(:title, _('Please describe more what the request is about in the subject. There is no need to say it is an FOI request, we add that on anyway.'))
end
end
-
+
OLD_AGE_IN_DAYS = 21.days
def after_initialize
@@ -166,7 +173,7 @@ class InfoRequest < ActiveRecord::Base
end
end
# Force reindex when tag string changes
- alias_method :orig_tag_string=, :tag_string=
+ alias_method :orig_tag_string=, :tag_string=
def tag_string=(tag_string)
ret = self.orig_tag_string=(tag_string)
reindex_request_events
@@ -219,7 +226,7 @@ public
end
# Email which public body should use to respond to request. This is in
- # the format PREFIXrequest-ID-HASH@DOMAIN. Here ID is the id of the
+ # the format PREFIXrequest-ID-HASH@DOMAIN. Here ID is the id of the
# FOI request, and HASH is a signature for that id.
def incoming_email
return self.magic_email("request-")
@@ -251,7 +258,7 @@ public
end
end
- # Two sorts of laws for requests, FOI or EIR
+ # Two sorts of laws for requests, FOI or EIR
def law_used_full
if self.law_used == 'foi'
return _("Freedom of Information")
@@ -306,7 +313,7 @@ public
guesses = []
# 1. Try to guess based on the email address(es)
addresses =
- (incoming_message.mail.to || []) +
+ (incoming_message.mail.to || []) +
(incoming_message.mail.cc || []) +
(incoming_message.mail.envelope_to || [])
addresses.uniq!
@@ -453,7 +460,6 @@ public
# An annotation (comment) is made
def add_comment(body, user)
comment = Comment.new
-
ActiveRecord::Base.transaction do
comment.body = body
comment.user = user
@@ -501,7 +507,7 @@ public
# states which require administrator action (hence email administrators
# when they are entered, and offer state change dialog to them)
def InfoRequest.requires_admin_states
- return ['requires_admin', 'error_message']
+ return ['requires_admin', 'error_message', 'attention_requested']
end
def requires_admin?
@@ -509,6 +515,9 @@ public
return false
end
+ def can_have_attention_requested?
+ end
+
# change status, including for last event for later historical purposes
def set_described_state(new_state)
ActiveRecord::Base.transaction do
@@ -539,7 +548,7 @@ public
self.base_calculate_status
end
end
-
+
def base_calculate_status
return 'waiting_classification' if self.awaiting_description
return described_state unless self.described_state == "waiting_response"
@@ -559,13 +568,13 @@ public
curr_state = nil
for event in self.info_request_events.reverse
event.xapian_mark_needs_index # we need to reindex all events in order to update their latest_* terms
- if curr_state.nil?
+ if curr_state.nil?
if !event.described_state.nil?
curr_state = event.described_state
end
end
- if !curr_state.nil? && event.event_type == 'response'
+ if !curr_state.nil? && event.event_type == 'response'
if event.calculated_state != curr_state
event.calculated_state = curr_state
event.last_described_at = Time.now()
@@ -579,7 +588,7 @@ public
elsif !curr_state.nil? && (event.event_type == 'followup_sent' || event.event_type == 'sent') && !event.described_state.nil? && (event.described_state == 'waiting_response' || event.described_state == 'internal_review')
# Followups can set the status to waiting response / internal
# review. Initial requests ('sent') set the status to waiting response.
-
+
# We want to store that in calculated_state state so it gets
# indexed.
if event.calculated_state != event.described_state
@@ -665,7 +674,11 @@ public
return self.public_body.is_followupable?
end
def recipient_name_and_email
- return TMail::Address.address_from_name_and_email(self.law_used_short + " requests at " + self.public_body.short_or_long_name, self.recipient_email).to_s
+ return TMail::Address.address_from_name_and_email(
+ _("{{law_used}} requests at {{public_body}}",
+ :law_used => self.law_used_short,
+ :public_body => self.public_body.short_or_long_name),
+ self.recipient_email).to_s
end
# History of some things that have happened
@@ -723,8 +736,8 @@ public
def index_of_last_described_event
events = self.info_request_events
events.each_index do |i|
- revi = events.size - 1 - i
- m = events[revi]
+ revi = events.size - 1 - i
+ m = events[revi]
if not m.described_state.nil?
return revi
end
@@ -735,7 +748,7 @@ public
def last_event_id_needing_description
last_event = events_needing_description[-1]
last_event.nil? ? 0 : last_event.id
- end
+ end
# Returns all the events which the user hasn't described yet - an empty array if all described.
def events_needing_description
@@ -801,8 +814,14 @@ public
_("Delivery error")
elsif status == 'requires_admin'
_("Unusual response.")
+ elsif status == 'attention_requested'
+ _("Reported for administrator attention.")
elsif status == 'user_withdrawn'
_("Withdrawn by the requester.")
+ elsif status == 'vexatious'
+ _("Considered by administrators as vexatious and hidden from site.")
+ elsif status == 'not_foi'
+ _("Considered by administrators as not an FOI request and hidden from site.")
else
begin
return self.theme_display_status(status)
@@ -823,11 +842,11 @@ public
track_thing.destroy
end
self.user_info_request_sent_alerts.each { |a| a.destroy }
- self.info_request_events.each do |info_request_event|
+ self.info_request_events.each do |info_request_event|
info_request_event.track_things_sent_emails.each { |a| a.destroy }
info_request_event.destroy
end
- self.exim_logs.each do |exim_log|
+ self.exim_logs.each do |exim_log|
exim_log.destroy
end
self.outgoing_messages.each { |a| a.destroy }
@@ -842,8 +861,8 @@ public
return InfoRequest.magic_email_for_id(prefix_part, self.id)
end
- def InfoRequest.magic_email_for_id(prefix_part, id)
- magic_email = MySociety::Config.get("INCOMING_EMAIL_PREFIX", "")
+ def InfoRequest.magic_email_for_id(prefix_part, id)
+ magic_email = MySociety::Config.get("INCOMING_EMAIL_PREFIX", "")
magic_email += prefix_part + id.to_s
magic_email += "-" + InfoRequest.hash_from_id(id)
magic_email += "@" + MySociety::Config.get("INCOMING_EMAIL_DOMAIN", "localhost")
@@ -888,14 +907,14 @@ public
def InfoRequest.find_old_unclassified(extra_params={})
last_response_created_at = last_event_time_clause('response')
age = extra_params[:age_in_days] ? extra_params[:age_in_days].days : OLD_AGE_IN_DAYS
- params = {:select => "*, #{last_response_created_at} as last_response_time",
- :conditions => ["awaiting_description = ? and #{last_response_created_at} < ? and url_title != 'holding_pen'",
- true, Time.now() - age],
+ params = {:select => "*, #{last_response_created_at} as last_response_time",
+ :conditions => ["awaiting_description = ? and #{last_response_created_at} < ? and url_title != 'holding_pen'",
+ true, Time.now() - age],
:order => "last_response_time"}
params[:limit] = extra_params[:limit] if extra_params[:limit]
params[:include] = extra_params[:include] if extra_params[:include]
if extra_params[:order]
- params[:order] = extra_params[:order]
+ params[:order] = extra_params[:order]
params.delete(:select)
end
if extra_params[:conditions]
@@ -905,7 +924,7 @@ public
end
find(:all, params)
end
-
+
def is_old_unclassified?
return false if !awaiting_description
return false if url_title == 'holding_pen'
@@ -924,7 +943,7 @@ public
next
end
incoming_message.safe_mail_from
-
+
email = OutgoingMailer.email_for_followup(self, incoming_message)
name = OutgoingMailer.name_for_followup(self, incoming_message)
@@ -953,7 +972,7 @@ public
end
end
end
-
+
def apply_censor_rules_to_binary!(binary)
for censor_rule in self.censor_rules
censor_rule.apply_to_binary!(binary)
@@ -964,7 +983,7 @@ public
end
end
end
-
+
def is_owning_user?(user)
!user.nil? && (user.id == user_id || user.owns_every_request?)
end
@@ -973,10 +992,10 @@ public
end
def user_can_view?(user)
- if self.prominence == 'hidden'
+ if self.prominence == 'hidden'
return User.view_hidden_requests?(user)
end
- if self.prominence == 'requester_only'
+ if self.prominence == 'requester_only'
return self.is_owning_user?(user)
end
return true
@@ -1017,7 +1036,7 @@ public
end
def json_for_api(deep)
- ret = {
+ ret = {
:id => self.id,
:url_title => self.url_title,
:title => self.title,
@@ -1042,6 +1061,26 @@ public
end
return ret
end
-end
+ before_save :purge_in_cache
+ def purge_in_cache
+ if !MySociety::Config.get('VARNISH_HOST').nil? && !self.id.nil?
+ # we only do this for existing info_requests (new ones have a nil id)
+ path = url_for(:controller => 'request', :action => 'show', :url_title => self.url_title, :only_path => true, :locale => :none)
+ req = PurgeRequest.find_by_url(path)
+ if req.nil?
+ req = PurgeRequest.new(:url => path,
+ :model => self.class.base_class.to_s,
+ :model_id => self.id)
+ end
+ req.save()
+ end
+ end
+
+ def for_admin_column
+ self.class.content_columns.map{|c| c unless %w(title url_title).include?(c.name) }.compact.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
+end
diff --git a/app/models/info_request_event.rb b/app/models/info_request_event.rb
index cb49596cb..a410328b0 100644
--- a/app/models/info_request_event.rb
+++ b/app/models/info_request_event.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: info_request_events
#
@@ -36,55 +36,56 @@ class InfoRequestEvent < ActiveRecord::Base
has_many :track_things_sent_emails
validates_presence_of :event_type
-
+
def self.enumerate_event_types
[
- 'sent',
- 'resent',
- 'followup_sent',
- 'followup_resent',
-
- 'edit', # title etc. edited (in admin interface)
- 'edit_outgoing', # outgoing message edited (in admin interface)
- 'edit_comment', # comment edited (in admin interface)
- 'destroy_incoming', # deleted an incoming message (in admin interface)
- 'destroy_outgoing', # deleted an outgoing message (in admin interface)
- 'redeliver_incoming', # redelivered an incoming message elsewhere (in admin interface)
- 'move_request', # changed user or public body (in admin interface)
- 'manual', # you did something in the db by hand
-
- 'response',
- 'comment',
- 'status_update',
+ 'sent',
+ 'resent',
+ 'followup_sent',
+ 'followup_resent',
+
+ 'edit', # title etc. edited (in admin interface)
+ 'edit_outgoing', # outgoing message edited (in admin interface)
+ 'edit_comment', # comment edited (in admin interface)
+ 'destroy_incoming', # deleted an incoming message (in admin interface)
+ 'destroy_outgoing', # deleted an outgoing message (in admin interface)
+ 'redeliver_incoming', # redelivered an incoming message elsewhere (in admin interface)
+ 'move_request', # changed user or public body (in admin interface)
+ 'manual', # you did something in the db by hand
+
+ 'response',
+ 'comment',
+ 'status_update'
]
end
+
validates_inclusion_of :event_type, :in => enumerate_event_types
# user described state (also update in info_request)
validate :must_be_valid_state
# whether event is publicly visible
- validates_inclusion_of :prominence, :in => [
- 'normal',
+ validates_inclusion_of :prominence, :in => [
+ 'normal',
'hidden',
'requester_only'
]
def must_be_valid_state
if !described_state.nil? and !InfoRequest.enumerate_states.include?(described_state)
- errors.add(described_state, "is not a valid state")
+ errors.add(described_state, "is not a valid state")
end
end
-
+
def user_can_view?(user)
if !self.info_request.user_can_view?(user)
raise "internal error, called user_can_view? on event when there is not permission to view entire request"
end
- if self.prominence == 'hidden'
+ if self.prominence == 'hidden'
return User.view_hidden_requests?(user)
end
- if self.prominence == 'requester_only'
+ if self.prominence == 'requester_only'
return self.info_request.is_owning_user?(user)
end
return true
@@ -93,7 +94,7 @@ class InfoRequestEvent < ActiveRecord::Base
# Full text search indexing
acts_as_xapian :texts => [ :search_text_main, :title ],
- :values => [
+ :values => [
[ :created_at, 0, "range_search", :date ], # for QueryParser range searches e.g. 01/01/2008..14/01/2008
[ :created_at_numeric, 1, "created_at", :number ], # for sorting
[ :described_at_numeric, 2, "described_at", :number ], # XXX using :number for lack of :datetime support in Xapian values
@@ -110,7 +111,7 @@ class InfoRequestEvent < ActiveRecord::Base
[ :latest_status, 'L', "latest_status" ],
[ :waiting_classification, 'W', "waiting_classification" ],
[ :filetype, 'T', "filetype" ],
- [ :tags, 'U', "tag" ]
+ [ :tags, 'U', "tag" ]
],
:if => :indexed_by_search?,
:eager_load => [ :outgoing_message, :comment, { :info_request => [ :user, :public_body, :censor_rules ] } ]
@@ -119,7 +120,7 @@ class InfoRequestEvent < ActiveRecord::Base
self.info_request.user.url_name
end
def requested_from
- # acts_as_xapian will detect translated fields via Globalize and add all the
+ # acts_as_xapian will detect translated fields via Globalize and add all the
# available locales to the index. But 'requested_from' is not translated directly,
# although it relies on a translated field in PublicBody. Hence, we need to
# manually add all the localized values to the index (Xapian can handle a list
@@ -174,15 +175,15 @@ class InfoRequestEvent < ActiveRecord::Base
end
def described_at_numeric
# format it here as no datetime support in Xapian's value ranges
- return self.described_at.strftime("%Y%m%d%H%M%S")
+ return self.described_at.strftime("%Y%m%d%H%M%S")
end
def created_at_numeric
# format it here as no datetime support in Xapian's value ranges
- return self.created_at.strftime("%Y%m%d%H%M%S")
+ return self.created_at.strftime("%Y%m%d%H%M%S")
end
-
+
def incoming_message_selective_columns(fields)
- message = IncomingMessage.find(:all,
+ message = IncomingMessage.find(:all,
:select => fields + ", incoming_messages.info_request_id",
:joins => "INNER JOIN info_request_events ON incoming_messages.id = incoming_message_id ",
:conditions => "info_request_events.id = #{self.id}"
@@ -218,7 +219,7 @@ class InfoRequestEvent < ActiveRecord::Base
# performance reasons. Xapian will take the full text.
def search_text_main(clipped = false)
text = ''
- if self.event_type == 'sent'
+ if self.event_type == 'sent'
text = text + self.outgoing_message.get_text_for_indexing + "\n\n"
elsif self.event_type == 'followup_sent'
text = text + self.outgoing_message.get_text_for_indexing + "\n\n"
@@ -236,7 +237,7 @@ class InfoRequestEvent < ActiveRecord::Base
return text
end
def title
- if self.event_type == 'sent'
+ if self.event_type == 'sent'
return self.info_request.title
end
return ''
@@ -317,26 +318,26 @@ class InfoRequestEvent < ActiveRecord::Base
old_value = old_params[key].to_s
new_value = new_params[key].to_s
if old_value != new_value
- ret = ret + "<em>" + CGI.escapeHTML(key) + ":</em> "
- ret = ret +
- CGI.escapeHTML(MySociety::Format.wrap_email_body_by_lines(old_value).strip).gsub(/\n/, '<br>') +
- " => " +
+ ret = ret + "<em>" + CGI.escapeHTML(key) + ":</em> "
+ ret = ret +
+ CGI.escapeHTML(MySociety::Format.wrap_email_body_by_lines(old_value).strip).gsub(/\n/, '<br>') +
+ " => " +
CGI.escapeHTML(MySociety::Format.wrap_email_body_by_lines(new_value).strip).gsub(/\n/, '<br>')
ret = ret + "<br>"
end
end
for key, value in other_params
- ret = ret + "<em>" + CGI.escapeHTML(key.to_s) + ":</em> "
- ret = ret + CGI.escapeHTML(value.to_s.strip)
+ ret = ret + "<em>" + CGI.escapeHTML(key.to_s) + ":</em> "
+ ret = ret + CGI.escapeHTML(value.to_s.strip)
ret = ret + "<br>"
end
return ret
end
-
- def is_incoming_message?() not self.incoming_message_selective_columns("incoming_messages.id").nil? end
- def is_outgoing_message?() not self.outgoing_message.nil? end
- def is_comment?() not self.comment.nil? end
+
+ def is_incoming_message?() not self.incoming_message_selective_columns("incoming_messages.id").nil? end
+ def is_outgoing_message?() not self.outgoing_message.nil? end
+ def is_comment?() not self.comment.nil? end
# Display version of status
def display_status
@@ -406,7 +407,7 @@ class InfoRequestEvent < ActiveRecord::Base
end
def json_for_api(deep, snippet_highlight_proc = nil)
- ret = {
+ ret = {
:id => self.id,
:event_type => self.event_type,
# params_yaml has possibly sensitive data in it, don't include it
@@ -431,7 +432,7 @@ class InfoRequestEvent < ActiveRecord::Base
ret[:snippet] = snippet_highlight_proc.call(self.search_text_main(true))
end
- if deep
+ if deep
ret[:info_request] = self.info_request.json_for_api(false)
ret[:public_body] = self.info_request.public_body.json_for_api
ret[:user] = self.info_request.user.json_for_api
@@ -440,7 +441,9 @@ class InfoRequestEvent < ActiveRecord::Base
return ret
end
-
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
end
-
-
diff --git a/app/models/outgoing_mailer.rb b/app/models/outgoing_mailer.rb
index bf81bb89f..8562c5b68 100644
--- a/app/models/outgoing_mailer.rb
+++ b/app/models/outgoing_mailer.rb
@@ -10,12 +10,12 @@
# separated) paragraphs, as is the convention for all the other mailers. This
# turned out to fit better with user exepectations when formatting messages.
#
-# XXX The other mail templates are written to use blank line separated
+# XXX The other mail templates are written to use blank line separated
# paragraphs. They could be rewritten, and the wrapping method made uniform
# throughout the application.
class OutgoingMailer < ApplicationMailer
-
+
# Email to public body requesting info
def initial_request(info_request, outgoing_message)
@wrap_lines_as_paragraphs = true
@@ -96,4 +96,4 @@ class OutgoingMailer < ApplicationMailer
end
end
-
+
diff --git a/app/models/outgoing_message.rb b/app/models/outgoing_message.rb
index cc561b21d..0ce1ee11c 100644
--- a/app/models/outgoing_message.rb
+++ b/app/models/outgoing_message.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: outgoing_messages
#
@@ -37,7 +37,7 @@ class OutgoingMessage < ActiveRecord::Base
# can have many events, for items which were resent by site admin e.g. if
# contact address changed
- has_many :info_request_events
+ has_many :info_request_events
# To override the default letter
attr_accessor :default_letter
@@ -45,7 +45,7 @@ class OutgoingMessage < ActiveRecord::Base
# reindex if body text is edited (e.g. by admin interface)
after_update :xapian_reindex_after_update
def xapian_reindex_after_update
- if self.changes.include?('body')
+ if self.changes.include?('body')
for info_request_event in self.info_request_events
info_request_event.xapian_mark_needs_index
end
@@ -83,11 +83,11 @@ class OutgoingMessage < ActiveRecord::Base
"\n\n" +
"I am writing to request an internal review of " +
self.info_request.public_body.name +
- "'s handling of my FOI request " +
- "'" + self.info_request.title + "'." +
+ "'s handling of my FOI request " +
+ "'" + self.info_request.title + "'." +
"\n\n\n\n [ " + self.get_internal_review_insert_here_note + " ] \n\n\n\n" +
"A full history of my FOI request and all correspondence is available on the Internet at this address:\n" +
- "http://" + MySociety::Config.get("DOMAIN", '127.0.0.1:3000') + "/request/" + self.info_request.url_title
+ "http://" + MySociety::Config.get("DOMAIN", '127.0.0.1:3000') + "/request/" + self.info_request.url_title
else
""
end
@@ -98,7 +98,7 @@ class OutgoingMessage < ActiveRecord::Base
def set_signature_name(name)
# XXX We use raw_body here to get unstripped one
if self.raw_body == self.get_default_message
- self.body = self.raw_body + name
+ self.body = self.raw_body + name
end
end
@@ -130,7 +130,7 @@ class OutgoingMessage < ActiveRecord::Base
def contains_postcode?
MySociety::Validate.contains_postcode?(self.body)
end
-
+
# Set default letter
def after_initialize
if self.body.nil?
@@ -267,7 +267,16 @@ class OutgoingMessage < ActiveRecord::Base
end
end
+ after_save(:purge_in_cache)
+ def purge_in_cache
+ self.info_request.purge_in_cache
+ end
+ def for_admin_column
+ self.class.content_columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
end
diff --git a/app/models/post_redirect.rb b/app/models/post_redirect.rb
index c9a6229a4..f613fc58d 100644
--- a/app/models/post_redirect.rb
+++ b/app/models/post_redirect.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: post_redirects
#
@@ -64,7 +64,7 @@ class PostRedirect < ActiveRecord::Base
MySociety::Util.generate_token
end
- # Make the token
+ # Make the token
def after_initialize
# The token is used to return you to what you are doing after the login form.
if not self.token
diff --git a/app/models/profile_photo.rb b/app/models/profile_photo.rb
index 43dbbbf0a..72bfe954f 100644
--- a/app/models/profile_photo.rb
+++ b/app/models/profile_photo.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: profile_photos
#
@@ -17,8 +17,6 @@
#
# $Id: profile_photo.rb,v 1.2 2009-09-17 21:10:05 francis Exp $
#
-require 'mahoro'
-require 'RMagick'
class ProfilePhoto < ActiveRecord::Base
WIDTH = 96
@@ -29,9 +27,9 @@ class ProfilePhoto < ActiveRecord::Base
belongs_to :user
# deliberately don't strip_attributes, so keeps raw photo properly
-
+
attr_accessor :x, :y, :w, :h
-
+
# convert binary data blob into ImageMagick image when assigned
attr_accessor :image
def after_initialize
@@ -47,7 +45,7 @@ class ProfilePhoto < ActiveRecord::Base
self.image = nil
return
end
-
+
self.image = image_list[0] # XXX perhaps take largest image or somesuch if there were multiple in the file?
self.convert_image
end
@@ -70,7 +68,7 @@ class ProfilePhoto < ActiveRecord::Base
# draft images are before the user has cropped them
if !self.draft && (image.columns != WIDTH || image.rows != HEIGHT)
# do any exact cropping (taken from Jcrop interface)
- if self.w && self.h
+ if self.w && self.h
image.crop!(self.x.to_i, self.y.to_i, self.w.to_i, self.h.to_i)
end
# do any further cropping
@@ -100,7 +98,7 @@ class ProfilePhoto < ActiveRecord::Base
if self.image.format != 'PNG'
errors.add(:data, N_("Failed to convert image to a PNG"))
end
-
+
if !self.draft && (self.image.columns != WIDTH || self.image.rows != HEIGHT)
errors.add(:data, N_("Failed to convert image to the correct size: at %{cols}x%{rows}, need %{width}x%{height}" % { :cols => self.image.columns, :rows => self.image.rows, :width => WIDTH, :height => HEIGHT }))
end
diff --git a/app/models/public_body.rb b/app/models/public_body.rb
index 90e9395ae..267b5d60c 100644
--- a/app/models/public_body.rb
+++ b/app/models/public_body.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 95
+# Schema version: 114
#
# Table name: public_bodies
#
@@ -58,11 +58,11 @@ class PublicBody < ActiveRecord::Base
short_long_name = t.short_name if t.short_name and !t.short_name.empty?
t.url_name = MySociety::Format.simplify_url_part(short_long_name, 'body')
end
-
+
def translated_versions
translations
end
-
+
def translated_versions=(translation_attrs)
def skip?(attrs)
valueless = attrs.inject({}) { |h, (k, v)| h[k] = v if v != '' and k != 'locale'; h } # because we want to fall back to alternative translations where there are empty values
@@ -86,7 +86,7 @@ class PublicBody < ActiveRecord::Base
end
end
end
-
+
# Make sure publication_scheme gets the correct default value.
# (This would work automatically, were publication_scheme not a translated attribute)
def after_initialize
@@ -96,7 +96,7 @@ class PublicBody < ActiveRecord::Base
# like find_by_url_name but also search historic url_name if none found
def self.find_by_url_name_with_historic(name)
locale = self.locale || I18n.locale
- PublicBody.with_locale(locale) do
+ PublicBody.with_locale(locale) do
found = PublicBody.find(:all,
:conditions => ["public_body_translations.url_name='#{name}'"],
:joins => :translations,
@@ -189,18 +189,37 @@ class PublicBody < ActiveRecord::Base
text = text.gsub(/\n/, '<br>')
return text
end
+
+ def compare(previous = nil)
+ if previous.nil?
+ yield([])
+ else
+ v = self
+ changes = self.class.content_columns.inject([]) {|memo, c|
+ unless %w(version last_edit_editor last_edit_comment updated_at).include?(c.name)
+ from = previous.send(c.name)
+ to = self.send(c.name)
+ memo << { :name => c.human_name, :from => from, :to => to } if from != to
+ end
+ memo
+ }
+ changes.each do |change|
+ yield(change)
+ end
+ end
+ end
end
acts_as_xapian :texts => [ :name, :short_name, :notes ],
- :values => [
+ :values => [
[ :created_at_numeric, 1, "created_at", :number ] # for sorting
],
:terms => [ [ :variety, 'V', "variety" ],
- [ :tag_array_for_search, 'U', "tag" ]
+ [ :tag_array_for_search, 'U', "tag" ]
]
def created_at_numeric
# format it here as no datetime support in Xapian's value ranges
- return self.created_at.strftime("%Y%m%d%H%M%S")
+ return self.created_at.strftime("%Y%m%d%H%M%S")
end
def variety
return "authority"
@@ -236,7 +255,7 @@ class PublicBody < ActiveRecord::Base
def update_url_name
self.url_name = MySociety::Format.simplify_url_part(self.short_or_long_name, 'body')
end
-
+
# Return the short name if present, or else long name
def short_or_long_name
if self.short_name.nil? || self.short_name.empty? # 'nil' can happen during construction
@@ -253,7 +272,7 @@ class PublicBody < ActiveRecord::Base
first = true
for tag in self.tags
if PublicBodyCategories::get().by_tag().include?(tag.name)
- desc = PublicBodyCategories::get().singular_by_tag()[tag.name]
+ desc = PublicBodyCategories::get().singular_by_tag()[tag.name]
if first
# terrible that Ruby/Rails doesn't have an equivalent of ucfirst
# (capitalize shockingly converts later characters to lowercase)
@@ -270,7 +289,7 @@ class PublicBody < ActiveRecord::Base
if types.size > 0
ret = types[0, types.size - 1].join(", ")
if types.size > 1
- ret = ret + " and "
+ ret = ret + " and "
end
ret = ret + types[-1]
return ret
@@ -282,19 +301,11 @@ class PublicBody < ActiveRecord::Base
# Guess home page from the request email, or use explicit override, or nil
# if not known.
def calculated_home_page
- # manual override for ones we calculate wrongly
- if self.home_page != ''
- return self.home_page
- end
-
- # extract the domain name from the FOI request email
- url = self.request_email_domain
- if url.nil?
- return nil
+ if home_page && !home_page.empty?
+ home_page[URI::regexp(%w(http https))] ? home_page : "http://#{home_page}"
+ elsif request_email_domain
+ "http://www.#{request_email_domain}"
end
-
- # add standard URL prefix
- return "http://www." + url
end
# Are all requests to this body under the Environmental Information Regulations?
@@ -359,12 +370,12 @@ class PublicBody < ActiveRecord::Base
for existing_body in bodies
# Hide InternalAdminBody from import notes
next if existing_body.id == PublicBody.internal_admin_body.id
-
+
bodies_by_name[existing_body.name] = existing_body
set_of_existing.add(existing_body.name)
end
end
-
+
set_of_importing = Set.new()
field_names = { 'name'=>1, 'request_email'=>2 } # Default values in case no field list is given
line = 0
@@ -380,7 +391,7 @@ class PublicBody < ActiveRecord::Base
fields = {}
field_names.each{|name, i| fields[name] = row[i]}
-
+
name = row[field_names['name']]
email = row[field_names['request_email']]
next if name.nil?
@@ -392,7 +403,7 @@ class PublicBody < ActiveRecord::Base
errors.push "error: line #{line.to_s}: invalid email '#{email}' for authority '#{name}'"
next
end
-
+
field_list = ['name', 'short_name', 'request_email', 'notes', 'publication_scheme', 'home_page', 'tag_string']
if public_body = bodies_by_name[name] # Existing public body
@@ -402,7 +413,7 @@ class PublicBody < ActiveRecord::Base
field_list.each do |field_name|
localized_field_name = (locale.to_s == I18n.default_locale.to_s) ? field_name : "#{field_name}.#{locale}"
localized_value = field_names[localized_field_name] && row[field_names[localized_field_name]]
-
+
# Tags are a special case, as we support adding to the field, not just setting a new value
if localized_field_name == 'tag_string'
if localized_value.nil?
@@ -410,11 +421,11 @@ class PublicBody < ActiveRecord::Base
else
if tag_behaviour == 'add'
localized_value = "#{localized_value} #{tag}" unless tag.empty?
- localized_value = "#{localized_value} #{public_body.tag_string}"
+ localized_value = "#{localized_value} #{public_body.tag_string}"
end
end
end
-
+
if !localized_value.nil? and public_body.send(field_name) != localized_value
changed[field_name] = "#{public_body.send(field_name)}: #{localized_value}"
public_body.send("#{field_name}=", localized_value)
@@ -424,14 +435,14 @@ class PublicBody < ActiveRecord::Base
unless changed.empty?
notes.push "line #{line.to_s}: updating authority '#{name}' (locale: #{locale}):\n\t#{changed.to_json}"
public_body.last_edit_editor = editor
- public_body.last_edit_comment = 'Updated from spreadsheet'
+ public_body.last_edit_comment = 'Updated from spreadsheet'
public_body.save!
end
end
end
else # New public body
public_body = PublicBody.new(:name=>"", :short_name=>"", :request_email=>"")
- available_locales.each do |locale|
+ available_locales.each do |locale|
PublicBody.with_locale(locale) do
changed = ActiveSupport::OrderedHash.new
field_list.each do |field_name|
@@ -441,7 +452,7 @@ class PublicBody < ActiveRecord::Base
if localized_field_name == 'tag_string' and tag_behaviour == 'add'
localized_value = "#{localized_value} #{tag}" unless tag.empty?
end
-
+
if !localized_value.nil? and public_body.send(field_name) != localized_value
changed[field_name] = localized_value
public_body.send("#{field_name}=", localized_value)
@@ -452,7 +463,7 @@ class PublicBody < ActiveRecord::Base
notes.push "line #{line.to_s}: creating new authority '#{name}' (locale: #{locale}):\n\t#{changed.to_json}"
public_body.publication_scheme = public_body.publication_scheme || ""
public_body.last_edit_editor = editor
- public_body.last_edit_comment = 'Created from spreadsheet'
+ public_body.last_edit_comment = 'Created from spreadsheet'
public_body.save!
end
end
@@ -462,7 +473,7 @@ class PublicBody < ActiveRecord::Base
set_of_importing.add(name)
end
- # Give an error listing ones that are to be deleted
+ # Give an error listing ones that are to be deleted
deleted_ones = set_of_existing - set_of_importing
if deleted_ones.size > 0
notes.push "Notes: Some " + tag + " bodies are in database, but not in CSV file:\n " + Array(deleted_ones).sort.join("\n ") + "\nYou may want to delete them manually.\n"
@@ -527,7 +538,7 @@ class PublicBody < ActiveRecord::Base
end
def has_notes?
- return self.notes != ""
+ return !self.notes.nil? && self.notes != ""
end
def notes_as_html
self.notes
@@ -538,7 +549,7 @@ class PublicBody < ActiveRecord::Base
end
def json_for_api
- return {
+ return {
:id => self.id,
:url_name => self.url_name,
:name => self.name,
@@ -546,7 +557,7 @@ class PublicBody < ActiveRecord::Base
# :request_email # we hide this behind a captcha, to stop people doing bulk requests easily
:created_at => self.created_at,
:updated_at => self.updated_at,
- # don't add the history as some edit comments contain sensitive information
+ # don't add the history as some edit comments contain sensitive information
# :version, :last_edit_editor, :last_edit_comment
:home_page => self.calculated_home_page,
:notes => self.notes,
@@ -555,6 +566,17 @@ class PublicBody < ActiveRecord::Base
}
end
+ after_save(:purge_in_cache)
+ def purge_in_cache
+ self.info_requests.each {|x| x.purge_in_cache}
+ end
+
+ def for_admin_column
+ self.class.content_columns.map{|c| c unless %w(name last_edit_comment).include?(c.name)}.compact.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s, column.name)
+ end
+ end
+
end
diff --git a/app/models/purge_request.rb b/app/models/purge_request.rb
new file mode 100644
index 000000000..48a16f9e6
--- /dev/null
+++ b/app/models/purge_request.rb
@@ -0,0 +1,52 @@
+# == Schema Information
+# Schema version: 114
+#
+# Table name: purge_requests
+#
+# id :integer not null, primary key
+# url :string(255)
+# created_at :datetime not null
+# model :string(255) not null
+# model_id :integer not null
+#
+
+# models/purge_request.rb:
+# A queue of URLs to purge
+#
+# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
+# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
+#
+
+class PurgeRequest < ActiveRecord::Base
+ def self.purge_all
+ done_something = false
+ for item in PurgeRequest.all()
+ item.purge
+ done_something = true
+ end
+ return done_something
+ end
+
+ def self.purge_all_loop
+ # Run purge_all in an endless loop, sleeping when there is nothing to do
+ while true
+ sleep_seconds = 1
+ while !purge_all
+ sleep sleep_seconds
+ sleep_seconds *= 2
+ sleep_seconds = 30 if sleep_seconds > 30
+ end
+ end
+ end
+
+ def purge
+ config = MySociety::Config.load_default()
+ varnish_url = config['VARNISH_HOST']
+ result = quietly_try_to_purge(varnish_url, self.url)
+ self.delete()
+ end
+end
+
+
+
+
diff --git a/app/models/raw_email.rb b/app/models/raw_email.rb
index 3e12a6feb..1466e5d9c 100644
--- a/app/models/raw_email.rb
+++ b/app/models/raw_email.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: raw_emails
#
@@ -16,7 +16,7 @@
class RawEmail < ActiveRecord::Base
# deliberately don't strip_attributes, so keeps raw email properly
-
+
has_one :incoming_message
# We keep the old data_text field (which is of type text) for backwards
@@ -27,10 +27,10 @@ class RawEmail < ActiveRecord::Base
def directory
request_id = self.incoming_message.info_request.id.to_s
if ENV["RAILS_ENV"] == "test"
- return File.join(RAILS_ROOT, 'files/raw_email_test')
+ return File.join(Rails.root, 'files/raw_email_test')
else
return File.join(MySociety::Config.get('RAW_EMAILS_LOCATION',
- 'files/raw_emails'),
+ 'files/raw_emails'),
request_id[0..2], request_id)
end
end
diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb
index 177a39241..8e6e65a26 100644
--- a/app/models/request_mailer.rb
+++ b/app/models/request_mailer.rb
@@ -9,7 +9,7 @@
require 'alaveteli_file_types'
class RequestMailer < ApplicationMailer
-
+
# Used when an FOI officer uploads a response from their web browser - this is
# the "fake" email used to store in the same format in the database as if they
@@ -38,7 +38,7 @@ class RequestMailer < ApplicationMailer
@subject = "Your response to an FOI request was not delivered"
attachment :content_type => 'message/rfc822', :body => raw_email_data,
:filename => "original.eml", :transfer_encoding => '7bit', :content_disposition => 'inline'
- @body = {
+ @body = {
:info_request => info_request,
:contact_email => MySociety::Config.get("CONTACT_EMAIL", 'contact@localhost')
}
@@ -48,7 +48,7 @@ class RequestMailer < ApplicationMailer
def requires_admin(info_request)
@from = info_request.user.name_and_email
@recipients = contact_from_name_and_email
- @subject = _("FOI response requires admin - ") + info_request.title
+ @subject = _("FOI response requires admin ({{reason}}) - {{title}}", :reason => info_request.described_state, :title => info_request.title)
url = main_url(request_url(info_request))
admin_url = request_admin_url(info_request)
@body = {:info_request => info_request, :url => url, :admin_url => admin_url }
@@ -142,7 +142,7 @@ class RequestMailer < ApplicationMailer
# Tell the requester that they need to clarify their request
def not_clarified_alert(info_request, incoming_message)
respond_url = show_response_url(:id => info_request.id, :incoming_message_id => incoming_message.id)
- respond_url = respond_url + "#followup"
+ respond_url = respond_url + "#followup"
post_redirect = PostRedirect.new(
:uri => respond_url,
@@ -155,7 +155,7 @@ class RequestMailer < ApplicationMailer
'Auto-Submitted' => 'auto-generated', # http://tools.ietf.org/html/rfc3834
'X-Auto-Response-Suppress' => 'OOF'
@recipients = info_request.user.name_and_email
- @subject = "Clarify your FOI request - " + info_request.title
+ @subject = _("Clarify your FOI request - ") + info_request.title
@body = { :incoming_message => incoming_message, :info_request => info_request, :url => url }
end
@@ -182,7 +182,7 @@ class RequestMailer < ApplicationMailer
# Class function, called by script/mailin with all incoming responses.
# [ This is a copy (Monkeypatch!) of function from action_mailer/base.rb,
# but which additionally passes the raw_email to the member function, as we
- # want to record it.
+ # want to record it.
#
# That is because we want to be sure we properly record the actual message
# received in its raw form - so any information won't be lost in a round
@@ -215,7 +215,7 @@ class RequestMailer < ApplicationMailer
# Find which info requests the email is for
reply_info_requests = self.requests_matching_email(email)
# Nothing found, so save in holding pen
- if reply_info_requests.size == 0
+ if reply_info_requests.size == 0
reason = _("Could not identify the request from the email address")
request = InfoRequest.holding_pen_request
request.receive(email, raw_email, false, reason)
@@ -225,7 +225,7 @@ class RequestMailer < ApplicationMailer
# Send the message to each request, to be archived with it
for reply_info_request in reply_info_requests
# If environment variable STOP_DUPLICATES is set, don't send message with same id again
- if ENV['STOP_DUPLICATES']
+ if ENV['STOP_DUPLICATES']
if reply_info_request.already_received?(email, raw_email)
raise "message " + email.message_id + " already received by request"
end
@@ -275,7 +275,7 @@ class RequestMailer < ApplicationMailer
end
end
- # Send email alerts for new responses which haven't been classified. By default,
+ # Send email alerts for new responses which haven't been classified. By default,
# it goes out 3 days after last update of event, then after 10, then after 24.
def self.alert_new_response_reminders
MySociety::Config.get("NEW_RESPONSE_REMINDER_AFTER_DAYS", [3, 10, 24]).each_with_index do |days, i|
@@ -283,10 +283,10 @@ class RequestMailer < ApplicationMailer
end
end
def self.alert_new_response_reminders_internal(days_since, type_code)
- info_requests = InfoRequest.find_old_unclassified(:order => 'info_requests.id',
- :include => [:user],
+ info_requests = InfoRequest.find_old_unclassified(:order => 'info_requests.id',
+ :include => [:user],
:age_in_days => days_since)
-
+
for info_request in info_requests
alert_event_id = info_request.get_last_response_event_id
last_response_message = info_request.get_last_response
@@ -302,7 +302,7 @@ class RequestMailer < ApplicationMailer
store_sent.user = info_request.user
store_sent.alert_type = type_code
store_sent.info_request_event_id = alert_event_id
- # XXX uses same template for reminder 1 and reminder 2 right now.
+ # XXX uses same template for reminder 1 and reminder 2 right now.
RequestMailer.deliver_new_response_reminder_alert(info_request, last_response_message)
store_sent.save!
end
@@ -340,11 +340,11 @@ class RequestMailer < ApplicationMailer
# Send email alert to request submitter for new comments on the request.
def self.alert_comment_on_request()
-
+
# We only check comments made in the last month - this means if the
# cron jobs broke for more than a month events would be lost, but no
# matter. I suspect the performance gain will be needed (with an index on updated_at)
-
+
# XXX the :order part info_request_events.created_at is a work around
# for a very old Rails bug which means eager loading does not respect
# association orders.
@@ -352,7 +352,7 @@ class RequestMailer < ApplicationMailer
# http://lists.rubyonrails.org/pipermail/rails-core/2006-July/001798.html
# That that patch has not been applied, despite bribes of beer, is
# typical of the lack of quality of Rails.
-
+
info_requests = InfoRequest.find(:all,
:conditions => [
"info_requests.id in (
diff --git a/app/models/track_mailer.rb b/app/models/track_mailer.rb
index 0c053c4ad..92da7c376 100644
--- a/app/models/track_mailer.rb
+++ b/app/models/track_mailer.rb
@@ -47,8 +47,8 @@ class TrackMailer < ApplicationMailer
return done_something
end
for user in users
- next if !user.should_be_emailed?
-
+ next if !user.should_be_emailed? || !user.receive_email_alerts
+
email_about_things = []
track_things = TrackThing.find(:all, :conditions => [ "tracking_user_id = ? and track_medium = ?", user.id, 'email_daily' ])
for track_thing in track_things
@@ -56,7 +56,7 @@ class TrackMailer < ApplicationMailer
#
# We only use track_things_sent_emails records which are less than 14 days old.
# In the search query loop below, we also only use items described in last 7 days.
- # An item described that recently definitely can't appear in track_things_sent_emails
+ # An item described that recently definitely can't appear in track_things_sent_emails
# earlier, so this is safe (with a week long margin of error). If the alerts break
# for a whole week, then they will miss some items. Tough.
done_info_request_events = {}
@@ -70,7 +70,7 @@ class TrackMailer < ApplicationMailer
# Query for things in this track. We use described_at for the
# ordering, so we catch anything new (before described), or
# anything whose new status has been described.
- xapian_object = InfoRequest.full_search([InfoRequestEvent], track_thing.track_query, 'described_at', true, nil, 100, 1)
+ xapian_object = InfoRequest.full_search([InfoRequestEvent], track_thing.track_query, 'described_at', true, nil, 100, 1)
# Go through looking for unalerted things
alert_results = []
for result in xapian_object.results
@@ -86,7 +86,7 @@ class TrackMailer < ApplicationMailer
alert_results.push(result)
end
# If there were more alerts for this track, then store them
- if alert_results.size > 0
+ if alert_results.size > 0
email_about_things.push([track_thing, alert_results, xapian_object])
end
end
diff --git a/app/models/track_thing.rb b/app/models/track_thing.rb
index b277e72b0..7f6bc9a7e 100644
--- a/app/models/track_thing.rb
+++ b/app/models/track_thing.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: track_things
#
@@ -35,17 +35,17 @@ class TrackThing < ActiveRecord::Base
has_many :track_things_sent_emails
- validates_inclusion_of :track_type, :in => [
- 'request_updates',
+ validates_inclusion_of :track_type, :in => [
+ 'request_updates',
'all_new_requests',
'all_successful_requests',
- 'public_body_updates',
+ 'public_body_updates',
'user_updates',
'search_query'
]
- validates_inclusion_of :track_medium, :in => [
- 'email_daily',
+ validates_inclusion_of :track_medium, :in => [
+ 'email_daily',
'feed'
]
@@ -69,7 +69,7 @@ class TrackThing < ActiveRecord::Base
end
def track_query_description
- # XXX this is very brittle... we should probably ask users
+ # XXX this is very brittle... we should probably ask users
# simply to name their tracks when they make them?
original_text = parsed_text = self.track_query.gsub(/([()]|OR)/, "")
filters = parsed_text.scan /\b\S+:\S+\b/
@@ -101,14 +101,14 @@ class TrackThing < ActiveRecord::Base
end
if filter =~ /waiting/
statuses << _("awaiting a response")
- end
+ end
end
if filters.empty?
parsed_text = original_text
end
descriptions = []
if varieties.include? _("requests")
- descriptions << _("requests which are {{list_of_statuses}}", :list_of_statuses => Array(statuses).join(_(' or ')))
+ descriptions << _("requests which are {{list_of_statuses}}", :list_of_statuses => Array(statuses).sort.join(_(' or ')))
varieties -= [_("requests")]
end
if descriptions.empty? and varieties.empty?
@@ -116,7 +116,7 @@ class TrackThing < ActiveRecord::Base
end
descriptions += Array(varieties)
parsed_text = parsed_text.strip
- descriptions = descriptions.join(_(" or "))
+ descriptions = descriptions.sort.join(_(" or "))
if !parsed_text.empty?
descriptions += _("{{list_of_things}} matching text '{{search_query}}'", :list_of_things => "", :search_query => parsed_text)
end
@@ -175,7 +175,7 @@ class TrackThing < ActiveRecord::Base
query += " variety:sent"
when "users"
query += " variety:user"
- when "authorities"
+ when "bodies"
query += " variety:authority"
end
end
@@ -196,15 +196,15 @@ class TrackThing < ActiveRecord::Base
@params = {
# Website
:list_description => _("'{{link_to_request}}', a request", :link_to_request => "<a href=\"/request/" + CGI.escapeHTML(self.info_request.url_title) + "\">" + CGI.escapeHTML(self.info_request.title) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
- :verb_on_page => _("Track this request by email"),
- :verb_on_page_already => _("You are already tracking this request by email"),
+ :verb_on_page => _("Follow this request"),
+ :verb_on_page_already => _("You are already following this request"),
# Email
:title_in_email => _("New updates for the request '{{request_title}}'", :request_title => self.info_request.title),
:title_in_rss => _("New updates for the request '{{request_title}}'", :request_title => self.info_request.title),
# Authentication
- :web => _("To follow updates to the request '{{request_title}}'", :request_title => CGI.escapeHTML(self.info_request.title)),
- :email => _("Then you will be emailed whenever the request '{{request_title}}' is updated.", :request_title => CGI.escapeHTML(self.info_request.title)),
- :email_subject => _("Confirm you want to follow updates to the request '{{request_title}}'", :request_title => self.info_request.title),
+ :web => _("To follow the request '{{request_title}}'", :request_title => CGI.escapeHTML(self.info_request.title)),
+ :email => _("Then you will be updated whenever the request '{{request_title}}' is updated.", :request_title => CGI.escapeHTML(self.info_request.title)),
+ :email_subject => _("Confirm you want to follow the request '{{request_title}}'", :request_title => self.info_request.title),
# RSS sorting
:feed_sortby => 'newest'
}
@@ -212,15 +212,15 @@ class TrackThing < ActiveRecord::Base
@params = {
# Website
:list_description => _("any <a href=\"/list\">new requests</a>"),
- :verb_on_page => _("Email me when there are new requests"),
- :verb_on_page_already => _("You are being emailed when there are new requests"),
+ :verb_on_page => _("Follow all new requests"),
+ :verb_on_page_already => _("You are already following new requests"),
# Email
:title_in_email => _("New Freedom of Information requests"),
:title_in_rss => _("New Freedom of Information requests"),
# Authentication
- :web => _("To be emailed about any new requests"),
- :email => _("Then you will be emailed whenever anyone makes a new FOI request."),
- :email_subject => _("Confirm you want to be emailed about new requests"),
+ :web => _("To be follow new requests"),
+ :email => _("Then you will be following all new FOI request."),
+ :email_subject => _("Confirm you want to follow new requests"),
# RSS sorting
:feed_sortby => 'newest'
}
@@ -228,15 +228,15 @@ class TrackThing < ActiveRecord::Base
@params = {
# Website
:list_description => _("any <a href=\"/list/successful\">successful requests</a>"),
- :verb_on_page => _("Email me new successful responses "),
- :verb_on_page_already => _("You are being emailed about any new successful responses"),
+ :verb_on_page => _("Follow new successful responses"),
+ :verb_on_page_already => _("You are following all new successful responses"),
# Email
:title_in_email => _("Successful Freedom of Information requests"),
:title_in_rss => _("Successful Freedom of Information requests"),
# Authentication
- :web => _("To be emailed about any successful requests"),
- :email => _("Then you will be emailed whenever an FOI request succeeds."),
- :email_subject => _("Confirm you want to be emailed when an FOI request succeeds"),
+ :web => _("To follow all successful requests"),
+ :email => _("Then you will be notified whenever an FOI request succeeds."),
+ :email_subject => _("Confirm you want to follow all successful FOI requests"),
# RSS sorting - used described date, as newest would give a
# date for responses possibly days before description, so
# wouldn't appear at top of list when description (known
@@ -247,15 +247,15 @@ class TrackThing < ActiveRecord::Base
@params = {
# Website
:list_description => _("'{{link_to_authority}}', a public authority", :link_to_authority => "<a href=\"/body/" + CGI.escapeHTML(self.public_body.url_name) + "\">" + CGI.escapeHTML(self.public_body.name) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
- :verb_on_page => _("Track requests to {{public_body_name}} by email",:public_body_name=>CGI.escapeHTML(self.public_body.name)),
- :verb_on_page_already => _("You are already tracking requests to {{public_body_name}} by email", :public_body_name=>CGI.escapeHTML(self.public_body.name)),
+ :verb_on_page => _("Follow requests to {{public_body_name}}",:public_body_name=>CGI.escapeHTML(self.public_body.name)),
+ :verb_on_page_already => _("You are already following requests to {{public_body_name}}", :public_body_name=>CGI.escapeHTML(self.public_body.name)),
# Email
:title_in_email => self.public_body.law_only_short + " requests to '" + self.public_body.name + "'",
:title_in_rss => self.public_body.law_only_short + " requests to '" + self.public_body.name + "'",
# Authentication
- :web => _("To be emailed about requests made using {{site_name}} to the public authority '{{public_body_name}}'", :site_name=>MySociety::Config.get('SITE_NAME', 'Alaveteli'), :public_body_name=>CGI.escapeHTML(self.public_body.name)),
- :email => _("Then you will be emailed whenever someone requests something or gets a response from '{{public_body_name}}'.", :public_body_name=>CGI.escapeHTML(self.public_body.name)),
- :email_subject => _("Confirm you want to be emailed about requests to '{{public_body_name}}'", :public_body_name=>self.public_body.name),
+ :web => _("To follow requests made using {{site_name}} to the public authority '{{public_body_name}}'", :site_name=>MySociety::Config.get('SITE_NAME', 'Alaveteli'), :public_body_name=>CGI.escapeHTML(self.public_body.name)),
+ :email => _("Then you will be notified whenever someone requests something or gets a response from '{{public_body_name}}'.", :public_body_name=>CGI.escapeHTML(self.public_body.name)),
+ :email_subject => _("Confirm you want to follow requests to '{{public_body_name}}'", :public_body_name=>self.public_body.name),
# RSS sorting
:feed_sortby => 'newest'
}
@@ -263,15 +263,15 @@ class TrackThing < ActiveRecord::Base
@params = {
# Website
:list_description => _("'{{link_to_user}}', a person", :link_to_user => "<a href=\"/user/" + CGI.escapeHTML(self.tracked_user.url_name) + "\">" + CGI.escapeHTML(self.tracked_user.name) + "</a>"), # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
- :verb_on_page => _("Track this person by email"),
- :verb_on_page_already => _("You are already tracking this person by email"),
+ :verb_on_page => _("Follow this person"),
+ :verb_on_page_already => _("You are already following this person"),
# Email
:title_in_email => _("FOI requests by '{{user_name}}'", :user_name=>self.tracked_user.name),
:title_in_rss => _("FOI requests by '{{user_name}}'", :user_name=>self.tracked_user.name),
# Authentication
- :web => _("To be emailed about requests by '{{user_name}}'", :user_name=>CGI.escapeHTML(self.tracked_user.name)),
- :email => _("Then you will be emailed whenever '{{user_name}}' requests something or gets a response.", :user_name=>CGI.escapeHTML(self.tracked_user.name)),
- :email_subject => _("Confirm you want to be emailed about requests by '{{user_name}}'", :user_name=>self.tracked_user.name),
+ :web => _("To follow requests by '{{user_name}}'", :user_name=>CGI.escapeHTML(self.tracked_user.name)),
+ :email => _("Then you will be notified whenever '{{user_name}}' requests something or gets a response.", :user_name=>CGI.escapeHTML(self.tracked_user.name)),
+ :email_subject => _("Confirm you want to follow requests by '{{user_name}}'", :user_name=>self.tracked_user.name),
# RSS sorting
:feed_sortby => 'newest'
}
@@ -279,15 +279,15 @@ class TrackThing < ActiveRecord::Base
@params = {
# Website
:list_description => "<a href=\"/search/" + CGI.escapeHTML(self.track_query) + "/newest/advanced\">" + self.track_query_description + "</a>", # XXX yeuch, sometimes I just want to call view helpers from the model, sorry! can't work out how
- :verb_on_page => _("Track things matching this search by email"),
- :verb_on_page_already => _("You are already tracking things matching this search by email"),
+ :verb_on_page => _("Follow things matching this search"),
+ :verb_on_page_already => _("You are already following things matching this search"),
# Email
:title_in_email => _("Requests or responses matching your saved search"),
:title_in_rss => _("Requests or responses matching your saved search"),
# Authentication
:web => _("To follow requests and responses matching your search"),
- :email => _("Then you will be emailed whenever a new request or response matches your search."),
- :email_subject => _("Confirm you want to be emailed about new requests or responses matching your search"),
+ :email => _("Then you will be notified whenever a new request or response matches your search."),
+ :email_subject => _("Confirm you want to follow new requests or responses matching your search"),
# RSS sorting - XXX hmmm, we don't really know which to use
# here for sorting. Might be a query term (e.g. 'cctv'), in
# which case newest is good, or might be something like
diff --git a/app/models/track_things_sent_email.rb b/app/models/track_things_sent_email.rb
index 777339d75..24297f57b 100644
--- a/app/models/track_things_sent_email.rb
+++ b/app/models/track_things_sent_email.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: track_things_sent_emails
#
diff --git a/app/models/user.rb b/app/models/user.rb
index 59a84b7aa..57fce429c 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: users
#
@@ -20,6 +20,8 @@
# email_bounced_at :datetime
# email_bounce_message :text default(""), not null
# no_limit :boolean default(FALSE), not null
+# receive_email_alerts :boolean default(TRUE), not null
+# user_similarity_id :integer
#
# models/user.rb:
@@ -52,22 +54,22 @@ class User < ActiveRecord::Base
attr_accessor :password_confirmation, :no_xapian_reindex
validates_confirmation_of :password, :message => _("Please enter the same password twice")
- validates_inclusion_of :admin_level, :in => [
+ validates_inclusion_of :admin_level, :in => [
'none',
- 'super',
+ 'super',
], :message => N_('Admin level is not included in list')
acts_as_xapian :texts => [ :name, :about_me ],
- :values => [
+ :values => [
[ :created_at_numeric, 1, "created_at", :number ] # for sorting
],
:terms => [ [ :variety, 'V', "variety" ] ],
:if => :indexed_by_search?
def created_at_numeric
# format it here as no datetime support in Xapian's value ranges
- return self.created_at.strftime("%Y%m%d%H%M%S")
+ return self.created_at.strftime("%Y%m%d%H%M%S")
end
-
+
def variety
"user"
end
@@ -79,7 +81,7 @@ class User < ActiveRecord::Base
if self.new_record?
# make alert emails go out at a random time for each new user, so
# overall they are spread out throughout the day.
- self.last_daily_track_email = User.random_time_in_last_day
+ self.last_daily_track_email = User.random_time_in_last_day
end
end
@@ -101,7 +103,7 @@ class User < ActiveRecord::Base
end
end
end
-
+
def get_locale
if !self.locale.nil?
locale = self.locale
@@ -117,10 +119,10 @@ class User < ActiveRecord::Base
def validate
if self.email != "" && !MySociety::Validate.is_valid_email(self.email)
- errors.add(:email, _("Please enter a valid email address"))
+ errors.add(:email, _("Please enter a valid email address"))
end
if MySociety::Validate.is_valid_email(self.name)
- errors.add(:name, _("Please enter your name, not your email address, in the name field."))
+ errors.add(:name, _("Please enter your name, not your email address, in the name field."))
end
end
@@ -139,7 +141,7 @@ class User < ActiveRecord::Base
end
# Return user given login email, password and other form parameters (e.g. name)
- #
+ #
# The specific_user_login parameter says that login as a particular user is
# expected, so no parallel registration form is being displayed.
def User.authenticate_from_form(params, specific_user_login = false)
@@ -235,10 +237,10 @@ class User < ActiveRecord::Base
# changed more than a day ago)
def get_undescribed_requests
self.info_requests.find(
- :all,
- :conditions => [ 'awaiting_description = ? and ' + InfoRequest.last_event_time_clause + ' < ?',
- true, Time.now() - 1.day
- ]
+ :all,
+ :conditions => [ 'awaiting_description = ? and ' + InfoRequest.last_event_time_clause + ' < ?',
+ true, Time.now() - 1.day
+ ]
)
end
@@ -256,7 +258,7 @@ class User < ActiveRecord::Base
def owns_every_request?
self.admin_level == 'super'
end
-
+
def User.owns_every_request?(user)
!user.nil? && user.owns_every_request?
end
@@ -271,7 +273,7 @@ class User < ActiveRecord::Base
def User.stay_logged_in_on_redirect?(user)
!user.nil? && user.admin_level == 'super'
end
-
+
# Does the user get "(admin)" links on each page on the main site?
def admin_page_links?
self.admin_level == 'super'
@@ -287,21 +289,21 @@ class User < ActiveRecord::Base
def exceeded_limit?
# Some users have no limit
return false if self.no_limit
-
+
# Has the user issued as many as MAX_REQUESTS_PER_USER_PER_DAY requests in the past 24 hours?
daily_limit = MySociety::Config.get("MAX_REQUESTS_PER_USER_PER_DAY")
return false if daily_limit.nil?
recent_requests = InfoRequest.count(:conditions => ["user_id = ? and created_at > now() - '1 day'::interval", self.id])
-
+
return (recent_requests >= daily_limit)
end
def next_request_permitted_at
return nil if self.no_limit
-
+
daily_limit = MySociety::Config.get("MAX_REQUESTS_PER_USER_PER_DAY")
n_most_recent_requests = InfoRequest.all(:conditions => ["user_id = ? and created_at > now() - '1 day'::interval", self.id], :order => "created_at DESC", :limit => daily_limit)
return nil if n_most_recent_requests.size < daily_limit
-
+
nth_most_recent_request = n_most_recent_requests[-1]
return nth_most_recent_request.created_at + 1.day
end
@@ -375,7 +377,7 @@ class User < ActiveRecord::Base
end
def json_for_api
- return {
+ return {
:id => self.id,
:url_name => self.url_name,
:name => self.name,
@@ -391,36 +393,54 @@ class User < ActiveRecord::Base
self.email_bounce_message = message
self.save!
end
-
+
def should_be_emailed?
return (self.email_confirmed && self.email_bounced_at.nil?)
end
-
+
def indexed_by_search?
return self.email_confirmed
end
+ def for_admin_column(complete = false)
+ if complete
+ columns = self.class.content_columns
+ else
+ columns = self.class.content_columns.map{|c| c if %w(created_at updated_at admin_level email_confirmed).include?(c.name) }.compact
+ end
+ columns.each do |column|
+ yield(column.human_name, self.send(column.name), column.type.to_s)
+ end
+ end
+
## Private instance methods
private
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
-
+
## Class methods
def User.encrypted_password(password, salt)
string_to_hash = password + salt # XXX need to add a secret here too?
Digest::SHA1.hexdigest(string_to_hash)
end
-
+
def User.record_bounce_for_email(email, message)
user = User.find_user_by_email(email)
return false if user.nil?
-
+
if user.email_bounced_at.nil?
user.record_bounce(message)
end
return true
end
+
+ after_save(:purge_in_cache)
+ def purge_in_cache
+ # XXX should only be if specific attributes have changed
+ self.info_requests.each {|x| x.purge_in_cache}
+ end
+
end
diff --git a/app/models/user_info_request_sent_alert.rb b/app/models/user_info_request_sent_alert.rb
index 5f23355bf..a97fd5d44 100644
--- a/app/models/user_info_request_sent_alert.rb
+++ b/app/models/user_info_request_sent_alert.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 108
+# Schema version: 114
#
# Table name: user_info_request_sent_alerts
#
@@ -23,7 +23,7 @@ class UserInfoRequestSentAlert < ActiveRecord::Base
belongs_to :user
belongs_to :info_request
- validates_inclusion_of :alert_type, :in => [
+ validates_inclusion_of :alert_type, :in => [
'overdue_1', # tell user that info request has become overdue
'very_overdue_1', # tell user that info request has become very overdue
'new_response_reminder_1', # reminder user to classify the recent response
diff --git a/app/views/admin_general/debug.rhtml b/app/views/admin_general/debug.rhtml
index 40fe33616..d7bf1c6da 100644
--- a/app/views/admin_general/debug.rhtml
+++ b/app/views/admin_general/debug.rhtml
@@ -7,6 +7,8 @@
<h2>Version numbers</h2>
<p>
+Alaveteli version: <%= link_to @current_version, @github_origin + @current_version %>
+<br>
Alaveteli branch: <%= link_to @current_branch, @github_origin + @current_branch %>
<br>
Alaveteli commit: <%= link_to @current_commit, @github_origin + @current_commit %>
diff --git a/app/views/admin_general/index.rhtml b/app/views/admin_general/index.rhtml
index 1a4b8ba96..48bd7f694 100644
--- a/app/views/admin_general/index.rhtml
+++ b/app/views/admin_general/index.rhtml
@@ -46,6 +46,20 @@
</ul>
<% end %>
+<% if @attention_requests.size > 0 %>
+ <h3>Review requests which have been marked as requiring your attention by users (<%=@error_message_requests.size%> total)</h3>
+
+ <ul>
+ <% for @request in @attention_requests %>
+ <li>
+ <%= request_both_links(@request)%>
+ &ndash; <%=simple_date(@request.get_last_event.created_at)%>
+ </li>
+ <% end %>
+ </ul>
+<% end %>
+
+
<% if @requires_admin_requests.size > 0 %>
<h3>These require administrator attention (<%=@requires_admin_requests.size%> total)</h3>
diff --git a/app/views/admin_request/_incoming_message_actions.rhtml b/app/views/admin_request/_incoming_message_actions.rhtml
index c23b4060a..569132861 100644
--- a/app/views/admin_request/_incoming_message_actions.rhtml
+++ b/app/views/admin_request/_incoming_message_actions.rhtml
@@ -1,6 +1,6 @@
<% form_tag '../redeliver_incoming' do %>
<div>
- id or url_title of request:
+ id or url_title of request (or a list of requests, comma-separated):
<% if @info_requests && @info_requests.size == 1 %>
<%= text_field_tag 'url_title', @info_requests[0].url_title, { :size => 20 } %>
<% else %>
diff --git a/app/views/admin_request/edit.rhtml b/app/views/admin_request/edit.rhtml
index b659c676d..4026ee712 100644
--- a/app/views/admin_request/edit.rhtml
+++ b/app/views/admin_request/edit.rhtml
@@ -22,20 +22,7 @@
</p>
<p><label for="info_request_described_state"><strong>Described state</strong></label>
- <%= select( 'info_request', "described_state",
- [
- 'waiting_response',
- 'waiting_clarification',
- 'gone_postal',
- 'not_held',
- 'rejected',
- 'successful',
- 'partially_successful',
- 'internal_review',
- 'error_message',
- 'requires_admin',
- 'user_withdrawn'
- ]) %>;
+ <%= select( 'info_request', "described_state", InfoRequest.enumerate_states ) %>;
<label for="info_request_awaiting_description"><strong>Awaiting description</strong></label>
<%= select('info_request', "awaiting_description", [["Yes - needs state updating",true],["No - state is up to date",false]]) %>
<br/>(don't forget to change 'awaiting description' when you set described state)<br/>
@@ -60,7 +47,7 @@
<hr>
-<% form_tag '../fully_destroy/' + @info_request.id.to_s do %>
+<% form_tag '../destroy/' + @info_request.id.to_s do %>
<p>
<strong>This is permanent and irreversible!</strong> <%= submit_tag 'Destory request entirely' %>
<br>Use it mainly if someone posts private information, e.g. made a Data Protection request. It
diff --git a/app/views/admin_request/hidden_user_explanation.rhtml b/app/views/admin_request/hidden_user_explanation.rhtml
new file mode 100644
index 000000000..aaea49fb6
--- /dev/null
+++ b/app/views/admin_request/hidden_user_explanation.rhtml
@@ -0,0 +1,9 @@
+Dear <%= name_to %>,
+
+Your request '<%= info_request.title %>' at <%= info_request_url %> has been reviewed by moderators.
+
+We consider it <% if reason == 'not_foi' %>is not a valid FOI request<% else %>to be vexatious<% end%>, and have therefore hidden it from other users. Please reply to this email if you would like to discuss this decision further.
+
+Yours,
+
+The <%= site_name %> team.
diff --git a/app/views/contact_mailer/from_admin_message.rhtml b/app/views/contact_mailer/from_admin_message.rhtml
new file mode 100644
index 000000000..bdb48d580
--- /dev/null
+++ b/app/views/contact_mailer/from_admin_message.rhtml
@@ -0,0 +1,2 @@
+<%= @message.strip %>
+
diff --git a/app/views/general/_locale_switcher.rhtml b/app/views/general/_locale_switcher.rhtml
index 27e492e84..2521b5eb5 100644
--- a/app/views/general/_locale_switcher.rhtml
+++ b/app/views/general/_locale_switcher.rhtml
@@ -1,11 +1,13 @@
- <% if FastGettext.default_available_locales.length > 1 && !params.empty? %>
- <div id="user_locale_switcher">
- <% for possible_locale in FastGettext.default_available_locales %>
- <% if possible_locale == I18n.locale.to_s %>
- <span class="active"><%= locale_name(possible_locale) %></span>
- <% else %>
- <a href="<%= locale_switcher(possible_locale, params) %>"><%= locale_name(possible_locale) %></a>
- <% end %>
- <% end %>
+ <% if FastGettext.default_available_locales.length > 1 && !params.empty? %>
+ <div id="user_locale_switcher">
+ <div class="btn-group">
+ <% for possible_locale in FastGettext.default_available_locales %>
+ <% if possible_locale == I18n.locale.to_s %>
+ <a href="#" class="btn disabled"><%= locale_name(possible_locale) %></a>
+ <% else %>
+ <a href="<%= locale_switcher(possible_locale, params) %>" class="btn"><%= locale_name(possible_locale) %></a>
+ <% end %>
+ <% end %>
</div>
- <% end %>
+ </div>
+ <% end %>
diff --git a/app/views/general/search.rhtml b/app/views/general/search.rhtml
index 90ace809e..a1f8c8f04 100644
--- a/app/views/general/search.rhtml
+++ b/app/views/general/search.rhtml
@@ -131,8 +131,7 @@
</p>
<% end %>
</div> <!-- header left -->
-
-<% if @track_thing && (@xapian_bodies_hits > 0 || @xapian_users_hits > 0 || @total_hits == 0)%>
+<% if !@track_thing.nil? %>
<div id="header_right">
<h2><%= _('Track this search')%></h2>
<%= render :partial => 'track/tracking_links', :locals => { :track_thing => @track_thing, :own_request => false, :location => 'main' } %>
diff --git a/app/views/layouts/admin.rhtml b/app/views/layouts/admin.rhtml
index 42ca5dbbb..65670538d 100644
--- a/app/views/layouts/admin.rhtml
+++ b/app/views/layouts/admin.rhtml
@@ -9,7 +9,7 @@
<%= stylesheet_link_tag 'admin-theme/jquery-ui-1.8.15.custom.css', :rel => 'stylesheet'%>
<%= stylesheet_link_tag 'admin', :title => "Main", :rel => "stylesheet" %>
</head>
- <body>
+ <body class="admin">
<p>
<strong><%= link_to 'Alaveteli', main_url('/') %> admin:</strong>
diff --git a/app/views/layouts/default.rhtml b/app/views/layouts/default.rhtml
index f439b27d2..bc9dfb02d 100644
--- a/app/views/layouts/default.rhtml
+++ b/app/views/layouts/default.rhtml
@@ -58,7 +58,7 @@
<%= render :partial => 'general/before_head_end' %>
</head>
- <body <%= "class='front'" if params[:action] == 'frontpage' %>>
+ <body class="<%= 'admin' if !session[:using_admin].nil?%> <%= 'front' if params[:action] == 'frontpage' %>">
<!-- XXX: move to a separate file -->
<% if force_registration_on_new_request && !@user %>
@@ -104,6 +104,7 @@
<% if @user %>
<%=link_to _("My requests"), show_user_requests_path(:url_name => @user.url_name) %>
<%=link_to _("My profile"), show_user_profile_path(:url_name => @user.url_name) %>
+ <%=link_to _("My wall"), show_user_wall_path(:url_name => @user.url_name) %>
<% end %>
@@ -154,6 +155,20 @@
<br />
<input type="text">
</div>
+ <%
+ ga_code = MySociety::Config.get('GA_CODE', '')
+ unless ga_code.empty?
+ %>
+ <script>
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+ </script>
+ <script>
+ var pageTracker = _gat._getTracker("<%=ga_code%>");
+ pageTracker._trackPageview();
+ </script>
+ <% end %>
+
</body>
</html>
diff --git a/app/views/public_body/show.rhtml b/app/views/public_body/show.rhtml
index 5f20a9717..63bd5f7fc 100644
--- a/app/views/public_body/show.rhtml
+++ b/app/views/public_body/show.rhtml
@@ -4,7 +4,7 @@
<h2><%= _('Follow this authority')%></h2>
<% follower_count = TrackThing.count(:all, :conditions => ["public_body_id = ?", @public_body.id]) %>
- <p><%= n_("There is %d person following this authority", "There are %d people following this authority", follower_count) % follower_count %></p>
+ <p><%= n_("<span id='follow_count'>%d</span> person is following this authority", "<span id='follow_count'>%d</span> people are following this authority", follower_count) % follower_count %></p>
<%= render :partial => 'track/tracking_links', :locals => { :track_thing => @track_thing, :own_request => false, :location => 'sidebar' } %>
<h2><%= _('More about this authority')%></h2>
diff --git a/app/views/request/_sidebar.rhtml b/app/views/request/_sidebar.rhtml
index 758387b09..bca142fa9 100644
--- a/app/views/request/_sidebar.rhtml
+++ b/app/views/request/_sidebar.rhtml
@@ -1,10 +1,21 @@
<div id="right_column">
+ <div id="follow_box">
<h2><%= _('Follow this request') %></h2>
<% follower_count = TrackThing.count(:all, :conditions => ["info_request_id = ?", @info_request.id]) + 1 %>
<p><%= n_("There is %d person following this request", "There are %d people following this request", follower_count) % follower_count %></p>
<%= render :partial => 'track/tracking_links', :locals => { :track_thing => @track_thing, :own_request => @info_request.user == @user, :location => 'sidebar' } %>
-
+ </div>
+ <% if @info_request.described_state != "attention_requested" %>
+ <h2><%= _('Offensive? Unsuitable?') %></h2>
+ <% if @info_request.attention_requested %>
+ <p><%= ('The site administrators have reviewed this request and consider it to be suitable for the website.') %></p>
+ <% else %>
+ <p><%= _('Requests for personal information and vexatious requests are not considered valid for FOI purposes (<a href="/help/about">read more</a>).') %>
+ <p><%= ('If you believe this request is not suitable, you can report it for attention by the site administrators') %></p>
+ <%= link_to _("Report this request"), report_path, :class => "link_button_green" %>
+ <% end %>
+ <% end %>
<h2><%= _("Act on what you've learnt") %></h2>
<div class="act_link">
diff --git a/app/views/request/_wall_listing.rhtml b/app/views/request/_wall_listing.rhtml
new file mode 100644
index 000000000..9cde234c0
--- /dev/null
+++ b/app/views/request/_wall_listing.rhtml
@@ -0,0 +1,30 @@
+<% if @highlight_words.nil?
+ @highlight_words = []
+end %>
+
+<div class="request_listing">
+ <div class="request_left">
+ <div class="requester">
+ <% if event.event_type == 'sent' %>
+ <%= _('A new request, <em><a href="{{request_url}}">{{request_title}}</a></em>, was sent to {{public_body_name}} by {{info_request_user}} on {{date}}.',:public_body_name=>public_body_link_absolute(info_request.public_body),:info_request_user=>user_link_absolute(info_request.user),:date=>simple_date(event.created_at),:request_url=>request_url(info_request),:request_title=>info_request.title) %>
+ <% elsif event.event_type == 'followup_sent' %>
+ <%= _('A <a href="{{request_url}}">follow up</a> to <em>{{request_title}}</em> was sent to {{public_body_name}} by {{info_request_user}} on {{date}}.',:public_body_name=>public_body_link_absolute(info_request.public_body),:info_request_user=>user_link_absolute(info_request.user),:date=>simple_date(event.created_at),:request_url=>outgoing_message_url(event.outgoing_message),:request_title=>info_request.title) %>
+ <% elsif event.event_type == 'response' %>
+ <%= _('A <a href="{{request_url}}">response</a> to <em>{{request_title}}</em> was sent by {{public_body_name}} to {{info_request_user}} on {{date}}. The request status is: {{request_status}}',:public_body_name=>public_body_link_absolute(info_request.public_body),:info_request_user=>user_link_absolute(info_request.user),:date=>simple_date(event.created_at),:request_url=>incoming_message_url(event.incoming_message_selective_columns("incoming_messages.id")),:request_title=>info_request.title,:request_status=>info_request.display_status) %>
+ <% elsif event.event_type == 'comment' %>
+ <%= _('An <a href="{{request_url}}">annotation</a> to <em>{{request_title}}</em> was made by {{event_comment_user}} on {{date}}',:public_body_name=>public_body_link_absolute(info_request.public_body),:info_request_user=>user_link_absolute(info_request.user),:event_comment_user=>user_link_absolute(event.comment.user),:date=>simple_date(event.created_at),:request_url=>comment_url(event.comment),:request_title=>info_request.title) %>
+ <% else %>
+ <%# Events of other types will not be indexed: see InfoRequestEvent#indexed_by_search?
+ However, it can happen that we see other types of event transiently here in the period
+ between a change being made and the update-xapian-index job being run. %>
+ <!-- Event of type '<%= event.event_type %>', id=<%= event.id %> -->
+ <% end %>
+ </div>
+ </div>
+ <div class="request_right">
+ <span class="desc">
+ <%= highlight_and_excerpt(event.search_text_main(true), @highlight_words, 150) %>
+ </span>
+ </div>
+</div>
+
diff --git a/app/views/request/show.rhtml b/app/views/request/show.rhtml
index c5d040fb7..27ad0700e 100644
--- a/app/views/request/show.rhtml
+++ b/app/views/request/show.rhtml
@@ -1,4 +1,6 @@
-<% @title = "#{h(@info_request.title)} - a Freedom of Information request to #{h(@info_request.public_body.name)}" %>
+<% @title = _("{{title}} - a Freedom of Information request to {{public_body}}",
+ :title => h(@info_request.title),
+ :public_body => (@info_request.public_body.name)) %>
<% if @info_request.prominence == 'hidden' %>
<p id="hidden_request">
@@ -72,7 +74,7 @@
<%= _('normally') %>
<% end %>
<%= _('no later than') %> <strong><%= simple_date(@info_request.date_response_required_by) %></strong>
- (<%= link_to "details", "/help/requesting#quickly_response" %>).
+ (<%= link_to _("details"), "/help/requesting#quickly_response" %>).
<% elsif @status == 'waiting_response_overdue' %>
<%= _('Response to this request is <strong>delayed</strong>.') %>
<%= _('By law, {{public_body_link}} should normally have responded <strong>promptly</strong> and',:public_body_link=>public_body_link(@info_request.public_body)) %>
@@ -116,6 +118,12 @@
<% elsif @status == 'user_withdrawn' %>
<%= _('This request has been <strong>withdrawn</strong> by the person who made it.
There may be an explanation in the correspondence below.') %>
+ <% elsif @status == 'attention_requested' %>
+ <%= _('This request has been <strong>reported</strong> as needing administrator attention (perhaps because it is vexatious, or a request for personal information)') %>
+ <% elsif @status == 'vexatious' %>
+ <%= _('This request has been <strong>hidden</strong> from the site, because an administrator considers it vexatious') %>
+ <% elsif @status == 'not_foi' %>
+ <%= _('This request has been <strong>hidden</strong> from the site, because an administrator considers it not to be an FOI request') %>
<% else %>
<%= render :partial => 'general/custom_state_descriptions', :locals => { :status => @status } %>
<% end %>
diff --git a/app/views/request_mailer/not_clarified_alert.rhtml b/app/views/request_mailer/not_clarified_alert.rhtml
index 82d15ba76..2408452b3 100644
--- a/app/views/request_mailer/not_clarified_alert.rhtml
+++ b/app/views/request_mailer/not_clarified_alert.rhtml
@@ -1,5 +1,7 @@
-<%=@info_request.public_body.name%> <%=('has asked you to explain part of your')%> <%=@info_request.law_used_short%> <%= _('request.')%>
-<%= _('To do this, first click on the link below.')%>
+<%= _('{{public_body}} has asked you to explain part of your {{law_used}} request.',
+ :public_body => @info_request.public_body.name,
+ :law_used => @info_request.law_used_short ) %>
+<%= _('To do this, first click on the link below.') %>
<%=@url%>
diff --git a/app/views/track/_tracking_links.rhtml b/app/views/track/_tracking_links.rhtml
index f50a8bbbf..39f346eff 100644
--- a/app/views/track/_tracking_links.rhtml
+++ b/app/views/track/_tracking_links.rhtml
@@ -7,18 +7,17 @@
<% if own_request %>
<p><%= _('This is your own request, so you will be automatically emailed when new responses arrive.')%></p>
<% elsif existing_track %>
- <% form_tag({:controller => 'track', :action => 'update', :track_id => existing_track.id}, :class => "feed_form feed_form_" + location) do %>
- <p>
- <%= track_thing.params[:verb_on_page_already] %>
- <%= hidden_field_tag 'track_medium', "delete" %>
- <%= hidden_field_tag 'r', request.request_uri %>
- <%= submit_tag "unsubscribe" %>
- </p>
- <% end %>
+ <p><%= track_thing.params[:verb_on_page_already] %></p>
+ <div class="feed_link feed_link_<%=location%>">
+ <%= link_to "Unsubscribe", {:controller => 'track', :action => 'update', :track_id => existing_track.id, :track_medium => "delete", :r => request.request_uri}, :class => "link_button_green" %>
+ </div>
<% elsif track_thing %>
<div class="feed_link feed_link_<%=location%>">
- <%= link_to '<img src="/images/email-16.png" alt="">', do_track_url(track_thing) %>
- <%= link_to _("Follow by email"), do_track_url(track_thing) %>
+ <% if defined? follower_count && follower_count > 0 %>
+ <%= link_to _("I like this request"), do_track_url(track_thing), :class => "link_button_green" %>
+ <% else %>
+ <%= link_to _("Follow"), do_track_url(track_thing), :class => "link_button_green" %>
+ <% end %>
</div>
<div class="feed_link feed_link_<%=location%>">
diff --git a/app/views/user/_change_receive_email.rhtml b/app/views/user/_change_receive_email.rhtml
new file mode 100644
index 000000000..83e5d8601
--- /dev/null
+++ b/app/views/user/_change_receive_email.rhtml
@@ -0,0 +1,16 @@
+<% form_tag(:controller=>"user", :action=>"set_receive_email_alerts") do %>
+ <div>
+ <% if @user.receive_email_alerts %>
+ <%= _('You are currently receiving notification of new activity on your wall by email.', :wall_url => show_user_wall_path) %><br><br>
+ <%= hidden_field_tag 'receive_email_alerts', 'false' %>
+ <%= hidden_field_tag 'came_from', request.url %>
+ <%= submit_tag _("Turn off email alerts") %>
+ <% else %>
+ <%= _('Items matching the following conditions are currently displayed on your wall.') %><br><br>
+ <%= hidden_field_tag 'receive_email_alerts', 'true' %>
+ <%= hidden_field_tag 'came_from', request.url %>
+ <%= submit_tag _("Also send me alerts by email") %>
+ <% end %>
+ </div>
+<% end %>
+
diff --git a/app/views/user/confirm.rhtml b/app/views/user/confirm.rhtml
index bdaf5c8e9..bc70a1f36 100644
--- a/app/views/user/confirm.rhtml
+++ b/app/views/user/confirm.rhtml
@@ -1,6 +1,6 @@
-<% @title = h("Now check your email!") %>
+<% @title = _("Now check your email!") %>
-<h1 class="confirmation_heading">Now check your email!</h1>
+<h1 class="confirmation_heading"><%= _("Now check your email!") %></h1>
<p class="confirmation_message">
<%= _('We\'ve sent you an email, and you\'ll need to click the link in it before you can
diff --git a/app/views/user/rate_limited.rhtml b/app/views/user/rate_limited.rhtml
index 2a770d62e..d5accf114 100644
--- a/app/views/user/rate_limited.rhtml
+++ b/app/views/user/rate_limited.rhtml
@@ -1,4 +1,4 @@
-<% @title = "Too many requests" %>
+<% @title = _("Too many requests") %>
<h1><%=@title%></h1>
diff --git a/app/views/user/show.rhtml b/app/views/user/show.rhtml
index 8f1803442..d723196d3 100644
--- a/app/views/user/show.rhtml
+++ b/app/views/user/show.rhtml
@@ -1,7 +1,7 @@
<% if @show_requests %>
- <% @title = h(@display_user.name) + " - Freedom of Information requests" %>
+ <% @title = h(@display_user.name) + _(" - Freedom of Information requests") %>
<% else %>
- <% @title = h(@display_user.name) + " - user profile" %>
+ <% @title = h(@display_user.name) + _(" - user profile") %>
<% end %>
<% if (@same_name_users.size >= 1) %>
@@ -139,7 +139,7 @@
<% if !@xapian_requests.nil? %>
<% if @xapian_requests.results.empty? %>
<% if @page == 1 %>
- <h2 class="foi_results" id="foi_requests"><%= @is_you ? 'Freedom of Information requests made by you' : 'Freedom of Information requests made by this person' %> <%= @match_phrase %>
+ <h2 class="foi_results" id="foi_requests"><%= @is_you ? _('Freedom of Information requests made by you') : _('Freedom of Information requests made by this person') %> <%= @match_phrase %>
</h2>
<p><%= @is_you ? _('You have made no Freedom of Information requests using this site.') : _('This person has made no Freedom of Information requests using this site.') %>
<%= @page_desc %>
@@ -192,11 +192,12 @@
</div>
<% end %>
<% if @show_profile && @is_you %>
+ <h2 id="email_subscriptions"> <%= _("Things you're following")%></h2>
+ <%= render :partial => 'change_receive_email' %>
+ <br>
<% if @track_things.empty? %>
- <h2 id="email_subscriptions"> <%= _('Your email subscriptions')%></h2>
- <p><%= _('None made.')%></p>
+ <p><%= _("You're not following anything.")%></p>
<% else %>
- <h2 id="email_subscriptions"> Your <%=pluralize(@track_things.size, _('email subscription')) %> </h2>
<% if @track_things_grouped.size == 1 %>
<% form_tag({:controller => 'track', :action => 'delete_all_type'}, :class => "feed_form") do %>
<h3>
diff --git a/app/views/user/sign.rhtml b/app/views/user/sign.rhtml
index bfd0fa63e..4704ea95a 100644
--- a/app/views/user/sign.rhtml
+++ b/app/views/user/sign.rhtml
@@ -10,7 +10,10 @@
<%= @post_redirect.reason_params[:web] %>,
<%= _('please sign in as ')%><%= link_to h(@post_redirect.reason_params[:user_name]), @post_redirect.reason_params[:user_url] %>.
<% end %>
- </p>
+ </p>
+ <% if @post_redirect.post_params["controller"] == "admin_general" %>
+ <p id="superuser_message">Don't have a superuser account yet? <%= link_to "Sign in as the emergency user", @post_redirect.uri + "?emergency=1" %></p>
+ <% end %>
<%= render :partial => 'signin', :locals => { :sign_in_as_existing_user => true } %>
diff --git a/app/views/user/wall.rhtml b/app/views/user/wall.rhtml
new file mode 100644
index 000000000..190cc0a6d
--- /dev/null
+++ b/app/views/user/wall.rhtml
@@ -0,0 +1,16 @@
+<% @title = h(@display_user.name) + _(" - wall") %>
+<% if @is_you %>
+<div class="medium_column">
+ <p><%= _('You can change the requests and users you are following on <a href="{{profile_url}}">your profile page</a>.', :profile_url => show_user_profile_path) %>
+ <%= render :partial => 'change_receive_email' %>
+</div>
+<% end %>
+<div id="user_profile_search">
+ <% if !@feed_results.nil? %>
+ <% for result in @feed_results %>
+ <%= render :partial => 'request/wall_listing', :locals => { :event => result, :info_request => result.info_request } %>
+ <% end %>
+ <% end %>
+
+
+</div>
diff --git a/commonlib b/commonlib
-Subproject 87bc80b7484740e1c21e335500feda4f2755d78
+Subproject 9e1d29721b9dba232c251ef4b8b79f8505422de
diff --git a/config.ru b/config.ru
new file mode 100644
index 000000000..30b00bfa1
--- /dev/null
+++ b/config.ru
@@ -0,0 +1,2 @@
+require File.dirname(__FILE__) + '/config/environment'
+run ActionController::Dispatcher.new
diff --git a/config/boot.rb b/config/boot.rb
index 0f5e661ed..943029408 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -46,6 +46,13 @@ module Rails
class Boot
def run
load_initializer
+
+ Rails::Initializer.class_eval do
+ def load_gems
+ @bundler_loaded ||= Bundler.require :default, Rails.env
+ end
+ end
+
Rails::Initializer.run(:set_load_path)
end
end
diff --git a/config/crontab.ugly b/config/crontab.ugly
index 4ea5678dd..0bbcd2616 100644
--- a/config/crontab.ugly
+++ b/config/crontab.ugly
@@ -13,6 +13,7 @@ MAILTO=cron-!!(*= $site *)!!@mysociety.org
*/5 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/change-xapian-database.lock "/data/vhost/!!(*= $vhost *)!!/!!(*= $vcspath *)!!/script/update-xapian-index verbose=true" >> /data/vhost/!!(*= $vhost *)!!/logs/update-xapian-index.log || echo "stalled?"
# Every 10 minutes
5,15,25,35,45,55 * * * * !!(*= $user *)!! /etc/init.d/foi-alert-tracks check
+5,15,25,35,45,55 * * * * !!(*= $user *)!! /etc/init.d/purge-varnish check
# Once an hour
09 * * * * !!(*= $user *)!! run-with-lockfile -n /data/vhost/!!(*= $vhost *)!!/alert-comment-on-request.lock /data/vhost/!!(*= $vhost *)!!/!!(*= $vcspath *)!!/script/alert-comment-on-request || echo "stalled?"
diff --git a/config/environment.rb b/config/environment.rb
index f2164f1c8..b958c6475 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -17,12 +17,8 @@ $:.push(File.join(File.dirname(__FILE__), '../commonlib/rblib'))
# (type "git submodule update --init" in the whatdotheyknow directory)
# ruby-ole and ruby-msg. We use a custom ruby-msg to avoid a name conflict
-$:.unshift(File.join(File.dirname(__FILE__), '../vendor/ruby-ole/lib'))
-$:.unshift(File.join(File.dirname(__FILE__), '../vendor/ruby-msg/lib'))
$:.unshift(File.join(File.dirname(__FILE__), '../vendor/plugins/globalize2/lib'))
-require 'memcache'
-
load "validate.rb"
load "config.rb"
load "format.rb"
@@ -53,7 +49,7 @@ Rails::Initializer.run do |config|
# config.plugins = %W( exception_notification ssl_requirement )
# Add additional load paths for your own custom dirs
- # config.load_paths += %W( #{RAILS_ROOT}/extras )
+ # config.load_paths += %W( #{Rails.root}/extras )
# Force all environments to use the same logger level
# (by default production uses :info, the others :debug)
@@ -61,16 +57,6 @@ Rails::Initializer.run do |config|
# config.log_level = :debug
#
# Specify gems that this application depends on and have them installed with rake gems:install
- config.gem "locale", :version => '>=2.0.5'
- config.gem "gettext", :version => '>=1.9.3'
- config.gem "fast_gettext", :version => '>=0.4.8'
- config.gem "rack", :version => '1.1.0'
- config.gem "rdoc", :version => '>=2.4.3'
- config.gem "recaptcha", :lib => "recaptcha/rails"
- config.gem 'rspec', :lib => false, :version => '1.3.1'
- config.gem 'rspec-rails', :lib => false, :version => '1.3.3'
- config.gem 'routing-filter'
- config.gem 'will_paginate', :version => '~> 2.3.11', :source => 'http://gemcutter.org'
#GettextI18nRails.translations_are_html_safe = true
# Use SQL instead of Active Record's schema dumper when creating the test database.
@@ -149,6 +135,7 @@ require 'i18n_fixes.rb'
require 'rack_quote_monkeypatch.rb'
require 'world_foi_websites.rb'
require 'alaveteli_external_command.rb'
+require 'quiet_opener.rb'
ExceptionNotification::Notifier.sender_address = MySociety::Config::get('EXCEPTION_NOTIFICATIONS_FROM')
ExceptionNotification::Notifier.exception_recipients = MySociety::Config::get('EXCEPTION_NOTIFICATIONS_TO')
diff --git a/config/environments/development.rb b/config/environments/development.rb
index d5f2f5772..cfb727695 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -1,5 +1,7 @@
# Settings specified here will take precedence over those in config/environment.rb
+config.log_level = :info
+
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the webserver when you make code changes.
@@ -15,6 +17,7 @@ config.action_view.debug_rjs = true
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
+config.action_mailer.perform_deliveries = false
config.action_mailer.delivery_method = :sendmail # so is queued, rather than giving immediate errors
# Writes useful log files to debug memory leaks, of the sort where have
diff --git a/config/environments/test.rb b/config/environments/test.rb
index be28c3df6..32dc2b1ec 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -19,8 +19,6 @@ config.action_controller.perform_caching = false
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
-config.gem 'rspec-rails', :version => '>= 1.3.3', :lib => false unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
-config.gem 'fakeweb', :version => '>=1.3.0'
# Disable request forgery protection in test environment
config.action_controller.allow_forgery_protection = false
diff --git a/config/general.yml-example b/config/general.yml-example
index 211161606..019eb7ada 100644
--- a/config/general.yml-example
+++ b/config/general.yml-example
@@ -1,7 +1,7 @@
# general.yml-example:
# Example values for the "general" config file.
#
-# Configuration parameters, in YAML syntax.
+# Configuration parameters, in YAML syntax.
#
# Copy this file to one called "general.yml" in the same directory. Or
# have multiple config files and use a symlink to change between them.
@@ -34,8 +34,12 @@ SPECIAL_REPLY_VERY_LATE_AFTER_DAYS: 60
# example public bodies for the home page, semicolon delimited - short_names
FRONTPAGE_PUBLICBODY_EXAMPLES: 'tgq'
-# URL of theme to install (when running rails-post-deploy script)
-THEME_URL: 'git://github.com/sebbacon/alavetelitheme.git'
+# URLs of themes to download and use (when running rails-post-deploy
+# script). Earlier in the list means the templates have a higher
+# priority.
+THEME_URLS:
+ - 'git://github.com/sebbacon/adminbootstraptheme.git'
+ - 'git://github.com/sebbacon/alavetelitheme.git'
# Whether a user needs to sign in to start the New Request process
FORCE_REGISTRATION_ON_NEW_REQUEST: false
@@ -56,10 +60,13 @@ BLACKHOLE_PREFIX: 'do-not-reply-to-this-address'
## Administration
-# Leave these two blank to skip admin authorisation
+# The emergency user
ADMIN_USERNAME: 'adminxxxx'
ADMIN_PASSWORD: 'passwordx'
+# Set this to true, and the admin interface will be available to anonymous users
+SKIP_ADMIN_AUTH: false
+
# Email "from" details
CONTACT_EMAIL: 'postmaster@localhost'
CONTACT_NAME: 'Alaveteli Webmaster'
@@ -143,7 +150,10 @@ EXCEPTION_NOTIFICATIONS_TO:
# This rate limiting can be turned off per-user via the admin interface
MAX_REQUESTS_PER_USER_PER_DAY: 6
-SURVEY_URL: http://survey.mysociety.org/
-# The shared secret needed to authenticate with the survey service
-SURVEY_SECRET: 12345678910
+# This is used to work out where to send purge requests. Should be
+# unset if you aren't running behind varnish
+VARNISH_HOST: localhost
+
+# Adding a value here will enable Google Analytics on all non-admin pages.
+GA_CODE: ''
diff --git a/config/initializers/fast_gettext.rb b/config/initializers/fast_gettext.rb
index 63cf6b50d..9049fd8ed 100644
--- a/config/initializers/fast_gettext.rb
+++ b/config/initializers/fast_gettext.rb
@@ -1,2 +1,3 @@
+Encoding.default_external = 'UTF-8' if RUBY_VERSION.to_f >= 1.9
FastGettext.add_text_domain 'app', :path => File.join(Rails.root, 'locale'), :type => :po
FastGettext.default_text_domain = 'app'
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb
index 9ef2dddc1..bf40e99c1 100644
--- a/config/initializers/session_store.rb
+++ b/config/initializers/session_store.rb
@@ -12,6 +12,6 @@ ActionController::Base.session = {
ActionController::Base.session_store = :cookie_store
# Insert a bit of middleware code to prevent uneeded cookie setting.
-require "#{RAILS_ROOT}/lib/whatdotheyknow/strip_empty_sessions"
+require "#{Rails.root}/lib/whatdotheyknow/strip_empty_sessions"
ActionController::Dispatcher.middleware.insert_before ActionController::Base.session_store, WhatDoTheyKnow::StripEmptySessions, :key => '_wdtk_cookie_session', :path => "/", :httponly => true
diff --git a/config/initializers/theme_loader.rb b/config/initializers/theme_loader.rb
new file mode 100644
index 000000000..4ddce6910
--- /dev/null
+++ b/config/initializers/theme_loader.rb
@@ -0,0 +1,10 @@
+theme_urls = MySociety::Config.get("THEME_URLS", [])
+if ENV["RAILS_ENV"] != "test" # Don't let the theme interfere with Alaveteli specs
+ for url in theme_urls.reverse
+ theme_name = url.sub(/.*\/(.*).git/, "\\1")
+ theme_main_include = File.expand_path "../../../vendor/plugins/#{theme_name}/lib/alavetelitheme.rb", __FILE__
+ if File.exists? theme_main_include
+ require theme_main_include
+ end
+ end
+end
diff --git a/config/packages b/config/packages
index 76a5c29d6..b59c61b47 100644
--- a/config/packages
+++ b/config/packages
@@ -2,13 +2,12 @@
# mysociety deployment infrastructure -- please discuss on the
# alavateli mailing list if you want to change it
ruby1.8
-libpgsql-ruby1.8
-libopenssl-ruby1.8
-rake (>= 0.8.4-1)
+ruby
+libopenssl-ruby1.8 # needed for Ubuntu 10.04 TLS; included in libruby1.8 in Squeeze
+rdoc
irb
wv
poppler-utils
-# poppler-utils (>= 0.12.0) # this is much better when it is available in Debian stable
pdftk (> 1.41+dfsg-1) | pdftk (< 1.41+dfsg-1) # that version has a non-functionining uncompress option
gs-gpl
catdoc
@@ -16,29 +15,22 @@ links
elinks
unrtf
xlhtml
-libxapian-ruby1.8
xapian-tools
gnuplot-nox
php5-cli
-# ttf-bitstream-vera
sharutils
unzip
-libzip-ruby1.8
-libzlib-ruby
-mahoro-ruby1.8 | libmahoro-ruby1.8
wdg-html-validator
-# libapache2-mod-passenger
mutt
-librack-ruby1.8 (>= 1.0.1-1)
-librmagick-ruby1.8
-libxml-simple-ruby
-libfcgi-ruby1.8
-vpim
tnef (>= 1.4.5)
-libmemcache-client-ruby (>= 1.7.8-2)
memcached
-rubygems
-libfcgi-dev
gettext
python-yaml
wkhtmltopdf-static
+libmagic-dev
+libmagickwand-dev
+libpq-dev
+uuid-dev
+ruby1.8-dev
+build-essential
+bundler
diff --git a/config/preinitializer.rb b/config/preinitializer.rb
new file mode 100644
index 000000000..3ad02415d
--- /dev/null
+++ b/config/preinitializer.rb
@@ -0,0 +1,20 @@
+begin
+ require "rubygems"
+ require "bundler"
+rescue LoadError
+ raise "Could not load the bundler gem. Install it with `gem install bundler`."
+end
+
+if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
+ raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
+ "Run `gem install bundler` to upgrade."
+end
+
+begin
+ # Set up load paths for all bundled gems
+ ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
+ Bundler.setup
+rescue Bundler::GemNotFound
+ raise RuntimeError, "Bundler couldn't find some gems." +
+ "Did you run `bundle install`?"
+end
diff --git a/config/purge-varnish-debian.ugly b/config/purge-varnish-debian.ugly
new file mode 100644
index 000000000..3e77c09c3
--- /dev/null
+++ b/config/purge-varnish-debian.ugly
@@ -0,0 +1,81 @@
+#!/bin/bash
+#
+### BEGIN INIT INFO
+# Provides: purge-varnish
+# Required-Start: $local_fs $syslog
+# Required-Stop: $local_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: purge-varnish is a daemon running the Alaveteli email alerts
+# Description: purge-varnish send Alaveteli email alerts as required
+### END INIT INFO
+#
+# !!(*= $daemon_name *)!! Start the Alaveteli email alert daemon
+
+NAME=!!(*= $daemon_name *)!!
+DAEMON=/data/vhost/!!(*= $vhost *)!!/alaveteli/script/runner
+DAEMON_ARGS="--daemon PurgeRequest.purge_all_loop"
+PIDFILE=/data/vhost/!!(*= $vhost *)!!/purge-varnish.pid
+LOGFILE=/data/vhost/!!(*= $vhost *)!!/logs/purge-varnish.log
+DUSER=!!(*= $user *)!!
+
+trap "" 1
+
+export PIDFILE LOGFILE
+
+quietly_start_daemon() {
+ /sbin/start-stop-daemon --quiet --start --pidfile "$PIDFILE" --chuid "$DUSER" --startas "$DAEMON" -- $DAEMON_ARGS
+}
+
+start_daemon() {
+ /sbin/start-stop-daemon --start --pidfile "$PIDFILE" --chuid "$DUSER" --startas "$DAEMON" -- $DAEMON_ARGS
+}
+
+stop_daemon() {
+ /sbin/start-stop-daemon --stop --oknodo --pidfile "$PIDFILE"
+}
+
+restart() { stop; start; }
+
+case "$1" in
+ check)
+ quietly_start_daemon
+ if [ $? -ne 1 ]
+ then
+ echo "Alaveteli alert daemon was not running; now restarted"
+ exit 1
+ else
+ exit 0
+ fi
+ ;;
+
+ start)
+ echo -n "Starting Alaveteli alert daemon: $NAME"
+ start_daemon
+ ;;
+
+ stop)
+ echo -n "Stopping Alaveteli alert daemon: $NAME"
+ stop_daemon
+ ;;
+
+ restart)
+ echo -n "Restarting Alaveteli alert daemon: $NAME"
+ stop_daemon
+ start_daemon
+ ;;
+
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|restart|check}"
+ exit 1
+ ;;
+esac
+
+if [ $? -eq 0 ]; then
+ echo .
+ exit 0
+else
+ echo " failed"
+ exit 1
+fi
+
diff --git a/config/routes.rb b/config/routes.rb
index 747cc9b06..0ba8139c2 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -22,6 +22,7 @@ ActionController::Routing::Routes.draw do |map|
general.blog '/blog', :action => 'blog'
general.custom_css '/stylesheets/custom.css', :action => 'custom_css'
general.search_redirect '/search', :action => 'search_redirect'
+ general.search_redirect '/search/all', :action => 'search_redirect'
# XXX combined is the search query, and then if sorted a "/newest" at the end.
# Couldn't find a way to do this in routes which also picked up multiple other slashes
# and dots and other characters that can appear in search query. So we sort it all
@@ -65,6 +66,7 @@ ActionController::Routing::Routes.draw do |map|
request.upload_response "/upload/request/:url_title", :action => 'upload_response'
request.download_entire_request '/request/:url_title/download', :action => 'download_entire_request'
+ request.report '/request/:url_title/report', :action => 'report_request'
end
@@ -80,6 +82,7 @@ ActionController::Routing::Routes.draw do |map|
user.show_user '/user/:url_name.:format', :action => 'show'
user.show_user_profile '/user/:url_name/profile.:format', :action => 'show', :view => 'profile'
user.show_user_requests '/user/:url_name/requests.:format', :action => 'show', :view => 'requests'
+ user.show_user_wall '/user/:url_name/wall.:format', :action => 'wall'
user.contact_user '/user/contact/:id', :action => 'contact'
user.signchangepassword '/profile/change_password', :action => 'signchangepassword'
@@ -90,7 +93,7 @@ ActionController::Routing::Routes.draw do |map|
user.get_profile_photo '/user/:url_name/photo.png', :action => 'get_profile_photo'
user.get_draft_profile_photo '/profile/draft_photo/:id.png', :action => 'get_draft_profile_photo'
user.set_profile_about_me '/profile/set_about_me', :action => 'set_profile_about_me'
-
+ user.set_receive_email_alerts '/profile/set_receive_alerts', :action => 'set_receive_email_alerts'
user.river '/profile/river', :action => 'river'
end
@@ -117,6 +120,7 @@ ActionController::Routing::Routes.draw do |map|
map.with_options :controller => 'services' do |service|
service.other_country_message "/country_message", :action => 'other_country_message'
+ service.hidden_user_explanation "/hidden_user_explanation", :action => 'hidden_user_explanation'
end
map.with_options :controller => 'track' do |track|
@@ -200,6 +204,7 @@ ActionController::Routing::Routes.draw do |map|
admin.admin_request_show_raw_email '/admin/request/show_raw_email/:id', :action => 'show_raw_email'
admin.admin_request_download_raw_email '/admin/request/download_raw_email/:id', :action => 'download_raw_email'
admin.admin_request_clarification '/admin/request/mark_event_as_clarification', :action => 'mark_event_as_clarification'
+ admin.admin_request_hide '/admin/request/hide/:id', :action => 'hide_request'
end
map.with_options :controller => 'admin_user' do |user|
diff --git a/config/test.yml b/config/test.yml
index 90689395a..460d7c6c1 100644
--- a/config/test.yml
+++ b/config/test.yml
@@ -124,3 +124,5 @@ EXCEPTION_NOTIFICATIONS_TO:
MAX_REQUESTS_PER_USER_PER_DAY: 2
+VARNISH_HOST: varnish.localdomain
+SKIP_ADMIN_AUTH: true \ No newline at end of file
diff --git a/config/varnish-alaveteli.vcl b/config/varnish-alaveteli.vcl
index 7eedf83fc..452a956da 100644
--- a/config/varnish-alaveteli.vcl
+++ b/config/varnish-alaveteli.vcl
@@ -15,6 +15,12 @@ backend default {
.between_bytes_timeout = 600s;
}
+// set the servers alaveteli can issue a purge from
+acl purge {
+ "localhost";
+ "127.0.0.1";
+}
+
sub vcl_recv {
# Handle IPv6
@@ -54,12 +60,13 @@ sub vcl_recv {
req.request != "HEAD" &&
req.request != "POST" &&
req.request != "PUT" &&
+ req.request != "PURGE" &&
req.request != "DELETE" ) {
# We don't allow any other methods.
error 405 "Method Not Allowed";
}
- if (req.request != "GET" && req.request != "HEAD") {
+ if (req.request != "GET" && req.request != "HEAD" && req.request != "PURGE") {
/* We only deal with GET and HEAD by default, the rest get passed direct to backend */
return (pass);
}
@@ -73,15 +80,23 @@ sub vcl_recv {
if (req.http.Authorization || req.http.Cookie) {
return (pass);
}
-
# Let's have a little grace
set req.grace = 30s;
+ # Handle PURGE requests
+ if (req.request == "PURGE") {
+ if (!client.ip ~ purge) {
+ error 405 "Not allowed.";
+ }
+ # XXX in Varnish 2.x, the following would be
+ # purge("obj.http.x-url ~ " req.url);
+ ban("obj.http.x-url ~ " + req.url);
+ error 200 "Banned";
+ }
return (lookup);
}
-
sub vcl_fetch {
-
+ set beresp.http.x-url = req.url;
if (req.url ~ "\.(png|gif|jpg|jpeg|swf|css|js|rdf|ico|txt)(\?.*|)$") {
# Ignore backend headers..
remove beresp.http.set-Cookie;
@@ -94,3 +109,4 @@ sub vcl_fetch {
return (deliver);
}
}
+
diff --git a/db/migrate/111_create_purge_requests.rb b/db/migrate/111_create_purge_requests.rb
new file mode 100644
index 000000000..0b4fd1d1d
--- /dev/null
+++ b/db/migrate/111_create_purge_requests.rb
@@ -0,0 +1,14 @@
+class CreatePurgeRequests < ActiveRecord::Migration
+ def self.up
+ create_table :purge_requests do |t|
+ t.column :url, :string
+ t.column :created_at, :datetime, :null => false
+ t.column :model, :string, :null => false
+ t.column :model_id, :integer, :null => false
+ end
+ end
+
+ def self.down
+ drop_table :purge_requests
+ end
+end
diff --git a/db/migrate/112_add_receive_email_alerts_to_user.rb b/db/migrate/112_add_receive_email_alerts_to_user.rb
new file mode 100644
index 000000000..7e06dd275
--- /dev/null
+++ b/db/migrate/112_add_receive_email_alerts_to_user.rb
@@ -0,0 +1,11 @@
+class AddReceiveEmailAlertsToUser < ActiveRecord::Migration
+ def self.up
+ add_column :users, :receive_email_alerts, :boolean, :default => true, :null => false
+ end
+ def self.down
+ remove_column :users, :receive_email_alerts
+ end
+end
+
+
+
diff --git a/db/migrate/114_add_attention_requested_flag_to_info_requests.rb b/db/migrate/114_add_attention_requested_flag_to_info_requests.rb
new file mode 100644
index 000000000..48c98e5a9
--- /dev/null
+++ b/db/migrate/114_add_attention_requested_flag_to_info_requests.rb
@@ -0,0 +1,13 @@
+require 'digest/sha1'
+
+class AddAttentionRequestedFlagToInfoRequests < ActiveRecord::Migration
+ def self.up
+ add_column :info_requests, :attention_requested, :boolean, :default => false
+ end
+ def self.down
+ remove_column :info_requests, :attention_requested
+ end
+end
+
+
+
diff --git a/doc/CHANGES.md b/doc/CHANGES.md
index efe3d4d71..dbea64bda 100644
--- a/doc/CHANGES.md
+++ b/doc/CHANGES.md
@@ -1,3 +1,74 @@
+# Version 0.6
+
+## Highlighted features
+
+* Ruby dependencies are now handled by Bundler
+* Support for invalidating accelerator cache -- this makes it much
+ less likely, when using Varnish, that users will be presented with
+ stale content. Fixes
+ [issue #436](https://github.com/sebbacon/alaveteli/issues/436)
+* Adding a `GA_CODE` to `general.yml` will cause the relevant Google
+ Analytics code to be added to your rendered pages
+* It is now possible to have more than one theme installed. The
+ behaviour of multiple themes is now layered in the reverse order
+ they're listed in the config file. See the variable `THEME_URLS` in
+ `general.yml-example` for an example.
+* A new, experimental theme for the administrative interface. It's
+ currently packaged as a standalone theme, but will be merged into
+ the core once it's been tested and iterated in production a few
+ times.
+* Alert subscriptions are now referred to as "following" a request (or
+ group of requests) throughout the UI. When a user "follows" a
+ request, updates regarding that request are posted on a new "wall"
+ page. Now they have a wall, users can opt not to receive alerts by
+ email.
+* New features to support fast post-moderation of bad requests: a
+ button for users to report potentially unsuitable requests, and a
+ form control in the administrative interface that hides a request
+ and sends the user an email explaining why.
+
+## Upgrade notes
+
+* Existing installations will need to install the Bundler gem. See
+ `INSTALL.md` for details.
+
+* As a result of using bundler, the list of software packages that
+ should be installed has changed. On Debian, you can run:
+
+ sudo apt-get install `cut -d " " -f 1 config/packages | grep -v "^#"`
+
+ [This gist](https://gist.github.com/2584766) shows the changes to
+ `config/packages` since the previous release.
+
+* Because dependencies are now handled by Bundler, when you next run
+ the `rails-post-deploy` script, it will download, compile and
+ install various things. Part of this is compiling xapian, which may
+ take a *long* time (subsequent deployments should be much faster)
+
+* To support invalidating the Varnish cache, ensure that there's a
+ value for `VARNISH_HOST` in `general.yml` (normally this would be
+ `localhost`). You will also need to update your Varnish server to
+ support PURGE requests. The example configuration provided at
+ `config/varnish-alaveteli.vcl` will work for Varnish 3 and above. If
+ you leave `VARNISH_HOST` blank, it will have no effect. Finally,
+ you should install the `purge-varnish` init script that's provided
+ in `ugly` format at `config/purge-varnish-debian.ugly` to ensure the
+ purge queue is emptied regularly.
+
+* Administrators are now assumed to log in using standard user accounts
+ with superuser privileges (see 'Administrator Privileges' in
+ `INSTALL.md`). The old-style admin account (using credentials from
+ `general.yml`) is now known as the "emergency user". Deployments
+ that previously bypassed admin authentication should set the new
+ `SKIP_ADMIN_AUTH` config variable to `true`.
+
+* If you want to try out the new administrator theme, copy the sample
+ `THEME_URLS` config from `general.yml-example` and run
+ `./script/rails-post-deploy`. If you don't like it, turn it off
+ again by removing the line referring to the theme
+ (`adminbootstraptheme`) -- but email the mailing list first,
+ explaining why!
+
# Version 0.5.2
This is a hotfix to fix occasional problems importing public body CSVs
diff --git a/doc/INSTALL-exim4.md b/doc/INSTALL-exim4.md
index 82c1aba45..84f105c57 100644
--- a/doc/INSTALL-exim4.md
+++ b/doc/INSTALL-exim4.md
@@ -34,7 +34,7 @@ In `/etc/exim4/conf.d/transport/04_alaveteli`:
user = ALAVETELI_USER
group = ALAVETELI_USER
-And, assuming you set `OPTION_INCOMING_EMAIL_PREFIX` in your config at
+And, assuming you set `INCOMING_EMAIL_PREFIX` in your config at
`config/general` to "foi+", create `config/aliases` with the following
content:
@@ -59,7 +59,11 @@ with `FORWARD_NONBOUNCE_RESPONSES_TO: 'raw_team@whatdotheyknow.com'`
Finally, make sure you have `dc_use_split_config='true'` in
`/etc/exim4/update-exim4.conf.conf`, and execute the command
-`update-exim4.conf`
+`update-exim4.conf`.
+
+NB: if the file `/etc/exim4/exim4.conf` exists then `update-exim4.conf`
+will silently do nothing. Some distributions include this file. If
+yours does, you will need to rename it before running `update-exim4.conf`.
(You may also want to set `dc_eximconfig_configtype='internet'`,
`dc_local_interfaces='0.0.0.0 ; ::1'`, and
diff --git a/doc/INSTALL-postfix.md b/doc/INSTALL-postfix.md
new file mode 100644
index 000000000..70a2954bd
--- /dev/null
+++ b/doc/INSTALL-postfix.md
@@ -0,0 +1,40 @@
+As an example of how to set up your MTA, in postfix on Ubuntu, you might
+add the following to its configuration.
+
+In /etc/postfix/master.cf:
+
+ alaveteli unix - n n - 50 pipe
+ flags=R user=ALAVETELI_USER argv=ALAVETELI_HOME/script/mailin
+
+In /etc/postfix/main.cf
+
+ virtual_alias_maps = regexp:/etc/postfix/regexp
+
+For example
+
+ALAVETELI_HOME=/path/to/alaveteli/software
+ALAVETELI_USER=www-data
+
+The user ALAVETELI_USER should have write permissions on ALAVETELI_HOME.
+
+And, assuming you set `OPTION_INCOMING_EMAIL_PREFIX` in your config at
+`config/general` to "foi+", create `/etc/postfix/regexp` with the following
+content:
+
+ /^foi.*/ alaveteli
+
+
+You should also configure postfix to discard any messages sent to the `BLACKHOLE_PREFIX`
+address, whose default value is 'do-not-reply-to-this-address'. For example, add the
+following to /etc/aliases:
+
+ # We use this for envelope from for some messages where we don't care about delivery
+ do-not-reply-to-this-address: :blackhole:
+
+# Troubleshooting
+
+To test mail delivery, run:
+
+ $ /usr/sbin/sendmail -bv foi+requrest-1234@localhost
+
+This tells you if sending the emails to 'foi\+.*localhost' is working.
diff --git a/doc/INSTALL.md b/doc/INSTALL.md
index 8dbede290..2ebc21dab 100644
--- a/doc/INSTALL.md
+++ b/doc/INSTALL.md
@@ -1,41 +1,73 @@
-These instructions assume Debian Squeeze or Ubuntu 11.04, or later
-(probably, though we won't necessarily have tested in later versions
-yet!)
+These instructions assume Debian Squeeze or Ubuntu 10.04 LTS.
[Install instructions for OS X](https://github.com/sebbacon/alaveteli/wiki/OS-X-Quickstart)
-are under development.
-
-It is possible to install on Ubuntus as old as 10.04, but you must use
-[Xapian backports](https://launchpad.net/~xapian-backports/+archive/xapian-1.2)
-(see [issue #158](https://github.com/sebbacon/alaveteli/issues/159)
-for discussion).
+are under development. Debian Squeeze is the best supported
+deployment platform.
Commands are intended to be run via the terminal or over ssh.
-As an aid to evaluation, there is an Amazon AMI with all these steps
-configured. Its id is ami-fa52a993. It is *not* production-ready:
-Apache isn't set up, and the passwords are insecure. You may wish to
-run a `git pull` in the source on the software, as it is unlikely to
-be up to date.
+As an aid to evaluation, there is an
+[Amazon AMI](https://github.com/sebbacon/alaveteli/wiki/Alaveteli-ec2-ami)
+with all these steps configured. It is *not* production-ready.
+
+# Get Alaveteli
-# Package Installation
+To start with, you may need to install git, e.g. with `sudo apt-get
+install git-core`
-First, get hold of the source code from github:
+Next, get hold of the Alaveteli source code from github:
git clone https://github.com/sebbacon/alaveteli.git
+ cd alaveteli
+
+This will get the current stable release from the master branch (which
+always contains the latest release). If you are a developer and want
+to add or try new features, you might want to swap to the development
+branch:
+
+ git checkout develop
+
+# Install system dependencies
-(You may need to install git first, e.g. with `sudo apt-get install git-core`)
+These are packages that the software depends on: third-party software
+used to parse documents, host the site, etc. There are also packages
+that contain headers necessary to compile some of the gem dependencies
+in the next step.
-Now, in a terminal, navigate to the alaveteli folder where this
-install guide lives.
+If you are running Debian, you can use specially compiled mysociety
+packages by adding the following to `/etc/apt/sources.list` and
+running `apt-get update`:
-Install the packages that are listed in config/packages using apt-get e.g.:
+ deb http://debian.mysociety.org squeeze main
+
+If you don't set up that mySociety Debian source (e.g. if you're
+running Ubuntu), you should comment out `wkhtmltopdf-static` from
+`config/packages`, as it won't install in the next step
+
+Now install the packages that are listed in config/packages using apt-get
+e.g.:
sudo apt-get install `cut -d " " -f 1 config/packages | grep -v "^#"`
-Some of the files also have a version number listed in config/packages - check
-that you have appropriate versions installed. Some also list "|" and offer
-a choice of packages.
+Some of the files also have a version number listed in config/packages
+- check that you have appropriate versions installed. Some also list
+"|" and offer a choice of packages.
+
+# Install Ruby dependencies
+
+Install rubygems 1.6.1 (we're not using the Debian package because we
+need an older version; see "Troubleshooting" below for an
+explanation):
+
+ wget http://rubyforge.org/frs/download.php/74445/rubygems-1.6.2.tgz -O /tmp/rubygems-1.6.2.tgz
+ tar zxvf /tmp/rubygems-1.6.2.tgz -C /tmp/
+ sudo ruby1.8 /tmp/rubygems-1.6.2/setup.rb
+
+To install Alaveteli's Ruby dependencies, we also need to install
+bundler:
+ sudo gem1.8 install bundler
+
+# Install mySociety libraries
You will also want to install mySociety's common ruby libraries and the Rails
code. Run:
@@ -44,28 +76,38 @@ code. Run:
to fetch the contents of the submodules.
-If you would like users to be able to download pretty PDFs as part of
-the downloadable zipfile of their request history, you should also install
-[wkhtmltopdf](http://code.google.com/p/wkhtmltopdf/downloads/list).
+## Packages customised by mySociety
+
+Debian users should add the mySociety debian archive to their
+`/etc/apt/sources.list` as described above. Doing this and following
+the above instructions should install a couple of custom
+dependencies. Users of other platforms can optionally install these
+dependencies manually, as follows:
+
+1. If you would like users to be able to download pretty PDFs as part of
+the downloadable zipfile of their request history, you should install
+[wkhtmltopdf](http://code.google.com/p/wkhtmltopdf/downloads/list).
We recommend downloading the latest, statically compiled version from
the project website, as this allows running headless (i.e. without a
graphical interface running) on Linux. If you do install
`wkhtmltopdf`, you need to edit a setting in the config file to point
-to it (see below). If you don't install it, everything will still work, but
-users will get ugly, plain text versions of their requests when they
-download them.
+to it (see below). If you don't install it, everything will still
+work, but users will get ugly, plain text versions of their requests
+when they download them.
-Version 1.44 of `pdftk` contains a bug which makes it to loop forever
+2. Version 1.44 of `pdftk` contains a bug which makes it to loop forever
in certain edge conditions. Until it's incorporated into an official
release, you can either hope you don't encounter the bug (it ties up a
rails process until you kill it) you'll need to patch it yourself or
use the Debian package compiled by mySociety (see link in
[issue 305](https://github.com/sebbacon/alaveteli/issues/305))
+
# Configure Database
There has been a little work done in trying to make the code work with
-other databases (e.g. SQLite), but the preferred database is PostgreSQL.
+other databases (e.g. SQLite), but the currently supported database is
+PostgreSQL.
If you don't have it installed:
@@ -78,54 +120,86 @@ username and password of your postgres database.
* edit it to point to your local postgresql database in the development
and test sections and create the databases:
-Become the 'postgres' user (`sudo su - postgres`)
-
Make sure that the user specified in database.yml exists, and has full
permissions on these databases. As they need the ability to turn off
constraints whilst running the tests they also need to be a superuser.
- (See http://dev.rubyonrails.org/ticket/9981)
-
-The following command will set up a user 'foi' with password 'foi':
-
- echo "CREATE DATABASE foi_development encoding 'SQL_ASCII' template template0;
- CREATE DATABASE foi_test encoding 'SQL_ASCII' template template0;
- CREATE USER foi WITH CREATEUSER;
- ALTER USER foi WITH PASSWORD 'foi';
- ALTER USER foi WITH CREATEDB;
- GRANT ALL PRIVILEGES ON DATABASE foi_development TO foi;
- GRANT ALL PRIVILEGES ON DATABASE foi_test TO foi;
- ALTER DATABASE foi_development OWNER TO foi;
- ALTER DATABASE foi_test OWNER TO foi;" | psql
+(See http://dev.rubyonrails.org/ticket/9981)
+
+You can create a `foi` user from the command line, thus:
+
+ # su - postgres
+ $ createuser -s -P foi
+And you can create a database thus:
+
+ $ createdb -T template0 -E SQL_ASCII -O foi foi_production
+ $ createdb -T template0 -E SQL_ASCII -O foi foi_test
+ $ createdb -T template0 -E SQL_ASCII -O foi foi_development
+
We create using the ``SQL_ASCII`` encoding, because in postgres this
is means "no encoding"; and because we handle and store all kinds of
data that may not be valid UTF (for example, data originating from
various broken email clients that's not 8-bit clean), it's safer to be
able to store *anything*, than reject data at runtime.
-# Configure email
+# Configure email
You will need to set up an email server (MTA) to send and receive
emails. Full configuration for an MTA is beyond the scope of this
-document. However, just to get the tests to pass, you will at a
-minimum need to allow sending emails via a `sendmail` command (a
-requirement met, for example, with `sudo apt-get install exim4`).
+document, though we describe an example configuration for Exim in
+`INSTALL-exim4.md`.
+
+## Minimal
+
+If you just want to get the tests to pass, you will at a minimum need
+to allow sending emails via a `sendmail` command (a requirement met,
+for example, with `sudo apt-get install exim4`).
-To receive email in a production setup, you will also need to
-configure your MTA to forward incoming emails to Alaveteli. An
-example configuration is described in `INSTALL-exim4.md`.
+## Detailed
+
+When an authority receives an email, the email's `reply-to` field is a
+magic address which is parsed and consumed by the Rails app.
+
+To receive such email in a production setup, you will need to
+configure your MTA to pipe incoming emails to the Alaveteli script
+`script/mailin`. Therefore, you will need to configure your MTA to
+accept emails to magic addresses, and to pipe such emails to this
+script.
+
+Magic email addresses are of the form:
+
+ <foi+request-3-691c8388@example.com>
+
+The respective parts of this address are controlled with options in
+config/general.yml, thus:
+
+ INCOMING_EMAIL_PREFIX = 'foi+'
+ INCOMING_EMAIL_DOMAIN = 'example.com'
+
+When you set up your MTA, note that if there is some error inside
+Rails, the email is returned with an exit code 75, which for Exim at
+least means the MTA will try again later. Additionally, a stacktrace
+is emailed to `CONTACT_EMAIL`.
+
+`INSTALL-exim4.md` describes one possible configuration for Exim (>=
+1.9).
+
+A well-configured installation of this code will separately have had
+Exim make a backup copy of the email in a separate mailbox, just in
+case.
# Set up configs
-For overall application settings, copy `config/general.yml-example` to
-`config/general.yml` and edit to your taste.
+Copy `config/general.yml-example` to `config/general.yml` and edit to
+your taste.
Note that the default settings for frontpage examples are designed to
work with the dummy data shipped with Alaveteli; once you have real
-data, you should edit these.
+data, you should certainly edit these.
-The default theme is the "WhatDoTheyKnow" theme. When you run
-`rails-post-deploy` (see below), that theme gets installed automatically.
+The default theme is the "Alaveteli" theme. When you run
+`rails-post-deploy` (see below), that theme gets installed
+automatically.
You'll also want to copy `config/memcached.yml-example` to
`config/memcached.yml`. The application is configured, via the
@@ -139,14 +213,25 @@ In the 'alaveteli' directory, run:
./script/rails-post-deploy
-(This will need execute privs so `chmod 755` if necessary)
+(This will need execute privs so `chmod 755` if necessary.) This sets
+up directory structures, creates logs, installs/updates themes, runs
+database migrations, etc. You should run it after each new software
+update.
+
+One of the things the script does is install dependencies (using
+`bundle install`). Note that the first time you run it, part of the
+`bundle install` that compiles `xapian-full` takes a *long* time!
+
+On Debian, at least, the binaries installed by bundler are not put in
+the system `PATH`; therefore, in order to run `rake` (needed for
+deployments), you will need to do something like:
+
+ ln -s /usr/lib/ruby/gems/1.8/bin/rake /usr/local/bin/
+
+Or (Debian):
-This sets up directory structures, creates logs, etc.
+ ln -s /usr/lib/ruby/gems/1.8/bin/rake /usr/local/bin/
-Next, if you have a `alaveteli/config/rails_env.rb` file, delete it,
-so that tests run against our test database, rather than the
-development one. (Otherwise, any data you create in development will
-be blown away every time you run the tests.)
If you want some dummy data to play with, you can try loading the
fixtures that the test suite uses into your development database. You
@@ -165,12 +250,24 @@ component so you should really try to get this working.
Make sure everything looks OK:
- rake spec
+ bundle exec rake spec
+
+If there are failures here, something has gone wrong with the
+preceding steps (see the next section for a common problem and
+workaround). You might be able to move on to the next step, depending
+on how serious they are, but ideally you should try to find out what's
+gone wrong.
+
+## glibc bug workaround
-If there are failures here, something has gone wrong with the preceding
-steps. You might be able to move on to the next step, depending on how
-serious they are, but ideally you should try to find out what's gone
-wrong.
+There's a
+[bug in glibc](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637239)
+which causes Xapian to segfault when running the tests. Although the
+bug report linked to claims it's fixed in the current Debian stable,
+it's not as of version `2.11.3-2`.
+
+Until it's fixed (e.g. `libc6 2.13-26` does work), you can get the
+tests to pass by setting `export LD_PRELOAD=/lib/libuuid.so.1`.
# Run the Server
@@ -186,56 +283,26 @@ the site in action.
# Administrator privileges
-By default, anyone can access the administrator pages without authentication.
-They are under the URL `/admin`.
-
-At mySociety (originators of the Alaveteli software), they use a
-separate layer of HTTP basic authentication, proxied over HTTPS, to
-check who is allowed to use the administrator pages. You might like to
-do something similar.
+The administrative interface is at the URL `/admin`.
-Alternatively, update the code so that:
+Only users with the `super` admin level can access the admin
+interface. Users create their own accounts in the usual way, and then
+administrators can give them `super` privileges.
-* By default, admin pages use normal site authentication (checking user admin
-level 'super').
-* Create an option in `config/general` which lets us override that
-behaviour.
+There is an emergency user account which can be accessed via
+`/admin?emergency=1`, using the credentials `ADMIN_USERNAME` and
+`ADMIN_PASSWORD`, which are set in `general.yml`. To bootstrap the
+first `super` level accounts, you will need to log in as the emergency
+user.
-And send us the patch!
+Users with the superuser role also have extra privileges in the
+website frontend, such as being able to categorise any request, being
+able to view items that have been hidden from the search, and being
+presented with "admin" links next to individual requests and comments
+in the front end.
-# Mailer setup
-
-When an authority receives an email, the email's `reply-to` field is a
-magic address which is parsed and consumed by the Rails app.
-
-Currently, this is done by calling `script/mailin` and piping in the raw
-email. You will need to configure your MTA to accept emails to magic
-addresses, and to pipe such emails to this script.
-
-Magic email addresses are of the form:
-
- <foi+request-3-691c8388@example.com>
-
-The respective parts of this address are controlled with options in
-options/general, thus:
-
- $OPTION_INCOMING_EMAIL_PREFIX = 'foi+'
- $OPTION_INCOMING_EMAIL_DOMAIN = 'example.com'
-
-`INSTALL-exim.txt` describes one possible configuration for Exim (>=
-1.9).
-
-When you set up your MTA, note that if there is some error inside
-Rails, the email is returned with an exit code 75, which for Exim at
-least means the MTA will try again later. Additionally, a stacktrace
-is emailed to `$OPTION_CONTACT_EMAIL`.
-
-A well-configured installation of this code will separately have had
-Exim make a backup copy of the email in a separate mailbox, just in
-case.
-
-This setup isn't very scaleable, as it spawns a new Ruby process for
-each email received; patches welcome!
+It is possible completely to override the administrator authentication
+by setting `SKIP_ADMIN_AUTH` to `true` in `general.yml`.
# Cron jobs
@@ -262,7 +329,14 @@ One of the cron jobs refers to a script at
`/etc/init.d/foi-alert-tracks`. This is an init script, a copy of
which lives in `config/alert-tracks-debian.ugly`. As with the cron
jobs above, replace the variables (and/or bits near the variables)
-with paths to your software.
+with paths to your software. `config/purge-varnish-debian.ugly` is a
+similar init script, which is optional and not required if you choose
+not to run your site behind Varnish (see below).
+
+The cron jobs refer to a program `run-with-lockfile`. See
+[this issue](https://github.com/sebbacon/alaveteli/issues/112) for a
+discussion of where to find this program, and how you might replace
+it.
# Set up production web server
@@ -281,6 +355,29 @@ Under all but light loads, it is strongly recommended to run the
server behind an http accelerator like Varnish. A sample varnish VCL
is supplied in `../conf/varnish-alaveteli.vcl`.
+Some
+[production server best practice notes](https://github.com/sebbacon/alaveteli/wiki/Production-Server-Best-Practices)
+are evolving on the wiki.
+
+# Upgrading Alaveteli
+
+The developer team policy is that the master branch in git should
+always contain the latest stable release. Therefore, in production,
+you should usually have your software deployed from the master branch,
+and an upgrade can be simply `git pull`.
+
+Patch version increases (e.g. 1.2.3 -> 1.2.4) should not require any
+further action on your part.
+
+Minor version increases (e.g. 1.2.4 -> 1.3.0) will usually require
+further action. You should read the `CHANGES.md` document to see
+what's changed since your last deployment, paying special attention to
+anything in the "Updgrading" sections.
+
+You should always run the script `scripts/rails-post-deploy` after
+each deployment. This runs any database migrations for you, plus
+various other things that can be automated for deployment.
+
# Troubleshooting
* **Incoming emails aren't appearing in my Alaveteli install**
@@ -332,9 +429,8 @@ is supplied in `../conf/varnish-alaveteli.vcl`.
"*when using TMail should load an email with funny MIME settings'
FAILED*"**
- Did you remember to remove the file `alaveteli/config/rails_env.rb`
- as described above? It's created every time you run
- `script/rails-post-deploy`
+ This sounds like the tests are running using the `production`
+ environment, rather than the `test` environment, for some reason.
* **Non-ASCII characters are being displayed as asterisks in my incoming messages**
diff --git a/lib/alaveteli_file_types.rb b/lib/alaveteli_file_types.rb
index 076f8ffe8..e89bc0c78 100644
--- a/lib/alaveteli_file_types.rb
+++ b/lib/alaveteli_file_types.rb
@@ -1,5 +1,3 @@
-require 'mahoro'
-
class AlaveteliFileTypes
# To add an image, create a file with appropriate name corresponding to the
# mime type in public/images e.g. icon_image_tiff_large.png
diff --git a/lib/quiet_opener.rb b/lib/quiet_opener.rb
new file mode 100644
index 000000000..a077ca323
--- /dev/null
+++ b/lib/quiet_opener.rb
@@ -0,0 +1,34 @@
+require 'open-uri'
+require 'net-purge'
+
+def quietly_try_to_open(url)
+ begin
+ result = open(url).read.strip
+ rescue OpenURI::HTTPError, SocketError, Errno::ETIMEDOUT, Errno::ECONNREFUSED, Errno::EHOSTUNREACH
+ logger.warn("Unable to open third-party URL #{url}")
+ result = ""
+ end
+ return result
+end
+
+def quietly_try_to_purge(host, url)
+ begin
+ result = ""
+ result_body = ""
+ Net::HTTP.start(host) {|http|
+ request = Net::HTTP::Purge.new(url)
+ response = http.request(request)
+ result = response.code
+ result_body = response.body
+ }
+ rescue OpenURI::HTTPError, SocketError, Errno::ETIMEDOUT, Errno::ECONNREFUSED, Errno::EHOSTUNREACH
+ logger.warn("Unable to reach host #{host}")
+ end
+ if result == "200"
+ logger.info("Purged URL #{url} at #{host}: #{result}")
+ else
+ logger.warn("Unable to purge URL #{url} at #{host}: status #{result}")
+ end
+ return result
+end
+
diff --git a/lib/tasks/rspec.rake b/lib/tasks/rspec.rake
index 4024a6a6d..1eee74aee 100644
--- a/lib/tasks/rspec.rake
+++ b/lib/tasks/rspec.rake
@@ -1,7 +1,6 @@
-gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9
rspec_gem_dir = nil
-Dir["#{RAILS_ROOT}/vendor/gems/*"].each do |subdir|
- rspec_gem_dir = subdir if subdir.gsub("#{RAILS_ROOT}/vendor/gems/","") =~ /^(\w+-)?rspec-(\d+)/ && File.exist?("#{subdir}/lib/spec/rake/spectask.rb")
+Dir["#{Rails.root}/vendor/gems/*"].each do |subdir|
+ rspec_gem_dir = subdir if subdir.gsub("#{Rails.root}/vendor/gems/","") =~ /^(\w+-)?rspec-(\d+)/ && File.exist?("#{subdir}/lib/spec/rake/spectask.rb")
end
rspec_plugin_dir = File.expand_path(File.dirname(__FILE__) + '/../../vendor/plugins/rspec')
@@ -47,7 +46,7 @@ end
Rake.application.instance_variable_get('@tasks').delete('default')
-spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop
+spec_prereq = File.exist?(File.join(Rails.root, 'config', 'database.yml')) ? "db:test:prepare" : :noop
task :noop do
end
@@ -60,18 +59,18 @@ task :cruise => ['spec']
desc "Run all specs in spec directory (excluding plugin specs)"
Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
+ t.spec_opts = ['--options', "\"#{Rails.root}/spec/spec.opts\""]
t.spec_files = FileList['spec/**/*_spec.rb']
end
namespace :spec do
desc "Run all specs in spec directory with RCov (excluding plugin specs)"
Spec::Rake::SpecTask.new(:rcov) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
+ t.spec_opts = ['--options', "\"#{Rails.root}/spec/spec.opts\""]
t.spec_files = FileList['spec/**/*_spec.rb']
t.rcov = true
t.rcov_opts = lambda do
- IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
+ IO.readlines("#{Rails.root}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
end
end
@@ -90,21 +89,21 @@ namespace :spec do
[:models, :controllers, :views, :helpers, :lib, :integration].each do |sub|
desc "Run the code examples in spec/#{sub}"
Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
+ t.spec_opts = ['--options', "\"#{Rails.root}/spec/spec.opts\""]
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
end
end
desc "Run the code examples in vendor/plugins (except RSpec's own)"
Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
+ t.spec_opts = ['--options', "\"#{Rails.root}/spec/spec.opts\""]
t.spec_files = FileList['vendor/plugins/**/spec/**/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*")
end
namespace :plugins do
desc "Runs the examples for rspec_on_rails"
Spec::Rake::SpecTask.new(:rspec_on_rails) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
+ t.spec_opts = ['--options', "\"#{Rails.root}/spec/spec.opts\""]
t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*_spec.rb']
end
end
diff --git a/lib/world_foi_websites.rb b/lib/world_foi_websites.rb
index 24845437a..fec40ed64 100644
--- a/lib/world_foi_websites.rb
+++ b/lib/world_foi_websites.rb
@@ -1,32 +1,49 @@
+# -*- coding: utf-8 -*-
class WorldFOIWebsites
def self.world_foi_websites
world_foi_websites = [
- {:name => "WhatDoTheyKnow?",
- :country_name => _("United Kingdom"),
+ {:name => "WhatDoTheyKnow",
+ :country_name => "United Kingdom",
:country_iso_code => "GB",
:url => "http://www.whatdotheyknow.com"},
{:name => "Informata Zyrtare",
- :country_name => _("Kosovo"),
+ :country_name => "Kosova",
:country_iso_code => "XK",
:url => "http://informatazyrtare.org"},
{:name => "Ask The EU",
- :country_name => _("European Union"),
+ :country_name => "European Union",
:country_iso_code => "",
:url => "http://asktheu.org"},
{:name => "MuckRock.com",
- :country_name => _("United States of America"),
+ :country_name => "United States of America",
:country_iso_code => "US",
:url => "http://www.muckrock.com"},
{:name => "FYI",
- :country_name => _("New Zealand"),
+ :country_name => "New Zealand",
:country_iso_code => "NZ",
:url => "http://fyi.org.nz"},
{:name => "Frag den Staat",
- :country_name => _("Germany"),
+ :country_name => "Deutschland",
:country_iso_code => "DE",
:url => "http://fragdenstaat.de"},
+ {:name => "tu derecho a saber",
+ :country_name => "España",
+ :country_iso_code => "ES",
+ :url => "http://tuderechoasaber.es"},
+ {:name => "Queremos Saber",
+ :country_name => "Brasil",
+ :country_iso_code => "BR",
+ :url => "http://queremossaber.org.br"},
+ {:name => "Ki Mit Tud",
+ :country_name => "Magyarország",
+ :country_iso_code => "HU",
+ :url => "http://kimittud.atlatszo.hu/"},
+ {:name => "PravoDaSznam",
+ :country_name => "Bosna i Hercegovina",
+ :country_iso_code => "BA",
+ :url => "http://www.pravodaznam.ba/"},
{:name => "Acceso Intelligente",
- :country_name => _("Chile"),
+ :country_name => "Chile",
:country_iso_code => "CL",
:url => "accesointeligente.org"}]
return world_foi_websites
diff --git a/locale/es/app.po b/locale/es/app.po
index 2402349b1..7c576a7ad 100644
--- a/locale/es/app.po
+++ b/locale/es/app.po
@@ -3,7 +3,7 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# David Cabo <david.cabo@gmail.com>, 2011.
+# David Cabo <david.cabo@gmail.com>, 2011, 2012.
# skenaja <alex@alexskene.com>, 2011.
# <victoria@access-info.org>, 2011.
msgid ""
@@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: alaveteli\n"
"Report-Msgid-Bugs-To: http://github.com/sebbacon/alaveteli/issues\n"
"POT-Creation-Date: 2012-02-08 10:16-0000\n"
-"PO-Revision-Date: 2012-02-08 11:30+0000\n"
-"Last-Translator: sebbacon <seb.bacon@gmail.com>\n"
+"PO-Revision-Date: 2012-03-03 23:19+0000\n"
+"Last-Translator: David Cabo <david.cabo@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -25,34 +25,25 @@ msgid ""
"\n"
"\n"
"[ {{site_name}} note: The above text was badly encoded, and has had strange characters removed. ]"
-msgstr ""
-"\n"
-"\n"
-"[ {{site_name}} Nota: El texto anterior estaba mal codificado, y se han eliminado algunos carácteres extraños. ]"
+msgstr "\n\n[ {{site_name}} Nota: El texto anterior estaba mal codificado, y se han eliminado algunos carácteres extraños. ]"
#: app/views/user/set_profile_about_me.rhtml:14
msgid ""
" This will appear on your {{site_name}} profile, to make it\n"
" easier for others to get involved with what you're doing."
-msgstr ""
-" Esto aparecerá en su perfil de {{site_name}}, para facilitar\n"
-" que otras personas entiendan y participen sus peticiones."
+msgstr " Esto aparecerá en su perfil de {{site_name}}, para facilitar\n que otras personas entiendan y participen sus peticiones."
#: app/views/comment/_comment_form.rhtml:16
msgid ""
" (<strong>no ranty</strong> politics, read our <a href=\"%s\">moderation "
"policy</a>)"
-msgstr ""
-" (<strong>sin ataques políticos</strong>, lea nuestra <a "
-"href=\"%s\">política de moderación</a>)"
+msgstr " (<strong>sin ataques políticos</strong>, lea nuestra <a href=\"%s\">política de moderación</a>)"
#: app/views/request/upload_response.rhtml:40
msgid ""
" (<strong>patience</strong>, especially for large files, it may take a "
"while!)"
-msgstr ""
-" (<strong>paciencia</strong>, especialmente con ficheros grandes, puede "
-"tardar unos minutos!)"
+msgstr " (<strong>paciencia</strong>, especialmente con ficheros grandes, puede tardar unos minutos!)"
#: app/views/user/show.rhtml:64
msgid " (you)"
@@ -67,83 +58,62 @@ msgid ""
" <strong>Note:</strong>\n"
" We will send you an email. Follow the instructions in it to change\n"
" your password."
-msgstr ""
-" <strong>Nota::</strong>\n"
-" Le enviaremos un correo. Siga sus instrucciones para cambiar\n"
-" su contraseña."
+msgstr " <strong>Nota::</strong>\n Le enviaremos un correo. Siga sus instrucciones para cambiar\n su contraseña."
#: app/views/user/contact.rhtml:35
msgid " <strong>Privacy note:</strong> Your email address will be given to"
-msgstr ""
-" <strong>Nota sobre privacidad:</strong> Su dirección de correo será dada a"
+msgstr " <strong>Nota sobre privacidad:</strong> Su dirección de correo será dada a"
#: app/views/comment/new.rhtml:34
msgid " <strong>Summarise</strong> the content of any information returned. "
-msgstr ""
-" <strong>Resuma</strong> el contenido de cualquier información obtenida. "
+msgstr " <strong>Resuma</strong> el contenido de cualquier información obtenida. "
#: app/views/comment/new.rhtml:24
msgid " Advise on how to <strong>best clarify</strong> the request."
-msgstr ""
-" Consejo sobre cómo <strong>aclarar lo mejor posible</strong> la petición."
+msgstr " Consejo sobre cómo <strong>aclarar lo mejor posible</strong> la solicitud."
#: app/views/comment/new.rhtml:50
msgid ""
" Ideas on what <strong>other documents to request</strong> which the "
"authority may hold. "
-msgstr ""
-" Ideas sobre <strong>qué otros documentos pedir</strong> que el organismo "
-"público puede tener. "
+msgstr " Ideas sobre <strong>qué otros documentos pedir</strong> que el organismo público puede tener. "
#: app/views/public_body/view_email.rhtml:30
msgid ""
" If you know the address to use, then please <a href=\"%s\">send it to us</a>.\n"
" You may be able to find the address on their website, or by phoning them up and asking."
-msgstr ""
-" Si conoce la dirección a utilizar, entonces por favor <a href=\"%s\">envíenosla</a>.\n"
-" Puede que la encuentre en su página web, o llamándoles por teléfono y preguntando."
+msgstr " Si conoce la dirección a utilizar, entonces por favor <a href=\"%s\">envíenosla</a>.\n Puede que la encuentre en su página web, o llamándoles por teléfono y preguntando."
#: app/views/user/set_profile_about_me.rhtml:26
msgid ""
" Include relevant links, such as to a campaign page, your blog or a\n"
" twitter account. They will be made clickable. \n"
" e.g."
-msgstr ""
-" Incluya enlaces relevantes, como a una página informativa, su blog o\n"
-" cuenta de Twitter. Se convertirán en enlaces automáticamente. \n"
-" Por ejemplo:"
+msgstr " Incluya enlaces relevantes, como a una página informativa, su blog o\n cuenta de Twitter. Se convertirán en enlaces automáticamente. \n Por ejemplo:"
#: app/views/comment/new.rhtml:28
msgid ""
" Link to the information requested, if it is <strong>already "
"available</strong> on the Internet. "
-msgstr ""
-" Enlace a la información pedida, si <strong>ya está disponible</strong> en "
-"Internet. "
+msgstr " Enlace a la información pedida, si <strong>ya está disponible</strong> en Internet. "
#: app/views/comment/new.rhtml:30
msgid ""
" Offer better ways of <strong>wording the request</strong> to get the "
"information. "
-msgstr ""
-" Ofrecer mejores formas de <strong>redactar su petición</strong> para "
-"conseguir la información. "
+msgstr " Ofrecer mejores formas de <strong>redactar su solicitud</strong> para conseguir la información. "
#: app/views/comment/new.rhtml:35
msgid ""
" Say how you've <strong>used the information</strong>, with links if "
"possible."
-msgstr ""
-" Diga cómo ha <strong>usado la información</strong>, con enlaces si es "
-"posible."
+msgstr " Diga cómo ha <strong>usado la información</strong>, con enlaces si es posible."
#: app/views/comment/new.rhtml:29
msgid ""
" Suggest <strong>where else</strong> the requester might find the "
"information. "
-msgstr ""
-" Sugiera <strong>en qué otro lugar</strong> el peticionario puede encontrar "
-"la información. "
+msgstr " Sugiera <strong>en qué otro lugar</strong> el peticionario puede encontrar la información. "
#: app/views/user/set_profile_about_me.rhtml:11
msgid " What are you investigating using Freedom of Information? "
@@ -151,11 +121,11 @@ msgstr " ¿Qué está investigando usando Acceso a la Información? "
#: app/controllers/comment_controller.rb:75
msgid " You are already being emailed updates about the request."
-msgstr " Ya está recibiendo actualizaciones por correo sobre la petición."
+msgstr " Ya está recibiendo actualizaciones por correo sobre la solicitud."
#: app/controllers/comment_controller.rb:73
msgid " You will also be emailed updates about the request."
-msgstr " Recibirá actualizaciones por correo sobre esta petición."
+msgstr " Recibirá actualizaciones por correo sobre esta solicitud."
#: app/views/request/upload_response.rhtml:5
msgid " made by "
@@ -178,14 +148,14 @@ msgstr[1] "%d solicitudes de información a %s"
#: app/views/general/frontpage.rhtml:43
msgid "%d request"
msgid_plural "%d requests"
-msgstr[0] "%d petición"
-msgstr[1] "%d peticiones"
+msgstr[0] "%d solicitud"
+msgstr[1] "%d solicitudes"
#: app/views/public_body/_body_listing_single.rhtml:21
msgid "%d request made."
msgid_plural "%d requests made."
-msgstr[0] "%d petición enviada."
-msgstr[1] "%d peticiones enviadas."
+msgstr[0] "%d solicitud enviada."
+msgstr[1] "%d solicitudes enviadas."
#: app/views/request/new.rhtml:92
msgid "'Crime statistics by ward level for Wales'"
@@ -216,14 +186,7 @@ msgid ""
"Yours,\n"
"\n"
"{{user_name}}"
-msgstr ""
-",\n"
-"\n"
-"\n"
-"\n"
-"Un saludo,\n"
-"\n"
-"{{user_name}}"
+msgstr ",\n\n\n\nUn saludo,\n\n{{user_name}}"
#: app/views/user/sign.rhtml:28
msgid "- or -"
@@ -247,9 +210,7 @@ msgstr "<a class=\"link_button_green\" href=\"{{url}}\">{{text}}</a>"
#: app/views/request/_after_actions.rhtml:9
msgid "<a href=\"%s\">Add an annotation</a> (to help the requester or others)"
-msgstr ""
-"<a href=\"%s\">Añada un comentario</a> (para ayudar al peticionario o a "
-"otros)"
+msgstr "<a href=\"%s\">Añada un comentario</a> (para ayudar al peticionario o a otros)"
#: app/views/public_body/list.rhtml:29
msgid "<a href=\"%s\">Are we missing a public authority?</a>."
@@ -259,9 +220,7 @@ msgstr "<a href=\"%s\">¿Nos falta algún organismo público?</a>."
msgid ""
"<a href=\"%s\">Are you the owner of\n"
" any commercial copyright on this page?</a>"
-msgstr ""
-"<a href=\"%s\">¿Posee el copyright\n"
-" de alguna información de esta página?</a>"
+msgstr "<a href=\"%s\">¿Posee el copyright\n de alguna información de esta página?</a>"
#: app/views/general/search.rhtml:168
msgid "<a href=\"%s\">Browse all</a> or <a href=\"%s\">ask us to add one</a>."
@@ -275,9 +234,7 @@ msgstr "<a href=\"%s\">¿No encuentra el que busca?</a>"
msgid ""
"<a href=\"%s\">Sign in</a> to change password, subscriptions and more "
"({{user_name}} only)"
-msgstr ""
-"<a href=\"%s\">Abra una sesión</a> para cambiar su contraseña, "
-"suscripciones... (sólo {{user_name}})"
+msgstr "<a href=\"%s\">Abra una sesión</a> para cambiar su contraseña, suscripciones... (sólo {{user_name}})"
#: app/views/request/_followup.rhtml:66 app/views/request/_followup.rhtml:73
#: app/views/request/show.rhtml:83 app/views/request/show.rhtml:87
@@ -293,10 +250,7 @@ msgid ""
"<p>All done! Thank you very much for your help.</p><p>There are <a "
"href=\"{{helpus_url}}\">more things you can do</a> to help "
"{{site_name}}.</p>"
-msgstr ""
-"<p>¡Ya está! Muchas gracias por su ayuda.</p><p>Hay <a "
-"href=\"{{helpus_url}}\">más cosas que puede hacer</a> para ayudar a "
-"{{site_name}}.</p>"
+msgstr "<p>¡Ya está! Muchas gracias por su ayuda.</p><p>Hay <a href=\"{{helpus_url}}\">más cosas que puede hacer</a> para ayudar a {{site_name}}.</p>"
#: app/controllers/request_controller.rb:441
msgid ""
@@ -310,56 +264,34 @@ msgid ""
" on other means to answer your question.\n"
" </li>\n"
" </ul>"
-msgstr ""
-"<p>¡Gracias! Algunas ideas sobre qué hacer a continuación:</p>\n"
-" <ul>\n"
-" <li>Para mandar la petición a otro organismo, copie el texto de la petición, y <a href=\"{{find_authority_url}}\">encuentre otro organismo</a>.</li>\n"
-" <li>Si quiere contestar la afirmación del organismo de que no tienen la información, aquí le explicamos \n"
-" <a href=\"{{complain_url}}\">cómo apelar</a>.\n"
-" </li>\n"
-" <li>Tenemos <a href=\"{{other_means_url}}\">sugerencias</a>\n"
-" sobre otras formas de contestar su pregunta.\n"
-" </li>\n"
-" </ul>"
+msgstr "<p>¡Gracias! Algunas ideas sobre qué hacer a continuación:</p>\n <ul>\n <li>Para mandar la solicitud a otro organismo, copia su texto y <a href=\"{{find_authority_url}}\">encuentra otro organismo</a>.</li>\n <li>Si quieres contestar la afirmación del organismo de que no tienen la información, aquí te explicamos \n <a href=\"{{complain_url}}\">cómo apelar</a>.\n </li>\n <li>Tenemos <a href=\"{{other_means_url}}\">sugerencias</a>\n sobre otras formas de contestar tu pregunta.\n </li>\n </ul>"
#: app/controllers/request_controller.rb:435
msgid ""
"<p>Thank you! Hope you don't have to wait much longer.</p> <p>By law, you "
"should have got a response promptly, and normally before the end of "
"<strong>{{date_response_required_by}}</strong>.</p>"
-msgstr ""
-"<p>¡Gracias! Esperamos que no tenga que esperar mucho más.</p> <p>Por ley, "
-"debería recibir una respuesta pronto, y normalmente antes del final de "
-"<strong>{{date_response_required_by}}</strong>.</p>"
+msgstr "<p>¡Gracias! Esperamos que no tenga que esperar mucho más.</p> <p>Por ley, debería recibir una respuesta pronto, y normalmente antes del final de <strong>{{date_response_required_by}}</strong>.</p>"
#: app/controllers/request_controller.rb:431
msgid ""
"<p>Thank you! Hopefully your wait isn't too long.</p> <p>By law, you should get a response promptly, and normally before the end of <strong>\n"
"{{date_response_required_by}}</strong>.</p>"
-msgstr ""
-"<p>¡Gracias! Esperamos que su espera no sea demasiado larga.</p> <p>Por ley, debería recibir una respuesta pronto, y normalmente antes del fin de <strong>\n"
-"{{date_response_required_by}}</strong>.</p>"
+msgstr "<p>¡Gracias! Esperamos que su espera no sea demasiado larga.</p> <p>Por ley, debería recibir una respuesta pronto, y normalmente antes del fin de <strong>\n{{date_response_required_by}}</strong>.</p>"
#: app/controllers/request_controller.rb:470
msgid ""
"<p>Thank you! Hopefully your wait isn't too long.</p><p>You should get a "
"response within {{late_number_of_days}} days, or be told if it will take "
"longer (<a href=\"{{review_url}}\">details</a>).</p>"
-msgstr ""
-"<p>¡Gracias! Deseamos que su espera no sea demasiado larga.</p><p>Debería "
-"recibir una respuesta en {{late_number_of_days}} días, o ser informado de "
-"que tardará más (<a href=\"{{review_url}}\">más información</a>).</p>"
+msgstr "<p>¡Gracias! Deseamos que su espera no sea demasiado larga.</p><p>Debería recibir una respuesta en {{late_number_of_days}} días, o ser informado de que tardará más (<a href=\"{{review_url}}\">más información</a>).</p>"
#: app/controllers/request_controller.rb:473
msgid ""
"<p>Thank you! We'll look into what happened and try and fix it up.</p><p>If "
"the error was a delivery failure, and you can find an up to date FOI email "
"address for the authority, please tell us using the form below.</p>"
-msgstr ""
-"<p>¡Gracias! Investigaremos lo ocurrido y trataremos de arreglarlo.</p><p> "
-"Si el error ha sido al intentar entregar el correo, y puede encontrar una "
-"dirección más actualizada para este organismo, por favor indíquenoslo en el "
-"siguiente formulario.</p>"
+msgstr "<p>¡Gracias! Investigaremos lo ocurrido y trataremos de arreglarlo.</p><p> Si el error ha sido al intentar entregar el correo, y puede encontrar una dirección más actualizada para este organismo, por favor indíquenoslo en el siguiente formulario.</p>"
#: app/controllers/request_controller.rb:438
msgid ""
@@ -367,35 +299,25 @@ msgid ""
"{{very_late_number_of_days}} working days. Most requests should be answered "
"within {{late_number_of_days}} working days. You might like to complain "
"about this, see below.</p>"
-msgstr ""
-"<p>¡Gracias! Su petición está muy retrasada, han pasado más de "
-"{{very_late_number_of_days}} días laborales. La mayoría de las peticiones "
-"deberían ser respondidas en {{late_number_of_days}} días laborales. Puede "
-"reclamar sobre esta situación, como se explica más abajo.</p>"
+msgstr "<p>¡Gracias! Tu solicitud está muy retrasada, han pasado más de {{very_late_number_of_days}} días laborales. La mayoría de las solicitudes deberían ser respondidas en {{late_number_of_days}} días laborales. Puede reclamar sobre esta situación, como se explica más abajo.</p>"
#: app/controllers/user_controller.rb:530
msgid ""
"<p>Thanks for changing the text about you on your profile.</p>\n"
" <p><strong>Next...</strong> You can upload a profile photograph too.</p>"
-msgstr ""
-"<p>Gracias por actualizar el texto de su perfil personal.</p>\n"
-" <p><strong>Ahora...</strong> puede subir también una foto a su perfil.</p>"
+msgstr "<p>Gracias por actualizar el texto de su perfil personal.</p>\n <p><strong>Ahora...</strong> puede subir también una foto a su perfil.</p>"
#: app/controllers/user_controller.rb:451
msgid ""
"<p>Thanks for updating your profile photo.</p>\n"
" <p><strong>Next...</strong> You can put some text about you and your research on your profile.</p>"
-msgstr ""
-"<p>Gracias por actualizar la foto de su perfil.</p>\n"
-" <p><strong>Ahora...</strong> puede escribir sobre usted y su investigación en su perfil.</p>"
+msgstr "<p>Gracias por actualizar la foto de su perfil.</p>\n <p><strong>Ahora...</strong> puede escribir sobre usted y su investigación en su perfil.</p>"
#: app/controllers/request_controller.rb:320
msgid ""
"<p>We recommend that you edit your request and remove the email address.\n"
" If you leave it, the email address will be sent to the authority, but will not be displayed on the site.</p>"
-msgstr ""
-"<p>Le aconsejamos que edite su petición y elimine su dirección de correo.\n"
-" Si la deja, su dirección será enviada al organismo público, pero no será visible en esta web.</p>"
+msgstr "<p>Le aconsejamos que edite su solicitud y elimine su dirección de correo.\n Si la deja, tu dirección será enviada al organismo público, pero no será visible en esta web.</p>"
#: app/controllers/request_controller.rb:459
msgid ""
@@ -404,12 +326,7 @@ msgid ""
" below saying what you did.</p><p>If you found {{site_name}} useful, <a "
"href=\"{{donation_url}}\">make a donation</a> to the charity which runs "
"it.</p>"
-msgstr ""
-"<p>Nos alegra saber que ha obtenido toda la información que solicitó. Si "
-"escribe sobre ella, o la utiliza, por favor vuelva y añada un comentario a "
-"continuación explicando lo que ha hecho.</p><p>Si {{site_name}} le ha "
-"resultado útil, <a href=\"{{donation_url}}\">puede donar</a> a la ONG "
-"responsable.</p>"
+msgstr "<p>Nos alegra saber que ha obtenido toda la información que solicitó. Si escribe sobre ella, o la utiliza, por favor vuelva y añada un comentario a continuación explicando lo que ha hecho.</p><p>Si {{site_name}} le ha resultado útil, <a href=\"{{donation_url}}\">puede donar</a> a la ONG responsable.</p>"
#: app/controllers/request_controller.rb:462
msgid ""
@@ -417,41 +334,27 @@ msgid ""
"{{site_name}} useful, <a href=\"{{donation_url}}\">make a donation</a> to "
"the charity which runs it.</p><p>If you want to try and get the rest of the "
"information, here's what to do now.</p>"
-msgstr ""
-"<p>Nos alegra saber que ha obtenido parte de la información que solicitó. Si"
-" escribe sobre ella, o la utiliza, por favor vuelva y añada un comentario a "
-"continuación explicando lo que ha hecho.</p><p>Si {{site_name}} le ha "
-"resultado útil, <a href=\"{{donation_url}}\">puede donar</a> a la ONG "
-"responsable.</p>"
+msgstr "<p>Nos alegra saber que ha obtenido parte de la información que solicitó. Si escribe sobre ella, o la utiliza, por favor vuelva y añada un comentario a continuación explicando lo que ha hecho.</p><p>Si {{site_name}} le ha resultado útil, <a href=\"{{donation_url}}\">puede donar</a> a la ONG responsable.</p>"
#: app/controllers/request_controller.rb:318
msgid ""
"<p>You do not need to include your email in the request in order to get a "
"reply (<a href=\"%s\">details</a>).</p>"
-msgstr ""
-"<p>No necesita incluir su dirección de correo en la petición para recibir "
-"una respuesta (<a href=\"%s\">más detalles</a>).</p>"
+msgstr "<p>No necesitas incluir tu dirección de correo en la solicitud para recibir una respuesta (<a href=\"%s\">más detalles</a>).</p>"
#: app/controllers/request_controller.rb:316
msgid ""
"<p>You do not need to include your email in the request in order to get a "
"reply, as we will ask for it on the next screen (<a "
"href=\"%s\">details</a>).</p>"
-msgstr ""
-"<p>No necesita incluir su dirección de correo en la petición para recibir "
-"una respuesta, se la pediremos en el siguiente paso (<a href=\"%s\">más "
-"detalles</a>).</p>"
+msgstr "<p>No necesita incluir su dirección de correo en la solicitud para recibir una respuesta, se la pediremos en el siguiente paso (<a href=\"%s\">más detalles</a>).</p>"
#: app/controllers/request_controller.rb:324
msgid ""
"<p>Your request contains a <strong>postcode</strong>. Unless it directly "
"relates to the subject of your request, please remove any address as it will"
" <strong>appear publicly on the Internet</strong>.</p>"
-msgstr ""
-"<p>Su petición incluye un <strong>código postal</strong>. Salvo que esté "
-"directamente relacionado con su petición, por favor elimine cualquier "
-"dirección, ya que <strong>estará disponible públicamente en "
-"Internet</strong>.</p>"
+msgstr "<p>Tu solicitud incluye un <strong>código postal</strong>. Salvo que esté directamente relacionado con su solicitud, por favor elimina cualquier dirección, ya que <strong>estará disponible públicamente en Internet</strong>.</p>"
#: app/controllers/request_controller.rb:352
msgid ""
@@ -460,118 +363,83 @@ msgid ""
" replied by then.</p>\n"
" <p>If you write about this request (for example in a forum or a blog) please link to this page, and add an \n"
" annotation below telling people about your writing.</p>"
-msgstr ""
-"<p>¡Su petición de {{law_used_full}} ha sido <strong>enviada</strong>!</p>\n"
-"<p><strong>Le avisaremos por correo</strong> cuando haya una respuesta, o en {{late_number_of_days}} días laborables si el organismo todavía no ha respondido.</p>\n"
-"<p>Si escribe sobre esta petición (en un foro o blog, por ejemplo) por favor enlace a esta página, y añada un comentario a continuación informando a posibles interesados.</p>"
+msgstr "<p>¡Tu solicitud de {{law_used_full}} ha sido <strong>enviada</strong>!</p>\n<p><strong>Te avisaremos por correo</strong> cuando haya una respuesta, o en {{late_number_of_days}} días laborables si el organismo todavía no ha respondido.</p>\n<p>Si escribes sobre esta solicitud (en un foro o blog, por ejemplo) por favor enlaza a esta página, y añade un comentario a continuación informando a posibles interesados.</p>"
#: app/controllers/application_controller.rb:311
msgid ""
"<p>{{site_name}} is currently in maintenance. You can only view existing "
"requests. You cannot make new ones, add followups or annotations, or "
"otherwise change the database.</p> <p>{{read_only}}</p>"
-msgstr ""
-"<p>{{site_name}} está en mantenimiento temporalmente. Sólo puede ver "
-"peticiones existentes. No puede crear una nueva, añadir comentarios, enviar "
-"respuestas, o realizar otras operaciones que alteren la base de datos.</p> "
-"<p>{{read_only}}</p>"
+msgstr "<p>{{site_name}} está en mantenimiento temporalmente. Sólo puede ver peticiones existentes. No puede crear una nueva, añadir comentarios, enviar respuestas, o realizar otras operaciones que alteren la base de datos.</p> <p>{{read_only}}</p>"
#: app/views/user/confirm.rhtml:11
msgid ""
"<small>If you use web-based email or have \"junk mail\" filters, also check your\n"
"bulk/spam mail folders. Sometimes, our messages are marked that way.</small>\n"
"</p>"
-msgstr ""
-"<small>Si usa correo web o tiene filtros \"anti spam\", por favor compruebe\n"
-"sus carpetas de spam. A veces, nuestros mensajes se marcan así por error.</small>\n"
-"</p>"
+msgstr "<small>Si usa correo web o tiene filtros \"anti spam\", por favor compruebe\nsus carpetas de spam. A veces, nuestros mensajes se marcan así por error.</small>\n</p>"
#: app/views/request/new.rhtml:135
msgid ""
"<strong> Can I request information about myself?</strong>\n"
"\t\t\t<a href=\"%s\">No! (Click here for details)</a>"
-msgstr ""
-"<strong> ¿Puedo pedir información sobre mí?</strong>\n"
-"\t\t\t<a href=\"%s\">¡No! (Pulse aquí para más detalles)</a>"
+msgstr "<strong> ¿Puedo pedir información sobre mí?</strong>\n\t\t\t<a href=\"%s\">¡No! (Pulse aquí para más detalles)</a>"
#: app/views/general/_advanced_search_tips.rhtml:12
msgid ""
"<strong><code>commented_by:tony_bowden</code></strong> to search annotations"
" made by Tony Bowden, typing the name as in the URL."
-msgstr ""
-"<strong><code>commented_by:rafael_nadal</code></strong> para buscar "
-"comentarios hechos por el usuario 'rafael_nadal'."
+msgstr "<strong><code>commented_by:rafael_nadal</code></strong> para buscar comentarios hechos por el usuario 'rafael_nadal'."
#: app/views/general/_advanced_search_tips.rhtml:14
msgid ""
"<strong><code>filetype:pdf</code></strong> to find all responses with PDF "
"attachments. Or try these: <code>{{list_of_file_extensions}}</code>"
-msgstr ""
-"<strong><code>filetype:pdf</code></strong> para buscar todas las respuestas "
-"con PDFs adjuntos. O prueba estas: <code>{{list_of_file_extensions}}</code>"
+msgstr "<strong><code>filetype:pdf</code></strong> para buscar todas las respuestas con PDFs adjuntos. O prueba estas: <code>{{list_of_file_extensions}}</code>"
#: app/views/general/_advanced_search_tips.rhtml:13
msgid ""
"<strong><code>request:</code></strong> to restrict to a specific request, "
"typing the title as in the URL."
-msgstr ""
-"<strong><code>request:</code></strong> para restringir la búsqueda a una "
-"petición específica, escribiendo el título tal y como aparece en la URL."
+msgstr "<strong><code>request:</code></strong> para restringir la búsqueda a una solicitud específica, escribiendo el título tal y como aparece en la URL."
#: app/views/general/_advanced_search_tips.rhtml:11
msgid ""
"<strong><code>requested_by:julian_todd</code></strong> to search requests "
"made by Julian Todd, typing the name as in the URL."
-msgstr ""
-"<code><strong>requested_by:julian_todd</strong></code> para buscar las "
-"peticiones realizadas por Julian Todd, escribiendo el nombre como aparece en"
-" la URL."
+msgstr "<code><strong>requested_by:julian_todd</strong></code> para buscar las peticiones realizadas por Julian Todd, escribiendo el nombre como aparece en la URL."
#: app/views/general/_advanced_search_tips.rhtml:10
msgid ""
"<strong><code>requested_from:home_office</code></strong> to search requests "
"from the Home Office, typing the name as in the URL."
-msgstr ""
-"<strong><code>requested_from:consejo_europeo</code></strong> para buscar "
-"peticiones realizadas al Consejo Europeo, escribiendo su nombre como aparece"
-" en la URL."
+msgstr "<strong><code>requested_from:consejo_europeo</code></strong> para buscar peticiones realizadas al Consejo Europeo, escribiendo su nombre como aparece en la URL."
#: app/views/general/_advanced_search_tips.rhtml:8
msgid ""
"<strong><code>status:</code></strong> to select based on the status or "
"historical status of the request, see the <a href=\"{{statuses_url}}\">table"
" of statuses</a> below."
-msgstr ""
-"<strong><code>status:</code></strong> para filtrar en función del estado "
-"actual o histórico de la petición, consulte la <a "
-"href=\"{{statuses_url}}\">tabla de estados</a> a continuación."
+msgstr "<strong><code>status:</code></strong> para filtrar en función del estado actual o histórico de la solicitud, consulte la <a href=\"{{statuses_url}}\">tabla de estados</a> a continuación."
#: app/views/general/_advanced_search_tips.rhtml:16
msgid ""
"<strong><code>tag:charity</code></strong> to find all public bodies or requests with a given tag. You can include multiple tags, \n"
" and tag values, e.g. <code>tag:openlylocal AND tag:financial_transaction:335633</code>. Note that by default any of the tags\n"
" can be present, you have to put <code>AND</code> explicitly if you only want results them all present."
-msgstr ""
-"<strong><code>tag:salud</code></strong> para buscar todos los organismos públicos o peticiones con la etiqueta dada. Puede incluir múltiples etiquetas, \n"
-" y valores, e.g. <code>tag:salud AND tag:financial_transaction:335633</code>. Por defecto, basta con que cualquiera de las etiquetas\n"
-" esté presente, añada <code>AND</code> explícitamente si sólo quiere resultados con todas ellas presentes."
+msgstr "<strong><code>tag:salud</code></strong> para buscar todos los organismos públicos o peticiones con la etiqueta dada. Puede incluir múltiples etiquetas, \n y valores, e.g. <code>tag:salud AND tag:financial_transaction:335633</code>. Por defecto, basta con que cualquiera de las etiquetas\n esté presente, añada <code>AND</code> explícitamente si sólo quiere resultados con todas ellas presentes."
#: app/views/general/_advanced_search_tips.rhtml:9
msgid ""
"<strong><code>variety:</code></strong> to select type of thing to search "
"for, see the <a href=\"{{varieties_url}}\">table of varieties</a> below."
-msgstr ""
-"<strong><code>variety:</code></strong> para filtrar en función del tipo de "
-"objeto, consulte la <a href=\"{{varieties_url}}\">tabla de tipos de "
-"objetos</a> a continuación."
+msgstr "<strong><code>variety:</code></strong> para filtrar en función del tipo de objeto, consulte la <a href=\"{{varieties_url}}\">tabla de tipos de objetos</a> a continuación."
#: app/views/comment/new.rhtml:57
msgid ""
"<strong>Advice</strong> on how to get a response that will satisfy the "
"requester. </li>"
-msgstr ""
-"<strong>Consejos</strong> sobre cómo conseguir una respuesta que satisfaga "
-"al peticionario. </li>"
+msgstr "<strong>Consejos</strong> sobre cómo conseguir una respuesta que satisfaga al peticionario. </li>"
#: app/views/request/_other_describe_state.rhtml:56
msgid "<strong>All the information</strong> has been sent"
@@ -580,8 +448,7 @@ msgstr "<strong>Toda la información</strong> ha sido enviada"
#: app/views/request/_followup.rhtml:106
msgid ""
"<strong>Anything else</strong>, such as clarifying, prompting, thanking"
-msgstr ""
-"<strong>Otras cosas</strong>, como aclarar, preguntar, dar las gracias"
+msgstr "<strong>Otras cosas</strong>, como aclarar, preguntar, dar las gracias"
#: app/views/request/details.rhtml:12
msgid ""
@@ -591,14 +458,7 @@ msgid ""
"be user error and ambiguity. You will also need to understand FOI law, and the\n"
"way authorities use it. Plus you'll need to be an elite statistician. Please\n"
"<a href=\"{{contact_path}}\">contact us</a> with questions."
-msgstr ""
-"<strong>¡Cuidado!</strong> Para utilizar estos datos de forma fiable necesita \n"
-"un conocimiento profundo del comportamiento de los usuarios de {{site_name}}. El cómo, \n"
-"por qué y por quién se clasifican las peticiones no es trivial, y se producen fallos\n"
-"humanos y decisiones discutibles. Necesita también comprender las leyes de acceso a la\n"
-"información, y cómo son utilizadas por los organismos públicos. Necesita por último ser\n"
-"un buen estadista. Por favor <a href=\"{{contact_path}}\">contacte con nosotros</a>\n"
-"si tiene cualquier duda."
+msgstr "<strong>¡Cuidado!</strong> Para utilizar estos datos de forma fiable necesita \nun conocimiento profundo del comportamiento de los usuarios de {{site_name}}. El cómo, \npor qué y por quién se clasifican las peticiones no es trivial, y se producen fallos\nhumanos y decisiones discutibles. Necesita también comprender las leyes de acceso a la\ninformación, y cómo son utilizadas por los organismos públicos. Necesita por último ser\nun buen estadista. Por favor <a href=\"{{contact_path}}\">contacte con nosotros</a>\nsi tiene cualquier duda."
#: app/views/request/_other_describe_state.rhtml:28
msgid "<strong>Clarification</strong> has been requested"
@@ -608,51 +468,38 @@ msgstr "Se ha solicitado una <strong>aclaración</strong>"
msgid ""
"<strong>No response</strong> has been received\n"
" <small>(maybe there's just an acknowledgement)</small>"
-msgstr ""
-"No se ha recibido <strong>ninguna respuesta</strong>\n"
-" <small>(puede que se trate sólo de un acuse de recibo)</small>"
+msgstr "No se ha recibido <strong>ninguna respuesta</strong>\n <small>(puede que se trate sólo de un acuse de recibo)</small>"
#: app/views/user/signchangeemail.rhtml:30
msgid ""
"<strong>Note:</strong>\n"
" We will send an email to your new email address. Follow the\n"
" instructions in it to confirm changing your email."
-msgstr ""
-"<strong>Nota:</strong>\n"
-" Enviaremos un correo a la nueva dirección de correo. Siga\n"
-" sus instrucciones para confirmar la nueva dirección."
+msgstr "<strong>Nota:</strong>\n Enviaremos un correo a la nueva dirección de correo. Siga\n sus instrucciones para confirmar la nueva dirección."
#: app/views/user/contact.rhtml:32
msgid ""
"<strong>Note:</strong> You're sending a message to yourself, presumably\n"
" to try out how it works."
-msgstr ""
-"<strong>Nota:</strong> Se está enviando un mensaje a sí mismo, suponemos\n"
-" que para probar cómo funciona."
+msgstr "<strong>Nota:</strong> Se está enviando un mensaje a sí mismo, suponemos\n que para probar cómo funciona."
#: app/views/request/preview.rhtml:31
msgid ""
"<strong>Privacy note:</strong> If you want to request private information about\n"
" yourself then <a href=\"%s\">click here</a>."
-msgstr ""
-"<strong>Nota sobre privacidad:</strong> Si quiere solicitar información privada\n"
-" sobre sí mismo entonces <a href=\"%s\">siga este enlace</a>."
+msgstr "<strong>Nota sobre privacidad:</strong> Si quiere solicitar información privada\n sobre sí mismo entonces <a href=\"%s\">siga este enlace</a>."
#: app/views/user/set_crop_profile_photo.rhtml:35
msgid ""
"<strong>Privacy note:</strong> Your photo will be shown in public on the Internet, \n"
" wherever you do something on {{site_name}}."
-msgstr ""
-"<strong>Nota sobre privacidad:</strong> Su foto será mostrada públicamente en Internet, \n"
-" junto a cada una de sus acciones en {{site_name}}."
+msgstr "<strong>Nota sobre privacidad:</strong> Su foto será mostrada públicamente en Internet, \n junto a cada una de sus acciones en {{site_name}}."
#: app/views/request/followup_preview.rhtml:37
msgid ""
"<strong>Privacy warning:</strong> Your message, and any response\n"
" to it, will be displayed publicly on this website."
-msgstr ""
-"<strong>Nota sobre privacidad:</strong> Su mensaje, y cualquier respuesta,\n"
-" estarán disponibles públicamente en esta web."
+msgstr "<strong>Nota sobre privacidad:</strong> Su mensaje, y cualquier respuesta,\n estarán disponibles públicamente en esta web."
#: app/views/request/_other_describe_state.rhtml:52
msgid "<strong>Some of the information</strong> has been sent "
@@ -669,13 +516,11 @@ msgstr "<strong>no tenía</strong> la información solicitada."
#: app/views/comment/new.rhtml:46
msgid ""
"A <strong>summary</strong> of the response if you have received it by post. "
-msgstr ""
-"Un <strong>resumen</strong> de la respuesta si la ha recibido por correo "
-"ordinario. "
+msgstr "Un <strong>resumen</strong> de la respuesta si la ha recibido por correo ordinario. "
#: app/models/info_request.rb:284
msgid "A Freedom of Information request"
-msgstr ""
+msgstr "Una solicitud de información"
#: app/models/public_body.rb:278
#: app/views/general/_advanced_search_tips.rhtml:46
@@ -688,8 +533,7 @@ msgstr "Una respuesta será enviada <strong>por correo ordinario</strong>"
#: app/views/general/_advanced_search_tips.rhtml:35
msgid "A strange reponse, required attention by the {{site_name}} team"
-msgstr ""
-"Una respuesta inusual, debe ser revisada por el equipo de {{site_name}}"
+msgstr "Una respuesta inusual, debe ser revisada por el equipo de {{site_name}}"
#: app/views/general/_advanced_search_tips.rhtml:47
msgid "A {{site_name}} user"
@@ -711,9 +555,7 @@ msgstr "Añada un comentario"
msgid ""
"Add an annotation to your request with choice quotes, or\n"
" a <strong>summary of the response</strong>."
-msgstr ""
-"Añada un comentario a su petición con citas seleccionadas, o\n"
-" un <strong>resumen de la respuesta</strong>."
+msgstr "Añada un comentario a su solicitud con citas seleccionadas, o\n un <strong>resumen de la respuesta</strong>."
#: app/views/public_body/_body_listing_single.rhtml:27
msgid "Added on {{date}}"
@@ -739,17 +581,13 @@ msgstr "Ayuda para la búsqueda avanzada"
msgid ""
"Advise on whether the <strong>refusal is legal</strong>, and how to complain"
" about it if not."
-msgstr ""
-"Consejo sobre <strong>si el rechazo es legal</strong>, y como apelar si no "
-"lo es."
+msgstr "Consejo sobre <strong>si el rechazo es legal</strong>, y como apelar si no lo es."
#: app/views/request/new.rhtml:67
msgid ""
"Air, water, soil, land, flora and fauna (including how these effect\n"
" human beings)"
-msgstr ""
-"Aire, agua, tierra, flora y fauna (incluyendo sus efectos en los\n"
-" seres humanos)"
+msgstr "Aire, agua, tierra, flora y fauna (incluyendo sus efectos en los\n seres humanos)"
#: app/views/general/_advanced_search_tips.rhtml:30
msgid "All of the information requested has been received"
@@ -763,13 +601,7 @@ msgid ""
"<em>ever</em> been marked as not held; "
"<strong>latest_status:not_held</strong> will match only requests that are "
"<em>currently</em> marked as not held."
-msgstr ""
-"All the options below can use <strong>status</strong> or "
-"<strong>latest_status</strong> before the colon. For example, "
-"<strong>status:not_held</strong> will match requests which have "
-"<em>ever</em> been marked as not held; "
-"<strong>latest_status:not_held</strong> will match only requests that are "
-"<em>currently</em> marked as not held."
+msgstr "All the options below can use <strong>status</strong> or <strong>latest_status</strong> before the colon. For example, <strong>status:not_held</strong> will match requests which have <em>ever</em> been marked as not held; <strong>latest_status:not_held</strong> will match only requests that are <em>currently</em> marked as not held."
#: app/views/general/_advanced_search_tips.rhtml:40
msgid ""
@@ -778,12 +610,7 @@ msgid ""
"<strong>variety:sent</strong> will match requests which have <em>ever</em> "
"been sent; <strong>latest_variety:sent</strong> will match only requests "
"that are <em>currently</em> marked as sent."
-msgstr ""
-"All the options below can use <strong>variety</strong> or "
-"<strong>latest_variety</strong> before the colon. For example, "
-"<strong>variety:sent</strong> will match requests which have <em>ever</em> "
-"been sent; <strong>latest_variety:sent</strong> will match only requests "
-"that are <em>currently</em> marked as sent."
+msgstr "All the options below can use <strong>variety</strong> or <strong>latest_variety</strong> before the colon. For example, <strong>variety:sent</strong> will match requests which have <em>ever</em> been sent; <strong>latest_variety:sent</strong> will match only requests that are <em>currently</em> marked as sent."
#: app/views/public_body/_body_listing_single.rhtml:12
msgid "Also called {{other_name}}."
@@ -797,9 +624,7 @@ msgstr "Modifique su suscripción"
msgid ""
"Although all responses are automatically published, we depend on\n"
"you, the original requester, to evaluate them."
-msgstr ""
-"Aunque todas las respuestas se publican automáticamente, dependemos\n"
-"de usted, el creador de la petición, para evaluarlas."
+msgstr "Aunque todas las respuestas se publican automáticamente, dependemos\nde usted, el creador de la solicitud, para evaluarlas."
#: app/views/request/_other_describe_state.rhtml:70
msgid "An <strong>error message</strong> has been received"
@@ -807,11 +632,11 @@ msgstr "Se ha recibido <strong>un mensaje de error</strong>"
#: app/models/info_request.rb:286
msgid "An Environmental Information Regulations request"
-msgstr ""
+msgstr "Una solicitud de información ambiental"
#: app/views/general/_advanced_search_tips.rhtml:45
msgid "Annotation added to request"
-msgstr "Comentario añadido a la petición"
+msgstr "Comentario añadido a la solicitud"
#: app/views/user/show.rhtml:41
msgid "Annotations"
@@ -821,17 +646,13 @@ msgstr "Comentarios"
msgid ""
"Annotations are so anyone, including you, can help the requester with their "
"request. For example:"
-msgstr ""
-"Los comentarios sirven para que cualquier, incluído usted, pueda ayudar al "
-"creador de la petición. Por ejemplo:"
+msgstr "Los comentarios sirven para que cualquier, incluído usted, pueda ayudar al creador de la solicitud. Por ejemplo:"
#: app/views/comment/new.rhtml:70
msgid ""
"Annotations will be posted publicly here, and are \n"
" <strong>not</strong> sent to {{public_body_name}}."
-msgstr ""
-"Los comentarios se muestran públicamente aquí, y \n"
-" <strong>no</strong> se envían a {{public_body_name}}."
+msgstr "Los comentarios se muestran públicamente aquí, y \n <strong>no</strong> se envían a {{public_body_name}}."
#: app/views/request/_after_actions.rhtml:6
msgid "Anyone:"
@@ -841,17 +662,13 @@ msgstr "Cualquiera:"
msgid ""
"Ask for <strong>specific</strong> documents or information, this site is not"
" suitable for general enquiries."
-msgstr ""
-"Pida documentos o información <strong>específica</strong>, esta web no está "
-"pensada para resolver dudas generales."
+msgstr "Pida documentos o información <strong>específica</strong>, esta web no está pensada para resolver dudas generales."
#: app/views/request/show_response.rhtml:29
msgid ""
"At the bottom of this page, write a reply to them trying to persuade them to scan it in\n"
" (<a href=\"%s\">more details</a>)."
-msgstr ""
-"Al final de esta página, escriba una respuesta intentando convencerles de que lo escaneen\n"
-" (<a href=\"%s\">más detalles</a>)."
+msgstr "Al final de esta página, escriba una respuesta intentando convencerles de que lo escaneen\n (<a href=\"%s\">más detalles</a>)."
#: app/views/request/upload_response.rhtml:33
msgid "Attachment (optional):"
@@ -881,17 +698,13 @@ msgstr "Comenzando por"
msgid ""
"Browse <a href='{{url}}'>other requests</a> for examples of how to word your"
" request."
-msgstr ""
-"Consulte <a href='{{url}}'>otras solicitudes</a> para ver cómo puede "
-"redactar su solicitud."
+msgstr "Consulte <a href='{{url}}'>otras solicitudes</a> para ver cómo puede redactar su solicitud."
#: app/views/request/new.rhtml:44
msgid ""
"Browse <a href='{{url}}'>other requests</a> to '{{public_body_name}}' for "
"examples of how to word your request."
-msgstr ""
-"Explore <a href='{{url}}'>otras peticiones</a> a '{{public_body_name}}' para"
-" ver ejemplos de cómo redactar su petición."
+msgstr "Explore <a href='{{url}}'>otras solicitudes</a> a '{{public_body_name}}' para ver ejemplos de cómo redactar su solicitud."
#: app/views/general/frontpage.rhtml:48
msgid "Browse all authorities..."
@@ -901,17 +714,13 @@ msgstr "Explore otros organismos públicos..."
msgid ""
"By law, under all circumstances, {{public_body_link}} should have responded "
"by now"
-msgstr ""
-"Por ley, bajo cualquier circunstancia, {{public_body_link}} ya debería haber"
-" respondido"
+msgstr "Por ley, bajo cualquier circunstancia, {{public_body_link}} ya debería haber respondido"
#: app/views/request/show.rhtml:78
msgid ""
"By law, {{public_body_link}} should normally have responded "
"<strong>promptly</strong> and"
-msgstr ""
-"Por ley, {{public_body_link}} debería haber respondido "
-"<strong>pronto</strong> y"
+msgstr "Por ley, {{public_body_link}} debería haber respondido <strong>pronto</strong> y"
#: app/controllers/track_controller.rb:153
msgid "Cancel a {{site_name}} alert"
@@ -993,8 +802,7 @@ msgstr "Busque erratas si ha copiado la dirección."
#: app/views/request/followup_preview.rhtml:14
#: app/views/request/preview.rhtml:7
msgid "Check you haven't included any <strong>personal information</strong>."
-msgstr ""
-"Compruebe que no ha incluído <strong>ninguna información personal</strong>."
+msgstr "Compruebe que no ha incluído <strong>ninguna información personal</strong>."
#: lib/world_foi_websites.rb:29
msgid "Chile"
@@ -1010,23 +818,19 @@ msgstr "Aclaración"
#: app/controllers/request_controller.rb:381
msgid "Classify an FOI response from "
-msgstr "Clasifique una petición de "
+msgstr "Clasifique una solicitud de "
#: app/views/request_mailer/very_overdue_alert.rhtml:6
msgid ""
"Click on the link below to send a message to {{public_body_name}} telling them to reply to your request. You might like to ask for an internal\n"
"review, asking them to find out why response to the request has been so slow."
-msgstr ""
-"Haga click en el siguiente enlace para mandar un mensaje a {{public_body_name}} solicitando que respondan a su petición. Puede pedir una revisión\n"
-"interna, preguntándoles por qué se ha demorado tanto la respuesta a su petición."
+msgstr "Haga click en el siguiente enlace para mandar un mensaje a {{public_body_name}} pidiendo que respondan a su solicitud. Puede pedir una revisión\ninterna, preguntándoles por qué se ha demorado tanto la respuesta a su solicitud."
#: app/views/request_mailer/overdue_alert.rhtml:5
msgid ""
"Click on the link below to send a message to {{public_body}} reminding them "
"to reply to your request."
-msgstr ""
-"Haga click en el siguiente enlace para enviar un mensaje a {{public_body}} "
-"recordándoles que deben responder a su petición."
+msgstr "Haga click en el siguiente enlace para enviar un mensaje a {{public_body}} recordándoles que deben responder a su solicitud."
#: locale/model_attributes.rb:22
msgid "Comment|Body"
@@ -1052,35 +856,28 @@ msgstr "Confirme que quiere recibir correos sobre nuevas peticiones"
msgid ""
"Confirm you want to be emailed about new requests or responses matching your"
" search"
-msgstr ""
-"Confirme que quiere recibir correos sobre nuevas solicitudes o respuestas "
-"que coincidan con su búsqueda"
+msgstr "Confirme que quiere recibir correos sobre nuevas solicitudes o respuestas que coincidan con su búsqueda"
#: app/models/track_thing.rb:270
msgid "Confirm you want to be emailed about requests by '{{user_name}}'"
-msgstr ""
-"Confirme que quiere recibir correos sobre las peticiones de '{{user_name}}'"
+msgstr "Confirme que quiere recibir correos sobre las peticiones de '{{user_name}}'"
#: app/models/track_thing.rb:254
msgid ""
"Confirm you want to be emailed about requests to '{{public_body_name}}'"
-msgstr ""
-"Confirme que quiere recibir correos sobre peticiones a "
-"'{{public_body_name}}'"
+msgstr "Confirme que quiere recibir correos sobre peticiones a '{{public_body_name}}'"
#: app/models/track_thing.rb:235
msgid "Confirm you want to be emailed when an FOI request succeeds"
-msgstr "Confirme que quiere recibir correos cuando una petición tenga éxito"
+msgstr "Confirme que quiere recibir correos cuando una solicitud tenga éxito"
#: app/models/track_thing.rb:203
msgid "Confirm you want to follow updates to the request '{{request_title}}'"
-msgstr ""
-"Confirme que quiere recibir actualizaciones sobre la solicitud "
-"'{{request_title}}'"
+msgstr "Confirme que quiere recibir actualizaciones sobre la solicitud '{{request_title}}'"
#: app/controllers/request_controller.rb:341
msgid "Confirm your FOI request to "
-msgstr "Confirme su petición a "
+msgstr "Confirme su solicitud a "
#: app/controllers/user_controller.rb:559
#: app/controllers/request_controller.rb:757
@@ -1105,16 +902,13 @@ msgstr "Contacte con {{site_name}}"
#: app/models/request_mailer.rb:219
msgid "Could not identify the request from the email address"
-msgstr ""
-"No hemos podido identificar la petición a partir de la dirección de correo"
+msgstr "No hemos podido identificar la solicitud a partir de la dirección de correo"
#: app/models/profile_photo.rb:96
msgid ""
"Couldn't understand the image file that you uploaded. PNG, JPEG, GIF and "
"many other common image file formats are supported."
-msgstr ""
-"No se pudo procesar la imagen subida. Puede utilizar PNG, JPEG, GIF u otros "
-"formatos de imagen populares."
+msgstr "No se pudo procesar la imagen subida. Puede utilizar PNG, JPEG, GIF u otros formatos de imagen populares."
#: app/views/user/set_crop_profile_photo.rhtml:6
msgid "Crop your profile photo"
@@ -1124,17 +918,13 @@ msgstr "Recorte su foto de perfil"
msgid ""
"Cultural sites and built structures (as they may be affected by the\n"
" environmental factors listed above)"
-msgstr ""
-"Enclaves culturales y edificios (ya que pueden estar afectados por\n"
-" los factores medioambientales mencionados anteriormente)"
+msgstr "Enclaves culturales y edificios (ya que pueden estar afectados por\n los factores medioambientales mencionados anteriormente)"
#: app/views/request/show.rhtml:68
msgid ""
"Currently <strong>waiting for a response</strong> from {{public_body_link}},"
" they must respond promptly and"
-msgstr ""
-"Actualmente <strong>esperando la respuesta</strong> de {{public_body_link}},"
-" que debe responder pronto y"
+msgstr "Actualmente <strong>esperando la respuesta</strong> de {{public_body_link}}, que debe responder pronto y"
#: app/views/request/simple_correspondence.rhtml:17
#: app/views/request/simple_correspondence.rhtml:29
@@ -1160,7 +950,7 @@ msgstr "Error en la entrega"
#: app/views/request/details.rhtml:1 app/views/request/details.rhtml:2
msgid "Details of request '"
-msgstr "Detalles de la petición '"
+msgstr "Detalles de la solicitud '"
#: app/views/general/search.rhtml:166
msgid "Did you mean: {{correction}}"
@@ -1170,16 +960,13 @@ msgstr "¿Quiere decir: {{correction}}?"
msgid ""
"Disclaimer: This message and any reply that you make will be published on "
"the internet. Our privacy and copyright policies:"
-msgstr ""
-"Atención: Este mensaje y cualquier respuesta que usted haga serán publicadas"
-" en Internet. Nuestras políticas de privacidad y copyright:"
+msgstr "Atención: Este mensaje y cualquier respuesta que usted haga serán publicadas en Internet. Nuestras políticas de privacidad y copyright:"
#: app/views/request/_followup.rhtml:19
msgid ""
"Don't want to address your message to {{person_or_body}}? You can also "
"write to:"
-msgstr ""
-"¿Quiere mandar su mensaje a {{person_or_body}}? También puede escribir a:"
+msgstr "¿Quiere mandar su mensaje a {{person_or_body}}? También puede escribir a:"
#: app/views/general/_localised_datepicker.rhtml:4
msgid "Done"
@@ -1195,15 +982,13 @@ msgstr "Descargar ficheros adjuntos"
#: app/models/info_request.rb:268
msgid "EIR"
-msgstr ""
+msgstr "EIR"
#: app/views/request/_followup.rhtml:112
msgid ""
"Edit and add <strong>more details</strong> to the message above,\n"
" explaining why you are dissatisfied with their response."
-msgstr ""
-"Edite y añada <strong>más detalles</strong> al mensaje anterior,\n"
-" explicando por qué no esta satisfecho con su respuesta."
+msgstr "Edite y añada <strong>más detalles</strong> al mensaje anterior,\n explicando por qué no esta satisfecho con su respuesta."
#: app/views/admin_public_body/_locale_selector.rhtml:2
msgid "Edit language version:"
@@ -1225,9 +1010,7 @@ msgstr "El correo o la contraseña son inválidos, por favor pruebe otra vez."
msgid ""
"Either the email or password was not recognised, please try again. Or create"
" a new account using the form on the right."
-msgstr ""
-"El correo o la contraseña son inválidos, por favor pruebe otra vez. O cree "
-"una nueva cuenta usando el formulario de la derecha."
+msgstr "El correo o la contraseña son inválidos, por favor pruebe otra vez. O cree una nueva cuenta usando el formulario de la derecha."
#: app/models/contact_validator.rb:34
msgid "Email doesn't look like a valid address"
@@ -1249,21 +1032,17 @@ msgstr "Recibir correos cuando haya nuevas peticiones"
msgid ""
"Enter words that you want to find separated by spaces, e.g. <strong>climbing"
" lane</strong>"
-msgstr ""
-"Introduzca las palabras que desee separadas por espacio, es decir "
-"<strong>parlamento gasto</strong>"
+msgstr "Introduzca las palabras que desee separadas por espacio, es decir <strong>parlamento gasto</strong>"
#: app/views/request/upload_response.rhtml:23
msgid ""
"Enter your response below. You may attach one file (use email, or \n"
"<a href=\"%s\">contact us</a> if you need more)."
-msgstr ""
-"Escriba su petición a continuación. Puede adjuntar un fichero (mande un correo,\n"
-" o <a href=\"%s\">contáctenos</a>, si necesita más)."
+msgstr "Escriba su solicitud a continuación. Puede adjuntar un fichero (mande un correo,\n o <a href=\"%s\">contáctenos</a>, si necesita más)."
#: app/models/info_request.rb:259 app/models/info_request.rb:277
msgid "Environmental Information Regulations"
-msgstr ""
+msgstr "ley de acceso a la información ambiental"
#: app/views/public_body/show.rhtml:116
msgid "Environmental Information Regulations requests made"
@@ -1290,20 +1069,14 @@ msgid ""
"Everything that you enter on this page \n"
" will be <strong>displayed publicly</strong> on\n"
" this website forever (<a href=\"%s\">why?</a>)."
-msgstr ""
-"Todo lo que escriba en esta página \n"
-" estará <strong>disponible públicamente</strong> en\n"
-" está web para siempre (<a href=\"%s\">¿por qué?</a>)."
+msgstr "Todo lo que escriba en esta página \n estará <strong>disponible públicamente</strong> en\n está web para siempre (<a href=\"%s\">¿por qué?</a>)."
#: app/views/request/new.rhtml:120
msgid ""
"Everything that you enter on this page, including <strong>your name</strong>, \n"
" will be <strong>displayed publicly</strong> on\n"
" this website forever (<a href=\"%s\">why?</a>)."
-msgstr ""
-"Todo lo que escriba en esta página, incluyendo <strong>su nombre</strong>, \n"
-" estará <strong>disponible públicamente</strong> en\n"
-" está web para siempre (<a href=\"%s\">¿por qué?</a>)."
+msgstr "Todo lo que escriba en esta página, incluyendo <strong>su nombre</strong>, \n estará <strong>disponible públicamente</strong> en\n está web para siempre (<a href=\"%s\">¿por qué?</a>)."
#: locale/model_attributes.rb:68
msgid "EximLogDone|Filename"
@@ -1323,7 +1096,7 @@ msgstr "EximLog|Order"
#: app/models/info_request.rb:266
msgid "FOI"
-msgstr ""
+msgstr "FOI"
#: app/views/public_body/view_email.rhtml:3
msgid "FOI email address for {{public_body}}"
@@ -1353,9 +1126,7 @@ msgstr "Error al convertir la imagen a PNG"
msgid ""
"Failed to convert image to the correct size: at %{cols}x%{rows}, need "
"%{width}x%{height}"
-msgstr ""
-"Error al convertir la imagen al tamaño adecuado: es %{cols}x%{rows}, debería"
-" ser %{width}x%{height}"
+msgstr "Error al convertir la imagen al tamaño adecuado: es %{cols}x%{rows}, debería ser %{width}x%{height}"
#: app/views/general/search.rhtml:117
msgid "Filter"
@@ -1366,35 +1137,35 @@ msgid ""
"First, type in the <strong>name of the UK public authority</strong> you'd \n"
" like information from. <strong>By law, they have to respond</strong>\n"
" (<a href=\"%s#%s\">why?</a>)."
-msgstr ""
+msgstr "Primero, escribe el <strong>nombre de la institución</strong> a la que quieres pedir información. <strong>Están obligados a responder</strong> (<a href=\"%s#%s\">¿por qué?</a>)."
#: locale/model_attributes.rb:88
msgid "FoiAttachment|Charset"
-msgstr ""
+msgstr "FoiAttachment|Charset"
#: locale/model_attributes.rb:86
msgid "FoiAttachment|Content type"
-msgstr ""
+msgstr "FoiAttachment|Content type"
#: locale/model_attributes.rb:89
msgid "FoiAttachment|Display size"
-msgstr ""
+msgstr "FoiAttachment|Display size"
#: locale/model_attributes.rb:87
msgid "FoiAttachment|Filename"
-msgstr ""
+msgstr "FoiAttachment|Filename"
#: locale/model_attributes.rb:92
msgid "FoiAttachment|Hexdigest"
-msgstr ""
+msgstr "FoiAttachment|Hexdigest"
#: locale/model_attributes.rb:90
msgid "FoiAttachment|Url part number"
-msgstr ""
+msgstr "FoiAttachment|Url part number"
#: locale/model_attributes.rb:91
msgid "FoiAttachment|Within rfc822 subject"
-msgstr ""
+msgstr "FoiAttachment|Within rfc822 subject"
#: app/views/track/_tracking_links.rhtml:21
msgid "Follow by email"
@@ -1410,7 +1181,7 @@ msgstr "Seguir a este organismo"
#: app/views/request_mailer/old_unclassified_updated.rhtml:4
msgid "Follow this link to see the request:"
-msgstr "Siga este enlace para ver la petición:"
+msgstr "Siga este enlace para ver la solicitud:"
#: app/views/request/_sidebar.rhtml:2
msgid "Follow this request"
@@ -1422,7 +1193,7 @@ msgstr "Seguimiento"
#: app/views/general/_advanced_search_tips.rhtml:43
msgid "Follow up message sent by requester"
-msgstr "Respuesta enviada por el creador de la petición"
+msgstr "Respuesta enviada por el creador de la solicitud"
#: app/views/public_body/view_email.rhtml:14
msgid "Follow up messages to existing requests are sent to "
@@ -1433,10 +1204,7 @@ msgid ""
"Follow ups and new responses to this request have been stopped to prevent "
"spam. Please <a href=\"{{url}}\">contact us</a> if you are {{user_link}} and"
" need to send a follow up."
-msgstr ""
-"Se han bloquedao nuevas respuestas a esta petición para prevenir spam. Por "
-"favor <a href=\"{{url}}\">contáctenos</a> si es usted {{user_link}} y "
-"necesita responder."
+msgstr "Se han bloqueado nuevas respuestas a esta solicitud para prevenir spam. Por favor <a href=\"{{url}}\">contáctenos</a> si es usted {{user_link}} y necesita responder."
#: app/views/general/blog.rhtml:7 app/views/general/_footer.rhtml:3
msgid "Follow us on twitter"
@@ -1446,8 +1214,7 @@ msgstr "Síguenos en Twitter"
msgid ""
"For an unknown reason, it is not possible to make a request to this "
"authority."
-msgstr ""
-"No es posible hacer una petición a este organismo, por motivos desconocidos."
+msgstr "No es posible hacer una solicitud a este organismo, por motivos desconocidos."
#: app/views/user/_signin.rhtml:21
msgid "Forgotten your password?"
@@ -1459,17 +1226,17 @@ msgstr "Encontrados {{count}} organismos públicos {{description}}"
#: app/models/info_request.rb:257
msgid "Freedom of Information"
-msgstr ""
+msgstr "Acceso a la Información"
#: app/models/info_request.rb:275
msgid "Freedom of Information Act"
-msgstr ""
+msgstr "Ley de Acceso a la Información"
#: app/views/public_body/show.rhtml:60
msgid ""
"Freedom of Information law does not apply to this authority, so you cannot make\n"
" a request to it."
-msgstr ""
+msgstr "La Ley de Acceso a la Información no es aplicable a este organismo, por lo que no puedes enviarle una solicitud de información."
#: app/views/request/followup_bad.rhtml:11
msgid "Freedom of Information law no longer applies to"
@@ -1479,9 +1246,7 @@ msgstr "La ley de acceso a la información ya no es aplicable a"
msgid ""
"Freedom of Information law no longer applies to this authority.Follow up "
"messages to existing requests are sent to "
-msgstr ""
-"La ley de acceso a la información ya no es aplicable a este organismo. Los "
-"mensajes de seguimiento de peticiones existentes se envían a "
+msgstr "La ley de acceso a la información ya no es aplicable a este organismo. Los mensajes de seguimiento de peticiones existentes se envían a "
#: app/views/public_body/show.rhtml:118
msgid "Freedom of Information requests made"
@@ -1508,10 +1273,7 @@ msgid ""
"From the request page, try replying to a particular message, rather than sending\n"
" a general followup. If you need to make a general followup, and know\n"
" an email which will go to the right place, please <a href=\"%s\">send it to us</a>."
-msgstr ""
-"Desde la página de la petición, intente responder a un mensaje en concreto, en vez de\n"
-" responder a la petición en general. Si necesita hacerlo y tiene una dirección de\n"
-" correo válida, por favor <a href=\"%s\">mándenosla</a>."
+msgstr "Desde la página de la solicitud, intente responder a un mensaje en concreto, en vez de\n responder a la solicitud en general. Si necesita hacerlo y tiene una dirección de\n correo válida, por favor <a href=\"%s\">mándenosla</a>."
#: app/views/request/_correspondence.rhtml:12
#: app/views/request/_correspondence.rhtml:36
@@ -1536,9 +1298,7 @@ msgstr "Resuelta por correo ordinario"
msgid ""
"Hello! You can make Freedom of Information requests within {{country_name}} "
"at {{link_to_website}}"
-msgstr ""
-"¡Hola! Puede hacer solicitudes de información en {{country_name}} usando "
-"{{link_to_website}}"
+msgstr "¡Hola! Puede hacer solicitudes de información en {{country_name}} usando {{link_to_website}}"
#: app/views/layouts/default.rhtml:102
msgid "Hello, {{username}}!"
@@ -1554,17 +1314,13 @@ msgid ""
"the most recent event had its status updated to that value. <strong>calculated</strong> is then inferred by\n"
"{{site_name}} for intermediate events, which weren't given an explicit\n"
"description by a user. See the <a href=\"{{search_path}}\">search tips</a> for description of the states."
-msgstr ""
-"Donde <strong>described</strong> significa que un usuario asignó el estado a la petición, y\n"
-"el evento más reciente ha sido actualizado con ese estado. <strong>calculated</strong> es inferido por\n"
-"{{site_name}} para los eventos intermedios, que no fueron descritos explícitamente por un usuario.\n"
-"Consulte los <a href=\"{{search_path}}\">consejos para búsquedas</a> para ver una descripción de los estados."
+msgstr "Donde <strong>described</strong> significa que un usuario asignó el estado a la solicitud, y\nel evento más reciente ha sido actualizado con ese estado. <strong>calculated</strong> es inferido por\n{{site_name}} para los eventos intermedios, que no fueron descritos explícitamente por un usuario.\nConsulte los <a href=\"{{search_path}}\">consejos para búsquedas</a> para ver una descripción de los estados."
#: app/views/user/rate_limited.rhtml:10
msgid ""
"Here is the message you wrote, in case you would like to copy the text and "
"save it for later."
-msgstr ""
+msgstr "Este es el mensaje que escribiste, por si quieres copiar el texto y guardarlo para luego."
#: app/views/request/_other_describe_state.rhtml:4
msgid ""
@@ -1572,10 +1328,7 @@ msgid ""
" hasn't told us whether or not it was successful. Would you mind taking\n"
" a moment to read it and help us keep the place tidy for everyone?\n"
" Thanks."
-msgstr ""
-"¡Hola! Necesitamos su ayuda. La persona que hizo la siguiente petición\n"
-" no nos ha dicho si tuvo o no éxito. ¿Le importaría invertir unos minutos\n"
-" en leerla y ayudarnos a clasificarla para el beneficio de todos? Gracias."
+msgstr "¡Hola! Necesitamos su ayuda. La persona que hizo la siguiente solicitud\n no nos ha dicho si tuvo o no éxito. ¿Le importaría invertir unos minutos\n en leerla y ayudarnos a clasificarla para el beneficio de todos? Gracias."
#: locale/model_attributes.rb:65
msgid "Holiday|Day"
@@ -1597,9 +1350,7 @@ msgstr "Sitio web del organismo"
msgid ""
"However, you have the right to request environmental\n"
" information under a different law"
-msgstr ""
-"En cambio, tiene derecho a solicitar información\n"
-" medioambiental bajo otra ley"
+msgstr "En cambio, tiene derecho a solicitar información\n medioambiental bajo otra ley"
#: app/views/request/new.rhtml:71
msgid "Human health and safety"
@@ -1623,15 +1374,13 @@ msgstr "Ya no quiero seguir clasificando"
#: app/views/request/_describe_state.rhtml:91
msgid "I would like to <strong>withdraw this request</strong>"
-msgstr "Me gustaría <strong>retirar esta petición</strong>"
+msgstr "Me gustaría <strong>retirar esta solicitud</strong>"
#: app/views/request/_describe_state.rhtml:11
msgid ""
"I'm still <strong>waiting</strong> for my information\n"
" <small>(maybe you got an acknowledgement)</small>"
-msgstr ""
-"Todavía estoy <strong>esperando</strong> por mi información\n"
-" <small>(puede que haya obtenido un acuse de recibo)</small>"
+msgstr "Todavía estoy <strong>esperando</strong> por mi información\n <small>(puede que haya obtenido un acuse de recibo)</small>"
#: app/views/request/_describe_state.rhtml:18
msgid "I'm still <strong>waiting</strong> for the internal review"
@@ -1639,12 +1388,11 @@ msgstr "Todavía estoy <strong>esperando</strong> por la revisión interna"
#: app/views/request/_describe_state.rhtml:32
msgid "I'm waiting for an <strong>internal review</strong> response"
-msgstr ""
-"Estoy esperando por una respuesta de la <strong>revisión interna</strong>"
+msgstr "Estoy esperando por una respuesta de la <strong>revisión interna</strong>"
#: app/views/request/_describe_state.rhtml:25
msgid "I've been asked to <strong>clarify</strong> my request"
-msgstr "Me han pedido que <strong>aclare</strong> mi petición"
+msgstr "Me han pedido que <strong>aclare</strong> mi solicitud"
#: app/views/request/_describe_state.rhtml:60
msgid "I've received <strong>all the information"
@@ -1662,29 +1410,21 @@ msgstr "He recibido un <strong>mensaje de error</strong>"
msgid ""
"If the address is wrong, or you know a better address, please <a "
"href=\"%s\">contact us</a>."
-msgstr ""
-"Si la dirección es incorrecta, o conoce una más actualizada, por favor <a "
-"href=\"%s\">contáctenos</a>."
+msgstr "Si la dirección es incorrecta, o conoce una más actualizada, por favor <a href=\"%s\">contáctenos</a>."
#: app/views/request_mailer/stopped_responses.rhtml:10
msgid ""
"If this is incorrect, or you would like to send a late response to the request\n"
"or an email on another subject to {{user}}, then please\n"
"email {{contact_email}} for help."
-msgstr ""
-"Si no es correcto, o le gustaría enviar una respuesta a la petición\n"
-"o un correo sobre otro tema a {{user}}, entonces por favor\n"
-"escriba a {{contact_email}} solicitando ayuda."
+msgstr "Si no es correcto, o le gustaría enviar una respuesta a la solicitud\no un correo sobre otro tema a {{user}}, entonces por favor\nescriba a {{contact_email}} solicitando ayuda."
#: app/views/request/_followup.rhtml:47
msgid ""
"If you are dissatisfied by the response you got from\n"
" the public authority, you have the right to\n"
" complain (<a href=\"%s\">details</a>)."
-msgstr ""
-"Si no está satisfecho con la respuesta que ha recibido del\n"
-" organismo público, tiene derecho a\n"
-" apelar (<a href=\"%s\">detalles</a>)."
+msgstr "Si no está satisfecho con la respuesta que ha recibido del\n organismo público, tiene derecho a\n apelar (<a href=\"%s\">detalles</a>)."
#: app/views/user/no_cookies.rhtml:20
msgid "If you are still having trouble, please <a href=\"%s\">contact us</a>."
@@ -1694,17 +1434,13 @@ msgstr "Si aún tiene problemas, por favor <a href=\"%s\">contáctenos</a>."
msgid ""
"If you are the requester, then you may <a href=\"%s\">sign in</a> to view "
"the request."
-msgstr ""
-"Si la petición es suya, puede <a href=\"%s\">abrir una sesión</a> para "
-"verla."
+msgstr "Si la solicitud es suya, puede <a href=\"%s\">abrir una sesión</a> para verla."
#: app/views/request/new.rhtml:123
msgid ""
"If you are thinking of using a pseudonym,\n"
" please <a href=\"%s\">read this first</a>."
-msgstr ""
-"Si está pensando en utilizar un pseudónimo,\n"
-" por favor <a href=\"%s\">lea esto primero</a>."
+msgstr "Si está pensando en utilizar un pseudónimo,\n por favor <a href=\"%s\">lea esto primero</a>."
#: app/views/request/show.rhtml:105
msgid "If you are {{user_link}}, please"
@@ -1715,61 +1451,45 @@ msgid ""
"If you can't click on it in the email, you'll have to <strong>select and copy\n"
"it</strong> from the email. Then <strong>paste it into your browser</strong>, into the place\n"
"you would type the address of any other webpage."
-msgstr ""
-"Si no puede hacer click en el enlace del correo, tendrá que <strong>seleccionarlo y copiarlo\n"
-"</strong> en el correo. A continuación, <strong>péguelo en su navegador</strong>, en el lugar\n"
-"dónde escribe la dirección de cualquier otra página web."
+msgstr "Si no puede hacer click en el enlace del correo, tendrá que <strong>seleccionarlo y copiarlo\n</strong> en el correo. A continuación, <strong>péguelo en su navegador</strong>, en el lugar\ndónde escribe la dirección de cualquier otra página web."
#: app/views/request/show_response.rhtml:47
msgid ""
"If you can, scan in or photograph the response, and <strong>send us\n"
" a copy to upload</strong>."
-msgstr ""
-"Si puede, escanee o haga una foto de la respuesta, y <strong>mándenos\n"
-" una copia para que la subamos</strong>."
+msgstr "Si puede, escanee o haga una foto de la respuesta, y <strong>mándenos\n una copia para que la subamos</strong>."
#: app/views/outgoing_mailer/_followup_footer.rhtml:4
msgid ""
"If you find this service useful as an FOI officer, please ask your web "
"manager to link to us from your organisation's FOI page."
-msgstr ""
-"Si encuentra este servicio útil como responsable de Acceso a la Información,"
-" pida al responsable de su web que añada un enlace a nuestra web."
+msgstr "Si encuentra este servicio útil como responsable de Acceso a la Información, pida al responsable de su web que añada un enlace a nuestra web."
#: app/views/user/bad_token.rhtml:13
msgid ""
"If you got the email <strong>more than six months ago</strong>, then this login link won't work any\n"
"more. Please try doing what you were doing from the beginning."
-msgstr ""
-"Si recibió el correo <strong>hace más de seis meses</strong>, entonces el enlace ya no funcionará.\n"
-"Por favor intente hacer lo que estaba haciendo inicialmente."
+msgstr "Si recibió el correo <strong>hace más de seis meses</strong>, entonces el enlace ya no funcionará.\nPor favor intente hacer lo que estaba haciendo inicialmente."
#: app/controllers/request_controller.rb:479
msgid ""
"If you have not done so already, please write a message below telling the "
"authority that you have withdrawn your request. Otherwise they will not know"
" it has been withdrawn."
-msgstr ""
-"Si no lo ha hecho ya, por favor escriba un mensaje a continuación informando"
-" al organismo público de que ha retirado su petición. De lo contrario no "
-"sabrá que lo ha hecho."
+msgstr "Si no lo ha hecho ya, por favor escriba un mensaje a continuación informando al organismo público de que ha retirado su solicitud. De lo contrario no sabrá que lo ha hecho."
#: app/views/user/signchangepassword_confirm.rhtml:10
#: app/views/user/signchangeemail_confirm.rhtml:11
msgid ""
"If you use web-based email or have \"junk mail\" filters, also check your\n"
"bulk/spam mail folders. Sometimes, our messages are marked that way."
-msgstr ""
-"Si usa correo web o tiene filtros \"anti spam\", por favor compruebe\n"
-"sus carpetas de spam. A veces, nuestros mensajes se marcan así por error."
+msgstr "Si usa correo web o tiene filtros \"anti spam\", por favor compruebe\nsus carpetas de spam. A veces, nuestros mensajes se marcan así por error."
#: app/views/user/banned.rhtml:15
msgid ""
"If you would like us to lift this ban, then you may politely\n"
"<a href=\"/help/contact\">contact us</a> giving reasons.\n"
-msgstr ""
-"Si quiere eliminar el bloqueo, entonces puede <a href=\"/help/contact\">contactarnos</a>\n"
-" explicándonos sus razones.\n"
+msgstr "Si quiere eliminar el bloqueo, entonces puede <a href=\"/help/contact\">contactarnos</a>\n explicándonos sus razones.\n"
#: app/views/user/_signup.rhtml:6
msgid "If you're new to {{site_name}}"
@@ -1783,9 +1503,7 @@ msgstr "Si ha usado {{site_name}} antes"
msgid ""
"If your browser is set to accept cookies and you are seeing this message,\n"
"then there is probably a fault with our server."
-msgstr ""
-"Si su navegador acepta cookies y está viendo este mensaje,\n"
-"puede que haya un problema en nuestro servidor."
+msgstr "Si su navegador acepta cookies y está viendo este mensaje,\npuede que haya un problema en nuestro servidor."
#: locale/model_attributes.rb:55
msgid "IncomingMessage|Cached attachment text clipped"
@@ -1801,11 +1519,11 @@ msgstr "IncomingMessage|Cached main body text unfolded"
#: locale/model_attributes.rb:61
msgid "IncomingMessage|Last parsed"
-msgstr ""
+msgstr "IncomingMessage|Last parsed"
#: locale/model_attributes.rb:62
msgid "IncomingMessage|Mail from"
-msgstr ""
+msgstr "IncomingMessage|Mail from"
#: locale/model_attributes.rb:59
msgid "IncomingMessage|Mail from domain"
@@ -1891,32 +1609,24 @@ msgstr "Información no disponible."
msgid ""
"Information on emissions and discharges (e.g. noise, energy,\n"
" radiation, waste materials)"
-msgstr ""
-"Información sobre emisiones (por ejemplo ruido, energía,\n"
-" radiación, materiales de desecho...)"
+msgstr "Información sobre emisiones (por ejemplo ruido, energía,\n radiación, materiales de desecho...)"
#: app/models/info_request_event.rb:348
msgid "Internal review request"
-msgstr "Petición de revisión interna"
+msgstr "Solicitud de revisión interna"
#: app/views/outgoing_mailer/initial_request.rhtml:8
msgid ""
"Is {{email_address}} the wrong address for {{type_of_request}} requests to "
"{{public_body_name}}? If so, please contact us using this form:"
-msgstr ""
-"¿Es {{email_address}} la dirección incorrecta para peticiones "
-"{{type_of_request}} a {{public_body_name}}? Si es así, por favor contáctenos"
-" usando el siguiente formulario:"
+msgstr "¿Es {{email_address}} la dirección incorrecta para peticiones {{type_of_request}} a {{public_body_name}}? Si es así, por favor contáctenos usando el siguiente formulario:"
#: app/views/user/no_cookies.rhtml:8
msgid ""
"It may be that your browser is not set to accept a thing called \"cookies\",\n"
"or cannot do so. If you can, please enable cookies, or try using a different\n"
"browser. Then press refresh to have another go."
-msgstr ""
-"Puede que su navegador esté configurado para no aceptar lo que se conoce como \"cookies\",\n"
-"o que no pueda hacerlo. Si sabe cómo, por favor permita las \"cookies\", o use un navegador\n"
-"distinto. Entonces vuelva a visitar la página para volver a intentarlo."
+msgstr "Puede que su navegador esté configurado para no aceptar lo que se conoce como \"cookies\",\no que no pueda hacerlo. Si sabe cómo, por favor permita las \"cookies\", o use un navegador\ndistinto. Entonces vuelva a visitar la página para volver a intentarlo."
#: app/views/user/_user_listing_single.rhtml:21
msgid "Joined in"
@@ -1930,9 +1640,7 @@ msgstr "Registrado en {{site_name}} el"
msgid ""
"Keep it <strong>focused</strong>, you'll be more likely to get what you want"
" (<a href=\"%s\">why?</a>)."
-msgstr ""
-"Sea <strong>específico</strong>, tendrá más probabilidades de conseguir lo "
-"que quiere (<a href=\"%s\">¿por qué?</a>)."
+msgstr "Sea <strong>específico</strong>, tendrá más probabilidades de conseguir lo que quiere (<a href=\"%s\">¿por qué?</a>)."
#: app/views/request/_request_filter_form.rhtml:6
msgid "Keywords"
@@ -1948,16 +1656,13 @@ msgstr "Ultimo organismo visitado: "
#: app/views/contact_mailer/message.rhtml:7
msgid "Last request viewed: "
-msgstr "Última petición vista: "
+msgstr "Última solicitud vista: "
#: app/views/user/no_cookies.rhtml:17
msgid ""
"Let us know what you were doing when this message\n"
"appeared and your browser and operating system type and version."
-msgstr ""
-"Háganos saber que estaba haciendo cuando apareció\n"
-"este mensaje, así como el nombre y versión de su navegador y\n"
-"sistema operativo."
+msgstr "Háganos saber que estaba haciendo cuando apareció\neste mensaje, así como el nombre y versión de su navegador y\nsistema operativo."
#: app/views/request/_correspondence.rhtml:26
#: app/views/request/_correspondence.rhtml:54
@@ -1970,8 +1675,7 @@ msgstr "Lista de todos los organismos (CSV)"
#: app/controllers/request_controller.rb:816
msgid "Log in to download a zip file of {{info_request_title}}"
-msgstr ""
-"Abra una sesión para descargar el fichero ZIP de {{info_request_title}}"
+msgstr "Abra una sesión para descargar el fichero ZIP de {{info_request_title}}"
#: app/models/info_request.rb:785
msgid "Long overdue."
@@ -1984,15 +1688,13 @@ msgstr "Realizadas entre"
#: app/views/public_body/show.rhtml:52
msgid "Make a new <strong>Environmental Information</strong> request"
-msgstr ""
-"Envíe una nueva <strong>solicitud de información medioambiental</strong>"
+msgstr "Envíe una nueva <strong>solicitud de información medioambiental</strong>"
#: app/views/public_body/show.rhtml:54
msgid ""
"Make a new <strong>Freedom of Information</strong> request to "
"{{public_body}}"
-msgstr ""
-"Hacer una nueva <strong>solicitud de información</strong> a {{public_body}}"
+msgstr "Hacer una nueva <strong>solicitud de información</strong> a {{public_body}}"
#: app/views/general/frontpage.rhtml:5
msgid ""
@@ -2000,10 +1702,7 @@ msgid ""
" <strong>Freedom <span>of</span><br/>\n"
" Information<br/>\n"
" request</strong>"
-msgstr ""
-"Envíe una nueva<br/>\n"
-" <strong>Solicitud <span>de</span><br/>\n"
-" información</strong>"
+msgstr "Envíe una nueva<br/>\n <strong>Solicitud <span>de</span><br/>\n información</strong>"
#: app/views/general/_topnav.rhtml:4
msgid "Make a request"
@@ -2011,15 +1710,15 @@ msgstr "Enviar solicitud"
#: app/views/request/new.rhtml:20
msgid "Make an {{law_used_short}} request to '{{public_body_name}}'"
-msgstr "Hacer una petición {{law_used_short}} a '{{public_body_name}}'"
+msgstr "Hacer una solicitud {{law_used_short}} a '{{public_body_name}}'"
#: app/views/layouts/default.rhtml:8 app/views/layouts/no_chrome.rhtml:8
msgid "Make and browse Freedom of Information (FOI) requests"
-msgstr "Realiza una petición de información o mira las ya realizadas"
+msgstr "Realiza una solicitud de información o mira las ya realizadas"
#: app/views/public_body/_body_listing_single.rhtml:23
msgid "Make your own request"
-msgstr "Hacer mi propia petición"
+msgstr "Hacer mi propia solicitud"
#: app/views/contact_mailer/message.rhtml:4
msgid "Message sent using {{site_name}} contact form, "
@@ -2047,11 +1746,11 @@ msgstr "Mi perfil"
#: app/views/request/_describe_state.rhtml:64
msgid "My request has been <strong>refused</strong>"
-msgstr "Mi petición ha sido <strong>rechazada</strong>"
+msgstr "Mi solicitud ha sido <strong>rechazada</strong>"
#: app/views/layouts/default.rhtml:105
msgid "My requests"
-msgstr ""
+msgstr "Mis solicitudes."
#: app/models/public_body.rb:36
msgid "Name can't be blank"
@@ -2091,11 +1790,11 @@ msgstr "Nueva respuesta a tu solicitud de información - "
#: app/views/request/show_response.rhtml:60
msgid "New response to your request"
-msgstr "Nueva respuesta a su petición"
+msgstr "Nueva respuesta a su solicitud"
#: app/views/request/show_response.rhtml:66
msgid "New response to {{law_used_short}} request"
-msgstr "Nueva respuesta a su petición {{law_used_short}}"
+msgstr "Nueva respuesta a su solicitud {{law_used_short}}"
#: app/models/track_thing.rb:198 app/models/track_thing.rb:199
msgid "New updates for the request '{{request_title}}'"
@@ -2130,9 +1829,7 @@ msgstr "No se han encontrado peticiones similares."
msgid ""
"Nobody has made any Freedom of Information requests to {{public_body_name}} "
"using this site yet."
-msgstr ""
-"Nadie ha realizado todavía una petición de información a "
-"{{public_body_name}} usando esta web."
+msgstr "Nadie ha realizado todavía una solicitud de información a {{public_body_name}} usando esta web."
#: app/views/request/_request_listing.rhtml:2
#: app/views/public_body/_body_listing.rhtml:3
@@ -2168,9 +1865,7 @@ msgstr "O borre la foto actual"
#: app/controllers/request_controller.rb:456
msgid ""
"Oh no! Sorry to hear that your request was refused. Here is what to do now."
-msgstr ""
-"¡Oh no! Sentimos oir que su petición ha sido rechazada. Esto es lo que puede"
-" hacer ahora."
+msgstr "¡Oh no! Sentimos oir que su solicitud ha sido rechazada. Esto es lo que puede hacer ahora."
#: app/views/user/signchangeemail.rhtml:15
msgid "Old e-mail:"
@@ -2180,8 +1875,7 @@ msgstr "Correo antiguo:"
msgid ""
"Old email address isn't the same as the address of the account you are "
"logged in with"
-msgstr ""
-"La dirección de correo antiguo no es con la que ha abierto su sesión actual"
+msgstr "La dirección de correo antiguo no es con la que ha abierto su sesión actual"
#: app/models/change_email_validator.rb:40
msgid "Old email doesn't look like a valid address"
@@ -2211,17 +1905,13 @@ msgstr "Sólo se muestran las peticiones realizadas con {{site_name}}."
msgid ""
"Only the authority can reply to this request, and I don't recognise the "
"address this reply was sent from"
-msgstr ""
-"Sólo el organismo puede responder a esta petición, y no reconozco la "
-"dirección desde la que se mandó esta respuesta"
+msgstr "Sólo el organismo puede responder a esta solicitud, y no reconozco la dirección desde la que se mandó esta respuesta"
#: app/models/info_request.rb:395
msgid ""
"Only the authority can reply to this request, but there is no \"From\" "
"address to check against"
-msgstr ""
-"Sólo el organismo puede responder a esta petición, pero no hay un campo "
-"\"From\" contra el que comparar"
+msgstr "Sólo el organismo puede responder a esta solicitud, pero no hay un campo \"From\" contra el que comparar"
#: app/views/request/_search_ahead.rhtml:11
msgid "Or search in their website for this information."
@@ -2229,7 +1919,7 @@ msgstr "O busque esta información en su web."
#: app/views/general/_advanced_search_tips.rhtml:42
msgid "Original request sent"
-msgstr "Petición original enviada"
+msgstr "Solicitud original enviada"
#: app/views/request/_describe_state.rhtml:71
msgid "Other:"
@@ -2301,24 +1991,18 @@ msgstr "Por favor"
#: app/views/user/no_cookies.rhtml:15
msgid "Please <a href=\"%s\">get in touch</a> with us so we can fix it."
-msgstr ""
-"Por favor <a href=\"%s\">contacte</a> con nosotros para que podamos "
-"arreglarlo."
+msgstr "Por favor <a href=\"%s\">contacte</a> con nosotros para que podamos arreglarlo."
#: app/views/request/show.rhtml:52
msgid ""
"Please <strong>answer the question above</strong> so we know whether the "
-msgstr ""
-"Por favor <strong>responda la pregunta anterior</strong> para que sepamos si"
-" "
+msgstr "Por favor <strong>responda la pregunta anterior</strong> para que sepamos si "
#: app/views/user/show.rhtml:16
msgid ""
"Please <strong>go to the following requests</strong>, and let us\n"
" know if there was information in the recent responses to them."
-msgstr ""
-"Por favor <strong>vaya a la siguiente petición</strong>, y háganos\n"
-" saber si había información en las últimas respuestas recibidas."
+msgstr "Por favor <strong>vaya a la siguiente solicitud</strong>, y háganos\n saber si había información en las últimas respuestas recibidas."
#: app/views/request/_followup.rhtml:54
msgid ""
@@ -2326,11 +2010,7 @@ msgid ""
"request {{request_link}}. If you would like to ask for information that was "
"not in your original request, then <a href=\"{{new_request_link}}\">file a "
"new request</a>."
-msgstr ""
-"Por favor escriba <strong>sólo</strong> mensajes directamente relacionados "
-"con su petición {{request_link}}. Si quiere pedir información que no estaba "
-"en su petición original, entonces <a href=\"{{new_request_link}}\">envíe una"
-" nueva petición</a>."
+msgstr "Por favor escriba <strong>sólo</strong> mensajes directamente relacionados con su solicitud {{request_link}}. Si quiere pedir información que no estaba en su solicitud original, entonces <a href=\"{{new_request_link}}\">envíe una nueva</a>."
#: app/views/request/new.rhtml:58
msgid "Please ask for environmental information only"
@@ -2340,9 +2020,7 @@ msgstr "Por favor pida información medio-ambiental solamente"
msgid ""
"Please check the URL (i.e. the long code of letters and numbers) is copied\n"
"correctly from your email."
-msgstr ""
-"Por favor compruebe que ha copiado correctamente la URL (esto es, la secuencia\n"
-"de letras y números) del correo."
+msgstr "Por favor compruebe que ha copiado correctamente la URL (esto es, la secuencia\nde letras y números) del correo."
#: app/models/profile_photo.rb:91
msgid "Please choose a file containing your photo."
@@ -2360,40 +2038,30 @@ msgstr "Por favor indique si ha recibido o no la información que quería."
#: app/views/track_mailer/event_digest.rhtml:63
msgid "Please click on the link below to cancel or alter these emails."
-msgstr ""
-"Por favor use el siguiente enlace para cancelar o editar estos correos."
+msgstr "Por favor use el siguiente enlace para cancelar o editar estos correos."
#: app/views/user_mailer/changeemail_confirm.rhtml:3
msgid ""
"Please click on the link below to confirm that you want to \n"
"change the email address that you use for {{site_name}}\n"
"from {{old_email}} to {{new_email}}"
-msgstr ""
-"Por favor pulse en el siguiente enlace para confirmar que quiere \n"
-"cambiar la dirección de correo que utiliza en {{site_name}}\n"
-"de {{old_email}} a {{new_email}}"
+msgstr "Por favor pulse en el siguiente enlace para confirmar que quiere \ncambiar la dirección de correo que utiliza en {{site_name}}\nde {{old_email}} a {{new_email}}"
#: app/views/user_mailer/confirm_login.rhtml:3
msgid "Please click on the link below to confirm your email address."
-msgstr ""
-"Por favor seleccione el siguiente enlace para confirmar su dirección de "
-"correo."
+msgstr "Por favor seleccione el siguiente enlace para confirmar su dirección de correo."
#: app/models/info_request.rb:120
msgid ""
"Please describe more what the request is about in the subject. There is no "
"need to say it is an FOI request, we add that on anyway."
-msgstr ""
-"Por favor, describa mejor el tema de su petición en el asunto. Por cierto, "
-"no hace falta decir que es una petición FOI, ya lo añadimos nosotros."
+msgstr "Por favor, describa mejor el tema de su solicitud en el asunto. Por cierto, no hace falta decir que es una solicitud de información, ya lo añadimos nosotros."
#: app/views/user/set_draft_profile_photo.rhtml:22
msgid ""
"Please don't upload offensive pictures. We will take down images\n"
" that we consider inappropriate."
-msgstr ""
-"Por favor no suba imágenes ofensivas. Eliminaremos cualquier imagen\n"
-" que consideremos inapropiada."
+msgstr "Por favor no suba imágenes ofensivas. Eliminaremos cualquier imagen\n que consideremos inapropiada."
#: app/views/user/no_cookies.rhtml:3
msgid "Please enable \"cookies\" to carry on"
@@ -2409,7 +2077,7 @@ msgstr "Por favor, introduzca un asunto"
#: app/models/info_request.rb:28
msgid "Please enter a summary of your request"
-msgstr "Por favor, introduzca un resumen de su petición"
+msgstr "Por favor, introduzca un resumen de su solicitud"
#: app/models/user.rb:120
msgid "Please enter a valid email address"
@@ -2437,7 +2105,7 @@ msgstr "Por favor, introduzca su mensaje"
#: app/models/outgoing_message.rb:151
msgid "Please enter your letter requesting information"
-msgstr "Por favor, introduzca su petición de información"
+msgstr "Por favor, introduzca su solicitud de información"
#: app/models/contact_validator.rb:28 app/models/user.rb:40
msgid "Please enter your name"
@@ -2445,9 +2113,7 @@ msgstr "Por favor, introduzca su nombre"
#: app/models/user.rb:123
msgid "Please enter your name, not your email address, in the name field."
-msgstr ""
-"Por favor, introduzca su nombre - no su dirección de correo - en el campo "
-"para el nombre"
+msgstr "Por favor, introduzca su nombre - no su dirección de correo - en el campo para el nombre"
#: app/models/change_email_validator.rb:31
msgid "Please enter your new email address"
@@ -2473,34 +2139,25 @@ msgstr "Por favor, limite tu mensaje a 500 carácteres"
msgid ""
"Please keep the summary short, like in the subject of an email. You can use "
"a phrase, rather than a full sentence."
-msgstr ""
-"Por favor, mantenga el resumen corto, como en el asunto de un correo "
-"electrónico"
+msgstr "Por favor, mantenga el resumen corto, como en el asunto de un correo electrónico"
#: app/views/request/new.rhtml:77
msgid ""
"Please only request information that comes under those categories, <strong>do not waste your\n"
" time</strong> or the time of the public authority by requesting unrelated information."
-msgstr ""
-"Por favor, pida información sólo de estas categorias, <strong>no pierda su "
-"tiempo </strong> o el del organismo público pidiendo información no "
-"relacionada."
+msgstr "Por favor, pida información sólo de estas categorias, <strong>no pierda su tiempo </strong> o el del organismo público pidiendo información no relacionada."
#: app/views/request/new_please_describe.rhtml:5
msgid ""
"Please select each of these requests in turn, and <strong>let everyone know</strong>\n"
"if they are successful yet or not."
-msgstr ""
-"Por favor elija estas peticiones una a una, y <strong>haz que se sepa</strong>\n"
-"si han tenido éxito o no."
+msgstr "Por favor elija estas peticiones una a una, y <strong>haz que se sepa</strong>\nsi han tenido éxito o no."
#: app/models/outgoing_message.rb:157
msgid ""
"Please sign at the bottom with your name, or alter the \"%{signoff}\" "
"signature"
-msgstr ""
-"Por favor, firme con su nombre en la parte inferior, o cambia la firma "
-"\"%{signoff}\""
+msgstr "Por favor, firme con su nombre en la parte inferior, o cambia la firma \"%{signoff}\""
#: app/views/user/sign.rhtml:8
msgid "Please sign in as "
@@ -2508,8 +2165,7 @@ msgstr "Por favor abre una sesión como "
#: app/controllers/request_controller.rb:785
msgid "Please type a message and/or choose a file containing your response."
-msgstr ""
-"Por favor escriba un mensaje y/o escoja un fichero conteniendo su respuesta."
+msgstr "Por favor escriba un mensaje y/o escoja un fichero conteniendo su respuesta."
#: app/controllers/request_controller.rb:476
msgid "Please use the form below to tell us more."
@@ -2518,9 +2174,7 @@ msgstr "Por favor use el formulario a continuación para decirnos más."
#: app/views/outgoing_mailer/initial_request.rhtml:5
#: app/views/outgoing_mailer/followup.rhtml:6
msgid "Please use this email address for all replies to this request:"
-msgstr ""
-"Por favor use la siguiente dirección de correo para todas las respuestas a "
-"esta petición:"
+msgstr "Por favor use la siguiente dirección de correo para todas las respuestas a esta solicitud:"
#: app/models/info_request.rb:29
msgid "Please write a summary with some text in it"
@@ -2530,41 +2184,31 @@ msgstr "Por favor, escriba un resumen que no esté vacío"
msgid ""
"Please write the summary using a mixture of capital and lower case letters. "
"This makes it easier for others to read."
-msgstr ""
-"Por favor, escriba el resumen usando letras mayúsculas y minúsculas para "
-"facilitar su lectura"
+msgstr "Por favor, escriba el resumen usando letras mayúsculas y minúsculas para facilitar su lectura"
#: app/models/comment.rb:63
msgid ""
"Please write your annotation using a mixture of capital and lower case "
"letters. This makes it easier for others to read."
-msgstr ""
-"Por favor, escriba su comentario usando letras mayúsculas y minúsculas para "
-"facilitar su lectura"
+msgstr "Por favor, escriba su comentario usando letras mayúsculas y minúsculas para facilitar su lectura"
#: app/controllers/request_controller.rb:465
msgid ""
"Please write your follow up message containing the necessary clarifications "
"below."
-msgstr ""
-"Por favor escriba su mensaje conteniendo las aclaraciones necesarias a "
-"continuación."
+msgstr "Por favor escriba su mensaje conteniendo las aclaraciones necesarias a continuación."
#: app/models/outgoing_message.rb:160
msgid ""
"Please write your message using a mixture of capital and lower case letters."
" This makes it easier for others to read."
-msgstr ""
-"Por favor, escriba su mensaje usando letras mayúsculas y minúsculas para "
-"facilitar su lectura"
+msgstr "Por favor, escriba su mensaje usando letras mayúsculas y minúsculas para facilitar su lectura"
#: app/views/comment/new.rhtml:42
msgid ""
"Point to <strong>related information</strong>, campaigns or forums which may"
" be useful."
-msgstr ""
-"Haga referencia a <strong>información relacionada</strong>, campañas o foros"
-" que puedan ser útiles."
+msgstr "Haga referencia a <strong>información relacionada</strong>, campañas o foros que puedan ser útiles."
#: app/views/request/_search_ahead.rhtml:4
msgid "Possibly related requests:"
@@ -2628,7 +2272,7 @@ msgstr "Revise su mensaje"
#: app/views/request/new.rhtml:143
msgid "Preview your public request"
-msgstr "Revise su petición pública"
+msgstr "Revise su solicitud pública"
#: locale/model_attributes.rb:15
msgid "ProfilePhoto|Data"
@@ -2648,8 +2292,7 @@ msgstr "Organismos públicos - {{description}}"
#: app/views/general/search.rhtml:154
msgid "Public authorities {{start_count}} to {{end_count}} of {{total_count}}"
-msgstr ""
-"Organismos públicos {{start_count}} a {{end_count}} de {{total_count}}"
+msgstr "Organismos públicos {{start_count}} a {{end_count}} de {{total_count}}"
#: locale/model_attributes.rb:12
msgid "PublicBody|First letter"
@@ -2719,9 +2362,7 @@ msgstr "Editar este mensaje"
msgid ""
"Read about <a href=\"{{advanced_search_url}}\">advanced search "
"operators</a>, such as proximity and wildcards."
-msgstr ""
-"Lea más sobre <a href=\"{{advanced_search_url}}\">operadores avanzados de "
-"búsqueda</a>, como indicadores de proximidad y comodines."
+msgstr "Lea más sobre <a href=\"{{advanced_search_url}}\">operadores avanzados de búsqueda</a>, como indicadores de proximidad y comodines."
#: app/views/general/_topnav.rhtml:7
msgid "Read blog"
@@ -2729,8 +2370,7 @@ msgstr "Leer el blog"
#: app/views/general/_advanced_search_tips.rhtml:34
msgid "Received an error message, such as delivery failure."
-msgstr ""
-"Se ha recibido un mensaje de error, como fallo al entregar el mensaje."
+msgstr "Se ha recibido un mensaje de error, como fallo al entregar el mensaje."
#: app/views/general/search.rhtml:129
msgid "Recently described results first"
@@ -2744,9 +2384,7 @@ msgstr "Rechazada."
msgid ""
"Remember me</label> (keeps you signed in longer;\n"
" do not use on a public computer) "
-msgstr ""
-"Recuérdame</label> (mantiene la sesión abierta;\n"
-" no lo use en un ordenador público) "
+msgstr "Recuérdame</label> (mantiene la sesión abierta;\n no lo use en un ordenador público) "
#: app/views/comment/_single_comment.rhtml:24
msgid "Report abuse"
@@ -2762,27 +2400,23 @@ msgstr "Pedir una revisión interna a {{person_or_body}}"
#: app/views/request/hidden.rhtml:1
msgid "Request has been removed"
-msgstr "La petición ha sido eliminada"
+msgstr "La solicitud ha sido eliminada"
#: app/views/request/_request_listing_via_event.rhtml:20
msgid ""
"Request sent to {{public_body_name}} by {{info_request_user}} on {{date}}."
-msgstr ""
-"Petición enviada a {{public_body_name}} por {{info_request_user}} el "
-"{{date}}."
+msgstr "Solicitud enviada a {{public_body_name}} por {{info_request_user}} el {{date}}."
#: app/views/request/_request_listing_via_event.rhtml:28
msgid ""
"Request to {{public_body_name}} by {{info_request_user}}. Annotated by "
"{{event_comment_user}} on {{date}}."
-msgstr ""
-"Petición a {{public_body_name}} por {{info_request_user}}. Comentada por "
-"{{event_comment_user}} el {{date}}."
+msgstr "Solicitud a {{public_body_name}} por {{info_request_user}}. Comentada por {{event_comment_user}} el {{date}}."
#: app/views/request/_request_listing_single.rhtml:12
msgid ""
"Requested from {{public_body_name}} by {{info_request_user}} on {{date}}"
-msgstr "Petición a {{public_body_name}} de {{info_request_user}} el {{date}}"
+msgstr "Solicitud a {{public_body_name}} de {{info_request_user}} el {{date}}"
#: app/views/request/_sidebar_request_listing.rhtml:13
msgid "Requested on {{date}}"
@@ -2798,11 +2432,11 @@ msgstr "Contestar por correo"
#: app/views/request/_after_actions.rhtml:48
msgid "Respond to request"
-msgstr "Contestar la petición"
+msgstr "Contestar la solicitud"
#: app/views/request/upload_response.rhtml:5
msgid "Respond to the FOI request"
-msgstr "Contestar la petición"
+msgstr "Contestar la solicitud"
#: app/views/request/upload_response.rhtml:21
msgid "Respond using the web"
@@ -2818,15 +2452,15 @@ msgstr "Respuesta de un organismo público"
#: app/views/request/show.rhtml:77
msgid "Response to this request is <strong>delayed</strong>."
-msgstr "La respuesta a esta petición está <strong>retrasada</strong>."
+msgstr "La respuesta a esta solicitud está <strong>retrasada</strong>."
#: app/views/request/show.rhtml:85
msgid "Response to this request is <strong>long overdue</strong>."
-msgstr "La respuesta a esta petición está <strong>muy retrasada</strong>."
+msgstr "La respuesta a esta solicitud está <strong>muy retrasada</strong>."
#: app/views/request/show_response.rhtml:62
msgid "Response to your request"
-msgstr "Respuesta a su petición"
+msgstr "Respuesta a su solicitud"
#: app/views/request/upload_response.rhtml:28
msgid "Response:"
@@ -2874,10 +2508,7 @@ msgid ""
"Search over<br/>\n"
" <strong>{{number_of_requests}} requests</strong> <span>and</span><br/>\n"
" <strong>{{number_of_authorities}} authorities</strong>"
-msgstr ""
-"Busque entre<br/>\n"
-" <strong>{{number_of_requests}} solicitudes</strong> <span>y</span><br/>\n"
-" <strong>{{number_of_authorities}} organismos</strong>"
+msgstr "Busque entre<br/>\n <strong>{{number_of_requests}} solicitudes</strong> <span>y</span><br/>\n <strong>{{number_of_authorities}} organismos</strong>"
#: app/views/general/search.rhtml:19
msgid "Search results"
@@ -2998,11 +2629,7 @@ msgid ""
"successful or not. We need <strong>your</strong> help &ndash;\n"
"choose one of these requests, read it, and let everyone know whether or not the\n"
"information has been provided. Everyone'll be exceedingly grateful."
-msgstr ""
-"Algunas personas que hicieron peticiones no nos han hecho saber si tuvieron\n"
-"éxito o no. Necesitamos <strong>su</strong> ayuda &ndash;\n"
-"elija una de las peticiones, léala, y háganos saber si se ha obtenido o no\n"
-"la información. Todos le estaremos agradecidos.."
+msgstr "Algunas personas que hicieron peticiones no nos han hecho saber si tuvieron\néxito o no. Necesitamos <strong>su</strong> ayuda &ndash;\nelija una de las peticiones, léala, y háganos saber si se ha obtenido o no\nla información. Todos le estaremos agradecidos.."
#: app/models/request_mailer.rb:169
msgid "Somebody added a note to your FOI request - "
@@ -3012,9 +2639,7 @@ msgstr "Nuevo comentario en tu solicitud de acceso a información - "
msgid ""
"Someone, perhaps you, just tried to change their email address on\n"
"{{site_name}} from {{old_email}} to {{new_email}}."
-msgstr ""
-"Alguien, tal vez usted, acaba de intentar cambiar su dirección de correo en\n"
-"{{site_name}} de {{old_email}} a {{new_email}}."
+msgstr "Alguien, tal vez usted, acaba de intentar cambiar su dirección de correo en\n{{site_name}} de {{old_email}} a {{new_email}}."
#: app/views/user/wrong_user.rhtml:2
msgid "Sorry, but only {{user_name}} is allowed to do that."
@@ -3081,9 +2706,7 @@ msgstr "Exitosa."
msgid ""
"Suggest how the requester can find the <strong>rest of the "
"information</strong>."
-msgstr ""
-"Sugerir al creador de la petición cómo puede encontrar el <strong>resto de "
-"la información</strong>."
+msgstr "Sugerir al creador de la solicitud cómo puede encontrar el <strong>resto de la información</strong>."
#: app/views/request/new.rhtml:84
msgid "Summary:"
@@ -3121,23 +2744,18 @@ msgstr "¡Gracias por hacer un comentario!"
msgid ""
"Thank you for responding to this FOI request! Your response has been "
"published below, and a link to your response has been emailed to "
-msgstr ""
-"¡Gracias por responder a esta petición de información! Su respuesta ha sido "
-"publicada a continuación, y un enlace a su respuesta ha sido enviada a "
+msgstr "¡Gracias por responder a esta solicitud de información! Su respuesta ha sido publicada a continuación, y un enlace a su respuesta ha sido enviada a "
#: app/controllers/request_controller.rb:420
msgid ""
"Thank you for updating the status of the request '<a "
"href=\"{{url}}\">{{info_request_title}}</a>'. There are some more requests "
"below for you to classify."
-msgstr ""
-"Gracias por actualizar el estado de la petición '<a "
-"href=\"{{url}}\">{{info_request_title}}</a>'. A continuación le mostramos "
-"algunas peticiones más que puede clasificar."
+msgstr "Gracias por actualizar el estado de la solicitud '<a href=\"{{url}}\">{{info_request_title}}</a>'. A continuación le mostramos algunas solicitudes más que puede clasificar."
#: app/controllers/request_controller.rb:423
msgid "Thank you for updating this request!"
-msgstr "¡Gracias por actualizar esta petición!"
+msgstr "¡Gracias por actualizar esta solicitud!"
#: app/controllers/user_controller.rb:432
#: app/controllers/user_controller.rb:448
@@ -3148,37 +2766,27 @@ msgstr "Gracias por actualizar su foto de perfil"
msgid ""
"Thanks for helping - your work will make it easier for everyone to find successful\n"
"responses, and maybe even let us make league tables..."
-msgstr ""
-"Gracias por ayudar - su trabajo hace más sencillo que otros encuentren peticiones\n"
-"que han tenido éxito, e incluso nos permitirá hacer clasificaciones..."
+msgstr "Gracias por ayudar - su trabajo hace más sencillo que otros encuentren peticiones\nque han tenido éxito, e incluso nos permitirá hacer clasificaciones..."
#: app/views/user/show.rhtml:24
msgid ""
"Thanks very much - this will help others find useful stuff. We'll\n"
" also, if you need it, give advice on what to do next about your\n"
" requests."
-msgstr ""
-"Muchas gracias - esto ayudará a otros a encontrar información útil.\n"
-" Nosotros también, si lo necesita, ofrecemos consejos sobre qué\n"
-" hacer a continuación con sus peticiones."
+msgstr "Muchas gracias - esto ayudará a otros a encontrar información útil.\n Nosotros también, si lo necesita, ofrecemos consejos sobre qué\n hacer a continuación con sus peticiones."
#: app/views/request/new_please_describe.rhtml:20
msgid ""
"Thanks very much for helping keep everything <strong>neat and organised</strong>.\n"
" We'll also, if you need it, give you advice on what to do next about each of your\n"
" requests."
-msgstr ""
-"Muchas gracias por ayudar a mantenerlo todo <strong>limpio y organizado</strong>.\n"
-" Nosotros también, si lo necesita, ofrecemos consejos sobre qué\n"
-" hacer a continuación con sus peticiones."
+msgstr "Muchas gracias por ayudar a mantenerlo todo <strong>limpio y organizado</strong>.\n Nosotros también, si lo necesita, ofrecemos consejos sobre qué\n hacer a continuación con sus peticiones."
#: app/controllers/user_controller.rb:223
msgid ""
"That doesn't look like a valid email address. Please check you have typed it"
" correctly."
-msgstr ""
-"No parece ser una dirección de correo válida. Por favor comprueba que la ha "
-"escrito correctamente."
+msgstr "No parece ser una dirección de correo válida. Por favor comprueba que la ha escrito correctamente."
#: app/views/request/_describe_state.rhtml:47
#: app/views/request/_other_describe_state.rhtml:43
@@ -3197,42 +2805,31 @@ msgstr "Las cuentas se han dejado tal y como estaban anteriormente."
msgid ""
"The authority do <strong>not have</strong> the information <small>(maybe "
"they say who does)"
-msgstr ""
-"El organismo <strong>no tiene</strong> la información <small>(tal vez dicen "
-"quién la tiene)"
+msgstr "El organismo <strong>no tiene</strong> la información <small>(tal vez dicen quién la tiene)"
#: app/views/request/show_response.rhtml:26
msgid ""
"The authority only has a <strong>paper copy</strong> of the information."
-msgstr ""
-"El organismo sólo tiene una <strong>copia en papel</strong> de la "
-"información."
+msgstr "El organismo sólo tiene una <strong>copia en papel</strong> de la información."
#: app/views/request/show_response.rhtml:18
msgid ""
"The authority say that they <strong>need a postal\n"
" address</strong>, not just an email, for it to be a valid FOI request"
-msgstr ""
-"El organismo dice que necesita <strong>una dirección\n"
-" postal</strong>, no sólo un correo electrónico, para que la petición sea válida"
+msgstr "El organismo dice que necesita <strong>una dirección\n postal</strong>, no sólo un correo electrónico, para que la solicitud sea válida"
#: app/views/request/show.rhtml:109
msgid ""
"The authority would like to / has <strong>responded by post</strong> to this"
" request."
-msgstr ""
-"El organismo querría / ha respondido <strong>por correo ordinario</strong> a"
-" esta petición."
+msgstr "El organismo querría / ha respondido <strong>por correo ordinario</strong> a esta solicitud."
#: app/views/request_mailer/stopped_responses.rhtml:1
msgid ""
"The email that you, on behalf of {{public_body}}, sent to\n"
"{{user}} to reply to an {{law_used_short}}\n"
"request has not been delivered."
-msgstr ""
-"El correo envíado por usted, en nombre de {{public_body}}, enviado a\n"
-"{{user}} como respuesta a la petición {{law_used_short}}\n"
-"no ha sido entregado."
+msgstr "El correo envíado por usted, en nombre de {{public_body}}, enviado a\n{{user}} como respuesta a la solicitud {{law_used_short}}\nno ha sido entregado."
#: app/views/general/exception_caught.rhtml:5
msgid "The page doesn't exist. Things you can try now:"
@@ -3244,7 +2841,7 @@ msgstr "El organismo no tiene la información solicitada"
#: app/views/general/_advanced_search_tips.rhtml:31
msgid "The public authority would like part of the request explained"
-msgstr "El organismo ha pedido una aclaración a parte de la petición"
+msgstr "El organismo ha pedido una aclaración a parte de la solicitud"
#: app/views/general/_advanced_search_tips.rhtml:32
msgid "The public authority would like to / has responded by post"
@@ -3252,86 +2849,70 @@ msgstr "El organismo quiere responder (o ha respondido) por correo ordinario"
#: app/views/request/_other_describe_state.rhtml:60
msgid "The request has been <strong>refused</strong>"
-msgstr "La petición ha sido <strong>rechazada</strong>"
+msgstr "La solicitud ha sido <strong>rechazada</strong>"
#: app/controllers/request_controller.rb:394
msgid ""
"The request has been updated since you originally loaded this page. Please "
"check for any new incoming messages below, and try again."
-msgstr ""
-"La petición ha sido actualizada desde que llegó inicialmente a esta página. "
-"Por favor revise si ha llegado un nuevo mensaje a continuación, y vuelva a "
-"intentarlo."
+msgstr "La solicitud ha sido actualizada desde que llegó inicialmente a esta página. Por favor revise si ha llegado un nuevo mensaje a continuación, y vuelva a intentarlo."
#: app/views/request/show.rhtml:104
msgid "The request is <strong>waiting for clarification</strong>."
-msgstr "La petición está <strong>esperando aclaración</strong>."
+msgstr "La solicitud está <strong>esperando aclaración</strong>."
#: app/views/request/show.rhtml:97
msgid "The request was <strong>partially successful</strong>."
-msgstr "La petición fue <strong>exitosa parcialmente</strong>."
+msgstr "La solicitud fue <strong>parcialmente exitosa</strong>."
#: app/views/request/show.rhtml:93
msgid "The request was <strong>refused</strong> by"
-msgstr "La petición fue <strong>rechazada</strong> por"
+msgstr "La solicitud fue <strong>rechazada</strong> por"
#: app/views/request/show.rhtml:95
msgid "The request was <strong>successful</strong>."
-msgstr "La petición fue <strong>exitosa</strong>."
+msgstr "La solicitud fue <strong>exitosa</strong>."
#: app/views/general/_advanced_search_tips.rhtml:28
msgid "The request was refused by the public authority"
-msgstr "La petición ha sido rechazada por el organismo"
+msgstr "La solicitud ha sido rechazada por el organismo"
#: app/views/request/hidden.rhtml:9
msgid ""
"The request you have tried to view has been removed. There are\n"
"various reasons why we might have done this, sorry we can't be more specific here. Please <a\n"
" href=\"%s\">contact us</a> if you have any questions."
-msgstr ""
-"La petición que ha intentado ver ha sido eliminada. Hay\n"
-"varios posibles motivos para esto, pero no podemos ser más específicos aquí. Por favor <a\n"
-" href=\"%s\">contáctenos</a> si tiene cualquier pregunta."
+msgstr "La solicitud que ha intentado ver ha sido eliminada. Hay\nvarios posibles motivos para esto, pero no podemos ser más específicos aquí. Por favor <a\n href=\"%s\">contáctenos</a> si tiene cualquier pregunta."
#: app/views/general/_advanced_search_tips.rhtml:36
msgid "The requester has abandoned this request for some reason"
-msgstr "El creador de la petición ha cancelado la petición por algún motivo"
+msgstr "El creador de la solicitud la ha cancelado por algún motivo"
#: app/views/request/_followup.rhtml:59
msgid ""
"The response to your request has been <strong>delayed</strong>. You can say that, \n"
" by law, the authority should normally have responded\n"
" <strong>promptly</strong> and"
-msgstr ""
-"La respuesta a su petición ha sido <strong>retrasada</strong>.\n"
-" Por ley, el organismo debería normalmente haber respondido\n"
-" <strong>rápidamente</strong> y"
+msgstr "La respuesta a su solicitud ha sido <strong>retrasada</strong>.\n Por ley, el organismo debería normalmente haber respondido\n <strong>rápidamente</strong> y"
#: app/views/request/_followup.rhtml:71
msgid ""
"The response to your request is <strong>long overdue</strong>. You can say that, by \n"
" law, under all circumstances, the authority should have responded\n"
" by now"
-msgstr ""
-"La respuesta a su petición ha sido <strong>muy retrasada</strong>.\n"
-" Por ley, bajo cualquier circunstancia, el organismo ya debería\n"
-" haber respondido"
+msgstr "La respuesta a su solicitud ha sido <strong>muy retrasada</strong>.\n Por ley, bajo cualquier circunstancia, el organismo ya debería\n haber respondido"
#: app/views/public_body/show.rhtml:120
msgid ""
"The search index is currently offline, so we can't show the Freedom of "
"Information requests that have been made to this authority."
-msgstr ""
-"El motor de búsqueda no está accesible en estos momentos: no podemos mostrar"
-" las peticiones de información realizadas a este organismo."
+msgstr "El motor de búsqueda no está accesible en estos momentos: no podemos mostrar las peticiones de información realizadas a este organismo."
#: app/views/user/show.rhtml:165
msgid ""
"The search index is currently offline, so we can't show the Freedom of "
"Information requests this person has made."
-msgstr ""
-"El motor de búsqueda no está accesible en estos momentos: no podemos mostrar"
-" las peticiones de información que ha hecho esta persona"
+msgstr "El motor de búsqueda no está accesible en estos momentos: no podemos mostrar las peticiones de información que ha hecho esta persona"
#: app/controllers/track_controller.rb:152
msgid "Then you can cancel the alert."
@@ -3371,7 +2952,7 @@ msgstr "Entonces podrá entrar a {{site_name}}"
#: app/controllers/request_controller.rb:84
msgid "Then you can update the status of your request to "
-msgstr "Entonces podrá actualizar el estado de su petición a "
+msgstr "Entonces podrá actualizar el estado de su solicitud a "
#: app/controllers/request_controller.rb:756
msgid "Then you can upload an FOI response. "
@@ -3389,43 +2970,33 @@ msgstr "Entonces podrá escribir su respuesta a "
msgid ""
"Then you will be emailed whenever '{{user_name}}' requests something or gets"
" a response."
-msgstr ""
-"Entonces recibirá un correo cada vez que '{{user_name}}' solicite algo o "
-"reciba una respuesta."
+msgstr "Entonces recibirá un correo cada vez que '{{user_name}}' solicite algo o reciba una respuesta."
#: app/models/track_thing.rb:285
msgid ""
"Then you will be emailed whenever a new request or response matches your "
"search."
-msgstr ""
-"Entonces recibirá correos siempre que una nueva solicitud o respuesta encaje"
-" con su búsqueda."
+msgstr "Entonces recibirá correos siempre que una nueva solicitud o respuesta encaje con su búsqueda."
#: app/models/track_thing.rb:234
msgid "Then you will be emailed whenever an FOI request succeeds."
-msgstr "Entonces recibirá un correo cada vez que una petición tenga éxito."
+msgstr "Entonces recibirá un correo cada vez que una solicitud tenga éxito."
#: app/models/track_thing.rb:218
msgid "Then you will be emailed whenever anyone makes a new FOI request."
-msgstr ""
-"Entonces recibirá un correo cada vez que alguien haga una nueva petición de "
-"información."
+msgstr "Entonces recibirá un correo cada vez que alguien haga una nueva solicitud de información."
#: app/models/track_thing.rb:253
msgid ""
"Then you will be emailed whenever someone requests something or gets a "
"response from '{{public_body_name}}'."
-msgstr ""
-"Entonces recibirá un correo cada vez que alguien haga una petición o reciba "
-"una respuesta de '{{public_body_name}}'."
+msgstr "Entonces recibirá un correo cada vez que alguien haga una solicitud o reciba una respuesta de '{{public_body_name}}'."
#: app/models/track_thing.rb:202
msgid ""
"Then you will be emailed whenever the request '{{request_title}}' is "
"updated."
-msgstr ""
-"Entonces recibirá correos siempre que la solicitud '{{request_title}}' se "
-"actualice."
+msgstr "Entonces recibirá correos siempre que la solicitud '{{request_title}}' se actualice."
#: app/controllers/request_controller.rb:35
msgid "Then you'll be allowed to send FOI requests."
@@ -3433,7 +3004,7 @@ msgstr "Entonces podrá enviar solicitudes de información."
#: app/controllers/request_controller.rb:340
msgid "Then your FOI request to {{public_body_name}} will be sent."
-msgstr "Entonces su petición a {{public_body_name}} será enviada."
+msgstr "Entonces su solicitud a {{public_body_name}} será enviada."
#: app/controllers/comment_controller.rb:56
msgid "Then your annotation to {{info_request_title}} will be posted."
@@ -3443,9 +3014,7 @@ msgstr "Entonces se enviará su comentario a {{info_request_title}}."
msgid ""
"There are {{count}} new annotations on your {{info_request}} request. Follow"
" this link to see what they wrote."
-msgstr ""
-"Hay {{count}} comentarios en su petición {{info_request}}. Siga este enlace "
-"para leer lo que dicen."
+msgstr "Hay {{count}} comentarios en su solicitud {{info_request}}. Siga este enlace para leer lo que dicen."
#: app/views/public_body/show.rhtml:7
msgid "There is %d person following this authority"
@@ -3463,9 +3032,7 @@ msgstr[1] "Hay %d personas siguiendo esta solicitud."
msgid ""
"There is <strong>more than one person</strong> who uses this site and has this name. \n"
" One of them is shown below, you may mean a different one:"
-msgstr ""
-"Hay <strong>más de una persona</strong> que utiliza esta web y tiene este nombre. \n"
-" Una de ellas se muestra a continuación, puede que se refiera a una distinta:"
+msgstr "Hay <strong>más de una persona</strong> que utiliza esta web y tiene este nombre. \n Una de ellas se muestra a continuación, puede que se refiera a una distinta:"
#: app/views/user/rate_limited.rhtml:7
msgid ""
@@ -3474,21 +3041,18 @@ msgid ""
"inappropriate requests. If you feel you have a good reason to ask for the "
"limit to be lifted in your case, please <a href='{{help_contact_path}}'>get "
"in touch</a>."
-msgstr ""
+msgstr "Hay un límite en el número de solicitudes que puedes hacer en un día, porque no queremos que los organismos públicos reciban un número exagerado de peticiones mal formuladas. Si necesitas que el límite no se aplique en tu caso, por favor <a href='{{help_contact_path}}'>contacta con nosotros</a>."
#: app/views/request/show.rhtml:113
msgid ""
"There was a <strong>delivery error</strong> or similar, which needs fixing "
"by the {{site_name}} team."
-msgstr ""
-"Se ha producido un <strong>error en la entrega</strong> o similar, y "
-"necesita ser arreglado por el equipo de {{site_name}}."
+msgstr "Se ha producido un <strong>error en la entrega</strong> o similar, y necesita ser arreglado por el equipo de {{site_name}}."
#: app/controllers/user_controller.rb:154
#: app/controllers/public_body_controller.rb:83
msgid "There was an error with the words you entered, please try again."
-msgstr ""
-"Ha habido un error con las palabras introducidas, por favor pruebe otra vez."
+msgstr "Ha habido un error con las palabras introducidas, por favor pruebe otra vez."
#: app/views/public_body/show.rhtml:109
msgid "There were no requests matching your query."
@@ -3496,7 +3060,7 @@ msgstr "No se encontraron solicitudes para su búsqueda."
#: app/views/general/search.rhtml:10
msgid "There were no results matching your query."
-msgstr ""
+msgstr "No se han encontrado resultados para tu búsqueda."
#: app/views/request/_describe_state.rhtml:38
msgid "They are going to reply <strong>by post</strong>"
@@ -3506,9 +3070,7 @@ msgstr "Van a responder <strong>por correo ordinario</strong>"
msgid ""
"They do <strong>not have</strong> the information <small>(maybe they say who"
" does)</small>"
-msgstr ""
-"<strong>No tienen</strong> la información <small>(tal vez dicen quién la "
-"tiene)</small>"
+msgstr "<strong>No tienen</strong> la información <small>(tal vez dicen quién la tiene)</small>"
#: app/views/user/show.rhtml:88
msgid "They have been given the following explanation:"
@@ -3518,99 +3080,78 @@ msgstr "Han recibido la siguiente explicación:"
msgid ""
"They have not replied to your {{law_used_short}} request {{title}} promptly,"
" as normally required by law"
-msgstr ""
-"No han respondido a su petición {{law_used_short}} {{title}} rápidamente, "
-"como require generalmente la ley"
+msgstr "No han respondido a su solicitud {{law_used_short}} {{title}} rápidamente, como requiere generalmente la ley"
#: app/views/request_mailer/very_overdue_alert.rhtml:3
msgid ""
"They have not replied to your {{law_used_short}} request {{title}}, \n"
"as required by law"
-msgstr ""
-"No han respondido a su petición {{law_used_short}} {{title}}, \n"
-" como require la ley"
+msgstr "No han respondido a su solicitud {{law_used_short}} {{title}}, \n como requiere la ley"
#: app/views/request/_after_actions.rhtml:3
msgid "Things to do with this request"
-msgstr "Cosas que hacer con esta petición"
+msgstr "Cosas que hacer con esta solicitud"
#: app/views/public_body/show.rhtml:63
msgid "This authority no longer exists, so you cannot make a request to it."
-msgstr ""
-"Este organismo ya no existe, no pueden realizarse peticiones de información."
+msgstr "Este organismo ya no existe, no pueden realizarse peticiones de información."
#: app/views/request/_hidden_correspondence.rhtml:23
msgid ""
"This comment has been hidden. See annotations to\n"
" find out why. If you are the requester, then you may <a href=\"%s\">sign in</a> to view the response."
-msgstr ""
-"Este respuesta está oculta. Revise los comentarios\n"
-" para descubrir por qué. Si es su petición, <a href=\"%s\">abra una sesión</a> para ver la respuesta."
+msgstr "Este respuesta está oculta. Revise los comentarios\n para descubrir por qué. Si es su solicitud, <a href=\"%s\">abra una sesión</a> para ver la respuesta."
#: app/views/request/new.rhtml:63
msgid ""
"This covers a very wide spectrum of information about the state of\n"
" the <strong>natural and built environment</strong>, such as:"
-msgstr ""
-"Esto incluye un amplio espectro de información sobre el estado de\n"
-" el <strong>entorno natural y urbanizado</strong>, como:"
+msgstr "Esto incluye un amplio espectro de información sobre el estado de\n el <strong>entorno natural y urbanizado</strong>, como:"
#: app/views/request/simple_correspondence.rhtml:1
msgid ""
"This is a plain-text version of the Freedom of Information request "
"\"{{request_title}}\". The latest, full version is available online at "
"{{full_url}}"
-msgstr ""
-"Esta es la versión sólo-texto de la solicitud de información "
-"\"{{request_title}}\". La versión más actualizada y completa está "
-"disponible en {{full_url}}"
+msgstr "Esta es la versión sólo-texto de la solicitud de información \"{{request_title}}\". La versión más actualizada y completa está disponible en {{full_url}}"
#: app/foo.rb:1
msgid "This is a test!"
-msgstr ""
+msgstr "Esto es una prueba."
#: app/views/request/_view_html_prefix.rhtml:9
msgid ""
"This is an HTML version of an attachment to the Freedom of Information "
"request"
-msgstr ""
-"Esta es la versión HTML de un fichero adjunto a una petición de acceso a la "
-"información"
+msgstr "Esta es la versión HTML de un fichero adjunto a una solicitud de acceso a la información"
#: app/views/request_mailer/stopped_responses.rhtml:5
msgid ""
"This is because {{title}} is an old request that has been\n"
"marked to no longer receive responses."
-msgstr ""
-"Esto es porque {{title}} es una petición antigua\n"
-"marcada para ya no recibir más respuestas."
+msgstr "Esto es porque {{title}} es una solicitud antigua\nmarcada para ya no recibir más respuestas."
#: app/views/track/_tracking_links.rhtml:8
msgid ""
"This is your own request, so you will be automatically emailed when new "
"responses arrive."
-msgstr ""
-"Esta es su petición, por lo que recibirá correos automáticamente cuando "
-"lleguen nuevas respuestas."
+msgstr "Esta es su solicitud, por lo que recibirá correos automáticamente cuando lleguen nuevas respuestas."
#: app/views/request/_hidden_correspondence.rhtml:17
msgid ""
"This outgoing message has been hidden. See annotations to\n"
"\t\t\t\t\t\tfind out why. If you are the requester, then you may <a href=\"%s\">sign in</a> to view the response."
-msgstr ""
-"Este mensaje está oculto. Lea los comentarios\n"
-"\t\t\t\t\t\tpara descubrir por qué. Si es su petición, <a href=\"%s\">abra una sesión</a> para ver la respuesta."
+msgstr "Este mensaje está oculto. Lea los comentarios\n\t\t\t\t\t\tpara descubrir por qué. Si es su solicitud, <a href=\"%s\">abra una sesión</a> para ver la respuesta."
#: app/views/request/_describe_state.rhtml:44
#: app/views/request/_other_describe_state.rhtml:40
msgid "This particular request is finished:"
-msgstr "Esta petición está cerrada:"
+msgstr "Esta solicitud está cerrada:"
#: app/views/user/show.rhtml:144
msgid ""
"This person has made no Freedom of Information requests using this site."
-msgstr ""
-"Esta persona no ha realizado solicitudes de información usando esta web."
+msgstr "Esta persona no ha realizado solicitudes de información usando esta web."
#: app/views/user/show.rhtml:149
msgid "This person's %d Freedom of Information request"
@@ -3630,65 +3171,52 @@ msgstr "Sus comentarios"
#: app/views/request/_describe_state.rhtml:84
msgid "This request <strong>requires administrator attention</strong>"
-msgstr ""
-"Esta petición <strong>requiere la intervención de un administrador</strong>"
+msgstr "Esta solicitud <strong>requiere la intervención de un administrador</strong>"
#: app/views/request/show.rhtml:55
msgid "This request has an <strong>unknown status</strong>."
-msgstr "Esta petición tiene un <strong>estado desconocido</strong>."
+msgstr "Esta solicitud tiene un <strong>estado desconocido</strong>."
#: app/views/request/show.rhtml:117
msgid ""
"This request has been <strong>withdrawn</strong> by the person who made it. \n"
" \t There may be an explanation in the correspondence below."
-msgstr ""
-"Esta petición ha sido <strong>retirada</strong> por la persona que la realizó. \n"
-" \t Puede que haya una explicación en los mensajes a continuación."
+msgstr "Esta solicitud ha sido <strong>retirada</strong> por la persona que la realizó. \n \t Puede que haya una explicación en los mensajes a continuación."
#: app/models/info_request.rb:389
msgid ""
"This request has been set by an administrator to \"allow new responses from "
"nobody\""
-msgstr ""
-"Esta petición ha sido configurada por el administrador a \"no permitir "
-"respuestas de nadie\""
+msgstr "Esta solicitud ha sido configurada por el administrador para \"no permitir respuestas de nadie\""
#: app/views/request/show.rhtml:115
msgid ""
"This request has had an unusual response, and <strong>requires "
"attention</strong> from the {{site_name}} team."
-msgstr ""
-"Esta petición ha recibido una respuesta inusual, y <strong>requiere la "
-"intervención</strong> del equipo de {{site_name}}."
+msgstr "Esta solicitud ha recibido una respuesta inusual, y <strong>requiere la intervención</strong> del equipo de {{site_name}}."
#: app/views/request/show.rhtml:5
msgid ""
"This request has prominence 'hidden'. You can only see it because you are logged\n"
" in as a super user."
-msgstr ""
-"Esta petición tiene visibilidad 'oculta'. Puede verla sólo porque esta identificado\n"
-" como super-usuario."
+msgstr "Esta solicitud tiene visibilidad 'oculta'. Puede verla sólo porque esta identificado\n como super-usuario."
#: app/views/request/show.rhtml:11
msgid ""
"This request is hidden, so that only you the requester can see it. Please\n"
" <a href=\"%s\">contact us</a> if you are not sure why."
-msgstr ""
-"Esta petición está oculta, por lo que sólo usted como creador puede verla. Por favor\n"
-" <a href=\"%s\">contáctenos</a> si no está seguro de por qué."
+msgstr "Esta solicitud está oculta, por lo que sólo usted como creador puede verla. Por favor\n <a href=\"%s\">contáctenos</a> si no está seguro de por qué."
#: app/views/request/_describe_state.rhtml:7
#: app/views/request/_other_describe_state.rhtml:10
msgid "This request is still in progress:"
-msgstr "Esta petición está todavía en proceso:"
+msgstr "Esta solicitud está todavía en proceso:"
#: app/views/request/_hidden_correspondence.rhtml:10
msgid ""
"This response has been hidden. See annotations to find out why.\n"
" If you are the requester, then you may <a href=\"%s\">sign in</a> to view the response."
-msgstr ""
-"Este respuesta está oculta. Revise los comentarios\n"
-" para descubrir por qué. Si es su petición, <a href=\"%s\">abra una sesión</a> para ver la respuesta."
+msgstr "Este respuesta está oculta. Revise los comentarios\n para descubrir por qué. Si es su solicitud, <a href=\"%s\">abra una sesión</a> para ver la respuesta."
#: app/views/request/details.rhtml:6
msgid ""
@@ -3696,11 +3224,7 @@ msgid ""
"to this request on {{site_name}}. This could be used to generate information about\n"
"the speed with which authorities respond to requests, the number of requests\n"
"which require a postal response and much more."
-msgstr ""
-"La siguiente tabla muestra datos técnicos sobre los eventos internos relacionados \n"
-"con la petición {{site_name}}. Estos datos pueden ser utilizados para generar\n"
-"estadísticas sobre por ejemplo la velocidad de respuesta de los organismos o\n"
-"el número de peticiones que piden usar correo ordinario."
+msgstr "La siguiente tabla muestra datos técnicos sobre los eventos internos relacionados \ncon la solicitud {{site_name}}. Estos datos pueden ser utilizados para generar\nestadísticas sobre por ejemplo la velocidad de respuesta de los organismos o\nel número de solicitudes que piden usar correo ordinario."
#: app/views/user/show.rhtml:84
msgid "This user has been banned from {{site_name}} "
@@ -3710,9 +3234,7 @@ msgstr "Este usuario ha sido expulsado from {{site_name}} "
msgid ""
"This was not possible because there is already an account using \n"
"the email address {{email}}."
-msgstr ""
-"No es posible porque ya existe una cuenta usando la dirección \n"
-"de correo {{email}}."
+msgstr "No es posible porque ya existe una cuenta usando la dirección \nde correo {{email}}."
#: app/models/track_thing.rb:217
msgid "To be emailed about any new requests"
@@ -3720,7 +3242,7 @@ msgstr "Para recibir correos sobre nuevas peticiones"
#: app/models/track_thing.rb:233
msgid "To be emailed about any successful requests"
-msgstr "Para recibir correos sobre cualquier petición exitosa"
+msgstr "Para recibir correos sobre cualquier solicitud exitosa"
#: app/models/track_thing.rb:268
msgid "To be emailed about requests by '{{user_name}}'"
@@ -3730,9 +3252,7 @@ msgstr "Para recibir correos sobre peticiones de '{{user_name}}'"
msgid ""
"To be emailed about requests made using {{site_name}} to the public "
"authority '{{public_body_name}}'"
-msgstr ""
-"Para recibir correos sobre peticiones hechas en {{site_name}} al organismo "
-"'{{public_body_name}}'"
+msgstr "Para recibir correos sobre peticiones hechas en {{site_name}} al organismo '{{public_body_name}}'"
#: app/controllers/track_controller.rb:181
msgid "To cancel these alerts"
@@ -3746,9 +3266,7 @@ msgstr "Cancelar esta alerta"
msgid ""
"To carry on, you need to sign in or make an account. Unfortunately, there\n"
"was a technical problem trying to do this."
-msgstr ""
-"Para continuar, necesita abrir una sesión o crear una cuenta. Desgraciadamente,\n"
-"ha habido un problema técnico al intentar hacerlo."
+msgstr "Para continuar, necesita abrir una sesión o crear una cuenta. Desgraciadamente,\nha habido un problema técnico al intentar hacerlo."
#: app/controllers/user_controller.rb:282
msgid "To change your email address used on {{site_name}}"
@@ -3756,7 +3274,7 @@ msgstr "Cambiar la dirección de correo usada en {{site_name}}"
#: app/controllers/request_controller.rb:379
msgid "To classify the response to this FOI request"
-msgstr "Reclasificar la respuesta a esta petición"
+msgstr "Reclasificar la respuesta a esta solicitud"
#: app/views/request/show_response.rhtml:37
msgid "To do that please send a private email to "
@@ -3782,9 +3300,7 @@ msgstr "Para seguir actualizaciones a la solicitud '{{request_title}}'"
msgid ""
"To help us keep the site tidy, someone else has updated the status of the \n"
"{{law_used_full}} request {{title}} that you made to {{public_body}}, to \"{{display_status}}\" If you disagree with their categorisation, please update the status again yourself to what you believe to be more accurate."
-msgstr ""
-"Para ayudarnos a mantener la web ordenada, alguien ha actualizado el estado de \n"
-"la petición {{law_used_full}} {{title}} que hizo a {{public_body}}, a \"{{display_status}}\". Si no está de acuerdo con esta clasificación, por favor actualice el estado usted mismo a lo que considere correcto."
+msgstr "Para ayudarnos a mantener la web ordenada, alguien ha actualizado el estado de \nla solicitud {{law_used_full}} {{title}} que hizo a {{public_body}}, a \"{{display_status}}\". Si no está de acuerdo con esta clasificación, por favor actualice el estado usted mismo a lo que considere correcto."
#: app/views/request_mailer/new_response_reminder_alert.rhtml:1
msgid "To let us know, follow this link and then select the appropriate box."
@@ -3813,34 +3329,28 @@ msgstr "Para enviar un mensaje a"
#: app/controllers/request_controller.rb:34
#: app/controllers/request_controller.rb:339
msgid "To send your FOI request"
-msgstr "Para enviar su petición de información"
+msgstr "Para enviar su solicitud de información"
#: app/controllers/request_controller.rb:83
msgid "To update the status of this FOI request"
-msgstr "Para actualizar el estado de su petición de información"
+msgstr "Para actualizar el estado de su solicitud de información"
#: app/controllers/request_controller.rb:755
msgid ""
"To upload a response, you must be logged in using an email address from "
-msgstr ""
-"Para cargar una respuesta, debe estar registrado con una dirección de correo"
-" electrónico de"
+msgstr "Para cargar una respuesta, debe estar registrado con una dirección de correo electrónico de"
#: app/views/general/search.rhtml:24
msgid ""
"To use the advanced search, combine phrases and labels as described in the "
"search tips below."
-msgstr ""
-"Para usar la búsqueda avanzada, combine frases y etiquetas como se describe "
-"en las instrucciones a continuación."
+msgstr "Para usar la búsqueda avanzada, combine frases y etiquetas como se describe en las instrucciones a continuación."
#: app/views/public_body/view_email_captcha.rhtml:5
msgid ""
"To view the email address that we use to send FOI requests to "
"{{public_body_name}}, please enter these words."
-msgstr ""
-"Para ver la dirección de correo que usamos para mandar peticiones a "
-"{{public_body_name}}, por favor introduzca estas palabras."
+msgstr "Para ver la dirección de correo que usamos para mandar peticiones a {{public_body_name}}, por favor introduzca estas palabras."
#: app/views/request_mailer/new_response.rhtml:5
msgid "To view the response, click on the link below."
@@ -3884,7 +3394,7 @@ msgstr "Seguir a esta persona por correo"
#: app/models/track_thing.rb:195
msgid "Track this request by email"
-msgstr "Seguir esta petición por correo"
+msgstr "Seguir esta solicitud por correo"
#: app/views/general/search.rhtml:137
msgid "Track this search"
@@ -3910,9 +3420,7 @@ msgstr "Tuitear esta solicitud"
msgid ""
"Type <strong><code>01/01/2008..14/01/2008</code></strong> to only show "
"things that happened in the first two weeks of January."
-msgstr ""
-"Introduzca <code><strong>01/01/2008..14/01/2008</strong></code> para mostrar"
-" sólo las cosas que sucedieron en las dos primeras semanas de enero."
+msgstr "Introduzca <code><strong>01/01/2008..14/01/2008</strong></code> para mostrar sólo las cosas que sucedieron en las dos primeras semanas de enero."
#: app/models/public_body.rb:37
msgid "URL name can't be blank"
@@ -3943,10 +3451,7 @@ msgid ""
"Unfortunately we don't know the FOI\n"
"email address for that authority, so we can't validate this.\n"
"Please <a href=\"%s\">contact us</a> to sort it out."
-msgstr ""
-"Desgraciadamente no tenemos la dirección\n"
-"de correo para este organismo, así que no podemos validarlo.\n"
-"Por favor <a href=\"%s\">contáctenos</a> para arreglarlo."
+msgstr "Desgraciadamente no tenemos la dirección\nde correo para este organismo, así que no podemos validarlo.\nPor favor <a href=\"%s\">contáctenos</a> para arreglarlo."
#: app/views/request/new_bad_contact.rhtml:5
msgid ""
@@ -3973,27 +3478,23 @@ msgstr "Respuesta no habitual."
#: app/views/request/_after_actions.rhtml:13
#: app/views/request/_after_actions.rhtml:35
msgid "Update the status of this request"
-msgstr "Actualizar el estado de esta petición"
+msgstr "Actualizar el estado de esta solicitud"
#: app/controllers/request_controller.rb:85
msgid "Update the status of your request to "
-msgstr "Actualizar el estado de la petición a "
+msgstr "Actualizar el estado de la solicitud a "
#: app/views/general/_advanced_search_tips.rhtml:6
msgid ""
"Use OR (in capital letters) where you don't mind which word, e.g. "
"<strong><code>commons OR lords</code></strong>"
-msgstr ""
-"Escriba OR (en mayúsculas) cuando no le importe qué palabra, e.g. "
-"<strong><code>diputado OR parlamento</code></strong>"
+msgstr "Escriba OR (en mayúsculas) cuando no le importe qué palabra, e.g. <strong><code>diputado OR parlamento</code></strong>"
#: app/views/general/_advanced_search_tips.rhtml:7
msgid ""
"Use quotes when you want to find an exact phrase, e.g. "
"<strong><code>\"Liverpool City Council\"</code></strong>"
-msgstr ""
-"Utilice comillas cuando quiera buscar una frase exacta, por ejemplo "
-"<strong><code>\"Consejo de Europa\"</code></strong>"
+msgstr "Utilice comillas cuando quiera buscar una frase exacta, por ejemplo <strong><code>\"Consejo de Europa\"</code></strong>"
#: locale/model_attributes.rb:94
msgid "UserInfoRequestSentAlert|Alert type"
@@ -4017,11 +3518,11 @@ msgstr "User|Email"
#: locale/model_attributes.rb:83
msgid "User|Email bounce message"
-msgstr ""
+msgstr "User|Email bounce message"
#: locale/model_attributes.rb:82
msgid "User|Email bounced at"
-msgstr ""
+msgstr "User|Email bounced at"
#: locale/model_attributes.rb:75
msgid "User|Email confirmed"
@@ -4037,7 +3538,7 @@ msgstr "User|Last daily track email"
#: locale/model_attributes.rb:81
msgid "User|Locale"
-msgstr ""
+msgstr "User|Locale"
#: locale/model_attributes.rb:72
msgid "User|Name"
@@ -4045,7 +3546,7 @@ msgstr "User|Name"
#: locale/model_attributes.rb:84
msgid "User|No limit"
-msgstr ""
+msgstr "User|No limit"
#: locale/model_attributes.rb:74
msgid "User|Salt"
@@ -4095,17 +3596,13 @@ msgstr "Esperando aclaración."
msgid ""
"Waiting for an <strong>internal review</strong> by {{public_body_link}} of "
"their handling of this request."
-msgstr ""
-"Esperando una <strong>revisión interna</strong> por parte de "
-"{{public_body_link}} de cómo han respondido a esta petición."
+msgstr "Esperando una <strong>revisión interna</strong> por parte de {{public_body_link}} de cómo han respondido a esta solicitud."
#: app/views/general/_advanced_search_tips.rhtml:33
msgid ""
"Waiting for the public authority to complete an internal review of their "
"handling of the request"
-msgstr ""
-"Esperando que el organismo termine una revisión interna de su respuesta a la"
-" petición"
+msgstr "Esperando que el organismo termine una revisión interna de su respuesta a la solicitud"
#: app/views/general/_advanced_search_tips.rhtml:26
msgid "Waiting for the public authority to reply"
@@ -4122,8 +3619,7 @@ msgstr "No tenemos una dirección de correo válida para este organismo."
#: app/views/request/followup_bad.rhtml:24
msgid ""
"We do not have a working {{law_used_full}} address for {{public_body_name}}."
-msgstr ""
-"No tenemos una dirección de correo válida para este {{public_body_name}}."
+msgstr "No tenemos una dirección de correo válida para este {{public_body_name}}."
#: app/views/request/_describe_state.rhtml:107
msgid ""
@@ -4131,35 +3627,25 @@ msgid ""
" information or not\n"
" &ndash;\n"
"\tif you are {{user_link}} please <a href=\"{{url}}\">sign in</a> and let everyone know."
-msgstr ""
-"No sabemos si la última respuesta a esta petición contiene\n"
-" información o no\n"
-" &ndash;\n"
-"\tsi es {{user_link}} por favor <a href=\"{{url}}\">abra una sesión</a> y háganoslo saber."
+msgstr "No sabemos si la última respuesta a esta solicitud contiene\n información o no\n &ndash;\n\tsi es {{user_link}} por favor <a href=\"{{url}}\">abra una sesión</a> y háganoslo saber."
#: app/views/user_mailer/confirm_login.rhtml:8
msgid ""
"We will not reveal your email address to anybody unless you\n"
"or the law tell us to."
-msgstr ""
-"No revelaremos su dirección de correo a nadie salvo que usted\n"
-"nos lo diga, o la ley nos obligue."
+msgstr "No revelaremos su dirección de correo a nadie salvo que usted\nnos lo diga, o la ley nos obligue."
#: app/views/user/_signup.rhtml:13
msgid ""
"We will not reveal your email address to anybody unless you or\n"
" the law tell us to (<a href=\"%s\">details</a>). "
-msgstr ""
-"No revelaremos su dirección de correo a nadie salvo que usted nos lo diga\n"
-" o la ley nos obligue (<a href=\"%s\">más información</a>). "
+msgstr "No revelaremos su dirección de correo a nadie salvo que usted nos lo diga\n o la ley nos obligue (<a href=\"%s\">más información</a>). "
#: app/views/user_mailer/changeemail_confirm.rhtml:10
msgid ""
"We will not reveal your email addresses to anybody unless you\n"
"or the law tell us to."
-msgstr ""
-"No revelaremos su dirección de correo a nadie salvo que usted\n"
-"nos lo diga, o la ley nos obligue."
+msgstr "No revelaremos su dirección de correo a nadie salvo que usted\nnos lo diga, o la ley nos obligue."
#: app/views/request/show.rhtml:61
msgid "We're waiting for"
@@ -4173,25 +3659,19 @@ msgstr "Estamos esperando que alguien lea"
msgid ""
"We've sent an email to your new email address. You'll need to click the link in\n"
"it before your email address will be changed."
-msgstr ""
-"Hemos enviado un correo a su nueva dirección de correo. Necesitará seguir el enlace\n"
-"incluido en él para que se actualice su dirección de correo."
+msgstr "Hemos enviado un correo a su nueva dirección de correo. Necesitará seguir el enlace\nincluido en él para que se actualice su dirección de correo."
#: app/views/user/confirm.rhtml:6
msgid ""
"We've sent you an email, and you'll need to click the link in it before you can\n"
"continue."
-msgstr ""
-"Le hemos enviado un correo, necesitará seguir el enlace incluído en él antes\n"
-"de continuar."
+msgstr "Le hemos enviado un correo, necesitará seguir el enlace incluído en él antes\nde continuar."
#: app/views/user/signchangepassword_confirm.rhtml:6
msgid ""
"We've sent you an email, click the link in it, then you can change your "
"password."
-msgstr ""
-"Le hemos enviado un correo, siga el enlace incluído en él, y podrá cambiar "
-"su contraseña."
+msgstr "Le hemos enviado un correo, siga el enlace incluído en él, y podrá cambiar su contraseña."
#: app/views/request/_followup.rhtml:85
msgid "What are you doing?"
@@ -4199,7 +3679,7 @@ msgstr "¿Qué está haciendo?"
#: app/views/request/_describe_state.rhtml:4
msgid "What best describes the status of this request now?"
-msgstr "¿Cómo describiría el estado de esta petición ahora?"
+msgstr "¿Cómo describiría el estado de esta solicitud ahora?"
#: app/views/general/frontpage.rhtml:54
msgid "What information has been released?"
@@ -4209,25 +3689,19 @@ msgstr "¿Qué información se ha solicitado?"
msgid ""
"When you get there, please update the status to say if the response \n"
"contains any useful information."
-msgstr ""
-"Por favor actualice el estado para indicar si la respuesta \n"
-"contiene información útil."
+msgstr "Por favor actualice el estado para indicar si la respuesta \ncontiene información útil."
#: app/views/request/show_response.rhtml:42
msgid ""
"When you receive the paper response, please help\n"
" others find out what it says:"
-msgstr ""
-"Cuando reciba la respuesta en papel, por favor ayude\n"
-" a que otros sepan lo que dice:"
+msgstr "Cuando reciba la respuesta en papel, por favor ayude\n a que otros sepan lo que dice:"
#: app/views/request/new_please_describe.rhtml:16
msgid ""
"When you're done, <strong>come back here</strong>, <a href=\"%s\">reload "
"this page</a> and file your new request."
-msgstr ""
-"Cuando esté listo, <strong>vuelva aquí</strong>, <a href=\"%s\">recargue "
-"esta página</a> y cree una nueva petición."
+msgstr "Cuando esté listo, <strong>vuelva aquí</strong>, <a href=\"%s\">recargue esta página</a> y cree una nueva solicitud."
#: app/views/request/show_response.rhtml:13
msgid "Which of these is happening?"
@@ -4263,8 +3737,7 @@ msgstr "Escriba su respuesta a "
#: app/views/request/new.rhtml:104
msgid "Write your request in <strong>simple, precise language</strong>."
-msgstr ""
-"Escriba su petición en un <strong>lenguaje sencillo y preciso</strong>."
+msgstr "Escriba su solicitud en un <strong>lenguaje sencillo y preciso</strong>."
#: app/views/comment/_single_comment.rhtml:10
msgid "You"
@@ -4288,7 +3761,7 @@ msgstr "Ya está siguiendo a esta persona por correo"
#: app/models/track_thing.rb:196
msgid "You are already tracking this request by email"
-msgstr "Ya está siguiendo esta petición por correo"
+msgstr "Ya está siguiendo esta solicitud por correo"
#: app/models/track_thing.rb:228
msgid "You are being emailed about any new successful responses"
@@ -4306,9 +3779,7 @@ msgstr "Puede <strong>apelar</strong>"
msgid ""
"You can get this page in computer-readable format as part of the main JSON\n"
"page for the request. See the <a href=\"{{api_path}}\">API documentation</a>."
-msgstr ""
-"Puede obtener esta página en un formato procesable como parte de la página JSON\n"
-"de la petición. Consulte <a href=\"{{api_path}}\">la documentación de nuestro API</a>."
+msgstr "Puede obtener esta página en un formato procesable como parte de la página JSON\nde la solicitud. Consulte <a href=\"{{api_path}}\">la documentación de nuestro API</a>."
#: app/views/public_body/show.rhtml:46
msgid ""
@@ -4317,22 +3788,20 @@ msgstr "Solo puede solicitar información medioambiental a esta institución"
#: app/views/request_mailer/new_response.rhtml:1
msgid "You have a new response to the {{law_used_full}} request "
-msgstr "Tiene una nueva respuesta a la petición {{law_used_full}} "
+msgstr "Tiene una nueva respuesta a la solicitud {{law_used_full}} "
#: app/views/general/exception_caught.rhtml:18
msgid ""
"You have found a bug. Please <a href=\"{{contact_url}}\">contact us</a> to "
"tell us about the problem"
-msgstr ""
-"Ha encontrado un error. Por favor <a "
-"href=\"{{contact_url}}\">contáctenos</a> para informarnos del problema"
+msgstr "Ha encontrado un error. Por favor <a href=\"{{contact_url}}\">contáctenos</a> para informarnos del problema"
#: app/views/user/rate_limited.rhtml:5
msgid ""
"You have hit the rate limit on new requests. Users are ordinarily limited to"
" {{max_requests_per_user_per_day}} requests in any rolling 24-hour period. "
"You will be able to make another request in {{can_make_another_request}}."
-msgstr ""
+msgstr "Has alcanzado el límite de solicitudes en un día, que es de {{max_requests_per_user_per_day}} solicitudes en un plazo de 24 horas. Podrás enviar una nueva solicitud en {{can_make_another_request}}."
#: app/views/user/show.rhtml:144
msgid "You have made no Freedom of Information requests using this site."
@@ -4353,48 +3822,33 @@ msgid ""
"left as they previously were.\n"
"\n"
"Please click on the link below."
-msgstr ""
-"Ha intentado registrarse en {{site_name}}, cuando\n"
-"ya tiene una cuenta. Su nombre y contraseña no se han\n"
-"modificado.\n"
-"\n"
-"Por favor pulse en el siguiente enlace para continuar."
+msgstr "Ha intentado registrarse en {{site_name}}, cuando\nya tiene una cuenta. Su nombre y contraseña no se han\nmodificado.\n\nPor favor pulse en el siguiente enlace para continuar."
#: app/views/comment/new.rhtml:60
msgid ""
"You know what caused the error, and can <strong>suggest a solution</strong>,"
" such as a working email address."
-msgstr ""
-"Sabe lo que ha causado el error, y puede <strong>sugerir una solución</a>, "
-"como una dirección de correo válida."
+msgstr "Sabe lo que ha causado el error, y puede <strong>sugerir una solución</a>, como una dirección de correo válida."
#: app/views/request/upload_response.rhtml:16
msgid ""
"You may <strong>include attachments</strong>. If you would like to attach a\n"
"file too large for email, use the form below."
-msgstr ""
-"Puede <strong>adjuntar ficheros</strong>. Si quiere adjuntar un fichero\n"
-"demasiado grande para el correo, puede utilizar el siguiente formulario."
+msgstr "Puede <strong>adjuntar ficheros</strong>. Si quiere adjuntar un fichero\ndemasiado grande para el correo, puede utilizar el siguiente formulario."
#: app/views/request/followup_bad.rhtml:24
msgid ""
"You may be able to find\n"
" one on their website, or by phoning them up and asking. If you manage\n"
" to find one, then please <a href=\"%s\">send it to us</a>."
-msgstr ""
-"Puede que encuentre una\n"
-" en su página web, o preguntando por teléfono. Si la consigue\n"
-" por favor <a href=\"%s\">envíenosla</a>."
+msgstr "Puede que encuentre una\n en su página web, o preguntando por teléfono. Si la consigue\n por favor <a href=\"%s\">envíenosla</a>."
#: app/views/request/new_bad_contact.rhtml:6
msgid ""
"You may be able to find\n"
"one on their website, or by phoning them up and asking. If you manage\n"
"to find one, then please <a href=\"{{help_url}}\">send it to us</a>."
-msgstr ""
-"Puede que encuentre una\n"
-"en su página web, o llamándoles pare preguntar. Si\n"
-"consigue una, por favor <a href=\"{{help_url}}\">mándenosla</a>."
+msgstr "Puede que encuentre una\nen su página web, o llamándoles pare preguntar. Si\nconsigue una, por favor <a href=\"{{help_url}}\">mándenosla</a>."
#: app/controllers/user_controller.rb:505
msgid "You need to be logged in to change the text about you on your profile."
@@ -4411,22 +3865,19 @@ msgstr "Necesita identificarse para borrar la foto de su perfil."
#: app/controllers/request_controller.rb:601
msgid ""
"You previously submitted that exact follow up message for this request."
-msgstr "Ya ha enviado esa misma respuesta a esta petición."
+msgstr "Ya ha enviado esa misma respuesta a esta solicitud."
#: app/views/request/upload_response.rhtml:13
msgid ""
"You should have received a copy of the request by email, and you can respond\n"
"by <strong>simply replying</strong> to that email. For your convenience, here is the address:"
-msgstr ""
-"Debería de haber recibido una copia de la petición por correo, y puede contestar\n"
-"<strong>simplemente respondiendo</strong> a ese correo. Para su comodidad, esta es la dirección:"
+msgstr "Debería de haber recibido una copia de la solicitud por correo, y puede contestar\n<strong>simplemente respondiendo</strong> a ese correo. Para su comodidad, esta es la dirección:"
#: app/views/request/show_response.rhtml:34
msgid ""
"You want to <strong>give your postal address</strong> to the authority in "
"private."
-msgstr ""
-"Quiere <strong>darle su dirección postal</strong> al organismo en privado."
+msgstr "Quiere <strong>darle su dirección postal</strong> al organismo en privado."
#: app/views/user/banned.rhtml:9
msgid ""
@@ -4434,10 +3885,7 @@ msgid ""
"send messages to other users. You may continue to view other requests, and set\n"
"up\n"
"email alerts."
-msgstr ""
-"No podrá realizar nuevas peticiones, enviar respuestas, añadir comentarios o\n"
-"contactar con otros usuarios. Podrá continuar viendo otras peticiones y\n"
-"configurando nuevas alertas de correo."
+msgstr "No podrá realizar nuevas peticiones, enviar respuestas, añadir comentarios o\ncontactar con otros usuarios. Podrá continuar viendo otras peticiones y\nconfigurando nuevas alertas de correo."
#: app/controllers/track_controller.rb:162
msgid "You will no longer be emailed updates about "
@@ -4455,9 +3903,7 @@ msgstr "Ahora recibirá actualizaciones por correo sobre "
msgid ""
"You will only get an answer to your request if you follow up\n"
"with the clarification."
-msgstr ""
-"Sólo recibirá una respuesta a su petición si continúa\n"
-"con la aclaración."
+msgstr "Sólo recibirá una respuesta a su solicitud si continúa\ncon la aclaración."
#: app/models/request_mailer.rb:106
msgid "You're long overdue a response to your FOI request - "
@@ -4486,12 +3932,7 @@ msgid ""
" on this website and in search engines. If you\n"
" are thinking of using a pseudonym, please \n"
" <a href=\"%s\">read this first</a>."
-msgstr ""
-"<strong>Su nombre aparecerá públicamente</strong> \n"
-" (<a href=\"%s\">¿por qué?</a>)\n"
-" en esta web y en motores de búsqueda. Si está\n"
-" pensando en utilizar un seudónimo, por favor \n"
-" <a href=\"%s\">lea esto primero</a>."
+msgstr "<strong>Su nombre aparecerá públicamente</strong> \n (<a href=\"%s\">¿por qué?</a>)\n en esta web y en motores de búsqueda. Si está\n pensando en utilizar un seudónimo, por favor \n <a href=\"%s\">lea esto primero</a>."
#: app/views/user/show.rhtml:172
msgid "Your annotations"
@@ -4501,9 +3942,7 @@ msgstr "Sus comentarios"
msgid ""
"Your details have not been given to anyone, unless you choose to reply to this\n"
"message, which will then go directly to the person who wrote the message."
-msgstr ""
-"Sus detalles no han sido compartidos con nadie, salve que elija contestar a este\n"
-"mensaje, que irá directamente a la persona que escribió el mensaje."
+msgstr "Sus detalles no han sido compartidos con nadie, salve que elija contestar a este\nmensaje, que irá directamente a la persona que escribió el mensaje."
#: app/views/user/_signup.rhtml:9 app/views/user/_signin.rhtml:11
#: app/views/user/signchangepassword_send_confirm.rhtml:13
@@ -4519,10 +3958,7 @@ msgid ""
"Your follow up has not been sent because this request has been stopped to "
"prevent spam. Please <a href=\"%s\">contact us</a> if you really want to "
"send a follow up message."
-msgstr ""
-"Su respuesta no ha sido enviada porque esta petición ha sido bloqueada para "
-"evitar spam. Por favor <a href=\"%s\">contáctenos</a> si realmente quiere "
-"enviar una respuesta."
+msgstr "Su respuesta no ha sido enviada porque esta solicitud ha sido bloqueada para evitar spam. Por favor <a href=\"%s\">contáctenos</a> si realmente quiere enviar una respuesta."
#: app/controllers/request_controller.rb:626
msgid "Your follow up message has been sent on its way."
@@ -4530,15 +3966,13 @@ msgstr "Su mensaje de seguimiento está en camino."
#: app/controllers/request_controller.rb:624
msgid "Your internal review request has been sent on its way."
-msgstr "Su petición para una revisión interna está en camino."
+msgstr "Su solicitud para una revisión interna está en camino."
#: app/controllers/help_controller.rb:63
msgid ""
"Your message has been sent. Thank you for getting in touch! We'll get back "
"to you soon."
-msgstr ""
-"Su mensaje ha sido enviado. Gracias por escribir, nos pondremos en contacto "
-"con usted pronto."
+msgstr "Su mensaje ha sido enviado. Gracias por escribir, nos pondremos en contacto con usted pronto."
#: app/controllers/user_controller.rb:383
msgid "Your message to {{recipient_user_name}} has been sent!"
@@ -4551,17 +3985,13 @@ msgstr "Su mensaje aparecerá en <strong>los motores de búsqueda</strong>"
#: app/views/comment/preview.rhtml:10
msgid ""
"Your name and annotation will appear in <strong>search engines</strong>."
-msgstr ""
-"Su nombre y su comentario aparecerán en los <strong>motores de "
-"búsqueda</strong>."
+msgstr "Su nombre y su comentario aparecerán en los <strong>motores de búsqueda</strong>."
#: app/views/request/preview.rhtml:8
msgid ""
"Your name, request and any responses will appear in <strong>search engines</strong>\n"
" (<a href=\"%s\">details</a>)."
-msgstr ""
-"Su nombre, su petición y cualquier respuesta aparecerán en los <strong>motoros de búsqueda</strong>\n"
-" (<a href=\"%s\">detalles</a>)."
+msgstr "Su nombre, su solicitud y cualquier respuesta aparecerán en los <strong>motoros de búsqueda</strong>\n (<a href=\"%s\">detalles</a>)."
#: app/views/user/_signup.rhtml:18
msgid "Your name:"
@@ -4583,37 +4013,29 @@ msgstr "Su contraseña:"
msgid ""
"Your photo will be shown in public <strong>on the Internet</strong>, \n"
" wherever you do something on {{site_name}}."
-msgstr ""
-"Su foto será visible públicamente <strong>en Internet</strong>, \n"
-" cada vez que haga algo en {{site_name}}."
+msgstr "Su foto será visible públicamente <strong>en Internet</strong>, \n cada vez que haga algo en {{site_name}}."
#: app/views/request_mailer/new_response_reminder_alert.rhtml:5
msgid ""
"Your request was called {{info_request}}. Letting everyone know whether you "
"got the information will help us keep tabs on"
-msgstr ""
-"Su petición se llamaba {{info_request}}. Háganos saber si ha recibido la "
-"información para ayudarnos a controlar a"
+msgstr "Su solicitud se llamaba {{info_request}}. Háganos saber si ha recibido la información para ayudarnos a controlar a"
#: app/views/request/new.rhtml:113
msgid "Your request:"
-msgstr "Su petición:"
+msgstr "Su solicitud:"
#: app/views/request/upload_response.rhtml:8
msgid ""
"Your response will <strong>appear on the Internet</strong>, <a "
"href=\"%s\">read why</a> and answers to other questions."
-msgstr ""
-"Su respuesta <strong>aparecerá en Internet</strong>, <a href=\"%s\">lea por "
-"qué</a> y respuestas a otras preguntas."
+msgstr "Su respuesta <strong>aparecerá en Internet</strong>, <a href=\"%s\">lea por qué</a> y respuestas a otras preguntas."
#: app/views/comment/new.rhtml:63
msgid ""
"Your thoughts on what the {{site_name}} <strong>administrators</strong> "
"should do about the request."
-msgstr ""
-"Opine sobre lo que los <strong>administradores</strong> de {{site_name}} "
-"deberían hacer con la petición."
+msgstr "Opine sobre lo que los <strong>administradores</strong> de {{site_name}} deberían hacer con la solicitud."
#: app/models/track_mailer.rb:25
msgid "Your {{site_name}} email alert"
@@ -4631,9 +4053,7 @@ msgstr "Un saludo,"
msgid ""
"a one line summary of the information you are requesting, \n"
"\t\t\te.g."
-msgstr ""
-"un resumen de una línea de la información que solicita, \n"
-"\t\t\tpor ejemplo"
+msgstr "un resumen de una línea de la información que solicita, \n\t\t\tpor ejemplo"
#: app/views/public_body/show.rhtml:37
msgid "admin"
@@ -4656,9 +4076,7 @@ msgstr "y"
msgid ""
"and update the status accordingly. Perhaps <strong>you</strong> might like "
"to help out by doing that?"
-msgstr ""
-"y actualice su estado. ¿Tal vez <strong>usted</strong> quiera ayudarnos a "
-"hacerlo?"
+msgstr "y actualice su estado. ¿Tal vez <strong>usted</strong> quiera ayudarnos a hacerlo?"
#: app/views/request/show.rhtml:64
msgid "and update the status."
@@ -4674,11 +4092,11 @@ msgstr "contestó la solicitud"
#: app/models/track_thing.rb:210
msgid "any <a href=\"/list\">new requests</a>"
-msgstr "cualquier <a href=\"/list\">petición nueva</a>"
+msgstr "cualquier <a href=\"/list\">solicitud nueva</a>"
#: app/models/track_thing.rb:226
msgid "any <a href=\"/list/successful\">successful requests</a>"
-msgstr "cualquier <a href=\"/list/successful\">petición con éxito</a>"
+msgstr "cualquier <a href=\"/list/successful\">solicitud con éxito</a>"
#: app/models/track_thing.rb:115
msgid "anything"
@@ -4698,7 +4116,7 @@ msgstr "esperando una respuesta"
#: app/controllers/public_body_controller.rb:125
msgid "beginning with ‘{{first_letter}}’"
-msgstr ""
+msgstr "comenzando con ‘{{first_letter}}’"
#: app/models/track_thing.rb:94
msgid "between two dates"
@@ -4738,14 +4156,11 @@ msgstr "comentarios"
msgid ""
"containing your postal address, and asking them to reply to this request.\n"
" Or you could phone them."
-msgstr ""
-"incluyendo su dirección postal, y pidiéndoles que contesten a su petición.\n"
-" O pruebe a llamarles por teléfono."
+msgstr "incluyendo su dirección postal, y pidiéndoles que contesten a su solicitud.\n O pruebe a llamarles por teléfono."
#: app/models/info_request_event.rb:358
msgid "display_status only works for incoming and outgoing messages right now"
-msgstr ""
-"display_status sólo funciona para mensajes de entrada y salida ahora mismo"
+msgstr "display_status sólo funciona para mensajes de entrada y salida ahora mismo"
#: app/views/request_mailer/overdue_alert.rhtml:3
msgid "during term time"
@@ -4777,7 +4192,7 @@ msgstr "log exim completado"
#: locale/model_attributes.rb:85
msgid "foi attachment"
-msgstr ""
+msgstr "fichero adjunto"
#: app/views/request_mailer/requires_admin.rhtml:2
msgid "has reported an"
@@ -4798,7 +4213,7 @@ msgstr "durante el periodo escolar"
#: app/controllers/public_body_controller.rb:131
msgid "in the category ‘{{category_name}}’"
-msgstr ""
+msgstr "en la categoría ‘{{category_name}}’"
#: locale/model_attributes.rb:54
msgid "incoming message"
@@ -4840,7 +4255,7 @@ msgstr "hecho."
#: app/controllers/public_body_controller.rb:129
msgid "matching the tag ‘{{tag_name}}’"
-msgstr ""
+msgstr "con la etiqueta ‘{{tag_name}}’"
#: app/views/request/_request_filter_form.rhtml:13
#: app/views/general/search.rhtml:98
@@ -4862,11 +4277,7 @@ msgid ""
" From the request page, try replying to a particular message, rather than sending\n"
" a general followup. If you need to make a general followup, and know\n"
" an email which will go to the right place, please <a href=\"%s\">send it to us</a>."
-msgstr ""
-"ya no existe. \n"
-"Desde la página de la petición, intente responder a un mensaje en concreto, en vez de\n"
-" responder a la petición en general. Si necesita hacerlo y tiene una dirección de\n"
-" correo válida, por favor <a href=\"%s\">mándenosla</a>."
+msgstr "ya no existe. \nDesde la página de la solicitud, intente responder a un mensaje en concreto, en vez de\n responder a la solicitud en general. Si necesita hacerlo y tiene una dirección de\n correo válida, por favor <a href=\"%s\">mándenosla</a>."
#: app/views/request/show.rhtml:72
msgid "normally"
@@ -4894,7 +4305,7 @@ msgstr "organismo público"
#: app/views/request_mailer/not_clarified_alert.rhtml:1
msgid "request."
-msgstr "petición."
+msgstr "solicitud."
#: app/views/request/show.rhtml:89
msgid "requesting an internal review"
@@ -4913,9 +4324,7 @@ msgstr "solicitudes que son {{list_of_statuses}}"
msgid ""
"response as needing administrator attention. Take a look, and reply to this\n"
"email to let them know what you are going to do about it."
-msgstr ""
-"respuesta necesita intervención del administrador. Revísela, y conteste a este\n"
-"correo para indicarles qué va a hacer al respecto."
+msgstr "respuesta necesita intervención del administrador. Revísela, y conteste a este\ncorreo para indicarles qué va a hacer al respecto."
#: app/views/request/show.rhtml:102
msgid "send a follow up message"
@@ -4986,7 +4395,7 @@ msgstr "track thing"
#: app/views/request/_hidden_correspondence.rhtml:32
msgid "unexpected prominence on request event"
-msgstr "visibilidad inesperada en el evento de la petición"
+msgstr "visibilidad inesperada en el evento de la solicitud"
#: app/views/request/followup_bad.rhtml:29
msgid "unknown reason "
@@ -5043,10 +4452,7 @@ msgid ""
"{{existing_request_user}} already\n"
" created the same request on {{date}}. You can either view the <a href=\"{{existing_request}}\">existing request</a>,\n"
" or edit the details below to make a new but similar request."
-msgstr ""
-"{{existing_request_user}} ya\n"
-" envió la misma solicitud el {{date}}. Puede ver <a href=\"{{existing_request}}\">la solicitud existente</a>,\n"
-" o editar la suya a continuación para enviar una nueva petición similar a la anterior."
+msgstr "{{existing_request_user}} ya\n envió la misma solicitud el {{date}}. Puede ver <a href=\"{{existing_request}}\">la solicitud existente</a>,\n o editar la suya a continuación para enviar una nueva similar a la anterior."
#: app/views/request/_after_actions.rhtml:23
msgid "{{info_request_user_name}} only:"
@@ -5054,11 +4460,11 @@ msgstr "Sólo {{info_request_user_name}}:"
#: app/models/info_request.rb:239
msgid "{{law_used_full}} request - {{title}}"
-msgstr ""
+msgstr "solicitud {{law_used_full}} - {{title}}"
#: app/models/info_request.rb:237
msgid "{{law_used_full}} request GQ - {{title}}"
-msgstr ""
+msgstr "solicitud {{law_used_full}} - {{title}}"
#: app/views/general/frontpage.rhtml:62
msgid "{{length_of_time}} ago"
@@ -5092,24 +4498,18 @@ msgstr "{{site_name}} blog y tweets"
msgid ""
"{{site_name}} covers requests to {{number_of_authorities}} authorities, "
"including:"
-msgstr ""
-"{{site_name}} incluye solicitudes a {{number_of_authorities}} organismos "
-"públicos, incluyendo:"
+msgstr "{{site_name}} incluye solicitudes a {{number_of_authorities}} organismos públicos, incluyendo:"
#: app/views/public_body/view_email.rhtml:7
msgid ""
"{{site_name}} sends new requests to <strong>{{request_email}}</strong> for "
"this authority."
-msgstr ""
-"{{site_name}} envía nuevas peticiones a <strong>{{request_email}}</strong> "
-"para este organismo."
+msgstr "{{site_name}} envía nuevas peticiones a <strong>{{request_email}}</strong> para este organismo."
#: app/views/general/frontpage.rhtml:55
msgid ""
"{{site_name}} users have made {{number_of_requests}} requests, including:"
-msgstr ""
-"Los usuarios de {{site_name}} han hecho {{number_of_requests}} solicitudes, "
-"incluyendo:"
+msgstr "Los usuarios de {{site_name}} han hecho {{number_of_requests}} solicitudes, incluyendo:"
#: app/models/user.rb:136
msgid "{{user_name}} (Account suspended)"
@@ -5123,14 +4523,11 @@ msgstr "{{user_name}} añadió un comentario"
msgid ""
"{{user_name}} has annotated your {{law_used_short}} \n"
"request. Follow this link to see what they wrote."
-msgstr ""
-"{{user_name}} ha comentado su petición {{law_used_short}}. \n"
-"Siga este enlace para ver lo que ha escrito."
+msgstr "{{user_name}} ha comentado su solicitud {{law_used_short}}. \nSiga este enlace para ver lo que ha escrito."
#: app/views/contact_mailer/user_message.rhtml:2
msgid "{{user_name}} has used {{site_name}} to send you the message below."
-msgstr ""
-"{{user_name}} ha usado {{site_name}} para enviarle el siguiente mensaje."
+msgstr "{{user_name}} ha usado {{site_name}} para enviarle el siguiente mensaje."
#: app/views/track_mailer/event_digest.rhtml:24
msgid "{{user_name}} sent a follow up message to {{public_body}}"
@@ -5149,13 +4546,8 @@ msgid ""
"{{user}} (<a href=\"{{user_admin_url}}\">admin</a>) made this "
"{{law_used_full}} request (<a href=\"{{request_admin_url}}\">admin</a>) to "
"{{public_body_link}} (<a href=\"{{public_body_admin_url}}\">admin</a>)"
-msgstr ""
-"{{user}} (<a href=\"{{user_admin_url}}\">admin</a>) hizo esta petición "
-"{{law_used_full}} (<a href=\"{{request_admin_url}}\">admin</a>) a "
-"{{public_body_link}} (<a href=\"{{public_body_admin_url}}\">admin</a>)"
+msgstr "{{user}} (<a href=\"{{user_admin_url}}\">admin</a>) hizo esta solicitud {{law_used_full}} (<a href=\"{{request_admin_url}}\">admin</a>) a {{public_body_link}} (<a href=\"{{public_body_admin_url}}\">admin</a>)"
#: app/views/request/show.rhtml:44
msgid "{{user}} made this {{law_used_full}} request"
-msgstr "{{user}} hizo esta petición {{law_used_full}}"
-
-
+msgstr "{{user}} hizo esta solicitud {{law_used_full}}"
diff --git a/public/dispatch.fcgi b/public/dispatch.fcgi
index 3169ba267..ad34d90e4 100755
--- a/public/dispatch.fcgi
+++ b/public/dispatch.fcgi
@@ -4,7 +4,7 @@
# exceptions which forced the FastCGI instance to exit, great for debugging)
# and the number of requests to process before running garbage collection.
#
-# By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log
+# By default, the FastCGI crash log is Rails.root/log/fastcgi.crash.log
# and the GC period is nil (turned off). A reasonable number of requests
# could range from 10-100 depending on the memory footprint of your app.
#
diff --git a/public/images/logo.png b/public/images/logo.png
index d5e87912c..a08bbeb58 100644
--- a/public/images/logo.png
+++ b/public/images/logo.png
Binary files differ
diff --git a/public/javascripts/admin.coffee b/public/javascripts/admin.coffee
new file mode 100644
index 000000000..59c5c0a6f
--- /dev/null
+++ b/public/javascripts/admin.coffee
@@ -0,0 +1,10 @@
+(($) ->
+ $(document).ready(->
+ $('.locales a:first').tab('show')
+ )
+ $('.toggle-hidden').live('click', ->
+ $(@).parents('td').find('div:hidden').show()
+ false
+ )
+)(jQuery)
+
diff --git a/public/javascripts/admin.js b/public/javascripts/admin.js
new file mode 100644
index 000000000..21725ded4
--- /dev/null
+++ b/public/javascripts/admin.js
@@ -0,0 +1,14 @@
+// Generated by CoffeeScript 1.3.1
+(function() {
+
+ (function($) {
+ $(document).ready(function() {
+ return $('.locales a:first').tab('show');
+ });
+ return $('.toggle-hidden').live('click', function() {
+ $(this).parents('td').find('div:hidden').show();
+ return false;
+ });
+ })(jQuery);
+
+}).call(this);
diff --git a/public/javascripts/bootstrap-collapse.js b/public/javascripts/bootstrap-collapse.js
new file mode 100644
index 000000000..9a364468b
--- /dev/null
+++ b/public/javascripts/bootstrap-collapse.js
@@ -0,0 +1,138 @@
+/* =============================================================
+ * bootstrap-collapse.js v2.0.2
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+!function( $ ){
+
+ "use strict"
+
+ var Collapse = function ( element, options ) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+ if (this.options["parent"]) {
+ this.$parent = $(this.options["parent"])
+ }
+
+ this.options.toggle && this.toggle()
+ }
+
+ Collapse.prototype = {
+
+ constructor: Collapse
+
+ , dimension: function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ , show: function () {
+ var dimension = this.dimension()
+ , scroll = $.camelCase(['scroll', dimension].join('-'))
+ , actives = this.$parent && this.$parent.find('.in')
+ , hasData
+
+ if (actives && actives.length) {
+ hasData = actives.data('collapse')
+ actives.collapse('hide')
+ hasData || actives.data('collapse', null)
+ }
+
+ this.$element[dimension](0)
+ this.transition('addClass', 'show', 'shown')
+ this.$element[dimension](this.$element[0][scroll])
+
+ }
+
+ , hide: function () {
+ var dimension = this.dimension()
+ this.reset(this.$element[dimension]())
+ this.transition('removeClass', 'hide', 'hidden')
+ this.$element[dimension](0)
+ }
+
+ , reset: function ( size ) {
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ [dimension](size || 'auto')
+ [0].offsetWidth
+
+ this.$element[size ? 'addClass' : 'removeClass']('collapse')
+
+ return this
+ }
+
+ , transition: function ( method, startEvent, completeEvent ) {
+ var that = this
+ , complete = function () {
+ if (startEvent == 'show') that.reset()
+ that.$element.trigger(completeEvent)
+ }
+
+ this.$element
+ .trigger(startEvent)
+ [method]('in')
+
+ $.support.transition && this.$element.hasClass('collapse') ?
+ this.$element.one($.support.transition.end, complete) :
+ complete()
+ }
+
+ , toggle: function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+ /* COLLAPSIBLE PLUGIN DEFINITION
+ * ============================== */
+
+ $.fn.collapse = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('collapse')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.collapse.defaults = {
+ toggle: true
+ }
+
+ $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSIBLE DATA-API
+ * ==================== */
+
+ $(function () {
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
+ var $this = $(this), href
+ , target = $this.attr('data-target')
+ || e.preventDefault()
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
+ $(target).collapse(option)
+ })
+ })
+
+}( window.jQuery ); \ No newline at end of file
diff --git a/public/javascripts/bootstrap-tab.js b/public/javascripts/bootstrap-tab.js
new file mode 100644
index 000000000..26c9ece75
--- /dev/null
+++ b/public/javascripts/bootstrap-tab.js
@@ -0,0 +1,130 @@
+/* ========================================================
+ * bootstrap-tab.js v2.0.1
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function( $ ){
+
+ "use strict"
+
+ /* TAB CLASS DEFINITION
+ * ==================== */
+
+ var Tab = function ( element ) {
+ this.element = $(element)
+ }
+
+ Tab.prototype = {
+
+ constructor: Tab
+
+ , show: function () {
+ var $this = this.element
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
+ , selector = $this.attr('data-target')
+ , previous
+ , $target
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ( $this.parent('li').hasClass('active') ) return
+
+ previous = $ul.find('.active a').last()[0]
+
+ $this.trigger({
+ type: 'show'
+ , relatedTarget: previous
+ })
+
+ $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ , activate: function ( element, container, callback) {
+ var $active = container.find('> .active')
+ , transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if ( element.parent('.dropdown-menu') ) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active.one($.support.transition.end, next) :
+ next()
+
+ $active.removeClass('in')
+ }
+ }
+
+
+ /* TAB PLUGIN DEFINITION
+ * ===================== */
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tab')
+ if (!data) $this.data('tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+ * ============ */
+
+ $(function () {
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+ })
+
+}( window.jQuery ); \ No newline at end of file
diff --git a/public/javascripts/jquery.js b/public/javascripts/jquery.js
index 48590ecb9..16ad06c5a 100644
--- a/public/javascripts/jquery.js
+++ b/public/javascripts/jquery.js
@@ -1,18 +1,4 @@
-/*!
- * jQuery JavaScript Library v1.6.2
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Jun 30 14:16:56 2011 -0400
- */
-(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
-shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
-)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/public/robots.txt b/public/robots.txt
index 6a8628c93..a187d0775 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -13,17 +13,18 @@
# http://help.yahoo.com/l/us/yahoo/search/webcrawler/slurp-02.html
User-agent: *
-Disallow: /annotate/
-Disallow: /new/
-Disallow: /search/
-Disallow: /similar/
-Disallow: /track/
-Disallow: /upload/
-Disallow: /user/contact/
-Disallow: /feed/
-Disallow: /profile/
-Disallow: /signin
-Disallow: /body/*/view_email$
+Disallow: */annotate/
+Disallow: */new/
+Disallow: */search/
+Disallow: */similar/
+Disallow: */track/
+Disallow: */upload/
+Disallow: */user/contact/
+Disallow: */feed/
+Disallow: */profile/
+Disallow: */signin
+Disallow: */request/*/response/
+Disallow: */body/*/view_email$
# The following adding Jan 2012 to stop robots crawling pages
# generated in error (see
diff --git a/public/stylesheets/main.css b/public/stylesheets/main.css
index 87d3a3eed..31a8ba63c 100644
--- a/public/stylesheets/main.css
+++ b/public/stylesheets/main.css
@@ -41,7 +41,11 @@ border-width:1px;
}
#navigation_search input#navigation_search_query {
-width:14em;
+width:20.25em;
+font-size: 0.8em;
+padding: 5px;
+margin: -1px -1px 0 0;
+
}
#navigation_search p {
@@ -307,7 +311,7 @@ color:#A68C2E;
background-image:url(../images/navimg/status-icons-fail.png);
}
-.icon_not_held {
+.icon_not_held, .icon_attention_requested {
background-image:url(/images/status-not-held.png);
color:#A68C2E;
}
@@ -636,13 +640,15 @@ margin-top:-1em;
margin:0 0 0 9em;
}
-p#sign_in_reason {
+p#sign_in_reason, p#superuser_message {
text-align:center;
font-size:1.4em;
font-weight:700;
line-height:1em;
}
-
+p#superuser_message {
+ font-size:1.2em;
+}
#signup,#signin {
clear:none;
margin-bottom:1em;
@@ -876,6 +882,34 @@ vertical-align:middle;
text-decoration:none;
}
+#follow_box {
+
+ padding: 4px;
+}
+
+#follow_box .feed_link {
+ text-align: center;
+}
+
+#follow_count {
+ color: #93278F;
+ font-family: 'DeliciousBold', Arial, sans-serif;
+ font-weight: 700;
+ font-size: 60px;
+ line-height: 60px;
+ text-align: right;
+ float: left;
+ margin-top: -15px;
+ margin-right: 5px;
+}
+.follow_count {
+ clear:both;
+}
+
+#follow_box h2 {
+ margin: 0;
+}
+
h2,dt {
font-size:1.8em;
}
@@ -910,7 +944,7 @@ border:none;
#navigation_search input[type=image] {
border:0;
-margin-bottom:-8px;
+margin-bottom:-9px;
margin-left:-4px;
}
@@ -1249,6 +1283,9 @@ cursor:pointer;
padding:5px 6px;
}
+.feed_link a.link_button_green {
+ color:white;
+}
a.link_button_green_large {
background:url(/images/button-gradient-large.png);
font-size:2em;
@@ -1633,6 +1670,11 @@ width:575px;
padding-right:50px;
float:left;
}
+.medium_column {
+width:575px;
+padding-right:50px;
+}
+
#authority_preview .request_left,
#authority_preview #header_left {
width: 100%;
diff --git a/script/about b/script/about
index f2b98742d..49a7c2609 100755
--- a/script/about
+++ b/script/about
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/about'
diff --git a/script/annotate-models b/script/annotate-models
new file mode 100755
index 000000000..b6e01c010
--- /dev/null
+++ b/script/annotate-models
@@ -0,0 +1,5 @@
+#!/bin/bash
+#
+# annotates the models in app/ with schema information
+
+bundle exec annotate -m -p before --exclude tests,fixtures
diff --git a/script/breakpointer b/script/breakpointer
index 609564148..46a01d1b2 100755
--- a/script/breakpointer
+++ b/script/breakpointer
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/breakpointer'
diff --git a/script/dbconsole b/script/dbconsole
index c25c5afcd..39042fad3 100755
--- a/script/dbconsole
+++ b/script/dbconsole
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/dbconsole'
diff --git a/script/destroy b/script/destroy
index e63ac0ef5..fddc5160d 100755
--- a/script/destroy
+++ b/script/destroy
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/destroy'
diff --git a/script/generate b/script/generate
index 8c0486a09..fb8139d12 100755
--- a/script/generate
+++ b/script/generate
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/generate'
diff --git a/script/generate_pot.sh b/script/generate_pot.sh
index f6c82dda7..c0540c3d9 100755
--- a/script/generate_pot.sh
+++ b/script/generate_pot.sh
@@ -10,8 +10,8 @@ git status | grep app.po | awk '{print $3}' | xargs git add
git commit -m "Backup latest po files from Transifex"
# now regenerate POT and PO files from Alaveteli source
-rake gettext:store_model_attributes
-rake gettext:findpot
+bundle exec rake gettext:store_model_attributes
+bundle exec rake gettext:findpot
# upload the result to Transifex
tx push -t
diff --git a/script/handle-mail-replies b/script/handle-mail-replies
index 68cab9035..7590f5848 100755
--- a/script/handle-mail-replies
+++ b/script/handle-mail-replies
@@ -18,13 +18,7 @@ load "config.rb"
MySociety::Config.set_file(File.join($alaveteli_dir, 'config', 'general'), true)
MySociety::Config.load_default
-require 'rubygems'
-if File.exist? File.join($alaveteli_dir,'vendor','rails','Rakefile')
- $:.push(File.join($alaveteli_dir, "vendor", "rails", "actionmailer", "lib", "action_mailer", "vendor", "tmail-1.2.7"))
- require 'tmail'
-else
- require 'action_mailer'
-end
+require 'action_mailer'
def main(in_test_mode)
Dir.chdir($alaveteli_dir) do
@@ -49,9 +43,22 @@ def main(in_test_mode)
return 1
end
- if is_oof? message
- # Discard out-of-office messages
- return 2
+ # If we are still here, there are no permanent failures,
+ # so if the message is a multipart/report then it must be
+ # reporting a temporary failure. In this case we discard it
+ if message.content_type == "multipart/report"
+ return 1
+ end
+
+ # Another style of temporary failure message
+ subject = message.header_string("Subject")
+ if message.content_type == "multipart/mixed" && subject == "Delivery Status Notification (Delay)"
+ return 1
+ end
+
+ # Discard out-of-office messages
+ if is_oof?(message)
+ return 2 # Use a different return code, to distinguish OOFs from bounces
end
# Otherwise forward the message on
@@ -100,6 +107,15 @@ def permanently_failed_addresses(message)
end
end
+ subject = message.header_string("Subject")
+ # Then look for the style we’ve seen in WebShield bounces
+ # (These do not have a return path of <> in the cases I have seen.)
+ if subject == "Returned Mail: Error During Delivery"
+ if message.body =~ /^\s*---- Failed Recipients ----\s*((?:<[^>]+>\n)+)/
+ return $1.scan(/<([^>]+)>/).flatten
+ end
+ end
+
return []
end
@@ -151,7 +167,7 @@ end
def load_rails
require File.join('config', 'boot')
- require RAILS_ROOT + '/config/environment'
+ require Rails.root + '/config/environment'
end
def record_bounce(email_address, bounce_message)
diff --git a/script/load-sample-data b/script/load-sample-data
index e5f1be4cd..86e1af128 100755
--- a/script/load-sample-data
+++ b/script/load-sample-data
@@ -6,7 +6,7 @@
LOC=`dirname "$0"`
-rake --silent spec:db:fixtures:load
+bundle exec rake --silent spec:db:fixtures:load
"$LOC/runner" /dev/stdin <<END
env = ENV["RAILS_ENV"]
diff --git a/script/performance/benchmarker b/script/performance/benchmarker
index a94253aba..28bfceea0 100755
--- a/script/performance/benchmarker
+++ b/script/performance/benchmarker
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/performance/benchmarker'
diff --git a/script/performance/profiler b/script/performance/profiler
index e9e5b071d..11baf44f2 100755
--- a/script/performance/profiler
+++ b/script/performance/profiler
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/performance/profiler'
diff --git a/script/performance/request b/script/performance/request
index 658c80ef2..fff6fe660 100755
--- a/script/performance/request
+++ b/script/performance/request
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/performance/request'
diff --git a/script/plugin b/script/plugin
index 18ae72620..49f5c441f 100755
--- a/script/plugin
+++ b/script/plugin
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/plugin'
diff --git a/script/process/inspector b/script/process/inspector
index 696551c6b..467962602 100755
--- a/script/process/inspector
+++ b/script/process/inspector
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/process/inspector'
diff --git a/script/process/reaper b/script/process/reaper
index a03da9387..2eea898db 100755
--- a/script/process/reaper
+++ b/script/process/reaper
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/process/reaper'
diff --git a/script/process/spawner b/script/process/spawner
index 6852fba27..ac417c3a7 100755
--- a/script/process/spawner
+++ b/script/process/spawner
@@ -1,3 +1,3 @@
#!/usr/bin/env ruby
-require File.dirname(__FILE__) + '/../../config/boot.rb'
+require File.expand_path(File.dirname(__FILE__) + '/../config/boot.rb')
require 'commands/process/spawner'
diff --git a/script/purge-varnish b/script/purge-varnish
new file mode 100755
index 000000000..932cf6635
--- /dev/null
+++ b/script/purge-varnish
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+LOC=`dirname $0`
+
+if [ "$1" == "--loop" ]
+then
+ "$LOC/runner" 'PurgeRequest.purge_all_loop'
+else
+ "$LOC/runner" 'PurgeRequest.purge_all'
+fi
+
diff --git a/script/rails-post-deploy b/script/rails-post-deploy
index d9e9bb3f1..575b995f9 100755
--- a/script/rails-post-deploy
+++ b/script/rails-post-deploy
@@ -74,12 +74,30 @@ then
echo "ENV['RAILS_ENV'] ||= 'production'" > config/rails_env.rb
fi
+if [ "$OPTION_STAGING_SITE" = "0" ]
+then
+ bundle exec bundle install --without development:test --deployment
+else
+ bundle exec bundle install
+fi
+
+if [ -n "$OPTION_THEME_URLS" ]
+then
+ for THEME in "${OPTION_THEME_URLS[@]}"
+ do
+ echo "Installing $THEME..."
+ script/plugin install --force $THEME
+ done
+fi
+
+# Old version of the above, for backwards compatibility
if [ -n "$OPTION_THEME_URL" ]
then
+ echo "Installing $OPTION_THEME_URL using deprecated THEME_URL..."
script/plugin install --force $OPTION_THEME_URL
fi
# upgrade database
-rake db:migrate #--trace
+bundle exec rake db:migrate #--trace
diff --git a/script/rebuild-xapian-index b/script/rebuild-xapian-index
index 5986f5259..3012511de 100755
--- a/script/rebuild-xapian-index
+++ b/script/rebuild-xapian-index
@@ -1,4 +1,4 @@
#!/bin/bash
cd `dirname $0`
-rake --silent "$@" xapian:rebuild_index models="PublicBody User InfoRequestEvent"
+bundle exec rake --silent "$@" xapian:rebuild_index models="PublicBody User InfoRequestEvent"
diff --git a/script/spec-all-pairs b/script/spec-all-pairs
index 5b6439a4e..6d7bb17c4 100755
--- a/script/spec-all-pairs
+++ b/script/spec-all-pairs
@@ -6,7 +6,7 @@
log_file=/dev/null
test_pair () {
- rake db:test:prepare > /dev/null 2>&1
+ bundle exec rake db:test:prepare > /dev/null 2>&1
output=$(script/spec "$1" "$2" 2>&1)
if [ $? -eq 0 ]
then
diff --git a/script/spec_server b/script/spec_server
index 1e839355f..dfdf8ff6c 100755
--- a/script/spec_server
+++ b/script/spec_server
@@ -41,7 +41,7 @@ module Spec
load File.dirname(__FILE__) + '/../spec/spec_helper.rb'
if in_memory_database?
- load "#{RAILS_ROOT}/db/schema.rb" # use db agnostic schema by default
+ load "#{Rails.root}/db/schema.rb" # use db agnostic schema by default
ActiveRecord::Migrator.up('db/migrate') # use migrations
end
@@ -80,7 +80,7 @@ def daemonize(pid_file = nil)
return yield if $DEBUG
pid = Process.fork{
Process.setsid
- Dir.chdir(RAILS_ROOT)
+ Dir.chdir(Rails.root)
trap("SIGINT"){ exit! 0 }
trap("SIGTERM"){ exit! 0 }
trap("SIGHUP"){ restart_test_server }
diff --git a/script/test-run b/script/test-run
index 4c7a0e3ec..7810b57d5 100755
--- a/script/test-run
+++ b/script/test-run
@@ -1,5 +1,5 @@
#!/bin/bash
cd ../
-rake spec
+bundle exec rake spec
diff --git a/script/update-xapian-index b/script/update-xapian-index
index 6ece02de0..e365e2fec 100755
--- a/script/update-xapian-index
+++ b/script/update-xapian-index
@@ -1,5 +1,5 @@
#!/bin/bash
cd `dirname $0`
-rake --silent xapian:update_index "$@"
+bundle exec rake --silent xapian:update_index "$@"
diff --git a/spec/controllers/admin_censor_rule_controller_spec.rb b/spec/controllers/admin_censor_rule_controller_spec.rb
new file mode 100644
index 000000000..8893a858b
--- /dev/null
+++ b/spec/controllers/admin_censor_rule_controller_spec.rb
@@ -0,0 +1,19 @@
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+
+describe AdminCensorRuleController, "when making censor rules from the admin interface" do
+ integrate_views
+ before { basic_auth_login @request }
+
+ it "should create a censor rule and purge the corresponding request from varnish" do
+ ir = info_requests(:fancy_dog_request)
+ post :create, :censor_rule => {
+ :text => "meat",
+ :replacement => "tofu",
+ :last_edit_comment => "none",
+ :info_request => ir
+ }
+ PurgeRequest.all().first.model_id.should == ir.id
+ end
+
+
+end
diff --git a/spec/controllers/admin_public_body_controller_spec.rb b/spec/controllers/admin_public_body_controller_spec.rb
index 1e82a0ba4..171cb21b5 100644
--- a/spec/controllers/admin_public_body_controller_spec.rb
+++ b/spec/controllers/admin_public_body_controller_spec.rb
@@ -4,10 +4,6 @@ describe AdminPublicBodyController, "when administering public bodies" do
integrate_views
before do
- username = MySociety::Config.get('ADMIN_USERNAME', '')
- password = MySociety::Config.get('ADMIN_PASSWORD', '')
- basic_auth_login @request
-
@old_filters = ActionController::Routing::Routes.filters
ActionController::Routing::Routes.filters = RoutingFilter::Chain.new
end
@@ -80,19 +76,29 @@ describe AdminPublicBodyController, "when administering public bodies and paying
integrate_views
+ before do
+ config = MySociety::Config.load_default()
+ config['SKIP_ADMIN_AUTH'] = false
+ basic_auth_login @request
+ end
+ after do
+ config = MySociety::Config.load_default()
+ config['SKIP_ADMIN_AUTH'] = true
+ end
+
+
it "disallows non-authenticated users to do anything" do
@request.env["HTTP_AUTHORIZATION"] = ""
n = PublicBody.count
post :destroy, { :id => 3 }
- response.code.should == "401"
+ response.should redirect_to(:controller=>'user', :action=>'signin', :token=>PostRedirect.get_last_post_redirect.token)
PublicBody.count.should == n
session[:using_admin].should == nil
end
- it "skips admin authorisation when no username/password set" do
+ it "skips admin authorisation when SKIP_ADMIN_AUTH set" do
config = MySociety::Config.load_default()
- config['ADMIN_USERNAME'] = ''
- config['ADMIN_PASSWORD'] = ''
+ config['SKIP_ADMIN_AUTH'] = true
@request.env["HTTP_AUTHORIZATION"] = ""
n = PublicBody.count
@@ -101,30 +107,44 @@ describe AdminPublicBodyController, "when administering public bodies and paying
session[:using_admin].should == 1
end
- it "skips admin authorisation when no username set" do
+ it "doesn't let people with bad credentials log in" do
config = MySociety::Config.load_default()
- config['ADMIN_USERNAME'] = ''
+ config['SKIP_ADMIN_AUTH'] = false
+ config['ADMIN_USERNAME'] = 'biz'
config['ADMIN_PASSWORD'] = 'fuz'
@request.env["HTTP_AUTHORIZATION"] = ""
-
n = PublicBody.count
+ basic_auth_login(@request, "baduser", "badpassword")
post :destroy, { :id => public_bodies(:forlorn_public_body).id }
- PublicBody.count.should == n - 1
- session[:using_admin].should == 1
+ response.should redirect_to(:controller=>'user', :action=>'signin', :token=>PostRedirect.get_last_post_redirect.token)
+ PublicBody.count.should == n
+ session[:using_admin].should == nil
end
- it "forces authorisation when password and username set" do
+
+ it "allows people with good credentials log in using HTTP Basic Auth" do
config = MySociety::Config.load_default()
+ config['SKIP_ADMIN_AUTH'] = false
config['ADMIN_USERNAME'] = 'biz'
config['ADMIN_PASSWORD'] = 'fuz'
@request.env["HTTP_AUTHORIZATION"] = ""
n = PublicBody.count
- basic_auth_login(@request, "baduser", "badpassword")
+ basic_auth_login(@request, "biz", "fuz")
+ post :show, { :id => public_bodies(:humpadink_public_body).id, :emergency => 1}
+ session[:using_admin].should == 1
+ n = PublicBody.count
post :destroy, { :id => public_bodies(:forlorn_public_body).id }
- response.code.should == "401"
- PublicBody.count.should == n
- session[:using_admin].should == nil
+ session[:using_admin].should == 1
+ PublicBody.count.should == n - 1
end
+ it "allows superusers to do stuff" do
+ session[:user_id] = users(:admin_user).id
+ @request.env["HTTP_AUTHORIZATION"] = ""
+ n = PublicBody.count
+ post :destroy, { :id => public_bodies(:forlorn_public_body).id }
+ PublicBody.count.should == n - 1
+ session[:using_admin].should == 1
+ end
end
@@ -132,12 +152,6 @@ end
describe AdminPublicBodyController, "when administering public bodies with i18n" do
integrate_views
- before do
- username = MySociety::Config.get('ADMIN_USERNAME', '')
- password = MySociety::Config.get('ADMIN_PASSWORD', '')
- basic_auth_login @request
- end
-
it "shows the index page" do
get :index
end
@@ -201,10 +215,6 @@ describe AdminPublicBodyController, "when creating public bodies with i18n" do
integrate_views
before do
- username = MySociety::Config.get('ADMIN_USERNAME', '')
- password = MySociety::Config.get('ADMIN_PASSWORD', '')
- basic_auth_login @request
-
@old_filters = ActionController::Routing::Routes.filters
ActionController::Routing::Routes.filters = RoutingFilter::Chain.new
end
diff --git a/spec/controllers/admin_request_controller_spec.rb b/spec/controllers/admin_request_controller_spec.rb
index ece1fe389..b0468822a 100644
--- a/spec/controllers/admin_request_controller_spec.rb
+++ b/spec/controllers/admin_request_controller_spec.rb
@@ -86,6 +86,27 @@ describe AdminRequestController, "when administering the holding pen" do
response.should redirect_to(:controller=>'admin_request', :action=>'show', :id=>101)
InfoRequest.holding_pen_request.incoming_messages.length.should == 0
end
+ it "allows redelivery to more than one request" do
+ ir1 = info_requests(:fancy_dog_request)
+ ir1.allow_new_responses_from = 'nobody'
+ ir1.handle_rejected_responses = 'holding_pen'
+ ir1.save!
+ ir1.incoming_messages.length.should == 1
+ ir2 = info_requests(:another_boring_request)
+ ir2.incoming_messages.length.should == 1
+
+ receive_incoming_mail('incoming-request-plain.email', ir1.incoming_email, "frob@nowhere.com")
+ InfoRequest.holding_pen_request.incoming_messages.length.should == 1
+
+ new_im = InfoRequest.holding_pen_request.incoming_messages[0]
+ post :redeliver_incoming, :redeliver_incoming_message_id => new_im.id, :url_title => "#{ir1.url_title},#{ir2.url_title}"
+ ir1.reload
+ ir1.incoming_messages.length.should == 2
+ ir2.reload
+ ir2.incoming_messages.length.should == 2
+ response.should redirect_to(:controller=>'admin_request', :action=>'show', :id=>ir2.id)
+ InfoRequest.holding_pen_request.incoming_messages.length.should == 0
+ end
it "guesses a misdirected request" do
ir = info_requests(:fancy_dog_request)
@@ -110,4 +131,26 @@ describe AdminRequestController, "when administering the holding pen" do
assert_equal File.exists?(raw_email), false
end
+ it "shows a suitable default 'your email has been hidden' message" do
+ ir = info_requests(:fancy_dog_request)
+ get :show, :id => ir.id
+ assigns[:request_hidden_user_explanation].should include(ir.user.name)
+ assigns[:request_hidden_user_explanation].should include("vexatious")
+ get :show, :id => ir.id, :reason => "not_foi"
+ assigns[:request_hidden_user_explanation].should_not include("vexatious")
+ assigns[:request_hidden_user_explanation].should include("not a valid FOI")
+ end
+
+ it "hides requests and sends a notification email that it has done so" do
+ ir = info_requests(:fancy_dog_request)
+ post :hide_request, :id => ir.id, :explanation => "Foo", :reason => "vexatious"
+ ir.reload
+ ir.prominence.should == "requester_only"
+ ir.described_state.should == "vexatious"
+ deliveries = ActionMailer::Base.deliveries
+ deliveries.size.should == 1
+ mail = deliveries[0]
+ mail.body.should =~ /Foo/
+ end
+
end
diff --git a/spec/controllers/admin_user_controller_spec.rb b/spec/controllers/admin_user_controller_spec.rb
index c2d645fd2..cf3665c9f 100644
--- a/spec/controllers/admin_user_controller_spec.rb
+++ b/spec/controllers/admin_user_controller_spec.rb
@@ -2,9 +2,6 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe AdminUserController, "when administering users" do
integrate_views
- before do
- basic_auth_login @request
- end
it "shows the index/list page" do
get :index
diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb
index 81f4ed6d5..8a08ab7d0 100644
--- a/spec/controllers/general_controller_spec.rb
+++ b/spec/controllers/general_controller_spec.rb
@@ -215,5 +215,10 @@ describe GeneralController, "when searching" do
assigns[:xapian_users].results.map{|x|x[:model]}.should == [u]
end
+ it "should show tracking links for requests-only searches" do
+ get :search, :combined => ['"bob"', "requests"]
+ response.body.should include('Track this search')
+ end
+
end
diff --git a/spec/controllers/public_body_controller_spec.rb b/spec/controllers/public_body_controller_spec.rb
index e6eca0781..9eca43aee 100644
--- a/spec/controllers/public_body_controller_spec.rb
+++ b/spec/controllers/public_body_controller_spec.rb
@@ -1,7 +1,5 @@
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-require 'json'
-
describe PublicBodyController, "when showing a body" do
integrate_views
diff --git a/spec/controllers/request_controller_spec.rb b/spec/controllers/request_controller_spec.rb
index 9add32f1e..c70284748 100644
--- a/spec/controllers/request_controller_spec.rb
+++ b/spec/controllers/request_controller_spec.rb
@@ -1,8 +1,6 @@
# -*- coding: utf-8 -*-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-require 'json'
-
describe RequestController, "when listing recent requests" do
before(:each) do
@@ -66,6 +64,14 @@ describe RequestController, "when listing recent requests" do
assigns[:cache_tag].size.should <= 32
end
+ it "should vary the cache tag with locale" do
+ get :list, :view => 'all', :request_date_after => '13/10/2007', :request_date_before => '01/11/2007'
+ en_tag = assigns[:cache_tag]
+ session[:locale] = :es
+ get :list, :view => 'all', :request_date_after => '13/10/2007', :request_date_before => '01/11/2007'
+ assigns[:cache_tag].should_not == en_tag
+ end
+
it "should list internal_review requests as unresolved ones" do
get :list, :view => 'awaiting'
@@ -119,10 +125,72 @@ describe RequestController, "when listing recent requests" do
end
+describe RequestController, "when changing things that appear on the request page" do
+
+ integrate_views
+
+ it "should purge the downstream cache when mail is received" do
+ ir = info_requests(:fancy_dog_request)
+ receive_incoming_mail('incoming-request-plain.email', ir.incoming_email)
+ PurgeRequest.all().first.model_id.should == ir.id
+ end
+ it "should purge the downstream cache when a comment is added" do
+ ir = info_requests(:fancy_dog_request)
+ new_comment = info_requests(:fancy_dog_request).add_comment('I also love making annotations.', users(:bob_smith_user))
+ PurgeRequest.all().first.model_id.should == ir.id
+ end
+ it "should purge the downstream cache when a followup is made" do
+ session[:user_id] = users(:bob_smith_user).id
+ ir = info_requests(:fancy_dog_request)
+ post :show_response, :outgoing_message => { :body => "What a useless response! You suck.", :what_doing => 'normal_sort' }, :id => ir.id, :incoming_message_id => incoming_messages(:useless_incoming_message), :submitted_followup => 1
+ PurgeRequest.all().first.model_id.should == ir.id
+ end
+ it "should purge the downstream cache when the request is categorised" do
+ ir = info_requests(:fancy_dog_request)
+ ir.set_described_state('waiting_clarification')
+ PurgeRequest.all().first.model_id.should == ir.id
+ end
+ it "should purge the downstream cache when the authority data is changed" do
+ ir = info_requests(:fancy_dog_request)
+ ir.public_body.name = "Something new"
+ ir.public_body.save!
+ PurgeRequest.all().map{|x| x.model_id}.should =~ ir.public_body.info_requests.map{|x| x.id}
+ end
+ it "should purge the downstream cache when the user details are changed" do
+ ir = info_requests(:fancy_dog_request)
+ ir.user.name = "Something new"
+ ir.user.save!
+ PurgeRequest.all().map{|x| x.model_id}.should =~ ir.user.info_requests.map{|x| x.id}
+ end
+ it "should purge the downstream cache when censor rules have changed" do
+ # XXX really, CensorRules should execute expiry logic as part
+ # of the after_save of the model. Currently this is part of
+ # the AdminCensorRuleController logic, so must be tested from
+ # there. Leaving this stub test in place as a reminder
+ end
+ it "should purge the downstream cache when something is hidden by an admin" do
+ ir = info_requests(:fancy_dog_request)
+ ir.prominence = 'hidden'
+ ir.save!
+ PurgeRequest.all().first.model_id.should == ir.id
+ end
+ it "should not create more than one entry for any given resourcce" do
+ ir = info_requests(:fancy_dog_request)
+ ir.prominence = 'hidden'
+ ir.save!
+ PurgeRequest.all().count.should == 1
+ ir = info_requests(:fancy_dog_request)
+ ir.prominence = 'hidden'
+ ir.save!
+ PurgeRequest.all().count.should == 1
+ end
+end
+
describe RequestController, "when showing one request" do
before(:each) do
load_raw_emails_data
+ FileUtils.rm_rf File.join(File.dirname(__FILE__), "../../cache/zips")
end
it "should be successful" do
@@ -186,7 +254,7 @@ describe RequestController, "when showing one request" do
describe 'when handling incoming mail' do
integrate_views
-
+
it "should receive incoming messages, send email to creator, and show them" do
ir = info_requests(:fancy_dog_request)
ir.incoming_messages.each { |x| x.parse_raw_email! }
@@ -222,7 +290,6 @@ describe RequestController, "when showing one request" do
get :get_attachment, :incoming_message_id => ir.incoming_messages[1].id, :id => ir.id, :part => 2, :file_name => ['hello.txt'], :skip_cache => 1
response.content_type.should == "text/plain"
response.should have_text(/Second hello/)
-
get :get_attachment, :incoming_message_id => ir.incoming_messages[1].id, :id => ir.id, :part => 3, :file_name => ['hello.txt'], :skip_cache => 1
response.content_type.should == "text/plain"
response.should have_text(/First hello/)
@@ -351,6 +418,15 @@ describe RequestController, "when showing one request" do
response.should have_text(/an unusual sort of file/)
end
+ it "should apply a content-disposition header" do
+ ir = info_requests(:fancy_dog_request)
+ receive_incoming_mail('incoming-request-attachment-unknown-extension.email', ir.incoming_email)
+ ir.reload
+ get :get_attachment, :incoming_message_id => ir.incoming_messages[1].id, :id => ir.id, :part => 2, :file_name => ['hello.qwglhm'], :skip_cache => 1
+ response.headers.should include("Content-Disposition")
+ response.headers["Content-Disposition"].should include('hello.qwglhm')
+ end
+
it "should not download attachments with wrong file name" do
ir = info_requests(:fancy_dog_request)
receive_incoming_mail('incoming-request-two-same-name.email', ir.incoming_email)
@@ -559,7 +635,7 @@ end
# XXX do this for invalid ids
# it "should render 404 file" do
-# response.should render_template("#{RAILS_ROOT}/public/404.html")
+# response.should render_template("#{Rails.root}/public/404.html")
# response.headers["Status"].should == "404 Not Found"
# end
@@ -984,6 +1060,7 @@ describe RequestController, "when classifying an information request" do
session[:user_id] = @admin_user.id
@dog_request = info_requests(:fancy_dog_request)
InfoRequest.stub!(:find).and_return(@dog_request)
+ @dog_request.stub!(:each).and_return([@dog_request])
end
it 'should update the status of the request' do
@@ -1025,6 +1102,7 @@ describe RequestController, "when classifying an information request" do
@dog_request.user = @admin_user
@dog_request.save!
InfoRequest.stub!(:find).and_return(@dog_request)
+ @dog_request.stub!(:each).and_return([@dog_request])
end
it 'should update the status of the request' do
@@ -1061,6 +1139,7 @@ describe RequestController, "when classifying an information request" do
@request_owner = users(:bob_smith_user)
session[:user_id] = @request_owner.id
@dog_request.awaiting_description.should == true
+ @dog_request.stub!(:each).and_return([@dog_request])
end
it "should successfully classify response if logged in as user controlling request" do
@@ -1128,6 +1207,7 @@ describe RequestController, "when classifying an information request" do
@request_owner = users(:bob_smith_user)
session[:user_id] = @request_owner.id
@dog_request = info_requests(:fancy_dog_request)
+ @dog_request.stub!(:each).and_return([@dog_request])
InfoRequest.stub!(:find).and_return(@dog_request)
@old_filters = ActionController::Routing::Routes.filters
ActionController::Routing::Routes.filters = RoutingFilter::Chain.new
@@ -1737,6 +1817,71 @@ describe RequestController, "when doing type ahead searches" do
get :search_typeahead, :q => "dog -chicken"
assigns[:xapian_requests].results.size.should == 1
end
+end
+
+describe RequestController, "when showing similar requests" do
+ integrate_views
+
+ it "should work" do
+ get :similar, :url_title => info_requests(:badger_request).url_title
+ response.should render_template("request/similar")
+ assigns[:info_request].should == info_requests(:badger_request)
+ end
+
+ it "should show similar requests" do
+ badger_request = info_requests(:badger_request)
+ get :similar, :url_title => badger_request.url_title
+
+ # Xapian seems to think *all* the requests are similar
+ assigns[:xapian_object].results.map{|x|x[:model].info_request}.should =~ InfoRequest.all.reject {|x| x == badger_request}
+ end
+
+ it "should 404 for non-existent paths" do
+ lambda {
+ get :similar, :url_title => "there_is_really_no_such_path_owNAFkHR"
+ }.should raise_error(ActiveRecord::RecordNotFound)
+ end
+
+end
+
+
+describe RequestController, "when reporting a request" do
+ integrate_views
+
+ it "should mark a request as having been reported" do
+ ir = info_requests(:badger_request)
+ title = ir.url_title
+ get :show, :url_title => title
+ assigns[:info_request].attention_requested.should == false
+ get :report_request, :url_title => title
+ get :show, :url_title => title
+ assigns[:info_request].attention_requested.should == true
+ assigns[:info_request].described_state.should == "attention_requested"
+ end
+
+ it "should not allow a request to be reported twice" do
+ title = info_requests(:badger_request).url_title
+ get :report_request, :url_title => title
+ get :show, :url_title => title
+ response.body.should include("has been reported")
+ get :report_request, :url_title => title
+ get :show, :url_title => title
+ response.body.should include("has already been reported")
+ end
+
+ it "should let users know a request has been reported" do
+ title = info_requests(:badger_request).url_title
+ get :show, :url_title => title
+ response.body.should include("Offensive?")
+ get :report_request, :url_title => title
+ get :show, :url_title => title
+ response.body.should_not include("Offensive?")
+ response.body.should include("This request has been reported")
+ info_requests(:badger_request).set_described_state("successful")
+ get :show, :url_title => title
+ response.body.should_not include("This request has been reported")
+ response.body.should include("The site administrators have reviewed this request")
+ end
end
diff --git a/spec/controllers/services_controller_spec.rb b/spec/controllers/services_controller_spec.rb
index 1bafd0c8f..2be382258 100644
--- a/spec/controllers/services_controller_spec.rb
+++ b/spec/controllers/services_controller_spec.rb
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe ServicesController, "when using web services" do
@@ -16,15 +17,16 @@ describe ServicesController, "when using web services" do
config['ISO_COUNTRY_CODE'] = "DE"
controller.stub!(:country_from_ip).and_return('ZZ')
get :other_country_message
- response.body.should match(/outside Germany/)
+ response.body.should match(/outside Deutschland/)
end
it "should show link to other FOI website when not in the deployed country" do
config = MySociety::Config.load_default()
config['ISO_COUNTRY_CODE'] = "ZZ"
- controller.stub!(:country_from_ip).and_return('DE')
+ controller.stub!(:country_from_ip).and_return('ES')
+ request.env['HTTP_ACCEPT_LANGUAGE'] = "es"
get :other_country_message
- response.body.should match(/within Germany/)
+ response.body.should match(/Puede hacer solicitudes de información en España/)
end
diff --git a/spec/controllers/track_controller_spec.rb b/spec/controllers/track_controller_spec.rb
index 5d299caa5..1d38b3055 100644
--- a/spec/controllers/track_controller_spec.rb
+++ b/spec/controllers/track_controller_spec.rb
@@ -1,9 +1,7 @@
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-require 'json'
-
describe TrackController, "when making a new track on a request" do
- before do
+ before(:each) do
@ir = mock_model(InfoRequest, :url_title => 'myrequest',
:title => 'My request')
@track_thing = mock_model(TrackThing, :save! => true,
@@ -11,12 +9,15 @@ describe TrackController, "when making a new track on a request" do
:track_medium= => nil,
:tracking_user_id= => nil)
TrackThing.stub!(:create_track_for_request).and_return(@track_thing)
+ TrackThing.stub!(:create_track_for_search_query).and_return(@track_thing)
TrackThing.stub!(:find_by_existing_track).and_return(nil)
InfoRequest.stub!(:find_by_url_title).and_return(@ir)
@user = mock_model(User)
User.stub!(:find).and_return(@user)
@user.stub!(:locale).and_return("en")
+ @user.stub!(:receive_email_alerts).and_return(true)
+ @user.stub!(:url_name).and_return("bob")
end
it "should require login when making new track" do
@@ -25,13 +26,20 @@ describe TrackController, "when making a new track on a request" do
response.should redirect_to(:controller => 'user', :action => 'signin', :token => post_redirect.token)
end
- it "should save the track and redirect if you are logged in" do
+ it "should save a request track and redirect if you are logged in" do
session[:user_id] = @user.id
@track_thing.should_receive(:save!)
get :track_request, :url_title => @ir.url_title, :feed => 'track'
response.should redirect_to(:controller => 'request', :action => 'show', :url_title => @ir.url_title)
end
+ it "should save a search track and redirect to the right place" do
+ session[:user_id] = @user.id
+ @track_thing.should_receive(:save!)
+ get :track_search_query, :query_array => ["bob variety:sent"], :feed => 'track'
+ response.should redirect_to(:controller => 'general', :action => 'search', :combined => ["bob", "requests"])
+ end
+
end
describe TrackController, "when sending alerts for a track" do
diff --git a/spec/controllers/user_controller_spec.rb b/spec/controllers/user_controller_spec.rb
index 40649b6e1..7a6c9ac0d 100644
--- a/spec/controllers/user_controller_spec.rb
+++ b/spec/controllers/user_controller_spec.rb
@@ -1,8 +1,6 @@
# coding: utf-8
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-require 'json'
-
# XXX Use route_for or params_from to check /c/ links better
# http://rspec.rubyforge.org/rspec-rails/1.1.12/classes/Spec/Rails/Example/ControllerExampleGroup.html
@@ -632,6 +630,41 @@ describe UserController, "when showing JSON version for API" do
end
+describe UserController, "when viewing the wall" do
+ integrate_views
+
+ before(:each) do
+ rebuild_xapian_index
+ end
+
+ it "should show users stuff on their wall, most recent first" do
+ user = users(:silly_name_user)
+ ire = info_request_events(:useless_incoming_message_event)
+ ire.created_at = DateTime.new(2001,1,1)
+ session[:user_id] = user.id
+ get :wall, :url_name => user.url_name
+ assigns[:feed_results][0].should_not == ire
+
+ ire.created_at = Time.now
+ ire.save!
+ get :wall, :url_name => user.url_name
+ assigns[:feed_results][0].should == ire
+ end
+ it "should show other users' activities on their walls" do
+ user = users(:silly_name_user)
+ ire = info_request_events(:useless_incoming_message_event)
+ get :wall, :url_name => user.url_name
+ assigns[:feed_results][0].should_not == ire
+ end
+ it "should allow users to turn their own email alerts on and off" do
+ user = users(:silly_name_user)
+ session[:user_id] = user.id
+ user.receive_email_alerts.should == true
+ get :set_receive_email_alerts, :receive_email_alerts => 'false', :came_from => "/"
+ user.reload
+ user.receive_email_alerts.should_not == true
+ end
+end
diff --git a/spec/fixtures/files/track-response-ms-bounce.email b/spec/fixtures/files/track-response-ms-bounce.email
new file mode 100644
index 000000000..405799d19
--- /dev/null
+++ b/spec/fixtures/files/track-response-ms-bounce.email
@@ -0,0 +1,168 @@
+Delivered-To: mysociety.robin@gmail.com
+Received: by 10.216.93.2 with SMTP id k2csp112824wef;
+ Tue, 1 May 2012 07:34:18 -0700 (PDT)
+Received: by 10.180.86.197 with SMTP id r5mr1890784wiz.21.1335882857831;
+ Tue, 01 May 2012 07:34:17 -0700 (PDT)
+Return-Path: <MAILER-DAEMON@wildfire.ukcod.org.uk>
+Received: from wildfire.ukcod.org.uk (wildfire.ukcod.org.uk. [89.238.145.74])
+ by mx.google.com with ESMTPS id m57si21571764wee.109.2012.05.01.07.34.17
+ (version=TLSv1/SSLv3 cipher=OTHER);
+ Tue, 01 May 2012 07:34:17 -0700 (PDT)
+Received-SPF: pass (google.com: best guess record for domain of MAILER-DAEMON@wildfire.ukcod.org.uk designates 89.238.145.74 as permitted sender) client-ip=89.238.145.74;
+Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of MAILER-DAEMON@wildfire.ukcod.org.uk designates 89.238.145.74 as permitted sender) smtp.mail=MAILER-DAEMON@wildfire.ukcod.org.uk
+Received: from foi by wildfire.ukcod.org.uk with local (Exim 4.72)
+ (envelope-from <MAILER-DAEMON@wildfire.ukcod.org.uk>)
+ id 1SPE9b-0004QG-IC
+ for team_delivery@whatdotheyknow.com; Tue, 01 May 2012 15:34:11 +0100
+Received: from majestic.ukcod.org.uk ([89.238.145.68]:41415)
+ by wildfire.ukcod.org.uk with esmtp (Exim 4.72)
+ id 1SPE9a-0004PY-Pt
+ for foi-track@wildfire.ukcod.org.uk; Tue, 01 May 2012 15:34:11 +0100
+Received: from 83-216-147-106.lancas785.adsl.metronet.co.uk ([83.216.147.106]:41706 helo=SERVER1.example.internal)
+ by majestic.ukcod.org.uk with esmtp (Exim 4.72)
+ id 1SPE9P-00024F-Vz
+ for track@whatdotheyknow.com; Tue, 01 May 2012 15:34:00 +0100
+Received: from server.example.internal (192.168.0.2) by
+ SERVER1.example.internal (192.168.0.3) with Microsoft SMTP Server id
+ 14.1.323.3; Tue, 1 May 2012 15:43:04 +0100
+From: <postmaster@example.org.uk>
+To: <track@whatdotheyknow.com>
+Date: Tue, 1 May 2012 11:42:55 +0100
+MIME-Version: 1.0
+X-DSNContext: 7ac7e7f9 - 374 - 00000004 - C00402D1
+Message-ID: <5C10braWX00000031@server.example.internal>
+Subject: Delivery Status Notification (Delay)
+Content-Type: multipart/mixed;
+ boundary="_c3f90810-77af-49ee-88c2-d3a2f6212326_"
+
+--_c3f90810-77af-49ee-88c2-d3a2f6212326_
+Content-Type: multipart/report; report-type=delivery-status;
+ boundary="_12a1cb74-57e4-4506-a3d9-c4b591d5a63f_"
+
+--_12a1cb74-57e4-4506-a3d9-c4b591d5a63f_
+Content-Type: text/plain; charset="unicode-1-1-utf-7"
+
+This is an automatically generated Delivery Status Notification.
+
+THIS IS A WARNING MESSAGE ONLY.
+
+YOU DO NOT NEED TO RESEND YOUR MESSAGE.
+
+Delivery to the following recipients has been delayed.
+
+ username@example.org.uk
+
+
+
+
+--_12a1cb74-57e4-4506-a3d9-c4b591d5a63f_
+Content-Type: message/delivery-status
+
+Reporting-MTA: dns;server.example.internal
+Received-From-MTA: dns;wildfire.ukcod.org.uk
+Arrival-Date: Mon, 30 Apr 2012 23:24:59 +0100
+
+Final-Recipient: rfc822;username@example.org.uk
+Action: delayed
+Status: 4.4.7
+Will-Retry-Until: Wed, 2 May 2012 23:24:59 +0100
+
+--_12a1cb74-57e4-4506-a3d9-c4b591d5a63f_
+Content-Type: message/rfc822
+
+Received: from wildfire.ukcod.org.uk ([89.238.145.74]) by
+ server.example.internal with Microsoft SMTPSVC(6.0.3790.4675); Mon, 30
+ Apr 2012 23:24:59 +0100
+Received: from foi by wildfire.ukcod.org.uk with local (Exim 4.72)
+ (envelope-from <track@whatdotheyknow.com>) id 1SOysI-0003iJ-1S for
+ username@example.org.uk; Mon, 30 Apr 2012 23:15:19 +0100
+Message-ID: <E1SOysI-0003iJ-1S@wildfire.ukcod.org.uk>
+Date: Mon, 30 Apr 2012 23:15:17 +0100
+From: WhatDoTheyKnow <track@whatdotheyknow.com>
+To: User Name <username@example.org.uk>
+Subject: Your WhatDoTheyKnow email alert
+MIME-Version: 1.0
+Precedence: bulk
+Auto-Submitted: auto-generated
+Return-Path: track@whatdotheyknow.com
+X-OriginalArrivalTime: 30 Apr 2012 22:24:59.0309 (UTC) FILETIME=[1416D5D0:01CD2720]
+X-MS-Exchange-Organization-AVStamp-AVG: 10.0.1424 [2113.1.1/4831];0;
+X-MS-Exchange-Organization-AVStamp-Mailbox: AVGESE;6944;0;
+Content-Type: multipart/mixed;
+ boundary="_c03afbbc-87c9-4022-a9f2-fec3c53e1fef_"
+
+--_c03afbbc-87c9-4022-a9f2-fec3c53e1fef_
+Content-Type: text/plain; charset="utf-8"
+
+FOI requests to 'Lancashire Constabulary'
+=========================================
+
+-- Copy of Information from Comments made in FOI --
+Jim Ebbs sent a request to Lancashire Constabulary (30 April 2012)
+ "My previous FOI related to Section 20 of the 1989 Chidrens Act
+ legislation and parents having parental control of their children.
+ In your response..."
+http://www.whatdotheyknow.com/request/copy_of_information_from_comment#outgoing-199196
+
+
+FOI requests to 'Lancashire County Council'
+===========================================
+
+-- Telecommunications Contracts --
+Lancashire County Council sent a response to Wendy (30 April 2012)
+ "Dear Wendy, Please accept my apologies for not having provided you
+ with a response before the statutory time limit. I am still in the
+ process of de..."
+http://www.whatdotheyknow.com/request/telecommunications_contracts_20#incoming-277652
+
+-- Adult's and childreen's social care IT systems --
+Lancashire County Council sent a response to will johnson (30 April 2012)
+ "Dear Mr Johnson, Â Request for information under the Freedom of
+ Information Act 2000 Â Further to your email dated 2^nd April, in
+ which you re..."
+http://www.whatdotheyknow.com/request/adults_and_childreens_social_car#incoming-277643
+
+
+FOI requests to 'Lancaster City Council'
+========================================
+
+-- Empty Commercial Property --
+Lancaster City Council sent a response to Paul Norris (30 April 2012)
+ "Dear Mr Norris Please find attached a spreadheet with the
+ information you requested for. If you are not happy with this
+ response please contact me i..."
+http://www.whatdotheyknow.com/request/empty_commercial_property_93#incoming-277913
+
+
+Alter your subscription
+=======================
+
+
+http://www.whatdotheyknow.com/c/huz3dzb3gtyq5y47r4r
+
+-- the WhatDoTheyKnow team
+
+
+--_c03afbbc-87c9-4022-a9f2-fec3c53e1fef_
+Content-Type: text/plain; x-avg=cert; charset="windows-1252"
+Content-Disposition: inline; filename="AVG certification.txt"
+Content-Description: "AVG certification"
+Content-Transfer-Encoding: quoted-printable
+
+The message does not contain any threats
+AVG for MS Exchange Server (10.0.1424 - 2113/4831)=
+
+--_c03afbbc-87c9-4022-a9f2-fec3c53e1fef_--
+
+--_12a1cb74-57e4-4506-a3d9-c4b591d5a63f_--
+
+--_c3f90810-77af-49ee-88c2-d3a2f6212326_
+Content-Type: text/plain; x-avg=cert; charset="windows-1252"
+Content-Disposition: inline; filename="AVG certification.txt"
+Content-Description: "AVG certification"
+Content-Transfer-Encoding: quoted-printable
+
+The message does not contain any threats
+AVG for MS Exchange Server (10.0.1424 - 2113/4831)=
+
+--_c3f90810-77af-49ee-88c2-d3a2f6212326_--
diff --git a/spec/fixtures/files/track-response-webshield-bounce.email b/spec/fixtures/files/track-response-webshield-bounce.email
new file mode 100644
index 000000000..1fd0f68ef
--- /dev/null
+++ b/spec/fixtures/files/track-response-webshield-bounce.email
@@ -0,0 +1,513 @@
+Delivered-To: mysociety.robin@gmail.com
+Received: by 10.216.93.2 with SMTP id k2csp412wef;
+ Sat, 28 Apr 2012 15:10:07 -0700 (PDT)
+Received: by 10.216.200.90 with SMTP id y68mr994412wen.49.1335651006883;
+ Sat, 28 Apr 2012 15:10:06 -0700 (PDT)
+Return-Path: <MAILER-DAEMON@wildfire.ukcod.org.uk>
+Received: from wildfire.ukcod.org.uk (wildfire.ukcod.org.uk. [89.238.145.74])
+ by mx.google.com with ESMTPS id bw9si8451394wib.28.2012.04.28.15.10.06
+ (version=TLSv1/SSLv3 cipher=OTHER);
+ Sat, 28 Apr 2012 15:10:06 -0700 (PDT)
+Received-SPF: pass (google.com: best guess record for domain of MAILER-DAEMON@wildfire.ukcod.org.uk designates 89.238.145.74 as permitted sender) client-ip=89.238.145.74;
+Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of MAILER-DAEMON@wildfire.ukcod.org.uk designates 89.238.145.74 as permitted sender) smtp.mail=MAILER-DAEMON@wildfire.ukcod.org.uk
+Received: from foi by wildfire.ukcod.org.uk with local (Exim 4.72)
+ (envelope-from <MAILER-DAEMON@wildfire.ukcod.org.uk>)
+ id 1SOFq3-0002Lx-HQ
+ for team_delivery@whatdotheyknow.com; Sat, 28 Apr 2012 23:09:59 +0100
+Received: from majestic.ukcod.org.uk ([89.238.145.68]:48989)
+ by wildfire.ukcod.org.uk with esmtp (Exim 4.72)
+ id 1SOFq2-0002La-Pq
+ for foi-track@wildfire.ukcod.org.uk; Sat, 28 Apr 2012 23:09:59 +0100
+Received: from mailproxy1.example.co.uk ([93.174.8.200]:65135)
+ by majestic.ukcod.org.uk with esmtp (Exim 4.72)
+ id 1SOFps-0001uQ-4T
+ for track@whatdotheyknow.com; Sat, 28 Apr 2012 23:09:48 +0100
+Message-Id: <f8b79b$go3iov@mailproxy1.example.co.uk>
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154271"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:37 +0100
+From: Webshield SMTP V4.5 MR3 Mail Service
+Date: Sat Apr 28 23:09:37 2012
+To: <track@whatdotheyknow.com>
+Subject: Returned Mail: Error During Delivery
+
+ ---- Failed Recipients ----
+
+<failed.user@example.co.uk>
+Mail Loop Detected
+
+
+Requested action aborted: Mail loop detected
+
+ ---- Contents of the undelivered mail ----
+
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650976813; Sat, 28 Apr 2012 23:09:36 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154267"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:36 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650976250; Sat, 28 Apr 2012 23:09:36 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154266"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:36 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650975812; Sat, 28 Apr 2012 23:09:35 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154264"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:35 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650975250; Sat, 28 Apr 2012 23:09:35 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154263"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:35 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650974469; Sat, 28 Apr 2012 23:09:34 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154259"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:34 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650973250; Sat, 28 Apr 2012 23:09:33 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154255"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:33 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650972250; Sat, 28 Apr 2012 23:09:32 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154253"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:32 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650971250; Sat, 28 Apr 2012 23:09:31 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154250"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:31 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650970797; Sat, 28 Apr 2012 23:09:30 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154247"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:30 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650970250; Sat, 28 Apr 2012 23:09:30 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154246"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:30 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650969797; Sat, 28 Apr 2012 23:09:29 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154244"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:29 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650969250; Sat, 28 Apr 2012 23:09:29 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154243"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:29 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650968250; Sat, 28 Apr 2012 23:09:28 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154241"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:28 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650967250; Sat, 28 Apr 2012 23:09:27 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154238"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:27 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650966250; Sat, 28 Apr 2012 23:09:26 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154236"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:26 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650965828; Sat, 28 Apr 2012 23:09:25 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154235"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:25 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650965250; Sat, 28 Apr 2012 23:09:25 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154234"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:25 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650964781; Sat, 28 Apr 2012 23:09:24 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154233"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:24 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650964250; Sat, 28 Apr 2012 23:09:24 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154231"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:24 +0100
+Received: From mailproxy1.example.co.uk ([192.168.80.80]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 1335650963281; Sat, 28 Apr 2012 23:09:23 +0100
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="562154222"
+Received: from unknown (HELO so-itws3.so.ad.example.co.uk) ([10.56.10.5])
+ by mailproxy1.example.co.uk with SMTP; 28 Apr 2012 23:09:18 +0100
+Received: From mailproxy2.example.co.uk ([192.168.80.81]) by so-itws3.so.ad.example.co.uk (WebShield SMTP v4.5 MR3)
+ id 133565095893; Sat, 28 Apr 2012 23:09:18 +0100
+X-SBRS: 2.9
+X-SG: DEFAULT
+X-IronPort-Anti-Spam-Filtered: true
+X-IronPort-Anti-Spam-Result: AnQDAGtpnE9Z7pFKgWdsb2JhbAA8B4Mpgj+sMSIBARYmJ4F8AQgBCwIgJhgQAQEVIAYCCQgHDgICAw0sFgsYhUMBAYItARkHpjJSkUqBL4EliDMFB4JeghmBGASMYYEwmxiBUwgLAw
+X-IronPort-AV: E=Sophos;i="4.75,497,1330905600";
+ d="scan'208";a="514125909"
+Received: from wildfire.ukcod.org.uk ([89.238.145.74])
+ by mailproxy2.example.co.uk with ESMTP; 28 Apr 2012 23:09:12 +0100
+Received: from foi by wildfire.ukcod.org.uk with local (Exim 4.72)
+ (envelope-from <track@whatdotheyknow.com>)
+ id 1SOFpI-0002Iz-6a
+ for failed.user@example.co.uk; Sat, 28 Apr 2012 23:09:12 +0100
+Message-Id: <E1SOFpI-0002Iz-6a@wildfire.ukcod.org.uk>
+Date: Sat, 28 Apr 2012 23:09:10 +0100
+From: WhatDoTheyKnow <track@whatdotheyknow.com>
+To: Failed User <failed.user@example.co.uk>
+Subject: Your WhatDoTheyKnow email alert
+Mime-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Precedence: bulk
+Auto-Submitted: auto-generated
+
+Successful Freedom of Information requests
+==========================================
+
+-- geographical address for PO Box 1244, Enfield, EN1 9UF --
+Royal Mail Group Limited sent a response to Mr Mahmood (16 March 2012)
+ "Dear Mr Mahmood, Please find attached a response to your recent
+ Freedom of Information Request. Yours Sincerely Kate Fearn Company
+ Secretary's..."
+http://www.whatdotheyknow.com/request/geographical_address_for_po_box_3#incoming-264886
+
+-- Foi About Animal Testin --
+University of Strathclyde sent a response to Mr Jonathon Proctor (27 April 2012)
+ "Dear Mr Proctor,  FOI Request Reference – 2012/050  Thank you
+ for your email of 03 April 2012 requesting information under the
+ Freedom of I..."
+http://www.whatdotheyknow.com/request/foi_about_animal_testin#incoming-277502
+
+-- School's Spend on Recruitment Advertising --
+Staffordshire County Council sent a response to Robert Saunders ( 3 April 2012)
+ "Dear Mr Saunders Re: Freedom of Information Act 2000 Thank you for
+ your request for information. We have completed the search of our
+ records and pl..."
+http://www.whatdotheyknow.com/request/schools_spend_on_recruitment_adv_8#incoming-270606
+
+-- WBC - Enforcement Team Dog Mess --
+Wirral Metropolitan Borough Council sent a response to Pete Sheffield (26 April 2012)
+ "Hello Pete Sheffield  Thank you for your request below, Wirral
+ Council is able to supply the following recorded information, I
+ have included res..."
+http://www.whatdotheyknow.com/request/wbc_enforcement_team_dog_mess#incoming-277027
+
+-- City Garden Project technical feasibility study --
+Aberdeen City Council sent a response to Kenneth Watt (24 April 2012)
+ "Dear Mr Watt Thank you for your information request of 17 April
+ 2012, made under the Freedom of Information (Scotland) Act 2002
+ (FOISA). Aberdeen C..."
+http://www.whatdotheyknow.com/request/city_garden_project_technical_fe#incoming-276087
+
+-- Government grant --
+Lambeth Borough Council sent a response to Ed Clarke (17 April 2012)
+ "Dear Ed Clarke, Thank you for your FOI request under reference
+ 156969 Please accept my apologies for the late response. You asked
+ " What was the to..."
+http://www.whatdotheyknow.com/request/government_grant#incoming-274144
+
+-- Advertising Policy --
+Humber Bridge Board sent a response to Mr. A. Wilson (24 April 2012)
+ "Dear Mr Wilson Thank you for your email of 23rd April 2012. As the
+ Humber Bridge Board is not a Public Body it is not formally subject
+ to the Freedo..."
+http://www.whatdotheyknow.com/request/advertising_policy#incoming-276348
+
+-- Number of roads/estates/areas in the process of being adopted by Oxfordshire County Council --
+Oxfordshire County Council sent a response to Alex Lalvani (17 April 2012)
+ "Dear Mr. Lalvani  Please find below the definition of an
+ ‘agreement’ as requested by you further to our response to your
+ Freedom of Information..."
+http://www.whatdotheyknow.com/request/number_of_roadsestatesareas_in_t#incoming-273742
+
+-- Correct Diagnosis of Lyme Disease --
+Health Protection Agency sent a response to jacqui butterworth (24 April 2012)
+ "Dear Ms Butterworth I would like to apologise, for not responding
+ to the last point you raised in your email of 29th March, regarding
+ information y..."
+http://www.whatdotheyknow.com/request/correct_diagnosis_of_lyme_diseas#incoming-276391
+
+-- Genesis --
+Camden Borough Council sent a response to salim (24 April 2012)
+ "Camden Council - Information request (FOI/EIR) - Housing and adult
+ social care Our reference: 7706354
+ -------------------------------------------..."
+http://www.whatdotheyknow.com/request/genesis#incoming-276075
+
+-- Missing Persons --
+Humberside Police sent a response to Otis Holmes ( 1 March 2012)
+ "Your Ref:  Our Ref: F-2012-351  1 March 2012 Dear Mr Holmes,
+ Please find attached my response to your recent Freedom of
+ Information requ..."
+http://www.whatdotheyknow.com/request/missing_persons_2#incoming-260422
+
+-- A reply to my two previous emails --
+Blackpool Borough Council sent a response to Debbie Tomkinson ( 8 December 2011)
+ "Dear Debbie FREEDOM OF INFORMATION ACT 2000 - INFORMATION REQUEST
+ I am writing in response to your email of 09.11.12. You were
+ previously employed..."
+http://www.whatdotheyknow.com/request/a_reply_to_my_two_previous_email#incoming-234255
+
+-- Expenditure of public funds by Police & CPS on persecution of World War 2 Veteran Norman Scarth --
+Ministry of Justice sent a response to Norman Scarth (24 April 2012)
+ "Dear Mr Scarth, Â Please find herewith our reply to your Freedom
+ of Information request dated 3rd April 2012.   Mrs K Smith  Mrs
+ K Smith R..."
+http://www.whatdotheyknow.com/request/expenditure_of_public_funds_by_p#incoming-276263
+
+-- Security screening at Edinburgh Airport --
+UK Border Agency sent a response to S Gray ( 5 April 2012)
+ "Sent on behalf of Anne Webber  Dear Mr Gray,  Please find
+ attached the FOI response.  Kind Regards  Sue  Sue Dinham
+ Cyclame..."
+http://www.whatdotheyknow.com/request/security_screening_at_edinburgh#incoming-271223
+
+-- Inverness business improvement district (BID) --
+Highland Council sent a response to Laurel Bush (27 April 2012)
+ "Dear Mr Bush, Â Please find attached the response from William
+ Gilfillan, in relation to the above Freedom of Information request
+ dated 26 April..."
+http://www.whatdotheyknow.com/request/inverness_business_improvement_d_2#incoming-277507
+
+-- Waiting times in Contact Applications --
+Children and Family Court Advisory Support Service sent a response to Philip J Measures (24 April 2012)
+ "Dear Sir Please find atatched a response to your recent request
+ for an internal review. Any additioanl information will be provided
+ by 8th May 2012...."
+http://www.whatdotheyknow.com/request/waiting_times_in_contact_applica#incoming-276410
+
+-- Payments to companies on behalf of directors --
+Moorfields Eye Hospital NHS Foundation Trust sent a response to Alex Miller ( 5 March 2012)
+ "Dear Alex Miller  In response to your clarification of 8.2.12,
+ payments made to permanent managers  and directors employed at the
+ Trust  are pai..."
+http://www.whatdotheyknow.com/request/payments_to_companies_on_behalf#incoming-261184
+
+-- Personal Injury Claims --
+Leeds City Council sent a response to Ben Stanley ( 3 April 2012)
+ "Dear Ben Stanley Please accept my apologies regarding the in
+ responding to your request. Please see attached letter in respect
+ of your recent Free..."
+http://www.whatdotheyknow.com/request/personal_injury_claims_10#incoming-270346
+
+-- Beetham Tower West £750,000 payment. --
+Liverpool City Council sent a response to A Rudkin (24 April 2012)
+ "Please find attached response Regards, Kevin Symm Senior
+ Information Officer Legal Services Liverpool City Council Municipal
+ Buildings Dale St..."
+http://www.whatdotheyknow.com/request/beetham_tower_west_750000_paymen_3#incoming-276145
+
+-- Housing Benefit statistics --
+Leeds City Council sent a response to Peter Balderston (17 February 2012)
+ "Dear Mr Balderston, Please see attached letter in respect of your
+ recent Freedom of Information request. Please contact me if you
+ have any furthe..."
+http://www.whatdotheyknow.com/request/housing_benefit_statistics_19#incoming-255605
+
+-- Board Minutes - Accuracy & Completeness --
+Avon and Wiltshire Mental Health Partnership NHS Trust sent a response to Steven King (24 April 2012)
+ "Dear Mr King, Please see attached correspondence regarding your
+ Freedom of Information request: <<0718 Response Letter.doc>> Yours
+ sincerely,..."
+http://www.whatdotheyknow.com/request/board_minutes_accuracy_completen#incoming-276314
+
+-- Marked vehicle fleet list --
+Gloucestershire Constabulary sent a response to luke (27 April 2012)
+ "Dear Mr Staddon, Gloucestershire Constabulary Freedom of
+ Information request 2012.3788 On the 28th March 2012 you sent a
+ letter constituting a requ..."
+http://www.whatdotheyknow.com/request/marked_vehicle_fleet_list_7#incoming-277276
+
+-- Quality metrics for decisionmakers. --
+Department for Work and Pensions sent a response to Ian Stirling (26 April 2012)
+ "Dear Mr Stirling Please see attached response to your FoI request.
+ Kind regards DWP Central FoI Team Website: www.dwp.gov.uk Your
+ Reference: I St..."
+http://www.whatdotheyknow.com/request/quality_metrics_for_decisionmake#incoming-276968
+
+-- Stray Dogs --
+Wirral Metropolitan Borough Council sent a response to Carla Bottle (17 April 2012)
+ "Hello Carla  Thank you for your further enquiry, I can clarify Â
+ Strays 76 Â and a further Handovers by owner (sick or aggressive)
+ 74..."
+http://www.whatdotheyknow.com/request/stray_dogs_84#incoming-274073
+
+-- Stray Dogs --
+Wakefield City Council sent a response to Carla Bottle (17 April 2012)
+ "Dear Carla, Freedom of Information Act 2000 - Request for
+ Information I am writing in respect of your recent enquiry for
+ information held by the Aut..."
+http://www.whatdotheyknow.com/request/stray_dogs_149#incoming-273859
+
+-- Stray Dogs --
+Solihull Metropolitan Borough Council sent a response to Carla Bottle (17 April 2012)
+ "Dear Ms Bottle Thank you for your email. Any dogs collected as
+ strays are taken to Birmingham Dogs Home, where they are detained
+ by the home on the..."
+http://www.whatdotheyknow.com/request/stray_dogs_136#incoming-273886
+
+-- Stray Dogs --
+Newham Borough Council sent a response to Carla Bottle (17 April 2012)
+ "Dear Ms Bottle, Thank you for your email received on 16/03/2012.
+ We attach our response under the disclosure provisions of the
+ Freedom of Information..."
+http://www.whatdotheyknow.com/request/stray_dogs_152#incoming-273897
+
+-- Stray Dogs --
+St Edmundsbury Borough Council sent a response to Carla Bottle (17 April 2012)
+ "Dear Carla, Thank you for your email following my response to your
+ Freedom of Information request. I can advise that the 15 dogs that
+ were 'rehomed..."
+http://www.whatdotheyknow.com/request/stray_dogs_111#incoming-273946
+
+-- Stray Dogs --
+Staffordshire Moorlands District Council sent a response to Carla Bottle (17 April 2012)
+ "E-mail:  [1][FOI #109668 email]    Dear Ms Bottle  Re:Â
+ Freedom of Information Act request – Stray Dogs  Thank you for
+ your e..."
+http://www.whatdotheyknow.com/request/stray_dogs_108#incoming-274005
+
+-- Stray Dogs --
+Southwark Borough Council sent a response to Carla Bottle (17 April 2012)
+ "Southwark Council - Information request (FOI/EIR) Our reference:
+ 214355
+ --------------------------------------------------------------------------..."
+http://www.whatdotheyknow.com/request/stray_dogs_155#incoming-274104
+
+-- Residential Building Revaluation Costs --
+Camden Borough Council sent a response to Peter CAIN (17 April 2012)
+ "Dear Mr Cain  Herewith the reply of the Panel to your application
+ for an internal review  Yours sincerely  Peter Swingler Obo
+ Internal Revie..."
+http://www.whatdotheyknow.com/request/residential_building_revaluation#incoming-274061
+
+-- Stray Dogs --
+Waveney District Council sent a response to Carla Bottle (17 April 2012)
+ "Dear Ms Bottle, Freedom of Information Request - Ref No 9932 I am
+ writing in response to your recently submitted Freedom of
+ Information request reg..."
+http://www.whatdotheyknow.com/request/stray_dogs_112#incoming-274145
+
+-- Stray Dogs --
+Tamworth Borough Council sent a response to Carla Bottle (27 April 2012)
+ "Our Ref: FOI1264/DB/02 Please ask for: Derek Bolton Direct dial:
+ 01827 709 587 E-mail:Â [email address] Â Ms C Bottle
+ Whatdotheyknow.com..."
+http://www.whatdotheyknow.com/request/stray_dogs_110#incoming-277348
+
+-- Stray Dogs --
+South Northamptonshire District Council sent a response to Carla Bottle (23 April 2012)
+ "South Northamptonshire Council Request Ref: 1013066 Â Springfields
+ Towcester Date: Apr 5 2012 Northants NN12 6AE"
+http://www.whatdotheyknow.com/request/stray_dogs_89#incoming-275624
+
+-- Stray Dogs --
+Selby District Council sent a response to Carla Bottle (23 April 2012)
+ "Dear Ms Bottle  I refer to your recent request for information
+ under the Freedom of Information Act. I have now had an opportunity
+ to check our..."
+http://www.whatdotheyknow.com/request/stray_dogs_148#incoming-275917
+
+-- DASS Carers Assesment Documents --
+Wirral Metropolitan Borough Council sent a response to Heston O Riley (26 April 2012)
+ "Hello Heston O Riley  Thank you for request below, apologies for
+ the slight delay, Wirral Council can now provide the information
+ you have r..."
+http://www.whatdotheyknow.com/request/dass_carers_assesment_documents#incoming-277203
+
+-- Traffic offences on Holland Park Barton Under Needwood --
+Staffordshire Police sent a response to Joanne Cooper (24 April 2012)
+ "Please see another response to your FOI request. Â Â Apologies, but
+ please discard my first response. Â The letter will give an
+ explanation. Regards..."
+http://www.whatdotheyknow.com/request/traffic_offences_on_holland_park#incoming-276112
+
+-- Percy Street - Capita report input --
+Newcastle upon Tyne City Council sent a response to Katja Leyendecker (16 April 2012)
+ "Katja, Firstly let me apologise for the tardy delivery of the
+ response, I have been on annual leave and did not return until this
+ morning. I'm afrai..."
+http://www.whatdotheyknow.com/request/percy_street_capita_report_input#incoming-273690
+
+-- AREa REView COMMITTee CHILd PROtection GUIDElines --
+Nottinghamshire County Council sent a response to Alison Stevens (27 April 2012)
+ "REF:C&IT/PFL/NCC-007511-11  Dear Ms Stevens  FREEDOM OF
+ INFORMATION ACT 2000 - INFORMATION REQUEST Â In response to your
+ request for the..."
+http://www.whatdotheyknow.com/request/area_review_committee_child_prot#incoming-277510
+
+-- Atos HeathcarE Risk AsseSSMENTS --
+Department for Work and Pensions sent a response to Alison Stevens (27 April 2012)
+ "Dear Ms Stevens Please see attached response to your FoI request.
+ Kind regards DWP Central FoI Team To A Stevens C/o [FOI #107839
+ email] DWP Centr..."
+http://www.whatdotheyknow.com/request/atos_heathcare_risk_assessments#incoming-277463
+
+-- SET(0) Postal Applications status D2c 2011 --
+UK Border Agency sent a response to S Pillai (29 March 2012)
+ "S Pillai  Please find the response to your request for
+ information under the Freedom of Information Act 2000, regarding
+ SET (O) applications...."
+http://www.whatdotheyknow.com/request/set0_postal_applications_status#incoming-269113
+
+-- re London Borough of Bromley --
+Local Government Ombudsmen sent a response to ROSEMARY CANTWELL (Account suspended) ( 3 April 2012)
+ "Dear Mrs Cantwell I have consulted colleagues and they inform me
+ that you have exhausted our internal complaints procedures and
+ there is nothing more..."
+http://www.whatdotheyknow.com/request/re_london_borough_of_bromley#incoming-270360
+
+
+Alter your subscription
+=======================
+
+
+http://www.whatdotheyknow.com/c/abcdefghijklmnop23
+
+-- the WhatDoTheyKnow team
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spec/fixtures/users.yml b/spec/fixtures/users.yml
index 8620fb3de..d6391c5e8 100644
--- a/spec/fixtures/users.yml
+++ b/spec/fixtures/users.yml
@@ -12,6 +12,7 @@ bob_smith_user:
ban_text: ''
locale: 'en'
about_me: 'I like making requests about fancy dogs and naughty chickens and stuff.'
+ receive_email_alerts: true
silly_name_user:
id: "2"
name: "Silly <em>Name</em>"
@@ -26,6 +27,7 @@ silly_name_user:
ban_text: ''
locale: 'en'
about_me: ''
+ receive_email_alerts: true
admin_user:
id: "3"
name: Joe Admin
@@ -40,6 +42,7 @@ admin_user:
ban_text: ''
locale: ''
about_me: ''
+ receive_email_alerts: true
unconfirmed_user:
id: "4"
name: "Unconfirmed"
@@ -53,6 +56,7 @@ unconfirmed_user:
admin_level: 'none'
ban_text: ''
about_me: ''
+ receive_email_alerts: true
robin_user:
id: 5
name: Robin Houston
@@ -66,3 +70,4 @@ robin_user:
admin_level: 'none'
ban_text: ''
about_me: 'I am the best'
+ receive_email_alerts: true
diff --git a/spec/integration/search_request_spec.rb b/spec/integration/search_request_spec.rb
index b62f0a4c4..17a7b4aaa 100644
--- a/spec/integration/search_request_spec.rb
+++ b/spec/integration/search_request_spec.rb
@@ -12,6 +12,13 @@ describe "When searching" do
response.body.should include("&quot;mouse stilton&quot;")
end
+ it "should redirect requests with search in query string to URL-based page" do
+ url = '/search/all?query=bob'
+ request_via_redirect("post", url)
+ response.request.url.should_not include(url)
+ response.request.url.should include("/search/bob/all")
+ end
+
it "should correctly execute simple search" do
request_via_redirect("post", "/search",
:query => 'bob'
diff --git a/spec/models/public_body_spec.rb b/spec/models/public_body_spec.rb
index db0de78b2..e30916dff 100644
--- a/spec/models/public_body_spec.rb
+++ b/spec/models/public_body_spec.rb
@@ -401,3 +401,37 @@ describe PublicBody, " when loading CSV files" do
PublicBody.count.should == original_count
end
end
+
+describe PublicBody do
+ describe "calculated home page" do
+ it "should return the home page verbatim if it's present" do
+ public_body = PublicBody.new
+ public_body.home_page = "http://www.example.com"
+ public_body.calculated_home_page.should == "http://www.example.com"
+ end
+
+ it "should return the home page based on the request email domain if it has one" do
+ public_body = PublicBody.new
+ public_body.stub!(:request_email_domain).and_return "public-authority.com"
+ public_body.calculated_home_page.should == "http://www.public-authority.com"
+ end
+
+ it "should return nil if there's no home page and the email domain can't be worked out" do
+ public_body = PublicBody.new
+ public_body.stub!(:request_email_domain).and_return nil
+ public_body.calculated_home_page.should be_nil
+ end
+
+ it "should ensure home page URLs start with http://" do
+ public_body = PublicBody.new
+ public_body.home_page = "example.com"
+ public_body.calculated_home_page.should == "http://example.com"
+ end
+
+ it "should not add http when https is present" do
+ public_body = PublicBody.new
+ public_body.home_page = "https://example.com"
+ public_body.calculated_home_page.should == "https://example.com"
+ end
+ end
+end
diff --git a/spec/models/purge_request_spec.rb b/spec/models/purge_request_spec.rb
new file mode 100644
index 000000000..94fe01317
--- /dev/null
+++ b/spec/models/purge_request_spec.rb
@@ -0,0 +1,32 @@
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+require 'fakeweb'
+
+describe PurgeRequest, "purging things" do
+ before do
+ FakeWeb.last_request = nil
+ end
+
+ it 'should issue purge requests to the server' do
+ req = PurgeRequest.new(:url => "/begone_from_here",
+ :model => "don't care",
+ :model_id => "don't care")
+ req.save()
+ PurgeRequest.all().count.should == 1
+ PurgeRequest.purge_all()
+ PurgeRequest.all().count.should == 0
+ end
+
+ it 'should fail silently for a misconfigured server' do
+ FakeWeb.register_uri(:get, %r|brokenv|, :body => "BROKEN")
+ config = MySociety::Config.load_default()
+ config['VARNISH_HOST'] = "brokencache"
+ req = PurgeRequest.new(:url => "/begone_from_here",
+ :model => "don't care",
+ :model_id => "don't care")
+ req.save()
+ PurgeRequest.all().count.should == 1
+ PurgeRequest.purge_all()
+ PurgeRequest.all().count.should == 0
+ end
+end
+
diff --git a/spec/models/track_mailer_spec.rb b/spec/models/track_mailer_spec.rb
index 4f5499a90..1bf77dab5 100644
--- a/spec/models/track_mailer_spec.rb
+++ b/spec/models/track_mailer_spec.rb
@@ -25,6 +25,7 @@ describe TrackMailer do
:get_locale => 'en',
:should_be_emailed? => true)
User.stub!(:find).and_return([@user])
+ @user.stub!(:receive_email_alerts).and_return(true)
@user.stub!(:no_xapian_reindex=)
end
@@ -122,6 +123,7 @@ describe TrackMailer do
:url_name => 'test-name',
:should_be_emailed? => false)
User.stub!(:find).and_return([@user])
+ @user.stub!(:receive_email_alerts).and_return(true)
@user.stub!(:no_xapian_reindex=)
end
@@ -131,6 +133,13 @@ describe TrackMailer do
TrackMailer.alert_tracks
end
+ it 'should not ask for any daily track things for the user if they have receive_email_alerts off but could otherwise be emailed' do
+ @user.stub(:should_be_emailed?).and_return(true)
+ @user.stub(:receive_email_alerts).and_return(false)
+ expected_conditions = [ "tracking_user_id = ? and track_medium = ?", @user.id, 'email_daily' ]
+ TrackThing.should_not_receive(:find).with(:all, :conditions => expected_conditions).and_return([])
+ TrackMailer.alert_tracks
+ end
it 'should not set the no_xapian_reindex flag on the user' do
@user.should_not_receive(:no_xapian_reindex=).with(true)
diff --git a/spec/models/track_thing_spec.rb b/spec/models/track_thing_spec.rb
index bd122941a..345629bd6 100644
--- a/spec/models/track_thing_spec.rb
+++ b/spec/models/track_thing_spec.rb
@@ -36,7 +36,7 @@ describe TrackThing, "when tracking changes" do
it "will make some sane descriptions of search-based tracks" do
tests = [['bob variety:user', "users matching text 'bob'"],
- ['bob (variety:sent OR variety:followup_sent OR variety:response OR variety:comment) (latest_status:successful OR latest_status:partially_successful OR latest_status:rejected OR latest_status:not_held)', "requests which are successful or unsuccessful or comments matching text 'bob'"],
+ ['bob (variety:sent OR variety:followup_sent OR variety:response OR variety:comment) (latest_status:successful OR latest_status:partially_successful OR latest_status:rejected OR latest_status:not_held)', "comments or requests which are successful or unsuccessful matching text 'bob'"],
['(latest_status:waiting_response OR latest_status:waiting_clarification OR waiting_classification:true)', 'requests which are awaiting a response']]
for query, description in tests
track_thing = TrackThing.create_track_for_search_query(query)
@@ -44,5 +44,10 @@ describe TrackThing, "when tracking changes" do
end
end
+ it "will create an authority-based track when called using a 'bodies' postfix" do
+ track_thing = TrackThing.create_track_for_search_query('fancy dog', 'bodies')
+ track_thing.track_query.should =~ /variety:authority/
+ end
+
end
diff --git a/spec/script/handle-mail-replies_spec.rb b/spec/script/handle-mail-replies_spec.rb
index 8ed83b31f..75a2aa6ad 100644
--- a/spec/script/handle-mail-replies_spec.rb
+++ b/spec/script/handle-mail-replies_spec.rb
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
require "external_command"
def mail_reply_test(email_filename)
- Dir.chdir RAILS_ROOT do
+ Dir.chdir Rails.root do
xc = ExternalCommand.new("script/handle-mail-replies", "--test")
xc.run(load_file_fixture(email_filename))
@@ -18,6 +18,18 @@ describe "When filtering" do
r.out.should == "user@example.com\n"
end
+ it "should detect a WebShield delivery error message" do
+ r = mail_reply_test("track-response-webshield-bounce.email")
+ r.status.should == 1
+ r.out.should == "failed.user@example.co.uk\n"
+ end
+
+ it "should detect a MS Exchange non-permanent delivery error message" do
+ r = mail_reply_test("track-response-ms-bounce.email")
+ r.status.should == 1
+ r.out.should == ""
+ end
+
it "should pass on a non-bounce message" do
r = mail_reply_test("incoming-request-bad-uuencoding.email")
r.status.should == 0
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index c00da48bc..a98a5113d 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -13,6 +13,9 @@ config['ADMIN_PASSWORD'] = 'baz'
# tests assume 20 days
config['REPLY_LATE_AFTER_DAYS'] = 20
+# register a fake Varnish server
+require 'fakeweb'
+FakeWeb.register_uri(:purge, %r|varnish.localdomain|, :body => "OK")
# Uncomment the next line to use webrat's matchers
#require 'webrat/integrations/rspec-rails'
@@ -43,7 +46,7 @@ Spec::Runner.configure do |config|
#
# You can also declare which fixtures to use (for example fixtures for test/fixtures):
#
- # config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
+ # config.fixture_path = Rails.root + '/spec/fixtures/'
#
# == Mock Framework
#
diff --git a/vendor/gems/gettext-2.1.0/test/tools/files/app.pot b/tmp/.gitkeep
index e69de29bb..e69de29bb 100644
--- a/vendor/gems/gettext-2.1.0/test/tools/files/app.pot
+++ b/tmp/.gitkeep
diff --git a/vendor/actionmailer b/vendor/actionmailer
deleted file mode 120000
index 549e92b2a..000000000
--- a/vendor/actionmailer
+++ /dev/null
@@ -1 +0,0 @@
-rails/actionmailer \ No newline at end of file
diff --git a/vendor/actionpack b/vendor/actionpack
deleted file mode 120000
index c4aa04fc5..000000000
--- a/vendor/actionpack
+++ /dev/null
@@ -1 +0,0 @@
-rails/actionpack \ No newline at end of file
diff --git a/vendor/activerecord b/vendor/activerecord
deleted file mode 120000
index 2a7cbc1bf..000000000
--- a/vendor/activerecord
+++ /dev/null
@@ -1 +0,0 @@
-rails/activerecord \ No newline at end of file
diff --git a/vendor/activeresource b/vendor/activeresource
deleted file mode 120000
index 1a174c714..000000000
--- a/vendor/activeresource
+++ /dev/null
@@ -1 +0,0 @@
-rails/activeresource \ No newline at end of file
diff --git a/vendor/activesupport b/vendor/activesupport
deleted file mode 120000
index abfce4396..000000000
--- a/vendor/activesupport
+++ /dev/null
@@ -1 +0,0 @@
-rails/activesupport \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/.gitignore b/vendor/gems/fast_gettext-0.5.10/.gitignore
deleted file mode 100644
index c735ce431..000000000
--- a/vendor/gems/fast_gettext-0.5.10/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-pkg
-benchmark/locle
diff --git a/vendor/gems/fast_gettext-0.5.10/.specification b/vendor/gems/fast_gettext-0.5.10/.specification
deleted file mode 100644
index 7e241fff7..000000000
--- a/vendor/gems/fast_gettext-0.5.10/.specification
+++ /dev/null
@@ -1,153 +0,0 @@
---- !ruby/object:Gem::Specification
-name: fast_gettext
-version: !ruby/object:Gem::Version
- hash: 31
- prerelease:
- segments:
- - 0
- - 5
- - 10
- version: 0.5.10
-platform: ruby
-authors:
-- Michael Grosser
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2010-09-16 00:00:00 +01:00
-default_executable:
-dependencies: []
-
-description:
-email: grosser.michael@gmail.com
-executables: []
-
-extensions: []
-
-extra_rdoc_files:
-- README.markdown
-files:
-- .gitignore
-- CHANGELOG
-- README.markdown
-- Rakefile
-- VERSION
-- benchmark/base.rb
-- benchmark/baseline.rb
-- benchmark/fast_gettext.rb
-- benchmark/i18n_simple.rb
-- benchmark/ideal.rb
-- benchmark/locale/de.yml
-- benchmark/locale/de/LC_MESSAGES/large.mo
-- benchmark/misc/threadsave.rb
-- benchmark/namespace/fast_gettext.rb
-- benchmark/namespace/original.rb
-- benchmark/original.rb
-- examples/db/migration.rb
-- examples/missing_translation_logger.rb
-- fast_gettext.gemspec
-- lib/fast_gettext.rb
-- lib/fast_gettext/VERSION
-- lib/fast_gettext/mo_file.rb
-- lib/fast_gettext/po_file.rb
-- lib/fast_gettext/storage.rb
-- lib/fast_gettext/translation.rb
-- lib/fast_gettext/translation_repository.rb
-- lib/fast_gettext/translation_repository/base.rb
-- lib/fast_gettext/translation_repository/chain.rb
-- lib/fast_gettext/translation_repository/db.rb
-- lib/fast_gettext/translation_repository/db_models/translation_key.rb
-- lib/fast_gettext/translation_repository/db_models/translation_text.rb
-- lib/fast_gettext/translation_repository/logger.rb
-- lib/fast_gettext/translation_repository/mo.rb
-- lib/fast_gettext/translation_repository/po.rb
-- lib/fast_gettext/translation_repository/yaml.rb
-- lib/fast_gettext/vendor/README.rdoc
-- lib/fast_gettext/vendor/empty.mo
-- lib/fast_gettext/vendor/iconv.rb
-- lib/fast_gettext/vendor/mofile.rb
-- lib/fast_gettext/vendor/poparser.rb
-- lib/fast_gettext/vendor/string.rb
-- spec/aa_unconfigued_spec.rb
-- spec/fast_gettext/mo_file_spec.rb
-- spec/fast_gettext/storage_spec.rb
-- spec/fast_gettext/translation_repository/base_spec.rb
-- spec/fast_gettext/translation_repository/chain_spec.rb
-- spec/fast_gettext/translation_repository/db_spec.rb
-- spec/fast_gettext/translation_repository/logger_spec.rb
-- spec/fast_gettext/translation_repository/mo_spec.rb
-- spec/fast_gettext/translation_repository/po_spec.rb
-- spec/fast_gettext/translation_repository/yaml_spec.rb
-- spec/fast_gettext/translation_repository_spec.rb
-- spec/fast_gettext/translation_spec.rb
-- spec/fast_gettext/vendor/fake_load_path/iconv.rb
-- spec/fast_gettext/vendor/iconv_spec.rb
-- spec/fast_gettext/vendor/string_spec.rb
-- spec/fast_gettext_spec.rb
-- spec/fuzzy_locale/de/test.po
-- spec/locale/de/LC_MESSAGES/test.mo
-- spec/locale/de/test.po
-- spec/locale/en/LC_MESSAGES/plural_test.mo
-- spec/locale/en/LC_MESSAGES/test.mo
-- spec/locale/en/plural_test.po
-- spec/locale/en/test.po
-- spec/locale/yaml/de.yml
-- spec/locale/yaml/en.yml
-- spec/locale/yaml/notfound.yml
-- spec/obsolete_locale/de/test.po
-- spec/spec_helper.rb
-has_rdoc: true
-homepage: http://github.com/grosser/fast_gettext
-licenses: []
-
-post_install_message:
-rdoc_options:
-- --charset=UTF-8
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project:
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: A simple, fast and threadsafe implementation of GetText
-test_files:
-- spec/aa_unconfigued_spec.rb
-- spec/fast_gettext/mo_file_spec.rb
-- spec/fast_gettext/storage_spec.rb
-- spec/fast_gettext/translation_spec.rb
-- spec/fast_gettext/translation_repository_spec.rb
-- spec/fast_gettext/translation_repository/base_spec.rb
-- spec/fast_gettext/translation_repository/chain_spec.rb
-- spec/fast_gettext/translation_repository/db_spec.rb
-- spec/fast_gettext/translation_repository/po_spec.rb
-- spec/fast_gettext/translation_repository/mo_spec.rb
-- spec/fast_gettext/translation_repository/logger_spec.rb
-- spec/fast_gettext/translation_repository/yaml_spec.rb
-- spec/fast_gettext/vendor/string_spec.rb
-- spec/fast_gettext/vendor/iconv_spec.rb
-- spec/fast_gettext/vendor/fake_load_path/iconv.rb
-- spec/spec_helper.rb
-- spec/fast_gettext_spec.rb
-- examples/db/migration.rb
-- examples/missing_translation_logger.rb
diff --git a/vendor/gems/fast_gettext-0.5.10/CHANGELOG b/vendor/gems/fast_gettext-0.5.10/CHANGELOG
deleted file mode 100644
index c91958694..000000000
--- a/vendor/gems/fast_gettext-0.5.10/CHANGELOG
+++ /dev/null
@@ -1,6 +0,0 @@
-0.4.14 -- "" is translated as "", not as gettext meta information
-0.4.0 -- pluralisation_rules is no longer stored in each repository, only retrived. Added Chain and Logger repository.
-0.3.6 -- FastGettext.default_locale=
-0.3.5 -- FastGettext.default_text_domain=
-0.3.4 -- Exceptions are thrown, not returned when translating without text domain
-0.3 -- pluralisation methods accept/return n plural forms, contrary to singular/plural before \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/README.markdown b/vendor/gems/fast_gettext-0.5.10/README.markdown
deleted file mode 100644
index 7d85a3694..000000000
--- a/vendor/gems/fast_gettext-0.5.10/README.markdown
+++ /dev/null
@@ -1,200 +0,0 @@
-FastGettext
-===========
-GetText but 3.5 x faster, 560 x less memory, simple, clean namespace (7 vs 34) and threadsave!
-
-It supports multiple backends (.mo, .po, .yml files, Database(ActiveRecor + any other), Chain, Loggers) and can easily be extended.
-
-[Example Rails application](https://github.com/grosser/gettext_i18n_rails_example)
-
-Comparison
-==========
-<table>
- <tr>
- <td></td>
- <td width="100">Hash</td>
- <td width="150">FastGettext</td>
- <td width="100">GetText</td>
- <td width="100">ActiveSupport I18n::Simple</td>
- </tr>
- <tr>
- <td>Speed*</td>
- <td>0.82s</td>
- <td>1.36s</td>
- <td>4.88s</td>
- <td>21.77s</td>
- </tr>
- <tr>
- <td>RAM*</td>
- <td>4K</td>
- <td>8K</td>
- <td>4480K</td>
- <td>10100K</td>
- </tr>
- <tr>
- <td>Included backends</td>
- <td></td>
- <td>db, yml, mo, po, logger, chain</td>
- <td>mo</td>
- <td>yml</td>
- </tr>
-</table>
-<small>*50.000 translations with ruby enterprise 1.8.6 through `rake benchmark`</small>
-
-Setup
-=====
-### 1. Install
- sudo gem install fast_gettext
-
-### 2. Add a translation repository
-
-From mo files (traditional/default)
- FastGettext.add_text_domain('my_app',:path=>'locale')
-
-Or po files (less maintenance than mo)
- FastGettext.add_text_domain('my_app',:path=>'locale', :type=>:po)
- # :ignore_fuzzy => true to silence warnings about fuzzy translations
- # :ignore_obsolete => true to silence warnings about obsolete translations
-
-Or yaml files (use I18n syntax/indentation)
- FastGettext.add_text_domain('my_app',:path=>'config/locales', :type=>:yaml)
-
-Or database (scaleable, good for many locales/translators)
- # db access is cached <-> only first lookup hits the db
- require "fast_gettext/translation_repository/db"
- FastGettext::TranslationRepository::Db.require_models #load and include default models
- FastGettext.add_text_domain('my_app', :type=>:db, :model=>TranslationKey)
-
-### 3. Choose text domain and locale for translation
-Do this once in every Thread. (e.g. Rails -> ApplicationController)
- FastGettext.text_domain = 'my_app'
- FastGettext.available_locales = ['de','en','fr','en_US','en_UK'] # only allow these locales to be set (optional)
- FastGettext.locale = 'de'
-
-### 4. Start translating
- include FastGettext::Translation
- _('Car') == 'Auto'
- _('not-found') == 'not-found'
- s_('Namespace|no-found') == 'not-found'
- n_('Axis','Axis',3) == 'Achsen' #German plural of Axis
-
-
-Managing translations
-============
-### mo/po-files
-Generate .po or .mo files using GetText parser (example tasks at [gettext_i18n_rails](http://github.com/grosser/gettext_i18n_rails))
-
-Tell Gettext where your .mo or .po files lie, e.g. for locale/de/my_app.po and locale/de/LC_MESSAGES/my_app.mo
- FastGettext.add_text_domain('my_app',:path=>'locale')
-
-Use the [original GetText](http://github.com/mutoh/gettext) to create and manage po/mo-files.
-(Work on a po/mo parser & reader that is easier to use has started, contributions welcome @ [pomo](http://github.com/grosser/pomo) )
-
-###Database
-[Example migration for ActiveRecord](http://github.com/grosser/fast_gettext/blob/master/examples/db/migration.rb)
-The default plural seperator is `||||` but you may overwrite it (or suggest a better one..).
-
-This is usable with any model DataMapper/Sequel or any other(non-database) backend, the only thing you need to do is respond to the self.translation(key, locale) call.
-If you want to use your own models, have a look at the [default models](http://github.com/grosser/fast_gettext/tree/master/lib/fast_gettext/translation_repository/db_models) to see what you want/need to implement.
-
-To manage translations via a Web GUI, use a [Rails application and the translation_db_engine](http://github.com/grosser/translation_db_engine)
-
-Rails
-=======================
-Try the [gettext_i18n_rails plugin](http://github.com/grosser/gettext_i18n_rails), it simplifies the setup.
-Try the [translation_db_engine](http://github.com/grosser/translation_db_engine), to manage your translations in a db.
-
-Setting `available_locales`,`text_domain` or `locale` will not work inside the `evironment.rb`,
-since it runs in a different thread then e.g. controllers, so set them inside your application_controller.
-
- #environment.rb after initializers
- Object.send(:include,FastGettext::Translation)
- FastGettext.add_text_domain('accounting',:path=>'locale')
- FastGettext.add_text_domain('frontend',:path=>'locale')
- ...
-
- #application_controller.rb
- class ApplicationController ...
- include FastGettext::Translation
- before_filter :set_locale
- def set_locale
- FastGettext.available_locales = ['de','en',...]
- FastGettext.text_domain = 'frontend'
- session[:locale] = I18n.locale = FastGettext.set_locale(params[:locale] || session[:locale] || request.env['HTTP_ACCEPT_LANGUAGE'] || 'en')
- end
-
-
-Advanced features
-=================
-###Abnormal pluralisation
-Pluralisation rules can be set directly via a lambda (see specs/), or by using the Gettext
-plural definition (see spec/locale/en/test_plural.po or [Plural expressions for all languages](http://translate.sourceforge.net/wiki/l10n/pluralforms).
-
-
-###default_text_domain
-If you only use one text domain, setting `FastGettext.default_text_domain = 'app'`
-is sufficient and no more `text_domain=` is needed
-
-###default_locale
-If the simple rule of "first `availble_locale` or 'en'" is not suficcient for you, set `FastGettext.default_locale = 'de'`.
-
-###default_available_locales
-Fallback when no available_locales are set
-
-###Chains
-You can use any number of repositories to find a translation. Simply add them to a chain and when
-the first cannot translate a given key, the next is asked and so forth.
- repos = [
- FastGettext::TranslationRepository.build('new', :path=>'....'),
- FastGettext::TranslationRepository.build('old', :path=>'....')
- ]
- FastGettext.add_text_domain 'combined', :type=>:chain, :chain=>repos
-
-###Logger
-When you want to know which keys could not be translated or were used, add a Logger to a Chain:
- repos = [
- FastGettext::TranslationRepository.build('app', :path=>'....')
- FastGettext::TranslationRepository.build('logger', :type=>:logger, :callback=>lamda{|key_or_array_of_ids| ... }),
- }
- FastGettext.add_text_domain 'combined', :type=>:chain, :chain=>repos
-If the Logger is in position #1 it will see all translations, if it is in position #2 it will only see the unfound.
-Unfound may not always mean missing, if you chose not to translate a word because the key is a good translation, it will appear nevertheless.
-A lambda or anything that responds to `call` will do as callback. A good starting point may be `examples/missing_translations_logger.rb`.
-
-###Plugins
-Want a xml version ?
-Write your own TranslationRepository!
- #fast_gettext/translation_repository/xxx.rb
- module FastGettext
- module TranslationRepository
- class Wtf
- define initialize(name,options), [key], plural(*keys) and
- either inherit from TranslationRepository::Base or define available_locales and pluralisation_rule
- end
- end
- end
-
-
-FAQ
-===
- - [Problems with ActiveRecord messages?](http://wiki.github.com/grosser/fast_gettext/activerecord)
-
-
-TODO
-====
- - YML backend that reads ActiveSupport::I18n files
- - any ideas ? :D
-
-Author
-======
-Mo/Po-file parsing from Masao Mutoh, see vendor/README
-
-###Contributors
- - [geekq](http://www.innoq.com/blog/vd)
- - [Matt Sanford](http://blog.mzsanford.com)
- - [Antonio Terceiro](http://softwarelivre.org/terceiro)
- - [J. Pablo Fernández](http://pupeno.com)
- - Rudolf Gavlas
-
-[Michael Grosser](http://pragmatig.wordpress.com)
-grosser.michael@gmail.com
-Hereby placed under public domain, do what you want, just do not hold me accountable...
diff --git a/vendor/gems/fast_gettext-0.5.10/Rakefile b/vendor/gems/fast_gettext-0.5.10/Rakefile
deleted file mode 100644
index 6e5c489c0..000000000
--- a/vendor/gems/fast_gettext-0.5.10/Rakefile
+++ /dev/null
@@ -1,32 +0,0 @@
-task :default => :spec
-require 'spec/rake/spectask'
-Spec::Rake::SpecTask.new {|t| t.spec_opts = ['--color']}
-
-task :benchmark do
- puts "Running on #{RUBY}"
- %w[baseline ideal fast_gettext original i18n_simple].each do |bench|
- puts `ruby benchmark/#{bench}.rb`
- puts ""
- end
-end
-
-task :namespaces do
- puts `ruby benchmark/namespace/original.rb`
- puts `ruby benchmark/namespace/fast_gettext.rb`
-end
-
-begin
- require 'jeweler'
- project_name = 'fast_gettext'
- Jeweler::Tasks.new do |gem|
- gem.name = project_name
- gem.summary = "A simple, fast and threadsafe implementation of GetText"
- gem.email = "grosser.michael@gmail.com"
- gem.homepage = "http://github.com/grosser/#{project_name}"
- gem.authors = ["Michael Grosser"]
- end
-
- Jeweler::GemcutterTasks.new
-rescue LoadError
- puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/VERSION b/vendor/gems/fast_gettext-0.5.10/VERSION
deleted file mode 100644
index 50c76ef87..000000000
--- a/vendor/gems/fast_gettext-0.5.10/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-0.5.10
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/base.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/base.rb
deleted file mode 100644
index a3fead192..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/base.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'rubygems'
-require 'benchmark'
-
-RUNS = 50_0000
-DEFAULTS = {:memory=>0}
-
-def locale_folder(domain)
- path = case domain
- when 'test' then File.join(File.expand_path(File.dirname(__FILE__)),'..','spec','locale')
- when 'large' then File.join(File.expand_path(File.dirname(__FILE__)),'locale')
- end
-
- mo = File.join(path,'de','LC_MESSAGES',"#{domain}.mo")
- raise unless File.exist?(mo)
- path
-end
-
-def results_test(&block)
- print "#{(result(&block)).to_s.strip.split(' ').first}s / #{memory}K <-> "
-end
-
-def results_large
- print "#{(result {_('login') == 'anmelden'}).to_s.strip.split(' ').first}s / #{memory}K"
- puts ""
-end
-
-def result
- result =Benchmark.measure do
- RUNS.times do
- raise "not translated" unless yield
- end
- end
- result
-end
-
-def memory
- pid = Process.pid
- map = `pmap -d #{pid}`
- map.split("\n").last.strip.squeeze(' ').split(' ')[3].to_i - DEFAULTS[:memory]
-end
-
-DEFAULTS[:memory] = memory + 4 #4 => 0 for base calls \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/baseline.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/baseline.rb
deleted file mode 100644
index a9eb474ae..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/baseline.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require 'benchmark/base'
-
-puts "Baseline: (doing nothing in a loop)"
-results_test{true}
-puts "" \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/fast_gettext.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/fast_gettext.rb
deleted file mode 100644
index 7832b39cf..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/fast_gettext.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'benchmark/base'
-
-$LOAD_PATH.unshift 'lib'
-require 'fast_gettext'
-include FastGettext::Translation
-
-FastGettext.available_locales = ['de','en']
-FastGettext.locale = 'de'
-
-puts "FastGettext:"
-FastGettext.add_text_domain('test',:path=>locale_folder('test'))
-FastGettext.text_domain = 'test'
-results_test{_('car') == 'Auto'}
-
-#i cannot add the large file, since its an internal applications mo file
-FastGettext.add_text_domain('large',:path=>locale_folder('large'))
-FastGettext.text_domain = 'large'
-results_large \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/i18n_simple.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/i18n_simple.rb
deleted file mode 100644
index 9bd35cbc7..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/i18n_simple.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'benchmark/base'
-require 'activesupport'
-I18n.backend = I18n::Backend::Simple.new
-I18n.load_path = ['benchmark/locale/de.yml']
-I18n.locale = :de
-puts "ActiveSupport I18n::Backend::Simple :"
-results_test{I18n.translate('activerecord.models.car')=='Auto'} \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/ideal.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/ideal.rb
deleted file mode 100644
index 4a0e02265..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/ideal.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'benchmark/base'
-
-$LOAD_PATH.unshift 'lib'
-
-module FastestGettext
- def set_domain(folder,domain,locale)
- @data = {}
- require 'fast_gettext/vendor/mofile'
- FastGettext::GetText::MOFile.open(File.join(folder,locale,'LC_MESSAGES',"#{domain}.mo"), "UTF-8").each{|k,v|@data[k]=v}
- end
- def _(word)
- @data[word]
- end
-end
-
-
-include FastestGettext
-set_domain(locale_folder('test'),'test','de')
-puts "Ideal: (primitive Hash lookup)"
-results_test{_('car') == 'Auto'}
-
-#i cannot add the large file, since its an internal applications mo file
-set_domain(locale_folder('large'),'large','de')
-results_large
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/locale/de.yml b/vendor/gems/fast_gettext-0.5.10/benchmark/locale/de.yml
deleted file mode 100644
index 19462d6e2..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/locale/de.yml
+++ /dev/null
@@ -1,127 +0,0 @@
-# German translations for Ruby on Rails
-# by Clemens Kofler (clemens@railway.at)
-
-de:
- date:
- formats:
- default: "%d.%m.%Y"
- short: "%e. %b"
- long: "%e. %B %Y"
- only_day: "%e"
-
- day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag]
- abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa]
- month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
- abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez]
- order: [ :day, :month, :year ]
-
- time:
- formats:
- default: "%A, %e. %B %Y, %H:%M Uhr"
- short: "%e. %B, %H:%M Uhr"
- long: "%A, %e. %B %Y, %H:%M Uhr"
- time: "%H:%M"
-
- am: "vormittags"
- pm: "nachmittags"
-
- datetime:
- distance_in_words:
- half_a_minute: 'eine halbe Minute'
- less_than_x_seconds:
- zero: 'weniger als 1 Sekunde'
- one: 'weniger als 1 Sekunde'
- other: 'weniger als {{count}} Sekunden'
- x_seconds:
- one: '1 Sekunde'
- other: '{{count}} Sekunden'
- less_than_x_minutes:
- zero: 'weniger als 1 Minute'
- one: 'weniger als eine Minute'
- other: 'weniger als {{count}} Minuten'
- x_minutes:
- one: '1 Minute'
- other: '{{count}} Minuten'
- about_x_hours:
- one: 'etwa 1 Stunde'
- other: 'etwa {{count}} Stunden'
- x_days:
- one: '1 Tag'
- other: '{{count}} Tage'
- about_x_months:
- one: 'etwa 1 Monat'
- other: 'etwa {{count}} Monate'
- x_months:
- one: '1 Monat'
- other: '{{count}} Monate'
- about_x_years:
- one: 'etwa 1 Jahr'
- other: 'etwa {{count}} Jahre'
- over_x_years:
- one: 'mehr als 1 Jahr'
- other: 'mehr als {{count}} Jahre'
-
- number:
- format:
- precision: 2
- separator: ','
- delimiter: '.'
- currency:
- format:
- unit: '€'
- format: '%n%u'
- separator:
- delimiter:
- precision:
- percentage:
- format:
- delimiter: ""
- precision:
- format:
- delimiter: ""
- human:
- format:
- delimiter: ""
- precision: 1
-
- support:
- array:
- sentence_connector: "und"
- skip_last_comma: true
-
- activerecord:
- errors:
- template:
- header:
- one: "Konnte dieses {{model}} Objekt nicht speichern: 1 Fehler."
- other: "Konnte dieses {{model}} Objekt nicht speichern: {{count}} Fehler."
- body: "Bitte überprüfen Sie die folgenden Felder:"
- format:
- seperator: ' '
- messages:
- inclusion: "ist kein gültiger Wert"
- exclusion: "ist nicht verfügbar"
- invalid: "ist nicht gültig"
- confirmation: "stimmt nicht mit der Bestätigung überein"
- accepted: "muss akzeptiert werden"
- empty: "muss ausgefüllt werden"
- blank: "muss ausgefüllt werden"
- too_long: "ist zu lang (nicht mehr als {{count}} Zeichen)"
- too_short: "ist zu kurz (nicht weniger als {{count}} Zeichen)"
- wrong_length: "hat die falsche Länge (muss genau {{count}} Zeichen haben)"
- taken: "ist bereits vergeben"
- not_a_number: "ist keine Zahl"
- greater_than: "muss größer als {{count}} sein"
- greater_than_or_equal_to: "muss größer oder gleich {{count}} sein"
- equal_to: "muss genau {{count}} sein"
- less_than: "muss kleiner als {{count}} sein"
- less_than_or_equal_to: "muss kleiner oder gleich {{count}} sein"
- odd: "muss ungerade sein"
- even: "muss gerade sein"
- models:
- car: 'BAUTO'
- cars: 'CAUTO'
- Car: 'DAUTO'
-
- models:
- car: 'Auto'
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/locale/de/LC_MESSAGES/large.mo b/vendor/gems/fast_gettext-0.5.10/benchmark/locale/de/LC_MESSAGES/large.mo
deleted file mode 100644
index e4481b211..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/locale/de/LC_MESSAGES/large.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/misc/threadsave.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/misc/threadsave.rb
deleted file mode 100644
index 3e65afa7d..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/misc/threadsave.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'benchmark'
-BASELINE = 0
-def test
- result = Benchmark.measure {1_000_000.times{ yield }}
- result.to_s.strip.split(' ').first.to_f - BASELINE
-end
-
-BASELINE = (test{})
-Thread.current[:library_name]={}
-other = "x"
-puts "Ruby #{VERSION}"
-
-puts "generic:"
-puts " Symbol: #{test{Thread.current[:library_name][:just_a_symbol]}}s"
-puts " String concat: #{test{Thread.current["xxxxxx"<<other.to_s]}}s"
-puts " String add: #{test{Thread.current["xxxxxx"+other.to_s]}}s"
-puts " String insert: #{test{Thread.current["xxxxxx#{other}"]}}s"
-
-puts "single:"
-puts " Symbol: #{test{Thread.current[:long_unique_symbol]}}s"
-puts " String: #{test{Thread.current["xxxxxx"]}}s" \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/namespace/fast_gettext.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/namespace/fast_gettext.rb
deleted file mode 100644
index 37b59efa9..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/namespace/fast_gettext.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-#Iconv will not be defined, unless it is found -> normalize test results for users that have Iconv/those who do not have it
-begin;require 'iconv';rescue;LoadError;end
-initial = methods.count + Module.constants.count
-
-#FastGettext
-$LOAD_PATH.unshift File.join(File.dirname(__FILE__),'..','..','lib')
-require 'fast_gettext'
-FastGettext.locale = 'de'
-FastGettext.add_text_domain 'test', :path=>'spec/locale'
-FastGettext.text_domain = 'test'
-include FastGettext::Translation
-raise unless _('car')=='Auto'
-
-puts "FastGettext"
-puts methods.count + Module.constants.count - initial \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/namespace/original.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/namespace/original.rb
deleted file mode 100644
index b5ae694ab..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/namespace/original.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'rubygems'
-initial = methods.count + Module.constants.count
-
-#GetText
-gem 'gettext', '>=2.0.0'
-require 'gettext'
-GetText.locale = 'de'
-GetText.bindtextdomain('test',:path=>'spec/locale')
-include GetText
-raise unless _('car') == 'Auto'
-
-
-puts "GetText"
-puts methods.count + Module.constants.count - initial \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/benchmark/original.rb b/vendor/gems/fast_gettext-0.5.10/benchmark/original.rb
deleted file mode 100644
index 9060491a4..000000000
--- a/vendor/gems/fast_gettext-0.5.10/benchmark/original.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'benchmark/base'
-
-begin
-gem 'gettext', '>=2.0.0'
-rescue LoadError
- $LOAD_PATH.unshift 'lib'
-end
-require 'gettext'
-include GetText
-
-self.locale = 'de'
-
-puts "GetText #{GetText::VERSION}:"
-bindtextdomain('test',:path=>locale_folder('test'))
-results_test{_('car') == 'Auto'}
-
-#i cannot add the large file, since its an internal applications mo file
-bindtextdomain('large',:path=>locale_folder('large'))
-results_large
diff --git a/vendor/gems/fast_gettext-0.5.10/examples/db/migration.rb b/vendor/gems/fast_gettext-0.5.10/examples/db/migration.rb
deleted file mode 100644
index 049e9f077..000000000
--- a/vendor/gems/fast_gettext-0.5.10/examples/db/migration.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-class CreateTranslationTables < ActiveRecord::Migration
- def self.up
- create_table :translation_keys do |t|
- t.string :key, :unique=>true, :null=>false
- t.timestamps
- end
- add_index :translation_keys, :key #I am not sure if this helps....
-
- create_table :translation_texts do |t|
- t.text :text
- t.string :locale
- t.integer :translation_key_id, :null=>false
- t.timestamps
- end
- add_index :translation_texts, :translation_key_id
- end
-
- def self.down
- drop_table :translation_keys
- drop_table :translation_texts
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/examples/missing_translation_logger.rb b/vendor/gems/fast_gettext-0.5.10/examples/missing_translation_logger.rb
deleted file mode 100644
index 5b507402a..000000000
--- a/vendor/gems/fast_gettext-0.5.10/examples/missing_translation_logger.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-class MissingTranslationLogger
- def call(unfound)
- logger.warn "#{FastGettext.locale}: #{unfound}" unless FastGettext.locale == 'en'
- end
-
- private
-
- def logger
- return @logger if @logger
- require 'logger'
- @logger = Logger.new("log/unfound_translations", 2, 5*(1024**2))#max 2x 5mb logfile
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/fast_gettext.gemspec b/vendor/gems/fast_gettext-0.5.10/fast_gettext.gemspec
deleted file mode 100644
index 2165fb991..000000000
--- a/vendor/gems/fast_gettext-0.5.10/fast_gettext.gemspec
+++ /dev/null
@@ -1,125 +0,0 @@
-# Generated by jeweler
-# DO NOT EDIT THIS FILE DIRECTLY
-# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
- s.name = %q{fast_gettext}
- s.version = "0.5.10"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
- s.authors = ["Michael Grosser"]
- s.date = %q{2010-09-17}
- s.email = %q{grosser.michael@gmail.com}
- s.extra_rdoc_files = [
- "README.markdown"
- ]
- s.files = [
- ".gitignore",
- "CHANGELOG",
- "README.markdown",
- "Rakefile",
- "VERSION",
- "benchmark/base.rb",
- "benchmark/baseline.rb",
- "benchmark/fast_gettext.rb",
- "benchmark/i18n_simple.rb",
- "benchmark/ideal.rb",
- "benchmark/locale/de.yml",
- "benchmark/locale/de/LC_MESSAGES/large.mo",
- "benchmark/misc/threadsave.rb",
- "benchmark/namespace/fast_gettext.rb",
- "benchmark/namespace/original.rb",
- "benchmark/original.rb",
- "examples/db/migration.rb",
- "examples/missing_translation_logger.rb",
- "fast_gettext.gemspec",
- "lib/fast_gettext.rb",
- "lib/fast_gettext/VERSION",
- "lib/fast_gettext/mo_file.rb",
- "lib/fast_gettext/po_file.rb",
- "lib/fast_gettext/storage.rb",
- "lib/fast_gettext/translation.rb",
- "lib/fast_gettext/translation_repository.rb",
- "lib/fast_gettext/translation_repository/base.rb",
- "lib/fast_gettext/translation_repository/chain.rb",
- "lib/fast_gettext/translation_repository/db.rb",
- "lib/fast_gettext/translation_repository/db_models/translation_key.rb",
- "lib/fast_gettext/translation_repository/db_models/translation_text.rb",
- "lib/fast_gettext/translation_repository/logger.rb",
- "lib/fast_gettext/translation_repository/mo.rb",
- "lib/fast_gettext/translation_repository/po.rb",
- "lib/fast_gettext/translation_repository/yaml.rb",
- "lib/fast_gettext/vendor/README.rdoc",
- "lib/fast_gettext/vendor/empty.mo",
- "lib/fast_gettext/vendor/iconv.rb",
- "lib/fast_gettext/vendor/mofile.rb",
- "lib/fast_gettext/vendor/poparser.rb",
- "lib/fast_gettext/vendor/string.rb",
- "spec/aa_unconfigued_spec.rb",
- "spec/fast_gettext/mo_file_spec.rb",
- "spec/fast_gettext/storage_spec.rb",
- "spec/fast_gettext/translation_repository/base_spec.rb",
- "spec/fast_gettext/translation_repository/chain_spec.rb",
- "spec/fast_gettext/translation_repository/db_spec.rb",
- "spec/fast_gettext/translation_repository/logger_spec.rb",
- "spec/fast_gettext/translation_repository/mo_spec.rb",
- "spec/fast_gettext/translation_repository/po_spec.rb",
- "spec/fast_gettext/translation_repository/yaml_spec.rb",
- "spec/fast_gettext/translation_repository_spec.rb",
- "spec/fast_gettext/translation_spec.rb",
- "spec/fast_gettext/vendor/fake_load_path/iconv.rb",
- "spec/fast_gettext/vendor/iconv_spec.rb",
- "spec/fast_gettext/vendor/string_spec.rb",
- "spec/fast_gettext_spec.rb",
- "spec/fuzzy_locale/de/test.po",
- "spec/locale/de/LC_MESSAGES/test.mo",
- "spec/locale/de/test.po",
- "spec/locale/en/LC_MESSAGES/plural_test.mo",
- "spec/locale/en/LC_MESSAGES/test.mo",
- "spec/locale/en/plural_test.po",
- "spec/locale/en/test.po",
- "spec/locale/yaml/de.yml",
- "spec/locale/yaml/en.yml",
- "spec/locale/yaml/notfound.yml",
- "spec/obsolete_locale/de/test.po",
- "spec/spec_helper.rb"
- ]
- s.homepage = %q{http://github.com/grosser/fast_gettext}
- s.rdoc_options = ["--charset=UTF-8"]
- s.require_paths = ["lib"]
- s.rubygems_version = %q{1.3.6}
- s.summary = %q{A simple, fast and threadsafe implementation of GetText}
- s.test_files = [
- "spec/aa_unconfigued_spec.rb",
- "spec/fast_gettext/mo_file_spec.rb",
- "spec/fast_gettext/storage_spec.rb",
- "spec/fast_gettext/translation_spec.rb",
- "spec/fast_gettext/translation_repository_spec.rb",
- "spec/fast_gettext/translation_repository/base_spec.rb",
- "spec/fast_gettext/translation_repository/chain_spec.rb",
- "spec/fast_gettext/translation_repository/db_spec.rb",
- "spec/fast_gettext/translation_repository/po_spec.rb",
- "spec/fast_gettext/translation_repository/mo_spec.rb",
- "spec/fast_gettext/translation_repository/logger_spec.rb",
- "spec/fast_gettext/translation_repository/yaml_spec.rb",
- "spec/fast_gettext/vendor/string_spec.rb",
- "spec/fast_gettext/vendor/iconv_spec.rb",
- "spec/fast_gettext/vendor/fake_load_path/iconv.rb",
- "spec/spec_helper.rb",
- "spec/fast_gettext_spec.rb",
- "examples/db/migration.rb",
- "examples/missing_translation_logger.rb"
- ]
-
- if s.respond_to? :specification_version then
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
- s.specification_version = 3
-
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
- else
- end
- else
- end
-end
-
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext.rb
deleted file mode 100644
index ea63710f7..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'fast_gettext/mo_file'
-require 'fast_gettext/storage'
-require 'fast_gettext/translation'
-require 'fast_gettext/translation_repository'
-require 'fast_gettext/vendor/string'
-
-module FastGettext
- include FastGettext::Storage
- extend self
-
- VERSION = File.read( File.join(File.dirname(__FILE__), 'fast_gettext', 'VERSION') ).strip
- LOCALE_REX = /^[a-z]{2}$|^[a-z]{2}_[A-Z]{2}$/
- NAMESPACE_SEPERATOR = '|'
-
- # users should not include FastGettext, since this would conterminate their namespace
- # rather use
- # FastGettext.locale = ..
- # FastGettext.text_domain = ..
- # and
- # include FastGettext::Translation
- FastGettext::Translation.public_instance_methods.each do |method|
- define_method method do |*args|
- Translation.send(method,*args)
- end
- end
-
- def add_text_domain(name,options)
- translation_repositories[name] = TranslationRepository.build(name,options)
- end
-end
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/VERSION b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/VERSION
deleted file mode 100644
index 4b9fcbec1..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-0.5.1
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/mo_file.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/mo_file.rb
deleted file mode 100644
index 3829e511b..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/mo_file.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-require 'fast_gettext/vendor/mofile'
-module FastGettext
- # Responsibility:
- # - abstract mo files for Mo Repository
- class MoFile
- PLURAL_SEPERATOR = "\000"
-
- # file => path or FastGettext::GetText::MOFile
- def initialize(file)
- if file.is_a? FastGettext::GetText::MOFile
- @data = file
- else
- @data = FastGettext::GetText::MOFile.open(file, "UTF-8")
- end
- make_singular_and_plural_available
- end
-
- def [](key)
- @data[key]
- end
-
- #returns the plural forms or all singular translations that where found
- def plural(*msgids)
- translations = plural_translations(msgids)
- return translations
- # XXX: 20111004 - Temporary patch for release/0.4 until we upgrade the fast_gettext gem
- # to 0.60. The code used to say 'unless translations.empty?', but that's wrong:
- # we must return [] if not found - otherwise chained repositories won't work.
- # Also removed:
- # msgids.map{|msgid| self[msgid] || msgid} #try to translate each id
- end
-
- def pluralisation_rule
- #gettext uses 0 as default rule, which would turn off all pluralisation, very clever...
- #additionally parsing fails when directly accessing po files, so this line was taken from gettext/mofile
- (@data['']||'').split("\n").each do |line|
- return lambda{|n|eval($2)} if /^Plural-Forms:\s*nplurals\s*\=\s*(\d*);\s*plural\s*\=\s*([^;]*)\n?/ =~ line
- end
- nil
- end
-
- def self.empty
- MoFile.new(File.join(File.dirname(__FILE__),'vendor','empty.mo'))
- end
-
- private
-
- #(if plural==singular, prefer singular)
- def make_singular_and_plural_available
- data = {}
- @data.each do |key,translation|
- next unless key.include? PLURAL_SEPERATOR
- singular, plural = split_plurals(key)
- translation = split_plurals(translation)
- data[singular] ||= translation[0]
- data[plural] ||= translation[1]
- end
- @data.merge!(data){|key,old,new| old}
- end
-
- def split_plurals(singular_plural)
- singular_plural.split(PLURAL_SEPERATOR)
- end
-
- # Car, Cars => [Auto,Autos] or []
- def plural_translations(msgids)
- plurals = self[msgids*PLURAL_SEPERATOR]
- if plurals then split_plurals(plurals) else [] end
- end
- end
-end
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/po_file.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/po_file.rb
deleted file mode 100644
index f2afb00ec..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/po_file.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'fast_gettext/mo_file'
-module FastGettext
- # Responsibility:
- # - abstract po files for Po Repository
- # TODO refactor...
- class PoFile
- def self.to_mo_file(file, options={})
- require 'fast_gettext/vendor/poparser'
- mo_file = FastGettext::GetText::MOFile.new
- FastGettext::GetText::PoParser.new.parse(File.read(file), mo_file, !options[:ignore_fuzzy], !options[:ignore_obsolete])
- MoFile.new(mo_file)
- end
- end
-end
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/storage.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/storage.rb
deleted file mode 100644
index 3ad4ed5b8..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/storage.rb
+++ /dev/null
@@ -1,192 +0,0 @@
-module FastGettext
- # Responsibility:
- # - store data threadsave
- # - provide error messages when repositories are unconfigured
- # - accept/reject locales that are set by the user
- module Storage
- class NoTextDomainConfigured < RuntimeError
- def to_s
- "Current textdomain (#{FastGettext.text_domain.inspect}) was not added, use FastGettext.add_text_domain !"
- end
- end
-
- [:available_locales, :_locale, :text_domain, :pluralisation_rule].each do |method_name|
- key = "fast_gettext_#{method_name}".to_sym
- define_method method_name do
- Thread.current[key]
- end
-
- define_method "#{method_name}=" do |value|
- Thread.current[key]=value
- update_current_cache
- end
- end
- private :_locale, :_locale=
-
-
- def available_locales
- locales = Thread.current[:fast_gettext_available_locales] || default_available_locales
- return unless locales
- locales.map{|s|s.to_s}
- end
-
- # == cattr_accessor :default_available_locales
- @@default_available_locales = nil
- def default_available_locales=(avail_locales)
- @@default_available_locales = avail_locales
- update_current_cache
- end
-
- def default_available_locales
- @@default_available_locales
- end
-
-
- def text_domain
- Thread.current[:fast_gettext_text_domain] || default_text_domain
- end
-
- # == cattr_accessor :default_text_domain
- @@default_text_domain = nil
- def default_text_domain=(domain)
- @@default_text_domain = domain
- update_current_cache
- end
-
- def default_text_domain
- @@default_text_domain
- end
-
-
- # if overwritten by user( FastGettext.pluralisation_rule = xxx) use it,
- # otherwise fall back to repo or to default lambda
- def pluralisation_rule
- Thread.current[:fast_gettext_pluralisation_rule] || current_repository.pluralisation_rule || lambda{|i| i!=1}
- end
-
- def current_cache
- Thread.current[:fast_gettext_current_cache] || {}
- end
-
- def current_cache=(cache)
- Thread.current[:fast_gettext_current_cache] = cache
- end
-
- #global, since re-parsing whole folders takes too much time...
- @@translation_repositories={}
- def translation_repositories
- @@translation_repositories
- end
-
- # used to speedup simple translations, does not work for pluralisation
- # caches[text_domain][locale][key]=translation
- @@caches={}
- def caches
- @@caches
- end
-
- def current_repository
- translation_repositories[text_domain] || raise(NoTextDomainConfigured)
- end
-
- def key_exist?(key)
- !!(cached_find key)
- end
-
- def cached_find(key)
- translation = current_cache[key]
- return translation if translation or translation == false #found or was not found before
- current_cache[key] = current_repository[key] || false
- end
-
- def cached_plural_find(*keys)
- key = '||||' + keys * '||||'
- translation = current_cache[key]
- return translation if translation or translation == false #found or was not found before
- current_cache[key] = current_repository.plural(*keys) || false
- end
-
- def locale
- _locale || ( default_locale || (available_locales||[]).first || 'en' )
- end
-
- def locale=(new_locale)
- new_locale = best_locale_in(new_locale)
- self._locale = new_locale if new_locale
- end
-
- # for chaining: puts set_locale('xx') == 'xx' ? 'applied' : 'rejected'
- # returns the current locale, not the one that was supplied
- # like locale=(), whoes behavior cannot be changed
- def set_locale(new_locale)
- self.locale = new_locale
- locale
- end
-
- @@default_locale = nil
- def default_locale=(new_locale)
- @@default_locale = best_locale_in(new_locale)
- update_current_cache
- end
-
- def default_locale
- @@default_locale
- end
-
- #Opera: de-DE,de;q=0.9,en;q=0.8
- #Firefox de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
- #IE6/7 de
- #nil if nothing matches
- def best_locale_in(locales)
- formatted_sorted_locales(locales).each do |candidate|
- return candidate if not available_locales
- return candidate if available_locales.include?(candidate)
- return candidate[0..1] if available_locales.include?(candidate[0..1])#available locales include a langauge
- end
- return nil#nothing found im sorry :P
- end
-
- #turn off translation if none was defined to disable all resulting errors
- def silence_errors
- require 'fast_gettext/translation_repository/base'
- translation_repositories[text_domain] = TranslationRepository::Base.new('x')
- end
-
- private
-
- # de-de,DE-CH;q=0.9 -> ['de_DE','de_CH']
- def formatted_sorted_locales(locales)
- found = weighted_locales(locales).reject{|x|x.empty?}.sort_by{|l|l.last}.reverse #sort them by weight which is the last entry
- found.flatten.map{|l| format_locale(l)}
- end
-
- #split the locale and seperate it into different languages
- #de-de,de;q=0.9,en;q=0.8 => [['de-de','de','0.5'], ['en','0.8']]
- def weighted_locales(locales)
- locales = locales.to_s.gsub(/\s/,'')
- found = [[]]
- locales.split(',').each do |part|
- if part =~ /;q=/ #contains language and weight ?
- found.last << part.split(/;q=/)
- found.last.flatten!
- found << []
- else
- found.last << part
- end
- end
- found
- end
-
- #de-de -> de_DE
- def format_locale(locale)
- locale.sub(/^([a-zA-Z]{2})[-_]([a-zA-Z]{2})$/){$1.downcase+'_'+$2.upcase}
- end
-
- def update_current_cache
- caches[text_domain] ||= {}
- caches[text_domain][locale] ||= {}
- caches[text_domain][locale][""] = false #ignore gettext meta key when translating
- self.current_cache = caches[text_domain][locale]
- end
- end
-end
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation.rb
deleted file mode 100644
index b1e63231f..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-module FastGettext
- # this module should be included
- # Responsibility:
- # - direct translation queries to the current repository
- # - handle untranslated values
- # - understand / enforce namespaces
- # - decide which plural form is used
- module Translation
- extend self
-
- #make it usable in class definition, e.g.
- # class Y
- # include FastGettext::Translation
- # @@x = _('y')
- # end
- def self.included(klas) #:nodoc:
- klas.extend self
- end
-
- def _(key)
- FastGettext.cached_find(key) or key
- end
-
- #translate pluralized
- # some languages have up to 4 plural forms...
- # n_(singular, plural, plural form 2, ..., count)
- # n_('apple','apples',3)
- def n_(*keys)
- count = keys.pop
- translations = FastGettext.cached_plural_find *keys
- selected = FastGettext.pluralisation_rule.call(count)
- selected = selected ? 1 : 0 unless selected.is_a? Numeric #convert booleans to numbers
- translations[selected] || keys[selected] || keys.last
- end
-
- #translate, but discard namespace if nothing was found
- # Car|Tire -> Tire if no translation could be found
- def s_(key,seperator=nil)
- translation = FastGettext.cached_find(key) and return translation
- key.split(seperator||NAMESPACE_SEPERATOR).last
- end
-
- #tell gettext: this string need translation (will be found during parsing)
- def N_(translate)
- translate
- end
-
- #tell gettext: this string need translation (will be found during parsing)
- def Nn_(*keys)
- keys
- end
-
- def ns_(*args)
- n_(*args).split(NAMESPACE_SEPERATOR).last
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository.rb
deleted file mode 100644
index baa73290a..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-module FastGettext
- # Responsibility:
- # - decide which repository to choose from given input
- module TranslationRepository
- extend self
-
- # only single-word types supported atm (mytype works, MyType will not)
- def build(name, options)
- type = options[:type] || :mo
- class_name = type.to_s.capitalize
- unless FastGettext::TranslationRepository.constants.map{|c|c.to_s}.include?(class_name)
- require "fast_gettext/translation_repository/#{type}"
- end
- eval(class_name).new(name,options)
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/base.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/base.rb
deleted file mode 100644
index cb398aa33..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/base.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-module FastGettext
- module TranslationRepository
- # Responsibility:
- # - base for all repositories
- # - fallback as empty repository, that cannot translate anything but does not crash
- class Base
- def initialize(name,options={})
- @name = name
- @options = options
- end
-
- def pluralisation_rule
- nil
- end
-
- def available_locales
- []
- end
-
- def [](key)
- current_translations[key]
- end
-
- def plural(*keys)
- current_translations.plural(*keys)
- end
-
- protected
-
- def current_translations
- MoFile.empty
- end
-
- def find_files_in_locale_folders(relative_file_path,path)
- path ||= "locale"
- raise "path #{path} cound not be found!" unless File.exist?(path)
-
- @files = {}
- Dir[File.join(path,'*')].each do |locale_folder|
- next unless File.basename(locale_folder) =~ LOCALE_REX
- file = File.join(locale_folder,relative_file_path)
- next unless File.exist? file
- locale = File.basename(locale_folder)
- @files[locale] = yield(locale,file)
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/chain.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/chain.rb
deleted file mode 100644
index 93b2ee7a9..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/chain.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'fast_gettext/translation_repository/base'
-
-module FastGettext
- module TranslationRepository
- # Responsibility:
- # - delegate calls to members of the chain in turn
- #TODO cache should be expired after a repo was added
- class Chain < Base
- attr_accessor :chain
-
- def initialize(name,options={})
- super
- self.chain = options[:chain]
- end
-
- def available_locales
- chain.map{|c|c.available_locales}.flatten.uniq
- end
-
- def pluralisation_rule
- chain.each do |c|
- result = c.pluralisation_rule and return result
- end
- nil
- end
-
- def [](key)
- chain.each do |c|
- result = c[key] and return result
- end
- nil
- end
-
- def plural(*keys)
- chain.each do |c|
- result = c.plural(*keys)
- return result unless result.compact.empty?
- end
- []
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db.rb
deleted file mode 100644
index 0249a644c..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'active_record'
-module FastGettext
- module TranslationRepository
- # Responsibility:
- # - provide access to translations in database through a database abstraction
- #
- # Options:
- # :model => Model that represents your keys
- # you can either use the models supplied under db/, extend them or build your own
- # only constraints:
- # key: find_by_key, translations
- # translation: text, locale
- class Db
- def initialize(name,options={})
- @model = options[:model]
- end
-
- @@seperator = '||||' # string that seperates multiple plurals
- def self.seperator=(sep);@@seperator = sep;end
- def self.seperator;@@seperator;end
-
- def available_locales
- if @model.respond_to? :available_locales
- @model.available_locales || []
- else
- []
- end
- end
-
- def pluralisation_rule
- if @model.respond_to? :pluralsation_rule
- @model.pluralsation_rule
- else
- nil
- end
- end
-
- def [](key)
- @model.translation(key, FastGettext.locale)
- end
-
- def plural(*args)
- if translation = @model.translation(args*self.class.seperator, FastGettext.locale)
- translation.to_s.split(self.class.seperator)
- else
- []
- end
- end
-
- def self.require_models
- folder = "fast_gettext/translation_repository/db_models"
- require "#{folder}/translation_key"
- require "#{folder}/translation_text"
- Module.new do
- def self.included(base)
- puts "you no longer need to include the result of require_models"
- end
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db_models/translation_key.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db_models/translation_key.rb
deleted file mode 100644
index 3fcc638e5..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db_models/translation_key.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class TranslationKey < ActiveRecord::Base
- has_many :translations, :class_name => 'TranslationText'
-
- accepts_nested_attributes_for :translations, :allow_destroy => true
-
- validates_uniqueness_of :key
- validates_presence_of :key
-
- def self.translation(key, locale)
- return unless translation_key = find_by_key(key)
- return unless translation_text = translation_key.translations.find_by_locale(locale)
- translation_text.text
- end
-
- def self.available_locales
- @@available_locales ||= TranslationText.count(:group=>:locale).keys.sort
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db_models/translation_text.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db_models/translation_text.rb
deleted file mode 100644
index 3428f82ef..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/db_models/translation_text.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class TranslationText < ActiveRecord::Base
- belongs_to :key, :class_name=>'TranslationKey'
- validates_presence_of :locale
- validates_uniqueness_of :locale, :scope=>:translation_key_id
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/logger.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/logger.rb
deleted file mode 100644
index 7854a7b1b..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/logger.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'fast_gettext/translation_repository/base'
-
-module FastGettext
- module TranslationRepository
- # This should be used in a TranslationRepository::Chain, so tat untranslated keys can be found
- # Responsibility:
- # - log every translation call
- class Logger < Base
- attr_accessor :callback
-
- def initialize(name,options={})
- super
- self.callback = options[:callback]
- end
-
- def [](key)
- callback.call(key)
- nil
- end
-
- def plural(*keys)
- callback.call(keys)
- []
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/mo.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/mo.rb
deleted file mode 100644
index fec4dab54..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/mo.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'fast_gettext/translation_repository/base'
-module FastGettext
- module TranslationRepository
- # Responsibility:
- # - find and store mo files
- # - provide access to translations in mo files
- class Mo < Base
- def initialize(name,options={})
- find_and_store_files(name,options)
- super
- end
-
- def available_locales
- @files.keys
- end
-
- def pluralisation_rule
- current_translations.pluralisation_rule
- end
-
- protected
-
- def find_and_store_files(name,options)
- # parse all .mo files with the right name, that sit in locale/LC_MESSAGES folders
- find_files_in_locale_folders(File.join('LC_MESSAGES',"#{name}.mo"), options[:path]) do |locale,file|
- @files[locale] = MoFile.new(file)
- end
- end
-
- def current_translations
- @files[FastGettext.locale] || MoFile.empty
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/po.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/po.rb
deleted file mode 100644
index dcb6c0889..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/po.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'fast_gettext/translation_repository/base'
-require 'fast_gettext/translation_repository/mo'
-module FastGettext
- module TranslationRepository
- # Responsibility:
- # - find and store po files
- # - provide access to translations in po files
- class Po < Mo
- protected
- def find_and_store_files(name, options)
- require 'fast_gettext/po_file'
- find_files_in_locale_folders("#{name}.po", options[:path]) do |locale,file|
- @files[locale] = PoFile.to_mo_file(file, options)
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/yaml.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/yaml.rb
deleted file mode 100644
index 3aafac521..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/translation_repository/yaml.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-require 'fast_gettext/translation_repository/base'
-require 'yaml'
-
-module FastGettext
- module TranslationRepository
- # Responsibility:
- # - find and store yaml files
- # - provide access to translations in yaml files
- class Yaml < Base
- def initialize(name,options={})
- find_and_store_files(options)
- super
- end
-
- def available_locales
- @files.keys
- end
-
- def plural(*keys)
- ['one', 'other', 'plural2', 'plural3'].map do |name|
- self[yaml_dot_notation(keys.first, name)]
- end
- end
-
- def pluralisation_rule
- self['pluralisation_rule'] ? lambda{|n| eval(self['pluralisation_rule']) } : nil
- end
-
- protected
-
- MAX_FIND_DEPTH = 10
-
- def find_and_store_files(options)
- @files = {}
- path = options[:path] || 'config/locales'
- Dir["#{path}/??.yml"].each do |yaml_file|
- locale = yaml_file.match(/([a-z]{2})\.yml$/)[1]
- @files[locale] = load_yaml(yaml_file, locale)
- end
- end
-
- def current_translations
- @files[FastGettext.locale] || super
- end
-
- # Given a yaml file return a hash of key -> translation
- def load_yaml(file, locale)
- yaml = YAML.load_file(file)
- yaml_hash_to_dot_notation(yaml[locale])
- end
-
- def yaml_hash_to_dot_notation(yaml_hash)
- add_yaml_key({}, nil, yaml_hash)
- end
-
- def add_yaml_key(result, prefix, hash)
- hash.each_pair do |key, value|
- if value.kind_of?(Hash)
- add_yaml_key(result, yaml_dot_notation(prefix, key), value)
- else
- result[yaml_dot_notation(prefix, key)] = value
- end
- end
- result
- end
-
- def yaml_dot_notation(a,b)
- a ? "#{a}.#{b}" : b
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/README.rdoc b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/README.rdoc
deleted file mode 100644
index 1067a0fe4..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/README.rdoc
+++ /dev/null
@@ -1,236 +0,0 @@
-= Ruby-GetText-Package
-
-Ruby-GetText-Package is a Localization(L10n) library and tool
-which is modeled after the GNU gettext package.
-
-This library translates original messages to localized
-messages using client-side locale information(environment
-variable or CGI variable).
-
-The tools for developers support creating, useing, and modifying
-localized message files(message catalogs).
-
-((*Rails*))
-Rails support has been removed.
-Rails / ActiveRecord specific code now lives in gettext_rails and gettext_activerecord.
-
-== Website
-* homepage[http://www.yotabanana.com/hiki/ruby-gettext.html]
-* on rubyforge[http://gettext/rubyforge.org/]
-* on github[http://github.com/gettext/]
-
-== Features
-* Simple APIs(similar to GNU gettext)
-
-* rgettext creates po-files from
- * ruby scripts
- * glade-2 XML file(.glade)
- * ERB file(.rhtml, .erb)
- * Anything (with your own parsers)
- * The po-files are compatible to GNU gettext.
-
-* rmsgfmt creates a mo-file from a po-file.
- The mo-file is compatible to GNU gettext(msgfmt).
-
-* textdomain's scope is adapt to ruby class/module mechanism.
- * A class/module can have plural textdomains.
- * a message is looked up in its class/module and ancestors.
-
-* CGI support (gettext/cgi)
- * Locale is retrieved from client informations
- (HTTP_ACCEPT_LANGUAGE, HTTP_ACCEPT_CHARSET, QUERY_STRING(lang), Cookies(lang)).
-
-* String%() is extended to use named argument such as <tt>%{foo}" %{:foo => 1}</tt>.
- Notes that Ruby-1.9.x supports this format by itself.
-
-== Requirements
-* {Ruby 1.8.3 or later}[http://www.ruby-lang.org]
-* {Rubygems}[http://www.rubygems.org/]
-* {locale gem}[http://rubyforge.org/projects/locale/]
- * $ gem install locale
-* (for development only)
- * {GNU gettext 0.10.35 or later}[http://www.gnu.org/software/gettext/gettext.html]
- * {Racc-1.4.3 or later}[http://www.ruby-lang.org/raa/list.rhtml?name=racc]
- * (for compiling src/rmsgfmt.ry only)
-
-== Install
-* Uninstall old gettext if exists.
- (sudo/su on POSIX system)
- gem uninstall gettext
-
-* gem
- #from github (edge/unstable)
- (sudo/su on POSIX system)
- gem install locale
- gem install mutoh-gettext -s http://gems.github.com/
-
- #from rubyforge (stable)
- (sudo/su on POSIX system)
- gem install locale
- gem install gettext
-
-* download tar-ball
- # De-Compress archive and enter its top directory.
- (sudo/su on POSIX system)
- ruby setup.rb
-
-You can also install files in your favorite directory by
-supplying setup.rb some options. Try <tt>ruby setup.rb --help</tt>.
-
-== Usage
-===Translation
-- _: Basic translation method
- Translates the message.
- _("Hello")
-
-The gettext methods comes in 3 combinable flavors
-- n: Pluralized
- Returns singular or plural form, depending on how many you have.
- n_("Apple", "%{num} Apples", 3)
- n_(["Apple", "%{num} Apples"], 3)
-
-- p: context aware
- A context is a prefix to your translation, usefull when one word has different meanings, depending on its context.
- p_("Printer","Open") <=> p_("File","Open")
- is the same as s_("Printer|Open") <=> s_("File|Open")
-
-- s: without context
- If a translation could not be found, return the msgid without context.
- s_("Printer|Open") => "Öffnen" #translation found
- s_("Printer|Open") => "Open" #translation not found
-
-- combinations
- np_("Fruit", "Apple", "%{num} Apples", 3)
- ns_("Fruit|Apple","%{num} Apples", 3)
-
- np_(["Fruit","Apple","%{num} Apples"], 3)
- ns_(["Fruit|Apple","%{num} Apples"], 3)
-
-- N_, Nn_: Makes dynamic translation messages readable for the gettext parser.
- <tt>_(fruit)</tt> cannot be understood by the gettext parser. To help the parser find all your translations,
- you can add <tt>fruit = N_("Apple")</tt> which does not translate, but tells the parser: "Apple" needs translation.
-
- fruit = N_("Apple") # same as fruit = "Apple"
- _(fruit) # does a normal translation
-
- fruits = Nn_("Apple", "%{num} Apples")
- n_(fruits, 3)
-
-=== Locale / Domain
-GetText stores the locale your are using
- GetText.locale = "en_US" # translate into english from now on
- GetText.locale # => en_US
-Or
- include GetText
- set_locale "en_US"
-
-Each locale can have different sets of translations (text domains) (e.g. Financial terms + Human-resource terms)
- GetText.bindtextdomain('financial')
-Or
- include GetText
- bindtextdomain('financial')
-
-For more details and options, have a look at the samples folder or
-consult the tutorial[http://www.yotabanana.com/hiki/ruby-gettext-howto.html].
-
-
-== License
-This program is licenced under the same licence as Ruby.
-(See the file 'COPYING'.)
-
-* mofile.rb
- * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
- * Copyright (C) 2001,2002 Masahiro Sakai <s01397ms at sfc.keio.ac.jp>
-
-* gettext.rb
- * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
- * Copyright (C) 2001,2002 Masahiro Sakai <s01397ms at sfc.keio.ac.jp>
-
-* rgettext
- * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
- * Copyright (C) 2001,2002 Yasushi Shoji <yashi at atmark-techno.com>
-
-* setup.rb
- * Copyright (C) 2000-2005 Minero Aoki <aamine at loveruby.net>
- * This file is released under LGPL. See the top of the install.rb.
-
-* Others
- * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
-
-
-== Translators
-* Bosnian(bs) - Sanjin Sehic <saserr at gmail.com>
-* Bulgarian(bg) - Sava Chankov <sava.chankov at gmail.com>
-* Catalan(ca) - Ramon Salvadó <rsalvado at gnuine.com>
-* Chinese(Simplified)(zh_CN)
- * Yang Bob <bob.yang.dev at gmail.com> (current)
- * Yingfeng <blogyingfeng at gmail.com>
-* Chinese(Traditional)(zh_TW)
- * Yang Bob <bob.yang.dev at gmail.com> (current)
- * LIN CHUNG-YI <xmarsh at gmail.com>
-* Croatian(hr) - Sanjin Sehic <saserr at gmail.com>
-* Czech(cs) - Karel Miarka <kajism at yahoo.com>
-* Dutch(nl) - Menno Jonkers <ruby-gettext at jonkers.com>
-* Esperanto(eo) - Malte Milatz <malte at gmx-topmail.de>
-* Estonian(et) - Erkki Eilonen <erkki at itech.ee>
-* French(fr)
- * Vincent Isambart <vincent.isambart at gmail.com> (current)
- * David Sulc <davidsulc at gmail.com>
- * Laurent Sansonetti <laurent.sansonetti at gmail.com>
-* German(de)
- * Patrick Lenz <patrick at limited-overload.de> (current)
- * Detlef Reichl <detlef.reichl at gmx.org>
- * Sven Herzberg <herzi at abi02.de>
- * Sascha Ebach <se at digitale-wertschoepfung.de>
-* Greek(el) - Vassilis Rizopoulos <damphyr at gmx.net>
-* Hungarian(hu) - Tamás Tompa <tompata at gmail.com>
-* Italian(it)
- * Marco Lazzeri <marco.lazzeri at gmail.com>
- * Gabriele Renzi <surrender_it at yahoo.it>
-* Japanese(ja) - Masao Mutoh <mutoh at highway.ne.jp>
-* Korean(ko) - Gyoung-Yoon Noh <nohmad at gmail.com>
-* Latvian(lv) - Aivars Akots <aivars.akots at gmail.com>
-* Norwegian(nb) - Runar Ingebrigtsen <runar at mopo.no>
-* Portuguese(Brazil)(pt_BR)
- * Antonio S. de A. Terceiro <terceiro at softwarelivre.org> (current)
- * Joao Pedrosa <joaopedrosa at gmail.com>
-* Russian(ru) - Yuri Kozlov <kozlov.y at gmail.com>
-* Serbian(sr) - Slobodan Paunović" <slobodan.paunovic at gmail.com>
-* Spanish(es)
- * David Espada <davinci at escomposlinux.org> (current)
- * David Moreno Garza <damog at damog.net>
-* Swedish(sv) - Nikolai Weibull <mailing-lists.ruby-talk at rawuncut.elitemail.org>
-* Ukrainian(ua) - Alex Rootoff <rootoff at pisem.net>
-* Vietnamese(vi) - Ngoc Dao Thanh <ngocdaothanh at gmail.com>
-
-== Status of translations
-* Bosnian(bs) - 1.90.0 (old)
-* Bulgarian(bg) - 2.0.0pre1 (new)
-* Catalan(ca) - 2.0.0pre1
-* Croatian(hr) - 1.90.0 (old)
-* Chinese(zh_CN) - 2.0.0pre1
-* Chinese(zh_TW) - 2.0.0pre1
-* Czech(cs) - 1.9.0 (old)
-* Dutch(nl) - 1.90.0 (old)
-* English(default) - 1.90.0 (old)
-* Esperanto(eo) - 2.0.0pre1
-* Estonian(et) - 2.0.0pre1
-* French(fr) - 2.0.0pre1
-* German(de) - 2.0.0pre1
-* Greek(el) - 2.0.0pre1
-* Hungarian(hu) - 2.0.0pre1
-* Italian(it) - 1.6.0 (old)
-* Japanese(ja) - 2.0.0pre1
-* Korean(ko) - 1.9.0 (old)
-* Latvian(lv) - 2.0.0pre1 (new)
-* Norwegian(nb) - 2.0.0pre1
-* Portuguese(Brazil)(pt_BR) - 2.0.0pre1
-* Russian(ru) - 2.0.0pre1
-* Serbian(sr) - 1.91.0 (old)
-* Spanish(es) - 2.0.0pre1
-* Swedish(sv) - 0.8.0 (too much old)
-* Ukrainian(ua) - 2.0.0pre1
-* Vietnamese(vi) - 2.0.0pre1
-
-== Maintainer
-Masao Mutoh <mutoh at highway.ne.jp>
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/empty.mo b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/empty.mo
deleted file mode 100644
index 273edbbbd..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/empty.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/iconv.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/iconv.rb
deleted file mode 100644
index a58f64928..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/iconv.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-=begin
- iconv.rb - Pseudo Iconv class. Supports Iconv.iconv, Iconv.conv.
-
- For Matz Ruby:
- If you don't have iconv but glib2, this library uses glib2 iconv functions.
-
- For JRuby:
- Use Java String class to convert strings.
-
- Copyright (C) 2004-2007 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- $Id: iconv.rb,v 1.6 2007/11/08 14:21:22 mutoh Exp $
-=end
-
-#Modifications
-#wrapped inside FastGettext namespace to reduce conflic
-
-begin
- require 'iconv'
-rescue LoadError
- # Provides Iconv.iconv which normally is provided through Ruby/GLib(1) functions.
- # This library is required for 'gettext'.
- # If you require 'gettext/iconv', it tries to call Ruby/GLib function
- # when it doesn't find original Iconv class(iconv.so) it adds a pseudo class.
- #
- # One-click Ruby Installer for Win32 hadn’t had iconv and there hadn’t been a way to install iconv.so itself for Win32.
- # And JRuby hadn’t had Iconv.
- # I’ve not checked them currently, but if they’ve supported iconv now, we don’t need this anymore...
- #
- # (1) Ruby/GLib is a module which is provided from Ruby-GNOME2 Project.
- # You can get binaries for Win32(One-Click Ruby Installer).
- # <URL: http://ruby-gnome2.sourceforge.jp/>
- module FastGettext
- class Iconv2
- module Failure; end
- class InvalidEncoding < ArgumentError; include Failure; end
- class IllegalSequence < ArgumentError; include Failure; end
- class InvalidCharacter < ArgumentError; include Failure; end
-
- if RUBY_PLATFORM =~ /java/
- def self.conv(to, from, str)
- raise InvalidCharacter, "the 3rd argument is nil" unless str
- begin
- str = java.lang.String.new(str.unpack("C*").to_java(:byte), from)
- str.getBytes(to).to_ary.pack("C*")
- rescue java.io.UnsupportedEncodingException
- raise InvalidEncoding
- end
- end
- else
- begin
- require 'glib2'
-
- def self.check_glib_version?(major, minor, micro) # :nodoc:
- (GLib::BINDING_VERSION[0] > major ||
- (GLib::BINDING_VERSION[0] == major &&
- GLib::BINDING_VERSION[1] > minor) ||
- (GLib::BINDING_VERSION[0] == major &&
- GLib::BINDING_VERSION[1] == minor &&
- GLib::BINDING_VERSION[2] >= micro))
- end
-
- if check_glib_version?(0, 11, 0)
- # This is a function equivalent of Iconv.iconv.
- # * to: encoding name for destination
- # * from: encoding name for source
- # * str: strings to be converted
- # * Returns: Returns an Array of converted strings.
- def self.conv(to, from, str)
- begin
- GLib.convert(str, to, from)
- rescue GLib::ConvertError => e
- case e.code
- when GLib::ConvertError::NO_CONVERSION
- raise InvalidEncoding.new(str)
- when GLib::ConvertError::ILLEGAL_SEQUENCE
- raise IllegalSequence.new(str)
- else
- raise InvalidCharacter.new(str)
- end
- end
- end
- else
- def self.conv(to, from, str) # :nodoc:
- begin
- GLib.convert(str, to, from)
- rescue
- raise IllegalSequence.new(str)
- end
- end
- end
- rescue LoadError
- def self.conv(to, from, str) # :nodoc:
- warn "Iconv was not found." if $DEBUG
- str
- end
- end
- end
- def self.iconv(to, from, str)
- conv(to, from, str).split(//)
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/mofile.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/mofile.rb
deleted file mode 100644
index 54221a62b..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/mofile.rb
+++ /dev/null
@@ -1,296 +0,0 @@
-=begin
- mofile.rb - A simple class for operating GNU MO file.
-
- Copyright (C) 2003-2008 Masao Mutoh
- Copyright (C) 2002 Masahiro Sakai, Masao Mutoh
- Copyright (C) 2001 Masahiro Sakai
-
- Masahiro Sakai <s01397ms at sfc.keio.ac.jp>
- Masao Mutoh <mutoh at highway.ne.jp>
-
- You can redistribute this file and/or modify it under the same term
- of Ruby. License of Ruby is included with Ruby distribution in
- the file "README".
-
- $Id: mo.rb,v 1.10 2008/06/17 16:40:52 mutoh Exp $
-=end
-
-require 'iconv'
-require 'stringio'
-
-#Modifications:
-# use Iconv or FastGettext::Icvon
-
-module FastGettext
- module GetText
- class MOFile < Hash
- class InvalidFormat < RuntimeError; end;
-
- attr_reader :filename
-
- Header = Struct.new(:magic,
- :revision,
- :nstrings,
- :orig_table_offset,
- :translated_table_offset,
- :hash_table_size,
- :hash_table_offset)
-
- # The following are only used in .mo files
- # with minor revision >= 1.
- class HeaderRev1 < Header
- attr_accessor :n_sysdep_segments,
- :sysdep_segments_offset,
- :n_sysdep_strings,
- :orig_sysdep_tab_offset,
- :trans_sysdep_tab_offset
- end
-
- MAGIC_BIG_ENDIAN = "\x95\x04\x12\xde"
- MAGIC_LITTLE_ENDIAN = "\xde\x12\x04\x95"
-
- def self.open(arg = nil, output_charset = nil)
- result = self.new(output_charset)
- result.load(arg)
- end
-
- def initialize(output_charset = nil)
- @filename = nil
- @last_modified = nil
- @little_endian = true
- @output_charset = output_charset
- super()
- end
-
- def update!
- if FileTest.exist?(@filename)
- st = File.stat(@filename)
- load(@filename) unless (@last_modified == [st.ctime, st.mtime])
- else
- warn "#{@filename} was lost." if $DEBUG
- clear
- end
- self
- end
-
- def load(arg)
- if arg.kind_of? String
- begin
- st = File.stat(arg)
- @last_modified = [st.ctime, st.mtime]
- rescue Exception
- end
- load_from_file(arg)
- else
- load_from_stream(arg)
- end
- @filename = arg
- self
- end
-
- def load_from_stream(io)
- magic = io.read(4)
- case magic
- when MAGIC_BIG_ENDIAN
- @little_endian = false
- when MAGIC_LITTLE_ENDIAN
- @little_endian = true
- else
- raise InvalidFormat.new(sprintf("Unknown signature %s", magic.dump))
- end
-
- endian_type6 = @little_endian ? 'V6' : 'N6'
- endian_type_astr = @little_endian ? 'V*' : 'N*'
-
- header = HeaderRev1.new(magic, *(io.read(4 * 6).unpack(endian_type6)))
-
- if header.revision == 1
- # FIXME: It doesn't support sysdep correctly.
- header.n_sysdep_segments = io.read(4).unpack(endian_type6)
- header.sysdep_segments_offset = io.read(4).unpack(endian_type6)
- header.n_sysdep_strings = io.read(4).unpack(endian_type6)
- header.orig_sysdep_tab_offset = io.read(4).unpack(endian_type6)
- header.trans_sysdep_tab_offset = io.read(4).unpack(endian_type6)
- elsif header.revision > 1
- raise InvalidFormat.new(sprintf("file format revision %d isn't supported", header.revision))
- end
- io.pos = header.orig_table_offset
- orig_table_data = io.read((4 * 2) * header.nstrings).unpack(endian_type_astr)
-
- io.pos = header.translated_table_offset
- trans_table_data = io.read((4 * 2) * header.nstrings).unpack(endian_type_astr)
-
- original_strings = Array.new(header.nstrings)
- for i in 0...header.nstrings
- io.pos = orig_table_data[i * 2 + 1]
- original_strings[i] = io.read(orig_table_data[i * 2 + 0])
- end
-
- clear
- for i in 0...header.nstrings
- io.pos = trans_table_data[i * 2 + 1]
- str = io.read(trans_table_data[i * 2 + 0])
-
- if (! original_strings[i]) || original_strings[i] == ""
- if str
- @charset = nil
- @nplurals = nil
- @plural = nil
- str.each_line{|line|
- if /^Content-Type:/i =~ line and /charset=((?:\w|-)+)/i =~ line
- @charset = $1
- elsif /^Plural-Forms:\s*nplurals\s*\=\s*(\d*);\s*plural\s*\=\s*([^;]*)\n?/ =~ line
- @nplurals = $1
- @plural = $2
- end
- break if @charset and @nplurals
- }
- @nplurals = "1" unless @nplurals
- @plural = "0" unless @plural
- end
- else
- if @output_charset
- begin
- iconv = Iconv || FastGettext::Iconv
- str = iconv.conv(@output_charset, @charset, str) if @charset
- rescue iconv::Failure
- if $DEBUG
- warn "@charset = ", @charset
- warn"@output_charset = ", @output_charset
- warn "msgid = ", original_strings[i]
- warn "msgstr = ", str
- end
- end
- end
- end
- self[original_strings[i]] = str.freeze
- end
- self
- end
-
- # Is this number a prime number ?
- # http://apidock.com/ruby/Prime
- def prime?(number)
- ('1' * number) !~ /^1?$|^(11+?)\1+$/
- end
-
- def next_prime(seed)
- require 'mathn'
- prime = Prime.new
- while current = prime.succ
- return current if current > seed
- end
- end
-
- # From gettext-0.12.1/gettext-runtime/intl/hash-string.h
- # Defines the so called `hashpjw' function by P.J. Weinberger
- # [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
- # 1986, 1987 Bell Telephone Laboratories, Inc.]
- HASHWORDBITS = 32
- def hash_string(str)
- hval = 0
- i = 0
- str.each_byte do |b|
- break if b == '\0'
- hval <<= 4
- hval += b.to_i
- g = hval & (0xf << (HASHWORDBITS - 4))
- if (g != 0)
- hval ^= g >> (HASHWORDBITS - 8)
- hval ^= g
- end
- end
- hval
- end
-
- def save_to_stream(io)
- #Save data as little endian format.
- header_size = 4 * 7
- table_size = 4 * 2 * size
-
- hash_table_size = next_prime((size * 4) / 3)
- hash_table_size = 3 if hash_table_size <= 2
- header = Header.new(
- MAGIC_LITTLE_ENDIAN, # magic
- 0, # revision
- size, # nstrings
- header_size, # orig_table_offset
- header_size + table_size, # translated_table_offset
- hash_table_size, # hash_table_size
- header_size + table_size * 2 # hash_table_offset
- )
- io.write(header.to_a.pack('a4V*'))
-
- ary = to_a
- ary.sort!{|a, b| a[0] <=> b[0]} # sort by original string
-
- pos = header.hash_table_size * 4 + header.hash_table_offset
-
- orig_table_data = Array.new()
- ary.each{|item, _|
- orig_table_data.push(item.size)
- orig_table_data.push(pos)
- pos += item.size + 1 # +1 is <NUL>
- }
- io.write(orig_table_data.pack('V*'))
-
- trans_table_data = Array.new()
- ary.each{|_, item|
- trans_table_data.push(item.size)
- trans_table_data.push(pos)
- pos += item.size + 1 # +1 is <NUL>
- }
- io.write(trans_table_data.pack('V*'))
-
- hash_tab = Array.new(hash_table_size)
- j = 0
- ary[0...size].each {|key, _|
- hash_val = hash_string(key)
- idx = hash_val % hash_table_size
- if hash_tab[idx] != nil
- incr = 1 + (hash_val % (hash_table_size - 2))
- begin
- if (idx >= hash_table_size - incr)
- idx -= hash_table_size - incr
- else
- idx += incr
- end
- end until (hash_tab[idx] == nil)
- end
- hash_tab[idx] = j + 1
- j += 1
- }
- hash_tab.collect!{|i| i ? i : 0}
-
- io.write(hash_tab.pack('V*'))
-
- ary.each{|item, _| io.write(item); io.write("\0") }
- ary.each{|_, item| io.write(item); io.write("\0") }
-
- self
- end
-
- def load_from_file(filename)
- @filename = filename
- begin
- File.open(filename, 'rb'){|f| load_from_stream(f)}
- rescue => e
- e.set_backtrace("File: #{@filename}")
- raise e
- end
- end
-
- def save_to_file(filename)
- File.open(filename, 'wb'){|f| save_to_stream(f)}
- end
-
- def set_comment(msgid_or_sym, comment)
- #Do nothing
- end
-
-
- attr_accessor :little_endian, :path, :last_modified
- attr_reader :charset, :nplurals, :plural
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/poparser.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/poparser.rb
deleted file mode 100644
index e067e268f..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/poparser.rb
+++ /dev/null
@@ -1,333 +0,0 @@
-=begin
- poparser.rb - Generate a .mo
-
- Copyright (C) 2003-2009 Masao Mutoh <mutoh at highway.ne.jp>
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-#MODIFIED
-# removed include GetText etc
-# added stub translation method _(x)
-require 'racc/parser'
-
-module FastGettext
-module GetText
-
- class PoParser < Racc::Parser
-
- def _(x)
- x
- end
-
-module_eval <<'..end src/poparser.ry modeval..id7a99570e05', 'src/poparser.ry', 108
- def unescape(orig)
- ret = orig.gsub(/\\n/, "\n")
- ret.gsub!(/\\t/, "\t")
- ret.gsub!(/\\r/, "\r")
- ret.gsub!(/\\"/, "\"")
- ret
- end
-
- def parse(str, data, ignore_fuzzy = true, show_obsolete = true)
- @comments = []
- @data = data
- @fuzzy = false
- @msgctxt = ""
- $ignore_fuzzy = ignore_fuzzy
-
- str.strip!
- @q = []
- until str.empty? do
- case str
- when /\A\s+/
- str = $'
- when /\Amsgctxt/
- @q.push [:MSGCTXT, $&]
- str = $'
- when /\Amsgid_plural/
- @q.push [:MSGID_PLURAL, $&]
- str = $'
- when /\Amsgid/
- @q.push [:MSGID, $&]
- str = $'
- when /\Amsgstr/
- @q.push [:MSGSTR, $&]
- str = $'
- when /\A\[(\d+)\]/
- @q.push [:PLURAL_NUM, $1]
- str = $'
- when /\A\#~(.*)/
- if show_obsolete
- $stderr.print _("Warning: obsolete msgid exists.\n")
- $stderr.print " #{$&}\n"
- end
- @q.push [:COMMENT, $&]
- str = $'
- when /\A\#(.*)/
- @q.push [:COMMENT, $&]
- str = $'
- when /\A\"(.*)\"/
- @q.push [:STRING, $1]
- str = $'
- else
- #c = str[0,1]
- #@q.push [:STRING, c]
- str = str[1..-1]
- end
- end
- @q.push [false, '$end']
- if $DEBUG
- @q.each do |a,b|
- puts "[#{a}, #{b}]"
- end
- end
- @yydebug = true if $DEBUG
- do_parse
-
- if @comments.size > 0
- @data.set_comment(:last, @comments.join("\n"))
- end
- @data
- end
-
- def next_token
- @q.shift
- end
-
- def on_message(msgid, msgstr)
- if msgstr.size > 0
- @data[msgid] = msgstr
- @data.set_comment(msgid, @comments.join("\n"))
- end
- @comments.clear
- @msgctxt = ""
- end
-
- def on_comment(comment)
- @fuzzy = true if (/fuzzy/ =~ comment)
- @comments << comment
- end
-
-
-..end src/poparser.ry modeval..id7a99570e05
-
-##### racc 1.4.5 generates ###
-
-racc_reduce_table = [
- 0, 0, :racc_error,
- 0, 10, :_reduce_none,
- 2, 10, :_reduce_none,
- 2, 10, :_reduce_none,
- 2, 10, :_reduce_none,
- 2, 12, :_reduce_5,
- 1, 13, :_reduce_none,
- 1, 13, :_reduce_none,
- 4, 15, :_reduce_8,
- 5, 16, :_reduce_9,
- 2, 17, :_reduce_10,
- 1, 17, :_reduce_none,
- 3, 18, :_reduce_12,
- 1, 11, :_reduce_13,
- 2, 14, :_reduce_14,
- 1, 14, :_reduce_15 ]
-
-racc_reduce_n = 16
-
-racc_shift_n = 26
-
-racc_action_table = [
- 3, 13, 5, 7, 9, 15, 16, 17, 20, 17,
- 13, 17, 13, 13, 11, 17, 23, 20, 13, 17 ]
-
-racc_action_check = [
- 1, 16, 1, 1, 1, 12, 12, 12, 18, 18,
- 7, 14, 15, 9, 3, 19, 20, 21, 23, 25 ]
-
-racc_action_pointer = [
- nil, 0, nil, 14, nil, nil, nil, 3, nil, 6,
- nil, nil, 0, nil, 4, 5, -6, nil, 2, 8,
- 8, 11, nil, 11, nil, 12 ]
-
-racc_action_default = [
- -1, -16, -2, -16, -3, -13, -4, -16, -6, -16,
- -7, 26, -16, -15, -5, -16, -16, -14, -16, -8,
- -16, -9, -11, -16, -10, -12 ]
-
-racc_goto_table = [
- 12, 22, 14, 4, 24, 6, 2, 8, 18, 19,
- 10, 21, 1, nil, nil, nil, 25 ]
-
-racc_goto_check = [
- 5, 9, 5, 3, 9, 4, 2, 6, 5, 5,
- 7, 8, 1, nil, nil, nil, 5 ]
-
-racc_goto_pointer = [
- nil, 12, 5, 2, 4, -7, 6, 9, -7, -17 ]
-
-racc_goto_default = [
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ]
-
-racc_token_table = {
- false => 0,
- Object.new => 1,
- :COMMENT => 2,
- :MSGID => 3,
- :MSGCTXT => 4,
- :MSGID_PLURAL => 5,
- :MSGSTR => 6,
- :STRING => 7,
- :PLURAL_NUM => 8 }
-
-racc_use_result_var = true
-
-racc_nt_base = 9
-
-Racc_arg = [
- racc_action_table,
- racc_action_check,
- racc_action_default,
- racc_action_pointer,
- racc_goto_table,
- racc_goto_check,
- racc_goto_default,
- racc_goto_pointer,
- racc_nt_base,
- racc_reduce_table,
- racc_token_table,
- racc_shift_n,
- racc_reduce_n,
- racc_use_result_var ]
-
-Racc_token_to_s_table = [
-'$end',
-'error',
-'COMMENT',
-'MSGID',
-'MSGCTXT',
-'MSGID_PLURAL',
-'MSGSTR',
-'STRING',
-'PLURAL_NUM',
-'$start',
-'msgfmt',
-'comment',
-'msgctxt',
-'message',
-'string_list',
-'single_message',
-'plural_message',
-'msgstr_plural',
-'msgstr_plural_line']
-
-Racc_debug_parser = true
-
-##### racc system variables end #####
-
- # reduce 0 omitted
-
- # reduce 1 omitted
-
- # reduce 2 omitted
-
- # reduce 3 omitted
-
- # reduce 4 omitted
-
-module_eval <<'.,.,', 'src/poparser.ry', 25
- def _reduce_5( val, _values, result )
- @msgctxt = unescape(val[1]) + "\004"
- result
- end
-.,.,
-
- # reduce 6 omitted
-
- # reduce 7 omitted
-
-module_eval <<'.,.,', 'src/poparser.ry', 48
- def _reduce_8( val, _values, result )
- if @fuzzy and $ignore_fuzzy
- if val[1] != ""
- $stderr.print _("Warning: fuzzy message was ignored.\n")
- $stderr.print " msgid '#{val[1]}'\n"
- else
- on_message('', unescape(val[3]))
- end
- @fuzzy = false
- else
- on_message(@msgctxt + unescape(val[1]), unescape(val[3]))
- end
- result = ""
- result
- end
-.,.,
-
-module_eval <<'.,.,', 'src/poparser.ry', 65
- def _reduce_9( val, _values, result )
- if @fuzzy and $ignore_fuzzy
- if val[1] != ""
- $stderr.print _("Warning: fuzzy message was ignored.\n")
- $stderr.print "msgid = '#{val[1]}\n"
- else
- on_message('', unescape(val[3]))
- end
- @fuzzy = false
- else
- on_message(@msgctxt + unescape(val[1]) + "\000" + unescape(val[3]), unescape(val[4]))
- end
- result = ""
- result
- end
-.,.,
-
-module_eval <<'.,.,', 'src/poparser.ry', 76
- def _reduce_10( val, _values, result )
- if val[0].size > 0
- result = val[0] + "\000" + val[1]
- else
- result = ""
- end
- result
- end
-.,.,
-
- # reduce 11 omitted
-
-module_eval <<'.,.,', 'src/poparser.ry', 84
- def _reduce_12( val, _values, result )
- result = val[2]
- result
- end
-.,.,
-
-module_eval <<'.,.,', 'src/poparser.ry', 91
- def _reduce_13( val, _values, result )
- on_comment(val[0])
- result
- end
-.,.,
-
-module_eval <<'.,.,', 'src/poparser.ry', 99
- def _reduce_14( val, _values, result )
- result = val.delete_if{|item| item == ""}.join
- result
- end
-.,.,
-
-module_eval <<'.,.,', 'src/poparser.ry', 103
- def _reduce_15( val, _values, result )
- result = val[0]
- result
- end
-.,.,
-
- def _reduce_none( val, _values, result )
- result
- end
-
- end # class PoParser
-
-end # module GetText
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/string.rb b/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/string.rb
deleted file mode 100644
index 4e3610f0d..000000000
--- a/vendor/gems/fast_gettext-0.5.10/lib/fast_gettext/vendor/string.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-#! /usr/bin/ruby
-=begin
- string.rb - Extension for String.
-
- Copyright (C) 2005,2006 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-# Extension for String class. This feature is included in Ruby 1.9 or later.
-begin
- raise ArgumentError if ("a %{x}" % {:x=>'b'}) != 'a b'
-rescue ArgumentError
- # either we are on vanilla 1.8(call with hash raises ArgumentError)
- # or someone else already patched % but did it wrong
- class String
- alias :_fast_gettext_old_format_m :% # :nodoc:
-
- PERCENT_MATCH_RE = Regexp.union(
- /%%/,
- /%\{([-\.\w]+)\}/,
- /%<([-\.\w]+)>(.*?\d*\.?\d*[bBdiouxXeEfgGcps])/
- )
-
- # call-seq:
- # %(hash)
- #
- # Default: "%s, %s" % ["Masao", "Mutoh"]
- # Extended:
- # "%{firstname}, %{lastname}" % {:firstname=>"Masao",:lastname=>"Mutoh"} == "Masao Mutoh"
- # with field type such as d(decimal), f(float), ...
- # "%<age>d, %<weight>.1f" % {:age => 10, :weight => 43.4} == "10 43.4"
- # This is the recommanded way for Ruby-GetText
- # because the translators can understand the meanings of the keys easily.
- def %(args)
- if args.kind_of? Hash
- #stringify keys
- replace = {}
- args.each{|k,v|replace[k.to_s]=v}
-
- #replace occurances
- ret = dup
- ret.gsub!(PERCENT_MATCH_RE) do |match|
- if match == '%%'
- '%'
- elsif $1
- replace.has_key?($1) ? replace[$1] : match
- elsif $2
- replace.has_key?($2) ? sprintf("%#{$3}", replace[$2]) : match
- end
- end
- ret
- else
- ret = gsub(/%([{<])/, '%%\1')
- ret._fast_gettext_old_format_m(args)
- end
- end
- end
-end
-
-# 1.9.1 if you misspell a %{key} your whole page would blow up, no thanks...
-begin
- ("%{b}" % {:a=>'b'})
-rescue KeyError
- class String
- alias :_fast_gettext_old_format_m :%
- def %(*args)
- begin
- _fast_gettext_old_format_m(*args)
- rescue KeyError
- self
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/aa_unconfigued_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/aa_unconfigued_spec.rb
deleted file mode 100644
index 7a751107f..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/aa_unconfigued_spec.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'spec/spec_helper'
-
-describe 'unconfigured' do
- it "gives a useful error message when trying to just translate" do
- FastGettext.text_domain = nil
- begin
- FastGettext._('x')
- "".should == "success!?"
- rescue FastGettext::Storage::NoTextDomainConfigured
- end
- end
-
- it "gives a useful error message when only locale was set" do
- FastGettext.locale = 'de'
- begin
- FastGettext._('x')
- "".should == "success!?"
- rescue FastGettext::Storage::NoTextDomainConfigured
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/mo_file_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/mo_file_spec.rb
deleted file mode 100644
index f5f2a6d36..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/mo_file_spec.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-require 'spec/spec_helper'
-
-de_file = File.join('spec','locale','de','LC_MESSAGES','test.mo')
-de = FastGettext::MoFile.new(de_file)
-
-describe FastGettext::MoFile do
- before :all do
- File.exist?(de_file).should == true
- end
-
- it "parses a file" do
- de['car'].should == 'Auto'
- end
-
- it "stores untranslated values as nil" do
- de['Car|Model'].should == nil
- end
-
- it "finds pluralized values" do
- de.plural('Axis','Axis').should == ['Achse','Achsen']
- end
-
- it "returns singular translations when pluralisation could not be found" do
- de.plural('Axis','Axis','Axis').should == ['Achse','Achse','Achse']
- end
-
- it "returns ids when not plural and singular translations could not be found" do
- de.plural('Axis','Axis','NOTFOUND').should == ['Achse','Achse','NOTFOUND']
- end
-
- it "can access plurals through []" do
- de['Axis'].should == 'Achse' #singular
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/storage_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/storage_spec.rb
deleted file mode 100644
index 8ce59e6c5..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/storage_spec.rb
+++ /dev/null
@@ -1,313 +0,0 @@
-require 'spec/spec_helper'
-
-describe 'Storage' do
- include FastGettext::Storage
-
- before do
- #reset everything to nil
- self.available_locales = nil
- self.default_text_domain = nil
- self.default_locale = nil
- send(:_locale=,nil)#nil is not allowed to be set...
- default_locale.should be_nil
- available_locales.should be_nil
- locale.should == 'en'
- end
-
- def thread_save(method, value)
- send("#{method}=",value)
-
- # mess around with other threads
- 100.times do
- Thread.new {FastGettext.send("#{method}=",'en')}
- end
-
- send(method) == value
- end
-
- {:locale=>'de', :available_locales=>['de'], :text_domain=>'xx', :pluralisation_rule=>lambda{|x|x==4}}.each do |method, value|
- it "stores #{method} thread-save" do
- thread_save(method, value).should == true
- end
- end
-
- it "stores translation_repositories non-thread-safe" do
- self.translation_repositories[:x]=1
- t = Thread.new{self.translation_repositories[:x]=2}
- t.join
- self.translation_repositories[:x].should == 2
- end
-
- describe :pluralisation_rule do
- it "defaults to singular-if-1 when it is not set" do
- stub!(:current_repository).and_return mock('',:pluralisation_rule=>nil)
- self.pluralisation_rule = nil
- pluralisation_rule.call(1).should == false
- pluralisation_rule.call(0).should == true
- pluralisation_rule.call(2).should == true
- end
- end
-
- describe :default_locale do
- it "stores default_locale non-thread-safe" do
- thread_save(:default_locale, 'de').should == false
- end
-
- it "does not overwrite locale" do
- self.locale = 'de'
- self.default_locale = 'yy'
- self.locale.should == 'de'
- end
-
- it "falls back to default if locale is missing" do
- self.default_locale = 'yy'
- self.locale.should == 'yy'
- end
-
- it "does not set non-available-locales as default" do
- self.available_locales = ['xx']
- self.default_locale = 'yy'
- self.default_locale.should == nil
- end
-
- it "can set default_locale to nil" do
- self.default_locale = 'xx'
- self.default_locale = nil
- default_locale.should be_nil
- end
- end
-
- describe :default_text_domain do
- it "stores default_text_domain non-thread-safe" do
- thread_save(:default_text_domain, 'xx').should == false
- end
-
- it "uses default_text_domain when text_domain is not set" do
- self.text_domain = nil
- self.default_text_domain = 'x'
- text_domain.should == 'x'
- end
-
- it "does not use default when domain is set" do
- self.text_domain = 'x'
- self.default_text_domain = 'y'
- text_domain.should == 'x'
- end
- end
-
- describe :default_available_locales do
- after do
- self.default_available_locales = nil
- end
-
- it "stores default_available_locales non-thread-safe" do
- thread_save(:default_available_locales, 'xx').should == false
- end
-
- it "converts locales to s" do
- self.available_locales = [:x]
- available_locales.should == ['x']
- end
-
- it "uses default_available_locales when available_locales is not set" do
- self.available_locales = nil
- self.default_available_locales = ['x']
- available_locales.should == ['x']
- end
-
- it "does not use default when available_locales is set" do
- self.available_locales = ['x']
- self.default_available_locales = ['y']
- available_locales.should == ['x']
- end
- end
-
- describe :locale do
- it "stores everything as long as available_locales is not set" do
- self.available_locales = nil
- self.locale = 'XXX'
- locale.should == 'XXX'
- end
-
- it "is en if no locale and no available_locale were set" do
- FastGettext.send(:_locale=,nil)
- self.available_locales = nil
- locale.should == 'en'
- end
-
- it "does not change the locale if locales was called with nil" do
- self.locale = nil
- locale.should == 'en'
- end
-
- it "is the first available_locale if one was set" do
- self.available_locales = ['de']
- locale.should == 'de'
- end
-
- it "does not store a locale if it is not available" do
- self.available_locales = ['de']
- self.locale = 'en'
- locale.should == 'de'
- end
-
- it "set_locale returns the old locale if the new could not be set" do
- self.locale = 'de'
- self.available_locales = ['de']
- self.set_locale('en').should == 'de'
- end
-
- {
- 'Opera' => "de-DE,de;q=0.9,en;q=0.8",
- 'Firefox' => "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3",
- }.each do |browser,accept_language|
- it "sets the locale from #{browser} headers" do
- FastGettext.available_locales = ['de_DE','de','xx']
- FastGettext.locale = 'xx'
- FastGettext.locale = accept_language
- FastGettext.locale.should == 'de_DE'
- end
- end
-
- it "sets a unimportant locale if it is the only available" do
- FastGettext.available_locales = ['en','xx']
- FastGettext.locale = "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"
- FastGettext.locale.should == 'en'
- end
-
- it "sets the locale with the highest wheight" do
- FastGettext.available_locales = ['en','de']
- FastGettext.locale = "xx-us;q=0.5,de-de,de;q=0.8,en;q=0.9"
- FastGettext.locale.should == 'en'
- end
-
- it "sets the locale from languages" do
- FastGettext.available_locales = ['de']
- FastGettext.locale = "xx-us;q=0.5,de-de;q=0.8,en-uk;q=0.9"
- FastGettext.locale.should == 'de'
- end
-
- it "sets locale from comma seperated" do
- FastGettext.available_locales = ['de_DE','en','xx']
- FastGettext.locale = "de,de-de,en"
- FastGettext.locale.should == 'de_DE'
- end
- end
-
- describe :silence_errors do
- before do
- FastGettext.text_domain = 'xxx'
- end
-
- it "raises when a textdomain was empty" do
- begin
- FastGettext._('x')
- "".should == "success!?"
- rescue FastGettext::Storage::NoTextDomainConfigured
- end
- end
-
- it "can silence erros" do
- FastGettext.silence_errors
- FastGettext._('x').should == 'x'
- end
- end
-
- describe :current_cache do
- before do
- FastGettext.text_domain = 'xxx'
- FastGettext.available_locales = ['de','en']
- FastGettext.locale = 'de'
- FastGettext.current_repository.stub!(:"[]").with('abc').and_return 'old'
- FastGettext.current_repository.stub!(:"[]").with('unfound').and_return nil
- FastGettext._('abc')
- FastGettext._('unfound')
- FastGettext.locale = 'en'
- end
-
- it "stores a translation seperate by locale" do
- FastGettext.current_cache['abc'].should == nil
- end
-
- it "stores a translation seperate by domain" do
- FastGettext.locale = 'de'
- FastGettext.text_domain = nil
- FastGettext.current_cache['abc'].should == nil
- end
-
- it "cache is restored through setting of default_text_domain" do
- FastGettext.locale = 'de'
- FastGettext.text_domain = nil
- FastGettext.default_text_domain = 'xxx'
- FastGettext.current_cache['abc'].should == 'old'
- end
-
- it "cache is restored through setting of default_locale" do
- FastGettext.send(:_locale=,nil)#reset locale to nil
- FastGettext.default_locale = 'de'
- FastGettext.locale.should == 'de'
- FastGettext.current_cache['abc'].should == 'old'
- end
-
- it "stores a translation permanently" do
- FastGettext.locale = 'de'
- FastGettext.current_cache['abc'].should == 'old'
- end
-
- it "stores a unfound translation permanently" do
- FastGettext.locale = 'de'
- FastGettext.current_cache['unfound'].should == false
- end
- end
-
- describe :key_exist? do
- it "does not find default keys" do
- FastGettext._('abcde')
- key_exist?('abcde').should be_false
- end
-
- it "finds using the current repository" do
- should_receive(:current_repository).and_return '1234'=>'1'
- key_exist?('1234').should == true
- end
-
- it "sets the current cache with a found result" do
- should_receive(:current_repository).and_return 'xxx'=>'1'
- key_exist?('xxx')
- current_cache['xxx'].should == '1'
- end
-
- it "does not overwrite an existing cache value" do
- current_cache['xxx']='xxx'
- stub!(:current_repository).and_return 'xxx'=>'1'
- key_exist?('xxx')
- current_cache['xxx'].should == 'xxx'
- end
-
- it "is false for gettext meta key" do
- key_exist?("").should == false
- end
- end
-
- describe :cached_find do
- it "is nil for gettext meta key" do
- cached_find("").should == false
- end
- end
-
- describe FastGettext::Storage::NoTextDomainConfigured do
- it "shows what to do" do
- FastGettext::Storage::NoTextDomainConfigured.new.to_s.should =~ /FastGettext\.add_text_domain/
- end
-
- it "warns when text_domain is nil" do
- FastGettext.text_domain = nil
- FastGettext::Storage::NoTextDomainConfigured.new.to_s.should =~ /\(nil\)/
- end
-
- it "shows current text_domain" do
- FastGettext.text_domain = 'xxx'
- FastGettext::Storage::NoTextDomainConfigured.new('xxx').to_s.should =~ /xxx/
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/base_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/base_spec.rb
deleted file mode 100644
index 11353f256..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/base_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'spec/spec_helper'
-require 'fast_gettext/translation_repository/base'
-
-describe 'FastGettext::TranslationRepository::Base' do
- before do
- @rep = FastGettext::TranslationRepository::Base.new('x')
- end
-
- it "can be built" do
- @rep.available_locales.should == []
- end
-
- it "cannot translate" do
- @rep['car'].should == nil
- end
-
- it "cannot pluralize" do
- @rep.plural('Axis','Axis').should == ['Axis','Axis']
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/chain_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/chain_spec.rb
deleted file mode 100644
index 1fe405aea..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/chain_spec.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-require 'spec/spec_helper'
-
-class MockRepo
- def [](key)#should_receive :[] does not work so well...
- singular key
- end
-end
-
-describe 'FastGettext::TranslationRepository::Chain' do
- describe "empty chain" do
- before do
- @rep = FastGettext::TranslationRepository.build('chain', :chain=>[], :type=>:chain)
- end
-
- it "has no locales" do
- @rep.available_locales.should == []
- end
-
- it "cannot translate" do
- @rep['car'].should == nil
- end
-
- it "cannot pluralize" do
- @rep.plural('Axis','Axis').should == []
- end
-
- it "has no pluralisation rule" do
- @rep.pluralisation_rule.should == nil
- end
- end
-
- describe "filled chain" do
- before do
- @one = MockRepo.new
- @one.stub!(:singular).with('xx').and_return 'one'
- @two = MockRepo.new
- @two.stub!(:singular).with('xx').and_return 'two'
- @rep = FastGettext::TranslationRepository.build('chain', :chain=>[@one, @two], :type=>:chain)
- end
-
- describe :singular do
- it "uses the first repo in the chain if it responds" do
- @rep['xx'].should == 'one'
- end
-
- it "uses the second repo in the chain if the first does not respond" do
- @one.should_receive(:singular).and_return nil
- @rep['xx'].should == 'two'
- end
- end
-
- describe :plural do
- it "uses the first repo in the chain if it responds" do
- @one.should_receive(:plural).with('a','b').and_return ['A','B']
- @rep.plural('a','b').should == ['A','B']
- end
-
- it "uses the second repo in the chain if the first does not respond" do
- @one.should_receive(:plural).with('a','b').and_return [nil,nil]
- @two.should_receive(:plural).with('a','b').and_return ['A','B']
- @rep.plural('a','b').should == ['A','B']
- end
- end
-
- describe :available_locales do
- it "should be the sum of all added repositories" do
- @one.should_receive(:available_locales).and_return ['de']
- @two.should_receive(:available_locales).and_return ['de','en']
- @rep.available_locales.should == ['de','en']
- end
- end
-
- describe :pluralisation_rule do
- it "chooses the first that exists" do
- @one.should_receive(:pluralisation_rule).and_return nil
- @two.should_receive(:pluralisation_rule).and_return 'x'
- @rep.pluralisation_rule.should == 'x'
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/db_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/db_spec.rb
deleted file mode 100644
index 42c6bb830..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/db_spec.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-require 'spec/spec_helper'
-
-require 'active_record'
-require 'fast_gettext/translation_repository/db'
-FastGettext::TranslationRepository::Db.require_models
-describe FastGettext::TranslationRepository::Db do
-
- before :all do
- ActiveRecord::Base.establish_connection({
- :adapter => "sqlite3",
- :database => ":memory:"
- })
-
- #create model table
- #TODO surpress output ?
- ActiveRecord::Schema.define(:version => 1) do
- create_table :translation_keys do |t|
- t.string :key, :unique=>true, :null=>false
- t.timestamps
- end
- create_table :translation_texts do |t|
- t.string :text, :locale
- t.integer :translation_key_id, :null=>false
- t.timestamps
- end
- end
- end
-
- before do
- TranslationKey.delete_all
- TranslationText.delete_all
- FastGettext.locale = 'de'
- @rep = FastGettext::TranslationRepository::Db.new('x', :model=>TranslationKey)
- end
-
- def create_translation(key, text)
- translation_key = TranslationKey.create!(:key=>key)
- TranslationText.create!(:translation_key_id=>translation_key.id, :text=>text, :locale=>'de')
- end
-
- it "reads locales from the db" do
- locales = ['de','en','es']
- locales.reverse.each do |locale|
- TranslationText.create!(:translation_key_id=>1, :text=>'asdasd', :locale=>locale)
- end
- @rep.available_locales.should == locales
- end
-
- it "has no pluralisation_rule by default" do
- @rep.pluralisation_rule.should == nil
- end
-
- it "cannot translate when no models are present" do
- @rep['car'].should == nil
- end
-
- it "can translate" do
- create_translation 'car', 'Auto'
- @rep['car'].should == 'Auto'
- end
-
- it "cannot pluralize when no model is present" do
- @rep.plural('Axis','Axis').should == []
- end
-
- it "can pluralize" do
- create_translation 'Axis||||Axis', 'Achse||||Achsen'
- @rep.plural('Axis','Axis').should == ['Achse','Achsen']
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/logger_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/logger_spec.rb
deleted file mode 100644
index 31fb8884c..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/logger_spec.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'spec/spec_helper'
-
-describe 'FastGettext::TranslationRepository::Logger' do
- before do
- @callback = lambda{}
- @rep = FastGettext::TranslationRepository.build('test', :type=>:logger, :callback=>@callback)
- @rep.is_a?(FastGettext::TranslationRepository::Logger).should be_true
- end
- subject{@rep}
-
- it{ should have(0).available_locales}
-
- it "has no pluralisation_rule" do
- @rep.pluralisation_rule.should == nil
- end
-
- describe :single do
- it "logs every call" do
- @callback.should_receive(:call).with('the_key')
- @rep['the_key']
- end
-
- it "returns nil" do
- @callback.should_receive(:call).with('the_key').and_return 'something'
- @rep['the_key'].should == nil
- end
- end
-
- describe :plural do
- it "logs every call" do
- @callback.should_receive(:call).with(['a','b'])
- @rep.plural('a','b')
- end
-
- it "returns an empty array" do
- @callback.should_receive(:call).with(['a','b']).and_return 'something'
- @rep.plural('a','b').should == []
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/mo_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/mo_spec.rb
deleted file mode 100644
index 46e12c255..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/mo_spec.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'spec/spec_helper'
-
-describe 'FastGettext::TranslationRepository::Mo' do
- before do
- @rep = FastGettext::TranslationRepository.build('test',:path=>File.join('spec', 'locale'))
- @rep.is_a?(FastGettext::TranslationRepository::Mo).should be_true
- end
-
- it "can be built" do
- @rep.available_locales.sort.should == ['de','en']
- end
-
- it "can translate" do
- FastGettext.locale = 'de'
- @rep['car'].should == 'Auto'
- end
-
- it "can pluralize" do
- FastGettext.locale = 'de'
- @rep.plural('Axis','Axis').should == ['Achse','Achsen']
- end
-
- it "has access to the mo repositories pluralisation rule" do
- FastGettext.locale = 'en'
- rep = FastGettext::TranslationRepository.build('plural_test',:path=>File.join('spec','locale'))
- rep['car'].should == 'Test'#just check it is loaded correctly
- rep.pluralisation_rule.call(2).should == 3
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/po_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/po_spec.rb
deleted file mode 100644
index 4d9c868f1..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/po_spec.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'spec/spec_helper'
-
-describe 'FastGettext::TranslationRepository::Po' do
- before do
- @rep = FastGettext::TranslationRepository.build('test',:path=>File.join('spec','locale'),:type=>:po)
- @rep.is_a?(FastGettext::TranslationRepository::Po).should be_true
- end
-
- it "can be built" do
- @rep.available_locales.sort.should == ['de','en']
- end
-
- it "can translate" do
- FastGettext.locale = 'de'
- @rep['car'].should == 'Auto'
- end
-
- it "can pluralize" do
- FastGettext.locale = 'de'
- @rep.plural('Axis','Axis').should == ['Achse','Achsen']
- end
-
- it "has access to the mo repositories pluralisation rule" do
- FastGettext.locale = 'en'
- rep = FastGettext::TranslationRepository.build('plural_test',:path=>File.join('spec','locale'),:type=>:po)
- rep['car'].should == 'Test'#just check it is loaded correctly
- rep.pluralisation_rule.call(2).should == 3
- end
-
- describe 'fuzzy' do
- it "should warn on fuzzy by default" do
- $stderr.should_receive(:print).at_least(:once)
- FastGettext::TranslationRepository.build('test',:path=>File.join('spec','fuzzy_locale'),:type=>:po)
- end
-
- it "should ignore fuzzy when told to do so" do
- $stderr.should_not_receive(:print)
- FastGettext::TranslationRepository.build('test',:path=>File.join('spec','fuzzy_locale'),:type=>:po, :ignore_fuzzy => true)
- end
- end
-
- describe 'obsolete' do
- it "should warn on obsolete by default" do
- $stderr.should_receive(:print).at_least(:once)
- FastGettext::TranslationRepository.build('test',:path=>File.join('spec','obsolete_locale'),:type=>:po)
- end
-
- it "should ignore obsolete when told to do so" do
- $stderr.should_not_receive(:print)
- FastGettext::TranslationRepository.build('test',:path=>File.join('spec','obsolete_locale'),:type=>:po, :ignore_obsolete => true)
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/yaml_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/yaml_spec.rb
deleted file mode 100644
index 2229d48c5..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository/yaml_spec.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'spec/spec_helper'
-
-describe 'FastGettext::TranslationRepository::Yaml' do
- before do
- FastGettext.pluralisation_rule = nil
- @rep = FastGettext::TranslationRepository.build('test', :path => File.join('spec', 'locale', 'yaml'), :type => :yaml)
- @rep.is_a?(FastGettext::TranslationRepository::Yaml).should be_true
- FastGettext.locale = 'de'
- end
-
- it "can be built" do
- @rep.available_locales.sort.should == ['de', 'en']
- end
-
- it "translates nothing when locale is unsupported" do
- FastGettext.locale = 'xx'
- @rep['simple'].should == nil
- end
-
- it "does not translated categories" do
- @rep['cars'].should == nil
- end
-
- it "can translate simple" do
- @rep['simple'].should == 'einfach'
- end
-
- it "can translate nested" do
- @rep['cars.car'].should == 'Auto'
- end
-
- it "can pluralize" do
- @rep.plural('cars.axis').should == ['Achse', 'Achsen', nil, nil]
- end
-
- it "handles unfound plurals with nil" do
- @rep.plural('cars.xxx').should == [nil, nil, nil, nil]
- end
-
- it "can be used to translate plural forms" do
- FastGettext.stub!(:current_repository).and_return @rep
- FastGettext.n_('cars.axis','cars.axis',2).should == 'Achsen'
- FastGettext.n_('cars.axis',2).should == 'Achsen'
- FastGettext.n_('cars.axis',1).should == 'Achse'
- end
-
- 4.times do |i|
- it "can be used to do wanky pluralisation rules #{i}" do
- FastGettext.stub!(:current_repository).and_return @rep
- @rep.stub!(:pluralisation_rule).and_return lambda{i}
- FastGettext.n_('cars.silly',1).should == i.to_s # cars.silly translations are 0,1,2,3
- end
- end
-
- it "can use custom pluraliztion rules" do
- FastGettext.locale = 'en'
- {0 => 0, 1 => 1, 2 => 2, 3 => 0}.each do |input, expected|
- @rep.pluralisation_rule.call(input).should == expected
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository_spec.rb
deleted file mode 100644
index b343760e2..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_repository_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec/spec_helper'
-
-module FastGettext
- module TranslationRepository
- class Dummy
- attr_accessor :name, :options
- def initialize(name, options)
- @name = name
- @options = options
- end
- end
- end
-end
-
-describe FastGettext::TranslationRepository do
- describe "build" do
- it "auto requires class by default" do
- lambda { FastGettext::TranslationRepository.build('xx', { :type => 'invalid'}) }.should raise_error(LoadError)
- end
-
- it "can have auto-require disabled" do
- FastGettext::TranslationRepository.build('xx', { :type => 'dummy' })
- end
-
- it "makes a new repository" do
- options = { :type => 'dummy', :external => true }
- repo = FastGettext::TranslationRepository.build('xx', options)
- repo.class.should == FastGettext::TranslationRepository::Dummy
- repo.name.should == 'xx'
- repo.options.should == options
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_spec.rb
deleted file mode 100644
index db2248148..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/translation_spec.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-require 'spec/spec_helper'
-
-describe FastGettext::Translation do
- include FastGettext::Translation
-
- before do
- default_setup
- end
-
- describe "unknown locale" do
- before do
- FastGettext.available_locales = nil
- FastGettext.locale = 'xx'
- end
-
- it "does not translate" do
- _('car').should == 'car'
- end
-
- it "does not translate plurals" do
- n_('car','cars',2).should == 'cars'
- end
- end
-
- describe :_ do
- it "translates simple text" do
- _('car').should == 'Auto'
- end
-
- it "returns key if not translation was found" do
- _('NOT|FOUND').should == 'NOT|FOUND'
- end
-
- it "does not return the gettext meta information" do
- _('').should == ''
- end
- end
-
- describe :n_ do
- before do
- FastGettext.pluralisation_rule = nil
- end
-
- it "translates pluralized" do
- n_('Axis','Axis',1).should == 'Achse'
- n_('Axis','Axis',2).should == 'Achsen'
- n_('Axis','Axis',0).should == 'Achsen'
- end
-
- describe "pluralisations rules" do
- it "supports abstract pluralisation rules" do
- FastGettext.pluralisation_rule = lambda{|n|2}
- n_('a','b','c','d',4).should == 'c'
- end
-
- it "supports false as singular" do
- FastGettext.pluralisation_rule = lambda{|n|n!=2}
- n_('singular','plural','c','d',2).should == 'singular'
- end
-
- it "supports true as plural" do
- FastGettext.pluralisation_rule = lambda{|n|n==2}
- n_('singular','plural','c','d',2).should == 'plural'
- end
- end
-
- it "returns the appropriate key if no translation was found" do
- n_('NOTFOUND','NOTFOUNDs',1).should == 'NOTFOUND'
- n_('NOTFOUND','NOTFOUNDs',2).should == 'NOTFOUNDs'
- end
-
- it "returns the last key when no translation was found and keys where to short" do
- FastGettext.pluralisation_rule = lambda{|x|4}
- n_('Apple','Apples',2).should == 'Apples'
- end
- end
-
- describe :s_ do
- it "translates simple text" do
- s_('car').should == 'Auto'
- end
-
- it "returns cleaned key if a translation was not found" do
- s_("XXX|not found").should == "not found"
- end
-
- it "can use a custom seperator" do
- s_("XXX/not found",'/').should == "not found"
- end
- end
-
- describe :N_ do
- it "returns the key" do
- N_('XXXXX').should == 'XXXXX'
- end
- end
-
- describe :Nn_ do
- it "returns the keys as array" do
- Nn_('X','Y').should == ['X','Y']
- end
- end
-
- describe :ns_ do
- it "translates whith namespace" do
- ns_('Fruit|Apple','Fruit|Apples',2).should == 'Apples'
- end
- end
-
-
- describe :caching do
- describe :cache_hit do
- before do
- FastGettext.translation_repositories.replace({})
- #singular cache keys
- FastGettext.current_cache['xxx'] = '1'
-
- #plural cache keys
- FastGettext.current_cache['||||xxx'] = ['1','2']
- FastGettext.current_cache['||||xxx||||yyy'] = ['1','2']
- end
-
- it "uses the cache when translating with _" do
- _('xxx').should == '1'
- end
-
- it "uses the cache when translating with s_" do
- s_('xxx').should == '1'
- end
-
- it "uses the cache when translating with n_" do
- n_('xxx','yyy',1).should == '1'
- end
-
- it "uses the cache when translating with n_ and single argument" do
- n_('xxx',1).should == '1'
- end
- end
-
- it "caches different locales seperatly" do
- FastGettext.locale = 'en'
- _('car').should == 'car'
- FastGettext.locale = 'de'
- _('car').should == 'Auto'
- end
-
- it "caches different textdomains seperatly" do
- _('car').should == 'Auto'
-
- FastGettext.translation_repositories['fake'] = {}
- FastGettext.text_domain = 'fake'
- _('car').should == 'car'
-
- FastGettext.text_domain = 'test'
- _('car').should == 'Auto'
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/fake_load_path/iconv.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/fake_load_path/iconv.rb
deleted file mode 100644
index 82e68d4dc..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/fake_load_path/iconv.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-#simulate file not found
-raise LoadError \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/iconv_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/iconv_spec.rb
deleted file mode 100644
index 9be73fbb7..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/iconv_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-
-describe 'Iconv' do
- before do
- @fake_load_path = File.join('spec','fast_gettext','vendor','fake_load_path')
- end
-
- after do
- $LOAD_PATH.delete @fake_load_path
- end
-
- it "also works when Iconv was not found locally" do
- #prepare load path
- $LOAD_PATH.unshift @fake_load_path
- test = 1
- begin
- require 'iconv'
- rescue LoadError
- test = 2
- end
- test.should == 2
-
- #load fast_gettext
- require 'fast_gettext'
-
- FastGettext.add_text_domain('test',:path=>File.join('spec','locale'))
- FastGettext.text_domain = 'test'
- FastGettext.available_locales = ['en','de']
- FastGettext.locale = 'de'
-
- #translate
- FastGettext._('car').should == 'Auto'
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/string_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/string_spec.rb
deleted file mode 100644
index 825e54aad..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext/vendor/string_spec.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-require 'spec/spec_helper'
-
-#just to make sure we did not mess up while copying...
-describe String do
- before :all do
- if "i18n gem overwrites % method".respond_to?(:interpolate_without_ruby_19_syntax)
- class String
- def %(*args)
- interpolate_without_ruby_19_syntax(*args)
- end
- end
- end
- end
-
- it "does not translate twice" do
- ("%{a} %{b}" % {:a=>'%{b}',:b=>'c'}).should == '%{b} c'
- end
-
- describe "old % style replacement" do
- it "substitudes using % + Hash" do
- ("x%{name}y" %{:name=>'a'}).should == 'xay'
- end
-
- it "does not substitute after %%" do
- ("%%{num} oops" % {:num => 1}).should == '%{num} oops'
- end
-
- it "does not substitute when nothing could be found" do
- ("abc" % {:x=>1}).should == 'abc'
- end
-
- if RUBY_VERSION < '1.9' # this does not longer work in 1.9, use :"my weird string"
- it "sustitutes strings" do
- ("a%{b}c" % {'b'=>1}).should == 'a1c'
- end
-
- it "sustitutes strings with -" do
- ("a%{b-a}c" % {'b-a'=>1}).should == 'a1c'
- end
-
- it "sustitutes string with ." do
- ("a%{b.a}c" % {'b.a'=>1}).should == 'a1c'
- end
-
- it "sustitutes string with number" do
- ("a%{1}c" % {'1'=>1}).should == 'a1c'
- end
- end
- end
-
- describe 'old sprintf style' do
- it "substitudes using % + Array" do
- ("x%sy%s" % ['a','b']).should == 'xayb'
- end
-
- if RUBY_VERSION < '1.9' # this does not longer work in 1.9, ArgumentError is raised
- it "does not remove %{} style replacements" do
- ("%{name} x%sy%s" % ['a','b']).should == '%{name} xayb'
- end
-
- it "does not remove %<> style replacement" do
- ("%{name} %<num>f %s" % ['x']).should == "%{name} %<num>f x"
- end
- end
- end
-
- describe 'ruby 1.9 style %< replacement' do
- it "does not substitute after %%" do
- ("%%<num> oops" % {:num => 1}).should == '%<num> oops'
- end
-
- it "subsitutes %<something>d" do
- ("x%<hello>dy" % {:hello=>1}).should == 'x1y'
- end
-
- it "substitutes #b" do
- ("%<num>#b" % {:num => 1}).should == "0b1"
- end
- end
-
- if RUBY_VERSION >= '1.9'
- it "does not raise when key was not found" do
- ("%{typo} xxx" % {:something=>1}).should == "%{typo} xxx"
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext_spec.rb b/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext_spec.rb
deleted file mode 100644
index dc7ff494e..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fast_gettext_spec.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'spec/spec_helper'
-
-default_setup
-class IncludeTest
- include FastGettext::Translation
- @@xx = _('car')
- def self.ext
- _('car')
- end
- def inc
- _('car')
- end
- def self.xx
- @@xx
- end
-end
-
-describe FastGettext do
- include FastGettext
- before :all do
- default_setup
- end
-
- it "provides access to FastGettext::Translations methods" do
- FastGettext._('car').should == 'Auto'
- _('car').should == 'Auto'
- s_("XXX|not found").should == "not found"
- n_('Axis','Axis',1).should == 'Achse'
- N_('XXXXX').should == 'XXXXX'
- Nn_('X','Y').should == ['X','Y']
- end
-
- it "is extended to a class and included into a class" do
- IncludeTest.ext.should == 'Auto'
- IncludeTest.ext.should == 'Auto'
- IncludeTest.new.inc.should == 'Auto'
- IncludeTest.xx.should == 'Auto'
- end
-
- it "has a VERSION" do
- FastGettext::VERSION.should =~ /^\d+\.\d+\.\d+$/
- end
-end \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/fuzzy_locale/de/test.po b/vendor/gems/fast_gettext-0.5.10/spec/fuzzy_locale/de/test.po
deleted file mode 100644
index c5e420976..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/fuzzy_locale/de/test.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: version 0.0.1\n"
-"POT-Creation-Date: 2009-02-26 19:50+0100\n"
-"PO-Revision-Date: 2009-02-18 14:53+0100\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: app/helpers/translation_helper.rb:3
-# fuzzy
-msgid "%{relative_time} ago"
-msgstr "vor %{relative_time}" \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/de/LC_MESSAGES/test.mo b/vendor/gems/fast_gettext-0.5.10/spec/locale/de/LC_MESSAGES/test.mo
deleted file mode 100644
index 674f7605c..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/de/LC_MESSAGES/test.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/de/test.po b/vendor/gems/fast_gettext-0.5.10/spec/locale/de/test.po
deleted file mode 100644
index 76161dd2f..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/de/test.po
+++ /dev/null
@@ -1,61 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: version 0.0.1\n"
-"POT-Creation-Date: 2009-02-26 19:50+0100\n"
-"PO-Revision-Date: 2009-02-18 14:53+0100\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: app/helpers/translation_helper.rb:3
-msgid "%{relative_time} ago"
-msgstr "vor %{relative_time}"
-
-#: app/views/cars/show.html.erb:5
-msgid "Axis"
-msgid_plural "Axis"
-msgstr[0] "Achse"
-msgstr[1] "Achsen"
-
-#: app/controllers/cars_controller.rb:47
-msgid "Car was successfully created."
-msgstr "Auto wurde erfolgreich gespeichert"
-
-#: app/controllers/cars_controller.rb:64
-msgid "Car was successfully updated."
-msgstr "Auto wurde erfolgreich aktualisiert"
-
-#: app/views/cars/show.html.erb:1 locale/model_attributes.rb:3
-msgid "Car|Model"
-msgstr "Modell"
-
-#: app/views/cars/show.html.erb:3 locale/model_attributes.rb:4
-msgid "Car|Wheels count"
-msgstr "Räderzahl"
-
-#: app/views/cars/show.html.erb:7
-msgid "Created"
-msgstr "Erstellt"
-
-#: app/views/cars/show.html.erb:9
-msgid "Month"
-msgstr "Monat"
-
-#: locale/model_attributes.rb:2
-msgid "car"
-msgstr "Auto"
-
-#: locale/testlog_phrases.rb:2
-msgid "this is a dynamic translation which was found thorugh gettext_test_log!"
-msgstr ""
-"Dies ist eine dynamische Übersetzung, die durch gettext_test_log "
-"gefunden wurde!"
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/en/LC_MESSAGES/plural_test.mo b/vendor/gems/fast_gettext-0.5.10/spec/locale/en/LC_MESSAGES/plural_test.mo
deleted file mode 100644
index f4a8756af..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/en/LC_MESSAGES/plural_test.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/en/LC_MESSAGES/test.mo b/vendor/gems/fast_gettext-0.5.10/spec/locale/en/LC_MESSAGES/test.mo
deleted file mode 100644
index 62dfcf939..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/en/LC_MESSAGES/test.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/en/plural_test.po b/vendor/gems/fast_gettext-0.5.10/spec/locale/en/plural_test.po
deleted file mode 100644
index 611baadf4..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/en/plural_test.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: version 0.0.1\n"
-"POT-Creation-Date: 2009-02-26 19:50+0100\n"
-"PO-Revision-Date: 2009-02-18 15:42+0100\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n==2?3:4;\n"
-
-msgid "car"
-msgstr "Test" \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/en/test.po b/vendor/gems/fast_gettext-0.5.10/spec/locale/en/test.po
deleted file mode 100644
index 07b8136fb..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/en/test.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: version 0.0.1\n"
-"POT-Creation-Date: 2009-02-26 19:50+0100\n"
-"PO-Revision-Date: 2009-02-18 15:42+0100\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: app/helpers/translation_helper.rb:3
-msgid "%{relative_time} ago"
-msgstr ""
-
-#: app/views/cars/show.html.erb:5
-msgid "Axis"
-msgid_plural "Axis"
-msgstr[0] ""
-msgstr[1] ""
-
-#: app/controllers/cars_controller.rb:47
-msgid "Car was successfully created."
-msgstr ""
-
-#: app/controllers/cars_controller.rb:64
-msgid "Car was successfully updated."
-msgstr ""
-
-#: app/views/cars/show.html.erb:1 locale/model_attributes.rb:3
-msgid "Car|Model"
-msgstr ""
-
-#: app/views/cars/show.html.erb:3 locale/model_attributes.rb:4
-msgid "Car|Wheels count"
-msgstr ""
-
-#: app/views/cars/show.html.erb:7
-msgid "Created"
-msgstr ""
-
-#: app/views/cars/show.html.erb:9
-msgid "Month"
-msgstr ""
-
-#: locale/model_attributes.rb:2
-msgid "car"
-msgstr ""
-
-#: locale/testlog_phrases.rb:2
-msgid "this is a dynamic translation which was found thorugh gettext_test_log!"
-msgstr ""
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/de.yml b/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/de.yml
deleted file mode 100644
index 08aa77eb7..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/de.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-de:
- simple: einfach
- date:
- relative: "vor %{relative_time}"
-
- cars:
- axis:
- one: "Achse"
- other: "Achsen"
- silly:
- one: '0'
- other: '1'
- plural2: '2'
- plural3: '3'
- model: "Modell"
- wheel_count: "Räderzahl"
- created: "Erstellt"
- month: "Monat"
- car: "Auto"
- messages:
- created: "Auto wurde erfolgreich gespeichert"
- updated: "Auto wurde erfolgreich aktualisiert"
-
- test_log:
- phrases: "Dies ist eine dynamische Übersetzung, die durch gettext_test_log gefunden wurde!"
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/en.yml b/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/en.yml
deleted file mode 100644
index 4029e968e..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/en.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-en:
- pluralisation_rule: n<3?n:0
- simple: easy
- date:
- relative: "%{relative_time} ago"
-
- cars:
- axis:
- one: "Axis"
- other: "Axis"
- model: "Model"
- wheel_count: "Wheels count"
- created: "Created"
- month: "Month"
- car: "Car"
- messages:
- created: "Car was successfully created."
- updated: "Car was successfully updated."
-
- test_log:
- phrases: "this is a dynamic translation which was found thorugh gettext_test_log!"
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/notfound.yml b/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/notfound.yml
deleted file mode 100644
index 622bb1bda..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/locale/yaml/notfound.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-xx:
- simple: FUUUU \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/obsolete_locale/de/test.po b/vendor/gems/fast_gettext-0.5.10/spec/obsolete_locale/de/test.po
deleted file mode 100644
index 70ef1a59a..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/obsolete_locale/de/test.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: version 0.0.1\n"
-"POT-Creation-Date: 2009-02-26 19:50+0100\n"
-"PO-Revision-Date: 2009-02-18 14:53+0100\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: app/helpers/translation_helper.rb:3
-#~ msgid "%{relative_time} ago"
-#~ msgstr "vor %{relative_time}" \ No newline at end of file
diff --git a/vendor/gems/fast_gettext-0.5.10/spec/spec_helper.rb b/vendor/gems/fast_gettext-0.5.10/spec/spec_helper.rb
deleted file mode 100644
index 8987b88a3..000000000
--- a/vendor/gems/fast_gettext-0.5.10/spec/spec_helper.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# ---- requirements
-require 'rubygems'
-$LOAD_PATH.unshift File.expand_path("../lib", File.dirname(__FILE__))
-require 'fast_gettext'
-
-# ---- revert to defaults
-Spec::Runner.configure do |config|
- config.before :all do
- FastGettext.locale = 'de'
- FastGettext.available_locales = nil
- end
-end
-
-# ---- Helpers
-def pending_it(text,&block)
- it text do
- pending(&block)
- end
-end
-
-def default_setup
- FastGettext.add_text_domain('test',:path=>File.join(File.dirname(__FILE__),'locale'))
- FastGettext.text_domain = 'test'
- FastGettext.available_locales = ['en','de']
- FastGettext.locale = 'de'
-end \ No newline at end of file
diff --git a/vendor/gems/gettext-2.1.0/.specification b/vendor/gems/gettext-2.1.0/.specification
deleted file mode 100644
index d318db351..000000000
--- a/vendor/gems/gettext-2.1.0/.specification
+++ /dev/null
@@ -1,839 +0,0 @@
---- !ruby/object:Gem::Specification
-name: gettext
-version: !ruby/object:Gem::Version
- hash: 11
- prerelease:
- segments:
- - 2
- - 1
- - 0
- version: 2.1.0
-platform: ruby
-authors:
-- Masao Mutoh
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2009-11-13 00:00:00 +00:00
-default_executable:
-dependencies:
-- !ruby/object:Gem::Dependency
- name: locale
- prerelease: false
- requirement: &id001 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 5
- segments:
- - 2
- - 0
- - 5
- version: 2.0.5
- type: :runtime
- version_requirements: *id001
-description: " Ruby-GetText-Package is a GNU GetText-like program for Ruby.\n The catalog file(po-file) is same format with GNU GetText.\n So you can use GNU GetText tools for maintaining.\n"
-email: mutomasa at gmail.com
-executables:
-- rmsgmerge
-- rmsgfmt
-- rgettext
-extensions: []
-
-extra_rdoc_files: []
-
-files:
-- lib/gettext.rb
-- lib/gettext/core_ext/string.rb
-- lib/gettext/core_ext/iconv.rb
-- lib/gettext/tools/pomessage.rb
-- lib/gettext/tools/rmsgmerge.rb
-- lib/gettext/tools/parser/erb.rb
-- lib/gettext/tools/parser/ruby.rb
-- lib/gettext/tools/parser/glade.rb
-- lib/gettext/tools/rgettext.rb
-- lib/gettext/tools/rmsgfmt.rb
-- lib/gettext/tools/poparser.rb
-- lib/gettext/parser/erb.rb
-- lib/gettext/parser/ruby.rb
-- lib/gettext/parser/glade.rb
-- lib/gettext/utils.rb
-- lib/gettext/tools.rb
-- lib/gettext/version.rb
-- lib/gettext/runtime/locale_path.rb
-- lib/gettext/runtime/mofile.rb
-- lib/gettext/runtime/textdomain_manager.rb
-- lib/gettext/runtime/textdomain_group.rb
-- lib/gettext/runtime/textdomain.rb
-- lib/gettext/runtime/class_info.rb
-- lib/gettext/cgi.rb
-- benchmark/2.0.4.txt
-- benchmark/1.93.0.txt
-- benchmark/test.rb
-- benchmark/2.1.0.txt
-- benchmark/2.0.0.txt
-- benchmark/benchmark.rb
-- gettext.gemspec
-- test/test_po_generation.rb
-- test/test_string.rb
-- test/test_textdomain_bind.rb
-- test/test_textdomain_multi.rb
-- test/test_pomessage.rb
-- test/testlib/gettext.rb
-- test/testlib/pgettext.rb
-- test/testlib/sgettext.rb
-- test/testlib/helper.rb
-- test/testlib/multi_textdomain.rb
-- test/testlib/nsgettext.rb
-- test/testlib/simple.rb
-- test/testlib/ngettext.rb
-- test/testlib/erb.rhtml
-- test/testlib/N_.rb
-- test/testlib/gladeparser.glade
-- test/testlib/erb.rxml
-- test/testlib/npgettext.rb
-- test/test_locale_path.rb
-- test/tools/files/en/test.po
-- test/tools/files/en/app.po
-- test/tools/files/simple_1.po
-- test/tools/files/version.po
-- test/tools/files/simple_translation.rb
-- test/tools/files/simple_2.po
-- test/tools/files/app.pot
-- test/tools/files/de/app.po
-- test/tools/test_tools.rb
-- test/tools/test.pot
-- test/Rakefile
-- test/test_gettext.rb
-- test/test_parser.rb
-- test/locale/ja/LC_MESSAGES/test3.mo
-- test/locale/ja/LC_MESSAGES/rubyparser.mo
-- test/locale/ja/LC_MESSAGES/test1.mo
-- test/locale/ja/LC_MESSAGES/plural_error.mo
-- test/locale/ja/LC_MESSAGES/pgettext.mo
-- test/locale/ja/LC_MESSAGES/test2.mo
-- test/locale/ja/LC_MESSAGES/sgettext.mo
-- test/locale/ja/LC_MESSAGES/nsgettext.mo
-- test/locale/ja/LC_MESSAGES/plural.mo
-- test/locale/ja/LC_MESSAGES/npgettext.mo
-- test/locale/ir/LC_MESSAGES/plural.mo
-- test/locale/sl/LC_MESSAGES/plural.mo
-- test/locale/li/LC_MESSAGES/plural_error.mo
-- test/locale/li/LC_MESSAGES/plural.mo
-- test/locale/la/LC_MESSAGES/plural_error.mo
-- test/locale/la/LC_MESSAGES/plural.mo
-- test/locale/da/LC_MESSAGES/plural_error.mo
-- test/locale/da/LC_MESSAGES/plural.mo
-- test/locale/cr/LC_MESSAGES/plural.mo
-- test/locale/po/LC_MESSAGES/plural.mo
-- test/locale/fr/LC_MESSAGES/test1.mo
-- test/locale/fr/LC_MESSAGES/plural_error.mo
-- test/locale/fr/LC_MESSAGES/test2.mo
-- test/locale/fr/LC_MESSAGES/plural.mo
-- test/test_thread.rb
-- test/README
-- test/po/ja/pgettext.po
-- test/po/ja/plural_error.po
-- test/po/ja/nsgettext.po
-- test/po/ja/test1.po
-- test/po/ja/test3.po
-- test/po/ja/npgettext.po
-- test/po/ja/test2.po
-- test/po/ja/rubyparser.po
-- test/po/ja/sgettext.po
-- test/po/ja/plural.po
-- test/po/ir/plural.po
-- test/po/sl/plural.po
-- test/po/li/plural_error.po
-- test/po/li/plural.po
-- test/po/la/plural_error.po
-- test/po/la/plural.po
-- test/po/da/plural_error.po
-- test/po/da/plural.po
-- test/po/cr/plural.po
-- test/po/po/plural.po
-- test/po/fr/plural_error.po
-- test/po/fr/test1.po
-- test/po/fr/test2.po
-- test/po/fr/plural.po
-- test/test_class_info.rb
-- test/test_textdomain_toplevel.rb
-- Rakefile
-- test.rb
-- README.rdoc
-- ChangeLog
-- src/poparser.ry
-- bin/rmsgmerge
-- bin/rmsgfmt
-- bin/rgettext
-- replace.rb
-- data/locale/ru/LC_MESSAGES/rgettext.mo
-- data/locale/el/LC_MESSAGES/rgettext.mo
-- data/locale/ko/LC_MESSAGES/rgettext.mo
-- data/locale/ja/LC_MESSAGES/rgettext.mo
-- data/locale/sr/LC_MESSAGES/rgettext.mo
-- data/locale/sv/LC_MESSAGES/rgettext.mo
-- data/locale/eo/LC_MESSAGES/rgettext.mo
-- data/locale/bs/LC_MESSAGES/rgettext.mo
-- data/locale/zh/LC_MESSAGES/rgettext.mo
-- data/locale/vi/LC_MESSAGES/rgettext.mo
-- data/locale/et/LC_MESSAGES/rgettext.mo
-- data/locale/it/LC_MESSAGES/rgettext.mo
-- data/locale/zh_TW/LC_MESSAGES/rgettext.mo
-- data/locale/nb/LC_MESSAGES/rgettext.mo
-- data/locale/ua/LC_MESSAGES/rgettext.mo
-- data/locale/es/LC_MESSAGES/rgettext.mo
-- data/locale/pt_BR/LC_MESSAGES/rgettext.mo
-- data/locale/hr/LC_MESSAGES/rgettext.mo
-- data/locale/cs/LC_MESSAGES/rgettext.mo
-- data/locale/ca/LC_MESSAGES/rgettext.mo
-- data/locale/hu/LC_MESSAGES/rgettext.mo
-- data/locale/bg/LC_MESSAGES/rgettext.mo
-- data/locale/lv/LC_MESSAGES/rgettext.mo
-- data/locale/de/LC_MESSAGES/rgettext.mo
-- data/locale/nl/LC_MESSAGES/rgettext.mo
-- data/locale/fr/LC_MESSAGES/rgettext.mo
-- NEWS-1
-- COPYING
-- po/ru/rgettext.po
-- po/el/rgettext.po
-- po/ko/rgettext.po
-- po/ja/rgettext.po
-- po/sr/rgettext.po
-- po/sv/rgettext.po
-- po/eo/rgettext.po
-- po/bs/rgettext.po
-- po/rgettext.pot
-- po/zh/rgettext.po
-- po/vi/rgettext.po
-- po/et/rgettext.po
-- po/it/rgettext.po
-- po/zh_TW/rgettext.po
-- po/nb/rgettext.po
-- po/ua/rgettext.po
-- po/es/rgettext.po
-- po/pt_BR/rgettext.po
-- po/hr/rgettext.po
-- po/cs/rgettext.po
-- po/ca/rgettext.po
-- po/hu/rgettext.po
-- po/bg/rgettext.po
-- po/lv/rgettext.po
-- po/de/rgettext.po
-- po/nl/rgettext.po
-- po/fr/rgettext.po
-- ChangeLog-1
-- samples/makemo.rb
-- samples/hello_gtk2.rb
-- samples/hello_glade2.rb
-- samples/hello_tk.rb
-- samples/cgi/http.rb
-- samples/cgi/hellolib.rb
-- samples/cgi/Rakefile
-- samples/cgi/index.cgi
-- samples/cgi/other.rhtml
-- samples/cgi/locale/ru/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/ru/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/ru/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/ru/LC_MESSAGES/main.mo
-- samples/cgi/locale/el/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/el/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/el/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/el/LC_MESSAGES/main.mo
-- samples/cgi/locale/ko/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/ko/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/ko/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/ko/LC_MESSAGES/main.mo
-- samples/cgi/locale/ja/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/ja/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/ja/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/ja/LC_MESSAGES/main.mo
-- samples/cgi/locale/sr/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/sr/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/sr/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/sr/LC_MESSAGES/main.mo
-- samples/cgi/locale/eo/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/eo/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/eo/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/eo/LC_MESSAGES/main.mo
-- samples/cgi/locale/bs/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/bs/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/bs/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/bs/LC_MESSAGES/main.mo
-- samples/cgi/locale/zh/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/zh/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/zh/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/zh/LC_MESSAGES/main.mo
-- samples/cgi/locale/vi/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/vi/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/vi/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/vi/LC_MESSAGES/main.mo
-- samples/cgi/locale/it/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/it/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/it/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/it/LC_MESSAGES/main.mo
-- samples/cgi/locale/zh_TW/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/zh_TW/LC_MESSAGES/main.mo
-- samples/cgi/locale/nb/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/nb/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/nb/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/nb/LC_MESSAGES/main.mo
-- samples/cgi/locale/ua/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/ua/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/ua/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/ua/LC_MESSAGES/main.mo
-- samples/cgi/locale/es/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/es/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/es/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/es/LC_MESSAGES/main.mo
-- samples/cgi/locale/pt_BR/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/pt_BR/LC_MESSAGES/main.mo
-- samples/cgi/locale/hr/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/hr/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/hr/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/hr/LC_MESSAGES/main.mo
-- samples/cgi/locale/cs/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/cs/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/cs/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/cs/LC_MESSAGES/main.mo
-- samples/cgi/locale/ca/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/ca/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/ca/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/ca/LC_MESSAGES/main.mo
-- samples/cgi/locale/hu/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/hu/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/hu/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/hu/LC_MESSAGES/main.mo
-- samples/cgi/locale/bg/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/bg/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/bg/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/bg/LC_MESSAGES/main.mo
-- samples/cgi/locale/lv/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/lv/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/lv/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/lv/LC_MESSAGES/main.mo
-- samples/cgi/locale/de/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/de/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/de/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/de/LC_MESSAGES/main.mo
-- samples/cgi/locale/nl/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/nl/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/nl/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/nl/LC_MESSAGES/main.mo
-- samples/cgi/locale/fr/LC_MESSAGES/hellolib.mo
-- samples/cgi/locale/fr/LC_MESSAGES/helloerb1.mo
-- samples/cgi/locale/fr/LC_MESSAGES/helloerb2.mo
-- samples/cgi/locale/fr/LC_MESSAGES/main.mo
-- samples/cgi/helloerb1.cgi
-- samples/cgi/helloerb.rhtml
-- samples/cgi/helloerb2.cgi
-- samples/cgi/gettext.css
-- samples/cgi/README
-- samples/cgi/po/ru/helloerb2.po
-- samples/cgi/po/ru/main.po
-- samples/cgi/po/ru/helloerb1.po
-- samples/cgi/po/ru/hellolib.po
-- samples/cgi/po/el/helloerb2.po
-- samples/cgi/po/el/main.po
-- samples/cgi/po/el/helloerb1.po
-- samples/cgi/po/el/hellolib.po
-- samples/cgi/po/ko/helloerb2.po
-- samples/cgi/po/ko/main.po
-- samples/cgi/po/ko/helloerb1.po
-- samples/cgi/po/ko/hellolib.po
-- samples/cgi/po/ja/helloerb2.po
-- samples/cgi/po/ja/main.po
-- samples/cgi/po/ja/helloerb1.po
-- samples/cgi/po/ja/hellolib.po
-- samples/cgi/po/hellolib.pot
-- samples/cgi/po/sr/helloerb2.po
-- samples/cgi/po/sr/main.po
-- samples/cgi/po/sr/helloerb1.po
-- samples/cgi/po/sr/hellolib.po
-- samples/cgi/po/eo/helloerb2.po
-- samples/cgi/po/eo/main.po
-- samples/cgi/po/eo/helloerb1.po
-- samples/cgi/po/eo/hellolib.po
-- samples/cgi/po/bs/helloerb2.po
-- samples/cgi/po/bs/main.po
-- samples/cgi/po/bs/helloerb1.po
-- samples/cgi/po/bs/hellolib.po
-- samples/cgi/po/helloerb1.pot
-- samples/cgi/po/zh/helloerb2.po
-- samples/cgi/po/zh/main.po
-- samples/cgi/po/zh/helloerb1.po
-- samples/cgi/po/zh/hellolib.po
-- samples/cgi/po/helloerb2.pot
-- samples/cgi/po/main.pot
-- samples/cgi/po/vi/helloerb2.po
-- samples/cgi/po/vi/main.po
-- samples/cgi/po/vi/helloerb1.po
-- samples/cgi/po/vi/hellolib.po
-- samples/cgi/po/it/helloerb2.po
-- samples/cgi/po/it/main.po
-- samples/cgi/po/it/helloerb1.po
-- samples/cgi/po/it/hellolib.po
-- samples/cgi/po/zh_TW/helloerb2.po
-- samples/cgi/po/zh_TW/main.po
-- samples/cgi/po/zh_TW/helloerb1.po
-- samples/cgi/po/zh_TW/hellolib.po
-- samples/cgi/po/nb/helloerb2.po
-- samples/cgi/po/nb/main.po
-- samples/cgi/po/nb/helloerb1.po
-- samples/cgi/po/nb/hellolib.po
-- samples/cgi/po/ua/helloerb2.po
-- samples/cgi/po/ua/main.po
-- samples/cgi/po/ua/helloerb1.po
-- samples/cgi/po/ua/hellolib.po
-- samples/cgi/po/es/helloerb2.po
-- samples/cgi/po/es/main.po
-- samples/cgi/po/es/helloerb1.po
-- samples/cgi/po/es/hellolib.po
-- samples/cgi/po/pt_BR/helloerb2.po
-- samples/cgi/po/pt_BR/main.po
-- samples/cgi/po/pt_BR/helloerb1.po
-- samples/cgi/po/pt_BR/hellolib.po
-- samples/cgi/po/hr/helloerb2.po
-- samples/cgi/po/hr/main.po
-- samples/cgi/po/hr/helloerb1.po
-- samples/cgi/po/hr/hellolib.po
-- samples/cgi/po/cs/helloerb2.po
-- samples/cgi/po/cs/main.po
-- samples/cgi/po/cs/helloerb1.po
-- samples/cgi/po/cs/hellolib.po
-- samples/cgi/po/ca/helloerb2.po
-- samples/cgi/po/ca/main.po
-- samples/cgi/po/ca/helloerb1.po
-- samples/cgi/po/ca/hellolib.po
-- samples/cgi/po/hu/helloerb2.po
-- samples/cgi/po/hu/main.po
-- samples/cgi/po/hu/helloerb1.po
-- samples/cgi/po/hu/hellolib.po
-- samples/cgi/po/bg/helloerb2.po
-- samples/cgi/po/bg/#main.po#
-- samples/cgi/po/bg/main.po
-- samples/cgi/po/bg/helloerb1.po
-- samples/cgi/po/bg/hellolib.po
-- samples/cgi/po/lv/helloerb2.po
-- samples/cgi/po/lv/main.po
-- samples/cgi/po/lv/helloerb1.po
-- samples/cgi/po/lv/hellolib.po
-- samples/cgi/po/de/helloerb2.po
-- samples/cgi/po/de/main.po
-- samples/cgi/po/de/helloerb1.po
-- samples/cgi/po/de/hellolib.po
-- samples/cgi/po/nl/helloerb2.po
-- samples/cgi/po/nl/main.po
-- samples/cgi/po/nl/helloerb1.po
-- samples/cgi/po/nl/hellolib.po
-- samples/cgi/po/fr/helloerb2.po
-- samples/cgi/po/fr/main.po
-- samples/cgi/po/fr/helloerb1.po
-- samples/cgi/po/fr/hellolib.po
-- samples/cgi/cookie.cgi
-- samples/hello2.rb
-- samples/hello_plural.rb
-- samples/hello_noop.rb
-- samples/locale/ru/LC_MESSAGES/hello_gtk.mo
-- samples/locale/ru/LC_MESSAGES/hello_glade2.mo
-- samples/locale/ru/LC_MESSAGES/hello2.mo
-- samples/locale/ru/LC_MESSAGES/hello_plural.mo
-- samples/locale/ru/LC_MESSAGES/hello_tk.mo
-- samples/locale/ru/LC_MESSAGES/hello_noop.mo
-- samples/locale/ru/LC_MESSAGES/hello.mo
-- samples/locale/el/LC_MESSAGES/hello_gtk.mo
-- samples/locale/el/LC_MESSAGES/hello_glade2.mo
-- samples/locale/el/LC_MESSAGES/hello2.mo
-- samples/locale/el/LC_MESSAGES/hello_plural.mo
-- samples/locale/el/LC_MESSAGES/hello_tk.mo
-- samples/locale/el/LC_MESSAGES/hello_noop.mo
-- samples/locale/el/LC_MESSAGES/hello.mo
-- samples/locale/ko/LC_MESSAGES/hello_gtk.mo
-- samples/locale/ko/LC_MESSAGES/hello_glade2.mo
-- samples/locale/ko/LC_MESSAGES/hello2.mo
-- samples/locale/ko/LC_MESSAGES/hello_plural.mo
-- samples/locale/ko/LC_MESSAGES/hello_tk.mo
-- samples/locale/ko/LC_MESSAGES/hello_noop.mo
-- samples/locale/ko/LC_MESSAGES/hello.mo
-- samples/locale/ja/LC_MESSAGES/hello_gtk.mo
-- samples/locale/ja/LC_MESSAGES/hello_glade2.mo
-- samples/locale/ja/LC_MESSAGES/hello2.mo
-- samples/locale/ja/LC_MESSAGES/hello_plural.mo
-- samples/locale/ja/LC_MESSAGES/hello_tk.mo
-- samples/locale/ja/LC_MESSAGES/hello_noop.mo
-- samples/locale/ja/LC_MESSAGES/hello.mo
-- samples/locale/sr/LC_MESSAGES/hello_gtk.mo
-- samples/locale/sr/LC_MESSAGES/hello_glade2.mo
-- samples/locale/sr/LC_MESSAGES/hello2.mo
-- samples/locale/sr/LC_MESSAGES/hello_plural.mo
-- samples/locale/sr/LC_MESSAGES/hello_tk.mo
-- samples/locale/sr/LC_MESSAGES/hello_noop.mo
-- samples/locale/sr/LC_MESSAGES/hello.mo
-- samples/locale/sv/LC_MESSAGES/hello_gtk.mo
-- samples/locale/sv/LC_MESSAGES/hello_glade2.mo
-- samples/locale/sv/LC_MESSAGES/hello2.mo
-- samples/locale/sv/LC_MESSAGES/hello_plural.mo
-- samples/locale/sv/LC_MESSAGES/hello_tk.mo
-- samples/locale/sv/LC_MESSAGES/hello_noop.mo
-- samples/locale/sv/LC_MESSAGES/hello.mo
-- samples/locale/eo/LC_MESSAGES/hello_gtk.mo
-- samples/locale/eo/LC_MESSAGES/hello_glade2.mo
-- samples/locale/eo/LC_MESSAGES/hello2.mo
-- samples/locale/eo/LC_MESSAGES/hello_plural.mo
-- samples/locale/eo/LC_MESSAGES/hello_tk.mo
-- samples/locale/eo/LC_MESSAGES/hello_noop.mo
-- samples/locale/eo/LC_MESSAGES/hello.mo
-- samples/locale/bs/LC_MESSAGES/hello_gtk.mo
-- samples/locale/bs/LC_MESSAGES/hello_glade2.mo
-- samples/locale/bs/LC_MESSAGES/hello2.mo
-- samples/locale/bs/LC_MESSAGES/hello_plural.mo
-- samples/locale/bs/LC_MESSAGES/hello_tk.mo
-- samples/locale/bs/LC_MESSAGES/hello_noop.mo
-- samples/locale/bs/LC_MESSAGES/hello.mo
-- samples/locale/zh/LC_MESSAGES/hello_gtk.mo
-- samples/locale/zh/LC_MESSAGES/hello_glade2.mo
-- samples/locale/zh/LC_MESSAGES/hello2.mo
-- samples/locale/zh/LC_MESSAGES/hello_plural.mo
-- samples/locale/zh/LC_MESSAGES/hello_tk.mo
-- samples/locale/zh/LC_MESSAGES/hello_noop.mo
-- samples/locale/zh/LC_MESSAGES/hello.mo
-- samples/locale/vi/LC_MESSAGES/hello_gtk.mo
-- samples/locale/vi/LC_MESSAGES/hello_glade2.mo
-- samples/locale/vi/LC_MESSAGES/hello2.mo
-- samples/locale/vi/LC_MESSAGES/hello_plural.mo
-- samples/locale/vi/LC_MESSAGES/hello_tk.mo
-- samples/locale/vi/LC_MESSAGES/hello_noop.mo
-- samples/locale/vi/LC_MESSAGES/hello.mo
-- samples/locale/it/LC_MESSAGES/hello_gtk.mo
-- samples/locale/it/LC_MESSAGES/hello_glade2.mo
-- samples/locale/it/LC_MESSAGES/hello2.mo
-- samples/locale/it/LC_MESSAGES/hello_plural.mo
-- samples/locale/it/LC_MESSAGES/hello_tk.mo
-- samples/locale/it/LC_MESSAGES/hello_noop.mo
-- samples/locale/it/LC_MESSAGES/hello.mo
-- samples/locale/zh_TW/LC_MESSAGES/hello_gtk.mo
-- samples/locale/zh_TW/LC_MESSAGES/hello_glade2.mo
-- samples/locale/zh_TW/LC_MESSAGES/hello2.mo
-- samples/locale/zh_TW/LC_MESSAGES/hello_plural.mo
-- samples/locale/zh_TW/LC_MESSAGES/hello_tk.mo
-- samples/locale/zh_TW/LC_MESSAGES/hello_noop.mo
-- samples/locale/zh_TW/LC_MESSAGES/hello.mo
-- samples/locale/nb/LC_MESSAGES/hello_gtk.mo
-- samples/locale/nb/LC_MESSAGES/hello_glade2.mo
-- samples/locale/nb/LC_MESSAGES/hello2.mo
-- samples/locale/nb/LC_MESSAGES/hello_plural.mo
-- samples/locale/nb/LC_MESSAGES/hello_tk.mo
-- samples/locale/nb/LC_MESSAGES/hello_noop.mo
-- samples/locale/nb/LC_MESSAGES/hello.mo
-- samples/locale/ua/LC_MESSAGES/hello_gtk.mo
-- samples/locale/ua/LC_MESSAGES/hello_glade2.mo
-- samples/locale/ua/LC_MESSAGES/hello2.mo
-- samples/locale/ua/LC_MESSAGES/hello_plural.mo
-- samples/locale/ua/LC_MESSAGES/hello_tk.mo
-- samples/locale/ua/LC_MESSAGES/hello_noop.mo
-- samples/locale/ua/LC_MESSAGES/hello.mo
-- samples/locale/es/LC_MESSAGES/hello_gtk.mo
-- samples/locale/es/LC_MESSAGES/hello_glade2.mo
-- samples/locale/es/LC_MESSAGES/hello2.mo
-- samples/locale/es/LC_MESSAGES/hello_plural.mo
-- samples/locale/es/LC_MESSAGES/hello_tk.mo
-- samples/locale/es/LC_MESSAGES/hello_noop.mo
-- samples/locale/es/LC_MESSAGES/hello.mo
-- samples/locale/pt_BR/LC_MESSAGES/hello_gtk.mo
-- samples/locale/pt_BR/LC_MESSAGES/hello_glade2.mo
-- samples/locale/pt_BR/LC_MESSAGES/hello2.mo
-- samples/locale/pt_BR/LC_MESSAGES/hello_plural.mo
-- samples/locale/pt_BR/LC_MESSAGES/hello_tk.mo
-- samples/locale/pt_BR/LC_MESSAGES/hello_noop.mo
-- samples/locale/pt_BR/LC_MESSAGES/hello.mo
-- samples/locale/hr/LC_MESSAGES/hello_gtk.mo
-- samples/locale/hr/LC_MESSAGES/hello_glade2.mo
-- samples/locale/hr/LC_MESSAGES/hello2.mo
-- samples/locale/hr/LC_MESSAGES/hello_plural.mo
-- samples/locale/hr/LC_MESSAGES/hello_tk.mo
-- samples/locale/hr/LC_MESSAGES/hello_noop.mo
-- samples/locale/hr/LC_MESSAGES/hello.mo
-- samples/locale/cs/LC_MESSAGES/hello_gtk.mo
-- samples/locale/cs/LC_MESSAGES/hello_glade2.mo
-- samples/locale/cs/LC_MESSAGES/hello2.mo
-- samples/locale/cs/LC_MESSAGES/hello_plural.mo
-- samples/locale/cs/LC_MESSAGES/hello_tk.mo
-- samples/locale/cs/LC_MESSAGES/hello_noop.mo
-- samples/locale/cs/LC_MESSAGES/hello.mo
-- samples/locale/ca/LC_MESSAGES/hello_gtk.mo
-- samples/locale/ca/LC_MESSAGES/hello_glade2.mo
-- samples/locale/ca/LC_MESSAGES/hello2.mo
-- samples/locale/ca/LC_MESSAGES/hello_plural.mo
-- samples/locale/ca/LC_MESSAGES/hello_tk.mo
-- samples/locale/ca/LC_MESSAGES/hello_noop.mo
-- samples/locale/ca/LC_MESSAGES/hello.mo
-- samples/locale/hu/LC_MESSAGES/hello_gtk.mo
-- samples/locale/hu/LC_MESSAGES/hello_glade2.mo
-- samples/locale/hu/LC_MESSAGES/hello2.mo
-- samples/locale/hu/LC_MESSAGES/hello_plural.mo
-- samples/locale/hu/LC_MESSAGES/hello_tk.mo
-- samples/locale/hu/LC_MESSAGES/hello_noop.mo
-- samples/locale/hu/LC_MESSAGES/hello.mo
-- samples/locale/bg/LC_MESSAGES/hello_gtk.mo
-- samples/locale/bg/LC_MESSAGES/hello_glade2.mo
-- samples/locale/bg/LC_MESSAGES/hello2.mo
-- samples/locale/bg/LC_MESSAGES/hello_plural.mo
-- samples/locale/bg/LC_MESSAGES/hello_tk.mo
-- samples/locale/bg/LC_MESSAGES/hello_noop.mo
-- samples/locale/bg/LC_MESSAGES/hello.mo
-- samples/locale/lv/LC_MESSAGES/hello_gtk.mo
-- samples/locale/lv/LC_MESSAGES/hello_glade2.mo
-- samples/locale/lv/LC_MESSAGES/hello2.mo
-- samples/locale/lv/LC_MESSAGES/hello_plural.mo
-- samples/locale/lv/LC_MESSAGES/hello_tk.mo
-- samples/locale/lv/LC_MESSAGES/hello_noop.mo
-- samples/locale/lv/LC_MESSAGES/hello.mo
-- samples/locale/de/LC_MESSAGES/hello_gtk.mo
-- samples/locale/de/LC_MESSAGES/hello_glade2.mo
-- samples/locale/de/LC_MESSAGES/hello2.mo
-- samples/locale/de/LC_MESSAGES/hello_plural.mo
-- samples/locale/de/LC_MESSAGES/hello_tk.mo
-- samples/locale/de/LC_MESSAGES/hello_noop.mo
-- samples/locale/de/LC_MESSAGES/hello.mo
-- samples/locale/nl/LC_MESSAGES/hello_gtk.mo
-- samples/locale/nl/LC_MESSAGES/hello_glade2.mo
-- samples/locale/nl/LC_MESSAGES/hello2.mo
-- samples/locale/nl/LC_MESSAGES/hello_plural.mo
-- samples/locale/nl/LC_MESSAGES/hello_tk.mo
-- samples/locale/nl/LC_MESSAGES/hello_noop.mo
-- samples/locale/nl/LC_MESSAGES/hello.mo
-- samples/locale/fr/LC_MESSAGES/hello_gtk.mo
-- samples/locale/fr/LC_MESSAGES/hello_glade2.mo
-- samples/locale/fr/LC_MESSAGES/hello2.mo
-- samples/locale/fr/LC_MESSAGES/hello_plural.mo
-- samples/locale/fr/LC_MESSAGES/hello_tk.mo
-- samples/locale/fr/LC_MESSAGES/hello_noop.mo
-- samples/locale/fr/LC_MESSAGES/hello.mo
-- samples/hello_glade2.glade
-- samples/README
-- samples/po/ru/hello_glade2.po
-- samples/po/ru/hello_noop.po
-- samples/po/ru/hello_plural.po
-- samples/po/ru/hello_gtk.po
-- samples/po/ru/hello2.po
-- samples/po/ru/hello.po
-- samples/po/ru/hello_tk.po
-- samples/po/el/hello_glade2.po
-- samples/po/el/hello_noop.po
-- samples/po/el/hello_plural.po
-- samples/po/el/hello_gtk.po
-- samples/po/el/hello2.po
-- samples/po/el/hello.po
-- samples/po/el/hello_tk.po
-- samples/po/ko/hello_glade2.po
-- samples/po/ko/hello_noop.po
-- samples/po/ko/hello_plural.po
-- samples/po/ko/hello_gtk.po
-- samples/po/ko/hello2.po
-- samples/po/ko/hello.po
-- samples/po/ko/hello_tk.po
-- samples/po/ja/hello_glade2.po
-- samples/po/ja/hello_noop.po
-- samples/po/ja/hello_plural.po
-- samples/po/ja/hello_gtk.po
-- samples/po/ja/hello2.po
-- samples/po/ja/hello.po
-- samples/po/ja/hello_tk.po
-- samples/po/hello_tk.pot
-- samples/po/sr/hello_glade2.po
-- samples/po/sr/hello_noop.po
-- samples/po/sr/hello_plural.po
-- samples/po/sr/hello_gtk.po
-- samples/po/sr/hello2.po
-- samples/po/sr/hello.po
-- samples/po/sr/hello_tk.po
-- samples/po/sv/hello_glade2.po
-- samples/po/sv/hello_noop.po
-- samples/po/sv/hello_plural.po
-- samples/po/sv/hello_gtk.po
-- samples/po/sv/hello2.po
-- samples/po/sv/hello.po
-- samples/po/sv/hello_tk.po
-- samples/po/eo/hello_glade2.po
-- samples/po/eo/hello_noop.po
-- samples/po/eo/hello_plural.po
-- samples/po/eo/hello_gtk.po
-- samples/po/eo/hello2.po
-- samples/po/eo/hello.po
-- samples/po/eo/hello_tk.po
-- samples/po/bs/hello_glade2.po
-- samples/po/bs/hello_noop.po
-- samples/po/bs/hello_plural.po
-- samples/po/bs/hello_gtk.po
-- samples/po/bs/hello2.po
-- samples/po/bs/hello.po
-- samples/po/bs/hello_tk.po
-- samples/po/hello_glade2.pot
-- samples/po/zh/hello_glade2.po
-- samples/po/zh/hello_noop.po
-- samples/po/zh/hello_plural.po
-- samples/po/zh/hello_gtk.po
-- samples/po/zh/hello2.po
-- samples/po/zh/hello.po
-- samples/po/zh/hello_tk.po
-- samples/po/vi/hello_glade2.po
-- samples/po/vi/hello_noop.po
-- samples/po/vi/hello_plural.po
-- samples/po/vi/hello_gtk.po
-- samples/po/vi/hello2.po
-- samples/po/vi/hello.po
-- samples/po/vi/hello_tk.po
-- samples/po/test.rb
-- samples/po/hello_noop.pot
-- samples/po/it/hello_glade2.po
-- samples/po/it/hello_noop.po
-- samples/po/it/hello_plural.po
-- samples/po/it/hello_gtk.po
-- samples/po/it/hello2.po
-- samples/po/it/hello.po
-- samples/po/it/hello_tk.po
-- samples/po/zh_TW/hello_glade2.po
-- samples/po/zh_TW/hello_noop.po
-- samples/po/zh_TW/hello_plural.po
-- samples/po/zh_TW/hello_gtk.po
-- samples/po/zh_TW/hello2.po
-- samples/po/zh_TW/hello.po
-- samples/po/zh_TW/hello_tk.po
-- samples/po/nb/hello_glade2.po
-- samples/po/nb/hello_noop.po
-- samples/po/nb/hello_plural.po
-- samples/po/nb/hello_gtk.po
-- samples/po/nb/hello2.po
-- samples/po/nb/hello.po
-- samples/po/nb/hello_tk.po
-- samples/po/ua/hello_glade2.po
-- samples/po/ua/hello_noop.po
-- samples/po/ua/hello_plural.po
-- samples/po/ua/hello_gtk.po
-- samples/po/ua/hello2.po
-- samples/po/ua/hello.po
-- samples/po/ua/hello_tk.po
-- samples/po/es/hello_glade2.po
-- samples/po/es/hello_noop.po
-- samples/po/es/hello_plural.po
-- samples/po/es/hello_gtk.po
-- samples/po/es/hello2.po
-- samples/po/es/hello.po
-- samples/po/es/hello_tk.po
-- samples/po/pt_BR/hello_glade2.po
-- samples/po/pt_BR/hello_noop.po
-- samples/po/pt_BR/hello_plural.po
-- samples/po/pt_BR/hello_gtk.po
-- samples/po/pt_BR/hello2.po
-- samples/po/pt_BR/hello.po
-- samples/po/pt_BR/hello_tk.po
-- samples/po/hello.pot
-- samples/po/hr/hello_glade2.po
-- samples/po/hr/hello_noop.po
-- samples/po/hr/hello_plural.po
-- samples/po/hr/hello_gtk.po
-- samples/po/hr/hello2.po
-- samples/po/hr/hello.po
-- samples/po/hr/hello_tk.po
-- samples/po/cs/hello_glade2.po
-- samples/po/cs/hello_noop.po
-- samples/po/cs/hello_plural.po
-- samples/po/cs/hello_gtk.po
-- samples/po/cs/hello2.po
-- samples/po/cs/hello.po
-- samples/po/cs/hello_tk.po
-- samples/po/hello_gtk.pot
-- samples/po/ca/hello_glade2.po
-- samples/po/ca/hello_noop.po
-- samples/po/ca/hello_plural.po
-- samples/po/ca/hello_gtk.po
-- samples/po/ca/hello2.po
-- samples/po/ca/hello.po
-- samples/po/ca/hello_tk.po
-- samples/po/hello_plural.pot
-- samples/po/hu/hello_glade2.po
-- samples/po/hu/hello_noop.po
-- samples/po/hu/hello_plural.po
-- samples/po/hu/hello_gtk.po
-- samples/po/hu/hello2.po
-- samples/po/hu/hello.po
-- samples/po/hu/hello_tk.po
-- samples/po/bg/hello_glade2.po
-- samples/po/bg/hello_noop.po
-- samples/po/bg/hello_plural.po
-- samples/po/bg/hello_gtk.po
-- samples/po/bg/hello2.po
-- samples/po/bg/hello.po
-- samples/po/bg/hello_tk.po
-- samples/po/lv/hello_glade2.po
-- samples/po/lv/hello_noop.po
-- samples/po/lv/hello_plural.po
-- samples/po/lv/hello_gtk.po
-- samples/po/lv/hello2.po
-- samples/po/lv/hello.po
-- samples/po/lv/hello_tk.po
-- samples/po/de/hello_glade2.po
-- samples/po/de/hello_noop.po
-- samples/po/de/hello_plural.po
-- samples/po/de/hello_gtk.po
-- samples/po/de/hello2.po
-- samples/po/de/hello.po
-- samples/po/de/hello_tk.po
-- samples/po/nl/hello_glade2.po
-- samples/po/nl/hello_noop.po
-- samples/po/nl/hello_plural.po
-- samples/po/nl/hello_gtk.po
-- samples/po/nl/hello2.po
-- samples/po/nl/hello.po
-- samples/po/nl/hello_tk.po
-- samples/po/hello2.pot
-- samples/po/fr/hello_glade2.po
-- samples/po/fr/hello_noop.po
-- samples/po/fr/hello_plural.po
-- samples/po/fr/hello_gtk.po
-- samples/po/fr/hello2.po
-- samples/po/fr/hello.po
-- samples/po/fr/hello_tk.po
-- samples/hello.rb
-has_rdoc: true
-homepage: http://gettext.rubyforge.org/
-licenses: []
-
-post_install_message:
-rdoc_options: []
-
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: gettext
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: Ruby-GetText-Package is a libary and tools to localize messages.
-test_files: []
-
diff --git a/vendor/gems/gettext-2.1.0/COPYING b/vendor/gems/gettext-2.1.0/COPYING
deleted file mode 100644
index 9043404a8..000000000
--- a/vendor/gems/gettext-2.1.0/COPYING
+++ /dev/null
@@ -1,56 +0,0 @@
-Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
-You can redistribute it and/or modify it under either the terms of the GPL
-version 2 (see the file GPL), or the conditions below:
-
- 1. You may make and give away verbatim copies of the source form of the
- software without restriction, provided that you duplicate all of the
- original copyright notices and associated disclaimers.
-
- 2. You may modify your copy of the software in any way, provided that
- you do at least ONE of the following:
-
- a) place your modifications in the Public Domain or otherwise
- make them Freely Available, such as by posting said
- modifications to Usenet or an equivalent medium, or by allowing
- the author to include your modifications in the software.
-
- b) use the modified software only within your corporation or
- organization.
-
- c) give non-standard binaries non-standard names, with
- instructions on where to get the original software distribution.
-
- d) make other distribution arrangements with the author.
-
- 3. You may distribute the software in object code or binary form,
- provided that you do at least ONE of the following:
-
- a) distribute the binaries and library files of the software,
- together with instructions (in the manual page or equivalent)
- on where to get the original distribution.
-
- b) accompany the distribution with the machine-readable source of
- the software.
-
- c) give non-standard binaries non-standard names, with
- instructions on where to get the original software distribution.
-
- d) make other distribution arrangements with the author.
-
- 4. You may modify and include the part of the software into any other
- software (possibly commercial). But some files in the distribution
- are not written by the author, so that they are not under these terms.
-
- For the list of those files and their copying conditions, see the
- file LEGAL.
-
- 5. The scripts and library files supplied as input to or produced as
- output from the software do not automatically fall under the
- copyright of the software, but belong to whomever generated them,
- and may be sold commercially, and may be aggregated with this
- software.
-
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
diff --git a/vendor/gems/gettext-2.1.0/ChangeLog b/vendor/gems/gettext-2.1.0/ChangeLog
deleted file mode 100644
index 90971463f..000000000
--- a/vendor/gems/gettext-2.1.0/ChangeLog
+++ /dev/null
@@ -1,78 +0,0 @@
-= Ruby-GetText-Package-2.1.0 (2009-11-11)
- * Implemented parsing of translator comments (GNU gettext feature)
- [by Vladimir Dobriakov]
- * Refactor the directory structure.
- * Move files for runtime to lib/gettext/runtime/*.
- * Move files for development(rgettext/rmsgfmt) to
- lib/gettext/tools/*.
- * Refactor parsers for po. po-message object is defined as GetText::PoMessage
- class. [by Vladimir Dobriakov, Masao Mutoh]
- * Speed up when lots of objects are created to share the textdomain in each
- objects. [Reported by Gaël Séchaud.]
- * Fix "%{foo.bar}" %{"foo.bar".to_sym => "a"} doesn't work.
- [Bug#26663, Reported by Danilo Castilho]
- * lib/gettext.rb: Fixed to work unless gem. [Reported by Vladimir Dobriakov]
- * Fixed a wrong String literal in a CGI sample.
- [Bug #26531, by Eugene Mikhailov]
- * Update license information(explicit to use ruby's or LGPL).
- [Pointed out by Masateru Yoshikawa]
- * Code cleanup.
- * Update minor version.
-
-= Ruby-GetText-Package-2.0.4 (2009-05-23)
- * Fix String#% return nil when the string have no place holders. [by okkez]
- * Update pofiles and remove old messages.
- * suppress some warnings on Ruby 1.9.x. [by Nobuhiro IMAI]
- * Fix not to run tests on Win32.
-
-= Ruby-GetText-Package-2.0.3 (2009-05-09)
- * Fixed the dependencies. [Reported by Hans de Graaff]
-
-= Ruby-GetText-Package-2.0.2 (2009-05-04)
- * Support ruby-1.9.1 style format string such as %<foo>d.
- * Apply new Locale.set_app_language_tags and Locale.candidates.
- [Suggested by Vladimir Dobriakov]
- * Enhance to support ruby-1.9.x [by OZAWA Sakuro]
- * poparser work with proper encoding.
- * string.rb: #bytesize alias to #size in older ruby version such as 1.8.5.
- * Fixed bugs
- * n_() to work when Plural-Forms line in po-file is not correct.
- [Reported by Sava Chankov (Bug#25570)]
- * GetText::Locale.default_rules_path : $LOAD_PATH is not well parsed.
- [by hallelujah]
- * locale_path.rb: Fixed warning message.
-
-Thanks to:
- hallelujah, Sava Chankov, OZAWA Sakuro, Vladimir Dobriakov
-
-= Ruby-GetText-Package-2.0.1 (2009-04-17)
- * Fixed bugs
- * doesn't work with ruby-1.8.5. [Reported by Dan Coutu]
- * GetText.locale= can't keep the locale. [Reported by Adam Ilan]
- * Break backward compatibility of bindtextdomain
- [Reported by Mamoru Tasaka(#24947), Mathieu Blondel]
- * Other trivial fixes/improvement.
- * 1.8 times faster than 2.0.0.
- * GetText::LocalePath is separated from GetText::TextDomainManager.
- Improve to find the locale path.
- * Enhance to support ruby-1.9.x [by OZAWA Sakuro]
-
-Thanks to:
- OZAWA Sakuro, Tietew, Adam Ilan, Mamoru Tasaka, Mathieu Blondel.
-
-= Ruby-GetText-Package-2.0.0 (2009-03-21)
- * Separate this library to locale and rails-support to locale,
- locale_rails, gettext_activerecord, gettext_rails.
- * Depends on locale(ruby-locale).
- * Removes to support rails.
- * A lot of referctoring, improvements.
- * Thread safe.
- * New APIs for gettext/tools instead of gettext/utils.
- * Move to github.com.
-
-Special Thanks to:
- Michael Grosser: A lot of improvement.
-
-Thanks to:
- Tietew, Kazuhiro NISHIYAMA, Fabio M.A.
- Tuptus, Morus Walter, Vladimir Dobriakov, Ramsey.
diff --git a/vendor/gems/gettext-2.1.0/ChangeLog-1 b/vendor/gems/gettext-2.1.0/ChangeLog-1
deleted file mode 100644
index c31d9b313..000000000
--- a/vendor/gems/gettext-2.1.0/ChangeLog-1
+++ /dev/null
@@ -1,2016 +0,0 @@
-(OBSOLETE: Move to ChangeLog since 2.0.0)
-
-2009-02-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * bin/*: Apply all changes.
-
-2009-02-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/ruby.rb: Removed "\000" of plural messages.
-
-2009-01-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails_compat.rb, container.rb: Removed.
- * lib/gettext/erb.rb: Removed.
- * samples/cgi/*.cgi: Updated.
- * test/test_parser.rb: Removed the part of active_record.
-
-2009-01-17 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README, *: Remove files for rails. They will move to gettext_rails.
-
-2008-12-31 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/*.rb: Reimplemented.
- * lib/gettext/tools.rb: Added for replacing lib/gettext/utils.rb
- * lib/gettext/utils.rb: Deprecated. Use tools.rb instead.
- * lib/gettext/tools/rgettext.rb, rmsgfmt.rb: Move from
- lib/gettext/rgettext.rb, rmsgfmt.rb.
-
-2008-12-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Reimplemented.
- * lib/gettext/textdomain_manager.rb: Reimplemented.
- * lib/gettext/class_info.rb: Move from lib/gettext.rb.
- * lib/gettext/core_ext/string.rb, iconv.rb:
- Move from lib/gettext/string.rb, iconv.rb.
-
-2008-12-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/textdomain.rb: Reimplemented.
-
-2008-12-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/mofile.rb: Rename mo.rb to mofile.rb.
-
-2008-12-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale.rb, lib/locale/*: Removed(Move to locale.rubyforge.org).
-
-2008-12-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/de/rails.po, po/ru/rails.po: Improve translations.
- By Vladimir Dobriakov
-
-2008-12-01 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/ruby.rb: exit 1 if it occurs parsing error.
- Reported by Morus Walter.
-
-2008-11-13 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed error_messages_for with Array argument.
- By Tuptus.
-
-2008-11-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed GetText::Rails::normalized_locale returns
- wrong value. Bug#22651. Reported by Fabio M.A.
- * test/test_rails.rb: Add the test for normalized_locale.
-
-2008-10-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed (before|after)_init_gettext to work under
- production mode. Reported by Kazuhiro NISHIYAMA.
-
-2008-09-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed expire_fragment with rails < 2.1.(Bug#21712).
- * lib/gettext.rb: Remove p_ method when xx("double x") library is loaded
- because of conflicting the method name.(Bug#21532) Reported by
- Rémy-Christophe Schermesser, Donald Piret.
- * lib/gettext/utils.rb: Remove UTF-8 BOM from po-file before executeing
- msgmerge which doesn't accept BOM. Suggested by César Duque Calle.
- * po/eo/rgettext.po: Fixed a typo.
-
-2008-09-13 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/utils.rb: Use msgmerge --help instead of --version to
- check msgmerge is existed. Suggested by César Duque Calle.
- * **/po/bg/*.po: Added by Sava Chankov.
-
-2008-08-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: render_file_with_gettext catch Exception and use
- render_file_without_gettext if render_file_with_gettext is failed.
- Suggested by Vladimir Dobriakov.
-
- * lib/locale/posix.rb: Call "locale charmap" to get the system locale charset.
- Reported by Tatsuki Sugiura.
-
-2008-08-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/object.rb: Locale::Object.parse accept nil or "" as locale_name.
- It replaces to "en". By Vladimir Dobriakov.
- * test/test_locale.rb: Add the test above.
-
-2008-08-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/ja/rails.po: Fixed a wrong translation.
-
-2008-08-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/et/rails.po: Updated by Erkki Eilonen.
- * po/et/rgettext.po: Added by Erkki Eilonen.
-
-2008-08-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README: Updated.
- * po/fr/*.po: Updated by Vincent Isambart.
- * test/test_gettext.rb, test/testlib/npgettext.rb, test/po/ja/test_npgettext.po:
- Add test for np_(npgettext).
-
-2008-08-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rgettext.rb, lib/gettext/parser/ruby.rb:
- Add npgettext support.
-
-2008-07-31 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Works on rails-2.0.2 again.
-
-2008-07-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/poparser.ry: msgctxt/pgettext support.
- * test/test_gettext.rb: Add pgettext test.
-
-2008-07-26 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/utils.rb: Improve create_mofiles to show the file which has errors.
- * lib/gettext/parser/ruby.rb,
- lib/gettext/rgettext.rb: msgctxt/pgettext support.
- * test/testlib/pgettext.rb, test/po/ja/test_pgettext.po: Added for msgctxt/pgettext.
- * **/po/lv/*.po: Added lv locales by Aivars Akots.
-
-2008-07-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed render_partial localization.
- (Localize ActionView::TemplateFinder#pick_template) [Bug #20248]
- * test/rails/config/boot.rb, environment.rb: Follow rails-2.1.0.
- * test/rails/app/views/articles/_form_fr.html.erb: Added for
- render_partial.
- * test/rails/test/result/fr/new.html: Ditto.
- * samples/rails/*: Update to rails-2.1.0.
-
-2008-07-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/test_active_record.rb: Add tests for activerecord-2.1.0.
-
-2008-07-17 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: validates_(format|inclusion)_of accepts %{val} as the value
- (ex)
- User.validates_inclusion_of :name, :in => %w(a, b), :message => N_("%{fn} can't be %{val}")
- * test/test_active_record.rb: Added test for rails-2.1.0.
- * lib/gettext/active_record.rb: Works localization with ActiveRecord::Errors#[]
- * po/el/rails.po, rgettext.po: Updated by damphyr.
- * po/ca/rails.po, rgettext.po: Updated by Ramon Salvadó.
- * **/po/**/ua/*.po: Updated by Alex Rootoff.
-
-2008-07-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/hu/rails.po, rgettext.po: Updated by Tamás Tompa.
- * po/zh/rails.po, rgettext.po: Updated by Yang Bob.
- * po/zh_TW/rails.po, rgettext.po: Updated by Yang Bob.
- * test/fixtures/wizard.rb, inept_wizard.rb: Added.
-
-2008-07-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README: Updated.
- * lib/gettext/parser/active_record.rb: Support ActiveRecord::Base.abstract_class.
- * po/pt_BR/rails.po, rgettext.po: Updated by Antonio S. de A. Terceiro.
- * po/es/rails.po: Updated by David Espada.
- * **/po/**/nb/*.po: Updated by Runar Ingebrigtsen.
-
-2008-07-13 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/ru/rails.po, rgettext.po: Updated by Yuri Kozlov.
- * po/de/rails.po, rgettext.po: Updated by Patrick Lenz.
- * po/eo/rails.po, rgettext.po: Updated by Malte Milatz.
- * po/vi/rails.po, rgettext.po: Updated by Ngoc DAO Thanh.
- * po/es/rgettext.po: Updated by David Espada.
- * po/ja/rgettext.po: Updated.
-
-2008-07-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/test_active_record.rb, test/fixtures/people.yml, warehouse-thing.rb:
- Add rails-2.1.0 tests.
- (ValidationsTest::test_validate_uniqueness_with_non_standard_table_names):
-
- * po/ja/rails.po: Apply rails-2.1.0 messages.
-
-2008-07-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed ActionController::Caching::Fragments.expire_fragment
- to work with rails-2.1.0 by Loiseleur Michel.
- * lib/gettext/active_record.rb: Added validation options for activerecord-2.1.0.
- (:greater_than, :greater_than_or_equal_to, :equal_to, :less_than, :less_than_or_equal_to,
- :odd, :even)
- * test/*: Apply rails-2.1.0.
-
-2008-06-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Works with rails-2.1.0.
- Reported by Andreas Neuhaus(Bug #17990)
-
-
-2008-06-28 Masao Mutoh <mutoh@highway.ne.jp>
-
- * bin/*: Fixed shebang line. (Bug: #20150)
-
-2008-06-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Fixed cache algorithm of bound_targets again.
-
-2008-06-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/mo.rb: Support revision 1 of mo-file format.
- * lib/gettext/mo.rb, test/test_gettext.rb:
- Freeze msgstrs by Tatsuki Sugiura (Bug: #19193)
- * **/po/sr/*.po: Replace sr locales to Cyrillic script
- from Latin script by Slobodan Paunović.
-
-2008-05-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README: update to support Rails-1.2.x to Rails-2.0.x(Rails-1.2.x aren't
- not supported now). Reported by Hans de Graaff.
-
-2008-05-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Localize ActionView::Helpers::FormBuilder#label.
- The idea from craccho (http://d.hatena.ne.jp/craccho/20071211/1197398747).
- * lib/gettext/version.rb: Increment minor version.
- * README, **/po/sr/*.po: Added sr locales by Slobodan Paunović.
- * NEWS: Updated.
-
-2008-05-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/utils.rb: Check msgmerge command is existed. And show error
- messages more helpful.
-
-2008-05-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/test_locale.rb: Removed the condition for OpenBSD
- by Bernd Ahlers.
- * lib/gettext.rb: Fixed that bindtextdomain doesn't work on toplevel.
- Reported by Tatsuki Sugiura (Bug: #19056).
- * test/test_gettext.rb: Follow the change.
- * test/test_gettext_toplevel.rb: Added.
-
-2008-05-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Add GetText.remove_all_textdomains for testing.
- inspired a test code by Tatsuki Sugiura (Bug #19056)
- * lib/gettext/active_record.rb, test/test_active_record.rb:
- Fixed validates_length_of by Karl Palmskog (Bug: #19761)
-
-2008-04-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/test_gettext.rb, lib/gettext.rb, lib/gettext/textdomain.rb,
- lib/gettext/rails.rb: Fixed distance_of_time_in_words. Reported by Dao Ngoc (Bug: #17808)
- * po/*/rails.po: Updated.
-
-2008-04-13 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb, lib/gettext/textdomain.rb: Fixed memory leaks.
- Reported by Simone Carletti(#18392)
-
-2008-03-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/win32.rb, win32_table.rb, jruby.rb: Rename SystemWin32Table to
- SystemWin32 again. Reported by Locomotyphus (Bug: #18938)
-
-2008-02-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/ja/rails.po: Revised. Reported by Paul Clegg.
-
-2008-01-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/win32.rb, win32_table.rb: Rename SystemWin32Table to SystemWin32.
- * samples/cgi/http.rb, index.cgi: Works on Windows.
-
-2008-01-28 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Fixed GetText.output_charset to return current
- locale's charset not nil.
- Fixed to work with JRuby.(Bug: http://jira.codehaus.org/browse/JRUBY-1281)
-
-2008-01-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/string.rb: String#% doesn't raise an ArgumentError in Debug mode.
- Because String#% method shouldn't raise ArgumentError in Debug mode.
- * lib/gettext/rgettext.rb: rgettext fixed to work with similer messages in n_().
- Reported by Toine Diepstraten.
- * samples/cgi/*: Works again. Set CGI object explicit.
- * lib/gettext/textdomainmanager.rb: GetText::TextDomainManager.output_charset returns
- system locale when nil is set.
-
-2008-01-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/object.rb: Speedup (cache messages and object hash value)
-
-2008-01-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Fixed to reload messages in debug mode
- (development mode in rails). Reported by Reynard,
- Ernesto Jiménez Caballero
-
-2008-01-19 Masao Mutoh <mutoh@highway.ne.jp>
-
- * **/po/hu/*.po: Added hu locales by Tamás Tompa.
- * Rakefile: Add deploypo task(for me).
-
-2008-01-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/win32.rb: Removed duplicated function.
-
-2008-01-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/*: Rewrite to work on Rails-2.0.
- * lib/gettext/string.rb: Raises ArgumentError when the format are wrong.
- Bug #16959 by Stephan.
-
-2007-12-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed an error when expire_fragment_with_gettext
- is called with the name as a Regexp object.Bug #12803 by Hans de Graaff.
-
-2007-12-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * **/po/ua/*.po: Added ua locales by Alex Rootoff.
-
-2007-12-16 Masao Mutoh <mutoh@highway.ne.jp>
- * NEWS: Updated.
- * README: Updated.
-
-2007-12-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/rails/*: Updated to work with Rails-2.0.
- Add the test for custom error messages/titles.
- * lib/gettext/rails.rb: Fixed
- ActionView::Helpers::ActiveRecordHelper::L10n::error_messages_for
- that plural messages didn't translated.
- ActionView::Helpers::ActiveRecordHelper.error_messages_for can accept
- :message_title, :message_explanation as the error dialog messages.
- You can set the error dialog messages in the each pages.
- Add GetText::Rails.normalized_locale.
-
-2007-12-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Add GetText::Rails::available_locales.
- It returns the locales in RAILS_ROOT/locale directory.
- fragment_cache_key_with_gettext and expire_fragment_with_gettext uses
- GetText::Rails::available_locales to select the current locale string.
- The cache files are created for available locales only.
-
-2007-11-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Fix to work :charset option.
- [Bug #15513] Reoported by boud indymedia.
- * lib/gettext/mo.rb: Works with JRuby.
-
-2007-11-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/cgi.rb: Removed Locale::SystemCGI.default=, set_default.
- * lib/locale/win32_table.rb: Rename SystemWin32 to SystemWin32Table.
- * lib/locale/win32.rb, win32_table.rb: Move get_charset to win32_table.rb.
- * lib/locale/jruby.rb: Require win32_table.rb on Win32.
- * lib/locale/base.rb: Added as the common module of other LocaleSystem classes.
- * lib/locale/posix.rb, win32.rb, jruby.rb, cgi.rb: Require locale/base.rb.
- And Remove the common methods.
-
-2007-11-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/iconv.rb: Support JRuby.
- * lib/locale/jruby.rb: Added. Support JRuby.
- * test/*.rb: Rename files.
- * lib/locale/object.rb: Add fallback attribute(a fallback locale).
- * ext/*: Removed.
- * Rakefile: Remove tasks for ext.
- * lib/locale/win32.rb: Removed Locale::SystemWin32.set_default_locale,
- default_locale=, default_locale.
- Use Win32API instead of locale_system.so.
- * lib/locale/posix.rb: Removed Locale::SystemPosix.get_charset, .set_default_locale
- default_locale=, default_locale and all LC types.
- Now Posix localed doesn't depend on locale_system.so.
- # UTF-8 is set as the default charset.
- * lib/gettext/locale.rb: Move to lib/locale.rb. Now locale class starts to
- prepare to be separated from gettext.
- * lib/gettext/locale_*.rb: Move to lib/locale/*.rb. Removed deprecated methods.
- * Start preparing to release 2.0.
- - System locales become "read only"(Locale module keeps the current
- locale).
- - Don't depend locale_system.so.
-
-2007-08-01 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/utils.rb: Raise exception when msgmerge aren't found.
- And show error message more helpful. Reported by Vít Ondruch (Bug#12737)
- * lib/gettext/parser/erb.rb: Add ".erb" as the extname.
- Reported by Andreas Neuhaus (Bug#12721)
- * test/gettext_benchmark.rb: Added.
-
-2007-07-29 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Replace .keys.include? to .has_key? to reduce
- CPU usage and speed up. Reported by olivier ruffin.
-
-2007-07-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_cgi.rb: Fixed to break rails(r7116).
- Reported by OZAWA Sakuro.
-
-2007-07-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Fixed to support anonymous classes/modules, again.
-
-2007-07-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Support anonymous classes/modules.
- Pointed out by Yaohan Chen.
- * test/gettext_test.rb: Add test for anonmous classes/modules.
-
-2007-07-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README, Rakefile: Add RDoc support.
-
-2007-07-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Add to support Action/Fragment caching.
- * test/gettext_test_rails_caching.rb, test.sh: Added the test for caching.
- * NEWS: Updated.
-
-2007-07-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/poparser.ry, lib/gettext/poparser.rb:
- Fixed a bug of previous change.
-
-2007-07-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * NEWS: Updated.
- * lib/gettext/version.rb: Increment minor version.
- * lib/gettext/active_record.rb: Work with script/generate
- scaffold_resource. Reported by Bart ten Brinke(Bug#8308)
- * lib/gettext/utils.rb: On the Win32 default environment,
- use "msgmerge" program provided by Ruby-GNOME2 Win32 Installer.
- * lib/gettext/locale_win32.rb: Fix to find a charset from a locale.
-
-2007-07-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb:error_messages_for accept plural models.
- Reported by Florian Hufsky.
- Fixed set_error_message_title|explanation.
- * test/rails/app/model/users.rb, test/rails/test/*: Add tests for
- error_messages_for with plural models.
- * lib/gettext/parser/active_record.rb:
- remove to require 'application.rb' to avoid the effect
- of application.rb when parse models. Pointed out by Michel Loiseleur.
- * po/ca/rails.po: Updated by Ramon Salvadテウ.
- * src/poparser.ry, lib/gettext/poparser.rb: Don't append
- msgids/msgstrs if the msgstrs don't set.
- * lib/gettext.rb, lib/gettext/parser/ruby.rb:
- Added GetText.nsgettext, ns_. This method has n_ + s_ function.
- (e.g.) ns_("File|A file", "%{num} files", i).
- * test/test_nsgettext.rb, test/po/ja/test_nsgettext.po: Added for
- the test ns_(), nsgettext.
- * lib/gettext/rgettext.rb: Normalize msgids.
- _("Foo") and n_("Foo", "Foos", i) become same msgid "Foo\000Foos".
- This is the same behavior with xgettext.
- Reported by Sava Chankov.
- * lib/gettext/textdomain.rb: Follow above changes.
- _("Foo") matches the single msgid of n_("Foo", "Foos", i).
-
-2007-06-29 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Add GetText.cached=, .cached?, clear_cache.
- messages are cached in default. If the value is false
- or $DEBUG = true then messages are not cached.
- _ and n_ become 1.2-1.9 times faster than older versions.
- * lib/gettext/textdomain.rb, rails.rb: follow the changes
- below.
-
-2007-06-28 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README: Updated.
- * po/vi/rails.po: Updated by Ngoc Dao.
- * po/(zh|zh_TW)/rails.po: Updated by Yang Bob.
-
-2007-06-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/nl/rails.po: Updated by Menno Jonker
- * po/(bs|hr)/rails.po: Updated by Sanjin Sehic.
- * po/pt_BR/rails.po: Updated by Joao Pedrosa.
- * po/eo/rails.po: Updated by Malte Milatz.
- * po/de/rails.po: Updated by Patrick Lenz.
- * po/fr/rgettext.po, rails.po: Updated by David Sulc.
- * po/et/rails.po: Updated by Erkki Eilonen .
- *
-2007-06-26 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/rails/*: Added tests for ActionMailer.
-
-2007-04-17 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/rails/* : Added tests for rails.
-
-2007-04-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: TestRequest#cgi returns GetTextMockGGI, not CGI.
-
-2007-04-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: Work ActiveRecord::Base::Validation
- with non ActiveRecord::Base object again. Reported by Maksim Bartenev.
- * test/gettext_test_activerecord.rb: Add a test for the above change.
-
-2007-04-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * **/po/nb/*.po: Added nb locales by Runar Ingebrigtsen.
-
-2007-03-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * **/po/(bs|hr)/*.po: Added bs/hr locales by Sanjin Sehic.
-
-2007-03-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * **/po/vi/*.po: Added vi locale by Ngoc Dao.
-
-2007-02-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails_compat.rb: Added for Rails-1.1.6.
- (Works with both Rails-1.1.6 and 1.2.2)
-
-2007-02-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/nl/rails.po: Fixed wrong translations.
- Reported by Bart ten Brinke [Bug #8449]
-
-2007-01-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/nl/rails.po: Fixed wrong translations.
- Reported by Dirkjan Bussink
-
-2007-01-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: Fixed #columns again.
- [Feature Requests #7428]
-
-2007-01-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * NEWS: Updated.
- * lib/gettext/active_record.rb: Use alias_method_chain not to
- override original methods directly(again). [Feature Requests #7428]
- * test/gettext_test_parser.rb: Add tests for activerecord parser.
- * lib/gettext/rails.rb: Require action_controller instead of activesupport
- for Rails-1.2.1.
- * po/el/*.po: Updated by Vassilis Rizopoulos.
- * po/ja/rails.po: Fixed typos by NANKI Haruo.
-
-2007-01-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/active_record.rb: Don't duplicate "file:-".
-
-2007-01-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: Use alias_method_chain not to
- override original methods directly. [Feature Requests #7428]
- * test/gettext_test_active_record.rb: Update to work Rails-1.2RC2.
-
-2006-12-26 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/zh/*.po, po/zh_TW/*.po: Updated by Yang Bob.
-
-2006-12-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/po/eo/blog.po: Fixed some typos by Malte Milatz.
-
-2006-12-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * **/po/ca/*.po: Added ca(Catalan) locale by Ramon Salvad蝮ヲ.
-
-2006-12-17 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/cs/*.po: Updated by Karel Miarka.
- * **/po/eo/*.po: Added eo(Esperanto) locale by Malte Milatz.
-
-2006-12-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/ko/*.po: Updated by Gyoung-Yoon Noh.
-
-2006-12-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/de/*.po: Updated by Patrick Lenz.
- * po/nl/*.po: Updated by Menno Jonkers.
- * po/es/*.po: Updated by David Espada.
-
-2006-12-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/pt_BR/*.po: Updated by Joao Pedrosa.
- * po/ru/*.po: Updated by Yuri Kozlov.
- * po/ja/*.po: Updated.
-
-2006-12-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rgettext.rb: Improve option messages.
-
-2006-12-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/erb.rb: Removed the dependency to GetText::Container which was
- deprecated.
-
-2006-12-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/poparser.rb: Added.
-
-2006-12-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Changed GetText.locale= to set not only current locale
- to all Textdomains but also default locale.
- * lib/gettext/locale.rb: Locale.set_default accept locale as String.
- * test/gettext_test_active_record.rb: Update to test activerecord-1.14.4.6657.
-
-2006-12-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Unit test works on 1.2RC1. Reported by KAKUTANI Shintaro.
- * lib/gettext.rb: Updates default locale when using GetText.set_locale_all
- * po/**/rails.po[t]: Updated.
-
-2006-11-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fix the deprecated accessing to instance variables
- directly for rails 1.2RC1.
-
-2006-11-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/utils.rb: Skip to create new po-files.
- It avoids the po-files become empty when GNU msgmerge was failed.
- By Fabian Kreutz.
-
-2006-10-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/fr/rails.po: Improved by David Sulc.
-
-2006-10-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/active_record.rb: Work updatepo task with rails_edge.
-
-2006-10-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/active_record.rb: Fixed an error using hbtm.
- Reported by Mihnea Capraru.
-
-2006-10-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README, lib/gettext/rgettext.rb: Changed the author e-mail address.
-
-2006-09-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: Re-fix to work rails_edge again.
- Reported by Isak Hansen.
- * po/pt_BR/rails.po: Updated by Antonio S. de A. Terceiro.
-
-2006-09-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed a bug init_gettext can't accept
- any options correctly and locale_path was set wrong value.
- Reported by pedro palazon.
-
-2006-09-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/textdomain.rb: Fixed a bug of add_default_locale_path.
- * lib/gettext/parser/ruby.rb: Improve to output error messages.
-
-2006-09-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: Works rails_edge again.
- Reported by Donald Piret. (http://dev.rubyonrails.org/ticket/5810)
-
-2006-09-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_cgi.rb, locale_object.rb: Speed up.
- * lib/gettext.rb: Fixed to extract correct textdomains in each_textdomain.
-
-2006-09-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README, NEWS: Updated.
-
-2006-09-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rgettext.rb: Raise error when parsing was failed.
- * lib/gettext.rb: GetText.locale= is the alias of GetText.set_locale_all instead
- of GetText.set_locale.
- * test/gettext_test_active_record.rb: Added tests.
- * test/fixtures/*.rb: updated.
- * test/po/active_record.pot, test/po/ja/active_record.po: updated.
-
-2006-09-01 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_active_record.rb: Added tests.
-
-2006-08-31 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: Fix the custom messages of validates_length_of
- with :too_long, :too_short, :wrong_length.
-
-2006-08-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/Rakefile, test/db/*sql: Added.
-
-2006-08-29 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_active_record.rb, test/fixtures/*, test/po/active_record.pot,
- test/po/ja/active_record.po: Added tests for ActiveRecord with GetText.
- * lib/gettext/active_record.rb: Messages updated.
- * po/*/rails.po[t]: ditto.
-
-2006-08-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/db/schema.rb: Added.
- * samples/rails/db/*.sql: Removed. Use rake db:schema:load instead.
- * samples/rails/README: Follow above changes.
- * samples/rails/po/*: Updated.
- * lib/gettext/active_record.rb: Fixed the problem of untranslate(_all).
- Reported by Tsutomu Kuroda.
-
-2006-08-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README: Updated.
- * **/po/zh_TW/*.po: Added zh_TW locale by LIN CHUNG-YI.
-
-2006-08-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/version.rb: Increment minor version.
- * po/et/rails.po: Added Estonian by Erkki Eilonen.
- * README: ditto.
- * lib/gettext/rails.rb: Add ActionController::Base.(before|after)_init_gettext.
-
-2006-08-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/de/rails.po, rgettext.po: Updated by Partick Lenz.
-
-2006-08-13 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale.rb: Add Locale.system_module.
- * lib/gettext/rails.rb: Remove ActionController::Base.textdomainname
- * lib/gettext.rb, lib/gettext/rails.rb, locale_cgi.rb,
- locale_object.rb, string.rb:
- Speed up. Improve CPU usages.
-
-2006-08-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/active_record.rb: Improved to find ActiveRecord class
- by steve dp.
-
-2006-08-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Code clean up.
- * lib/gettext.rb: Code clean up.
- * lib/gettext/active_record.rb: Removed to call bindtextdomain in Validations.
- It's called in bindtextdomain of init_gettext.
- * lib/gettext/parser/active_record.rb: Rename from activerecord.rb.
-
-2006-08-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: Fixed on, error_messages_for.
- by Andreas Neuhaus.
-
-2006-08-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Move bindtextdomain_to to lib/gettext.rb.
- New overrideable callback methods (before|after)_init_gettext(cgi).
- These methods is called on the each WWW request.
- * lib/gettext.rb: Add bindtextdomain_to, textdomain_to.
- * samples/rails/app/controllers/application.rb: Add a sample of
- (before|after)_init_gettext(cgi).
-
-2006-07-29 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rgettext.rb: Added -r, -d options.
- -r is to set an option parser. -d is for debugging mode.
- (e.g.) $ rgettext -r fooparser test.foo
- The idea is from Kobayashi Noritada.
- Fix a trivial bug by Kobayashi Noritada.
-
-2006-07-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/active_record.rb: Separate from rails.rb.
-
-2006-07-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: init_gettext manages plural textdomains.
- bindtextdomain binds a domainname to ActionMailer::Base and ActionView::Base.
-
-2006-07-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: init_gettext finds the locale path with caller
- not RAILS_ROOT now for supporting plugins which has app/controller directory
- such as Rails Engines.
- And init_gettext accepts :locale_path option to be able to set the locale
- path manually.
- * po/pt_BR/rails.po, rgettext.po: Updated by Joao Pedrosa.
-
-2006-07-17 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: bind the textdomain same with ApplictionController
- to the class which includes ActiveRecord::Validations.
-
-2006-07-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Code cleanup.
- ActiveRecord::Base.set_error_message_(title|explanation) have been deprecated.
- Use ActionView::Helpers::ActiveRecordHelper::L10n.set_error_message_(title|explanation)
- instead. Suggested by Kouhei Sutou
- * po/zh/rails.po, rgettext.po: Updated by Yingfeng.
- * NEWS: Updated.
-
-2006-07-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Localize ActiveRecord::Errors#on.
- Now error_message_on is localized.
- Reported by kdmsnr.
-
-2006-07-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/activerecord.rb: Add "untranslate" feature.
- * lib/gettext/rails.rb: ditto. Add ActiveRecord::Base.untranslate
- .untranslate_all, .unstranslate?
- The idea is from Gyoung-Yoon Noh.
-
-2006-07-13 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/nl/rails.po, rgettext.po: Updated by Menno Jonkers.
- * lib/gettext/rails.rb: Support ActiveRecord::Migration.
- Suggested by OZAWA Sakuro.
-
-2006-07-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/ko/rails.po, rgettext.po: Updated by Gyoung-Yoon Noh.
-
-2006-07-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/ru/rails.po, rgettext.po: Updated by Yuri Kozlov.
- * po/fr/rails.po, rgettext.po: Updated by Laurent Sansonetti.
- * po/cs/rails.po, rgettext.po: Updated by Karel Miarka.
-
-2006-07-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/es/rails.po, rgettext.po: Updated by David Espada.
- * lib/gettext/rails.rb: Increment minor version.
- * README: Updated.
-
-2006-06-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fix a problem N_() isn't found in
- ActiveRecord. Reported by arton.
-
-2006-06-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/glade.rb: Show error message correctly.
- * Rakefile: Added src/poparse.ry as the target for updatepo.
- * po/rgettext.pot, po/*/rgettext.po: Updated.
-
-2006-06-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/ruby.rb: Fixed to extract duplicated messages when "\n"
- was used in msgid.
- * lib/gettext/rails.rb, po/rails.pot, po/*/rails.po: Localize
- ActionView::Helpers::DateHelper.distance_of_time_in_words.
- * lib/gettext.rb: Added GetText.current_textdomain_info for debuging.
- * lib/gettext/textdomain.rb: Break if the first mo-file found.
- * lib/gettext/mo.rb: Added to accessor(r) to filename.
-
-2006-06-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/*.rb, samples/po/*: Code cleanup 2.
-
-2006-06-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/version.rb: Increment minor version.
- * lib/gettext/locale_posix.rb: Code cleanup.
- * test/testlib5.rb: Added.
-
-2006-06-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: GetText.set_locale accept 2nd parameter.
- * test/testlib6.rb, test/po/{ja|fr}/test6.po: Added previous test.
- * samples/*.rb, samples/po/*: Code cleanup.
-
-2006-06-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/hello.rb: Code cleanup.
- * lib/gettext/rgettext.rb: Show ruby version with -v option.
- * lib/gettext/rmsgfmt.rb: ditto.
- * lib/gettext/rmsgmerge.rb: ditto.
-
-2006-06-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Fixed a bug when options is set nil.
- * lib/gettext/locale_posix.rb: Fixed the search order of environment
- variables. Reported by markus koller.
- * ext/gettext/locale_system.c: Returns nil if locale is not set.
- * Rakefile: Added makemo task for samples/rails/vendor/plugins/gettext/po.
- * test/gettext_test_multi_textdomain.rb: Added.
-
-2006-05-31 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/vendor/plugins/gettext/lib/gettext_plugin.rb: Rewrite
- to support new bindtextdomain.
- * samples/rails/vendor/plugins/gettext/{po|locale}/*: Move gettext_plugin.{po|mo}
- from samples/rails/{po|locale}/*. Now Rails plugins can release their po/mo-files
- under their own directory(/vendor/plugins/plugindir/{po|locale}).
- * samples/rails/vendor/plugins/gettext/Rakefile, README: Added.
- * samples/rails/lib/tasks/gettext.rake. Move gettext_plugin target to
- /vendor/plugins/gettext/Rakefile.
- * samples/rails/README: Updated.
-
-2006-05-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: The scope of a textdomain becomes a class/module base
- instead of a file base.
- Accept plural textdomains in a class/module.
- Changed bindtextdomain arguments with backward compatibility.
- * lib/gettext/textdomainmanager.rb: Added for manage plural textdomains.
- * lib/gettext/textdomain.rb: Fix wrong DEFAULT_LOCALE_PATHS if ruby is
- installed non-standard path.
- * lib/gettext/rails.rb: Changed arguments of bindtextdomain, init_gettext
- with backward compatibility.
-
-2006-05-29 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb:
- Remove GetText::Rails.use_localized_templates.
-
-2006-05-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_win32.rb: Fix to work with environment
- variables.
-
-2006-05-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb, lib/gettext/textdomain.rb: Keep a textdomain
- per a class instead of per a file.
-
-2006-05-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Problem when ActionMailer isn't defined.
- Reported by Gudao Luo.
-
-2006-05-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/mo.rb: Improved to compare the file time stamps.
- by Nobu Nakada.
-
-2006-05-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/mo.rb: Fix MOFile#update! works on MS Windows.
- * po/it/rails.po, samples/rails/po/it/*.po: Added by Marco Lazzeri.
-
-2006-05-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Rakefile: Remove dependency - makemo => poparser.
- Reported by Marco Lazzeri.
-
-2006-05-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README: Updated.
- * **/po/zh/*.po: Added zh_CN locale by Yingfeng.
- * pre-setup.rb: Remove to call "rails setup" now needless.
- Reported by Hiroyuki Iwatsuki.
-
-2006-05-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Rakefile: Make samples/rails/log if it's not exisited in
- makemo task.
- * lib/gettext/parser/activerecord.rb: Fixed to work
- Gem-less environment.
- Reported by Nobuhiro IMAI.
-
-2006-05-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed custom messages was not
- translated of validation_length_of.
- Reported by babie, charlie.
- * po/ja/rails.po: Separate plural/single messages.
-
-2006-05-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/version.rb: Increment revision number.
- * NEWS: Updated.
-
-2006-05-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: error_messages_for works same as
- actionpack-1.12.1 when nil or symbol are given as @object_name.
- By arton.
- * test/gettext_test_rails.rb: Works again.
-
-2006-05-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/activerecord.rb: Fixed again.
-
-2006-05-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/activerecord.rb: Fixed "duplicate message definition"
- error in rake updatepo task using ActiveRecord::Base.set_table_name.
- Reported by Karel Miarka.
-
-2006-05-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Fixed an abort when Rails::Info isn't
- required like as Typo. Reported by Masayoshi Takahashi.
-
-2006-04-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/textdomain.rb: Added GetText::TextDomain#check_mo=,
- #check_mo?. When the value is true, check the MOFile and if it's
- updated, reload MOFile again. This is usefule for development
- time.
- * lib/gettext/rails.rb: When development mode, check mo files
- and reload it if it's updated.
- * lib/gettext/mo.rb: Added MOFile#update!.
- * lib/gettext/string.rb: String#% doesn't raise ArgumentError
- when execute ruby with -d option.
-
-2006-04-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/po/ru/*.po, samples/cgi/po/ru/*.po,
- samples/rails/po/ru/*.po, po/rgettext.po,
- rails.po: Added Russian locale by Yuri Kozlov.
- * README: Revised.
-
-2006-04-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * NEWS: Updated.
- * lib/gettext/version.rb: Increment minor version.
- * test/gettext_test_rails.rb: Works with Rails-1.1.2.
- * test/gettext_test_locale.rb: Works on OpenBSD 3.8.
- * ext/gettext/locale_system.c: Set nil instead of "UTF-8"
- when nl_langinfo is not found.
- * samples/rails/README: Updated.
-
-2006-04-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * ext/gettext/locale_system.c: Fix compilation problem
- when /usr/include/langinfo.h doesn't have CODESET such as OpenBSD.
- You may need to set OUTPUT_CHARSET to ENV variable in such
- environment.
- Reported by Johan Allard.
-
-2006-03-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Revised docs.
-
-2006-03-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Support ActionWebService.
- Reported by Nick Snels.
-
-2006-03-19 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Improve multipart-mail in ja locale by Nobuhiro IMAI.
-
-2006-03-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: ActiveMailer works with multipart-mail in ja locale.
- Reported by Nobuhiro IMAI.
- * lib/gettext/textdomain.rb: GetText::TextDomain.gettext returns "" when
- arg is "" or nil.
- * lib/gettext.rb, locale.rb: Fix the problem to switch the locale again.
- * test/gettext_test.rb: Add the test for above problem.
- * test/gettext_test_rails.rb: Added, too.
- * test/test.sh: ditto.
-
-2006-03-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: GetText.locale= reset Locale's default locale.
- Reported by Donald Piret.
-
-2006-03-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: ActiveRecord::Column.human_name translates
- the column name using s_("Model|fieldname").
- Pointed out by Kazuhiro NISHIYAMA.
- * samples/rails/lib/tasks/gettext.rake: Move from Rakefile.
- Pointed out by Kazuhiro NISHIYAMA.
- * samples/rails/Rakefile: Move gettext tasks to lib/tasks/gettext.rake.
- * samples/rails/*: Updates files to which generated with rails 1.0.
- * NEWS: Updated.
-
-2006-03-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Localized ActiveRecord::Base.validates_* works correctly
- under production mode.
- Reported by Nickolay Kolev.
- ActionView::Base#render_file supports localized template such as
- foo_ja.rhml, foo_ja_JP.rhtml. Revert Action::Controller::Base#render.
- * NEWS: follow this change.
-
-2006-03-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: ActiveRecord::Base.error_message_(title|explanation)
- works production mode.
-
-2006-03-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * NEWS: Updated.
- * lib/gettext/rails.rb: Fix a problem of ActionMailer in "ja".
- * lib/gettext/version.rb: Incremented version number.
-
-2006-03-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: @params["lang"] is treated as cgi["lang"].
- Reported by Erkki Eilonen.
-
-2006-03-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_cgi.rb: Remove debug code.
- * lib/gettext/locale_object.rb:
- - Fix a memory leak. Reported by Jonas Schwertfeger.
- - Locale::Object.parser improved.
- - Rename Locale::Object#sort_order to #variant.
- - "POSIX" and "C" locale strings are converted to "en".
- - Add Locale::Object#to_general.
- * test/gettext_test_locale.rb: Add tests follow the changes.
- * lib/gettext/rails.rb:
- - ActionMailer sends a mail
- - in ISO-2022-JP if the language is japanese. The idea from
- Iso2022Mailer by drawnboy.
- - ActionController::Base.render_text is overrided to find
- localized templates such as foo_ja.rhml, foo_ja_JP.rhtml.
- You can reject this to set false to
- GetText::Rails.use_localized_templates.
- The idea is from Yugui.
-
-2006-03-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/app/models/article.rb: Add a sample of
- ActiveRecord::Base.set_error_message_(title|explanation).
- * lib/gettext/rails.rb: Fix a non-translated problem on production mode.
- ActionMailer supported by Albert Ramstedt.
- ActiveRecord::Base.set_error_message_(title|explanation) accepts Nn_()
- value(Array).
-
-2006-02-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale.rb: Fix to return system value when @@default is unset.
- * lib/gettext/rails.rb: Fix a problem with Locale.default=.
-
-2006-02-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Fix a typo.
-
-2006-02-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Rakefile: Fix a problem to make package on Win32.
- * lib/gettext/textdomain.rb: Rename @mo to @current_mo
- and add a attr_reader for @current_mo.
- * README, NEWS: updated.
- * lib/gettext/rails.rb: Fix to translate error message
- title/explanation.
- * lib/gettext/parser/activerecord.rb: Fix an abort when
- config/database.xml is not defined.
-
-2006-02-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rmsgfmt.rb, string.rb, iconv.rb, utils.rb, rgettext.rb,
- lib/gettext/parser/*.rb: Apply RDoc.
- * lib/gettext/version.rb: Increment minor version.
-
-2006-02-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/test.bat: Added for Win32.
- * test/gettext_test_locale.rb: Added Win32 tests.
- * lib/gettext/locale_win32.rb: Fix problems.
- * lib/gettext/locale_object.rb: Added Locale::Object#to_win
-
-2006-02-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/poparser.ry: Added ignore_fuzzy as the 3rd parameter
- of GetText::PoParser#parse to parse fuzzy comments.
- Pointed out by speakillof.
- * lib/gettext/rmsgmerge.rb: Follow the PoParser change below.
- * test/gettext_test_locale.rb: Apply Locale.clear.
- * lib/gettext/locale.rb: Added Locale.clear.
-
-2006-02-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_cgi.rb: Separate from cgi.rb.
- * lib/gettext/locale_posix.rb: Rename from locale_default.rb.
-
-2006-02-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/textdomain.rb: Add comments.
- * lib/gettext.rb: Apply Locale::Object. Code cleanup. Add RDoc.
- * test/gettext_test.rb: Apply gettext.rb changes
- * test/test.sh: Remove OUTPUT_CHARSET setting.
-
-2006-02-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_win32.rb, locale_default.rb, locale.rb: A first argument
- of Locale::System.get_charset becomes Locale::Object.
- * lib/gettext/textdomain.rb: Apply Locale::Object, Code cleanup.
- * lib/gettext.rb: Add GetText.add_default_locale_path.
- * lib/gettext/locale_object.rb: Add Locale::Object#==.
- * lib/gettext/textdomain.rb: Add GetText::TextDomain.add_default_locale_path.
- Pointed out at Bug#3510.
-
-2006-02-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Rakefile: Fix compilation problems on mswin32.
- * ext/gettext/locale_system.c: locale_id returns language ID not LCID.
-
-2006-02-13 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_table_win32.rb: Replace the table and add charset info.
- * lib/gettext/locale_win32.rb: ditto.
-
-2006-02-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_object.rb: Add script, sort_order properties.
-
-2006-02-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_locale.rb: Added modifier test.
- * lib/gettext/locale_object.rb: Added to parse modifier.
- * lib/gettext/locale.rb: Fixed bug of Locale#set_current.
- * test/gettext_test_cgi.rb: Added tests.
- * lib/gettext/cgi.rb: Apply RDoc.
- * lib/gettext/locale_default.rb, locale.rb: Modify RDoc.
- * lib/gettext/locale_win32.rb: Imprement pseudo Locale::System.get_charset().
-
-2006-02-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_locale.rb: Added for new Locale.
- * lib/gettext/locale.rb: Refactored. Follow to support Locale::Object.
- Add Locale.set_default, .default=, .system, .default, .current,
- .set_current, .current=, .current_charset. Reimplemented .get/.set.
- Locale.set(loctype, localestr) is deprecated. Use Locale.set(localestr) instead.
- Locale.setlocale(loctype, localestr) is deprecated. Use Locale.set(localestr) instead.
- Locale.get(loctype) is deprecated. Use Locale.get instead.
-
-2006-02-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/test_rubyparser_n_.rb: Rename from test/test_rubyparser_n.rb.
- This has a problem on Windows with test/test_rubyparser_N.rb.
-
-2006-02-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * pre-setup.rb: Remove previous installed files first.
- * ext/gettext/gettext: Removed.
- * ext/gettext/locale_system.c: Added as Accessor to system(win32/posix).
- (Move from ext/gettext/gettext/_locale.c)
- * ext/gettext/extconf.rb: ditto.
- * lib/gettext/locale_default.rb: Follow above changes. Apply RDoc.
- * lib/gettext/locale_win32.rb: Follow above changes. Apply RDoc.
- * lib/gettext/locale.rb: Code cleanup. Apply RDoc.
- * lib/gettext/locale_object.rb: Added Locale::Object. Apply RDoc.
- * setup.rb: Update to 3.4.1.
-
-2006-01-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rmsgmerge.rb: Fixed bugs.
- Follow the comment messages to GNU GetText. By speakillof.
-
-2006-01-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Added ActiveRecord::Base#error_message_(title|explanation).
- Reimplement ActionView::Helpers::ActiveRecordHelper::L10n.error_messages_for to
- separate error_message_(title|explanation) to be able to be overrided by user.
- The idea is from Trung Tran.
- * samples/rails/app/models/article.rb: Add a sample of
- ActiveRecord::Base#error_message_(title|explanation).
-
-2006-01-19 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: n_() accepts first arguments as an Array([msgid, msgid_plural]).
- * test/gettext_test.rb: Add tests for n_(ary, n), Nn_().
- * lib/gettext/parser/ruby.rb: Added Nn_() is same purpose with N_, but for n_.
- * lib/gettext.rb: Added Nn_(msgid, msgid_plural).
-
-2006-01-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/po/*/blog.po: Updated.
- * NEWS: Updated.
-
-2006-01-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/activerecord.rb: Fixed to fail loading YAML file.
- By Karel Miarka.
-
-2006-01-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * *po/el/*.po: Convert to UTF-8. By damphyr.
-
-2006-01-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_parser.rb: Add test_rgettext_parse.
- * test/test_erb.rxml: Added.
- * lib/gettext/rails.rb: Added ActionController::TestRequest for testing.
- Reported by Nick Snels.
- * samples/rails/README: Added test information.
- * samples/rails/test/functional/blog_controller_test.rb: Implemented.
- * **/*po[t]: Revised headers.
- * samples/po/el/*.po, samples/cgi/po/el/*.po,
- samples/rails/po/el/*.po, po/el/rgettext.po,
- rails.po: Added Greek locale by damphyr.
- * README: Updated.
- * lib/gettext/version.rb: Increment micro version.
-
-2006-01-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/activerecord.rb: Fixed to read configuration
- correctly. Reported by Donald Piret.
- Prevent to output duplicate msgid. Reported by Nick Snels.
-
-2005-12-31 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Check @@gettext_domainname is set first
- to avoid set the wrong value to the Content-Type when init_gettext
- is not called. Pointed out by Kazuhiro NISHIYAMA.
-
-2005-12-29 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_win32.rb: Fixed a syntax error.
- * po/{it,sv}/rgettext.po: Updated.
- * samples/rails/po/ja/blog.po: Fixed a fuzzy message.
- * po/de/rgettext.po: Fixed a compilingproblem.
- * README, NEWS: Updated.
- * lib/gettext/rails.rb: Fix a problem when
- http://localhost:3000/rails_info/properties is called.
- Pointed out by Kazuhiro NISHIYAMA.
- * po/de/rails.po: Added by Sasa Ebach.
- * po/de/rgettext.po, samples/rails/po/de/*.po:
- Updated by Sasa Ebach.
-
-2005-12-28 Masao Mutoh <mutoh@highway.ne.jp>
-
- * NEWS: Updated.
- * README: Updated.
- * po/es/rails.po: Added by David Espada.
- * po/es/rgettext.po, samples/rails/po/es/*.po:
- Updated by David Espada.
-
-2005-12-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_string.rb: Add a test.
-
-2005-12-26 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/app/controllers/blog_controller.rb: Updated.
-
-2005-12-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * NEWS: Updated.
- * README: Updated.
- * lib/gettext/parser/activerecord.rb: Don't show the messages
- when ActiveRecord and its subclasses are not found.
- * po/ja/rgettext.po: Updated.
-
-2005-12-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/po/nl/*.po, samples/cgi/po/nl/*.po,
- samples/rails/po/nl/*.po, po/nl/rgettext.po,
- rails.po: Added Dutch locale by Menno Jonkers.
-
-2005-12-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README: Updated.
- * README.ja: Removed.
- * po/ko/rails.po: Added by Gyoung-Yoon Noh.
- * po/ko/rgettext.po, samples/po/ko/*.po, samples/cgi/po/ko/*.po,
- samples/rails/po/ko/*.po: Updated by Gyoung-Yoon Noh.
- * lib/gettext/textdomain.rb: Fixed a bug when mo-files are not found.
- * samples/rails/po/en/blog.po: Added for English.
- You can change the table names, field names of ActiveRecord even you use English.
- * lib/gettext/textdomain.rb: Code cleanup.
- * samples/rails/vendor/plugins/gettext/lib/gettext_plugin.rb: begin a new line
- each 6 language.
- * samples/rails/vendor/plugins/gettext/po/*: Update version info.
-
-2005-12-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/README: Updated.
- * lib/gettext/utils.rb: Added. GetText.update_pofiles.
- * Rakefile, samples/rails/Rakefile: Use GetText.update_pofiles.
-
-2005-12-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/utils.rb: Added. Implement GetText.updatepo.
- * Rakefile:
-
-2005-12-19 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/po/cs/*.po, samples/cgi/po/cs/*.po,
- samples/rails/po/cs/*.po, po/cs/rgettext.po,
- rails.po: Added Czech locale by Karel Miarka.
-
-2005-12-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/fr/rgettext.po, samples/cgi/po/fr/main.po:
- Updated by Laurent Sansonetti.
- * po/fr/rails.po: Added by Laurent Sansonetti.
- * po/pt_BR/rails.po, samples/cgi/po/pt_BR/*.po,
- samples/rails/po/pt_BR/*.po:
- Added by Joao Pedrosa.
- * po/pt_BR/rgettext.po, samples/po/pt_BR/*.po:
- Updated by Joao Pedrosa.
-
-2005-12-17 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/rails.pot, po/ja/rails.po: Added.
- * test/gettext_test_string.rb: Added.
-
-2005-12-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/Rakefile: Added "updatepo" task.
- * lib/gettext/parser/activerecord.rb: Added a parser for
- ActiveRecord.
-
-2005-12-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Added GetText information to
- Rails::Info.
-
-2005-12-08 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_cgi.rb: Added tests for Locale.normalize.
- * lib/gettext/cgi.rb: Fix a problem of Locale.normalize.
-
-2005-12-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/cgi.rb: Separate Locale.normalize.
-
-2005-12-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test.rb, test/po/{da,fr}/plural_error.po:
- Fix test_plural_format_invalid.
-
-2005-12-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test.rb, test/po/*/plural.po: Fix test case.
-
-2005-12-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/vendor/plugins/gettext/lib/gettext_plugin.rb: Revised comments.
-
-2005-12-01 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rails.rb: Improved to support L10n for ActiveRecord::Errors.
- Improve ActionController::Base.init_gettext(_main).
- * samples/rails/app/controller/application.rb: Improved comments.
- * samples/rails/app/views/blog/_form.rhtml: Add information to validate.
-
-2005-11-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/string.rb: Added. New syntax ":{foo} is bar." % {:foo => "foo"}
- is supported.
- * lib/gettext/rmsgmerge.rb: Added.
- * lib/gettext.rb, lib/gettext/textdomain.rb: Fix a bug of GetText.ngettext.
-
-2005-11-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/app/*: Rewrite for RoR 0.14.x.
- * lib/gettext/rails.rb: Added ActionController::Base.init_gettext.
- * samples/rails/app/controllers/application.rb: ditto.
-
-2005-11-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/app/controllers/application.rb: Use
- GetText.output_charset to set the Content-Type.
- * lib/gettext/rails.rb: Call bindtextdomain in models(ActiveRecord)
- when bindtextdomain is called in before_filter of ActionController.
- Inspired from Simon Santoro.
- * samples/rails/app/models/article.rb: Added to validate description
- with localized message.
-
-2005-10-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/*: Merge rmsgfmt to rgettext.
- * po/**/rmsgfmt.po[t]: Removed(merge to rgettext.po[t]).
- * lib/gettext/rmsgmerge.rb: Added by speakillof.
- * bin/rmsgmerge: Added.
- * src/poparser.ry: Renamed rmsgfmt.ry to poparser.ry.
- * lib/gettext/rmsgfmt.rb: Added. Separate code from rmsgfmt.ry.
- * Rakefile: Check racc is existed or not.
- * lib/gettext/mo.rb: Follow poparser.ry changes.
-
-2005-09-16 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/rgettext.rb: Fixed a header of time strings.
- Reported by Karel Miarka.
-
-2005-09-12 speakillof <speakillof@yahoo.co.jp>
-
- * lib/gettext/parser/ruby.rb: Added "here document" support.
-
-2005-09-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Added GetText.locale. Both of GetText.locale= and
- GetText.locale behaves "global". If you set this once, follow bindtextdomain(s)
- use this value.
- * lib/gettext/cgi.rb: Added Locale.set.
- * lib/gettext/locale_win32.rb: ENV value is prior to native locale.
- Added Locale.set.
- * test/gettext_test.rb: Follow above changes.
-
-2005-09-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Rakefile: move test task to testunit task.
- * samples/cgi/*.cgi: Support rubygems.
- * lib/gettext/rails.rb: The default of "charset" parameter becomes nil
- instead of "UTF-8". You need to call GetText.output_charset=() first.
- * samples/rails/app/controllers/application.rb:
- Call GetText.output_charset = "UTF-8" first.
-
-2005-09-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/rmsgfmt.ry: Fixed VERSION info.
- * Rakefile: Update to make package correctly. Call create_mofiles
- for test/po/
- Add test task.
- Create win32 package correctly on Win32.
- * test/makemo.rb: Removed. Use rake makemo instead.
- * NEWS: Added.
- * 1.0.0 released.
-
-2005-08-31 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/cgi/Rakefile: Added.
- * samples/cgi/README: Modified.
- * samples/README: Modified.
- * samples/po/ko/*.po: Added Korean by Gyoung-Yoon Noh.
- * src/rmsgfmt.ry, po/**/rmsgfmt.po: Fix a typo.
- * samples/makemo.rb: Re-add for creating mo-files.
- * po/es/*.po: Updated by David Espada.
- * po/samples/rails/es/*.po: Added by David Espada.
- * po/de/*.po: Updated by Sven Herzberg.
- * po/samples/rails/de/*.po: Added by Sven Herzberg.
- * po/fr/*.po: Updated by Laurent Sansonetti.
- * po/samples/rails/fr/*.po: Added by Laurent Sansonetti.
- * README, README.ja: Updated.
- * samples/rails/*.[rb|rhtml]: Modified header informations.
- * lib/gettext/version.rb: Modified header information.
- * samples/rails/README: Revised.
- * samples/rails/db/postgresql.sql: Added.
-
-2005-08-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/ko/*.po, samples/cgi/po/ko/*.po, samples/rails/po/ko/*.po:
- Added Korean by Gyoung-Yoon Noh.
- * lib/gettext/textdomain.rb: Improve to print error message when
- No mo files were found.
-
-2005-08-28 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/rails/*: Added a sample for Ruby on Rails.
-
-2005-08-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/textdomain.rb: Added search mo-path:
- #{gems_path}/#{app}/locale/#{lang}/
- * lib/gettext/cgi.rb: Fix an alias bug(set_cgi is an
- alias of cgi=, not cgi).
-
-2005-08-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/cgi/helloerb1.cgi, helloerb2.cgi:
- Set @domainname obviously.
- * pre-clean.rb: Removed.
- * samples/makemo.rb, samples/cgi/makemo.rb:
- Removed. Use "rake makemo" instead.
- * post-setup.rb: Added "lib" to library path.
- * lib/gettext/locale.rb: Added pseudo Locale module when
- no _locale.so is found.(installation time by rake only)
-
-2005-08-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/rmsgfmt.ry: Added GetText.create_mofiles.
- * test/gettext_test.rb, testlib4.rb: Added tests for
- GetText.textdomain.
- * samples/hello_textdomain.rb: Added a sample for
- GetText.textdomain.
- * lib/gettext/locale_default.rb: Call setlocale first.
- * lib/gettext.rb: Added GetText.textdomain.
- Added NoboundTextDomainError.
- * lib/gettext/textdomain.rb: Added TextDomain#charset.
- * lib/gettext/container.rb: Rename @domainname to
- @gettext_container_domainname.
- Pointed out by speakillof.
- * pre-setup.rb: call rake setup.
-
-2005-08-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale.rb: require '_locale' if 'gettext/_locale'
- failed to load(for rubygems).
-
-2005-08-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/textdomain.rb: Add Gem paths as search paths.
-
-2005-08-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * bin/rmsgfmt: Move methods to src/rmsgfmt.ry.
- * src/rmsgfmt.ry: Improved. Added GetText.rmsgfmt.
-
-2005-08-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Rakefile: Added.
- * lib/gettext/version.rb: Added.
- * lib/pre-setup.rb: Removed.
- * lib/gettext/rgettext.rb: Added. Added GetText.rgettext.
-
-2005-08-13 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README, REAMDE.ja: Updated informations.
- * The project moves to rubyforge.
-
-2005-05-01 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale_win32.rb: Added pseudo constants of setlocale.
- * samples/cgi/ruby.bat: Added for Win32.
- * samples/cgi/README: Modified.
- * samples/cgi/http.rb: Support Win32.
- * 0.9.0 released.
-
-2005-04-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/cgi.rb: Added Locale.set_cgi() as alias of .cgi=.
-
-2005-04-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/cgi/po/de/: Translated by Detlef Reichl.
- * samples/cgi/po/es/: Translated by David Moreno Garza.
- * samples/cgi/po/it/: Translated by Gabriele Renzi.
- * samples/po/it/: Translated by Gabriele Renzi.
-
-2005-04-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/de/*.po : Translated by Detlef Reichl.
- * po/it/*.po : Translated by Gabriele Renzi.
-
-2005-04-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/rmsgfmt.ry: Fix a bug not to unesacpe '"'.
- Support new transltations.
- * samples/cgi/*: Updated.
- * samples/cgi/po/fr/*: Translated by Laurent Sansonetti.
-
-2005-04-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/cgi.rb: Locale.get checks the cookie value.
- The search priority is:
- query_string(lang) > cookie(lang) > HTTP_ACCEPT_LANGUAGE > "en".
-
-2005-04-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/cgi.rb: Added Locale.cgi=, .cgi,
- GetText.cgi=, .cgi, .set_cgi.
-
-2005-04-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Defined domain name as @domainname.
- Added GetText.set_output_charset as alias of .output_charset=.
- * lib/gettext/container.rb: Added.
- * lib/gettext/erb.rb: Make ErbContainer a module not a class
- and includes GetText::Container.
- * samples/erb/*: Follow this changes.
- * samples/cgi/, erb/: Move erb/ to cgi/.
-
-2005-04-19 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/erb/*: Added sample for CGI/ERB.
-
-2005-04-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/erb.rb: Added for ERB support.
- * lib/gettext/cgi.rb: Added for CGI support.
- * lib/gettext.rb: Add GetText.output_charset=.
-
-2005-04-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Add GetText.set_locale, set_charset.
-
-2005-04-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/rmsgfmt.ry: Remove comment_old which isn't used anymore.
-
-2005-04-09 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/gettext.rb, locale.rb, locale_default.rb:
- Fix bugs that Locale.get, Locale.codeset return wrong values.
- * test/gettext_text.rb: Add test for Locale module.
-
-2005-04-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_parser.rb, test_erb.rhtml:
- Added tests for erb parser.
- * lib/gettext/textdomain.rb: print debug message to
- $stderr, not $stdout.
- * lib/gettext/parser/erb.rb: Added.
- rgettext support ERB. Inspired by Sascha Ebach.
- * lib/gettext/parser/*.rb, bin/rgettext: Code clean up.
-
-2005-03-31 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb, lib/gettext/textdomain.rb:
- reimplement sgettext.
- * lib/gettext.rb: Improve GetText.bindtextdomain
- * test/makemo.rb, samples/makemo.rb: Improve to run rmsgfmt.
- * pre-setup.rb: Improve to run racc.
-
-2005-03-28 Masao Mutoh <mutoh@highway.ne.jp>
-
- * ext/gettext/gettext/_locale.c: Locale.codeset calls
- setlocale(LC_CTYPE, "") not LC_ALL.
- * lib/gettext.rb: Update VERSION info.
- * lib/gettext/locale.rb: Remove to read LC_CTYPE.
- Now, this uses the environment variables LC_ALL,
- LC_MESSAGES and LANG (in that order) same as GNU GetText.
- Point outed by Dafydd Harries.
- * samples/helloglade2.rb: Run correctly on the samples directory.
- * 0.8.1 released.
-
-2005-03-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/rmsgfmt.ry: Fix a problem with \r, \t, \n.
- Reported by Guillaume Cottenceau.
-
-2004-11-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/rmsgfmt.ry: Fix an error when #~ lines are existed.
- Pointed out by Patrick GUNDLACH.
- * lib/gettext/parser/ruby.rb: Fix rgettext ignore "\#" by Kazuhiro NISHIYAMA.
- * test/test_rubyparser.rb, gettext_test_parser.rb: Added test for "\#".
-
-2004-11-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/pt_BR/*.po, samples/po/pt_BR/*.po: Added. Translated by Joao Pedrosa.
-
-2004-11-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README, README.ja: Revised.
- * po/sv/*.po, samples/po/sv/*.po: Added. Translated by Nikolai Weibull.
- * po/es/*.po, samples/po/es/*.po: Added. Translated by David Espada.
- * 0.8.0 released.
-
-2004-11-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * po/fr/*.po, samples/po/fr/*.po: Added. Translated by Laurent Sansonetti.
- * test/test_rubyparser_N.rb: Added.
- * test/test_rubyparser.rb: Added a test.
- * lib/gettext.rb: Increment minor version.
-
-2004-11-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test_parser.rb: Added test for n_().
- * lib/gettext/parser/ruby.rb: Improved to parse n_().
- * test/test_rubyparser_n.rb: Added.
-
-2004-11-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/ruby.rb: Support _("a" + "b") pattern as "ab".
-
-2004-10-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * setup.rb: Update to setup.rb-3.3.1.
- * README, README.ja: Modified.
- * 0.7.0 released.
-
-2004-10-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/iconv.rb: Added.
- * lib/gettext/mo.rb: Requires 'gettext/iconv' instead of 'iconv'.
-
-2004-10-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: every methods don't raise error when
- GetText.bindtextdomain isn't called first.
-
-2004-10-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * bin/rgettext: Modified header like as GNU GetText.
- Escape double quote correctly.
- * test/gettext_test_parser.rb: Added tests for GetText::GladeParser.
- * test/test_gladeparser.rb: Added.
-
-2004-10-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/textdomain.rb: Added GETTEXT_PATH environment variable
- for searching path. This is for testing/debugging.
- Improved GetText::TextDomain#set_locale.
- Reported by Dafydd Harries from Debian Bug Tracking System #275010.
- * lib/gettext.rb, lib/gettext/textdomain.rb: Separate
- GetText::Domain to lib/gettext/textdomain.rb.
- * lib/gettext.rb: Increment GetText::VERSION.
-
-2004-08-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Add GetText.sgettext(msgid), .s_(msgid) .
- * bin/rgettext: Support GetText.sgettext, .s_.
- * test/gettext_test.rb, test_sgettext.rb, test/po/ja/test_sgettext.po:
- Added for GetText.sgettext, .s_ tests.
-
-2004-07-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README, README.ja: Modified some old descriptions.
- * lib/gettext.rb: Incremented revision.
- * 0.6.1 released.
-
-2004-07-11 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/parser/glade.rb: Fixed a bug for empty-string value.
- * post-setup.rb: Fixed a install problem reported by wwp.
-
-2004-07-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * post-setup.rb, pre-clean.rb, pre-setup.rb: Improved
- by Nobu Nakada.
- * setup.rb: Replaced install.rb. Pointed out by Nobu Nakada.
- * README, README.ja: Follow above changes.
-
-2004-07-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/gettext_test.rb: Added some complex cases.
- * test/gettext_runner.rb: Added.
- * test/po/ja/test_rubyparser.po: Added.
- * lib/gettext.rb: Added GetText::VERSION.
- * docs/*: Removed. See website instead.
- * 0.6.0 released.
-
-2004-06-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * bin/rgettext: Support Glade-2 XML file.
- * po/ja/rgettext.po: Ditto.
- * lib/gettext/parser/ruby.rb, glade.rb: Added.
- * test/gettext_test_parser.rb, test_rubyparser.rb: Added.
- * lib/gettext/parser/ruby.rb: Improved to parse complex strings.
-
-2004-06-23 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/mo.rb: Fix a bug to save data to a file.
-
-2004-06-15 Masao Mutoh <mutoh@highway.ne.jp>
-
- * src/rmsgfmt.ry: Force override if the file exist. This is the same
- behavior as GNU msgfmt.
- * lib/gettext/mo.rb: Fixed a bug that "Plural-Forms"
- part isn't defined in po-file but has plural part.
- Reported by Dafydd Harries.
- * test/po/[fr|ja|de]/plural_error.po: Added for a test of plural forms.
- * test/gettext_test.rb: ditto.
-
-2004-03-26 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Fixed to return empty strings
- when translated strings are empty.
- * 0.5.5 released.
-
-2004-02-14 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/locale.rb: Changes PLATFORM to RUBY_PLATFORM for ruby-1.9.
- * 0.5.4 released.
-
-2003-12-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Improve the initial speed.
- * 0.5.3 released.
-
-2003-11-27 Masao Mutoh <mutoh@highway.ne.jp>
-
- * bin/rgettext: Fix bugs when \M or \C are given.
-
-2003-11-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * ext/gettext/gettext/_locale.c: Fix bugs for Win32.
- Pointed out by Nobu Nakada.
- * docs/config.rb: Removed.
- * docs/rd/*/ruby-gettext.rd: Modified.
- * 0.5.2 released.
-
-2003-07-05 Masao Mutoh <mutoh@highway.ne.jp>
-
- * ext/gettext/gettext/_locale.c: Define Locale.setlocale() and LC_* constants.
- * lib/gettext.rb, lib/gettext/*.rb: Code cleanup.
- * post-setup.rb: Fix mo files had not been compiled.
- * 0.5.1 released.
-
-2003-07-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/hello2.rb: Fix warning for ruby-1.8.x.
- * ext/gettext/gettext/_locale.c: Call setlocale(LC_NUMERIC, "C")
- for some locales which doesn't use "." as decimal-point.
- * pre-setup.rb: Removed.
- * post-setup.rb: Fix some bugs.
-
-2003-01-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/hellogtk2.rb: Support Ruby/GTK2.
- * gettext/mo.rb: Fix for bad mo files which don't include header part.
- * bin/rgettext: Remove ",fuzzy" for header part. Set default charset to UTF-8.
- * src/rmsgfmt.ry, po/rmsgfmt.pot, po/ja/rmsgfmt.po: Add files.
- * 0.5.0 released.
-
-2002-10-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Support ngettext(alias name is n_).
- * Change directory structure.
- * Remove *.mo from tar-ball(they are created automatically in installing).
- * bin/rgettext, po/rgettext.pot, po/ja/rgettext.po: Revise help message.
- * bin/rgettext: Fix POT-Creation-Date was localized.
- * samples/hello_plural.rb: Add a sample.
- * test/*: Add test for ngettext.
- * 0.4.0 released.
-
-2002-10-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext/mo.rb: Fix bad return value when msgstr is not existed.
- Pointed out by Shinobu TAKANASHI <sino@e-turi.net>
- * test/*: Change RubyUnit to Test::Unit.
- * 0.3.2 released.
-
-2002-07-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale.rb: Support MinGW.
- * lib/mo.rb: Support platforms which do not support Iconv.
- * 0.3.1 released.
-
-2002-07-02 WATANABE Hirofumi <eban@os.rim.or.jp>
-
- * ext/gettext/gettext/extconf.rb:Support MinGW.
-
-2002-07-01 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
-
- * ext/gettext/gettext/_locale.c: Code cleanup.
- * po/ja.po: Fix typo.
- * pre-install.rb: Code cleanup.
-
-2002-06-30 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Support to convert output strings with charset(codeset).
- - Add 4th parameter to GetText.bindtextdomain for charset
- - Add GetText.charset=().
- - Support Environment variable OUTPUT_CHARSET.
- * samples/po/makemo.rb: support Ruby-1.6.x.
- Reported by KUMAGAI Hidetake <ggb03124@nifty.ne.jp>
- * 0.3.0 released.
-
-2002-02-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * docs/rd/[ja|en]/ruby-gettext.rd: Some modified.
- * lib/gettext.rb: show more informations in debug mode(-d)
- * bin/rgettext: BugFix for bad implementation of GetText.N_(msg).
- by Masahiro Sakai<zvm01052@nifty.ne.jp>
- * po/ja.po: change charset from iso-2022-jp to euc-jp.
- by Masahiro Sakai<zvm01052@nifty.ne.jp>
- * 0.2.1 released.
-
-2002-02-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Implement GetText.N_(msg)
- * bin/rgettext: Apply to GetText.N_(msg)
- * samples/hello_noop.rb: Add a sample for GetText.N_(msg).
- * test/gettext_test.rb: Add test_noop.
- * docs/rd/[ja|en]/ruby-gettext.rd: Add an explanation of GetText.N_(msg).
- * 0.2.0 released.
-
-2002-02-13 Masao Mutoh <mutoh@highway.ne.jp>
- * ruby-gettext-package:
- Move pre-clean.rb to pre-install.rb.
- Reported by Yoshifumi Hiramatsu<hiramatu@boreas.dti.ne.jp>
- * lib/gettext.rb: Improve search-path(@locale_dirs).
- * bin/rgettext, samples/*.rb:
- Improve first line(Add #! line or change #!/usr/bin/env ruby to
- #!/usr/local/bin/ruby).
- * samples/hellotk.rb: add new sample for Ruby/Tk
- * 0.1.2 released.
-
-2002-02-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: BugFix to occur an error
- when all of locale is not set.
- * README, README.ja: Modified about Bad explanation
- in Install section. Reported by
- Yoshifumi Hiramatsu<hiramatu@boreas.dti.ne.jp>
- * docs/rd/*/ruby-gettext.rd: Some improvements.
- * docs/yard2html.rb: Some improvements.
- * 0.1.1 released.
-
-2002-01-06 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/gettext.rb: Bugfix for bad scope.
- * bin/rgettext: Sort by file, lineno.
- * test/: Add one test.
- * docs/rd/*/ruby-gettext.rd: Modified about rgettext.
- * 0.1.0 released.
-
-2002-01-01 Masao Mutoh <mutoh@highway.ne.jp>
-
- * docs/: Add english document and some improvements.
- * test/: Add one test.
- * samples/: Add hello2.rb.
- * 0.0.2 released.
-
-2001-12-24 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test release
-
diff --git a/vendor/gems/gettext-2.1.0/NEWS-1 b/vendor/gems/gettext-2.1.0/NEWS-1
deleted file mode 100644
index a087200e3..000000000
--- a/vendor/gems/gettext-2.1.0/NEWS-1
+++ /dev/null
@@ -1,414 +0,0 @@
-(OBSOLETE: Move to ChangeLog since 2.0.0)
-
-= Ruby-GetText-Package-1.93.0 (2008-09-14)
- * Bulgarian added.
- * Estonian updated.
- * French updated.
- * Japanese updated.
- * np_, npgettext support.
- * Fixed bugs.
- - detect the correct charset on POSIX OS.
- - updatepo task works again on Windows OS(with broken GNU msgmerge).
- - Remove BOM from po-files before GNU msgmerge is executed.
- (GNU msgmerge doesn't support BOM)
- - Work with xx(double x) library and the library which uses xx library
- such as rcov.
- - Fixed expire_fragment with rails < 2.1.
-
- (NOTE) Rails-2.2 has not been supported yet.
-
-Thanks to:
- Translators:
- Vincent Isambart, Erkki Eilonen, Sava Chankov.
-
- Bug reports, suggestions and patches:
- Vladimir Dobriakov, Tatsuki Sugiura, César Duque Calle,
- Rémy-Christophe Schermesser, Donald Piret.
-
-= Ruby-GetText-Package-1.92.0 (2008-08-02)
- * Fixed a memory leak(again)
- * Fixed bugs.
- * Improve to support mo-files.
- * Support revision 1 of mo-file format.
- * Freeze msgstrs.
- * msgctxt - pgettext(msgctxt, msgid) support
- (eg)
- p_("File", "Open") #=> "Open" is shown in English.
- * Update translations
- * Catalan, Chinese(Simplified), Chinese(Traditional), (English), Esperanto, German,
- Greek, Hungarian, Latvian, Japanese, Norwegian, Portuguese(pt_BR), Russian, Serbian,
- Spanish, Ukrainian, Vietnamese,
- * Rails Support
- * Support rubyonrails-2.1.0 (2.0.0 or later).
- * Add new validations for activerecord-2.1.0.
- (:greater_than, :greater_than_or_equal_to, :equal_to,
- :less_than, :less_than_or_equal_to,:odd, :even)
- * validates_(format|inclusion)_of accepts %{val} as the value
- (eg)
- validates_inclusion_of :name, :in => %w(a, b), :message => N_("%{fn} can't be %{val}")
- * Work Fragment caching on rails-2.1.0.
- * Support ActiveRecord::Base.abstract_class.
- * Work ActiveRecord::Errors#[]
- * Work render_partial.
-
-Thanks to:
- Translators:
- Slobodan Paunović, Yuri Kozlov, Patrick Lenz, Malte Milatz, Ngoc DAO Thanh, David Espada,
- Antonio S. de A. Terceiro, David Espada, Runar Ingebrigtsen, Tamás Tompa, Yang Bob, damphyr,
- Ramon Salvadó, Alex Rootoff, Aivars Akots
-
- Bug reports, suggestions and patches:
- Hans de Graaff, Tatsuki Sugiura, Andreas Neuhaus, Loiseleur Michel
-
-= Ruby-GetText-Package-1.91.0 (2008-05-11)
- * Works again on Win32 + JRuby-1.1.1
- * Fixed memory leaks.
- * Fixed bugs.
- * Speed up.
- * Support Serbian(sr)
- * Rails Support
- * rubyonrails-1.2.x isn't supported(2.0.0 or later are supported).
- * Localize ActionView::Helpers::FormBuilder#label.
- e.g.)
- <% form_for(@article) do |f| %>
- <p><%= f.label :lastupdate %></p>
- <% end %>
- => msgid "Article|Lastupdate" is used as the label string.
-
-Thanks to:
- Translators:
- Slobodan Paunović
- Bug reports, suggestions and patches:
- Paul Clegg, Locomotyphus, Simone Carletti, Dao Ngoc, Karl Palmskog,
- Tatsuki Sugiura, Bernd Ahlers, craccho.
-
-= Ruby-GetText-Package-1.90.0 (2008-01-30)
- Start to prepare v2.0.
-
- * Support Ukrainian(ua), Hungarian(hu)
- * JRuby supported.
- * Become a pure ruby library (Remove .so extention).
- * Don't need C compiler to install.
- * Unified to one gem package for all environments (Don't need Win32 package).
- * Directory structures are refactored.
- * locale modules separate from lib/gettext/ to lib/locale/.
- * Locale modules are refactored. System locales become read only.
- * Ruby on Rails 2.0 supported.
- * RDoc supported.
- * Fix bugs.
- * Enhance to support Ruby on Rails.
- * error_messages_for can accept custom error dialog messages.
- * Add GetText::Rails.available_locales, .normalized_locale
- and fragment_cache_key/expire_fragment reimplement to use these methods
- to restrict cached locale files.
-
-Thanks to:
- Translators:
- Alex Rootoff, Tamás Tompa
- Bug reports, suggestions and patches:
- Yaohan Chen, OZAWA Sakuro, olivier ruffin, Vít Ondruch,
- Andreas Neuhaus, boud indymedia, Hans de Graaff, Stephan, Reynard,
- Ernesto Jiménez Caballero, Paul Clegg
-
-= Ruby-GetText-Package-1.10.0 (2007-07-06)
-
- * Support Vietnamese(vi), Bosnian(bs), Croatian(hr), Norwegian(nb)
- * Cache messages. Both _() and n_() become 1.3-1.8 times faster
- than older version.
- * Add GetText.ns_()
- * Fix bugs.
- * Enhance to support Ruby on Rails.
- * Work with script/generate scaffold_resource.
- * error_messages_for accepts plural models.
- * Support Action/Fragment caching.
-
-Thanks to:
- Translators:
- Dirkjan Bussink, Bart ten Brinke, Ngoc Dao, Sanjin Sehic,
- Runar Ingebrigtsen, Menno Jonker, Joao Pedrosa, Malte Milatz,
- Patrick Lenz, David Sulc, Erkki Eilonen, Yang Bob, Ramon Salvadó
- Bug reports, suggestions and patches:
- Maksim Bartenev, Bart ten Brinke, Florian Hufsky,
- Michel Loiseleur, Sava Chankov
-
-= Ruby-GetText-Package-1.9.0 (2007-01-22)
-
- * Support Catalan(ca), Esperanto(eo)
- * Update translations: zh_CN, zh_TW, cs, nl, en, de, el, es, ja, ko, pt_BR, ru.
- * Support Ruby on Rails-1.2.1.
- * Code cleanupand improved. Fixed bugs.
-
-Thanks to:
- Translators:
- Antonio S. de A. Terceiro, David Espada, David Sulc, Gyoung-Yoon Noh,
- Joao Pedrosa, Malte Milatz, Menno Jonkers, Patrick Lenz, Yang Bob,
- Yuri Kozlov, Vassilis Rizopoulos
-
- Bug reports, suggestions and patches:
- Fabian Kreutz, KAKUTANI Shintaro, Mihnea Capraru, NANKI Haruo, pedro palazon
-
-= Ruby-GetText-Package-1.8.0 (2006-09-11)
-
- * Support Chinese(Taiwan: zh_TW), Estonian(et: rails.po only)
- * Add GetText.bindtextdomain_to(klass, domainname), .textdomain_to(klass, domainname)
- * rgettext supports -r, -d options.
- -r is to set an option parser. -d is for debugging mode.
- (e.g.) $ rgettext -r fooparser test.foo
- * Update translations: pt_BR, de, zh_TW,
- * Code cleanup, fixed bugs.
- * Enhance to support Ruby on Rails.
- * init_gettext finds mo-files in /vendor/plugins/{plugin_name}/locale which has
- app/controller directories such as Rails Engines.
- And init_gettext accepts :locale_path option to be able to set the locale
- path manually.
- * init_gettext manages plural textdomains.
- * Add before_init_gettext, after_init_gettext methods like as before/after_filter.
- * Speed up(the sample blog is 1.5 times faster).
- * gettext/active_record.rb from gettext/rails.rb.
- * ActiveRecord::Validations is set the app's textdomain in init_gettext.
- It means the class which includes ActiveRecord::Validtaions are localized with
- the app's textdomain.
- e.g.) You can use gettext methods in the subclass of ActiveForm[1]
- http://www.realityforge.org/svn/code/active-form/trunk/
- * Works rails edge again (http://dev.rubyonrails.org/ticket/5810)
-
- Thanks to:
- Translators: Joao Pedrosa(pt_BR), Partick Lenz(de), Erkki Eilonen(et),
- LIN CHUNG-YI(zh_TW)
- Bug reports and suggestions:
- Kobayashi Noritada, Andreas Neuhaus, steve dp, Tsutomu Kuroda, Donald Piret
-
-= Ruby-GetText-Package-1.7.0 (2006-07-17)
-
- * GetText.current_textdomain_info for debuging
- * Fixed bugs, code cleanup.
- * Update translations
- * Chinese(zh), Czech(cs), Dutch(nl), English(default), French(fr)
- Spanish(es), Japanese(ja), Korean(ko), Russian(ru)
- * Improve to support Ruby on Rails
- * Localize ActionView::Helpers::DateHelper.distance_of_time_in_words.
- * Localize #error_message_on.
- * Add ActiveRecord::Base.untranslate, .untranslate_all to prevend to
- translate columns.
-
- Thanks to:
- Translators:
- David Espada, Karel Miarka, Laurent Sansonetti, Yuri Kozlov,
- Gyoung-Yoon Noh, Menno Jonkers, Yingfeng
- Bug reports and suggestions:
- arton, OZAWA Sakuro, kdmsnr, Kouhei Sutou
-
-= Ruby-GetText-Package-1.6.0 (2006-06-09)
-
- * Support Chinese(zh_CN), Italian(it).
- * Improve the way to manage textdomains.
- * A class/module can have plural textdomains.
- * A textdomain belong to a class/module.
- * A class/module can have plural textdomains.
- * A message is looked up in its class/module and ancestors.
-
- You don't need to call bindtextdomain in each files.
- # A textdomain belong to a file in previous version.
- # And a message is looked up in the file which called
- # GetText functions only.
- * Fix bugs
- * Samples are cleaned up.
-
-= Ruby-GetText-Package-1.5.0 (2006-05-07)
-
- * Support Russian.
- * Fix bugs.
- * Refresh mo option was added.
- Check mo files and reload it if it's updated.
- ruby -d or GetText::TextDomain.check_mo=(true).
- Or development mode in Ruby on Rails.
-
-= Ruby-GetText-Package-1.4.0 (2006-04-15)
-
- * Support OpenBSD.
- * Fix bugs
- * Enhance supports of Ruby on Rails.
- * Improved ActionMailer localization support.
- * Support ActionWebService
- * test/gettext_test_rails.rb works with Rails-1.1.2.
-
-= Ruby-GetText-Package-1.3.0 (2006-03-11)
-
- * Improve Local::Object
- * POSIX, C convert to "en".
- * Enhance supports of Ruby on Rails.
- * ActionMailer localization support.
- * Use GetText function(_() N_() etc) in template.
- * ISO-2022-JP charset is used when language is "ja"(Japanese).
- * Localization templates support.
- * ActionController::Base.render_text is overrided to find
- localized templates such as foo_ja.rhml, foo_ja_JP.rhtml.
- * @params["lang"] is treated as cgi["lang"]
- * Use N_() as localized messages of validates_* instead of _().
- * Translates ActiveRecord::Column.human_name values automatically.
- * Fix memory leak, other bugs.
-
-= Ruby-GetText-Package-1.2.0 (2006-02-23)
-
- * Re-implement Locale module and Implements Locale::Object,
- Locale::System, etc.
- * Fix bugs.
- * Apply RDoc (not complete)
- * Improve to support Ruby on Rails.
- * Add GetText.Nn_.
- * Add rmsgmerge (Experimental)
-
-= Ruby-GetText-Package-1.1.1 (2006-01-14)
-
- * Bugfixes.
- * Added Greek locale by damphyr.
- * Support tests for Ruby on Rails.
-
-= Ruby-GetText-Package-1.1.0 (2005-12-29)
-
- * Added some functions which managed po/mo files easily.
- * GetText.update_pofiles creates/updates pot/po files.
- The idea is from Sascha Ebach.
-
- * String% is extended to accept named argument.
- "%{file} is selected." % {:file => "foo.rb"}
- Proposed by Sascha Ebach and Kazuhiro NISHIYAMA.
-
- * Enhanced Ruby on Rails support.
- * ActiveRecord support. Inspired from Simon Santoro(rgtrans).
- * the error messages are localized.
- Also, you can add your own messages with _("").
- * You can use gettext methods in the models unless
- preparing anything.
-
- * rgettext extracts the table names/field names
- of the subclass of ActiveRecord::Base as the msgid.
-
- Even for the English developers who don't need
- to localize their application, this function is
- useful because the developer can rename
- the table/field names using "en" locale.
-
- * More simple to set up ApplicationController.
- Now, you need to call just init_gettext only.
-
- class ApplicationController < ActionController::Base
- init_gettext "myapp" #Easy!
- end
-
- This "myapp" domain affects all of the controllers/views/models.
-
- * Sample "blog" application with rails.
- Improved the sample application on RoR. See: samples/rails/*.
-
- * New/Updated translations:
- Czech - Karel Miarka (NEW)
- Dutch - Menno Jonkers (NEW)
- French - Laurent Sansonetti
- German - Sasa Ebach
- Japanese - Masao Mutoh
- Korean - Gyoung-Yoon Noh
- Portuguese(Brazil) - Joao Pedrosa
- Spanish - David Espada
-
- * bugfixes.
-
-= Ruby-GetText-Package-1.0.0 (2005-09-03)
-
- * Ruby on Rails is supported.
- Includes sample in samples/rails/
- * gem is supported. ($ gem install gettext)
- * rake is supported.
- * Not required racc anymore on installing time.
- * New/Updated translations:
- French - Laurent Sansonetti
- German - Sven Herzberg
- Japanese - Masao Mutoh
- Korean - Gyoung-Yoon Noh (NEW)
- Spanish - David Espada
- * bugfixes.
-
- * Moved to http://rubyforge.org/projects/gettext/
- * Mailinglists started.
-
-
-= Ruby-GetText-Package-0.9.0 (2005-05-01)
-
- * CGI support: gettext/cgi
- * ERB support: gettext/erb, rgettext.
- * Added samples for CGI/ERB to samples/cgi/.
- * bugfixes.
-
-
-= Ruby-GetText-Package-0.8.1 (2005-03-30)
-
- * bugfixes.
- * New Translations: pt_BR by Joao Pedrosa.
-
-
-= Ruby-GetText-Package-0.8.0 (2004-11-06)
-
- * rgettext: Improved to parse ruby script.
- * New Translations:
- French - Laurent Sansonetti
- Spanish - David Espada
- Swedish - Nikolai Weibull
- * Fixed bugs.
-
-
-= Ruby-GetText-Package-0.7.0 (2004-10-25)
-
- * Support GetText.sgettext.
- See: http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151
- * Added gettext/iconv.rb.
- If your ruby distribution doesn't have iconv.so but Ruby-GNOME2(Ruby/GTK2),
- gettext/iconv.rb provides pseudo Iconv.iconv using Ruby/GLib module.
- * GETTEXT_PATH as new environment variables. Define GETTEXT_PATH as locale
- diretories. You can debug/test your application unless installing catalog
- files.
- * Update setup.rb(by Minero Aoki).
- * Fix misc bugs
-
-
-= Ruby-GetText-Package-0.6.1 (2004-07-23)
-
- * rgettext: Fixed a bug of glade XML mode.
- * Fixed an installation problem.
- * Changed the installer from install.rb to setup.rb.
-
-
-= Ruby-GetText-Package-0.6.0 (2004-07-05)
-
- * rgettext: Support glade-2 XML file format.
- * rgettext: Improved to parse ruby sources.
- * rmsgfmt: Fix a bug that it generated wrong mo format.
- * Fix bugs
-
-= Ruby-GetText-Package-0.5.5 (2004-03-26)
-
- * Fix a bug.
-
-= Ruby-GetText-Package-0.5.4 (2004-02-14)
-
- * Improved to support ruby-1.9.x.
-
-= Ruby-GetText-Package-0.5.3 (2004-02-14)
-
- * Improve the initial speed.
-
-= Ruby-GetText-Package-0.5.2 (2003-11-12)
-
- * Fix bugs for Win32.
-
-= Ruby-GetText-Package-0.5.1 (2003-07-05)
-
- * Fix bugs. Code cleanup.
-
-= Ruby-GetText-Package-0.5.0 (2003-01-08)
-
- * rmsgfmt: Added.
- rmsgfmt is a ruby implementation of msgfmt in GNU gettext.
- It creates a mo-file from a po-file.
- * Fix bugs.
-
-
diff --git a/vendor/gems/gettext-2.1.0/README.rdoc b/vendor/gems/gettext-2.1.0/README.rdoc
deleted file mode 100644
index b02d1f1bf..000000000
--- a/vendor/gems/gettext-2.1.0/README.rdoc
+++ /dev/null
@@ -1,245 +0,0 @@
-= gettext - Ruby-GetText-Package
-
-Ruby-GetText-Package is a Localization(L10n) library and tool
-which is modeled after the GNU gettext package.
-
-This library translates original messages to localized
-messages using client-side locale information(environment
-variable or CGI variable).
-
-The tools for developers support creating, useing, and modifying
-localized message files(message catalogs).
-
-((*Rails*))
-Rails support has been removed.
-Rails / ActiveRecord specific code now lives in locale_rails[http://github.com/mutoh/locale_rails/tree/master], gettext_rails[http://github.com/mutoh/gettext_rails/tree/master] and gettext_activerecord[http://github.com/mutoh/gettext_activerecord/tree/master].
-
-== Website
-* homepage[http://www.yotabanana.com/hiki/ruby-gettext.html]
-* on rubyforge[http://gettext/rubyforge.org/]
-* on github[http://github.com/gettext/]
-
-== Features
-* Translate singular/plural messages with simple APIs(similar to GNU gettext)
-
-* Thread safety. Message resources are shared from all threads, but
- returns translated messages of the current thread's locale.
-
-* Tools to find message IDs
- * Extract message IDs to po-files using rgettext from
- * ruby scripts
- * glade-2 XML file(.glade)
- * ERB file(.rhtml, .erb)
- * Anything (with your own parsers)
- * The po-files are compatible to GNU gettext.
-
- * rmsgfmt creates a mo-file from a po-file.
- The mo-file is compatible to GNU gettext(msgfmt).
-
- * Using rgettext/rmsgfmt as Rake tasks
-
-* textdomain's scope is adapt to ruby class/module mechanism.
- * A class/module can have plural textdomains.
- * a message is looked up in its class/module and ancestors.
-
-* CGI support (gettext/cgi)
- * Locale is retrieved from client informations using Ruby-Locale.
- (HTTP_ACCEPT_LANGUAGE, HTTP_ACCEPT_CHARSET, QUERY_STRING(lang), Cookies(lang)).
-
-* String%() is extended to use named argument such as <tt>%{foo}" %{:foo => 1}</tt>.
- Notes that Ruby-1.9.x supports this format by itself.
-
-== Requirements
-* {Ruby 1.8.3 or later}[http://www.ruby-lang.org]
-* {Rubygems}[http://www.rubygems.org/]
-* {locale gem}[http://rubyforge.org/projects/locale/]
- * $ gem install locale
-* (for development only)
- * {GNU gettext 0.10.35 or later}[http://www.gnu.org/software/gettext/gettext.html]
- * {Racc-1.4.3 or later}[http://www.ruby-lang.org/raa/list.rhtml?name=racc]
- * (for compiling src/rmsgfmt.ry only)
-
-== Install
-* Uninstall old gettext if exists. (You need to do this when updating 1.93.0 -> 2.0.1)
- (sudo/su on POSIX system)
- gem uninstall gettext
-
-* gem
- #from rubyforge
- (sudo/su on POSIX system)
- gem install gettext
-
-* download tar-ball
- # De-Compress archive and enter its top directory.
- (sudo/su on POSIX system)
- ruby setup.rb
-
-You can also install files in your favorite directory by
-supplying setup.rb some options. Try <tt>ruby setup.rb --help</tt>.
-
-== Usage
-===Translation
-- _: Basic translation method
- Translates the message.
- _("Hello")
-
-The gettext methods comes in 3 combinable flavors
-- n: Pluralized
- Returns singular or plural form, depending on how many you have.
- n_("Apple", "%{num} Apples", 3)
- n_(["Apple", "%{num} Apples"], 3)
-
-- p: context aware
- A context is a prefix to your translation, usefull when one word has different meanings, depending on its context.
- p_("Printer","Open") <=> p_("File","Open")
- is the same as s_("Printer|Open") <=> s_("File|Open")
-
-- s: without context
- If a translation could not be found, return the msgid without context.
- s_("Printer|Open") => "Öffnen" #translation found
- s_("Printer|Open") => "Open" #translation not found
-
-- combinations
- np_("Fruit", "Apple", "%{num} Apples", 3)
- ns_("Fruit|Apple","%{num} Apples", 3)
-
- np_(["Fruit","Apple","%{num} Apples"], 3)
- ns_(["Fruit|Apple","%{num} Apples"], 3)
-
-- N_, Nn_: Makes dynamic translation messages readable for the gettext parser.
- <tt>_(fruit)</tt> cannot be understood by the gettext parser. To help the parser find all your translations,
- you can add <tt>fruit = N_("Apple")</tt> which does not translate, but tells the parser: "Apple" needs translation.
-
- fruit = N_("Apple") # same as fruit = "Apple"
- _(fruit) # does a normal translation
-
- fruits = Nn_("Apple", "%{num} Apples")
- n_(fruits, 3)
-
-=== Bind textdomains to the classes.
-A textdomain has a translation file in each language.
-A module/class can have multi textdomains. This means the
-libraries/applications can have their own textdomains.
-
- class Foo
- include GetText
- bindtextdomain "your_app_domain_name"
- end
-
- class Book
- include GetText
- bindtextdomain "general"
- bindtextdomain "book"
- end
-
-=== Locale
-If you need to set the locale by yourself, then use:
- GetText.locale = "en_US" # translate into english from now on
- GetText.locale # => en_US
-Or
- include GetText
- set_locale "en_US"
-
-For more details and options, have a look at the samples folder or
-consult the tutorial[http://www.yotabanana.com/hiki/ruby-gettext-howto.html].
-
-== License
-This program is licenced under the same licence as Ruby(See COPYING) or
-LGPL(Lesser General Public License: http://www.gnu.org/licenses/lgpl-3.0.txt).
-
-* mofile.rb
- * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
- * Copyright (C) 2001,2002 Masahiro Sakai <s01397ms at sfc.keio.ac.jp>
-
-* gettext.rb
- * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
- * Copyright (C) 2001,2002 Masahiro Sakai <s01397ms at sfc.keio.ac.jp>
-
-* rgettext
- * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
- * Copyright (C) 2001,2002 Yasushi Shoji <yashi at atmark-techno.com>
-
-* setup.rb
- * Copyright (C) 2000-2005 Minero Aoki <aamine at loveruby.net>
- * This file is released under LGPL. See the top of the install.rb.
-
-* Others
- * Copyright (C) 2001-2009 Masao Mutoh <mutoh at highwhay.ne.jp>
-
-
-== Translators
-* Bosnian(bs) - Sanjin Sehic <saserr at gmail.com>
-* Bulgarian(bg) - Sava Chankov <sava.chankov at gmail.com>
-* Catalan(ca) - Ramon Salvadó <rsalvado at gnuine.com>
-* Chinese(Simplified)(zh_CN)
- * Yang Bob <bob.yang.dev at gmail.com> (current)
- * Yingfeng <blogyingfeng at gmail.com>
-* Chinese(Traditional)(zh_TW)
- * Yang Bob <bob.yang.dev at gmail.com> (current)
- * LIN CHUNG-YI <xmarsh at gmail.com>
-* Croatian(hr) - Sanjin Sehic <saserr at gmail.com>
-* Czech(cs) - Karel Miarka <kajism at yahoo.com>
-* Dutch(nl) - Menno Jonkers <ruby-gettext at jonkers.com>
-* Esperanto(eo) - Malte Milatz <malte at gmx-topmail.de>
-* Estonian(et) - Erkki Eilonen <erkki at itech.ee>
-* French(fr)
- * Vincent Isambart <vincent.isambart at gmail.com> (current)
- * David Sulc <davidsulc at gmail.com>
- * Laurent Sansonetti <laurent.sansonetti at gmail.com>
-* German(de)
- * Patrick Lenz <patrick at limited-overload.de> (current)
- * Detlef Reichl <detlef.reichl at gmx.org>
- * Sven Herzberg <herzi at abi02.de>
- * Sascha Ebach <se at digitale-wertschoepfung.de>
-* Greek(el) - Vassilis Rizopoulos <damphyr at gmx.net>
-* Hungarian(hu) - Tamás Tompa <tompata at gmail.com>
-* Italian(it)
- * Marco Lazzeri <marco.lazzeri at gmail.com>
- * Gabriele Renzi <surrender_it at yahoo.it>
-* Japanese(ja) - Masao Mutoh <mutomasa at gmail.com>
-* Korean(ko) - Gyoung-Yoon Noh <nohmad at gmail.com>
-* Latvian(lv) - Aivars Akots <aivars.akots at gmail.com>
-* Norwegian(nb) - Runar Ingebrigtsen <runar at mopo.no>
-* Portuguese(Brazil)(pt_BR)
- * Antonio S. de A. Terceiro <terceiro at softwarelivre.org> (current)
- * Joao Pedrosa <joaopedrosa at gmail.com>
-* Russian(ru) - Yuri Kozlov <kozlov.y at gmail.com>
-* Serbian(sr) - Slobodan Paunović" <slobodan.paunovic at gmail.com>
-* Spanish(es)
- * David Espada <davinci at escomposlinux.org> (current)
- * David Moreno Garza <damog at damog.net>
-* Swedish(sv) - Nikolai Weibull <mailing-lists.ruby-talk at rawuncut.elitemail.org>
-* Ukrainian(ua) - Alex Rootoff <rootoff at pisem.net>
-* Vietnamese(vi) - Ngoc Dao Thanh <ngocdaothanh at gmail.com>
-
-== Status of translations
-* Bosnian(bs) - 1.90.0 (old)
-* Bulgarian(bg) - 2.0.1
-* Catalan(ca) - 2.0.1
-* Croatian(hr) - 1.90.0 (old)
-* Chinese(zh_CN) - 2.0.1
-* Chinese(zh_TW) - 2.0.1
-* Czech(cs) - 1.9.0 (old)
-* Dutch(nl) - 1.90.0 (old)
-* English(default) - 2.1.0
-* Esperanto(eo) - 2.0.1
-* Estonian(et) - 2.0.1
-* French(fr) - 2.0.1
-* German(de) - 2.0.1
-* Greek(el) - 2.0.1
-* Hungarian(hu) - 2.0.1
-* Italian(it) - 1.6.0 (old)
-* Japanese(ja) - 2.1.0
-* Korean(ko) - 1.9.0 (old)
-* Latvian(lv) - 2.0.1
-* Norwegian(nb) - 2.0.1
-* Portuguese(Brazil)(pt_BR) - 2.0.1
-* Russian(ru) - 2.0.1
-* Serbian(sr) - 2.0.1
-* Spanish(es) - 2.0.1
-* Swedish(sv) - 0.8.0 (too much old)
-* Ukrainian(ua) - 2.0.1
-* Vietnamese(vi) - 2.0.1
-
-== Maintainer
-Masao Mutoh <mutomasa at gmail.com>
diff --git a/vendor/gems/gettext-2.1.0/Rakefile b/vendor/gems/gettext-2.1.0/Rakefile
deleted file mode 100644
index 1a412d3e7..000000000
--- a/vendor/gems/gettext-2.1.0/Rakefile
+++ /dev/null
@@ -1,234 +0,0 @@
-#
-# Rakefile for Ruby-GetText-Package
-#
-# This file maintains Ruby-GetText-Package.
-#
-# Use setup.rb or gem for installation.
-# You don't need to use this file directly.
-#
-# Copyright(c) 2005-2009 Masao Mutoh
-# This program is licenced under the same licence as Ruby.
-#
-
-$:.unshift "./lib"
-
-require 'rubygems'
-require 'rake'
-require 'rake/packagetask'
-require 'rake/gempackagetask'
-require 'rake/rdoctask'
-require 'rake/testtask'
-require 'gettext/version'
-
-PKG_VERSION = GetText::VERSION
-
-############################################################
-# GetText tasks for developing
-############################################################
-desc "Create lib/gettext/tools/poparser.rb"
-task :poparser do
- poparser_path = "lib/gettext/tools/poparser.rb"
- racc = File.join(Config::CONFIG['bindir'], "racc")
- if ! FileTest.exist?(racc)
- puts "racc was not found: #{racc}"
- exit 1
- else FileTest.exist?(racc)
- ruby "#{racc} -g src/poparser.ry -o src/poparser.tmp.rb"
- $stderr.puts %Q[ruby #{racc} -g src/poparser.ry -o src/poparser.tmp.rb]
-
- file = open(poparser_path, "w")
-
- file.print "=begin\n"
- file.print <<-EOS
- poparser.rb - Generate a .mo
-
- Copyright (C) 2003-2009 Masao Mutoh <mutomasa at gmail.com>
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-EOS
- file.print "=end\n\n"
-
- tmpfile = open("src/poparser.tmp.rb")
- file.print tmpfile.read
- file.close
- tmpfile.close
- File.delete("src/poparser.tmp.rb")
- $stderr.puts "Create #{poparser_path}."
- end
-end
-
-
-desc "Create *.mo from *.po"
-task :makemo do
- require 'gettext/tools'
- GetText.create_mofiles
-
- $stderr.puts "Create samples mo files."
- GetText.create_mofiles(
- :po_root => "samples/po", :mo_root => "samples/locale")
-
- $stderr.puts "Create samples/cgi mo files."
- GetText.create_mofiles(
- :po_root => "samples/cgi/po", :mo_root => "samples/cgi/locale")
-
- $stderr.puts "Create test mo files."
- GetText.create_mofiles(
- :po_root => "test/po", :mo_root => "test/locale")
-end
-
-desc "Update pot/po files to match new version."
-task :updatepo do
- begin
- require 'gettext'
- require 'gettext/tools/poparser'
- require 'gettext/tools'
- rescue LoadError
- puts "gettext/tools/poparser was not found."
- end
-
- #lib/gettext/*.rb -> rgettext.po
- GetText.update_pofiles("rgettext",
- Dir.glob("lib/**/*.rb") + ["src/poparser.ry"],
- "ruby-gettext #{GetText::VERSION}")
-end
-
-desc "Gather the newest po files. (for me)"
-task :gatherpo => [:updatepo] do
- mkdir_p "pofiles/original" unless FileTest.exist? "pofiles/original"
- Dir.glob("**/*.pot").each do |f|
- unless /^(pofiles|test)/ =~ f
- copy f, "pofiles/original/"
- end
- end
- Dir.glob("**/*.po").each do |f|
- unless /^(pofiles|test)/ =~ f
- lang = /po\/([^\/]*)\/(.*.po)/.match(f).to_a[1]
- mkdir_p "pofiles/#{lang}" unless FileTest.exist? "pofiles/#{lang}"
- copy f, "pofiles/#{lang}/"
- Dir.glob("pofiles/original/*.pot").each do |f|
- newpo = "pofiles/#{lang}/#{File.basename(f, ".pot")}.po"
- copy f, newpo unless FileTest.exist? newpo
- end
- end
- end
-end
-
-def mv_pofiles(src_dir, target_dir, lang)
- target = File.join(target_dir, lang)
- unless File.exist?(target)
- mkdir_p target
- sh "cvs add #{target}"
- end
- cvs_add_targets = ""
- Dir.glob(File.join(target_dir, "ja/*.po")).sort.each do |f|
- srcfile = File.join(src_dir, File.basename(f))
- if File.exist?(srcfile)
- unless File.exist?(File.join(target, File.basename(f)))
- cvs_add_targets << File.join(target, File.basename(f)) + " "
- end
- mv srcfile, target, :verbose => true
- else
- puts "mv #{srcfile} #{target}/ -- skipped"
- end
- end
- sh "cvs add #{cvs_add_targets}" if cvs_add_targets.size > 0
-end
-
-desc "Deploy localized pofiles to current source tree. (for me)"
-task :deploypo do
- srcdir = ENV["SRCDIR"] ||= File.join(ENV["HOME"], "pofiles")
- lang = ENV["LOCALE"]
- unless lang
- puts "USAGE: rake deploypo [SRCDIR=#{ENV["HOME"]}/pofiles] LOCALE=ja"
- exit
- end
- puts "SRCDIR = #{srcdir}, LOCALE = #{lang}"
-
- mv_pofiles(srcdir, "po", lang)
- mv_pofiles(srcdir, "samples/cgi/po", lang)
- mv_pofiles(srcdir, "samples/po", lang)
-end
-
-############################################################
-# Package tasks
-############################################################
-desc "Create gem and tar.gz"
-spec = Gem::Specification.new do |s|
- s.name = 'gettext'
- s.version = PKG_VERSION
- s.summary = 'Ruby-GetText-Package is a libary and tools to localize messages.'
- s.author = 'Masao Mutoh'
- s.email = 'mutomasa at gmail.com'
- s.homepage = 'http://gettext.rubyforge.org/'
- s.rubyforge_project = "gettext"
- s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
- s.require_path = 'lib'
- s.executables = Dir.entries('bin').delete_if {|item| /^\.|CVS|~$/ =~ item }
- s.bindir = 'bin'
- s.add_dependency('locale', '>= 2.0.5')
- s.has_rdoc = true
- s.description = <<-EOF
- Ruby-GetText-Package is a GNU GetText-like program for Ruby.
- The catalog file(po-file) is same format with GNU GetText.
- So you can use GNU GetText tools for maintaining.
- EOF
-end
-
-Rake::PackageTask.new("ruby-gettext-package", PKG_VERSION) do |o|
- o.package_files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
- o.need_tar_gz = true
- o.need_zip = false
-end
-
-Rake::GemPackageTask.new(spec) do |p|
- p.gem_spec = spec
- p.need_tar_gz = false
- p.need_zip = false
-end
-
-task :package => [:makemo]
-
-############################################################
-# Misc tasks
-############################################################
-desc 'Run all tests'
-task :test do
- Dir.chdir("test") do
- if RUBY_PLATFORM =~ /win32/
- sh "rake.bat", "test"
- else
- sh "rake", "test"
- end
- end
-end
-
-Rake::RDocTask.new { |rdoc|
- begin
- allison = `allison --path`.chop
- rescue
- allison = ''
- end
- rdoc.rdoc_dir = 'doc'
- rdoc.title = "Ruby-GetText-Package API Reference"
- rdoc.options << '--line-numbers' << '--inline-source'
- rdoc.rdoc_files.include('README.rdoc', 'ChangeLog')
- rdoc.rdoc_files.include('lib/**/*.rb')
- rdoc.template = allison if allison.size > 0
-}
-
-desc "Publish the release files to RubyForge."
-task :release => [ :package ] do
- require 'rubyforge'
-
- rubyforge = RubyForge.new
- rubyforge.configure
- rubyforge.login
- rubyforge.add_release("gettext", "gettext",
- "Ruby-GetText-Package #{PKG_VERSION}",
- "pkg/gettext-#{PKG_VERSION}.gem",
- "pkg/ruby-gettext-package-#{PKG_VERSION}.tar.gz")
-end
-
-desc "Setup Ruby-GetText-Package. (for setup.rb)"
-task :setup => [:makemo]
diff --git a/vendor/gems/gettext-2.1.0/benchmark/1.93.0.txt b/vendor/gems/gettext-2.1.0/benchmark/1.93.0.txt
deleted file mode 100644
index 06adce0da..000000000
--- a/vendor/gems/gettext-2.1.0/benchmark/1.93.0.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-"1.93.0"
- user system total real
-bindtextdomain 2.580000 0.620000 3.200000 ( 3.237802)
-set_locale 18.920000 2.540000 21.460000 ( 21.950700)
-gettext ja 1.870000 0.780000 2.650000 ( 2.696046)
-gettext en (not found) 1.830000 0.820000 2.650000 ( 2.697443)
-ngettext ja 4.260000 1.280000 5.540000 ( 5.689135)
-ngettext en (not found) 5.300000 1.430000 6.730000 ( 6.889310)
diff --git a/vendor/gems/gettext-2.1.0/benchmark/2.0.0.txt b/vendor/gems/gettext-2.1.0/benchmark/2.0.0.txt
deleted file mode 100644
index 16efd7c34..000000000
--- a/vendor/gems/gettext-2.1.0/benchmark/2.0.0.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-"2.0.0"
- user system total real
-bindtextdomain 2.350000 0.490000 2.840000 ( 2.837863)
-set_locale 2.700000 0.630000 3.330000 ( 3.330341)
-gettext ja 74.160000 8.680000 82.840000 ( 82.886468)
-gettext en (not found) 62.030000 8.910000 70.940000 ( 70.976801)
-ngettext ja 75.610000 8.660000 84.270000 ( 84.316501)
-ngettext en (not found) 68.940000 9.630000 78.570000 ( 78.630459)
diff --git a/vendor/gems/gettext-2.1.0/benchmark/2.0.4.txt b/vendor/gems/gettext-2.1.0/benchmark/2.0.4.txt
deleted file mode 100644
index 40b0152e2..000000000
--- a/vendor/gems/gettext-2.1.0/benchmark/2.0.4.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-"2.0.4"
- user system total real
-bindtextdomain 1.960000 0.440000 2.400000 ( 2.439888)
-set_locale 5.970000 2.070000 8.040000 ( 8.050040)
-gettext ja 1.210000 0.390000 1.600000 ( 1.604350)
-gettext en (not found) 1.220000 0.370000 1.590000 ( 1.593880)
-ngettext ja 2.200000 0.500000 2.700000 ( 2.699904)
-ngettext en (not found) 1.850000 0.450000 2.300000 ( 2.318696)
-create object ja 168.840000 26.220000 195.060000 (195.235649)
-create object en 222.410000 32.830000 255.240000 (255.385031)
-190140K
diff --git a/vendor/gems/gettext-2.1.0/benchmark/2.1.0.txt b/vendor/gems/gettext-2.1.0/benchmark/2.1.0.txt
deleted file mode 100644
index 6eee8ddab..000000000
--- a/vendor/gems/gettext-2.1.0/benchmark/2.1.0.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-"2.1.0"
- user system total real
-bindtextdomain 1.320000 0.000000 1.320000 ( 1.348555)
-set_locale 3.990000 0.000000 3.990000 ( 4.073860)
-gettext ja 1.130000 0.000000 1.130000 ( 1.144062)
-gettext en (not found) 1.130000 0.000000 1.130000 ( 1.141781)
-ngettext ja 1.950000 0.000000 1.950000 ( 1.991278)
-ngettext en (not found) 1.650000 0.000000 1.650000 ( 1.676332)
-create object ja 1.210000 0.000000 1.210000 ( 1.224649)
-create object en 1.220000 0.000000 1.220000 ( 1.234247)
-104K
diff --git a/vendor/gems/gettext-2.1.0/benchmark/benchmark.rb b/vendor/gems/gettext-2.1.0/benchmark/benchmark.rb
deleted file mode 100644
index dbe7fc443..000000000
--- a/vendor/gems/gettext-2.1.0/benchmark/benchmark.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-$:.unshift "../../locale/lib"
-$:.unshift "../../gettext/lib"
-
-#require 'rubygems'
-require 'benchmark'
-require 'gettext'
-
-num = 100000
-
-def memory
- pid = Process.pid
- map = `pmap -d #{pid}`
- map.split("\n").last.strip.squeeze(' ').split(' ')[3].to_i
-end
-
-curr_mem = memory
-
-class Test
- include GetText
- bindtextdomain("test1", :path => "../test/locale")
- def test
- _("language")
- end
-end
-
-p GetText::VERSION
-Benchmark.bm(25){|x|
- x.report("bindtextdomain"){ num.times{|i|
- GetText.bindtextdomain("test1", :path => "../test/locale")
- #GetText.bindtextdomain("test1", "../test/locale")
- } }
- x.report("set_locale"){ num.times{|i|
- GetText.locale = "ja"
- } }
- GetText.locale = "ja"
- x.report("gettext ja"){ num.times{|i|
- GetText._("language")
- } }
- GetText.locale = "en"
- x.report("gettext en (not found)"){ num.times{|i|
- GetText._("language")
- } }
-
- GetText.bindtextdomain("plural", :path => "../test/locale")
- #GetText.bindtextdomain("plural", "../test/locale")
- GetText.locale = "ja"
- x.report("ngettext ja"){ (num / 2).times{|i|
- GetText.n_("single", "plural", 1)
- GetText.n_("single", "plural", 2)
- } }
- GetText.locale = "en"
- x.report("ngettext en (not found)"){ (num / 2).times{|i|
- GetText.n_("single", "plural", 1)
- GetText.n_("single", "plural", 2)
- } }
-
- GetText.locale = "ja"
- x.report("create object ja"){ num.times{|i|
- Test.new.test
- } }
- GetText.locale = "en"
- x.report("create object en"){ num.times{|i|
- Test.new.test
- } }
-}
-
-GC.start
-puts "#{memory - curr_mem}K "
diff --git a/vendor/gems/gettext-2.1.0/benchmark/test.rb b/vendor/gems/gettext-2.1.0/benchmark/test.rb
deleted file mode 100644
index 576587607..000000000
--- a/vendor/gems/gettext-2.1.0/benchmark/test.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'benchmark'
-
-def test(s)
- ret = ""
- if s =~ /^\#<|^$/ or s == "GetText"
- #if s.size == 0 or s[0..1] = "#<" or s == "GetText"
- ret = Object
- end
- ret
-end
-
-num = 100000
-
-Benchmark.bm(25){|x|
- x.report("test matched"){ num.times{|i|
- test("#<foo>")
- } }
- x.report("test matched nodata"){ num.times{|i|
- test("")
- } }
- x.report("test matched GetText"){ num.times{|i|
- test("GetText")
- } }
- x.report("test not matched"){ num.times{|i|
- test("FooBar")
- } }
-
-}
diff --git a/vendor/gems/gettext-2.1.0/bin/rgettext b/vendor/gems/gettext-2.1.0/bin/rgettext
deleted file mode 100755
index 74eefbaec..000000000
--- a/vendor/gems/gettext-2.1.0/bin/rgettext
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /usr/bin/ruby
-=begin
- rgettext - ruby version of xgettext
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
-=end
-
-begin
- require 'gettext/rgettext'
-rescue LoadError
- begin
- require 'rubygems'
- require 'gettext/tools/rgettext'
- rescue LoadError
- raise 'Ruby-GetText-Package are not installed.'
- end
-end
-
-GetText.rgettext
diff --git a/vendor/gems/gettext-2.1.0/bin/rmsgfmt b/vendor/gems/gettext-2.1.0/bin/rmsgfmt
deleted file mode 100755
index 1776ca3eb..000000000
--- a/vendor/gems/gettext-2.1.0/bin/rmsgfmt
+++ /dev/null
@@ -1,22 +0,0 @@
-#! /usr/bin/ruby
-=begin
- rgettext - ruby version of xgettext
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-begin
- require 'gettext/tools/rmsgfmt'
-rescue LoadError
- begin
- require 'rubygems'
- require 'gettext/tools/rmsgfmt'
- rescue LoadError
- raise 'Ruby-GetText-Package are not installed.'
- end
-end
-
-GetText.rmsgfmt
diff --git a/vendor/gems/gettext-2.1.0/bin/rmsgmerge b/vendor/gems/gettext-2.1.0/bin/rmsgmerge
deleted file mode 100755
index cffc7f431..000000000
--- a/vendor/gems/gettext-2.1.0/bin/rmsgmerge
+++ /dev/null
@@ -1,22 +0,0 @@
-#! /usr/bin/ruby
-=begin
- rmsgmerge - ruby version of msgmerge
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-begin
- require 'gettext/tools/rmsgmerge'
-rescue LoadError
- begin
- require 'rubygems'
- require 'gettext/tools/rmsgmerge'
- rescue LoadError
- raise 'Ruby-GetText-Package are not installed.'
- end
-end
-
-GetText.rmsgmerge
diff --git a/vendor/gems/gettext-2.1.0/data/locale/bg/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/bg/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 0d472330a..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/bg/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/bs/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/bs/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index c3089dfa4..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/bs/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/ca/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/ca/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 64a6e1214..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/ca/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/cs/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/cs/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index aff6cc772..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/cs/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/de/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/de/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 38b251c89..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/de/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/el/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/el/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 9d55f5622..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/el/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/eo/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/eo/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index f8bc3f95b..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/eo/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/es/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/es/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 342967972..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/es/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/et/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/et/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index a376968cb..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/et/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/fr/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/fr/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index b1dcadb50..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/fr/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/hr/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/hr/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 19a2eaea2..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/hr/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/hu/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/hu/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index e5ad0ecc4..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/hu/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/it/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/it/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 4377e7f2a..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/it/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/ja/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/ja/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 3712a3375..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/ja/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/ko/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/ko/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 640d4eda5..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/ko/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/lv/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/lv/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index f185e3bff..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/lv/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/nb/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/nb/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index fdcb91706..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/nb/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/nl/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/nl/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 340cbf4e8..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/nl/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/pt_BR/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/pt_BR/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 7fc736c4a..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/pt_BR/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/ru/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/ru/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 67dea69da..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/ru/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/sr/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/sr/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index eae0f2b09..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/sr/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/sv/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/sv/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 9ce619c10..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/sv/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/ua/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/ua/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 1b62565e1..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/ua/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/vi/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/vi/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 8ca8df16a..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/vi/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/zh/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/zh/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index bacba0073..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/zh/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/data/locale/zh_TW/LC_MESSAGES/rgettext.mo b/vendor/gems/gettext-2.1.0/data/locale/zh_TW/LC_MESSAGES/rgettext.mo
deleted file mode 100644
index 707aa3983..000000000
--- a/vendor/gems/gettext-2.1.0/data/locale/zh_TW/LC_MESSAGES/rgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/gettext.gemspec b/vendor/gems/gettext-2.1.0/gettext.gemspec
deleted file mode 100644
index f9125a591..000000000
--- a/vendor/gems/gettext-2.1.0/gettext.gemspec
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
- s.name = %q{gettext}
- s.version = "2.0.0"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
- s.authors = ["Masao Mutoh"]
- s.date = %q{2009-02-06}
- s.description = %q{Ruby-GetText-Package is a GNU GetText-like program for Ruby. The catalog file(po-file) is same format with GNU GetText. So you can use GNU GetText tools for maintaining.}
- s.email = %q{mutomasa at gmail.com}
- s.executables = ["rgettext", "rmsgmerge", "rmsgfmt"]
- s.extra_rdoc_files = ["lib/gettext.rb", "lib/gettext/tools.rb", "lib/gettext/core_ext/string.rb", "lib/gettext/version.rb", "README.rdoc"]
- s.files = ["Manifest", "po/hr/rgettext.po", "po/cs/rgettext.po",
- "po/el/rgettext.po", "po/bs/rgettext.po", "po/et/rgettext.po", "po/vi/rgettext.po", "po/pt_BR/rgettext.po", "po/nb/rgettext.po", "po/ko/rgettext.po", "po/lv/rgettext.po", "po/ru/rgettext.po", "po/zh_TW/rgettext.po", "po/rgettext.pot", "po/ca/rgettext.po", "po/de/rgettext.po", "po/de/#rails.po#", "po/es/rgettext.po", "po/eo/rgettext.po", "po/nl/rgettext.po", "po/sr/rgettext.po", "po/hu/rgettext.po", "po/zh/rgettext.po", "po/ja/rgettext.po", "po/ja/rails.po.old", "po/bg/rgettext.po", "po/ua/rgettext.po", "po/fr/rgettext.po", "po/sv/rgettext.po", "po/it/rgettext.po", "lib/gettext.rb", "lib/gettext/cgi.rb", "lib/gettext/utils.rb", "lib/gettext/class_info.rb", "lib/gettext/tools.rb", "lib/gettext/core_ext/iconv.rb", "lib/gettext/core_ext/string.rb", "lib/gettext/poparser.rb", "lib/gettext/version.rb", "lib/gettext/mofile.rb", "lib/gettext/parser/glade.rb", "lib/gettext/parser/erb.rb", "lib/gettext/parser/ruby.rb", "lib/gettext/textdomain.rb", "lib/gettext/textdomain_manager.rb", "lib/gettext/tools/rgettext.rb", "lib/gettext/tools/rmsgmerge.rb", "lib/gettext/tools/rmsgfmt.rb", "test/test_textdomain.rb", "test/po/po/plural.po", "test/po/cr/plural.po", "test/po/sl/plural.po", "test/po/li/plural.po", "test/po/ir/plural.po", "test/po/ja/sgettext.po", "test/po/ja/test2.po", "test/po/ja/pgettext.po", "test/po/ja/test1.po", "test/po/ja/nsgettext.po", "test/po/ja/plural_error.po", "test/po/ja/plural.po", "test/po/ja/test6.po", "test/po/ja/rubyparser.po", "test/po/ja/npgettext.po", "test/po/fr/test2.po", "test/po/fr/test1.po", "test/po/fr/plural_error.po", "test/po/fr/plural.po", "test/po/fr/test6.po", "test/po/la/plural_error.po", "test/po/la/plural.po", "test/po/da/plural_error.po", "test/po/da/plural.po", "test/test_textdomain_toplevel.rb", "test/test_gettext.rb", "test/test_parser.rb", "test/README", "test/test_string.rb", "test/Rakefile", "test/test_class_info.rb", "test/test_textdomain_multi.rb", "test/testlib/simple.rb", "test/testlib/gettext.rb", "test/testlib/gladeparser.glade", "test/testlib/npgettext.rb", "test/testlib/multi_textdomain.rb", "test/testlib/erb.rhtml", "test/testlib/nsgettext.rb", "test/testlib/erb.rxml", "test/testlib/pgettext.rb", "test/testlib/helper.rb", "test/testlib/N_.rb", "test/testlib/ngettext.rb", "test/testlib/sgettext.rb", "bin/rgettext", "bin/rmsgmerge", "bin/rmsgfmt", "Rakefile", "README.rdoc", "ChangeLog", "src/poparser.ry", "samples/cgi/po/hr/main.po", "samples/cgi/po/hr/hellolib.po", "samples/cgi/po/hr/helloerb1.po", "samples/cgi/po/hr/helloerb2.po", "samples/cgi/po/cs/main.po", "samples/cgi/po/cs/hellolib.po", "samples/cgi/po/cs/helloerb1.po", "samples/cgi/po/cs/helloerb2.po", "samples/cgi/po/hellolib.pot", "samples/cgi/po/el/main.po", "samples/cgi/po/el/hellolib.po", "samples/cgi/po/el/helloerb1.po", "samples/cgi/po/el/helloerb2.po", "samples/cgi/po/bs/main.po", "samples/cgi/po/bs/hellolib.po", "samples/cgi/po/bs/helloerb1.po", "samples/cgi/po/bs/helloerb2.po", "samples/cgi/po/vi/main.po", "samples/cgi/po/vi/hellolib.po", "samples/cgi/po/vi/helloerb1.po", "samples/cgi/po/vi/helloerb2.po", "samples/cgi/po/pt_BR/main.po", "samples/cgi/po/pt_BR/hellolib.po", "samples/cgi/po/pt_BR/helloerb1.po", "samples/cgi/po/pt_BR/helloerb2.po", "samples/cgi/po/nb/main.po", "samples/cgi/po/nb/hellolib.po", "samples/cgi/po/nb/helloerb1.po", "samples/cgi/po/nb/helloerb2.po", "samples/cgi/po/ko/main.po", "samples/cgi/po/ko/hellolib.po", "samples/cgi/po/ko/helloerb1.po", "samples/cgi/po/ko/helloerb2.po", "samples/cgi/po/lv/main.po", "samples/cgi/po/lv/hellolib.po", "samples/cgi/po/lv/helloerb1.po", "samples/cgi/po/lv/helloerb2.po", "samples/cgi/po/ru/main.po", "samples/cgi/po/ru/hellolib.po", "samples/cgi/po/ru/helloerb1.po", "samples/cgi/po/ru/helloerb2.po", "samples/cgi/po/zh_TW/main.po", "samples/cgi/po/zh_TW/hellolib.po", "samples/cgi/po/zh_TW/helloerb1.po", "samples/cgi/po/zh_TW/helloerb2.po", "samples/cgi/po/ca/main.po", "samples/cgi/po/ca/hellolib.po", "samples/cgi/po/ca/helloerb1.po", "samples/cgi/po/ca/helloerb2.po", "samples/cgi/po/de/main.po", "samples/cgi/po/de/hellolib.po", "samples/cgi/po/de/helloerb1.po", "samples/cgi/po/de/helloerb2.po", "samples/cgi/po/es/main.po", "samples/cgi/po/es/hellolib.po", "samples/cgi/po/es/helloerb1.po", "samples/cgi/po/es/helloerb2.po", "samples/cgi/po/eo/main.po", "samples/cgi/po/eo/hellolib.po", "samples/cgi/po/eo/helloerb1.po", "samples/cgi/po/eo/helloerb2.po", "samples/cgi/po/nl/main.po", "samples/cgi/po/nl/hellolib.po", "samples/cgi/po/nl/helloerb1.po", "samples/cgi/po/nl/helloerb2.po", "samples/cgi/po/sr/main.po", "samples/cgi/po/sr/hellolib.po", "samples/cgi/po/sr/helloerb1.po", "samples/cgi/po/sr/helloerb2.po", "samples/cgi/po/hu/main.po", "samples/cgi/po/hu/hellolib.po", "samples/cgi/po/hu/helloerb1.po", "samples/cgi/po/hu/helloerb2.po", "samples/cgi/po/helloerb1.pot", "samples/cgi/po/helloerb2.pot", "samples/cgi/po/zh/main.po", "samples/cgi/po/zh/hellolib.po", "samples/cgi/po/zh/helloerb1.po", "samples/cgi/po/zh/helloerb2.po", "samples/cgi/po/ja/main.po", "samples/cgi/po/ja/hellolib.po", "samples/cgi/po/ja/helloerb1.po", "samples/cgi/po/ja/helloerb2.po", "samples/cgi/po/bg/main.po", "samples/cgi/po/bg/hellolib.po", "samples/cgi/po/bg/helloerb1.po", "samples/cgi/po/bg/helloerb2.po", "samples/cgi/po/main.pot", "samples/cgi/po/ua/main.po", "samples/cgi/po/ua/hellolib.po", "samples/cgi/po/ua/helloerb1.po", "samples/cgi/po/ua/helloerb2.po", "samples/cgi/po/fr/main.po", "samples/cgi/po/fr/hellolib.po", "samples/cgi/po/fr/helloerb1.po", "samples/cgi/po/fr/helloerb2.po", "samples/cgi/po/it/main.po", "samples/cgi/po/it/hellolib.po", "samples/cgi/po/it/helloerb1.po", "samples/cgi/po/it/helloerb2.po", "samples/cgi/hellolib.rb", "samples/cgi/helloerb1.cgi", "samples/cgi/cookie.cgi", "samples/cgi/README", "samples/cgi/other.rhtml", "samples/cgi/Rakefile", "samples/cgi/gettext.css", "samples/cgi/helloerb2.cgi", "samples/cgi/http.rb", "samples/cgi/helloerb.rhtml", "samples/cgi/index.cgi", "samples/po/hello_plural.pot", "samples/po/hr/hello_glade2.po", "samples/po/hr/hello_plural.po", "samples/po/hr/hello_noop.po", "samples/po/hr/hello.po", "samples/po/hr/hello2.po", "samples/po/hr/hello_tk.po", "samples/po/hr/hello_gtk.po", "samples/po/cs/hello_glade2.po", "samples/po/cs/hello_plural.po", "samples/po/cs/hello_noop.po", "samples/po/cs/hello.po", "samples/po/cs/hello2.po", "samples/po/cs/hello_tk.po", "samples/po/cs/hello_gtk.po", "samples/po/el/hello_glade2.po", "samples/po/el/hello_plural.po", "samples/po/el/hello_noop.po", "samples/po/el/hello.po", "samples/po/el/hello2.po", "samples/po/el/hello_tk.po", "samples/po/el/hello_gtk.po", "samples/po/bs/hello_glade2.po", "samples/po/bs/hello_plural.po", "samples/po/bs/hello_noop.po", "samples/po/bs/hello.po", "samples/po/bs/hello2.po", "samples/po/bs/hello_tk.po", "samples/po/bs/hello_gtk.po", "samples/po/vi/hello_glade2.po", "samples/po/vi/hello_plural.po", "samples/po/vi/hello_noop.po", "samples/po/vi/hello.po", "samples/po/vi/hello2.po", "samples/po/vi/hello_tk.po", "samples/po/vi/hello_gtk.po", "samples/po/pt_BR/hello_glade2.po", "samples/po/pt_BR/hello_plural.po", "samples/po/pt_BR/hello_noop.po", "samples/po/pt_BR/hello.po", "samples/po/pt_BR/hello2.po", "samples/po/pt_BR/hello_tk.po", "samples/po/pt_BR/hello_gtk.po", "samples/po/nb/hello_glade2.po", "samples/po/nb/hello_plural.po", "samples/po/nb/hello_noop.po", "samples/po/nb/hello.po", "samples/po/nb/hello2.po", "samples/po/nb/hello_tk.po", "samples/po/nb/hello_gtk.po", "samples/po/hello_noop.pot", "samples/po/ko/hello_glade2.po", "samples/po/ko/hello_plural.po", "samples/po/ko/hello_noop.po", "samples/po/ko/hello.po", "samples/po/ko/hello2.po", "samples/po/ko/hello_tk.po", "samples/po/ko/hello_gtk.po", "samples/po/lv/hello_glade2.po", "samples/po/lv/hello_plural.po", "samples/po/lv/hello_noop.po", "samples/po/lv/hello.po", "samples/po/lv/hello2.po", "samples/po/lv/hello_tk.po", "samples/po/lv/hello_gtk.po", "samples/po/ru/hello_glade2.po", "samples/po/ru/hello_plural.po", "samples/po/ru/hello_noop.po", "samples/po/ru/hello.po", "samples/po/ru/hello2.po", "samples/po/ru/hello_tk.po", "samples/po/ru/hello_gtk.po", "samples/po/zh_TW/hello_glade2.po", "samples/po/zh_TW/hello_plural.po", "samples/po/zh_TW/hello_noop.po", "samples/po/zh_TW/hello.po", "samples/po/zh_TW/hello2.po", "samples/po/zh_TW/hello_tk.po", "samples/po/zh_TW/hello_gtk.po", "samples/po/ca/hello_glade2.po", "samples/po/ca/hello_plural.po", "samples/po/ca/hello_noop.po", "samples/po/ca/hello.po", "samples/po/ca/hello2.po", "samples/po/ca/hello_tk.po", "samples/po/ca/hello_gtk.po", "samples/po/hello2.pot", "samples/po/de/hello_glade2.po", "samples/po/de/hello_plural.po", "samples/po/de/hello_noop.po", "samples/po/de/hello.po", "samples/po/de/hello2.po", "samples/po/de/hello_tk.po", "samples/po/de/hello_gtk.po", "samples/po/es/hello_glade2.po", "samples/po/es/hello_plural.po", "samples/po/es/hello_noop.po", "samples/po/es/hello.po", "samples/po/es/hello2.po", "samples/po/es/hello_tk.po", "samples/po/es/hello_gtk.po", "samples/po/hello_gtk.pot", "samples/po/eo/hello_glade2.po", "samples/po/eo/hello_plural.po", "samples/po/eo/hello_noop.po", "samples/po/eo/hello.po", "samples/po/eo/hello2.po", "samples/po/eo/hello_tk.po", "samples/po/eo/hello_gtk.po", "samples/po/nl/hello_glade2.po", "samples/po/nl/hello_plural.po", "samples/po/nl/hello_noop.po", "samples/po/nl/hello.po", "samples/po/nl/hello2.po", "samples/po/nl/hello_tk.po", "samples/po/nl/hello_gtk.po", "samples/po/sr/hello_glade2.po", "samples/po/sr/hello_plural.po", "samples/po/sr/hello_noop.po", "samples/po/sr/hello.po", "samples/po/sr/hello2.po", "samples/po/sr/hello_tk.po", "samples/po/sr/hello_gtk.po", "samples/po/hello.pot", "samples/po/hu/hello_glade2.po", "samples/po/hu/hello_plural.po", "samples/po/hu/hello_noop.po", "samples/po/hu/hello.po", "samples/po/hu/hello2.po", "samples/po/hu/hello_tk.po", "samples/po/hu/hello_gtk.po", "samples/po/zh/hello_glade2.po", "samples/po/zh/hello_plural.po", "samples/po/zh/hello_noop.po", "samples/po/zh/hello.po", "samples/po/zh/hello2.po", "samples/po/zh/hello_tk.po", "samples/po/zh/hello_gtk.po", "samples/po/test.rb", "samples/po/ja/hello_glade2.po", "samples/po/ja/hello_plural.po", "samples/po/ja/hello_noop.po", "samples/po/ja/hello.po", "samples/po/ja/hello2.po", "samples/po/ja/hello_tk.po", "samples/po/ja/hello_gtk.po", "samples/po/bg/hello_glade2.po", "samples/po/bg/hello_plural.po", "samples/po/bg/hello_noop.po", "samples/po/bg/hello.po", "samples/po/bg/hello2.po", "samples/po/bg/hello_tk.po", "samples/po/bg/hello_gtk.po", "samples/po/ua/hello_glade2.po", "samples/po/ua/hello_plural.po", "samples/po/ua/hello_noop.po", "samples/po/ua/hello.po", "samples/po/ua/hello2.po", "samples/po/ua/hello_tk.po", "samples/po/ua/hello_gtk.po", "samples/po/fr/hello_glade2.po", "samples/po/fr/hello_plural.po", "samples/po/fr/hello_noop.po", "samples/po/fr/hello.po", "samples/po/fr/hello2.po", "samples/po/fr/hello_tk.po", "samples/po/fr/hello_gtk.po", "samples/po/hello_tk.pot", "samples/po/sv/hello_glade2.po", "samples/po/sv/hello_plural.po", "samples/po/sv/hello_noop.po", "samples/po/sv/hello.po", "samples/po/sv/hello2.po", "samples/po/sv/hello_tk.po", "samples/po/sv/hello_gtk.po", "samples/po/hello_glade2.pot", "samples/po/it/hello_glade2.po", "samples/po/it/hello_plural.po", "samples/po/it/hello_noop.po", "samples/po/it/hello.po", "samples/po/it/hello2.po", "samples/po/it/hello_tk.po", "samples/po/it/hello_gtk.po", "samples/hello_noop.rb", "samples/hello_plural.rb", "samples/makemo.rb", "samples/hello_glade2.glade", "samples/hello.rb", "samples/hello_gtk2.rb", "samples/README", "samples/hello_glade2.rb", "samples/hello2.rb", "samples/hello_tk.rb", "gettext.gemspec"]
- s.has_rdoc = true
- s.homepage = %q{http://gettext.rubyforge.org/}
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "GetText", "--main", "README.rdoc"]
- s.require_paths = ["lib"]
- s.rubyforge_project = %q{gettext}
- s.rubygems_version = %q{1.3.1}
- s.summary = %q{Ruby-GetText-Package is a libary and tools to localize messages.}
- s.test_files = ["test/test_textdomain.rb", "test/test_textdomain_toplevel.rb", "test/test_gettext.rb", "test/test_parser.rb", "test/test_string.rb", "test/test_class_info.rb", "test/test_textdomain_multi.rb"]
-
- if s.respond_to? :specification_version then
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
- s.specification_version = 2
-
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
- s.add_runtime_dependency(%q<locale>, [">= 0"])
- s.add_development_dependency(%q<echoe>, [">= 0"])
- else
- s.add_dependency(%q<locale>, [">= 0"])
- s.add_dependency(%q<echoe>, [">= 0"])
- end
- else
- s.add_dependency(%q<locale>, [">= 0"])
- s.add_dependency(%q<echoe>, [">= 0"])
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext.rb b/vendor/gems/gettext-2.1.0/lib/gettext.rb
deleted file mode 100644
index 30a0e83b8..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext.rb
+++ /dev/null
@@ -1,310 +0,0 @@
-=begin
- gettext.rb - GetText module
-
- Copyright (C) 2001-2009 Masao Mutoh
- Copyright (C) 2001-2003 Masahiro Sakai
-
- Masao Mutoh <mutomasa at gmail.com>
- Masahiro Sakai <s01397ms@sfc.keio.ac.jp>
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-if Object.constants.include? "Gem"
- begin
- begin
- gem 'locale', '>=2.0.4'
- rescue Gem::LoadError
- end
- rescue NoMethodError
- else LoadError
- end
-end
-
-require 'locale'
-raise "Install locale as gem or uninstall old gettext" unless Locale.respond_to? :candidates
-
-require 'gettext/version'
-require 'gettext/runtime/textdomain_manager'
-
-module GetText
- # If the textdomain isn't bound when calling GetText.textdomain, this error is raised.
- class NoboundTextDomainError < RuntimeError
- def initialize(domainname)
- @domainname = domainname
- end
- def message
- "#{@domainname} is not bound."
- end
- end
-
- extend self
-
- def self.included(mod) #:nodoc:
- mod.extend self
- end
-
- # bindtextdomain(domainname, options = {})
- #
- # Bind a textdomain(%{path}/%{locale}/LC_MESSAGES/%{domainname}.mo) to
- # your program.
- # Normally, the texdomain scope becomes the class/module(and parent
- # classes/included modules).
- #
- # * domainname: the textdomain name.
- # * options: options as an Hash.
- # * :path - the path to the mo-files. When the value is nil, it will search default paths such as
- # /usr/share/locale, /usr/local/share/locale)
- # * :output_charset - The output charset. Same with GetText.set_output_charset. Usually, L10n
- # library doesn't use this option. Application may use this once.
- # * Returns: the GetText::TextDomainManager.
- #
- def bindtextdomain(domainname, *options)
- bindtextdomain_to(self, domainname, *options)
- end
-
- # Includes GetText module and bind a textdomain to a class.
- # * klass: the target ruby class.
- # * domainname: the textdomain name.
- # * options: options as an Hash. See GetText.bindtextdomain.
- def bindtextdomain_to(klass, domainname, *options)
- if options[0].kind_of? Hash
- opts = options[0]
- else
- # for backward compatibility.
- opts = {}
- opts[:path] = options[0] if options[0]
- opts[:output_charset] = options[2] if options[2]
- end
- unless (klass.kind_of? GetText or klass.include? GetText)
- klass.__send__(:include, GetText)
- end
- TextDomainManager.bind_to(klass, domainname, opts)
- end
-
- # Binds a existed textdomain to your program.
- # This is the same function with GetText.bindtextdomain but simpler(and faster) than bindtextdomain.
- # Note that you need to call GetText.bindtextdomain first. If the domainname hasn't bound yet,
- # raises GetText::NoboundTextDomainError.
- # * domainname: a textdomain name.
- # * Returns: the GetText::TextDomainManager.
- def textdomain(domainname) #:nodoc:
- textdomain_to(self, domainname)
- end
-
- # Includes GetText module and bind an exsited textdomain to a class.
- # See textdomain for more detail.
- # * klass: the target ruby class.
- # * domainname: the textdomain name.
-
- def textdomain_to(klass, domainname) #:nodoc:
- domain = TextDomainManager.textdomain_pool(domainname)
- raise NoboundTextDomainError.new(domainname) unless domain
- bindtextdomain_to(klass, domainname)
- end
-
- # call-seq:
- # gettext(msgid)
- # _(msgid)
- #
- # Translates msgid and return the message.
- # This doesn't make a copy of the message.
- #
- # You need to use String#dup if you want to modify the return value
- # with destructive functions.
- #
- # (e.g.1) _("Hello ").dup << "world"
- #
- # But e.g.1 should be rewrite to:
- #
- # (e.g.2) _("Hello %{val}") % {:val => "world"}
- #
- # Because the translator may want to change the position of "world".
- #
- # * msgid: the message id.
- # * Returns: localized text by msgid. If there are not binded mo-file, it will return msgid.
- def gettext(msgid)
- TextDomainManager.translate_singluar_message(self, msgid)
- end
-
- # call-seq:
- # sgettext(msgid, div = '|')
- # s_(msgid, div = '|')
- #
- # Translates msgid, but if there are no localized text,
- # it returns a last part of msgid separeted "div".
- #
- # * msgid: the message id.
- # * separator: separator or nil for no seperation.
- # * Returns: the localized text by msgid. If there are no localized text,
- # it returns a last part of the msgid separeted by "seperator".
- # <tt>Movie|Location -> Location</tt>
- # See: http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC151
- def sgettext(msgid, seperator = "|")
- TextDomainManager.translate_singluar_message(self, msgid, seperator)
- end
-
- # call-seq:
- # pgettext(msgctxt, msgid)
- # p_(msgctxt, msgid)
- #
- # Translates msgid with msgctxt. This methods is similer with s_().
- # e.g.) p_("File", "New") == s_("File|New")
- # p_("File", "Open") == s_("File|Open")
- #
- # * msgctxt: the message context.
- # * msgid: the message id.
- # * Returns: the localized text by msgid. If there are no localized text,
- # it returns msgid.
- # See: http://www.gnu.org/software/autoconf/manual/gettext/Contexts.html
- def pgettext(msgctxt, msgid)
- TextDomainManager.translate_singluar_message(self, "#{msgctxt}\004#{msgid}", "\004")
- end
-
- # call-seq:
- # ngettext(msgid, msgid_plural, n)
- # ngettext(msgids, n) # msgids = [msgid, msgid_plural]
- # n_(msgid, msgid_plural, n)
- # n_(msgids, n) # msgids = [msgid, msgid_plural]
- #
- # The ngettext is similar to the gettext function as it finds the message catalogs in the same way.
- # But it takes two extra arguments for plural form.
- #
- # * msgid: the singular form.
- # * msgid_plural: the plural form.
- # * n: a number used to determine the plural form.
- # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
- # "plural-rule" is defined in po-file.
- def ngettext(msgid, msgid_plural, n = nil)
- TextDomainManager.translate_plural_message(self, msgid, msgid_plural, n)
- end
-
- # call-seq:
- # nsgettext(msgid, msgid_plural, n, div = "|")
- # nsgettext(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
- # ns_(msgid, msgid_plural, n, div = "|")
- # ns_(msgids, n, div = "|") # msgids = [msgid, msgid_plural]
- #
- # The nsgettext is similar to the ngettext.
- # But if there are no localized text,
- # it returns a last part of msgid separeted "div".
- #
- # * msgid: the singular form with "div". (e.g. "Special|An apple")
- # * msgid_plural: the plural form. (e.g. "%{num} Apples")
- # * n: a number used to determine the plural form.
- # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
- # "plural-rule" is defined in po-file.
- def nsgettext(msgid, msgid_plural, n="|", seperator = "|")
- TextDomainManager.translate_plural_message(self, msgid, msgid_plural, n, seperator)
- end
-
- # call-seq:
- # npgettext(msgctxt, msgid, msgid_plural, n)
- # npgettext(msgctxt, msgids, n) # msgids = [msgid, msgid_plural]
- # np_(msgctxt, msgid, msgid_plural, n)
- # np_(msgctxt, msgids, n) # msgids = [msgid, msgid_plural]
- #
- # The npgettext is similar to the nsgettext function.
- # e.g.) np_("Special", "An apple", "%{num} Apples", num) == ns_("Special|An apple", "%{num} Apples", num)
- # * msgctxt: the message context.
- # * msgid: the singular form.
- # * msgid_plural: the plural form.
- # * n: a number used to determine the plural form.
- # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
- # "plural-rule" is defined in po-file.
- def npgettext(msgctxt, msgids, arg2 = nil, arg3 = nil)
- if msgids.kind_of?(Array)
- msgid = msgids[0]
- msgid_ctxt = "#{msgctxt}\004#{msgid}"
- msgid_plural = msgids[1]
- opt1 = arg2
- opt2 = arg3
- else
- msgid = msgids
- msgid_ctxt = "#{msgctxt}\004#{msgid}"
- msgid_plural = arg2
- opt1 = arg3
- opt2 = nil
- end
-
- msgstr = TextDomainManager.translate_plural_message(self, msgid_ctxt, msgid_plural, opt1, opt2)
- if msgstr == msgid_ctxt
- msgid
- else
- msgstr
- end
- end
-
- # makes dynamic translation messages readable for the gettext parser.
- # <tt>_(fruit)</tt> cannot be understood by the gettext parser. To help the parser find all your translations,
- # you can add <tt>fruit = N_("Apple")</tt> which does not translate, but tells the parser: "Apple" needs translation.
- # * msgid: the message id.
- # * Returns: msgid.
- def N_(msgid)
- msgid
- end
-
- # This is same function as N_ but for ngettext.
- # * msgid: the message id.
- # * msgid_plural: the plural message id.
- # * Returns: msgid.
- def Nn_(msgid, msgid_plural)
- [msgid, msgid_plural]
- end
-
- # Sets charset(String) such as "euc-jp", "sjis", "CP932", "utf-8", ...
- # You shouldn't use this in your own Libraries.
- # * charset: an output_charset
- # * Returns: self
- def set_output_charset(charset)
- TextDomainManager.output_charset = charset
- self
- end
-
- # Gets the current output_charset which is set using GetText.set_output_charset.
- # * Returns: output_charset.
- def output_charset
- TextDomainManager.output_charset
- end
-
- # Set the locale. This value forces the locale whole the programs.
- # This method calls Locale.set_app_language_tags, Locale.default, Locale.current.
- # Use Locale methods if you need to handle locales more flexible.
- def set_locale(lang)
- Locale.set_app_language_tags(lang)
- Locale.default = lang
- Locale.current = lang
- end
-
- # Set the locale to the current thread.
- # Note that if #set_locale is set, this value is ignored.
- # If you need, set_locale(nil); set_current_locale(lang)
- def set_current_locale(lang)
- Locale.current = lang
- end
-
- def locale
- Locale.current[0]
- end
-
- alias :locale= :set_locale #:nodoc:
- alias :current_locale= :set_current_locale #:nodoc:
- alias :_ :gettext #:nodoc:
- alias :n_ :ngettext #:nodoc:
- alias :s_ :sgettext #:nodoc:
- alias :ns_ :nsgettext #:nodoc:
- alias :np_ :npgettext #:nodoc:
-
- alias :output_charset= :set_output_charset #:nodoc:
-
-unless defined? XX
- # This is the workaround to conflict p_ methods with the xx("double x") library.
- # http://rubyforge.org/projects/codeforpeople/
- alias :p_ :pgettext #:nodoc:
-end
-
- # for backward compatibility
- alias :set_locale_all :set_locale #:nodoc:
- alias :setlocale :set_locale #:nodoc:
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/cgi.rb b/vendor/gems/gettext-2.1.0/lib/gettext/cgi.rb
deleted file mode 100644
index 78868fc10..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/cgi.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-=begin
- gettext/cgi.rb - GetText for CGI
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'cgi'
-require 'gettext'
-
-Locale.init(:driver => :cgi)
-
-module GetText
-
- # Sets a CGI object. This methods is appeared when requiring "gettext/cgi".
- # * cgi_: CGI object
- # * Returns: self
- def set_cgi(cgi_)
- Locale.set_cgi(cgi_)
- end
-
- # Same as GetText.set_cgi. This methods is appeared when requiring "gettext/cgi".
- # * cgi_: CGI object
- # * Returns: cgi_
- def cgi=(cgi_)
- set_cgi(cgi_)
- cgi_
- end
-
- # Gets the CGI object. If it is nil, returns new CGI object. This methods is appeared when requiring "gettext/cgi".
- # * Returns: the CGI object
- def cgi
- Locale.cgi
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/core_ext/iconv.rb b/vendor/gems/gettext-2.1.0/lib/gettext/core_ext/iconv.rb
deleted file mode 100644
index bc3aab0eb..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/core_ext/iconv.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-# encoding: utf-8
-=begin
- iconv.rb - Pseudo Iconv class. Supports Iconv.iconv, Iconv.conv.
-
- For Matz Ruby:
- If you don't have iconv but glib2, this library uses glib2 iconv functions.
-
- For JRuby:
- Use Java String class to convert strings.
-
- Copyright (C) 2004-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-begin
- require 'iconv.so'
-rescue LoadError
- # Pseudo Iconv class
- #
- # ==== For Matz Ruby:
- # If you don't have iconv but Ruby/GLib2, this library uses Ruby/GLib2's
- # iconv functions.
- #
- # Ruby/GLib is a module which is provided from Ruby-GNOME2 Project.
- # You can get binaries for Win32(One-Click Ruby Installer).
- # <URL: http://ruby-gnome2.sourceforge.jp/>
- # ==== For JRuby:
- # Use Java String class to convert strings.
- class Iconv
- module Failure; end
- class InvalidEncoding < ArgumentError; include Failure; end
- class IllegalSequence < ArgumentError; include Failure; end
- class InvalidCharacter < ArgumentError; include Failure; end
-
- if RUBY_PLATFORM =~ /java/
- def self.conv(to, from, str)
- raise InvalidCharacter, "the 3rd argument is nil" unless str
- begin
- str = java.lang.String.new(str.unpack("C*").to_java(:byte), from)
- str.getBytes(to).to_ary.pack("C*")
- rescue java.io.UnsupportedEncodingException
- raise InvalidEncoding
- end
- end
- else
- begin
- require 'glib2'
-
- def self.check_glib_version?(major, minor, micro) # :nodoc:
- (GLib::BINDING_VERSION[0] > major ||
- (GLib::BINDING_VERSION[0] == major &&
- GLib::BINDING_VERSION[1] > minor) ||
- (GLib::BINDING_VERSION[0] == major &&
- GLib::BINDING_VERSION[1] == minor &&
- GLib::BINDING_VERSION[2] >= micro))
- end
-
- if check_glib_version?(0, 11, 0)
- # This is a function equivalent of Iconv.iconv.
- # * to: encoding name for destination
- # * from: encoding name for source
- # * str: strings to be converted
- # * Returns: Returns an Array of converted strings.
- def self.conv(to, from, str)
- begin
- GLib.convert(str, to, from)
- rescue GLib::ConvertError => e
- case e.code
- when GLib::ConvertError::NO_CONVERSION
- raise InvalidEncoding.new(str)
- when GLib::ConvertError::ILLEGAL_SEQUENCE
- raise IllegalSequence.new(str)
- else
- raise InvalidCharacter.new(str)
- end
- end
- end
- else
- def self.conv(to, from, str) # :nodoc:
- begin
- GLib.convert(str, to, from)
- rescue
- raise IllegalSequence.new(str)
- end
- end
- end
- rescue LoadError
- def self.conv(to, from, str) # :nodoc:
- warn "Iconv was not found." if $DEBUG
- str
- end
- end
- end
- def self.iconv(to, from, str)
- conv(to, from, str).split(//)
- end
- end
-end
-
-if __FILE__ == $0
- puts Iconv.iconv("EUC-JP", "UTF-8", "ほげ").join
- begin
- puts Iconv.iconv("EUC-JP", "EUC-JP", "ほげ").join
- rescue Iconv::Failure
- puts $!
- puts $!.class
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/core_ext/string.rb b/vendor/gems/gettext-2.1.0/lib/gettext/core_ext/string.rb
deleted file mode 100644
index 1cbd91567..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/core_ext/string.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-=begin
- string.rb - Extension for String.
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-# Extension for String class. This feature is included in Ruby 1.9 or later but not occur TypeError.
-#
-# String#% method which accept "named argument". The translator can know
-# the meaning of the msgids using "named argument" instead of %s/%d style.
-class String
-
- unless instance_methods.find {|m| m.to_s == 'bytesize'}
- # For older ruby (such as ruby-1.8.5)
- alias :bytesize :size
- end
-
- alias :_old_format_m :% # :nodoc:
-
- PERCENT_MATCH_RE = Regexp.union(
- /%%/,
- /%\{(.+?)\}/,
- /%<(.+?)>(.*?\d*\.?\d*[bBdiouxXeEfgGcps])/
- )
-
- # call-seq:
- # %(arg)
- # %(hash)
- #
- # Format - Uses str as a format specification, and returns the result of applying it to arg.
- # If the format specification contains more than one substitution, then arg must be
- # an Array containing the values to be substituted. See Kernel::sprintf for details of the
- # format string. This is the default behavior of the String class.
- # * arg: an Array or other class except Hash.
- # * Returns: formatted String
- #
- # (e.g.) "%s, %s" % ["Masao", "Mutoh"]
- #
- # Also you can use a Hash as the "named argument". This is recommanded way for Ruby-GetText
- # because the translators can understand the meanings of the msgids easily.
- # * hash: {:key1 => value1, :key2 => value2, ... }
- # * Returns: formatted String
- #
- # (e.g.)
- # For strings.
- # "%{firstname}, %{familyname}" % {:firstname => "Masao", :familyname => "Mutoh"}
- #
- # With field type to specify format such as d(decimal), f(float),...
- # "%<age>d, %<weight>.1f" % {:age => 10, :weight => 43.4}
- def %(args)
- if args.kind_of?(Hash)
- ret = dup
- ret.gsub!(PERCENT_MATCH_RE) {|match|
- if match == '%%'
- '%'
- elsif $1
- key = $1.to_sym
- args.has_key?(key) ? args[key] : match
- elsif $2
- key = $2.to_sym
- args.has_key?(key) ? sprintf("%#{$3}", args[key]) : match
- end
- }
- ret
- else
- ret = gsub(/%([{<])/, '%%\1')
- begin
- ret._old_format_m(args)
- rescue ArgumentError => e
- if $DEBUG
- $stderr.puts " The string:#{ret}"
- $stderr.puts " args:#{args.inspect}"
- puts e.backtrace
- else
- raise ArgumentError, e.message
- end
- end
- end
- end
-end
-
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/parser/erb.rb b/vendor/gems/gettext-2.1.0/lib/gettext/parser/erb.rb
deleted file mode 100644
index eea0ea828..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/parser/erb.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-warn "DEPRECATED: Use 'gettext/tools/parser/erb' instead."
-
-require 'gettext/tools/parser/erb'
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/parser/glade.rb b/vendor/gems/gettext-2.1.0/lib/gettext/parser/glade.rb
deleted file mode 100644
index 7b61fedad..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/parser/glade.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-warn "DEPRECATED: Use 'gettext/tools/parser/glade' instead."
-
-require 'gettext/tools/parser/glade'
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/parser/ruby.rb b/vendor/gems/gettext-2.1.0/lib/gettext/parser/ruby.rb
deleted file mode 100644
index cf8fae47a..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/parser/ruby.rb
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/ruby
-=begin
- parser/ruby.rb - parser for ruby script
-
- Copyright (C) 2003-2005 Masao Mutoh
- Copyright (C) 2005 speakillof
- Copyright (C) 2001,2002 Yasushi Shoji, Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
-=end
-
-require 'irb/ruby-lex.rb'
-require 'stringio'
-warn "DEPRECATED: Use 'gettext/tools/parser/ruby' instead."
-
-class RubyLexX < RubyLex # :nodoc: all
- # Parser#parse resemlbes RubyLex#lex
- def parse
- until ( (tk = token).kind_of?(RubyToken::TkEND_OF_SCRIPT) && !@continue or tk.nil? )
- s = get_readed
- if RubyToken::TkSTRING === tk
- def tk.value
- @value
- end
-
- def tk.value=(s)
- @value = s
- end
-
- if @here_header
- s = s.sub(/\A.*?\n/, '').sub(/^.*\n\Z/, '')
- else
- begin
- s = eval(s)
- rescue Exception
- # Do nothing.
- end
- end
-
- tk.value = s
- end
-
- if $DEBUG
- if tk.is_a? TkSTRING
- $stderr.puts("#{tk}: #{tk.value}")
- elsif tk.is_a? TkIDENTIFIER
- $stderr.puts("#{tk}: #{tk.name}")
- else
- $stderr.puts(tk)
- end
- end
-
- yield tk
- end
- return nil
- end
-
-end
-
-module GetText
- module RubyParser
- extend self
-
- unless defined? ID
- ID = ['gettext', '_', 'N_', 'sgettext', 's_']
- PLURAL_ID = ['ngettext', 'n_', 'Nn_', 'ns_', 'nsgettext']
- MSGCTXT_ID = ['pgettext', 'p_']
- MSGCTXT_PLURAL_ID = ['npgettext', 'np_']
- end
-
- def parse(file, targets = []) # :nodoc:
- lines = IO.readlines(file)
- parse_lines(file, lines, targets)
- end
-
- def parse_lines(file_name, lines, targets) # :nodoc:
- file = StringIO.new(lines.join + "\n")
- rl = RubyLexX.new
- rl.set_input(file)
- rl.skip_space = true
- #rl.readed_auto_clean_up = true
-
- target = nil
- msgid = nil
- line_no = nil
- rl.parse do |tk|
- begin
- case tk
- when RubyToken::TkIDENTIFIER, RubyToken::TkCONSTANT
- if ID.include?(tk.name)
- target = :normal
- elsif PLURAL_ID.include?(tk.name)
- target = :plural
- elsif MSGCTXT_ID.include?(tk.name)
- target = :msgctxt
- elsif MSGCTXT_PLURAL_ID.include?(tk.name)
- target = :msgctxt_plural
- else
- target = nil
- end
- line_no = tk.line_no.to_s
- when RubyToken::TkSTRING
- if target
- if msgid
- msgid += tk.value
- else
- msgid = tk.value
- end
- end
- when RubyToken::TkPLUS, RubyToken::TkNL
- #do nothing
- when RubyToken::TkCOMMA
- if msgid
- case target
- when :plural
- msgid += "\000"
- target = :normal
- when :msgctxt
- msgid += "\004"
- target = :normal
- when :msgctxt_plural
- msgid += "\004"
- target = :plural
- else
- target = :normal
- end
- end
- else
- if msgid
- key_existed = targets.assoc(msgid.gsub(/\n/, '\n'))
- if key_existed
- targets[targets.index(key_existed)] = key_existed <<
- file_name + ":" + line_no
- else
- targets << [msgid.gsub(/\n/, '\n'), file_name + ":" + line_no]
- end
- msgid = nil
- target = nil
- end
- end
- targets
- rescue
- $stderr.print "\n\nError: #{$!.inspect} "
- $stderr.print " in #{file_name}:#{tk.line_no}\n\t #{lines[tk.line_no - 1]}" if tk
- $stderr.print "\n"
- exit 1
- end
- end
- targets
- end
-
- def target?(file) # :nodoc:
- true # always true, as default parser.
- end
- end
-end
-
-
-
-if __FILE__ == $0
- require 'pp'
- ARGV.each do |file|
- pp GetText::RubyParser.parse(file)
- end
-
- #rl = RubyLexX.new; rl.set_input(ARGF)
- #rl.parse do |tk|
- #p tk
- #end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/class_info.rb b/vendor/gems/gettext-2.1.0/lib/gettext/runtime/class_info.rb
deleted file mode 100644
index c7acca267..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/class_info.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require 'locale/util/memoizable'
-
-module GetText
- # For normalize/finding the related classes/modules.
- # This is used for realizing the scope of TextDomain.
- # (see: http://www.yotabanana.com/hiki/ruby-gettext-scope.html)
- module ClassInfo
- extend self
- include Locale::Util::Memoizable
-
- # normalize the class name
- # klass should kind of the class, not object.
- def normalize_class(klass)
- ret = (klass.kind_of? Module) ? klass : klass.class
- if ret.name =~ /^\#<|^$/ or ret == GetText
- ret = Object
- end
- ret
- end
-
- def root_ancestors # :nodoc:
- Object.ancestors
- end
- memoize :root_ancestors
-
- # Internal method for related_classes.
- def related_classes_internal(klass, all_classes = [], analyzed_classes = [] )
- ret = []
- klass = normalize_class(klass)
-
- return [Object] if root_ancestors.include? klass
-
- ary = klass.name.split(/::/)
- while(v = ary.shift)
- ret.unshift(((ret.size == 0) ? Object.const_get(v) : ret[0].const_get(v)))
- end
- ret -= analyzed_classes
- if ret.size > 1
- ret += related_classes_internal(ret[1], all_classes, analyzed_classes)
- ret.uniq!
- end
- analyzed_classes << klass unless analyzed_classes.include? klass
-
- klass.ancestors[1..-1].each do |a|
- ret += related_classes_internal(a, all_classes, analyzed_classes)
- ret.uniq!
- end
-
- if all_classes.size > 0
- (ret & all_classes).uniq
- else
- ret.uniq
- end
- end
-
- # Returns the classes which related to klass
- # (klass's ancestors, included modules and nested modules)
- def related_classes(klass, all_classes = [])
- ret = related_classes_internal(klass, all_classes)
- unless ret.include? Object
- ret += [Object]
- end
- ret
- end
- memoize :related_classes
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/locale_path.rb b/vendor/gems/gettext-2.1.0/lib/gettext/runtime/locale_path.rb
deleted file mode 100644
index 5500bca20..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/locale_path.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-=begin
- locale_path.rb - GetText::LocalePath
-
- Copyright (C) 2001-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-
-=end
-
-require 'rbconfig'
-require 'gettext/core_ext/string'
-
-module GetText
- # Treats locale-path for mo-files.
- class LocalePath
- include Locale::Util::Memoizable
-
- # The default locale paths.
- CONFIG_PREFIX = Config::CONFIG['prefix'].gsub(/\/local/, "")
- DEFAULT_RULES = [
- "./locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "./locale/%{lang}/%{name}.mo",
- "#{Config::CONFIG['datadir']}/locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "#{Config::CONFIG['datadir'].gsub(/\/local/, "")}/locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "#{CONFIG_PREFIX}/share/locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "#{CONFIG_PREFIX}/local/share/locale/%{lang}/LC_MESSAGES/%{name}.mo"
- ].uniq
-
- class << self
- include Locale::Util::Memoizable
-
- # Add default locale path. Usually you should use GetText.add_default_locale_path instead.
- # * path: a new locale path. (e.g.) "/usr/share/locale/%{lang}/LC_MESSAGES/%{name}.mo"
- # ('locale' => "ja_JP", 'name' => "textdomain")
- # * Returns: the new DEFAULT_LOCALE_PATHS
- def add_default_rule(path)
- DEFAULT_RULES.unshift(path)
- end
-
- # Returns path rules as an Array.
- # (e.g.) ["/usr/share/locale/%{lang}/LC_MESSAGES/%{name}.mo", ...]
- def default_path_rules
- default_path_rules = []
-
- if ENV["GETTEXT_PATH"]
- ENV["GETTEXT_PATH"].split(/,/).each {|i|
- default_path_rules = ["#{i}/%{lang}/LC_MESSAGES/%{name}.mo", "#{i}/%{lang}/%{name}.mo"]
- }
- end
-
- default_path_rules += DEFAULT_RULES
-
- load_path = $LOAD_PATH
- if defined? ::Gem
- load_path += Gem.all_load_paths
- end
- load_path.map!{|v| v.match(/(.*?)(\/lib)*?$/); $1}
- load_path.each {|path|
- default_path_rules += [
- "#{path}/data/locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "#{path}/data/locale/%{lang}/%{name}.mo",
- "#{path}/locale/%{lang}/%{name}.mo"]
- }
- # paths existed only.
- default_path_rules = default_path_rules.select{|path|
- Dir.glob(path % {:lang => "*", :name => "*"}).size > 0}.uniq
- default_path_rules
- end
- memoize_dup :default_path_rules
- end
-
- attr_reader :locale_paths, :supported_locales
-
- # Creates a new GetText::TextDomain.
- # * name: the textdomain name.
- # * topdir: the locale path ("%{topdir}/%{lang}/LC_MESSAGES/%{name}.mo") or nil.
- def initialize(name, topdir = nil)
- @name = name
-
- if topdir
- path_rules = ["#{topdir}/%{lang}/LC_MESSAGES/%{name}.mo", "#{topdir}/%{lang}/%{name}.mo"]
- else
- path_rules = self.class.default_path_rules
- end
-
- @locale_paths = {}
- path_rules.each do |rule|
- this_path_rules = rule % {:lang => "([^\/]+)", :name => name}
- Dir.glob(rule %{:lang => "*", :name => name}).each do |path|
- if /#{this_path_rules}/ =~ path
- @locale_paths[$1] = path unless @locale_paths[$1]
- end
- end
- end
- @supported_locales = @locale_paths.keys.sort
- end
-
- # Gets the current path.
- # * lang: a Locale::Tag.
- def current_path(lang)
- lang_candidates = lang.to_posix.candidates
- search_files = []
-
- lang_candidates.each do |tag|
- path = @locale_paths[tag.to_s]
- warn "GetText::TextDomain#load_mo: mo-file is #{path}" if $DEBUG
- return path if path
- end
-
- if $DEBUG
- warn "MO file is not found in"
- @locale_paths.each do |path|
- warn " #{path[1]}"
- end
- end
- nil
- end
- memoize :current_path
-
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/mofile.rb b/vendor/gems/gettext-2.1.0/lib/gettext/runtime/mofile.rb
deleted file mode 100644
index dd8158d01..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/mofile.rb
+++ /dev/null
@@ -1,330 +0,0 @@
-=begin
- mofile.rb - A simple class for operating GNU MO file.
-
- Copyright (C) 2003-2009 Masao Mutoh
- Copyright (C) 2002 Masahiro Sakai, Masao Mutoh
- Copyright (C) 2001 Masahiro Sakai
-
- Masahiro Sakai <s01397ms at sfc.keio.ac.jp>
- Masao Mutoh <mutomasa at gmail.com>
-
- You can redistribute this file and/or modify it under the same term
- of Ruby. License of Ruby is included with Ruby distribution in
- the file "README".
-
-=end
-
-require 'gettext/core_ext/iconv'
-require 'stringio'
-
-module GetText
- class MOFile < Hash
- class InvalidFormat < RuntimeError; end;
-
- attr_reader :filename
-
- Header = Struct.new(:magic,
- :revision,
- :nstrings,
- :orig_table_offset,
- :translated_table_offset,
- :hash_table_size,
- :hash_table_offset)
-
- # The following are only used in .mo files
- # with minor revision >= 1.
- class HeaderRev1 < Header
- attr_accessor :n_sysdep_segments,
- :sysdep_segments_offset,
- :n_sysdep_strings,
- :orig_sysdep_tab_offset,
- :trans_sysdep_tab_offset
- end
-
- MAGIC_BIG_ENDIAN = "\x95\x04\x12\xde"
- MAGIC_LITTLE_ENDIAN = "\xde\x12\x04\x95"
-
- def self.open(arg = nil, output_charset = nil)
- result = self.new(output_charset)
- result.load(arg)
- end
-
- def initialize(output_charset = nil)
- @filename = nil
- @last_modified = nil
- @little_endian = true
- @output_charset = output_charset
- @plural_proc = nil
- super()
- end
-
- def update!
- if FileTest.exist?(@filename)
- st = File.stat(@filename)
- load(@filename) unless (@last_modified == [st.ctime, st.mtime])
- else
- warn "#{@filename} was lost." if $DEBUG
- clear
- end
- self
- end
-
- def load(arg)
- if arg.kind_of? String
- begin
- st = File.stat(arg)
- @last_modified = [st.ctime, st.mtime]
- rescue Exception
- end
- load_from_file(arg)
- else
- load_from_stream(arg)
- end
- @filename = arg
- self
- end
-
- def load_from_stream(io)
- magic = io.read(4)
- case magic
- when MAGIC_BIG_ENDIAN
- @little_endian = false
- when MAGIC_LITTLE_ENDIAN
- @little_endian = true
- else
- raise InvalidFormat.new(sprintf("Unknown signature %s", magic.dump))
- end
-
- endian_type6 = @little_endian ? 'V6' : 'N6'
- endian_type_astr = @little_endian ? 'V*' : 'N*'
-
- header = HeaderRev1.new(magic, *(io.read(4 * 6).unpack(endian_type6)))
-
- if header.revision == 1
- # FIXME: It doesn't support sysdep correctly.
- header.n_sysdep_segments = io.read(4).unpack(endian_type6)
- header.sysdep_segments_offset = io.read(4).unpack(endian_type6)
- header.n_sysdep_strings = io.read(4).unpack(endian_type6)
- header.orig_sysdep_tab_offset = io.read(4).unpack(endian_type6)
- header.trans_sysdep_tab_offset = io.read(4).unpack(endian_type6)
- elsif header.revision > 1
- raise InvalidFormat.new(sprintf("file format revision %d isn't supported", header.revision))
- end
- io.pos = header.orig_table_offset
- orig_table_data = io.read((4 * 2) * header.nstrings).unpack(endian_type_astr)
-
- io.pos = header.translated_table_offset
- trans_table_data = io.read((4 * 2) * header.nstrings).unpack(endian_type_astr)
-
- original_strings = Array.new(header.nstrings)
- for i in 0...header.nstrings
- io.pos = orig_table_data[i * 2 + 1]
- original_strings[i] = io.read(orig_table_data[i * 2 + 0])
- end
-
- clear
- for i in 0...header.nstrings
- io.pos = trans_table_data[i * 2 + 1]
- str = io.read(trans_table_data[i * 2 + 0])
-
- if (! original_strings[i]) || original_strings[i] == ""
- if str
- @charset = nil
- @nplurals = nil
- @plural = nil
- str.each_line{|line|
- if /^Content-Type:/i =~ line and /charset=((?:\w|-)+)/i =~ line
- @charset = $1
- elsif /^Plural-Forms:\s*nplurals\s*\=\s*(\d*);\s*plural\s*\=\s*([^;]*)\n?/ =~ line
- @nplurals = $1
- @plural = $2
- end
- break if @charset and @nplurals
- }
- @nplurals = "1" unless @nplurals
- @plural = "0" unless @plural
- end
- else
- if @output_charset
- begin
- str = Iconv.conv(@output_charset, @charset, str) if @charset
- rescue Iconv::Failure
- if $DEBUG
- warn "@charset = ", @charset
- warn"@output_charset = ", @output_charset
- warn "msgid = ", original_strings[i]
- warn "msgstr = ", str
- end
- end
- end
- end
- self[original_strings[i]] = str.freeze
- end
- self
- end
-
- def prime?(number)
- ('1' * number) !~ /^1?$|^(11+?)\1+$/
- end
-
- begin
- require 'prime'
- def next_prime(seed)
- Prime.instance.find{|x| x > seed }
- end
- rescue LoadError
- def next_prime(seed)
- require 'mathn'
- prime = Prime.new
- while current = prime.succ
- return current if current > seed
- end
- end
- end
-
- HASHWORDBITS = 32
- # From gettext-0.12.1/gettext-runtime/intl/hash-string.h
- # Defines the so called `hashpjw' function by P.J. Weinberger
- # [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
- # 1986, 1987 Bell Telephone Laboratories, Inc.]
- def hash_string(str)
- hval = 0
- i = 0
- str.each_byte do |b|
- break if b == '\0'
- hval <<= 4
- hval += b.to_i
- g = hval & (0xf << (HASHWORDBITS - 4))
- if (g != 0)
- hval ^= g >> (HASHWORDBITS - 8)
- hval ^= g
- end
- end
- hval
- end
-
- #Save data as little endian format.
- def save_to_stream(io)
- header_size = 4 * 7
- table_size = 4 * 2 * size
-
- hash_table_size = next_prime((size * 4) / 3)
- hash_table_size = 3 if hash_table_size <= 2
- header = Header.new(
- MAGIC_LITTLE_ENDIAN, # magic
- 0, # revision
- size, # nstrings
- header_size, # orig_table_offset
- header_size + table_size, # translated_table_offset
- hash_table_size, # hash_table_size
- header_size + table_size * 2 # hash_table_offset
- )
- io.write(header.to_a.pack('a4V*'))
-
- ary = to_a
- ary.sort!{|a, b| a[0] <=> b[0]} # sort by original string
-
- pos = header.hash_table_size * 4 + header.hash_table_offset
-
- orig_table_data = Array.new()
- ary.each{|item, _|
- orig_table_data.push(item.bytesize)
- orig_table_data.push(pos)
- pos += item.bytesize + 1 # +1 is <NUL>
- }
- io.write(orig_table_data.pack('V*'))
-
- trans_table_data = Array.new()
- ary.each{|_, item|
- trans_table_data.push(item.bytesize)
- trans_table_data.push(pos)
- pos += item.bytesize + 1 # +1 is <NUL>
- }
- io.write(trans_table_data.pack('V*'))
-
- hash_tab = Array.new(hash_table_size)
- j = 0
- ary[0...size].each {|key, _|
- hash_val = hash_string(key)
- idx = hash_val % hash_table_size
- if hash_tab[idx] != nil
- incr = 1 + (hash_val % (hash_table_size - 2))
- begin
- if (idx >= hash_table_size - incr)
- idx -= hash_table_size - incr
- else
- idx += incr
- end
- end until (hash_tab[idx] == nil)
- end
- hash_tab[idx] = j + 1
- j += 1
- }
- hash_tab.collect!{|i| i ? i : 0}
-
- io.write(hash_tab.pack('V*'))
-
- ary.each{|item, _| io.write(item); io.write("\0") }
- ary.each{|_, item| io.write(item); io.write("\0") }
-
- self
- end
-
- def load_from_file(filename)
- @filename = filename
- begin
- File.open(filename, 'rb'){|f| load_from_stream(f)}
- rescue => e
- e.set_backtrace("File: #{@filename}")
- raise e
- end
- end
-
- def save_to_file(filename)
- File.open(filename, 'wb'){|f| save_to_stream(f)}
- end
-
- def set_comment(msgid_or_sym, comment)
- #Do nothing
- end
-
- def plural_as_proc
- unless @plural_proc
- @plural_proc = Proc.new{|n| eval(@plural)}
- begin
- @plural_proc.call(1)
- rescue
- @plural_proc = Proc.new{|n| 0}
- end
- end
- @plural_proc
- end
-
- attr_accessor :little_endian, :path, :last_modified
- attr_reader :charset, :nplurals, :plural
- end
-
-end
-
-# Test
-
-if $0 == __FILE__
- if (ARGV.include? "-h") or (ARGV.include? "--help")
- STDERR.puts("mo.rb [filename.mo ...]")
- exit
- end
-
- ARGV.each{ |item|
- mo = GetText::MOFile.open(item)
- puts "------------------------------------------------------------------"
- puts "charset = \"#{mo.charset}\""
- puts "nplurals = \"#{mo.nplurals}\""
- puts "plural = \"#{mo.plural}\""
- puts "------------------------------------------------------------------"
- mo.each do |key, value|
- puts "original message = #{key.inspect}"
- puts "translated message = #{value.inspect}"
- puts "--------------------------------------------------------------------"
- end
- }
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain.rb b/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain.rb
deleted file mode 100644
index ce52fab3a..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain.rb
+++ /dev/null
@@ -1,177 +0,0 @@
-=begin
- textdomain.rb - GetText::Textdomain
-
- Copyright (C) 2001-2009 Masao Mutoh
- Copyright (C) 2001-2003 Masahiro Sakai
-
- Masahiro Sakai <s01397ms@sfc.keio.ac.jp>
- Masao Mutoh <mutomasa at gmail.com>
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'gettext/core_ext/string'
-require 'gettext/runtime/mofile'
-require 'gettext/runtime/locale_path'
-
-module GetText
- # GetText::TextDomain class manages mo-files of a textdomain.
- #
- # Usually, you don't need to use this class directly.
- #
- # Notice: This class is unstable. APIs will be changed.
- class TextDomain
-
- attr_reader :output_charset
- attr_reader :mofiles
- attr_reader :name
-
- @@cached = ! $DEBUG
- # Cache the mo-file or not.
- # Default is true. If $DEBUG is set then false.
- def self.cached?
- @@cached
- end
-
- # Set to cache the mo-file or not.
- # * val: true if cached, otherwise false.
- def self.cached=(val)
- @@cached = val
- end
-
- # Add default locale path. Usually you should use GetText.add_default_locale_path instead.
- # * path: a new locale path. (e.g.) "/usr/share/locale/%{lang}/LC_MESSAGES/%{name}.mo"
- # ('locale' => "ja_JP", 'name' => "textdomain")
- # * Returns: the new DEFAULT_LOCALE_PATHS
- def self.add_default_locale_path(path)
- warn "Deprecated. Use GetText::LocalePath.add_default_rule instead."
- LocalePath.add_default_rule(path)
- end
-
- # Creates a new GetText::TextDomain.
- # * name: the textdomain name.
- # * topdir: the locale path ("%{topdir}/%{lang}/LC_MESSAGES/%{name}.mo") or nil.
- # * output_charset: output charset.
- # * Returns: a newly created GetText::TextDomain object.
- def initialize(name, topdir = nil, output_charset = nil)
- @name, @output_charset = name, output_charset
-
- @locale_path = LocalePath.new(@name, topdir)
- @mofiles = {}
- end
-
- # Translates the translated string.
- # * lang: Locale::Tag::Simple's subclass.
- # * msgid: the original message.
- # * Returns: the translated string or nil.
- def translate_singluar_message(lang, msgid)
- return "" if msgid == "" or msgid.nil?
-
- lang_key = lang.to_s
-
- mofile = nil
- if self.class.cached?
- mofile = @mofiles[lang_key]
- end
- unless mofile
- mofile = load_mo(lang)
- end
-
- if (! mofile) or (mofile ==:empty)
- return nil
- end
-
- msgstr = mofile[msgid]
- if msgstr and (msgstr.size > 0)
- msgstr
- elsif msgid.include?("\000")
- # Check "aaa\000bbb" and show warning but return the singluar part.
- ret = nil
- msgid_single = msgid.split("\000")[0]
- mofile.each{|key, val|
- if key =~ /^#{Regexp.quote(msgid_single)}\000/
- # Usually, this is not caused to make po-files from rgettext.
- warn %Q[Warning: n_("#{msgid_single}", "#{msgid.split("\000")[1]}") and n_("#{key.gsub(/\000/, '", "')}") are duplicated.]
- ret = val
- break
- end
- }
- ret
- else
- ret = nil
- mofile.each{|key, val|
- if key =~ /^#{Regexp.quote(msgid)}\000/
- ret = val.split("\000")[0]
- break
- end
- }
- ret
- end
- end
-
- DEFAULT_PLURAL_CALC = Proc.new{|n| n != 1}
- DEFAULT_SINGLE_CALC = Proc.new{|n| 0}
-
- # Translates the translated string.
- # * lang: Locale::Tag::Simple's subclass.
- # * msgid: the original message.
- # * msgid_plural: the original message(plural).
- # * Returns: the translated string as an Array ([[msgstr1, msgstr2, ...], cond]) or nil.
- def translate_plural_message(lang, msgid, msgid_plural) #:nodoc:
- key = msgid + "\000" + msgid_plural
- msg = translate_singluar_message(lang, key)
- ret = nil
- if ! msg
- ret = nil
- elsif msg.include?("\000")
- # [[msgstr[0], msgstr[1], msgstr[2],...], cond]
- mofile = @mofiles[lang.to_posix.to_s]
- cond = (mofile and mofile != :empty) ? mofile.plural_as_proc : DEFAULT_PLURAL_CALC
- ret = [msg.split("\000"), cond]
- else
- ret = [[msg], DEFAULT_SINGLE_CALC]
- end
- ret
- end
-
- # Clear cached mofiles.
- def clear
- @mofiles = {}
- end
-
- # Set output_charset.
- # * charset: output charset.
- def output_charset=(charset)
- @output_charset = charset
- clear
- end
-
- private
- # Load a mo-file from the file.
- # lang is the subclass of Locale::Tag::Simple.
- def load_mo(lang)
- lang = lang.to_posix unless lang.kind_of? Locale::Tag::Posix
- lang_key = lang.to_s
-
- mofile = @mofiles[lang_key]
- if mofile
- if mofile == :empty
- return :empty
- elsif ! self.class.cached?
- mofile.update!
- end
- return mofile
- end
-
- path = @locale_path.current_path(lang)
-
- if path
- charset = @output_charset || lang.charset || Locale.charset || "UTF-8"
- @mofiles[lang_key] = MOFile.open(path, charset)
- else
- @mofiles[lang_key] = :empty
- end
- end
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain_group.rb b/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain_group.rb
deleted file mode 100644
index b2ffd2dd2..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain_group.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-=begin
- gettext/textdomain_group - GetText::TextDomainGroup class
-
- Copyright (C) 2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-
-=end
-
-module GetText
-
- class TextDomainGroup
- attr_reader :textdomains
-
- def initialize
- @textdomains = []
- end
-
- def add(textdomain)
- @textdomains.unshift(textdomain) unless @textdomains.include? textdomain
- end
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain_manager.rb b/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain_manager.rb
deleted file mode 100644
index 09d879521..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/runtime/textdomain_manager.rb
+++ /dev/null
@@ -1,211 +0,0 @@
-=begin
- gettext/textdomain_manager - GetText::TextDomainManager class
-
- Copyright (C) 2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-
-=end
-
-require 'gettext/runtime/class_info'
-require 'gettext/runtime/textdomain'
-require 'gettext/runtime/textdomain_group'
-
-module GetText
-
- module TextDomainManager
-
- @@textdomain_pool = {}
- @@textdomain_group_pool = {}
-
- @@output_charset = nil
- @@gettext_classes = []
-
- @@singular_message_cache = {}
- @@plural_message_cache = {}
- @@cached = ! $DEBUG
-
- extend self
-
- # Find textdomain by name
- def textdomain_pool(domainname)
- @@textdomain_pool[domainname]
- end
-
- # Set the value whether cache messages or not.
- # true to cache messages, otherwise false.
- #
- # Default is true. If $DEBUG is false, messages are not checked even if
- # this value is true.
- def cached=(val)
- @@cached = val
- TextDomain.cached = val
- end
-
- # Return the cached value.
- def cached?
- TextDomain.cached?
- end
-
- # Gets the output charset.
- def output_charset
- @@output_charset
- end
-
- # Sets the output charset.The program can have a output charset.
- def output_charset=(charset)
- @@output_charset = charset
- @@textdomain_pool.each do |key, textdomain|
- textdomain.output_charset = charset
- end
- end
-
- # bind textdomain to the class.
- def bind_to(klass, domainname, options = {})
- warn "Bind the domain '#{domainname}' to '#{klass}'. " if $DEBUG
-
- charset = options[:output_charset] || self.output_charset
- textdomain = create_or_find_textdomain(domainname,options[:path],charset)
- target_klass = ClassInfo.normalize_class(klass)
- create_or_find_textdomain_group(target_klass).add(textdomain)
- @@gettext_classes << target_klass unless @@gettext_classes.include? target_klass
-
- textdomain
- end
-
- def each_textdomains(klass) #:nodoc:
- lang = Locale.candidates[0]
- ClassInfo.related_classes(klass, @@gettext_classes).each do |target|
- msg = nil
- if group = @@textdomain_group_pool[target]
- group.textdomains.each do |textdomain|
- yield textdomain, lang
- end
- end
- end
- end
-
- # Translates msgid, but if there are no localized text,
- # it returns a last part of msgid separeted "div" or whole of the msgid with no "div".
- #
- # * msgid: the message id.
- # * div: separator or nil.
- # * Returns: the localized text by msgid. If there are no localized text,
- # it returns a last part of msgid separeted "div".
- def translate_singluar_message(klass, msgid, div = nil)
- klass = ClassInfo.normalize_class(klass)
- key = [Locale.current, klass, msgid, div].hash
- msg = @@singular_message_cache[key]
- return msg if msg and @@cached
- # Find messages from related classes.
- each_textdomains(klass) do |textdomain, lang|
- msg = textdomain.translate_singluar_message(lang, msgid)
- break if msg
- end
-
- # If not found, return msgid.
- msg ||= msgid
- if div and msg == msgid
- if index = msg.rindex(div)
- msg = msg[(index + 1)..-1]
- end
- end
- @@singular_message_cache[key] = msg
- end
-
- # This function is similar to the get_singluar_message function
- # as it finds the message catalogs in the same way.
- # But it takes two extra arguments for plural form.
- # The msgid parameter must contain the singular form of the string to be converted.
- # It is also used as the key for the search in the catalog.
- # The msgid_plural parameter is the plural form.
- # The parameter n is used to determine the plural form.
- # If no message catalog is found msgid1 is returned if n == 1, otherwise msgid2.
- # And if msgid includes "div", it returns a last part of msgid separeted "div".
- #
- # * msgid: the singular form with "div". (e.g. "Special|An apple", "An apple")
- # * msgid_plural: the plural form. (e.g. "%{num} Apples")
- # * n: a number used to determine the plural form.
- # * div: the separator. Default is "|".
- # * Returns: the localized text which key is msgid_plural if n is plural(follow plural-rule) or msgid.
- # "plural-rule" is defined in po-file.
- #
- # or
- #
- # * [msgid, msgid_plural] : msgid and msgid_plural an Array
- # * n: a number used to determine the plural form.
- # * div: the separator. Default is "|".
- def translate_plural_message(klass, arg1, arg2, arg3 = "|", arg4 = "|")
- klass = ClassInfo.normalize_class(klass)
- # parse arguments
- if arg1.kind_of?(Array)
- msgid = arg1[0]
- msgid_plural = arg1[1]
- n = arg2
- if arg3 and arg3.kind_of? Numeric
- raise ArgumentError, _("3rd parmeter is wrong: value = %{number}") % {:number => arg3}
- end
- div = arg3
- else
- msgid = arg1
- msgid_plural = arg2
- n = arg3
- div = arg4
- end
-
- key = [Locale.current, klass, msgid, msgid_plural, div].hash
- msgs = @@plural_message_cache[key]
- unless (msgs and @@cached)
- # Find messages from related classes.
- msgs = nil
- each_textdomains(klass) do |textdomain, lang|
- msgs = textdomain.translate_plural_message(lang, msgid, msgid_plural)
- break if msgs
- end
-
- msgs = [[msgid, msgid_plural], TextDomain::DEFAULT_PLURAL_CALC] unless msgs
-
- msgstrs = msgs[0]
- if div and msgstrs[0] == msgid and index = msgstrs[0].rindex(div)
- msgstrs[0] = msgstrs[0][(index + 1)..-1]
- end
- @@plural_message_cache[key] = msgs
- end
-
- # Return the singular or plural message.
- msgstrs = msgs[0]
- plural = msgs[1].call(n)
- return msgstrs[plural] if plural.kind_of?(Numeric)
- return plural ? msgstrs[1] : msgstrs[0]
- end
-
- # for testing.
- def clear_all_textdomains
- @@textdomain_pool = {}
- @@textdomain_group_pool = {}
- @@gettext_classes = []
- clear_caches
- end
-
- # for testing.
- def clear_caches
- @@singular_message_cache = {}
- @@plural_message_cache = {}
- end
-
- def create_or_find_textdomain_group(klass) #:nodoc:
- group = @@textdomain_group_pool[klass]
- return group if group
-
- @@textdomain_group_pool[klass] = TextDomainGroup.new
- end
-
- def create_or_find_textdomain(name, path, charset)#:nodoc:
- textdomain = @@textdomain_pool[name]
- return textdomain if textdomain
-
- @@textdomain_pool[name] = TextDomain.new(name, path, charset)
- end
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools.rb
deleted file mode 100644
index d0ccd8dd9..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools.rb
+++ /dev/null
@@ -1,195 +0,0 @@
-=begin
- tools.rb - Utility functions
-
- Copyright (C) 2005-2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'rbconfig'
-if /mingw|mswin|mswin32/ =~ RUBY_PLATFORM
- ENV['PATH'] = %w(bin lib).collect{|dir|
- "#{Config::CONFIG["prefix"]}\\lib\\GTK\\#{dir};"
- }.join('') + ENV['PATH']
-end
-
-require 'gettext/tools/rgettext'
-require 'gettext/tools/rmsgfmt'
-require 'gettext/runtime/mofile'
-require 'fileutils'
-
-module GetText
- bindtextdomain "rgettext"
-
- BOM_UTF8 = [0xef, 0xbb, 0xbf].pack("c3")
-
- # Currently, GNU msgmerge doesn't accept BOM.
- # This mesthod remove the UTF-8 BOM from the po-file.
- def remove_bom(path) #:nodoc:
- bom = IO.read(path, 3)
- if bom == BOM_UTF8
- data = IO.read(path)[3..-1]
- File.open(path, "w") {|f| f.write(data)}
- end
- end
-
- # Merges two Uniforum style .po files together.
- #
- # *Note* This function requires "msgmerge" tool included in GNU GetText. So you need to install GNU GetText.
- #
- # The def.po file is an existing PO file with translations which will be taken
- # over to the newly created file as long as they still match; comments will be preserved,
- # but extracted comments and file positions will be discarded.
- #
- # The ref.pot file is the last created PO file with up-to-date source references but
- # old translations, or a PO Template file (generally created by rgettext);
- # any translations or comments in the file will be discarded, however dot
- # comments and file positions will be preserved. Where an exact match
- # cannot be found, fuzzy matching is used to produce better results.
- #
- # Usually you don't need to call this function directly. Use GetText.update_pofiles instead.
- #
- # * defpo: a po-file. translations referring to old sources
- # * refpo: a po-file. references to new sources
- # * app_version: the application information which appears "Project-Id-Version: #{app_version}" in the pot/po-files.
- # * Returns: self
- def msgmerge(defpo, refpo, app_version, options={})
- verbose = options.delete(:verbose)
- puts "msgmerge called" if verbose
- $stderr.print defpo + " "
-
- content = merge_po_files(defpo,refpo,options.delete(:msgmerge),verbose)
-
- if content.empty?
- # report failure
- failed_filename = refpo + "~"
- FileUtils.cp(refpo, failed_filename)
- $stderr.puts _("Failed to merge with %{defpo}") % {:defpo => defpo}
- $stderr.puts _("New .pot was copied to %{failed_filename}") %{:failed_filename => failed_filename}
- raise _("Check these po/pot-files. It may have syntax errors or something wrong.")
- else
- # update version and save merged data
- content.sub!(/(Project-Id-Version\:).*$/, "\\1 #{app_version}\\n\"")
- File.open(defpo, "w") {|f|f.write(content)}
- end
-
- self
- end
-
- # Creates mo-files using #{po_root}/#{lang}/*.po an put them to
- # #{targetdir}/#{targetdir_rule}/.
- #
- # This is a convenience function of GetText.rmsgfmt for multiple target files.
- # * options: options as a Hash.
- # * verbose: true if verbose mode, otherwise false
- # * po_root: the root directory of po-files.
- # * mo_root: the target root directory where the mo-files are stored.
- # * mo_path_rule: the target directory for each mo-files.
- def create_mofiles(options = {})
- options = {:po_root => "./po"}.merge(options)
-
- Dir.glob(File.join(options[:po_root], "*/*.po")) do |po_file|
- mo_file = mo_file_from_po_file(po_file,options)
- $stderr.print %Q[#{po_file} -> #{mo_file} ... ] if options[:verbose]
- FileUtils.mkdir_p(File.dirname(mo_file))
- rmsgfmt(po_file, mo_file)
- $stderr.puts "Done." if options[:verbose]
- end
- end
-
-
- # At first, this creates the #{po_root}/#{domainname}.pot file using GetText.rgettext.
- # In the second step, this updates(merges) the #{po_root}/#{domainname}.pot and all of the
- # #{po_root}/#{lang}/#{domainname}.po files under "po_root" using "msgmerge".
- #
- # *Note* "msgmerge" tool is included in GNU GetText. So you need to install GNU GetText.
- #
- # See <HOWTO maintain po/mo files(http://www.yotabanana.com/hiki/ruby-gettext-howto-manage.html)> for more detals.
- # * domainname: the textdomain name.
- # * targetfiles: An Array of target files, that should be parsed for messages (See GetText.rgettext for more details).
- # * app_version: the application information which appears "Project-Id-Version: #{app_version}" in the pot/po-files.
- # * options: a hash with following possible settings
- # :lang - update files only for one language - the language specified by this option
- # :po_root - the root directory of po-files
- # :msgmerge - an array with the options, passed through to the gnu msgmerge tool
- # symbols are automatically translated to options with dashes,
- # example: [:no_wrap, :no_fuzzy_matching, :sort_output] translated to '--no-fuzzy-matching --sort-output'
- # :verbose - true to show verbose messages. default is false.
- #
- # Example: GetText.update_pofiles("myapp", Dir.glob("lib/*.rb"), "myapp 1.0.0", :verbose => true)
- def update_pofiles(textdomain, files, app_version, options = {})
- puts options.inspect if options[:verbose]
-
- #write found messages to tmp.pot
- temp_pot = "tmp.pot"
- rgettext(files, temp_pot)
-
- #merge tmp.pot and existing pot
- po_root = options.delete(:po_root) || "po"
- FileUtils.mkdir_p(po_root)
- msgmerge("#{po_root}/#{textdomain}.pot", temp_pot, app_version, options.dup)
-
- #update local po-files
- only_one_language = options.delete(:lang)
- if only_one_language
- msgmerge("#{po_root}/#{only_one_language}/#{textdomain}.po", temp_pot, app_version, options.dup)
- else
- Dir.glob("#{po_root}/*/#{textdomain}.po") do |po_file|
- msgmerge(po_file, temp_pot, app_version, options.dup)
- end
- end
-
- File.delete(temp_pot)
- end
-
- private
-
- # Merge 2 po files, using msgmerge
- def merge_po_files(po_a,po_b,msgmerge_options=[],verbose=false)
- return File.read(po_b) unless FileTest.exist? po_a
-
- cmd = ENV["MSGMERGE_PATH"] || "msgmerge"
- ensure_command_exists(cmd)
-
- remove_bom(po_a)
-
- cmd_params = array_to_cli_options(msgmerge_options)
- to_run = "#{cmd} #{cmd_params} #{po_a} #{po_b}"
- puts "\nrunning #{to_run}" if verbose
- `#{to_run}`
- end
-
- # convert an array of String/Symbol to cli options
- def array_to_cli_options(array)
- [*array].map do |o|
- o.kind_of?(Symbol) ? "--#{o}".gsub('_','-') : o.to_s
- end.join(' ')
- end
-
- def ensure_command_exists(cmd)
- `#{cmd} --help`
- unless $? && $?.success?
- raise _("`%{cmd}' can not be found. \nInstall GNU Gettext then set PATH or MSGMERGE_PATH correctly.") % {:cmd => cmd}
- end
- end
-
- # where lies the mo file for a given po_file
- # generare directory unless it exists
- def mo_file_from_po_file(po_file,options)
- options = {
- :mo_root => "./data/locale",
- :mo_path_rule => "%{lang}/LC_MESSAGES"
- }.merge(options)
-
- lang, textdomain = %r[/([^/]+?)/(.*)\.po].match(po_file[options[:po_root].size..-1]).to_a[1,2]
-
- mo_dir_rule = File.join(options[:mo_root], options[:mo_path_rule])
- mo_dir = mo_dir_rule % {:lang => lang}
- File.join(mo_dir, "#{textdomain}.mo")
- end
-end
-
-if __FILE__ == $0
- GetText.update_pofiles("foo", ARGV, "foo 1.1.0")
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/erb.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/erb.rb
deleted file mode 100644
index 0aee9d461..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/erb.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-=begin
- parser/erb.rb - parser for ERB
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'erb'
-require 'gettext/tools/parser/ruby'
-
-module GetText
- module ErbParser
- extend self
-
- @config = {
- :extnames => ['.rhtml', '.erb']
- }
-
- # Sets some preferences to parse ERB files.
- # * config: a Hash of the config. It can takes some values below:
- # * :extnames: An Array of target files extension. Default is [".rhtml"].
- def init(config)
- config.each{|k, v|
- @config[k] = v
- }
- end
-
- def parse(file, targets = []) # :nodoc:
- src = ERB.new(IO.readlines(file).join).src
- # Remove magic comment prepended by erb in Ruby 1.9.
- src.sub!(/\A#.*?coding[:=].*?\n/, '') if src.respond_to?(:encode)
- erb = src.split(/$/)
- RubyParser.parse_lines(file, erb, targets)
- end
-
- def target?(file) # :nodoc:
- @config[:extnames].each do |v|
- return true if File.extname(file) == v
- end
- false
- end
- end
-end
-
-if __FILE__ == $0
- # ex) ruby glade.rhtml foo.rhtml bar.rhtml
- ARGV.each do |file|
- p GetText::ErbParser.parse(file)
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/glade.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/glade.rb
deleted file mode 100644
index ab77beede..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/glade.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-=begin
- parser/glade.rb - parser for Glade-2
-
- Copyright (C) 2004,2005 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'cgi'
-require 'gettext'
-
-module GetText
- module GladeParser
- extend GetText
- extend self
-
- bindtextdomain("rgettext")
-
- TARGET1 = /<property.*translatable="yes">(.*)/
- TARGET2 = /(.*)<\/property>/
-
- def parse(file, targets = []) # :nodoc:
- lines = IO.readlines(file)
- parse_lines(file, lines, targets)
- end
-
- #from ary of lines.
- def parse_lines(file, lines, targets) # :nodoc:
- cnt = 0
- target = false
- line_no = 0
- val = nil
-
- loop do
- line = lines.shift
- break unless line
-
- cnt += 1
- if TARGET1 =~ line
- line_no = cnt
- val = $1 + "\n"
- target = true
- if TARGET2 =~ $1
- val = $1
- add_target(val, file, line_no, targets)
- val = nil
- target = false
- end
- elsif target
- if TARGET2 =~ line
- val << $1
- add_target(val, file, line_no, targets)
- val = nil
- target = false
- else
- val << line
- end
- end
- end
- targets
- end
-
- XML_RE = /<\?xml/
- GLADE_RE = /glade-2.0.dtd/
-
- def target?(file) # :nodoc:
- data = IO.readlines(file)
- if XML_RE =~ data[0] and GLADE_RE =~ data[1]
- true
- else
- if File.extname(file) == '.glade'
- raise _("`%{file}' is not glade-2.0 format.") % {:file => file}
- end
- false
- end
- end
-
- def add_target(val, file, line_no, targets) # :nodoc:
- return unless val.size > 0
- assoc_data = targets.assoc(val)
- val = CGI.unescapeHTML(val)
- if assoc_data
- targets[targets.index(assoc_data)] = assoc_data << "#{file}:#{line_no}"
- else
- targets << [val.gsub(/\n/, '\n'), "#{file}:#{line_no}"]
- end
- targets
- end
- end
-end
-
-if __FILE__ == $0
- # ex) ruby glade.rb foo.glade bar.glade
- ARGV.each do |file|
- p GetText::GladeParser.parse(file)
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/ruby.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/ruby.rb
deleted file mode 100644
index 9d16401ce..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools/parser/ruby.rb
+++ /dev/null
@@ -1,226 +0,0 @@
-#!/usr/bin/ruby
-=begin
- parser/ruby.rb - parser for ruby script
-
- Copyright (C) 2003-2009 Masao Mutoh
- Copyright (C) 2005 speakillof
- Copyright (C) 2001,2002 Yasushi Shoji, Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-
-=end
-
-require 'irb/ruby-lex.rb'
-require 'stringio'
-require 'gettext/tools/pomessage'
-
-module GetText
- class RubyLexX < RubyLex # :nodoc: all
- # Parser#parse resemlbes RubyLex#lex
- def parse
- until ( (tk = token).kind_of?(RubyToken::TkEND_OF_SCRIPT) && !@continue or tk.nil? )
- s = get_readed
- if RubyToken::TkSTRING === tk
- def tk.value
- @value
- end
-
- def tk.value=(s)
- @value = s
- end
-
- if @here_header
- s = s.sub(/\A.*?\n/, '').sub(/^.*\n\Z/, '')
- else
- begin
- s = eval(s)
- rescue Exception
- # Do nothing.
- end
- end
-
- tk.value = s
- end
-
- if $DEBUG
- if tk.is_a? TkSTRING
- $stderr.puts("#{tk}: #{tk.value}")
- elsif tk.is_a? TkIDENTIFIER
- $stderr.puts("#{tk}: #{tk.name}")
- else
- $stderr.puts(tk)
- end
- end
-
- yield tk
- end
- return nil
- end
-
- # Original parser does not keep the content of the comments,
- # so monkey patching this with new token type and extended
- # identify_comment implementation
- RubyToken.def_token :TkCOMMENT_WITH_CONTENT, TkVal
-
- def identify_comment
- @ltype = "#"
- get_readed # skip the hash sign itself
-
- while ch = getc
- if ch == "\n"
- @ltype = nil
- ungetc
- break
- end
- end
- return Token(TkCOMMENT_WITH_CONTENT, get_readed)
- end
-
- end
-
- # Extends PoMessage for RubyParser.
- # Implements a sort of state machine to assist the parser.
- module PoMessageForRubyParser
- # Supports parsing by setting attributes by and by.
- def set_current_attribute(str)
- param = @param_type[@param_number]
- raise ParseError, 'no more string parameters expected' unless param
- set_value(param, str)
- end
-
- def init_param
- @param_number = 0
- self
- end
-
- def advance_to_next_attribute
- @param_number += 1
- end
- end
- class PoMessage
- include PoMessageForRubyParser
- alias :initialize_old :initialize
- def initialize(type)
- initialize_old(type)
- init_param
- end
- end
-
- module RubyParser
- extend self
-
- ID = ['gettext', '_', 'N_', 'sgettext', 's_']
- PLURAL_ID = ['ngettext', 'n_', 'Nn_', 'ns_', 'nsgettext']
- MSGCTXT_ID = ['pgettext', 'p_']
- MSGCTXT_PLURAL_ID = ['npgettext', 'np_']
-
- # (Since 2.1.0) the 2nd parameter is deprecated
- # (and ignored here).
- # And You don't need to keep the pomessages as unique.
-
- def parse(path, deprecated = []) # :nodoc:
- lines = IO.readlines(path)
- parse_lines(path, lines, deprecated)
- end
-
- def parse_lines(path, lines, deprecated = []) # :nodoc:
- pomessages = deprecated
- file = StringIO.new(lines.join + "\n")
- rl = RubyLexX.new
- rl.set_input(file)
- rl.skip_space = true
- #rl.readed_auto_clean_up = true
-
- pomessage = nil
- line_no = nil
- last_comment = ''
- reset_comment = false
- rl.parse do |tk|
- begin
- case tk
- when RubyToken::TkIDENTIFIER, RubyToken::TkCONSTANT
- store_pomessage(pomessages, pomessage, path, line_no, last_comment)
- if ID.include?(tk.name)
- pomessage = PoMessage.new(:normal)
- elsif PLURAL_ID.include?(tk.name)
- pomessage = PoMessage.new(:plural)
- elsif MSGCTXT_ID.include?(tk.name)
- pomessage = PoMessage.new(:msgctxt)
- elsif MSGCTXT_PLURAL_ID.include?(tk.name)
- pomessage = PoMessage.new(:msgctxt_plural)
- else
- pomessage = nil
- end
- line_no = tk.line_no.to_s
- when RubyToken::TkSTRING
- pomessage.set_current_attribute tk.value if pomessage
- when RubyToken::TkPLUS, RubyToken::TkNL
- #do nothing
- when RubyToken::TkCOMMA
- pomessage.advance_to_next_attribute if pomessage
- else
- if store_pomessage(pomessages, pomessage, path, line_no, last_comment)
- pomessage = nil
- end
- end
- rescue
- $stderr.print "\n\nError"
- $stderr.print " parsing #{path}:#{tk.line_no}\n\t #{lines[tk.line_no - 1]}" if tk
- $stderr.print "\n #{$!.inspect} in\n"
- $stderr.print $!.backtrace.join("\n")
- $stderr.print "\n"
- exit 1
- end
-
- case tk
- when RubyToken::TkCOMMENT_WITH_CONTENT
- last_comment = "" if reset_comment
- if last_comment.empty?
- # new comment from programmer to translator?
- comment1 = tk.value.lstrip
- if comment1 =~ /^TRANSLATORS\:/
- last_comment = $'
- end
- else
- last_comment += "\n"
- last_comment += tk.value
- end
- reset_comment = false
- when RubyToken::TkNL
- else
- reset_comment = true
- end
- end
- pomessages
- end
-
- def target?(file) # :nodoc:
- true # always true, as the default parser.
- end
-
- private
- def store_pomessage(pomessages, pomessage, file_name, line_no, last_comment) #:nodoc:
- if pomessage && pomessage.msgid
- pomessage.sources << file_name + ":" + line_no
- pomessage.add_comment(last_comment) unless last_comment.empty?
- pomessages << pomessage
- true
- else
- false
- end
- end
- end
-end
-
-if __FILE__ == $0
- require 'pp'
- ARGV.each do |path|
- pp GetText::RubyParser.parse(path)
- end
-
- #rl = GetText::RubyLexX.new; rl.set_input(ARGF)
- #rl.parse do |tk|
- #p tk
- #end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools/pomessage.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools/pomessage.rb
deleted file mode 100644
index b5efe7221..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools/pomessage.rb
+++ /dev/null
@@ -1,197 +0,0 @@
-module GetText
- class ParseError < StandardError
- end
-
- # Contains data related to the expression or sentence that
- # is to be translated.
- class PoMessage
- PARAMS = {
- :normal => [:msgid],
- :plural => [:msgid, :msgid_plural],
- :msgctxt => [:msgctxt, :msgid],
- :msgctxt_plural => [:msgctxt, :msgid, :msgid_plural]
- }
-
- @@max_line_length = 70
-
- # Sets the max line length.
- def self.max_line_length=(len)
- @@max_line_length = len
- end
-
- # Gets the max line length.
- def self.max_line_length
- @@max_line_length
- end
-
- # Required
- attr_accessor :type # :normal, :plural, :msgctxt, :msgctxt_plural
- attr_accessor :msgid
- # Options
- attr_accessor :msgid_plural
- attr_accessor :msgctxt
- attr_accessor :sources # ["file1:line1", "file2:line2", ...]
- attr_accessor :comment
-
- # Create the object. +type+ should be :normal, :plural, :msgctxt or :msgctxt_plural.
- def initialize(type)
- @type = type
- @sources = []
- @param_type = PARAMS[@type]
- end
-
- # Support for extracted comments. Explanation s.
- # http://www.gnu.org/software/gettext/manual/gettext.html#Names
- def add_comment(new_comment)
- if (new_comment and ! new_comment.empty?)
- @comment ||= ""
- @comment += new_comment
- end
- to_s
- end
-
- # Returns a parameter representation suitable for po-files
- # and other purposes.
- def escaped(param_name)
- orig = self.send param_name
- orig.gsub(/"/, '\"').gsub(/\r/, '')
- end
-
- # Checks if the other translation target is mergeable with
- # the current one. Relevant are msgid and translation context (msgctxt).
- def ==(other)
- other.msgid == self.msgid && other.msgctxt == self.msgctxt
- end
-
- # Merges two translation targets with the same msgid and returns the merged
- # result. If one is declared as plural and the other not, then the one
- # with the plural wins.
- def merge(other)
- return self unless other
- raise ParseError, "Translation targets do not match: \n" \
- " self: #{self.inspect}\n other: '#{other.inspect}'" unless self == other
- if other.msgid_plural && !self.msgid_plural
- res = other
- unless (res.sources.include? self.sources[0])
- res.sources += self.sources
- res.add_comment(self.comment)
- end
- else
- res = self
- unless (res.sources.include? other.sources[0])
- res.sources += other.sources
- res.add_comment(other.comment)
- end
- end
- res
- end
-
- # Output the po message for the po-file.
- def to_po_str
- raise "msgid is nil." unless @msgid
- raise "sources is nil." unless @sources
-
- str = ""
- # extracted comments
- if comment
- comment.split("\n").each do |comment_line|
- str << "\n#. #{comment_line.strip}"
- end
- end
-
- # references
- curr_pos = @@max_line_length
- sources.each do |e|
- if curr_pos + e.size > @@max_line_length
- str << "\n#:"
- curr_pos = 3
- else
- curr_pos += (e.size + 1)
- end
- str << " " << e
- end
-
- # msgctxt, msgid, msgstr
- str << "\nmsgctxt \"" << msgctxt << "\"" if msgctxt?
- str << "\nmsgid \"" << escaped(:msgid) << "\"\n"
- if plural?
- str << "msgid_plural \"" << escaped(:msgid_plural) << "\"\n"
- str << "msgstr[0] \"\"\n"
- str << "msgstr[1] \"\"\n"
- else
- str << "msgstr \"\"\n"
- end
- str
- end
-
- # Returns true if the type is kind of msgctxt.
- # And if this is a kind of msgctxt and msgctxt property
- # is nil, then raise an RuntimeException.
- def msgctxt?
- if [:msgctxt, :msgctxt_plural].include? @type
- raise "This PoMessage is a kind of msgctxt but the msgctxt property is nil. msgid: #{msgid}" unless @msgctxt
- true
- end
- end
-
- # Returns true if the type is kind of plural.
- # And if this is a kind of plural and msgid_plural property
- # is nil, then raise an RuntimeException.
- def plural?
- if [:plural, :msgctxt_plural].include? @type
- raise "This PoMessage is a kind of plural but the msgid_plural property is nil. msgid: #{msgid}" unless @msgid_plural
- true
- end
- end
-
- private
-
- # sets or extends the value of a translation target params like msgid,
- # msgctxt etc.
- # param is symbol with the name of param
- # value - new value
- def set_value(param, value)
- send "#{param}=", (send(param) || '') + value.gsub(/\n/, '\n')
- end
-
- public
- # For backward comatibility. This doesn't support "comment".
- # ary = [msgid1, "file1:line1", "file2:line"]
- def self.new_from_ary(ary)
- ary = ary.dup
- msgid = ary.shift
- sources = ary
- type = :normal
- msgctxt = nil
- msgid_plural = nil
-
- if msgid.include? "\004"
- msgctxt, msgid = msgid.split(/\004/)
- type = :msgctxt
- end
- if msgid.include? "\000"
- ids = msgid.split(/\000/)
- msgid = ids[0]
- msgid_plural = ids[1]
- if type == :msgctxt
- type = :msgctxt_plural
- else
- type = :plural
- end
- end
- ret = self.new(type)
- ret.msgid = msgid
- ret.sources = sources
- ret.msgctxt = msgctxt
- ret.msgid_plural = msgid_plural
- ret
- end
-
- def [](number)
- param = @param_type[number]
- raise ParseError, 'no more string parameters expected' unless param
- send param
- end
- end
-
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools/poparser.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools/poparser.rb
deleted file mode 100644
index 827a99c2f..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools/poparser.rb
+++ /dev/null
@@ -1,356 +0,0 @@
-=begin
- poparser.rb - Generate a .mo
-
- Copyright (C) 2003-2009 Masao Mutoh <mutomasa at gmail.com>
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-#
-# DO NOT MODIFY!!!!
-# This file is automatically generated by Racc 1.4.6
-# from Racc grammer file "".
-#
-
-require 'racc/parser.rb'
-module GetText
- class PoParser < Racc::Parser
-
-module_eval(<<'...end poparser.ry/module_eval...', 'poparser.ry', 108)
- include GetText
- GetText.bindtextdomain("rgettext")
-
- def unescape(orig)
- ret = orig.gsub(/\\n/, "\n")
- ret.gsub!(/\\t/, "\t")
- ret.gsub!(/\\r/, "\r")
- ret.gsub!(/\\"/, "\"")
- ret
- end
-
- def parse(str, data, ignore_fuzzy = true)
- @comments = []
- @data = data
- @fuzzy = false
- @msgctxt = ""
- $ignore_fuzzy = ignore_fuzzy
-
- str.strip!
- @q = []
- until str.empty? do
- case str
- when /\A\s+/
- str = $'
- when /\Amsgctxt/
- @q.push [:MSGCTXT, $&]
- str = $'
- when /\Amsgid_plural/
- @q.push [:MSGID_PLURAL, $&]
- str = $'
- when /\Amsgid/
- @q.push [:MSGID, $&]
- str = $'
- when /\Amsgstr/
- @q.push [:MSGSTR, $&]
- str = $'
- when /\A\[(\d+)\]/
- @q.push [:PLURAL_NUM, $1]
- str = $'
- when /\A\#~(.*)/
- $stderr.print _("Warning: obsolete msgid exists.\n")
- $stderr.print " #{$&}\n"
- @q.push [:COMMENT, $&]
- str = $'
- when /\A\#(.*)/
- @q.push [:COMMENT, $&]
- str = $'
- when /\A\"(.*)\"/
- @q.push [:STRING, $1]
- str = $'
- else
- #c = str[0,1]
- #@q.push [:STRING, c]
- str = str[1..-1]
- end
- end
- @q.push [false, '$end']
- if $DEBUG
- @q.each do |a,b|
- puts "[#{a}, #{b}]"
- end
- end
- @yydebug = true if $DEBUG
- do_parse
-
- if @comments.size > 0
- @data.set_comment(:last, @comments.join("\n"))
- end
- @data
- end
-
- def next_token
- @q.shift
- end
-
- def on_message(msgid, msgstr)
- if msgstr.size > 0
- @data[msgid] = msgstr
- @data.set_comment(msgid, @comments.join("\n"))
- end
- @comments.clear
- @msgctxt = ""
- end
-
- def on_comment(comment)
- @fuzzy = true if (/fuzzy/ =~ comment)
- @comments << comment
- end
-
- def parse_file(po_file, data, ignore_fuzzy = true)
- args = [ po_file ]
- # In Ruby 1.9, we must detect proper encoding of a PO file.
- if String.instance_methods.include?(:encode)
- encoding = detect_file_encoding(po_file)
- args << "r:#{encoding}"
- end
- @po_file = po_file
- parse(File.open(*args) {|io| io.read }, data, ignore_fuzzy)
- end
-
- def detect_file_encoding(po_file)
- open(po_file, :encoding => 'ASCII-8BIT') do |input|
- input.lines.each do |line|
- return Encoding.find($1) if %r["Content-Type:.*\scharset=(.*)\\n"] =~ line
- end
- end
- Encoding.default_external
- end
- private :detect_file_encoding
-...end poparser.ry/module_eval...
-##### State transition tables begin ###
-
-racc_action_table = [
- 3, 13, 5, 7, 9, 15, 16, 17, 20, 17,
- 13, 17, 13, 13, 11, 17, 23, 20, 13, 17 ]
-
-racc_action_check = [
- 1, 16, 1, 1, 1, 12, 12, 12, 18, 18,
- 7, 14, 15, 9, 3, 19, 20, 21, 23, 25 ]
-
-racc_action_pointer = [
- nil, 0, nil, 14, nil, nil, nil, 3, nil, 6,
- nil, nil, 0, nil, 4, 5, -6, nil, 2, 8,
- 8, 11, nil, 11, nil, 12 ]
-
-racc_action_default = [
- -1, -16, -2, -16, -3, -13, -4, -16, -6, -16,
- -7, 26, -16, -15, -5, -16, -16, -14, -16, -8,
- -16, -9, -11, -16, -10, -12 ]
-
-racc_goto_table = [
- 12, 22, 14, 4, 24, 6, 2, 8, 18, 19,
- 10, 21, 1, nil, nil, nil, 25 ]
-
-racc_goto_check = [
- 5, 9, 5, 3, 9, 4, 2, 6, 5, 5,
- 7, 8, 1, nil, nil, nil, 5 ]
-
-racc_goto_pointer = [
- nil, 12, 5, 2, 4, -7, 6, 9, -7, -17 ]
-
-racc_goto_default = [
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ]
-
-racc_reduce_table = [
- 0, 0, :racc_error,
- 0, 10, :_reduce_none,
- 2, 10, :_reduce_none,
- 2, 10, :_reduce_none,
- 2, 10, :_reduce_none,
- 2, 12, :_reduce_5,
- 1, 13, :_reduce_none,
- 1, 13, :_reduce_none,
- 4, 15, :_reduce_8,
- 5, 16, :_reduce_9,
- 2, 17, :_reduce_10,
- 1, 17, :_reduce_none,
- 3, 18, :_reduce_12,
- 1, 11, :_reduce_13,
- 2, 14, :_reduce_14,
- 1, 14, :_reduce_15 ]
-
-racc_reduce_n = 16
-
-racc_shift_n = 26
-
-racc_token_table = {
- false => 0,
- :error => 1,
- :COMMENT => 2,
- :MSGID => 3,
- :MSGCTXT => 4,
- :MSGID_PLURAL => 5,
- :MSGSTR => 6,
- :STRING => 7,
- :PLURAL_NUM => 8 }
-
-racc_nt_base = 9
-
-racc_use_result_var = true
-
-Racc_arg = [
- racc_action_table,
- racc_action_check,
- racc_action_default,
- racc_action_pointer,
- racc_goto_table,
- racc_goto_check,
- racc_goto_default,
- racc_goto_pointer,
- racc_nt_base,
- racc_reduce_table,
- racc_token_table,
- racc_shift_n,
- racc_reduce_n,
- racc_use_result_var ]
-
-Racc_token_to_s_table = [
- "$end",
- "error",
- "COMMENT",
- "MSGID",
- "MSGCTXT",
- "MSGID_PLURAL",
- "MSGSTR",
- "STRING",
- "PLURAL_NUM",
- "$start",
- "msgfmt",
- "comment",
- "msgctxt",
- "message",
- "string_list",
- "single_message",
- "plural_message",
- "msgstr_plural",
- "msgstr_plural_line" ]
-
-Racc_debug_parser = true
-
-##### State transition tables end #####
-
-# reduce 0 omitted
-
-# reduce 1 omitted
-
-# reduce 2 omitted
-
-# reduce 3 omitted
-
-# reduce 4 omitted
-
-module_eval(<<'.,.,', 'poparser.ry', 23)
- def _reduce_5(val, _values, result)
- @msgctxt = unescape(val[1]) + "\004"
-
- result
- end
-.,.,
-
-# reduce 6 omitted
-
-# reduce 7 omitted
-
-module_eval(<<'.,.,', 'poparser.ry', 35)
- def _reduce_8(val, _values, result)
- if @fuzzy and $ignore_fuzzy
- if val[1] != ""
- $stderr.print _("Warning: fuzzy message was ignored.\n")
- $stderr.print " #{@po_file}: msgid '#{val[1]}'\n"
- else
- on_message('', unescape(val[3]))
- end
- @fuzzy = false
- else
- on_message(@msgctxt + unescape(val[1]), unescape(val[3]))
- end
- result = ""
-
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'poparser.ry', 52)
- def _reduce_9(val, _values, result)
- if @fuzzy and $ignore_fuzzy
- if val[1] != ""
- $stderr.print _("Warning: fuzzy message was ignored.\n")
- $stderr.print "msgid = '#{val[1]}\n"
- else
- on_message('', unescape(val[3]))
- end
- @fuzzy = false
- else
- on_message(@msgctxt + unescape(val[1]) + "\000" + unescape(val[3]), unescape(val[4]))
- end
- result = ""
-
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'poparser.ry', 70)
- def _reduce_10(val, _values, result)
- if val[0].size > 0
- result = val[0] + "\000" + val[1]
- else
- result = ""
- end
-
- result
- end
-.,.,
-
-# reduce 11 omitted
-
-module_eval(<<'.,.,', 'poparser.ry', 82)
- def _reduce_12(val, _values, result)
- result = val[2]
-
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'poparser.ry', 89)
- def _reduce_13(val, _values, result)
- on_comment(val[0])
-
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'poparser.ry', 97)
- def _reduce_14(val, _values, result)
- result = val.delete_if{|item| item == ""}.join
-
- result
- end
-.,.,
-
-module_eval(<<'.,.,', 'poparser.ry', 101)
- def _reduce_15(val, _values, result)
- result = val[0]
-
- result
- end
-.,.,
-
-def _reduce_none(val, _values, result)
- val[0]
-end
-
- end # class PoParser
- end # module GetText
-
-
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools/rgettext.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools/rgettext.rb
deleted file mode 100644
index a66ed2fe0..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools/rgettext.rb
+++ /dev/null
@@ -1,226 +0,0 @@
-#! /usr/bin/env ruby
-=begin
- rgettext.rb - Generate a .pot file.
-
- Copyright (C) 2003-2009 Masao Mutoh
- Copyright (C) 2001,2002 Yasushi Shoji, Masao Mutoh
-
- Yasushi Shoji <yashi at atmark-techno.com>
- Masao Mutoh <mutomasa at gmail.com>
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'optparse'
-require 'gettext'
-require 'rbconfig'
-
-module GetText
-
- module RGetText #:nodoc:
- extend GetText
-
- bindtextdomain("rgettext")
-
- # constant values
- VERSION = GetText::VERSION
-
- @ex_parsers = []
- [
- ["glade.rb", "GladeParser"],
- ["erb.rb", "ErbParser"],
-# ["ripper.rb", "RipperParser"],
- ["ruby.rb", "RubyParser"] # Default parser.
- ].each do |f, klass|
- begin
- require "gettext/tools/parser/#{f}"
- @ex_parsers << GetText.const_get(klass)
- rescue
- $stderr.puts _("'%{klass}' is ignored.") % {:klass => klass}
- $stderr.puts $! if $DEBUG
- end
- end
-
- module_function
-
- # Add an option parser
- # the option parser module requires to have target?(file) and parser(file, ary) method.
- #
- # require 'gettext/tools/rgettext'
- # module FooParser
- # module_function
- # def target?(file)
- # File.extname(file) == '.foo' # *.foo file only.
- # end
- # def parse(file, ary)
- # :
- # return ary # [["msgid1", "foo.rb:200"], ["msgid2", "bar.rb:300", "baz.rb:400"], ...]
- # end
- # end
- #
- # GetText::RGetText.add_parser(FooParser)
- def add_parser(klass)
- @ex_parsers.insert(0, klass)
- end
-
- def generate_pot_header # :nodoc:
- time = Time.now.strftime("%Y-%m-%d %H:%M")
- off = Time.now.utc_offset
- sign = off <= 0 ? '-' : '+'
- time += sprintf('%s%02d%02d', sign, *(off.abs / 60).divmod(60))
-
- <<TITLE
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\\n"
-"POT-Creation-Date: #{time}\\n"
-"PO-Revision-Date: #{time}\\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
-"Language-Team: LANGUAGE <LL@li.org>\\n"
-"MIME-Version: 1.0\\n"
-"Content-Type: text/plain; charset=UTF-8\\n"
-"Content-Transfer-Encoding: 8bit\\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\\n"
-TITLE
- end
-
- def generate_pot(paths) # :nodoc:
- pomessages = parse(paths)
- str = ""
- pomessages.each do |target|
- str << target.to_po_str
- end
- str
- end
-
- def parse(paths) # :nodoc:
- pomessages = []
- paths.each do |path|
- begin
- @ex_parsers.each do |klass|
- if klass.target?(path)
- if klass.method(:parse).arity == 1
- targets = klass.parse(path)
- else
- # For backward compatibility.
- targets = klass.parse(path, [])
- end
-
- targets.each{|pomessage|
- if pomessage.kind_of? Array
- pomessage = PoMessage.new_from_ary(pomessage)
- end
-
- # Save the previous target.
- existing = pomessages.find_index {|t| t == pomessage}
- if existing
- pomessage = pomessages[existing].merge(pomessage)
- pomessages[existing] = pomessage
- else
- pomessages << pomessage
- end
- }
- break
- end
- end
- rescue
- puts _("Error parsing %{path}") % {:path => path}
- raise
- end
- end
- pomessages
- end
-
- def check_options # :nodoc:
- output = STDOUT
-
- opts = OptionParser.new
- opts.banner = _("Usage: %s input.rb [-r parser.rb] [-o output.pot]") % $0
- opts.separator("")
- opts.separator(_("Extract translatable strings from given input files."))
- opts.separator("")
- opts.separator(_("Specific options:"))
-
- opts.on("-o", "--output=FILE", _("write output to specified file")) do |out|
- unless FileTest.exist? out
- output = File.new(File.expand_path(out), "w+")
- else
- $stderr.puts(_("File '%s' already exists.") % out)
- exit 1
- end
- end
-
- opts.on("-r", "--require=library", _("require the library before executing rgettext")) do |out|
- require out
- end
-
- opts.on("-d", "--debug", _("run in debugging mode")) do
- $DEBUG = true
- end
-
- opts.on_tail("--version", _("display version information and exit")) do
- puts "#{$0} #{VERSION}"
- puts "#{File.join(Config::CONFIG["bindir"], Config::CONFIG["RUBY_INSTALL_NAME"])} #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
- exit
- end
-
- opts.parse!(ARGV)
-
- if ARGV.size == 0
- puts opts.help
- exit 1
- end
-
- [ARGV, output]
- end
-
- def run(paths = nil, out = STDOUT) # :nodoc:
- if paths.is_a? String
- paths = [paths]
- elsif ! paths
- paths, out = check_options
- end
-
- if paths.size == 0
- raise ArgumentError, _("no input files")
- end
-
- if out.is_a? String
- File.open(File.expand_path(out), "w+") do |file|
- file.puts generate_pot_header
- file.puts generate_pot(paths)
- end
- else
- out.puts generate_pot_header
- out.puts generate_pot(paths)
- end
- self
- end
- end
- extend self
- # Creates a po-file from targetfiles(ruby-script-files, .rhtml files, glade-2 XML files),
- # then output the result to out. If no parameter is set, it behaves same as command line tools(rgettet).
- #
- # This function is a part of GetText.create_pofiles.
- # Usually you don't need to call this function directly.
- #
- # * paths: An Array of po-file paths or nil.
- # * out: output IO or output path.
- # * Returns: self
- def rgettext(paths = nil, out = STDOUT)
- RGetText.run(paths, out)
- self
- end
-end
-
-if $0 == __FILE__
- GetText.rgettext
-# GetText.rgettext($0, "tmp.txt")
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools/rmsgfmt.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools/rmsgfmt.rb
deleted file mode 100644
index 2aa428c55..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools/rmsgfmt.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-=begin
- rmsgfmt.rb - Generate a .mo
-
- Copyright (C) 2003-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'optparse'
-require 'fileutils'
-require 'gettext'
-require 'gettext/tools/poparser'
-require 'rbconfig'
-
-module GetText
-
- module RMsgfmt #:nodoc:
- extend GetText
- extend self
-
- bindtextdomain "rgettext"
-
- def run(targetfile = nil, output_path = nil) # :nodoc:
- unless targetfile
- targetfile, output_path = check_options
- end
- unless targetfile
- raise ArgumentError, _("no input files")
- end
- unless output_path
- output_path = "messages.mo"
- end
-
- parser = PoParser.new
- data = MOFile.new
-
- parser.parse_file(targetfile, data)
- data.save_to_file(output_path)
- end
-
- def check_options # :nodoc:
- output = nil
-
- opts = OptionParser.new
- opts.banner = _("Usage: %s input.po [-o output.mo]" % $0)
- opts.separator("")
- opts.separator(_("Generate binary message catalog from textual translation description."))
- opts.separator("")
- opts.separator(_("Specific options:"))
-
- opts.on("-o", "--output=FILE", _("write output to specified file")) do |out|
- output = out
- end
-
- opts.on_tail("--version", _("display version information and exit")) do
- puts "#{$0} #{GetText::VERSION}"
- puts "#{File.join(Config::CONFIG["bindir"], Config::CONFIG["RUBY_INSTALL_NAME"])} #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
- exit
- end
- opts.parse!(ARGV)
-
- if ARGV.size == 0
- puts opts.help
- exit 1
- end
-
- [ARGV[0], output]
- end
- end
-
- # Creates a mo-file from a targetfile(po-file), then output the result to out.
- # If no parameter is set, it behaves same as command line tools(rmsgfmt).
- # * targetfile: An Array of po-files or nil.
- # * output_path: output path.
- # * Returns: the MOFile object.
- def rmsgfmt(targetfile = nil, output_path = nil)
- RMsgfmt.run(targetfile, output_path)
- end
-end
-
-if $0 == __FILE__ then
- GetText.rmsgfmt
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/tools/rmsgmerge.rb b/vendor/gems/gettext-2.1.0/lib/gettext/tools/rmsgmerge.rb
deleted file mode 100644
index 802ba20bc..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/tools/rmsgmerge.rb
+++ /dev/null
@@ -1,498 +0,0 @@
-=begin
- rmsgmerge.rb - Merge old .po to new .po
-
- Copyright (C) 2005-2009 Masao Mutoh
- Copyright (C) 2005,2006 speakillof
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'optparse'
-require 'gettext'
-require 'gettext/tools/poparser'
-require 'rbconfig'
-
-module GetText
-
- module RMsgMerge
-
- class PoData #:nodoc:
-
- attr_reader :msgids
-
- def initialize
- @msgid2msgstr = {}
- @msgid2comment = {}
- @msgids = []
- end
-
- def set_comment(msgid_or_sym, comment)
- @msgid2comment[msgid_or_sym] = comment
- end
-
- def msgstr(msgid)
- @msgid2msgstr[msgid]
- end
-
- def comment(msgid)
- @msgid2comment[msgid]
- end
-
- def [](msgid)
- @msgid2msgstr[msgid]
- end
-
- def []=(msgid, msgstr)
- # Retain the order
- unless @msgid2msgstr[msgid]
- @msgids << msgid
- end
-
- @msgid2msgstr[msgid] = msgstr
- end
-
- def each_msgid
- arr = @msgids.delete_if{|i| Symbol === i or i == ''}
- arr.each do |i|
- yield i
- end
- end
-
- def msgid?(msgid)
- !(Symbol === msgid) and @msgid2msgstr[msgid] and (msgid != '')
- end
-
- # Is it necessary to implement this method?
- def search_msgid_fuzzy(msgid, used_msgids)
- nil
- end
-
- def nplural
- unless @msgid2msgstr['']
- return 0
- else
- if /\s*nplural\s*=\s*(\d+)/ =~ @msgid2msgstr['']
- return $1.to_i
- else
- return 0
- end
-
- end
- end
-
- def generate_po
- str = ''
- str << generate_po_header
-
- self.each_msgid do |id|
- str << self.generate_po_entry(id)
- end
-
- str << @msgid2comment[:last]
- str
- end
-
- def generate_po_header
- str = ""
-
- str << @msgid2comment[''].strip << "\n"
- str << 'msgid ""' << "\n"
- str << 'msgstr ""' << "\n"
- msgstr = @msgid2msgstr[''].gsub(/"/, '\"').gsub(/\r/, '')
- msgstr = msgstr.gsub(/^(.*)$/, '"\1\n"')
- str << msgstr
- str << "\n"
-
- str
- end
-
- def generate_po_entry(msgid)
- str = ""
- str << @msgid2comment[msgid]
- if str[-1] != "\n"[0]
- str << "\n"
- end
-
- id = msgid.gsub(/"/, '\"').gsub(/\r/, '')
- msgstr = @msgid2msgstr[msgid].gsub(/"/, '\"').gsub(/\r/, '')
-
- if id.include?("\000")
- ids = id.split(/\000/)
- str << "msgid " << __conv(ids[0]) << "\n"
- ids[1..-1].each do |single_id|
- str << "msgid_plural " << __conv(single_id) << "\n"
- end
-
- msgstr.split("\000").each_with_index do |m, n|
- str << "msgstr[#{n}] " << __conv(m) << "\n"
- end
- else
- str << "msgid " << __conv(id) << "\n"
- str << "msgstr " << __conv(msgstr) << "\n"
- end
-
- str << "\n"
- str
- end
-
- def __conv(str)
- s = ''
-
- if str.count("\n") > 1
- s << '""' << "\n"
- s << str.gsub(/^(.*)$/, '"\1\n"')
- else
- s << '"' << str.sub("\n", "\\n") << '"'
- end
-
- s.rstrip
- end
-
- end
-
- class Merger #:nodoc:
-
- # From GNU gettext source.
- #
- # Merge the reference with the definition: take the #. and
- # #: comments from the reference, take the # comments from
- # the definition, take the msgstr from the definition. Add
- # this merged entry to the output message list.
- DOT_COMMENT_RE = /\A#\./
- SEMICOLON_COMMENT_RE = /\A#\:/
- FUZZY_RE = /\A#\,/
- NOT_SPECIAL_COMMENT_RE = /\A#([^:.,]|\z)/
-
- CRLF_RE = /\r?\n/
- POT_DATE_EXTRACT_RE = /POT-Creation-Date:\s*(.*)?\s*$/
- POT_DATE_RE = /POT-Creation-Date:.*?$/
-
- def merge(definition, reference)
- # deep copy
- result = Marshal.load( Marshal.dump(reference) )
-
- used = []
- merge_header(result, definition)
-
- result.each_msgid do |msgid|
- if definition.msgid?(msgid)
- used << msgid
- merge_message(msgid, result, msgid, definition)
- elsif other_msgid = definition.search_msgid_fuzzy(msgid, used)
- used << other_msgid
- merge_fuzzy_message(msgid, result, other_msgid, definition)
- elsif msgid.index("\000") and ( reference.msgstr(msgid).gsub("\000", '') == '' )
- # plural
- result[msgid] = "\000" * definition.nplural
- else
- change_reference_comment(msgid, result)
- end
- end
-
- ###################################################################
- # msgids which are not used in reference are handled as obsolete. #
- ###################################################################
- last_comment = result.comment(:last) || ''
- definition.each_msgid do |msgid|
- unless used.include?(msgid)
- last_comment << "\n"
- last_comment << definition.generate_po_entry(msgid).strip.gsub(/^/, '#. ')
- last_comment << "\n"
- end
- end
- result.set_comment(:last, last_comment)
-
- result
- end
-
- def merge_message(msgid, target, def_msgid, definition)
- merge_comment(msgid, target, def_msgid, definition)
-
- ############################################
- # check mismatch of msgid and msgid_plural #
- ############################################
- def_msgstr = definition[def_msgid]
- if msgid.index("\000")
- if def_msgstr.index("\000")
- # OK
- target[msgid] = def_msgstr
- else
- # NG
- s = ''
- definition.nplural.times {
- s << def_msgstr
- s << "\000"
- }
- target[msgid] = s
- end
- else
- if def_msgstr.index("\000")
- # NG
- target[msgid] = def_msgstr.split("\000")[0]
- else
- # OK
- target[msgid] = def_msgstr
- end
- end
- end
-
- # for the future
- def merge_fuzzy_message(msgid, target, def_msgid, definition)
- merge_message(msgid, target, def_msgid, definition)
- end
-
- def merge_comment(msgid, target, def_msgid, definition)
- ref_comment = target.comment(msgid)
- def_comment = definition.comment(def_msgid)
-
- normal_comment = []
- dot_comment = []
- semi_comment = []
- is_fuzzy = false
-
- def_comment.split(CRLF_RE).each do |l|
- if NOT_SPECIAL_COMMENT_RE =~ l
- normal_comment << l
- end
- end
-
- ref_comment.split(CRLF_RE).each do |l|
- if DOT_COMMENT_RE =~ l
- dot_comment << l
- elsif SEMICOLON_COMMENT_RE =~ l
- semi_comment << l
- elsif FUZZY_RE =~ l
- is_fuzzy = true
- end
- end
-
- str = format_comment(normal_comment, dot_comment, semi_comment, is_fuzzy)
- target.set_comment(msgid, str)
- end
-
- def change_reference_comment(msgid, podata)
- normal_comment = []
- dot_comment = []
- semi_comment = []
- is_fuzzy = false
-
- podata.comment(msgid).split(CRLF_RE).each do |l|
- if DOT_COMMENT_RE =~ l
- dot_comment << l
- elsif SEMICOLON_COMMENT_RE =~ l
- semi_comment << l
- elsif FUZZY_RE =~ l
- is_fuzzy = true
- else
- normal_comment << l
- end
- end
-
- str = format_comment(normal_comment, dot_comment, semi_comment, is_fuzzy)
- podata.set_comment(msgid, str)
- end
-
- def format_comment(normal_comment, dot_comment, semi_comment, is_fuzzy)
- str = ''
-
- str << normal_comment.join("\n").gsub(/^#(\s*)/){|sss|
- if $1 == ""
- "# "
- else
- sss
- end
- }
- if normal_comment.size > 0
- str << "\n"
- end
-
- str << dot_comment.join("\n").gsub(/^#.(\s*)/){|sss|
- if $1 == ""
- "#. "
- else
- sss
- end
- }
- if dot_comment.size > 0
- str << "\n"
- end
-
- str << semi_comment.join("\n").gsub(/^#:\s*/, "#: ")
- if semi_comment.size > 0
- str << "\n"
- end
-
- if is_fuzzy
- str << "#, fuzzy\n"
- end
-
- str
- end
-
- def merge_header(target, definition)
- merge_comment('', target, '', definition)
-
- msg = target.msgstr('')
- def_msg = definition.msgstr('')
- if POT_DATE_EXTRACT_RE =~ msg
- time = $1
- def_msg = def_msg.sub(POT_DATE_RE, "POT-Creation-Date: #{time}")
- end
-
- target[''] = def_msg
- end
-
- end
-
- end
-
-end
-
-module GetText::RMsgMerge #:nodoc:
-
- class Config #:nodoc:
-
- attr_accessor :defpo, :refpot, :output, :fuzzy, :update
-
- # update mode options
- attr_accessor :backup, :suffix
-
-=begin
-The result is written back to def.po.
- --backup=CONTROL make a backup of def.po
- --suffix=SUFFIX override the usual backup suffix
-The version control method may be selected via the --backup option or through
-the VERSION_CONTROL environment variable. Here are the values:
- none, off never make backups (even if --backup is given)
- numbered, t make numbered backups
- existing, nil numbered if numbered backups exist, simple otherwise
- simple, never always make simple backups
-The backup suffix is `~', unless set with --suffix or the SIMPLE_BACKUP_SUFFIX
-environment variable.
-=end
-
- def initialize
- @output = STDOUT
- @fuzzy = nil
- @update = nil
- @backup = ENV["VERSION_CONTROL"]
- @suffix= ENV["SIMPLE_BACKUP_SUFFIX"] || "~"
- @input_dirs = ["."]
- end
-
- end
-
-end
-
-module GetText
-
- module RMsgMerge
- extend GetText
- extend self
-
- bindtextdomain("rgettext")
-
- # constant values
- VERSION = GetText::VERSION
- DATE = %w($Date: 2007/07/21 15:03:05 $)[1]
-
- def check_options(config)
- opts = OptionParser.new
- opts.banner = _("Usage: %s def.po ref.pot [-o output.pot]") % $0
- #opts.summary_width = 80
- opts.separator("")
- opts.separator(_("Merges two Uniforum style .po files together. The def.po file is an existing PO file with translations. The ref.pot file is the last created PO file with up-to-date source references. ref.pot is generally created by rgettext."))
- opts.separator("")
- opts.separator(_("Specific options:"))
-
- opts.on("-o", "--output=FILE", _("write output to specified file")) do |out|
- unless FileTest.exist? out
- config.output = out
- else
- #$stderr.puts(_("File '%s' has already existed.") % out)
- #exit 1
- end
- end
-
- #opts.on("-F", "--fuzzy-matching")
-
- opts.on_tail("--version", _("display version information and exit")) do
- puts "#{$0} #{VERSION} (#{DATE})"
- puts "#{File.join(::Config::CONFIG["bindir"], ::Config::CONFIG["RUBY_INSTALL_NAME"])} #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
- exit
- end
-
- opts.parse!(ARGV)
-
- if ARGV.size != 2
- puts opts.help
- exit 1
- end
-
- config.defpo = ARGV[0]
- config.refpot = ARGV[1]
- end
-
- def run(reference = nil, definition = nil, out = STDOUT)
- config = GetText::RMsgMerge::Config.new
- config.refpot = reference
- config.defpo = definition
- config.output = out
-
- check_options(config)
-
- if config.defpo.nil?
- raise ArgumentError, _("definition po is not given.")
- elsif config.refpot.nil?
- raise ArgumentError, _("reference pot is not given.")
- end
-
- parser = PoParser.new
- defpo = parser.parse_file(config.defpo, PoData.new, false)
- refpot = parser.parse_file(config.refstrrefstr, PoData.new, false)
-
- m = Merger.new
- result = m.merge(defpo, refpot)
- p result if $DEBUG
- print result.generate_po if $DEBUG
-
- begin
- if out.is_a? String
- File.open(File.expand_path(out), "w+") do |file|
- file.write(result.generate_po)
- end
- else
- out.puts(result.generate_po)
- end
- ensure
- out.close
- end
- end
-
- end
-
-end
-
-
-
-module GetText
-
- # Experimental
- def rmsgmerge(reference = nil, definition = nil, out = STDOUT)
- RMsgMerge.run(reference, definition, out)
- end
-
-end
-
-
-
-if $0 == __FILE__ then
- require 'pp'
-
- #parser = GetText::RMsgMerge::PoParser.new;
- #parser = GetText::PoParser.new;
- #pp parser.parse(ARGF.read)
-
- GetText.rmsgmerge
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/utils.rb b/vendor/gems/gettext-2.1.0/lib/gettext/utils.rb
deleted file mode 100644
index e4f1be4e8..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/utils.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-=begin
- utils.rb - Utility functions
-
- Copyright (C) 2005,2006 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'gettext/tools'
-
-warn "'gettext/utils.rb' is deprecated. Use gettext/tools.rb."
-
-module GetText
-
- alias :create_mofiles_org :create_mofiles #:nodoc:
- alias :update_pofiles_org :update_pofiles #:nodoc:
-
-
- # Deprecated. Use gettext/tools instead.
- def create_mofiles(verbose = false,
- podir = "./po", targetdir = "./data/locale",
- targetpath_rule = "%s/LC_MESSAGES") # :nodoc:
- warn "'gettext/utils.rb' is deprecated. Use gettext/tools.rb."
- create_mofiles_org(:verbose => verbose,
- :po_root => podir,
- :mo_root => targetdir,
- :mo_root_rule => targetpath_rule)
- end
-
- # Deprecated. Use gettext/tools instead.
- def update_pofiles(textdomain, files, app_version, po_root = "po", refpot = "tmp.pot") # :nodoc:
- warn "'gettext/utils.rb' is deprecated. Use gettext/tools.rb."
- options = {:po_root => po_root}
- update_pofiles_org(textdomain, files, app_version, options)
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/lib/gettext/version.rb b/vendor/gems/gettext-2.1.0/lib/gettext/version.rb
deleted file mode 100644
index c1de5bc07..000000000
--- a/vendor/gems/gettext-2.1.0/lib/gettext/version.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /usr/bin/ruby
-=begin
- version - version information of Ruby-GetText-Package
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-module GetText
- VERSION = "2.1.0"
-end
diff --git a/vendor/gems/gettext-2.1.0/po/bg/rgettext.po b/vendor/gems/gettext-2.1.0/po/bg/rgettext.po
deleted file mode 100644
index 61ddfe84c..000000000
--- a/vendor/gems/gettext-2.1.0/po/bg/rgettext.po
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Употреба: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Слива два Uniforum .pо файла. def.po е съществуващ PO файл с преводи. ref."
-"pot е пресен PO файл с актуални референции към кода. ref.pot обикновено е "
-"създаден от rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Специфични опции:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "изходът беше записан в зададения файл"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "показване на версията и изход"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "съществуващия po не е зададен."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "pot с референциите не е зададен."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' не е във формат glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' беше игнориран."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Употреба: %s input.rb [-r parser.rb] [-o output.pot] "
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Извличане на преводните низове от зададените файлове."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Файлът '%s' съществува."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "заредете библиотеката с require преди да изпълните rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "изпълнение в режим на дебъгване"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "няма зададени файлове"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Употреба: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Генериране на двоични файлове с преводите от текстовите описания."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Пропадна сливането с %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Новия .pot беше копиран като %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Проверете тези po/pot файлове. Може да имат синтактични грешки или нещо "
-"друго."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Третият параметър е грешен: value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Предупреждение: беше игнорирано неточно съобщение"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr ""
-"Предупреждение: има несъществуващи вече msgid\n"
-"."
diff --git a/vendor/gems/gettext-2.1.0/po/bs/rgettext.po b/vendor/gems/gettext-2.1.0/po/bs/rgettext.po
deleted file mode 100644
index 9e8f45f03..000000000
--- a/vendor/gems/gettext-2.1.0/po/bs/rgettext.po
+++ /dev/null
@@ -1,135 +0,0 @@
-# translation of rgettext.po to Bosnian
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2007-03-17 16:19+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Korištenje: %s def.po ref.pot [-o izlaz.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Spaja dvije Uniforum style .po datoteke skupa. def.po datoteka je već "
-"postojeća PO datoteka sa prevodima. ref.pot je zadnja napravljena PO "
-"datoteka sa najnovijim referencama koda. ref.pot je najčešće napravljen sa "
-"rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Specifične opcije:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "zapiši izlaz u specifičnu datoteku"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "prikaži informaciju o verziji i završi"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "definicijski po nije dat."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "referencni po nije dat."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "'%{file}' nije glade-2.0 format."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "%{klass} je ignorisan."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Korištenje: %s ulaz.rb [-r parser.rb] [-o izlaz.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Izvadi niske za prevođenje iz date ulazne datoteke."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Datoteka '%s' već postoji."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "zahtjevaj biblioteku prije izvršavanja rgettext-a"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "pokreni u modu za nalaženje grešaka"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "nema ulaznih datoteka"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Korištenje: %s ulaz.po [-o izlaz.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Generiši binarni katalog poruka iz tekstualnog opisa prevoda"
-
-#: lib/gettext/tools.rb:68
-#, fuzzy
-msgid "Failed to merge with %{defpo}"
-msgstr "Spajanje sa %{defpo} nije uspjelo - nastavljam dalje!"
-
-#: lib/gettext/tools.rb:69
-#, fuzzy
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Molim da provjerite novi .pot u %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr ""
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Upozorenje: čudna poruka je ignorisana.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Upozorenje: nekorišteni msgid postoji.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/ca/rgettext.po b/vendor/gems/gettext-2.1.0/po/ca/rgettext.po
deleted file mode 100644
index 4b6343e94..000000000
--- a/vendor/gems/gettext-2.1.0/po/ca/rgettext.po
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Ús: %s def.po ref.pot [-o sortida.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Combina dos fitxers .po d'estil Uniforum. El fitxer def.po és un fitxer PO "
-"existent amb traduccions. El fitxer ref.pot és l'últim fitxer PO amb "
-"referències actualitzades. Normalment qui ha creat ref.pot és rgettext"
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Opcions específiques:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "escriu la sortida en un fitxer especificat"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "mostra informació de la versió i surt"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "no s'ha donat una definició po"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "no s'ha donat una referència pot"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "El fitxer `%{file}' no té el format glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' ignorat"
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Ús: %s entrada.po [-r parser.rb] [-o sortida.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Extreu les cadenes de paraules traduïbles dels fitxers d'entrada."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "El fitxer '%s' ja existeix"
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "requereix la llibreria abans d'executar rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "executa en mode debug"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "no hi ha fitxers d'entrada"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Ús: %s entrada.po [-o sortida.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr ""
-"Genera un catàleg de missatges binaris a partir d'un fitxer de traducció "
-"textual."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Ha fallat al fer el merge amb %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "S'ha copiat el nou .pot a %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Revisa aquestes po/pot-files. Poden contenir errors o quelcom malament."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "El tercer paràmetre es erroni: valor = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Avís: s'ha ignorat el missatge ambigu.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Avís: existeix un msgid obsolet.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/cs/rgettext.po b/vendor/gems/gettext-2.1.0/po/cs/rgettext.po
deleted file mode 100644
index b5d84bc88..000000000
--- a/vendor/gems/gettext-2.1.0/po/cs/rgettext.po
+++ /dev/null
@@ -1,136 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Karel Miarka <kajism@yahoo.com>, 2005,2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2006-12-16 13:12+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-"X-Poedit-Bookmarks: -1,-1,-1,-1,-1,-1,-1,-1,15,-1\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Použití: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Sloučí dohromady dva (Uniforum style) .po soubory. Soubor def.po je "
-"existující PO soubor s překlady. Soubor ref.pot je naposledy vytvořený PO "
-"soubor s aktuálními zdrojovými referencemi. ref.pot je většinou vytvořen "
-"rgettextem."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Volby:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "zapsat výstup od určeného souboru"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "zobrazit informaci o verzi a skončit"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "definiční po soubor není zadán."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "referenční pot soubor není zadán."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' není ve formátu glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' je ignorován."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Použití: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Extrahuj přeložitelné texty ze zadaných vstupních souborů."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Soubor '%s' již existoval."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "před spuštěním rgettext je vyžadován require knihovny"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "běh v debug módu"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "vstupní soubory nenalezeny"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Použití: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Generovat binání katalog zpráv z textového popisu překladu."
-
-#: lib/gettext/tools.rb:68
-#, fuzzy
-msgid "Failed to merge with %{defpo}"
-msgstr "Nepodařilo se sloučit s %{defpo} - přeskakuji!"
-
-#: lib/gettext/tools.rb:69
-#, fuzzy
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Zkontrolujte prosím nový .pot soubor v %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr ""
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Varování: neurčitý (fuzzy) překlad byl ignorován.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Varování: existoval zastaralý (obsolete) msgid.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/de/rgettext.po b/vendor/gems/gettext-2.1.0/po/de/rgettext.po
deleted file mode 100644
index 9d5551280..000000000
--- a/vendor/gems/gettext-2.1.0/po/de/rgettext.po
+++ /dev/null
@@ -1,141 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Patrick Lenz, 2006, 2007, 2008
-# Sasa Ebach, 2005
-# Sven Herzberg, 2005
-# Detlef Reichl, 2004
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-13 10:00W. Europe Standard Time\n"
-"Last-Translator: Patrick Lenz <patrick at limited-overload.de>\n"
-"Language-Team: German\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Verwendung: %s def.po ref.pot [-o ausgabe.mo]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Vereint zwei .po Dateien im Uniform Stil miteinander. Die Datei def.po "
-"existiert bereits und enthält Übersetzungen. Die Datei ref.pot ist die "
-"zuletzt erstellte Datei mit aktuellen Quellenreferenzen. ref.pot wird in "
-"aller Regel durch rgettext erstellt"
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Spezifische Optionen:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "Schreibe Ausgabe in die angegebene Datei"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "Zeige Versionsinformationen und beende."
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "Definitions .po ist nicht angegeben."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "Referenz .po ist nicht angegeben."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' liegt nicht im Glade-2.0-Format vor."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' wird ignoriert."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Verwendung: %s eingabe.po [-r parser.rb] [-o ausgabe.mo]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr ""
-"Extrahiere die übersetzbaren Zeichenketten aus den angegebenen "
-"Eingabedateien."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Die Datei »%s« existierte bereits."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "Bitte zunächst die Library einbinden bevor rgettext ausgeführt wird"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "Ausführung im Debug-Modus"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "Keine Eingabedateien"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Verwendung: %s eingabe.po [-o ausgabe.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr ""
-"Erstelle binären Meldungskatalog aus schriftlicher Übersetzungsbeschreibung."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Zusammenführung mit %{defpo} fehlgeschlagen"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Die neue .pot Datei wurde nach %{failed_filename} kopiert"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Überprüfe diese po/pot Dateien. Sie enthalten syntaktische Fehler oder "
-"andere Probleme."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Der 3. Parameter ist ungültig: value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Warnung: 'fuzzy'-Zeichenkette wurde ignoriert.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Warnung: Veraltete msgid enthalten.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/el/rgettext.po b/vendor/gems/gettext-2.1.0/po/el/rgettext.po
deleted file mode 100644
index 43ffd9cd9..000000000
--- a/vendor/gems/gettext-2.1.0/po/el/rgettext.po
+++ /dev/null
@@ -1,132 +0,0 @@
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Χρήση: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Συγχωνεύει δύο αρχεία Uniforum .po. Το αρχείο def.po είναι ένα υπάρχον "
-"αρχείο PO με τις μεταφράσεις. Το αρχείο ref.pot είναι το τελευταίο αρχείο "
-"αναφοράς που κατασκευάστηκε και έχει ενημερωμένες αναφορές κώδικα. Το ref."
-"pot κατασκευάζεται γενικά από το rgettext"
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Ειδικές παράμετροι:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "εγγραφή στο καθορισμένο αρχείο"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "πληροφορίες έκδοσης και έξοδος"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "το αρχείο ορισμών .po δε δόθηκε."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "το αρχείο αναφοράς .pot δε δόθηκε."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "το `%{file}' δεν είναι σε μορφή glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "το %{klass}' θα αγνοηθεί."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Χρήση: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Εξαγωγή μεταφράσεων από αρχεία εισόδου."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Το αρχείο '%s' προϋπάρχει."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr ""
-"Κάντε χρήση της βιβλιοθήκης (require) πριν από την εκτέλεση του rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "εκτέλεση σε debugging mode"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "που είναι τα αρχεία εισόδου ρε;"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Χρήση: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Δημιουργία καταλόγου μυνημάτων από τη μετάφραση"
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Αποτυχία συγχώνευσης με %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Ελέγξτε το καινούργιο .pot στο %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr "Ελέγξτε τα αρχεία .po/.pot. Μπορεί να υπάρχουν συντακτικά λάθη"
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Η τρίτη παράμετρος είναι λανθασμένη: value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Προειδοποίηση: Ασαφές μύνημα αγνοήθηκε.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Προειδοποίηση: ύπαρξη ξεπερασμένου msgid.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/eo/rgettext.po b/vendor/gems/gettext-2.1.0/po/eo/rgettext.po
deleted file mode 100644
index 6815a522a..000000000
--- a/vendor/gems/gettext-2.1.0/po/eo/rgettext.po
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-13 10:16+0200\n"
-"Last-Translator: Malte Milatz\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Uzmaniero: %s def.po ref.pot [ -o el.pot ]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Kunfandos du po-dosierojn `Uniforum'-formatitajn. def.po jam enhavu "
-"tradukojn; ref.pot estu aktuale kreita el la fontkodo per rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Specifaj opcioj:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "skribos la produkton en la indikitan dosieron"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "montros versi-informon"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "ne ricevis po-dosieron."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "ne ricevis referencan pot-dosieron."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' ne konformas al la formato de glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "ignoras '%{klass}'."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Uzmaniero: %s en.rb [ -r analiz.rb ] [ -o el.pot ]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Arigos tradukeblajn frazojn el donitaj dosieroj."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Dosiero '%s' jam ekzistas."
-
-# TODO: This translation looks somehow unrelated... What did I do that day?
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "uzos indikitan opcianalizilon"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "sencimiga modo"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "neniu dosiero donita"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Uzmaniero: %s en.po [ -o el.mo ]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Generu porkomputilan mesaĝaron el la traduktekstoj."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Kunfando kun %{defpo} fiaskis"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Nova pot-dosiero kopiiĝis al %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Kontrolu jenajn po/pot-dosierojn. Estas eble sintaksaj eraroj en ili, aŭ io."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-# TODO: Should this be "parameter"?
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Malĝusta tria parametro: valoro = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Averto: ignoras senfunkcian frazon.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Averto: msgid arkaika.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/es/rgettext.po b/vendor/gems/gettext-2.1.0/po/es/rgettext.po
deleted file mode 100644
index 3e4f883fe..000000000
--- a/vendor/gems/gettext-2.1.0/po/es/rgettext.po
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# David Espada <davinci at escomposlinux.org>, 2004-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2005-04-24 14:54+0100\n"
-"Last-Translator: David Espada <davinci at escomposlinux.org>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Uso: %s def.po ref.pot [-o salida.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Combina dos ficheros .po de estilo Uniforum juntos. El fichero def.po es un "
-"fichero PO existente con traducciones. El fichero ref.pot es el último "
-"fichero PO con referencias actualizadas. ref.pot generalmente es creado por "
-"rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Opciones específicas:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "escribir salida en fichero especificado"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "mostrar información de versión y salir"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "no se ha dado definición po"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "no se ha dado referencia pot"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' no tiene formato glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' ignorado"
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Uso: %s entrada.po [-r parser.rb] [-o salida.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Extraer las cadenas traducibles de los ficheros de entrada."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "El fichero '%s' ya ha existido"
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "importe la biblioteca antes de ejecutar rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "ejecute en modo depuración"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "no hay ficheros de entrada"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Uso: %s entrada.po [-o salida.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr ""
-"Generar catálogo de mensajes binarios a partir de la descripción textual de "
-"la traducción."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Fallo al unir con %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Nuevo .pot se ha copiado en %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr "Chequee estos ficheros po/pot. Pueden tener errores"
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "tercer parámetro es erróneo: valor = %{número}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Aviso: se ha ignorado mensaje ambigüo.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Aviso: existe msgid obsoleto.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/et/rgettext.po b/vendor/gems/gettext-2.1.0/po/et/rgettext.po
deleted file mode 100644
index 8c8e63c14..000000000
--- a/vendor/gems/gettext-2.1.0/po/et/rgettext.po
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Erkki Eilonen <erkki at itech.ee>, 2008.
-# Tõlked on väga toored ning vajavad kindlasti ülevaatamist.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-08-10 14:00+0300\n"
-"Last-Translator: Erkki Eilonen <erkki at itech.ee>\n"
-"Language-Team: Estonian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Kasutus: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Liidab kokku kaks ühesugust .po faili. def.po on fail olemasolevate "
-"tõlgetega.ref.pot on fail viimaste uuendatud tõlgetega.ref.pot on üldjuhul "
-"loodud rgettext poolt."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Seaded:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "kirjuta väljund antud faili"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "esita versiooni info ja välju"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "def.po puudub"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "ref.pot puudub"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' ei ole glade-2.0 formaadis."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' jäeti vahele."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Kasutus: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Eraldab sisendfailidest tõlgitavad osad."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Fail '%s' on juba olemas."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "lae moodul enne rgettext jooksutamist"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "silumisrežiimis töötamine"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "sisendfailid puuduvad"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Kasutus: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Genereerib tekstikujul tõlkest binaarkujul nimekirja."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Liitmine %{defpo}-ga ebaõnnestus"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Uus .pot kopeeriti %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr "Kontrolli need po/pot failid üle, nendes võib olla vigu."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Kolmas parameeter on vale: %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Hoiatus: hägune tõlke osa jäeti vahele.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Hoiatus: kasutusel on üleliigne msgid. \n"
diff --git a/vendor/gems/gettext-2.1.0/po/fr/rgettext.po b/vendor/gems/gettext-2.1.0/po/fr/rgettext.po
deleted file mode 100644
index 4265511e7..000000000
--- a/vendor/gems/gettext-2.1.0/po/fr/rgettext.po
+++ /dev/null
@@ -1,137 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Vincent Isambart <vincent.isambart at gmail.com>, 2008
-# David Sulc <davidsulc at gmail.com>, 2007
-# Laurent Sansonetti <lrz at chopine.be>, 2004-2006
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2004-11-04 09:22+0100\n"
-"Last-Translator: Vincent Isambart\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Usage: %s def.po ref.pot [-o output.mo]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Fusionne deux fichiers .po de style Uniforum. Le fichier def.po est un "
-"fichier de traduction original. Le fichier ref.pot est le dernier fichier "
-"de traduction créé avec les sources mise-à-jour. ref.pot est en général "
-"généré par rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Options spécifiques:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "écrit la sortie dans le fichier spécifié"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "affiche la version du programme et sort"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "la définition po n'est pas donnée."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "la référence po n'est pas donnée."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' n'est pas au format glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' est ignorée."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Extrait les chaînes localisables des fichiers spécifiés en entrée."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Le fichier '%s' existe déjà."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "requérir (require) la librairie avant d'exécuter rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "exécuter en mode de deboggage"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "pas de fichiers d'entrée"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Usage: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr ""
-"Génère un catalogue binaire de messages à partir de la description textuelle "
-"d'une traduction."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Echec de fusion avec %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Le nouveau fichier .pot a été copié sous le nom %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Veuillez vérifier ces fichiers po/pot. Ils semblent avoir des erreurs de "
-"syntaxe ou quelque chose d'incorrect."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Le 3ème paramètre (de valeur %{number}) est incorrect."
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Avertissement: message flou ignoré.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Avertissement: un msgid obsolète a été trouvé.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/hr/rgettext.po b/vendor/gems/gettext-2.1.0/po/hr/rgettext.po
deleted file mode 100644
index b44b9dfca..000000000
--- a/vendor/gems/gettext-2.1.0/po/hr/rgettext.po
+++ /dev/null
@@ -1,135 +0,0 @@
-# translation of rgettext.po to Croatian
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2007-03-17 16:19+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Korištenje: %s def.po ref.pot [-o izlaz.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Spaja dvije Uniforum style .po datoteke skupa. def.po datoteka je već "
-"postojeća PO datoteka sa prevodima. ref.pot je zadnja napravljena PO "
-"datoteka sa najnovijim referencama koda. ref.pot je najčešće napravljen sa "
-"rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Specifične opcije:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "zapiši izlaz u specifičnu datoteku"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "prikaži informaciju o verziji i završi"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "definicijski po nije dat."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "referencni po nije dat."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "'%{file}' nije glade-2.0 format."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "%{klass} je ignorisan."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Korištenje: %s ulaz.rb [-r parser.rb] [-o izlaz.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Izvadi niske za prevođenje iz date ulazne datoteke."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Datoteka '%s' već postoji."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "zahtjevaj biblioteku prije izvršavanja rgettext-a"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "pokreni u modu za nalaženje grešaka"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "nema ulaznih datoteka"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Korištenje: %s ulaz.po [-o izlaz.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Generiši binarni katalog poruka iz tekstualnog opisa prevoda"
-
-#: lib/gettext/tools.rb:68
-#, fuzzy
-msgid "Failed to merge with %{defpo}"
-msgstr "Spajanje sa %{defpo} nije uspjelo - nastavljam dalje!"
-
-#: lib/gettext/tools.rb:69
-#, fuzzy
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Molim da provjerite novi .pot u %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr ""
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Upozorenje: čudna poruka je ignorisana.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Upozorenje: nekorišteni msgid postoji.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/hu/rgettext.po b/vendor/gems/gettext-2.1.0/po/hu/rgettext.po
deleted file mode 100644
index c53e64b76..000000000
--- a/vendor/gems/gettext-2.1.0/po/hu/rgettext.po
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-15 09:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Használat: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Két Uniforum formátumú .po fájl összefésülése. A def.po fájl egy létező PO "
-"fájl fordításokkal. A ref.pot fájl az utolsó PO fájl frissített "
-"hivatkozásokkal (rgettext által generált)."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Speciális opciók:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "kimenet írása egy megadott fájlba"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "verzió információ kiírása és kilépés"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "a definiciós (def) PO nincs megadva"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "a referencia (ref) PO nincs megadva"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' nem glade-2.0 formátumú."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' figyelmen kívül hagyva."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Használat: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Összegyűjti a lefordítandó szövegeket a megadott fájlokból."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "A fájl '%s' már létezik."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "szükséges library az rgettext futtatása előtt"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "debug módban futtatás"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "Nincs feldolgozandó fájl"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Használat: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Bináris üzenetállományt generál a lefordított szöveges állományokból."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Sikertelen összefésülés a %{defpo} állománnyal"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Ellenőrizd az új .pot fájlt %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Ellenőrizd a következő po/pot fájlokat, talán szintaktikai hibák találhatóak "
-"bennük."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "A harmadik paraméter hibás: value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Figyelem: fuzzy üzenet figyelmen kívül hagyva."
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Figyelem: Elavult msgid található."
diff --git a/vendor/gems/gettext-2.1.0/po/it/rgettext.po b/vendor/gems/gettext-2.1.0/po/it/rgettext.po
deleted file mode 100644
index 6f5302fe5..000000000
--- a/vendor/gems/gettext-2.1.0/po/it/rgettext.po
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004,2005 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-# Marco Lazzeri <marco.lazzeri at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2005-12-17 14:33+0900\n"
-"Last-Translator: Marco Lazzeri <marco.lazzeri at gmail.com>\n"
-"Language-Team: Italian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Utilizzo: %s input.po [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Unisce due file .po di tipo Uniforum. Il file def.po è un file PO esistente "
-"e contenente le traduzioni. Il file ref.pot contiene i riferimenti "
-"aggiornati al sorgente e viene creato per ultimo (solitamente viene generato "
-"da rgettext)."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Opzioni:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "scrivi l'output sul file specificato"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "mostra la versione ed esce"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "il file .po con la definizione non è stato specificato."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "il file .pot di riferimento non è stato specificato."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' non è nel formato glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' ignorata."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Utilizzo: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Estrae le stringhe traducibili dai file in input."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Il file '%s' è già esistente."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "nessun file specificato in input"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Utilizzo: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr ""
-"Genera un catalogo binario dei messaggi dalla descrizione testuale della "
-"traduzione."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr ""
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr ""
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr ""
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr ""
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/po/ja/rgettext.po b/vendor/gems/gettext-2.1.0/po/ja/rgettext.po
deleted file mode 100644
index 222498aae..000000000
--- a/vendor/gems/gettext-2.1.0/po/ja/rgettext.po
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2002-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Masao Mutoh, 2004-2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-13 14:05:30+0900\n"
-"Last-Translator: Masao Mutoh\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "使い方: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"2つの.poファイルをマージします。def.poファイルはすでにある翻訳済みのPOファイ"
-"ルです。ref.potは最新のPOファイルです。ref.potは通常rgettextから新たに生成さ"
-"れたものです。"
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "オプション:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "出力ファイルを指定します"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "バージョンを表示します"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "翻訳済みの.poファイルが与えられていません。"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "最新の.potファイルが与えられていません。"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}'はglade-2.0フォーマットではありません。"
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' は無視されました。"
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr "%{path}をパース時にエラーが発生しました。"
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "使い方: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "翻訳可能な文字列を入力ファイルから抜き出します。"
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "ファイル '%s' はすでに存在します。"
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "rgettextを実行する前に指定したライブラリを読み込みます。"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "デバッグモードで実行する"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "入力ファイルがありません"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "使い方: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr ""
-"poファイルからバイナリのメッセージカタログファイル(moファイル)を生成します。"
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "%{defpo}のマージに失敗しました。"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "新しい.potファイルを%{failed_filename}にコピーしました。"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"文法エラーやその他のエラーがありそうです。po/potファイルをチェックしてくださ"
-"い。"
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr "`%{cmd}'は見つかりませんでした。\n"
-"GNU Gettextをインストールし、環境変数PATHかMSGMERGE_PATHを正しく設定してください。"
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "3つめのパラメータが不正です。: value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Warning: fuzzyメッセージは無視されました。\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Warning: 使用されていないメッセージ(obsolete msgid)が存在します。\n"
diff --git a/vendor/gems/gettext-2.1.0/po/ko/rgettext.po b/vendor/gems/gettext-2.1.0/po/ko/rgettext.po
deleted file mode 100644
index 20d86eeae..000000000
--- a/vendor/gems/gettext-2.1.0/po/ko/rgettext.po
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gyoung-Yoon Noh <nohmad at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2006-07-11 02:46+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad at gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "사용법: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"2개의 유니포럼 스타일의 .po 파일들을 서로 병합합니다. def.po 파일은 번역을 가"
-"진 PO 파일입니다. ref.pot 파일은 최신 소스를 참조하는 가장 최근에 생성된 PO "
-"파일입니다. ref.pot는 일반적으로 rgettext에 의해 생성됩니다."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "특별한 옵션들:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "지정한 파일에 출력 내용을 저장합니다"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "버전 정보를 표시하고 빠져나갑니다"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "po 정의가 주어지지 않았습니다."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "참조할 pot 파일이 주어지지 않았습니다."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}'이(가) glade-2.0 형식에 맞지 않습니다."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}'이(가) 무시되었습니다."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "사용법: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "주어진 입력 파일들로부터 번역할 수 있는 문자열을 추출합니다."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "'%s' 파일이 이미 존재합니다."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "rgettext를 실행하려면 라이브러리가 필요합니다"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "디버깅 모드에서 실행합니다"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "입력 파일이 없습니다"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "사용법: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "텍스트로 된 번역 설명으로부터 이진 메시지 목록을 생성합니다."
-
-#: lib/gettext/tools.rb:68
-#, fuzzy
-msgid "Failed to merge with %{defpo}"
-msgstr "%{defpo} 파일을 병합하는 데 실패했습니다 - 그냥 넘어갑니다!"
-
-#: lib/gettext/tools.rb:69
-#, fuzzy
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "%{failed_filename}에서 새로운 .pot 파일을 확인하십시요"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr ""
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "경고: 퍼지 메시지가 무시되었습니다.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "경고: 사용되지 않은 msgid가 존재합니다.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/lv/rgettext.po b/vendor/gems/gettext-2.1.0/po/lv/rgettext.po
deleted file mode 100644
index 8ac981fed..000000000
--- a/vendor/gems/gettext-2.1.0/po/lv/rgettext.po
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-22 12:26+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Lietošana: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Apvieno divas \"Uniforum\" stila .po datnes. Def.po datne ir eksistējoša PO "
-"datne ar tulkojumiem. Ref.pot datne ir pēdējā izveidotā PO datne ar "
-"atjauninātām izejas faila atsaucēm. Ref.pot ir datni veido rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Īpaši uzstādījumi:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "ierakstīt izvadi norādītajā datnē"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "parādīt versiju un iziet"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "po definīcija nav padota."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "pot atsauce nav padota."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' nav glade-2.0 formātā."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' ir ignorēta."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Lietošana: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Iegūt tulkojamos tekstus no norādītajām ievades datnēm."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Datne '%s' jau eksistē."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "izmanto \"require bibliotēka\" pirms izsauc rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "izpildīt atkļūdošanas veidā"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "nav ievades datņu"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Lietošana: %s ievades.po [-o izvades.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Ģenerēt bināro katalogu no tekstuālo tulkojumu apraksta."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Nesanāca apvienot ar %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Jaunais .pot tika pārkopēts kā %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Pārbaudi šīs po/pot datnes. Tajās varētu būt sintakses kļūdas vai kas cits "
-"nogājis greizi."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "trešais parametrs ir kļūdains: vērtība = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Brīdinājums: ziņa tika ignorēta.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Brīdinājums: msgid eksistē.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/nb/rgettext.po b/vendor/gems/gettext-2.1.0/po/nb/rgettext.po
deleted file mode 100644
index 900a78d8b..000000000
--- a/vendor/gems/gettext-2.1.0/po/nb/rgettext.po
+++ /dev/null
@@ -1,135 +0,0 @@
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Runar Ingebrigtsen <runar@mopo.no>, 2007, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-14 16:42+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Bruk: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Slår sammen to po-filer av Uniforum-typen. def.po-filen er en eksisterendePO-"
-"fil med oversettelser. ref.po-filen er den sist opprettede PO-filen "
-"medoppdaterte kildereferanser. ref.pot er generelt opprettet av rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Spesifikke alternativer:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "skriv ut til spesifisert fil"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "vis versjonsinformasjon og avslutt"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "definisjons-po ikke angitt"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "referanse-po ikke angitt"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' er ikke glade-2.0-formattert."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' blir ignorert."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Bruk: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Trekk ut oversettbare tekststrenger fra angitte filer"
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Filen '%s' eksisterer fra før"
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "krev biblioteket før du kjører rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "kjør i feilsøkingsmodus"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "ingen angitte filer"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Bruk: %s input.po [-p output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr ""
-"Opprett mappe for binære meldinger ut fra beskrivelse av oversettelsen."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Klarte ikke slå sammen med %{defpo}·-·hopper over!"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Kontroller ny .pot i %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Kontroller disse po/pot-filene. Det kan være syntaks-feil eller noe annet "
-"galt."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Tredje parameter er feil: verdi = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Advarsel: uferdig melding ble ignorert.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Advarsel: det fins utdaterte msgid.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/nl/rgettext.po b/vendor/gems/gettext-2.1.0/po/nl/rgettext.po
deleted file mode 100644
index d06094fa6..000000000
--- a/vendor/gems/gettext-2.1.0/po/nl/rgettext.po
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext at jonkers.com>, 2005,2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2006-12-10 15:03+0100\n"
-"Last-Translator: Menno Jonkers <ruby_gettext jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Gebruik: %s def.po ref.pot [-o uitvoer.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Voegt twee gelijksoortige .po-bestanden samen. Het def.po-bestand is een "
-"bestaand PO-bestand met vertalingen. Het ref.pot-bestand is het meest "
-"recente POT-bestand met actuele bronverwijzingen. ref.pot wordt over het "
-"algemeen aangemaakt door rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Specifieke opties:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "schrijf uitvoer naar opgegeven bestand"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "toon versie-informatie en stop"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "definitie po is niet opgegeven."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "referentie pot is niet opgegeven."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' is niet in glade-2.0 formaat."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' is genegeerd."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Gebruik: %s invoer.rb [-r parser.rb] [-o uitvoer.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Haalt vertaalbare strings uit gegeven invoerbestanden."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Bestand '%s' bestond al."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "vereis de bibliotheek voordat rgettext uitgevoerd wordt"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "draai in debug mode"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "geen invoerbestanden"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Gebruik: %s invoer.po [-o uitvoer.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Genereer binaire berichtencatalogus uit vertalingen in tekstvorm."
-
-#: lib/gettext/tools.rb:68
-#, fuzzy
-msgid "Failed to merge with %{defpo}"
-msgstr "Samenvoegen met %{defpo} mislukt - overgeslagen!"
-
-#: lib/gettext/tools.rb:69
-#, fuzzy
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Controleer nieuwe .pot in %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr ""
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Waarschuwing: fuzzy bericht is genegeerd.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Waarschuwing: overtollig msgid bestaat.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/pt_BR/rgettext.po b/vendor/gems/gettext-2.1.0/po/pt_BR/rgettext.po
deleted file mode 100644
index bebe07f74..000000000
--- a/vendor/gems/gettext-2.1.0/po/pt_BR/rgettext.po
+++ /dev/null
@@ -1,136 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Joao Pedrosa <joaopedrosa at gmail.com>, 2004-2006.
-# Antonio Terceiro <terceiro@softwarelivre.org>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-14 09:47-0300\n"
-"Last-Translator: Antonio Terceiro <terceiro@softwarelivre.org>\n"
-"Language-Team: Portuguese(Brazil) <pt@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Uso: %s def.po ref.pot [-o saída.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Mescla dois arquivos .po de estilo Uniforum juntos. O arquivo def.po é um "
-"arquivo PO existente com traduções. O arquivo ref.pot é o último arquivo PO "
-"criado com referências de código atualizadas. Ref.pot é geralmente criado "
-"pelo rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Opções específicas:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "escreve saída para o arquivo especificado"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "mostra informação de versão e sai"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "po de definição não foi fornecido"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "pot de referência não foi fornecido"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' não é formato glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' é ignorado."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Uso: %s entrada.rb [-r parser.rb] [-o saída.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Extrair strings traduzíveis de arquivos de entrada fornecidos."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "O arquivo '%s' já existe."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "carregue (require) a biblioteca antes de executar o rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "executar em mode de depuração"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "nenhum arquivo de entrada"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Uso: %s entrada.po [-o saida.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Gerar catálogo de mensagem binária da descrição de tradução textual."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Falha na união com %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "O novo .pot foi copiado para %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Confira estes arquivos po/pot. Eles podem ter erros de sintaxe ou algo "
-"errado."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "O 3º parâmetro está errado: value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Atenção: mensagem \"fuzzy\" foi ignorada.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Atenção: existe \"msgid\" obsoleto.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/rgettext.pot b/vendor/gems/gettext-2.1.0/po/rgettext.pot
deleted file mode 100644
index af5a2a367..000000000
--- a/vendor/gems/gettext-2.1.0/po/rgettext.pot
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME\n"
-"Language-Team: LANGUAGE\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr ""
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr ""
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr ""
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr ""
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr ""
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr ""
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr ""
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr ""
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/po/ru/rgettext.po b/vendor/gems/gettext-2.1.0/po/ru/rgettext.po
deleted file mode 100644
index 29c51d716..000000000
--- a/vendor/gems/gettext-2.1.0/po/ru/rgettext.po
+++ /dev/null
@@ -1,135 +0,0 @@
-# translation of rgettext.po to Russian
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006-2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-13 10:08+0400\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Использование: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Объединяет файлы .po Uniforum формата вместе. В файле def.po содержатся уже "
-"переведённые строки. Файл ref.pot является обновлённой версией PO файла из "
-"исходных текстов и не содержит переводов. ref.pot обычно создаётся с помощью "
-"программы rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Дополнительные параметры:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "записать результат в указанный файл"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "показать информацию о версии и закончить работу"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "не указан файл def.po."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "не указан файл ref.po."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' не в формате glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "проигнорирован '%{klass}'."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Использование: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Извлекает строки для перевода из указанных входных файлов."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Файл '%s' уже существует."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "для выполнения rgettext требуется библиотека"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "запуск в режиме отладки"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "не заданы входные файлы"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Использование: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Генерирует бинарный каталог сообщений из перевода."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Не удалось объединить с %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Новый .pot скопирован в %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Проверьте данные po/pot-файлы. В них могут быть синтаксические и другие "
-"ошибки."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Ошибка в третьем параметре: value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Предупреждение: игнорирован неточный перевод сообщения.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Предупреждение: присутствует устаревшая msgid.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/sr/rgettext.po b/vendor/gems/gettext-2.1.0/po/sr/rgettext.po
deleted file mode 100644
index 532c49d9e..000000000
--- a/vendor/gems/gettext-2.1.0/po/sr/rgettext.po
+++ /dev/null
@@ -1,134 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan dot paunovic at gmail dot com>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-13 08:53+0200\n"
-"Last-Translator: Slobodan Paunović\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Употреба: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Спаја заједно два униформна .po фајла. def.po фајл је постојећи PO фајл са "
-"преводима. Ref.pot фајл је последње креиран PO фајл са текућим изворним "
-"референцама. Ref.pot се обично креира помоћу rgettext-а."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Посебне опције:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "писање излаза у задат фајл"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "приказ информација о верзији и излаз"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "дефинициони po фајл није задат."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "референтни pot фајл није задат."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "%{file} није у glade-2.0 формату."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' игнорисано."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Употреба: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Екстракција стрингова за превођење из задатих улазних фајлова."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Фајл '%s' већ постоји."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "захтевај библиотеку пре извршења rgettext-а"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "ради у дибагинг моду"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "нема улазних фајлова"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Употреба: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Формирање бинарног каталога порука из текстуалног превода."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Неуспело спајање са %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Нови .pot фајл је ископиран као %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Проверите ове po/pot фајлове. Могуће је да има синтаксних грешака или да "
-"нешто није у реду."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "3. параметар је погрешан: вредност = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Упозорење: фази порука је игнорисана.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Упозорење: постоји застарели msgid.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/sv/rgettext.po b/vendor/gems/gettext-2.1.0/po/sv/rgettext.po
deleted file mode 100644
index f0474e259..000000000
--- a/vendor/gems/gettext-2.1.0/po/sv/rgettext.po
+++ /dev/null
@@ -1,127 +0,0 @@
-#
-# po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Nikolai Weibull, 2004
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: Nikolai Weibull\n"
-"Language-Team: Swedish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Användning: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr ""
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr ""
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Användning: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Utvinn översättningsbara strängar från givna filer."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr ""
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Användning: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Generera binära meddelandekataloger från textuell översättningsdata."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr ""
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr ""
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr ""
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr ""
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/po/ua/rgettext.po b/vendor/gems/gettext-2.1.0/po/ua/rgettext.po
deleted file mode 100644
index 5da763e2e..000000000
--- a/vendor/gems/gettext-2.1.0/po/ua/rgettext.po
+++ /dev/null
@@ -1,138 +0,0 @@
-# translation of rgettext.po to Ukrainian
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff, 2007,2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-14 05:33+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Використання: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Об'єднує файли .po Uniforum формату. В файлі def.po зберігаються уже "
-"перекладені стрічки. Файл ref.pot є оновленою версією PO файлу із вихідних "
-"текстів і не містить перекладів. ref.pot зазвичай створюють за допомогою "
-"програми rgettext."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Додаткові параметри:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "записати результат у вказаний файл"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "показати інформацію про версію і завершити роботу"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "не вказано файл def.po."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "не вказано файл ref.po."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' не в форматі glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "проігноровано '%{klass}'."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Використання: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Витягувати стрічки для перекладу із вказаних вхідних файлів."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Файл '%s' уже існує."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "для виконання rgettext необхідна бібліотека"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "запуск в режимі відлагодження"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "не задані вхідні файли"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Використання: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Генерує бінарний каталог повідомлень із перекладу."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Не вдалось об'єднати із %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Новий файл .pot скопійовано в %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Будь ласка, перевірте ці po/pot-файли. Схоже, що вони містять синтаксичні "
-"помилки."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Третій параметр неправильний: value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Попередження: проігноровано неточний переклад повідомлення.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Попередження: є застаріла стрічка msgid.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/vi/rgettext.po b/vendor/gems/gettext-2.1.0/po/vi/rgettext.po
deleted file mode 100644
index 810071b41..000000000
--- a/vendor/gems/gettext-2.1.0/po/vi/rgettext.po
+++ /dev/null
@@ -1,132 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007,2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2008-07-13 21:28+0900\n"
-"Last-Translator: Ngoc Dao <ngocdaothanh@gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "Cách sử dụng: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"Trộn hai tập tin .po kiểu Uniforum. Tập tin def.po là tập tin đã tồn tại PO "
-"có chứa lời dịch. Tập tin ref.pot là tập tin PO được tạo ra lần trước có "
-"chứa tham chiếu mới nhất. ref.pot thường do rgettext tạo ra."
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "Tùy chọn cụ thể:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "ghi ra tập tin được chỉ định"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "hiện thông tin về phiên bản rồi thoát"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "tập tin định nghĩa po đã không được chỉ định."
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "tập tin tham chiếu pot đã không được chỉ định."
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' không có định dạng là glade-2.0."
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' đã được bỏ qua."
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "Cách sử dụng: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "Trích chuỗi cần dịch từ những tập tin đầu vào."
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "Tập tin '%s' đã tồn tại."
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "require thư viện trước khi chạy rgettext"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "chạy trong chế độ debug"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "không có tập tin đầu vào"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "Cách sử dụng: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "Sinh message catalog nhị phân từ chuỗi văn bản."
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "Không thể trộn với %{defpo}"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "Tập tin .pot mới đã được copy thành %{failed_filename}"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr ""
-"Hãy kiểm tra những tập tin po/pot này. Có thể do có lỗi cú pháp hay gì đó."
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "Tham số thứ 3 sai: giá trị = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "Cảnh báo: fuzzy message đã bị bỏ qua.\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "Cảnh báo: tồn tại obsolete msgid.\n"
diff --git a/vendor/gems/gettext-2.1.0/po/zh/rgettext.po b/vendor/gems/gettext-2.1.0/po/zh/rgettext.po
deleted file mode 100644
index 7172ca2ca..000000000
--- a/vendor/gems/gettext-2.1.0/po/zh/rgettext.po
+++ /dev/null
@@ -1,133 +0,0 @@
-# translation of rgettext.po to Simplified Chinese
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2006-2008 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yang Bob <bob.yang.dev at gmail.com>, 2006-2008.
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yang Bob <bob.yang.dev at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "使用方法:%s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"合并两个同样形式的 po 文件, def.po 是原來有翻译的文件,ref.pot 是经过原始码"
-"更新过的新文件,ref.pot 一般是由 rgettext 建立的。"
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "具体选项:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "输出到指定文件"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "显示版本信息并退出"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "po的定义未给出。"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "参考pot未指定。"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}'不是glade-2.0格式。"
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}'被忽略。"
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "使用方法:%s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "从给定输入文件中提取翻译字符串。"
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "文件'%s'已经存在。"
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "在执行 rgettext 之前需要一个库"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "运行于调试模式"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "没有输入文件"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "使用方法: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "从文本叙述翻译生成二进制信息目录。"
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "不能与 %{defpo} 合并"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "新的 .pot 被复制到 %{failed_filename} 去了"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr "检查这些 po/pot-文件。它们可能有语法或者其他错误。"
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "第三个参数错误:value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "警告:不明确信息(fuzzy message)已被忽略。"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "警告:存在过期的msgid。"
diff --git a/vendor/gems/gettext-2.1.0/po/zh_TW/rgettext.po b/vendor/gems/gettext-2.1.0/po/zh_TW/rgettext.po
deleted file mode 100644
index 70aa450d5..000000000
--- a/vendor/gems/gettext-2.1.0/po/zh_TW/rgettext.po
+++ /dev/null
@@ -1,132 +0,0 @@
-#
-# a po-file for Ruby-GetText-Package
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yang Bob <bob.yang.dev at gmail.com>, 2006-2008.
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.1.0\n"
-"POT-Creation-Date: 2009-11-08 22:43+0900\n"
-"PO-Revision-Date: 2006-08-21 09:39+0800\n"
-"Last-Translator: Yang Bob <bob.yang.dev at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: lib/gettext/tools/rmsgmerge.rb:402
-msgid "Usage: %s def.po ref.pot [-o output.pot]"
-msgstr "使用: %s def.po ref.pot [-o output.pot]"
-
-#: lib/gettext/tools/rmsgmerge.rb:405
-msgid ""
-"Merges two Uniforum style .po files together. The def.po file is an existing "
-"PO file with translations. The ref.pot file is the last created PO file with "
-"up-to-date source references. ref.pot is generally created by rgettext."
-msgstr ""
-"合併兩同樣形式的 po 檔, def.po 檔是原來有翻譯的檔案,ref.pot 檔是經過原始碼"
-"更新過的新檔,ref.pot 一般是由rgettext 建立。"
-
-#: lib/gettext/tools/rmsgmerge.rb:407 lib/gettext/tools/rgettext.rb:149
-#: lib/gettext/tools/rmsgfmt.rb:50
-msgid "Specific options:"
-msgstr "特殊選項:"
-
-#: lib/gettext/tools/rmsgmerge.rb:409 lib/gettext/tools/rgettext.rb:151
-#: lib/gettext/tools/rmsgfmt.rb:52
-msgid "write output to specified file"
-msgstr "輸出到指定檔案"
-
-#: lib/gettext/tools/rmsgmerge.rb:420 lib/gettext/tools/rgettext.rb:168
-#: lib/gettext/tools/rmsgfmt.rb:56
-msgid "display version information and exit"
-msgstr "秀出版本資訊後退出"
-
-#: lib/gettext/tools/rmsgmerge.rb:446
-msgid "definition po is not given."
-msgstr "沒有指定PO檔"
-
-#: lib/gettext/tools/rmsgmerge.rb:448
-msgid "reference pot is not given."
-msgstr "沒指定參考pot檔"
-
-#: lib/gettext/tools/parser/glade.rb:73
-msgid "`%{file}' is not glade-2.0 format."
-msgstr "`%{file}' 不是 glade-2.0 格式"
-
-#: lib/gettext/tools/rgettext.rb:40
-msgid "'%{klass}' is ignored."
-msgstr "'%{klass}' 忽略"
-
-#: lib/gettext/tools/rgettext.rb:134
-msgid "Error parsing %{path}"
-msgstr ""
-
-#: lib/gettext/tools/rgettext.rb:145
-msgid "Usage: %s input.rb [-r parser.rb] [-o output.pot]"
-msgstr "使用: %s input.rb [-r parser.rb] [-o output.pot]"
-
-#: lib/gettext/tools/rgettext.rb:147
-msgid "Extract translatable strings from given input files."
-msgstr "從輸入檔中取出翻譯字串"
-
-#: lib/gettext/tools/rgettext.rb:155
-msgid "File '%s' already exists."
-msgstr "檔案 '%s' 已經存在"
-
-#: lib/gettext/tools/rgettext.rb:160
-msgid "require the library before executing rgettext"
-msgstr "在執行 rgettext 之前需要一個庫"
-
-#: lib/gettext/tools/rgettext.rb:164
-msgid "run in debugging mode"
-msgstr "執行除錯模式"
-
-#: lib/gettext/tools/rgettext.rb:192 lib/gettext/tools/rmsgfmt.rb:29
-msgid "no input files"
-msgstr "無輸入檔"
-
-#: lib/gettext/tools/rmsgfmt.rb:46
-msgid "Usage: %s input.po [-o output.mo]"
-msgstr "使用: %s input.po [-o output.mo]"
-
-#: lib/gettext/tools/rmsgfmt.rb:48
-msgid "Generate binary message catalog from textual translation description."
-msgstr "從textual translation description產生二進位訊息 catalog"
-
-#: lib/gettext/tools.rb:68
-msgid "Failed to merge with %{defpo}"
-msgstr "不能與 %{defpo} 合併"
-
-#: lib/gettext/tools.rb:69
-msgid "New .pot was copied to %{failed_filename}"
-msgstr "新的 .pot 被复制為 %{failed_filename} 了"
-
-#: lib/gettext/tools.rb:70
-msgid "Check these po/pot-files. It may have syntax errors or something wrong."
-msgstr "檢査这些 po/pot-文件。它们可能有語法或者其他錯誤。"
-
-#: lib/gettext/tools.rb:173
-msgid ""
-"`%{cmd}' can not be found. \n"
-"Install GNU Gettext then set PATH or MSGMERGE_PATH correctly."
-msgstr ""
-
-#: lib/gettext/runtime/textdomain_manager.rb:147
-msgid "3rd parmeter is wrong: value = %{number}"
-msgstr "第三个参数錯誤:value = %{number}"
-
-#: src/poparser.ry:38 src/poparser.ry:55
-msgid "Warning: fuzzy message was ignored.\n"
-msgstr "警告: fuzzy 訊息被忽略\n"
-
-#: src/poparser.ry:148
-msgid "Warning: obsolete msgid exists.\n"
-msgstr "警告: 存在過時的 msgid.\n"
diff --git a/vendor/gems/gettext-2.1.0/replace.rb b/vendor/gems/gettext-2.1.0/replace.rb
deleted file mode 100644
index ae45a61c5..000000000
--- a/vendor/gems/gettext-2.1.0/replace.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-ARGV.each do |path|
- data = IO.read(path)
- data.gsub!(/license terms as Ruby\./, "license terms as Ruby or LGPL.")
- open(path, "w") do |out|
- out.write data
- end
-end
-
diff --git a/vendor/gems/gettext-2.1.0/samples/README b/vendor/gems/gettext-2.1.0/samples/README
deleted file mode 100644
index 33c926d5c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/README
+++ /dev/null
@@ -1,16 +0,0 @@
-Sample scripts for Ruby-GetText-Package.
-
-$ruby makemo.rb
-$ruby sample_script.rb
-
-hello.rb - Basic sample
-hello2.rb - Basic sample2 (using printf)
-hello_noop.rb - N_ sample
-hello_plural.rb - n_ sample
-hello_gtk.rb - Ruby/GTK2 sample
-hello_tk.rb - Ruby/TK sample
-hello_glade2.rb - Ruby/Glade2 sample
-
-makemo.rb - Create mo files from po files.
-
-cgi/* - CGI/ERB sample (See cgi/README)
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/README b/vendor/gems/gettext-2.1.0/samples/cgi/README
deleted file mode 100644
index 1a01ae2c1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/README
+++ /dev/null
@@ -1,43 +0,0 @@
-Sample script for CGI/ERB and Ruby-GetText-Package.
-
-At first, create mo file once:
-$ rake
-
-# You need 'rake' to execute it.
-
-(One click ruby installer for Windonws user only)
-Edit ruby.bat to fit your environment. If you don't have GTK,
-removes 'set PATH=c:\gtk\bin' line.
-
-Then run the http server.
-$ ruby http.rb
-
-Access the http server from WWW browser:
-
-http://localhost:10080/
-http://localhost:10080/1
-http://localhost:10080/2
-
-or
-
-If you want to set locale(lang) forcely, then:
-
-http://localhost:10080/?lang=ja
-http://localhost:10080/1?lang=ja
-http://localhost:10080/2?lang=ja
- #ja is a target locale in this sample.
-
-http.rb - an http server for samples using WEBrick
-Rakefile - a Rakefile to create mo files from po files.
-
-index.cgi - a sample menu (CGI sample) - textdomain: main
-cookie.cgi - a sample menu (CGI sample) - textdomain: main
-helloerb1.cgi - an ERB/CGI sample (UTF-8) - textdomain: helloerb1
-helloerb2.cgi - an ERB/CGI sample (Auto-Detect) - textdomain: helloerb2
-
-helloerb.rhtml - an ERB file (used from both of helloerb1/helloerb2)
-other.rhtml - an ERB file (used from helloerb1)
-
-hellolib.rb - a smple library called from helloerb.rhtml which have an
- independent textdomain: hellolib
-ruby.bat - Execute ruby interpreter on Win32.
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/Rakefile b/vendor/gems/gettext-2.1.0/samples/cgi/Rakefile
deleted file mode 100644
index 2d64b69fa..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/Rakefile
+++ /dev/null
@@ -1,27 +0,0 @@
-task :default => [:makemo]
-
-require 'gettext/tools'
-
-desc "Create *.mo from *.po"
-task :makemo do
- GetText.create_mofiles(:mo_root => "locale")
-end
-
-desc "Update pot/po files to match new version."
-task :updatepo do
-=begin
- GetText.update_pofiles("helloerb1",
- ["helloerb1.cgi", "helloerb.rhtml", "other.rhtml"],
- "cgi-sample 1.1.1")
- GetText.update_pofiles("helloerb2",
- ["helloerb2.cgi", "helloerb.rhtml"],
- "cgi-sample 1.1.1")
- GetText.update_pofiles("hellolib",
- ["hellolib.rb"],
- "cgi-sample 1.1.1")
-=end
- GetText.update_pofiles("main",
- ["index.cgi", "cookie.cgi"],
- "cgi-sample 1.1.1")
-end
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/cookie.cgi b/vendor/gems/gettext-2.1.0/samples/cgi/cookie.cgi
deleted file mode 100755
index 8a4971e1d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/cookie.cgi
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- cookie.cgi - Set a selected locale to the cookie of WWW Browser.
-
- Set UTF-8 forcely as output charset.
-
- Recommanded to set UTF-8 forcely because some web browser
- doesn't send HTTP_ACCEPT_CHARSET correctly.
-
- Copyright (C) 2005 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-$:.insert(0, "../../lib")
-
-# gettext/cgi support CGI.
-begin
- require 'rubygems'
-rescue LoadError
-end
-
-require 'gettext/cgi'
-
-include GetText
-
-# Configure GetText first.
-set_output_charset("UTF-8")
-set_cgi(CGI.new)
-bindtextdomain("main", "locale")
-
-lang = GetText.cgi['lang']
-lang = "en" unless lang.size > 0
-
-#
-# CGI part
-#
-print "Set-Cookie:lang=#{lang}\n"
-print "Content-type:text/html; charset=UTF-8\n\n"
-
-puts %Q[
-<head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <link rel="stylesheet" type="text/css" href="gettext.css" media="all">
- <title>]
-puts _("Sample script for CGI/ERB and Ruby-GetText-Package")
-puts %Q[</title>
-</head>
-<body>
-]
-
-puts "<h1>" + _("Set [%s] as the cookie of your WWW Browser.") % lang + "</h1>"
-
-puts %Q[</h1>
- <p><a href="/">]
-puts _("Back")
-puts %Q[</a></p>
- <div style="text-align:right">
- <p>Copyright (C) 2005 Masao Mutoh</p>
- </div>
- </body>
-</html>
-]
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/gettext.css b/vendor/gems/gettext-2.1.0/samples/cgi/gettext.css
deleted file mode 100644
index 311d1124c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/gettext.css
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- CSS for Ruby-GetText-Package
- by Masao Mutoh.
-*/
-
-body {
- margin: 0px;
- padding: 0px;
- color: #000;
- background-color: #fff;
- font-size: 90%;
- font-family: Times, Sans-Serif;
- line-height: 1.5em;
-}
-
-h1 {
- color: #002288;
- text-align: left;
- clear: both;
- padding:0.4em;
- font-weight: bold;
- font-size: 1.8em;
- padding-left:0.5em;
- padding-right:10px;
- margin-top: 10px;
- margin-left: 20px;
- margin-bottom:1em;
- margin-right:5px;
- border: solid thin;
- border-left: solid;
- border-color: #9999ff;
- border-top-width: 0px;
- border-right-width: 0px;
- border-bottom-width: 1px;
- border-left-width: 15px;
-}
-h2 {
- margin: 0px;
- font-size: large;
- font-weight: bold;
- font-size: 1.4em;
- padding: 0.3em;
- padding-left:0.5em;
- padding-right:10px;
- margin-top: 1em;
- margin-left: 1.5em;
- margin-right: 10px;
- margin-bottom:0.8em;
- border: solid thin;
- border-left: solid;
- border-color: #9999ff;
- border-top-width: 0px;
- border-right-width: 0px;
- border-bottom-width: 1px;
- border-left-width: 15px;
-
-}
-
-h3 {
- margin:1em;
- margin-bottom: 0.5em;
- margin-top: 1.5em;
- margin-left: 2em;
- margin-right: 24px;
- padding: 0.1em;
- padding-top: 0;
- padding-left: 0.7em;
- font-size: 1.2em;
- border-style: dashed;
- border-width: 0px 0px 1px 1px;
- border-color: #ddddff;
-}
-
-p {
- padding-left: 1em;
- padding-right: 1em;
- margin-top: 0px;
- margin-left: 1.5em;
- margin-right: 1em;
- margin-bottom: 0.5em;
-}
-
-ol, ul {
- margin-top: 0.2em;
- margin-left: 3em;
- padding-left: 1.5em;
-}
-
-li {
- margin-top: 0.2em;
- margin-left: 0em;
- padding-left: 0em;
- line-height: 1.2em;
-}
-
-.locale {
- margin: 2em;
- padding: 1em;
- border-style: solid;
- border-width: 1px 1px 1px 1px;
- border-color: #ddddff;
-}
-
-pre {
- margin: 2em;
- padding: 1em;
- border-style: solid;
- border-width: 1px 1px 1px 1px;
- border-color: #ddddff;
- background-color: #eeffee;
-}
-
-.copyright {
- text-align: right;
- padding: 2em;
-}
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/helloerb.rhtml b/vendor/gems/gettext-2.1.0/samples/cgi/helloerb.rhtml
deleted file mode 100644
index 576a21e40..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/helloerb.rhtml
+++ /dev/null
@@ -1,28 +0,0 @@
-<html>
-<head>
- <meta http-equiv="content-type" content="text/html; charset=<%= GetText.output_charset %>">
- <link rel="stylesheet" type="text/css" href="gettext.css" media="all">
-<title><%= _("Sample script for CGI/ERB and Ruby-GetText-Package") %></title>
-</head>
-<body>
-<%
- require 'hellolib'
- require 'cgi'
- lib = HelloLib.new
-%>
-<h1><%= _("Hello World") %> - <%= @domainname %></h1>
-<p><%= description %></p>
-<div class="locale">
-<p><%= _("locale") %>: <%= Locale.get %></p>
-<p><%= _("output_charset") %>: <%= GetText.output_charset %></p>
-<p><%= _("QUERY_STRING") %>: <%= cgi.query_string %></p>
-</div>
-<p><%= _("Call a library method which has another textdomain.") %></p>
-<div class="locale"><%= lib.hello %></div>
-<p><a href="/"><%= _("Back") %></a></p>
-
-<div class="copyright">
-Copyright (C) 2005 Masao Mutoh
-</div>
-</body>
-</html>
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/helloerb1.cgi b/vendor/gems/gettext-2.1.0/samples/cgi/helloerb1.cgi
deleted file mode 100755
index fa0ed80ce..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/helloerb1.cgi
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- helloerb1.cgi - Sample script for CGI/ERB
-
- Set UTF-8 forcely as output charset.
-
- Recommanded to set UTF-8 forcely because some web browser
- doesn't send HTTP_ACCEPT_CHARSET correctly.
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-$:.insert(0, "../../lib")
-
-begin
- require 'rubygems'
-rescue LoadError
-end
-
-require 'erb'
-require 'gettext/cgi'
-
-class SimpleContainer1
- include GetText
-
-
- def initialize(domainname, domainpath, cgi)
- set_cgi(cgi)
- bindtextdomain(domainname, :path => domainpath)
- @domainname = domainname
- end
-
- def description
- _("Sample script for CGI/ERB (UTF-8).")
- end
-
- def to_html(path)
- erb = ERB.new(IO.read(path)).src
- eval(erb, binding)
- end
-end
-
-
-GetText.output_charset = "UTF-8"
-
-print "Content-type:text/html; charset=UTF-8\n\n"
-
-cgi = CGI.new
-
-con = SimpleContainer1.new("helloerb1", "locale", cgi)
-
-if GetText.cgi["other"] == "true"
- print con.to_html("other.rhtml")
-else
- print con.to_html("helloerb.rhtml")
-end
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/helloerb2.cgi b/vendor/gems/gettext-2.1.0/samples/cgi/helloerb2.cgi
deleted file mode 100755
index 735f70f69..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/helloerb2.cgi
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- helloerb2.cgi - Sample script for CGI/ERB
-
- Set locale/charset automaticaly.
- (from HTTP_ACCEPT_LANGUAGE, HTTP_ACCEPT_CHARSET sended by web browser).
-
- Recommanded to set UTF-8 forcely because some web browser
- doesn't send HTTP_ACCEPT_CHARSET correctly.(See helloerb.cgi)
-
- Copyright (C) 2005 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-$:.insert(0, "../../lib")
-
-begin
- require 'rubygems'
-rescue LoadError
-end
-
-require 'gettext/cgi'
-require 'erb'
-
-class SimpleContainer2
- include GetText
-
- def initialize(domainname, domainpath)
- bindtextdomain(domainname, :path => domainpath)
- @domainname = domainname
- end
-
- def description
- _("Sample script for CGI/ERB (Auto-Detect charset).")
- end
-
- def to_html(path)
- erb = ERB.new(IO.read(path)).src
- eval(erb, binding)
- end
-end
-
-cgi = CGI.new
-GetText.set_cgi(cgi)
-
-print "Content-type:text/html; charset=#{Locale.charset}\n\n"
-
-con = SimpleContainer2.new("helloerb2", "locale")
-
-print con.to_html("helloerb.rhtml")
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/hellolib.rb b/vendor/gems/gettext-2.1.0/samples/cgi/hellolib.rb
deleted file mode 100644
index 1e206bc7e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/hellolib.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/ruby
-# hellolib.rb
-#
-# Copyright (C) 2005-2009 Masao Mutoh
-#
-# This file is distributed under the same
-# license as Ruby-GetText-Package.
-#
-
-require 'gettext'
-
-class HelloLib
- include GetText
- bindtextdomain("hellolib", "locale")
- def hello
- _("This message is from hellolib.")
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/http.rb b/vendor/gems/gettext-2.1.0/samples/cgi/http.rb
deleted file mode 100755
index 632a9a211..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/http.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /usr/bin/env ruby
-=begin
- http.rb - An WebServer for helloerb sample.
-
- Copyright (C) 2005-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby or LGPL.
-=end
-
-require 'webrick'
-require 'cgi'
-require 'rbconfig'
-
-interpreter = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) +
- Config::CONFIG['EXEEXT']
-
-srv = WEBrick::HTTPServer.new({:BindAddress => '127.0.0.1',
- :Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
- :CGIInterpreter => interpreter,
- # :CGIInterpreter => "ruby -d",
- :Port => 10080})
-
-['INT', 'TERM'].each { |signal|
- trap(signal){ srv.shutdown}
-}
-
-srv.mount("/", WEBrick::HTTPServlet::FileHandler, File.expand_path('.'))
-
-srv.mount_proc("/src/") do |req, res|
- res.header["Content-Type"] = "text/html; charset=UTF-8"
- if req.query_string
- file = File.open(req.query_string).read
- res.body = %Q[<html>
- <head>
- <title>View a source code</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <link rel="stylesheet" type="text/css" href="/gettext.css" media="all">
- </head>
- <body><h1>#{req.query_string}</h1>
- <pre>#{CGI.escapeHTML(file)}</pre>
- <p><a href="/">Back</a></p>
- </body>
- </html>
- ]
- end
-end
-
-srv.start
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/index.cgi b/vendor/gems/gettext-2.1.0/samples/cgi/index.cgi
deleted file mode 100755
index 27f18cdd7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/index.cgi
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- hello.cgi - Sample script for CGI
-
- Set UTF-8 forcely as output charset.
-
- Recommanded to set UTF-8 forcely because some web browser
- doesn't send HTTP_ACCEPT_CHARSET correctly.
-
- Copyright (C) 2005 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-$:.insert(0, "../../lib")
-
-# gettext/cgi support CGI.
-begin
- require 'rubygems'
-rescue LoadError
-end
-
-require 'gettext/cgi'
-
-include GetText
-set_cgi(CGI.new)
-
-print "Content-type:text/html; charset=UTF-8\n\n"
-
-# Configure GetText first.
-set_output_charset("UTF-8")
-bindtextdomain("main", "locale")
-
-langs = ["en"] + Dir.glob("locale/*").collect{|item| File.basename(item)}
-langs.sort!
-
-urls = [
- ["helloerb1.cgi", N_("an ERB/CGI sample (UTF-8).")],
- ["helloerb1.cgi?other=true", N_("an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 but has a different rhtml file.")],
- ["helloerb2.cgi", N_("an ERB/CGI sample (Auto-Detect charset).")]
-]
-
-
-#
-# CGI part
-#
-
-puts %Q[<html><head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <link rel="stylesheet" type="text/css" href="gettext.css" media="all">
- <title>]
-puts _("Sample script for CGI/ERB and Ruby-GetText-Package")
-puts "</title>
-</head>
-<body>
-<h1>"
-puts _("Ruby-GetText CGI sample scripts")
-puts "</h1>"
-puts "<p>" + _("Supported Locales:") + "[#{langs.join(", ")}]</p>"
-puts "<h2>" + _("Auto-Detect a locale from the WWW browser") + "</h2>"
-puts "<ol>"
-
-urls.each do |url, desc|
- puts "<li><a href=\"/#{url}\">#{url}</a><br/>" + _(desc) + "</a></li>"
-end
-puts "</ol>"
-
-puts "<h2>" + _('Set locale as a "lang" parameter') + "</h2>"
-
-langs.each do |lang|
- puts "<h3>[#{lang}]</h3>"
- puts "<ol>"
- urls.each do |url, desc|
- if /\?other/ =~ url
- url += "&lang=" + lang
- else
- url += "?lang=" + lang
- end
- puts "<li><a href=\"#{url}\">#{CGI.escapeHTML(url)}</a><br/>" + _(desc) + "</li>"
- end
- puts "</ol>"
-end
-
-puts "<h2>" + _('Set "lang" to cookie.') + "</h2>"
-puts "<p>" + _('Click one of the link below, and then click "Auto-Detect a locale from the WWW browser" samples.') + "</p>"
-puts "<ol>"
-
-langs.each do |lang|
- url = "cookie.cgi?lang=" + lang
- puts "<li><a href=\"#{url}\">#{CGI.escapeHTML(url)}</a> [#{lang}]</li>"
-end
-
-puts "</ol>"
-puts "<h2>" + _("Source codes") + "</h2>"
-puts "<ol>"
-
-Dir.glob("*cgi\0*rb\0*rhtml)").sort.each do |src|
- unless /http.rb|makemo.rb/ =~ src
- puts %Q[<li><a href="/src/?#{src}">#{src}</a></li>]
- end
-end
-puts %Q[</ol>
-<hr/>
- <div class="copyright">
- <p>] + _("index.cgi is also a Ruby-GetText sample script using CGI(not ERB).")+ %Q[</p>
- <p>Copyright (C) 2005-2008 Masao Mutoh</p>
- </div>
-</body>
-</html>
-]
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index e96a12e93..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index a2de8f91b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 90eb8d31b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/main.mo
deleted file mode 100644
index 47dfec9ac..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bg/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 4d8808fa4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 969eab454..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 5c58dde53..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/main.mo
deleted file mode 100644
index e8f4340be..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/bs/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 464a79dc0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 2c1673430..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 4d99d98a2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/main.mo
deleted file mode 100644
index 3f2cef213..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ca/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 569cf4772..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 02cea3e73..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index d0f58e302..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/main.mo
deleted file mode 100644
index c9888fc3f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/cs/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 2a0c734e1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index e3e3ef4b8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index efa0578d4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/main.mo
deleted file mode 100644
index 6b724c74b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/de/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 86c1c51b7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 2d14a4998..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 8e856c179..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/main.mo
deleted file mode 100644
index a5390fcad..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/el/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 243a18b34..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 6f1938bf9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 3490a1ce0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/main.mo
deleted file mode 100644
index 31a29fae1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/eo/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index d7ee2c59c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 2d0af38c2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index b5de80b3f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/main.mo
deleted file mode 100644
index 1296a01ec..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/es/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 011e5936b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 4b6efb5fe..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 58789eed5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/main.mo
deleted file mode 100644
index 63073388c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/fr/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 7ccf62008..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index de94ac9b6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 1c1c5ecfd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/main.mo
deleted file mode 100644
index 00ee53f0e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hr/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index f2137dde7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index f60e2264f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 2226c7276..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/main.mo
deleted file mode 100644
index b25083d12..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/hu/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 819067d8e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 78f810926..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 515e2258c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/main.mo
deleted file mode 100644
index b9235997b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/it/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 387825e41..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index e528c91d6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 1a0c36067..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/main.mo
deleted file mode 100644
index 94e4a69e7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ja/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 01730b1a4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 60925a913..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index b7d743440..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/main.mo
deleted file mode 100644
index 444436a27..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ko/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 4f19dc8a3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index a4d34f497..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 3a0db00e7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/main.mo
deleted file mode 100644
index aa5699a6b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/lv/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index ee9f55fa3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 1ba22a6dc..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 17dc42f2b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/main.mo
deleted file mode 100644
index d6d86f790..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nb/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index ea41f80e4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index b67b63c53..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index f79df2d7a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/main.mo
deleted file mode 100644
index 46f06f65b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/nl/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index a7e6187c4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index bd1e3f6b0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index eb39917ff..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/main.mo
deleted file mode 100644
index 4c0293b96..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/pt_BR/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 1dd2d9ed8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 83dac1ebb..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 3579c8c97..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/main.mo
deleted file mode 100644
index b25f01cb1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ru/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index cd586ab58..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 5df810b93..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 2a7e09c74..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/main.mo
deleted file mode 100644
index 52de34239..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/sr/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 6ca0fab00..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 0beaac2fd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 5779dc393..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/main.mo
deleted file mode 100644
index 3e1306286..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/ua/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index e31170cb9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index 0a4d38f74..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index f1b2933c5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/main.mo
deleted file mode 100644
index aba1b4c06..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/vi/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index a752fa928..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index f2176ab82..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 9911f26eb..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/main.mo
deleted file mode 100644
index 24ce4320c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb1.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb1.mo
deleted file mode 100644
index 02f4d4964..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb2.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb2.mo
deleted file mode 100644
index e68ccaeca..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/helloerb2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/hellolib.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/hellolib.mo
deleted file mode 100644
index 522439272..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/hellolib.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/main.mo b/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/main.mo
deleted file mode 100644
index 7bb441826..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/locale/zh_TW/LC_MESSAGES/main.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/other.rhtml b/vendor/gems/gettext-2.1.0/samples/cgi/other.rhtml
deleted file mode 100644
index 2dd2ce968..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/other.rhtml
+++ /dev/null
@@ -1,20 +0,0 @@
-<html>
-<head>
- <meta http-equiv="content-type" content="text/html; charset=<%= GetText.output_charset %>">
- <link rel="stylesheet" type="text/css" href="gettext.css" media="all">
-<title><%= _("Sample script for CGI/ERB and Ruby-GetText-Package") %></title>
-</head>
-<body>
-<h1><%= _("Another sample") %> - <%= @domainname %></h1>
-<p><%= _("This sample(other.rhtml) is the another ERB file of helloerb1.cgi.") %></p>
-<div class="locale">
-<p><%= _("locale") %>: <%= Locale.get %></p>
-<p><%= _("output_charset") %>: <%= GetText.output_charset %></p>
-<p><%= _("QUERY_STRING") %>: <%= CGI.escapeHTML(cgi.query_string) %></p>
-</div>
-<p><a href="/"><%= _("Back") %></a></p>
-<div class="copyright">
-Copyright (C) 2005 Masao Mutoh
-</div>
-</body>
-</html>
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/helloerb1.po
deleted file mode 100644
index d2a6d524e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-04-23 12:44+0900\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Примерен CGI/ERB скрипт (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Примерен скрипт, ползващ CGI/ERB и Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Гепи копеле"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "локал"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "изходно_кодиране"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "НИЗ_С_ПАРАМЕТРИ"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Извикване на метод от библиотеката, който принадлежи на друга текстова област"
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Назад"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Друг пример"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Този пример (other.rhtml) е другия ERB файл от helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/helloerb2.po
deleted file mode 100644
index 5d175349a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Примерен CGI/ERB скрипт (автоматично разпознаване на кодирането)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Примерен скрипт, ползващ CGI/ERB и Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Гепи копеле"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "локал"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "изходно_кодиране"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "НИЗ_С_ПАРАМЕТРИ"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Извикване на метод от библиотеката, който принадлежи на друга текстова област"
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Назад"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/hellolib.po
deleted file mode 100644
index 0e78a7ddf..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/hellolib.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Поздрави от hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/main.po
deleted file mode 100644
index f662d8ac9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/bg/main.po
+++ /dev/null
@@ -1,83 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ERB/CGI пример (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"ERB/CGI пример (UTF-8). Този пример ползва същия контролер като пример 1 "
-"но с различен rhtml файл."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ERB/CGI пример (автоматично разпознаване на кодирането)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Примерен скрипт, ползващ CGI/ERB и Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI примерни скриптове"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Поддържани локали:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Аавтоматично разпознаване на локал, зададен от браузъра"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Изберете локал с параметъре \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "\"lang\" като бисквитка (cookie)."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Щракнете върху една от връзките по-надолу и после на примерите с "
-"\"Автоматично разпознаване на локал, зададен от браузъра\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Изходен код"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi е също така примерен скрипт, ползващ Ruby-GetText и CGI (без ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "[%s] като бисквитка (cookie) във вашия браузър."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Назад"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/helloerb1.po
deleted file mode 100644
index ffb2b5c8c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# translation of helloerb1.po to Bosnian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: helloerb1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2007-03-20 20:32+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Primjer skripte za CGI/ERB"
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Primjer skripte za CGI/ERB i Ruby on Rails GetText Paket"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Zdravo Svijetu"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "lokal"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "izlazni_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "UPITNA_NISKA"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Pozovi biblioteku koja ima drugu tekst domenu."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Nazad"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Drugi primjer"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Ovaj primjer(other.rhtml) je druga ERB datoteka helloerb1.cgi-a."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/helloerb2.po
deleted file mode 100644
index 6f93f7fb6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# translation of helloerb2.po to Bosnian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: helloerb2\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2007-03-20 20:32+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Primjer skripte za CGI/ERB (Auto-Detektovanje skupakaraktera)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Primjer skripte za CGI/ERB i Ruby on Rails GetText Paket"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Zdravo Svijetu"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "lokal"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "izlazni_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "UPITNA_NISKA"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Pozovi biblioteku koja ima drugu tekst domenu."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Nazad"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/hellolib.po
deleted file mode 100644
index e4ee657f9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/hellolib.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# translation of hellolib.po to Bosnian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hellolib\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2007-03-20 20:19+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Ova poruka je iz hellolib-a."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/main.po
deleted file mode 100644
index 7a0a1aaa9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/bs/main.po
+++ /dev/null
@@ -1,83 +0,0 @@
-# translation of main.po to Bosnian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: main\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2007-03-20 20:30+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ERB-CGI primjer (UTF-8)"
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"ERB-CGI primjer (UTF-8). Ovaj primjer koristi isti kontejner kao primjer 1 "
-"ali ima drugačiji rhtml file"
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ERB-CGI primjer (Auto-Pronalaženje charset-a)"
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Primjer skripte za CGI/ERB i Ruby GetText Paketa"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI primjer skripta"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Podržani Lokali:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Auto-Pronalaženje lokala iz WWW preglednika"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Postavi lokal kao \"lang\" parametar"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Postavi \"lang\" u cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Izaberi jednu prećicu odozdo, i izaberi \"Auto-Pronalaženje lokala iz "
-"WWW preglednika\" primjer."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Izvorni kodovi"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi je također Ruby-GetText primjer skripte koja koristi CGI(ne ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Postavi [%s] kao cookie u vašem WWW Pregledniku."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Nazad"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/helloerb1.po
deleted file mode 100644
index 5cdc71d65..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Script d'exemple per a CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script d'exemple per a CGI/ERB i Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hola Món"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr ""
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr ""
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Crida a un mètode d'una llibreria que té un altre textdomain"
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Enrere"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Un altre exemple"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Aquest exemple(other.rhtml) és un altre fitxer ERB de helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/helloerb2.po
deleted file mode 100644
index e6352b19a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Script d'exemple per a CGI/ERB (Auto-detecció de charset)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script d'exemple per a CGI/ERB i Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hola Món"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr ""
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr ""
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Crida a un mètode d'una llibreria que té un altre textdomain."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Enrere"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/hellolib.po
deleted file mode 100644
index e29f35034..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/hellolib.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Aquest és el missatge de hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/main.po
deleted file mode 100644
index a9c3b1ae5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ca/main.po
+++ /dev/null
@@ -1,83 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "un exemple d'ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"Un exemple d'ERB/CGI (UTF-8). Aquest exemple utilitza el mateix contenidor que l'exemple 1 "
-"però té un fitxer rhtml diferent."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "un exemple d'ERB/CGI (Auto-detecció charset)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script d'exemple per CGI/ERB i Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Scripts d'exemple per Ruby-GetText CGI"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Locales suportats:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Auto-Detecció del locale des del navegador WWW"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Fixa el locale com a paràmetre \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Fixa \"lang\" a la galeta."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Clica un dels següents enllaços i seguidament clica a \"Exemples d'Auto-Detecció del locale des del "
-"navegador WWW\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Codis font"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi és també un exemple de script Ruby-GetText utilitzant CGI(no ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Fixa [%s] com la galeta del teu navegaor WWW."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Enrere"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/helloerb1.po
deleted file mode 100644
index 0aa369da0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/helloerb1.po
+++ /dev/null
@@ -1,61 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-12-17 21:13+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Ukázkový skript pro CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Ukázkový skript pro CGI/ERB a Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Ahoj Světe"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Zavolat knihovní metodu, která má jinou textdomain."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Zpět"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Další příklad"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Tato úkázka (other.rhtml) je další z ERB souborů helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/helloerb2.po
deleted file mode 100644
index 7f2709798..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2005-12-17 21:16+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Ukázkový skript pro CGI/ERB (Auto-Detect charset)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Ukázkový skript pro CGI/ERB a Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Ahoj Světe"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Zavolat knihovní metodu, která má jinou textdomain."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Zpět"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/hellolib.po
deleted file mode 100644
index 7bf7dd3b7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/hellolib.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2005-12-17 21:20+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Tato zpráva je z hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/main.po
deleted file mode 100644
index 47c2cd918..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/cs/main.po
+++ /dev/null
@@ -1,85 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2005-12-17 21:28+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ukázka ERB/CGI (UTF-8)"
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"ukázka ERB/CGI (UTF-8). Tato ukázka používá stejný container jako ukázka 1, "
-"ale jiný rhtml soubor."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ukázka ERB/CGI (Auto-Detect charset)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Ukázkový skript pro CGI/ERB a Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText ukázkový CGI skript"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Podporované jazyky:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Automatická detekce jazyka z WWW prohlížeče"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Nastavit jazyk parametrem \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Nastavit cookie \"lang\""
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Klikněte na jeden z níže uvedených odkazů a pak klikněte na \"Automatická "
-"detekce jazyka z WWW prohlížeče\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Zdrojové kódy"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi je také ukázka Ruby-GetText CGI skriptu (bez ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Nastavit [%s] jako cookie Vašeho WWW prohlížeče."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Zpět"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/de/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/de/helloerb1.po
deleted file mode 100644
index 7c82708bd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/de/helloerb1.po
+++ /dev/null
@@ -1,61 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Detlef Reichl <detlef!reichl()gmx!org, 2005
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: German\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Beispielskript für CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Beispielskript für CGI/ERB und Ruby-GetText-Paket"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hallo Welt"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr ""
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr ""
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Aufruf einer Bibiotheksmethode welche eine andere textdomain hat."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Zurück"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Ein weiteres Beispiel"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr ""
-"Dieses Beispiel (other.rhtml) ist eine weitere ERB-Datei von helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/de/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/de/helloerb2.po
deleted file mode 100644
index 1d443d22c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/de/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Detlef Reichl <detlef!reichl()gmx!org, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: German\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Beispielskript für CGI/ERB (Autoerkennung des Zeichensatzes)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Beispielskript für CGI/ERB und Ruby-GetText-Paket"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hallo Welt"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr ""
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr ""
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Aufruf einer Bibiotheksmethode welche eine andere textdomain hat."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Zurück"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/de/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/de/hellolib.po
deleted file mode 100644
index d5b1f1c21..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/de/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Detlef Reichl <detlef!reichl()gmx!org, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: German\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Diese Meldung kommt von hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/de/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/de/main.po
deleted file mode 100644
index b3880623b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/de/main.po
+++ /dev/null
@@ -1,86 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Detlef Reichl <detlef!reichl()gmx!org, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: German\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ein ERB/CGI Beispiel (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"ein ERB/CGI Beispiel (UTF-8). Diese Beispiel verwendet den gleichen "
-"Container wie Beispiel 1 aber eine andere rhtml-Datei."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "Beispielskript für CGI/ERB (Autoerkennung des Zeichensatzes)"
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Beispielskript für CGI/ERB und Ruby-GetText-Paket"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI Beispielskript"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Unterstützte Locales:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Auto-Erkennung eines locale vom Webbrowser"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Setze locale als einen \"lang\" Parameter"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Setze \"lang\" als Cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Klicke auf den unteren Link und dann klicke \"Auto-Erkennung eines locale "
-"vom Webbrowser\" Beispiele."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Quelltexte"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-"index.cgi ist ebenso ein Ruby-GetText Beispielskript das CGI nutzt (nicht "
-"ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Setze [%s] als ein Cookie Deines Webbrowsers."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Zurück"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/el/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/el/helloerb1.po
deleted file mode 100644
index 4dff23986..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/el/helloerb1.po
+++ /dev/null
@@ -1,60 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Υπόδειγμα για CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Υπόδειγμα για CGI/ERB και τη βιβλιοθήκη Ruby-GetText"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Γειά σου Κόσμε"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Κλήση μεθόδου βιβλιοθήκης που έχει διαφορετικό πεδίο κειμένου"
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Πίσω"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Άλλο ένα υπόδειγμα"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr ""
-"Αυτό το υπόδειγμα (other.rhtml) είναι άλλο ένα ERB αρχείο του helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/el/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/el/helloerb2.po
deleted file mode 100644
index 448db25e0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/el/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Υπόδειγμα για CGI/ERB (Αυτόματη αναγνώριση συνόλου χρακτήρων)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Υπόδειγμα για CGI/ERB και τη βιβλιοθήκη Ruby-GetText"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Γειά σου Κόσμε"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Κλήση μεθόδου βιβλιοθήκης που έχει διαφορετικό πεδίο κειμένου"
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Πίσω"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/el/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/el/hellolib.po
deleted file mode 100644
index 88ce0aae6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/el/hellolib.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Αυτό το μύνημα είναι από τη hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/el/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/el/main.po
deleted file mode 100644
index b57b3a9c2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/el/main.po
+++ /dev/null
@@ -1,84 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ένα υπόδειγμα ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr "ένα υπόδειγμα ERB/CGI (UTF-8). Αυτό το υπόδειγμα χρησιμοποιεί "
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ένα υπόδειγμα για CGI/ERB (αυτόματη αναγνώριση συνόλου χρακτήρων)"
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Υπόδειγμα για CGI/ERB και τη βιβλιοθήκη Ruby-GetText"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText υποδείγματα CGI"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Υποστηριζόμενα locale"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Αυτόματη αναγνώριση locale από τον browser"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Set locale as a \"lang\" parameter"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Set \"lang\" to cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Ακολούθησε έναν από τους δεσμούς και επέλεξε τα υποδείγματα \"Αυτόματη "
-"αναγνώριση locale από τον browser\""
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Κώδικας"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-"Το index.cgi είναι επίσης ένα υπόδειγμα χρήσης Ruby-GetText με CGI (χωρίς "
-"ERB)"
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr ""
-"Θέσε [%s] ως το μπισκότο του ξεφυλιστή σου (αστείο είναι, όχι μετάφραση)"
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Πίσω"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/helloerb1.po
deleted file mode 100644
index 0e2fd251c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/helloerb1.po
+++ /dev/null
@@ -1,60 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-04-23 12:44+0900\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Programekzemplo pri CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Programekzemplo pri CGI/ERB kaj Ruby-GetText."
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Saluton!"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "lokaĵaro"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "eliga_signaro"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "INFORMMENDA_FRAZO"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Voki metodon en alia tekstdomajno."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Reen"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Plia ekzemplo"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Ĉi tiu ERB-dosiero (other.rhtml) estas alternativo por helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/helloerb2.po
deleted file mode 100644
index 293bd7503..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Programekzemplo pri CGI/ERB (signaro divenata)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Programekzemplo pri CGI/ERB kaj Ruby-GetText"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Saluton!"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "lokaĵaro"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "eliga_signaro"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "INFORMMENDA_FRAZO"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Voki metodon en alia tekstdomajno."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Reen"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/hellolib.po
deleted file mode 100644
index f0447e71e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Ĉi tiu frazo devenas de hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/main.po
deleted file mode 100644
index 380dc88a7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/eo/main.po
+++ /dev/null
@@ -1,84 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "programekzemplo pri ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"ekzemplo pri ERB/CGI (UTF-8), kiu uzas la saman ujon kiel la unua ekzemplo "
-"sed alian rhtml-dosieron."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "Ekzemplo pri ERB/CGI (aŭtomata diveno de la signaro)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Ekzemplo pri ERB/CGI kaj Ruby-GetText"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Programekzemploj pri Ruby-GetText kaj CGI"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Disponeblaj lokaĵaroj:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Elekto de la lokaĵaron surbaze de krozilaj informoj"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Agordo de la lokaĵaro per la parametro \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Registro de \"lang\" en kuketon."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Alklaku unu el la jenaj ligiloj, poste alklaku \"Elekto de la lokaĵaro "
-"surbaze de krozilaj informoj."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Fontkodo"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi estas programekzemplo pri Ruby-GetText kaj CGI (ne ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Registru [%s] en krozilan kuketon."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Reen"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/es/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/es/helloerb1.po
deleted file mode 100644
index 62a600f52..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/es/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# David Moreno Garza <damog at damog.net>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-04-23 12:44+0900\n"
-"Last-Translator: David Moreno Garza <damog at damog.net>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Script de ejemplo para CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script de ejemplo para CGI/RB y Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hola Mundo"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "charset_de_salida"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "CADENA_DE_CONSULTA"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Llama al método de una biblioteca la cual tienen otro textdomain."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Regresar"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Otro ejemplo"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Este ejemplo (otro.rhtml) is otro archivo ERB de helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/es/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/es/helloerb2.po
deleted file mode 100644
index 2f1bb16db..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/es/helloerb2.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# David Moreno Garza <damog at damog.net>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"Last-Translator: David Moreno Garza <damog at damog.net>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Script de ejemplo para CGI/ERB (charset Auto-Detect)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script de ejemplo para CGI/ERB y Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hola Mundo"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "charset_de_salida"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "CADENA_DE_CONSULTA"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Llama al método de una biblioteca la cual tiene otro textdomain."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Regresar"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/es/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/es/hellolib.po
deleted file mode 100644
index cd737ac0b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/es/hellolib.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# David Moreno Garza <damog at damog.net>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"Last-Translator: David Moreno Garza <damog at damog.net>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Este mensaje es de hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/es/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/es/main.po
deleted file mode 100644
index 6933ad749..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/es/main.po
+++ /dev/null
@@ -1,83 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# David Moreno Garza <damog at damog.net>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"Last-Translator: David Moreno Garza <damog at damog.net>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "un ejemplo ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"un ejemplo ERB/CGI (UTF-8). Este ejemplo utiliza el mismo contenedor como "
-"prueba 1 pero tiene otro archivo rhtml."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "un ejemplo ERB/CGI (charset Auto-Detect)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script de ejemplo para CGI/ERB y Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Scripts de ejemplo CGI de Ruby-GetText"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Locales soportadas:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Auto-detectar la locale del navegador web"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Definir la locale como el parámetro \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Definir \"lang\" como una cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Dele clic en alguno de los enlaces de abajo y luego sobre los ejemplos de "
-"\"Auto-detectar la locale del navegador web\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Códigos fuentes"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-"index.cgi es también un script de ejempli Ruby-GetText usando CGI (no ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Definir [%s] como la cookie del navegador web."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Regresar"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/helloerb1.po
deleted file mode 100644
index 5688106b8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Laurent Sansonetti <lrz@rubymonks.org>, 2005
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-04-23 12:44+0900\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Exemple de script ERB/CGI (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Un exemple de script CGI/ERB avec Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Bonjour monde"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Appelle une mŽthode d'une bibliothque avec un autre domaine de texte."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "PrŽcŽdent"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Un autre exemple"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Cet exemple (other.rhtml) est l'autre exemple ERB de helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/helloerb2.po
deleted file mode 100644
index 9a4c13243..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Laurent Sansonetti <lrz@rubymonks.org>, 2005
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Un exemple de script CGI/ERB (jeu de caractres automatiquement dŽtectŽ)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Un exemple de script CGI/ERB avec Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Bonjour monde"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Appelle une mŽthode d'une bibliothque avec un autre domaine de texte."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "PrŽcŽdent"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/hellolib.po
deleted file mode 100644
index c03c65cc0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/hellolib.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Laurent Sansonetti <lrz@rubymonks.org>, 2005
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Ce message vient de hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/main.po
deleted file mode 100644
index 7355ffc8f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/fr/main.po
+++ /dev/null
@@ -1,85 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Laurent Sansonetti <lrz@rubymonks.org>, 2005
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Laurent Sansonetti <lrz@rubymonks.org>\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "un exemple ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"un exemple ERB/CGI (UTF-8) qui utilise le même conteneur qu'à l'exemple 1 "
-"mais avec un autre fichier rhtml."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "un exemple ERB/CGI (jeu de caractères automatiquement détecté)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Un exemple de script CGI/ERB avec Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Exemples de script CGI avec Ruby-GetText"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Locales supportées:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Détection automatique de la locale à partir du navigateur Internet"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Assigne la locale au paramêtre \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Assigne \"lang\" au cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Cliquez sur un des liens en dessous, et cliquez ensuite sur les exemples "
-"\"Détection automatique de la locale à partir du navigateur Internet\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Code source"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-"index.cgi est aussi un exemple de script Ruby-GetText utilisant CGI (non "
-"ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Assigne [%s] comme étant le cookie de votre navigateur Internet."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Précédent"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/helloerb1.pot b/vendor/gems/gettext-2.1.0/samples/cgi/po/helloerb1.pot
deleted file mode 100644
index ccf5de527..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/helloerb1.pot
+++ /dev/null
@@ -1,60 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-04-23 12:44+0900\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr ""
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr ""
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr ""
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr ""
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr ""
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr ""
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr ""
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr ""
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/helloerb2.pot b/vendor/gems/gettext-2.1.0/samples/cgi/po/helloerb2.pot
deleted file mode 100644
index a93596ee6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/helloerb2.pot
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr ""
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr ""
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr ""
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr ""
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr ""
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr ""
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hellolib.pot b/vendor/gems/gettext-2.1.0/samples/cgi/po/hellolib.pot
deleted file mode 100644
index 1b98e6e68..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hellolib.pot
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/helloerb1.po
deleted file mode 100644
index b870c9922..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# translation of helloerb1.po to Croatian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: helloerb1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2007-03-20 20:32+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Primjer skripte za CGI/ERB"
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Primjer skripte za CGI/ERB i Ruby on Rails GetText Paket"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Zdravo Svijetu"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "lokal"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "izlazni_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "UPITNA_NISKA"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Pozovi biblioteku koja ima drugu tekst domenu."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Nazad"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Drugi primjer"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Ovaj primjer(other.rhtml) je druga ERB datoteka helloerb1.cgi-a."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/helloerb2.po
deleted file mode 100644
index a39bda17d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# translation of helloerb2.po to Croatian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: helloerb2\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2007-03-20 20:32+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Primjer skripte za CGI/ERB (Auto-Detektovanje skupakaraktera)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Primjer skripte za CGI/ERB i Ruby on Rails GetText Paket"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Zdravo Svijetu"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "lokal"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "izlazni_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "UPITNA_NISKA"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Pozovi biblioteku koja ima drugu tekst domenu."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Nazad"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/hellolib.po
deleted file mode 100644
index 25af97c58..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/hellolib.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# translation of hellolib.po to Croatian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hellolib\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2007-03-20 20:19+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Ova poruka je iz hellolib-a."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/main.po
deleted file mode 100644
index a293670d5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hr/main.po
+++ /dev/null
@@ -1,83 +0,0 @@
-# translation of main.po to Croatian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: main\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2007-03-20 20:30+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ERB-CGI primjer (UTF-8)"
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"ERB-CGI primjer (UTF-8). Ovaj primjer koristi isti kontejner kao primjer 1 "
-"ali ima drugačiji rhtml file"
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ERB-CGI primjer (Auto-Pronalaženje charset-a)"
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Primjer skripte za CGI/ERB i Ruby GetText Paketa"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI primjer skripta"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Podržani Lokali:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Auto-Pronalaženje lokala iz WWW preglednika"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Postavi lokal kao \"lang\" parametar"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Postavi \"lang\" u cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Izaberi jednu prećicu odozdo, i izaberi \"Auto-Pronalaženje lokala iz "
-"WWW preglednika\" primjer."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Izvorni kodovi"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi je također Ruby-GetText primjer skripte koja koristi CGI(ne ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Postavi [%s] kao cookie u vašem WWW Pregledniku."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Nazad"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/helloerb1.po
deleted file mode 100644
index 727a9dbc0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Példa script CGI/ERB (UTF-8)-hoz."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Példa script CGI/ERB-hez és a Ruby-GetText-Package-hez"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hello világ"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Könyvtári metódus hívása, ami egy másik textdomain-ben van."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Vissza"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Másik példa"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Ez a példa (other.rhtml) egy másik ERB fájl a helloerb1.cgi-hez."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/helloerb2.po
deleted file mode 100644
index 3bc1f1450..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Példa script CGI/ERB (Automatikus karakterkódolás felismerő)-höz."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Példa script CGI/ERB-hez és a Ruby-GetText-Package-hez"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hello világ"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Könyvtári metódus hívása, ami egy másik textdomain-ben van."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Vissza"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/hellolib.po
deleted file mode 100644
index e96161342..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/hellolib.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Az az üzenet a hellolib-ből jön."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/main.po
deleted file mode 100644
index d3c5d2b80..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/hu/main.po
+++ /dev/null
@@ -1,82 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "egy ERB/CGI példa (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"egy ERB/CGI példa (UTF-8). Ez a példa ugyanazt a container-t használja, mint a példa 1"
-"de másik rhtml fájlt."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "egy ERB/CGI példa (Automatikus karakterkódolás felismerő)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Példa script CGI/ERB-hez és a Ruby-GetText-Package-hez"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI példa script-ek"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Támogatott területek (locale-ek):"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Automatikus (locale) felismerés böngészőből"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Locale beállítása mint \"lang\" paraméter"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "A megfelelő \"lang\" cookie beállítása."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Kattints az alábbi linkre, aztán kattints az \"Automatikus (locale) felismerés böngészőből\" példákra."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Forrás kód"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "az index.cgi is egy Ruby-GetText példa script, ami CGI-t használ (nem ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Cookie [%s] beállítása a böngésződben."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Vissza"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/it/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/it/helloerb1.po
deleted file mode 100644
index 54f351c1e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/it/helloerb1.po
+++ /dev/null
@@ -1,60 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-04-24 12:44+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Script di esempio per CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script di esempio per CGI/ERB e per il pacchetto Ruby-GetText"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Ciao a tutti"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr ""
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr ""
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Chiama un metodo di libreria che ha un textdomain differente."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Indietro"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Un altro esempio"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Questo esempio(other.rhtml) Ã l'altro file ERB di helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/it/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/it/helloerb2.po
deleted file mode 100644
index 7406fa29a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/it/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2005-04-24 15:27+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Script di esempio per CGI/ERB (Auto-riconoscimento del charset)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script di esempio per CGI/ERB e per il pacchetto Ruby-GetText"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Ciao a tutti"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr ""
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr ""
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Chiama un metodo di libreria che ha un textdomain differente."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Indietro"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/it/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/it/hellolib.po
deleted file mode 100644
index 4aabb3ee9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/it/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2005-04-24 12:44+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Questo messaggio viene da hellolib"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/it/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/it/main.po
deleted file mode 100644
index 5808b3c07..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/it/main.po
+++ /dev/null
@@ -1,84 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2005-04-24 12:44+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "un esempio di ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"un esempio di ERB/CGI (UTF-8). Questo esmepio usa lo stesso container "
-"dell'esempio 1 ma ha un altro file rhtml."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "un esempio ERB/CGI (Riconoscimento charset automatico)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script di esempio per CGI/ERB e per il pacchetto Ruby-GetText"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Script di esempio per Ruby-GetText CGI"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Locale supportati:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Riconoscimento automatico del locale da un browser WWW"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Imposta locale come un parametro \"lang\" "
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Imposta \"lang\" su cookie"
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Cliccare su uno dei link sottostanti, e poi sugli esempi \"Riconoscimento "
-"automatico del locale da un browser WWW\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Codici sorgente"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "Anche index.cgi è un esempio Ruby-GetText usando CGI (non ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Imposta [%s] come cookie sul tuo browser WWW."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Indietro"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/helloerb1.po
deleted file mode 100644
index 9895164b3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/helloerb1.po
+++ /dev/null
@@ -1,60 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Masao Mutoh <mutomasa at gmail.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-04-23 12:44+0900\n"
-"Last-Translator: Masao Mutoh <mutomasa at gmail.com>\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "CGI/ERB用サンプルスクリプト(UTF-8)"
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERBとRuby-GetText-Packageのサンプルスクリプト"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "こんにちは世界"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "ロケール"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "出力文字列(output_charset)"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "クエリ文字列(QUERY_STRING)"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "異なるテキストドメイン(TextDomain)を持ったライブラリを呼び出します。"
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "戻る"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "アナザーサンプル"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "このサンプル(other.rhtml)はhelloerb1.cgiのもう一つのERBファイルです。"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/helloerb2.po
deleted file mode 100644
index 97b67edc5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Masao Mutoh <mutomasa at gmail.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2005-04-23 12:43+0900\n"
-"Last-Translator: Masao Mutoh <mutomasa at gmail.com>\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "CGI/ERB用サンプルスクリプト(文字コード自動判別)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERBとRuby-GetText-Packageのサンプルスクリプト"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "こんにちは世界"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "ロケール"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "出力文字列(output_charset)"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "クエリ文字列(QUERY_STRING)"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "異なるテキストドメイン(TextDomain)を持ったライブラリを呼び出します。"
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "戻る"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/hellolib.po
deleted file mode 100644
index 54d312372..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Masao Mutoh <mutomasa at gmail.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2005-04-19 02:35+0900\n"
-"Last-Translator: Masao Mutoh <mutomasa at gmail.com>\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "このメッセージはhellolibから取得しています。"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/main.po
deleted file mode 100644
index acc928e6c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ja/main.po
+++ /dev/null
@@ -1,85 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Masao Mutoh <mutomasa at gmail.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2005-04-23 16:34+0900\n"
-"Last-Translator: Masao Mutoh <mutomasa at gmail.com>\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ERB/CGIサンプル(UTF-8)"
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"ERB/CGIサンプル。このサンプルはサンプル1と同じコンテナを使用しています(rhtml"
-"ファイルは別)。"
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ERB/CGIサンプル(文字コード自動判別)"
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Ruby-GetText-PacakgeのCGI/ERB向けサンプルスクリプト"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGIサンプルスクリプト"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "このサンプルでサポートされているロケール:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "WWWブラウザによるロケール自動判別"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "ロケールを\"lang\"パラメータとして渡す"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "ロケールをクッキーの\"lang\"パラメータとして渡す"
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"以下のリンクを一つ選択した後で、\"WWWブラウザによるロケール自動判別\"サンプル"
-"をクリックしてみてください。"
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "ソースコード"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-"index.cgiもRuby-GetTextのCGIサンプルスクリプトです(ERBは使っていません)。"
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "[%s]ロケールをあなたのブラウザのクッキーに設定しました。"
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "戻る"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/helloerb1.po
deleted file mode 100644
index d46d12d01..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gyoung-Yoon Noh <nohmad@gmail.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "CGI/ERB를 위한 예제 스크립트 (UTF-8)"
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERB와 Ruby-GetText 꾸러미를 위한 예제 스크립트"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "안녕 세상"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "로케일"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "출력 문자집합"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "또다른 textdomain을 가진 라이브러리 메쏘드를 호출합니다."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "뒤로 가기"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "또다른 예제"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "이 예제(other.rhtml)는 helloerb1.cgi의 또다른 ERB 파일입니다."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/helloerb2.po
deleted file mode 100644
index db325e302..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gyoung-Yoon Noh <nohmad@gmail.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "CGI/ERB를 위한 예제 스크립트(문자집합 자동탐지)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERB와 Ruby-GetText 꾸러미를 위한 예제 스크립트"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "안녕 세상"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "로케일"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "출력 문자집합"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr ""
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "또다른 textdomain을 가진 라이브러리 메쏘드를 호출합니다."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "뒤로 가기"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/hellolib.po
deleted file mode 100644
index 914ba97b0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/hellolib.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gyoung-Yoon Noh <nohmad@gmail.com>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "이것은 hellolib으로부터의 메시지입니다."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/main.po
deleted file mode 100644
index 46fab58cb..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ko/main.po
+++ /dev/null
@@ -1,84 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gyoung-Yoon Noh <nohmad@gmail.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ERB/CGI 예제 (UTF-8)"
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"ERB/CGI 샘플 (UTF-8). 이 예제는 예제 1과 같은 컨테이너를 사용하지만 다른 "
-"rhtml 파일을 사용합니다."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ERB/CGI 샘플 (문자집합 자동탐지)"
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERB와 Ruby-GetText 꾸러미를 위한 예제 스크립트"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI 예제 스크립트들"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "지원되는 로케일:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "웹 브라우저로부터 로케일을 자동탐지"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "\"lang\" 매개변수로 로케일을 설정"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "\"lang\"을 쿠키에 설정합니다."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"아래 링크 중 하나를 선택하시고 \"웹 브라우저로부터 로케일을 자동탐지\" 예제"
-"를 클릭하세요."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "소스 코드들"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-"index.cgi 역시 ERB가 아닌 CGI를 사용하는 Ruby-GetText 예제 스크립트입니다."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "[%s]를 웹 브라우저의 쿠키로 설정합니다."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "뒤로가기"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/helloerb1.po
deleted file mode 100644
index 85d7bf16a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/helloerb1.po
+++ /dev/null
@@ -1,65 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2008-07-22 09:12+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Paraugs CGI/ERB (UTF-8)"
-
-#: helloerb.rhtml:5
-#: other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Paraugs CGI/ERB (UTF-8) un Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Sveicināta pasaule"
-
-#: helloerb.rhtml:15
-#: other.rhtml:11
-msgid "locale"
-msgstr "valoda"
-
-#: helloerb.rhtml:16
-#: other.rhtml:12
-msgid "output_charset"
-msgstr "izvades_simbolu_kodējums"
-
-#: helloerb.rhtml:17
-#: other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "PIEPRASĪJUMA_TEKSTS"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Izsaukt bibliotēku ar citu teksta sakni"
-
-#: helloerb.rhtml:21
-#: other.rhtml:15
-msgid "Back"
-msgstr "Atgriezties"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Vēl viens piemērs"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Šis paraugs(other.rhtml) ir cits ERB fails no helloerb1.cgi."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/helloerb2.po
deleted file mode 100644
index 07e0ba137..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2008-07-22 09:13+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Paraugs CGI/ERB (Automātiska simbolu kodējuma atpazīšana)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Paraugs CGI/ERB un Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Sveicināta pasaule"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "valoda"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "izvades_simbolu_kodējums"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "PIEPRASĪJUMA_TEKSTS"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Izsaukt bibliotēku ar citu teksta sakni"
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Atgriezties"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/hellolib.po
deleted file mode 100644
index 90e512899..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2008-07-22 08:56+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Šis ziņojums ir no hellolib."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/main.po
deleted file mode 100644
index a225e0118..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/lv/main.po
+++ /dev/null
@@ -1,77 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2008-07-22 09:24+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ERB/CGI paraugs (UTF-8)."
-
-#: index.cgi:37
-msgid "an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 but has a different rhtml file."
-msgstr "ERB/CGI paraugs (UTF-8). Šis paraugs izmantot to pašu saturu ko paraugs 1, bet ar citu rhtml datni."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ERB/CGI paraugs (UTF-8) (Automātiksa simbolu kodējuma atpazīšana)."
-
-#: index.cgi:50
-#: cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERB un Ruby-GetText-Package paraugs"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI paraugi"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Atbalstītās valodas"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Automātiski noteikt valodu no WWW pārlūka"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Uzstādīt valodu kā \"lang\" mainīgo"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Uzstādīt \"lang\" sīkdatnē"
-
-#: index.cgi:83
-msgid "Click one of the link below, and then click \"Auto-Detect a locale from the WWW browser\" samples."
-msgstr "Spied uz kādas no zemāk norādītajām saitēm un tad spied uz \"Automātiski noteikt valodu no WWW pārlūka\" piemēriem"
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Izejas kodi"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi ir arī Ruby-GetText paraugs izmantojot CGI(nevis ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Uzstādīt [%s] kā sīkdatni WWW Pārlūkā."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Atgriezties"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/main.pot b/vendor/gems/gettext-2.1.0/samples/cgi/po/main.pot
deleted file mode 100644
index fe8317ab3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/main.pot
+++ /dev/null
@@ -1,80 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr ""
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr ""
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr ""
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr ""
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr ""
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr ""
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr ""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr ""
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr ""
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr ""
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/helloerb1.po
deleted file mode 100644
index fffd6d460..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/helloerb1.po
+++ /dev/null
@@ -1,60 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2008-07-14 16:27+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Eksempelskript for CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Eksempelskript for CGI/ERB og Ruby-GetText-pakken"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Smil til verden"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "lokale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Spør etter bibliotekmetode som har et annet tekstdomene."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Tilbake"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Enda et eksempel"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Dette eksempelet (other.rhtml) er den andre ERB-filen til helloerb1.cgi"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/helloerb2.po
deleted file mode 100644
index a9e51b87f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2008-07-14 16:28+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Eksempelskript for CGI/ERB (Auto-Detect-charset)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Eksempelskript for CGI/ERB og Ruby-GetText-pakken"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Smil til verden"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "lokale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Spør etter bibliotekmetode som har et annet tekstdomene."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Tilbake"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/hellolib.po
deleted file mode 100644
index adc6c3060..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2008-07-14 16:30+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Denne meldingen kommer fra hellolib"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/main.po
deleted file mode 100644
index 82fa0148e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/nb/main.po
+++ /dev/null
@@ -1,84 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2008-07-14 16:35+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "et ERB/CGI-eksempel (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"et ERB/CGI-eksempel (UTF-8). Dette eksempelet bruker den samme containeren som"
-"eksempel 1, men har en annen rhtml-fil."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "et ERB/CGI-eksempel (Auto-Detect charset)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Eksempelskript for CGI/ERB og Ruby-GetText-pakken"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI eksempelskript"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Støttede lokale:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Auto-Detect et lokale fra nettleseren"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Sett lokale som en \"lang\"-parameter"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Sett \"lang\" til en informasjonskapsel."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Klikk på en lenke under og deretter på \"Auto-Detect et lokale fra nettleseren\""
-"eksemplene."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Kildekode"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi er også et Ruby-GetText eksempelskript som bruker CGI, ikke ERB."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Sett [%s] som informasjonskapsel i din nettleser."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Tilbake"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/helloerb1.po
deleted file mode 100644
index ecf856d1c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/helloerb1.po
+++ /dev/null
@@ -1,61 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Voorbeeldscript voor CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Voorbeeldscript voor CGI/ERB en Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hallo wereld"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Roep een bibliotheekmethode aan die een ander tekstdomein heeft."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Terug"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Een ander voorbeeld"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr ""
-"Dit voorbeeld (other.rhtml) is een ander ERB-bestand van helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/helloerb2.po
deleted file mode 100644
index 5a5a5547e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Voorbeeldscript voor CGI/ERB (auto-detect charset)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Voorbeeldscript voor CGI/ERB en Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Hallo wereld"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Roep een librarymethode aan die een ander tekstdomein heeft."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Terug"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/hellolib.po
deleted file mode 100644
index 0512c2f99..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Dit bericht komt van hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/main.po
deleted file mode 100644
index fa5ae032c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/nl/main.po
+++ /dev/null
@@ -1,86 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "een ERB/CGI voorbeeld (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"een ERB/CGI voorbeeld (UTF-8). Dit voorbeeld gebruikt dezelfde container als "
-"voorbeeld 1, maar heeft een ander rhtml-bestand."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "een ERB/CGI voorbeeld (auto-detect charset)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Voorbeeldscript voor CGI/ERB en Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI voorbeeldscripts"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Ondersteunde locales:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Auto-detect een locale van de webbrowser"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Stel locale in als een \"lang\" parameter"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Zet \"lang\" in een cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Kies een van onderstaande links en klik dan \"Auto-detect een locale van de "
-"webbrowser\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Broncodes"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-"index.cgi is ook een Ruby-GetText voorbeeldscript dat CGI gebruikt (niet "
-"ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Stel [%s] in als cookie van de webbrowser."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Terug"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/helloerb1.po
deleted file mode 100644
index bdcb8dfe8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/helloerb1.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Script de exemplo para CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script de exemplo para CGI/ERB e Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Olá Mundo"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "charset_de_saída"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "STRING_DE_PESQUISA"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Chama um método de biblioteca que tem um outro domínio de texto."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Voltar"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Outro exemplo"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Este exemplo(other.rhtml) é o outro arquivo de ERB do helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/helloerb2.po
deleted file mode 100644
index d628670cd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/helloerb2.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Script de exemplo para CGI/ERB (Auto-Detectar charset)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script de exemplo para CGI/ERB e Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Olá Mundo"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "charset_de_saída"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "STRING_DE_PESQUISA"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Chamar um método de biblioteca que tem outro domínio de texto."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Voltar"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/hellolib.po
deleted file mode 100644
index d17c667d5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/hellolib.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Esta mensagem é de hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/main.po
deleted file mode 100644
index 6481ca372..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/pt_BR/main.po
+++ /dev/null
@@ -1,84 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "um exemplo de ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"um exemplo de ERB/CGI (UTF-8). Este exemplo usa o mesmo recipiente do "
-"exemplo 1, mas tem outro arquivo rhtml."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "um exemplo ERB/CGI (Auto-Detectar charset)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script de exemplo para CGI/ERB e Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Scripts de exemplo de CGI de Ruby-GetText"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Locales suportados:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Auto-Detectar um locale do browser WWW"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Configurar locale como um parâmetro \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Configurar \"lang\" para cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Clique em um dos links abaixo, e então clique no exemplo \"Auto-Detectar um "
-"locale do browser WWW\""
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Código-fonte"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr ""
-"index.cgi também é um script de exemplo de Ruby-GetText usando CGI(não ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Configurar [%s] como o cookie do seu browser WWW."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Voltar"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/helloerb1.po
deleted file mode 100644
index d334350f5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/helloerb1.po
+++ /dev/null
@@ -1,58 +0,0 @@
-# translation of helloerb1.po to Russian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2006-04-17 20:25+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Пример сценария CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Пример сценария CGI/ERB и Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Здравствуй, мир"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "локаль"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "кодировка_результата"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "СТРОКА_ЗАПРОСА"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Вызов библиотечного метода, расположенного в другом текстовом домене."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Назад"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Другой пример"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Это пример(other.rhtml) из другого ERB файла helloerb1.cgi."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/helloerb2.po
deleted file mode 100644
index c3031fd3d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/helloerb2.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# translation of helloerb2.po to Russian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2006-04-17 20:26+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Пример сценария CGI/ERB (Автоопределение кодировки)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Sample script for CGI/ERB and Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Здравствуй, мир"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "локаль"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "кодировка_результата"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "СТРОКА_ЗАПРОСА"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Вызов библиотечного метода, расположенного в другом текстовом домене."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Назад"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/hellolib.po
deleted file mode 100644
index 3c25cdfba..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/hellolib.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# translation of hellolib.po to Russian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2006-04-17 20:43+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Сообщение из hellolib."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/main.po
deleted file mode 100644
index 9983e5bdc..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ru/main.po
+++ /dev/null
@@ -1,82 +0,0 @@
-# translation of main.po to Russian
-# CGI/ERB sample for Ruby-GetText-Package.
-# Copyright (C) 2005,2006 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2006-04-17 21:01+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "Пример ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr ""
-"Пример ERB/CGI (UTF-8). Этот пример использует тот же контейнер как "
-"в примере 1, но имеет другой rhtml файл."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "Пример ERB/CGI (автоопределение кодировки)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Пример сценария CGI/ERB и Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Примеры сценариев Ruby-GetText CGI"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Поддерживаемые локали:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Автоопределение локали WWW браузера"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Установка локали в параметре \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Установка \"lang\" в куки."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr ""
-"Нажмите на ссылку ниже и затем нажмите на "
-"примеры \"Автоопределение локали WWW браузера\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Исходные тексты"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi это также Ruby-GetText пример использующий CGI(не ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Установить [%s] как куки в вашем WWW браузере."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Назад"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/helloerb1.po
deleted file mode 100644
index 8a6cf4c6a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/helloerb1.po
+++ /dev/null
@@ -1,60 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2008-06-05 23:05+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Пример скрипта за CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Пример скрипта за CGI/ERB и Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Здраво свете"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Позови функцију из библиотеке која има неки други текст домен."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Назад"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Други пример"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Овај пример(other.rhtml) је други ERB фајл од helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/helloerb2.po
deleted file mode 100644
index 86394af6c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2008-06-05 23:06+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Пример скрипта за CGI/ERB (Auto-Detect charset)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Пример скрипта за CGI/ERB i Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Здраво свете"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "locale"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Позови функцију библиотеке која има неки други текст домен."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Назад"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/hellolib.po
deleted file mode 100644
index 0c30f268e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2008-06-05 23:08+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Ова порука је из hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/main.po
deleted file mode 100644
index d9723d9ab..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/sr/main.po
+++ /dev/null
@@ -1,80 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2008-06-05 23:14+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "један ERB/CGI пример (UTF-8)"
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr "један ERB/CGI пример (UTF-8). Овај пример користи исти контејнер као и пример 1, али има другачији rhtml фајл."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "један ERB/CGI пример (Auto-Detect charset)."
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Пример скрипта за CGI/ERB и Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI примери скриптова"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Подржани језици:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Аутоматска детекција језика из WWW прегледача"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Подеси језик као \"lang\" параметар"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Подеси \"lang\" у куки."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr "Кликните један од линкова испод, а затим кликните \"Аутоматска детекција језика из WWW прегледачa\" primere."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Изворни код"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi је такође Ruby-GetText пример скрипта који користи CGI (а не ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Подеси [%s] као куки вашег WWW прегледачa."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Назад"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/helloerb1.po
deleted file mode 100644
index 051769e61..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/helloerb1.po
+++ /dev/null
@@ -1,62 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2008-02-04 08:12+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Зразок сценарію для CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Зразок сценарію для CGI/ERB (UTF-8) і Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Привіт, світ"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "локаль"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Викликати метод бібліотеки, що має інший текстовий домен."
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "Назад"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Інший зразок"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Цей зразок(other.rhtml) є іншим ERB файлом helloerb1.cgi."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/helloerb2.po
deleted file mode 100644
index f121586ae..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/helloerb2.po
+++ /dev/null
@@ -1,54 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2007-12-23 13:32+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Зразок сценарію для CGI/ERB (автовизначення набору символів)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Зразок сценарію для CGI/ERB і Ruby-GetText-Package"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Привіт, світ"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "локаль"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Виклик методу бібліотеки, що має інший текстовий домен"
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Назад"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/hellolib.po
deleted file mode 100644
index 77caecc16..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/hellolib.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2007-12-23 13:36+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Це повідомлення з hellolib."
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/main.po
deleted file mode 100644
index a088662ac..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/ua/main.po
+++ /dev/null
@@ -1,84 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2008-02-04 08:12+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "Зразок ERB/CGI сценарію (UTF-8)"
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr "Зразок ERB/CGI сценарію (UTF-8). Цей зразок використовує той же контейнер, "
-"що і перший зразок, але має інший файл rhtml."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "Зразок ERB/CGI сценарію (авто-визначення набору символів)"
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Зразок сценарію для CGI/ERB і Ruby-GetText-Package"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Зразок сценарію Ruby-GetText CGI"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Сумісні локалі:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Автовизначення локалі з броузеру"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Встановити локаль параметром \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Встановити \"lang\" в cookie."
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr "Нажміть на однe з посилань і натисніть \"Автовизначення локалі "
-"з броузеру\""
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Коди джерела"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi є також зразком скрипта Ruby-GetText з використанням CGI(не ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Встановити [%s] як cookie у вашому броузері"
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Назад"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/helloerb1.po
deleted file mode 100644
index 76423c7fd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/helloerb1.po
+++ /dev/null
@@ -1,65 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2007-03-21 10:40+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "Script ví dụ mẫu về CGI/ERB (UTF-8)."
-
-#: helloerb.rhtml:5
-#: other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script ví dụ mẫu về CGI/ERB và gói Ruby-GetText"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Xin chào cả Thế Giới"
-
-#: helloerb.rhtml:15
-#: other.rhtml:11
-msgid "locale"
-msgstr "ngông ngữ"
-
-#: helloerb.rhtml:16
-#: other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-#: other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Gọi phương thức trong thư viện có textdomain khác."
-
-#: helloerb.rhtml:21
-#: other.rhtml:15
-msgid "Back"
-msgstr "Quay lui"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "Ví dụ mẫu khác"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "Ví dụ mẫu này (other.rhtml) là tập tin ERB khác của helloerb1.cgi."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/helloerb2.po
deleted file mode 100644
index 4a3cb2e43..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2007-03-21 10:43+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "Script ví dụ mẫu về CGI/ERB (Auto-Detect charset)."
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script ví dụ mẫu về CGI/ERB và gói Ruby-GetText"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "Xin chào Thế Giới"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "ngôn ngữ"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Gọi phương thức trong thư viện có textdomain khác."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "Quay lui"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/hellolib.po
deleted file mode 100644
index ec08e35f7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2007-03-21 11:03+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "Thông điệp này là từ hellolib."
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/main.po
deleted file mode 100644
index 7ab3c62df..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/vi/main.po
+++ /dev/null
@@ -1,77 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2007-03-21 11:18+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ví dụ mẫu về ERB/CGI (UTF-8)."
-
-#: index.cgi:37
-msgid "an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 but has a different rhtml file."
-msgstr "ví dụ mẫu về ERB/CGI (UTF-8). Ví dụ này dùng cùng container như ví dụ 1, nhưng có tập tin rhtml khác."
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ví dụ mẫu về ERB/CGI (Auto-Detect charset)."
-
-#: index.cgi:50
-#: cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "Script ví dụ mẫu về CGI/ERB và gói Ruby-GetText"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Những script CGI ví dụ mẫu về Ruby-GetText"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "Những ngôn ngữ được hỗ trợ:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "Tự động nhận biết bảng mã từ trình duyệt WWW"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "Đặt tham số ngôn ngữ \"lang\""
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "Đặt \"lang\" vào cookie."
-
-#: index.cgi:83
-msgid "Click one of the link below, and then click \"Auto-Detect a locale from the WWW browser\" samples."
-msgstr "Click một trong những link ở dưới, sau đó click những ví dụ mẫu \"Tự động nhận biết bảng mã từ trình duyệt WWW\"."
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "Mã nguồn"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi cũng là script ví dụ mẫu về Ruby-GetText dùng CGI (không phải ERB)."
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "Đặt [%s] là cookie của trình duyệt WWW của bạn."
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "Quay lui"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/helloerb1.po
deleted file mode 100644
index 514d2208d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/helloerb1.po
+++ /dev/null
@@ -1,60 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-03-04 22:50+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "用于CGI/ERB的示例脚本(UTF-8)"
-
-#: helloerb.rhtml:5 other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "用于CGI/ERB和Ruby-GetText-Package的示例脚本"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "你好世界"
-
-#: helloerb.rhtml:15 other.rhtml:11
-msgid "locale"
-msgstr "本地"
-
-#: helloerb.rhtml:16 other.rhtml:12
-msgid "output_charset"
-msgstr "输出字符集"
-
-#: helloerb.rhtml:17 other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "调用具备其他textdomain的库方法"
-
-#: helloerb.rhtml:21 other.rhtml:15
-msgid "Back"
-msgstr "返回"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "另一个示例"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "示例(other.rhtml)是helloerb1.cgi的另一个ERB文件"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/helloerb2.po
deleted file mode 100644
index e4539dc52..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/helloerb2.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-03-04 22:50+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "用于CGI/ERB的示例脚本(自动检测字符集)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "用于CGI/ERB和Ruby-GetText-Package的示例脚本"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "你好世界"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "本地"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "输出字符集"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "调用具备其他textdomain的库方法"
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "返回"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/hellolib.po
deleted file mode 100644
index 0df452d45..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/hellolib.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-03-04 22:50+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "本条信息来自hellolib。"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/main.po
deleted file mode 100644
index 2369fb3a0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh/main.po
+++ /dev/null
@@ -1,80 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-03-04 22:50+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "一个ERB/CGI例子(UTF-8)。"
-
-#: index.cgi:37
-msgid ""
-"an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 "
-"but has a different rhtml file."
-msgstr "一个ERB/CGI示例(UTF-8)。本示例采用跟示例1相同的容器,但却拥有一个不同的rhtml文件。"
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "一个ERB/CGI示例(自动检测字符集)。"
-
-#: index.cgi:50 cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "用于CGI/ERB和Ruby-GetText-Package的示例脚本"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText CGI示例脚本"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "目前支持的国家:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "从WWW浏览器自动检测国家"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "用\"lang\"参数设置国家"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "为cookie设置\"lang\""
-
-#: index.cgi:83
-msgid ""
-"Click one of the link below, and then click \"Auto-Detect a locale from the "
-"WWW browser\" samples."
-msgstr "点击下面的链接,然后点击\"从WWW浏览器自动检测国家\"例程"
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "源代码"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi也是Ruby-GetText用于CGI(不是ERB)的示例脚本。"
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "将[%s]设置为您的WWW浏览器的cookie。"
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "返回"
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/helloerb1.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/helloerb1.po
deleted file mode 100644
index ae1ec0661..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/helloerb1.po
+++ /dev/null
@@ -1,67 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:48+0900\n"
-"PO-Revision-Date: 2006-08-18 15:06+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: helloerb1.cgi:32
-msgid "Sample script for CGI/ERB (UTF-8)."
-msgstr "CGI/ERB (UTF-8) 範例"
-
-#: helloerb.rhtml:5
-#: other.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERB 與 Ruby-GetText-Package 範例"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "哈囉世界"
-
-#: helloerb.rhtml:15
-#: other.rhtml:11
-msgid "locale"
-msgstr "字集"
-
-#: helloerb.rhtml:16
-#: other.rhtml:12
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-#: other.rhtml:13
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "呼叫一個有另外 textdomain 的 library method"
-
-#: helloerb.rhtml:21
-#: other.rhtml:15
-msgid "Back"
-msgstr "返回"
-
-#: other.rhtml:8
-msgid "Another sample"
-msgstr "另一個範例"
-
-#: other.rhtml:9
-msgid "This sample(other.rhtml) is the another ERB file of helloerb1.cgi."
-msgstr "這個範例(other.rhtml) 是 helloerb1.cgi 的另一個ERB 檔"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/helloerb2.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/helloerb2.po
deleted file mode 100644
index 7350bd407..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/helloerb2.po
+++ /dev/null
@@ -1,54 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:51+0900\n"
-"PO-Revision-Date: 2006-08-18 15:09+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: helloerb2.cgi:34
-msgid "Sample script for CGI/ERB (Auto-Detect charset)."
-msgstr "CGI/ERB 範例 (自動偵測字集)"
-
-#: helloerb.rhtml:5
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERB 與 Ruby-GetText-Package 範例"
-
-#: helloerb.rhtml:12
-msgid "Hello World"
-msgstr "哈囉世界"
-
-#: helloerb.rhtml:15
-msgid "locale"
-msgstr "字集"
-
-#: helloerb.rhtml:16
-msgid "output_charset"
-msgstr "output_charset"
-
-#: helloerb.rhtml:17
-msgid "QUERY_STRING"
-msgstr "QUERY_STRING"
-
-#: helloerb.rhtml:19
-msgid "Call a library method which has another textdomain."
-msgstr "Call a library method which has another textdomain."
-
-#: helloerb.rhtml:21
-msgid "Back"
-msgstr "返回"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/hellolib.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/hellolib.po
deleted file mode 100644
index 4e46992bd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/hellolib.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:53+0900\n"
-"PO-Revision-Date: 2006-08-21 09:08+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: hellolib.rb:19
-msgid "This message is from hellolib."
-msgstr "這個訊息來自 hellolib"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/main.po b/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/main.po
deleted file mode 100644
index b7c2bbf0a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/cgi/po/zh_TW/main.po
+++ /dev/null
@@ -1,79 +0,0 @@
-# CGI/ERB sample for Ruby-GetText-Package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: cgi-sample 1.1.1\n"
-"POT-Creation-Date: 2006-01-07 14:55+0900\n"
-"PO-Revision-Date: 2006-08-18 14:43+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: index.cgi:36
-msgid "an ERB/CGI sample (UTF-8)."
-msgstr "ERB/CGI 範例 (UTF-8)"
-
-#: index.cgi:37
-msgid "an ERB/CGI sample (UTF-8). This sample uses the same container as sample 1 but has a different rhtml file."
-msgstr "ERB/CGI 範例 (UTF-8) 該範例使用範例一同樣的 container 只是 rhtml 檔案不同"
-
-#: index.cgi:38
-msgid "an ERB/CGI sample (Auto-Detect charset)."
-msgstr "ERB/CGI 範例 (字集自動偵測)"
-
-#: index.cgi:50
-#: cookie.cgi:44
-msgid "Sample script for CGI/ERB and Ruby-GetText-Package"
-msgstr "CGI/ERB 與 Ruby-GetText-Package 的範例程式"
-
-#: index.cgi:55
-msgid "Ruby-GetText CGI sample scripts"
-msgstr "Ruby-GetText 的 CGI 範例"
-
-#: index.cgi:57
-msgid "Supported Locales:"
-msgstr "支援字集:"
-
-#: index.cgi:58
-msgid "Auto-Detect a locale from the WWW browser"
-msgstr "自動從瀏覽器判斷字集"
-
-#: index.cgi:66
-msgid "Set locale as a \"lang\" parameter"
-msgstr "利用 \"lang\" 參數設定字集"
-
-#: index.cgi:82
-msgid "Set \"lang\" to cookie."
-msgstr "設定 \"lang\" 到 cookie."
-
-#: index.cgi:83
-msgid "Click one of the link below, and then click \"Auto-Detect a locale from the WWW browser\" samples."
-msgstr "按下面連結再按 \"自動從瀏覽器判斷字集\" 範例"
-
-#: index.cgi:92
-msgid "Source codes"
-msgstr "原始碼"
-
-#: index.cgi:103
-msgid "index.cgi is also a Ruby-GetText sample script using CGI(not ERB)."
-msgstr "index.cgi 也是 Ruby-GetText 的 CGI 範例 (非 ERB)"
-
-#: cookie.cgi:50
-msgid "Set [%s] as the cookie of your WWW Browser."
-msgstr "設定 [%s] 為瀏覽器的 cookie"
-
-#: cookie.cgi:54
-msgid "Back"
-msgstr "返回"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/hello.rb b/vendor/gems/gettext-2.1.0/samples/hello.rb
deleted file mode 100644
index 343092a93..000000000
--- a/vendor/gems/gettext-2.1.0/samples/hello.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/ruby
-# hello.rb - sample for _() and class.
-#
-# Copyright (C) 2001-2009 Masao Mutoh
-# This file is distributed under the same license as Ruby-GetText-Package.
-
-require 'rubygems'
-require 'gettext'
-
-class HelloWorld
- include GetText
-
- bindtextdomain("hello", :path => "locale")
-
- def hello
- print _("Hello World\n")
- end
-end
-
-if __FILE__ == $0
- a = HelloWorld.new
-
- a.hello # Show in your locale
-
- old = GetText.locale
- p old.to_s # Show current locale
-
- # Change the locale to "en".
- GetText.set_locale_all("en")
- p GetText.locale.to_s
- a.hello # Show in English
-
- # Retrive original locale
- GetText.set_locale(old)
- a.hello # Show in your locale
-end
diff --git a/vendor/gems/gettext-2.1.0/samples/hello2.rb b/vendor/gems/gettext-2.1.0/samples/hello2.rb
deleted file mode 100644
index 8f9eb7027..000000000
--- a/vendor/gems/gettext-2.1.0/samples/hello2.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/ruby
-# hello2.po - sample for _() and module
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-# This file is distributed under the same license as Ruby-GetText-Package.
-
-require 'rubygems'
-require 'gettext'
-
-module Hello
- include GetText
-
- bindtextdomain("hello2", :path => "locale")
-
- module_function
- def hello
- num = 1
- puts _("One is %{num}\n") % {:num => num}
- puts _("Hello %{world}\n") % {:world => _("World")}
- end
-end
-
-Hello.hello
diff --git a/vendor/gems/gettext-2.1.0/samples/hello_glade2.glade b/vendor/gems/gettext-2.1.0/samples/hello_glade2.glade
deleted file mode 100644
index 4a7049d6b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/hello_glade2.glade
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-<requires lib="gnome"/>
-
-<widget class="GtkWindow" id="window1">
- <property name="visible">True</property>
- <property name="title" translatable="yes">window1</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">False</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="label1">
- <property name="visible">True</property>
- <property name="label" translatable="yes">first line
-second line
-third line</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkButton" id="button1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">&lt;Hello world&gt;</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal name="clicked" handler="on_quit" last_modification_time="Sat, 03 Jul 2004 16:35:11 GMT"/>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
-</widget>
-
-</glade-interface>
diff --git a/vendor/gems/gettext-2.1.0/samples/hello_glade2.rb b/vendor/gems/gettext-2.1.0/samples/hello_glade2.rb
deleted file mode 100644
index 1e6251b99..000000000
--- a/vendor/gems/gettext-2.1.0/samples/hello_glade2.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env ruby
-# hello_glade2.rb - sample for Ruby/Libglade2
-#
-# Copyright (C) 2004-2008 Masao Mutoh
-# This file is distributed under the same license as Ruby-GetText-Package.
-
-require 'rubygems'
-require 'libglade2'
-
-class HelloLibglade2
- def initialize(path, appname)
- @glade = GladeXML.new(path, nil, appname, "locale") {|handler| method(handler)}
- end
- def on_quit
- puts "Hello world"
- Gtk.main_quit
- end
-end
-
-if __FILE__ == $0
- APPNAME = "hello_glade2"
- Gnome::Program.new(APPNAME, "1.0")
- HelloLibglade2.new("hello_glade2.glade", APPNAME)
- Gtk.main
-end
diff --git a/vendor/gems/gettext-2.1.0/samples/hello_gtk2.rb b/vendor/gems/gettext-2.1.0/samples/hello_gtk2.rb
deleted file mode 100644
index 295ad8d37..000000000
--- a/vendor/gems/gettext-2.1.0/samples/hello_gtk2.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/ruby
-# hello_gtk2.rb - sample for Ruby/GTK2
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-# This file is distributed under the same license as Ruby-GetText-Package.
-
-require 'rubygems'
-require 'gettext'
-require 'gtk2'
-
-class LocalizedWindow < Gtk::Window
- include GetText
-
- bindtextdomain("hello_gtk", :path => "locale", :output_charset => "utf-8")
-
- def initialize
- super
- signal_connect('delete-event') do
- Gtk.main_quit
- end
-
- add(Gtk::Label.new(_("hello, gtk world")))
- end
-end
-
-LocalizedWindow.new.show_all
-Gtk.main
diff --git a/vendor/gems/gettext-2.1.0/samples/hello_noop.rb b/vendor/gems/gettext-2.1.0/samples/hello_noop.rb
deleted file mode 100644
index 3550faec6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/hello_noop.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/ruby
-# hello_noop.rb - sample for N_() and class.
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as Ruby-GetText-Package.
-
-require 'rubygems'
-require 'gettext'
-
-class HelloNoop
- include GetText
-
- MSGS = [N_("Hello World"), N_("Hello World2")]
-
- def initialize
- # You can call bindtextdomain as instance methods.
- # In this case, it initializes(decided the locale lazily)
- # in a instance.
- bindtextdomain("hello_noop", :path => "locale")
- end
-
- def hello
- MSGS.each do |msg|
- print _(msg), "\n"
- end
- end
-end
-
-hello = HelloNoop.new
-
-hello.hello
diff --git a/vendor/gems/gettext-2.1.0/samples/hello_plural.rb b/vendor/gems/gettext-2.1.0/samples/hello_plural.rb
deleted file mode 100644
index e528c6e38..000000000
--- a/vendor/gems/gettext-2.1.0/samples/hello_plural.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/ruby
-# hello_plural.po - sample for n_() and class.
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as Ruby-GetText-Package.
-
-require 'rubygems'
-require 'gettext'
-
-class HelloPlural
- include GetText
-
- def initialize
- bindtextdomain("hello_plural", :path => "locale")
- end
-
- def hello
- (0..2).each do |v|
- puts n_("There is an apple.\n", "There are %{num} apples.\n", v) % {:num => v}
- end
- end
-end
-
-hello = HelloPlural.new
-
-hello.hello
diff --git a/vendor/gems/gettext-2.1.0/samples/hello_tk.rb b/vendor/gems/gettext-2.1.0/samples/hello_tk.rb
deleted file mode 100644
index d551c5223..000000000
--- a/vendor/gems/gettext-2.1.0/samples/hello_tk.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/ruby
-# hello_tk.rb - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-# This file is distributed under the same license as Ruby-GetText-Package.
-
-require 'rubygems'
-require 'gettext'
-require 'tk'
-
-include GetText
-bindtextdomain("hello_tk", :path => "locale")
-
-TkLabel.new {
- text _("hello, tk world")
- pack
-}
-
-Tk.mainloop
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello.mo
deleted file mode 100644
index d3763f9c2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 968dbe3c7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 21901bae6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 9bff07385..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 2838b7a13..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 6e0434863..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 84e8a9774..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bg/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello.mo
deleted file mode 100644
index f98298c1b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello2.mo
deleted file mode 100644
index dfe56dc94..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index ba5abcd7d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 8c2eb44bd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 651513ba3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 1ee8f602d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 6f9fa40b9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/bs/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello.mo
deleted file mode 100644
index 81473f387..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 5980bd6a1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 2e171ff6c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index ba7662de2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 0c9ff9a59..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index c2315cf64..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 4aaa2292d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ca/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello.mo
deleted file mode 100644
index 2aa2f0b8f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 2e91ba645..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 94613f743..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index b18a72df9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 5eefb6c34..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 388dc12f1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index d7b33547b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/cs/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello.mo
deleted file mode 100644
index d12787a98..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 5962c60ac..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 071c5b8d0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 9994535db..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 4966fc260..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index f12563b22..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 606f3a359..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/de/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello.mo
deleted file mode 100644
index 882132a36..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello2.mo
deleted file mode 100644
index bdfc39f4e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index a7f1752c9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 7655e5102..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index b50de6cff..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 3c51ea73b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 3ef0df1f0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/el/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello.mo
deleted file mode 100644
index 92df66e54..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 58d619233..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index bbd24bd7d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 678f1aa66..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 15a73254d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index db1fd21cf..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 3fa10d06a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/eo/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello.mo
deleted file mode 100644
index 0a1d279cf..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 86ff6715f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 01c72a22e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index f36994795..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 7feb70a7b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 290599c5d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 87cf28752..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/es/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello.mo
deleted file mode 100644
index 84bb7e641..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello2.mo
deleted file mode 100644
index fc5fb8ee6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index a6b273e04..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 79546432c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index f8f05b9d5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index f23b2a65b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 4d00998d9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/fr/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello.mo
deleted file mode 100644
index 118f4e53c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 43ccd8c47..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index d33b57a6f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 3c771b223..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 5fa2c64a2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index c57469db6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index c788ad517..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hr/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello.mo
deleted file mode 100644
index 1153f6d1d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 5c67e13a3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 41609eb94..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 40d606f29..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index c2d8827a9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 8459353b7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index d37dcc73f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/hu/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello.mo
deleted file mode 100644
index d620055f1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello2.mo
deleted file mode 100644
index ffae7028c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index eb4d88de6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index f67472523..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index cabc97c6d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index af8d47224..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 2dee19224..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/it/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello.mo
deleted file mode 100644
index a40d26dfb..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello2.mo
deleted file mode 100644
index d6eef0a6b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 984d93481..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index d41113e25..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 2353b7c49..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 715cac2a5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 9f6808923..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ja/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello.mo
deleted file mode 100644
index 96b91b59a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 59cd4f037..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index ec2ce9ad4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 6d08291a7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index d6d97ac04..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index e58b8cbc9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 77a3d4db3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ko/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello.mo
deleted file mode 100644
index b27f830f3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello2.mo
deleted file mode 100644
index fd677e679..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 39982cf10..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index c42f3e62e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 0b9cab7f9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index c749bd94a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 69db9aa0a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/lv/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello.mo
deleted file mode 100644
index 07068e620..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 44a248057..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 315ba581c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 5fd72270f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index f086f9be4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 145adf825..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index d2225a0ab..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nb/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello.mo
deleted file mode 100644
index 84e103111..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 0a1213753..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index c97cc45fd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 60158adcf..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 2c8eaa273..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 78e5581b1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index bd256365b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/nl/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello.mo
deleted file mode 100644
index 1a95da4a2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello2.mo
deleted file mode 100644
index df919734d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index bf8fac6c5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 3f88f81b3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 03517fc09..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 72a7a17f3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 3f88f81b3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/pt_BR/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello.mo
deleted file mode 100644
index 01c66a2ec..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello2.mo
deleted file mode 100644
index ba05d4fac..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 15a3e5b50..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 36f7cdf8f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index ecf6dae16..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 463d2517a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 54c8e7d0d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ru/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello.mo
deleted file mode 100644
index 0f31f99c6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello2.mo
deleted file mode 100644
index b2622f9ef..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 870bd9a21..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 70aeec7d3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index e5fda1ef0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 779c9b675..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index db76c3ad1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sr/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello.mo
deleted file mode 100644
index 47458db3e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello2.mo
deleted file mode 100644
index f24f1c8b5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 55b8be9a1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index a28108f06..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 7f9a11ac4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index 8a723259b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index e93a30484..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/sv/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello.mo
deleted file mode 100644
index be2301a23..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 56b675934..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 45741f1b9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index a7b8ec937..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 86e22f517..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index f0c541f00..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 30d1a0964..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/ua/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello.mo
deleted file mode 100644
index 4ca5b24c8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello2.mo
deleted file mode 100644
index 262062224..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 20d2ce316..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 9dadca326..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 0dfb87cb8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index c055e8739..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 8c1d275b6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/vi/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello.mo
deleted file mode 100644
index ed2c491a1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello2.mo
deleted file mode 100644
index f6fd7e8b0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index ebb1a1d86..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index 6a494c690..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 405af5390..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index d9723d8d8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 50b6a42ac..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello.mo
deleted file mode 100644
index 4a9a4c780..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello2.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello2.mo
deleted file mode 100644
index dc40bf3eb..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_glade2.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_glade2.mo
deleted file mode 100644
index 55ec19a66..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_glade2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_gtk.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_gtk.mo
deleted file mode 100644
index e2fca11d4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_gtk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_noop.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_noop.mo
deleted file mode 100644
index 5b2687258..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_noop.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_plural.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_plural.mo
deleted file mode 100644
index ae8fa791b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_tk.mo b/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_tk.mo
deleted file mode 100644
index 9c8bcc977..000000000
--- a/vendor/gems/gettext-2.1.0/samples/locale/zh_TW/LC_MESSAGES/hello_tk.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/samples/makemo.rb b/vendor/gems/gettext-2.1.0/samples/makemo.rb
deleted file mode 100755
index c470d16ed..000000000
--- a/vendor/gems/gettext-2.1.0/samples/makemo.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'rubygems'
-require 'gettext/tools'
-
-GetText.create_mofiles(:mo_root => "locale")
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bg/hello.po b/vendor/gems/gettext-2.1.0/samples/po/bg/hello.po
deleted file mode 100644
index 10dd92b3e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bg/hello.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Гепи копеле\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bg/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/bg/hello2.po
deleted file mode 100644
index ba96043e1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bg/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "копеле"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Едно е %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Гепи %{копеле}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/bg/hello_glade2.po
deleted file mode 100644
index f0b8bf17b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "прозорец1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "първи ред\nвтори ред\nтрети ред"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Гепи копеле>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/bg/hello_gtk.po
deleted file mode 100644
index e53d22f47..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "Гепи, gtk копеле"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/bg/hello_noop.po
deleted file mode 100644
index ce03dcba1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Гепи копеле"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Гепи копеле2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/bg/hello_plural.po
deleted file mode 100644
index 6a6e1cc1a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_plural.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Това е ябълка.\n"
-msgstr[1] "Това са %{num} ябълки.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/bg/hello_tk.po
deleted file mode 100644
index 57779ed43..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bg/hello_tk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Georgi Stoimenov <georgistoimenov@abv.bg>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Sava Chankov <sava.chankov@gmail.com>\n"
-"Language-Team: Bulgarian <ruby-on-rails-bulgaria@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "Гепи, tk копеле"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bs/hello.po b/vendor/gems/gettext-2.1.0/samples/po/bs/hello.po
deleted file mode 100644
index 88483040b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bs/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# translation of hello.po to Bosnian
-# Hello World -- a sample for Ruby-GetText-Package
-# Copyright (C) 2001-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2007-03-20 20:23+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Zdravo Svijetu\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bs/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/bs/hello2.po
deleted file mode 100644
index 42b9b836d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bs/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# translation of hello2.po to Bosnian
-# Hello World 2 -- sample for ruby-gettext-package
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello2\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2007-03-20 20:15+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Svijetu"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Jedan je %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Zdravo %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/bs/hello_glade2.po
deleted file mode 100644
index e4b22679a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# translation of hello_glade2.po to Bosnian
-# hello_glade2.po - sample for Ruby/Libglade2
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_glade2\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2007-03-20 20:18+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "prozor1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "prvi red\ndrugi red\ntreći red"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Zdravo svijetu>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/bs/hello_gtk.po
deleted file mode 100644
index df835844b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# translation of hello_gtk.po to Bosnian
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-# Copyright (C) 2001-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_gtk\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2007-03-20 20:18+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "zdravo, gtk svijetu"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/bs/hello_noop.po
deleted file mode 100644
index f272427ba..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# translation of hello_noop.po to Bosnian
-# Hello World noop -- sample for ruby-gettext-package
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_noop\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2007-03-20 20:20+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Zdravo Svijetu"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Zdravo Svijetu2"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/bs/hello_plural.po
deleted file mode 100644
index 34c4a81a6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_plural.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# translation of hello_plural.po to Bosnian
-# hello_plural.po - sample for plural messages
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_plural\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2007-03-20 20:22+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Postoji jabuka.\n"
-msgstr[1] "Postoje %{num} jabuke.\n"
-msgstr[2] "Postoji %{num} jabuka.\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/bs/hello_tk.po
deleted file mode 100644
index fef102068..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/bs/hello_tk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# translation of hello_tk.po to Bosnian
-# hello_tk.po - sample for Ruby/TK
-# Copyright (C) 2004 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_tk\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2007-03-20 20:24+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Bosnian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "zdravo, tk svijetu"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ca/hello.po b/vendor/gems/gettext-2.1.0/samples/po/ca/hello.po
deleted file mode 100644
index c31689d36..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ca/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Hola Món\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ca/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/ca/hello2.po
deleted file mode 100644
index 699cdfe92..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ca/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Món"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Un és %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Hola %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/ca/hello_glade2.po
deleted file mode 100644
index 8332e7ca4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "Finestra1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "Primera línia\nsegona línia\ntercera línia"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Hola Món>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/ca/hello_gtk.po
deleted file mode 100644
index f47fea4f9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "hola, món gtk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/ca/hello_noop.po
deleted file mode 100644
index 4df4ef624..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Hola Món"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Hola Món2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/ca/hello_plural.po
deleted file mode 100644
index 88f12530e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_plural.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Hi ha %{num} poma.\n"
-msgstr[1] "Hi ha %{num} pomes.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/ca/hello_tk.po
deleted file mode 100644
index 79f3afd6a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ca/hello_tk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ramon Salvadó <rsalvado at gnuine.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2005-12-20 10:33+0900E\n"
-"Last-Translator: Ramon Salvadó <rsalvado at gnuine.com>\n"
-"Language-Team: Catalan\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "hola, món tk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/cs/hello.po b/vendor/gems/gettext-2.1.0/samples/po/cs/hello.po
deleted file mode 100644
index 7f5fe7a2c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/cs/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-17 21:03+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Ahoj Světe\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/cs/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/cs/hello2.po
deleted file mode 100644
index 995975393..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/cs/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-12-17 21:03+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Svět"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Jedna je %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Ahoj %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/cs/hello_glade2.po
deleted file mode 100644
index 1e49cdfed..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_glade2.po
+++ /dev/null
@@ -1,37 +0,0 @@
-# Hello World Glade2 -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2005 Masao Mutoh
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2005-12-17 21:18+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "okno1"
-
-#: hello_glade2.glade:29
-msgid ""
-"first line\n"
-"second line\n"
-"third line"
-msgstr ""
-"první řádek\n"
-"druhý řádek\n"
-"třetí řádek"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Ahoj světe>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/cs/hello_gtk.po
deleted file mode 100644
index a485f9e53..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2005-12-17 21:19+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "ahoj, světe gtk"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/cs/hello_noop.po
deleted file mode 100644
index d4a556a6f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2005-12-17 21:03+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Ahoj Světe"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Ahoj Světe2"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/cs/hello_plural.po
deleted file mode 100644
index bbfcac525..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_plural.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# Hello World plural -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2005-12-17 21:08+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Jedno jablko.\n"
-msgstr[1] "%{num} jablka.\n"
-msgstr[2] "%{num} jablek.\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/cs/hello_tk.po
deleted file mode 100644
index 601c88b6f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/cs/hello_tk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# Karel Miarka <kajism@yahoo.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2005-12-17 21:20+0100\n"
-"Last-Translator: Karel Miarka <kajism@yahoo.com>\n"
-"Language-Team: Czech\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Czech\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "ahoj, světe tk"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/de/hello.po b/vendor/gems/gettext-2.1.0/samples/po/de/hello.po
deleted file mode 100644
index 1feb3eee5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/de/hello.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: Detlef Reichl <detlef!reichl()gmx!org\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Hallo Welt\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/de/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/de/hello2.po
deleted file mode 100644
index 709f52249..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/de/hello2.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: Detlef Reichl <detlef!reichl()gmx!org\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Welt"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Eins ist %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Hallo %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/de/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/de/hello_glade2.po
deleted file mode 100644
index 34994367b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/de/hello_glade2.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: Detlef Reichl <detlef!reichl()gmx!org\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "Fenster1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "erste Zeile\nzweite Zeile\ndritte Zeile"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Hallo Welt>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/de/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/de/hello_gtk.po
deleted file mode 100644
index 042b9efa3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/de/hello_gtk.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: Detlef Reichl <detlef!reichl()gmx!org\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "Hallo, gtk Welt"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/de/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/de/hello_noop.po
deleted file mode 100644
index b7114f122..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/de/hello_noop.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: Detlef Reichl <detlef!reichl()gmx!org\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Hallo Welt"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Hallo Welt2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/de/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/de/hello_plural.po
deleted file mode 100644
index 0dc06f7de..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/de/hello_plural.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2005-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Detlef Reichl, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: Detlef Reichl <detlef!reichl()gmx!org\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Da ist ein Apfel.\n"
-msgstr[1] "Da sind %{num} Äpfel.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/de/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/de/hello_tk.po
deleted file mode 100644
index 59128cd09..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/de/hello_tk.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2005-04-24 17:10+0100\n"
-"Last-Translator: Detlef Reichl <detlef!reichl()gmx!org\n"
-"Language-Team: Detlef Reichl <detlef!reichl()gmx!org\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "Hallo, tk Welt"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/el/hello.po b/vendor/gems/gettext-2.1.0/samples/po/el/hello.po
deleted file mode 100644
index a7a191b2c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/el/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh <mutomasa at gmail.com>
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Γειά σου κόσμε\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/el/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/el/hello2.po
deleted file mode 100644
index 181ad0465..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/el/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Κόσμος"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Ένα είναι %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Γειά %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/el/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/el/hello_glade2.po
deleted file mode 100644
index bdcfee4f7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/el/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "παράθυρο1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "πρώτη\nγραμμήδεύτερη\nγραμμή\nτρίτη γραμμή"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Γειά σου Κόσμε>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/el/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/el/hello_gtk.po
deleted file mode 100644
index 1922d1f1b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/el/hello_gtk.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "Γειά σου κόσμε του gtk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/el/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/el/hello_noop.po
deleted file mode 100644
index 9fb96595d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/el/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Γειά σου κόσμε"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Γειά σου κόσμε 2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/el/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/el/hello_plural.po
deleted file mode 100644
index 824d373c9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/el/hello_plural.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Υπάρχει ένα μήλο.\n"
-msgstr[1] "Υπάρχουν %{num} μήλα\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/el/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/el/hello_tk.po
deleted file mode 100644
index 2ac9ae53e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/el/hello_tk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# damphyr <damphyr@gmx.net>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2006-01-06 19:50+0100\n"
-"Last-Translator: damphyr <damphyr@gmx.net>\n"
-"Language-Team: Greek\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "Γειά σου κόσμε του tk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/eo/hello.po b/vendor/gems/gettext-2.1.0/samples/po/eo/hello.po
deleted file mode 100644
index 66748e51f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/eo/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Saluton!\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/eo/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/eo/hello2.po
deleted file mode 100644
index 9bf93612c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/eo/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "homoj"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Unu estas %{num}.\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Saluton, %{world}!\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/eo/hello_glade2.po
deleted file mode 100644
index a3a84e777..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_glade2.po
+++ /dev/null
@@ -1,32 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "fenestro1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "unua linio\ndua linio\ntria linio"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Saluton!>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/eo/hello_gtk.po
deleted file mode 100644
index 475021206..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "GTK-an saluton!"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/eo/hello_noop.po
deleted file mode 100644
index 2a43dc392..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Saluton!"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Saluton plifoje!"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/eo/hello_plural.po
deleted file mode 100644
index 3b8bd872b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_plural.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Jen pomo.\n"
-msgstr[1] "Jen %{num} pomoj.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/eo/hello_tk.po
deleted file mode 100644
index 18b3a7e79..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/eo/hello_tk.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Malte Milatz <malte@gmx-topmail.de>, 2006.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: Malte Milatz <malte@gmx-topmail.de>\n"
-"Language-Team: Esperanto\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "TK-an saluton!"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/es/hello.po b/vendor/gems/gettext-2.1.0/samples/po/es/hello.po
deleted file mode 100644
index 78025f3fd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/es/hello.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# hello.po - sample for GetText._()
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-# David Espada <davinci@escomposlinux.org>, 2004.
-#
-
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2004-11-5 10:11:00+0900\n"
-"PO-Revision-Date: 2004-11-05 10:32+0100\n"
-"Last-Translator: David Espada <davinci@escomposlinux.org>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Hola mundo\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/es/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/es/hello2.po
deleted file mode 100644
index f29e4cb0e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/es/hello2.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# hello2.po - sample for GetText._()
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-# David Espada <davinci@escomposlinux.org>, 2004.
-
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2004-11-05 10:11:00+0900\n"
-"PO-Revision-Date: 2004-11-05 10:32+0100\n"
-"Last-Translator: David Espada <davinci@escomposlinux.org>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Mundo"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Uno es %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Hola %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/es/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/es/hello_glade2.po
deleted file mode 100644
index c1fc5f747..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/es/hello_glade2.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# David Espada <davinci@escomposlinux.org>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-11-05 10:15+0900\n"
-"PO-Revision-Date: 2004-11-05 10:32+0100\n"
-"Last-Translator: David Espada <davinci@escomposlinux.org\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "ventana1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "primera línea\nsegunda línea\ntercera línea"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Hola mundo>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/es/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/es/hello_gtk.po
deleted file mode 100644
index 91b22e29c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/es/hello_gtk.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# hell_gtk.po - sample for Ruby/GTK
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-# David Espada <davinci@escomposlinux.org>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-11-05 10:15:00+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: David Espada <davinci@escomposlinux.org>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "hola, mundo gtk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/es/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/es/hello_noop.po
deleted file mode 100644
index 40156790c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/es/hello_noop.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_noop.po - sample for GetText.N_().
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-# David Espada <davinci@escomposlinux.org>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-11-05 10:11:00+0900\n"
-"PO-Revision-Date: 2004-11-05 10:32+0100\n"
-"Last-Translator: David Espada <davinci@escomposlinux.org\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Hola Mundo"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Hola Mundo2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/es/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/es/hello_plural.po
deleted file mode 100644
index 3ffb69d0e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/es/hello_plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_plural.po - sample for GetText.n_().
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# David Espada <davinci at escomposlinux.org>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2004-11-05 10:11:00+0900\n"
-"PO-Revision-Date: 2004-11-05 10:32+0100\n"
-"Last-Translator: David Espada <davinci at escomposlinux.org>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Hay una manzana.\n"
-msgstr[1] "Hay %{num} manzanas.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/es/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/es/hello_tk.po
deleted file mode 100644
index f89f5215a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/es/hello_tk.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# David Espada <davinci@escomposlinux.org>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: David Espada <davinci@escomposlinux.org>\n"
-"Language-Team: Spanish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "hola, mundo tk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/fr/hello.po b/vendor/gems/gettext-2.1.0/samples/po/fr/hello.po
deleted file mode 100644
index ea93f017b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/fr/hello.po
+++ /dev/null
@@ -1,18 +0,0 @@
-# hello.po - sample for GetText._()
-#
-# Copyright (C) 2004 Laurent Sansonetti <lrz@rubymonks.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.8.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2004-11-04 09:22+0100\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Bonjour Monde\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/fr/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/fr/hello2.po
deleted file mode 100644
index 61a56fca3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/fr/hello2.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello2.po - sample for GetText._()
-#
-# Copyright (C) 2004 Laurent Sansonetti <lrz@rubymonks.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.8.0\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2004-11-04 09:22+0100\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Monde"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Le premier est %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Bonjour %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/fr/hello_glade2.po
deleted file mode 100644
index 841185a68..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_glade2.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2004 Laurent Sansonetti <lrz@rubymonks.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2004-11-04 09:22+0100\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "fenêtre1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "première ligne\ndeuxième ligne\ntroisième ligne"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Bonjour monde>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/fr/hello_gtk.po
deleted file mode 100644
index 2e44ef03d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_gtk.po
+++ /dev/null
@@ -1,18 +0,0 @@
-# hello_gtk.po - sample for Ruby/GTK
-#
-# Copyright (C) 2004 Laurent Sansonetti <lrz@rubymonks.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2004-11-04 09:22+0100\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "bonjour, monde GTK"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/fr/hello_noop.po
deleted file mode 100644
index 8750f1cac..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_noop.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# hello_noop.po - sample for GetText.N_()
-#
-# Copyright (C) 2004 Laurent Sansonetti <lrz@rubymonks.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2004-11-04 09:22+0100\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Bonjour Monde"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Bonjour Monde2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/fr/hello_plural.po
deleted file mode 100644
index 773349a65..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_plural.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# hello_plural.po - sample for GetText.n_()
-#
-# Copyright (C) 2004 Laurent Sansonetti <lrz@rubymonks.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2004-11-04 09:22+0100\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Il y a une pomme.\n"
-msgstr[1] "Il y a %{num} pommes.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/fr/hello_tk.po
deleted file mode 100644
index ead774a5e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/fr/hello_tk.po
+++ /dev/null
@@ -1,18 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Laurent Sansonetti <lrz@rubymonks.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2002-02-14 00:52:38+0900\n"
-"POT-Creation-Date: 2002-02-14 00:54:43+0900\n"
-"Last-Translator: Laurent Sansonetti\n"
-"Language-Team: French\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "bonjour, monde TK"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hello.pot b/vendor/gems/gettext-2.1.0/samples/po/hello.pot
deleted file mode 100644
index 67da22dc4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hello.pot
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hello2.pot b/vendor/gems/gettext-2.1.0/samples/po/hello2.pot
deleted file mode 100644
index 32fcbe513..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hello2.pot
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr ""
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr ""
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hello_glade2.pot b/vendor/gems/gettext-2.1.0/samples/po/hello_glade2.pot
deleted file mode 100644
index 052f8ef8b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hello_glade2.pot
+++ /dev/null
@@ -1,32 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr ""
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr ""
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hello_gtk.pot b/vendor/gems/gettext-2.1.0/samples/po/hello_gtk.pot
deleted file mode 100644
index 861213a91..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hello_gtk.pot
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hello_noop.pot b/vendor/gems/gettext-2.1.0/samples/po/hello_noop.pot
deleted file mode 100644
index 3d560e578..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hello_noop.pot
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr ""
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hello_plural.pot b/vendor/gems/gettext-2.1.0/samples/po/hello_plural.pot
deleted file mode 100644
index e4f72d890..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hello_plural.pot
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hello_tk.pot b/vendor/gems/gettext-2.1.0/samples/po/hello_tk.pot
deleted file mode 100644
index 18f7f5242..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hello_tk.pot
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hr/hello.po b/vendor/gems/gettext-2.1.0/samples/po/hr/hello.po
deleted file mode 100644
index 7c0b29894..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hr/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# translation of hello.po to Croatian
-# Hello World -- a sample for Ruby-GetText-Package
-# Copyright (C) 2001-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2007-03-20 20:23+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Zdravo Svijetu\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hr/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/hr/hello2.po
deleted file mode 100644
index 684009427..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hr/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# translation of hello2.po to Croatian
-# Hello World 2 -- sample for ruby-gettext-package
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello2\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2007-03-20 20:15+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Svijetu"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Jedan je %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Zdravo %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/hr/hello_glade2.po
deleted file mode 100644
index b63d3eff9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# translation of hello_glade2.po to Croatian
-# hello_glade2.po - sample for Ruby/Libglade2
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_glade2\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2007-03-20 20:18+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "prozor1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "prvi red\ndrugi red\ntreći red"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Zdravo svijetu>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/hr/hello_gtk.po
deleted file mode 100644
index 3fb55ed5a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# translation of hello_gtk.po to Croatian
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-# Copyright (C) 2001-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_gtk\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2007-03-20 20:18+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "zdravo, gtk svijetu"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/hr/hello_noop.po
deleted file mode 100644
index 54155ea93..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# translation of hello_noop.po to Croatian
-# Hello World noop -- sample for ruby-gettext-package
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_noop\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2007-03-20 20:20+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Zdravo Svijetu"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Zdravo Svijetu2"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/hr/hello_plural.po
deleted file mode 100644
index 9a651a5e8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_plural.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# translation of hello_plural.po to Croatian
-# hello_plural.po - sample for plural messages
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_plural\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2007-03-20 20:22+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Postoji jabuka.\n"
-msgstr[1] "Postoje %{num} jabuke.\n"
-msgstr[2] "Postoji %{num} jabuka.\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/hr/hello_tk.po
deleted file mode 100644
index 9196c0ef1..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hr/hello_tk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# translation of hello_tk.po to Croatian
-# hello_tk.po - sample for Ruby/TK
-# Copyright (C) 2004 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Sanjin Sehic <saserr@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: hello_tk\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2007-03-20 20:24+0100\n"
-"Last-Translator: Sanjin Sehic <saserr@gmail.com>\n"
-"Language-Team: Croatian <saserr@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "zdravo, tk svijetu"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hu/hello.po b/vendor/gems/gettext-2.1.0/samples/po/hu/hello.po
deleted file mode 100644
index 4eaf6f90f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hu/hello.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Hello világ\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hu/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/hu/hello2.po
deleted file mode 100644
index 5725aeea7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hu/hello2.po
+++ /dev/null
@@ -1,30 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tams Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tams Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Vilg"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Egy az %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Hello %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/hu/hello_glade2.po
deleted file mode 100644
index f03ed0fa2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "ablak1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "első sor\nmásodik sor\nharmadik sor"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Hello világ>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/hu/hello_gtk.po
deleted file mode 100644
index 16108ee87..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_gtk.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "hello, gtk világ"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/hu/hello_noop.po
deleted file mode 100644
index 6a71dbc81..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_noop.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Hello világ"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Hello világ 2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/hu/hello_plural.po
deleted file mode 100644
index b03a48b67..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_plural.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Ez egy alma.\n"
-msgstr[1] "Ez pedig %{num} alma.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/hu/hello_tk.po
deleted file mode 100644
index a41b17d0d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/hu/hello_tk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Tamás Tompa <tompata at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2008-01-15 00:00+0900\n"
-"Last-Translator: Tamás Tompa <tompata at gmail.com>\n"
-"Language-Team: Hungarian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "hello, tk világ"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/it/hello.po b/vendor/gems/gettext-2.1.0/samples/po/it/hello.po
deleted file mode 100644
index f00f77c81..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/it/hello.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-04-24 15:27+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Ciao a tutti\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/it/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/it/hello2.po
deleted file mode 100644
index 2e773a0f7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/it/hello2.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-04-24 15:27+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "tutti"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Uno è %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Ciao a %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/it/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/it/hello_glade2.po
deleted file mode 100644
index d4d6923aa..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/it/hello_glade2.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# hello_glade2.po - sample for GetText.n_().
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-04-24 15:27+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "finestra1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "prima linea\nseconda linea\nterza linea"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Ciao a tutti>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/it/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/it/hello_gtk.po
deleted file mode 100644
index 107da59b4..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/it/hello_gtk.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-04-24 15:27+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "ciao, mondo gtk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/it/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/it/hello_noop.po
deleted file mode 100644
index db9e97d71..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/it/hello_noop.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-04-24 15:27+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Ciao a tutti"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Ciao a tutti2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/it/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/it/hello_plural.po
deleted file mode 100644
index eab3bb8aa..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/it/hello_plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_plural.po - sample for GetText.n_().
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 1.6.0\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-04-24 15:27+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "C'è una mela.\n"
-msgstr[1] "Ci sono %{num} mele.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/it/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/it/hello_tk.po
deleted file mode 100644
index 737850b7e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/it/hello_tk.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# Gabriele Renzi <surrender_it at yahoo.it>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-04-24 15:27+0100\n"
-"Last-Translator: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"Language-Team: Gabriele Renzi <surrender_it at yahoo.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "ciao, mondo tk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ja/hello.po b/vendor/gems/gettext-2.1.0/samples/po/ja/hello.po
deleted file mode 100644
index db3d2a48b..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ja/hello.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# hello.po - sample for GetText._()
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2001-12-24 01:30:54+0900\n"
-"Last-Translator: Masao Mutoh\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "こんにちわ、世界\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ja/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/ja/hello2.po
deleted file mode 100644
index 5048aa3df..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ja/hello2.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# hello2.po - sample for GetText._()
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2002-01-01 03:05:08+0900\n"
-"Last-Translator: Masao Mutoh\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=euc-jp\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-
-#: hello2.rb:9
-msgid "World"
-msgstr ""
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr " %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr " %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/ja/hello_glade2.po
deleted file mode 100644
index 831514ff0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_glade2.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2004-07-04 00:24+0900\n"
-"Last-Translator: Masao Mutoh\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "こんにちわ世界 Ruby/Libglade2 テスト"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "1行目\n2行目\n3行目"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<こんにちわ世界>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/ja/hello_gtk.po
deleted file mode 100644
index f2b99397e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_gtk.po
+++ /dev/null
@@ -1,19 +0,0 @@
-# hello_gtk.po - sample for Ruby/GTK
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2001-12-24 01:52:10+0900\n"
-"Last-Translator: Masao Mutoh\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=euc-jp\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "ˤGTK"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/ja/hello_noop.po
deleted file mode 100644
index c1f1f7589..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_noop.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_noop.po - sample for GetText.N_()
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2002-02-21 22:50:00+0900\n"
-"Last-Translator: Masao Mutoh\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=euc-jp\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "ˤϡ"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "ˤϡ2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/ja/hello_plural.po
deleted file mode 100644
index 6f281fe10..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_plural.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# hello_plural.po - sample for GetText.n_()
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2002-10-21 19:32:15+0900\n"
-"PO-Revision-Date: 2002-10-21 19:32:15+0900\n"
-"Last-Translator: Masao Mutoh\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=Shift_JIS\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "񂲂܂B\n"
-msgstr[1] "񂲂%{num}‚܂B\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/ja/hello_tk.po
deleted file mode 100644
index fb2342bb2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ja/hello_tk.po
+++ /dev/null
@@ -1,19 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2002-02-14 00:52:38+0900\n"
-"POT-Creation-Date: 2002-02-14 00:54:43+0900\n"
-"Last-Translator: Masao Mutoh\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=euc-jp\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "ˤTK"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ko/hello.po b/vendor/gems/gettext-2.1.0/samples/po/ko/hello.po
deleted file mode 100644
index f0288b599..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ko/hello.po
+++ /dev/null
@@ -1,18 +0,0 @@
-# Hello World -- a sample for ruby-gettext package.
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.0.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "안녕 세상\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ko/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/ko/hello2.po
deleted file mode 100644
index 3a61accf6..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ko/hello2.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# Hello World 2 -- a sample for ruby-gettext package.
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.0.0\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "세상"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "하나는 %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "안녕 %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/ko/hello_glade2.po
deleted file mode 100644
index 6e1ab256a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_glade2.po
+++ /dev/null
@@ -1,29 +0,0 @@
-# Hello World for Ruby/Glade2 -- a sample for ruby-gettext package.
-#
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.0.0\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "윈도우1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "첫번째 줄\n두번째 줄\n세번째 줄"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<안녕 세상>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/ko/hello_gtk.po
deleted file mode 100644
index e910edf29..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_gtk.po
+++ /dev/null
@@ -1,18 +0,0 @@
-# Hello World for Ruby/GTK -- a sample for ruby-gettext package.
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.0.0\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "안녕, gtk 세상"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/ko/hello_noop.po
deleted file mode 100644
index 468ba1d9d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_noop.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Hello World noop -- a sample for ruby-gettext package.
-#
-# Copyright (C) Masao Mutoh <mutomasa at gmail.com>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.0.0\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "안녕 세상"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "안녕 세상 2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/ko/hello_plural.po
deleted file mode 100644
index ba3dc61ed..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_plural.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# Hello World Pluralization -- a sample for ruby-gettext package.
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Gyoung-Yoon Noh, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad at gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "사과 %{num} 개가 있습니다.\n"
-msgstr[1] "사과 %{num} 개가 있습니다.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/ko/hello_tk.po
deleted file mode 100644
index b6d2213c0..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ko/hello_tk.po
+++ /dev/null
@@ -1,19 +0,0 @@
-# Hello World for Ruby/Tk -- a sample for ruby-gettext package.
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2005-12-23 02:00+0900\n"
-"Last-Translator: Gyoung-Yoon Noh <nohmad@gmail.com>\n"
-"Language-Team: Korean\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "안녕, tk 세상"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/lv/hello.po b/vendor/gems/gettext-2.1.0/samples/po/lv/hello.po
deleted file mode 100644
index 728d6a0d2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/lv/hello.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2008-07-22 08:59+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Sveicināta pasaule\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/lv/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/lv/hello2.po
deleted file mode 100644
index 570fade65..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/lv/hello2.po
+++ /dev/null
@@ -1,32 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2008-07-22 09:04+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Pasaule"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Viens ir %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Sveicināta %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/lv/hello_glade2.po
deleted file mode 100644
index 8b30b54ec..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_glade2.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2008-07-22 09:04+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "logs1"
-
-#: hello_glade2.glade:29
-msgid ""
-"first line\n"
-"second line\n"
-"third line"
-msgstr ""
-"pirmā rinda\n"
-"otrā rinda\n"
-"trešā rinda"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Sveicināta pasaule>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/lv/hello_gtk.po
deleted file mode 100644
index 619eeab2e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_gtk.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2008-07-22 08:56+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "Sveicināta, gtk pasaule"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/lv/hello_noop.po
deleted file mode 100644
index 41440b795..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_noop.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2008-07-22 09:01+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Sveicināta pasaule"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Sveicināta pasaule2"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/lv/hello_plural.po
deleted file mode 100644
index c07f0ea2e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_plural.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2008-07-22 08:58+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Šeit ir viens ābols.\n"
-msgstr[1] "Šeit ir %{num} āboli.\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/lv/hello_tk.po
deleted file mode 100644
index bf319ee80..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/lv/hello_tk.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Aivars Akots, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2008-07-22 08:54+0200\n"
-"Last-Translator: Aivars Akots <aivars.akots@gmail.com>\n"
-"Language-Team: Latvian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "Sveicināta, tk pasaule"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nb/hello.po b/vendor/gems/gettext-2.1.0/samples/po/nb/hello.po
deleted file mode 100644
index 6f0ba0961..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nb/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-# Copyright (C) 2001-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2008-07-14 16:23+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Smil til verden\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nb/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/nb/hello2.po
deleted file mode 100644
index dd857b30c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nb/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2008-07-14 16:24+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Verden"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "En er %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Smil til %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/nb/hello_glade2.po
deleted file mode 100644
index 285cdcebd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-# Copyright (C) 2005,2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2008-07-14 16:29+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "vindu1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "første linje\nandrelinje\ntredje linje"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Smil til verden>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/nb/hello_gtk.po
deleted file mode 100644
index c50e2c02a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-# Copyright (C) 2001-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2008-07-14 16:29+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "smil til gtk-verden"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/nb/hello_noop.po
deleted file mode 100644
index 20b3e103e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2008-07-14 16:30+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Smil til verden"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Smil til verden 2"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/nb/hello_plural.po
deleted file mode 100644
index 0521cc1c5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_plural.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_plural.po - sample for plural messages
-# Copyright (C) 2002-2006 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2008-07-14 16:31+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Der er et eple.\n"
-msgstr[1] "Der er %{num} epler.\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/nb/hello_tk.po
deleted file mode 100644
index 0b5551337..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nb/hello_tk.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-# Copyright (C) 2004 Masao Mutoh
-# This file is distributed under the same license as the Ruby-GetText-Package.
-# Runar Ingebrigtsen <runar@mopo.no>, 2008.
-# , fuzzy
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2008-07-14 16:31+0200\n"
-"Last-Translator: Runar Ingebrigtsen <runar@mopo.no>\n"
-"Language-Team: Norwegian/Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "smil til tk-verden"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nl/hello.po b/vendor/gems/gettext-2.1.0/samples/po/nl/hello.po
deleted file mode 100644
index fa53784d2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nl/hello.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2005 Masao Mutoh <mutomasa at gmail.com>
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 1.1.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Hallo wereld\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nl/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/nl/hello2.po
deleted file mode 100644
index fe606987f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nl/hello2.po
+++ /dev/null
@@ -1,32 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2005 Masao Mutoh <mutomasa at gmail.com>
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 1.1.0\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2005-12-19 21:39+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby-gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Wereld"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Een is %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Hallo %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/nl/hello_glade2.po
deleted file mode 100644
index bf0136e3f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005 Masao Mutoh <mutomasa at gmail.com>
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 1.1.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "venster1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "eerste regel\ntweede regel\nderde regel"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Hallo wereld>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/nl/hello_gtk.po
deleted file mode 100644
index 0aa2e5164..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_gtk.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2005 Masao Mutoh <mutomasa at gmail.com>
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "hallo, gtk-wereld"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/nl/hello_noop.po
deleted file mode 100644
index e0798325e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_noop.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2005 Masao Mutoh <mutomasa at gmail.com>
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 1.1.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Hallo wereld"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Hallo wereld2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/nl/hello_plural.po
deleted file mode 100644
index 5089780aa..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_plural.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-#
-# Copyright (C) 2005,2006 Masao Mutoh <mutomasa at gmail.com>
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext at jonkers.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 1.6.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext at jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Er is een appel.\n"
-msgstr[1] "Er zijn %{num} appels.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/nl/hello_tk.po
deleted file mode 100644
index 08a10d984..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/nl/hello_tk.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Menno Jonkers <ruby-gettext@jonkers.com>, 2005.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext-package 0.0.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2005-12-19 21:44+0100\n"
-"Last-Translator: Menno Jonkers <ruby-gettext@jonkers.com>\n"
-"Language-Team: Dutch <ruby_gettext@jonkers.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "hallo, tk-wereld"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello.po b/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello.po
deleted file mode 100644
index d2a2ebc8f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# hello.po - sample for GetText._()
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2005-12-17 14:56+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Olá, mundo\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello2.po
deleted file mode 100644
index cb8005a31..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello2.po
+++ /dev/null
@@ -1,29 +0,0 @@
-# hello2.po - sample for GetText._()
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2005-12-17 14:56+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Mundo"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Um é %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Olá, %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_glade2.po
deleted file mode 100644
index ae080f067..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_glade2.po
+++ /dev/null
@@ -1,29 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2005-12-17 14:56+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "Janela1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "primeira linha\nsegunda linha\nterceira linha"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Olá, mundo>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_gtk.po
deleted file mode 100644
index b27aa75e8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_gtk.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# hellgtk.po - sample for Ruby/GTK
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2005-12-17 14:56+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "Olá, mundo de gtk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_noop.po
deleted file mode 100644
index c4183faca..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_noop.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# hello_noop.po - sample for GetText.N_().
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2005-12-17 14:56+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Olá, mundo"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Olá, mundo2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_plural.po
deleted file mode 100644
index 01bb0b996..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_plural.po - sample for GetText.n_().
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# Joao Pedrosa <joaopedrosa at gmail.com>, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2005-12-17 14:56+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa at gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Existe uma maçã.\n"
-msgstr[1] "Existem %{num} maçãs.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_tk.po
deleted file mode 100644
index b8dff9495..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/pt_BR/hello_tk.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# helltk.po - sample for Ruby/GTK
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-# Joao Pedrosa <joaopedrosa@gmail.com>, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.0\n"
-"POT-Creation-Date: 2005-12-17 14:56+0900\n"
-"PO-Revision-Date: 2005-12-17 10:12-0300\n"
-"Last-Translator: Joao Pedrosa <joaopedrosa@gmail.com>\n"
-"Language-Team: Portuguese(Brazil)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../hellogtk.rb:14
-msgid "hello, gtk world"
-msgstr "Olá, mundo de gtk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ru/hello.po b/vendor/gems/gettext-2.1.0/samples/po/ru/hello.po
deleted file mode 100644
index 5ec62e296..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ru/hello.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# translation of hello.po to Russian
-# Hello World -- a sample for Ruby-GetText-Package
-# Copyright (C) 2001-2006 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2006-04-17 20:44+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Здравствуй, мир\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ru/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/ru/hello2.po
deleted file mode 100644
index 32d623d0e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ru/hello2.po
+++ /dev/null
@@ -1,30 +0,0 @@
-# translation of hello2.po to Russian
-# Hello World 2 -- sample for ruby-gettext-package
-# Copyright (C) 2002-2006 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2006-04-17 20:15+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "мир"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Один пишется как %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Здравствуй %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/ru/hello_glade2.po
deleted file mode 100644
index 8bb4fca05..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_glade2.po
+++ /dev/null
@@ -1,30 +0,0 @@
-# translation of hello_glade2.po to Russian
-# hello_glade2.po - sample for Ruby/Libglade2
-# Copyright (C) 2005,2006 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2006-04-17 20:27+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "окно1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "первая строка\nвторая строка\nтретья строка"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Здравствуй мир>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/ru/hello_gtk.po
deleted file mode 100644
index d0e034091..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_gtk.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# translation of hello_gtk.po to Russian
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-# Copyright (C) 2001-2006 Masao Mutoh <mutomasa at gmail.com>#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2006-04-17 20:28+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "Здравствуй, мир gtk"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/ru/hello_noop.po
deleted file mode 100644
index 96594b7ac..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_noop.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# translation of hello_noop.po to Russian
-# Hello World noop -- sample for ruby-gettext-package
-# Copyright (C) 2002-2006 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2006-04-17 20:43+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Здравствуй, мир"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Здравствуй, мир2"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/ru/hello_plural.po
deleted file mode 100644
index bfeac89db..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_plural.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# translation of hello_plural.po to Russian
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2006-04-18 19:27+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y at gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian at lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Вот яблоко.\n"
-msgstr[1] "Вот %{num} яблок.\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/ru/hello_tk.po
deleted file mode 100644
index 5ee57b209..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ru/hello_tk.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# translation of hello_tk.po to Russian
-# hello_tk.po - sample for Ruby/TK
-# Copyright (C) 2004 Masao Mutoh#
-# This file is distributed under the same license as the Ruby-GetText-Package.#
-# Yuri Kozlov <kozlov.y@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2006-04-17 20:45+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "Здравствуй, мир tk"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sr/hello.po b/vendor/gems/gettext-2.1.0/samples/po/sr/hello.po
deleted file mode 100644
index 70d02f44c..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sr/hello.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2008-06-05 23:09+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Здраво свете\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sr/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/sr/hello2.po
deleted file mode 100644
index 5dce510c8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sr/hello2.po
+++ /dev/null
@@ -1,30 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2008-06-05 23:04+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "свет"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Један је %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Здраво %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/sr/hello_glade2.po
deleted file mode 100644
index 08b1fb2a2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_glade2.po
+++ /dev/null
@@ -1,32 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2008-06-05 23:07+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "прозор1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "прва линија\nдруга линија\nтрећа линија"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Здраво свете>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/sr/hello_gtk.po
deleted file mode 100644
index e41c71a1f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_gtk.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2008-06-05 23:08+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "здраво, gtk свете"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/sr/hello_noop.po
deleted file mode 100644
index 6c1c89160..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_noop.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2008-06-05 23:08+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Здраво свете"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Здраво свете2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/sr/hello_plural.po
deleted file mode 100644
index 0966461ec..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_plural.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2008-06-05 23:09+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Има једна јабука.\n"
-msgstr[1] "Има %{num} јабука.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/sr/hello_tk.po
deleted file mode 100644
index 0f2db4ccc..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sr/hello_tk.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Slobodan Paunović <slobodan.paunovic at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2008-06-05 23:09+0200\n"
-"Last-Translator: Slobodan Paunović <slobodan.paunovic at gmail.com>\n"
-"Language-Team: Serbian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "здраво, tk свете"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sv/hello.po b/vendor/gems/gettext-2.1.0/samples/po/sv/hello.po
deleted file mode 100644
index 7411c2d7d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sv/hello.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# hello.po - sample for GetText._()
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-# Nikolai Weibull, 2004
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: Nikolai Weibull\n"
-"Language-Team: Swedish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Hej, världen\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sv/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/sv/hello2.po
deleted file mode 100644
index 5add89964..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sv/hello2.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# hello2.po - sample for GetText._()
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-# Nikolai Weibull, 2004
-
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: Nikolai Weibull\n"
-"Language-Team: Swedish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "världen"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Ett är %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Hej, %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/sv/hello_glade2.po
deleted file mode 100644
index 9704011b5..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_glade2.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# Nikolai Weibull, 2004
-
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: Nikolai Weibull\n"
-"Language-Team: Swedish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "fönster1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "första raden\nandra raden\ntredje raden"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Hej, världen>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/sv/hello_gtk.po
deleted file mode 100644
index c638e552e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_gtk.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# hellgtk.po - sample for Ruby/GTK
-#
-# Copyright (C) 2001-2004 Masao Mutoh
-#
-# Nikolai Weibull, 2004
-
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: Nikolai Weibull\n"
-"Language-Team: Swedish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "hej, gtk-världen"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/sv/hello_noop.po
deleted file mode 100644
index a6135ffa7..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_noop.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_noop.po - sample for GetText.N_().
-#
-# Copyright (C) 2002-2004 Masao Mutoh
-#
-# Nikolai Weibull, 2004
-
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: Nikolai Weibull\n"
-"Language-Team: Swedish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Hej, världen"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Hej, världen2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/sv/hello_plural.po
deleted file mode 100644
index 2f89250db..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_plural.po - sample for GetText.n_().
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# Nikolai Weibull, 2004
-
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2004-11-04 20:49+0100\n"
-"Last-Translator: Nikolai Weibull\n"
-"Language-Team: Swedish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Det finns ett äpple.\n"
-msgstr[1] "Det finns %{num} äpplen.\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/sv/hello_tk.po
deleted file mode 100644
index b8a6fe9bd..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/sv/hello_tk.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# Nikolai Weibull, 2004
-
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 0.8.0\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2004-11-05 20:49+0100\n"
-"Last-Translator: Nikolai Weibull\n"
-"Language-Team: Swedish\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "hej, tk-världen"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/test.rb b/vendor/gems/gettext-2.1.0/samples/po/test.rb
deleted file mode 100644
index b9e0557f2..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/test.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-filename, to = ARGV
-p filename
-p to
-Dir.glob("*/#{filename}.po").each do |path|
- data = IO.read(path)
- data.gsub!(/#{filename}/, to)
-p to_path = path.sub(/#{filename}/, to)
- File.open(to_path, "w") do |out|
- out.write data
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ua/hello.po b/vendor/gems/gettext-2.1.0/samples/po/ua/hello.po
deleted file mode 100644
index 232b4c74a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ua/hello.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2007-12-23 13:17+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Привіт, світ\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ua/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/ua/hello2.po
deleted file mode 100644
index cfc39e6da..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ua/hello2.po
+++ /dev/null
@@ -1,30 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2008-02-04 08:22+0020\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Світ"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Є %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Привіт, %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/ua/hello_glade2.po
deleted file mode 100644
index c6b87e920..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_glade2.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2007-12-23 13:12+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "вікно1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "перша стрічка\nдруга стрічка\nтретя стрічка"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Привіт, світ>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/ua/hello_gtk.po
deleted file mode 100644
index 8aaf13f59..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_gtk.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2007-12-23 13:17+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "Привіт, світ gtk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/ua/hello_noop.po
deleted file mode 100644
index fb9b29eff..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_noop.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2007-12-23 13:58+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Привіт, світ"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Привіт, світ2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/ua/hello_plural.po
deleted file mode 100644
index dc947953a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_plural.po
+++ /dev/null
@@ -1,29 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2008-02-04 08:24+0020\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Є %{num} яблуко"
-msgstr[1] "Є %{num} яблука"
-msgstr[2] "Є %{num} яблук"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/ua/hello_tk.po
deleted file mode 100644
index ef6b97cd9..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/ua/hello_tk.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Alex Rootoff <rootoff at pisem.net>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2007-12-23 13:42+0200\n"
-"Last-Translator: Alex Rootoff <rootoff at pisem.net>\n"
-"Language-Team: Ukrainian\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "Привіт, світ tk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/vi/hello.po b/vendor/gems/gettext-2.1.0/samples/po/vi/hello.po
deleted file mode 100644
index cbcc3f75f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/vi/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2007-03-21 10:13+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "Xin chào cả Thế Giới\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/vi/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/vi/hello2.po
deleted file mode 100644
index a87ce40ca..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/vi/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2007-03-21 10:16+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "Thế Giới"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "Một là is %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "Xin chào %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/vi/hello_glade2.po
deleted file mode 100644
index 7c9301730..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_glade2.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2007-03-21 11:02+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "cửa sổ 1"
-
-#: hello_glade2.glade:29
-msgid ""
-"first line\n"
-"second line\n"
-"third line"
-msgstr ""
-"dòng thứ nhất\n"
-"dòng thứ hai\n"
-"dòng thứ ba"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<Xin chào thế giới>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/vi/hello_gtk.po
deleted file mode 100644
index 2d08e3842..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2007-03-21 11:02+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "xin chào, thế giới gtk"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/vi/hello_noop.po
deleted file mode 100644
index 80e84b51e..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2007-03-21 10:14+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "Xin chào cả Thế Giới"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "Xin chào cả Thế Giới2"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/vi/hello_plural.po
deleted file mode 100644
index f31bf11ca..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_plural.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2007-03-21 10:15+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "Có một quả táo.\n"
-msgstr[1] "Có %{num} quả táo.\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/vi/hello_tk.po
deleted file mode 100644
index 584e89dbf..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/vi/hello_tk.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Ngoc DAO Thanh <ngocdaothanh at gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2007-03-21 11:04+0900\n"
-"Last-Translator: Ngoc DAO Thanh <ngocdaothanh at gmail.com>\n"
-"Language-Team: Vietnamese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "xin chào, thế giới tk"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh/hello.po b/vendor/gems/gettext-2.1.0/samples/po/zh/hello.po
deleted file mode 100644
index a1795cd05..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh/hello.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=GB2312\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "ã\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/zh/hello2.po
deleted file mode 100644
index 2be319cd8..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh/hello2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=GB2312\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr ""
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "һ%{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr " %{world}\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/zh/hello_glade2.po
deleted file mode 100644
index 51e349cf3..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_glade2.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "窗口1"
-
-#: hello_glade2.glade:29
-msgid "first line\nsecond line\nthird line"
-msgstr "第一行\n第二行\n第三行"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<你好世界>"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/zh/hello_gtk.po
deleted file mode 100644
index d4574ae6f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_gtk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh <mutomasa at gmail.com>
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=GB2312\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "ãgtk"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/zh/hello_noop.po
deleted file mode 100644
index 74034fc0f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_noop.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=GB2312\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr ""
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "2"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/zh/hello_plural.po
deleted file mode 100644
index 50ca21b28..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_plural.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.6.0\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=GB2312\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "һƻ\n"
-msgstr[1] "%{num}ƻ\n"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/zh/hello_tk.po
deleted file mode 100644
index 08ba0b06d..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh/hello_tk.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# Yingfeng <blogyingfeng at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2006-04-15 13:11+0300\n"
-"Last-Translator: Yingfeng <blogyingfeng at gmail.com>\n"
-"Language-Team: Simplified Chinese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "你好,tk世界"
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello.po b/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello.po
deleted file mode 100644
index f9c803e49..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# Hello World -- a sample for Ruby-GetText-Package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:30:54+0900\n"
-"PO-Revision-Date: 2006-08-18 14:48+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: ../hello.rb:7
-msgid "Hello World\n"
-msgstr "哈囉世界\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello2.po b/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello2.po
deleted file mode 100644
index f4def7f25..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello2.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# Hello World 2 -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-01-01 03:05:08+0900\n"
-"PO-Revision-Date: 2006-08-18 14:49+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: hello2.rb:9
-msgid "World"
-msgstr "世界"
-
-#: hello2.rb:8
-msgid "One is %{num}\n"
-msgstr "一個是 %{num}\n"
-
-#: hello2.rb:9
-msgid "Hello %{world}\n"
-msgstr "哈囉 %{world}\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_glade2.po b/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_glade2.po
deleted file mode 100644
index e38c1fefe..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_glade2.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# hello_glade2.po - sample for Ruby/Libglade2
-#
-# Copyright (C) 2005,2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-07-03 23:38+0900\n"
-"PO-Revision-Date: 2006-08-21 09:05+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: hello_glade2.glade:8
-msgid "window1"
-msgstr "視窗一"
-
-#: hello_glade2.glade:29
-msgid ""
-"first line\n"
-"second line\n"
-"third line"
-msgstr ""
-"第一行\n"
-"第二行\n"
-"第三行"
-
-#: hello_glade2.glade:53
-msgid "<Hello world>"
-msgstr "<哈囉世界>"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_gtk.po b/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_gtk.po
deleted file mode 100644
index 0f7ad996a..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_gtk.po
+++ /dev/null
@@ -1,25 +0,0 @@
-# Hello World for Ruby/GTK -- sample for ruby-gettext-package
-#
-# Copyright (C) 2001-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2001-12-24 01:52:10+0900\n"
-"PO-Revision-Date: 2006-08-21 09:06+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: ../hello_gtk.rb:14
-msgid "hello, gtk world"
-msgstr "哈囉, gtk 世界"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_noop.po b/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_noop.po
deleted file mode 100644
index 821c42d3f..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_noop.po
+++ /dev/null
@@ -1,30 +0,0 @@
-# Hello World noop -- sample for ruby-gettext-package
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-02-21 23:23:08+0900\n"
-"PO-Revision-Date: 2006-08-18 14:51+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: hello_noop.rb:8
-msgid "Hello World"
-msgstr "哈囉世界"
-
-#: hello_noop.rb:8
-msgid "Hello World2"
-msgstr "哈囉世界二"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_plural.po b/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_plural.po
deleted file mode 100644
index ea7bcc9fa..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_plural.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# hello_plural.po - sample for plural messages
-#
-# Copyright (C) 2002-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: 2006-08-18 15:01+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: hello_plural.rb:11
-msgid "There is an apple.\n"
-msgid_plural "There are %{num} apples.\n"
-msgstr[0] "有一個蘋果。\n"
-msgstr[1] "有 %{num} 個蘋果。\n"
-
diff --git a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_tk.po b/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_tk.po
deleted file mode 100644
index bf5cbd560..000000000
--- a/vendor/gems/gettext-2.1.0/samples/po/zh_TW/hello_tk.po
+++ /dev/null
@@ -1,26 +0,0 @@
-# hello_tk.po - sample for Ruby/TK
-#
-# Copyright (C) 2004-2006 Masao Mutoh
-#
-# This file is distributed under the same license as the Ruby-GetText-Package.
-#
-# LIN CHUNG-YI <xmarsh at gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 1.1.1\n"
-"POT-Creation-Date: 2004-11-05 21:38+0900\n"
-"PO-Revision-Date: 2006-08-21 09:10+0800\n"
-"Last-Translator: LIN CHUNG-YI <xmarsh at gmail.com>\n"
-"Language-Team: zh_TW <xmarsh at gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: TAIWAN\n"
-
-#: hello_tk.rb:10
-msgid "hello, tk world"
-msgstr "哈囉, tk 世界"
-
diff --git a/vendor/gems/gettext-2.1.0/src/poparser.ry b/vendor/gems/gettext-2.1.0/src/poparser.ry
deleted file mode 100644
index 0af77a263..000000000
--- a/vendor/gems/gettext-2.1.0/src/poparser.ry
+++ /dev/null
@@ -1,217 +0,0 @@
-#
-# poparser.ry - ruby version of msgfmt
-#
-# Copyright (C) 2002-2008 Masao Mutoh <mutomasa at gmail.com>
-#
-# You may redistribute it and/or modify it under the same
-# license terms as Ruby.
-
-class GetText::PoParser
- token COMMENT MSGID MSGCTXT MSGID_PLURAL MSGSTR STRING PLURAL_NUM
-
- rule
-
- msgfmt
- : /* empty */
- | msgfmt comment
- | msgfmt msgctxt
- | msgfmt message
- ;
-
- msgctxt
- : MSGCTXT string_list
- {
- @msgctxt = unescape(val[1]) + "\004"
- }
- ;
-
- message
- : single_message
- | plural_message
- ;
-
- single_message
- : MSGID string_list MSGSTR string_list
- {
- if @fuzzy and $ignore_fuzzy
- if val[1] != ""
- $stderr.print _("Warning: fuzzy message was ignored.\n")
- $stderr.print " #{@po_file}: msgid '#{val[1]}'\n"
- else
- on_message('', unescape(val[3]))
- end
- @fuzzy = false
- else
- on_message(@msgctxt + unescape(val[1]), unescape(val[3]))
- end
- result = ""
- }
-
- plural_message
- : MSGID string_list MSGID_PLURAL string_list msgstr_plural
- {
- if @fuzzy and $ignore_fuzzy
- if val[1] != ""
- $stderr.print _("Warning: fuzzy message was ignored.\n")
- $stderr.print "msgid = '#{val[1]}\n"
- else
- on_message('', unescape(val[3]))
- end
- @fuzzy = false
- else
- on_message(@msgctxt + unescape(val[1]) + "\000" + unescape(val[3]), unescape(val[4]))
- end
- result = ""
- }
- ;
-
- msgstr_plural
- : msgstr_plural msgstr_plural_line
- {
- if val[0].size > 0
- result = val[0] + "\000" + val[1]
- else
- result = ""
- end
- }
- | msgstr_plural_line
- ;
-
- msgstr_plural_line
- : MSGSTR PLURAL_NUM string_list
- {
- result = val[2]
- }
- ;
-
- comment
- : COMMENT
- {
- on_comment(val[0])
- }
- #| COMMENT
- #;
-
- string_list
- : string_list STRING
- {
- result = val.delete_if{|item| item == ""}.join
- }
- | STRING
- {
- result = val[0]
- }
- ;
-end
-
----- inner
- include GetText
- GetText.bindtextdomain("rgettext")
-
- def unescape(orig)
- ret = orig.gsub(/\\n/, "\n")
- ret.gsub!(/\\t/, "\t")
- ret.gsub!(/\\r/, "\r")
- ret.gsub!(/\\"/, "\"")
- ret
- end
-
- def parse(str, data, ignore_fuzzy = true)
- @comments = []
- @data = data
- @fuzzy = false
- @msgctxt = ""
- $ignore_fuzzy = ignore_fuzzy
-
- str.strip!
- @q = []
- until str.empty? do
- case str
- when /\A\s+/
- str = $'
- when /\Amsgctxt/
- @q.push [:MSGCTXT, $&]
- str = $'
- when /\Amsgid_plural/
- @q.push [:MSGID_PLURAL, $&]
- str = $'
- when /\Amsgid/
- @q.push [:MSGID, $&]
- str = $'
- when /\Amsgstr/
- @q.push [:MSGSTR, $&]
- str = $'
- when /\A\[(\d+)\]/
- @q.push [:PLURAL_NUM, $1]
- str = $'
- when /\A\#~(.*)/
- $stderr.print _("Warning: obsolete msgid exists.\n")
- $stderr.print " #{$&}\n"
- @q.push [:COMMENT, $&]
- str = $'
- when /\A\#(.*)/
- @q.push [:COMMENT, $&]
- str = $'
- when /\A\"(.*)\"/
- @q.push [:STRING, $1]
- str = $'
- else
- #c = str[0,1]
- #@q.push [:STRING, c]
- str = str[1..-1]
- end
- end
- @q.push [false, '$end']
- if $DEBUG
- @q.each do |a,b|
- puts "[#{a}, #{b}]"
- end
- end
- @yydebug = true if $DEBUG
- do_parse
-
- if @comments.size > 0
- @data.set_comment(:last, @comments.join("\n"))
- end
- @data
- end
-
- def next_token
- @q.shift
- end
-
- def on_message(msgid, msgstr)
- if msgstr.size > 0
- @data[msgid] = msgstr
- @data.set_comment(msgid, @comments.join("\n"))
- end
- @comments.clear
- @msgctxt = ""
- end
-
- def on_comment(comment)
- @fuzzy = true if (/fuzzy/ =~ comment)
- @comments << comment
- end
-
- def parse_file(po_file, data, ignore_fuzzy = true)
- args = [ po_file ]
- # In Ruby 1.9, we must detect proper encoding of a PO file.
- if String.instance_methods.include?(:encode)
- encoding = detect_file_encoding(po_file)
- args << "r:#{encoding}"
- end
- @po_file = po_file
- parse(File.open(*args) {|io| io.read }, data, ignore_fuzzy)
- end
-
- def detect_file_encoding(po_file)
- open(po_file, :encoding => 'ASCII-8BIT') do |input|
- input.lines.each do |line|
- return Encoding.find($1) if %r["Content-Type:.*\scharset=(.*)\\n"] =~ line
- end
- end
- Encoding.default_external
- end
- private :detect_file_encoding
----- footer
diff --git a/vendor/gems/gettext-2.1.0/test.rb b/vendor/gems/gettext-2.1.0/test.rb
deleted file mode 100644
index 2fe67bd14..000000000
--- a/vendor/gems/gettext-2.1.0/test.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/ruby
-## hello_gtk2.rb - sample for Ruby/GTK2
-##
-## Copyright (C) 2001-2006 Masao Mutoh
-## This file is distributed under the same license as Ruby-GetText-Package.
-
-require 'rubygems'
-require 'gettext'
-require 'gtk2'
-
-class LocalizedWindow < Gtk::Window
- include GetText
-
- bindtextdomain("hello_gtk", :path => "locale", :output_charset => "utf-8")
-
- def initialize
- super
- signal_connect('delete-event') do
- Gtk.main_quit
- end
-
- add(Gtk::Label.new( "sdaf" )
- np_("Special", "An apple", "%{num} Apples", num)
- p_("File", "New")
- s_("File|New")
- n_("Special|An apple", "%{num} Apples", num)
- end
-end
-
-LocalizedWindow.new.show_all
-Gtk.main
-
-
diff --git a/vendor/gems/gettext-2.1.0/test/README b/vendor/gems/gettext-2.1.0/test/README
deleted file mode 100644
index f159b66e4..000000000
--- a/vendor/gems/gettext-2.1.0/test/README
+++ /dev/null
@@ -1 +0,0 @@
-Go to gettext dir and run "rake makemo" prior to running any tests! \ No newline at end of file
diff --git a/vendor/gems/gettext-2.1.0/test/Rakefile b/vendor/gems/gettext-2.1.0/test/Rakefile
deleted file mode 100644
index 1d1e0247f..000000000
--- a/vendor/gems/gettext-2.1.0/test/Rakefile
+++ /dev/null
@@ -1,17 +0,0 @@
-$LOAD_PATH.unshift "../lib"
-
-task :default => :test
-
-desc "Create mo files"
-task :makemo do
- require 'gettext/tools'
- GetText.create_mofiles(:mo_root => "locale")
-end
-
-desc 'Run all tests'
-task :test do
- Dir.glob("**/test_*.rb").each do |path|
- puts ""
- ruby "-I../lib:../../locale/lib -rubygems #{path}"
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/locale/cr/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/cr/LC_MESSAGES/plural.mo
deleted file mode 100644
index b6c1fcd53..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/cr/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/da/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/da/LC_MESSAGES/plural.mo
deleted file mode 100644
index 1604a69b7..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/da/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/da/LC_MESSAGES/plural_error.mo b/vendor/gems/gettext-2.1.0/test/locale/da/LC_MESSAGES/plural_error.mo
deleted file mode 100644
index a33f51fd9..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/da/LC_MESSAGES/plural_error.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/plural.mo
deleted file mode 100644
index b814f5ff3..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/plural_error.mo b/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/plural_error.mo
deleted file mode 100644
index e774b09c3..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/plural_error.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/test1.mo b/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/test1.mo
deleted file mode 100644
index 5ffa9f95e..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/test1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/test2.mo b/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/test2.mo
deleted file mode 100644
index 97183f297..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/fr/LC_MESSAGES/test2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ir/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/ir/LC_MESSAGES/plural.mo
deleted file mode 100644
index 160c1e725..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ir/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/npgettext.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/npgettext.mo
deleted file mode 100644
index dcb616842..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/npgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/nsgettext.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/nsgettext.mo
deleted file mode 100644
index 073301527..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/nsgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/pgettext.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/pgettext.mo
deleted file mode 100644
index b0eeb41d8..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/pgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/plural.mo
deleted file mode 100644
index 0748463c3..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/plural_error.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/plural_error.mo
deleted file mode 100644
index 9a6600554..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/plural_error.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/rubyparser.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/rubyparser.mo
deleted file mode 100644
index d204fe1f1..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/rubyparser.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/sgettext.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/sgettext.mo
deleted file mode 100644
index 38a885037..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/sgettext.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test1.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test1.mo
deleted file mode 100644
index 46fd44a6e..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test1.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test2.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test2.mo
deleted file mode 100644
index adc89b1ee..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test2.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test3.mo b/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test3.mo
deleted file mode 100644
index 9ed02c744..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/ja/LC_MESSAGES/test3.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/la/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/la/LC_MESSAGES/plural.mo
deleted file mode 100644
index 5f71e52db..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/la/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/la/LC_MESSAGES/plural_error.mo b/vendor/gems/gettext-2.1.0/test/locale/la/LC_MESSAGES/plural_error.mo
deleted file mode 100644
index 14b875ca2..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/la/LC_MESSAGES/plural_error.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/li/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/li/LC_MESSAGES/plural.mo
deleted file mode 100644
index 5b9e23c99..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/li/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/li/LC_MESSAGES/plural_error.mo b/vendor/gems/gettext-2.1.0/test/locale/li/LC_MESSAGES/plural_error.mo
deleted file mode 100644
index 5a9dc5f5d..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/li/LC_MESSAGES/plural_error.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/po/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/po/LC_MESSAGES/plural.mo
deleted file mode 100644
index 0f1677a0a..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/po/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/locale/sl/LC_MESSAGES/plural.mo b/vendor/gems/gettext-2.1.0/test/locale/sl/LC_MESSAGES/plural.mo
deleted file mode 100644
index f92254b5f..000000000
--- a/vendor/gems/gettext-2.1.0/test/locale/sl/LC_MESSAGES/plural.mo
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/gettext-2.1.0/test/po/cr/plural.po b/vendor/gems/gettext-2.1.0/test/po/cr/plural.po
deleted file mode 100644
index 92f4a7d1d..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/cr/plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=3; plural= n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "cr_one"
-msgstr[1] "cr_two"
-msgstr[2] "cr_three"
diff --git a/vendor/gems/gettext-2.1.0/test/po/da/plural.po b/vendor/gems/gettext-2.1.0/test/po/da/plural.po
deleted file mode 100644
index c6ff529d8..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/da/plural.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=2; plural= n != 1;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "da_one"
-msgstr[1] "da_plural"
diff --git a/vendor/gems/gettext-2.1.0/test/po/da/plural_error.po b/vendor/gems/gettext-2.1.0/test/po/da/plural_error.po
deleted file mode 100644
index 1ca81140e..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/da/plural_error.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: hello_plural.rb:11
-msgid "first"
-msgid_plural "second"
-msgstr[0] "da_first"
-msgstr[1] "da_second"
diff --git a/vendor/gems/gettext-2.1.0/test/po/fr/plural.po b/vendor/gems/gettext-2.1.0/test/po/fr/plural.po
deleted file mode 100644
index 9f3b6dd18..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/fr/plural.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=2; plural=n>1;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "fr_one"
-msgstr[1] "fr_plural"
-
-#: hello_plural.rb:14
-msgid "single"
-msgid_plural "plural"
-msgstr[0] "fr_hitotsu"
-msgstr[1] "fr_fukusu"
diff --git a/vendor/gems/gettext-2.1.0/test/po/fr/plural_error.po b/vendor/gems/gettext-2.1.0/test/po/fr/plural_error.po
deleted file mode 100644
index 9d9025b5c..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/fr/plural_error.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: hello_plural.rb:11
-msgid "first"
-msgid_plural "second"
-msgstr[0] "fr_first"
diff --git a/vendor/gems/gettext-2.1.0/test/po/fr/test1.po b/vendor/gems/gettext-2.1.0/test/po/fr/test1.po
deleted file mode 100644
index 841503432..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/fr/test1.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-01-01 02:24:56+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: simple.rb:10
-msgid "language"
-msgstr "french"
-
-#: simple.rb:14
-msgid "one is %d."
-msgstr "FRENCH:ONE IS %d."
diff --git a/vendor/gems/gettext-2.1.0/test/po/fr/test2.po b/vendor/gems/gettext-2.1.0/test/po/fr/test2.po
deleted file mode 100644
index c0bb028d0..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/fr/test2.po
+++ /dev/null
@@ -1,19 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2001-10-28 01:39:53+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: test.rb:9 test.rb:11
-msgid "LANGUAGE"
-msgstr "FRENCH"
diff --git a/vendor/gems/gettext-2.1.0/test/po/ir/plural.po b/vendor/gems/gettext-2.1.0/test/po/ir/plural.po
deleted file mode 100644
index 97d3ba4f4..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ir/plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "ir_one"
-msgstr[1] "ir_two"
-msgstr[2] "ir_plural"
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/npgettext.po b/vendor/gems/gettext-2.1.0/test/po/ja/npgettext.po
deleted file mode 100644
index aa2eb2b2b..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/npgettext.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# Japanese translations for PACKAGE package
-# PACKAGE パッケージに対する英訳.
-# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Masao Mutoh <mutomasa at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2008-08-06 02:36+0900\n"
-"PO-Revision-Date: 2008-08-06 02:36+0900\n"
-"Last-Translator: Masao Mutoh <mutomasa at gmail.com>\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: testlib/npgettext.rb:10 testlib/npgettext.rb:11 testlib/npgettext.rb:15
-#: testlib/npgettext.rb:16
-msgctxt "Magazine"
-msgid "a book"
-msgid_plural "%{num} books"
-msgstr[0] "一つの本"
-msgstr[1] "%{num}の本たち"
-
-#: testlib/npgettext.rb:20 testlib/npgettext.rb:21
-msgctxt "Hardcover"
-msgid "a book"
-msgid_plural "%{num} books"
-msgstr[0] "一つのハードカバー本"
-msgstr[1] "%{num}のハードカバー本たち"
-
-#: testlib/npgettext.rb:25 testlib/npgettext.rb:26
-msgctxt "Magaine"
-msgid "I have a magazine"
-msgid_plural "I have %{num} magazines"
-msgstr[0] "マガジンを1冊持ってます。"
-msgstr[0] "マガジンたちを%{num}冊持ってます。"
-
-#: testlib/npgettext.rb:30 testlib/npgettext.rb:31
-msgctxt "Hardcover"
-msgid "a picture"
-msgid_plural "%{num} pictures"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/nsgettext.po b/vendor/gems/gettext-2.1.0/test/po/ja/nsgettext.po
deleted file mode 100644
index 9d5c13e74..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/nsgettext.po
+++ /dev/null
@@ -1,65 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2007-07-03 00:20+0900\n"
-"PO-Revision-Date: 2007-07-03 00:20+0900\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: nsgettext.rb:10 nsgettext.rb:14
-msgid "AAA|BBB"
-msgid_plural "CCC"
-msgstr[0] "single"
-msgstr[1] "plural"
-
-#: nsgettext.rb:18
-msgid "AAA"
-msgid_plural "BBB"
-msgstr[0] ""
-msgstr[1] ""
-
-#: nsgettext.rb:22
-msgid "AAA|CCC"
-msgid_plural "DDD"
-msgstr[0] ""
-msgstr[1] ""
-
-#: nsgettext.rb:26
-msgid "AAA|BBB|CCC"
-msgid_plural "DDD"
-msgstr[0] ""
-msgstr[1] ""
-
-#: nsgettext.rb:30
-msgid "AAA$BBB"
-msgid_plural "CCC"
-msgstr[0] ""
-msgstr[1] ""
-
-#: nsgettext.rb:34
-msgid "AAA$B|BB"
-msgid_plural "CCC"
-msgstr[0] ""
-msgstr[1] ""
-
-#: nsgettext.rb:38
-msgid "AAA$B|CC"
-msgid_plural "DDD"
-msgstr[0] "single"
-msgstr[1] "plural"
-
-#: nsgettext.rb:42
-msgid "AAA|CCC|BBB"
-msgid_plural "DDD"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/pgettext.po b/vendor/gems/gettext-2.1.0/test/po/ja/pgettext.po
deleted file mode 100644
index d4005f8da..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/pgettext.po
+++ /dev/null
@@ -1,41 +0,0 @@
-# Japanese translations for PACKAGE package
-# PACKAGE パッケージに対する英訳.
-# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Masao Mutoh <mutomasa at gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2008-07-26 15:39+0900\n"
-"PO-Revision-Date: 2008-07-26 15:39+0900\n"
-"Last-Translator: Masao Mutoh <mutomasa at gmail.com>\n"
-"Language-Team: Japanese\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: testlib/pgettext.rb:10 testlib/pgettext.rb:14
-msgctxt "AAA"
-msgid "BBB"
-msgstr "えーびー"
-
-#: testlib/pgettext.rb:18
-msgctxt "AAA|BBB"
-msgid "CCC"
-msgstr "えーびーしー"
-
-#: testlib/pgettext.rb:22
-msgctxt "AAA"
-msgid "CCC"
-msgstr ""
-
-#: testlib/pgettext.rb:26
-msgctxt "CCC"
-msgid "BBB"
-msgstr "しーびー"
-
-#: testlib/pgettext.rb:33
-msgid "BBB"
-msgstr "びー"
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/plural.po b/vendor/gems/gettext-2.1.0/test/po/ja/plural.po
deleted file mode 100644
index fb45fef02..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/plural.po
+++ /dev/null
@@ -1,28 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "all"
-msgstr[1] ""
-
-#: hello_plural.rb:13
-msgid "single"
-msgid_plural "plural"
-msgstr[0] "hitotsu"
-msgstr[1] "fukusu"
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/plural_error.po b/vendor/gems/gettext-2.1.0/test/po/ja/plural_error.po
deleted file mode 100644
index 6991f243e..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/plural_error.po
+++ /dev/null
@@ -1,20 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: hello_plural.rb:11
-msgid "first"
-msgid_plural "second"
-msgstr[0] "a"
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/rubyparser.po b/vendor/gems/gettext-2.1.0/test/po/ja/rubyparser.po
deleted file mode 100644
index 554952ef5..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/rubyparser.po
+++ /dev/null
@@ -1,43 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2004-07-03 23:03+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: test_rubyparser.rb:8
-msgid "aaa"
-msgstr "AAA"
-
-#: test_rubyparser.rb:12
-msgid "aaa\n"
-msgstr "AAA\n"
-
-#: test_rubyparser.rb:16
-msgid "bbb\nccc"
-msgstr "BBB\nCCC"
-
-#: test_rubyparser.rb:20
-msgid "bbb\nccc\nddd\n"
-msgstr "BBB\nCCC\nDDD\n"
-
-#: test_rubyparser.rb:27 test_rubyparser.rb:31
-msgid "eee"
-msgstr "EEE"
-
-#: test_rubyparser.rb:31
-msgid "fff"
-msgstr "FFF"
-
-#: test_rubyparser.rb:35
-msgid "ggghhhiii"
-msgstr "GGGHHHIII"
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/sgettext.po b/vendor/gems/gettext-2.1.0/test/po/ja/sgettext.po
deleted file mode 100644
index ee2869e9a..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/sgettext.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2004-08-12 03:31+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: sgettext.rb:10 sgettext.rb:14
-msgid "AAA|BBB"
-msgstr "MATCHED"
-
-#: sgettext.rb:18
-msgid "AAA"
-msgstr ""
-
-#: sgettext.rb:22
-msgid "AAA|CCC"
-msgstr ""
-
-#: sgettext.rb:26
-msgid "AAA|BBB|CCC"
-msgstr ""
-
-#: sgettext.rb:30
-msgid "AAA$BBB"
-msgstr ""
-
-#: sgettext.rb:34
-msgid "AAA$B|BB"
-msgstr ""
-
-#: sgettext.rb:38
-msgid "AAA$B|CC"
-msgstr "MATCHED"
-
-#: sgettext.rb:42
-msgid "AAA|CCC|BBB"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/test1.po b/vendor/gems/gettext-2.1.0/test/po/ja/test1.po
deleted file mode 100644
index 19993fb1f..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/test1.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-01-01 02:24:56+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: simple.rb:10
-msgid "language"
-msgstr "japanese"
-
-#: simple.rb:14
-msgid "one is %d."
-msgstr "ONE IS %d."
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/test2.po b/vendor/gems/gettext-2.1.0/test/po/ja/test2.po
deleted file mode 100644
index 1f4801e20..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/test2.po
+++ /dev/null
@@ -1,19 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2001-10-28 01:39:53+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: test.rb:9 test.rb:11
-msgid "LANGUAGE"
-msgstr "JAPANESE"
diff --git a/vendor/gems/gettext-2.1.0/test/po/ja/test3.po b/vendor/gems/gettext-2.1.0/test/po/ja/test3.po
deleted file mode 100644
index 675ca0583..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/ja/test3.po
+++ /dev/null
@@ -1,19 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2001-10-28 01:39:53+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: ENCODING\n"
-
-#: test.rb:9 test.rb:11
-msgid "language"
-msgstr "JAPANESE"
diff --git a/vendor/gems/gettext-2.1.0/test/po/la/plural.po b/vendor/gems/gettext-2.1.0/test/po/la/plural.po
deleted file mode 100644
index 55ce771f8..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/la/plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n!=0 ? 1 : 2 ;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "la_one"
-msgstr[1] "la_plural"
-msgstr[2] "la_zero"
diff --git a/vendor/gems/gettext-2.1.0/test/po/la/plural_error.po b/vendor/gems/gettext-2.1.0/test/po/la/plural_error.po
deleted file mode 100644
index a9cacf022..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/la/plural_error.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=2; plural= n != 1;\n"
-
-#: hello_plural.rb:11
-msgid "first"
-msgid_plural "second"
-msgstr[0] "la_first"
diff --git a/vendor/gems/gettext-2.1.0/test/po/li/plural.po b/vendor/gems/gettext-2.1.0/test/po/li/plural.po
deleted file mode 100644
index 784308e22..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/li/plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=3; plural= n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "li_one"
-msgstr[1] "li_two"
-msgstr[2] "li_three"
diff --git a/vendor/gems/gettext-2.1.0/test/po/li/plural_error.po b/vendor/gems/gettext-2.1.0/test/po/li/plural_error.po
deleted file mode 100644
index a44afc496..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/li/plural_error.po
+++ /dev/null
@@ -1,27 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=0; plural=EXPRESSION;\n"
-
-#: hello_plural.rb:11
-msgid "first"
-msgid_plural "second"
-msgstr[0] "li_first"
-
-#: hello_plural.rb:13
-msgid "one"
-msgid_plural "two"
-msgstr[0] "li_one"
-msgstr[1] "li_two"
diff --git a/vendor/gems/gettext-2.1.0/test/po/po/plural.po b/vendor/gems/gettext-2.1.0/test/po/po/plural.po
deleted file mode 100644
index 7f26ba78c..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/po/plural.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "po_one"
-msgstr[1] "po_two"
-msgstr[2] "po_three"
diff --git a/vendor/gems/gettext-2.1.0/test/po/sl/plural.po b/vendor/gems/gettext-2.1.0/test/po/sl/plural.po
deleted file mode 100644
index 479faaba2..000000000
--- a/vendor/gems/gettext-2.1.0/test/po/sl/plural.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-10-21 15:32:15+0900\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=US-ASCII\n"
-"Content-Transfer-Encoding: ENCODING\n"
-"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
-
-#: hello_plural.rb:11
-msgid "one"
-msgid_plural "two"
-msgstr[0] "sl_one"
-msgstr[1] "sl_two"
-msgstr[2] "sl_three"
-msgstr[3] "sl_four"
diff --git a/vendor/gems/gettext-2.1.0/test/test_class_info.rb b/vendor/gems/gettext-2.1.0/test/test_class_info.rb
deleted file mode 100644
index bb74bac2d..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_class_info.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-require 'testlib/helper.rb'
-require 'gettext/runtime/class_info'
-
-module M1; end
-module M2; end
-
-module M1
- module M3
- include M2
- module M4; end
- class C1; end
- end
- class C2
- module M5
- class C4; end
- end
- class C3; end
- end
-end
-
-module M1::M6
- include M1::M3::M4
- module M7; end
-end
-
-module M8
- module M9
- end
- include M9
-end
-
-# Anonymous module
-@@anon = Module.new
-class @@anon::AC1; end
-module @@anon::AM1; end
-
-class TestClassInfo < Test::Unit::TestCase
- include GetText::ClassInfo
-
- def test_normalize_class
- assert_equal M1::M3, normalize_class(M1::M3)
- assert_equal M1::M3::C1, normalize_class(M1::M3::C1)
- assert_equal M1::M3::C1, normalize_class(M1::M3::C1.new)
-
- assert_equal NilClass, normalize_class(nil)
- assert_equal TestClassInfo, normalize_class(self)
- end
-
- def test_normalize_class_anonymous_module
- assert_equal Object, normalize_class(@@anon)
- assert_equal Object, normalize_class(@@anon)
- assert_equal Object, normalize_class(@@anon::AC1)
- assert_equal Object, normalize_class(@@anon::AM1)
- end
-
- def test_related_classes
-=begin
- assert_equal [M1, Object], related_classes(M1)
- assert_equal [M1::M3, M1, M2, Object], related_classes(M1::M3)
- assert_equal [M1::M3::M4, M1::M3, M1, M2, Object], related_classes(M1::M3::M4)
-=end
- assert_equal [M1::M3::C1, M1::M3, M1, M2, Object], related_classes(M1::M3::C1)
-=begin
- assert_equal [M1::C2, M1, Object], related_classes(M1::C2)
- assert_equal [M1::C2::M5::C4, M1::C2::M5, M1::C2, M1, Object], related_classes(M1::C2::M5::C4)
- assert_equal [M1::C2::C3, M1::C2, M1, Object], related_classes(M1::C2::C3)
- assert_equal [M1::M6, M1, M1::M3::M4, M1::M3, M2, Object], related_classes(M1::M6)
- assert_equal [M1::M6::M7, M1::M6, M1, M1::M3::M4, M1::M3, M2, Object], related_classes(M1::M6::M7)
-=end
- end
-
- def test_rellated_classes_with_all_classes
- assert_equal [M1, Object], related_classes(M1, [M1])
- assert_equal [M1, Object], related_classes(M1::M3::M4, [M1])
- assert_equal [M1::M3, Object], related_classes(M1::M3::M4, [M1::M3])
- assert_equal [M1::M3, M1, Object], related_classes(M1::M3::M4, [M1::M3, M1])
- end
-
- def test_related_classes_loop_mixin
- assert_equal [M8, M8::M9, Object], related_classes(M8)
- end
-
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_gettext.rb b/vendor/gems/gettext-2.1.0/test/test_gettext.rb
deleted file mode 100644
index f4e2ea51b..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_gettext.rb
+++ /dev/null
@@ -1,311 +0,0 @@
-# -*- coding: utf-8 -*-
-require 'testlib/helper.rb'
-
-require 'testlib/simple.rb'
-require 'testlib/gettext.rb'
-require 'testlib/sgettext.rb'
-require 'testlib/nsgettext.rb'
-require 'testlib/pgettext.rb'
-require 'testlib/npgettext.rb'
-
-class TestGetText < Test::Unit::TestCase
-
- def setup
- ENV["LC_ALL"] = "ja_JP.UTF-8"
- ENV["LANG"] = "ja_JP.UTF-8"
- GetText.locale = nil
- GetText::TextDomainManager.clear_caches
- end
-
- def test_change_locale
- GetText.locale = nil
- bindtextdomain("test2", "locale")
- test = Simple.new
- assert_equal("japanese", test.test)
- set_locale("fr")
- assert_equal("french", test.test) # influence of previous line
- assert_equal("FRENCH:ONE IS 1.", test.test_formatted_string)
- set_locale("ja")
- assert_equal("JAPANESE", _("LANGUAGE")) # influence of previous line
- assert_equal("japanese", test.test)
- end
-
- def test_no_msgstr
- bindtextdomain("test1", :path => "locale")
- assert_equal("nomsgstr", _("nomsgstr"))
- end
-
- def test_empty
- bindtextdomain("test1", "locale")
- assert_equal("japanese", gettext("language"))
- assert_equal("", gettext(""))
- assert_equal("", gettext(nil))
- end
-
- def test_gettext
- test = TestRubyParser.new
- assert_equal("AAA", test.test_1)
- assert_equal("AAA\n", test.test_2)
- assert_equal("BBB\nCCC", test.test_3)
- assert_equal("BBB
-CCC
-DDD
-", test.test_4)
- assert_equal("EEE", test.test_5)
- assert_equal("EEEfooFFF", test.test_6)
- assert_equal("GGGHHHIII", test.test_7)
- end
-
- def test_N_
- assert_equal("test", N_("test"))
- end
-
- def test_sgettext
- test = TestSGetText.new
-
- assert_equal("MATCHED", test.test_1)
- assert_equal("MATCHED", test.test_2)
- assert_equal("AAA", test.test_3)
- assert_equal("CCC", test.test_4)
- assert_equal("CCC", test.test_5)
- assert_equal("BBB", test.test_6)
- assert_equal("B|BB", test.test_7)
- assert_equal("MATCHED", test.test_8)
- assert_equal("BBB", test.test_9)
- end
-
- def test_s_uses_no_seperator_when_nil_is_given
- assert_equal "AAA|BBB", s_("AAA|BBB", nil)
- end
-
- def test_pgettext
- GetText.locale = nil
- test = TestPGetText.new
-
- assert_equal("えーびー", test.test_1)
- assert_equal("えーびー", test.test_2)
- assert_equal("えーびーしー", test.test_3)
- assert_equal("CCC", test.test_4)
- assert_equal("しーびー", test.test_5)
- assert_equal("びー", test.test_6)
-
- GetText.locale = "en"
- test = TestPGetText.new
-
- assert_equal("BBB", test.test_1)
- assert_equal("BBB", test.test_2)
- assert_equal("CCC", test.test_3)
- assert_equal("CCC", test.test_4)
- assert_equal("BBB", test.test_5)
- assert_equal("BBB", test.test_6)
- end
-
- def test_npgettext
- GetText.locale = nil
- test = TestNPGetText.new
- assert_equal(["一つの本", "%{num}の本たち"], test.test_1)
- assert_equal(["一つの本", "%{num}の本たち"], test.test_2)
- assert_equal(["一つのハードカバー本", "%{num}のハードカバー本たち"], test.test_3)
- assert_equal(["マガジンを1冊持ってます。", "マガジンたちを%{num}冊持ってます。"], test.test_4)
- assert_equal(["a picture", "%{num} pictures"], test.test_5)
- end
-
- def test_n_defaults_to_1_when_number_is_missing
- assert_equal n_("aaa","aaa2",1), "aaa"
- end
-
- def test_nsgettext
- GetText.locale = nil
- test = TestNSGetText.new
- assert_equal(["single", "plural"], test.test_1)
- assert_equal(["single", "plural"], test.test_2)
- assert_equal(["AAA", "BBB"], test.test_3)
- assert_equal(["CCC", "DDD"], test.test_4)
- assert_equal(["CCC", "DDD"], test.test_5)
- assert_equal(["BBB", "CCC"], test.test_6)
- assert_equal(["B|BB", "CCC"], test.test_7)
- assert_equal(["single", "plural"], test.test_8)
- assert_equal(["BBB", "DDD"], test.test_9)
- end
-
- def test_plural
- GetText.locale = nil
- bindtextdomain("plural", :path => "locale")
- assert_equal("all", n_("one", "two", 0))
- assert_equal("all", n_("one", "two", 1))
- assert_equal("all", n_("one", "two", 2))
-
- set_locale("da")
- assert_equal("da_plural", n_("one", "two", 0))
- assert_equal("da_one", n_("one", "two", 1))
- assert_equal("da_plural", n_("one", "two", 2))
-
- set_locale("fr")
- assert_equal("fr_one", ngettext("one", "two", 0))
- assert_equal("fr_one", ngettext("one", "two", 1))
- assert_equal("fr_plural", ngettext("one", "two", 2))
-
- set_locale("la")
- assert_equal("la_one", ngettext("one", "two", 21))
- assert_equal("la_one", ngettext("one", "two", 1))
- assert_equal("la_plural", ngettext("one", "two", 2))
- assert_equal("la_zero", ngettext("one", "two", 0))
-
- set_locale("ir")
- assert_equal("ir_one", ngettext("one", "two", 1))
- assert_equal("ir_two", ngettext("one", "two", 2))
- assert_equal("ir_plural", ngettext("one", "two", 3))
- assert_equal("ir_plural", ngettext("one", "two", 0))
-
- set_locale("li")
- assert_equal("li_one", ngettext("one", "two", 1))
- assert_equal("li_two", ngettext("one", "two", 22))
- assert_equal("li_three", ngettext("one", "two", 11))
-
- set_locale("cr")
- assert_equal("cr_one", ngettext("one", "two", 1))
- assert_equal("cr_two", ngettext("one", "two", 2))
- assert_equal("cr_three", ngettext("one", "two", 5))
-
- set_locale("po")
- assert_equal("po_one", ngettext("one", "two", 1))
- assert_equal("po_two", ngettext("one", "two", 2))
- assert_equal("po_three", ngettext("one", "two", 5))
-
- set_locale("sl")
- assert_equal("sl_one", ngettext("one", "two", 1))
- assert_equal("sl_two", ngettext("one", "two", 2))
- assert_equal("sl_three", ngettext("one", "two", 3))
- assert_equal("sl_three", ngettext("one", "two", 4))
- assert_equal("sl_four", ngettext("one", "two", 5))
- end
-
- def test_plural_format_invalid
- bindtextdomain("plural_error", :path => "locale")
- #If it defines msgstr[0] only, msgstr[0] is used everytime.
- assert_equal("a", n_("first", "second", 0))
- assert_equal("a", n_("first", "second", 1))
- assert_equal("a", n_("first", "second", 2))
- # Use default(plural = 0)
- set_locale("fr")
- assert_equal("fr_first", n_("first", "second", 0))
- assert_equal("fr_first", n_("first", "second", 1))
- assert_equal("fr_first", n_("first", "second", 2))
- setlocale("da") # Invalid Plural-Forms.
- assert_equal("da_first", n_("first", "second", 0))
- assert_equal("da_first", n_("first", "second", 1))
- assert_equal("da_first", n_("first", "second", 2))
- setlocale("la") # wrong number of msgstr.
- assert_equal("la_first", n_("first", "second", 0))
- assert_equal("la_first", n_("first", "second", 1))
- assert_equal("la_first", n_("first", "second", 2))
-
- setlocale("li") # Invalid Plural-Forms: nplurals is set, but wrong plural=.
- assert_equal("li_first", n_("first", "second", 0))
- assert_equal("li_first", n_("first", "second", 1))
- assert_equal("li_first", n_("first", "second", 2))
- assert_equal("li_one", n_("one", "two", 0))
- assert_equal("li_one", n_("one", "two", 1))
- assert_equal("li_one", n_("one", "two", 2))
- end
-
- def test_plural_array
- bindtextdomain("plural", :path => "locale")
- set_locale "da"
- assert_equal("da_plural", n_(["one", "two"], 0))
- assert_equal("da_one", n_(["one", "two"], 1))
- assert_equal("da_plural", n_(["one", "two"], 2))
- end
-
- def test_plural_with_single
- bindtextdomain("plural", :path => "locale")
-
- assert_equal("hitotsu", _("single"))
- assert_equal("hitotsu", n_("single", "plural", 1))
- assert_equal("hitotsu", n_("single", "plural", 2))
- assert_equal("all", n_("one", "two", 1))
- assert_equal("all", n_("one", "two", 2))
- assert_equal("all", _("one"))
-
- bindtextdomain("plural", :path => "locale")
- set_locale "fr"
-
- assert_equal("fr_hitotsu", _("single"))
- assert_equal("fr_hitotsu", n_("single", "plural", 1))
- assert_equal("fr_fukusu", n_("single", "plural", 2))
- assert_equal("fr_one", n_("one", "two", 1))
- assert_equal("fr_plural", n_("one", "two", 2))
- assert_equal("fr_one", _("one"))
-
-# assert_equal("fr_hitotsu", n_("single", "not match", 1))
-# assert_equal("fr_fukusu", n_("single", "not match", 2))
- end
-
- def test_Nn_
- GetText.locale = "da"
- bindtextdomain("plural", :path => "locale")
- assert_equal(["one", "two"], Nn_("one", "two"))
- end
-
- def test_setlocale
- bindtextdomain("test1", :path => "locale")
- assert_equal("japanese", _("language"))
- set_locale("en")
- assert_equal("language", _("language"))
-
- set_locale("fr")
- assert_equal("french", _("language"))
-
- set_locale(nil)
- Locale.set "en"
- assert_equal("language", _("language"))
-
- Locale.set "ja"
- assert_equal("japanese", _("language"))
-
- # Confirm to set Locale::Object.
- loc = Locale::Tag::Posix.parse("ja_JP.UTF-8")
- assert_equal(loc, GetText.locale = loc)
- assert_equal(Locale::Tag::Posix, GetText.locale.class)
- end
-
- def test_restrict_locale
- bindtextdomain("test1", :path => "locale")
- Locale.set_app_language_tags("ja", "en")
-
- Locale.set_current "fr"
- assert_equal("language", _("language"))
-
- Locale.set_current "en"
- assert_equal("language", _("language"))
-
- Locale.set_current "ja"
- assert_equal("japanese", _("language"))
- Locale.set_app_language_tags(nil)
- end
-
-
- # Anonymous
- @@anon = Module.new
- class @@anon::I
- bindtextdomain("test1", :path => "locale")
- def self.test
- _("language")
- end
- def test2
- _("language")
- end
- end
-
- def test_anonymous_module
- assert_equal("japanese", @@anon::I.test)
- assert_equal("japanese", @@anon::I.new.test2)
-
- end
-
- def test_frozen
- GetText.bindtextdomain("test1", :path => "locale")
- assert(GetText._("language").frozen?)
- end
-
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_locale_path.rb b/vendor/gems/gettext-2.1.0/test/test_locale_path.rb
deleted file mode 100644
index 31d94f047..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_locale_path.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'testlib/helper.rb'
-require 'testlib/simple'
-
-class TestLocalePath < Test::Unit::TestCase
- def setup
- GetText.locale = "ja_JP.eucJP"
- GetText::LocalePath.clear
- end
-
- def test_locale_path
- test = Simple.new
- assert_equal("japanese", test.test)
- prefix = GetText::LocalePath::CONFIG_PREFIX
- default_locale_dirs = [
- "./locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "./locale/%{lang}/%{name}.mo",
- "#{Config::CONFIG['datadir']}/locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "#{Config::CONFIG['datadir'].gsub(/\/local/, "")}/locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "#{prefix}/share/locale/%{lang}/LC_MESSAGES/%{name}.mo",
- "#{prefix}/local/share/locale/%{lang}/LC_MESSAGES/%{name}.mo"
- ].uniq
- assert_equal(default_locale_dirs, GetText::LocalePath::DEFAULT_RULES)
- new_path = "/foo/%{lang}/%{name}.mo"
- GetText::LocalePath.add_default_rule(new_path)
- assert_equal([new_path] + default_locale_dirs, GetText::LocalePath::DEFAULT_RULES)
- end
-
- def test_initialize_with_topdir
- testdir = File.dirname(File.expand_path(__FILE__))
- path = GetText::LocalePath.new("test1", "#{testdir}/locale")
- assert_equal path.locale_paths, { "ja" => "#{testdir}/locale/ja/LC_MESSAGES/test1.mo",
- "fr" => "#{testdir}/locale/fr/LC_MESSAGES/test1.mo"}
- assert_equal path.current_path(Locale::Tag.parse("ja")), "#{testdir}/locale/ja/LC_MESSAGES/test1.mo"
- assert_equal path.current_path(Locale::Tag.parse("ja-JP")), "#{testdir}/locale/ja/LC_MESSAGES/test1.mo"
- assert_equal path.current_path(Locale::Tag.parse("ja_JP.UTF-8")), "#{testdir}/locale/ja/LC_MESSAGES/test1.mo"
- assert_equal path.current_path(Locale::Tag.parse("en")), nil
- end
-
- def test_supported_locales
- testdir = File.dirname(File.expand_path(__FILE__))
- path = GetText::LocalePath.new("test1", "#{testdir}/locale")
- assert_equal ["fr", "ja"], path.supported_locales
-
- path = GetText::LocalePath.new("plural", "#{testdir}/locale")
- assert_equal ["cr", "da", "fr", "ir", "ja", "la", "li", "po", "sl"], path.supported_locales
-
- path = GetText::LocalePath.new("nodomain", "#{testdir}/locale")
- assert_equal [], path.supported_locales
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_parser.rb b/vendor/gems/gettext-2.1.0/test/test_parser.rb
deleted file mode 100644
index bbbe51fbe..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_parser.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-require 'testlib/helper.rb'
-require 'gettext/tools/parser/ruby'
-require 'gettext/tools/parser/glade'
-require 'gettext/tools/parser/erb'
-
-require 'gettext/tools/rgettext'
-
-class TestGetTextParser < Test::Unit::TestCase
- def test_ruby
- @ary = GetText::RGetText.parse('testlib/gettext.rb')
-
- assert_target 'aaa', ['testlib/gettext.rb:8']
- assert_target 'aaa\n', ['testlib/gettext.rb:12']
- assert_target 'bbb\nccc', ['testlib/gettext.rb:16']
- assert_target 'bbb\nccc\nddd\n', ['testlib/gettext.rb:20']
- assert_target 'eee', ['testlib/gettext.rb:27', 'testlib/gettext.rb:31']
- assert_target 'fff', ['testlib/gettext.rb:31']
- assert_target 'ggghhhiii', ['testlib/gettext.rb:35']
- assert_target 'a"b"c"', ['testlib/gettext.rb:41']
- assert_target 'd"e"f"', ['testlib/gettext.rb:45']
- assert_target 'jjj', ['testlib/gettext.rb:49']
- assert_target 'kkk', ['testlib/gettext.rb:50']
- assert_target 'lllmmm', ['testlib/gettext.rb:54']
- assert_target 'nnn\nooo', ['testlib/gettext.rb:62']
- assert_target "\#", ['testlib/gettext.rb:66', 'testlib/gettext.rb:70']
- assert_target "\\taaa", ['testlib/gettext.rb:74']
- assert_target "Here document1\\nHere document2\\n", ['testlib/gettext.rb:78']
- assert_target "Francois Pinard", ['testlib/gettext.rb:97'] do |t|
- assert_match /proper name/, t.comment
- assert_match /Pronunciation/, t.comment
- end
- assert_target "self explaining", ['testlib/gettext.rb:102'] do |t|
- assert_nil t.comment
- end
- # TODO: assert_target "in_quote", ['testlib/gettext.rb:96']
- end
-
- def test_ruby_N
- @ary = GetText::RGetText.parse('testlib/N_.rb')
-
- assert_target 'aaa', ['testlib/N_.rb:8']
- assert_target 'aaa\n', ['testlib/N_.rb:12']
- assert_target 'bbb\nccc', ['testlib/N_.rb:16']
- assert_target 'bbb\nccc\nddd\n', ['testlib/N_.rb:20']
- assert_target 'eee', ['testlib/N_.rb:27', 'testlib/N_.rb:31']
- assert_target 'fff', ['testlib/N_.rb:31']
- assert_target 'ggghhhiii', ['testlib/N_.rb:35']
- assert_target 'a"b"c"', ['testlib/N_.rb:41']
- assert_target 'd"e"f"', ['testlib/N_.rb:45']
- assert_target 'jjj', ['testlib/N_.rb:49']
- assert_target 'kkk', ['testlib/N_.rb:50']
- assert_target 'lllmmm', ['testlib/N_.rb:54']
- assert_target 'nnn\nooo', ['testlib/N_.rb:62']
- end
-
- def test_ruby_n
- @ary = GetText::RGetText.parse('testlib/ngettext.rb')
- assert_plural_target "aaa", "aaa2", ['testlib/ngettext.rb:8']
- assert_plural_target "bbb\\n", "ccc2\\nccc2", ['testlib/ngettext.rb:12']
- assert_plural_target "ddd\\nddd", "ddd2\\nddd2", ['testlib/ngettext.rb:16']
- assert_plural_target "eee\\neee\\n", "eee2\\neee2\\n", ['testlib/ngettext.rb:21']
- assert_plural_target "ddd\\neee\\n", "ddd\\neee2", ['testlib/ngettext.rb:27']
- assert_plural_target "fff", "fff2", ['testlib/ngettext.rb:34', 'testlib/ngettext.rb:38']
- assert_plural_target "ggg", "ggg2", ['testlib/ngettext.rb:38']
- assert_plural_target "ggghhhiii", "jjjkkklll", ['testlib/ngettext.rb:42']
- assert_plural_target "a\"b\"c\"", "a\"b\"c\"2", ['testlib/ngettext.rb:51']
- assert_plural_target "mmmmmm", "mmm2mmm2", ['testlib/ngettext.rb:59']
- assert_plural_target "nnn", "nnn2", ['testlib/ngettext.rb:60']
- assert_plural_target "comment", "comments", ['testlib/ngettext.rb:76'] do |t|
- assert_equal "please provide translations for all \n the plural forms!", t.comment
- end
- end
-
- def test_ruby_p
- @ary = GetText::RGetText.parse('testlib/pgettext.rb')
- assert_target_in_context "AAA", "BBB", ["testlib/pgettext.rb:8", "testlib/pgettext.rb:12"]
- assert_target_in_context "AAA|BBB", "CCC", ["testlib/pgettext.rb:16"]
- assert_target_in_context "AAA", "CCC", ["testlib/pgettext.rb:20"]
- assert_target_in_context "CCC", "BBB", ["testlib/pgettext.rb:24"]
- assert_target_in_context "program", "name", ['testlib/pgettext.rb:34'] do |t|
- assert_equal "please translate 'name' in the context of 'program'.\n Hint: the translation should NOT contain the translation of 'program'.", t.comment
- end
- end
-
- def test_glade
- # Old style (~2.0.4)
- ary = GetText::GladeParser.parse('testlib/gladeparser.glade')
-
- assert_equal(['window1', 'testlib/gladeparser.glade:8'], ary[0])
- assert_equal(['normal text', 'testlib/gladeparser.glade:29'], ary[1])
- assert_equal(['1st line\n2nd line\n3rd line', 'testlib/gladeparser.glade:50'], ary[2])
- assert_equal(['<span color="red" weight="bold" size="large">markup </span>', 'testlib/gladeparser.glade:73'], ary[3])
- assert_equal(['<span color="red">1st line markup </span>\n<span color="blue">2nd line markup</span>', 'testlib/gladeparser.glade:94'], ary[4])
- assert_equal(['<span>&quot;markup&quot; with &lt;escaped strings&gt;</span>', 'testlib/gladeparser.glade:116'], ary[5])
- assert_equal(['duplicated', 'testlib/gladeparser.glade:137', 'testlib/gladeparser.glade:158'], ary[6])
- end
-
- def testlib_erb
- @ary = GetText::ErbParser.parse('testlib/erb.rhtml')
-
- assert_target 'aaa', ['testlib/erb.rhtml:8']
- assert_target 'aaa\n', ['testlib/erb.rhtml:11']
- assert_target 'bbb', ['testlib/erb.rhtml:12']
- assert_plural_target "ccc1", "ccc2", ['testlib/erb.rhtml:13']
- end
-
- def test_rgettext_parse
- GetText::ErbParser.init(:extnames => ['.rhtml', '.rxml'])
- @ary = GetText::RGetText.parse(['testlib/erb.rhtml'])
- assert_target 'aaa', ['testlib/erb.rhtml:8']
- assert_target 'aaa\n', ['testlib/erb.rhtml:11']
- assert_target 'bbb', ['testlib/erb.rhtml:12']
- assert_plural_target "ccc1", "ccc2", ['testlib/erb.rhtml:13']
-
- @ary = GetText::RGetText.parse(['testlib/erb.rxml'])
- assert_target 'aaa', ['testlib/erb.rxml:9']
- assert_target 'aaa\n', ['testlib/erb.rxml:12']
- assert_target 'bbb', ['testlib/erb.rxml:13']
- assert_plural_target "ccc1", "ccc2", ['testlib/erb.rxml:14']
-
- @ary = GetText::RGetText.parse(['testlib/ngettext.rb'])
- assert_plural_target "ooo", "ppp", ['testlib/ngettext.rb:64', 'testlib/ngettext.rb:65']
- assert_plural_target "qqq", "rrr", ['testlib/ngettext.rb:69', 'testlib/ngettext.rb:70']
- end
-
- private
-
- def assert_target(msgid, sources = nil)
- t = @ary.detect {|elem| elem.msgid == msgid}
- if t
- if sources
- assert_equal sources.sort, t.sources.sort, 'Translation target sources do not match.'
- end
- yield t if block_given?
- else
- flunk "Expected a translation target with id '#{msgid}'. Not found."
- end
- end
-
- def assert_plural_target(msgid, plural, sources = nil)
- assert_target msgid, sources do |t|
- assert_equal plural, t.msgid_plural, 'Expected plural form'
- yield t if block_given?
- end
- end
-
- def assert_target_in_context(msgctxt, msgid, sources = nil)
- t = @ary.detect {|elem| elem.msgid == msgid && elem.msgctxt == msgctxt}
- if t
- if sources
- assert_equal sources.sort, t.sources.sort, 'Translation target sources do not match.'
- end
- yield t if block_given?
- else
- flunk "Expected a translation target with id '#{msgid}' and context '#{msgctxt}'. Not found."
- end
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_po_generation.rb b/vendor/gems/gettext-2.1.0/test/test_po_generation.rb
deleted file mode 100644
index dea071b1b..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_po_generation.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'testlib/helper.rb'
-require 'gettext'
-require 'gettext/tools/rgettext.rb'
-require 'stringio'
-
-class TestPoGeneration < Test::Unit::TestCase
- def test_extracted_comments
- GetText::RGetText.run(
- File.join(File.dirname(__FILE__), 'testlib/gettext.rb'),
- out = StringIO.new)
- res = out.string
-
- # Use following to debug the content of the
- # created file: File.open('/tmp/test.po', 'w').write(res)
-
- assert_match '#. "Fran\u00e7ois" or (with HTML entities) "Fran&ccedil;ois".', res
- assert_no_match /Ignored/, res, 'Only comments starting with TRANSLATORS should be extracted'
- assert_no_match /TRANSLATORS: This is a proper name/, res, 'The prefix "TRANSLATORS:" should be skipped'
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_pomessage.rb b/vendor/gems/gettext-2.1.0/test/test_pomessage.rb
deleted file mode 100644
index 51b7d053d..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_pomessage.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-require 'testlib/helper.rb'
-require 'gettext/tools/parser/ruby'
-
-# Most functionality of PoMessage is thoroughly tested together
-# with the parser and po file generator. Here only tests for some special
-# functionality.
-class TestPoMessage < Test::Unit::TestCase
-
- def test_context_match
- tt1 = GetText::PoMessage.new(:msgctxt)
- tt1.msgid = 'hello'
- tt1.msgctxt = 'world'
- tt2 = GetText::PoMessage.new(:normal)
- tt2.msgid = 'hello'
- assert_raise GetText::ParseError do
- tt1.merge tt2
- end
- end
-
- def test_attribute_accumulation
- tt = GetText::PoMessage.new(:plural)
- tt.set_current_attribute 'long'
- tt.set_current_attribute ' tail'
- tt.advance_to_next_attribute
- tt.set_current_attribute 'long tails'
- assert_equal 'long tail', tt.msgid
- assert_equal 'long tails', tt.msgid_plural
- end
-
- def test_to_po_str_normal
- po = GetText::PoMessage.new(:normal)
- po.msgid = 'hello'
- po.sources = ["file1:1", "file2:10"]
- assert_equal "\n#: file1:1 file2:10\nmsgid \"hello\"\nmsgstr \"\"\n", po.to_po_str
-
- po.msgctxt = 'context'
- po.msgid_plural = 'hello2'
- # Ignore these properties.
- assert_equal "\n#: file1:1 file2:10\nmsgid \"hello\"\nmsgstr \"\"\n", po.to_po_str
- end
-
- def test_to_po_str_plural
- po = GetText::PoMessage.new(:plural)
- po.msgid = 'hello'
- po.msgid_plural = 'hello2'
- po.sources = ["file1:1", "file2:10"]
- assert_equal "\n#: file1:1 file2:10\nmsgid \"hello\"\nmsgid_plural \"hello2\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n", po.to_po_str
-
- po.msgctxt = 'context'
- # Ignore this property
- assert_equal "\n#: file1:1 file2:10\nmsgid \"hello\"\nmsgid_plural \"hello2\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n", po.to_po_str
- end
-
- def test_to_po_str_msgctxt
- po = GetText::PoMessage.new(:msgctxt)
- po.msgctxt = 'context'
- po.msgid = 'hello'
- po.sources = ["file1:1", "file2:10"]
- assert_equal "\n#: file1:1 file2:10\nmsgctxt \"context\"\nmsgid \"hello\"\nmsgstr \"\"\n", po.to_po_str
- end
-
- def test_to_po_str_msgctxt_plural
- po = GetText::PoMessage.new(:msgctxt_plural)
- po.msgctxt = 'context'
- po.msgid = 'hello'
- po.msgid_plural = 'hello2'
- po.sources = ["file1:1", "file2:10"]
- assert_equal "\n#: file1:1 file2:10\nmsgctxt \"context\"\nmsgid \"hello\"\nmsgid_plural \"hello2\"\nmsgstr[0] \"\"\nmsgstr[1] \"\"\n", po.to_po_str
- end
-
- def test_to_po_str_exception
- po = GetText::PoMessage.new(:normal)
- po.sources = ["file1:1", "file2:10"]
- assert_raise(RuntimeError){ po.to_po_str }
-
- po.sources = nil
- assert_raise(RuntimeError){ po.to_po_str }
-
- po = GetText::PoMessage.new(:plural)
- po.msgid = 'hello'
- po.sources = ["file1:1", "file2:10"]
- assert_raise(RuntimeError){ po.to_po_str }
-
- po.msgid_plural = 'hello2'
- po.sources = nil
- assert_raise(RuntimeError){ po.to_po_str }
-
- po = GetText::PoMessage.new(:msgctxt)
- po.msgid = 'hello'
- po.sources = ["file1:1", "file2:10"]
- assert_raise(RuntimeError){ po.to_po_str }
-
- po = GetText::PoMessage.new(:msgctxt_plural)
- po.msgctxt = 'context'
- po.msgid = 'hello'
- po.sources = ["file1:1", "file2:10"]
- assert_raise(RuntimeError){ po.to_po_str }
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_string.rb b/vendor/gems/gettext-2.1.0/test/test_string.rb
deleted file mode 100644
index 43460e134..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_string.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require 'testlib/helper.rb'
-
-class TestGetTextString < Test::Unit::TestCase
- def test_sprintf
- assert_equal("foo is a number", "%{msg} is a number" % {:msg => "foo"})
- assert_equal("bar is a number", "%s is a number" % ["bar"])
- assert_equal("bar is a number", "%s is a number" % "bar")
- assert_equal("1, test", "%{num}, %{record}" % {:num => 1, :record => "test"})
- assert_equal("test, 1", "%{record}, %{num}" % {:num => 1, :record => "test"})
- assert_equal("1, test", "%d, %s" % [1, "test"])
- assert_equal("test, 1", "%2$s, %1$d" % [1, "test"])
- assert_raise(ArgumentError) { "%-%" % [1] }
- end
-
- def test_sprintf_placeholder_include_non_english
- assert_equal("a", "%{foo+foo}" % {"foo+foo".to_sym => "a"})
- assert_equal("a", "%{foo.foo}" % {"foo.foo".to_sym => "a"})
- assert_equal("a }", "%{foo+foo} }" % {"foo+foo".to_sym => "a"})
- assert_equal("a { b }", "%{foo+foo} { %{bar bar-} }" % {"foo+foo".to_sym => "a", "bar bar-".to_sym => "b"})
- end
-
- def test_percent
- assert_equal("% 1", "%% %<num>d" % {:num => 1.0})
- assert_equal("%{num} %<num>d", "%%{num} %%<num>d" % {:num => 1})
- end
-
- def test_sprintf_percent_in_replacement
- assert_equal("%<not_translated>s", "%{msg}" % { :msg => '%<not_translated>s', :not_translated => 'should not happen' })
- end
-
- def test_sprintf_lack_argument
- assert_equal("%{num}, test", "%{num}, %{record}" % {:record => "test"})
- assert_equal("%{record}", "%{record}" % {:num => 1})
- end
-
- def test_no_placeholder
- assert_equal("aaa", "aaa" % {:num => 1})
- assert_equal("bbb", "bbb" % [1])
- end
-
- def test_sprintf_ruby19_style
- assert_equal("1", "%<num>d" % {:num => 1})
- assert_equal("0b1", "%<num>#b" % {:num => 1})
- assert_equal("foo", "%<msg>s" % {:msg => "foo"})
- assert_equal("1.000000", "%<num>f" % {:num => 1.0})
- assert_equal(" 1", "%<num>3.0f" % {:num => 1.0})
- assert_equal("100.00", "%<num>2.2f" % {:num => 100.0})
- assert_equal("0x64", "%<num>#x" % {:num => 100.0})
- assert_equal("a", "%<foo.foo>s" % {"foo.foo".to_sym => "a"})
- assert_raise(ArgumentError) { "%<num>,d" % {:num => 100} }
- assert_raise(ArgumentError) { "%<num>/d" % {:num => 100} }
- end
-
- def test_sprintf_old_style
- assert_equal("foo 1.000000", "%s %f" % ["foo", 1.0])
- end
-
- def test_sprintf_mix
- assert_equal("foo 1.000000", "%{name} %<num>f" % {:name => "foo", :num => 1.0})
- assert_equal("%{name} 1.000000", "%{name} %f" % [1.0])
- assert_equal("%{name} 1.000000", "%{name} %f" % [1.0, 2.0])
- end
-
-
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_textdomain_bind.rb b/vendor/gems/gettext-2.1.0/test/test_textdomain_bind.rb
deleted file mode 100644
index d44d831c1..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_textdomain_bind.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'testlib/helper.rb'
-
-class Foo
-end
-
-class TestGetTextBind < Test::Unit::TestCase
- def setup
- GetText.locale = "ja_JP.EUC-JP"
- GetText::TextDomainManager.clear_all_textdomains
- end
-
- def test_bindtextdomain
- domain = GetText.bindtextdomain("foo")
- assert_equal domain, GetText::TextDomainManager.create_or_find_textdomain_group(Object).textdomains[0]
- assert_equal domain, GetText::TextDomainManager.textdomain_pool("foo")
- end
-
- def test_textdomain
- domain1 = GetText.bindtextdomain("foo")
-
- assert_equal domain1, GetText.textdomain("foo")
-
- assert_raise(GetText::NoboundTextDomainError) {
- GetText.textdomain_to(Foo, "bar")
- }
- end
-
- def test_textdomain_to
- domain1 = GetText.bindtextdomain("foo")
-
- assert_equal domain1, GetText.textdomain_to(Foo, "foo")
-
- assert_raise(GetText::NoboundTextDomainError) {
- GetText.textdomain_to(Foo, "bar")
- }
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_textdomain_multi.rb b/vendor/gems/gettext-2.1.0/test/test_textdomain_multi.rb
deleted file mode 100644
index 2278e7e22..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_textdomain_multi.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require 'testlib/helper.rb'
-require 'testlib/multi_textdomain.rb'
-
-class TestGetTextMulti < Test::Unit::TestCase
-
- def setup
- GetText.locale = "ja"
- end
-
- def test_two_domains_in_a_class
-
- test = C11.new
- assert_equal("japanese", test.test) # Use test1.po
- assert_equal("JAPANESE", test.test2) # Use test2.po
-
- test = C12.new
- assert_equal("japanese", test.test) # Use test1.po
- assert_equal("JAPANESE", test.test2) # Use test2.po
- end
-
- def test_inheritance
- # inheritance. only parent has a textdomain and it's methods
- test = C21.new
- assert_equal("japanese", test.test) # Use C11's po(test1.po)
- assert_equal("JAPANESE", test.test2) # Use C11's po(test2.po)
-
- test = C22.new
- assert_equal("japanese", test.test) # Use C11's po(test1.po)
- assert_equal("JAPANESE", test.test2) # Use C11's po(test2.po)
- end
-
- def test_module_and_sub_modules
- # module
- assert_equal("japanese", M1.test)
-
- # sub-module. only an included module has a textdomain and it's methods
- assert_equal("japanese", M1::M1M1.test) # Same method with M1.
- assert_equal("LANGUAGE", M1::M1M1.test2) # No influence from ancestors.
-
- # sub-class (class bindtextdomain).
- test = M1::M1C1.new
- assert_equal("japanese", test.test) # Use test1.po
- assert_equal("JAPANESE", test.test2) # Use test2.po
-
- # sub-class (instance bindtextdomain).
- test = M1::M1C2.new
- assert_equal("japanese", test.test) # Use test1.po
- assert_equal("JAPANESE", test.test2) # Use test2.po
- end
-
- def test_eval
- test = C2.new
- assert_equal("japanese", test.test) # Use test1.po
- end
-
- def test_as_class_methods
- test = C3.new
- assert_equal("japanese", test.test) # Use test1.po
- assert_equal("japanese", C3.test) # Use test1.po
- end
-
- def test_simple_inheritance
- test = C4.new
- assert_equal("japanese", test.test) # Use C3's test1.po
- assert_equal("japanese", C4.test) # Use C3's test1.po
- assert_equal("JAPANESE", test.test2) # Use C4's test2.po
- assert_equal("no data", test.test3) # No po file.
- end
-
- def test_same_msgid_but_different_textdomain
- test1 = C12.new # test1 domain
- test2 = C51.new # test3 domain
- test3 = C52.new # test3 domain but inherited C11.
-
- assert_equal("japanese", test1.test) # Use text1 message
- assert_equal("JAPANESE", test2.test) # Use text3 message
- assert_equal("JAPANESE", test3.test) # Use text3 message
- end
-
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_textdomain_toplevel.rb b/vendor/gems/gettext-2.1.0/test/test_textdomain_toplevel.rb
deleted file mode 100644
index 0e737bfa3..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_textdomain_toplevel.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'testlib/helper.rb'
-include GetText
-
-bindtextdomain("test1", :path => "locale")
-module M1
- module_function
- def module_function
- _("language")
- end
-end
-
-class C1
- def instance_method
- _("language")
- end
- def self.class_method
- _("language")
- end
-end
-
-def toplevel_method
- _("language")
-end
-
-class TestGetText < Test::Unit::TestCase
- include GetText
-
- def test_toplevel
- GetText.locale = "ja"
- assert_equal("japanese", toplevel_method)
- assert_equal("japanese", M1.module_function)
- assert_equal("japanese", C1.class_method)
- assert_equal("japanese", C1.new.instance_method)
-
- GetText::TextDomainManager.clear_all_textdomains
- GetText.bindtextdomain("test1", :path => "locale")
- assert_equal("japanese", toplevel_method)
- assert_equal("japanese", M1.module_function)
- assert_equal("japanese", C1.class_method)
- assert_equal("japanese", C1.new.instance_method)
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/test_thread.rb b/vendor/gems/gettext-2.1.0/test/test_thread.rb
deleted file mode 100644
index 5fa8be84f..000000000
--- a/vendor/gems/gettext-2.1.0/test/test_thread.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require 'testlib/helper.rb'
-require 'thread'
-
-class TestThread < Test::Unit::TestCase
- include GetText
-
- bindtextdomain "test1", :path => "locale"
-
- def setup
- Locale.init(:driver => :env)
- @mutex = Mutex.new
- end
-
- def invoke_thread(tag, language, sleep_time)
- Thread.start do
- @mutex.synchronize {
- Thread.current["language"] = language
- GetText.current_locale = tag
- }
- (1..10).each do |v|
- @mutex.synchronize{
- assert_equal Thread.current["language"], _("language")
- }
- print "."
- $stdout.flush
- sleep sleep_time
- end
- end
- end
-
- def test_thread
- th1 = invoke_thread("ja_JP.eucJP", "japanese", 0.4)
- th2 = invoke_thread("fr", "french", 0.3)
- th3 = invoke_thread("en", "language", 0.1)
- th4 = invoke_thread("zh_CN", "language", 0.2) # No translation.
- th1.join
- th2.join
- th3.join
- th4.join
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/N_.rb b/vendor/gems/gettext-2.1.0/test/testlib/N_.rb
deleted file mode 100644
index f69b6ede2..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/N_.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'gettext'
-include GetText
-
-class TestRubyParser_N
- bindtextdomain("testN_rubyparser", :path => "locale")
-
- def testN_1
- N_("aaa")
- end
-
- def testN_2
- N_("aaa\n")
- end
-
- def testN_3
- N_("bbb\nccc")
- end
-
- def testN_4
- N_("bbb
-ccc
-ddd
-")
- end
-
- def testN_5
- N_("eee")
- end
-
- def testN_6
- N_("eee") + "foo" + N_("fff")
- end
-
- def testN_7
- N_("ggg"\
- "hhh"\
- "iii")
- end
-
- def testN_8
- N_('a"b"c"')
- end
-
- def testN_9
- N_("d\"e\"f\"")
- end
-
- def testN_10
- N_("jjj") +
- N_("kkk")
- end
-
- def testN_11
- N_("lll" + "mmm")
- end
-
- def testN_12
- puts N_(msg), "ppp" #Ignored
- end
-
- def testN_13
- N_("nnn\n" +
- "ooo")
- end
-end
-
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/erb.rhtml b/vendor/gems/gettext-2.1.0/test/testlib/erb.rhtml
deleted file mode 100644
index d19c75cf2..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/erb.rhtml
+++ /dev/null
@@ -1,15 +0,0 @@
-<%
- require 'gettext'
- include GetText
- bindtextdomain("helloerb", :path => "locale")
-%>
-<html>
-<head>
-<title><%= _("aaa") %></title>
-</head>
-<body>
-<h1><%= _("aaa\n") %></h1>
-<p><%= N_("bbb") %></p>
-<p><%= n_("ccc1", "ccc2", 1) %></p>
-</body>
-</html>
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/erb.rxml b/vendor/gems/gettext-2.1.0/test/testlib/erb.rxml
deleted file mode 100644
index cb0f1a269..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/erb.rxml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<%
- require 'gettext'
- include GetText
- bindtextdomain("helloerb", :path => "locale")
-%>
-<html>
-<head>
-<title><%= _("aaa") %></title>
-</head>
-<body>
-<h1><%= _("aaa\n") %></h1>
-<p><%= N_("bbb") %></p>
-<p><%= n_("ccc1", "ccc2", 1) %></p>
-</body>
-</html>
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/gettext.rb b/vendor/gems/gettext-2.1.0/test/testlib/gettext.rb
deleted file mode 100644
index 0324e9424..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/gettext.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-require 'gettext'
-include GetText
-
-class TestRubyParser
- bindtextdomain("rubyparser", :path => "locale")
-
- def test_1
- _("aaa")
- end
-
- def test_2
- _("aaa\n")
- end
-
- def test_3
- _("bbb\nccc")
- end
-
- def test_4
- _("bbb
-ccc
-ddd
-")
- end
-
- def test_5
- _("eee")
- end
-
- def test_6
- _("eee") + "foo" + _("fff")
- end
-
- def test_7
- _("ggg"\
- "hhh"\
- "iii")
- end
-
- def test_8
- _('a"b"c"')
- end
-
- def test_9
- _("d\"e\"f\"")
- end
-
- def test_10
- _("jjj") +
- _("kkk")
- end
-
- def test_11
- _("lll" + "mmm")
- end
-
- def test_12
- puts _(msg), "ppp" #Ignored
- end
-
- def test_13
- _("nnn\n" +
- "ooo")
- end
- def test_14
- _("\#")
- end
-
- def test_15
- _('#')
- end
-
- def test_16
- _('\taaa')
- end
-
- def test_17
- ret = _(<<EOF
-Here document1
-Here document2
-EOF
-)
- end
-
- def test_18
- "<div>#{_('in_quote')}</div>"
- end
-
- def about
- puts (
- # TRANSLATORS: This is a proper name. See the gettext
- # manual, section Names. Note this is actually a non-ASCII
- # name: The first name is (with Unicode escapes)
- # "Fran\u00e7ois" or (with HTML entities) "Fran&ccedil;ois".
- # Pronunciation is like "fraa-swa pee-nar".
- # This is an example from GNU gettext documentation.
- _("Francois Pinard"))
-
- puts (
- # This comment should not be extracted because it does
- # not start with 'TRANSLATORS:'
- _('self explaining'))
- end
-
-end
-
-module ActionController
- class Base
- end
-end
-class ApplicationController < ActionController::Base
- "#{Time.now.strftime('%m/%d')}"
-end
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/gladeparser.glade b/vendor/gems/gettext-2.1.0/test/testlib/gladeparser.glade
deleted file mode 100644
index 0e278cc61..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/gladeparser.glade
+++ /dev/null
@@ -1,183 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-
-<widget class="GtkWindow" id="window1">
- <property name="visible">True</property>
- <property name="title" translatable="yes">window1</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">False</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="label" translatable="yes">normal text</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="label" translatable="yes">1st line
-2nd line
-3rd line</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;span color=&quot;red&quot; weight=&quot;bold&quot; size=&quot;large&quot;&gt;markup &lt;/span&gt;</property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;span color=&quot;red&quot;&gt;1st line markup &lt;/span&gt;
-&lt;span color=&quot;blue&quot;&gt;2nd line markup&lt;/span&gt;</property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label8">
- <property name="visible">True</property>
- <property name="label" translatable="yes">&lt;span&gt;&amp;quot;markup&amp;quot; with &amp;lt;escaped strings&amp;gt;&lt;/span&gt;</property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label9">
- <property name="visible">True</property>
- <property name="label" translatable="yes">duplicated</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label10">
- <property name="visible">True</property>
- <property name="label" translatable="yes">duplicated</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <placeholder/>
- </child>
- </widget>
- </child>
-</widget>
-
-</glade-interface>
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/helper.rb b/vendor/gems/gettext-2.1.0/test/testlib/helper.rb
deleted file mode 100644
index 17754901c..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/helper.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-$LOAD_PATH.unshift File.expand_path("../../lib", File.dirname(__FILE__))
-require 'test/unit'
-
-require 'rubygems'
-require 'gettext'
-
-#optional gems
-begin
- require 'redgreen'
-rescue LoadError
-end
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/multi_textdomain.rb b/vendor/gems/gettext-2.1.0/test/testlib/multi_textdomain.rb
deleted file mode 100644
index dd9070b01..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/multi_textdomain.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-class C11
- include GetText
- def initialize
- bindtextdomain("test1", :path => "locale")
- bindtextdomain("test2", :path => "locale")
- end
- def test
- _("language")
- end
- def test2
- _("LANGUAGE")
- end
-end
-
-class C12
- include GetText
- bindtextdomain("test1", :path => "locale")
- bindtextdomain("test2", :path => "locale")
-
- def test
- _("language")
- end
- def test2
- _("LANGUAGE")
- end
-end
-
-class C21 < C11
-end
-
-class C22 < C12
-end
-
-module M1
- include GetText
- bindtextdomain("test1", :path => "locale")
-
- module_function
- def test
- _("language")
- end
-
- module M1M1
- include GetText
- module_function
- def test
- _("language")
- end
- # Doesn't translate
- def test2
- _("LANGUAGE")
- end
- end
-
- class M1C1
- include GetText
- bindtextdomain("test2", :path => "locale")
- def test
- _("language")
- end
- def test2
- _("LANGUAGE")
- end
- end
-
- class M1C2
- include GetText
- def initialize
- bindtextdomain("test2", :path => "locale")
- end
- def test
- _("language")
- end
- def test2
- _("LANGUAGE")
- end
- end
-
-end
-
-class C2
- include GetText
- def initialize
- bindtextdomain("test1", :path => "locale")
- end
-
- def test
- _("language")
- end
-
- def test_eval
- eval("_(\"language\")")
- end
-end
-
-class C3
- include GetText
- bindtextdomain("test1", :path => "locale")
-
- def test
- _("language")
- end
-
- def self.test
- _("language")
- end
-end
-
-class C4 < C3
- bindtextdomain("test2", :path => "locale")
-
- def test2
- _("LANGUAGE")
- end
-
- def test3
- _("no data")
- end
-end
-
-class C51
- include GetText
- bindtextdomain("test3", :path => "locale")
- def test
- _("language")
- end
-end
-
-class C52 < C12
- bindtextdomain("test3", :path => "locale")
-end
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/ngettext.rb b/vendor/gems/gettext-2.1.0/test/testlib/ngettext.rb
deleted file mode 100644
index d28eda695..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/ngettext.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require 'gettext'
-include GetText
-
-class TestRubyParser_n
- bindtextdomain("rubyparser", :path => "locale")
-
- def test_1
- n_("aaa","aaa2",1)
- end
-
- def test_2
- n_("bbb\n", "ccc2\nccc2", 1)
- end
-
- def test_3_1
- n_("ddd\nddd",
- "ddd2\nddd2",
- 1)
- end
- def test_3_2
- n_("eee\neee\n" ,
- "eee2\neee2\n" ,
- 1)
- end
-
- def test_4
- n_("ddd
-eee
-", "ddd
-eee2", 1)
- end
-
- def test_5_1
- n_("fff", "fff2", 1)
- end
-
- def test_5_2
- n_("fff", "fff2", 1) + "foo" + n_("ggg", "ggg2", 1)
- end
-
- def test_6
- n_("ggg"\
- "hhh"\
- "iii",
- "jjj"\
- "kkk"\
- "lll", 1)
- end
-
- def test_7
- n_('a"b"c"', 'a"b"c"2', 1)
- end
-
- def test_8
- n_("d\"e\"f\"", "d\"e\"f\"2", 1)
- end
-
- def test_9
- n_("mmm" + "mmm","mmm2" + "mmm2",1) +
- n_("nnn" ,"nnn2" ,1)
- end
-
- def test_10
- _("ooo")
- n_("ooo", "ppp", 1)
- end
-
- def test_11
- n_("qqq", "rrr", 1)
- n_("qqq", "sss", 1) # This is merged to "qqq" with plural form "rrr".
- end
-
- def extracted_comments
- # TRANSLATORS:please provide translations for all
- # the plural forms!
- n_('comment', 'comments', 2)
- end
-end
-
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/npgettext.rb b/vendor/gems/gettext-2.1.0/test/testlib/npgettext.rb
deleted file mode 100644
index b92c6cda7..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/npgettext.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'gettext'
-
-class TestNPGetText
- include GetText
- bindtextdomain("npgettext", :path => "locale")
-
- def test_1
- [np_("Magazine", "a book", "%{num} books", 1),
- np_("Magazine", "a book", "%{num} books", 2)]
- end
-
- def test_2
- [npgettext("Magazine", "a book", "%{num} books", 1),
- npgettext("Magazine", "a book", "%{num} books", 2)]
- end
-
- def test_3
- [np_("Hardcover", "a book", "%{num} books", 1),
- np_("Hardcover", "a book", "%{num} books", 2)]
- end
-
- def test_4
- [np_("Magaine", "I have a magazine", "I have %{num} magazines", 1),
- np_("Magaine", "I have a magazine", "I have %{num} magazines", 2)]
- end
-
- def test_5
- [np_("Hardcover", "a picture", "%{num} pictures", 1),
- np_("Hardcover", "a picture", "%{num} pictures", 2)] #not found.
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/nsgettext.rb b/vendor/gems/gettext-2.1.0/test/testlib/nsgettext.rb
deleted file mode 100644
index 67ef25be5..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/nsgettext.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'gettext'
-
-class TestNSGetText
- include GetText
- bindtextdomain("nsgettext", :path => "locale")
-
- def test_1
- [ns_("AAA|BBB", "CCC", 1), ns_("AAA|BBB", "CCC", 2)]
- end
-
- def test_2
- [nsgettext("AAA|BBB", "CCC", 1), nsgettext("AAA|BBB", "CCC", 2)]
- end
-
- def test_3
- [ns_("AAA", "BBB", 1), ns_("AAA", "BBB", 2)] #not found
- end
-
- def test_4
- [ns_("AAA|CCC", "DDD", 1), ns_("AAA|CCC", "DDD", 2)] #not found
- end
-
- def test_5
- [ns_("AAA|BBB|CCC", "DDD", 1), ns_("AAA|BBB|CCC", "DDD", 2)] #not found
- end
-
- def test_6
- [ns_("AAA$BBB", "CCC", 1, "$"), ns_("AAA$BBB", "CCC", 2, "$")] #not found
- end
-
- def test_7
- [ns_("AAA$B|BB", "CCC", 1, "$"), ns_("AAA$B|BB", "CCC", 2, "$")] #not found
- end
-
- def test_8
- [ns_("AAA$B|CC", "DDD", 1, "$"), ns_("AAA$B|CC", "DDD", 2, "$")]
- end
-
- def test_9
- [ns_("AAA|CCC|BBB", "DDD", 1), ns_("AAA|CCC|BBB", "DDD", 2)] #not found
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/pgettext.rb b/vendor/gems/gettext-2.1.0/test/testlib/pgettext.rb
deleted file mode 100644
index 2d4c6fd60..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/pgettext.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'gettext'
-
-class TestPGetText
- include GetText
- bindtextdomain("pgettext", :path => "locale")
-
- def test_1
- p_("AAA", "BBB")
- end
-
- def test_2
- pgettext("AAA", "BBB")
- end
-
- def test_3
- pgettext("AAA|BBB", "CCC")
- end
-
- def test_4
- p_("AAA", "CCC") #not found
- end
-
- def test_5
- p_("CCC", "BBB")
- end
-
- def test_6 # not pgettext.
- _("BBB")
- end
-
- def with_context
- # TRANSLATORS:please translate 'name' in the context of 'program'.
- # Hint: the translation should NOT contain the translation of 'program'.
- p_('program', 'name')
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/sgettext.rb b/vendor/gems/gettext-2.1.0/test/testlib/sgettext.rb
deleted file mode 100644
index 050e266bf..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/sgettext.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-require 'gettext'
-
-class TestSGetText
- include GetText
- bindtextdomain("sgettext", :path => "locale")
-
- def test_1
- s_("AAA|BBB")
- end
-
- def test_2
- sgettext("AAA|BBB")
- end
-
- def test_3
- s_("AAA") #not found
- end
-
- def test_4
- s_("AAA|CCC") #not found
- end
-
- def test_5
- s_("AAA|BBB|CCC") #not found
- end
-
- def test_6
- s_("AAA$BBB", "$") #not found
- end
-
- def test_7
- s_("AAA$B|BB", "$") #not found
- end
-
- def test_8
- s_("AAA$B|CC", "$")
- end
-
- def test_9
- s_("AAA|CCC|BBB") #not found
- end
-
- def setlocale(locale)
- __setlocale(locale)
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/testlib/simple.rb b/vendor/gems/gettext-2.1.0/test/testlib/simple.rb
deleted file mode 100644
index 64339894a..000000000
--- a/vendor/gems/gettext-2.1.0/test/testlib/simple.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'gettext'
-
-class Simple
- include GetText
- bindtextdomain("test1", :path => "locale")
-
- def test
- _("language")
- end
-
- def test_formatted_string
- _("one is %d.") % 1
- end
-end
diff --git a/vendor/gems/gettext-2.1.0/test/tools/files/de/app.po b/vendor/gems/gettext-2.1.0/test/tools/files/de/app.po
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/files/de/app.po
+++ /dev/null
diff --git a/vendor/gems/gettext-2.1.0/test/tools/files/en/app.po b/vendor/gems/gettext-2.1.0/test/tools/files/en/app.po
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/files/en/app.po
+++ /dev/null
diff --git a/vendor/gems/gettext-2.1.0/test/tools/files/en/test.po b/vendor/gems/gettext-2.1.0/test/tools/files/en/test.po
deleted file mode 100644
index 2226dc919..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/files/en/test.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: x\n"
-"POT-Creation-Date: 2009-02-15 09:23+0100\n"
-"PO-Revision-Date: 2009-02-15 09:23+0100\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: tools/files/simple_translation.rb:1
-msgid "a translation"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/test/tools/files/simple_1.po b/vendor/gems/gettext-2.1.0/test/tools/files/simple_1.po
deleted file mode 100644
index 89993dcfa..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/files/simple_1.po
+++ /dev/null
@@ -1,2 +0,0 @@
-msgid "x"
-msgstr "y" \ No newline at end of file
diff --git a/vendor/gems/gettext-2.1.0/test/tools/files/simple_2.po b/vendor/gems/gettext-2.1.0/test/tools/files/simple_2.po
deleted file mode 100644
index c404c0ced..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/files/simple_2.po
+++ /dev/null
@@ -1,2 +0,0 @@
-msgid "a"
-msgstr "b" \ No newline at end of file
diff --git a/vendor/gems/gettext-2.1.0/test/tools/files/simple_translation.rb b/vendor/gems/gettext-2.1.0/test/tools/files/simple_translation.rb
deleted file mode 100644
index 16e182a01..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/files/simple_translation.rb
+++ /dev/null
@@ -1 +0,0 @@
-_('a translation') \ No newline at end of file
diff --git a/vendor/gems/gettext-2.1.0/test/tools/files/version.po b/vendor/gems/gettext-2.1.0/test/tools/files/version.po
deleted file mode 100644
index e4aaca21a..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/files/version.po
+++ /dev/null
@@ -1,7 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: ruby-gettext 2.0.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-
-msgid "x"
-msgstr "x" \ No newline at end of file
diff --git a/vendor/gems/gettext-2.1.0/test/tools/test.pot b/vendor/gems/gettext-2.1.0/test/tools/test.pot
deleted file mode 100644
index 772ecc07b..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/test.pot
+++ /dev/null
@@ -1,21 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: x\n"
-"POT-Creation-Date: 2009-02-15 09:22+0100\n"
-"PO-Revision-Date: 2009-02-15 09:22+0100\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-
-#: tools/files/simple_translation.rb:1
-msgid "a translation"
-msgstr ""
diff --git a/vendor/gems/gettext-2.1.0/test/tools/test_tools.rb b/vendor/gems/gettext-2.1.0/test/tools/test_tools.rb
deleted file mode 100644
index 9f75f4e6a..000000000
--- a/vendor/gems/gettext-2.1.0/test/tools/test_tools.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'testlib/helper'
-
-require 'gettext/tools'
-class TestToolsTools < Test::Unit::TestCase
- def setup
- FileUtils.cp_r "tools/files", "tools/test_files"
- end
- def teardown
- FileUtils.rm_rf "tools/test_files"
- end
-
- def test_msgmerge_merges_old_and_new_po_file
- GetText.msgmerge(path('simple_1.po'),path('simple_2.po'),'X',:msgmerge=>[:sort_output,:no_location])
- assert_equal File.read(path('simple_1.po')), <<EOF
-msgid "a"
-msgstr "b"
-
-#~ msgid "x"
-#~ msgstr "y"
-EOF
- end
-
- def test_msgmerge_inserts_the_new_version
- old = backup('version.po')
- GetText.msgmerge(old,path('version.po'),'NEW')
- assert File.read(old) =~ /"Project-Id-Version: NEW\\n"/
- end
-
- def test_update_pofiles_updates_a_single_language
- GetText.update_pofiles('app',[path('simple_translation.rb')],'x',:po_root=>path('.'),:lang=>'en',:msgmerge=>[:no_location])
- text = <<EOF
-msgid "a translation"
-msgstr ""
-EOF
- assert_equal text, File.read(path('app.pot'))
- assert_equal text, File.read(path('en/app.po'))
- assert_equal '', File.read(path('de/app.po'))
- end
-
- def test_update_pofiles_updates_creates_po_folder_if_missing
- GetText.update_pofiles('app',[path('simple_translation.rb')],'x',:po_root=>path('./xx'))
- assert File.exist?(path('xx/app.pot'))
- end
-
- def test_create_mofiles_generates_mo_for_each_po
- GetText.create_mofiles(:po_root=>path('.'),:mo_root=>path('mo'))
- assert File.exist?(path('mo/en/LC_MESSAGES/app.mo'))
- assert File.exist?(path('mo/de/LC_MESSAGES/app.mo'))
- end
-private
-
- def backup(name)
- copy = path(name+".bak")
- FileUtils.cp path(name), copy
- copy
- end
-
- def path(name)
- File.join(File.dirname(__FILE__),'test_files',name)
- end
-end \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/.specification b/vendor/gems/json-1.5.1/.specification
deleted file mode 100644
index 323455f68..000000000
--- a/vendor/gems/json-1.5.1/.specification
+++ /dev/null
@@ -1,65 +0,0 @@
---- !ruby/object:Gem::Specification
-name: json
-version: !ruby/object:Gem::Version
- hash: 1
- segments:
- - 1
- - 5
- - 1
- version: 1.5.1
-platform: ruby
-authors:
-- Florian Frank
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2011-01-25 23:00:00 +00:00
-default_executable:
-dependencies: []
-
-description: This is a JSON implementation as a Ruby extension in C.
-email: flori@ping.de
-executables: []
-
-extensions: []
-
-extra_rdoc_files: []
-
-files: []
-
-has_rdoc: true
-homepage: http://flori.github.com/json
-licenses: []
-
-post_install_message:
-rdoc_options: []
-
-require_paths:
-- bin
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: json
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: JSON Implementation for Ruby
-test_files: []
-
diff --git a/vendor/gems/json-1.5.1/CHANGES b/vendor/gems/json-1.5.1/CHANGES
deleted file mode 100644
index 3ee1a8b8b..000000000
--- a/vendor/gems/json-1.5.1/CHANGES
+++ /dev/null
@@ -1,188 +0,0 @@
-2011-01-24 (1.5.1)
- * Made rake-compiler build a fat binary gem. This should fix issue
- https://github.com/flori/json/issues#issue/54.
-2011-01-22 (1.5.0)
- * Included Java source codes for the Jruby extension made by Daniel Luz
- <dev@mernen.com>.
- * Output full exception message of deep_const_get to aid debugging.
- * Fixed an issue with ruby 1.9 Module#const_defined? method, that was
- reported by Riley Goodside.
-2010-08-09 (1.4.6)
- * Fixed oversight reported in http://github.com/flori/json/issues/closed#issue/23,
- always create a new object from the state prototype.
- * Made pure and ext api more similar again.
-2010-08-07 (1.4.5)
- * Manage data structure nesting depth in state object during generation. This
- should reduce problems with to_json method definіtions that only have one
- argument.
- * Some fixes in the state objects and additional tests.
-2010-08-06 (1.4.4)
- * Fixes build problem for rubinius under OS X, http://github.com/flori/json/issues/closed#issue/25
- * Fixes crashes described in http://github.com/flori/json/issues/closed#issue/21 and
- http://github.com/flori/json/issues/closed#issue/23
-2010-05-05 (1.4.3)
- * Fixed some test assertions, from Ruby r27587 and r27590, patch by nobu.
- * Fixed issue http://github.com/flori/json/issues/#issue/20 reported by
- electronicwhisper@github. Thx!
-2010-04-26 (1.4.2)
- * Applied patch from naruse Yui NARUSE <naruse@airemix.com> to make building with
- Microsoft Visual C possible again.
- * Applied patch from devrandom <c1.github@niftybox.net> in order to allow building of
- json_pure if extensiontask is not present.
- * Thanks to Dustin Schneider <dustin@stocktwits.com>, who reported a memory
- leak, which is fixed in this release.
- * Applied 993f261ccb8f911d2ae57e9db48ec7acd0187283 patch from josh@github.
-2010-04-25 (1.4.1)
- * Fix for a bug reported by Dan DeLeo <dan@kallistec.com>, caused by T_FIXNUM
- being different on 32bit/64bit architectures.
-2010-04-23 (1.4.0)
- * Major speed improvements and building with simplified
- directory/file-structure.
- * Extension should at least be comapatible with MRI, YARV and Rubinius.
-2010-04-07 (1.2.4)
- * Triger const_missing callback to make Rails' dynamic class loading work.
-2010-03-11 (1.2.3)
- * Added a State#[] method which returns an attribute's value in order to
- increase duck type compatibility to Hash.
-2010-02-27 (1.2.2)
- * Made some changes to make the building of the parser/generator compatible
- to Rubinius.
-2009-11-25 (1.2.1)
- * Added :symbolize_names option to Parser, which returns symbols instead of
- strings in object names/keys.
-2009-10-01 (1.2.0)
- * fast_generate now raises an exeception for nan and infinite floats.
- * On Ruby 1.8 json supports parsing of UTF-8, UTF-16BE, UTF-16LE, UTF-32BE,
- and UTF-32LE JSON documents now. Under Ruby 1.9 the M17n conversion
- functions are used to convert from all supported encodings. ASCII-8BIT
- encoded strings are handled like all strings under Ruby 1.8 were.
- * Better documentation
-2009-08-23 (1.1.9)
- * Added forgotten main doc file extra_rdoc_files.
-2009-08-23 (1.1.8)
- * Applied a patch by OZAWA Sakuro <sakuro@2238club.org> to make json/pure
- work in environments that don't provide iconv.
- * Applied patch by okkez_ in order to fix Ruby Bug #1768:
- http://redmine.ruby-lang.org/issues/show/1768.
- * Finally got around to avoid the rather paranoid escaping of ?/ characters
- in the generator's output. The parsers aren't affected by this change.
- Thanks to Rich Apodaca <rapodaca@metamolecular.com> for the suggestion.
-2009-06-29 (1.1.7)
- * Security Fix for JSON::Pure::Parser. A specially designed string could
- cause catastrophic backtracking in one of the parser's regular expressions
- in earlier 1.1.x versions. JSON::Ext::Parser isn't affected by this issue.
- Thanks to Bartosz Blimke <bartosz@new-bamboo.co.uk> for reporting this
- problem.
- * This release also uses a less strict ruby version requirement for the
- creation of the mswin32 native gem.
-2009-05-10 (1.1.6)
- * No changes. І tested native linux gems in the last release and they don't
- play well with different ruby versions other than the one the gem was built
- with. This release is just to bump the version number in order to skip the
- native gem on rubyforge.
-2009-05-10 (1.1.5)
- * Started to build gems with rake-compiler gem.
- * Applied patch object/array class patch from Brian Candler
- <B.Candler@pobox.com> and fixes.
-2009-04-01 (1.1.4)
- * Fixed a bug in the creation of serialized generic rails objects reported by
- Friedrich Graeter <graeter@hydrixos.org>.
- * Deleted tests/runner.rb, we're using testrb instead.
- * Editor supports Infinity in numbers now.
- * Made some changes in order to get the library to compile/run under Ruby
- 1.9.
- * Improved speed of the code path for the fast_generate method in the pure
- variant.
-2008-07-10 (1.1.3)
- * Wesley Beary <monki@geemus.com> reported a bug in json/add/core's DateTime
- handling: If the nominator and denominator of the offset were divisible by
- each other Ruby's Rational#to_s returns them as an integer not a fraction
- with '/'. This caused a ZeroDivisionError during parsing.
- * Use Date#start and DateTime#start instead of sg method, while
- remaining backwards compatible.
- * Supports ragel >= 6.0 now.
- * Corrected some tests.
- * Some minor changes.
-2007-11-27 (1.1.2)
- * Remember default dir (last used directory) in editor.
- * JSON::Editor.edit method added, the editor can now receive json texts from
- the clipboard via C-v.
- * Load json texts from an URL pasted via middle button press.
- * Added :create_additions option to Parser. This makes it possible to disable
- the creation of additions by force, in order to treat json texts as data
- while having additions loaded.
- * Jacob Maine <jmaine@blurb.com> reported, that JSON(:foo) outputs a JSON
- object if the rails addition is enabled, which is wrong. It now outputs a
- JSON string "foo" instead, like suggested by Jacob Maine.
- * Discovered a bug in the Ruby Bugs Tracker on rubyforge, that was reported
- by John Evans lgastako@gmail.com. He could produce a crash in the JSON
- generator by returning something other than a String instance from a
- to_json method. I now guard against this by doing a rather crude type
- check, which raises an exception instead of crashing.
-2007-07-06 (1.1.1)
- * Yui NARUSE <naruse@airemix.com> sent some patches to fix tests for Ruby
- 1.9. I applied them and adapted some of them a bit to run both on 1.8 and
- 1.9.
- * Introduced a JSON.parse! method without depth checking for people who like
- danger.
- * Made generate and pretty_generate methods configurable by an options hash.
- * Added :allow_nan option to parser and generator in order to handle NaN,
- Infinity, and -Infinity correctly - if requested. Floats, which aren't numbers,
- aren't valid JSON according to RFC4627, so by default an exception will be
- raised if any of these symbols are encountered. Thanks to Andrea Censi
- <andrea.censi@dis.uniroma1.it> for his hint about this.
- * Fixed some more tests for Ruby 1.9.
- * Implemented dump/load interface of Marshal as suggested in ruby-core:11405
- by murphy <murphy@rubychan.de>.
- * Implemented the max_nesting feature for generate methods, too.
- * Added some implementations for ruby core's custom objects for
- serialisation/deserialisation purposes.
-2007-05-21 (1.1.0)
- * Implemented max_nesting feature for parser to avoid stack overflows for
- data from untrusted sources. If you trust the source, you can disable it
- with the option max_nesting => false.
- * Piers Cawley <pdcawley@bofh.org.uk> reported a bug, that not every
- character can be escaped by ?\ as required by RFC4627. There's a
- contradiction between David Crockford's JSON checker test vectors (in
- tests/fixtures) and RFC4627, though. I decided to stick to the RFC, because
- the JSON checker seems to be a bit older than the RFC.
- * Extended license to Ruby License, which includes the GPL.
- * Added keyboard shortcuts, and 'Open location' menu item to edit_json.rb.
-2007-05-09 (1.0.4)
- * Applied a patch from Yui NARUSE <naruse@airemix.com> to make JSON compile
- under Ruby 1.9. Thank you very much for mailing it to me!
- * Made binary variants of JSON fail early, instead of falling back to the
- pure version. This should avoid overshadowing of eventual problems while
- loading of the binary.
-2007-03-24 (1.0.3)
- * Improved performance of pure variant a bit.
- * The ext variant of this release supports the mswin32 platform. Ugh!
-2007-03-24 (1.0.2)
- * Ext Parser didn't parse 0e0 correctly into 0.0: Fixed!
-2007-03-24 (1.0.1)
- * Forgot some object files in the build dir. I really like that - not!
-2007-03-24 (1.0.0)
- * Added C implementations for the JSON generator and a ragel based JSON
- parser in C.
- * Much more tests, especially fixtures from json.org.
- * Further improved conformance to RFC4627.
-2007-02-09 (0.4.3)
- * Conform more to RFC4627 for JSON: This means JSON strings
- now always must contain exactly one object "{ ... }" or array "[ ... ]" in
- order to be parsed without raising an exception. The definition of what
- constitutes a whitespace is narrower in JSON than in Ruby ([ \t\r\n]), and
- there are differences in floats and integers (no octals or hexadecimals) as
- well.
- * Added aliases generate and pretty_generate of unparse and pretty_unparse.
- * Fixed a test case.
- * Catch an Iconv::InvalidEncoding exception, that seems to occur on some Sun
- boxes with SunOS 5.8, if iconv doesn't support utf16 conversions. This was
- reported by Andrew R Jackson <andrewj@bcm.tmc.edu>, thanks a bunch!
-2006-08-25 (0.4.2)
- * Fixed a bug in handling solidi (/-characters), that was reported by
- Kevin Gilpin <kevin.gilpin@alum.mit.edu>.
-2006-02-06 (0.4.1)
- * Fixed a bug related to escaping with backslashes. Thanks for the report go
- to Florian Munz <surf@theflow.de>.
-2005-09-23 (0.4.0)
- * Initial Rubyforge Version
diff --git a/vendor/gems/json-1.5.1/COPYING b/vendor/gems/json-1.5.1/COPYING
deleted file mode 100644
index c3a2126d5..000000000
--- a/vendor/gems/json-1.5.1/COPYING
+++ /dev/null
@@ -1,58 +0,0 @@
-Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.co.jp>.
-You can redistribute it and/or modify it under either the terms of the GPL
-(see GPL file), or the conditions below:
-
- 1. You may make and give away verbatim copies of the source form of the
- software without restriction, provided that you duplicate all of the
- original copyright notices and associated disclaimers.
-
- 2. You may modify your copy of the software in any way, provided that
- you do at least ONE of the following:
-
- a) place your modifications in the Public Domain or otherwise
- make them Freely Available, such as by posting said
- modifications to Usenet or an equivalent medium, or by allowing
- the author to include your modifications in the software.
-
- b) use the modified software only within your corporation or
- organization.
-
- c) rename any non-standard executables so the names do not conflict
- with standard executables, which must also be provided.
-
- d) make other distribution arrangements with the author.
-
- 3. You may distribute the software in object code or executable
- form, provided that you do at least ONE of the following:
-
- a) distribute the executables and library files of the software,
- together with instructions (in the manual page or equivalent)
- on where to get the original distribution.
-
- b) accompany the distribution with the machine-readable source of
- the software.
-
- c) give non-standard executables non-standard names, with
- instructions on where to get the original software distribution.
-
- d) make other distribution arrangements with the author.
-
- 4. You may modify and include the part of the software into any other
- software (possibly commercial). But some files in the distribution
- are not written by the author, so that they are not under this terms.
-
- They are gc.c(partly), utils.c(partly), regex.[ch], st.[ch] and some
- files under the ./missing directory. See each file for the copying
- condition.
-
- 5. The scripts and library files supplied as input to or produced as
- output from the software do not automatically fall under the
- copyright of the software, but belong to whomever generated them,
- and may be sold commercially, and may be aggregated with this
- software.
-
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
-
diff --git a/vendor/gems/json-1.5.1/COPYING-json-jruby b/vendor/gems/json-1.5.1/COPYING-json-jruby
deleted file mode 100644
index 137a3da2b..000000000
--- a/vendor/gems/json-1.5.1/COPYING-json-jruby
+++ /dev/null
@@ -1,57 +0,0 @@
-JSON-JRuby is copyrighted free software by Daniel Luz <mernen at gmail dot com>,
-and is a derivative work of Florian Frank's json library <flori at ping dot de>.
-You can redistribute it and/or modify it under either the terms of the GPL
-version 2 (see the file GPL), or the conditions below:
-
- 1. You may make and give away verbatim copies of the source form of the
- software without restriction, provided that you duplicate all of the
- original copyright notices and associated disclaimers.
-
- 2. You may modify your copy of the software in any way, provided that
- you do at least ONE of the following:
-
- a) place your modifications in the Public Domain or otherwise
- make them Freely Available, such as by posting said
- modifications to Usenet or an equivalent medium, or by allowing
- the author to include your modifications in the software.
-
- b) use the modified software only within your corporation or
- organization.
-
- c) give non-standard binaries non-standard names, with
- instructions on where to get the original software distribution.
-
- d) make other distribution arrangements with the author.
-
- 3. You may distribute the software in object code or binary form,
- provided that you do at least ONE of the following:
-
- a) distribute the binaries and library files of the software,
- together with instructions (in the manual page or equivalent)
- on where to get the original distribution.
-
- b) accompany the distribution with the machine-readable source of
- the software.
-
- c) give non-standard binaries non-standard names, with
- instructions on where to get the original software distribution.
-
- d) make other distribution arrangements with the author.
-
- 4. You may modify and include the part of the software into any other
- software (possibly commercial). But some files in the distribution
- are not written by the author, so that they are not under these terms.
-
- For the list of those files and their copying conditions, see the
- file LEGAL.
-
- 5. The scripts and library files supplied as input to or produced as
- output from the software do not automatically fall under the
- copyright of the software, but belong to whomever generated them,
- and may be sold commercially, and may be aggregated with this
- software.
-
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
diff --git a/vendor/gems/json-1.5.1/GPL b/vendor/gems/json-1.5.1/GPL
deleted file mode 100644
index db2fc4505..000000000
--- a/vendor/gems/json-1.5.1/GPL
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/vendor/gems/json-1.5.1/README b/vendor/gems/json-1.5.1/README
deleted file mode 100644
index 22249bad8..000000000
--- a/vendor/gems/json-1.5.1/README
+++ /dev/null
@@ -1,356 +0,0 @@
-== Description
-
-This is a implementation of the JSON specification according to RFC 4627
-http://www.ietf.org/rfc/rfc4627.txt . Starting from version 1.0.0 on there
-will be two variants available:
-
-* A pure ruby variant, that relies on the iconv and the stringscan
- extensions, which are both part of the ruby standard library.
-* The quite a bit faster C extension variant, which is in parts implemented
- in C and comes with its own unicode conversion functions and a parser
- generated by the ragel state machine compiler
- http://www.cs.queensu.ca/~thurston/ragel .
-
-Both variants of the JSON generator generate UTF-8 character sequences by
-default. If an :ascii_only option with a true value is given, they escape all
-non-ASCII and control characters with \uXXXX escape sequences, and support
-UTF-16 surrogate pairs in order to be able to generate the whole range of
-unicode code points.
-
-All strings, that are to be encoded as JSON strings, should be UTF-8 byte
-sequences on the Ruby side. To encode raw binary strings, that aren't UTF-8
-encoded, please use the to_json_raw_object method of String (which produces
-an object, that contains a byte array) and decode the result on the receiving
-endpoint.
-
-The JSON parsers can parse UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE
-JSON documents under Ruby 1.8. Under Ruby 1.9 they take advantage of Ruby's
-M17n features and can parse all documents which have the correct
-String#encoding set. If a document string has ASCII-8BIT as an encoding the
-parser attempts to figure out which of the UTF encodings from above it is and
-trys to parse it.
-
-== Installation
-
-It's recommended to use the extension variant of JSON, because it's faster than
-the pure ruby variant. If you cannot build it on your system, you can settle
-for the latter.
-
-Just type into the command line as root:
-
- # rake install
-
-The above command will build the extensions and install them on your system.
-
- # rake install_pure
-
-or
-
- # ruby install.rb
-
-will just install the pure ruby implementation of JSON.
-
-If you use Rubygems you can type
-
- # gem install json
-
-instead, to install the newest JSON version.
-
-There is also a pure ruby json only variant of the gem, that can be installed
-with:
-
- # gem install json_pure
-
-== Compiling the extensions yourself
-
-If you want to build the extensions yourself you need rake:
-
- You can get it from rubyforge:
- http://rubyforge.org/projects/rake
-
- or just type
-
- # gem install rake
-
- for the installation via rubygems.
-
-If you want to create the parser.c file from its parser.rl file or draw nice
-graphviz images of the state machines, you need ragel from: http://www.cs.queensu.ca/~thurston/ragel
-
-
-== Usage
-
-To use JSON you can
- require 'json'
-to load the installed variant (either the extension 'json' or the pure
-variant 'json_pure'). If you have installed the extension variant, you can
-pick either the extension variant or the pure variant by typing
- require 'json/ext'
-or
- require 'json/pure'
-
-Now you can parse a JSON document into a ruby data structure by calling
-
- JSON.parse(document)
-
-If you want to generate a JSON document from a ruby data structure call
- JSON.generate(data)
-
-You can also use the pretty_generate method (which formats the output more
-verbosely and nicely) or fast_generate (which doesn't do any of the security
-checks generate performs, e. g. nesting deepness checks).
-
-To create a valid JSON document you have to make sure, that the output is
-embedded in either a JSON array [] or a JSON object {}. The easiest way to do
-this, is by putting your values in a Ruby Array or Hash instance.
-
-There are also the JSON and JSON[] methods which use parse on a String or
-generate a JSON document from an array or hash:
-
- document = JSON 'test' => 23 # => "{\"test\":23}"
- document = JSON['test'] => 23 # => "{\"test\":23}"
-
-and
-
- data = JSON '{"test":23}' # => {"test"=>23}
- data = JSON['{"test":23}'] # => {"test"=>23}
-
-You can choose to load a set of common additions to ruby core's objects if
-you
- require 'json/add/core'
-
-After requiring this you can, e. g., serialise/deserialise Ruby ranges:
-
- JSON JSON(1..10) # => 1..10
-
-To find out how to add JSON support to other or your own classes, read the
-section "More Examples" below.
-
-To get the best compatibility to rails' JSON implementation, you can
- require 'json/add/rails'
-
-Both of the additions attempt to require 'json' (like above) first, if it has
-not been required yet.
-
-== More Examples
-
-To create a JSON document from a ruby data structure, you can call
-JSON.generate like that:
-
- json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10]
- # => "[1,2,{\"a\":3.141},false,true,null,\"4..10\"]"
-
-To get back a ruby data structure from a JSON document, you have to call
-JSON.parse on it:
-
- JSON.parse json
- # => [1, 2, {"a"=>3.141}, false, true, nil, "4..10"]
-
-Note, that the range from the original data structure is a simple
-string now. The reason for this is, that JSON doesn't support ranges
-or arbitrary classes. In this case the json library falls back to call
-Object#to_json, which is the same as #to_s.to_json.
-
-It's possible to add JSON support serialization to arbitrary classes by
-simply implementing a more specialized version of the #to_json method, that
-should return a JSON object (a hash converted to JSON with #to_json) like
-this (don't forget the *a for all the arguments):
-
- class Range
- def to_json(*a)
- {
- 'json_class' => self.class.name, # = 'Range'
- 'data' => [ first, last, exclude_end? ]
- }.to_json(*a)
- end
- end
-
-The hash key 'json_class' is the class, that will be asked to deserialise the
-JSON representation later. In this case it's 'Range', but any namespace of
-the form 'A::B' or '::A::B' will do. All other keys are arbitrary and can be
-used to store the necessary data to configure the object to be deserialised.
-
-If a the key 'json_class' is found in a JSON object, the JSON parser checks
-if the given class responds to the json_create class method. If so, it is
-called with the JSON object converted to a Ruby hash. So a range can
-be deserialised by implementing Range.json_create like this:
-
- class Range
- def self.json_create(o)
- new(*o['data'])
- end
- end
-
-Now it possible to serialise/deserialise ranges as well:
-
- json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10]
- # => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]"
- JSON.parse json
- # => [1, 2, {"a"=>3.141}, false, true, nil, 4..10]
-
-JSON.generate always creates the shortest possible string representation of a
-ruby data structure in one line. This is good for data storage or network
-protocols, but not so good for humans to read. Fortunately there's also
-JSON.pretty_generate (or JSON.pretty_generate) that creates a more readable
-output:
-
- puts JSON.pretty_generate([1, 2, {"a"=>3.141}, false, true, nil, 4..10])
- [
- 1,
- 2,
- {
- "a": 3.141
- },
- false,
- true,
- null,
- {
- "json_class": "Range",
- "data": [
- 4,
- 10,
- false
- ]
- }
- ]
-
-There are also the methods Kernel#j for generate, and Kernel#jj for
-pretty_generate output to the console, that work analogous to Core Ruby's p and
-the pp library's pp methods.
-
-The script tools/server.rb contains a small example if you want to test, how
-receiving a JSON object from a webrick server in your browser with the
-javasript prototype library http://www.prototypejs.org works.
-
-== Speed Comparisons
-
-I have created some benchmark results (see the benchmarks/data-p4-3Ghz
-subdir of the package) for the JSON-parser to estimate the speed up in the C
-extension:
-
- Comparing times (call_time_mean):
- 1 ParserBenchmarkExt#parser 900 repeats:
- 553.922304770 ( real) -> 21.500x
- 0.001805307
- 2 ParserBenchmarkYAML#parser 1000 repeats:
- 224.513358139 ( real) -> 8.714x
- 0.004454078
- 3 ParserBenchmarkPure#parser 1000 repeats:
- 26.755020642 ( real) -> 1.038x
- 0.037376163
- 4 ParserBenchmarkRails#parser 1000 repeats:
- 25.763381731 ( real) -> 1.000x
- 0.038814780
- calls/sec ( time) -> speed covers
- secs/call
-
-In the table above 1 is JSON::Ext::Parser, 2 is YAML.load with YAML
-compatbile JSON document, 3 is is JSON::Pure::Parser, and 4 is
-ActiveSupport::JSON.decode. The ActiveSupport JSON-decoder converts the
-input first to YAML and then uses the YAML-parser, the conversion seems to
-slow it down so much that it is only as fast as the JSON::Pure::Parser!
-
-If you look at the benchmark data you can see that this is mostly caused by
-the frequent high outliers - the median of the Rails-parser runs is still
-overall smaller than the median of the JSON::Pure::Parser runs:
-
- Comparing times (call_time_median):
- 1 ParserBenchmarkExt#parser 900 repeats:
- 800.592479481 ( real) -> 26.936x
- 0.001249075
- 2 ParserBenchmarkYAML#parser 1000 repeats:
- 271.002390644 ( real) -> 9.118x
- 0.003690004
- 3 ParserBenchmarkRails#parser 1000 repeats:
- 30.227910865 ( real) -> 1.017x
- 0.033082008
- 4 ParserBenchmarkPure#parser 1000 repeats:
- 29.722384421 ( real) -> 1.000x
- 0.033644676
- calls/sec ( time) -> speed covers
- secs/call
-
-I have benchmarked the JSON-Generator as well. This generated a few more
-values, because there are different modes that also influence the achieved
-speed:
-
- Comparing times (call_time_mean):
- 1 GeneratorBenchmarkExt#generator_fast 1000 repeats:
- 547.354332608 ( real) -> 15.090x
- 0.001826970
- 2 GeneratorBenchmarkExt#generator_safe 1000 repeats:
- 443.968212317 ( real) -> 12.240x
- 0.002252414
- 3 GeneratorBenchmarkExt#generator_pretty 900 repeats:
- 375.104545883 ( real) -> 10.341x
- 0.002665923
- 4 GeneratorBenchmarkPure#generator_fast 1000 repeats:
- 49.978706968 ( real) -> 1.378x
- 0.020008521
- 5 GeneratorBenchmarkRails#generator 1000 repeats:
- 38.531868759 ( real) -> 1.062x
- 0.025952543
- 6 GeneratorBenchmarkPure#generator_safe 1000 repeats:
- 36.927649925 ( real) -> 1.018x 7 (>=3859)
- 0.027079979
- 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats:
- 36.272134441 ( real) -> 1.000x 6 (>=3859)
- 0.027569373
- calls/sec ( time) -> speed covers
- secs/call
-
-In the table above 1-3 are JSON::Ext::Generator methods. 4, 6, and 7 are
-JSON::Pure::Generator methods and 5 is the Rails JSON generator. It is now a
-bit faster than the generator_safe and generator_pretty methods of the pure
-variant but slower than the others.
-
-To achieve the fastest JSON document output, you can use the fast_generate
-method. Beware, that this will disable the checking for circular Ruby data
-structures, which may cause JSON to go into an infinite loop.
-
-Here are the median comparisons for completeness' sake:
-
- Comparing times (call_time_median):
- 1 GeneratorBenchmarkExt#generator_fast 1000 repeats:
- 708.258020939 ( real) -> 16.547x
- 0.001411915
- 2 GeneratorBenchmarkExt#generator_safe 1000 repeats:
- 569.105020353 ( real) -> 13.296x
- 0.001757145
- 3 GeneratorBenchmarkExt#generator_pretty 900 repeats:
- 482.825371244 ( real) -> 11.280x
- 0.002071142
- 4 GeneratorBenchmarkPure#generator_fast 1000 repeats:
- 62.717626652 ( real) -> 1.465x
- 0.015944481
- 5 GeneratorBenchmarkRails#generator 1000 repeats:
- 43.965681162 ( real) -> 1.027x
- 0.022745013
- 6 GeneratorBenchmarkPure#generator_safe 1000 repeats:
- 43.929073409 ( real) -> 1.026x 7 (>=3859)
- 0.022763968
- 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats:
- 42.802514491 ( real) -> 1.000x 6 (>=3859)
- 0.023363113
- calls/sec ( time) -> speed covers
- secs/call
-
-== Author
-
-Florian Frank <mailto:flori@ping.de>
-
-== License
-
-Ruby License, see the COPYING file included in the source distribution. The
-Ruby License includes the GNU General Public License (GPL), Version 2, so see
-the file GPL as well.
-
-== Download
-
-The latest version of this library can be downloaded at
-
-* http://rubyforge.org/frs?group_id=953
-
-Online Documentation should be located at
-
-* http://json.rubyforge.org
diff --git a/vendor/gems/json-1.5.1/README-json-jruby.markdown b/vendor/gems/json-1.5.1/README-json-jruby.markdown
deleted file mode 100644
index 13368378d..000000000
--- a/vendor/gems/json-1.5.1/README-json-jruby.markdown
+++ /dev/null
@@ -1,33 +0,0 @@
-JSON-JRuby
-==========
-
-JSON-JRuby is a port of Florian Frank's native
-[`json` library](http://json.rubyforge.org/) to JRuby.
-It aims to be a perfect drop-in replacement for `json_pure`.
-
-
-Development version
-===================
-
-The latest version is available from the
-[Git repository](http://github.com/mernen/json-jruby/tree):
-
- git clone git://github.com/mernen/json-jruby.git
-
-
-Compiling
-=========
-
-You'll need JRuby version 1.2 or greater to build JSON-JRuby.
-Its path must be set on the `jruby.dir` property of
-`nbproject/project.properties` (defaults to `../jruby`).
-
-Additionally, you'll need [Ant](http://ant.apache.org/), and
-[Ragel](http://www.cs.queensu.ca/~thurston/ragel/) 6.4 or greater.
-
-Then, from the folder where the sources are located, type:
-
- ant clean jar
-
-to clean any leftovers from previous builds and generate the `.jar` files.
-To generate a RubyGem, specify the `gem` action rather than `jar`.
diff --git a/vendor/gems/json-1.5.1/Rakefile b/vendor/gems/json-1.5.1/Rakefile
deleted file mode 100644
index 8bbd7d95d..000000000
--- a/vendor/gems/json-1.5.1/Rakefile
+++ /dev/null
@@ -1,401 +0,0 @@
-begin
- require 'rake/gempackagetask'
-rescue LoadError
-end
-
-begin
- require 'rake/extensiontask'
-rescue LoadError
- warn "WARNING: rake-compiler is not installed. You will not be able to build the json gem until you install it."
-end
-
-require 'rbconfig'
-include Config
-
-require 'rake/clean'
-CLOBBER.include Dir['benchmarks/data/*.{dat,log}']
-CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp',
- FileList["ext/**/{Makefile,mkmf.log}"], 'build', 'dist', FileList['**/*.rbc'],
- FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def,jar,class}"],
- FileList['java/src/**/*.class']
-
-MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') }
-PKG_NAME = 'json'
-PKG_TITLE = 'JSON Implementation for Ruby'
-PKG_VERSION = File.read('VERSION').chomp
-PKG_FILES = FileList["**/*"].exclude(/CVS|pkg|tmp|coverage|Makefile|\.nfs\.|\.iml\Z/).exclude(/\.(so|bundle|o|class|#{CONFIG['DLEXT']})$/)
-
-EXT_ROOT_DIR = 'ext/json/ext'
-EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser"
-EXT_PARSER_DL = "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}"
-RAGEL_PATH = "#{EXT_PARSER_DIR}/parser.rl"
-EXT_PARSER_SRC = "#{EXT_PARSER_DIR}/parser.c"
-PKG_FILES << EXT_PARSER_SRC
-EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator"
-EXT_GENERATOR_DL = "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}"
-EXT_GENERATOR_SRC = "#{EXT_GENERATOR_DIR}/generator.c"
-
-JAVA_DIR = "java/src/json/ext"
-JAVA_RAGEL_PATH = "#{JAVA_DIR}/Parser.rl"
-JAVA_PARSER_SRC = "#{JAVA_DIR}/Parser.java"
-JAVA_SOURCES = FileList["#{JAVA_DIR}/*.java"]
-JAVA_CLASSES = []
-JRUBY_PARSER_JAR = File.expand_path("lib/json/ext/parser.jar")
-JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar")
-
-RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find { |c| system(c, '-v') }
-RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find { |c| system(c, '-v') }
-
-def myruby(*args, &block)
- @myruby ||= File.join(CONFIG['bindir'], CONFIG['ruby_install_name'])
- options = (Hash === args.last) ? args.pop : {}
- if args.length > 1 then
- sh(*([@myruby] + args + [options]), &block)
- else
- sh("#{@myruby} #{args.first}", options, &block)
- end
-end
-
-desc "Installing library (pure)"
-task :install_pure => :version do
- myruby 'install.rb'
-end
-
-task :install_ext_really do
- sitearchdir = CONFIG["sitearchdir"]
- cd 'ext' do
- for file in Dir["json/ext/*.#{CONFIG['DLEXT']}"]
- d = File.join(sitearchdir, file)
- mkdir_p File.dirname(d)
- install(file, d)
- end
- end
-end
-
-desc "Installing library (extension)"
-task :install_ext => [ :compile_ext, :install_pure, :install_ext_really ]
-
-desc "Installing library (extension)"
-if RUBY_PLATFORM =~ /java/
- task :install => :install_pure
-else
- task :install => :install_ext
-end
-
-if defined?(Gem) and defined?(Rake::GemPackageTask)
- spec_pure = Gem::Specification.new do |s|
- s.name = 'json_pure'
- s.version = PKG_VERSION
- s.summary = PKG_TITLE
- s.description = "This is a JSON implementation in pure Ruby."
-
- s.files = PKG_FILES
-
- s.require_path = 'lib'
-
- s.bindir = "bin"
- s.executables = [ "edit_json.rb", "prettify_json.rb" ]
- s.default_executable = "edit_json.rb"
-
- s.has_rdoc = true
- s.extra_rdoc_files << 'README'
- s.rdoc_options <<
- '--title' << 'JSON implemention for ruby' << '--main' << 'README'
- s.test_files.concat Dir['./tests/test_*.rb']
-
- s.author = "Florian Frank"
- s.email = "flori@ping.de"
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
- s.rubyforge_project = "json"
- end
-
- Rake::GemPackageTask.new(spec_pure) do |pkg|
- pkg.need_tar = true
- pkg.package_files = PKG_FILES
- end
-end
-
-if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::ExtensionTask)
- spec_ext = Gem::Specification.new do |s|
- s.name = 'json'
- s.version = PKG_VERSION
- s.summary = PKG_TITLE
- s.description = "This is a JSON implementation as a Ruby extension in C."
-
- s.files = PKG_FILES
-
- s.extensions = FileList['ext/**/extconf.rb']
-
- s.require_path = EXT_ROOT_DIR
- s.require_paths << 'ext'
- s.require_paths << 'lib'
-
- s.bindir = "bin"
- s.executables = [ "edit_json.rb", "prettify_json.rb" ]
- s.default_executable = "edit_json.rb"
-
- s.has_rdoc = true
- s.extra_rdoc_files << 'README'
- s.rdoc_options <<
- '--title' << 'JSON implemention for Ruby' << '--main' << 'README'
- s.test_files.concat Dir['./tests/test_*.rb']
-
- s.author = "Florian Frank"
- s.email = "flori@ping.de"
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
- s.rubyforge_project = "json"
- end
-
- Rake::GemPackageTask.new(spec_ext) do |pkg|
- pkg.need_tar = true
- pkg.package_files = PKG_FILES
- end
-
- Rake::ExtensionTask.new do |ext|
- ext.name = 'parser'
- ext.gem_spec = spec_ext
- ext.cross_compile = true
- ext.cross_platform = %w[i386-mswin32 i386-mingw32]
- ext.ext_dir = 'ext/json/ext/parser'
- ext.lib_dir = 'lib/json/ext'
- end
-
- Rake::ExtensionTask.new do |ext|
- ext.name = 'generator'
- ext.gem_spec = spec_ext
- ext.cross_compile = true
- ext.cross_platform = %w[i386-mswin32 i386-mingw32]
- ext.ext_dir = 'ext/json/ext/generator'
- ext.lib_dir = 'lib/json/ext'
- end
-end
-
-desc m = "Writing version information for #{PKG_VERSION}"
-task :version do
- puts m
- File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v|
- v.puts <<EOT
-module JSON
- # JSON version
- VERSION = '#{PKG_VERSION}'
- VERSION_ARRAY = VERSION.split(/\\./).map { |x| x.to_i } # :nodoc:
- VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
- VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
- VERSION_BUILD = VERSION_ARRAY[2] # :nodoc:
-end
-EOT
- end
-end
-
-desc "Testing library (pure ruby)"
-task :test_pure => :clean do
- ENV['JSON'] = 'pure'
- ENV['RUBYOPT'] = "-Ilib #{ENV['RUBYOPT']}"
- myruby '-S', 'testrb', *Dir['./tests/test_*.rb']
-end
-
-desc "Testing library (pure ruby and extension)"
-task :test => [ :test_pure, :test_ext ]
-
-
-if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
- file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do
- cd JAVA_DIR do
- if RAGEL_CODEGEN == 'ragel'
- sh "ragel Parser.rl -J -o Parser.java"
- else
- sh "ragel -x Parser.rl | #{RAGEL_CODEGEN} -J"
- end
- end
- end
-
- desc "Generate parser for java with ragel"
- task :ragel => JAVA_PARSER_SRC
-
- desc "Delete the ragel generated Java source"
- task :ragel_clean do
- rm_rf JAVA_PARSER_SRC
- end
-
- JRUBY_JAR = File.join(Config::CONFIG["libdir"], "jruby.jar")
- if File.exist?(JRUBY_JAR)
- JAVA_SOURCES.each do |src|
- classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':'
- obj = src.sub(/\.java\Z/, '.class')
- file obj => src do
- sh 'javac', '-classpath', classpath, '-source', '1.5', src
- end
- JAVA_CLASSES << obj
- end
- else
- warn "WARNING: Cannot find jruby in path => Cannot build jruby extension!"
- end
-
- desc "Compiling jruby extension"
- task :compile_ext => JAVA_CLASSES
-
- desc "Package the jruby gem"
- task :jruby_gem => :create_jar do
- sh 'gem build json-java.gemspec'
- mkdir_p 'pkg'
- mv "json-#{PKG_VERSION}-java.gem", 'pkg'
- end
-
- desc "Testing library (jruby)"
- task :test_ext => :create_jar do
- ENV['JSON'] = 'ext'
- myruby '-S', 'testrb', '-Ilib', *Dir['./tests/test_*.rb']
- end
-
- file JRUBY_PARSER_JAR => :compile_ext do
- cd 'java/src' do
- parser_classes = FileList[
- "json/ext/ByteListTranscoder*.class",
- "json/ext/OptionsReader*.class",
- "json/ext/Parser*.class",
- "json/ext/RuntimeInfo*.class",
- "json/ext/StringDecoder*.class",
- "json/ext/Utils*.class"
- ]
- sh 'jar', 'cf', File.basename(JRUBY_PARSER_JAR), *parser_classes
- mv File.basename(JRUBY_PARSER_JAR), File.dirname(JRUBY_PARSER_JAR)
- end
- end
-
- desc "Create parser jar"
- task :create_parser_jar => JRUBY_PARSER_JAR
-
- file JRUBY_GENERATOR_JAR => :compile_ext do
- cd 'java/src' do
- generator_classes = FileList[
- "json/ext/ByteListTranscoder*.class",
- "json/ext/OptionsReader*.class",
- "json/ext/Generator*.class",
- "json/ext/RuntimeInfo*.class",
- "json/ext/StringEncoder*.class",
- "json/ext/Utils*.class"
- ]
- sh 'jar', 'cf', File.basename(JRUBY_GENERATOR_JAR), *generator_classes
- mv File.basename(JRUBY_GENERATOR_JAR), File.dirname(JRUBY_GENERATOR_JAR)
- end
- end
-
- desc "Create generator jar"
- task :create_generator_jar => JRUBY_GENERATOR_JAR
-
- desc "Create parser and generator jars"
- task :create_jar => [ :create_parser_jar, :create_generator_jar ]
-
- desc "Build all gems and archives for a new release of the jruby extension."
- task :release => [ :clean, :version, :jruby_gem ]
-else
- desc "Compiling extension"
- task :compile_ext => [ EXT_PARSER_DL, EXT_GENERATOR_DL ]
-
- file EXT_PARSER_DL => EXT_PARSER_SRC do
- cd EXT_PARSER_DIR do
- myruby 'extconf.rb'
- sh MAKE
- end
- cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
- end
-
- file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do
- cd EXT_GENERATOR_DIR do
- myruby 'extconf.rb'
- sh MAKE
- end
- cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
- end
-
- desc "Testing library (extension)"
- task :test_ext => :compile_ext do
- ENV['JSON'] = 'ext'
- ENV['RUBYOPT'] = "-Iext:lib #{ENV['RUBYOPT']}"
- myruby '-S', 'testrb', *Dir['./tests/test_*.rb']
- end
-
- desc "Benchmarking parser"
- task :benchmark_parser do
- ENV['RUBYOPT'] = "-Ilib:ext #{ENV['RUBYOPT']}"
- myruby 'benchmarks/parser_benchmark.rb'
- myruby 'benchmarks/parser2_benchmark.rb'
- end
-
- desc "Benchmarking generator"
- task :benchmark_generator do
- ENV['RUBYOPT'] = "-Ilib:ext #{ENV['RUBYOPT']}"
- myruby 'benchmarks/generator_benchmark.rb'
- myruby 'benchmarks/generator2_benchmark.rb'
- end
-
- desc "Benchmarking library"
- task :benchmark => [ :benchmark_parser, :benchmark_generator ]
-
- desc "Create RDOC documentation"
- task :doc => [ :version, EXT_PARSER_SRC ] do
- sh "sdoc -o doc -t '#{PKG_TITLE}' -m README README lib/json.rb #{FileList['lib/json/**/*.rb']} #{EXT_PARSER_SRC} #{EXT_GENERATOR_SRC}"
- end
-
- desc "Generate parser with ragel"
- task :ragel => EXT_PARSER_SRC
-
- desc "Delete the ragel generated C source"
- task :ragel_clean do
- rm_rf EXT_PARSER_SRC
- end
-
- file EXT_PARSER_SRC => RAGEL_PATH do
- cd EXT_PARSER_DIR do
- if RAGEL_CODEGEN == 'ragel'
- sh "ragel parser.rl -G2 -o parser.c"
- else
- sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2"
- end
- end
- end
-
- desc "Generate diagrams of ragel parser (ps)"
- task :ragel_dot_ps do
- root = 'diagrams'
- specs = []
- File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
- for s in specs
- if RAGEL_DOTGEN == 'ragel'
- sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tps -o#{root}/#{s}.ps"
- else
- sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tps -o#{root}/#{s}.ps"
- end
- end
- end
-
- desc "Generate diagrams of ragel parser (png)"
- task :ragel_dot_png do
- root = 'diagrams'
- specs = []
- File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
- for s in specs
- if RAGEL_DOTGEN == 'ragel'
- sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tpng -o#{root}/#{s}.png"
- else
- sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tpng -o#{root}/#{s}.png"
- end
- end
- end
-
- desc "Generate diagrams of ragel parser"
- task :ragel_dot => [ :ragel_dot_png, :ragel_dot_ps ]
-
- task :environment do
- ENV['RUBY_CC_VERSION'] = '1.8.7:1.9.2'
- end
-
- desc "Build all gems and archives for a new release of json and json_pure."
- task :release => [ :clean, :version, :environment, :cross, :native, :gem, ] do
- sh "#$0 clean native gem"
- sh "#$0 clean package"
- end
-end
-
-desc "Compile in the the source directory"
-task :default => [ :version ]
diff --git a/vendor/gems/json-1.5.1/TODO b/vendor/gems/json-1.5.1/TODO
deleted file mode 100644
index 8b1378917..000000000
--- a/vendor/gems/json-1.5.1/TODO
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/vendor/gems/json-1.5.1/VERSION b/vendor/gems/json-1.5.1/VERSION
deleted file mode 100644
index 26ca59460..000000000
--- a/vendor/gems/json-1.5.1/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-1.5.1
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log
deleted file mode 100644
index f63d7ff11..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log
+++ /dev/null
@@ -1,52 +0,0 @@
-========================== 2009-04-01T16:54:14 CEST ===========================
-
-Comparing times (call_time_mean):
- 1 GeneratorBenchmarkExt#generator_fast 1000 repeats:
- 547.354332608 ( real) -> 15.090x
- 0.001826970
- 2 GeneratorBenchmarkExt#generator_safe 1000 repeats:
- 443.968212317 ( real) -> 12.240x
- 0.002252414
- 3 GeneratorBenchmarkExt#generator_pretty 900 repeats:
- 375.104545883 ( real) -> 10.341x
- 0.002665923
- 4 GeneratorBenchmarkPure#generator_fast 1000 repeats:
- 49.978706968 ( real) -> 1.378x
- 0.020008521
- 5 GeneratorBenchmarkRails#generator 1000 repeats:
- 38.531868759 ( real) -> 1.062x
- 0.025952543
- 6 GeneratorBenchmarkPure#generator_safe 1000 repeats:
- 36.927649925 ( real) -> 1.018x 7 (>=3859)
- 0.027079979
- 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats:
- 36.272134441 ( real) -> 1.000x 6 (>=3859)
- 0.027569373
- calls/sec ( time) -> speed covers
- secs/call
-
-Comparing times (call_time_median):
- 1 GeneratorBenchmarkExt#generator_fast 1000 repeats:
- 708.258020939 ( real) -> 16.547x
- 0.001411915
- 2 GeneratorBenchmarkExt#generator_safe 1000 repeats:
- 569.105020353 ( real) -> 13.296x
- 0.001757145
- 3 GeneratorBenchmarkExt#generator_pretty 900 repeats:
- 482.825371244 ( real) -> 11.280x
- 0.002071142
- 4 GeneratorBenchmarkPure#generator_fast 1000 repeats:
- 62.717626652 ( real) -> 1.465x
- 0.015944481
- 5 GeneratorBenchmarkRails#generator 1000 repeats:
- 43.965681162 ( real) -> 1.027x
- 0.022745013
- 6 GeneratorBenchmarkPure#generator_safe 1000 repeats:
- 43.929073409 ( real) -> 1.026x 7 (>=3859)
- 0.022763968
- 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats:
- 42.802514491 ( real) -> 1.000x 6 (>=3859)
- 0.023363113
- calls/sec ( time) -> speed covers
- secs/call
-===============================================================================
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat
deleted file mode 100644
index 4b1253c71..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.00598106516199361
-3 -0.0112807270419403
-4 -0.0123696625707977
-5 -0.0156474123184087
-6 -0.0167058727326317
-7 -0.0174226257732614
-8 -0.0189193377912716
-9 -0.0214634645195233
-10 -0.0210243967687236
-11 -0.0184155266311585
-12 -0.0181108782382041
-13 -0.0176431070033873
-14 -0.0156578972028912
-15 -0.0177374502087085
-16 -0.0141455286987274
-17 -0.00795945141612284
-18 -0.0113514826844811
-19 -0.00973302086315654
-20 -0.00752544154967475
-21 -0.00910755332739381
-22 -0.0135251862007292
-23 -0.018973749693597
-24 -0.0204970425654037
-25 -0.0215794434931503
-26 -0.0208820323198205
-27 -0.0215343932179269
-28 -0.0197971427401652
-29 -0.0184170283596744
-30 -0.0175671796001255
-31 -0.0182236843115851
-32 -0.0197281221230859
-33 -0.0150052309130744
-34 -0.0149918485410557
-35 -0.0148118613887254
-36 -0.0167181900944588
-37 -0.0206983251289769
-38 -0.0210801801789031
-39 -0.0208844740744579
-40 -0.019184207940328
-41 -0.017212049362023
-42 -0.0120240041713764
-43 -0.0100234143586629
-44 -0.00665522354326635
-45 -0.0100620537646498
-46 -0.00769258313093049
-47 -0.0101574928855612
-48 -0.0159677916154784
-49 -0.0165646691066312
-50 -0.0130718375795871
-51 -0.0164703973814153
-52 -0.0175737709174274
-53 -0.0196185539680136
-54 -0.0206376650276647
-55 -0.0205816624943907
-56 -0.0182046841305021
-57 -0.0170847346598826
-58 -0.0173697791657325
-59 -0.0137208345061376
-60 -0.015172781992446
-61 -0.0115255106202091
-62 0.417092484407713
-63 0.504693995877898
-64 -0.00952721402961746
-65 -0.0131282852877526
-66 -0.0119948030163429
-67 -0.016073832621251
-68 -0.0161014355592232
-69 -0.0171579854383285
-70 -0.01991680519785
-71 -0.0201834782243293
-72 -0.0193410584396016
-73 -0.0171039752714963
-74 -0.0161429988491727
-75 -0.0132132704199617
-76 -0.0168078802690772
-77 -0.0158003286920553
-78 -0.00835714207351243
-79 -0.00762120905134282
-80 -0.0123153809247642
-81 -0.00899280191875777
-82 -0.0119224362468367
-83 -0.0119149552172981
-84 -0.0153878383194161
-85 -0.0180946307259483
-86 -0.0183903902356951
-87 -0.0192363155579457
-88 -0.0187515314979391
-89 -0.017863448747676
-90 -0.0164433211511183
-91 -0.0165939525554464
-92 -0.0165402045616707
-93 -0.0185978157278274
-94 -0.0142998133920208
-95 -0.0132850828003168
-96 -0.0138653751741504
-97 -0.015439338933265
-98 -0.020103623875719
-99 -0.0195401109212907
-100 -0.0201426108270252
-101 -0.0189159648139772
-102 -0.017741354411347
-103 -0.0123542006315354
-104 -0.00844298039184578
-105 -0.00684884437276309
-106 -0.00886668438174435
-107 -0.0112356781545771
-108 -0.00988387556228173
-109 -0.0132456696681112
-110 -0.0163390481544352
-111 -0.0139327158127501
-112 -0.0163794215654705
-113 -0.016828431108095
-114 -0.0170664831346389
-115 -0.0194839016196901
-116 -0.0196691116442597
-117 -0.0171523870407326
-118 -0.0162329780166863
-119 -0.015465269120626
-120 -0.0149628404982249
-121 -0.0131035423300313
-122 -0.0131195334166545
-123 -0.00981529237544382
-124 0.80187886471569
-125 0.0584684544905557
-126 -0.0102423491415993
-127 -0.0120909818906237
-128 -0.0108758895949621
-129 -0.014289679096502
-130 -0.0143039174642426
-131 -0.0156868282211593
-132 -0.0179722786147755
-133 -0.018466068371964
-134 -0.017079048029739
-135 -0.015065426013034
-136 -0.0138193891158787
-137 -0.0108007611003438
-138 -0.0135404983439662
-139 -0.0106058448707185
-140 -0.00496922876002826
-141 -0.00606791982549938
-142 -0.00898435609237426
-143 -0.00744828430883844
-144 -0.00954635887187427
-145 -0.0117471427501629
-146 -0.0167882985759187
-147 -0.0165458334875186
-148 -0.0185963339262843
-149 -0.0180476363378826
-150 -0.0184792287658906
-151 -0.0168571398090795
-152 -0.0156376237363163
-153 -0.0147405503105207
-154 -0.0155752570759927
-155 -0.0168091690226222
-156 -0.0121055609701471
-157 -0.0119152241705694
-158 -0.0119692018483073
-159 -0.0139405471343238
-160 -0.0182047564679262
-161 -0.0184815245671085
-162 -0.0183316150688267
-163 -0.016818527387266
-164 -0.0172998927309072
-165 -0.0124657171517376
-166 -0.0142205952112049
-167 -0.0114632791024164
-168 -0.011221691825434
-169 -0.00957685728179515
-170 -0.0118576208768814
-171 -0.0153568395493832
-172 -0.0151309123215381
-173 -0.0112872846794788
-174 -0.0147612619416181
-175 -0.0154278253183317
-176 -0.017303559049782
-177 -0.0182913411620323
-178 -0.0177712913609271
-179 -0.0155461026200739
-180 -0.0145007758787646
-181 -0.0144152256728993
-182 -0.0107727311780094
-183 -0.0119747664680712
-184 -0.00882273326524172
-185 0.298288232093739
-186 0.504424933837681
-187 -0.00805741122482888
-188 -0.00961890557289795
-189 -0.00944688808242372
-190 -0.0119139223572203
-191 -0.0124508210479303
-192 -0.0127383878728495
-193 -0.0140193628792942
-194 -0.0170021455698375
-195 -0.0164885587823976
-196 -0.0148914800888949
-197 -0.0140274704089252
-198 -0.0131444255262164
-199 -0.0142902568930679
-200 -0.0126395509953569
-201 -0.00514616330632373
-202 -0.00425889059218646
-203 -0.00870210148720889
-204 -0.00484025498847868
-205 -0.00794583465279226
-206 -0.0116098809300245
-207 -0.0102840248799257
-208 -0.0140847096783508
-209 -0.0161819274468977
-210 -0.0172520609046289
-211 -0.0165784733425168
-212 -0.0171152877835852
-213 -0.0173274798435417
-214 -0.0172101117258917
-215 -0.0170745436946526
-216 -0.0166392767496565
-217 -0.0113694394099134
-218 -0.0105561014609266
-219 -0.0105629655709691
-220 -0.0125843349808509
-221 -0.0169833235509721
-222 -0.0165970567333725
-223 -0.0169456130691041
-224 -0.0161440375799497
-225 -0.0149208783509213
-226 -0.0127041663317928
-227 -0.0111128965166982
-228 -0.0107029810231524
-229 -0.0101086923411873
-230 -0.0118221345845309
-231 -0.0102332052283776
-232 -0.0142577541114976
-233 -0.0140498538213083
-234 -0.010942704916447
-235 -0.0136212685457223
-236 -0.0138034339481212
-237 -0.0142845001756096
-238 -0.0165754738828122
-239 -0.0171898507581589
-240 -0.0146271352439982
-241 -0.0137790375298089
-242 -0.0133917511680577
-243 -0.0131288925890812
-244 -0.0109685827301647
-245 -0.0109244911317575
-246 -0.0080777880722406
-247 0.629508042863424
-248 0.116751190107802
-249 -0.00891172050628469
-250 -0.0107100331770611
-251 -0.00937995296389259
-252 -0.0124380337244143
-253 -0.0121281792844181
-254 -0.0135654919014245
-255 -0.0157362779934119
-256 -0.0164366578243166
-257 -0.0158700429675927
-258 -0.0136292281849102
-259 -0.0127546292697666
-260 -0.0122591657651713
-261 -0.0127690216839386
-262 -0.00988530296069743
-263 -0.00345655852423828
-264 -0.00433593866795492
-265 -0.00706082950577672
-266 -0.00451315885069749
-267 -0.00668518865876445
-268 -0.00988046989504585
-269 -0.0142752753866166
-270 -0.0139256221754419
-271 -0.0154989360192202
-272 -0.0151674600751258
-273 -0.0149460719819308
-274 -0.0149332807768296
-275 -0.0156711823892888
-276 -0.0155655062141426
-277 -0.0160655120365346
-278 -0.0148872833405304
-279 -0.00979872106668723
-280 -0.00908095518721164
-281 -0.00991496017614028
-282 -0.0116461289373857
-283 -0.0161876753215528
-284 -0.0160928457909713
-285 -0.0161826534411892
-286 -0.0144074994368989
-287 -0.0150828945998731
-288 -0.0112888375805587
-289 -0.01017522369822
-290 -0.00930009208093838
-291 -0.00867898201478243
-292 -0.00724704290881507
-293 -0.00975976377430877
-294 -0.0136277415192816
-295 -0.013064486102752
-296 -0.00951242385528366
-297 -0.0127976272170567
-298 -0.0136452137191805
-299 -0.0153115325990551
-300 -0.0163644585755829
-301 -0.0159743500315232
-302 -0.0137072967343182
-303 -0.0124465021916348
-304 -0.0124687214149045
-305 -0.00923829560254089
-306 -0.0116586507911887
-307 -0.0118002509969036
-308 0.176862227601212
-309 0.507428903450577
-310 -0.00730757087579498
-311 -0.00846216129742899
-312 -0.0086945045504047
-313 -0.011091656573089
-314 -0.0114036881984761
-315 -0.0114574795677765
-316 -0.0125072909586858
-317 -0.0147923369011883
-318 -0.0139629326786614
-319 -0.0118661842320723
-320 -0.0108640634604502
-321 -0.010582567791708
-322 -0.0114105551744683
-323 -0.0105534816285999
-324 -0.00543143567377151
-325 -0.00207879610778993
-326 -0.00616628496249775
-327 -0.00538988970591758
-328 -0.0031888414219768
-329 -0.00479592155107035
-330 -0.00797063379731725
-331 -0.011431205793035
-332 -0.0133294486936305
-333 -0.0147073192182352
-334 -0.014038242930232
-335 -0.0143451636631283
-336 -0.0140952574704935
-337 -0.0141886904764963
-338 -0.0136754388417917
-339 -0.0130591984480721
-340 -0.00725308466960931
-341 -0.00666308425269444
-342 -0.00687998553665841
-343 -0.00973374474504822
-344 -0.0145448202812331
-345 -0.0144458922456604
-346 -0.0146115187586966
-347 -0.0137964028516015
-348 -0.0124149959973093
-349 -0.0103171021174392
-350 -0.00982139573529766
-351 -0.0112899814813755
-352 -0.0106130941986117
-353 -0.0130952590767051
-354 -0.0147157103352019
-355 -0.0148442531106679
-356 -0.0143141102828524
-357 -0.0117602635999597
-358 -0.013769448570632
-359 -0.0143111324151261
-360 -0.0143034333755129
-361 -0.0145038145090546
-362 -0.0142515435786701
-363 -0.0119387033366702
-364 -0.0110049806968185
-365 -0.0105761121274039
-366 -0.0104785382739133
-367 -0.00944568136776289
-368 -0.0114291935775792
-369 -0.00879625572792011
-370 0.438761037882253
-371 0.179388282669024
-372 -0.00564395369291442
-373 -0.00796462420259203
-374 -0.00642615015965443
-375 -0.00989354521629732
-376 -0.00988574813192154
-377 -0.010723082658232
-378 -0.0127986854912136
-379 -0.0136055571418597
-380 -0.0128927066034855
-381 -0.0107658464618742
-382 -0.00995213975574464
-383 -0.00950294253792146
-384 -0.00955020479384878
-385 -0.00635693744222024
-386 -0.000110105629481581
-387 -0.00115234232053054
-388 -0.00429086433256201
-389 -0.00179503584405276
-390 -0.00481498545647159
-391 -0.00622514956456138
-392 -0.0109222820132791
-393 -0.0108955712556429
-394 -0.0123614076397208
-395 -0.0126411139244774
-396 -0.0124467915001655
-397 -0.0130137305814043
-398 -0.0128228771923896
-399 -0.0133955237199494
-400 -0.0133849955851085
-401 -0.0122588534660976
-402 -0.00605726179970702
-403 -0.00502476043379232
-404 -0.00560189961426453
-405 -0.0075065597345586
-406 -0.0127782782962923
-407 -0.0123644950908042
-408 -0.0124232734011331
-409 -0.0109783824772762
-410 -0.0115303718379531
-411 -0.00784267469552262
-412 -0.00849462201372912
-413 -0.00971386505469192
-414 -0.00917632724668119
-415 -0.0115816105603832
-416 -0.0132376761929919
-417 -0.0135661416672985
-418 -0.0131585974552153
-419 -0.009660405912689
-420 -0.013055251783936
-421 -0.0133821772767449
-422 -0.0130499023401334
-423 -0.0135178049026562
-424 -0.0131069725662085
-425 -0.0108380392131661
-426 -0.00969469507043081
-427 -0.00954426797454458
-428 -0.00662684836615926
-429 -0.00886476227407113
-430 -0.00950496793349554
-431 0.0516441983020747
-432 0.49322914953269
-433 -0.00439284173686481
-434 -0.00627870269436533
-435 -0.00627332941383523
-436 -0.0081288435528136
-437 -0.0083780008033963
-438 -0.00862522210775739
-439 -0.00957558038511007
-440 -0.0117456231732853
-441 -0.0115534470740916
-442 -0.00933816760400665
-443 -0.00879390501434828
-444 -0.00845807802179637
-445 -0.00898392178831317
-446 -0.00828222615510185
-447 -0.00430409141657551
-448 0.00156457708563651
-449 -0.00326984307949075
-450 -0.00317159959830949
-451 -0.000555487307447615
-452 -0.00364382690619819
-453 -0.0048566860611129
-454 -0.00894018408715954
-455 -0.0107486040996964
-456 -0.0116685949740421
-457 -0.0110016491468837
-458 -0.0115059582687225
-459 -0.0113472600167867
-460 -0.0116171812940172
-461 -0.0117282268858408
-462 -0.0117299783690078
-463 -0.010643752908432
-464 -0.00459501012645056
-465 -0.00453644637628407
-466 -0.0046306868795152
-467 -0.00635091362132938
-468 -0.0110723370950498
-469 -0.0112408403912337
-470 -0.0111324401483636
-471 -0.00982286064921767
-472 -0.00975128137366522
-473 -0.00628951348673262
-474 -0.00786220555305698
-475 -0.00721222723625666
-476 -0.0090992927480125
-477 -0.0111183444128793
-478 -0.0113067097038558
-479 -0.011160514456695
-480 -0.0112090771926765
-481 -0.00787638634175043
-482 -0.0112615847473125
-483 -0.011628136525895
-484 -0.011622337861315
-485 -0.0117577801145762
-486 -0.0116192296501852
-487 -0.0116776081404665
-488 -0.0111121010572735
-489 -0.0114339606683442
-490 -0.00850048144220754
-491 -0.00902076717194715
-492 -0.00658807969775991
-493 0.308280122150922
-494 0.179904382021428
-495 -0.00620246818692402
-496 -0.00732155340431931
-497 -0.00633028997310617
-498 -0.00733583870036483
-499 -0.00727032081926197
-500 -0.008010509906149
-501 -0.0104317034705988
-502 -0.0108056052586449
-503 -0.0101990692728759
-504 -0.00818461307326559
-505 -0.00749890086004878
-506 -0.00705010773652864
-507 -0.00756096305230179
-508 -0.00672526873673494
-509 0.00243080947177157
-510 0.00196312027219733
-511 -0.00235862710511876
-512 0.000701377712459682
-513 -0.00162314281016339
-514 -0.00353069628359856
-515 -0.00535592160011964
-516 -0.009629255720372
-517 -0.00984838119518035
-518 -0.0101309734254507
-519 -0.00965058701149376
-520 -0.00979426033632281
-521 -0.00938720368934997
-522 -0.00970041415352301
-523 -0.00945810455304286
-524 -0.00835333695491461
-525 -0.00280808168888623
-526 -0.0018804910475821
-527 -0.00249542031082639
-528 -0.00423360594570751
-529 -0.00881996119495001
-530 -0.00884482660493057
-531 -0.00893861689042032
-532 -0.00886923400254016
-533 -0.00998854214305494
-534 -0.00781482686410285
-535 -0.0048629430667884
-536 -0.00625148660128163
-537 -0.00591714866358709
-538 -0.00819957670878541
-539 -0.0104317069032842
-540 -0.0106270020619331
-541 -0.0104145097418402
-542 -0.00717985135988735
-543 -0.0101615859824435
-544 -0.0104518334037382
-545 -0.0100972729943529
-546 -0.0104524105955466
-547 -0.0103545229187737
-548 -0.0101624037567498
-549 -0.0100186657519469
-550 -0.0099303685542785
-551 -0.00989811608443676
-552 -0.00956029844279647
-553 -0.00987970559123677
-554 -0.00776430984790597
-555 0.433831953345655
-556 -0.00507447586044935
-557 -0.00562849792786146
-558 -0.00769600508140686
-559 -0.00901860581255264
-560 -0.00910092607595847
-561 -0.00887368633065391
-562 -0.00919143351659684
-563 -0.00919246832815283
-564 -0.008693156564635
-565 -0.00662529921447376
-566 -0.00607353164847735
-567 -0.00581991561933677
-568 -0.00632678279589719
-569 -0.00589706554542697
-570 -0.00209808022849792
-571 0.00411078303934323
-572 -0.000550094449704642
-573 -0.000635669377549439
-574 0.00207348794440178
-575 -0.000652521824982924
-576 -0.00515463244200143
-577 -0.00805160292500236
-578 -0.00758462894007334
-579 -0.00865860296291249
-580 -0.00829675359569146
-581 -0.0086341327011501
-582 -0.0083284907763213
-583 -0.00874191010292116
-584 -0.00870026046977296
-585 -0.00874342968783533
-586 -0.00782090704127864
-587 -0.00226753389792357
-588 -0.00233729750931911
-589 -0.00253165604475073
-590 -0.00420974711192665
-591 -0.00876258732479398
-592 -0.00860694373819948
-593 -0.00860741436892977
-594 -0.0083641380851702
-595 -0.00895178779353354
-596 -0.00556499426763376
-597 -0.00484682362918658
-598 -0.00431757566397834
-599 -0.00499416642389915
-600 -0.0069669589511167
-601 -0.00890645540721195
-602 -0.00886958918530451
-603 -0.00887658861258958
-604 -0.00581930809163898
-605 -0.00874979775103718
-606 -0.00880186470377256
-607 -0.0082818394785986
-608 -0.00853275083442652
-609 -0.00830191068093658
-610 -0.00821443778904117
-611 -0.00784238482387328
-612 -0.0079414174200303
-613 -0.00783383912859581
-614 -0.00787555505012593
-615 -0.00665499786835605
-616 0.176487627240953
-617 0.182522618275643
-618 -0.00369616845832028
-619 -0.00629001903058491
-620 -0.0075473564025736
-621 -0.00792057625851698
-622 -0.00782303511234032
-623 -0.00755843668657251
-624 -0.00792883379421707
-625 -0.00821060913555977
-626 -0.00741039814688092
-627 -0.00537210505585104
-628 -0.00495675282893683
-629 -0.00433218280972181
-630 -0.00535942261482297
-631 -0.00418008644241062
-632 0.00339696969399508
-633 0.00414508932380595
-634 -0.000193158774272635
-635 0.00259164894888744
-636 0.000223760303507433
-637 -0.00430196126108769
-638 -0.00456371747951704
-639 -0.00736903921601653
-640 -0.00712023652975677
-641 -0.0075278214202441
-642 -0.00720130207341965
-643 -0.00737872965783862
-644 -0.00699531188368127
-645 -0.00746073468584514
-646 -0.00732625819637498
-647 -0.00635877618822083
-648 -0.000793999038955055
-649 -8.0164531740219e-05
-650 -0.000446668232184141
-651 -0.00235908247044392
-652 -0.00713214115663551
-653 -0.00713237034121296
-654 -0.00694174474662415
-655 -0.00660829668781119
-656 -0.00716164439750203
-657 -0.00538381268641803
-658 -0.00345728430157964
-659 -0.0033493822325227
-660 -0.00308002139612534
-661 -0.00485508307526379
-662 -0.00689806029174172
-663 -0.00725543105565978
-664 -0.00698203515046677
-665 -0.0036867796009008
-666 -0.00651046025528584
-667 -0.0064253977689179
-668 -0.00603538702792052
-669 -0.00663542008142919
-670 -0.00686564183730989
-671 -0.007061940627829
-672 -0.00723724969313594
-673 -0.00690352936553413
-674 -0.00708800826417091
-675 -0.0068488351807369
-676 -0.00697588236069582
-677 -0.00489382754866038
-678 0.293679681878456
-679 -0.00217575247097526
-680 -0.00251980831108943
-681 -0.00469346437639234
-682 -0.00602274026620383
-683 -0.00613736008179977
-684 -0.00587828046880654
-685 -0.00631371498944638
-686 -0.00631120094430527
-687 -0.00664034373839927
-688 -0.0065666129986998
-689 -0.0067007590666881
-690 -0.00636748542215835
-691 -0.00656138473046679
-692 -0.00601000081275883
-693 -0.0026357408923799
-694 -0.000456498707602518
-695 -0.0016897260544663
-696 -0.00129952239659223
-697 0.00153196218519829
-698 0.000970496676276022
-699 -0.00251269063690647
-700 -0.00524088068527027
-701 -0.00518392957419252
-702 -0.00545009901887635
-703 -0.00523471171454499
-704 -0.00546688754012952
-705 -0.00514683356691874
-706 -0.00558347319397717
-707 -0.00550031695581813
-708 -0.00556266938963792
-709 -0.00450101319069993
-710 0.000877138356826208
-711 0.00114849594155746
-712 0.00116701578333245
-713 -0.000552903676364493
-714 -0.0051532107788052
-715 -0.00508271809802478
-716 -0.00497444873496618
-717 -0.00492017832252063
-718 -0.00541639497149525
-719 -0.00390291948630837
-720 -0.00239018748643075
-721 -0.00232508546653691
-722 -0.00238990898592966
-723 -0.00406012905361738
-724 -0.00582934957876193
-725 -0.00577054545061284
-726 -0.00588044486012239
-727 -0.00321173514726905
-728 -0.00576676030640332
-729 -0.00581363201901516
-730 -0.0056403530033928
-731 -0.00588225715878274
-732 -0.00580726160331349
-733 -0.00584418671281739
-734 -0.00551263103237493
-735 -0.00574673916997464
-736 -0.00550923727010732
-737 -0.00564351841421052
-738 -0.00461818807132501
-739 0.114369039955867
-740 0.113874088642992
-741 -0.00428093342498865
-742 -0.00466682336739501
-743 -0.00457646329947025
-744 -0.00489743453576601
-745 -0.00478667563624186
-746 -0.00478604895368296
-747 -0.00490784598204448
-748 -0.00514403999502352
-749 -0.00513630650904552
-750 -0.00518918499122095
-751 -0.00520548675089309
-752 -0.00507998628564919
-753 -0.00523911370578295
-754 -0.00411076499229555
-755 -0.000110526273692137
-756 -6.97046088930254e-05
-757 -0.000654613465091875
-758 0.00250880368745154
-759 0.00224241061455796
-760 -0.00127852637176592
-761 -0.00157811331971793
-762 -0.00436060574090802
-763 -0.00420211405494215
-764 -0.00448393259372739
-765 -0.00432404767220953
-766 -0.00453637743990225
-767 -0.0044808869432662
-768 -0.00464814288481283
-769 -0.00453419455157583
-770 -0.00369714822055501
-771 0.00151504237188244
-772 0.00179518632309489
-773 0.001877255156902
-774 -5.89581979368288e-06
-775 -0.00470919317381923
-776 -0.00458472486731563
-777 -0.00444898240381536
-778 -0.00416698542857512
-779 -0.00466136770411855
-780 -0.00300892846748779
-781 -0.00124674831643176
-782 -0.00133718137527554
-783 -0.00138860486323427
-784 -0.00288124092405525
-785 -0.00481691924321098
-786 -0.00486161642251353
-787 -0.00471484323647818
-788 -0.00221399725838215
-789 -0.00461120524247493
-790 -0.00490984409593776
-791 -0.00458164873735298
-792 -0.00500568265157337
-793 -0.00490456309124687
-794 -0.00492264602032272
-795 -0.00479512401393326
-796 -0.00461122828156398
-797 -0.00469058713813641
-798 -0.00454741240404029
-799 -0.00452098615172967
-800 -0.00315464001423668
-801 0.176647243851048
-802 -0.00310821457329599
-803 -0.00336871130300844
-804 -0.00334712545163953
-805 -0.00333048116128302
-806 -0.00340010988805163
-807 -0.00329002162318321
-808 -0.00389183721144577
-809 -0.003901676075626
-810 -0.00414870722240944
-811 -0.0042711605574371
-812 -0.00421188870174774
-813 -0.00414929847217633
-814 -0.00411313613833283
-815 -0.00371760367608498
-816 -0.000349935639289262
-817 0.00180273856524285
-818 0.000409396862338841
-819 0.000734497343308131
-820 0.00357982919909658
-821 0.00303969865706741
-822 -0.000471276008475531
-823 -0.00316577242759788
-824 -0.00325311026089004
-825 -0.00334640971609744
-826 -0.00347090142695205
-827 -0.00347282859499611
-828 -0.00359181895609804
-829 -0.00354380245119079
-830 -0.0035817065706009
-831 -0.00354789086207514
-832 -0.0033749175776577
-833 -0.000494214343391087
-834 -0.000251455009457498
-835 -1.57658927165261e-05
-836 -0.000109367762943036
-837 -0.00314845093040657
-838 -0.00309137992026045
-839 -0.00318781326315422
-840 -0.00286403779926594
-841 -0.00342399488914169
-842 -0.00153873408849432
-843 0.000122565876620567
-844 -1.39442056199256e-05
-845 -8.34506223344456e-06
-846 -0.00166426373161533
-847 -0.0033554053632988
-848 -0.00333776480910794
-849 -0.00310606886442986
-850 -0.00260312208985637
-851 -0.00283750216949298
-852 -0.00285757048464359
-853 -0.00279461193366553
-854 -0.00292497054991065
-855 -0.00301956311195488
-856 -0.00315103554002891
-857 -0.00317407494144514
-858 -0.00344006955591978
-859 -0.00328324564157648
-860 -0.00336672245209469
-861 -0.00320070783993313
-862 0.0571143000302908
-863 0.0581421535264736
-864 -0.0023646349129562
-865 -0.00248000937790515
-866 -0.00253895254011341
-867 -0.00263523871798653
-868 -0.00263848242276221
-869 -0.00242543818411627
-870 -0.00273912401905961
-871 -0.00279476040899776
-872 -0.00276176065666512
-873 -0.00287486997075063
-874 -0.00286611281167776
-875 -0.00273356872691796
-876 -0.00288780319152133
-877 -0.002745393856585
-878 -0.00110006883426424
-879 -0.00137915534327329
-880 -0.00167310911091998
-881 -0.00155747103077571
-882 -0.00146093482278994
-883 -0.00154136929877317
-884 -0.00153121465319545
-885 -0.00155953620814648
-886 -0.00144267681269488
-887 -0.00161412167459229
-888 -0.00163145566649099
-889 -0.00167029505161209
-890 -0.0016373144133233
-891 -0.00175124070416498
-892 -0.00167165052115149
-893 -0.00171108984754183
-894 0.00117838884322948
-895 0.00144758999216869
-896 0.00151805445737221
-897 0.00143935117483618
-898 -0.00186099280431895
-899 -0.00179654067064747
-900 -0.00179116042661383
-901 -0.00142755861186833
-902 -0.00186611279612203
-903 -0.000162622805446086
-904 0.00152056201372212
-905 0.0013706788122524
-906 0.00143726069429263
-907 -0.000252329857205533
-908 -0.00193352667375601
-909 -0.00209884306201327
-910 -0.00202064054439592
-911 -0.00173618259943807
-912 -0.00205445430329035
-913 -0.00214780602120254
-914 -0.00196595166631794
-915 -0.00219157283133128
-916 -0.00212894079242623
-917 -0.00207889032650752
-918 -0.00219841623335388
-919 -0.00205620493282394
-920 -0.00208349802201294
-921 -0.001893539445651
-922 -0.00194526313087232
-923 -0.00168643075330111
-924 0.0586998178531413
-925 -0.000911884922536993
-926 -0.00117572577102972
-927 -0.00129923545036716
-928 -0.00118465790078785
-929 -0.00132314491365947
-930 -0.00127160006680386
-931 -0.00138439529549555
-932 -0.00129787510221711
-933 -0.00144993779770551
-934 -0.001425792453437
-935 -0.0014496057960256
-936 -0.00119586479826629
-937 -0.000922564261699133
-938 -0.000922740892289067
-939 -0.000848528386538916
-940 0.00175174402948496
-941 0.000128892409261148
-942 -0.000419829894278227
-943 -0.000466898563936845
-944 -0.00047122376341752
-945 -0.000471416288654379
-946 -0.000513935965825421
-947 -0.000572116986488244
-948 -0.000449041074008682
-949 -0.000574563662818422
-950 -0.000610788790280961
-951 -0.000662270176313313
-952 -0.000642471283187866
-953 -0.000686357192098764
-954 -0.000680811112666425
-955 -0.000667897583364248
-956 0.00217250089025851
-957 0.00241500705227074
-958 0.00258713826301258
-959 0.0024109350186895
-960 -0.000776314155991479
-961 -0.00084983870235422
-962 -0.000772678557610008
-963 -0.000413064616358682
-964 -0.000839502130396645
-965 -0.000791381040363275
-966 -0.00077040262869677
-967 -0.000754568976269093
-968 -0.000450602414219829
-969 -0.000688212102427542
-970 -0.0007167932903372
-971 -0.000785852386158499
-972 -0.000722306234880277
-973 -0.000324661092143018
-974 -0.000653202791545457
-975 -0.000633458113878451
-976 -0.000607853671870952
-977 -0.000679470747639321
-978 -0.000681703637956587
-979 -0.000664738980547628
-980 -0.000722422330407423
-981 -0.000669373102929127
-982 -0.000718387488703849
-983 -0.000712032436105745
-984 -0.000590219813904669
-985 -0.000416669360601081
-986 0.000288888405178535
-987 0.000270024550156701
-988 0.000249840739788964
-989 0.000235694503184828
-990 0.000215798850441515
-991 0.00019492814388371
-992 0.000175357251222976
-993 0.000153462442160884
-994 0.000132677328666247
-995 0.000111945810591477
-996 9.04814593951449e-05
-997 7.02106833140884e-05
-998 5.0145189268859e-05
-999 3.05214189890438e-05
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat
deleted file mode 100644
index 7df4c8275..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.00156402587890625 0.0 0.0 0.0 1
-2 0.00149393081665039 0.0 0.0 0.0 2
-3 0.00144386291503906 0.0 0.0 0.0 3
-4 0.0014338493347168 0.00999999999999979 0.00999999999999979 0.0 4
-5 0.00144386291503906 0.0 0.0 0.0 5
-6 0.00141716003417969 0.0 0.0 0.0 6
-7 0.00143003463745117 0.0 0.0 0.0 7
-8 0.0014190673828125 0.0 0.0 0.0 8
-9 0.00141215324401855 0.0 0.0 0.0 9
-10 0.00143003463745117 0.0 0.0 0.0 10
-11 0.00141310691833496 0.0100000000000007 0.0100000000000002 0.0 11
-12 0.0014190673828125 0.0 0.0 0.0 12
-13 0.00155305862426758 0.0 0.0 0.0 13
-14 0.00142192840576172 0.0 0.0 0.0 14
-15 0.00141000747680664 0.0 0.0 0.0 15
-16 0.00142812728881836 0.0 0.0 0.0 16
-17 0.00143098831176758 0.0 0.0 0.0 17
-18 0.00151705741882324 0.00999999999999979 0.00999999999999979 0.0 18
-19 0.00141406059265137 0.0 0.0 0.0 19
-20 0.0014197826385498 0.0 0.0 0.0 20
-21 0.00142383575439453 0.0 0.0 0.0 21
-22 0.00141191482543945 0.0 0.0 0.0 22
-23 0.00156402587890625 0.0 0.0 0.0 23
-24 0.00142812728881836 0.00999999999999979 0.00999999999999979 0.0 24
-25 0.00139307975769043 0.0 0.0 0.0 25
-26 0.00141000747680664 0.0 0.0 0.0 26
-27 0.00255894660949707 0.0 0.0 0.0 27
-28 0.00261497497558594 0.0 0.0 0.0 28
-29 0.00254607200622559 0.00999999999999979 0.00999999999999979 0.0 29
-30 0.00245094299316406 0.0 0.0 0.0 30
-31 0.00142312049865723 0.0 0.0 0.0 31
-32 0.00141000747680664 0.0 0.0 0.0 32
-33 0.00139904022216797 0.0 0.0 0.0 33
-34 0.00141096115112305 0.0 0.0 0.0 34
-35 0.00139689445495605 0.0100000000000007 0.0100000000000007 0.0 35
-36 0.00140500068664551 0.0 0.0 0.0 36
-37 0.00140786170959473 0.0 0.0 0.0 37
-38 0.00144600868225098 0.0 0.0 0.0 38
-39 0.00139689445495605 0.0 0.0 0.0 39
-40 0.00140810012817383 0.0 0.0 0.0 40
-41 0.00141406059265137 0.0 0.0 0.0 41
-42 0.00140595436096191 0.00999999999999979 0.00999999999999979 0.0 42
-43 0.00140094757080078 0.0 0.0 0.0 43
-44 0.00138092041015625 0.0 0.0 0.0 44
-45 0.00151491165161133 0.0 0.0 0.0 45
-46 0.00203394889831543 0.0 0.0 0.0 46
-47 0.00142693519592285 0.0 0.0 0.0 47
-48 0.00138998031616211 0.00999999999999979 0.00999999999999979 0.0 48
-49 0.00144696235656738 0.0 0.0 0.0 49
-50 0.00140500068664551 0.0 0.0 0.0 50
-51 0.00138998031616211 0.0 0.0 0.0 51
-52 0.00141000747680664 0.0 0.0 0.0 52
-53 0.00139188766479492 0.0 0.0 0.0 53
-54 0.00142598152160645 0.0 0.0 0.0 54
-55 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 55
-56 0.00139594078063965 0.0 0.0 0.0 56
-57 0.00139284133911133 0.0 0.0 0.0 57
-58 0.00141692161560059 0.0 0.0 0.0 58
-59 0.00140810012817383 0.0 0.0 0.0 59
-60 0.00141215324401855 0.0 0.0 0.0 60
-61 0.00145602226257324 0.0 0.0 0.0 61
-62 0.0231201648712158 0.0300000000000002 0.0300000000000002 0.0 62
-63 0.0014808177947998 0.0 0.0 0.0 63
-64 0.00142788887023926 0.0 0.0 0.0 64
-65 0.00147199630737305 0.0 0.0 0.0 65
-66 0.00143098831176758 0.0 0.0 0.0 66
-67 0.00142908096313477 0.0 0.0 0.0 67
-68 0.00142097473144531 0.00999999999999979 0.00999999999999979 0.0 68
-69 0.00142598152160645 0.0 0.0 0.0 69
-70 0.00142812728881836 0.0 0.0 0.0 70
-71 0.00140595436096191 0.0 0.0 0.0 71
-72 0.00142288208007812 0.0 0.0 0.0 72
-73 0.00140810012817383 0.0 0.0 0.0 73
-74 0.00141692161560059 0.0 0.0 0.0 74
-75 0.00140786170959473 0.0100000000000007 0.0100000000000007 0.0 75
-76 0.00142312049865723 0.0 0.0 0.0 76
-77 0.00140213966369629 0.0 0.0 0.0 77
-78 0.00140500068664551 0.0 0.0 0.0 78
-79 0.00141096115112305 0.0 0.0 0.0 79
-80 0.00141406059265137 0.0 0.0 0.0 80
-81 0.00141310691833496 0.0 0.0 0.0 81
-82 0.00140905380249023 0.00999999999999979 0.00999999999999979 0.0 82
-83 0.00140190124511719 0.0 0.0 0.0 83
-84 0.00140881538391113 0.0 0.0 0.0 84
-85 0.00141191482543945 0.0 0.0 0.0 85
-86 0.00141406059265137 0.0 0.0 0.0 86
-87 0.00142097473144531 0.0 0.0 0.0 87
-88 0.0013890266418457 0.0 0.0 0.0 88
-89 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 89
-90 0.00139498710632324 0.0 0.0 0.0 90
-91 0.00141286849975586 0.0 0.0 0.0 91
-92 0.00141096115112305 0.0 0.0 0.0 92
-93 0.00140190124511719 0.0 0.0 0.0 93
-94 0.00141501426696777 0.0 0.0 0.0 94
-95 0.0013880729675293 0.0 0.0 0.0 95
-96 0.00140595436096191 0.00999999999999979 0.00999999999999979 0.0 96
-97 0.00140213966369629 0.0 0.0 0.0 97
-98 0.0014040470123291 0.0 0.0 0.0 98
-99 0.00140500068664551 0.0 0.0 0.0 99
-100 0.00141501426696777 0.0 0.0 0.0 100
-101 0.00141119956970215 0.0 0.0 0.0 101
-102 0.00139808654785156 0.0 0.0 0.0 102
-103 0.00141000747680664 0.0 0.0 0.0 103
-104 0.00137805938720703 0.0 0.0 0.0 104
-105 0.00139307975769043 0.0 0.0 0.0 105
-106 0.00139594078063965 0.0 0.0 0.0 106
-107 0.00138688087463379 0.0 0.0 0.0 107
-108 0.00140810012817383 0.0 0.0 0.0 108
-109 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 109
-110 0.00139999389648438 0.0 0.0 0.0 110
-111 0.00139808654785156 0.0 0.0 0.0 111
-112 0.00141096115112305 0.0 0.0 0.0 112
-113 0.00139212608337402 0.0 0.0 0.0 113
-114 0.00142288208007812 0.0 0.0 0.0 114
-115 0.00139188766479492 0.0 0.0 0.0 115
-116 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 116
-117 0.00147700309753418 0.0 0.0 0.0 117
-118 0.00140810012817383 0.0 0.0 0.0 118
-119 0.0014030933380127 0.0 0.0 0.0 119
-120 0.00142097473144531 0.0 0.0 0.0 120
-121 0.00140213966369629 0.0 0.0 0.0 121
-122 0.00139689445495605 0.0 0.0 0.0 122
-123 0.0233688354492188 0.0300000000000002 0.0300000000000002 0.0 123
-124 0.0014951229095459 0.0 0.0 0.0 124
-125 0.00143909454345703 0.0 0.0 0.0 125
-126 0.00145697593688965 0.0 0.0 0.0 126
-127 0.00147509574890137 0.0 0.0 0.0 127
-128 0.00142598152160645 0.0 0.0 0.0 128
-129 0.00143003463745117 0.00999999999999979 0.00999999999999979 0.0 129
-130 0.00141477584838867 0.0 0.0 0.0 130
-131 0.00142502784729004 0.0 0.0 0.0 131
-132 0.00140786170959473 0.0 0.0 0.0 132
-133 0.00141310691833496 0.0 0.0 0.0 133
-134 0.00141000747680664 0.0 0.0 0.0 134
-135 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 135
-136 0.00141501426696777 0.0 0.0 0.0 136
-137 0.0014190673828125 0.0 0.0 0.0 137
-138 0.00140500068664551 0.0 0.0 0.0 138
-139 0.00140595436096191 0.0 0.0 0.0 139
-140 0.00143909454345703 0.0 0.0 0.0 140
-141 0.00140094757080078 0.0 0.0 0.0 141
-142 0.00142407417297363 0.0100000000000007 0.0100000000000007 0.0 142
-143 0.00141406059265137 0.0 0.0 0.0 143
-144 0.00142002105712891 0.0 0.0 0.0 144
-145 0.00140094757080078 0.0 0.0 0.0 145
-146 0.00140690803527832 0.0 0.0 0.0 146
-147 0.0014188289642334 0.0 0.0 0.0 147
-148 0.00142002105712891 0.0 0.0 0.0 148
-149 0.00139808654785156 0.00999999999999979 0.00999999999999979 0.0 149
-150 0.00139594078063965 0.0 0.0 0.0 150
-151 0.00140285491943359 0.0 0.0 0.0 151
-152 0.0013880729675293 0.0 0.0 0.0 152
-153 0.00139498710632324 0.0 0.0 0.0 153
-154 0.0014040470123291 0.0 0.0 0.0 154
-155 0.0014040470123291 0.0 0.0 0.0 155
-156 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 156
-157 0.0014030933380127 0.0 0.0 0.0 157
-158 0.00138711929321289 0.0 0.0 0.0 158
-159 0.00139999389648438 0.0 0.0 0.0 159
-160 0.00140595436096191 0.0 0.0 0.0 160
-161 0.00139689445495605 0.0 0.0 0.0 161
-162 0.00141000747680664 0.0 0.0 0.0 162
-163 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 163
-164 0.00140905380249023 0.0 0.0 0.0 164
-165 0.00251889228820801 0.0 0.0 0.0 165
-166 0.00264787673950195 0.0 0.0 0.0 166
-167 0.00169110298156738 0.0 0.0 0.0 167
-168 0.00159692764282227 0.00999999999999979 0.00999999999999979 0.0 168
-169 0.00142788887023926 0.0 0.0 0.0 169
-170 0.00155997276306152 0.0 0.0 0.0 170
-171 0.00141811370849609 0.0 0.0 0.0 171
-172 0.00139784812927246 0.0 0.0 0.0 172
-173 0.00142884254455566 0.0 0.0 0.0 173
-174 0.00139999389648438 0.0 0.0 0.0 174
-175 0.00139784812927246 0.0100000000000007 0.0100000000000007 0.0 175
-176 0.00139999389648438 0.0 0.0 0.0 176
-177 0.00145101547241211 0.0 0.0 0.0 177
-178 0.00141716003417969 0.0 0.0 0.0 178
-179 0.00143289566040039 0.0 0.0 0.0 179
-180 0.00141310691833496 0.0 0.0 0.0 180
-181 0.00141406059265137 0.0 0.0 0.0 181
-182 0.00141406059265137 0.0 0.0 0.0 182
-183 0.00141310691833496 0.0 0.0 0.0 183
-184 0.00140595436096191 0.0 0.0 0.0 184
-185 0.0231029987335205 0.0199999999999996 0.0199999999999996 0.0 185
-186 0.00171899795532227 0.0 0.0 0.0 186
-187 0.00143694877624512 0.0100000000000007 0.0100000000000007 0.0 187
-188 0.00144410133361816 0.0 0.0 0.0 188
-189 0.00142693519592285 0.0 0.0 0.0 189
-190 0.00143599510192871 0.0 0.0 0.0 190
-191 0.00142097473144531 0.0 0.0 0.0 191
-192 0.00142979621887207 0.0 0.0 0.0 192
-193 0.00142502784729004 0.0 0.0 0.0 193
-194 0.00142002105712891 0.00999999999999979 0.00999999999999979 0.0 194
-195 0.00142908096313477 0.0 0.0 0.0 195
-196 0.00141191482543945 0.0 0.0 0.0 196
-197 0.00141382217407227 0.0 0.0 0.0 197
-198 0.00141191482543945 0.0 0.0 0.0 198
-199 0.00143718719482422 0.0 0.0 0.0 199
-200 0.00141096115112305 0.0 0.0 0.0 200
-201 0.00142407417297363 0.00999999999999979 0.00999999999999979 0.0 201
-202 0.00146198272705078 0.0 0.0 0.0 202
-203 0.00143194198608398 0.0 0.0 0.0 203
-204 0.00138998031616211 0.0 0.0 0.0 204
-205 0.00140595436096191 0.0 0.0 0.0 205
-206 0.00142097473144531 0.0 0.0 0.0 206
-207 0.00141787528991699 0.00999999999999979 0.00999999999999979 0.0 207
-208 0.00145101547241211 0.0 0.0 0.0 208
-209 0.00143909454345703 0.0 0.0 0.0 209
-210 0.00141215324401855 0.0 0.0 0.0 210
-211 0.00140094757080078 0.0 0.0 0.0 211
-212 0.0014030933380127 0.0 0.0 0.0 212
-213 0.00140595436096191 0.0 0.0 0.0 213
-214 0.00143194198608398 0.0100000000000007 0.0100000000000007 0.0 214
-215 0.00139999389648438 0.0 0.0 0.0 215
-216 0.00140786170959473 0.0 0.0 0.0 216
-217 0.00141501426696777 0.0 0.0 0.0 217
-218 0.00139904022216797 0.0 0.0 0.0 218
-219 0.00141310691833496 0.0 0.0 0.0 219
-220 0.00140786170959473 0.0 0.0 0.0 220
-221 0.00146889686584473 0.00999999999999979 0.00999999999999979 0.0 221
-222 0.00139880180358887 0.0 0.0 0.0 222
-223 0.00141501426696777 0.0 0.0 0.0 223
-224 0.00139808654785156 0.0 0.0 0.0 224
-225 0.00140690803527832 0.0 0.0 0.0 225
-226 0.00140500068664551 0.0 0.0 0.0 226
-227 0.00139713287353516 0.0 0.0 0.0 227
-228 0.00139498710632324 0.00999999999999979 0.00999999999999979 0.0 228
-229 0.00141000747680664 0.0 0.0 0.0 229
-230 0.00139284133911133 0.0 0.0 0.0 230
-231 0.00140690803527832 0.0 0.0 0.0 231
-232 0.0014040470123291 0.0 0.0 0.0 232
-233 0.00137710571289062 0.0 0.0 0.0 233
-234 0.00140595436096191 0.0 0.0 0.0 234
-235 0.00137901306152344 0.0 0.0 0.0 235
-236 0.00143909454345703 0.00999999999999979 0.00999999999999979 0.0 236
-237 0.00138688087463379 0.0 0.0 0.0 237
-238 0.00141811370849609 0.0 0.0 0.0 238
-239 0.00141406059265137 0.0 0.0 0.0 239
-240 0.00139284133911133 0.0 0.0 0.0 240
-241 0.0014188289642334 0.0 0.0 0.0 241
-242 0.0013878345489502 0.0 0.0 0.0 242
-243 0.00142407417297363 0.0100000000000007 0.0100000000000007 0.0 243
-244 0.00141000747680664 0.0 0.0 0.0 244
-245 0.00146222114562988 0.0 0.0 0.0 245
-246 0.0225439071655273 0.0199999999999996 0.0199999999999996 0.0 246
-247 0.00150012969970703 0.0 0.0 0.0 247
-248 0.00144600868225098 0.0 0.0 0.0 248
-249 0.00144791603088379 0.0 0.0 0.0 249
-250 0.00143003463745117 0.0 0.0 0.0 250
-251 0.00143313407897949 0.0 0.0 0.0 251
-252 0.00141406059265137 0.0 0.0 0.0 252
-253 0.00143194198608398 0.0 0.0 0.0 253
-254 0.00141596794128418 0.0 0.0 0.0 254
-255 0.00141811370849609 0.0 0.0 0.0 255
-256 0.00142002105712891 0.0100000000000007 0.0100000000000007 0.0 256
-257 0.0014190673828125 0.0 0.0 0.0 257
-258 0.00141000747680664 0.0 0.0 0.0 258
-259 0.00142097473144531 0.0 0.0 0.0 259
-260 0.00142192840576172 0.0 0.0 0.0 260
-261 0.00141096115112305 0.0 0.0 0.0 261
-262 0.00141215324401855 0.0 0.0 0.0 262
-263 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 263
-264 0.00141096115112305 0.0 0.0 0.0 264
-265 0.00140213966369629 0.0 0.0 0.0 265
-266 0.00142192840576172 0.0 0.0 0.0 266
-267 0.0014030933380127 0.0 0.0 0.0 267
-268 0.00141596794128418 0.0 0.0 0.0 268
-269 0.00141000747680664 0.0 0.0 0.0 269
-270 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 270
-271 0.00140810012817383 0.0 0.0 0.0 271
-272 0.00141215324401855 0.0 0.0 0.0 272
-273 0.00139999389648438 0.0 0.0 0.0 273
-274 0.00139093399047852 0.0 0.0 0.0 274
-275 0.00149083137512207 0.0 0.0 0.0 275
-276 0.00139594078063965 0.0 0.0 0.0 276
-277 0.00141191482543945 0.00999999999999979 0.00999999999999979 0.0 277
-278 0.0013887882232666 0.0 0.0 0.0 278
-279 0.00141382217407227 0.0 0.0 0.0 279
-280 0.0014030933380127 0.0 0.0 0.0 280
-281 0.00141787528991699 0.0 0.0 0.0 281
-282 0.0014030933380127 0.0 0.0 0.0 282
-283 0.00140714645385742 0.0100000000000007 0.0100000000000007 0.0 283
-284 0.00139999389648438 0.0 0.0 0.0 284
-285 0.00139904022216797 0.0 0.0 0.0 285
-286 0.00141000747680664 0.0 0.0 0.0 286
-287 0.00139498710632324 0.0 0.0 0.0 287
-288 0.00140500068664551 0.0 0.0 0.0 288
-289 0.00140810012817383 0.0 0.0 0.0 289
-290 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 290
-291 0.0014030933380127 0.0 0.0 0.0 291
-292 0.00141692161560059 0.0 0.0 0.0 292
-293 0.00140786170959473 0.0 0.0 0.0 293
-294 0.00140810012817383 0.0 0.0 0.0 294
-295 0.00141000747680664 0.0 0.0 0.0 295
-296 0.00139212608337402 0.0 0.0 0.0 296
-297 0.00141406059265137 0.0 0.0 0.0 297
-298 0.0013890266418457 0.00999999999999979 0.00999999999999979 0.0 298
-299 0.00141096115112305 0.0 0.0 0.0 299
-300 0.00139379501342773 0.0 0.0 0.0 300
-301 0.00141501426696777 0.0 0.0 0.0 301
-302 0.00139498710632324 0.0 0.0 0.0 302
-303 0.00139594078063965 0.0 0.0 0.0 303
-304 0.00140690803527832 0.0 0.0 0.0 304
-305 0.00188708305358887 0.00999999999999979 0.00999999999999979 0.0 305
-306 0.00266003608703613 0.0 0.0 0.0 306
-307 0.00257205963134766 0.0 0.0 0.0 307
-308 0.0239479541778564 0.0300000000000002 0.0300000000000002 0.0 308
-309 0.0016789436340332 0.0 0.0 0.0 309
-310 0.00142788887023926 0.0 0.0 0.0 310
-311 0.00144720077514648 0.0 0.0 0.0 311
-312 0.00142407417297363 0.0 0.0 0.0 312
-313 0.00144100189208984 0.0 0.0 0.0 313
-314 0.00140810012817383 0.0 0.0 0.0 314
-315 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 315
-316 0.00141501426696777 0.0 0.0 0.0 316
-317 0.00142884254455566 0.0 0.0 0.0 317
-318 0.00140810012817383 0.0 0.0 0.0 318
-319 0.00141692161560059 0.0 0.0 0.0 319
-320 0.00141096115112305 0.0 0.0 0.0 320
-321 0.00143098831176758 0.0 0.0 0.0 321
-322 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 322
-323 0.00141501426696777 0.0 0.0 0.0 323
-324 0.00140595436096191 0.0 0.0 0.0 324
-325 0.00141692161560059 0.0 0.0 0.0 325
-326 0.00150609016418457 0.0 0.0 0.0 326
-327 0.00142478942871094 0.0 0.0 0.0 327
-328 0.00141191482543945 0.0 0.0 0.0 328
-329 0.00140190124511719 0.0100000000000007 0.0100000000000007 0.0 329
-330 0.00142121315002441 0.0 0.0 0.0 330
-331 0.00140500068664551 0.0 0.0 0.0 331
-332 0.00142288208007812 0.0 0.0 0.0 332
-333 0.00139188766479492 0.0 0.0 0.0 333
-334 0.00141811370849609 0.0 0.0 0.0 334
-335 0.00139999389648438 0.0 0.0 0.0 335
-336 0.00138592720031738 0.00999999999999979 0.00999999999999979 0.0 336
-337 0.00139522552490234 0.0 0.0 0.0 337
-338 0.00139093399047852 0.0 0.0 0.0 338
-339 0.00140500068664551 0.0 0.0 0.0 339
-340 0.00138497352600098 0.0 0.0 0.0 340
-341 0.00139999389648438 0.0 0.0 0.0 341
-342 0.00139594078063965 0.0 0.0 0.0 342
-343 0.00139617919921875 0.00999999999999979 0.00999999999999979 0.0 343
-344 0.00139784812927246 0.0 0.0 0.0 344
-345 0.00139784812927246 0.0 0.0 0.0 345
-346 0.00141716003417969 0.0 0.0 0.0 346
-347 0.00139307975769043 0.0 0.0 0.0 347
-348 0.00141191482543945 0.0 0.0 0.0 348
-349 0.00139999389648438 0.0 0.0 0.0 349
-350 0.00140380859375 0.00999999999999979 0.00999999999999979 0.0 350
-351 0.00140500068664551 0.0 0.0 0.0 351
-352 0.00149989128112793 0.0 0.0 0.0 352
-353 0.00278902053833008 0.0 0.0 0.0 353
-354 0.00261592864990234 0.0 0.0 0.0 354
-355 0.00245213508605957 0.0100000000000007 0.0100000000000007 0.0 355
-356 0.00246095657348633 0.0 0.0 0.0 356
-357 0.00265288352966309 0.0 0.0 0.0 357
-358 0.00261092185974121 0.00999999999999979 0.00999999999999979 0.0 358
-359 0.00242495536804199 0.0 0.0 0.0 359
-360 0.00170683860778809 0.0 0.0 0.0 360
-361 0.00139093399047852 0.0 0.0 0.0 361
-362 0.00142908096313477 0.0 0.0 0.0 362
-363 0.00140976905822754 0.0 0.0 0.0 363
-364 0.00142288208007812 0.00999999999999979 0.00999999999999979 0.0 364
-365 0.00140380859375 0.0 0.0 0.0 365
-366 0.00140714645385742 0.0 0.0 0.0 366
-367 0.00139594078063965 0.0 0.0 0.0 367
-368 0.00140118598937988 0.0 0.0 0.0 368
-369 0.0262439250946045 0.0300000000000002 0.0200000000000005 0.01 369
-370 0.00150489807128906 0.00999999999999979 0.00999999999999979 0.0 370
-371 0.00143313407897949 0.0 0.0 0.0 371
-372 0.00153613090515137 0.0 0.0 0.0 372
-373 0.00143313407897949 0.0 0.0 0.0 373
-374 0.00144290924072266 0.0 0.0 0.0 374
-375 0.00142097473144531 0.0 0.0 0.0 375
-376 0.00142097473144531 0.0 0.0 0.0 376
-377 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 377
-378 0.00140690803527832 0.0 0.0 0.0 378
-379 0.0014338493347168 0.0 0.0 0.0 379
-380 0.00142192840576172 0.0 0.0 0.0 380
-381 0.00142502784729004 0.0 0.0 0.0 381
-382 0.00140595436096191 0.0 0.0 0.0 382
-383 0.00141811370849609 0.0 0.0 0.0 383
-384 0.00143003463745117 0.00999999999999979 0.00999999999999979 0.0 384
-385 0.00141596794128418 0.0 0.0 0.0 385
-386 0.00140619277954102 0.0 0.0 0.0 386
-387 0.00142288208007812 0.0 0.0 0.0 387
-388 0.00142002105712891 0.0 0.0 0.0 388
-389 0.00141596794128418 0.0 0.0 0.0 389
-390 0.00142407417297363 0.0 0.0 0.0 390
-391 0.00138282775878906 0.0100000000000007 0.0100000000000007 0.0 391
-392 0.00141501426696777 0.0 0.0 0.0 392
-393 0.00139188766479492 0.0 0.0 0.0 393
-394 0.00141382217407227 0.0 0.0 0.0 394
-395 0.00140714645385742 0.0 0.0 0.0 395
-396 0.00141000747680664 0.0 0.0 0.0 396
-397 0.00139307975769043 0.0 0.0 0.0 397
-398 0.00139307975769043 0.00999999999999979 0.00999999999999979 0.0 398
-399 0.00141000747680664 0.0 0.0 0.0 399
-400 0.00138998031616211 0.0 0.0 0.0 400
-401 0.00140213966369629 0.0 0.0 0.0 401
-402 0.00139904022216797 0.0 0.0 0.0 402
-403 0.00141191482543945 0.0 0.0 0.0 403
-404 0.00139999389648438 0.0 0.0 0.0 404
-405 0.00139188766479492 0.00999999999999979 0.00999999999999979 0.0 405
-406 0.00142502784729004 0.0 0.0 0.0 406
-407 0.00139904022216797 0.0 0.0 0.0 407
-408 0.00157594680786133 0.0 0.0 0.0 408
-409 0.00140500068664551 0.0 0.0 0.0 409
-410 0.00139784812927246 0.0 0.0 0.0 410
-411 0.00139188766479492 0.0 0.0 0.0 411
-412 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 412
-413 0.00137901306152344 0.0 0.0 0.0 413
-414 0.0014040470123291 0.0 0.0 0.0 414
-415 0.00138497352600098 0.0 0.0 0.0 415
-416 0.00140285491943359 0.0 0.0 0.0 416
-417 0.00147199630737305 0.0 0.0 0.0 417
-418 0.00141096115112305 0.0100000000000007 0.0100000000000007 0.0 418
-419 0.0013890266418457 0.0 0.0 0.0 419
-420 0.00139093399047852 0.0 0.0 0.0 420
-421 0.00139999389648438 0.0 0.0 0.0 421
-422 0.00141406059265137 0.0 0.0 0.0 422
-423 0.00142383575439453 0.0 0.0 0.0 423
-424 0.00139904022216797 0.0 0.0 0.0 424
-425 0.00141310691833496 0.00999999999999979 0.00999999999999979 0.0 425
-426 0.0013880729675293 0.0 0.0 0.0 426
-427 0.00140094757080078 0.0 0.0 0.0 427
-428 0.00140786170959473 0.0 0.0 0.0 428
-429 0.00139880180358887 0.0 0.0 0.0 429
-430 0.00140118598937988 0.0 0.0 0.0 430
-431 0.0276179313659668 0.0299999999999994 0.0299999999999994 0.0 431
-432 0.00144100189208984 0.0 0.0 0.0 432
-433 0.00150609016418457 0.0 0.0 0.0 433
-434 0.0014500617980957 0.0 0.0 0.0 434
-435 0.00144720077514648 0.0100000000000007 0.0100000000000007 0.0 435
-436 0.00142598152160645 0.0 0.0 0.0 436
-437 0.00144004821777344 0.0 0.0 0.0 437
-438 0.00141215324401855 0.0 0.0 0.0 438
-439 0.00140690803527832 0.0 0.0 0.0 439
-440 0.00140905380249023 0.0 0.0 0.0 440
-441 0.00141191482543945 0.0 0.0 0.0 441
-442 0.00141382217407227 0.00999999999999979 0.00999999999999979 0.0 442
-443 0.00141382217407227 0.0 0.0 0.0 443
-444 0.00142979621887207 0.0 0.0 0.0 444
-445 0.00140786170959473 0.0 0.0 0.0 445
-446 0.00141787528991699 0.0 0.0 0.0 446
-447 0.00142502784729004 0.0 0.0 0.0 447
-448 0.00141716003417969 0.00999999999999979 0.00999999999999979 0.0 448
-449 0.00141692161560059 0.0 0.0 0.0 449
-450 0.00142502784729004 0.0 0.0 0.0 450
-451 0.00140690803527832 0.0 0.0 0.0 451
-452 0.00139808654785156 0.0 0.0 0.0 452
-453 0.00140094757080078 0.0 0.0 0.0 453
-454 0.00141501426696777 0.0 0.0 0.0 454
-455 0.00142598152160645 0.00999999999999979 0.00999999999999979 0.0 455
-456 0.00140595436096191 0.0 0.0 0.0 456
-457 0.00141096115112305 0.0 0.0 0.0 457
-458 0.00138306617736816 0.0 0.0 0.0 458
-459 0.00140500068664551 0.0 0.0 0.0 459
-460 0.00141096115112305 0.0 0.0 0.0 460
-461 0.0013880729675293 0.0 0.0 0.0 461
-462 0.00140094757080078 0.0100000000000007 0.0100000000000007 0.0 462
-463 0.00139594078063965 0.0 0.0 0.0 463
-464 0.00141310691833496 0.0 0.0 0.0 464
-465 0.00138282775878906 0.0 0.0 0.0 465
-466 0.00141596794128418 0.0 0.0 0.0 466
-467 0.00141692161560059 0.0 0.0 0.0 467
-468 0.00142002105712891 0.0 0.0 0.0 468
-469 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 469
-470 0.00137901306152344 0.0 0.0 0.0 470
-471 0.00140595436096191 0.0 0.0 0.0 471
-472 0.0013880729675293 0.0 0.0 0.0 472
-473 0.00141310691833496 0.0 0.0 0.0 473
-474 0.0014040470123291 0.0 0.0 0.0 474
-475 0.00141406059265137 0.0 0.0 0.0 475
-476 0.00139713287353516 0.00999999999999979 0.00999999999999979 0.0 476
-477 0.00139307975769043 0.0 0.0 0.0 477
-478 0.00140786170959473 0.0 0.0 0.0 478
-479 0.00139784812927246 0.0 0.0 0.0 479
-480 0.00139784812927246 0.0 0.0 0.0 480
-481 0.00139999389648438 0.0 0.0 0.0 481
-482 0.00140190124511719 0.0 0.0 0.0 482
-483 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 483
-484 0.0014188289642334 0.0 0.0 0.0 484
-485 0.00140810012817383 0.0 0.0 0.0 485
-486 0.00141596794128418 0.0 0.0 0.0 486
-487 0.0014030933380127 0.0 0.0 0.0 487
-488 0.00141596794128418 0.0 0.0 0.0 488
-489 0.00141811370849609 0.0 0.0 0.0 489
-490 0.00140094757080078 0.0100000000000007 0.0100000000000007 0.0 490
-491 0.00142717361450195 0.0 0.0 0.0 491
-492 0.00140190124511719 0.0 0.0 0.0 492
-493 0.0237669944763184 0.0199999999999996 0.0199999999999996 0.0 493
-494 0.00249719619750977 0.0 0.0 0.0 494
-495 0.00208711624145508 0.0 0.0 0.0 495
-496 0.00229597091674805 0.00999999999999979 0.00999999999999979 0.0 496
-497 0.00143194198608398 0.0 0.0 0.0 497
-498 0.00144100189208984 0.0 0.0 0.0 498
-499 0.00142002105712891 0.0 0.0 0.0 499
-500 0.00144791603088379 0.0 0.0 0.0 500
-501 0.00140190124511719 0.0 0.0 0.0 501
-502 0.00142192840576172 0.0 0.0 0.0 502
-503 0.00142502784729004 0.0100000000000007 0.0100000000000007 0.0 503
-504 0.0014350414276123 0.0 0.0 0.0 504
-505 0.00141811370849609 0.0 0.0 0.0 505
-506 0.00141811370849609 0.0 0.0 0.0 506
-507 0.00141596794128418 0.0 0.0 0.0 507
-508 0.00141501426696777 0.0 0.0 0.0 508
-509 0.00140094757080078 0.0 0.0 0.0 509
-510 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 510
-511 0.0014350414276123 0.0 0.0 0.0 511
-512 0.00139403343200684 0.0 0.0 0.0 512
-513 0.00142598152160645 0.0 0.0 0.0 513
-514 0.00142598152160645 0.0 0.0 0.0 514
-515 0.00181007385253906 0.0 0.0 0.0 515
-516 0.00142097473144531 0.0 0.0 0.0 516
-517 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 517
-518 0.00141310691833496 0.0 0.0 0.0 518
-519 0.00140595436096191 0.0 0.0 0.0 519
-520 0.00139999389648438 0.0 0.0 0.0 520
-521 0.00140881538391113 0.0 0.0 0.0 521
-522 0.00139498710632324 0.0 0.0 0.0 522
-523 0.00141406059265137 0.0 0.0 0.0 523
-524 0.00139307975769043 0.00999999999999979 0.00999999999999979 0.0 524
-525 0.0014040470123291 0.0 0.0 0.0 525
-526 0.00141501426696777 0.0 0.0 0.0 526
-527 0.00141716003417969 0.0 0.0 0.0 527
-528 0.00141501426696777 0.0 0.0 0.0 528
-529 0.00147104263305664 0.0 0.0 0.0 529
-530 0.00141096115112305 0.0 0.0 0.0 530
-531 0.00140213966369629 0.0100000000000007 0.0100000000000007 0.0 531
-532 0.00141406059265137 0.0 0.0 0.0 532
-533 0.00139904022216797 0.0 0.0 0.0 533
-534 0.00139403343200684 0.0 0.0 0.0 534
-535 0.00139713287353516 0.0 0.0 0.0 535
-536 0.00140786170959473 0.0 0.0 0.0 536
-537 0.00139403343200684 0.0 0.0 0.0 537
-538 0.00140714645385742 0.00999999999999979 0.00999999999999979 0.0 538
-539 0.00139093399047852 0.0 0.0 0.0 539
-540 0.00140094757080078 0.0 0.0 0.0 540
-541 0.00138711929321289 0.0 0.0 0.0 541
-542 0.00140500068664551 0.0 0.0 0.0 542
-543 0.00141406059265137 0.0 0.0 0.0 543
-544 0.0014030933380127 0.0 0.0 0.0 544
-545 0.00138497352600098 0.00999999999999979 0.00999999999999979 0.0 545
-546 0.00148582458496094 0.0 0.0 0.0 546
-547 0.00141191482543945 0.0 0.0 0.0 547
-548 0.00141119956970215 0.0 0.0 0.0 548
-549 0.00140690803527832 0.0 0.0 0.0 549
-550 0.00140881538391113 0.0 0.0 0.0 550
-551 0.00141286849975586 0.00999999999999979 0.00999999999999979 0.0 551
-552 0.00141286849975586 0.0 0.0 0.0 552
-553 0.00139021873474121 0.0 0.0 0.0 553
-554 0.0234880447387695 0.0200000000000005 0.0200000000000005 0.0 554
-555 0.00147581100463867 0.0 0.0 0.0 555
-556 0.00144290924072266 0.0 0.0 0.0 556
-557 0.00200700759887695 0.00999999999999979 0.00999999999999979 0.0 557
-558 0.00271010398864746 0.0 0.0 0.0 558
-559 0.00263786315917969 0.0 0.0 0.0 559
-560 0.00255584716796875 0.0 0.0 0.0 560
-561 0.0022728443145752 0.00999999999999979 0.00999999999999979 0.0 561
-562 0.0014340877532959 0.0 0.0 0.0 562
-563 0.00143599510192871 0.0 0.0 0.0 563
-564 0.00140905380249023 0.0 0.0 0.0 564
-565 0.00140786170959473 0.0 0.0 0.0 565
-566 0.00142693519592285 0.0 0.0 0.0 566
-567 0.00141596794128418 0.00999999999999979 0.00999999999999979 0.0 567
-568 0.00147199630737305 0.0 0.0 0.0 568
-569 0.00142502784729004 0.0 0.0 0.0 569
-570 0.00143003463745117 0.0 0.0 0.0 570
-571 0.00140595436096191 0.0 0.0 0.0 571
-572 0.00144600868225098 0.0 0.0 0.0 572
-573 0.00141096115112305 0.0 0.0 0.0 573
-574 0.00142717361450195 0.0100000000000007 0.0100000000000007 0.0 574
-575 0.0025019645690918 0.0 0.0 0.0 575
-576 0.00191497802734375 0.0 0.0 0.0 576
-577 0.00141119956970215 0.0 0.0 0.0 577
-578 0.00140690803527832 0.0 0.0 0.0 578
-579 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 579
-580 0.00141692161560059 0.0 0.0 0.0 580
-581 0.00139212608337402 0.0 0.0 0.0 581
-582 0.00140810012817383 0.0 0.0 0.0 582
-583 0.00139307975769043 0.0 0.0 0.0 583
-584 0.00139498710632324 0.0 0.0 0.0 584
-585 0.0014030933380127 0.0 0.0 0.0 585
-586 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 586
-587 0.00141096115112305 0.0 0.0 0.0 587
-588 0.00140500068664551 0.0 0.0 0.0 588
-589 0.00144505500793457 0.0 0.0 0.0 589
-590 0.00141191482543945 0.0 0.0 0.0 590
-591 0.00140213966369629 0.0 0.0 0.0 591
-592 0.00139594078063965 0.0 0.0 0.0 592
-593 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 593
-594 0.00139093399047852 0.0 0.0 0.0 594
-595 0.00148797035217285 0.0 0.0 0.0 595
-596 0.00139999389648438 0.0 0.0 0.0 596
-597 0.00139689445495605 0.0 0.0 0.0 597
-598 0.00140094757080078 0.0 0.0 0.0 598
-599 0.00140786170959473 0.0 0.0 0.0 599
-600 0.00140810012817383 0.0100000000000007 0.0100000000000007 0.0 600
-601 0.00140810012817383 0.0 0.0 0.0 601
-602 0.00140500068664551 0.0 0.0 0.0 602
-603 0.00139093399047852 0.0 0.0 0.0 603
-604 0.00142192840576172 0.0 0.0 0.0 604
-605 0.00138998031616211 0.0 0.0 0.0 605
-606 0.00140213966369629 0.0 0.0 0.0 606
-607 0.00140285491943359 0.00999999999999979 0.00999999999999979 0.0 607
-608 0.00141000747680664 0.0 0.0 0.0 608
-609 0.00140190124511719 0.0 0.0 0.0 609
-610 0.00142097473144531 0.0 0.0 0.0 610
-611 0.00139689445495605 0.0 0.0 0.0 611
-612 0.00147509574890137 0.0 0.0 0.0 612
-613 0.00141000747680664 0.0 0.0 0.0 613
-614 0.00140285491943359 0.00999999999999979 0.00999999999999979 0.0 614
-615 0.00142002105712891 0.0 0.0 0.0 615
-616 0.0232539176940918 0.0200000000000005 0.0200000000000005 0.0 616
-617 0.00145983695983887 0.0 0.0 0.0 617
-618 0.00142908096313477 0.0 0.0 0.0 618
-619 0.00143790245056152 0.00999999999999979 0.00999999999999979 0.0 619
-620 0.00141000747680664 0.0 0.0 0.0 620
-621 0.00141692161560059 0.0 0.0 0.0 621
-622 0.00142216682434082 0.0 0.0 0.0 622
-623 0.00140905380249023 0.0 0.0 0.0 623
-624 0.00142598152160645 0.0 0.0 0.0 624
-625 0.00141096115112305 0.0 0.0 0.0 625
-626 0.00142097473144531 0.00999999999999979 0.00999999999999979 0.0 626
-627 0.00149297714233398 0.0 0.0 0.0 627
-628 0.0014348030090332 0.0 0.0 0.0 628
-629 0.00148200988769531 0.0 0.0 0.0 629
-630 0.0014040470123291 0.0 0.0 0.0 630
-631 0.00141596794128418 0.0 0.0 0.0 631
-632 0.00142216682434082 0.0 0.0 0.0 632
-633 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 633
-634 0.00142693519592285 0.0 0.0 0.0 634
-635 0.00141692161560059 0.0 0.0 0.0 635
-636 0.00141501426696777 0.0 0.0 0.0 636
-637 0.00140976905822754 0.0 0.0 0.0 637
-638 0.00140500068664551 0.0 0.0 0.0 638
-639 0.00141787528991699 0.0 0.0 0.0 639
-640 0.0013880729675293 0.0100000000000007 0.0100000000000007 0.0 640
-641 0.00142812728881836 0.0 0.0 0.0 641
-642 0.0014040470123291 0.0 0.0 0.0 642
-643 0.0013880729675293 0.0 0.0 0.0 643
-644 0.00140810012817383 0.0 0.0 0.0 644
-645 0.00142192840576172 0.0 0.0 0.0 645
-646 0.00140810012817383 0.0 0.0 0.0 646
-647 0.00140190124511719 0.00999999999999979 0.00999999999999979 0.0 647
-648 0.00148701667785645 0.0 0.0 0.0 648
-649 0.0014040470123291 0.0 0.0 0.0 649
-650 0.00140094757080078 0.0 0.0 0.0 650
-651 0.00139904022216797 0.0 0.0 0.0 651
-652 0.00141811370849609 0.0 0.0 0.0 652
-653 0.00139403343200684 0.0 0.0 0.0 653
-654 0.00141191482543945 0.00999999999999979 0.00999999999999979 0.0 654
-655 0.00140500068664551 0.0 0.0 0.0 655
-656 0.00141096115112305 0.0 0.0 0.0 656
-657 0.00185894966125488 0.0 0.0 0.0 657
-658 0.00141286849975586 0.0 0.0 0.0 658
-659 0.00149917602539062 0.0 0.0 0.0 659
-660 0.00140190124511719 0.0 0.0 0.0 660
-661 0.00139188766479492 0.00999999999999979 0.00999999999999979 0.0 661
-662 0.00138711929321289 0.0 0.0 0.0 662
-663 0.00139904022216797 0.0 0.0 0.0 663
-664 0.00141596794128418 0.0 0.0 0.0 664
-665 0.00139212608337402 0.0 0.0 0.0 665
-666 0.00141191482543945 0.0 0.0 0.0 666
-667 0.00139403343200684 0.0 0.0 0.0 667
-668 0.00140905380249023 0.0100000000000007 0.0100000000000007 0.0 668
-669 0.00139307975769043 0.0 0.0 0.0 669
-670 0.00139999389648438 0.0 0.0 0.0 670
-671 0.00142002105712891 0.0 0.0 0.0 671
-672 0.00139904022216797 0.0 0.0 0.0 672
-673 0.00142097473144531 0.0 0.0 0.0 673
-674 0.00140500068664551 0.0 0.0 0.0 674
-675 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 675
-676 0.00139284133911133 0.0 0.0 0.0 676
-677 0.0242998600006104 0.0199999999999996 0.0199999999999996 0.0 677
-678 0.00148987770080566 0.0 0.0 0.0 678
-679 0.00144290924072266 0.0 0.0 0.0 679
-680 0.00143098831176758 0.0100000000000007 0.0100000000000007 0.0 680
-681 0.00144410133361816 0.0 0.0 0.0 681
-682 0.00142598152160645 0.0 0.0 0.0 682
-683 0.00140094757080078 0.0 0.0 0.0 683
-684 0.00146293640136719 0.0 0.0 0.0 684
-685 0.00141811370849609 0.0 0.0 0.0 685
-686 0.00143098831176758 0.0 0.0 0.0 686
-687 0.00144100189208984 0.00999999999999979 0.00999999999999979 0.0 687
-688 0.00143003463745117 0.0 0.0 0.0 688
-689 0.00141406059265137 0.0 0.0 0.0 689
-690 0.00143194198608398 0.0 0.0 0.0 690
-691 0.0014040470123291 0.0 0.0 0.0 691
-692 0.00141191482543945 0.0 0.0 0.0 692
-693 0.00259590148925781 0.00999999999999979 0.00999999999999979 0.0 693
-694 0.00263714790344238 0.0 0.0 0.0 694
-695 0.00258207321166992 0.0 0.0 0.0 695
-696 0.00255298614501953 0.0 0.0 0.0 696
-697 0.00179100036621094 0.00999999999999979 0.00999999999999979 0.0 697
-698 0.00142312049865723 0.0 0.0 0.0 698
-699 0.00141215324401855 0.0 0.0 0.0 699
-700 0.00140094757080078 0.0 0.0 0.0 700
-701 0.00138998031616211 0.0 0.0 0.0 701
-702 0.00139999389648438 0.0 0.0 0.0 702
-703 0.00142312049865723 0.0 0.0 0.0 703
-704 0.00142812728881836 0.00999999999999979 0.00999999999999979 0.0 704
-705 0.00140690803527832 0.0 0.0 0.0 705
-706 0.00139999389648438 0.0 0.0 0.0 706
-707 0.00140500068664551 0.0 0.0 0.0 707
-708 0.00139498710632324 0.0 0.0 0.0 708
-709 0.00139498710632324 0.0 0.0 0.0 709
-710 0.0014030933380127 0.0 0.0 0.0 710
-711 0.00138497352600098 0.0100000000000007 0.0100000000000007 0.0 711
-712 0.00139498710632324 0.0 0.0 0.0 712
-713 0.00139904022216797 0.0 0.0 0.0 713
-714 0.00141000747680664 0.0 0.0 0.0 714
-715 0.00140118598937988 0.0 0.0 0.0 715
-716 0.00141406059265137 0.0 0.0 0.0 716
-717 0.00140094757080078 0.0 0.0 0.0 717
-718 0.00141787528991699 0.00999999999999979 0.00999999999999979 0.0 718
-719 0.00140714645385742 0.0 0.0 0.0 719
-720 0.00142097473144531 0.0 0.0 0.0 720
-721 0.0013880729675293 0.0 0.0 0.0 721
-722 0.00140094757080078 0.0 0.0 0.0 722
-723 0.0014190673828125 0.0 0.0 0.0 723
-724 0.00139117240905762 0.0 0.0 0.0 724
-725 0.00139784812927246 0.00999999999999979 0.00999999999999979 0.0 725
-726 0.00163793563842773 0.0 0.0 0.0 726
-727 0.00141406059265137 0.0 0.0 0.0 727
-728 0.00140500068664551 0.0 0.0 0.0 728
-729 0.00141692161560059 0.0 0.0 0.0 729
-730 0.00141000747680664 0.0 0.0 0.0 730
-731 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 731
-732 0.00140595436096191 0.0 0.0 0.0 732
-733 0.00140881538391113 0.0 0.0 0.0 733
-734 0.00140500068664551 0.0 0.0 0.0 734
-735 0.00139904022216797 0.0 0.0 0.0 735
-736 0.00141787528991699 0.0 0.0 0.0 736
-737 0.00141406059265137 0.0 0.0 0.0 737
-738 0.00141000747680664 0.0100000000000007 0.0100000000000007 0.0 738
-739 0.0232431888580322 0.0199999999999996 0.0199999999999996 0.0 739
-740 0.00145602226257324 0.0 0.0 0.0 740
-741 0.00145196914672852 0.0 0.0 0.0 741
-742 0.00142693519592285 0.0 0.0 0.0 742
-743 0.00143599510192871 0.0 0.0 0.0 743
-744 0.00144100189208984 0.00999999999999979 0.00999999999999979 0.0 744
-745 0.00146389007568359 0.0 0.0 0.0 745
-746 0.00143003463745117 0.0 0.0 0.0 746
-747 0.00141501426696777 0.0 0.0 0.0 747
-748 0.00139808654785156 0.0 0.0 0.0 748
-749 0.00142097473144531 0.0 0.0 0.0 749
-750 0.00140905380249023 0.0 0.0 0.0 750
-751 0.00150108337402344 0.0100000000000007 0.0100000000000007 0.0 751
-752 0.00140714645385742 0.0 0.0 0.0 752
-753 0.00142908096313477 0.0 0.0 0.0 753
-754 0.0014040470123291 0.0 0.0 0.0 754
-755 0.00141501426696777 0.0 0.0 0.0 755
-756 0.00140094757080078 0.0 0.0 0.0 756
-757 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 757
-758 0.00141000747680664 0.0 0.0 0.0 758
-759 0.00140714645385742 0.0 0.0 0.0 759
-760 0.00141096115112305 0.0 0.0 0.0 760
-761 0.00140213966369629 0.0 0.0 0.0 761
-762 0.0014188289642334 0.0 0.0 0.0 762
-763 0.00138497352600098 0.0 0.0 0.0 763
-764 0.00142192840576172 0.00999999999999979 0.00999999999999979 0.0 764
-765 0.00140380859375 0.0 0.0 0.0 765
-766 0.00153803825378418 0.0 0.0 0.0 766
-767 0.0013880729675293 0.0 0.0 0.0 767
-768 0.00141191482543945 0.0 0.0 0.0 768
-769 0.00139689445495605 0.0 0.0 0.0 769
-770 0.00144219398498535 0.0 0.0 0.0 770
-771 0.00145888328552246 0.00999999999999979 0.00999999999999979 0.0 771
-772 0.00142621994018555 0.0 0.0 0.0 772
-773 0.00138998031616211 0.0 0.0 0.0 773
-774 0.00141286849975586 0.0 0.0 0.0 774
-775 0.00140190124511719 0.0 0.0 0.0 775
-776 0.00139498710632324 0.0 0.0 0.0 776
-777 0.00141191482543945 0.0 0.0 0.0 777
-778 0.00138211250305176 0.0100000000000007 0.0100000000000007 0.0 778
-779 0.00141000747680664 0.0 0.0 0.0 779
-780 0.00139093399047852 0.0 0.0 0.0 780
-781 0.00139188766479492 0.0 0.0 0.0 781
-782 0.00139904022216797 0.0 0.0 0.0 782
-783 0.0013880729675293 0.0 0.0 0.0 783
-784 0.00139880180358887 0.0 0.0 0.0 784
-785 0.00137805938720703 0.00999999999999979 0.00999999999999979 0.0 785
-786 0.00141191482543945 0.0 0.0 0.0 786
-787 0.00139498710632324 0.0 0.0 0.0 787
-788 0.00141286849975586 0.0 0.0 0.0 788
-789 0.00140285491943359 0.0 0.0 0.0 789
-790 0.00140213966369629 0.0 0.0 0.0 790
-791 0.00139808654785156 0.0 0.0 0.0 791
-792 0.00141000747680664 0.00999999999999979 0.00999999999999979 0.0 792
-793 0.00142383575439453 0.0 0.0 0.0 793
-794 0.0014040470123291 0.0 0.0 0.0 794
-795 0.00141215324401855 0.0 0.0 0.0 795
-796 0.00140690803527832 0.0 0.0 0.0 796
-797 0.00139689445495605 0.0 0.0 0.0 797
-798 0.00139403343200684 0.0 0.0 0.0 798
-799 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 799
-800 0.0231518745422363 0.0200000000000005 0.0200000000000005 0.0 800
-801 0.00148391723632812 0.0 0.0 0.0 801
-802 0.00144004821777344 0.0 0.0 0.0 802
-803 0.00144600868225098 0.0 0.0 0.0 803
-804 0.00148105621337891 0.00999999999999979 0.00999999999999979 0.0 804
-805 0.0014500617980957 0.0 0.0 0.0 805
-806 0.00141406059265137 0.0 0.0 0.0 806
-807 0.00140595436096191 0.0 0.0 0.0 807
-808 0.00142502784729004 0.0 0.0 0.0 808
-809 0.00140285491943359 0.0 0.0 0.0 809
-810 0.00142288208007812 0.0 0.0 0.0 810
-811 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 811
-812 0.00139999389648438 0.0 0.0 0.0 812
-813 0.00141000747680664 0.0 0.0 0.0 813
-814 0.00140881538391113 0.0 0.0 0.0 814
-815 0.00143098831176758 0.0 0.0 0.0 815
-816 0.00140094757080078 0.0 0.0 0.0 816
-817 0.00143003463745117 0.0 0.0 0.0 817
-818 0.00140500068664551 0.0100000000000007 0.0100000000000007 0.0 818
-819 0.00142002105712891 0.0 0.0 0.0 819
-820 0.00141096115112305 0.0 0.0 0.0 820
-821 0.00142502784729004 0.0 0.0 0.0 821
-822 0.00141096115112305 0.0 0.0 0.0 822
-823 0.00140619277954102 0.0 0.0 0.0 823
-824 0.00139093399047852 0.0 0.0 0.0 824
-825 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 825
-826 0.00139999389648438 0.0 0.0 0.0 826
-827 0.00140190124511719 0.0 0.0 0.0 827
-828 0.0014030933380127 0.0 0.0 0.0 828
-829 0.00139808654785156 0.0 0.0 0.0 829
-830 0.00140786170959473 0.0 0.0 0.0 830
-831 0.00171494483947754 0.0 0.0 0.0 831
-832 0.00259613990783691 0.0 0.0 0.0 832
-833 0.00256896018981934 0.0 0.0 0.0 833
-834 0.00258994102478027 0.0 0.0 0.0 834
-835 0.00195598602294922 0.00999999999999979 0.00999999999999979 0.0 835
-836 0.00141477584838867 0.0 0.0 0.0 836
-837 0.0014030933380127 0.0 0.0 0.0 837
-838 0.00140500068664551 0.0 0.0 0.0 838
-839 0.00138711929321289 0.0 0.0 0.0 839
-840 0.00139904022216797 0.0 0.0 0.0 840
-841 0.00139403343200684 0.0 0.0 0.0 841
-842 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 842
-843 0.0014498233795166 0.0 0.0 0.0 843
-844 0.00139594078063965 0.0 0.0 0.0 844
-845 0.00139307975769043 0.0 0.0 0.0 845
-846 0.0013890266418457 0.0 0.0 0.0 846
-847 0.00141000747680664 0.0 0.0 0.0 847
-848 0.00138711929321289 0.0 0.0 0.0 848
-849 0.00221610069274902 0.0100000000000007 0.0100000000000007 0.0 849
-850 0.00145506858825684 0.0 0.0 0.0 850
-851 0.00141501426696777 0.0 0.0 0.0 851
-852 0.00145888328552246 0.0 0.0 0.0 852
-853 0.00140500068664551 0.0 0.0 0.0 853
-854 0.00139904022216797 0.0 0.0 0.0 854
-855 0.00137901306152344 0.0 0.0 0.0 855
-856 0.00144314765930176 0.00999999999999979 0.00999999999999979 0.0 856
-857 0.00139904022216797 0.0 0.0 0.0 857
-858 0.00142312049865723 0.0 0.0 0.0 858
-859 0.00139689445495605 0.0 0.0 0.0 859
-860 0.00140786170959473 0.0 0.0 0.0 860
-861 0.00139713287353516 0.0 0.0 0.0 861
-862 0.0231709480285645 0.0300000000000002 0.0300000000000002 0.0 862
-863 0.00148701667785645 0.0 0.0 0.0 863
-864 0.00143599510192871 0.0 0.0 0.0 864
-865 0.00144219398498535 0.0 0.0 0.0 865
-866 0.00142002105712891 0.0 0.0 0.0 866
-867 0.0014500617980957 0.0 0.0 0.0 867
-868 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 868
-869 0.00141692161560059 0.0 0.0 0.0 869
-870 0.00142192840576172 0.0 0.0 0.0 870
-871 0.00142192840576172 0.0 0.0 0.0 871
-872 0.00141191482543945 0.0 0.0 0.0 872
-873 0.00143194198608398 0.0 0.0 0.0 873
-874 0.00142288208007812 0.0 0.0 0.0 874
-875 0.00142884254455566 0.00999999999999979 0.00999999999999979 0.0 875
-876 0.00160384178161621 0.0 0.0 0.0 876
-877 0.00264906883239746 0.0 0.0 0.0 877
-878 0.00261187553405762 0.0 0.0 0.0 878
-879 0.00243496894836426 0.00999999999999979 0.00999999999999979 0.0 879
-880 0.00259900093078613 0.0 0.0 0.0 880
-881 0.0026240348815918 0.0 0.0 0.0 881
-882 0.00248599052429199 0.0 0.0 0.0 882
-883 0.0024101734161377 0.0100000000000007 0.0100000000000007 0.0 883
-884 0.00142192840576172 0.0 0.0 0.0 884
-885 0.0014488697052002 0.0 0.0 0.0 885
-886 0.00140285491943359 0.0 0.0 0.0 886
-887 0.00140213966369629 0.0 0.0 0.0 887
-888 0.00141406059265137 0.0 0.0 0.0 888
-889 0.00139999389648438 0.0 0.0 0.0 889
-890 0.00140690803527832 0.00999999999999979 0.00999999999999979 0.0 890
-891 0.00139093399047852 0.0 0.0 0.0 891
-892 0.00140500068664551 0.0 0.0 0.0 892
-893 0.00140690803527832 0.0 0.0 0.0 893
-894 0.00141000747680664 0.0 0.0 0.0 894
-895 0.00140810012817383 0.0 0.0 0.0 895
-896 0.00139403343200684 0.0 0.0 0.0 896
-897 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 897
-898 0.00140810012817383 0.0 0.0 0.0 898
-899 0.00143003463745117 0.0 0.0 0.0 899
-900 0.00141811370849609 0.0 0.0 0.0 900
-901 0.00142002105712891 0.0 0.0 0.0 901
-902 0.00138211250305176 0.0 0.0 0.0 902
-903 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 903
-904 0.00140595436096191 0.0 0.0 0.0 904
-905 0.00140690803527832 0.0 0.0 0.0 905
-906 0.00141501426696777 0.0 0.0 0.0 906
-907 0.00139594078063965 0.0 0.0 0.0 907
-908 0.00142002105712891 0.0 0.0 0.0 908
-909 0.00139808654785156 0.0 0.0 0.0 909
-910 0.00140905380249023 0.0100000000000007 0.0100000000000007 0.0 910
-911 0.0014040470123291 0.0 0.0 0.0 911
-912 0.00139808654785156 0.0 0.0 0.0 912
-913 0.00141000747680664 0.0 0.0 0.0 913
-914 0.00140619277954102 0.0 0.0 0.0 914
-915 0.0014040470123291 0.0 0.0 0.0 915
-916 0.0014040470123291 0.0 0.0 0.0 916
-917 0.00141310691833496 0.00999999999999979 0.00999999999999979 0.0 917
-918 0.00147795677185059 0.0 0.0 0.0 918
-919 0.00141000747680664 0.0 0.0 0.0 919
-920 0.00140786170959473 0.0 0.0 0.0 920
-921 0.00141000747680664 0.0 0.0 0.0 921
-922 0.00140786170959473 0.0 0.0 0.0 922
-923 0.0234408378601074 0.0300000000000002 0.0300000000000002 0.0 923
-924 0.00142312049865723 0.0 0.0 0.0 924
-925 0.00144505500793457 0.0 0.0 0.0 925
-926 0.00144791603088379 0.0 0.0 0.0 926
-927 0.00144004821777344 0.0 0.0 0.0 927
-928 0.00142192840576172 0.0 0.0 0.0 928
-929 0.00143814086914062 0.00999999999999979 0.00999999999999979 0.0 929
-930 0.00141406059265137 0.0 0.0 0.0 930
-931 0.00141501426696777 0.0 0.0 0.0 931
-932 0.00142312049865723 0.0 0.0 0.0 932
-933 0.00141215324401855 0.0 0.0 0.0 933
-934 0.00143003463745117 0.0 0.0 0.0 934
-935 0.0014188289642334 0.0 0.0 0.0 935
-936 0.00142192840576172 0.00999999999999979 0.00999999999999979 0.0 936
-937 0.00142598152160645 0.0 0.0 0.0 937
-938 0.00143218040466309 0.0 0.0 0.0 938
-939 0.00140094757080078 0.0 0.0 0.0 939
-940 0.00141811370849609 0.0 0.0 0.0 940
-941 0.00142598152160645 0.0 0.0 0.0 941
-942 0.00143694877624512 0.0 0.0 0.0 942
-943 0.00146985054016113 0.00999999999999979 0.00999999999999979 0.0 943
-944 0.00139403343200684 0.0 0.0 0.0 944
-945 0.00141096115112305 0.0 0.0 0.0 945
-946 0.00140595436096191 0.0 0.0 0.0 946
-947 0.00140213966369629 0.0 0.0 0.0 947
-948 0.00139594078063965 0.0 0.0 0.0 948
-949 0.00140190124511719 0.0 0.0 0.0 949
-950 0.00140213966369629 0.0100000000000007 0.0100000000000007 0.0 950
-951 0.0014040470123291 0.0 0.0 0.0 951
-952 0.00139999389648438 0.0 0.0 0.0 952
-953 0.00139904022216797 0.0 0.0 0.0 953
-954 0.00139617919921875 0.0 0.0 0.0 954
-955 0.00141000747680664 0.0 0.0 0.0 955
-956 0.00141716003417969 0.0 0.0 0.0 956
-957 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 957
-958 0.00141096115112305 0.0 0.0 0.0 958
-959 0.00139999389648438 0.0 0.0 0.0 959
-960 0.00141787528991699 0.0 0.0 0.0 960
-961 0.00139808654785156 0.0 0.0 0.0 961
-962 0.0014030933380127 0.0 0.0 0.0 962
-963 0.00140810012817383 0.0 0.0 0.0 963
-964 0.00203394889831543 0.00999999999999979 0.00999999999999979 0.0 964
-965 0.00265693664550781 0.0 0.0 0.0 965
-966 0.00261211395263672 0.0 0.0 0.0 966
-967 0.00254082679748535 0.0 0.0 0.0 967
-968 0.00202393531799316 0.00999999999999979 0.00999999999999979 0.0 968
-969 0.00142693519592285 0.0 0.0 0.0 969
-970 0.00139784812927246 0.0 0.0 0.0 970
-971 0.00140213966369629 0.0 0.0 0.0 971
-972 0.00139594078063965 0.0 0.0 0.0 972
-973 0.00141501426696777 0.0 0.0 0.0 973
-974 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 974
-975 0.00144290924072266 0.0 0.0 0.0 975
-976 0.00140500068664551 0.0 0.0 0.0 976
-977 0.00140690803527832 0.0 0.0 0.0 977
-978 0.00142502784729004 0.0 0.0 0.0 978
-979 0.00141000747680664 0.0 0.0 0.0 979
-980 0.00141501426696777 0.0 0.0 0.0 980
-981 0.00140118598937988 0.0100000000000007 0.0100000000000007 0.0 981
-982 0.00142693519592285 0.0 0.0 0.0 982
-983 0.00141310691833496 0.0 0.0 0.0 983
-984 0.00140690803527832 0.0 0.0 0.0 984
-985 0.0233311653137207 0.0199999999999996 0.0199999999999996 0.0 985
-986 0.00148701667785645 0.00999999999999979 0.00999999999999979 0.0 986
-987 0.00144100189208984 0.0 0.0 0.0 987
-988 0.00140595436096191 0.0 0.0 0.0 988
-989 0.00144505500793457 0.0 0.0 0.0 989
-990 0.00142598152160645 0.0 0.0 0.0 990
-991 0.0014491081237793 0.0 0.0 0.0 991
-992 0.00139904022216797 0.0 0.0 0.0 992
-993 0.00142788887023926 0.0100000000000007 0.0100000000000007 0.0 993
-994 0.00141382217407227 0.0 0.0 0.0 994
-995 0.00141119956970215 0.0 0.0 0.0 995
-996 0.00139999389648438 0.0 0.0 0.0 996
-997 0.00142192840576172 0.0 0.0 0.0 997
-998 0.0014197826385498 0.0 0.0 0.0 998
-999 0.00142288208007812 0.0 0.0 0.0 999
-1000 0.00141811370849609 0.00999999999999979 0.00999999999999979 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat
deleted file mode 100644
index 238a8f3b7..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat
+++ /dev/null
@@ -1,900 +0,0 @@
-#lag autocorrelation
-101 1.0
-102 0.00222153397099066
-103 -0.0143375943792822
-104 -0.0230145315894251
-105 -0.0272569948085685
-106 -0.0289478311233791
-107 -0.0239202547218024
-108 -0.0254569116577405
-109 -0.0204533758607008
-110 -0.0264699250769266
-111 -0.0247691307865804
-112 -0.0281656685433677
-113 -0.0282797510426555
-114 -0.0264980555156702
-115 -0.0264456484724888
-116 -0.027624326287035
-117 -0.0204913232518958
-118 -0.0136418899889287
-119 -0.0164287250050804
-120 -0.0160068899951543
-121 -0.0213508645203322
-122 -0.0261094503544549
-123 -0.0283361918761636
-124 -0.0221634425280319
-125 -0.0200377132134378
-126 -0.0158156288853482
-127 -0.0184937620769426
-128 -0.0167418191590156
-129 -0.0267897605444739
-130 -0.0277175604156327
-131 -0.0255031340290104
-132 -0.0259704766205717
-133 -0.026687135609607
-134 -0.0259098393314182
-135 -0.0257383295981194
-136 -0.0223218665246626
-137 -0.0237310896666623
-138 -0.0241241330086241
-139 -0.0289642979203642
-140 -0.0268317636147499
-141 -0.0245114013773254
-142 -0.0203659369554139
-143 0.0378050317430218
-144 0.426940829336361
-145 0.38796107377986
-146 0.0415547540823161
-147 -0.0195440376652659
-148 -0.0255053999646579
-149 -0.0275465915036962
-150 -0.0268562381835056
-151 -0.0234577846735018
-152 -0.0209532827400553
-153 -0.0189455488110332
-154 -0.02305883351641
-155 -0.0263771953757563
-156 -0.0280604279698784
-157 -0.0270717426772097
-158 -0.0246648903144108
-159 -0.0247175651482116
-160 -0.021051073568524
-161 -0.0163198388224076
-162 -0.0144235534240568
-163 -0.0136936717999382
-164 -0.01698846339106
-165 -0.0172619597265475
-166 -0.022224434827852
-167 -0.0219642323974638
-168 -0.0213243463149422
-169 -0.0192387869040187
-170 -0.0197178180625259
-171 -0.0247915784961403
-172 -0.0218270561892234
-173 -0.0262672996245232
-174 -0.024849965587679
-175 -0.0250252615288926
-176 -0.0251007165159392
-177 -0.0238806074688618
-178 -0.0238757651256144
-179 -0.0240426101294269
-180 -0.0234219466443065
-181 -0.0212602833600402
-182 -0.0229991714197526
-183 -0.0261227540349392
-184 -0.0221623986521011
-185 -0.0198657473347064
-186 0.036858247139314
-187 0.29256789370978
-188 0.217268577909927
-189 0.196770495691689
-190 0.094220865706204
-191 -0.0203791531848586
-192 -0.0242142425710697
-193 -0.0227327141359121
-194 -0.0219087131272295
-195 -0.0139180641371944
-196 -0.0165931483689415
-197 -0.0139691174427045
-198 -0.0250038332172815
-199 -0.0262538643545197
-200 -0.025280145240993
-201 -0.022716588551902
-202 -0.0229491126971064
-203 -0.020163745252957
-204 -0.0180649219211942
-205 -0.0174961232004392
-206 -0.0153752959032635
-207 -0.0151070882074296
-208 -0.0162636711403948
-209 -0.0213539658247787
-210 -0.0241878645706104
-211 -0.0233292145480391
-212 -0.0222792602366159
-213 -0.0200857928095336
-214 -0.0224102357962423
-215 -0.0200431331454358
-216 -0.0251386240282493
-217 -0.0217360075267156
-218 -0.0231247916814153
-219 -0.0236289558661022
-220 -0.022798275340034
-221 -0.022394916702971
-222 -0.0240641627722647
-223 -0.02767136777592
-224 -0.0188563255687053
-225 -0.0201523683449021
-226 -0.0196358949998781
-227 -0.0201572059848371
-228 -0.0180306969850485
-229 0.0330883208878215
-230 0.187053030884649
-231 0.180166992312632
-232 0.175193540635547
-233 0.0852511978178321
-234 0.0836036324945735
-235 -0.0180475894095978
-236 -0.0203965677916504
-237 -0.0234729155755235
-238 -0.0203967773857997
-239 -0.0168134546888542
-240 -0.0145823454491767
-241 -0.0182208080214287
-242 -0.0222702719218944
-243 -0.0245502962962475
-244 -0.0230701140380481
-245 -0.0205544743992634
-246 -0.0152766305199052
-247 -0.015660060910655
-248 -0.0182272831792615
-249 -0.0161416465628721
-250 -0.0138775731037607
-251 -0.0146059144127008
-252 -0.014851378459684
-253 -0.0174697076620558
-254 -0.020394504090619
-255 -0.020923051703186
-256 -0.0188690748415421
-257 -0.020691771573437
-258 -0.0180158099925264
-259 -0.025009300618942
-260 -0.0241656012183153
-261 -0.0201701986649696
-262 -0.0213418341591563
-263 -0.0212876158412719
-264 -0.0196613481631524
-265 -0.0224579972849258
-266 -0.0222709347842853
-267 -0.021839178151421
-268 -0.0181242059899927
-269 -0.0196595880691145
-270 -0.0176712734167537
-271 -0.0174037647691641
-272 0.0361609936559733
-273 0.136273065680629
-274 0.137142321378537
-275 0.119170985165791
-276 0.135128869617739
-277 0.0365729744317657
-278 0.0813532152332901
-279 -0.0164218823860774
-280 -0.0150012133117104
-281 -0.0180652264456629
-282 -0.0180223031364979
-283 -0.0146583895021702
-284 -0.0178385632762936
-285 -0.0183688063955637
-286 -0.0199104201945895
-287 -0.0209162045756424
-288 -0.0182424612671294
-289 -0.0102871995641823
-290 -0.0097194264103497
-291 -0.0166796622739482
-292 -0.0193090133043633
-293 -0.0109789304127889
-294 -0.0145511817849648
-295 -0.0159177263733151
-296 -0.0162297085566881
-297 -0.0160458825546633
-298 -0.0185277530735613
-299 -0.0201185134004853
-300 -0.0225767827149403
-301 -0.020600528590444
-302 -0.0178266254999198
-303 -0.0228272615104135
-304 -0.0188650304163709
-305 -0.0192512492130587
-306 -0.0198882781449453
-307 -0.018944580372254
-308 -0.0191976364453834
-309 -0.020380651922197
-310 -0.020008249388093
-311 -0.0199582696579672
-312 -0.016107489794778
-313 -0.0168857973840798
-314 -0.0159072805310197
-315 0.0337796643954297
-316 0.091400279956598
-317 0.128355772863555
-318 0.0811615095759163
-319 0.0770716694548368
-320 0.145070077843674
-321 -0.0188619341727165
-322 0.0799864438805513
-323 -0.0199478816959614
-324 -0.0210772723197886
-325 -0.0210646569907724
-326 -0.0200788443102393
-327 -0.0211662403279555
-328 -0.0167589827973132
-329 -0.0177459345163699
-330 -0.0176456584861234
-331 -0.0220878387663237
-332 -0.0138294678922046
-333 -0.00950860063270121
-334 -0.0127373100109087
-335 -0.0165386832541542
-336 -0.0182671925631197
-337 -0.0109720091878599
-338 -0.0142702474119185
-339 -0.0110379801788155
-340 -0.0154139924731546
-341 -0.0128889876019394
-342 -0.0173631353598641
-343 -0.0222795571128729
-344 -0.0201510823246637
-345 -0.014168231775332
-346 -0.0172988244822199
-347 -0.0166164172889096
-348 -0.0174591997875334
-349 -0.0178598488132696
-350 -0.0174148484681578
-351 -0.0181701494308226
-352 -0.0170602479756066
-353 -0.022860700637634
-354 -0.0186677124344551
-355 -0.0163631644839097
-356 -0.0150447805883455
-357 -0.0155934972805149
-358 0.0412705831487356
-359 0.0432271691160312
-360 0.134082054092421
-361 0.030429559359917
-362 0.128011199059957
-363 0.0290649669583617
-364 0.0977105919898357
-365 0.0268435678280154
-366 0.0353018054840323
-367 -0.0198055818066033
-368 -0.018378272291099
-369 -0.019916785016334
-370 -0.0205847247605069
-371 -0.0201224650176015
-372 -0.01627691948957
-373 -0.0153629187371632
-374 -0.0125002930105743
-375 -0.0160149273157025
-376 -0.0130459873232066
-377 -0.0117001449083753
-378 -0.0128253666323881
-379 -0.0149389076420028
-380 -0.0147672676170861
-381 -0.00941821935965455
-382 -0.00473688018446407
-383 -0.00808553215461901
-384 -0.0105108934303795
-385 -0.0155256488187373
-386 -0.0210836438529971
-387 -0.0194168403848756
-388 -0.0138959279148097
-389 -0.0167510111816621
-390 -0.0170725457918982
-391 -0.016150326422395
-392 -0.0187592561556726
-393 -0.0201368328637298
-394 -0.0171077907044443
-395 -0.0171103523390093
-396 -0.0182097163513887
-397 -0.0172423936894017
-398 -0.0146907180546899
-399 -0.0148205318166592
-400 -0.0144952560105946
-401 0.0391317015604062
-402 -0.00325045294442625
-403 0.135229844753472
-404 0.0339587870366385
-405 0.0833862815909146
-406 0.0775145154752597
-407 0.0288174710076017
-408 0.0542563755615635
-409 0.0810954683226646
-410 -0.017752492355491
-411 -0.0180579468812209
-412 -0.0189407872188061
-413 -0.0189713023163003
-414 -0.0189831714463216
-415 -0.0186956047569828
-416 -0.0188493030013216
-417 -0.0190954931073824
-418 -0.0189538951395989
-419 -0.0168159225101202
-420 -0.0149622277586486
-421 -0.0134585088118323
-422 -0.0107702264004257
-423 -0.0116881974906342
-424 -0.0135084097379996
-425 -0.0115600330212086
-426 -0.00385827806043179
-427 -0.00648046756427941
-428 -0.010678969741849
-429 -0.0174377994416611
-430 -0.0197415520446045
-431 -0.01387746808618
-432 -0.0142870555311067
-433 -0.0126167043533278
-434 -0.0145341368337345
-435 -0.0172588314742905
-436 -0.0192532464901077
-437 -0.0178888029842574
-438 -0.0149435002438141
-439 -0.0143499589296186
-440 -0.0113284320025856
-441 -0.0146907285452937
-442 -0.0118090676160861
-443 -0.0129550696231186
-444 -0.00943679479582223
-445 0.0410693940588715
-446 0.0981340063555525
-447 0.0301059977373294
-448 0.0798620238351765
-449 0.0399504241633469
-450 0.0799710609081107
-451 0.0375183260101038
-452 -0.0128846089593424
-453 0.093737068719454
-454 -0.0166488241943883
-455 -0.0171620322539306
-456 -0.0176681103949864
-457 -0.0177135709591161
-458 -0.0174025569142706
-459 -0.0176679666536122
-460 -0.0181412705139815
-461 -0.0178162340211567
-462 -0.0148661374954626
-463 -0.012878454938704
-464 -0.0136407519521233
-465 -0.0103957847636471
-466 -0.00908338367847883
-467 -0.0110136706236845
-468 -0.0121798225855914
-469 -0.00417292561751909
-470 -0.00307290764550916
-471 -0.00798497461616614
-472 -0.0111435895667381
-473 -0.0153727357774596
-474 -0.0130271532875312
-475 -0.0124190182516596
-476 -0.0084547082575317
-477 -0.00918576031696132
-478 -0.0162409259378339
-479 -0.018065492839516
-480 -0.0168355167430056
-481 -0.0140509731408616
-482 -0.0149035783683084
-483 -0.00931711982847588
-484 -0.014271656696945
-485 -0.0121711176661241
-486 -0.016804905268994
-487 -0.0104196286531009
-488 0.0383870537436679
-489 0.0552773935471216
-490 0.0345937652331171
-491 0.0813542198669446
-492 0.0363428500481453
-493 0.0402459628537269
-494 0.0880185317795738
-495 -0.0129023101613787
-496 0.0302552183198115
-497 0.0536535190947818
-498 -0.0156069516901892
-499 -0.0162156062091284
-500 -0.0162183722980474
-501 -0.0157747057135625
-502 -0.0166040466989765
-503 -0.0161608566990615
-504 -0.0167537182627031
-505 -0.0164722018431066
-506 -0.0143593770446019
-507 -0.012530817471516
-508 -0.0130107038316214
-509 -0.0127117424488491
-510 -0.0123582491090572
-511 -0.0143988077890034
-512 -0.0132043617399602
-513 -0.0121255066830081
-514 -0.00947286185269373
-515 -0.00465100530248661
-516 -0.0117788080303492
-517 -0.0130751296092514
-518 -0.0155036171011815
-519 -0.010643006695032
-520 -0.00739844298156769
-521 -0.0112412204699085
-522 -0.0161872155724303
-523 -0.0168989403333427
-524 -0.0153730958327368
-525 -0.0125043590711503
-526 -0.00940141758011818
-527 -0.00767975179438695
-528 -0.0109057442427293
-529 -0.0152170670171314
-530 -0.0148168636021302
-531 0.0536268084567977
-532 0.00159158256076242
-533 0.0395691988094227
-534 0.0851832556342331
-535 0.0404885336981451
-536 0.0359152408805565
-537 0.0400801815807958
-538 0.0426897422408288
-539 0.032487435819703
-540 0.0379746640301957
-541 -0.0114145850527779
-542 -0.0143266971158537
-543 -0.0144808626295274
-544 -0.0142835316361234
-545 -0.0144672980991767
-546 -0.0149347701157941
-547 -0.0147221461325212
-548 -0.0149340818843796
-549 -0.0149339646879691
-550 -0.0125515123976881
-551 -0.0106843909304337
-552 -0.0120477982033282
-553 -0.0107426813396423
-554 -0.0103781179386869
-555 -0.00980456885361171
-556 -0.0108064202489364
-557 -0.0121145826899896
-558 -0.00556810926546485
-559 -0.00930006259964903
-560 -0.00516953265688487
-561 -0.0103764487413688
-562 -0.0101531608339304
-563 -0.00918822426319678
-564 -0.0101644666934554
-565 -0.0112481176383032
-566 -0.0145127017542735
-567 -0.0147134045513878
-568 -0.0123144344086325
-569 -0.00570964879226978
-570 -0.0063187706922707
-571 -0.00374866158046794
-572 -0.013607724159013
-573 -0.0137804453374875
-574 -0.00939070104936453
-575 0.0423495547767671
-576 0.000209272987046017
-577 0.0880471222849516
-578 0.0385858128624645
-579 0.0396811891208319
-580 0.0353924058064461
-581 0.0495909051898724
-582 -0.0113155170664094
-583 0.0871168673380537
-584 -0.0115980451842322
-585 -0.0125526032386238
-586 -0.012561736194457
-587 -0.0122507426071209
-588 -0.0123064811043512
-589 -0.0121521641917975
-590 -0.0125333975284308
-591 -0.0130863343506295
-592 -0.0134314408515597
-593 -0.0107991754906669
-594 -0.00884398203252155
-595 -0.0100733336463772
-596 -0.00922955762602743
-597 -0.00949676131734901
-598 -0.0110224903229849
-599 -0.00991288650680148
-600 -0.00936825932623963
-601 -0.00980726528701717
-602 -0.00476664596953343
-603 -0.011430503413995
-604 -0.0113213354943102
-605 -0.0134064415109797
-606 -0.0126055847537459
-607 -0.0135083477615435
-608 -0.0113488370833923
-609 -0.0093156617098165
-610 -0.00976577466545605
-611 -0.0133363567698321
-612 -0.00759897085944556
-613 -0.00510037875494374
-614 -0.00408004384283288
-615 -0.00918160520147706
-616 -0.0108113236545845
-617 -0.0106231816617747
-618 -0.00758999243430865
-619 0.0435531551195662
-620 0.0520037268502813
-621 0.0439044539134388
-622 0.0386654726142954
-623 0.0394118644732992
-624 0.0449248987301056
-625 -0.00863719437291388
-626 0.0412392562292136
-627 0.0440129688249318
-628 -0.0101620925718705
-629 -0.0109600840877224
-630 -0.0112705053011257
-631 -0.0116301438053661
-632 -0.0113736455019991
-633 -0.0117661118641892
-634 -0.0113961495319145
-635 -0.0117740021837853
-636 -0.0117094958602983
-637 -0.00939366161371644
-638 -0.00755907350023703
-639 -0.00838658396126048
-640 -0.0074832135472603
-641 -0.00801205358318107
-642 -0.00624145194619799
-643 -0.0070240024426915
-644 -0.00834613473332137
-645 -0.00670243676363534
-646 -0.0106128186631781
-647 -0.0123852232161095
-648 -0.0124265826160123
-649 -0.0112567385689026
-650 -0.0126065730661914
-651 -0.0123854746644478
-652 -0.00987776546588025
-653 -0.00722003160503851
-654 -0.00380201074432189
-655 -0.00665072917336648
-656 -0.00528196776714817
-657 -0.00510807558151163
-658 -0.00811089821457131
-659 -0.00755766045240185
-660 -0.00919072675598614
-661 -0.00917820835177611
-662 0.0449751982709438
-663 0.00545567790804502
-664 0.047402752921981
-665 0.0446605853927159
-666 0.0383269966597984
-667 0.0485706532828867
-668 -0.00861899683875584
-669 0.036175649351787
-670 0.0495063574698606
-671 -0.00922596004976487
-672 -0.0101114415486753
-673 -0.00993735125464903
-674 -0.0100323503804273
-675 -0.0105460378506107
-676 -0.0101900492452311
-677 -0.0104909689537006
-678 -0.0106006916930028
-679 -0.0104312931865838
-680 -0.0103517278463301
-681 -0.00740828023970121
-682 -0.00544494861028685
-683 -0.00608611560648061
-684 -0.00534756025333046
-685 -0.0031542340646546
-686 -0.00508349746510613
-687 -0.00739762226897734
-688 -0.0053663959286737
-689 -0.00916557860646553
-690 -0.0110500156300869
-691 -0.00988205922376505
-692 -0.0109866472880073
-693 -0.0111866547046902
-694 -0.0111122786835176
-695 -0.0108203039490724
-696 -0.0102592902413053
-697 -0.0107873762797399
-698 -0.010503275107589
-699 -0.0107835661252666
-700 -0.00885386551992296
-701 -0.00913096053370505
-702 -0.006655207615153
-703 -0.00593455487034946
-704 -0.00427919054888438
-705 -0.007897096903017
-706 0.0490946252850488
-707 0.00815207966824887
-708 0.0473241399151052
-709 0.0451019841097689
-710 0.0479372536790981
-711 -0.00656127986315397
-712 0.0402549343925511
-713 0.0449105363109089
-714 -0.00775184190900309
-715 -0.00768054605133951
-716 -0.00839927750787529
-717 -0.00843853230017117
-718 -0.00790960738283612
-719 -0.0080103177775415
-720 -0.00742775541399996
-721 -0.00765629252098078
-722 -0.00799975093255115
-723 -0.00852792228057431
-724 -0.00869178550957608
-725 -0.00626674339877887
-726 -0.00412677151228354
-727 -0.0048446048963408
-728 -0.000902395625628718
-729 -0.000758143099110528
-730 -0.00408369870009201
-731 -0.00365498969615341
-732 -0.00766259847340275
-733 -0.00952428752243833
-734 -0.00944480113586648
-735 -0.00948862662694449
-736 -0.00966174451824508
-737 -0.00945600129424617
-738 -0.00943741727131444
-739 -0.00927951393185398
-740 -0.00928797610609347
-741 -0.0093286159789273
-742 -0.00765123775530771
-743 -0.00891136789083873
-744 -0.00940772724441718
-745 -0.00786456325355482
-746 -0.0047977712696699
-747 -0.00308223523552548
-748 0.000335699172084439
-749 -0.00143686229797692
-750 0.0513266950133769
-751 0.00563569816195414
-752 0.0477166719391144
-753 0.0538442014782216
-754 -0.0056982279416085
-755 0.0394329868140949
-756 0.0485711646307275
-757 -0.00685930745583302
-758 -0.0069941514632557
-759 -0.0066395137630499
-760 -0.00736962474522024
-761 -0.00752916655217279
-762 -0.00739785479449587
-763 -0.00756967688350672
-764 -0.00753735518588655
-765 -0.00780124181595982
-766 -0.0077216624864741
-767 -0.00784018338356136
-768 -0.00785468874319521
-769 -0.00421699574952483
-770 -0.00190288158223283
-771 -0.000206480072774308
-772 0.00141964253926074
-773 -4.28774976178744e-05
-774 -0.000986275524641414
-775 -0.00657709364993877
-776 -0.00833283088512488
-777 -0.00818951629006444
-778 -0.00836751926023713
-779 -0.00846989619881298
-780 -0.00820214471451413
-781 -0.00821893302874576
-782 -0.00796875201723603
-783 -0.00797370090373924
-784 -0.00777868495761638
-785 -0.00789699981214183
-786 -0.00815610674254451
-787 -0.00778049198735858
-788 -0.00818383133025141
-789 -0.00781336379026083
-790 -0.00682906252309473
-791 -0.00521347355977257
-792 -0.00500213245575373
-793 -0.00506883410260168
-794 0.0474518412366765
-795 0.00530982771618318
-796 0.0565700977023552
-797 -0.000392750407902867
-798 0.0453538486416986
-799 0.0476616389325516
-800 -0.00485863626421196
-801 -0.00525412195734806
-802 -0.00565503507026226
-803 -0.00551485423027977
-804 -0.00524396672704169
-805 -0.00590408701477556
-806 -0.00575508257342466
-807 -0.0058689006002845
-808 -0.00561694855307918
-809 -0.00612555234095552
-810 -0.00608574219510099
-811 -0.00564904015986621
-812 -0.00490660016533395
-813 -0.0046171197705464
-814 0.00177390652695689
-815 0.0035896881022546
-816 0.00161554733058578
-817 0.00437187124600963
-818 -0.000991588850557123
-819 -0.00478099352848916
-820 -0.00637007664471483
-821 -0.00627509734235782
-822 -0.00655857327658989
-823 -0.00656425755979379
-824 -0.00650927617188294
-825 -0.00650262457960547
-826 -0.00662413230967772
-827 -0.00657738252698944
-828 -0.00645476393708
-829 -0.00659463926044406
-830 -0.00649001643087145
-831 -0.00610360245952262
-832 -0.00578387897293013
-833 -0.00402985580826015
-834 -0.00406634314030596
-835 -0.00261501841642483
-836 -0.00301755910132054
-837 -0.00326543386600453
-838 0.0572941624786258
-839 0.00764310260634384
-840 0.00124989263445848
-841 0.0485617649608875
-842 0.0534245959427794
-843 -0.00365723487459394
-844 -0.00424930954244624
-845 -0.00447294923783986
-846 -0.0044749818394267
-847 -0.00464870339809727
-848 -0.00404145529364563
-849 -0.0047634223597755
-850 -0.00467301475043984
-851 -0.00482869667199491
-852 -0.00492239000387982
-853 -0.00463765006041817
-854 -0.0046895918656674
-855 -0.00469126659620766
-856 -0.00430815035273188
-857 -0.00128800088385523
-858 0.00267781615699824
-859 0.00356342242419808
-860 0.00436645666734667
-861 0.00184035931246651
-862 -0.000943211896465123
-863 -0.00341308542653818
-864 -0.00529528124001912
-865 -0.00542898683100493
-866 -0.00553749798487258
-867 -0.00551487806193758
-868 -0.00531561848433044
-869 -0.0053876668196608
-870 -0.00553192702900933
-871 -0.00563989142175504
-872 -0.00521799189299869
-873 -0.00553828490350608
-874 -0.00542860483166627
-875 -0.00537895256953826
-876 -0.00402015584547178
-877 -0.00377599406291178
-878 -0.00402869364355377
-879 -0.00251857216946617
-880 -0.00240522631583728
-881 -0.00231339313710883
-882 -0.00221867026914885
-883 0.0485842407165457
-884 0.00444090950886226
-885 0.052462247531025
-886 -0.00245866728272721
-887 -0.00219100298033388
-888 -0.00258850605081842
-889 -0.0027963562987193
-890 -0.00291992258910256
-891 -0.00299261604099267
-892 -0.00287127254000797
-893 -0.00289608069594768
-894 -0.00280812344627608
-895 -0.00270762901550325
-896 -0.00266975879125481
-897 -0.00220006592251856
-898 -0.00202466427043569
-899 0.0013412649013256
-900 0.00249450051103929
-901 0.00162230152238072
-902 0.00338232047570188
-903 -6.05925325718229e-05
-904 -0.00259194486873829
-905 -0.00291640344192111
-906 -0.00250008679719597
-907 -0.0028490159247303
-908 -0.00308392356343406
-909 -0.00315698199289235
-910 -0.00298811214364333
-911 -0.00314332876724667
-912 -0.0031949080511993
-913 -0.00322269110310181
-914 -0.00327914040255845
-915 -0.00328848900129892
-916 -0.00333752382027206
-917 -0.00309757512659634
-918 -0.00328479456404456
-919 -0.00212177476264958
-920 -0.00213301941637447
-921 -0.00216845672650316
-922 -0.00207541491244113
-923 -0.00207359226664921
-924 -0.000795789430015217
-925 -0.000779514662456165
-926 -0.000756465833443346
-927 0.0577265267706453
-928 0.00687785865649293
-929 -0.00083343873726207
-930 -0.00107719646114928
-931 -0.00108475651120658
-932 -0.00117127681410593
-933 -0.00122811644473185
-934 -0.00127607908277042
-935 -0.00131021310298656
-936 -0.0013179072335
-937 -0.00147237322207706
-938 -0.00138343425729852
-939 -0.00136475351227092
-940 -0.00143219923016344
-941 -0.00132045547517709
-942 -0.00124130927220743
-943 -0.00118457113968125
-944 -0.0011509753919375
-945 -0.000999222689811352
-946 -0.00117359451012239
-947 -0.00105429594479484
-948 -0.00122085082695325
-949 -0.00129578013904683
-950 -0.00102761415169174
-951 -0.00140096472953254
-952 -0.00139860939031699
-953 -0.00151498094704311
-954 -0.0014719650713445
-955 -0.00156023800835947
-956 -0.00160881766904741
-957 -0.00156225880303738
-958 -0.00163459726309757
-959 -0.00163126714870796
-960 -0.00165394472715442
-961 -5.20102850007659e-05
-962 -0.000181333021969587
-963 -0.000229410914437179
-964 -0.000271936329999531
-965 -0.000289225646672715
-966 -0.000264626695269327
-967 -0.000343743683778553
-968 0.00109579617257524
-969 0.00106253650901319
-970 0.00103053375796608
-971 0.000994475133650943
-972 0.00096219604797213
-973 0.000930291083643673
-974 0.00089629434032705
-975 0.000862706715224073
-976 0.000829567281721935
-977 0.000796368072697504
-978 0.000761767798271763
-979 0.000730769092014861
-980 0.000695768030599533
-981 0.000665093515571032
-982 0.000631804759496164
-983 0.000597688431802904
-984 0.000571043223397954
-985 0.00053621559120878
-986 0.0005056031461063
-987 0.000470414024698076
-988 0.000436113652307852
-989 0.000401280866025421
-990 0.000366892747802913
-991 0.000332558486017457
-992 0.00029776201514551
-993 0.000264088081422397
-994 0.000229570195953799
-995 0.000203049247782519
-996 0.000169032219339048
-997 0.000134474421245207
-998 0.000100377453607142
-999 6.59658062483004e-05
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat
deleted file mode 100644
index 619ef9845..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat
+++ /dev/null
@@ -1,901 +0,0 @@
-#scatter real total user system repeat
-101 0.00208497047424316 0.0 0.0 0.0 101
-102 0.00208020210266113 0.0 0.0 0.0 102
-103 0.00206804275512695 0.0 0.0 0.0 103
-104 0.00207710266113281 0.0 0.0 0.0 104
-105 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 105
-106 0.00206398963928223 0.0 0.0 0.0 106
-107 0.00208497047424316 0.0 0.0 0.0 107
-108 0.00206398963928223 0.0 0.0 0.0 108
-109 0.00207400321960449 0.0 0.0 0.0 109
-110 0.00206398963928223 0.0 0.0 0.0 110
-111 0.00205802917480469 0.0 0.0 0.0 111
-112 0.00207996368408203 0.0 0.0 0.0 112
-113 0.00207304954528809 0.0 0.0 0.0 113
-114 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 114
-115 0.00207114219665527 0.0 0.0 0.0 115
-116 0.00212287902832031 0.0 0.0 0.0 116
-117 0.00205707550048828 0.0 0.0 0.0 117
-118 0.0020599365234375 0.0 0.0 0.0 118
-119 0.00206613540649414 0.0100000000000016 0.0100000000000016 0.0 119
-120 0.00205683708190918 0.0 0.0 0.0 120
-121 0.00205206871032715 0.0 0.0 0.0 121
-122 0.00204992294311523 0.0 0.0 0.0 122
-123 0.00208115577697754 0.0 0.0 0.0 123
-124 0.00205588340759277 0.00999999999999979 0.00999999999999979 0.0 124
-125 0.00207877159118652 0.0 0.0 0.0 125
-126 0.00207400321960449 0.0 0.0 0.0 126
-127 0.00206089019775391 0.0 0.0 0.0 127
-128 0.00205779075622559 0.00999999999999979 0.00999999999999979 0.0 128
-129 0.00205898284912109 0.0 0.0 0.0 129
-130 0.00206899642944336 0.0 0.0 0.0 130
-131 0.00204896926879883 0.0 0.0 0.0 131
-132 0.00209593772888184 0.0 0.0 0.0 132
-133 0.00208401679992676 0.00999999999999979 0.00999999999999979 0.0 133
-134 0.0276279449462891 0.0199999999999996 0.0199999999999996 0.0 134
-135 0.0021820068359375 0.00999999999999979 0.00999999999999979 0.0 135
-136 0.00213503837585449 0.0 0.0 0.0 136
-137 0.00211405754089355 0.0 0.0 0.0 137
-138 0.00212502479553223 0.0 0.0 0.0 138
-139 0.0020899772644043 0.0 0.0 0.0 139
-140 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 140
-141 0.00206589698791504 0.0 0.0 0.0 141
-142 0.00207710266113281 0.0 0.0 0.0 142
-143 0.00205492973327637 0.0 0.0 0.0 143
-144 0.00208020210266113 0.0 0.0 0.0 144
-145 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 145
-146 0.00208377838134766 0.0 0.0 0.0 146
-147 0.00206995010375977 0.0 0.0 0.0 147
-148 0.00206708908081055 0.0 0.0 0.0 148
-149 0.00207114219665527 0.0100000000000016 0.0100000000000016 0.0 149
-150 0.0020759105682373 0.0 0.0 0.0 150
-151 0.0021510124206543 0.0 0.0 0.0 151
-152 0.00207805633544922 0.0 0.0 0.0 152
-153 0.00206089019775391 0.0 0.0 0.0 153
-154 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 154
-155 0.00207614898681641 0.0 0.0 0.0 155
-156 0.00205588340759277 0.0 0.0 0.0 156
-157 0.00206494331359863 0.0 0.0 0.0 157
-158 0.00280499458312988 0.00999999999999979 0.00999999999999979 0.0 158
-159 0.00453996658325195 0.0 0.0 0.0 159
-160 0.00369596481323242 0.0 0.0 0.0 160
-161 0.00410914421081543 0.00999999999999979 0.00999999999999979 0.0 161
-162 0.00381112098693848 0.0 0.0 0.0 162
-163 0.00235795974731445 0.0 0.0 0.0 163
-164 0.00209784507751465 0.0 0.0 0.0 164
-165 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 165
-166 0.00204110145568848 0.0 0.0 0.0 166
-167 0.00205802917480469 0.0 0.0 0.0 167
-168 0.00205707550048828 0.0 0.0 0.0 168
-169 0.00208711624145508 0.0 0.0 0.0 169
-170 0.00208187103271484 0.00999999999999979 0.00999999999999979 0.0 170
-171 0.00205421447753906 0.0 0.0 0.0 171
-172 0.0020749568939209 0.0 0.0 0.0 172
-173 0.00210809707641602 0.0 0.0 0.0 173
-174 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 174
-175 0.00205206871032715 0.0 0.0 0.0 175
-176 0.00207614898681641 0.0 0.0 0.0 176
-177 0.0020759105682373 0.0 0.0 0.0 177
-178 0.0242831707000732 0.0300000000000011 0.0300000000000011 0.0 178
-179 0.00222992897033691 0.0 0.0 0.0 179
-180 0.00214791297912598 0.0 0.0 0.0 180
-181 0.00211286544799805 0.0 0.0 0.0 181
-182 0.00209379196166992 0.0 0.0 0.0 182
-183 0.00209307670593262 0.0 0.0 0.0 183
-184 0.00218510627746582 0.0 0.0 0.0 184
-185 0.00206613540649414 0.0 0.0 0.0 185
-186 0.00207090377807617 0.0 0.0 0.0 186
-187 0.00206613540649414 0.00999999999999979 0.00999999999999979 0.0 187
-188 0.00206112861633301 0.0 0.0 0.0 188
-189 0.00206303596496582 0.0 0.0 0.0 189
-190 0.00205802917480469 0.0 0.0 0.0 190
-191 0.00206398963928223 0.0 0.0 0.0 191
-192 0.00210189819335938 0.00999999999999979 0.00999999999999979 0.0 192
-193 0.00206804275512695 0.0 0.0 0.0 193
-194 0.00206708908081055 0.0 0.0 0.0 194
-195 0.00206208229064941 0.0 0.0 0.0 195
-196 0.0020899772644043 0.0 0.0 0.0 196
-197 0.00205612182617188 0.00999999999999979 0.00999999999999979 0.0 197
-198 0.00205898284912109 0.0 0.0 0.0 198
-199 0.00208115577697754 0.0 0.0 0.0 199
-200 0.0020759105682373 0.0 0.0 0.0 200
-201 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 201
-202 0.00206995010375977 0.0 0.0 0.0 202
-203 0.00206089019775391 0.0 0.0 0.0 203
-204 0.0020439624786377 0.0 0.0 0.0 204
-205 0.00207185745239258 0.0 0.0 0.0 205
-206 0.0020449161529541 0.00999999999999979 0.00999999999999979 0.0 206
-207 0.00223898887634277 0.0 0.0 0.0 207
-208 0.00205707550048828 0.0 0.0 0.0 208
-209 0.00206303596496582 0.0 0.0 0.0 209
-210 0.00205707550048828 0.0 0.0 0.0 210
-211 0.00204896926879883 0.0100000000000016 0.0100000000000016 0.0 211
-212 0.00204205513000488 0.0 0.0 0.0 212
-213 0.00211596488952637 0.0 0.0 0.0 213
-214 0.00206494331359863 0.0 0.0 0.0 214
-215 0.0020749568939209 0.0 0.0 0.0 215
-216 0.00206279754638672 0.00999999999999979 0.00999999999999979 0.0 216
-217 0.00206589698791504 0.0 0.0 0.0 217
-218 0.00207114219665527 0.0 0.0 0.0 218
-219 0.00208210945129395 0.0 0.0 0.0 219
-220 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 220
-221 0.00207304954528809 0.0 0.0 0.0 221
-222 0.00209498405456543 0.0 0.0 0.0 222
-223 0.0286588668823242 0.0299999999999994 0.0299999999999994 0.0 223
-224 0.00219297409057617 0.0 0.0 0.0 224
-225 0.00214004516601562 0.0 0.0 0.0 225
-226 0.00212192535400391 0.00999999999999979 0.00999999999999979 0.0 226
-227 0.00208878517150879 0.0 0.0 0.0 227
-228 0.00208306312561035 0.0 0.0 0.0 228
-229 0.00206398963928223 0.0 0.0 0.0 229
-230 0.00207996368408203 0.0 0.0 0.0 230
-231 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 231
-232 0.00206494331359863 0.0 0.0 0.0 232
-233 0.0020751953125 0.0 0.0 0.0 233
-234 0.00207805633544922 0.0 0.0 0.0 234
-235 0.00206494331359863 0.0 0.0 0.0 235
-236 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 236
-237 0.0020749568939209 0.0 0.0 0.0 237
-238 0.00206494331359863 0.0 0.0 0.0 238
-239 0.00206494331359863 0.0 0.0 0.0 239
-240 0.00205492973327637 0.0 0.0 0.0 240
-241 0.00206518173217773 0.0100000000000016 0.0100000000000016 0.0 241
-242 0.00207686424255371 0.0 0.0 0.0 242
-243 0.00204920768737793 0.0 0.0 0.0 243
-244 0.00206398963928223 0.0 0.0 0.0 244
-245 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 245
-246 0.00205397605895996 0.0 0.0 0.0 246
-247 0.00206804275512695 0.0 0.0 0.0 247
-248 0.00204014778137207 0.0 0.0 0.0 248
-249 0.00206995010375977 0.0 0.0 0.0 249
-250 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 250
-251 0.00205612182617188 0.0 0.0 0.0 251
-252 0.0020439624786377 0.0 0.0 0.0 252
-253 0.00204610824584961 0.0 0.0 0.0 253
-254 0.00206518173217773 0.0 0.0 0.0 254
-255 0.00204300880432129 0.00999999999999979 0.00999999999999979 0.0 255
-256 0.00205802917480469 0.0 0.0 0.0 256
-257 0.0020759105682373 0.0 0.0 0.0 257
-258 0.00206303596496582 0.0 0.0 0.0 258
-259 0.00207281112670898 0.0 0.0 0.0 259
-260 0.00205898284912109 0.00999999999999979 0.00999999999999979 0.0 260
-261 0.00205898284912109 0.0 0.0 0.0 261
-262 0.00205683708190918 0.0 0.0 0.0 262
-263 0.00207901000976562 0.0 0.0 0.0 263
-264 0.00206780433654785 0.00999999999999979 0.00999999999999979 0.0 264
-265 0.00208497047424316 0.0 0.0 0.0 265
-266 0.00219416618347168 0.0 0.0 0.0 266
-267 0.024918794631958 0.0199999999999996 0.0199999999999996 0.0 267
-268 0.00214409828186035 0.0100000000000016 0.0100000000000016 0.0 268
-269 0.0021209716796875 0.0 0.0 0.0 269
-270 0.00211095809936523 0.0 0.0 0.0 270
-271 0.00207209587097168 0.0 0.0 0.0 271
-272 0.0020902156829834 0.00999999999999979 0.00999999999999979 0.0 272
-273 0.00208091735839844 0.0 0.0 0.0 273
-274 0.00206494331359863 0.0 0.0 0.0 274
-275 0.00207281112670898 0.0 0.0 0.0 275
-276 0.00205397605895996 0.0 0.0 0.0 276
-277 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 277
-278 0.00206208229064941 0.0 0.0 0.0 278
-279 0.00205898284912109 0.0 0.0 0.0 279
-280 0.00207304954528809 0.0 0.0 0.0 280
-281 0.0020909309387207 0.0 0.0 0.0 281
-282 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 282
-283 0.00206303596496582 0.0 0.0 0.0 283
-284 0.0020449161529541 0.0 0.0 0.0 284
-285 0.00206398963928223 0.0 0.0 0.0 285
-286 0.00204992294311523 0.0 0.0 0.0 286
-287 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 287
-288 0.00205397605895996 0.0 0.0 0.0 288
-289 0.00206589698791504 0.0 0.0 0.0 289
-290 0.00206184387207031 0.0 0.0 0.0 290
-291 0.00207281112670898 0.00999999999999979 0.00999999999999979 0.0 291
-292 0.00205683708190918 0.0 0.0 0.0 292
-293 0.00205802917480469 0.0 0.0 0.0 293
-294 0.00206208229064941 0.0 0.0 0.0 294
-295 0.00205206871032715 0.0 0.0 0.0 295
-296 0.00206208229064941 0.00999999999999979 0.00999999999999979 0.0 296
-297 0.00205707550048828 0.0 0.0 0.0 297
-298 0.00207400321960449 0.0 0.0 0.0 298
-299 0.00205802917480469 0.0 0.0 0.0 299
-300 0.00205802917480469 0.0 0.0 0.0 300
-301 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 301
-302 0.00206995010375977 0.0 0.0 0.0 302
-303 0.0021510124206543 0.0 0.0 0.0 303
-304 0.0020599365234375 0.0 0.0 0.0 304
-305 0.00206208229064941 0.0 0.0 0.0 305
-306 0.00221395492553711 0.0100000000000016 0.0100000000000016 0.0 306
-307 0.00210285186767578 0.0 0.0 0.0 307
-308 0.00223803520202637 0.0 0.0 0.0 308
-309 0.0020909309387207 0.0 0.0 0.0 309
-310 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 310
-311 0.0255651473999023 0.0199999999999996 0.0199999999999996 0.0 311
-312 0.00424313545227051 0.00999999999999979 0.00999999999999979 0.0 312
-313 0.00345015525817871 0.0 0.0 0.0 313
-314 0.00213217735290527 0.0 0.0 0.0 314
-315 0.00210309028625488 0.0 0.0 0.0 315
-316 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 316
-317 0.00207209587097168 0.0 0.0 0.0 317
-318 0.00213503837585449 0.0 0.0 0.0 318
-319 0.00294709205627441 0.0 0.0 0.0 319
-320 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 320
-321 0.00208091735839844 0.0 0.0 0.0 321
-322 0.00208783149719238 0.0 0.0 0.0 322
-323 0.00208806991577148 0.0 0.0 0.0 323
-324 0.00208210945129395 0.0 0.0 0.0 324
-325 0.0020601749420166 0.00999999999999979 0.00999999999999979 0.0 325
-326 0.00206303596496582 0.0 0.0 0.0 326
-327 0.00205588340759277 0.0 0.0 0.0 327
-328 0.00206208229064941 0.0 0.0 0.0 328
-329 0.00205492973327637 0.0 0.0 0.0 329
-330 0.00205683708190918 0.00999999999999979 0.00999999999999979 0.0 330
-331 0.00205397605895996 0.0 0.0 0.0 331
-332 0.00206303596496582 0.0 0.0 0.0 332
-333 0.00205397605895996 0.0 0.0 0.0 333
-334 0.00205802917480469 0.0 0.0 0.0 334
-335 0.00204992294311523 0.0100000000000016 0.0100000000000016 0.0 335
-336 0.0020599365234375 0.0 0.0 0.0 336
-337 0.00216293334960938 0.0 0.0 0.0 337
-338 0.00204205513000488 0.0 0.0 0.0 338
-339 0.00208377838134766 0.00999999999999979 0.00999999999999979 0.0 339
-340 0.00212287902832031 0.0 0.0 0.0 340
-341 0.00205206871032715 0.0 0.0 0.0 341
-342 0.00207185745239258 0.0 0.0 0.0 342
-343 0.00206279754638672 0.0 0.0 0.0 343
-344 0.00204896926879883 0.00999999999999979 0.00999999999999979 0.0 344
-345 0.00205779075622559 0.0 0.0 0.0 345
-346 0.00207614898681641 0.0 0.0 0.0 346
-347 0.00204992294311523 0.0 0.0 0.0 347
-348 0.00206398963928223 0.0 0.0 0.0 348
-349 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 349
-350 0.00206518173217773 0.0 0.0 0.0 350
-351 0.00207805633544922 0.0 0.0 0.0 351
-352 0.0020749568939209 0.0 0.0 0.0 352
-353 0.00208401679992676 0.0 0.0 0.0 353
-354 0.00214099884033203 0.00999999999999979 0.00999999999999979 0.0 354
-355 0.0242671966552734 0.0199999999999996 0.0199999999999996 0.0 355
-356 0.00216913223266602 0.0 0.0 0.0 356
-357 0.00213503837585449 0.00999999999999979 0.00999999999999979 0.0 357
-358 0.00212192535400391 0.0 0.0 0.0 358
-359 0.00210094451904297 0.0 0.0 0.0 359
-360 0.0020909309387207 0.0 0.0 0.0 360
-361 0.00209498405456543 0.0 0.0 0.0 361
-362 0.00208592414855957 0.0100000000000016 0.0100000000000016 0.0 362
-363 0.00206685066223145 0.0 0.0 0.0 363
-364 0.00205492973327637 0.0 0.0 0.0 364
-365 0.00207710266113281 0.0 0.0 0.0 365
-366 0.00207304954528809 0.0 0.0 0.0 366
-367 0.00205421447753906 0.0 0.0 0.0 367
-368 0.00206685066223145 0.0 0.0 0.0 368
-369 0.00206613540649414 0.0 0.0 0.0 369
-370 0.00255608558654785 0.0 0.0 0.0 370
-371 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 371
-372 0.00216817855834961 0.0 0.0 0.0 372
-373 0.00214409828186035 0.0 0.0 0.0 373
-374 0.00205111503601074 0.0 0.0 0.0 374
-375 0.0020749568939209 0.0 0.0 0.0 375
-376 0.0020759105682373 0.00999999999999979 0.00999999999999979 0.0 376
-377 0.0020599365234375 0.0 0.0 0.0 377
-378 0.00207805633544922 0.0 0.0 0.0 378
-379 0.00205898284912109 0.0 0.0 0.0 379
-380 0.00205492973327637 0.0 0.0 0.0 380
-381 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 381
-382 0.00205588340759277 0.0 0.0 0.0 382
-383 0.00204014778137207 0.0 0.0 0.0 383
-384 0.00204610824584961 0.0 0.0 0.0 384
-385 0.00206184387207031 0.0 0.0 0.0 385
-386 0.00203680992126465 0.00999999999999979 0.00999999999999979 0.0 386
-387 0.00206804275512695 0.0 0.0 0.0 387
-388 0.00205707550048828 0.0 0.0 0.0 388
-389 0.00206804275512695 0.0 0.0 0.0 389
-390 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 390
-391 0.00206780433654785 0.0 0.0 0.0 391
-392 0.00206494331359863 0.0 0.0 0.0 392
-393 0.00206303596496582 0.0 0.0 0.0 393
-394 0.00204896926879883 0.0 0.0 0.0 394
-395 0.00207185745239258 0.00999999999999979 0.00999999999999979 0.0 395
-396 0.00207304954528809 0.0 0.0 0.0 396
-397 0.00208806991577148 0.0 0.0 0.0 397
-398 0.00208806991577148 0.0 0.0 0.0 398
-399 0.024277925491333 0.0300000000000011 0.0300000000000011 0.0 399
-400 0.00216102600097656 0.0 0.0 0.0 400
-401 0.00212621688842773 0.0 0.0 0.0 401
-402 0.00209689140319824 0.0 0.0 0.0 402
-403 0.00210285186767578 0.00999999999999979 0.00999999999999979 0.0 403
-404 0.00208210945129395 0.0 0.0 0.0 404
-405 0.00401806831359863 0.0 0.0 0.0 405
-406 0.00404691696166992 0.00999999999999979 0.00999999999999979 0.0 406
-407 0.00400710105895996 0.0 0.0 0.0 407
-408 0.00207805633544922 0.0 0.0 0.0 408
-409 0.00208497047424316 0.0 0.0 0.0 409
-410 0.0020751953125 0.00999999999999979 0.00999999999999979 0.0 410
-411 0.00208187103271484 0.0 0.0 0.0 411
-412 0.00213217735290527 0.0 0.0 0.0 412
-413 0.00207400321960449 0.0 0.0 0.0 413
-414 0.00206208229064941 0.0 0.0 0.0 414
-415 0.00206613540649414 0.00999999999999979 0.00999999999999979 0.0 415
-416 0.00204205513000488 0.0 0.0 0.0 416
-417 0.00208091735839844 0.0 0.0 0.0 417
-418 0.00227904319763184 0.0 0.0 0.0 418
-419 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 419
-420 0.00207114219665527 0.0 0.0 0.0 420
-421 0.00207090377807617 0.0 0.0 0.0 421
-422 0.00204086303710938 0.0 0.0 0.0 422
-423 0.00205683708190918 0.0 0.0 0.0 423
-424 0.00205421447753906 0.00999999999999979 0.00999999999999979 0.0 424
-425 0.00205588340759277 0.0 0.0 0.0 425
-426 0.0020439624786377 0.0 0.0 0.0 426
-427 0.00203394889831543 0.0 0.0 0.0 427
-428 0.0020599365234375 0.0 0.0 0.0 428
-429 0.00205612182617188 0.0100000000000016 0.0100000000000016 0.0 429
-430 0.00206303596496582 0.0 0.0 0.0 430
-431 0.00206899642944336 0.0 0.0 0.0 431
-432 0.00206804275512695 0.0 0.0 0.0 432
-433 0.00212502479553223 0.0 0.0 0.0 433
-434 0.00207805633544922 0.00999999999999979 0.00999999999999979 0.0 434
-435 0.00205397605895996 0.0 0.0 0.0 435
-436 0.00214004516601562 0.0 0.0 0.0 436
-437 0.0020451545715332 0.0 0.0 0.0 437
-438 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 438
-439 0.00207805633544922 0.0 0.0 0.0 439
-440 0.00207304954528809 0.0 0.0 0.0 440
-441 0.00207090377807617 0.0 0.0 0.0 441
-442 0.0238261222839355 0.0299999999999994 0.0299999999999994 0.0 442
-443 0.00229191780090332 0.0 0.0 0.0 443
-444 0.00225210189819336 0.0 0.0 0.0 444
-445 0.00214314460754395 0.0 0.0 0.0 445
-446 0.00211405754089355 0.0 0.0 0.0 446
-447 0.0021059513092041 0.00999999999999979 0.00999999999999979 0.0 447
-448 0.00212502479553223 0.0 0.0 0.0 448
-449 0.00215005874633789 0.0 0.0 0.0 449
-450 0.00206708908081055 0.0 0.0 0.0 450
-451 0.00206208229064941 0.00999999999999979 0.00999999999999979 0.0 451
-452 0.00206995010375977 0.0 0.0 0.0 452
-453 0.00207304954528809 0.0 0.0 0.0 453
-454 0.00208711624145508 0.0 0.0 0.0 454
-455 0.00207400321960449 0.0 0.0 0.0 455
-456 0.00205802917480469 0.0100000000000016 0.0100000000000016 0.0 456
-457 0.00207400321960449 0.0 0.0 0.0 457
-458 0.00209999084472656 0.0 0.0 0.0 458
-459 0.00374412536621094 0.0 0.0 0.0 459
-460 0.00207614898681641 0.0 0.0 0.0 460
-461 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 461
-462 0.00205206871032715 0.0 0.0 0.0 462
-463 0.00207209587097168 0.0 0.0 0.0 463
-464 0.00206708908081055 0.0 0.0 0.0 464
-465 0.00206398963928223 0.0 0.0 0.0 465
-466 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 466
-467 0.00206995010375977 0.0 0.0 0.0 467
-468 0.00209617614746094 0.0 0.0 0.0 468
-469 0.00206899642944336 0.0 0.0 0.0 469
-470 0.0020451545715332 0.0 0.0 0.0 470
-471 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 471
-472 0.0020442008972168 0.0 0.0 0.0 472
-473 0.00206089019775391 0.0 0.0 0.0 473
-474 0.00205492973327637 0.0 0.0 0.0 474
-475 0.00206708908081055 0.0 0.0 0.0 475
-476 0.00205087661743164 0.00999999999999979 0.00999999999999979 0.0 476
-477 0.00206589698791504 0.0 0.0 0.0 477
-478 0.00207209587097168 0.0 0.0 0.0 478
-479 0.00204992294311523 0.0 0.0 0.0 479
-480 0.00207209587097168 0.00999999999999979 0.00999999999999979 0.0 480
-481 0.0020599365234375 0.0 0.0 0.0 481
-482 0.00206613540649414 0.0 0.0 0.0 482
-483 0.00205898284912109 0.0 0.0 0.0 483
-484 0.00209403038024902 0.0 0.0 0.0 484
-485 0.00207710266113281 0.00999999999999979 0.00999999999999979 0.0 485
-486 0.0239040851593018 0.0200000000000014 0.0200000000000014 0.0 486
-487 0.00222492218017578 0.0 0.0 0.0 487
-488 0.00213289260864258 0.0 0.0 0.0 488
-489 0.0021212100982666 0.00999999999999979 0.00999999999999979 0.0 489
-490 0.0021059513092041 0.0 0.0 0.0 490
-491 0.00208616256713867 0.0 0.0 0.0 491
-492 0.00208687782287598 0.0 0.0 0.0 492
-493 0.00207901000976562 0.0 0.0 0.0 493
-494 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 494
-495 0.00204300880432129 0.0 0.0 0.0 495
-496 0.00206112861633301 0.0 0.0 0.0 496
-497 0.00206708908081055 0.0 0.0 0.0 497
-498 0.0030369758605957 0.00999999999999979 0.00999999999999979 0.0 498
-499 0.00405597686767578 0.0 0.0 0.0 499
-500 0.00401997566223145 0.0 0.0 0.0 500
-501 0.0026099681854248 0.00999999999999979 0.00999999999999979 0.0 501
-502 0.00206303596496582 0.0 0.0 0.0 502
-503 0.00206589698791504 0.0 0.0 0.0 503
-504 0.00206708908081055 0.0 0.0 0.0 504
-505 0.00212311744689941 0.00999999999999979 0.00999999999999979 0.0 505
-506 0.00225090980529785 0.0 0.0 0.0 506
-507 0.00206089019775391 0.0 0.0 0.0 507
-508 0.00205683708190918 0.0 0.0 0.0 508
-509 0.00205397605895996 0.0 0.0 0.0 509
-510 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 510
-511 0.00205707550048828 0.0 0.0 0.0 511
-512 0.00204896926879883 0.0 0.0 0.0 512
-513 0.00204920768737793 0.0 0.0 0.0 513
-514 0.00206398963928223 0.0 0.0 0.0 514
-515 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 515
-516 0.00204110145568848 0.0 0.0 0.0 516
-517 0.00205183029174805 0.0 0.0 0.0 517
-518 0.00206089019775391 0.0 0.0 0.0 518
-519 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 519
-520 0.00206184387207031 0.0 0.0 0.0 520
-521 0.00205802917480469 0.0 0.0 0.0 521
-522 0.00205802917480469 0.0 0.0 0.0 522
-523 0.00206112861633301 0.0 0.0 0.0 523
-524 0.00215315818786621 0.0100000000000016 0.0100000000000016 0.0 524
-525 0.0020451545715332 0.0 0.0 0.0 525
-526 0.00207614898681641 0.0 0.0 0.0 526
-527 0.00208091735839844 0.0 0.0 0.0 527
-528 0.00208616256713867 0.0 0.0 0.0 528
-529 0.00211095809936523 0.00999999999999979 0.00999999999999979 0.0 529
-530 0.0298140048980713 0.0299999999999994 0.0299999999999994 0.0 530
-531 0.00220298767089844 0.0 0.0 0.0 531
-532 0.00216102600097656 0.0 0.0 0.0 532
-533 0.00211501121520996 0.0 0.0 0.0 533
-534 0.00208687782287598 0.00999999999999979 0.00999999999999979 0.0 534
-535 0.0021059513092041 0.0 0.0 0.0 535
-536 0.00210785865783691 0.0 0.0 0.0 536
-537 0.0020749568939209 0.0 0.0 0.0 537
-538 0.00207400321960449 0.0 0.0 0.0 538
-539 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 539
-540 0.00211691856384277 0.0 0.0 0.0 540
-541 0.00208401679992676 0.0 0.0 0.0 541
-542 0.00206995010375977 0.0 0.0 0.0 542
-543 0.00206995010375977 0.0 0.0 0.0 543
-544 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 544
-545 0.00206589698791504 0.0 0.0 0.0 545
-546 0.00207996368408203 0.0 0.0 0.0 546
-547 0.00207018852233887 0.0 0.0 0.0 547
-548 0.00206899642944336 0.0 0.0 0.0 548
-549 0.00207304954528809 0.0100000000000016 0.0100000000000016 0.0 549
-550 0.00206708908081055 0.0 0.0 0.0 550
-551 0.00209689140319824 0.0 0.0 0.0 551
-552 0.0020749568939209 0.0 0.0 0.0 552
-553 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 553
-554 0.00207400321960449 0.0 0.0 0.0 554
-555 0.0020449161529541 0.0 0.0 0.0 555
-556 0.00207209587097168 0.0 0.0 0.0 556
-557 0.00205898284912109 0.0 0.0 0.0 557
-558 0.00214600563049316 0.00999999999999979 0.00999999999999979 0.0 558
-559 0.00205612182617188 0.0 0.0 0.0 559
-560 0.00207901000976562 0.0 0.0 0.0 560
-561 0.00205612182617188 0.0 0.0 0.0 561
-562 0.00205707550048828 0.0 0.0 0.0 562
-563 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 563
-564 0.00207209587097168 0.0 0.0 0.0 564
-565 0.0020599365234375 0.0 0.0 0.0 565
-566 0.00208687782287598 0.0 0.0 0.0 566
-567 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 567
-568 0.00205397605895996 0.0 0.0 0.0 568
-569 0.00206995010375977 0.0 0.0 0.0 569
-570 0.00204896926879883 0.0 0.0 0.0 570
-571 0.00208187103271484 0.0 0.0 0.0 571
-572 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 572
-573 0.0231339931488037 0.0199999999999996 0.0199999999999996 0.0 573
-574 0.00312709808349609 0.0 0.0 0.0 574
-575 0.00215601921081543 0.0 0.0 0.0 575
-576 0.00213813781738281 0.0100000000000016 0.0100000000000016 0.0 576
-577 0.00209593772888184 0.0 0.0 0.0 577
-578 0.00209403038024902 0.0 0.0 0.0 578
-579 0.00207901000976562 0.0 0.0 0.0 579
-580 0.00208401679992676 0.0 0.0 0.0 580
-581 0.00207114219665527 0.0 0.0 0.0 581
-582 0.00207710266113281 0.0 0.0 0.0 582
-583 0.00206685066223145 0.0 0.0 0.0 583
-584 0.00206184387207031 0.0 0.0 0.0 584
-585 0.00205588340759277 0.00999999999999979 0.00999999999999979 0.0 585
-586 0.0020751953125 0.0 0.0 0.0 586
-587 0.00206303596496582 0.0 0.0 0.0 587
-588 0.00206303596496582 0.0 0.0 0.0 588
-589 0.00205612182617188 0.0 0.0 0.0 589
-590 0.00207281112670898 0.00999999999999979 0.00999999999999979 0.0 590
-591 0.00385499000549316 0.0 0.0 0.0 591
-592 0.00404191017150879 0.0 0.0 0.0 592
-593 0.00359702110290527 0.00999999999999979 0.00999999999999979 0.0 593
-594 0.0020909309387207 0.0 0.0 0.0 594
-595 0.00204992294311523 0.0 0.0 0.0 595
-596 0.0020909309387207 0.0 0.0 0.0 596
-597 0.0020749568939209 0.00999999999999979 0.00999999999999979 0.0 597
-598 0.00209784507751465 0.0 0.0 0.0 598
-599 0.00205683708190918 0.0 0.0 0.0 599
-600 0.00203394889831543 0.0 0.0 0.0 600
-601 0.00205302238464355 0.0 0.0 0.0 601
-602 0.00205016136169434 0.00999999999999979 0.00999999999999979 0.0 602
-603 0.0020599365234375 0.0 0.0 0.0 603
-604 0.00205111503601074 0.0 0.0 0.0 604
-605 0.00206780433654785 0.0 0.0 0.0 605
-606 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 606
-607 0.00206804275512695 0.0 0.0 0.0 607
-608 0.0020439624786377 0.0 0.0 0.0 608
-609 0.00205683708190918 0.0 0.0 0.0 609
-610 0.00210785865783691 0.0 0.0 0.0 610
-611 0.00206685066223145 0.00999999999999979 0.00999999999999979 0.0 611
-612 0.00205206871032715 0.0 0.0 0.0 612
-613 0.00204706192016602 0.0 0.0 0.0 613
-614 0.00208616256713867 0.0 0.0 0.0 614
-615 0.00210213661193848 0.0 0.0 0.0 615
-616 0.0239150524139404 0.0300000000000011 0.0300000000000011 0.0 616
-617 0.00241804122924805 0.0 0.0 0.0 617
-618 0.00215888023376465 0.0 0.0 0.0 618
-619 0.00210809707641602 0.00999999999999979 0.00999999999999979 0.0 619
-620 0.00209403038024902 0.0 0.0 0.0 620
-621 0.00210905075073242 0.0 0.0 0.0 621
-622 0.00210404396057129 0.0 0.0 0.0 622
-623 0.00208401679992676 0.0 0.0 0.0 623
-624 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 624
-625 0.00206303596496582 0.0 0.0 0.0 625
-626 0.0020599365234375 0.0 0.0 0.0 626
-627 0.00207400321960449 0.0 0.0 0.0 627
-628 0.0020759105682373 0.0 0.0 0.0 628
-629 0.00206995010375977 0.00999999999999979 0.00999999999999979 0.0 629
-630 0.0021660327911377 0.0 0.0 0.0 630
-631 0.00207710266113281 0.0 0.0 0.0 631
-632 0.00208401679992676 0.0 0.0 0.0 632
-633 0.00205492973327637 0.0 0.0 0.0 633
-634 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 634
-635 0.00204586982727051 0.0 0.0 0.0 635
-636 0.00205898284912109 0.0 0.0 0.0 636
-637 0.0029301643371582 0.0 0.0 0.0 637
-638 0.00209999084472656 0.00999999999999979 0.00999999999999979 0.0 638
-639 0.00206685066223145 0.0 0.0 0.0 639
-640 0.00207400321960449 0.0 0.0 0.0 640
-641 0.00206184387207031 0.0 0.0 0.0 641
-642 0.00205183029174805 0.0 0.0 0.0 642
-643 0.0020592212677002 0.0100000000000016 0.0100000000000016 0.0 643
-644 0.00204300880432129 0.0 0.0 0.0 644
-645 0.00207090377807617 0.0 0.0 0.0 645
-646 0.00207710266113281 0.0 0.0 0.0 646
-647 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 647
-648 0.00205516815185547 0.0 0.0 0.0 648
-649 0.0020599365234375 0.0 0.0 0.0 649
-650 0.00206398963928223 0.0 0.0 0.0 650
-651 0.00206279754638672 0.0 0.0 0.0 651
-652 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 652
-653 0.00206804275512695 0.0 0.0 0.0 653
-654 0.00207209587097168 0.0 0.0 0.0 654
-655 0.00206518173217773 0.0 0.0 0.0 655
-656 0.00206589698791504 0.0 0.0 0.0 656
-657 0.00209808349609375 0.00999999999999979 0.00999999999999979 0.0 657
-658 0.00213718414306641 0.0 0.0 0.0 658
-659 0.00212907791137695 0.0 0.0 0.0 659
-660 0.0242199897766113 0.0199999999999996 0.0199999999999996 0.0 660
-661 0.00217413902282715 0.0 0.0 0.0 661
-662 0.00212502479553223 0.0 0.0 0.0 662
-663 0.0021059513092041 0.0 0.0 0.0 663
-664 0.0020909309387207 0.0 0.0 0.0 664
-665 0.00208711624145508 0.00999999999999979 0.00999999999999979 0.0 665
-666 0.00214982032775879 0.0 0.0 0.0 666
-667 0.00213503837585449 0.0 0.0 0.0 667
-668 0.00210404396057129 0.0 0.0 0.0 668
-669 0.00216293334960938 0.0 0.0 0.0 669
-670 0.00207996368408203 0.0100000000000016 0.0100000000000016 0.0 670
-671 0.00222396850585938 0.0 0.0 0.0 671
-672 0.00205898284912109 0.0 0.0 0.0 672
-673 0.00205397605895996 0.0 0.0 0.0 673
-674 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 674
-675 0.00205898284912109 0.0 0.0 0.0 675
-676 0.00207400321960449 0.0 0.0 0.0 676
-677 0.0020599365234375 0.0 0.0 0.0 677
-678 0.00206208229064941 0.0 0.0 0.0 678
-679 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 679
-680 0.00203895568847656 0.0 0.0 0.0 680
-681 0.00205302238464355 0.0 0.0 0.0 681
-682 0.00205397605895996 0.0 0.0 0.0 682
-683 0.0020599365234375 0.0 0.0 0.0 683
-684 0.00207614898681641 0.00999999999999979 0.00999999999999979 0.0 684
-685 0.00306200981140137 0.0 0.0 0.0 685
-686 0.00403904914855957 0.0 0.0 0.0 686
-687 0.00366306304931641 0.00999999999999979 0.00999999999999979 0.0 687
-688 0.00224184989929199 0.0 0.0 0.0 688
-689 0.00207114219665527 0.0 0.0 0.0 689
-690 0.00205707550048828 0.0 0.0 0.0 690
-691 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 691
-692 0.00224709510803223 0.0 0.0 0.0 692
-693 0.00273489952087402 0.0 0.0 0.0 693
-694 0.00208401679992676 0.0 0.0 0.0 694
-695 0.00205206871032715 0.00999999999999979 0.00999999999999979 0.0 695
-696 0.00206899642944336 0.0 0.0 0.0 696
-697 0.00205492973327637 0.0 0.0 0.0 697
-698 0.00207281112670898 0.0 0.0 0.0 698
-699 0.00207114219665527 0.0 0.0 0.0 699
-700 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 700
-701 0.00208711624145508 0.0 0.0 0.0 701
-702 0.0020899772644043 0.0 0.0 0.0 702
-703 0.0264170169830322 0.0300000000000011 0.0300000000000011 0.0 703
-704 0.00216817855834961 0.0 0.0 0.0 704
-705 0.00217700004577637 0.0 0.0 0.0 705
-706 0.00212311744689941 0.0 0.0 0.0 706
-707 0.0021059513092041 0.0 0.0 0.0 707
-708 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 708
-709 0.00207686424255371 0.0 0.0 0.0 709
-710 0.00207209587097168 0.0 0.0 0.0 710
-711 0.00206804275512695 0.0 0.0 0.0 711
-712 0.00208497047424316 0.0 0.0 0.0 712
-713 0.00206303596496582 0.00999999999999979 0.00999999999999979 0.0 713
-714 0.00206899642944336 0.0 0.0 0.0 714
-715 0.00206398963928223 0.0 0.0 0.0 715
-716 0.00207996368408203 0.0 0.0 0.0 716
-717 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 717
-718 0.00205397605895996 0.0 0.0 0.0 718
-719 0.00206899642944336 0.0 0.0 0.0 719
-720 0.00207686424255371 0.0 0.0 0.0 720
-721 0.00207400321960449 0.0 0.0 0.0 721
-722 0.00207614898681641 0.00999999999999979 0.00999999999999979 0.0 722
-723 0.00206184387207031 0.0 0.0 0.0 723
-724 0.00207996368408203 0.0 0.0 0.0 724
-725 0.00208902359008789 0.0 0.0 0.0 725
-726 0.00206303596496582 0.0 0.0 0.0 726
-727 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 727
-728 0.00205898284912109 0.0 0.0 0.0 728
-729 0.00204992294311523 0.0 0.0 0.0 729
-730 0.00204205513000488 0.0 0.0 0.0 730
-731 0.00205898284912109 0.0 0.0 0.0 731
-732 0.00206422805786133 0.00999999999999979 0.00999999999999979 0.0 732
-733 0.00205898284912109 0.0 0.0 0.0 733
-734 0.00205111503601074 0.0 0.0 0.0 734
-735 0.00208902359008789 0.0 0.0 0.0 735
-736 0.00207805633544922 0.0100000000000016 0.0100000000000016 0.0 736
-737 0.00207400321960449 0.0 0.0 0.0 737
-738 0.00205492973327637 0.0 0.0 0.0 738
-739 0.0020751953125 0.0 0.0 0.0 739
-740 0.00207400321960449 0.0 0.0 0.0 740
-741 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 741
-742 0.00254416465759277 0.0 0.0 0.0 742
-743 0.00206899642944336 0.0 0.0 0.0 743
-744 0.00208902359008789 0.0 0.0 0.0 744
-745 0.00208783149719238 0.0 0.0 0.0 745
-746 0.0239109992980957 0.0299999999999994 0.0299999999999994 0.0 746
-747 0.00231599807739258 0.0 0.0 0.0 747
-748 0.00217008590698242 0.0 0.0 0.0 748
-749 0.00211906433105469 0.0 0.0 0.0 749
-750 0.00209808349609375 0.00999999999999979 0.00999999999999979 0.0 750
-751 0.00207805633544922 0.0 0.0 0.0 751
-752 0.00208497047424316 0.0 0.0 0.0 752
-753 0.00206589698791504 0.0 0.0 0.0 753
-754 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 754
-755 0.00206089019775391 0.0 0.0 0.0 755
-756 0.00207114219665527 0.0 0.0 0.0 756
-757 0.0020759105682373 0.0 0.0 0.0 757
-758 0.00206613540649414 0.0 0.0 0.0 758
-759 0.00204706192016602 0.00999999999999979 0.00999999999999979 0.0 759
-760 0.00205898284912109 0.0 0.0 0.0 760
-761 0.0020749568939209 0.0 0.0 0.0 761
-762 0.00206208229064941 0.0 0.0 0.0 762
-763 0.00206804275512695 0.0 0.0 0.0 763
-764 0.00213193893432617 0.0100000000000016 0.0100000000000016 0.0 764
-765 0.00206494331359863 0.0 0.0 0.0 765
-766 0.00205707550048828 0.0 0.0 0.0 766
-767 0.00206589698791504 0.0 0.0 0.0 767
-768 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 768
-769 0.00204682350158691 0.0 0.0 0.0 769
-770 0.00206899642944336 0.0 0.0 0.0 770
-771 0.00208497047424316 0.0 0.0 0.0 771
-772 0.00206398963928223 0.0 0.0 0.0 772
-773 0.00205683708190918 0.00999999999999979 0.00999999999999979 0.0 773
-774 0.00205397605895996 0.0 0.0 0.0 774
-775 0.00206184387207031 0.0 0.0 0.0 775
-776 0.00205206871032715 0.0 0.0 0.0 776
-777 0.00205802917480469 0.0 0.0 0.0 777
-778 0.00281596183776855 0.00999999999999979 0.00999999999999979 0.0 778
-779 0.00403189659118652 0.0 0.0 0.0 779
-780 0.00367498397827148 0.0 0.0 0.0 780
-781 0.00383210182189941 0.00999999999999979 0.00999999999999979 0.0 781
-782 0.00206995010375977 0.0 0.0 0.0 782
-783 0.00206804275512695 0.0 0.0 0.0 783
-784 0.00208091735839844 0.00999999999999979 0.00999999999999979 0.0 784
-785 0.00210189819335938 0.0 0.0 0.0 785
-786 0.00206494331359863 0.0 0.0 0.0 786
-787 0.00209212303161621 0.0 0.0 0.0 787
-788 0.00208687782287598 0.0 0.0 0.0 788
-789 0.0249569416046143 0.0299999999999994 0.0299999999999994 0.0 789
-790 0.00217914581298828 0.0 0.0 0.0 790
-791 0.00213813781738281 0.0 0.0 0.0 791
-792 0.00213003158569336 0.0100000000000016 0.0100000000000016 0.0 792
-793 0.00212001800537109 0.0 0.0 0.0 793
-794 0.00209903717041016 0.0 0.0 0.0 794
-795 0.0021519660949707 0.0 0.0 0.0 795
-796 0.0020749568939209 0.0 0.0 0.0 796
-797 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 797
-798 0.00208711624145508 0.0 0.0 0.0 798
-799 0.00205707550048828 0.0 0.0 0.0 799
-800 0.00207114219665527 0.0 0.0 0.0 800
-801 0.00207710266113281 0.0 0.0 0.0 801
-802 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 802
-803 0.00207686424255371 0.0 0.0 0.0 803
-804 0.00207185745239258 0.0 0.0 0.0 804
-805 0.00206398963928223 0.0 0.0 0.0 805
-806 0.00205898284912109 0.0 0.0 0.0 806
-807 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 807
-808 0.00205397605895996 0.0 0.0 0.0 808
-809 0.00205206871032715 0.0 0.0 0.0 809
-810 0.00205111503601074 0.0 0.0 0.0 810
-811 0.0020749568939209 0.00999999999999979 0.00999999999999979 0.0 811
-812 0.00206279754638672 0.0 0.0 0.0 812
-813 0.00205302238464355 0.0 0.0 0.0 813
-814 0.00204801559448242 0.0 0.0 0.0 814
-815 0.00205302238464355 0.0 0.0 0.0 815
-816 0.00206995010375977 0.00999999999999979 0.00999999999999979 0.0 816
-817 0.00208091735839844 0.0 0.0 0.0 817
-818 0.00214910507202148 0.0 0.0 0.0 818
-819 0.00205802917480469 0.0 0.0 0.0 819
-820 0.00217890739440918 0.0 0.0 0.0 820
-821 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 821
-822 0.00204706192016602 0.0 0.0 0.0 822
-823 0.00205111503601074 0.0 0.0 0.0 823
-824 0.00206804275512695 0.0 0.0 0.0 824
-825 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 825
-826 0.00207018852233887 0.0 0.0 0.0 826
-827 0.00208306312561035 0.0 0.0 0.0 827
-828 0.00205206871032715 0.0 0.0 0.0 828
-829 0.00206398963928223 0.0 0.0 0.0 829
-830 0.00209403038024902 0.0100000000000016 0.0100000000000016 0.0 830
-831 0.00208497047424316 0.0 0.0 0.0 831
-832 0.023939847946167 0.0199999999999996 0.0199999999999996 0.0 832
-833 0.00230288505554199 0.0 0.0 0.0 833
-834 0.0021669864654541 0.00999999999999979 0.00999999999999979 0.0 834
-835 0.00211286544799805 0.0 0.0 0.0 835
-836 0.0021059513092041 0.0 0.0 0.0 836
-837 0.00207304954528809 0.0 0.0 0.0 837
-838 0.0020749568939209 0.0 0.0 0.0 838
-839 0.00204682350158691 0.00999999999999979 0.00999999999999979 0.0 839
-840 0.00207400321960449 0.0 0.0 0.0 840
-841 0.0020592212677002 0.0 0.0 0.0 841
-842 0.00206589698791504 0.0 0.0 0.0 842
-843 0.00207114219665527 0.00999999999999979 0.00999999999999979 0.0 843
-844 0.00207304954528809 0.0 0.0 0.0 844
-845 0.00208091735839844 0.0 0.0 0.0 845
-846 0.00206303596496582 0.0 0.0 0.0 846
-847 0.00208115577697754 0.0 0.0 0.0 847
-848 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 848
-849 0.00209403038024902 0.0 0.0 0.0 849
-850 0.00208497047424316 0.0 0.0 0.0 850
-851 0.00206804275512695 0.0 0.0 0.0 851
-852 0.00207209587097168 0.0 0.0 0.0 852
-853 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 853
-854 0.0021519660949707 0.0 0.0 0.0 854
-855 0.00205707550048828 0.0 0.0 0.0 855
-856 0.00204801559448242 0.0 0.0 0.0 856
-857 0.00205111503601074 0.0100000000000016 0.0100000000000016 0.0 857
-858 0.00204992294311523 0.0 0.0 0.0 858
-859 0.00207304954528809 0.0 0.0 0.0 859
-860 0.00205898284912109 0.0 0.0 0.0 860
-861 0.00205802917480469 0.0 0.0 0.0 861
-862 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 862
-863 0.00206089019775391 0.0 0.0 0.0 863
-864 0.00206780433654785 0.0 0.0 0.0 864
-865 0.00206708908081055 0.0 0.0 0.0 865
-866 0.00214815139770508 0.0 0.0 0.0 866
-867 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 867
-868 0.00206112861633301 0.0 0.0 0.0 868
-869 0.00206589698791504 0.0 0.0 0.0 869
-870 0.00207686424255371 0.0 0.0 0.0 870
-871 0.00206613540649414 0.0 0.0 0.0 871
-872 0.00345492362976074 0.00999999999999979 0.00999999999999979 0.0 872
-873 0.00410318374633789 0.0 0.0 0.0 873
-874 0.00406002998352051 0.00999999999999979 0.00999999999999979 0.0 874
-875 0.0259261131286621 0.0199999999999996 0.0199999999999996 0.0 875
-876 0.00219607353210449 0.0 0.0 0.0 876
-877 0.00211405754089355 0.00999999999999979 0.00999999999999979 0.0 877
-878 0.00212407112121582 0.0 0.0 0.0 878
-879 0.00208306312561035 0.0 0.0 0.0 879
-880 0.00209808349609375 0.0 0.0 0.0 880
-881 0.00233793258666992 0.0 0.0 0.0 881
-882 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 882
-883 0.0020759105682373 0.0 0.0 0.0 883
-884 0.00209188461303711 0.0 0.0 0.0 884
-885 0.00206899642944336 0.0 0.0 0.0 885
-886 0.00205397605895996 0.0100000000000016 0.0100000000000016 0.0 886
-887 0.00205588340759277 0.0 0.0 0.0 887
-888 0.00216484069824219 0.0 0.0 0.0 888
-889 0.00208091735839844 0.0 0.0 0.0 889
-890 0.0020751953125 0.0 0.0 0.0 890
-891 0.00336885452270508 0.00999999999999979 0.00999999999999979 0.0 891
-892 0.00415396690368652 0.0 0.0 0.0 892
-893 0.0037381649017334 0.00999999999999979 0.00999999999999979 0.0 893
-894 0.00412487983703613 0.0 0.0 0.0 894
-895 0.00375986099243164 0.0 0.0 0.0 895
-896 0.00278496742248535 0.00999999999999979 0.00999999999999979 0.0 896
-897 0.00209403038024902 0.0 0.0 0.0 897
-898 0.00205516815185547 0.0 0.0 0.0 898
-899 0.00205516815185547 0.0 0.0 0.0 899
-900 0.00203704833984375 0.0 0.0 0.0 900
-901 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 901
-902 0.00205421447753906 0.0 0.0 0.0 902
-903 0.0020599365234375 0.0 0.0 0.0 903
-904 0.00206089019775391 0.0 0.0 0.0 904
-905 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 905
-906 0.00207209587097168 0.0 0.0 0.0 906
-907 0.00205898284912109 0.0 0.0 0.0 907
-908 0.00206112861633301 0.0 0.0 0.0 908
-909 0.00209903717041016 0.0 0.0 0.0 909
-910 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 910
-911 0.00206804275512695 0.0 0.0 0.0 911
-912 0.00206804275512695 0.0 0.0 0.0 912
-913 0.00207805633544922 0.0 0.0 0.0 913
-914 0.00206613540649414 0.0 0.0 0.0 914
-915 0.00205707550048828 0.00999999999999979 0.00999999999999979 0.0 915
-916 0.00208497047424316 0.0 0.0 0.0 916
-917 0.00207996368408203 0.0 0.0 0.0 917
-918 0.0248808860778809 0.0300000000000011 0.0300000000000011 0.0 918
-919 0.00217318534851074 0.0 0.0 0.0 919
-920 0.00228309631347656 0.0 0.0 0.0 920
-921 0.00214815139770508 0.0 0.0 0.0 921
-922 0.00209498405456543 0.0 0.0 0.0 922
-923 0.00209903717041016 0.00999999999999979 0.00999999999999979 0.0 923
-924 0.00206685066223145 0.0 0.0 0.0 924
-925 0.00208783149719238 0.0 0.0 0.0 925
-926 0.0020751953125 0.0 0.0 0.0 926
-927 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 927
-928 0.00206398963928223 0.0 0.0 0.0 928
-929 0.00207400321960449 0.0 0.0 0.0 929
-930 0.00224184989929199 0.0 0.0 0.0 930
-931 0.00207209587097168 0.0 0.0 0.0 931
-932 0.00207114219665527 0.00999999999999979 0.00999999999999979 0.0 932
-933 0.00206995010375977 0.0 0.0 0.0 933
-934 0.00206613540649414 0.0 0.0 0.0 934
-935 0.00207114219665527 0.0 0.0 0.0 935
-936 0.00207901000976562 0.0 0.0 0.0 936
-937 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 937
-938 0.0020751953125 0.0 0.0 0.0 938
-939 0.00211882591247559 0.0 0.0 0.0 939
-940 0.00212502479553223 0.0 0.0 0.0 940
-941 0.00206303596496582 0.0 0.0 0.0 941
-942 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 942
-943 0.00204205513000488 0.0 0.0 0.0 943
-944 0.00206303596496582 0.0 0.0 0.0 944
-945 0.00205516815185547 0.0 0.0 0.0 945
-946 0.00206208229064941 0.0100000000000016 0.0100000000000016 0.0 946
-947 0.00205683708190918 0.0 0.0 0.0 947
-948 0.00204181671142578 0.0 0.0 0.0 948
-949 0.00206589698791504 0.0 0.0 0.0 949
-950 0.0020451545715332 0.0 0.0 0.0 950
-951 0.00209593772888184 0.00999999999999979 0.00999999999999979 0.0 951
-952 0.00205802917480469 0.0 0.0 0.0 952
-953 0.0020751953125 0.0 0.0 0.0 953
-954 0.00205492973327637 0.0 0.0 0.0 954
-955 0.00206303596496582 0.0 0.0 0.0 955
-956 0.00206112861633301 0.00999999999999979 0.00999999999999979 0.0 956
-957 0.00208592414855957 0.0 0.0 0.0 957
-958 0.00208497047424316 0.0 0.0 0.0 958
-959 0.00207114219665527 0.0 0.0 0.0 959
-960 0.0264370441436768 0.0299999999999994 0.0299999999999994 0.0 960
-961 0.00537300109863281 0.0 0.0 0.0 961
-962 0.00217485427856445 0.0 0.0 0.0 962
-963 0.00213003158569336 0.0 0.0 0.0 963
-964 0.00212383270263672 0.0 0.0 0.0 964
-965 0.0021059513092041 0.0 0.0 0.0 965
-966 0.0020909309387207 0.0 0.0 0.0 966
-967 0.00208091735839844 0.00999999999999979 0.00999999999999979 0.0 967
-968 0.00207018852233887 0.0 0.0 0.0 968
-969 0.00207185745239258 0.0 0.0 0.0 969
-970 0.00205111503601074 0.0 0.0 0.0 970
-971 0.00208306312561035 0.0 0.0 0.0 971
-972 0.00212502479553223 0.00999999999999979 0.00999999999999979 0.0 972
-973 0.00206995010375977 0.0 0.0 0.0 973
-974 0.0020749568939209 0.0 0.0 0.0 974
-975 0.0020749568939209 0.0 0.0 0.0 975
-976 0.00205898284912109 0.0 0.0 0.0 976
-977 0.00207304954528809 0.0100000000000016 0.0100000000000016 0.0 977
-978 0.00208806991577148 0.0 0.0 0.0 978
-979 0.00207090377807617 0.0 0.0 0.0 979
-980 0.00214314460754395 0.0 0.0 0.0 980
-981 0.00208497047424316 0.00999999999999979 0.00999999999999979 0.0 981
-982 0.00206112861633301 0.0 0.0 0.0 982
-983 0.00220704078674316 0.0 0.0 0.0 983
-984 0.00206184387207031 0.0 0.0 0.0 984
-985 0.00206589698791504 0.0 0.0 0.0 985
-986 0.00204014778137207 0.00999999999999979 0.00999999999999979 0.0 986
-987 0.00205302238464355 0.0 0.0 0.0 987
-988 0.00204801559448242 0.0 0.0 0.0 988
-989 0.0020439624786377 0.0 0.0 0.0 989
-990 0.00206494331359863 0.0 0.0 0.0 990
-991 0.00205516815185547 0.00999999999999979 0.00999999999999979 0.0 991
-992 0.0020599365234375 0.0 0.0 0.0 992
-993 0.00205802917480469 0.0 0.0 0.0 993
-994 0.0021820068359375 0.0 0.0 0.0 994
-995 0.00206708908081055 0.0 0.0 0.0 995
-996 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 996
-997 0.00205183029174805 0.0 0.0 0.0 997
-998 0.00205588340759277 0.0 0.0 0.0 998
-999 0.00207781791687012 0.0 0.0 0.0 999
-1000 0.00205588340759277 0.0 0.0 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat
deleted file mode 100644
index d7d948705..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.00528996763305527
-3 -0.0138044594871689
-4 -0.0208681851283985
-5 -0.0229957953064787
-6 -0.0234292596261009
-7 -0.0233334130282492
-8 -0.0241516165777752
-9 -0.0241644202341525
-10 -0.0231287425073633
-11 -0.0221175625393535
-12 -0.0186101437936229
-13 -0.0156353533961561
-14 -0.0188403159027361
-15 -0.0180504812480117
-16 -0.0217450273227108
-17 -0.0247063596763229
-18 -0.022001265884962
-19 -0.0178556473266542
-20 -0.0204164647356919
-21 -0.0182966079953989
-22 -0.0211862321337847
-23 -0.0194789850013599
-24 -0.0177742253841285
-25 -0.0092503749482194
-26 -0.00746819898929803
-27 -0.00487803332820888
-28 -0.00735913264216409
-29 -0.0094394794377043
-30 -0.0102366066065294
-31 -0.0111156180663134
-32 -0.0157818671782769
-33 -0.0168016431622766
-34 -0.0163332307175096
-35 -0.0175436530212509
-36 -0.0223712161905215
-37 -0.0219314894935517
-38 -0.0227830748204048
-39 -0.0193824105679253
-40 -0.0204213811978047
-41 -0.0174876805960081
-42 -0.0192426282967821
-43 -0.0191023286022659
-44 -0.024469189862908
-45 -0.0248594429598138
-46 -0.024075293188514
-47 -0.0231590035654209
-48 -0.0226253872291486
-49 -0.0224682138682447
-50 -0.0218129103220923
-51 -0.0192654328544414
-52 -0.0147320037081153
-53 0.272452233337269
-54 0.435015820040845
-55 0.200430320069216
-56 -0.017516322722285
-57 -0.0206134354119561
-58 -0.0216729701700104
-59 -0.0218336495632955
-60 -0.0220087456364863
-61 -0.0221961766164921
-62 -0.0220196148858699
-63 -0.0196199273707057
-64 -0.0175555144594074
-65 -0.0157115875281919
-66 -0.0178703168441715
-67 -0.020014167059419
-68 -0.0226085951821202
-69 -0.0214388900491651
-70 -0.0226874815779736
-71 -0.0209263363718717
-72 -0.0186668218529576
-73 -0.0190861172260196
-74 -0.0165844428487903
-75 -0.0183297192997319
-76 -0.0196886608427949
-77 -0.0172252505382256
-78 -0.0127282633379294
-79 -0.0118674197279215
-80 -0.00761080829361313
-81 -0.00745049886576533
-82 -0.00437801934505245
-83 -0.00530855529011354
-84 -0.00941286938636584
-85 -0.0107154791645881
-86 -0.015323870013456
-87 -0.012519266967711
-88 -0.0149736969801129
-89 -0.021651681277203
-90 -0.0230618749379273
-91 -0.0168683483705937
-92 -0.0192914563246245
-93 -0.0149596795587543
-94 -0.0156422337243361
-95 -0.0212673261015622
-96 -0.021939557403789
-97 -0.0201423837801739
-98 -0.0236606423193213
-99 -0.0214696557426392
-100 -0.0224265353446497
-101 -0.0214300874958868
-102 -0.0215321124434072
-103 -0.0196750526265947
-104 -0.0164815420539262
-105 0.153451795677057
-106 0.152304917983925
-107 0.269683604711283
-108 0.163866062031231
-109 0.0917700861184397
-110 -0.0154344686250538
-111 -0.0160009187714221
-112 -0.0181194294640359
-113 -0.0198996862071363
-114 -0.0210940088036923
-115 -0.0202294695724758
-116 -0.0201134577323488
-117 -0.0176142238854856
-118 -0.0179934480509661
-119 -0.0184941333999111
-120 -0.0209217833739569
-121 -0.0193706489699845
-122 -0.0212596356685163
-123 -0.0193402304952815
-124 -0.0168126115507807
-125 -0.0168285157052044
-126 -0.0178485073702407
-127 -0.0153236968353027
-128 -0.0172450763888923
-129 -0.0181958874426915
-130 -0.019599041433368
-131 -0.012097521583517
-132 -0.0144122698713183
-133 -0.0132513281935601
-134 -0.00875555666212923
-135 -0.00361627820509766
-136 -0.000259967785037514
-137 -0.00805847419201842
-138 -0.012649535174109
-139 -0.0145979054471083
-140 -0.0107561179136776
-141 -0.0136228025301689
-142 -0.0159619507661417
-143 -0.0191425909401178
-144 -0.0163101158814417
-145 -0.012129043859938
-146 -0.0151299875018323
-147 -0.0203386298647967
-148 -0.0209988316244983
-149 -0.0219068901698134
-150 -0.0224671072591489
-151 -0.0170418184704867
-152 -0.0201957214089058
-153 -0.0205846116271679
-154 -0.0199413534929481
-155 -0.0179691672443825
-156 -0.0150768539756268
-157 0.0995215742652554
-158 0.0981837663624077
-159 0.0931229461077249
-160 0.21175246910869
-161 0.105079528542058
-162 0.0913032756563397
-163 0.0339528356592639
-164 -0.0182805568898494
-165 -0.0193574268532822
-166 -0.019701338364763
-167 -0.0189643836934548
-168 -0.0188745629207454
-169 -0.0165737067851004
-170 -0.0158076140033874
-171 -0.0161004869746426
-172 -0.0195930716982896
-173 -0.0182623379689477
-174 -0.0200811074454518
-175 -0.0187342710910368
-176 -0.0166229225659487
-177 -0.0167237872378271
-178 -0.0201685104197428
-179 -0.0165324418353769
-180 -0.0129150606429465
-181 -0.0169169105724671
-182 -0.017078473759628
-183 -0.018127591763309
-184 -0.0112307423687399
-185 -0.0134591703948938
-186 -0.0122816446332828
-187 -0.0167129471183761
-188 -0.00633335732749837
-189 -0.00217094534395089
-190 -0.003176289001772
-191 -0.0057871656139901
-192 -0.0115873213117581
-193 -0.00896702930637471
-194 -0.0120418100687928
-195 -0.0123921707383441
-196 -0.0172084711453154
-197 -0.0152400714377606
-198 -0.0111285496578555
-199 -0.0142340919577057
-200 -0.0192937621671048
-201 -0.0197880163686053
-202 -0.020849567081396
-203 -0.0198406262700084
-204 -0.0194104738114594
-205 -0.0148131274163057
-206 -0.0192079248734278
-207 -0.0187094339560537
-208 -0.0190732730711229
-209 0.0361934269621865
-210 0.0870917883041551
-211 0.0444891209616575
-212 0.0955027397552937
-213 0.154654506121038
-214 0.102102013193298
-215 0.0494447139937405
-216 0.0904567636647291
-217 -0.0152749334062708
-218 -0.0146608967815647
-219 -0.0147668855748172
-220 -0.0156264119143688
-221 -0.0169494608304957
-222 -0.0174532100041555
-223 -0.0180837899501967
-224 -0.0182277488931129
-225 -0.0161001752368341
-226 -0.0184991832755056
-227 -0.016936119098065
-228 -0.0148320934940219
-229 -0.015273255697935
-230 -0.0182123818891898
-231 -0.0138871665097331
-232 -0.0127350570541541
-233 -0.011100664599431
-234 -0.0138609863092704
-235 -0.0175586417976635
-236 -0.0148120796895902
-237 -0.01123198970569
-238 -0.00918469713802285
-239 -0.0144957683440811
-240 -0.0150294602056943
-241 -0.00892087391044469
-242 -0.0074976007380235
-243 -0.00500305299854478
-244 -0.0041320746296184
-245 -0.00691667857012371
-246 -0.00750372968060234
-247 -0.0107390437617496
-248 -0.0107754591390794
-249 -0.0174172611999561
-250 -0.0074172610106474
-251 -0.0112726180927846
-252 -0.0128024469916435
-253 -0.0177232020585621
-254 -0.0182539224409683
-255 -0.0178084592664765
-256 -0.0179231847033095
-257 -0.0176658037985606
-258 -0.0130046634117232
-259 -0.0176477704146573
-260 -0.0172408298470646
-261 -0.0173835849314203
-262 0.0885923665459635
-263 0.0358142986092356
-264 0.0500197172082544
-265 0.0969438699174651
-266 0.0998188153355495
-267 0.100534469863311
-268 0.0434275152967989
-269 0.0463586746755651
-270 0.0357679483900484
-271 -0.0163390926804664
-272 -0.0166539709796274
-273 -0.0166872870497804
-274 -0.017774068427573
-275 -0.01744643501098
-276 -0.0170706050536218
-277 -0.0147966340538359
-278 -0.0178408200541161
-279 -0.0149580558209695
-280 -0.0131592631424661
-281 -0.0131550961874815
-282 -0.0170541425549732
-283 -0.0136965468472329
-284 -0.0127321644242889
-285 -0.013612710529614
-286 -0.0110213426857256
-287 -0.0173230618274653
-288 -0.0169456472401162
-289 -0.0137220306520902
-290 -0.00961119036236773
-291 -0.00803307600491271
-292 -0.0130753503992976
-293 -0.010061738788462
-294 -0.0128263508570457
-295 -0.00871944477256595
-296 -0.0110828266355735
-297 -0.00145913051022751
-298 -0.00503831545783849
-299 -0.00613255184823567
-300 -0.00317532255742617
-301 -0.0110344422659596
-302 -0.0133994629637518
-303 -0.00711499446473252
-304 -0.00989738058293298
-305 -0.011298222554831
-306 -0.0163568500491007
-307 -0.0172224634424476
-308 -0.016917507184404
-309 -0.0169070421736616
-310 -0.0163226499986189
-311 -0.016000223795697
-312 -0.0128559262318566
-313 -0.0163027746090817
-314 0.0367233579233198
-315 0.0342463768168967
-316 0.0392659770656562
-317 0.0503244855684373
-318 0.106836752186508
-319 0.0428611079691666
-320 0.0947673606581728
-321 0.0404266507177676
-322 0.0422539004134698
-323 0.046712070413077
-324 -0.01386005988438
-325 -0.0129602628678002
-326 -0.0128410216627282
-327 -0.013938492679744
-328 -0.0142137469756705
-329 -0.0135606375602427
-330 -0.0147616165618841
-331 -0.0152730174282578
-332 -0.0157757882742451
-333 -0.0159444484008054
-334 -0.0159291528868275
-335 -0.0125715321584254
-336 -0.0113945717528155
-337 -0.0126919884793404
-338 -0.0120634295155063
-339 -0.0132222456876789
-340 -0.0149011205134109
-341 -0.0112134307887339
-342 -0.00765611064427073
-343 -0.00812543527107914
-344 -0.0116729541542833
-345 -0.00968419876956315
-346 -0.0121532305148415
-347 -0.0128180241822045
-348 -0.0111731767567057
-349 -0.0110495088050017
-350 -0.00474012274853909
-351 -0.0037753856041303
-352 -0.00712557226243535
-353 -0.00254605671801213
-354 -0.00896555258188561
-355 -0.0111612047310962
-356 -0.00590533525415532
-357 -0.00840289962801529
-358 -0.0101831986911947
-359 -0.0147234273517197
-360 -0.0144572278847782
-361 -0.0153686584343928
-362 -0.0152089345642079
-363 -0.0151495230806089
-364 -0.0137849851202231
-365 -0.0104713526164238
-366 -0.0148077561021853
-367 0.0376152434167216
-368 0.0388904481596711
-369 0.0403627453868288
-370 0.0513758553433587
-371 0.107917898362666
-372 -0.00798200125691471
-373 0.093360263223118
-374 0.0414198673418266
-375 0.0393249984524126
-376 0.0385926575483875
-377 -0.0144476804559933
-378 -0.0139841878291661
-379 -0.0139656533470585
-380 -0.0141040067753594
-381 -0.014560155301369
-382 -0.0135420823152173
-383 -0.0145222675144676
-384 -0.014460155395546
-385 -0.0139959464489686
-386 -0.0138565068907983
-387 -0.0107326956886409
-388 -0.0110916304860035
-389 -0.0103687114713454
-390 -0.0109128112118145
-391 -0.0116952906973984
-392 -0.0135898535414944
-393 -0.0111540378855234
-394 -0.0103451114918221
-395 -0.00764288243223634
-396 -0.0111929653049535
-397 -0.00834039400762986
-398 -0.0122045257479647
-399 -0.00873973826972888
-400 -0.0110201500772717
-401 -0.00961579587076197
-402 -0.0131269667654366
-403 -0.00727683817981296
-404 -0.00189532678702501
-405 -0.0069679001311242
-406 -0.001107723493968
-407 -0.0032276027306313
-408 -0.00832965485216551
-409 -0.00619183401785534
-410 -0.00411170215472319
-411 -0.00737621873809235
-412 -0.0127249132834817
-413 -0.012360725256073
-414 -0.0139619534335789
-415 -0.0141106553759734
-416 -0.0133572727396227
-417 -0.0136325555164283
-418 -0.00934211074118071
-419 -0.0138978954665086
-420 0.0419144448041395
-421 0.0398516060966593
-422 0.0412341286880762
-423 0.0638570301312163
-424 0.0510869302001157
-425 0.0457777338184318
-426 0.0404413480661733
-427 0.03921924550858
-428 0.0407807393162245
-429 0.0390318225210268
-430 -0.0131869917758382
-431 -0.0131264891895899
-432 -0.0122572780353557
-433 -0.0113077056806523
-434 -0.00997101803890706
-435 -0.00912977714210345
-436 -0.0107250321456603
-437 -0.0114964596837888
-438 -0.0124446657069589
-439 -0.0132452844526251
-440 -0.0134871442198044
-441 -0.0134721722474661
-442 -0.0129760608103375
-443 -0.0135083529746117
-444 -0.00963739106708388
-445 -0.00960193173592791
-446 -0.00868490827989549
-447 -0.00562468586891634
-448 -0.00853085467733999
-449 -0.00565929471677666
-450 -0.011223863255388
-451 -0.00966138501976315
-452 -0.0090354154607024
-453 -0.00713189903764993
-454 -0.011915762088822
-455 -0.0119958054757221
-456 -0.00993992005512065
-457 -0.00969020982773293
-458 -0.00823692240018265
-459 -0.000762137019254547
-460 -0.0020574939054943
-461 -0.00301533448841631
-462 -0.0048914231194836
-463 -0.00351910868759082
-464 -0.00684827660431788
-465 -0.0116186865393049
-466 -0.011300766713872
-467 -0.0125877507082846
-468 -0.0122940688703853
-469 -0.0117006004743094
-470 -0.0120808872890787
-471 -0.0079558659705616
-472 -0.0121146783942612
-473 0.0430539568135278
-474 0.0413747171665245
-475 0.0523499660199948
-476 0.0583608476822571
-477 -0.00619124151362362
-478 0.100261603489863
-479 -0.0115737946916181
-480 0.0410488267232732
-481 0.0394584957178085
-482 0.0409791183648626
-483 -0.0114608582351028
-484 -0.0105762029046014
-485 -0.0107944072761537
-486 -0.0112852025771194
-487 -0.0117263968065824
-488 -0.0110523616082281
-489 -0.0119497692898177
-490 -0.0116197924803783
-491 -0.0118402671059512
-492 -0.011897810344265
-493 -0.0118894488668558
-494 -0.0119264743252911
-495 -0.0114690161171001
-496 -0.00731323308517564
-497 -0.00809920804780606
-498 -0.00742970488647833
-499 -0.00511857473147858
-500 -0.00847898987161735
-501 -0.00820255817878669
-502 -0.0114261236985163
-503 -0.0115203134210467
-504 -0.00860290050483073
-505 -0.00826598998994287
-506 -0.00724980855887389
-507 -0.0115572629089065
-508 -0.0102803597313671
-509 -0.00869596301166451
-510 -0.00845394207419729
-511 -0.0117046810178094
-512 -0.00179199508390725
-513 -0.00107544976391358
-514 3.80706993328397e-05
-515 -0.000596554636898724
-516 -0.00357817525748314
-517 -0.00275478226050938
-518 -0.00770597808246832
-519 -0.00966201636724091
-520 -0.0101235465897374
-521 -0.0101536171271843
-522 -0.011155833269644
-523 -0.0110476185961753
-524 -0.00669564292913809
-525 -0.0110511552401975
-526 0.0440369068608864
-527 0.0512502905452455
-528 0.0486364491522985
-529 -0.00947573738593063
-530 0.0556902385103537
-531 0.048793011831808
-532 0.0459173634094269
-533 -0.0106409633397968
-534 0.0407992456018877
-535 0.039174303444095
-536 -0.0108360842113073
-537 -0.0100788835149665
-538 -0.010254912645359
-539 -0.0100259263673741
-540 -0.00990611735032563
-541 -0.0094032789969041
-542 -0.00950843747839274
-543 -0.00845625372492551
-544 -0.00866941515320219
-545 -0.00846124322850009
-546 -0.00914497373023597
-547 -0.00993847480108134
-548 -0.0075404949330402
-549 -0.0105738813921492
-550 -0.00995220250924118
-551 -0.00737345302781976
-552 -0.00705109912188471
-553 -0.00701139365327054
-554 -0.0100844014809053
-555 -0.00967040948412226
-556 -0.00555743993134012
-557 -0.00567368083508669
-558 -0.00579497136824869
-559 -0.00863244150774459
-560 -0.00886461549077306
-561 -0.0071079244280313
-562 -0.00724638263714693
-563 -0.0106271670963377
-564 -0.011037491565844
-565 -0.00536963936657175
-566 -0.00611090090733861
-567 -0.0028887251775724
-568 -0.00191043898745117
-569 -0.00127008538342651
-570 -0.00355834410328823
-571 -0.00455486576193576
-572 -0.00787475936794373
-573 -0.00788070911313194
-574 -0.0095868651265576
-575 -0.00951475112345576
-576 -0.0093743009207885
-577 -0.00547534007201022
-578 -0.00937228540429001
-579 0.0550319460420979
-580 0.0480645516151382
-581 -0.00734599404058905
-582 0.0460830024666069
-583 0.0576848767980736
-584 -0.00479751472149516
-585 0.0476440575581396
-586 0.0440509543394544
-587 -0.0092326530313669
-588 0.0416175571960497
-589 -0.0085697744475703
-590 -0.00849597671001137
-591 -0.00868661526356155
-592 -0.00914985829952541
-593 -0.00899659236078795
-594 -0.00852948984142705
-595 -0.00914967236793954
-596 -0.00874291045968585
-597 -0.00901928709184545
-598 -0.00893752387862559
-599 -0.00891224538068911
-600 -0.00651845952670981
-601 -0.00883751161943683
-602 -0.0089038138028028
-603 -0.00557038586902196
-604 -0.00528015885880997
-605 -0.00549258943084052
-606 -0.00885043870546068
-607 -0.00888233763605627
-608 -0.00534145902438052
-609 -0.00549755365130086
-610 -0.00543696053556694
-611 -0.00822523019438649
-612 -0.00872078038906415
-613 -0.00768752566683437
-614 -0.00581778171379135
-615 -0.00582391899839174
-616 -0.00928453417405443
-617 -0.00967264668427969
-618 -0.00459002993915674
-619 -0.005950987566855
-620 -0.00566913223974097
-621 -0.00449639995945585
-622 0.000563029103117738
-623 -0.000478567451764753
-624 -0.00478545037303475
-625 -0.00138436078321331
-626 -0.00658049012770183
-627 -0.00727390808805458
-628 -0.00826948198171915
-629 -0.00802863304649895
-630 -0.00440359258641195
-631 -0.00781572985833776
-632 0.0467875647495199
-633 -0.0075634487605479
-634 0.0452825901031108
-635 0.047802503065829
-636 -0.00771441065516206
-637 0.0579827980967365
-638 -0.00344424350631554
-639 0.0474617155307238
-640 0.0443214745845027
-641 -0.00763674418359978
-642 -0.00783330048033026
-643 -0.00741506274953657
-644 -0.00766182032871294
-645 -0.00746333175586923
-646 -0.00774981281309243
-647 -0.00721405105565235
-648 -0.00748309956829258
-649 -0.00693846930808117
-650 -0.00687260605509018
-651 -0.00680305016519336
-652 -0.00392232393463165
-653 -0.00596409981793424
-654 -0.00637091532208361
-655 -0.0070021295658497
-656 -0.00745369558153276
-657 -0.00748127195784389
-658 -0.00764575146706985
-659 -0.00720638844475823
-660 -0.00404423858223977
-661 -0.00405994477085238
-662 -0.00403357383109679
-663 -0.00648614706767544
-664 -0.00685104080751668
-665 -0.0055280793955573
-666 -0.00315266716147567
-667 -0.00289308426512229
-668 -0.0072907609350431
-669 -0.00778772320057429
-670 -0.00488230712792173
-671 -0.00428235797819206
-672 -0.00192624881716949
-673 -0.00690255454554318
-674 -0.00713932385460058
-675 -0.00190412691550018
-676 -0.00393717929429579
-677 -0.00322818496016548
-678 -0.00243123536539799
-679 -0.00325588623994424
-680 -0.00538550295619236
-681 -0.00569794784977527
-682 -0.00289248819958694
-683 -0.00674738254274132
-684 -0.00654327601801023
-685 -0.00642602661328291
-686 0.0487750013526658
-687 0.047351094119514
-688 -0.00634438713740084
-689 0.0483969866326635
-690 -0.00631126189370909
-691 0.0575822184504765
-692 -0.00221791722280226
-693 0.0478438468160886
-694 -0.00601391341772256
-695 -0.0056575420242112
-696 -0.00594331685758806
-697 -0.00602482896673149
-698 -0.00605358459658212
-699 -0.00573917550488335
-700 -0.00612440997777024
-701 -0.00585399571222659
-702 -0.00621035443994097
-703 -0.00577194218906833
-704 -0.00613669297980652
-705 -0.00603898494035611
-706 -0.00619657263267714
-707 -0.00631266537086359
-708 -0.00624176954936451
-709 -0.006493542110829
-710 -0.00641811359085571
-711 -0.00580520415695734
-712 -0.00254464054715768
-713 -0.00229049693565925
-714 -0.00260111893418342
-715 -0.00527998866629625
-716 -0.00580492472038456
-717 -0.00465763013855649
-718 -0.00291794763769027
-719 -0.0026170818255646
-720 -0.00635539773199271
-721 -0.00671950951784405
-722 -0.00681695170475915
-723 -0.00342054050102763
-724 -0.00275560859414933
-725 -0.000438510861243582
-726 -0.00560480727876819
-727 -0.0041561152883926
-728 -0.00600365300527431
-729 -0.00265123271948093
-730 -0.00264290423293351
-731 -0.00282174940291308
-732 -0.00138157106781404
-733 -0.00215366901979637
-734 -0.00419250836135037
-735 -0.000767184920404968
-736 -0.00550222672199026
-737 -0.00539179599992564
-738 -0.00519932278664982
-739 0.0503886317719632
-740 -0.00520071436244274
-741 0.0475171927490064
-742 -0.0054330140398667
-743 0.047917953696494
-744 -0.00493698211328358
-745 0.0578078065249347
-746 -0.00102406638326662
-747 -0.00351464407443385
-748 -0.00471808955799036
-749 -0.00466085562121167
-750 -0.00504216853601972
-751 -0.00491478851728083
-752 -0.00511582115647942
-753 -0.00510690407002076
-754 -0.00467115492125063
-755 -0.00507292488280625
-756 -0.00469600377226158
-757 -0.00479060778969928
-758 -0.00466814567292629
-759 -0.00459391587926426
-760 -0.00459367283047094
-761 -0.00456390630082813
-762 -0.00455517712581946
-763 -0.00444580816383878
-764 -0.00414375346682848
-765 -0.00462598085672905
-766 -0.00499924843048424
-767 -0.00393636209693802
-768 -0.00456718162991524
-769 -0.00323237519329591
-770 -0.00148778939855011
-771 -0.00156596659778741
-772 -0.00512915993874979
-773 -0.00492227748379505
-774 -0.00510090567121982
-775 -0.00134085402411959
-776 -0.000327698557656855
-777 -8.39604799222434e-05
-778 -0.00353180377704261
-779 -0.000884661451432567
-780 -0.00538269466798041
-781 -0.00550165919535478
-782 -0.00474894345489591
-783 -0.00166595007800424
-784 -0.00164486517145988
-785 -0.0035315332501745
-786 -0.00381711953376717
-787 0.000511414240780713
-788 -0.00386876867596389
-789 -0.00388546637330086
-790 -0.00381782963314221
-791 -0.00381978862023741
-792 -0.00375421982535356
-793 0.0509990813856318
-794 -0.00381674314240938
-795 0.0477092429318382
-796 -0.00346493764501739
-797 0.0486187069130531
-798 -0.00339231221033292
-799 -0.00372220200580609
-800 -0.00287181937082116
-801 -0.00282120299186121
-802 -0.00303246455350132
-803 -0.00274260094361711
-804 -0.00310003295922211
-805 -0.00318965584106337
-806 -0.0031124174327327
-807 -0.00296156129101724
-808 -0.00261410724164222
-809 -0.00304904712449122
-810 -0.00281829350522029
-811 -0.00334413423907794
-812 -0.00324558699946082
-813 -0.00321794842161168
-814 -0.00321688033495476
-815 -0.00315375940221917
-816 -0.00336252254507409
-817 -0.00338748787969201
-818 -0.0034301958497396
-819 -0.00328180304356289
-820 -0.00258348401263859
-821 -0.00151860018638174
-822 0.000385489721472849
-823 0.000485212390458467
-824 -0.00320045213749609
-825 -0.00360387425612046
-826 -0.00368875452847038
-827 -0.000252971173092802
-828 0.000274558167106639
-829 0.000415225492461183
-830 -0.00244928117799424
-831 -0.00157932593327874
-832 -0.00367396988363851
-833 -0.00159554367802162
-834 -0.00368044170833197
-835 -0.00381051495784578
-836 -0.00324391585440044
-837 8.26736255865406e-05
-838 0.000153133563221676
-839 0.00199072719691019
-840 -0.00225648039461718
-841 -0.00274833553045294
-842 -0.0025524575347716
-843 -0.00266988934954553
-844 -0.00255016712114302
-845 -0.00249982952647676
-846 -0.00252451553899371
-847 0.0509521741597566
-848 -0.00203584084600686
-849 0.0482575025076935
-850 -0.00222502592695146
-851 -0.00243295457553993
-852 -0.00170644617880928
-853 -0.00187578228348824
-854 -0.00189936420623392
-855 -0.00181014970183154
-856 -0.0019587407113103
-857 -0.00203035618973669
-858 -0.00200647352201275
-859 -0.00193357132846691
-860 -0.00203929593752837
-861 -0.00206047244950508
-862 -0.00172974796194137
-863 -0.00222152628496213
-864 -0.00176469161067378
-865 -0.00214628615471073
-866 -0.00223274820098944
-867 -0.00192609654692526
-868 -0.00160052707734799
-869 -0.00117491475685682
-870 -0.00172104022111683
-871 -0.00197669922228011
-872 -0.00200394021725799
-873 -0.00221174196880852
-874 -0.00214414888155639
-875 -0.0022418657462635
-876 -0.00224815601970618
-877 -0.00217548907899938
-878 -0.00219023215478833
-879 0.00103657148517733
-880 0.00170021752346762
-881 0.00176856581251282
-882 -0.00119486637524174
-883 -0.000182189717262493
-884 -0.00231669994116794
-885 -0.00235562044940596
-886 -0.00240760288834928
-887 -0.000369271736430893
-888 -0.00246106212268728
-889 -0.00248445436295954
-890 -0.00240055220436233
-891 0.00124694319822849
-892 -0.00238841299541467
-893 -0.00120964260603448
-894 -0.00108173638550143
-895 -0.00126617766611188
-896 -0.00126735332683995
-897 -0.00132493094338301
-898 -0.00127297814761722
-899 -0.00107541591903143
-900 -0.00078859473755685
-901 0.0515056301543915
-902 -0.000768818460590909
-903 -0.00107659176705549
-904 -0.000363324073519261
-905 -0.000435897358878675
-906 -0.000440171834594805
-907 -0.000337150215603847
-908 -0.000521457828934685
-909 -0.000601509879478592
-910 -0.000562536656253432
-911 -0.000540431206158033
-912 -0.000585521045810499
-913 -0.000647443311740879
-914 -0.000652572655245648
-915 -0.000754504564741441
-916 -0.00026111034852018
-917 -0.000614503803880769
-918 -0.00028306248528981
-919 -0.00062103454712342
-920 -0.00080789702501966
-921 -0.000857347553194396
-922 -0.000973273096392423
-923 -0.00071891921707499
-924 -0.000852123727546584
-925 -0.000908061110978231
-926 -0.000897846447493529
-927 -0.00107192184892616
-928 -0.00103558075120389
-929 -0.000858383868863735
-930 -0.00100410240556484
-931 0.00217861450591949
-932 0.00284094109416015
-933 0.00290236058075264
-934 -4.67766974110993e-06
-935 -0.00115598145065964
-936 -0.00115889264986191
-937 -0.00120477520403814
-938 -0.0011160907820447
-939 -0.00122108572337335
-940 -0.00129438459340121
-941 -0.0012642472236683
-942 -0.00112755293175713
-943 0.00267094176933998
-944 -0.00127265229053917
-945 -0.00128120069665366
-946 -0.00125730796622217
-947 -0.000161188927728071
-948 -0.00018709473550969
-949 -0.000202988378879946
-950 -0.000298277929635308
-951 -0.000228270818099919
-952 -0.000234161898233589
-953 -0.00026231090883195
-954 -0.000188222581526064
-955 -3.12448503073219e-05
-956 0.000717016504105383
-957 0.000690863879115161
-958 0.000699560885968165
-959 0.000642085039518387
-960 0.000647697652791968
-961 0.000599074112689629
-962 0.000575154175297893
-963 0.000549298287923788
-964 0.000516895100767751
-965 0.000505782209635087
-966 0.000468256937777253
-967 0.000443201508212851
-968 0.000422857688527172
-969 0.000396172202507289
-970 0.000378968023322664
-971 0.000356781808907751
-972 0.000335281879557104
-973 0.000318039116828582
-974 0.00029453308441855
-975 0.000267951475057331
-976 0.000246035263474985
-977 0.000289581453389937
-978 0.000348007228990331
-979 0.00040460593179165
-980 0.000411143906352345
-981 0.000381827800477813
-982 0.000355749114743507
-983 0.000330472553418517
-984 0.000310675137741401
-985 0.000285966709056265
-986 0.000261731425090165
-987 0.000237012405074174
-988 0.000215826766435867
-989 0.000273446389041168
-990 0.000248883730962565
-991 0.000224615155659346
-992 0.000200129222402582
-993 0.000177275060030199
-994 0.00015277663830548
-995 0.000128527059295642
-996 0.000102904910816061
-997 8.05504321850845e-05
-998 5.85820006378074e-05
-999 3.63637004327478e-05
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat
deleted file mode 100644
index 8844c14e0..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.00191903114318848 0.0 0.0 0.0 1
-2 0.00184082984924316 0.0 0.0 0.0 2
-3 0.00179791450500488 0.0 0.0 0.0 3
-4 0.00180506706237793 0.0100000000000016 0.0100000000000016 0.0 4
-5 0.00179386138916016 0.0 0.0 0.0 5
-6 0.00174307823181152 0.0 0.0 0.0 6
-7 0.00177001953125 0.0 0.0 0.0 7
-8 0.00175905227661133 0.0 0.0 0.0 8
-9 0.00177288055419922 0.00999999999999801 0.00999999999999801 0.0 9
-10 0.00176692008972168 0.0 0.0 0.0 10
-11 0.00176906585693359 0.0 0.0 0.0 11
-12 0.0017549991607666 0.0 0.0 0.0 12
-13 0.00345110893249512 0.0 0.0 0.0 13
-14 0.0018010139465332 0.0100000000000016 0.0100000000000016 0.0 14
-15 0.0017697811126709 0.0 0.0 0.0 15
-16 0.00174093246459961 0.0 0.0 0.0 16
-17 0.00175905227661133 0.0 0.0 0.0 17
-18 0.00176501274108887 0.0 0.0 0.0 18
-19 0.00176501274108887 0.0 0.0 0.0 19
-20 0.00175905227661133 0.00999999999999801 0.00999999999999801 0.0 20
-21 0.00173807144165039 0.0 0.0 0.0 21
-22 0.00222587585449219 0.0 0.0 0.0 22
-23 0.00347685813903809 0.0 0.0 0.0 23
-24 0.00342988967895508 0.0100000000000016 0.0100000000000016 0.0 24
-25 0.00312495231628418 0.0 0.0 0.0 25
-26 0.00174784660339355 0.0 0.0 0.0 26
-27 0.00174403190612793 0.0 0.0 0.0 27
-28 0.00174093246459961 0.0100000000000016 0.0100000000000016 0.0 28
-29 0.00173211097717285 0.0 0.0 0.0 29
-30 0.00176692008972168 0.0 0.0 0.0 30
-31 0.00176620483398438 0.0 0.0 0.0 31
-32 0.00179195404052734 0.0 0.0 0.0 32
-33 0.0017549991607666 0.0 0.0 0.0 33
-34 0.00172591209411621 0.0 0.0 0.0 34
-35 0.00174117088317871 0.0 0.0 0.0 35
-36 0.00173783302307129 0.0 0.0 0.0 36
-37 0.00174689292907715 0.0 0.0 0.0 37
-38 0.00173211097717285 0.0 0.0 0.0 38
-39 0.00174999237060547 0.0100000000000016 0.0100000000000016 0.0 39
-40 0.00176692008972168 0.0 0.0 0.0 40
-41 0.00172901153564453 0.0 0.0 0.0 41
-42 0.00174593925476074 0.0 0.0 0.0 42
-43 0.00175309181213379 0.0 0.0 0.0 43
-44 0.00175905227661133 0.0 0.0 0.0 44
-45 0.00176715850830078 0.00999999999999801 0.00999999999999801 0.0 45
-46 0.00174784660339355 0.0 0.0 0.0 46
-47 0.0017399787902832 0.0 0.0 0.0 47
-48 0.00174307823181152 0.0 0.0 0.0 48
-49 0.00180912017822266 0.0 0.0 0.0 49
-50 0.00175309181213379 0.0100000000000016 0.0100000000000016 0.0 50
-51 0.0017399787902832 0.0 0.0 0.0 51
-52 0.00176811218261719 0.0 0.0 0.0 52
-53 0.00176596641540527 0.0 0.0 0.0 53
-54 0.00189590454101562 0.0 0.0 0.0 54
-55 0.024507999420166 0.0299999999999976 0.0299999999999976 0.0 55
-56 0.00197005271911621 0.0 0.0 0.0 56
-57 0.00185298919677734 0.0 0.0 0.0 57
-58 0.00178289413452148 0.0 0.0 0.0 58
-59 0.00177383422851562 0.0 0.0 0.0 59
-60 0.00178122520446777 0.0100000000000016 0.0100000000000016 0.0 60
-61 0.00177597999572754 0.0 0.0 0.0 61
-62 0.00182914733886719 0.0 0.0 0.0 62
-63 0.00176692008972168 0.0 0.0 0.0 63
-64 0.00177502632141113 0.0 0.0 0.0 64
-65 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 65
-66 0.00176286697387695 0.0 0.0 0.0 66
-67 0.00175809860229492 0.0 0.0 0.0 67
-68 0.00176095962524414 0.0 0.0 0.0 68
-69 0.0017540454864502 0.0 0.0 0.0 69
-70 0.00175094604492188 0.0 0.0 0.0 70
-71 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 71
-72 0.00174784660339355 0.0 0.0 0.0 72
-73 0.00272703170776367 0.0 0.0 0.0 73
-74 0.00178098678588867 0.0 0.0 0.0 74
-75 0.0017540454864502 0.0 0.0 0.0 75
-76 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 76
-77 0.00174784660339355 0.0 0.0 0.0 77
-78 0.00176095962524414 0.0 0.0 0.0 78
-79 0.00175094604492188 0.0 0.0 0.0 79
-80 0.00174617767333984 0.0 0.0 0.0 80
-81 0.00176286697387695 0.00999999999999801 0.00999999999999801 0.0 81
-82 0.00174784660339355 0.0 0.0 0.0 82
-83 0.0017402172088623 0.0 0.0 0.0 83
-84 0.00174093246459961 0.0 0.0 0.0 84
-85 0.00174880027770996 0.0 0.0 0.0 85
-86 0.00174283981323242 0.0 0.0 0.0 86
-87 0.0017549991607666 0.0100000000000016 0.0100000000000016 0.0 87
-88 0.00175690650939941 0.0 0.0 0.0 88
-89 0.0017390251159668 0.0 0.0 0.0 89
-90 0.0017399787902832 0.0 0.0 0.0 90
-91 0.00176286697387695 0.0 0.0 0.0 91
-92 0.00174093246459961 0.00999999999999801 0.00999999999999801 0.0 92
-93 0.00173306465148926 0.0 0.0 0.0 93
-94 0.00173091888427734 0.0 0.0 0.0 94
-95 0.00175118446350098 0.0 0.0 0.0 95
-96 0.00173187255859375 0.0 0.0 0.0 96
-97 0.00177407264709473 0.0 0.0 0.0 97
-98 0.00174498558044434 0.0100000000000016 0.0100000000000016 0.0 98
-99 0.00173783302307129 0.0 0.0 0.0 99
-100 0.00174283981323242 0.0 0.0 0.0 100
-101 0.0017549991607666 0.0 0.0 0.0 101
-102 0.00173020362854004 0.0 0.0 0.0 102
-103 0.00172805786132812 0.0 0.0 0.0 103
-104 0.00174784660339355 0.0 0.0 0.0 104
-105 0.00175786018371582 0.0 0.0 0.0 105
-106 0.00176501274108887 0.0 0.0 0.0 106
-107 0.00174784660339355 0.0 0.0 0.0 107
-108 0.00176095962524414 0.0 0.0 0.0 108
-109 0.0247871875762939 0.0299999999999976 0.0299999999999976 0.0 109
-110 0.0018157958984375 0.0 0.0 0.0 110
-111 0.00183296203613281 0.0 0.0 0.0 111
-112 0.00179004669189453 0.0 0.0 0.0 112
-113 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 113
-114 0.00177502632141113 0.0 0.0 0.0 114
-115 0.00174498558044434 0.0 0.0 0.0 115
-116 0.00174808502197266 0.0 0.0 0.0 116
-117 0.00175595283508301 0.0 0.0 0.0 117
-118 0.00174808502197266 0.00999999999999801 0.00999999999999801 0.0 118
-119 0.00177216529846191 0.0 0.0 0.0 119
-120 0.0017540454864502 0.0 0.0 0.0 120
-121 0.00176286697387695 0.0 0.0 0.0 121
-122 0.00176787376403809 0.0 0.0 0.0 122
-123 0.00175905227661133 0.0 0.0 0.0 123
-124 0.0017549991607666 0.0100000000000016 0.0100000000000016 0.0 124
-125 0.00174403190612793 0.0 0.0 0.0 125
-126 0.00174903869628906 0.0 0.0 0.0 126
-127 0.00180387496948242 0.0 0.0 0.0 127
-128 0.00177502632141113 0.0 0.0 0.0 128
-129 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 129
-130 0.00174903869628906 0.0 0.0 0.0 130
-131 0.00176501274108887 0.0 0.0 0.0 131
-132 0.00191903114318848 0.0 0.0 0.0 132
-133 0.0034480094909668 0.0 0.0 0.0 133
-134 0.00341916084289551 0.0100000000000016 0.0100000000000016 0.0 134
-135 0.00260114669799805 0.0 0.0 0.0 135
-136 0.00203084945678711 0.0 0.0 0.0 136
-137 0.00176596641540527 0.0 0.0 0.0 137
-138 0.00175189971923828 0.0100000000000016 0.0100000000000016 0.0 138
-139 0.00176119804382324 0.0 0.0 0.0 139
-140 0.00174784660339355 0.0 0.0 0.0 140
-141 0.00173783302307129 0.0 0.0 0.0 141
-142 0.00179481506347656 0.0 0.0 0.0 142
-143 0.00173401832580566 0.00999999999999801 0.00999999999999801 0.0 143
-144 0.00175189971923828 0.0 0.0 0.0 144
-145 0.00174188613891602 0.0 0.0 0.0 145
-146 0.0017549991607666 0.0 0.0 0.0 146
-147 0.00174808502197266 0.0 0.0 0.0 147
-148 0.00174498558044434 0.0 0.0 0.0 148
-149 0.00174307823181152 0.0100000000000016 0.0100000000000016 0.0 149
-150 0.00175595283508301 0.0 0.0 0.0 150
-151 0.0017549991607666 0.0 0.0 0.0 151
-152 0.00174403190612793 0.0 0.0 0.0 152
-153 0.00174808502197266 0.0 0.0 0.0 153
-154 0.00174403190612793 0.0 0.0 0.0 154
-155 0.00183796882629395 0.00999999999999801 0.00999999999999801 0.0 155
-156 0.00176095962524414 0.0 0.0 0.0 156
-157 0.0017399787902832 0.0 0.0 0.0 157
-158 0.00181007385253906 0.0 0.0 0.0 158
-159 0.00175905227661133 0.0 0.0 0.0 159
-160 0.00177717208862305 0.0100000000000016 0.0100000000000016 0.0 160
-161 0.00175380706787109 0.0 0.0 0.0 161
-162 0.00177097320556641 0.0 0.0 0.0 162
-163 0.0254480838775635 0.0199999999999996 0.0199999999999996 0.0 163
-164 0.00185108184814453 0.00999999999999801 0.00999999999999801 0.0 164
-165 0.00188708305358887 0.0 0.0 0.0 165
-166 0.00177788734436035 0.0 0.0 0.0 166
-167 0.00183510780334473 0.0 0.0 0.0 167
-168 0.00177812576293945 0.0 0.0 0.0 168
-169 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 169
-170 0.00174593925476074 0.0 0.0 0.0 170
-171 0.00176692008972168 0.0 0.0 0.0 171
-172 0.00175786018371582 0.0 0.0 0.0 172
-173 0.00176501274108887 0.0 0.0 0.0 173
-174 0.0018000602722168 0.0100000000000016 0.0100000000000016 0.0 174
-175 0.00176095962524414 0.0 0.0 0.0 175
-176 0.00175714492797852 0.0 0.0 0.0 176
-177 0.00174999237060547 0.0 0.0 0.0 177
-178 0.00176191329956055 0.0 0.0 0.0 178
-179 0.00175786018371582 0.0 0.0 0.0 179
-180 0.00174117088317871 0.00999999999999801 0.00999999999999801 0.0 180
-181 0.00177001953125 0.0 0.0 0.0 181
-182 0.00176095962524414 0.0 0.0 0.0 182
-183 0.00174903869628906 0.0 0.0 0.0 183
-184 0.00174093246459961 0.0 0.0 0.0 184
-185 0.00174307823181152 0.0 0.0 0.0 185
-186 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 186
-187 0.00175189971923828 0.0 0.0 0.0 187
-188 0.00173711776733398 0.0 0.0 0.0 188
-189 0.00221514701843262 0.0 0.0 0.0 189
-190 0.00177502632141113 0.0 0.0 0.0 190
-191 0.00176811218261719 0.00999999999999801 0.00999999999999801 0.0 191
-192 0.00185799598693848 0.0 0.0 0.0 192
-193 0.00174903869628906 0.0 0.0 0.0 193
-194 0.00174379348754883 0.0 0.0 0.0 194
-195 0.0017399787902832 0.0 0.0 0.0 195
-196 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 196
-197 0.00172996520996094 0.0 0.0 0.0 197
-198 0.00173401832580566 0.0 0.0 0.0 198
-199 0.00182390213012695 0.0 0.0 0.0 199
-200 0.00174784660339355 0.0 0.0 0.0 200
-201 0.0017549991607666 0.0 0.0 0.0 201
-202 0.00174307823181152 0.00999999999999801 0.00999999999999801 0.0 202
-203 0.00172710418701172 0.0 0.0 0.0 203
-204 0.00174283981323242 0.0 0.0 0.0 204
-205 0.00174999237060547 0.0 0.0 0.0 205
-206 0.00174093246459961 0.0 0.0 0.0 206
-207 0.00173616409301758 0.0 0.0 0.0 207
-208 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 208
-209 0.00177407264709473 0.0 0.0 0.0 209
-210 0.00176286697387695 0.0 0.0 0.0 210
-211 0.00174903869628906 0.0 0.0 0.0 211
-212 0.00173807144165039 0.0 0.0 0.0 212
-213 0.00173020362854004 0.0100000000000016 0.0100000000000016 0.0 213
-214 0.00177502632141113 0.0 0.0 0.0 214
-215 0.00175309181213379 0.0 0.0 0.0 215
-216 0.00175595283508301 0.0 0.0 0.0 216
-217 0.0257258415222168 0.0299999999999976 0.0299999999999976 0.0 217
-218 0.00183296203613281 0.0 0.0 0.0 218
-219 0.00183606147766113 0.0 0.0 0.0 219
-220 0.0017850399017334 0.0 0.0 0.0 220
-221 0.00177097320556641 0.0 0.0 0.0 221
-222 0.00177097320556641 0.0100000000000016 0.0100000000000016 0.0 222
-223 0.00174808502197266 0.0 0.0 0.0 223
-224 0.00177216529846191 0.0 0.0 0.0 224
-225 0.0017549991607666 0.0 0.0 0.0 225
-226 0.00176095962524414 0.0 0.0 0.0 226
-227 0.00178098678588867 0.00999999999999801 0.00999999999999801 0.0 227
-228 0.00174188613891602 0.0 0.0 0.0 228
-229 0.0017540454864502 0.0 0.0 0.0 229
-230 0.00176477432250977 0.0 0.0 0.0 230
-231 0.00176191329956055 0.0 0.0 0.0 231
-232 0.00174713134765625 0.0 0.0 0.0 232
-233 0.00176095962524414 0.0100000000000016 0.0100000000000016 0.0 233
-234 0.00174903869628906 0.0 0.0 0.0 234
-235 0.0017549991607666 0.0 0.0 0.0 235
-236 0.00177001953125 0.0 0.0 0.0 236
-237 0.00174093246459961 0.0 0.0 0.0 237
-238 0.00174379348754883 0.0 0.0 0.0 238
-239 0.0017390251159668 0.00999999999999801 0.00999999999999801 0.0 239
-240 0.00175213813781738 0.0 0.0 0.0 240
-241 0.00174117088317871 0.0 0.0 0.0 241
-242 0.00341701507568359 0.0 0.0 0.0 242
-243 0.00347495079040527 0.0100000000000016 0.0100000000000016 0.0 243
-244 0.00339508056640625 0.0 0.0 0.0 244
-245 0.00204801559448242 0.0 0.0 0.0 245
-246 0.00174903869628906 0.0 0.0 0.0 246
-247 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 247
-248 0.00174283981323242 0.0 0.0 0.0 248
-249 0.00176382064819336 0.0 0.0 0.0 249
-250 0.00179600715637207 0.0 0.0 0.0 250
-251 0.00175380706787109 0.0 0.0 0.0 251
-252 0.00175976753234863 0.00999999999999801 0.00999999999999801 0.0 252
-253 0.00174188613891602 0.0 0.0 0.0 253
-254 0.00174808502197266 0.0 0.0 0.0 254
-255 0.00175690650939941 0.0 0.0 0.0 255
-256 0.00173091888427734 0.0 0.0 0.0 256
-257 0.00175213813781738 0.0 0.0 0.0 257
-258 0.00174498558044434 0.0100000000000016 0.0100000000000016 0.0 258
-259 0.00174999237060547 0.0 0.0 0.0 259
-260 0.00175094604492188 0.0 0.0 0.0 260
-261 0.00177097320556641 0.0 0.0 0.0 261
-262 0.00174283981323242 0.0 0.0 0.0 262
-263 0.00174999237060547 0.00999999999999801 0.00999999999999801 0.0 263
-264 0.00174713134765625 0.0 0.0 0.0 264
-265 0.00174212455749512 0.0 0.0 0.0 265
-266 0.00174498558044434 0.0 0.0 0.0 266
-267 0.00180602073669434 0.0 0.0 0.0 267
-268 0.00176906585693359 0.0 0.0 0.0 268
-269 0.00176382064819336 0.0100000000000016 0.0100000000000016 0.0 269
-270 0.0255179405212402 0.0199999999999996 0.0199999999999996 0.0 270
-271 0.00179314613342285 0.0 0.0 0.0 271
-272 0.00182604789733887 0.00999999999999801 0.00999999999999801 0.0 272
-273 0.00179910659790039 0.0 0.0 0.0 273
-274 0.00179505348205566 0.0 0.0 0.0 274
-275 0.00176811218261719 0.0 0.0 0.0 275
-276 0.00177192687988281 0.0 0.0 0.0 276
-277 0.00177478790283203 0.0 0.0 0.0 277
-278 0.00176596641540527 0.0100000000000016 0.0100000000000016 0.0 278
-279 0.0020899772644043 0.0 0.0 0.0 279
-280 0.00182890892028809 0.0 0.0 0.0 280
-281 0.00177597999572754 0.0 0.0 0.0 281
-282 0.0018761157989502 0.0 0.0 0.0 282
-283 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 283
-284 0.00177693367004395 0.0 0.0 0.0 284
-285 0.00175094604492188 0.0 0.0 0.0 285
-286 0.00176000595092773 0.0 0.0 0.0 286
-287 0.00176095962524414 0.0 0.0 0.0 287
-288 0.00176715850830078 0.0 0.0 0.0 288
-289 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 289
-290 0.00177216529846191 0.0 0.0 0.0 290
-291 0.00175881385803223 0.0 0.0 0.0 291
-292 0.00177502632141113 0.0 0.0 0.0 292
-293 0.00174999237060547 0.0 0.0 0.0 293
-294 0.00176000595092773 0.0100000000000016 0.0100000000000016 0.0 294
-295 0.00173807144165039 0.0 0.0 0.0 295
-296 0.00174999237060547 0.0 0.0 0.0 296
-297 0.00174212455749512 0.0 0.0 0.0 297
-298 0.0017549991607666 0.0 0.0 0.0 298
-299 0.00174713134765625 0.0 0.0 0.0 299
-300 0.00174784660339355 0.00999999999999801 0.00999999999999801 0.0 300
-301 0.00174403190612793 0.0 0.0 0.0 301
-302 0.00175905227661133 0.0 0.0 0.0 302
-303 0.00174713134765625 0.0 0.0 0.0 303
-304 0.00293898582458496 0.0 0.0 0.0 304
-305 0.00175619125366211 0.0100000000000016 0.0100000000000016 0.0 305
-306 0.00176787376403809 0.0 0.0 0.0 306
-307 0.00173401832580566 0.0 0.0 0.0 307
-308 0.00176095962524414 0.0 0.0 0.0 308
-309 0.00177383422851562 0.0 0.0 0.0 309
-310 0.00175189971923828 0.0 0.0 0.0 310
-311 0.00173211097717285 0.00999999999999801 0.00999999999999801 0.0 311
-312 0.00173211097717285 0.0 0.0 0.0 312
-313 0.00175786018371582 0.0 0.0 0.0 313
-314 0.0017549991607666 0.0 0.0 0.0 314
-315 0.00180292129516602 0.0 0.0 0.0 315
-316 0.00176787376403809 0.0100000000000016 0.0100000000000016 0.0 316
-317 0.00175714492797852 0.0 0.0 0.0 317
-318 0.00177097320556641 0.0 0.0 0.0 318
-319 0.00173711776733398 0.0 0.0 0.0 319
-320 0.00174307823181152 0.0 0.0 0.0 320
-321 0.00177502632141113 0.0 0.0 0.0 321
-322 0.00176501274108887 0.0100000000000016 0.0100000000000016 0.0 322
-323 0.00177407264709473 0.0 0.0 0.0 323
-324 0.0253810882568359 0.0199999999999996 0.0199999999999996 0.0 324
-325 0.00182509422302246 0.00999999999999801 0.00999999999999801 0.0 325
-326 0.00184917449951172 0.0 0.0 0.0 326
-327 0.0018160343170166 0.0 0.0 0.0 327
-328 0.00176692008972168 0.0 0.0 0.0 328
-329 0.00176501274108887 0.0 0.0 0.0 329
-330 0.00177097320556641 0.0 0.0 0.0 330
-331 0.00176906585693359 0.0100000000000016 0.0100000000000016 0.0 331
-332 0.00175690650939941 0.0 0.0 0.0 332
-333 0.00176906585693359 0.0 0.0 0.0 333
-334 0.00173497200012207 0.0 0.0 0.0 334
-335 0.00176095962524414 0.0 0.0 0.0 335
-336 0.00176286697387695 0.00999999999999801 0.00999999999999801 0.0 336
-337 0.00176382064819336 0.0 0.0 0.0 337
-338 0.00174379348754883 0.0 0.0 0.0 338
-339 0.00174808502197266 0.0 0.0 0.0 339
-340 0.00175595283508301 0.0 0.0 0.0 340
-341 0.0017540454864502 0.0 0.0 0.0 341
-342 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 342
-343 0.00172686576843262 0.0 0.0 0.0 343
-344 0.00175786018371582 0.0 0.0 0.0 344
-345 0.00181317329406738 0.0 0.0 0.0 345
-346 0.00176692008972168 0.0 0.0 0.0 346
-347 0.00175213813781738 0.00999999999999801 0.00999999999999801 0.0 347
-348 0.00172591209411621 0.0 0.0 0.0 348
-349 0.00174093246459961 0.0 0.0 0.0 349
-350 0.00202202796936035 0.0 0.0 0.0 350
-351 0.00346088409423828 0.0 0.0 0.0 351
-352 0.00342106819152832 0.0100000000000016 0.0100000000000016 0.0 352
-353 0.0033118724822998 0.0 0.0 0.0 353
-354 0.00195193290710449 0.0 0.0 0.0 354
-355 0.00175690650939941 0.0100000000000016 0.0100000000000016 0.0 355
-356 0.00174379348754883 0.0 0.0 0.0 356
-357 0.00174283981323242 0.0 0.0 0.0 357
-358 0.00174880027770996 0.0 0.0 0.0 358
-359 0.00177788734436035 0.0 0.0 0.0 359
-360 0.00173401832580566 0.0 0.0 0.0 360
-361 0.00173687934875488 0.00999999999999801 0.00999999999999801 0.0 361
-362 0.00174403190612793 0.0 0.0 0.0 362
-363 0.00174999237060547 0.0 0.0 0.0 363
-364 0.00173592567443848 0.0 0.0 0.0 364
-365 0.00175094604492188 0.0 0.0 0.0 365
-366 0.00174188613891602 0.0 0.0 0.0 366
-367 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 367
-368 0.00175595283508301 0.0 0.0 0.0 368
-369 0.00174403190612793 0.0 0.0 0.0 369
-370 0.0017387866973877 0.0 0.0 0.0 370
-371 0.00177192687988281 0.0 0.0 0.0 371
-372 0.00177907943725586 0.00999999999999801 0.00999999999999801 0.0 372
-373 0.00174903869628906 0.0 0.0 0.0 373
-374 0.00176215171813965 0.0 0.0 0.0 374
-375 0.0023951530456543 0.0 0.0 0.0 375
-376 0.00357913970947266 0.0100000000000016 0.0100000000000016 0.0 376
-377 0.0294489860534668 0.0199999999999996 0.0199999999999996 0.0 377
-378 0.00180578231811523 0.00999999999999801 0.00999999999999801 0.0 378
-379 0.00181698799133301 0.0 0.0 0.0 379
-380 0.00183391571044922 0.0 0.0 0.0 380
-381 0.00181293487548828 0.0 0.0 0.0 381
-382 0.00175809860229492 0.0 0.0 0.0 382
-383 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 383
-384 0.00176000595092773 0.0 0.0 0.0 384
-385 0.00175809860229492 0.0 0.0 0.0 385
-386 0.00177288055419922 0.0 0.0 0.0 386
-387 0.00175285339355469 0.0 0.0 0.0 387
-388 0.00175595283508301 0.0 0.0 0.0 388
-389 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 389
-390 0.00174903869628906 0.0 0.0 0.0 390
-391 0.00176215171813965 0.0 0.0 0.0 391
-392 0.00174903869628906 0.0 0.0 0.0 392
-393 0.00174307823181152 0.0 0.0 0.0 393
-394 0.00177812576293945 0.00999999999999801 0.00999999999999801 0.0 394
-395 0.00176596641540527 0.0 0.0 0.0 395
-396 0.00178003311157227 0.0 0.0 0.0 396
-397 0.0017390251159668 0.0 0.0 0.0 397
-398 0.00174999237060547 0.0 0.0 0.0 398
-399 0.00174307823181152 0.0 0.0 0.0 399
-400 0.00176191329956055 0.0100000000000016 0.0100000000000016 0.0 400
-401 0.0017549991607666 0.0 0.0 0.0 401
-402 0.00173592567443848 0.0 0.0 0.0 402
-403 0.00173401832580566 0.0 0.0 0.0 403
-404 0.00176095962524414 0.0 0.0 0.0 404
-405 0.00174689292907715 0.00999999999999801 0.00999999999999801 0.0 405
-406 0.00176000595092773 0.0 0.0 0.0 406
-407 0.00172615051269531 0.0 0.0 0.0 407
-408 0.00174188613891602 0.0 0.0 0.0 408
-409 0.00174283981323242 0.0 0.0 0.0 409
-410 0.0017540454864502 0.0 0.0 0.0 410
-411 0.00174403190612793 0.0100000000000016 0.0100000000000016 0.0 411
-412 0.00172901153564453 0.0 0.0 0.0 412
-413 0.00173282623291016 0.0 0.0 0.0 413
-414 0.00174880027770996 0.0 0.0 0.0 414
-415 0.0017549991607666 0.0 0.0 0.0 415
-416 0.00173091888427734 0.00999999999999801 0.00999999999999801 0.0 416
-417 0.00174999237060547 0.0 0.0 0.0 417
-418 0.00184798240661621 0.0 0.0 0.0 418
-419 0.00175118446350098 0.0 0.0 0.0 419
-420 0.00173497200012207 0.0 0.0 0.0 420
-421 0.00173807144165039 0.0 0.0 0.0 421
-422 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 422
-423 0.00174093246459961 0.0 0.0 0.0 423
-424 0.00177288055419922 0.0 0.0 0.0 424
-425 0.00176000595092773 0.0 0.0 0.0 425
-426 0.00174880027770996 0.0 0.0 0.0 426
-427 0.00173187255859375 0.0 0.0 0.0 427
-428 0.00179195404052734 0.0100000000000016 0.0100000000000016 0.0 428
-429 0.00175309181213379 0.0 0.0 0.0 429
-430 0.0253579616546631 0.0199999999999996 0.0199999999999996 0.0 430
-431 0.0018010139465332 0.00999999999999801 0.00999999999999801 0.0 431
-432 0.00183796882629395 0.0 0.0 0.0 432
-433 0.00179314613342285 0.0 0.0 0.0 433
-434 0.00180387496948242 0.0 0.0 0.0 434
-435 0.00178289413452148 0.0 0.0 0.0 435
-436 0.00178003311157227 0.0100000000000016 0.0100000000000016 0.0 436
-437 0.00177001953125 0.0 0.0 0.0 437
-438 0.00175285339355469 0.0 0.0 0.0 438
-439 0.00176405906677246 0.0 0.0 0.0 439
-440 0.00176501274108887 0.0 0.0 0.0 440
-441 0.00173497200012207 0.0 0.0 0.0 441
-442 0.00176215171813965 0.00999999999999801 0.00999999999999801 0.0 442
-443 0.00176000595092773 0.0 0.0 0.0 443
-444 0.0017390251159668 0.0 0.0 0.0 444
-445 0.00175714492797852 0.0 0.0 0.0 445
-446 0.00178098678588867 0.0 0.0 0.0 446
-447 0.00176286697387695 0.0 0.0 0.0 447
-448 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 448
-449 0.00177097320556641 0.0 0.0 0.0 449
-450 0.00175905227661133 0.0 0.0 0.0 450
-451 0.00175595283508301 0.0 0.0 0.0 451
-452 0.00177693367004395 0.0 0.0 0.0 452
-453 0.00174999237060547 0.00999999999999801 0.00999999999999801 0.0 453
-454 0.00175595283508301 0.0 0.0 0.0 454
-455 0.00176191329956055 0.0 0.0 0.0 455
-456 0.00175094604492188 0.0 0.0 0.0 456
-457 0.00329685211181641 0.0 0.0 0.0 457
-458 0.00347805023193359 0.0100000000000016 0.0100000000000016 0.0 458
-459 0.00338196754455566 0.0 0.0 0.0 459
-460 0.00222587585449219 0.0 0.0 0.0 460
-461 0.00174784660339355 0.0100000000000016 0.0100000000000016 0.0 461
-462 0.00176715850830078 0.0 0.0 0.0 462
-463 0.00176501274108887 0.0 0.0 0.0 463
-464 0.00172901153564453 0.0 0.0 0.0 464
-465 0.00177407264709473 0.0 0.0 0.0 465
-466 0.00175309181213379 0.0 0.0 0.0 466
-467 0.00176095962524414 0.00999999999999801 0.00999999999999801 0.0 467
-468 0.00174403190612793 0.0 0.0 0.0 468
-469 0.00172996520996094 0.0 0.0 0.0 469
-470 0.00175285339355469 0.0 0.0 0.0 470
-471 0.00176000595092773 0.0 0.0 0.0 471
-472 0.00176119804382324 0.0100000000000016 0.0100000000000016 0.0 472
-473 0.00173187255859375 0.0 0.0 0.0 473
-474 0.00172281265258789 0.0 0.0 0.0 474
-475 0.00175905227661133 0.0 0.0 0.0 475
-476 0.00175714492797852 0.0 0.0 0.0 476
-477 0.00174093246459961 0.0 0.0 0.0 477
-478 0.00176501274108887 0.00999999999999801 0.00999999999999801 0.0 478
-479 0.00173497200012207 0.0 0.0 0.0 479
-480 0.00174593925476074 0.0 0.0 0.0 480
-481 0.00177001953125 0.0 0.0 0.0 481
-482 0.00177097320556641 0.0 0.0 0.0 482
-483 0.0255038738250732 0.0300000000000011 0.0300000000000011 0.0 483
-484 0.00180983543395996 0.0 0.0 0.0 484
-485 0.00182580947875977 0.0 0.0 0.0 485
-486 0.00181293487548828 0.0 0.0 0.0 486
-487 0.00178980827331543 0.00999999999999801 0.00999999999999801 0.0 487
-488 0.00177001953125 0.0 0.0 0.0 488
-489 0.00174784660339355 0.0 0.0 0.0 489
-490 0.00177311897277832 0.0 0.0 0.0 490
-491 0.00178694725036621 0.0 0.0 0.0 491
-492 0.00176596641540527 0.0100000000000016 0.0100000000000016 0.0 492
-493 0.00175786018371582 0.0 0.0 0.0 493
-494 0.00176286697387695 0.0 0.0 0.0 494
-495 0.00174117088317871 0.0 0.0 0.0 495
-496 0.0017540454864502 0.0 0.0 0.0 496
-497 0.00176811218261719 0.0 0.0 0.0 497
-498 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 498
-499 0.00175595283508301 0.0 0.0 0.0 499
-500 0.00183701515197754 0.0 0.0 0.0 500
-501 0.00176692008972168 0.0 0.0 0.0 501
-502 0.00178289413452148 0.0 0.0 0.0 502
-503 0.00176692008972168 0.00999999999999801 0.00999999999999801 0.0 503
-504 0.00175595283508301 0.0 0.0 0.0 504
-505 0.00173616409301758 0.0 0.0 0.0 505
-506 0.00208091735839844 0.0 0.0 0.0 506
-507 0.00292181968688965 0.0 0.0 0.0 507
-508 0.00174379348754883 0.0 0.0 0.0 508
-509 0.00174093246459961 0.0100000000000016 0.0100000000000016 0.0 509
-510 0.00175595283508301 0.0 0.0 0.0 510
-511 0.00174808502197266 0.0 0.0 0.0 511
-512 0.00172805786132812 0.0 0.0 0.0 512
-513 0.00174903869628906 0.0 0.0 0.0 513
-514 0.00177097320556641 0.00999999999999801 0.00999999999999801 0.0 514
-515 0.0017540454864502 0.0 0.0 0.0 515
-516 0.00173282623291016 0.0 0.0 0.0 516
-517 0.00174498558044434 0.0 0.0 0.0 517
-518 0.00174188613891602 0.0 0.0 0.0 518
-519 0.00176811218261719 0.0 0.0 0.0 519
-520 0.00173711776733398 0.0100000000000016 0.0100000000000016 0.0 520
-521 0.00175690650939941 0.0 0.0 0.0 521
-522 0.00173592567443848 0.0 0.0 0.0 522
-523 0.0017390251159668 0.0 0.0 0.0 523
-524 0.00174903869628906 0.0 0.0 0.0 524
-525 0.00175881385803223 0.00999999999999801 0.00999999999999801 0.0 525
-526 0.00173497200012207 0.0 0.0 0.0 526
-527 0.00173616409301758 0.0 0.0 0.0 527
-528 0.00175189971923828 0.0 0.0 0.0 528
-529 0.00174403190612793 0.0 0.0 0.0 529
-530 0.00174903869628906 0.0 0.0 0.0 530
-531 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 531
-532 0.00174307823181152 0.0 0.0 0.0 532
-533 0.00174999237060547 0.0 0.0 0.0 533
-534 0.00178980827331543 0.0 0.0 0.0 534
-535 0.00175809860229492 0.0 0.0 0.0 535
-536 0.025597095489502 0.0300000000000011 0.0300000000000011 0.0 536
-537 0.00178790092468262 0.0 0.0 0.0 537
-538 0.00197505950927734 0.0 0.0 0.0 538
-539 0.00181388854980469 0.0 0.0 0.0 539
-540 0.00177693367004395 0.00999999999999801 0.00999999999999801 0.0 540
-541 0.00177311897277832 0.0 0.0 0.0 541
-542 0.00185203552246094 0.0 0.0 0.0 542
-543 0.00176501274108887 0.0 0.0 0.0 543
-544 0.00176501274108887 0.0 0.0 0.0 544
-545 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 545
-546 0.00176405906677246 0.0 0.0 0.0 546
-547 0.00174093246459961 0.0 0.0 0.0 547
-548 0.00175905227661133 0.0 0.0 0.0 548
-549 0.00177407264709473 0.0 0.0 0.0 549
-550 0.00176215171813965 0.0 0.0 0.0 550
-551 0.00174903869628906 0.00999999999999801 0.00999999999999801 0.0 551
-552 0.00175595283508301 0.0 0.0 0.0 552
-553 0.00174593925476074 0.0 0.0 0.0 553
-554 0.00176787376403809 0.0 0.0 0.0 554
-555 0.00176000595092773 0.0 0.0 0.0 555
-556 0.00175380706787109 0.0100000000000016 0.0100000000000016 0.0 556
-557 0.00174593925476074 0.0 0.0 0.0 557
-558 0.00173807144165039 0.0 0.0 0.0 558
-559 0.00180602073669434 0.0 0.0 0.0 559
-560 0.00174808502197266 0.0 0.0 0.0 560
-561 0.00174093246459961 0.0 0.0 0.0 561
-562 0.00177311897277832 0.00999999999999801 0.00999999999999801 0.0 562
-563 0.00174212455749512 0.0 0.0 0.0 563
-564 0.00174498558044434 0.0 0.0 0.0 564
-565 0.00191402435302734 0.0 0.0 0.0 565
-566 0.00347208976745605 0.0100000000000016 0.0100000000000016 0.0 566
-567 0.00344085693359375 0.0 0.0 0.0 567
-568 0.00338578224182129 0.0 0.0 0.0 568
-569 0.00339102745056152 0.0100000000000016 0.0100000000000016 0.0 569
-570 0.00190401077270508 0.0 0.0 0.0 570
-571 0.00175905227661133 0.0 0.0 0.0 571
-572 0.00177097320556641 0.0 0.0 0.0 572
-573 0.00176215171813965 0.0 0.0 0.0 573
-574 0.0017249584197998 0.0 0.0 0.0 574
-575 0.00174903869628906 0.00999999999999801 0.00999999999999801 0.0 575
-576 0.00174593925476074 0.0 0.0 0.0 576
-577 0.0017399787902832 0.0 0.0 0.0 577
-578 0.00174498558044434 0.0 0.0 0.0 578
-579 0.00174689292907715 0.0 0.0 0.0 579
-580 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 580
-581 0.00174307823181152 0.0 0.0 0.0 581
-582 0.00175380706787109 0.0 0.0 0.0 582
-583 0.00175690650939941 0.0 0.0 0.0 583
-584 0.00174403190612793 0.0 0.0 0.0 584
-585 0.00174903869628906 0.0 0.0 0.0 585
-586 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 586
-587 0.00176596641540527 0.0 0.0 0.0 587
-588 0.00175595283508301 0.0 0.0 0.0 588
-589 0.0243070125579834 0.0199999999999996 0.0199999999999996 0.0 589
-590 0.00179505348205566 0.0100000000000016 0.0100000000000016 0.0 590
-591 0.00179696083068848 0.0 0.0 0.0 591
-592 0.0018000602722168 0.0 0.0 0.0 592
-593 0.00178909301757812 0.0 0.0 0.0 593
-594 0.00181698799133301 0.0 0.0 0.0 594
-595 0.00178003311157227 0.00999999999999801 0.00999999999999801 0.0 595
-596 0.00175619125366211 0.0 0.0 0.0 596
-597 0.0017540454864502 0.0 0.0 0.0 597
-598 0.00177407264709473 0.0 0.0 0.0 598
-599 0.00177502632141113 0.0 0.0 0.0 599
-600 0.00176692008972168 0.0 0.0 0.0 600
-601 0.00175690650939941 0.0100000000000016 0.0100000000000016 0.0 601
-602 0.00173401832580566 0.0 0.0 0.0 602
-603 0.00175213813781738 0.0 0.0 0.0 603
-604 0.00176692008972168 0.0 0.0 0.0 604
-605 0.00175189971923828 0.0 0.0 0.0 605
-606 0.00176692008972168 0.0100000000000016 0.0100000000000016 0.0 606
-607 0.00175595283508301 0.0 0.0 0.0 607
-608 0.00176811218261719 0.0 0.0 0.0 608
-609 0.00176787376403809 0.0 0.0 0.0 609
-610 0.00177121162414551 0.0 0.0 0.0 610
-611 0.00175094604492188 0.0 0.0 0.0 611
-612 0.00174713134765625 0.00999999999999801 0.00999999999999801 0.0 612
-613 0.00174403190612793 0.0 0.0 0.0 613
-614 0.00173211097717285 0.0 0.0 0.0 614
-615 0.0017859935760498 0.0 0.0 0.0 615
-616 0.00175309181213379 0.0 0.0 0.0 616
-617 0.00174784660339355 0.0 0.0 0.0 617
-618 0.00174903869628906 0.0 0.0 0.0 618
-619 0.00175714492797852 0.0 0.0 0.0 619
-620 0.0022280216217041 0.0 0.0 0.0 620
-621 0.00176501274108887 0.0 0.0 0.0 621
-622 0.00176191329956055 0.0 0.0 0.0 622
-623 0.00185799598693848 0.00999999999999801 0.00999999999999801 0.0 623
-624 0.00174689292907715 0.0 0.0 0.0 624
-625 0.00174689292907715 0.0 0.0 0.0 625
-626 0.0017249584197998 0.0 0.0 0.0 626
-627 0.00173401832580566 0.0 0.0 0.0 627
-628 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 628
-629 0.00173401832580566 0.0 0.0 0.0 629
-630 0.00174593925476074 0.0 0.0 0.0 630
-631 0.00174593925476074 0.0 0.0 0.0 631
-632 0.00174689292907715 0.0 0.0 0.0 632
-633 0.00175905227661133 0.0 0.0 0.0 633
-634 0.00177001953125 0.00999999999999801 0.00999999999999801 0.0 634
-635 0.00174403190612793 0.0 0.0 0.0 635
-636 0.00185108184814453 0.0 0.0 0.0 636
-637 0.00174403190612793 0.0 0.0 0.0 637
-638 0.00175023078918457 0.0 0.0 0.0 638
-639 0.00177407264709473 0.0100000000000016 0.0100000000000016 0.0 639
-640 0.00174403190612793 0.0 0.0 0.0 640
-641 0.00175714492797852 0.0 0.0 0.0 641
-642 0.0244560241699219 0.0199999999999996 0.0199999999999996 0.0 642
-643 0.00182914733886719 0.0100000000000016 0.0100000000000016 0.0 643
-644 0.00178813934326172 0.0 0.0 0.0 644
-645 0.00177693367004395 0.0 0.0 0.0 645
-646 0.00177192687988281 0.0 0.0 0.0 646
-647 0.00177478790283203 0.0 0.0 0.0 647
-648 0.00176906585693359 0.0 0.0 0.0 648
-649 0.00176787376403809 0.00999999999999801 0.00999999999999801 0.0 649
-650 0.00174212455749512 0.0 0.0 0.0 650
-651 0.00175595283508301 0.0 0.0 0.0 651
-652 0.00176286697387695 0.0 0.0 0.0 652
-653 0.00176095962524414 0.0 0.0 0.0 653
-654 0.00177597999572754 0.0100000000000016 0.0100000000000016 0.0 654
-655 0.00177288055419922 0.0 0.0 0.0 655
-656 0.00175118446350098 0.0 0.0 0.0 656
-657 0.00175309181213379 0.0 0.0 0.0 657
-658 0.0017540454864502 0.0 0.0 0.0 658
-659 0.0017549991607666 0.0 0.0 0.0 659
-660 0.00176215171813965 0.00999999999999801 0.00999999999999801 0.0 660
-661 0.00176692008972168 0.0 0.0 0.0 661
-662 0.00175619125366211 0.0 0.0 0.0 662
-663 0.00177288055419922 0.0 0.0 0.0 663
-664 0.00176310539245605 0.0 0.0 0.0 664
-665 0.00175189971923828 0.0 0.0 0.0 665
-666 0.00175094604492188 0.0100000000000016 0.0100000000000016 0.0 666
-667 0.00175189971923828 0.0 0.0 0.0 667
-668 0.00175905227661133 0.0 0.0 0.0 668
-669 0.00175690650939941 0.0 0.0 0.0 669
-670 0.00174903869628906 0.0 0.0 0.0 670
-671 0.00176382064819336 0.00999999999999801 0.00999999999999801 0.0 671
-672 0.00174307823181152 0.0 0.0 0.0 672
-673 0.00174117088317871 0.0 0.0 0.0 673
-674 0.00176906585693359 0.0 0.0 0.0 674
-675 0.00325989723205566 0.0 0.0 0.0 675
-676 0.00345802307128906 0.0100000000000016 0.0100000000000016 0.0 676
-677 0.0026400089263916 0.0 0.0 0.0 677
-678 0.00176692008972168 0.0 0.0 0.0 678
-679 0.00268101692199707 0.0100000000000016 0.0100000000000016 0.0 679
-680 0.00180482864379883 0.0 0.0 0.0 680
-681 0.00174808502197266 0.0 0.0 0.0 681
-682 0.00174283981323242 0.0 0.0 0.0 682
-683 0.00176095962524414 0.0 0.0 0.0 683
-684 0.00176095962524414 0.0 0.0 0.0 684
-685 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 685
-686 0.00175094604492188 0.0 0.0 0.0 686
-687 0.00176477432250977 0.0 0.0 0.0 687
-688 0.00176000595092773 0.0 0.0 0.0 688
-689 0.00176906585693359 0.0 0.0 0.0 689
-690 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 690
-691 0.00174808502197266 0.0 0.0 0.0 691
-692 0.00178909301757812 0.0 0.0 0.0 692
-693 0.00177693367004395 0.0 0.0 0.0 693
-694 0.0252690315246582 0.0299999999999976 0.0299999999999976 0.0 694
-695 0.00181198120117188 0.0 0.0 0.0 695
-696 0.00185799598693848 0.0 0.0 0.0 696
-697 0.00180315971374512 0.0 0.0 0.0 697
-698 0.00178194046020508 0.0 0.0 0.0 698
-699 0.00178718566894531 0.0100000000000016 0.0100000000000016 0.0 699
-700 0.00174593925476074 0.0 0.0 0.0 700
-701 0.00177192687988281 0.0 0.0 0.0 701
-702 0.00177216529846191 0.0 0.0 0.0 702
-703 0.00174808502197266 0.0 0.0 0.0 703
-704 0.00176882743835449 0.0 0.0 0.0 704
-705 0.0017540454864502 0.00999999999999801 0.00999999999999801 0.0 705
-706 0.00174403190612793 0.0 0.0 0.0 706
-707 0.00177288055419922 0.0 0.0 0.0 707
-708 0.00177001953125 0.0 0.0 0.0 708
-709 0.00176310539245605 0.0 0.0 0.0 709
-710 0.00175690650939941 0.0 0.0 0.0 710
-711 0.00179791450500488 0.0100000000000016 0.0100000000000016 0.0 711
-712 0.00183296203613281 0.0 0.0 0.0 712
-713 0.00177001953125 0.0 0.0 0.0 713
-714 0.00175595283508301 0.0 0.0 0.0 714
-715 0.00175189971923828 0.0 0.0 0.0 715
-716 0.00174713134765625 0.0 0.0 0.0 716
-717 0.00175809860229492 0.0100000000000016 0.0100000000000016 0.0 717
-718 0.00182104110717773 0.0 0.0 0.0 718
-719 0.0017399787902832 0.0 0.0 0.0 719
-720 0.00173497200012207 0.0 0.0 0.0 720
-721 0.00173783302307129 0.0 0.0 0.0 721
-722 0.0017399787902832 0.00999999999999801 0.00999999999999801 0.0 722
-723 0.00175285339355469 0.0 0.0 0.0 723
-724 0.00173282623291016 0.0 0.0 0.0 724
-725 0.00175213813781738 0.0 0.0 0.0 725
-726 0.00174498558044434 0.0 0.0 0.0 726
-727 0.00174093246459961 0.0 0.0 0.0 727
-728 0.00177121162414551 0.0100000000000016 0.0100000000000016 0.0 728
-729 0.00174903869628906 0.0 0.0 0.0 729
-730 0.00175690650939941 0.0 0.0 0.0 730
-731 0.00173711776733398 0.0 0.0 0.0 731
-732 0.0017399787902832 0.0 0.0 0.0 732
-733 0.00176596641540527 0.00999999999999801 0.00999999999999801 0.0 733
-734 0.00175619125366211 0.0 0.0 0.0 734
-735 0.00173687934875488 0.0 0.0 0.0 735
-736 0.00176000595092773 0.0 0.0 0.0 736
-737 0.00175714492797852 0.0 0.0 0.0 737
-738 0.00174689292907715 0.0 0.0 0.0 738
-739 0.00174689292907715 0.0100000000000016 0.0100000000000016 0.0 739
-740 0.00175309181213379 0.0 0.0 0.0 740
-741 0.00175189971923828 0.0 0.0 0.0 741
-742 0.00175881385803223 0.0 0.0 0.0 742
-743 0.00175189971923828 0.0 0.0 0.0 743
-744 0.00178813934326172 0.00999999999999801 0.00999999999999801 0.0 744
-745 0.00172710418701172 0.0 0.0 0.0 745
-746 0.00175690650939941 0.0 0.0 0.0 746
-747 0.0253231525421143 0.0200000000000031 0.0200000000000031 0.0 747
-748 0.00182986259460449 0.00999999999999801 0.00999999999999801 0.0 748
-749 0.00179004669189453 0.0 0.0 0.0 749
-750 0.00179314613342285 0.0 0.0 0.0 750
-751 0.00178098678588867 0.0 0.0 0.0 751
-752 0.00178003311157227 0.0 0.0 0.0 752
-753 0.00176811218261719 0.0100000000000016 0.0100000000000016 0.0 753
-754 0.00174283981323242 0.0 0.0 0.0 754
-755 0.00176811218261719 0.0 0.0 0.0 755
-756 0.00175881385803223 0.0 0.0 0.0 756
-757 0.00174784660339355 0.0 0.0 0.0 757
-758 0.00175905227661133 0.0 0.0 0.0 758
-759 0.00177812576293945 0.00999999999999801 0.00999999999999801 0.0 759
-760 0.00174689292907715 0.0 0.0 0.0 760
-761 0.00183987617492676 0.0 0.0 0.0 761
-762 0.0017549991607666 0.0 0.0 0.0 762
-763 0.00175786018371582 0.0 0.0 0.0 763
-764 0.00175380706787109 0.0100000000000016 0.0100000000000016 0.0 764
-765 0.00176501274108887 0.0 0.0 0.0 765
-766 0.00175690650939941 0.0 0.0 0.0 766
-767 0.00174498558044434 0.0 0.0 0.0 767
-768 0.0017549991607666 0.0 0.0 0.0 768
-769 0.00175714492797852 0.0 0.0 0.0 769
-770 0.00176405906677246 0.00999999999999801 0.00999999999999801 0.0 770
-771 0.00174999237060547 0.0 0.0 0.0 771
-772 0.00174689292907715 0.0 0.0 0.0 772
-773 0.00174999237060547 0.0 0.0 0.0 773
-774 0.0017387866973877 0.0 0.0 0.0 774
-775 0.00175309181213379 0.0 0.0 0.0 775
-776 0.0017399787902832 0.0100000000000016 0.0100000000000016 0.0 776
-777 0.00179791450500488 0.0 0.0 0.0 777
-778 0.00174188613891602 0.0 0.0 0.0 778
-779 0.00172996520996094 0.0 0.0 0.0 779
-780 0.00173211097717285 0.0 0.0 0.0 780
-781 0.00176191329956055 0.00999999999999801 0.00999999999999801 0.0 781
-782 0.00174999237060547 0.0 0.0 0.0 782
-783 0.00173711776733398 0.0 0.0 0.0 783
-784 0.00174212455749512 0.0 0.0 0.0 784
-785 0.00317001342773438 0.0 0.0 0.0 785
-786 0.00347280502319336 0.0100000000000016 0.0100000000000016 0.0 786
-787 0.00329899787902832 0.0 0.0 0.0 787
-788 0.00238609313964844 0.0 0.0 0.0 788
-789 0.00221085548400879 0.0100000000000016 0.0100000000000016 0.0 789
-790 0.00175285339355469 0.0 0.0 0.0 790
-791 0.00175309181213379 0.0 0.0 0.0 791
-792 0.00172901153564453 0.0 0.0 0.0 792
-793 0.00179696083068848 0.0 0.0 0.0 793
-794 0.00175285339355469 0.0 0.0 0.0 794
-795 0.00173783302307129 0.00999999999999801 0.00999999999999801 0.0 795
-796 0.00177001953125 0.0 0.0 0.0 796
-797 0.00176811218261719 0.0 0.0 0.0 797
-798 0.00175595283508301 0.0 0.0 0.0 798
-799 0.0301520824432373 0.0300000000000011 0.0300000000000011 0.0 799
-800 0.00359296798706055 0.00999999999999801 0.00999999999999801 0.0 800
-801 0.00265407562255859 0.0 0.0 0.0 801
-802 0.00182509422302246 0.0 0.0 0.0 802
-803 0.00179409980773926 0.0 0.0 0.0 803
-804 0.00177407264709473 0.0 0.0 0.0 804
-805 0.00176787376403809 0.0100000000000016 0.0100000000000016 0.0 805
-806 0.00177907943725586 0.0 0.0 0.0 806
-807 0.00176310539245605 0.0 0.0 0.0 807
-808 0.00176811218261719 0.0 0.0 0.0 808
-809 0.00174808502197266 0.0 0.0 0.0 809
-810 0.00175714492797852 0.00999999999999801 0.00999999999999801 0.0 810
-811 0.00174784660339355 0.0 0.0 0.0 811
-812 0.00178885459899902 0.0 0.0 0.0 812
-813 0.00174999237060547 0.0 0.0 0.0 813
-814 0.00176811218261719 0.0 0.0 0.0 814
-815 0.00174999237060547 0.0 0.0 0.0 815
-816 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 816
-817 0.00176000595092773 0.0 0.0 0.0 817
-818 0.00177288055419922 0.0 0.0 0.0 818
-819 0.00176095962524414 0.0 0.0 0.0 819
-820 0.0017390251159668 0.0 0.0 0.0 820
-821 0.00179696083068848 0.0 0.0 0.0 821
-822 0.00174283981323242 0.0100000000000016 0.0100000000000016 0.0 822
-823 0.00174713134765625 0.0 0.0 0.0 823
-824 0.00175189971923828 0.0 0.0 0.0 824
-825 0.00175094604492188 0.0 0.0 0.0 825
-826 0.00173616409301758 0.0 0.0 0.0 826
-827 0.00174093246459961 0.00999999999999801 0.00999999999999801 0.0 827
-828 0.00174617767333984 0.0 0.0 0.0 828
-829 0.00174188613891602 0.0 0.0 0.0 829
-830 0.00173592567443848 0.0 0.0 0.0 830
-831 0.0017240047454834 0.0 0.0 0.0 831
-832 0.00176095962524414 0.0 0.0 0.0 832
-833 0.00174713134765625 0.0100000000000016 0.0100000000000016 0.0 833
-834 0.00175094604492188 0.0 0.0 0.0 834
-835 0.00173807144165039 0.0 0.0 0.0 835
-836 0.00176715850830078 0.0 0.0 0.0 836
-837 0.00174093246459961 0.0 0.0 0.0 837
-838 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 838
-839 0.00174498558044434 0.0 0.0 0.0 839
-840 0.00174689292907715 0.0 0.0 0.0 840
-841 0.00177502632141113 0.0 0.0 0.0 841
-842 0.00175309181213379 0.0 0.0 0.0 842
-843 0.00175213813781738 0.0 0.0 0.0 843
-844 0.00175905227661133 0.0100000000000016 0.0100000000000016 0.0 844
-845 0.0017249584197998 0.0 0.0 0.0 845
-846 0.00174999237060547 0.0 0.0 0.0 846
-847 0.00175309181213379 0.0 0.0 0.0 847
-848 0.00177311897277832 0.0 0.0 0.0 848
-849 0.00175309181213379 0.00999999999999801 0.00999999999999801 0.0 849
-850 0.00175595283508301 0.0 0.0 0.0 850
-851 0.0253610610961914 0.0200000000000031 0.0200000000000031 0.0 851
-852 0.0018308162689209 0.0 0.0 0.0 852
-853 0.00182509422302246 0.00999999999999801 0.00999999999999801 0.0 853
-854 0.00179100036621094 0.0 0.0 0.0 854
-855 0.0018000602722168 0.0 0.0 0.0 855
-856 0.00175809860229492 0.0 0.0 0.0 856
-857 0.00182390213012695 0.0 0.0 0.0 857
-858 0.00175285339355469 0.0100000000000016 0.0100000000000016 0.0 858
-859 0.00172996520996094 0.0 0.0 0.0 859
-860 0.00173521041870117 0.0 0.0 0.0 860
-861 0.00176787376403809 0.0 0.0 0.0 861
-862 0.00175380706787109 0.0 0.0 0.0 862
-863 0.00174999237060547 0.0 0.0 0.0 863
-864 0.00177502632141113 0.00999999999999801 0.00999999999999801 0.0 864
-865 0.0017549991607666 0.0 0.0 0.0 865
-866 0.00175905227661133 0.0 0.0 0.0 866
-867 0.00177693367004395 0.0 0.0 0.0 867
-868 0.00178217887878418 0.0 0.0 0.0 868
-869 0.00177478790283203 0.0100000000000016 0.0100000000000016 0.0 869
-870 0.00176405906677246 0.0 0.0 0.0 870
-871 0.00176191329956055 0.0 0.0 0.0 871
-872 0.00175213813781738 0.0 0.0 0.0 872
-873 0.00175690650939941 0.0 0.0 0.0 873
-874 0.00174093246459961 0.0 0.0 0.0 874
-875 0.0017399787902832 0.00999999999999801 0.00999999999999801 0.0 875
-876 0.00173616409301758 0.0 0.0 0.0 876
-877 0.00174808502197266 0.0 0.0 0.0 877
-878 0.0017390251159668 0.0 0.0 0.0 878
-879 0.00174403190612793 0.0 0.0 0.0 879
-880 0.00173091888427734 0.0 0.0 0.0 880
-881 0.00175786018371582 0.0100000000000016 0.0100000000000016 0.0 881
-882 0.00173306465148926 0.0 0.0 0.0 882
-883 0.0017399787902832 0.0 0.0 0.0 883
-884 0.00173783302307129 0.0 0.0 0.0 884
-885 0.00172281265258789 0.0 0.0 0.0 885
-886 0.00175690650939941 0.0 0.0 0.0 886
-887 0.00173497200012207 0.00999999999999801 0.00999999999999801 0.0 887
-888 0.00175094604492188 0.0 0.0 0.0 888
-889 0.00172090530395508 0.0 0.0 0.0 889
-890 0.00198698043823242 0.0 0.0 0.0 890
-891 0.00344991683959961 0.0100000000000016 0.0100000000000016 0.0 891
-892 0.00345301628112793 0.0 0.0 0.0 892
-893 0.00206422805786133 0.0 0.0 0.0 893
-894 0.00191783905029297 0.0 0.0 0.0 894
-895 0.00174188613891602 0.0 0.0 0.0 895
-896 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 896
-897 0.00175094604492188 0.0 0.0 0.0 897
-898 0.00176310539245605 0.0 0.0 0.0 898
-899 0.00176095962524414 0.0 0.0 0.0 899
-900 0.00181198120117188 0.0 0.0 0.0 900
-901 0.00175094604492188 0.00999999999999801 0.00999999999999801 0.0 901
-902 0.00177597999572754 0.0 0.0 0.0 902
-903 0.0245981216430664 0.0199999999999996 0.0199999999999996 0.0 903
-904 0.00182318687438965 0.0 0.0 0.0 904
-905 0.00179600715637207 0.0100000000000016 0.0100000000000016 0.0 905
-906 0.00179409980773926 0.0 0.0 0.0 906
-907 0.00178408622741699 0.0 0.0 0.0 907
-908 0.00177407264709473 0.0 0.0 0.0 908
-909 0.00176501274108887 0.0 0.0 0.0 909
-910 0.00176596641540527 0.0 0.0 0.0 910
-911 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 911
-912 0.00176596641540527 0.0 0.0 0.0 912
-913 0.00176501274108887 0.0 0.0 0.0 913
-914 0.00175809860229492 0.0 0.0 0.0 914
-915 0.00176405906677246 0.0 0.0 0.0 915
-916 0.00176191329956055 0.0100000000000016 0.0100000000000016 0.0 916
-917 0.00175619125366211 0.0 0.0 0.0 917
-918 0.00175690650939941 0.0 0.0 0.0 918
-919 0.00175189971923828 0.0 0.0 0.0 919
-920 0.0017540454864502 0.0 0.0 0.0 920
-921 0.0017540454864502 0.0 0.0 0.0 921
-922 0.00176119804382324 0.00999999999999801 0.00999999999999801 0.0 922
-923 0.00176095962524414 0.0 0.0 0.0 923
-924 0.00176215171813965 0.0 0.0 0.0 924
-925 0.00173592567443848 0.0 0.0 0.0 925
-926 0.00174307823181152 0.0 0.0 0.0 926
-927 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 927
-928 0.00174999237060547 0.0 0.0 0.0 928
-929 0.0017399787902832 0.0 0.0 0.0 929
-930 0.0017399787902832 0.0 0.0 0.0 930
-931 0.00177502632141113 0.0 0.0 0.0 931
-932 0.00175309181213379 0.0 0.0 0.0 932
-933 0.00174713134765625 0.0100000000000016 0.0100000000000016 0.0 933
-934 0.00172519683837891 0.0 0.0 0.0 934
-935 0.00182008743286133 0.0 0.0 0.0 935
-936 0.00175094604492188 0.0 0.0 0.0 936
-937 0.00175213813781738 0.0 0.0 0.0 937
-938 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 938
-939 0.00175881385803223 0.0 0.0 0.0 939
-940 0.00176215171813965 0.0 0.0 0.0 940
-941 0.00270485877990723 0.0 0.0 0.0 941
-942 0.00175213813781738 0.0 0.0 0.0 942
-943 0.0017399787902832 0.0100000000000016 0.0100000000000016 0.0 943
-944 0.00174307823181152 0.0 0.0 0.0 944
-945 0.00173497200012207 0.0 0.0 0.0 945
-946 0.00174999237060547 0.0 0.0 0.0 946
-947 0.00175690650939941 0.0 0.0 0.0 947
-948 0.00176095962524414 0.0 0.0 0.0 948
-949 0.00173807144165039 0.00999999999999801 0.00999999999999801 0.0 949
-950 0.00175690650939941 0.0 0.0 0.0 950
-951 0.0017390251159668 0.0 0.0 0.0 951
-952 0.00178313255310059 0.0 0.0 0.0 952
-953 0.00176692008972168 0.0 0.0 0.0 953
-954 0.00176501274108887 0.0 0.0 0.0 954
-955 0.0254151821136475 0.0199999999999996 0.0199999999999996 0.0 955
-956 0.0018460750579834 0.0 0.0 0.0 956
-957 0.00177717208862305 0.0 0.0 0.0 957
-958 0.00177192687988281 0.0100000000000016 0.0100000000000016 0.0 958
-959 0.00177407264709473 0.0 0.0 0.0 959
-960 0.00177311897277832 0.0 0.0 0.0 960
-961 0.00176906585693359 0.0 0.0 0.0 961
-962 0.00176501274108887 0.0 0.0 0.0 962
-963 0.00174212455749512 0.00999999999999801 0.00999999999999801 0.0 963
-964 0.00176310539245605 0.0 0.0 0.0 964
-965 0.00176095962524414 0.0 0.0 0.0 965
-966 0.00175905227661133 0.0 0.0 0.0 966
-967 0.00174999237060547 0.0 0.0 0.0 967
-968 0.00176811218261719 0.0 0.0 0.0 968
-969 0.00175189971923828 0.0100000000000016 0.0100000000000016 0.0 969
-970 0.00194287300109863 0.0 0.0 0.0 970
-971 0.0017540454864502 0.0 0.0 0.0 971
-972 0.0019228458404541 0.0 0.0 0.0 972
-973 0.00176405906677246 0.0 0.0 0.0 973
-974 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 974
-975 0.00176310539245605 0.0 0.0 0.0 975
-976 0.00173807144165039 0.0 0.0 0.0 976
-977 0.00182604789733887 0.0 0.0 0.0 977
-978 0.0017399787902832 0.0 0.0 0.0 978
-979 0.0017540454864502 0.0 0.0 0.0 979
-980 0.0017697811126709 0.0100000000000016 0.0100000000000016 0.0 980
-981 0.0017390251159668 0.0 0.0 0.0 981
-982 0.00175285339355469 0.0 0.0 0.0 982
-983 0.00174880027770996 0.0 0.0 0.0 983
-984 0.00176095962524414 0.0 0.0 0.0 984
-985 0.00176501274108887 0.00999999999999801 0.00999999999999801 0.0 985
-986 0.00175094604492188 0.0 0.0 0.0 986
-987 0.0017390251159668 0.0 0.0 0.0 987
-988 0.00174808502197266 0.0 0.0 0.0 988
-989 0.0017540454864502 0.0 0.0 0.0 989
-990 0.00174307823181152 0.0 0.0 0.0 990
-991 0.00172710418701172 0.0100000000000016 0.0100000000000016 0.0 991
-992 0.00177597999572754 0.0 0.0 0.0 992
-993 0.00174903869628906 0.0 0.0 0.0 993
-994 0.0017402172088623 0.0 0.0 0.0 994
-995 0.00173187255859375 0.0 0.0 0.0 995
-996 0.00175690650939941 0.0 0.0 0.0 996
-997 0.00175213813781738 0.00999999999999801 0.00999999999999801 0.0 997
-998 0.0017549991607666 0.0 0.0 0.0 998
-999 0.00175094604492188 0.0 0.0 0.0 999
-1000 0.00175905227661133 0.0 0.0 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log
deleted file mode 100644
index 47b0c7fa8..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log
+++ /dev/null
@@ -1,261 +0,0 @@
-========================== 2009-04-01T16:53:42 CEST ===========================
-Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux].
-Running 'GeneratorBenchmarkExt' for 1000 iterations/method (compare_time=real)
-===============================================================================
-
-This first run is only for warmup.
-GeneratorBenchmarkExt#generator_fast:
- real total user system
-sum 1.818191528 1.840000000 1.830000000 0.010000000
-min 0.001368999 0.000000000 0.000000000 0.000000000
-std- -0.000870656 -0.002702580 -0.002705600 -0.000306228
-mean 0.001818192 0.001840000 0.001830000 0.000010000
-std+ 0.004507039 0.006382580 0.006365600 0.000326228
-max 0.026389122 0.030000000 0.030000000 0.010000000
-std 0.002688848 0.004542580 0.004535600 0.000316228
-std% 147.885830391 246.879359662 247.847020509 3162.277660168
-harm 0.001475231 nan nan nan
-geo 0.001529059 0.000000000 0.000000000 0.000000000
-q1 0.001397133 0.000000000 0.000000000 0.000000000
-med 0.001406908 0.000000000 0.000000000 0.000000000
-q3 0.001425028 0.000000000 0.000000000 0.000000000
- 1000 549.99706 0.001818192
- calls calls/sec secs/call
-
- 0.02514 -|
- 0.02264 -|*
- 0.02013 -|
- 0.01763 -|
- 0.01513 -|
- 0.01263 -|
- 0.01013 -|
- 0.00762 -|
- 0.00512 -|
- 0.00262 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00141, iqr=0.00003, factor=3.00):
-high=63 very_high=132
-
-Ljung-Box statistics: q=15.00353 (alpha=0.05, df=50).
-0.00000 < 0.95000 => No autocorrelation was detected.
-
-GeneratorBenchmarkExt#generator_fast:
- real total user system
-sum 1.826970100 1.830000000 1.820000000 0.010000000
-min 0.001377106 0.000000000 0.000000000 0.000000000
-std- -0.000992693 -0.002749527 -0.002708588 -0.000306228
-mean 0.001826970 0.001830000 0.001820000 0.000010000
-std+ 0.004646633 0.006409527 0.006348588 0.000326228
-max 0.027617931 0.030000000 0.030000000 0.010000000
-std 0.002819663 0.004579527 0.004528588 0.000316228
-std% 154.335471491 250.247404066 248.823509412 3162.277660168
-harm 0.001469225 nan nan nan
-geo 0.001522946 0.000000000 0.000000000 0.000000000
-q1 0.001402140 0.000000000 0.000000000 0.000000000
-med 0.001411915 0.000000000 0.000000000 0.000000000
-q3 0.001425982 0.000000000 0.000000000 0.000000000
- 1000 547.35433 0.001826970
- calls calls/sec secs/call
-
- 0.02631 -|
- 0.02368 -|*
- 0.02106 -|
- 0.01843 -|
- 0.01581 -|
- 0.01319 -|
- 0.01056 -|
- 0.00794 -|
- 0.00531 -|
- 0.00269 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00141, iqr=0.00002, factor=3.00):
-high=84 very_high=91
-
-Ljung-Box statistics: q=13.47105 (alpha=0.05, df=50).
-0.00000 < 0.95000 => No autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
--------------------------------------------------------------------------------
-
-This first run is only for warmup.
-GeneratorBenchmarkExt#generator_pretty:
- real total user system
-sum 2.625656843 2.590000000 2.580000000 0.010000000
-min 0.002025127 0.000000000 0.000000000 0.000000000
-std- -0.000656844 -0.002684440 -0.002689855 -0.000306228
-mean 0.002625657 0.002590000 0.002580000 0.000010000
-std+ 0.005908158 0.007864440 0.007849855 0.000326228
-max 0.028638124 0.030000000 0.030000000 0.010000000
-std 0.003282501 0.005274440 0.005269855 0.000316228
-std% 125.016381076 203.646340853 204.257944451 3162.277660168
-harm 0.002154247 nan nan nan
-geo 0.002239052 0.000000000 0.000000000 0.000000000
-q1 0.002051830 0.000000000 0.000000000 0.000000000
-med 0.002062082 0.000000000 0.000000000 0.000000000
-q3 0.002082050 0.000000000 0.000000000 0.000000000
- 1000 380.85708 0.002625657
- calls calls/sec secs/call
-
- 0.02731 -|
- 0.02465 -|*
- 0.02198 -|
- 0.01932 -|
- 0.01666 -|
- 0.01400 -|
- 0.01134 -|
- 0.00868 -|
- 0.00602 -|
- 0.00336 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00206, iqr=0.00003, factor=3.00):
-high=98 very_high=107
-
-Ljung-Box statistics: q=349.53704 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-GeneratorBenchmarkExt#generator_pretty:
- real total user system
-sum 2.399331093 2.360000000 2.360000000 0.000000000
-min 0.002033949 0.000000000 0.000000000 0.000000000
-std- -0.000767217 -0.002736080 -0.002736080 0.000000000
-mean 0.002665923 0.002622222 0.002622222 0.000000000
-std+ 0.006099064 0.007980525 0.007980525 0.000000000
-max 0.029814005 0.030000000 0.030000000 0.000000000
-std 0.003433140 0.005358303 0.005358303 0.000000000
-std% 128.778658745 204.342051806 204.342051806 nan
-harm 0.002164550 nan nan nan
-geo 0.002253865 0.000000000 0.000000000 0.000000000
-q1 0.002059937 0.000000000 0.000000000 0.000000000
-med 0.002071142 0.000000000 0.000000000 0.000000000
-q3 0.002090931 0.000000000 0.000000000 0.000000000
- 900 375.10455 0.002665923
- calls calls/sec secs/call
-
- 0.02843 -|
- 0.02565 -|*
- 0.02287 -|
- 0.02009 -|
- 0.01731 -|
- 0.01453 -|
- 0.01176 -|
- 0.00898 -|
- 0.00620 -|
- 0.00342 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00207, iqr=0.00003, factor=3.00):
-high=89 very_high=86
-
-Ljung-Box statistics: q=342.52637 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-Truncated initial 100 measurements: 1000 -> 900 (-10.00%).
--------------------------------------------------------------------------------
-
-This first run is only for warmup.
-GeneratorBenchmarkExt#generator_safe:
- real total user system
-sum 2.218419790 2.210000000 2.210000000 0.000000000
-min 0.001708984 0.000000000 0.000000000 0.000000000
-std- -0.000607850 -0.002484458 -0.002484458 0.000000000
-mean 0.002218420 0.002210000 0.002210000 0.000000000
-std+ 0.005044690 0.006904458 0.006904458 0.000000000
-max 0.026993036 0.030000000 0.030000000 0.000000000
-std 0.002826270 0.004694458 0.004694458 0.000000000
-std% 127.400134370 212.418923782 212.418923782 nan
-harm 0.001839661 nan nan nan
-geo 0.001909029 0.000000000 0.000000000 0.000000000
-q1 0.001738071 0.000000000 0.000000000 0.000000000
-med 0.001749992 0.000000000 0.000000000 0.000000000
-q3 0.001769066 0.000000000 0.000000000 0.000000000
- 1000 450.77131 0.002218420
- calls calls/sec secs/call
-
- 0.02573 -|
- 0.02320 -|
- 0.02067 -|
- 0.01814 -|
- 0.01562 -|
- 0.01309 -|
- 0.01056 -|
- 0.00803 -|
- 0.00550 -|
- 0.00297 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00175, iqr=0.00003, factor=3.00):
-high=58 very_high=129
-
-Ljung-Box statistics: q=24.03262 (alpha=0.05, df=50).
-0.00070 < 0.95000 => No autocorrelation was detected.
-
-GeneratorBenchmarkExt#generator_safe:
- real total user system
-sum 2.252413511 2.250000000 2.250000000 0.000000000
-min 0.001720905 0.000000000 0.000000000 0.000000000
-std- -0.000940042 -0.002634809 -0.002634809 0.000000000
-mean 0.002252414 0.002250000 0.002250000 0.000000000
-std+ 0.005444869 0.007134809 0.007134809 0.000000000
-max 0.030152082 0.030000000 0.030000000 0.000000000
-std 0.003192455 0.004884809 0.004884809 0.000000000
-std% 141.734856492 217.102633117 217.102633117 nan
-harm 0.001827244 nan nan nan
-geo 0.001895755 0.000000000 0.000000000 0.000000000
-q1 0.001747131 0.000000000 0.000000000 0.000000000
-med 0.001757145 0.000000000 0.000000000 0.000000000
-q3 0.001773119 0.000000000 0.000000000 0.000000000
- 1000 443.96821 0.002252414
- calls calls/sec secs/call
-
- 0.02873 -|
- 0.02589 -|*
- 0.02304 -|
- 0.02020 -|
- 0.01736 -|
- 0.01451 -|
- 0.01167 -|
- 0.00883 -|
- 0.00599 -|
- 0.00314 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00176, iqr=0.00003, factor=3.00):
-high=92 very_high=86
-
-Ljung-Box statistics: q=19.23732 (alpha=0.05, df=50).
-0.00003 < 0.95000 => No autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
-========================== 2009-04-01T16:54:07 CEST ===========================
-
-Comparing times (call_time_mean):
- 1 GeneratorBenchmarkExt#generator_fast 1000 repeats:
- 547.354332608 ( real) -> 1.459x
- 0.001826970
- 2 GeneratorBenchmarkExt#generator_safe 1000 repeats:
- 443.968212317 ( real) -> 1.184x
- 0.002252414
- 3 GeneratorBenchmarkExt#generator_pretty 900 repeats:
- 375.104545883 ( real) -> 1.000x
- 0.002665923
- calls/sec ( time) -> speed covers
- secs/call
-
-Comparing times (call_time_median):
- 1 GeneratorBenchmarkExt#generator_fast 1000 repeats:
- 708.258020939 ( real) -> 1.467x
- 0.001411915
- 2 GeneratorBenchmarkExt#generator_safe 1000 repeats:
- 569.105020353 ( real) -> 1.179x
- 0.001757145
- 3 GeneratorBenchmarkExt#generator_pretty 900 repeats:
- 482.825371244 ( real) -> 1.000x
- 0.002071142
- calls/sec ( time) -> speed covers
- secs/call
-===============================================================================
-Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_fast.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat'.
-Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_pretty.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat'.
-Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_safe.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat'.
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat
deleted file mode 100644
index 39516bce4..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.170725652741942
-3 -0.173770301666704
-4 -0.172897166156851
-5 -0.168221269286136
-6 -0.177979259169647
-7 0.175910550703494
-8 0.631061265876843
-9 -0.174719948437131
-10 -0.177293593621048
-11 -0.162698942321747
-12 -0.171029777522503
-13 -0.170296229667321
-14 0.528563135577363
-15 0.275831998572987
-16 -0.174813658667011
-17 -0.172093562954041
-18 -0.168544068156987
-19 -0.166590813818547
-20 -0.0638221070309873
-21 0.650522478992019
-22 0.0331509662336747
-23 -0.168760953941647
-24 -0.16341752594627
-25 -0.170818893187341
-26 -0.164732529292879
-27 0.162214061245849
-28 0.522886471249678
-29 -0.0702164490631389
-30 -0.170342702198113
-31 -0.161403416617991
-32 -0.166099481459981
-33 -0.11599356123736
-34 0.35515929301799
-35 0.320772083044373
-36 -0.117685112181583
-37 -0.169070189028916
-38 -0.159958239256153
-39 -0.159435335479438
-40 0.0319527022003592
-41 0.371475859420178
-42 0.175271663512744
-43 -0.138959890894007
-44 -0.163896984335847
-45 -0.169727435298396
-46 -0.13197665874304
-47 0.187359182943715
-48 0.291819477747683
-49 0.0816643898170594
-50 -0.150240775423654
-51 -0.150195661024305
-52 -0.165928012119222
-53 -0.0320978556096035
-54 0.221655302405546
-55 0.235675757438344
-56 0.0104091592019151
-57 -0.167146434535141
-58 -0.155117513175394
-59 -0.149297587622335
-60 0.0872938227826692
-61 0.203748825546551
-62 0.168550083168428
-63 -0.0396707902562578
-64 -0.158563031820387
-65 -0.159836689037633
-66 -0.0768666234623447
-67 0.148975157851596
-68 0.145123374753783
-69 0.133851392533958
-70 -0.0813691125651875
-71 -0.161000844437348
-72 -0.154719980109192
-73 0.0319631482416382
-74 0.130803526405489
-75 0.134803263091346
-76 0.0725284180216342
-77 -0.105199055037918
-78 -0.156074876537289
-79 -0.107946871185683
-80 0.0836764513383004
-81 0.114802110172454
-82 0.120184125868115
-83 0.0219557508902663
-84 -0.126340081403489
-85 -0.161799956489859
-86 -0.0125672540754974
-87 0.0971048482927368
-88 0.0787545812186751
-89 0.0948238873807684
-90 0.000719292583179628
-91 -0.14238726433046
-92 -0.123547942883664
-93 0.045691368088177
-94 0.0816329437452033
-95 0.0514248553628602
-96 0.079680652824934
-97 -0.0425865734879474
-98 -0.149657706603128
-99 -0.0482568721456359
-100 0.0598246932377812
-101 0.0730073630022969
-102 0.0493194581087269
-103 0.0614638905886062
-104 -0.0747784996077696
-105 -0.134762851026629
-106 0.0150375208487961
-107 0.0471753592749379
-108 0.0292261702954045
-109 0.0584126489508255
-110 0.0274065618881429
-111 -0.0923629805791867
-112 -0.0808051188610178
-113 0.0376068323578018
-114 0.0442243395389739
-115 0.0126091810820727
-116 0.0555017080552345
-117 -0.00777360178104387
-118 -0.0945093162279043
-119 -0.022038518955775
-120 0.0281685224822615
-121 0.0360696788220002
-122 0.00713767841566683
-123 0.0421452289712879
-124 -0.0237791430411877
-125 -0.0742603410791366
-126 0.00647409977150723
-127 0.023633020622411
-128 0.0112812718354579
-129 0.0206308476010651
-130 0.0255893471032846
-131 -0.0412520741546623
-132 -0.0335271150442982
-133 0.0103042519486441
-134 0.0216752613460992
-135 -0.0178133510217017
-136 0.0272498700028734
-137 0.016136487618036
-138 -0.0397127191558659
-139 0.000486023489007977
-140 0.00602879598312952
-141 0.0137117482424303
-142 -0.0239000113030396
-143 0.0256815555012877
-144 -0.00060378060179975
-145 -0.00976477458386044
-146 -0.00471952290156136
-147 0.00287226670988194
-148 -0.00739404113874663
-149 -0.00811924231656889
-150 0.0201609109752059
-151 0.00972768702895235
-152 0.000848772862832347
-153 -0.00315419376588145
-154 0.00325411212387319
-155 -0.0317897669469223
-156 0.00942578451848677
-157 -0.00114487370622857
-158 0.0316193613529631
-159 -0.0029035071383654
-160 -0.00961310004099253
-161 -0.00376402041194372
-162 -0.0304203576913082
-163 0.0040586071587507
-164 0.0181183011617105
-165 0.0289277830257262
-166 -0.00204748582187099
-167 -0.00833532939960483
-168 -0.0179545373314343
-169 -0.0281067596140224
-170 0.00621739022305282
-171 0.020061720611003
-172 0.0441951153685219
-173 -0.016767863675634
-174 -0.00891142478547904
-175 -0.034295757242845
-176 -0.016919846890981
-177 0.00444867679830856
-178 0.057088732705068
-179 0.01772144393744
-180 -0.0115305384915719
-181 -0.0214068916539082
-182 -0.0361142387382199
-183 -0.013268832313842
-184 0.010553526981677
-185 0.0641530212355029
-186 0.00531141736458679
-187 -0.0129434128279975
-188 -0.0288767748585849
-189 -0.0325395473006688
-190 -0.013236712565576
-191 0.0408115115996002
-192 0.0564202212852658
-193 -0.00419580869937261
-194 -0.0240043584548271
-195 -0.0410661026884763
-196 -0.0308430649531645
-197 -0.00193671234656414
-198 0.0574028584211738
-199 0.0464705207875104
-200 0.00131591241415564
-201 -0.0376248928893234
-202 -0.03907610654102
-203 -0.0270477565328025
-204 0.0208038841462715
-205 0.0713903559954449
-206 0.0172971300646441
-207 -0.0158722320069745
-208 -0.0368888763339713
-209 -0.0453718730430625
-210 -0.0217822862730174
-211 0.0539702430257461
-212 0.0523602401531812
-213 0.0209143114178913
-214 -0.0355801431609542
-215 -0.0377942204568278
-216 -0.0425711559012913
-217 -0.00707645512821953
-218 0.0728667936636181
-219 0.0361207184120543
-220 0.0128571335027956
-221 -0.0500603421741668
-222 -0.0391402365626237
-223 -0.0338696993621202
-224 0.0225822360602949
-225 0.0582954334884232
-226 0.0343772287798159
-227 0.000189606884889642
-228 -0.0526391089870516
-229 -0.0433107479511685
-230 -0.0222872074614468
-231 0.0506022312295133
-232 0.0475294709603697
-233 0.033409950599465
-234 -0.0396552908405006
-235 -0.0416731652109144
-236 -0.0376644416284466
-237 -0.0120295884760736
-238 0.0667676774080548
-239 0.0397241548411963
-240 0.0242686882994478
-241 -0.0511926472771689
-242 -0.0406717091383664
-243 -0.0294526606762824
-244 0.0122100601151817
-245 0.0582087173478016
-246 0.0279608706883549
-247 0.00958023333135808
-248 -0.0607734282446654
-249 -0.0326785608605117
-250 -0.0170207233666544
-251 0.0461938078567918
-252 0.0336445218462931
-253 0.0452208779230127
-254 -0.0303944318761255
-255 -0.0494219498376225
-256 -0.0318543144076625
-257 -0.00927701052965794
-258 0.0537742147750351
-259 0.0349392754231259
-260 0.0230828975637977
-261 -0.0377907249695523
-262 -0.0429055961196646
-263 -0.017728080300272
-264 0.000424042692478759
-265 0.0472551057914617
-266 0.0405778077745205
-267 -0.00156836352007451
-268 -0.0419460412931724
-269 -0.0345431630170736
-270 -0.0143420878981143
-271 0.0187023906658354
-272 0.0418900285241672
-273 0.0405074017275708
-274 -0.0190108947516174
-275 -0.0546041853190452
-276 -0.0171268537791246
-277 -0.0128446606789693
-278 0.0395381045567008
-279 0.0310776255240069
-280 0.0407363391562478
-281 -0.033091514570131
-282 -0.0503175108683564
-283 -0.022772349202314
-284 0.00530849685544454
-285 0.0324464330192744
-286 0.0465351961365909
-287 -0.00328476076139341
-288 -0.0300758395541426
-289 -0.0371777756744481
-290 -0.00431509980873169
-291 0.00608435003025785
-292 0.037638330575397
-293 0.0407716145244858
-294 -0.0176308532927816
-295 -0.0455722533058368
-296 -0.0254868606225217
-297 -0.00176448336443634
-298 0.015401834338667
-299 0.0470736363973921
-300 0.0286385461989055
-301 -0.02407787658874
-302 -0.0462179062100874
-303 -0.00954285257082467
-304 0.00223496307580496
-305 0.019441609399508
-306 0.0376394897901893
-307 0.0152437430866642
-308 -0.0312285316173427
-309 -0.0450095093247238
-310 0.00405494429487151
-311 -0.000906366188112425
-312 0.0342390932524035
-313 0.0351096044622525
-314 -0.0067200598875223
-315 -0.0344931951944617
-316 -0.0250051604191116
-317 -0.0079099140627721
-318 0.0136877534761663
-319 0.0470111495216969
-320 0.004066298860697
-321 -0.0106091011767897
-322 -0.035535335618417
-323 -0.00900628798721377
-324 -0.00437923810369414
-325 0.0183021198298254
-326 0.031707051659253
-327 0.0156128127338416
-328 -0.0272783407707802
-329 -0.036001647799748
-330 0.00528671926612521
-331 -0.000290217242915226
-332 0.0353019065669182
-333 0.00464723527656522
-334 0.00460168685380347
-335 -0.0215595994261557
-336 -0.0299493415452654
-337 -0.0034698093249361
-338 0.0165266322772037
-339 0.0315139059204056
-340 0.00362648192318334
-341 -0.00491801854061831
-342 -0.0231228284017189
-343 -0.0113129015126025
-344 -0.00300665710172655
-345 0.0130130997144332
-346 0.0223950145161189
-347 0.00202583064367953
-348 -0.0102668124711821
-349 -0.0253546874115718
-350 0.00644442693633731
-351 0.000780453480952724
-352 0.0284887918984724
-353 -0.00595281685205509
-354 0.0120132555793013
-355 -0.0181922031950026
-356 -0.0248881070928514
-357 -0.00242385809089605
-358 0.0194092079332272
-359 0.0144215071404531
-360 0.00612726395169545
-361 -0.00573485213524349
-362 -0.0117678537517965
-363 -0.0132866019915077
-364 -0.00168434348341747
-365 0.0210258042234829
-366 0.00299710982573773
-367 7.02933284912932e-05
-368 -0.00141527364094497
-369 -0.0174837658027455
-370 -0.00530972905386562
-371 0.00289284688712308
-372 0.0269088067868297
-373 -0.00857711045394559
-374 0.000634286012527533
-375 -0.00732827217084004
-376 -0.0129999392900683
-377 -0.00620543176764517
-378 0.0219005305671357
-379 0.00951579849769713
-380 -0.00156577259219444
-381 0.00334210346592974
-382 -0.0168913201522477
-383 -0.0140750807027531
-384 0.0026387459171992
-385 0.0167243976144324
-386 0.000401824368635554
-387 0.00494540377378665
-388 -0.0079650110757071
-389 -0.000153543070488744
-390 -0.0157596554184165
-391 0.00960203655959764
-392 0.0194333180320067
-393 -0.00698081626697105
-394 -0.00616259455878436
-395 -0.00885431917148208
-396 -0.000823472402578178
-397 -0.014306329807885
-398 0.0323044170275812
-399 -0.00116363767533424
-400 -0.00613094977576676
-401 0.00681272285172057
-402 -0.0120741370386856
-403 -0.00393525989936848
-404 0.00143625779594446
-405 0.0112941876899105
-406 0.00621416024416119
-407 -0.00715834709108978
-408 0.00349330341606058
-409 -0.0134328785266322
-410 -0.00983212957457947
-411 0.0170214269071715
-412 0.00768534801684557
-413 -0.00433253762066253
-414 0.00328760101068126
-415 -0.011902725027492
-416 0.0037433377806999
-417 -0.016429583975757
-418 0.0253614932452271
-419 0.00105507602999118
-420 -0.00501259523808327
-421 -0.0068805657075317
-422 -0.00611319813056072
-423 0.00133925647011242
-424 0.000593265112355031
-425 0.00636014210120566
-426 0.0100866038838847
-427 -0.0104562933845484
-428 -0.000506041760930212
-429 -0.003202190801565
-430 -0.00228403340255738
-431 0.00854908376124406
-432 0.00387003653786829
-433 -0.00478285696403202
-434 -0.00768626474153872
-435 0.00703888513154693
-436 -0.00944179389034701
-437 -0.001876043961929
-438 0.0164444486588937
-439 0.00420632904477211
-440 -0.0113129379390227
-441 -0.00359559614450257
-442 -0.00109952765661056
-443 0.0151360003108556
-444 -0.0154475593718288
-445 0.00602211025479499
-446 -0.000307234590538632
-447 0.0046588142745641
-448 -0.0126455787204799
-449 0.0111520432278555
-450 0.00974700164306953
-451 -0.0123611400743472
-452 0.0108946760123822
-453 -0.00120669950156729
-454 -0.0150988572259806
-455 0.00502353890121031
-456 0.00408149023215052
-457 0.00586521360666165
-458 -0.0102923932626118
-459 0.00382025608487933
-460 0.00255550573549941
-461 -0.00783828310549662
-462 0.00508824500063238
-463 0.0084446428666135
-464 -0.00872612495616409
-465 -0.0010875359595666
-466 0.00346175022973811
-467 -0.00495327642022978
-468 0.00325169084183052
-469 -0.00463312556182376
-470 0.0118854909647327
-471 -0.0171003407134582
-472 0.0123260637207544
-473 -0.00447510748083252
-474 -0.00707845418496072
-475 0.00755386113965643
-476 -0.00100076346057804
-477 0.00860719536195919
-478 -0.0136737162109966
-479 0.00711613796353955
-480 0.00622875998269613
-481 -0.0117802696216559
-482 0.00817288034030646
-483 -0.00010669129241017
-484 -0.00352870547469094
-485 -0.0041443261121201
-486 -0.000910571304832122
-487 0.00615718849758809
-488 0.00143910833275321
-489 -0.00107559220444337
-490 0.00356082962826646
-491 -0.00897791292059391
-492 0.00527546492556289
-493 0.00302276031439837
-494 -0.0139577905696164
-495 0.0153490659756607
-496 -0.00912850078466119
-497 0.000879808460620783
-498 0.000984936175184538
-499 0.0024123778693579
-500 0.00264304134465302
-501 -0.0020232636751576
-502 0.00551353717784557
-503 -0.00415080354514971
-504 -0.00545916667181435
-505 -0.00274028317951399
-506 0.00692379605051298
-507 0.00616679327772537
-508 -0.0103279571217553
-509 0.00599342336739776
-510 -0.00152316676140798
-511 -0.00167286162288039
-512 -0.00131993101685522
-513 0.0025282491153862
-514 -0.0017542373384818
-515 0.0105600742581342
-516 -0.0132267654750864
-517 0.00283731663919629
-518 -0.00266741199361332
-519 0.00157444027950648
-520 0.00420858755299597
-521 -0.00658258017129261
-522 0.00508600113202915
-523 -0.00598002733029911
-524 -0.000368464512649264
-525 0.00317302663744126
-526 0.00115765014094958
-527 0.00267985546857361
-528 -5.46265185716715e-05
-529 -0.0020009411803283
-530 0.00486700543717424
-531 -0.00895876165620023
-532 -0.00299164146372051
-533 0.00312859041046786
-534 0.00209406747343818
-535 0.00673942768658441
-536 -0.0080409196789959
-537 0.00240456617470404
-538 -0.00873512083231826
-539 0.0131577627923678
-540 -0.00665539290143677
-541 0.00346454545303284
-542 0.0035973446316873
-543 -0.00868085967804022
-544 -0.00333236624454644
-545 -0.000196442609818114
-546 0.00024806978901623
-547 0.00902390850008458
-548 0.00455805912058593
-549 -0.0021927440377309
-550 -0.00266277815142354
-551 -0.00688313353751191
-552 0.00853131376210095
-553 -0.00393842096864295
-554 -0.00523274211550968
-555 0.0169329221829408
-556 -0.0127945093367028
-557 -0.00072480763790979
-558 -0.00747843149724429
-559 0.0098746166146274
-560 -0.00240342067223121
-561 0.00696610332249864
-562 -0.00223635183687814
-563 -0.00541969587447053
-564 0.000337137313027405
-565 -0.00633065126280832
-566 0.00910870585819199
-567 -0.00455095051161683
-568 0.0151312578540391
-569 -0.0138690307629985
-570 0.00185264574846404
-571 -0.00664259858046173
-572 -0.00312306915210339
-573 0.0115985176835154
-574 -0.00759201236341693
-575 0.0123033300962974
-576 -0.0116628565174072
-577 0.00192424927530433
-578 -0.00508184861795511
-579 0.00510239186439487
-580 0.0086553620645795
-581 -0.00172738282515301
-582 -0.0021965366527628
-583 -0.00611685505872929
-584 -0.00193581230608064
-585 -0.00107517411193112
-586 0.00446964598329358
-587 -0.000130069247618965
-588 0.0106723190798826
-589 -0.00893242845988889
-590 -0.00281814645132135
-591 -0.00320913741145263
-592 0.00122039092287541
-593 0.0131068648072679
-594 -0.0156363425833423
-595 0.0163402377490577
-596 -0.0178296060018707
-597 0.00292057772226031
-598 0.0026057160047535
-599 -0.0056620372273394
-600 0.0221246161887441
-601 -0.0124193991673087
-602 0.0116954284234103
-603 -0.0182733365810819
-604 0.00268681939875375
-605 0.000740456981363333
-606 0.00452604181556726
-607 0.00480547630796285
-608 -0.00481203219844089
-609 -0.00358228345456814
-610 0.00284875874479068
-611 -0.00700099168490112
-612 0.00572849008389633
-613 0.0009937821532389
-614 0.00731073451366145
-615 0.00170654591193711
-616 -0.0139804622453969
-617 -0.00443468421233479
-618 0.00531823173567082
-619 -0.00198161915266415
-620 0.0150254959665873
-621 -0.00831801965928389
-622 0.00172646514060601
-623 -0.00862060723221882
-624 -0.00433533060780036
-625 0.00756501714009114
-626 -0.00135836313194754
-627 0.00932877978173298
-628 0.00124802151466854
-629 -0.00395113636252646
-630 -0.00485990513214748
-631 -0.00663176926963557
-632 -0.0010820412567438
-633 0.0133592195871343
-634 -0.00141240259407419
-635 0.00139234037081884
-636 -0.00360777343366459
-637 -0.0045878817789227
-638 -0.00220204565644013
-639 0.00147686629423844
-640 0.00543470252168979
-641 0.0105896351713388
-642 -0.00973902671101576
-643 -0.00668023801257986
-644 -0.00936843265363968
-645 0.0089634651091583
-646 3.84562452729655e-05
-647 0.00384580055961138
-648 0.0229816090537144
-649 -0.0184332961015907
-650 -0.00529759065480934
-651 -0.0066870495503683
-652 0.00225769689469144
-653 0.0102460370689819
-654 0.00338482338024052
-655 0.00379747442016746
-656 -0.00712302572663179
-657 -0.0114322113895202
-658 -0.00273386445516078
-659 0.00553489607050495
-660 0.00837690540674999
-661 0.00940739102513669
-662 -0.0053486413343748
-663 -0.00315193594161813
-664 -0.0105647918156018
-665 -0.00691297631409873
-666 0.0142090509210798
-667 -0.000975698964492755
-668 0.0132255885174397
-669 -0.00325960303321359
-670 -0.006651275593499
-671 -0.0192763045572716
-672 0.00410496738893783
-673 0.00865425824492816
-674 0.0074519049626705
-675 0.00640440261542484
-676 -0.00248884860489984
-677 -0.0175933146891799
-678 -0.00288003343042402
-679 0.00834623453163345
-680 -0.00449041088509132
-681 0.0232105507895105
-682 -0.00534719486763679
-683 -0.00392566304421506
-684 -0.0192148623617993
-685 -0.00286039387718507
-686 0.0169363828012178
-687 -0.00383913263684977
-688 0.0147166901415108
-689 -0.00527685630258491
-690 -0.00534763716897078
-691 -0.013028036623984
-692 0.00109856360189917
-693 0.00429859241906058
-694 0.0110770507839361
-695 0.00389958466319795
-696 -0.00500164744078786
-697 -0.00580430434909617
-698 -0.0175348619428549
-699 0.018367710926664
-700 -0.00285520470226993
-701 0.0191604505372293
-702 -0.00572139870349262
-703 -0.00245556604337348
-704 -0.0107607119705179
-705 -0.00773541821274989
-706 0.00425886688313039
-707 0.00803784819561882
-708 0.0116278126911605
-709 -0.00361748710592387
-710 -0.0039055675458961
-711 -0.0187689003370071
-712 0.00721078757871366
-713 -0.00118844249034332
-714 0.0125434153334007
-715 0.0101599061260829
-716 -0.00351197692479239
-717 -0.0123155660331183
-718 -0.0108643040658882
-719 0.00554949017948381
-720 0.00257600141246878
-721 0.00621936965849692
-722 0.0147249169696155
-723 -0.0117208865566673
-724 -0.0123019859554356
-725 -0.00803010597732602
-726 0.00658862562929511
-727 0.00614064100015319
-728 0.008551217239909
-729 0.0136644617518446
-730 -0.015679112924688
-731 -0.0164762866576538
-732 -0.00450956642363176
-733 0.00672813330266014
-734 0.0163514096475234
-735 0.00144257368405246
-736 0.00632093496019618
-737 -0.0144540308342644
-738 -0.0116512949908104
-739 -0.00303930205795109
-740 0.00684139171029531
-741 0.0157237606456902
-742 0.00173826522952491
-743 0.00162052201072558
-744 -0.0225327170375728
-745 -0.00244349662721446
-746 -0.00369988442043602
-747 0.020606075524278
-748 0.00234950019819143
-749 0.00933962911886964
-750 -0.00497392363419004
-751 -0.0191622234756475
-752 0.00152935854260608
-753 -0.00746413948201927
-754 0.0210618579576008
-755 0.00337450745565617
-756 0.0116901903545899
-757 -0.0211051168455275
-758 -0.0116996994412557
-759 -0.00384503529844727
-760 0.0106920319592258
-761 0.00606434563857974
-762 0.0109288893744588
-763 0.0065913741548423
-764 -0.024843059360248
-765 -0.00145794491644285
-766 -0.015899201893062
-767 0.0293737522747255
-768 0.000429876419139015
-769 0.0117737352022464
-770 -0.011804032635419
-771 -0.0160558691300165
-772 -0.00680765187518244
-773 0.00115856328840688
-774 0.016936256215249
-775 0.00599154100809263
-776 0.00618605288716798
-777 -0.0133717924580297
-778 -0.00856753018227533
-779 -0.0122498868461665
-780 0.0184368989458328
-781 0.00826995605347898
-782 -0.00370110797731906
-783 0.00766740753297887
-784 -0.0106558949199266
-785 -0.0145918234070912
-786 0.00262754124009611
-787 0.00732095805793885
-788 0.0141175867672096
-789 0.000917093953717164
-790 -0.00610693085809193
-791 -0.00263724165375204
-792 -0.0223403739509282
-793 0.0155086188394132
-794 -0.000414907985012158
-795 0.00818366497095633
-796 0.00390922245137539
-797 0.000518897249907908
-798 -0.0114231682864646
-799 -0.0131434185021701
-800 0.0106325516600345
-801 0.00726206049320438
-802 0.011973193565835
-803 -0.0117164916752715
-804 0.00837431504618953
-805 -0.0176484202352301
-806 -0.00242926974706211
-807 0.00617275793654123
-808 0.00157428575173083
-809 0.0140869636480763
-810 -0.00799595335938592
-811 -0.00145797624072917
-812 -0.0163218480242698
-813 0.0102032846601359
-814 0.00334029936869413
-815 0.00596774673469088
-816 -0.00191679139866682
-817 0.00111982507739117
-818 -0.00466131055412295
-819 -0.009977558947507
-820 0.0070518233255565
-821 -0.00235106334091928
-822 0.0135818413020524
-823 -0.0124536640788948
-824 0.00961249011142124
-825 -0.012067111031695
-826 0.000746163532116685
-827 -0.000618612461237987
-828 0.00932264378392892
-829 -0.00138865174580641
-830 -0.0026558878506514
-831 0.0039382752792092
-832 -0.00629021025673958
-833 -0.00703454327061739
-834 0.000852556936383089
-835 0.0170439482297759
-836 -0.0100201779805253
-837 0.00412500179406067
-838 -0.00228249593639731
-839 0.00340179323986006
-840 -0.0152704223182198
-841 0.0106042546349877
-842 0.00124240796525085
-843 0.000187170197715872
-844 -0.00396092509138278
-845 0.00476886425336974
-846 -0.00278502915166355
-847 -0.0105600821274784
-848 0.0187548308543433
-849 -0.0101103834519274
-850 0.00609860589988799
-851 -0.00970023587707483
-852 0.0175534712886796
-853 -0.0150157009573689
-854 0.000240696590543887
-855 0.00334623999363693
-856 0.000756223924502869
-857 -0.0019111813337376
-858 -0.000465320516901212
-859 0.0102121697808577
-860 -0.0119235594699214
-861 -0.000513039517075994
-862 7.13470533304221e-05
-863 0.00602093194270405
-864 -0.00562228912014448
-865 0.00897532104113402
-866 0.00135722877208738
-867 -0.0107137791823794
-868 0.000349804975704247
-869 0.00196275441326171
-870 -0.00207881051818241
-871 -0.00504133443326138
-872 0.01798662824207
-873 -0.00512468690960391
-874 -0.00936398567940176
-875 -0.00350357584735409
-876 0.00844402907196902
-877 -0.00535212289603013
-878 0.00359477004645202
-879 0.0100259050577573
-880 -0.00448613112164086
-881 -0.00772718523343422
-882 -0.00407471844508272
-883 0.00258842651253074
-884 -0.00497542569393132
-885 0.0140374940981116
-886 0.00485938827108293
-887 -0.00522635448674892
-888 -0.00995747147865195
-889 0.00286884969081893
-890 -0.00263726932721365
-891 0.00281869362544293
-892 0.00413911124089107
-893 0.00641299274583358
-894 -0.00461483322781905
-895 -0.00973466510643417
-896 -0.00244121423716433
-897 -0.00187439261201581
-898 0.0167254251905489
-899 -0.00323557017026858
-900 0.0070698910566062
-901 -0.00984192453152891
-902 -0.00745285112891651
-903 -0.00156488511331396
-904 0.00648910969501878
-905 0.00778960101933796
-906 -0.00110773006555918
-907 0.00797123926504478
-908 -0.0172915924405978
-909 -0.00567453921434972
-910 -0.00093198227439079
-911 0.017699519362806
-912 -0.000318037037700945
-913 -0.000901743764017103
-914 0.00248888283323065
-915 -0.0142481225576747
-916 -0.00627435836721236
-917 0.00855187280647071
-918 0.0105572049962355
-919 0.000583931991033486
-920 -4.30556267490633e-05
-921 -0.0045108941062306
-922 -0.0133739157611831
-923 -0.00313115415898723
-924 0.0189188436677887
-925 0.00153514138422627
-926 0.00103320993409772
-927 0.00112288481924235
-928 -0.00928188326624581
-929 -0.0129274841698096
-930 0.00498882941992066
-931 0.0128685052672079
-932 0.00095422558746866
-933 0.00287762148255505
-934 -0.00475028532754077
-935 -0.00822865912701703
-936 -0.00757218985298937
-937 0.0125664162380766
-938 0.00270238634995215
-939 0.00302457671529668
-940 0.00428294440890637
-941 -0.00899111620928394
-942 -0.0110893993806093
-943 0.00141333596146868
-944 0.00563271971888788
-945 0.00411002278120649
-946 0.00615934836425166
-947 -0.00174830591696001
-948 -0.00690959640532146
-949 -0.00762102396102174
-950 0.00236971536529725
-951 0.00460497853674718
-952 0.00598101123225428
-953 0.00706347780702416
-954 -0.0072207235025214
-955 -0.00731160125486541
-956 -0.00624993042258776
-957 0.00302766462338833
-958 0.00586320595091301
-959 0.00757297545746186
-960 0.000503174678108187
-961 -0.00664203641468952
-962 -0.00405954777539984
-963 -0.00594873760338403
-964 0.00307617052361439
-965 0.00775330844648307
-966 0.00843784117689838
-967 -0.00583155486504129
-968 -0.00522157454280821
-969 -0.00285538010476946
-970 -0.00558783047918071
-971 0.00390712343424286
-972 0.00929413763014091
-973 0.00249794635456826
-974 -0.00403614631431915
-975 -0.00252223207691292
-976 -0.00372319999128239
-977 -0.00468425218841592
-978 0.00588461196845991
-979 0.0101947594770192
-980 -0.00382374940790093
-981 -0.00256280880770612
-982 -0.00238724745188651
-983 -0.00254031623097892
-984 -0.00349304284255843
-985 0.00656620792235621
-986 0.0047392335299334
-987 -0.00245644332451687
-988 -0.000949186258308068
-989 -0.00204517319399663
-990 -0.00117348041470723
-991 -0.00165335740901138
-992 0.00532507797594932
-993 -0.00112887412444135
-994 -0.00102507341491478
-995 -0.000239825549954329
-996 -0.000229034611702856
-997 -0.00048382116878178
-998 -0.000558954253318938
-999 0.000343539178586105
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat
deleted file mode 100644
index 9c717bb66..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.0163400173187256 0.00999999999999091 0.00999999999999091 0.0 1
-2 0.0159189701080322 0.00999999999999091 0.00999999999999091 0.0 2
-3 0.0164740085601807 0.0200000000000102 0.0200000000000102 0.0 3
-4 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 4
-5 0.0157220363616943 0.0200000000000102 0.0200000000000102 0.0 5
-6 0.0156500339508057 0.00999999999999091 0.00999999999999091 0.0 6
-7 0.0407540798187256 0.0499999999999829 0.0499999999999829 0.0 7
-8 0.0177309513092041 0.0100000000000193 0.0100000000000193 0.0 8
-9 0.0160109996795654 0.0199999999999818 0.0199999999999818 0.0 9
-10 0.0159001350402832 0.0100000000000193 0.0100000000000193 0.0 10
-11 0.0192539691925049 0.0199999999999818 0.0199999999999818 0.0 11
-12 0.0170741081237793 0.0200000000000102 0.0200000000000102 0.0 12
-13 0.0155148506164551 0.0200000000000102 0.0200000000000102 0.0 13
-14 0.0416128635406494 0.039999999999992 0.039999999999992 0.0 14
-15 0.0161120891571045 0.00999999999999091 0.00999999999999091 0.0 15
-16 0.0159459114074707 0.0200000000000102 0.0200000000000102 0.0 16
-17 0.0158929824829102 0.0200000000000102 0.0200000000000102 0.0 17
-18 0.0158240795135498 0.00999999999999091 0.00999999999999091 0.0 18
-19 0.0156450271606445 0.0199999999999818 0.0199999999999818 0.0 19
-20 0.0159389972686768 0.0100000000000193 0.0100000000000193 0.0 20
-21 0.0409190654754639 0.039999999999992 0.039999999999992 0.0 21
-22 0.0160489082336426 0.0200000000000102 0.0200000000000102 0.0 22
-23 0.0169320106506348 0.0199999999999818 0.0199999999999818 0.0 23
-24 0.0198559761047363 0.0200000000000102 0.0200000000000102 0.0 24
-25 0.0158309936523438 0.00999999999999091 0.00999999999999091 0.0 25
-26 0.0156970024108887 0.0200000000000102 0.0200000000000102 0.0 26
-27 0.0156750679016113 0.0200000000000102 0.0200000000000102 0.0 27
-28 0.0406918525695801 0.039999999999992 0.039999999999992 0.0 28
-29 0.0161190032958984 0.00999999999999091 0.00999999999999091 0.0 29
-30 0.0162358283996582 0.0200000000000102 0.0200000000000102 0.0 30
-31 0.0158340930938721 0.00999999999999091 0.00999999999999091 0.0 31
-32 0.0157299041748047 0.0200000000000102 0.0200000000000102 0.0 32
-33 0.0156428813934326 0.0199999999999818 0.0199999999999818 0.0 33
-34 0.0156571865081787 0.0100000000000193 0.0100000000000193 0.0 34
-35 0.0409109592437744 0.039999999999992 0.039999999999992 0.0 35
-36 0.0192060470581055 0.0200000000000102 0.0200000000000102 0.0 36
-37 0.0160908699035645 0.0199999999999818 0.0199999999999818 0.0 37
-38 0.0158319473266602 0.0100000000000193 0.0100000000000193 0.0 38
-39 0.0157558917999268 0.0199999999999818 0.0199999999999818 0.0 39
-40 0.0158040523529053 0.0200000000000102 0.0200000000000102 0.0 40
-41 0.0156400203704834 0.00999999999999091 0.00999999999999091 0.0 41
-42 0.0408070087432861 0.0400000000000205 0.0400000000000205 0.0 42
-43 0.0159420967102051 0.0199999999999818 0.0199999999999818 0.0 43
-44 0.0159668922424316 0.00999999999999091 0.00999999999999091 0.0 44
-45 0.0213000774383545 0.0300000000000011 0.0300000000000011 0.0 45
-46 0.0170960426330566 0.0100000000000193 0.0100000000000193 0.0 46
-47 0.0160157680511475 0.0199999999999818 0.0199999999999818 0.0 47
-48 0.0156497955322266 0.0100000000000193 0.0100000000000193 0.0 48
-49 0.0446329116821289 0.0499999999999829 0.0499999999999829 0.0 49
-50 0.016150951385498 0.0200000000000102 0.0200000000000102 0.0 50
-51 0.0159158706665039 0.00999999999999091 0.00999999999999091 0.0 51
-52 0.0157129764556885 0.0200000000000102 0.0200000000000102 0.0 52
-53 0.0165328979492188 0.00999999999999091 0.00999999999999091 0.0 53
-54 0.0156497955322266 0.0200000000000102 0.0200000000000102 0.0 54
-55 0.0156981945037842 0.0200000000000102 0.0200000000000102 0.0 55
-56 0.0412800312042236 0.039999999999992 0.039999999999992 0.0 56
-57 0.0159571170806885 0.00999999999999091 0.00999999999999091 0.0 57
-58 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 58
-59 0.0158159732818604 0.00999999999999091 0.00999999999999091 0.0 59
-60 0.0156238079071045 0.0200000000000102 0.0200000000000102 0.0 60
-61 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 61
-62 0.0447931289672852 0.0400000000000205 0.0400000000000205 0.0 62
-63 0.0160729885101318 0.0199999999999818 0.0199999999999818 0.0 63
-64 0.016963005065918 0.0100000000000193 0.0100000000000193 0.0 64
-65 0.015869140625 0.0199999999999818 0.0199999999999818 0.0 65
-66 0.0158119201660156 0.0200000000000102 0.0200000000000102 0.0 66
-67 0.0156521797180176 0.00999999999999091 0.00999999999999091 0.0 67
-68 0.0156309604644775 0.0200000000000102 0.0200000000000102 0.0 68
-69 0.0406920909881592 0.039999999999992 0.039999999999992 0.0 69
-70 0.0161399841308594 0.00999999999999091 0.00999999999999091 0.0 70
-71 0.0160379409790039 0.0200000000000102 0.0200000000000102 0.0 71
-72 0.0158870220184326 0.0200000000000102 0.0200000000000102 0.0 72
-73 0.0157949924468994 0.00999999999999091 0.00999999999999091 0.0 73
-74 0.019942045211792 0.0200000000000102 0.0200000000000102 0.0 74
-75 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 75
-76 0.0406370162963867 0.0400000000000205 0.0400000000000205 0.0 76
-77 0.0160510540008545 0.00999999999999091 0.00999999999999091 0.0 77
-78 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 78
-79 0.0159609317779541 0.0199999999999818 0.0199999999999818 0.0 79
-80 0.0160808563232422 0.0100000000000193 0.0100000000000193 0.0 80
-81 0.0156311988830566 0.0199999999999818 0.0199999999999818 0.0 81
-82 0.0157270431518555 0.00999999999999091 0.00999999999999091 0.0 82
-83 0.041240930557251 0.0500000000000114 0.0500000000000114 0.0 83
-84 0.0165321826934814 0.00999999999999091 0.00999999999999091 0.0 84
-85 0.0159039497375488 0.0200000000000102 0.0200000000000102 0.0 85
-86 0.0183000564575195 0.0200000000000102 0.0200000000000102 0.0 86
-87 0.0168759822845459 0.00999999999999091 0.00999999999999091 0.0 87
-88 0.0156400203704834 0.0200000000000102 0.0200000000000102 0.0 88
-89 0.0156240463256836 0.00999999999999091 0.00999999999999091 0.0 89
-90 0.0415260791778564 0.0500000000000114 0.0500000000000114 0.0 90
-91 0.0159800052642822 0.00999999999999091 0.00999999999999091 0.0 91
-92 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 92
-93 0.0158178806304932 0.00999999999999091 0.00999999999999091 0.0 93
-94 0.0157041549682617 0.0199999999999818 0.0199999999999818 0.0 94
-95 0.0200591087341309 0.0200000000000102 0.0200000000000102 0.0 95
-96 0.018794059753418 0.0200000000000102 0.0200000000000102 0.0 96
-97 0.0408840179443359 0.039999999999992 0.039999999999992 0.0 97
-98 0.0196928977966309 0.0200000000000102 0.0200000000000102 0.0 98
-99 0.016610860824585 0.0199999999999818 0.0199999999999818 0.0 99
-100 0.0157420635223389 0.0100000000000193 0.0100000000000193 0.0 100
-101 0.015739917755127 0.0199999999999818 0.0199999999999818 0.0 101
-102 0.015592098236084 0.0100000000000193 0.0100000000000193 0.0 102
-103 0.0156228542327881 0.0199999999999818 0.0199999999999818 0.0 103
-104 0.0417301654815674 0.0400000000000205 0.0400000000000205 0.0 104
-105 0.015916109085083 0.0199999999999818 0.0199999999999818 0.0 105
-106 0.0158488750457764 0.00999999999999091 0.00999999999999091 0.0 106
-107 0.015733003616333 0.0200000000000102 0.0200000000000102 0.0 107
-108 0.0156040191650391 0.00999999999999091 0.00999999999999091 0.0 108
-109 0.0155818462371826 0.0200000000000102 0.0200000000000102 0.0 109
-110 0.041733980178833 0.039999999999992 0.039999999999992 0.0 110
-111 0.0190949440002441 0.0200000000000102 0.0200000000000102 0.0 111
-112 0.0159502029418945 0.0200000000000102 0.0200000000000102 0.0 112
-113 0.015855073928833 0.00999999999999091 0.00999999999999091 0.0 113
-114 0.0161051750183105 0.0200000000000102 0.0200000000000102 0.0 114
-115 0.0168948173522949 0.0199999999999818 0.0199999999999818 0.0 115
-116 0.0157649517059326 0.0100000000000193 0.0100000000000193 0.0 116
-117 0.0404441356658936 0.039999999999992 0.039999999999992 0.0 117
-118 0.0158331394195557 0.0199999999999818 0.0199999999999818 0.0 118
-119 0.0158309936523438 0.0100000000000193 0.0100000000000193 0.0 119
-120 0.0155770778656006 0.0199999999999818 0.0199999999999818 0.0 120
-121 0.0154340267181396 0.0100000000000193 0.0100000000000193 0.0 121
-122 0.0155458450317383 0.0199999999999818 0.0199999999999818 0.0 122
-123 0.0156569480895996 0.0200000000000102 0.0200000000000102 0.0 123
-124 0.0447821617126465 0.0499999999999829 0.039999999999992 0.01 124
-125 0.0162930488586426 0.0200000000000102 0.0200000000000102 0.0 125
-126 0.0159821510314941 0.00999999999999091 0.00999999999999091 0.0 126
-127 0.0158350467681885 0.0200000000000102 0.0200000000000102 0.0 127
-128 0.0157771110534668 0.00999999999999091 0.00999999999999091 0.0 128
-129 0.0155949592590332 0.0200000000000102 0.0200000000000102 0.0 129
-130 0.015751838684082 0.0200000000000102 0.0200000000000102 0.0 130
-131 0.0409200191497803 0.039999999999992 0.039999999999992 0.0 131
-132 0.0159509181976318 0.00999999999999091 0.00999999999999091 0.0 132
-133 0.0159890651702881 0.0200000000000102 0.0200000000000102 0.0 133
-134 0.015902042388916 0.00999999999999091 0.00999999999999091 0.0 134
-135 0.0158298015594482 0.0200000000000102 0.0200000000000102 0.0 135
-136 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 136
-137 0.0194599628448486 0.0200000000000102 0.0200000000000102 0.0 137
-138 0.0408408641815186 0.039999999999992 0.039999999999992 0.0 138
-139 0.0161910057067871 0.0100000000000193 0.0100000000000193 0.0 139
-140 0.0158939361572266 0.0199999999999818 0.0199999999999818 0.0 140
-141 0.0157690048217773 0.0100000000000193 0.0100000000000193 0.0 141
-142 0.0156970024108887 0.0199999999999818 0.0199999999999818 0.0 142
-143 0.015625 0.0200000000000102 0.0200000000000102 0.0 143
-144 0.0156629085540771 0.00999999999999091 0.00999999999999091 0.0 144
-145 0.0474429130554199 0.0500000000000114 0.0500000000000114 0.0 145
-146 0.0159988403320312 0.0199999999999818 0.0199999999999818 0.0 146
-147 0.0159039497375488 0.0100000000000193 0.0100000000000193 0.0 147
-148 0.0157449245452881 0.0199999999999818 0.0199999999999818 0.0 148
-149 0.0188858509063721 0.0200000000000102 0.0200000000000102 0.0 149
-150 0.0156919956207275 0.00999999999999091 0.00999999999999091 0.0 150
-151 0.0404269695281982 0.0400000000000205 0.0400000000000205 0.0 151
-152 0.0160980224609375 0.0199999999999818 0.0199999999999818 0.0 152
-153 0.0167350769042969 0.0200000000000102 0.0200000000000102 0.0 153
-154 0.0159759521484375 0.00999999999999091 0.00999999999999091 0.0 154
-155 0.0158588886260986 0.0200000000000102 0.0200000000000102 0.0 155
-156 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 156
-157 0.0156669616699219 0.0200000000000102 0.0200000000000102 0.0 157
-158 0.0405089855194092 0.039999999999992 0.039999999999992 0.0 158
-159 0.0160729885101318 0.0200000000000102 0.0200000000000102 0.0 159
-160 0.0159640312194824 0.00999999999999091 0.00999999999999091 0.0 160
-161 0.0188910961151123 0.0200000000000102 0.0200000000000102 0.0 161
-162 0.0166840553283691 0.0199999999999818 0.0199999999999818 0.0 162
-163 0.0156660079956055 0.0100000000000193 0.0100000000000193 0.0 163
-164 0.0156950950622559 0.0199999999999818 0.0199999999999818 0.0 164
-165 0.0416688919067383 0.0400000000000205 0.0400000000000205 0.0 165
-166 0.0159718990325928 0.0199999999999818 0.0199999999999818 0.0 166
-167 0.0159449577331543 0.0100000000000193 0.0100000000000193 0.0 167
-168 0.0157949924468994 0.0199999999999818 0.0199999999999818 0.0 168
-169 0.0157520771026611 0.00999999999999091 0.00999999999999091 0.0 169
-170 0.0157308578491211 0.0200000000000102 0.0200000000000102 0.0 170
-171 0.0156319141387939 0.0200000000000102 0.0200000000000102 0.0 171
-172 0.0406780242919922 0.039999999999992 0.039999999999992 0.0 172
-173 0.0182578563690186 0.00999999999999091 0.00999999999999091 0.0 173
-174 0.0166499614715576 0.0200000000000102 0.0200000000000102 0.0 174
-175 0.0157749652862549 0.0200000000000102 0.0200000000000102 0.0 175
-176 0.0156049728393555 0.00999999999999091 0.00999999999999091 0.0 176
-177 0.0155508518218994 0.0200000000000102 0.0200000000000102 0.0 177
-178 0.0155460834503174 0.00999999999999091 0.00999999999999091 0.0 178
-179 0.0410678386688232 0.0500000000000114 0.0500000000000114 0.0 179
-180 0.0161750316619873 0.00999999999999091 0.00999999999999091 0.0 180
-181 0.0159769058227539 0.0199999999999818 0.0199999999999818 0.0 181
-182 0.0157239437103271 0.0100000000000193 0.0100000000000193 0.0 182
-183 0.0155858993530273 0.0199999999999818 0.0199999999999818 0.0 183
-184 0.0157029628753662 0.0100000000000193 0.0100000000000193 0.0 184
-185 0.0406639575958252 0.0499999999999829 0.0499999999999829 0.0 185
-186 0.020313024520874 0.0200000000000102 0.0200000000000102 0.0 186
-187 0.0159680843353271 0.00999999999999091 0.00999999999999091 0.0 187
-188 0.0159218311309814 0.0200000000000102 0.0200000000000102 0.0 188
-189 0.0158710479736328 0.00999999999999091 0.00999999999999091 0.0 189
-190 0.0158529281616211 0.0200000000000102 0.0200000000000102 0.0 190
-191 0.0155730247497559 0.0200000000000102 0.0200000000000102 0.0 191
-192 0.0405440330505371 0.039999999999992 0.039999999999992 0.0 192
-193 0.0161638259887695 0.00999999999999091 0.00999999999999091 0.0 193
-194 0.0165688991546631 0.0200000000000102 0.0200000000000102 0.0 194
-195 0.0231571197509766 0.0199999999999818 0.0199999999999818 0.0 195
-196 0.0159261226654053 0.0200000000000102 0.0200000000000102 0.0 196
-197 0.015887975692749 0.00999999999999091 0.00999999999999091 0.0 197
-198 0.0156550407409668 0.0200000000000102 0.0200000000000102 0.0 198
-199 0.0435981750488281 0.039999999999992 0.039999999999992 0.0 199
-200 0.0159139633178711 0.0200000000000102 0.0200000000000102 0.0 200
-201 0.0158441066741943 0.00999999999999091 0.00999999999999091 0.0 201
-202 0.0157480239868164 0.0200000000000102 0.0200000000000102 0.0 202
-203 0.0163719654083252 0.0200000000000102 0.0200000000000102 0.0 203
-204 0.0156970024108887 0.00999999999999091 0.00999999999999091 0.0 204
-205 0.01556396484375 0.0200000000000102 0.0200000000000102 0.0 205
-206 0.0408110618591309 0.039999999999992 0.039999999999992 0.0 206
-207 0.0159599781036377 0.0199999999999818 0.0199999999999818 0.0 207
-208 0.0159690380096436 0.0100000000000193 0.0100000000000193 0.0 208
-209 0.0159268379211426 0.0199999999999818 0.0199999999999818 0.0 209
-210 0.0157289505004883 0.0100000000000193 0.0100000000000193 0.0 210
-211 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 211
-212 0.0189340114593506 0.0200000000000102 0.0200000000000102 0.0 212
-213 0.0407509803771973 0.039999999999992 0.039999999999992 0.0 213
-214 0.0168440341949463 0.0200000000000102 0.0200000000000102 0.0 214
-215 0.0158839225769043 0.00999999999999091 0.00999999999999091 0.0 215
-216 0.0157129764556885 0.0200000000000102 0.0200000000000102 0.0 216
-217 0.0155618190765381 0.00999999999999091 0.00999999999999091 0.0 217
-218 0.0155580043792725 0.0200000000000102 0.0200000000000102 0.0 218
-219 0.0405669212341309 0.039999999999992 0.039999999999992 0.0 219
-220 0.0161259174346924 0.0200000000000102 0.0200000000000102 0.0 220
-221 0.0161309242248535 0.00999999999999091 0.00999999999999091 0.0 221
-222 0.0159680843353271 0.0200000000000102 0.0200000000000102 0.0 222
-223 0.0159029960632324 0.00999999999999091 0.00999999999999091 0.0 223
-224 0.0187640190124512 0.0200000000000102 0.0200000000000102 0.0 224
-225 0.0158958435058594 0.0199999999999818 0.0199999999999818 0.0 225
-226 0.0405712127685547 0.0400000000000205 0.0400000000000205 0.0 226
-227 0.0160939693450928 0.0199999999999818 0.0199999999999818 0.0 227
-228 0.0159199237823486 0.0100000000000193 0.0100000000000193 0.0 228
-229 0.0160150527954102 0.0199999999999818 0.0199999999999818 0.0 229
-230 0.0161042213439941 0.0100000000000193 0.0100000000000193 0.0 230
-231 0.0156550407409668 0.0199999999999818 0.0199999999999818 0.0 231
-232 0.0155539512634277 0.00999999999999091 0.00999999999999091 0.0 232
-233 0.0406229496002197 0.0500000000000114 0.0500000000000114 0.0 233
-234 0.0177409648895264 0.00999999999999091 0.00999999999999091 0.0 234
-235 0.0160009860992432 0.0200000000000102 0.0200000000000102 0.0 235
-236 0.0169141292572021 0.00999999999999091 0.00999999999999091 0.0 236
-237 0.0185301303863525 0.0200000000000102 0.0200000000000102 0.0 237
-238 0.0156500339508057 0.0200000000000102 0.0200000000000102 0.0 238
-239 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 239
-240 0.041100025177002 0.0500000000000114 0.0500000000000114 0.0 240
-241 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 241
-242 0.0158870220184326 0.0200000000000102 0.0200000000000102 0.0 242
-243 0.0157818794250488 0.00999999999999091 0.00999999999999091 0.0 243
-244 0.0156459808349609 0.0199999999999818 0.0199999999999818 0.0 244
-245 0.0205349922180176 0.0200000000000102 0.0200000000000102 0.0 245
-246 0.0176489353179932 0.0200000000000102 0.0200000000000102 0.0 246
-247 0.0406951904296875 0.039999999999992 0.039999999999992 0.0 247
-248 0.0161759853363037 0.00999999999999091 0.00999999999999091 0.0 248
-249 0.0186100006103516 0.0200000000000102 0.0200000000000102 0.0 249
-250 0.0158610343933105 0.0200000000000102 0.0200000000000102 0.0 250
-251 0.0157759189605713 0.00999999999999091 0.00999999999999091 0.0 251
-252 0.0157499313354492 0.0200000000000102 0.0200000000000102 0.0 252
-253 0.0412969589233398 0.039999999999992 0.039999999999992 0.0 253
-254 0.0160319805145264 0.0200000000000102 0.0200000000000102 0.0 254
-255 0.0159080028533936 0.00999999999999091 0.00999999999999091 0.0 255
-256 0.01580810546875 0.0199999999999818 0.0199999999999818 0.0 256
-257 0.0157821178436279 0.0200000000000102 0.0200000000000102 0.0 257
-258 0.015578031539917 0.00999999999999091 0.00999999999999091 0.0 258
-259 0.0155758857727051 0.0200000000000102 0.0200000000000102 0.0 259
-260 0.0406520366668701 0.039999999999992 0.039999999999992 0.0 260
-261 0.0193078517913818 0.0200000000000102 0.0200000000000102 0.0 261
-262 0.0160150527954102 0.00999999999999091 0.00999999999999091 0.0 262
-263 0.015920877456665 0.0200000000000102 0.0200000000000102 0.0 263
-264 0.0161728858947754 0.0200000000000102 0.0200000000000102 0.0 264
-265 0.0163869857788086 0.00999999999999091 0.00999999999999091 0.0 265
-266 0.0156819820404053 0.0200000000000102 0.0200000000000102 0.0 266
-267 0.0407660007476807 0.039999999999992 0.039999999999992 0.0 267
-268 0.015861988067627 0.00999999999999091 0.00999999999999091 0.0 268
-269 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 269
-270 0.0157639980316162 0.0199999999999818 0.0199999999999818 0.0 270
-271 0.0156021118164062 0.0100000000000193 0.0100000000000193 0.0 271
-272 0.0162060260772705 0.0199999999999818 0.0199999999999818 0.0 272
-273 0.0156650543212891 0.0100000000000193 0.0100000000000193 0.0 273
-274 0.0440959930419922 0.0499999999999829 0.0499999999999829 0.0 274
-275 0.0158300399780273 0.0100000000000193 0.0100000000000193 0.0 275
-276 0.0157949924468994 0.0199999999999818 0.0199999999999818 0.0 276
-277 0.0157911777496338 0.0200000000000102 0.0200000000000102 0.0 277
-278 0.0155570507049561 0.00999999999999091 0.00999999999999091 0.0 278
-279 0.0156610012054443 0.0200000000000102 0.0200000000000102 0.0 279
-280 0.015800952911377 0.00999999999999091 0.00999999999999091 0.0 280
-281 0.041050910949707 0.039999999999992 0.039999999999992 0.0 281
-282 0.0158300399780273 0.0200000000000102 0.0200000000000102 0.0 282
-283 0.0173659324645996 0.0200000000000102 0.0200000000000102 0.0 283
-284 0.0157661437988281 0.00999999999999091 0.00999999999999091 0.0 284
-285 0.0156910419464111 0.0200000000000102 0.0200000000000102 0.0 285
-286 0.0156378746032715 0.00999999999999091 0.00999999999999091 0.0 286
-287 0.0446128845214844 0.0500000000000114 0.0500000000000114 0.0 287
-288 0.0160419940948486 0.00999999999999091 0.00999999999999091 0.0 288
-289 0.0161609649658203 0.0200000000000102 0.0200000000000102 0.0 289
-290 0.0157930850982666 0.00999999999999091 0.00999999999999091 0.0 290
-291 0.0157232284545898 0.0200000000000102 0.0200000000000102 0.0 291
-292 0.0155608654022217 0.0199999999999818 0.0199999999999818 0.0 292
-293 0.0156910419464111 0.0100000000000193 0.0100000000000193 0.0 293
-294 0.0463647842407227 0.0499999999999829 0.0499999999999829 0.0 294
-295 0.0179910659790039 0.0200000000000102 0.0200000000000102 0.0 295
-296 0.0158979892730713 0.00999999999999091 0.00999999999999091 0.0 296
-297 0.0157630443572998 0.0200000000000102 0.0200000000000102 0.0 297
-298 0.0156371593475342 0.00999999999999091 0.00999999999999091 0.0 298
-299 0.0191469192504883 0.0200000000000102 0.0200000000000102 0.0 299
-300 0.0167911052703857 0.0199999999999818 0.0199999999999818 0.0 300
-301 0.0407388210296631 0.0400000000000205 0.0400000000000205 0.0 301
-302 0.0159130096435547 0.0199999999999818 0.0199999999999818 0.0 302
-303 0.0166409015655518 0.0100000000000193 0.0100000000000193 0.0 303
-304 0.0158700942993164 0.0199999999999818 0.0199999999999818 0.0 304
-305 0.0156099796295166 0.0200000000000102 0.0200000000000102 0.0 305
-306 0.0155818462371826 0.00999999999999091 0.00999999999999091 0.0 306
-307 0.0156898498535156 0.0200000000000102 0.0200000000000102 0.0 307
-308 0.0406138896942139 0.039999999999992 0.039999999999992 0.0 308
-309 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 309
-310 0.0157949924468994 0.0200000000000102 0.0200000000000102 0.0 310
-311 0.0166599750518799 0.00999999999999091 0.00999999999999091 0.0 311
-312 0.0184519290924072 0.0200000000000102 0.0200000000000102 0.0 312
-313 0.0156970024108887 0.0200000000000102 0.0200000000000102 0.0 313
-314 0.0414550304412842 0.039999999999992 0.039999999999992 0.0 314
-315 0.0159659385681152 0.0200000000000102 0.0200000000000102 0.0 315
-316 0.015855073928833 0.00999999999999091 0.00999999999999091 0.0 316
-317 0.0157890319824219 0.0200000000000102 0.0200000000000102 0.0 317
-318 0.0157499313354492 0.00999999999999091 0.00999999999999091 0.0 318
-319 0.0157718658447266 0.0199999999999818 0.0199999999999818 0.0 319
-320 0.0155758857727051 0.0200000000000102 0.0200000000000102 0.0 320
-321 0.0406579971313477 0.039999999999992 0.039999999999992 0.0 321
-322 0.0160129070281982 0.0100000000000193 0.0100000000000193 0.0 322
-323 0.0166339874267578 0.0199999999999818 0.0199999999999818 0.0 323
-324 0.020615816116333 0.0200000000000102 0.0200000000000102 0.0 324
-325 0.016042947769165 0.0200000000000102 0.0200000000000102 0.0 325
-326 0.0157880783081055 0.00999999999999091 0.00999999999999091 0.0 326
-327 0.0156471729278564 0.0200000000000102 0.0200000000000102 0.0 327
-328 0.0406618118286133 0.039999999999992 0.039999999999992 0.0 328
-329 0.0161919593811035 0.00999999999999091 0.00999999999999091 0.0 329
-330 0.0158429145812988 0.0200000000000102 0.0200000000000102 0.0 330
-331 0.0157439708709717 0.0199999999999818 0.0199999999999818 0.0 331
-332 0.0156080722808838 0.0100000000000193 0.0100000000000193 0.0 332
-333 0.0156378746032715 0.0199999999999818 0.0199999999999818 0.0 333
-334 0.015779972076416 0.0100000000000193 0.0100000000000193 0.0 334
-335 0.0407891273498535 0.039999999999992 0.039999999999992 0.0 335
-336 0.0195779800415039 0.0200000000000102 0.0200000000000102 0.0 336
-337 0.0160758495330811 0.0199999999999818 0.0199999999999818 0.0 337
-338 0.0156791210174561 0.0200000000000102 0.0200000000000102 0.0 338
-339 0.015733003616333 0.00999999999999091 0.00999999999999091 0.0 339
-340 0.0158100128173828 0.0200000000000102 0.0200000000000102 0.0 340
-341 0.0405211448669434 0.039999999999992 0.039999999999992 0.0 341
-342 0.0158991813659668 0.0100000000000193 0.0100000000000193 0.0 342
-343 0.0157461166381836 0.0199999999999818 0.0199999999999818 0.0 343
-344 0.0166110992431641 0.0200000000000102 0.0200000000000102 0.0 344
-345 0.0219199657440186 0.0199999999999818 0.0199999999999818 0.0 345
-346 0.0155389308929443 0.0100000000000193 0.0100000000000193 0.0 346
-347 0.0156941413879395 0.0199999999999818 0.0199999999999818 0.0 347
-348 0.0439140796661377 0.0400000000000205 0.0400000000000205 0.0 348
-349 0.016746997833252 0.0199999999999818 0.0199999999999818 0.0 349
-350 0.0159060955047607 0.0200000000000102 0.0200000000000102 0.0 350
-351 0.0158212184906006 0.00999999999999091 0.00999999999999091 0.0 351
-352 0.0157208442687988 0.0200000000000102 0.0200000000000102 0.0 352
-353 0.0156140327453613 0.00999999999999091 0.00999999999999091 0.0 353
-354 0.0168178081512451 0.0200000000000102 0.0200000000000102 0.0 354
-355 0.0407528877258301 0.039999999999992 0.039999999999992 0.0 355
-356 0.0157878398895264 0.0200000000000102 0.0200000000000102 0.0 356
-357 0.0157828330993652 0.00999999999999091 0.00999999999999091 0.0 357
-358 0.0156841278076172 0.0200000000000102 0.0200000000000102 0.0 358
-359 0.0156099796295166 0.00999999999999091 0.00999999999999091 0.0 359
-360 0.015535831451416 0.0200000000000102 0.0200000000000102 0.0 360
-361 0.0171799659729004 0.0199999999999818 0.0199999999999818 0.0 361
-362 0.044562816619873 0.0400000000000205 0.0400000000000205 0.0 362
-363 0.0159769058227539 0.0199999999999818 0.0199999999999818 0.0 363
-364 0.0167310237884521 0.0100000000000193 0.0100000000000193 0.0 364
-365 0.0156519412994385 0.0199999999999818 0.0199999999999818 0.0 365
-366 0.015625 0.0200000000000102 0.0200000000000102 0.0 366
-367 0.0161309242248535 0.00999999999999091 0.00999999999999091 0.0 367
-368 0.0406661033630371 0.039999999999992 0.039999999999992 0.0 368
-369 0.016185998916626 0.0200000000000102 0.0200000000000102 0.0 369
-370 0.0159850120544434 0.00999999999999091 0.00999999999999091 0.0 370
-371 0.0159509181976318 0.0200000000000102 0.0200000000000102 0.0 371
-372 0.015861988067627 0.0200000000000102 0.0200000000000102 0.0 372
-373 0.0157780647277832 0.00999999999999091 0.00999999999999091 0.0 373
-374 0.019244909286499 0.0200000000000102 0.0200000000000102 0.0 374
-375 0.0423779487609863 0.039999999999992 0.039999999999992 0.0 375
-376 0.0160589218139648 0.0200000000000102 0.0200000000000102 0.0 376
-377 0.0159640312194824 0.0199999999999818 0.0199999999999818 0.0 377
-378 0.0158970355987549 0.0100000000000193 0.0100000000000193 0.0 378
-379 0.0158810615539551 0.0199999999999818 0.0199999999999818 0.0 379
-380 0.0159378051757812 0.0100000000000193 0.0100000000000193 0.0 380
-381 0.0156619548797607 0.0199999999999818 0.0199999999999818 0.0 381
-382 0.0407819747924805 0.039999999999992 0.039999999999992 0.0 382
-383 0.0159389972686768 0.0200000000000102 0.0200000000000102 0.0 383
-384 0.0160889625549316 0.00999999999999091 0.00999999999999091 0.0 384
-385 0.0158150196075439 0.0200000000000102 0.0200000000000102 0.0 385
-386 0.0164110660552979 0.0200000000000102 0.0200000000000102 0.0 386
-387 0.0180950164794922 0.00999999999999091 0.00999999999999091 0.0 387
-388 0.0157089233398438 0.0200000000000102 0.0200000000000102 0.0 388
-389 0.0411288738250732 0.039999999999992 0.039999999999992 0.0 389
-390 0.0159080028533936 0.0200000000000102 0.0200000000000102 0.0 390
-391 0.0158810615539551 0.00999999999999091 0.00999999999999091 0.0 391
-392 0.0157151222229004 0.0200000000000102 0.0200000000000102 0.0 392
-393 0.0156629085540771 0.00999999999999091 0.00999999999999091 0.0 393
-394 0.0157067775726318 0.0199999999999818 0.0199999999999818 0.0 394
-395 0.0479769706726074 0.0500000000000114 0.0500000000000114 0.0 395
-396 0.01609206199646 0.00999999999999091 0.00999999999999091 0.0 396
-397 0.0158951282501221 0.0200000000000102 0.0200000000000102 0.0 397
-398 0.0161418914794922 0.00999999999999091 0.00999999999999091 0.0 398
-399 0.0201709270477295 0.0200000000000102 0.0200000000000102 0.0 399
-400 0.0157439708709717 0.0100000000000193 0.0100000000000193 0.0 400
-401 0.0157320499420166 0.0199999999999818 0.0199999999999818 0.0 401
-402 0.0412960052490234 0.0400000000000205 0.0400000000000205 0.0 402
-403 0.0162639617919922 0.00999999999999091 0.00999999999999091 0.0 403
-404 0.0161092281341553 0.0200000000000102 0.0200000000000102 0.0 404
-405 0.0159099102020264 0.0199999999999818 0.0199999999999818 0.0 405
-406 0.0157670974731445 0.00999999999999091 0.00999999999999091 0.0 406
-407 0.0156850814819336 0.0200000000000102 0.0200000000000102 0.0 407
-408 0.0156769752502441 0.00999999999999091 0.00999999999999091 0.0 408
-409 0.0408320426940918 0.0400000000000205 0.0400000000000205 0.0 409
-410 0.0158789157867432 0.0199999999999818 0.0199999999999818 0.0 410
-411 0.0202319622039795 0.0200000000000102 0.0200000000000102 0.0 411
-412 0.0158510208129883 0.0200000000000102 0.0200000000000102 0.0 412
-413 0.0156679153442383 0.00999999999999091 0.00999999999999091 0.0 413
-414 0.0159661769866943 0.0200000000000102 0.0200000000000102 0.0 414
-415 0.0161230564117432 0.00999999999999091 0.00999999999999091 0.0 415
-416 0.0410380363464355 0.0500000000000114 0.0500000000000114 0.0 416
-417 0.0158960819244385 0.00999999999999091 0.00999999999999091 0.0 417
-418 0.0158650875091553 0.0199999999999818 0.0199999999999818 0.0 418
-419 0.0157840251922607 0.0100000000000193 0.0100000000000193 0.0 419
-420 0.0155539512634277 0.0199999999999818 0.0199999999999818 0.0 420
-421 0.0157678127288818 0.0100000000000193 0.0100000000000193 0.0 421
-422 0.0412240028381348 0.0499999999999829 0.0499999999999829 0.0 422
-423 0.0191640853881836 0.0100000000000193 0.0100000000000193 0.0 423
-424 0.0165059566497803 0.0199999999999818 0.0199999999999818 0.0 424
-425 0.0159070491790771 0.0200000000000102 0.0200000000000102 0.0 425
-426 0.0158569812774658 0.00999999999999091 0.00999999999999091 0.0 426
-427 0.0156240463256836 0.0200000000000102 0.0200000000000102 0.0 427
-428 0.0156888961791992 0.00999999999999091 0.00999999999999091 0.0 428
-429 0.0410318374633789 0.0500000000000114 0.0500000000000114 0.0 429
-430 0.0159420967102051 0.00999999999999091 0.00999999999999091 0.0 430
-431 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 431
-432 0.0157718658447266 0.00999999999999091 0.00999999999999091 0.0 432
-433 0.0156440734863281 0.0200000000000102 0.0200000000000102 0.0 433
-434 0.0156459808349609 0.00999999999999091 0.00999999999999091 0.0 434
-435 0.0156629085540771 0.0200000000000102 0.0200000000000102 0.0 435
-436 0.043510913848877 0.039999999999992 0.039999999999992 0.0 436
-437 0.0160140991210938 0.0200000000000102 0.0200000000000102 0.0 437
-438 0.015984058380127 0.0199999999999818 0.0199999999999818 0.0 438
-439 0.0160889625549316 0.0100000000000193 0.0100000000000193 0.0 439
-440 0.0160849094390869 0.0199999999999818 0.0199999999999818 0.0 440
-441 0.015700101852417 0.0100000000000193 0.0100000000000193 0.0 441
-442 0.0157110691070557 0.0199999999999818 0.0199999999999818 0.0 442
-443 0.0212619304656982 0.0199999999999818 0.0199999999999818 0.0 443
-444 0.0226690769195557 0.0200000000000102 0.0200000000000102 0.0 444
-445 0.0157680511474609 0.0200000000000102 0.0200000000000102 0.0 445
-446 0.015690803527832 0.00999999999999091 0.00999999999999091 0.0 446
-447 0.015653133392334 0.0200000000000102 0.0200000000000102 0.0 447
-448 0.0156688690185547 0.0199999999999818 0.0199999999999818 0.0 448
-449 0.0439548492431641 0.0400000000000205 0.0400000000000205 0.0 449
-450 0.0160410404205322 0.0199999999999818 0.0199999999999818 0.0 450
-451 0.0159320831298828 0.0100000000000193 0.0100000000000193 0.0 451
-452 0.0157608985900879 0.0199999999999818 0.0199999999999818 0.0 452
-453 0.0166118144989014 0.0100000000000193 0.0100000000000193 0.0 453
-454 0.0155959129333496 0.0199999999999818 0.0199999999999818 0.0 454
-455 0.0157961845397949 0.0200000000000102 0.0200000000000102 0.0 455
-456 0.0407929420471191 0.039999999999992 0.039999999999992 0.0 456
-457 0.0160069465637207 0.00999999999999091 0.00999999999999091 0.0 457
-458 0.015955924987793 0.0200000000000102 0.0200000000000102 0.0 458
-459 0.015923023223877 0.0200000000000102 0.0200000000000102 0.0 459
-460 0.0157721042633057 0.00999999999999091 0.00999999999999091 0.0 460
-461 0.0170860290527344 0.0200000000000102 0.0200000000000102 0.0 461
-462 0.0182251930236816 0.0199999999999818 0.0199999999999818 0.0 462
-463 0.0413410663604736 0.0400000000000205 0.0400000000000205 0.0 463
-464 0.0165669918060303 0.00999999999999091 0.00999999999999091 0.0 464
-465 0.0159049034118652 0.0200000000000102 0.0200000000000102 0.0 465
-466 0.0158209800720215 0.0199999999999818 0.0199999999999818 0.0 466
-467 0.0156691074371338 0.0100000000000193 0.0100000000000193 0.0 467
-468 0.0155670642852783 0.0199999999999818 0.0199999999999818 0.0 468
-469 0.0407600402832031 0.039999999999992 0.039999999999992 0.0 469
-470 0.0160460472106934 0.0100000000000193 0.0100000000000193 0.0 470
-471 0.0159029960632324 0.0199999999999818 0.0199999999999818 0.0 471
-472 0.0159380435943604 0.0200000000000102 0.0200000000000102 0.0 472
-473 0.0165109634399414 0.00999999999999091 0.00999999999999091 0.0 473
-474 0.0189468860626221 0.0200000000000102 0.0200000000000102 0.0 474
-475 0.0156781673431396 0.0200000000000102 0.0200000000000102 0.0 475
-476 0.0406448841094971 0.039999999999992 0.039999999999992 0.0 476
-477 0.0160341262817383 0.00999999999999091 0.00999999999999091 0.0 477
-478 0.0160388946533203 0.0200000000000102 0.0200000000000102 0.0 478
-479 0.0163199901580811 0.0200000000000102 0.0200000000000102 0.0 479
-480 0.0158259868621826 0.00999999999999091 0.00999999999999091 0.0 480
-481 0.0156810283660889 0.0199999999999818 0.0199999999999818 0.0 481
-482 0.0157148838043213 0.0100000000000193 0.0100000000000193 0.0 482
-483 0.0412290096282959 0.039999999999992 0.039999999999992 0.0 483
-484 0.0160889625549316 0.0200000000000102 0.0200000000000102 0.0 484
-485 0.0160059928894043 0.0199999999999818 0.0199999999999818 0.0 485
-486 0.0181820392608643 0.0200000000000102 0.0200000000000102 0.0 486
-487 0.0166311264038086 0.00999999999999091 0.00999999999999091 0.0 487
-488 0.0156669616699219 0.0200000000000102 0.0200000000000102 0.0 488
-489 0.0157821178436279 0.00999999999999091 0.00999999999999091 0.0 489
-490 0.0410869121551514 0.0400000000000205 0.0400000000000205 0.0 490
-491 0.0159239768981934 0.0199999999999818 0.0199999999999818 0.0 491
-492 0.0158579349517822 0.0200000000000102 0.0200000000000102 0.0 492
-493 0.0157217979431152 0.00999999999999091 0.00999999999999091 0.0 493
-494 0.021359920501709 0.0200000000000102 0.0200000000000102 0.0 494
-495 0.0177481174468994 0.0199999999999818 0.0199999999999818 0.0 495
-496 0.0405080318450928 0.0400000000000205 0.0400000000000205 0.0 496
-497 0.0161361694335938 0.0199999999999818 0.0199999999999818 0.0 497
-498 0.0198690891265869 0.0200000000000102 0.0200000000000102 0.0 498
-499 0.0160260200500488 0.00999999999999091 0.00999999999999091 0.0 499
-500 0.0157639980316162 0.0200000000000102 0.0200000000000102 0.0 500
-501 0.0156447887420654 0.0200000000000102 0.0200000000000102 0.0 501
-502 0.0156769752502441 0.00999999999999091 0.00999999999999091 0.0 502
-503 0.0437228679656982 0.039999999999992 0.039999999999992 0.0 503
-504 0.0161030292510986 0.0200000000000102 0.0200000000000102 0.0 504
-505 0.016016960144043 0.0199999999999818 0.0199999999999818 0.0 505
-506 0.0158760547637939 0.0100000000000193 0.0100000000000193 0.0 506
-507 0.01578688621521 0.0199999999999818 0.0199999999999818 0.0 507
-508 0.0156271457672119 0.0100000000000193 0.0100000000000193 0.0 508
-509 0.0157058238983154 0.0199999999999818 0.0199999999999818 0.0 509
-510 0.0442900657653809 0.0400000000000205 0.0400000000000205 0.0 510
-511 0.017132043838501 0.0199999999999818 0.0199999999999818 0.0 511
-512 0.0159881114959717 0.0200000000000102 0.0200000000000102 0.0 512
-513 0.0160439014434814 0.00999999999999091 0.00999999999999091 0.0 513
-514 0.0164890289306641 0.0200000000000102 0.0200000000000102 0.0 514
-515 0.0156888961791992 0.0200000000000102 0.0200000000000102 0.0 515
-516 0.040363073348999 0.039999999999992 0.039999999999992 0.0 516
-517 0.0161979198455811 0.00999999999999091 0.00999999999999091 0.0 517
-518 0.0159780979156494 0.0200000000000102 0.0200000000000102 0.0 518
-519 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 519
-520 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 520
-521 0.0156509876251221 0.0199999999999818 0.0199999999999818 0.0 521
-522 0.0156340599060059 0.0100000000000193 0.0100000000000193 0.0 522
-523 0.0451259613037109 0.0499999999999829 0.0499999999999829 0.0 523
-524 0.0159039497375488 0.0100000000000193 0.0100000000000193 0.0 524
-525 0.0158360004425049 0.0199999999999818 0.0199999999999818 0.0 525
-526 0.0157630443572998 0.0100000000000193 0.0100000000000193 0.0 526
-527 0.0156168937683105 0.0199999999999818 0.0199999999999818 0.0 527
-528 0.0156149864196777 0.0200000000000102 0.0200000000000102 0.0 528
-529 0.015984058380127 0.00999999999999091 0.00999999999999091 0.0 529
-530 0.040830135345459 0.039999999999992 0.039999999999992 0.0 530
-531 0.0160219669342041 0.0200000000000102 0.0200000000000102 0.0 531
-532 0.015923023223877 0.0200000000000102 0.0200000000000102 0.0 532
-533 0.0159180164337158 0.00999999999999091 0.00999999999999091 0.0 533
-534 0.0157890319824219 0.0200000000000102 0.0200000000000102 0.0 534
-535 0.0156989097595215 0.00999999999999091 0.00999999999999091 0.0 535
-536 0.043813943862915 0.0500000000000114 0.0500000000000114 0.0 536
-537 0.0161550045013428 0.00999999999999091 0.00999999999999091 0.0 537
-538 0.0161418914794922 0.0200000000000102 0.0200000000000102 0.0 538
-539 0.016010046005249 0.00999999999999091 0.00999999999999091 0.0 539
-540 0.015833854675293 0.0100000000000193 0.0100000000000193 0.0 540
-541 0.0156919956207275 0.0199999999999818 0.0199999999999818 0.0 541
-542 0.0156600475311279 0.0100000000000193 0.0100000000000193 0.0 542
-543 0.0471100807189941 0.0499999999999829 0.0499999999999829 0.0 543
-544 0.0160348415374756 0.0200000000000102 0.0200000000000102 0.0 544
-545 0.0160539150238037 0.00999999999999091 0.00999999999999091 0.0 545
-546 0.0158519744873047 0.0200000000000102 0.0200000000000102 0.0 546
-547 0.0158119201660156 0.00999999999999091 0.00999999999999091 0.0 547
-548 0.0178709030151367 0.0200000000000102 0.0200000000000102 0.0 548
-549 0.0169069766998291 0.0199999999999818 0.0199999999999818 0.0 549
-550 0.0407388210296631 0.0400000000000205 0.0400000000000205 0.0 550
-551 0.0159931182861328 0.0199999999999818 0.0199999999999818 0.0 551
-552 0.0167689323425293 0.0100000000000193 0.0100000000000193 0.0 552
-553 0.015841007232666 0.0199999999999818 0.0199999999999818 0.0 553
-554 0.0158300399780273 0.0100000000000193 0.0100000000000193 0.0 554
-555 0.0156581401824951 0.0199999999999818 0.0199999999999818 0.0 555
-556 0.0406780242919922 0.039999999999992 0.039999999999992 0.0 556
-557 0.0162060260772705 0.0200000000000102 0.0200000000000102 0.0 557
-558 0.0160999298095703 0.00999999999999091 0.00999999999999091 0.0 558
-559 0.0159580707550049 0.0200000000000102 0.0200000000000102 0.0 559
-560 0.0159261226654053 0.00999999999999091 0.00999999999999091 0.0 560
-561 0.0199720859527588 0.0200000000000102 0.0200000000000102 0.0 561
-562 0.0157170295715332 0.0200000000000102 0.0200000000000102 0.0 562
-563 0.041780948638916 0.039999999999992 0.039999999999992 0.0 563
-564 0.0160281658172607 0.0200000000000102 0.0200000000000102 0.0 564
-565 0.0160350799560547 0.00999999999999091 0.00999999999999091 0.0 565
-566 0.0158600807189941 0.0200000000000102 0.0200000000000102 0.0 566
-567 0.0157890319824219 0.0199999999999818 0.0199999999999818 0.0 567
-568 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 568
-569 0.0157349109649658 0.0200000000000102 0.0200000000000102 0.0 569
-570 0.0407240390777588 0.039999999999992 0.039999999999992 0.0 570
-571 0.0159690380096436 0.0100000000000193 0.0100000000000193 0.0 571
-572 0.0166740417480469 0.0199999999999818 0.0199999999999818 0.0 572
-573 0.0183789730072021 0.0200000000000102 0.0200000000000102 0.0 573
-574 0.0158569812774658 0.0200000000000102 0.0200000000000102 0.0 574
-575 0.0156340599060059 0.00999999999999091 0.00999999999999091 0.0 575
-576 0.0408451557159424 0.039999999999992 0.039999999999992 0.0 576
-577 0.0160448551177979 0.0200000000000102 0.0200000000000102 0.0 577
-578 0.0162789821624756 0.00999999999999091 0.00999999999999091 0.0 578
-579 0.0159311294555664 0.0200000000000102 0.0200000000000102 0.0 579
-580 0.0158848762512207 0.0199999999999818 0.0199999999999818 0.0 580
-581 0.0157999992370605 0.0100000000000193 0.0100000000000193 0.0 581
-582 0.0156741142272949 0.0199999999999818 0.0199999999999818 0.0 582
-583 0.0409140586853027 0.0400000000000205 0.0400000000000205 0.0 583
-584 0.0159211158752441 0.0199999999999818 0.0199999999999818 0.0 584
-585 0.0184950828552246 0.0100000000000193 0.0100000000000193 0.0 585
-586 0.0168490409851074 0.0199999999999818 0.0199999999999818 0.0 586
-587 0.0156459808349609 0.0200000000000102 0.0200000000000102 0.0 587
-588 0.0156338214874268 0.00999999999999091 0.00999999999999091 0.0 588
-589 0.0159139633178711 0.0200000000000102 0.0200000000000102 0.0 589
-590 0.0407509803771973 0.039999999999992 0.039999999999992 0.0 590
-591 0.0159850120544434 0.0100000000000193 0.0100000000000193 0.0 591
-592 0.0159389972686768 0.0199999999999818 0.0199999999999818 0.0 592
-593 0.0213720798492432 0.0200000000000102 0.0200000000000102 0.0 593
-594 0.0177850723266602 0.0199999999999818 0.0199999999999818 0.0 594
-595 0.0157310962677002 0.0200000000000102 0.0200000000000102 0.0 595
-596 0.0403420925140381 0.039999999999992 0.039999999999992 0.0 596
-597 0.0190529823303223 0.0200000000000102 0.0200000000000102 0.0 597
-598 0.0169448852539062 0.00999999999999091 0.00999999999999091 0.0 598
-599 0.0159680843353271 0.0200000000000102 0.0200000000000102 0.0 599
-600 0.0158801078796387 0.00999999999999091 0.00999999999999091 0.0 600
-601 0.0156979560852051 0.0200000000000102 0.0200000000000102 0.0 601
-602 0.0156271457672119 0.0200000000000102 0.0200000000000102 0.0 602
-603 0.0415568351745605 0.039999999999992 0.039999999999992 0.0 603
-604 0.0159718990325928 0.00999999999999091 0.00999999999999091 0.0 604
-605 0.0159180164337158 0.0200000000000102 0.0200000000000102 0.0 605
-606 0.0158648490905762 0.0199999999999818 0.0199999999999818 0.0 606
-607 0.0156810283660889 0.0100000000000193 0.0100000000000193 0.0 607
-608 0.0156228542327881 0.0199999999999818 0.0199999999999818 0.0 608
-609 0.0157201290130615 0.0100000000000193 0.0100000000000193 0.0 609
-610 0.0439960956573486 0.0499999999999829 0.0499999999999829 0.0 610
-611 0.0160610675811768 0.0100000000000193 0.0100000000000193 0.0 611
-612 0.0161979198455811 0.0199999999999818 0.0199999999999818 0.0 612
-613 0.0165619850158691 0.0200000000000102 0.0200000000000102 0.0 613
-614 0.0157890319824219 0.00999999999999091 0.00999999999999091 0.0 614
-615 0.0156469345092773 0.0200000000000102 0.0200000000000102 0.0 615
-616 0.0402541160583496 0.039999999999992 0.039999999999992 0.0 616
-617 0.0161638259887695 0.00999999999999091 0.00999999999999091 0.0 617
-618 0.0160119533538818 0.0200000000000102 0.0200000000000102 0.0 618
-619 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 619
-620 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 620
-621 0.0156819820404053 0.0200000000000102 0.0200000000000102 0.0 621
-622 0.0163209438323975 0.00999999999999091 0.00999999999999091 0.0 622
-623 0.0430841445922852 0.0500000000000114 0.0500000000000114 0.0 623
-624 0.0160331726074219 0.00999999999999091 0.00999999999999091 0.0 624
-625 0.0159151554107666 0.0200000000000102 0.0200000000000102 0.0 625
-626 0.0158572196960449 0.00999999999999091 0.00999999999999091 0.0 626
-627 0.0157380104064941 0.0100000000000193 0.0100000000000193 0.0 627
-628 0.015657901763916 0.0199999999999818 0.0199999999999818 0.0 628
-629 0.016016960144043 0.0100000000000193 0.0100000000000193 0.0 629
-630 0.0407459735870361 0.039999999999992 0.039999999999992 0.0 630
-631 0.0159480571746826 0.0199999999999818 0.0199999999999818 0.0 631
-632 0.0159869194030762 0.0200000000000102 0.0200000000000102 0.0 632
-633 0.0159099102020264 0.00999999999999091 0.00999999999999091 0.0 633
-634 0.0157899856567383 0.0200000000000102 0.0200000000000102 0.0 634
-635 0.0156879425048828 0.00999999999999091 0.00999999999999091 0.0 635
-636 0.0428619384765625 0.0500000000000114 0.0500000000000114 0.0 636
-637 0.0161869525909424 0.00999999999999091 0.00999999999999091 0.0 637
-638 0.0162138938903809 0.0200000000000102 0.0200000000000102 0.0 638
-639 0.0158801078796387 0.00999999999999091 0.00999999999999091 0.0 639
-640 0.0158560276031494 0.0200000000000102 0.0200000000000102 0.0 640
-641 0.0156440734863281 0.00999999999999091 0.00999999999999091 0.0 641
-642 0.0156350135803223 0.0200000000000102 0.0200000000000102 0.0 642
-643 0.047083854675293 0.0499999999999829 0.0499999999999829 0.0 643
-644 0.0159060955047607 0.0100000000000193 0.0100000000000193 0.0 644
-645 0.0158288478851318 0.0199999999999818 0.0199999999999818 0.0 645
-646 0.0157370567321777 0.0200000000000102 0.0200000000000102 0.0 646
-647 0.0155889987945557 0.00999999999999091 0.00999999999999091 0.0 647
-648 0.0187828540802002 0.0200000000000102 0.0200000000000102 0.0 648
-649 0.0158119201660156 0.0200000000000102 0.0200000000000102 0.0 649
-650 0.0408198833465576 0.039999999999992 0.039999999999992 0.0 650
-651 0.0160138607025146 0.00999999999999091 0.00999999999999091 0.0 651
-652 0.0169661045074463 0.0200000000000102 0.0200000000000102 0.0 652
-653 0.0158448219299316 0.0200000000000102 0.0200000000000102 0.0 653
-654 0.0157639980316162 0.00999999999999091 0.00999999999999091 0.0 654
-655 0.0156838893890381 0.0199999999999818 0.0199999999999818 0.0 655
-656 0.0403389930725098 0.0400000000000205 0.0400000000000205 0.0 656
-657 0.0161681175231934 0.00999999999999091 0.00999999999999091 0.0 657
-658 0.015963077545166 0.0200000000000102 0.0200000000000102 0.0 658
-659 0.0159058570861816 0.0199999999999818 0.0199999999999818 0.0 659
-660 0.0177428722381592 0.0100000000000193 0.0100000000000193 0.0 660
-661 0.0171470642089844 0.0199999999999818 0.0199999999999818 0.0 661
-662 0.015761137008667 0.0200000000000102 0.0200000000000102 0.0 662
-663 0.0421710014343262 0.039999999999992 0.039999999999992 0.0 663
-664 0.0159869194030762 0.0100000000000193 0.0100000000000193 0.0 664
-665 0.0158960819244385 0.0199999999999818 0.0199999999999818 0.0 665
-666 0.0158309936523438 0.0200000000000102 0.0200000000000102 0.0 666
-667 0.0156588554382324 0.00999999999999091 0.00999999999999091 0.0 667
-668 0.0155930519104004 0.0200000000000102 0.0200000000000102 0.0 668
-669 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 669
-670 0.0408949851989746 0.039999999999992 0.039999999999992 0.0 670
-671 0.0166690349578857 0.0200000000000102 0.0200000000000102 0.0 671
-672 0.015967845916748 0.0200000000000102 0.0200000000000102 0.0 672
-673 0.0183408260345459 0.0199999999999818 0.0199999999999818 0.0 673
-674 0.0157818794250488 0.0100000000000193 0.0100000000000193 0.0 674
-675 0.0156641006469727 0.0199999999999818 0.0199999999999818 0.0 675
-676 0.0403289794921875 0.0400000000000205 0.0400000000000205 0.0 676
-677 0.0160641670227051 0.00999999999999091 0.00999999999999091 0.0 677
-678 0.0162630081176758 0.0200000000000102 0.0200000000000102 0.0 678
-679 0.0158939361572266 0.0199999999999818 0.0199999999999818 0.0 679
-680 0.0158121585845947 0.00999999999999091 0.00999999999999091 0.0 680
-681 0.0155899524688721 0.0200000000000102 0.0200000000000102 0.0 681
-682 0.0156369209289551 0.00999999999999091 0.00999999999999091 0.0 682
-683 0.0411529541015625 0.0400000000000205 0.0400000000000205 0.0 683
-684 0.0160119533538818 0.0199999999999818 0.0199999999999818 0.0 684
-685 0.0188088417053223 0.0200000000000102 0.0200000000000102 0.0 685
-686 0.0159080028533936 0.0200000000000102 0.0200000000000102 0.0 686
-687 0.0157148838043213 0.00999999999999091 0.00999999999999091 0.0 687
-688 0.0155959129333496 0.0200000000000102 0.0200000000000102 0.0 688
-689 0.0412189960479736 0.039999999999992 0.039999999999992 0.0 689
-690 0.015995979309082 0.00999999999999091 0.00999999999999091 0.0 690
-691 0.0159540176391602 0.0200000000000102 0.0200000000000102 0.0 691
-692 0.015949010848999 0.0199999999999818 0.0199999999999818 0.0 692
-693 0.0234458446502686 0.0200000000000102 0.0200000000000102 0.0 693
-694 0.0157320499420166 0.0200000000000102 0.0200000000000102 0.0 694
-695 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 695
-696 0.0404260158538818 0.039999999999992 0.039999999999992 0.0 696
-697 0.0190789699554443 0.0200000000000102 0.0200000000000102 0.0 697
-698 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 698
-699 0.0157830715179443 0.00999999999999091 0.00999999999999091 0.0 699
-700 0.0156319141387939 0.0200000000000102 0.0200000000000102 0.0 700
-701 0.01556396484375 0.00999999999999091 0.00999999999999091 0.0 701
-702 0.0156660079956055 0.0200000000000102 0.0200000000000102 0.0 702
-703 0.0413651466369629 0.039999999999992 0.039999999999992 0.0 703
-704 0.0159580707550049 0.0199999999999818 0.0199999999999818 0.0 704
-705 0.0158989429473877 0.0100000000000193 0.0100000000000193 0.0 705
-706 0.0158150196075439 0.0199999999999818 0.0199999999999818 0.0 706
-707 0.0156781673431396 0.0100000000000193 0.0100000000000193 0.0 707
-708 0.0156269073486328 0.0199999999999818 0.0199999999999818 0.0 708
-709 0.041424036026001 0.0400000000000205 0.0400000000000205 0.0 709
-710 0.0184199810028076 0.0199999999999818 0.0199999999999818 0.0 710
-711 0.0159978866577148 0.0200000000000102 0.0200000000000102 0.0 711
-712 0.0160419940948486 0.00999999999999091 0.00999999999999091 0.0 712
-713 0.016589879989624 0.0200000000000102 0.0200000000000102 0.0 713
-714 0.0156559944152832 0.0200000000000102 0.0200000000000102 0.0 714
-715 0.0157039165496826 0.00999999999999091 0.00999999999999091 0.0 715
-716 0.0408508777618408 0.039999999999992 0.039999999999992 0.0 716
-717 0.0159609317779541 0.0200000000000102 0.0200000000000102 0.0 717
-718 0.0159869194030762 0.00999999999999091 0.00999999999999091 0.0 718
-719 0.0159101486206055 0.0200000000000102 0.0200000000000102 0.0 719
-720 0.0156970024108887 0.0199999999999818 0.0199999999999818 0.0 720
-721 0.0155429840087891 0.0100000000000193 0.0100000000000193 0.0 721
-722 0.0163400173187256 0.0199999999999818 0.0199999999999818 0.0 722
-723 0.0429699420928955 0.0400000000000205 0.0400000000000205 0.0 723
-724 0.0160400867462158 0.0199999999999818 0.0199999999999818 0.0 724
-725 0.0159778594970703 0.0100000000000193 0.0100000000000193 0.0 725
-726 0.015826940536499 0.0199999999999818 0.0199999999999818 0.0 726
-727 0.0156888961791992 0.0100000000000193 0.0100000000000193 0.0 727
-728 0.0159649848937988 0.0199999999999818 0.0199999999999818 0.0 728
-729 0.0405631065368652 0.039999999999992 0.039999999999992 0.0 729
-730 0.0161111354827881 0.0200000000000102 0.0200000000000102 0.0 730
-731 0.0158760547637939 0.00999999999999091 0.00999999999999091 0.0 731
-732 0.0159549713134766 0.0200000000000102 0.0200000000000102 0.0 732
-733 0.0157599449157715 0.00999999999999091 0.00999999999999091 0.0 733
-734 0.0157549381256104 0.0200000000000102 0.0200000000000102 0.0 734
-735 0.0156841278076172 0.0200000000000102 0.0200000000000102 0.0 735
-736 0.0429198741912842 0.039999999999992 0.039999999999992 0.0 736
-737 0.0159552097320557 0.0200000000000102 0.0200000000000102 0.0 737
-738 0.016150951385498 0.00999999999999091 0.00999999999999091 0.0 738
-739 0.0157721042633057 0.0200000000000102 0.0200000000000102 0.0 739
-740 0.0156459808349609 0.00999999999999091 0.00999999999999091 0.0 740
-741 0.0156309604644775 0.0200000000000102 0.0200000000000102 0.0 741
-742 0.0458109378814697 0.039999999999992 0.039999999999992 0.0 742
-743 0.0170071125030518 0.0199999999999818 0.0199999999999818 0.0 743
-744 0.0160090923309326 0.0200000000000102 0.0200000000000102 0.0 744
-745 0.0158901214599609 0.00999999999999091 0.00999999999999091 0.0 745
-746 0.0158569812774658 0.0200000000000102 0.0200000000000102 0.0 746
-747 0.0156040191650391 0.0200000000000102 0.0200000000000102 0.0 747
-748 0.0188460350036621 0.00999999999999091 0.00999999999999091 0.0 748
-749 0.0407531261444092 0.0500000000000114 0.0500000000000114 0.0 749
-750 0.0160620212554932 0.00999999999999091 0.00999999999999091 0.0 750
-751 0.0160109996795654 0.0200000000000102 0.0200000000000102 0.0 751
-752 0.0167930126190186 0.00999999999999091 0.00999999999999091 0.0 752
-753 0.0158519744873047 0.0200000000000102 0.0200000000000102 0.0 753
-754 0.0157589912414551 0.0199999999999818 0.0199999999999818 0.0 754
-755 0.0156669616699219 0.00999999999999091 0.00999999999999091 0.0 755
-756 0.0408079624176025 0.0400000000000205 0.0400000000000205 0.0 756
-757 0.0160200595855713 0.0199999999999818 0.0199999999999818 0.0 757
-758 0.015981912612915 0.0100000000000193 0.0100000000000193 0.0 758
-759 0.0158510208129883 0.0199999999999818 0.0199999999999818 0.0 759
-760 0.0184319019317627 0.0200000000000102 0.0200000000000102 0.0 760
-761 0.0160219669342041 0.0200000000000102 0.0200000000000102 0.0 761
-762 0.0413029193878174 0.039999999999992 0.039999999999992 0.0 762
-763 0.0162460803985596 0.00999999999999091 0.00999999999999091 0.0 763
-764 0.0159189701080322 0.0200000000000102 0.0200000000000102 0.0 764
-765 0.0158321857452393 0.00999999999999091 0.00999999999999091 0.0 765
-766 0.0157649517059326 0.0200000000000102 0.0200000000000102 0.0 766
-767 0.0156459808349609 0.0199999999999818 0.0199999999999818 0.0 767
-768 0.0156371593475342 0.0100000000000193 0.0100000000000193 0.0 768
-769 0.042356014251709 0.039999999999992 0.039999999999992 0.0 769
-770 0.0159518718719482 0.0200000000000102 0.0200000000000102 0.0 770
-771 0.0165510177612305 0.0199999999999818 0.0199999999999818 0.0 771
-772 0.0166161060333252 0.0100000000000193 0.0100000000000193 0.0 772
-773 0.0192360877990723 0.0199999999999818 0.0199999999999818 0.0 773
-774 0.0156729221343994 0.0200000000000102 0.0200000000000102 0.0 774
-775 0.0404140949249268 0.039999999999992 0.039999999999992 0.0 775
-776 0.0159680843353271 0.0100000000000193 0.0100000000000193 0.0 776
-777 0.0160880088806152 0.0199999999999818 0.0199999999999818 0.0 777
-778 0.0158729553222656 0.0200000000000102 0.0200000000000102 0.0 778
-779 0.0157761573791504 0.00999999999999091 0.00999999999999091 0.0 779
-780 0.0156121253967285 0.0200000000000102 0.0200000000000102 0.0 780
-781 0.0156919956207275 0.00999999999999091 0.00999999999999091 0.0 781
-782 0.0405950546264648 0.039999999999992 0.039999999999992 0.0 782
-783 0.0157918930053711 0.0200000000000102 0.0200000000000102 0.0 783
-784 0.0157120227813721 0.0200000000000102 0.0200000000000102 0.0 784
-785 0.018751859664917 0.00999999999999091 0.00999999999999091 0.0 785
-786 0.0155041217803955 0.0200000000000102 0.0200000000000102 0.0 786
-787 0.0158028602600098 0.0199999999999818 0.0199999999999818 0.0 787
-788 0.0158569812774658 0.0100000000000193 0.0100000000000193 0.0 788
-789 0.0412540435791016 0.039999999999992 0.039999999999992 0.0 789
-790 0.0160260200500488 0.0200000000000102 0.0200000000000102 0.0 790
-791 0.0159499645233154 0.0199999999999818 0.0199999999999818 0.0 791
-792 0.019320011138916 0.00999999999999091 0.00999999999999091 0.0 792
-793 0.0201430320739746 0.0200000000000102 0.0200000000000102 0.0 793
-794 0.0157289505004883 0.0200000000000102 0.0200000000000102 0.0 794
-795 0.0402889251708984 0.039999999999992 0.039999999999992 0.0 795
-796 0.0161571502685547 0.0200000000000102 0.0200000000000102 0.0 796
-797 0.0203540325164795 0.0199999999999818 0.0199999999999818 0.0 797
-798 0.0160300731658936 0.0100000000000193 0.0100000000000193 0.0 798
-799 0.0157592296600342 0.0199999999999818 0.0199999999999818 0.0 799
-800 0.0156340599060059 0.0200000000000102 0.0200000000000102 0.0 800
-801 0.0156660079956055 0.00999999999999091 0.00999999999999091 0.0 801
-802 0.0413990020751953 0.0400000000000205 0.0400000000000205 0.0 802
-803 0.0160489082336426 0.0199999999999818 0.0199999999999818 0.0 803
-804 0.0158998966217041 0.00999999999999091 0.00999999999999091 0.0 804
-805 0.0157411098480225 0.0200000000000102 0.0200000000000102 0.0 805
-806 0.01564621925354 0.0200000000000102 0.0200000000000102 0.0 806
-807 0.0156128406524658 0.00999999999999091 0.00999999999999091 0.0 807
-808 0.0405199527740479 0.039999999999992 0.039999999999992 0.0 808
-809 0.0189261436462402 0.0200000000000102 0.0200000000000102 0.0 809
-810 0.0164599418640137 0.0200000000000102 0.0200000000000102 0.0 810
-811 0.0159981250762939 0.00999999999999091 0.00999999999999091 0.0 811
-812 0.0159931182861328 0.0200000000000102 0.0200000000000102 0.0 812
-813 0.0164968967437744 0.0199999999999818 0.0199999999999818 0.0 813
-814 0.0156979560852051 0.0100000000000193 0.0100000000000193 0.0 814
-815 0.0407021045684814 0.039999999999992 0.039999999999992 0.0 815
-816 0.0162220001220703 0.0199999999999818 0.0199999999999818 0.0 816
-817 0.0161950588226318 0.0200000000000102 0.0200000000000102 0.0 817
-818 0.016150951385498 0.00999999999999091 0.00999999999999091 0.0 818
-819 0.0162560939788818 0.0200000000000102 0.0200000000000102 0.0 819
-820 0.0156610012054443 0.00999999999999091 0.00999999999999091 0.0 820
-821 0.0164270401000977 0.0200000000000102 0.0200000000000102 0.0 821
-822 0.0451018810272217 0.0500000000000114 0.0500000000000114 0.0 822
-823 0.0159950256347656 0.00999999999999091 0.00999999999999091 0.0 823
-824 0.015963077545166 0.0200000000000102 0.0200000000000102 0.0 824
-825 0.0158100128173828 0.00999999999999091 0.00999999999999091 0.0 825
-826 0.0157589912414551 0.0200000000000102 0.0200000000000102 0.0 826
-827 0.0156979560852051 0.00999999999999091 0.00999999999999091 0.0 827
-828 0.0408341884613037 0.0499999999999829 0.0499999999999829 0.0 828
-829 0.0160629749298096 0.0100000000000193 0.0100000000000193 0.0 829
-830 0.015963077545166 0.0199999999999818 0.0199999999999818 0.0 830
-831 0.0164670944213867 0.0100000000000193 0.0100000000000193 0.0 831
-832 0.0157999992370605 0.0199999999999818 0.0199999999999818 0.0 832
-833 0.0158040523529053 0.0200000000000102 0.0200000000000102 0.0 833
-834 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 834
-835 0.0431559085845947 0.0400000000000205 0.0400000000000205 0.0 835
-836 0.0160439014434814 0.00999999999999091 0.00999999999999091 0.0 836
-837 0.0160748958587646 0.0200000000000102 0.0200000000000102 0.0 837
-838 0.015887975692749 0.00999999999999091 0.00999999999999091 0.0 838
-839 0.0156698226928711 0.0200000000000102 0.0200000000000102 0.0 839
-840 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 840
-841 0.044741153717041 0.0500000000000114 0.0500000000000114 0.0 841
-842 0.018258810043335 0.0199999999999818 0.0199999999999818 0.0 842
-843 0.0159640312194824 0.0100000000000193 0.0100000000000193 0.0 843
-844 0.0158689022064209 0.0199999999999818 0.0199999999999818 0.0 844
-845 0.0158030986785889 0.0200000000000102 0.0200000000000102 0.0 845
-846 0.0156970024108887 0.00999999999999091 0.00999999999999091 0.0 846
-847 0.0167360305786133 0.0200000000000102 0.0200000000000102 0.0 847
-848 0.0449869632720947 0.039999999999992 0.039999999999992 0.0 848
-849 0.0159621238708496 0.0200000000000102 0.0200000000000102 0.0 849
-850 0.0158789157867432 0.0200000000000102 0.0200000000000102 0.0 850
-851 0.0166089534759521 0.00999999999999091 0.00999999999999091 0.0 851
-852 0.0156459808349609 0.0200000000000102 0.0200000000000102 0.0 852
-853 0.0158588886260986 0.00999999999999091 0.00999999999999091 0.0 853
-854 0.0406129360198975 0.039999999999992 0.039999999999992 0.0 854
-855 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 855
-856 0.0158100128173828 0.0199999999999818 0.0199999999999818 0.0 856
-857 0.0157890319824219 0.0100000000000193 0.0100000000000193 0.0 857
-858 0.015923023223877 0.0199999999999818 0.0199999999999818 0.0 858
-859 0.0155861377716064 0.0100000000000193 0.0100000000000193 0.0 859
-860 0.0188548564910889 0.0199999999999818 0.0199999999999818 0.0 860
-861 0.0412931442260742 0.0400000000000205 0.0400000000000205 0.0 861
-862 0.0165369510650635 0.0199999999999818 0.0199999999999818 0.0 862
-863 0.0160419940948486 0.0200000000000102 0.0200000000000102 0.0 863
-864 0.0164439678192139 0.00999999999999091 0.00999999999999091 0.0 864
-865 0.0157101154327393 0.0200000000000102 0.0200000000000102 0.0 865
-866 0.0156807899475098 0.00999999999999091 0.00999999999999091 0.0 866
-867 0.0156638622283936 0.0200000000000102 0.0200000000000102 0.0 867
-868 0.040902853012085 0.039999999999992 0.039999999999992 0.0 868
-869 0.0159800052642822 0.0200000000000102 0.0200000000000102 0.0 869
-870 0.0166110992431641 0.00999999999999091 0.00999999999999091 0.0 870
-871 0.017413854598999 0.0200000000000102 0.0200000000000102 0.0 871
-872 0.0192930698394775 0.0199999999999818 0.0199999999999818 0.0 872
-873 0.0160510540008545 0.0100000000000193 0.0100000000000193 0.0 873
-874 0.0406858921051025 0.0499999999999829 0.0499999999999829 0.0 874
-875 0.0160770416259766 0.0100000000000193 0.0100000000000193 0.0 875
-876 0.0161919593811035 0.0199999999999818 0.0199999999999818 0.0 876
-877 0.015955924987793 0.0100000000000193 0.0100000000000193 0.0 877
-878 0.0158419609069824 0.0199999999999818 0.0199999999999818 0.0 878
-879 0.0157468318939209 0.0200000000000102 0.0200000000000102 0.0 879
-880 0.0157167911529541 0.00999999999999091 0.00999999999999091 0.0 880
-881 0.040755033493042 0.039999999999992 0.039999999999992 0.0 881
-882 0.0160150527954102 0.0200000000000102 0.0200000000000102 0.0 882
-883 0.0159170627593994 0.00999999999999091 0.00999999999999091 0.0 883
-884 0.0180459022521973 0.0200000000000102 0.0200000000000102 0.0 884
-885 0.01603102684021 0.0200000000000102 0.0200000000000102 0.0 885
-886 0.0156559944152832 0.00999999999999091 0.00999999999999091 0.0 886
-887 0.040722131729126 0.039999999999992 0.039999999999992 0.0 887
-888 0.0161468982696533 0.0200000000000102 0.0200000000000102 0.0 888
-889 0.0159561634063721 0.0200000000000102 0.0200000000000102 0.0 889
-890 0.0158951282501221 0.00999999999999091 0.00999999999999091 0.0 890
-891 0.0195560455322266 0.0199999999999818 0.0199999999999818 0.0 891
-892 0.0194118022918701 0.0200000000000102 0.0200000000000102 0.0 892
-893 0.0158801078796387 0.0200000000000102 0.0200000000000102 0.0 893
-894 0.0406708717346191 0.039999999999992 0.039999999999992 0.0 894
-895 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 895
-896 0.0185558795928955 0.0200000000000102 0.0200000000000102 0.0 896
-897 0.0165250301361084 0.0200000000000102 0.0200000000000102 0.0 897
-898 0.0156872272491455 0.00999999999999091 0.00999999999999091 0.0 898
-899 0.0156629085540771 0.0200000000000102 0.0200000000000102 0.0 899
-900 0.0411269664764404 0.039999999999992 0.039999999999992 0.0 900
-901 0.0161049365997314 0.0200000000000102 0.0200000000000102 0.0 901
-902 0.0159130096435547 0.00999999999999091 0.00999999999999091 0.0 902
-903 0.0158100128173828 0.0199999999999818 0.0199999999999818 0.0 903
-904 0.0157549381256104 0.0200000000000102 0.0200000000000102 0.0 904
-905 0.0155808925628662 0.00999999999999091 0.00999999999999091 0.0 905
-906 0.0157089233398438 0.0200000000000102 0.0200000000000102 0.0 906
-907 0.040733814239502 0.039999999999992 0.039999999999992 0.0 907
-908 0.0157508850097656 0.0100000000000193 0.0100000000000193 0.0 908
-909 0.0190198421478271 0.0199999999999818 0.0199999999999818 0.0 909
-910 0.0157220363616943 0.0200000000000102 0.0200000000000102 0.0 910
-911 0.0156431198120117 0.00999999999999091 0.00999999999999091 0.0 911
-912 0.0163240432739258 0.0200000000000102 0.0200000000000102 0.0 912
-913 0.0405840873718262 0.039999999999992 0.039999999999992 0.0 913
-914 0.0158839225769043 0.0200000000000102 0.0200000000000102 0.0 914
-915 0.0158710479736328 0.00999999999999091 0.00999999999999091 0.0 915
-916 0.0157589912414551 0.0200000000000102 0.0200000000000102 0.0 916
-917 0.0157959461212158 0.00999999999999091 0.00999999999999091 0.0 917
-918 0.0156550407409668 0.0200000000000102 0.0200000000000102 0.0 918
-919 0.0157132148742676 0.0199999999999818 0.0199999999999818 0.0 919
-920 0.0412201881408691 0.0400000000000205 0.0400000000000205 0.0 920
-921 0.0189180374145508 0.0199999999999818 0.0199999999999818 0.0 921
-922 0.0160009860992432 0.0100000000000193 0.0100000000000193 0.0 922
-923 0.0156481266021729 0.0199999999999818 0.0199999999999818 0.0 923
-924 0.0155301094055176 0.0100000000000193 0.0100000000000193 0.0 924
-925 0.015531063079834 0.0199999999999818 0.0199999999999818 0.0 925
-926 0.0156428813934326 0.0200000000000102 0.0200000000000102 0.0 926
-927 0.0410211086273193 0.039999999999992 0.039999999999992 0.0 927
-928 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 928
-929 0.0158920288085938 0.0200000000000102 0.0200000000000102 0.0 929
-930 0.0157539844512939 0.00999999999999091 0.00999999999999091 0.0 930
-931 0.0157601833343506 0.0200000000000102 0.0200000000000102 0.0 931
-932 0.0157170295715332 0.0200000000000102 0.0200000000000102 0.0 932
-933 0.041064977645874 0.039999999999992 0.039999999999992 0.0 933
-934 0.0186421871185303 0.0200000000000102 0.0200000000000102 0.0 934
-935 0.0160388946533203 0.00999999999999091 0.00999999999999091 0.0 935
-936 0.0158660411834717 0.0200000000000102 0.0200000000000102 0.0 936
-937 0.0163609981536865 0.00999999999999091 0.00999999999999091 0.0 937
-938 0.0156807899475098 0.0200000000000102 0.0200000000000102 0.0 938
-939 0.0157260894775391 0.0199999999999818 0.0199999999999818 0.0 939
-940 0.0416240692138672 0.039999999999992 0.039999999999992 0.0 940
-941 0.0218920707702637 0.0200000000000102 0.0200000000000102 0.0 941
-942 0.015984058380127 0.0200000000000102 0.0200000000000102 0.0 942
-943 0.0157361030578613 0.00999999999999091 0.00999999999999091 0.0 943
-944 0.015678882598877 0.0200000000000102 0.0200000000000102 0.0 944
-945 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 945
-946 0.0436809062957764 0.0500000000000114 0.0500000000000114 0.0 946
-947 0.016185998916626 0.00999999999999091 0.00999999999999091 0.0 947
-948 0.0159549713134766 0.0200000000000102 0.0200000000000102 0.0 948
-949 0.015841007232666 0.00999999999999091 0.00999999999999091 0.0 949
-950 0.0157299041748047 0.0200000000000102 0.0200000000000102 0.0 950
-951 0.0167520046234131 0.0199999999999818 0.0199999999999818 0.0 951
-952 0.0157999992370605 0.0100000000000193 0.0100000000000193 0.0 952
-953 0.0407941341400146 0.039999999999992 0.039999999999992 0.0 953
-954 0.0159251689910889 0.0199999999999818 0.0199999999999818 0.0 954
-955 0.0158488750457764 0.0100000000000193 0.0100000000000193 0.0 955
-956 0.0157351493835449 0.0199999999999818 0.0199999999999818 0.0 956
-957 0.0157461166381836 0.0100000000000193 0.0100000000000193 0.0 957
-958 0.0157830715179443 0.00999999999999091 0.00999999999999091 0.0 958
-959 0.0440328121185303 0.0400000000000205 0.0400000000000205 0.0 959
-960 0.0163891315460205 0.0199999999999818 0.0199999999999818 0.0 960
-961 0.0172231197357178 0.0200000000000102 0.0200000000000102 0.0 961
-962 0.0159628391265869 0.00999999999999091 0.00999999999999091 0.0 962
-963 0.0158162117004395 0.0200000000000102 0.0200000000000102 0.0 963
-964 0.0156660079956055 0.0200000000000102 0.0200000000000102 0.0 964
-965 0.0156989097595215 0.00999999999999091 0.00999999999999091 0.0 965
-966 0.0409789085388184 0.039999999999992 0.039999999999992 0.0 966
-967 0.0159859657287598 0.0200000000000102 0.0200000000000102 0.0 967
-968 0.0158331394195557 0.00999999999999091 0.00999999999999091 0.0 968
-969 0.0157871246337891 0.0200000000000102 0.0200000000000102 0.0 969
-970 0.0163278579711914 0.0199999999999818 0.0199999999999818 0.0 970
-971 0.0156929492950439 0.0100000000000193 0.0100000000000193 0.0 971
-972 0.0429351329803467 0.039999999999992 0.039999999999992 0.0 972
-973 0.0161349773406982 0.0100000000000193 0.0100000000000193 0.0 973
-974 0.0159289836883545 0.0199999999999818 0.0199999999999818 0.0 974
-975 0.0159060955047607 0.0100000000000193 0.0100000000000193 0.0 975
-976 0.0160870552062988 0.0199999999999818 0.0199999999999818 0.0 976
-977 0.0157091617584229 0.0100000000000193 0.0100000000000193 0.0 977
-978 0.0156669616699219 0.00999999999999091 0.00999999999999091 0.0 978
-979 0.0407209396362305 0.039999999999992 0.039999999999992 0.0 979
-980 0.0159940719604492 0.0200000000000102 0.0200000000000102 0.0 980
-981 0.0158989429473877 0.00999999999999091 0.00999999999999091 0.0 981
-982 0.0158960819244385 0.0200000000000102 0.0200000000000102 0.0 982
-983 0.0157449245452881 0.0200000000000102 0.0200000000000102 0.0 983
-984 0.0183939933776855 0.00999999999999091 0.00999999999999091 0.0 984
-985 0.0408549308776855 0.039999999999992 0.039999999999992 0.0 985
-986 0.016895055770874 0.0200000000000102 0.0200000000000102 0.0 986
-987 0.0159039497375488 0.0200000000000102 0.0200000000000102 0.0 987
-988 0.0158200263977051 0.00999999999999091 0.00999999999999091 0.0 988
-989 0.0157120227813721 0.0200000000000102 0.0200000000000102 0.0 989
-990 0.0156378746032715 0.00999999999999091 0.00999999999999091 0.0 990
-991 0.0228080749511719 0.0300000000000011 0.0300000000000011 0.0 991
-992 0.0409870147705078 0.039999999999992 0.039999999999992 0.0 992
-993 0.0157871246337891 0.00999999999999091 0.00999999999999091 0.0 993
-994 0.0158090591430664 0.0200000000000102 0.0200000000000102 0.0 994
-995 0.0157351493835449 0.0200000000000102 0.0200000000000102 0.0 995
-996 0.0185980796813965 0.00999999999999091 0.00999999999999091 0.0 996
-997 0.0160398483276367 0.0100000000000193 0.0100000000000193 0.0 997
-998 0.0404281616210938 0.039999999999992 0.039999999999992 0.0 998
-999 0.0159862041473389 0.0200000000000102 0.0200000000000102 0.0 999
-1000 0.0166270732879639 0.00999999999999091 0.00999999999999091 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat
deleted file mode 100644
index 465df2005..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.157087197207005
-3 -0.179374358706398
-4 -0.172816500237501
-5 -0.172100634304929
-6 -0.18168246758723
-7 0.131584075287582
-8 0.679752237368679
-9 -0.163860297278845
-10 -0.170882707294366
-11 -0.166375603226363
-12 -0.174254444639597
-13 -0.173888868337232
-14 0.433940412821542
-15 0.373069309028039
-16 -0.171649802572127
-17 -0.169200630892492
-18 -0.166138159457362
-19 -0.1739364332791
-20 -0.127425006116119
-21 0.638263694934923
-22 0.12818251876092
-23 -0.175688598458062
-24 -0.170582005696374
-25 -0.165295475640757
-26 -0.177492415685482
-27 0.0465831397893705
-28 0.599451138773896
-29 -0.00135765066794861
-30 -0.177033357980592
-31 -0.16635596602023
-32 -0.166602977483835
-33 -0.178673562542768
-34 0.266392442433904
-35 0.432387768599705
-36 -0.0637700252002599
-37 -0.158118264958072
-38 -0.154561138423435
-39 -0.168429948675986
-40 -0.0994325786160257
-41 0.367997918823535
-42 0.290384046265292
-43 -0.11116281208171
-44 -0.175373024280893
-45 -0.160272110090895
-46 -0.164805593524448
-47 0.0550278238782237
-48 0.351023276202299
-49 0.189193346917991
-50 -0.138321616409331
-51 -0.174504050225761
-52 -0.161113173550488
-53 -0.152964238493074
-54 0.191038921821061
-55 0.288997249517505
-56 0.112554121399719
-57 -0.149706886466374
-58 -0.170685450581499
-59 -0.160759706621769
-60 -0.0696049681599959
-61 0.233811635314305
-62 0.22571473291272
-63 0.0469231721057327
-64 -0.157850957680934
-65 -0.16305911351091
-66 -0.156231122634058
-67 0.0491468744009525
-68 0.211267819802324
-69 0.187107177066929
-70 -0.0139870239184726
-71 -0.170483645145253
-72 -0.155686290284564
-73 -0.103000811390189
-74 0.138570030181668
-75 0.173843340323656
-76 0.143423232074103
-77 -0.0485241530965123
-78 -0.17395256767516
-79 -0.152395667614926
-80 -0.0364997518056447
-81 0.131378028895852
-82 0.157204475464315
-83 0.107865380703487
-84 -0.0772032951733248
-85 -0.168140171271818
-86 -0.144858575319744
-87 0.0510940822285813
-88 0.124231830951662
-89 0.116480579259527
-90 0.0733005231661278
-91 -0.103673077903456
-92 -0.163789078187485
-93 -0.0843697533408863
-94 0.0927359518979788
-95 0.0900559027837676
-96 0.104664222340361
-97 0.0382789156324802
-98 -0.128374408331222
-99 -0.15642261126302
-100 -0.00667308165088894
-101 0.0851277709144437
-102 0.0836018530451663
-103 0.0884188000954497
-104 0.00709279611310642
-105 -0.144660181300486
-106 -0.138143070220052
-107 0.0562816525685598
-108 0.0595077406929604
-109 0.0867173037785974
-110 0.0826832811453164
-111 -0.0160964251569884
-112 -0.155747087099804
-113 -0.0673832956811193
-114 0.0555412723389198
-115 0.0535188804439087
-116 0.0598230946420233
-117 0.0535276678974355
-118 -0.0458652924354906
-119 -0.153114302912901
-120 0.00982696548054891
-121 0.046672474075762
-122 0.0376959986943637
-123 0.0573772097995026
-124 0.0291609863119664
-125 -0.0720491385088587
-126 -0.119574247127328
-127 0.0398229760968292
-128 0.0368708833970769
-129 0.0378810523621832
-130 0.0440552599869543
-131 0.0168785446700554
-132 -0.100876176445281
-133 -0.0522667691021854
-134 0.036471105657028
-135 0.0215593152266718
-136 0.0332088835541183
-137 0.0406116641053865
-138 -0.000575792803151212
-139 -0.110182879489659
-140 0.0119148280486452
-141 0.0103606549224577
-142 0.0174203821210768
-143 0.0264660206850527
-144 0.0279556175958258
-145 -0.0101677743859891
-146 -0.0714378616054869
-147 0.0268904165103586
-148 0.0197546838971675
-149 0.0020125342918206
-150 0.0208048892753844
-151 0.0177433252225432
-152 -0.0412629401386729
-153 -0.0331295172833144
-154 0.0185158552578208
-155 0.0109488606569471
-156 0.00829546562841099
-157 0.0193950108790453
-158 0.00363009909349868
-159 -0.0424508741873948
-160 0.00483444603011959
-161 0.00251257763944739
-162 -0.0027291007330315
-163 0.00583978101322954
-164 0.0119526210929789
-165 0.00202945630944433
-166 -0.0133120914217794
-167 -0.0012297645717332
-168 0.00270288118433543
-169 -0.00541306317192281
-170 0.00344801669308451
-171 -7.06221686644991e-05
-172 -0.0128411948649165
-173 0.0258140753965777
-174 -0.00838152285590955
-175 0.00457554209144489
-176 -0.0212504244136124
-177 0.00405744330785776
-178 0.00109889713027893
-179 -0.00653340121943499
-180 0.0251074943438506
-181 0.00390303260107667
-182 -0.00701005779107689
-183 -0.0065141088117886
-184 -0.00279230972823837
-185 -0.00416383972424965
-186 0.0262707341683331
-187 0.00819057184579269
-188 -0.00340288166837825
-189 -0.0143930625406389
-190 -0.0253314001312743
-191 -0.00185836549539233
-192 0.00104764466063349
-193 0.0539677516048275
-194 -0.0100541189143094
-195 -0.00921746463253617
-196 -0.0149462313841975
-197 -0.0188238663657463
-198 -0.0175064441267539
-199 0.020760922122737
-200 0.0554307275152524
-201 -0.0148112905353319
-202 -0.0127466158713358
-203 -0.0243021923478065
-204 -0.0209159713475539
-205 -0.0114124320328544
-206 0.0397229436097326
-207 0.0456075315085741
-208 -0.0215007018820454
-209 -0.0144624346486559
-210 -0.0322330130568126
-211 -0.00825272885493334
-212 -0.0149224222346792
-213 0.0682032593962929
-214 0.0121011513942831
-215 -0.0169882789240117
-216 -0.0149704075424761
-217 -0.0387466974669077
-218 -0.00399663244288092
-219 0.017199112436661
-220 0.0760951670626158
-221 0.000771488467078772
-222 -0.0299297731350407
-223 -0.00961973831748005
-224 -0.0472117112712389
-225 -0.0172398450528946
-226 0.0399982487996819
-227 0.0668906972411487
-228 -0.0195152172068293
-229 -0.0118748121155119
-230 -0.0328125031882784
-231 -0.0308080129381723
-232 -0.0122390206650683
-233 0.0689451191829333
-234 0.029994234380722
-235 -0.0160522469025481
-236 -0.0138652708623251
-237 -0.0507286056559315
-238 -0.0108444844897431
-239 -0.000749122945858211
-240 0.0707991870940562
-241 0.0267001298657314
-242 -0.0303467049269583
-243 -0.0132703522046187
-244 -0.0519324123908225
-245 -0.020827887860283
-246 0.035011894574258
-247 0.071041404155295
-248 0.00264333590518284
-249 -0.0324109538103439
-250 -0.0173917664974712
-251 -0.0488496793294092
-252 -0.0141041170429656
-253 0.0508320887854303
-254 0.0750173132102245
-255 -0.0141435331710239
-256 -0.0149919228080718
-257 -0.0363809443035875
-258 -0.044180318575384
-259 0.0137303280992071
-260 0.0453890157170559
-261 0.0499450703384104
-262 -0.0214405609870375
-263 -0.0171265875233509
-264 -0.0483467081512779
-265 -0.0238039375745267
-266 0.0297704275693148
-267 0.0477795017107822
-268 0.0306806785398672
-269 -0.0241732516868213
-270 -0.0232177034439842
-271 -0.0561919945895127
-272 -0.0121383708530614
-273 0.0383380316167486
-274 0.0692068597048456
-275 -0.0037308740073283
-276 -0.0238823990824962
-277 -0.0233175869444128
-278 -0.0466628437090312
-279 0.00124369697752989
-280 0.033635887914297
-281 0.0595585462605596
-282 -0.00471883892563787
-283 -0.022010928895564
-284 -0.0396393069529268
-285 -0.047610976414541
-286 0.0330006232948636
-287 0.0280762592215935
-288 0.0546372734557523
-289 -0.0127989574716365
-290 -0.0191221337324256
-291 -0.0441318227203198
-292 -0.0234180780296535
-293 0.0323850514195515
-294 0.0485470915014664
-295 0.0233514564784711
-296 -0.014986868171212
-297 -0.0303748609767652
-298 -0.0492165541971281
-299 -0.000385604501460381
-300 0.0269531666988284
-301 0.0565609923395246
-302 0.00593180901393307
-303 -0.0139487837507826
-304 -0.0382587858091347
-305 -0.0491851369445174
-306 0.0160807177510981
-307 0.0361087651605283
-308 0.0389978157300904
-309 0.00502802264445259
-310 -0.0214508646037847
-311 -0.0382274859105765
-312 -0.0406626513624875
-313 0.0280699039368022
-314 0.0389617980418346
-315 0.0271371634582089
-316 0.00383396360577986
-317 -0.0368406522772554
-318 -0.0386138394670918
-319 -0.0144256141856596
-320 0.0269236337036347
-321 0.0378611438537414
-322 0.0209886410948846
-323 -0.000452113297036075
-324 -0.0449001716863398
-325 -0.0362164044779451
-326 -0.00595679435360415
-327 0.0506843309155259
-328 0.0326573572134026
-329 0.0107949518760053
-330 -0.00524263889747431
-331 -0.045061910257765
-332 -0.0336081125622954
-333 0.0142902742395516
-334 0.0327621408145429
-335 0.0232224714127171
-336 0.0111851134672308
-337 -0.0168616046652318
-338 -0.0421660588992697
-339 -0.0304729350756775
-340 0.0315110873281277
-341 0.0393883283265487
-342 0.00688623370858959
-343 0.0155748729948725
-344 -0.0396114220680361
-345 -0.036903793556725
-346 -0.0106964102495091
-347 0.0321472442987069
-348 0.0291161569873515
-349 0.0127286036167739
-350 0.0131191581487462
-351 -0.0510684340547118
-352 -0.037342914226626
-353 0.00800616948303765
-354 0.0353286314592821
-355 0.0224843093277485
-356 0.00483640438097458
-357 0.00270936967225743
-358 -0.050958398888098
-359 -0.03181357197987
-360 0.0263165400282428
-361 0.0337466198913848
-362 0.0138214636037434
-363 0.0161643781357266
-364 -0.0166975714811741
-365 -0.0379548808112395
-366 -0.0107191330666086
-367 0.0151768728627536
-368 0.0330707869037677
-369 0.00862332944835417
-370 0.0126881690782585
-371 -0.035143571537685
-372 -0.0379591383040581
-373 0.0034903385393575
-374 0.0262443107228041
-375 0.0239169076988401
-376 0.0117645257098411
-377 0.00667620811923268
-378 -0.0487466537790665
-379 -0.0248323076320059
-380 0.00853369884513661
-381 0.0254571493249656
-382 0.0158332997765884
-383 0.0152150967683835
-384 -0.00560022391839541
-385 -0.0468960628871472
-386 -0.0122137430122784
-387 0.0195354222281915
-388 0.0205785620197055
-389 0.00640951181213936
-390 0.0192254336021024
-391 -0.0213684050918215
-392 -0.0390677938838948
-393 -0.00851270390379209
-394 0.0198814929031009
-395 0.0221284736508306
-396 0.0144170779179485
-397 0.00761346746337475
-398 -0.0341642702201187
-399 -0.0182072192904153
-400 -0.000917427430821407
-401 0.0240923988301287
-402 0.0149702208233445
-403 0.0254338021686953
-404 -0.0114315718167618
-405 -0.0367784109383449
-406 -0.0203107293220967
-407 0.0207711450646343
-408 0.00769317821995912
-409 0.0155113277213562
-410 0.0188010420230405
-411 -0.00588271186449876
-412 -0.0453215571077292
-413 -0.0023477078738424
-414 0.0045635114773767
-415 0.0193832767222524
-416 0.0126157524584856
-417 0.0125919924992071
-418 -0.022128831828596
-419 -0.0316624813090816
-420 0.00848651912597777
-421 0.00365846968970242
-422 0.0167934861719605
-423 0.0258369213405359
-424 -0.0110386479254365
-425 -0.0221266194130739
-426 -0.0342359305340173
-427 0.0198173965590731
-428 0.0113340288154053
-429 0.0117321942610559
-430 0.0199069545235314
-431 -0.00972019619126481
-432 -0.0334368587948193
-433 -0.00818672582858474
-434 0.00847403279906724
-435 0.0151410616338098
-436 0.0210571960796968
-437 0.0106767873737501
-438 -0.013923260538601
-439 -0.0295951598444345
-440 -0.00213381404969862
-441 0.00202904020725609
-442 0.0229482306295094
-443 0.0184877779142267
-444 -0.00967213617656215
-445 -0.00921421284518073
-446 -0.0235983767065866
-447 -0.00275565709687977
-448 0.00850528936282641
-449 0.021653187958436
-450 0.0175868623090648
-451 -0.0158567287280081
-452 -0.0197244183098808
-453 -0.0181122740176874
-454 0.0114885559203587
-455 0.00821969307220109
-456 0.0172333504264287
-457 0.0166219780995992
-458 -0.0218887409079099
-459 -0.0166096810167506
-460 -0.0175255182955902
-461 0.0155549717347949
-462 0.0109524688624427
-463 0.0108083192821273
-464 0.0109544410525194
-465 -0.012075150479233
-466 -0.0316229939529222
-467 -0.00616925120907086
-468 0.0132996349281117
-469 0.0194985827103642
-470 0.0118786255995167
-471 -0.00394060339988717
-472 -0.0074504553199804
-473 -0.0216171208389261
-474 0.00601096062326295
-475 0.00225300714016349
-476 0.0328870249803732
-477 -0.00143854393918084
-478 -0.0125765646700796
-479 -0.00518610856295871
-480 -0.0286671364514193
-481 0.0114893086586308
-482 0.0101767599569462
-483 0.0215358355330199
-484 0.0100013983093797
-485 -0.0189420875106819
-486 -0.0170156842542937
-487 -0.0181219245592761
-488 0.0134350210494302
-489 0.0157200832610872
-490 0.00820671869127948
-491 0.00609605427848417
-492 -0.00964792789764855
-493 -0.0280629491471991
-494 -0.00119096663786943
-495 0.0059816978766158
-496 0.0319195128927636
-497 -0.00616844922211785
-498 -0.00300183927697173
-499 -0.00255830020653143
-500 -0.0326795727885289
-501 0.00737460740372866
-502 0.0101738406924715
-503 0.0166480802410528
-504 0.0101781028011199
-505 -0.0148697505539931
-506 -0.00932908806811421
-507 -0.0228291650465262
-508 0.016317603272819
-509 0.0251213315783841
-510 0.00429219423365217
-511 0.00509519846591672
-512 -0.0118288041004493
-513 -0.0182276341829169
-514 -0.0136524793951616
-515 0.0125652837072878
-516 0.0237831170063298
-517 0.000525824158270796
-518 0.000861207866418543
-519 -0.000309524320918211
-520 -0.0319611866775823
-521 0.00377002226899237
-522 0.00366677706502651
-523 0.0238709877277231
-524 -0.00194721509431841
-525 -0.00532831903040821
-526 -0.0035954903575234
-527 -0.0265125935766282
-528 0.00819935557807736
-529 0.0187116031801041
-530 0.00335323640794092
-531 0.0093979106751416
-532 -0.00717619909651022
-533 -0.0222889570534225
-534 -0.0159873555724934
-535 0.0155232558898349
-536 0.0188575547550394
-537 0.00257632001432395
-538 0.0109600141670179
-539 -0.0136168353942696
-540 -0.0286265327239912
-541 -0.00493532024944744
-542 0.0131483720919412
-543 0.0207593713409036
-544 0.00752548764010655
-545 0.0101794683902496
-546 -0.00944756530014968
-547 -0.0361193792524987
-548 0.00900784799603882
-549 0.00814620931366632
-550 0.0118963349468229
-551 0.00869181440821501
-552 0.00553664631914035
-553 -0.0235896662674149
-554 -0.0213031930671748
-555 0.0144191547013866
-556 0.00985740627307818
-557 0.0146461357237841
-558 -0.00329509825327045
-559 0.00861808586430692
-560 -0.0382908781734418
-561 -0.00810416928099721
-562 0.0152325822988648
-563 0.0108896546286742
-564 0.0197283233093635
-565 -0.00597279642964848
-566 0.00549346286324277
-567 -0.0441402987586487
-568 0.00442694223265451
-569 0.00895528979634627
-570 0.00314478664849838
-571 0.0275939863464633
-572 -0.000211275077900297
-573 -0.0157780481890476
-574 -0.0348847108726074
-575 0.0178433894654182
-576 0.00358880348184893
-577 0.00325401416563326
-578 0.0168304732698679
-579 0.00759458115231633
-580 -0.0249153562132231
-581 -0.0148180695954744
-582 0.0108144203245513
-583 0.0147457973792171
-584 0.00442055500088463
-585 0.0113147505801929
-586 0.00208502530934012
-587 -0.0369024921021571
-588 -0.00738632772951817
-589 0.00992698216785421
-590 0.00762460161308267
-591 0.0264602045744605
-592 0.00179884430710083
-593 -0.0065858667702633
-594 -0.0400946265552496
-595 0.00586629198250832
-596 0.00638016879591378
-597 -0.00334997345122169
-598 0.0378696957160481
-599 -0.00291662872883922
-600 -0.0150181756899771
-601 -0.0308267314085245
-602 0.00545487745877096
-603 0.0145056871276495
-604 -0.00111862002362357
-605 0.0274345659047568
-606 -0.00545886365985009
-607 -0.02134718500889
-608 -0.0168792261598091
-609 0.00235047714564286
-610 0.0115358557818356
-611 0.00892944549777402
-612 0.0175837325671957
-613 -0.00241533013968592
-614 -0.0397066859486968
-615 -0.000775410212127817
-616 0.010404414311518
-617 0.00622818135682105
-618 0.0256159561966313
-619 0.0100572818761881
-620 -0.00997184439752021
-621 -0.0370357127908402
-622 -0.009493683122773
-623 0.019991811173322
-624 0.00616915844764652
-625 0.0226334480172136
-626 -0.00170152998435823
-627 -0.00527269037631295
-628 -0.0310245966733844
-629 -0.00334664758487885
-630 0.0108099133488301
-631 0.0162472542900972
-632 0.0107638392138735
-633 -9.28636881484359e-05
-634 -0.0251735775995027
-635 -0.0175915903660944
-636 0.0064154965729608
-637 0.00918775959735482
-638 0.025607471670139
-639 0.00415316421623987
-640 -0.00555481869685676
-641 -0.0243730502242372
-642 -0.0236765581404991
-643 0.0132551374194837
-644 0.0159204978713982
-645 0.0182545204715289
-646 -0.00177344669143713
-647 -0.00410362457456551
-648 -0.0217821833150809
-649 -0.0187567646143839
-650 0.0108473001511633
-651 0.024234409213132
-652 0.0103373343092404
-653 0.0053494854974728
-654 -0.0116971189957597
-655 -0.025622749432742
-656 -0.00703489184924496
-657 0.0127306317732122
-658 0.0264660231555335
-659 0.00441275817266093
-660 -0.000498144331723384
-661 -0.0170193444138239
-662 -0.035755915518656
-663 0.0153452894744309
-664 0.0184392623502257
-665 0.0179210598556496
-666 0.00323237671435628
-667 -0.0143732162504404
-668 -0.0059072260888979
-669 -0.0424395347705013
-670 0.0182802454123028
-671 0.028027312899014
-672 0.0105955795585643
-673 0.00873541917286547
-674 -0.0180699323851307
-675 -0.0157035416270782
-676 -0.0243544633968205
-677 0.0122599065615016
-678 0.0293159679608981
-679 -0.0023542771968947
-680 0.0173160434772516
-681 -0.0192740489190438
-682 -0.0267558924656808
-683 -0.00512931356799544
-684 0.0160575949541419
-685 0.0188852073807438
-686 0.00138912191794047
-687 -0.00115067732885235
-688 -0.0058938945939148
-689 -0.0270293884074899
-690 0.000894104439656761
-691 0.0254384890333336
-692 0.0135759887351247
-693 0.00706307551413458
-694 -0.00983098745115802
-695 -0.0182029532724777
-696 -0.0188844337318011
-697 -0.000620495183408782
-698 0.031569666060583
-699 0.00247939842897875
-700 0.0175967326065924
-701 -0.0140127620939771
-702 -0.0204023919721389
-703 -0.0265270099155168
-704 0.0189279709581055
-705 0.0230696877886033
-706 0.00221980643869467
-707 0.00877474738492577
-708 -0.0162154001263846
-709 -0.0131109560281679
-710 -0.0175675796745332
-711 0.0223801164921319
-712 0.00577037578768595
-713 0.015016209026733
-714 0.000700464791035295
-715 -0.0265570398797467
-716 -0.00328487594267362
-717 -0.0125180962593854
-718 0.0282899511684865
-719 0.00190078369585563
-720 0.00988422939784888
-721 -0.00206231662877586
-722 -0.0260676646786268
-723 -0.00911966903113347
-724 -0.00349690376176947
-725 0.0311131205663657
-726 0.00982115201693743
-727 0.00380892869332063
-728 -0.0110636013291228
-729 -0.0147589149221332
-730 -0.0142665446241887
-731 0.0082820839740987
-732 0.0115944492459724
-733 0.0193205726321855
-734 -0.00599937049345255
-735 -0.0124413644991841
-736 -0.00567111710885452
-737 -0.0172490266022523
-738 0.0208711936714456
-739 0.0049112245490164
-740 0.0119338001717033
-741 -0.00382254745169823
-742 -0.0168037126507566
-743 -0.0106727427496242
-744 -0.0015896316832005
-745 0.00986670286392471
-746 0.0187708614601626
-747 0.00280713985351326
-748 -0.0103005824233574
-749 -0.00698856527705199
-750 -0.0148829004327279
-751 0.00737864042801781
-752 0.00378825958027056
-753 0.0169762573619787
-754 0.0022171253424174
-755 -0.00880275220702398
-756 -0.0113861610535219
-757 -0.00866954185078337
-758 -0.00102625777568937
-759 0.0153621406801242
-760 0.0175483371870747
-761 -0.0117316284519376
-762 0.00201727719536751
-763 -0.0135695524051989
-764 -0.00236628739393315
-765 -0.00558540481434592
-766 0.0269770620065138
-767 0.00572732432254425
-768 -0.0206632040359575
-769 0.00669734976955735
-770 -0.0177594319318436
-771 0.00610794003109065
-772 0.000941524893761258
-773 0.0184249836070844
-774 0.00603564044659765
-775 -0.0194800088175
-776 0.00211956864190904
-777 -0.010814553078384
-778 -0.00345880879440837
-779 0.00784989092108616
-780 0.0219931715670487
-781 -0.00850728907326284
-782 -0.00818020013943201
-783 -0.000161877820177968
-784 -0.00713626483576915
-785 -0.00189547729017052
-786 0.00606277375629014
-787 0.0175714822376805
-788 -0.0163318892122437
-789 0.00355096379727685
-790 -0.00561323769976105
-791 -0.00173115162828963
-792 0.00285124323851199
-793 0.00626988628820364
-794 0.00217746014515121
-795 -0.00760875508840939
-796 -0.000158305774946426
-797 0.000505966683014493
-798 -0.00693871262526605
-799 0.00898933345030533
-800 0.014710588776899
-801 -0.0127611881730304
-802 0.00195021147362958
-803 -0.00619101895130629
-804 0.0026189336260538
-805 -0.0119751993107655
-806 0.00863989985124942
-807 0.0162582664631878
-808 -0.00961705217558156
-809 -0.00291393696249613
-810 0.00183243185138599
-811 -0.00460631909363343
-812 -0.0119632672766042
-813 0.0208966630422238
-814 -0.00308347876710094
-815 -0.000388668719911606
-816 -0.00886871268574757
-817 0.0104410151238245
-818 -0.00971881568327177
-819 -0.00556079139249464
-820 0.0192762976108135
-821 -0.0107849691388102
-822 0.00749648811680043
-823 -0.0133743112470617
-824 0.0148954204098446
-825 -0.012870734248631
-826 0.00297854342027238
-827 0.00400991287076845
-828 -0.000776475806225986
-829 0.000157063854584776
-830 -0.00648190853333762
-831 0.00841895039070195
-832 -0.0106394491215173
-833 0.0131617346674597
-834 -0.0110557177073731
-835 0.0104656591658511
-836 -0.00271631743019652
-837 0.00120199415841236
-838 0.003706954798763
-839 -0.00947603640270401
-840 0.00137362489293886
-841 -0.00412100522419038
-842 0.00440555479849327
-843 -0.00101257629784826
-844 0.011630938869848
-845 -0.00348460872671806
-846 -0.00490788919767545
-847 -0.00767305606978742
-848 0.00641850027996645
-849 -0.0047270157313243
-850 0.006561877154592
-851 0.00346504126665878
-852 0.000325934762370315
-853 -0.00691243590442494
-854 -0.0122397831712401
-855 0.0155142896041314
-856 -0.00649940375329406
-857 0.0115764362511307
-858 -0.00166218348252304
-859 0.00329024056556213
-860 -0.0168163842675434
-861 -0.0018300046237477
-862 0.00782622924665259
-863 0.00184144237820109
-864 0.00564522536281571
-865 0.00166897889337862
-866 0.000762761808421144
-867 -0.0247108710871775
-868 0.0102945871423903
-869 0.00176524231160526
-870 0.0100435696701272
-871 -0.000881447853453438
-872 0.0077251769247763
-873 -0.00856838315554851
-874 -0.0147878775532851
-875 0.0032203221928359
-876 0.00271820057534821
-877 0.0150200342356852
-878 -0.00679910502968767
-879 0.00803734684491422
-880 -0.0129685352671973
-881 -0.00468207467932367
-882 -0.0040001560959317
-883 0.0127784032727213
-884 0.00689584536184243
-885 -0.00348378029753978
-886 0.00583835064957876
-887 -0.018431993579404
-888 -0.00543151914104362
-889 0.000930192838208099
-890 0.0189669669181415
-891 0.00197455166108111
-892 0.000291983829886991
-893 -0.00151890218051029
-894 -0.018758927675871
-895 -0.00427007831617855
-896 0.00873163971817387
-897 0.0116921446719301
-898 0.00493448763764004
-899 0.000812558628478896
-900 -0.00829685479660704
-901 -0.016774476024156
-902 -0.00284574091222063
-903 0.0166712115089998
-904 0.00393567866715527
-905 0.00970634578920477
-906 -0.0013135499413494
-907 -0.0151419078767085
-908 -0.014262642806324
-909 0.000679710286692927
-910 0.023632237447571
-911 -0.000293075867552849
-912 0.00963897961846078
-913 -0.00892745437111743
-914 -0.0141610280914154
-915 -0.0143929747783252
-916 0.0126331813801288
-917 0.0140072140155889
-918 0.0038464358463258
-919 0.00872792856356974
-920 -0.0142893223780218
-921 -0.0144626608008151
-922 -0.0106633311842541
-923 0.0182487172273735
-924 0.00789811928832441
-925 0.00674770411457765
-926 0.00151185223543001
-927 -0.0131662643971208
-928 -0.0130299725001482
-929 -0.000421100875615765
-930 0.0101012876932665
-931 0.0109771581904619
-932 0.00600630873622808
-933 -0.00610768057521272
-934 -0.0113069105169847
-935 -0.0108646539420972
-936 0.00681782689120027
-937 0.00453863835411057
-938 0.0128033807887734
-939 0.00558460964303299
-940 -0.0111413786231144
-941 -0.010741707945974
-942 -0.0073905294023225
-943 0.00509539616333849
-944 0.00789664081858827
-945 0.0156023411643847
-946 -0.00196863307695851
-947 -0.00929990689658537
-948 -0.0100501558671196
-949 -0.00713963769082725
-950 0.00529444925980778
-951 0.00907288818013118
-952 0.0159396165239691
-953 -0.0070169105795629
-954 -0.00871200515303164
-955 -0.00623272113762449
-956 -0.00859043676592199
-957 0.00750758667776515
-958 0.0114715494246097
-959 0.00783845600054901
-960 -0.00640762499905148
-961 -0.00791318713998704
-962 -0.00388200155080539
-963 -0.00821887932833072
-964 0.00969710527680486
-965 0.0132324446252105
-966 0.000588150241816455
-967 -0.00459312775024423
-968 -0.00661504524014442
-969 -0.00488536336284523
-970 -0.00665739535025808
-971 0.0119120087088002
-972 0.0129080825261635
-973 -0.00502738233144332
-974 -0.00424651006131981
-975 -0.00529584314204073
-976 -0.00401797749822628
-977 -0.00398629771407627
-978 0.0145696891837213
-979 0.00312400996929776
-980 -0.0024620797714283
-981 -0.0029972609662243
-982 -0.00374070711004024
-983 -0.00324300553128461
-984 -0.00266784725010517
-985 0.0142342444009173
-986 -0.00291146863667702
-987 -0.00123170535641386
-988 -0.00195500360676893
-989 -0.0018623417265137
-990 -0.0010940028343966
-991 -0.00012714389035354
-992 0.00601935720393536
-993 -0.00153575128302119
-994 -0.000790525971546018
-995 -0.000953092463346404
-996 -0.000631437937788914
-997 -5.86631399396442e-05
-998 0.000839644378016313
-999 -0.000137648586440022
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat
deleted file mode 100644
index 129091697..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.0308499336242676 0.0300000000000011 0.0300000000000011 0.0 1
-2 0.027501106262207 0.0299999999999976 0.0299999999999976 0.0 2
-3 0.0248689651489258 0.0200000000000031 0.0200000000000031 0.0 3
-4 0.0230190753936768 0.0199999999999996 0.0199999999999996 0.0 4
-5 0.0231549739837646 0.0299999999999976 0.0299999999999976 0.0 5
-6 0.0229060649871826 0.0200000000000031 0.0200000000000031 0.0 6
-7 0.0479171276092529 0.0499999999999972 0.0499999999999972 0.0 7
-8 0.0237171649932861 0.0199999999999996 0.0199999999999996 0.0 8
-9 0.0234429836273193 0.0200000000000031 0.0200000000000031 0.0 9
-10 0.0232129096984863 0.0299999999999976 0.0299999999999976 0.0 10
-11 0.0243880748748779 0.0199999999999996 0.0199999999999996 0.0 11
-12 0.0262730121612549 0.0300000000000011 0.0300000000000011 0.0 12
-13 0.022907018661499 0.0199999999999996 0.0199999999999996 0.0 13
-14 0.0502560138702393 0.0500000000000007 0.0500000000000007 0.0 14
-15 0.0239529609680176 0.0199999999999996 0.0199999999999996 0.0 15
-16 0.0233089923858643 0.0300000000000011 0.0300000000000011 0.0 16
-17 0.0230889320373535 0.0199999999999996 0.0199999999999996 0.0 17
-18 0.0229461193084717 0.0199999999999996 0.0199999999999996 0.0 18
-19 0.0228281021118164 0.0300000000000011 0.0300000000000011 0.0 19
-20 0.0227499008178711 0.0199999999999996 0.0199999999999996 0.0 20
-21 0.0519850254058838 0.0500000000000007 0.0500000000000007 0.0 21
-22 0.0238831043243408 0.0299999999999976 0.0299999999999976 0.0 22
-23 0.0233030319213867 0.0199999999999996 0.0199999999999996 0.0 23
-24 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 24
-25 0.0230100154876709 0.0199999999999996 0.0199999999999996 0.0 25
-26 0.0230438709259033 0.0199999999999996 0.0199999999999996 0.0 26
-27 0.0233631134033203 0.0199999999999996 0.0199999999999996 0.0 27
-28 0.0499250888824463 0.0500000000000007 0.0500000000000007 0.0 28
-29 0.0236561298370361 0.0300000000000011 0.0300000000000011 0.0 29
-30 0.0273551940917969 0.0199999999999996 0.0199999999999996 0.0 30
-31 0.0231010913848877 0.0300000000000011 0.0300000000000011 0.0 31
-32 0.0228641033172607 0.0199999999999996 0.0199999999999996 0.0 32
-33 0.0227639675140381 0.0199999999999996 0.0199999999999996 0.0 33
-34 0.0227780342102051 0.0199999999999996 0.0199999999999996 0.0 34
-35 0.0491790771484375 0.0500000000000007 0.0500000000000007 0.0 35
-36 0.0235280990600586 0.0300000000000011 0.0300000000000011 0.0 36
-37 0.0303738117218018 0.0299999999999976 0.0299999999999976 0.0 37
-38 0.0235600471496582 0.0199999999999996 0.0199999999999996 0.0 38
-39 0.0272340774536133 0.0300000000000011 0.0300000000000011 0.0 39
-40 0.0229921340942383 0.0199999999999996 0.0199999999999996 0.0 40
-41 0.0230140686035156 0.0199999999999996 0.0199999999999996 0.0 41
-42 0.0487380027770996 0.0500000000000007 0.0500000000000007 0.0 42
-43 0.0233781337738037 0.0300000000000011 0.0300000000000011 0.0 43
-44 0.0232539176940918 0.0199999999999996 0.0199999999999996 0.0 44
-45 0.0231471061706543 0.0199999999999996 0.0199999999999996 0.0 45
-46 0.0229659080505371 0.0300000000000011 0.0300000000000011 0.0 46
-47 0.0236260890960693 0.0199999999999996 0.0199999999999996 0.0 47
-48 0.0249731540679932 0.0299999999999976 0.0299999999999976 0.0 48
-49 0.0491600036621094 0.0400000000000027 0.0400000000000027 0.0 49
-50 0.0233979225158691 0.0299999999999976 0.0299999999999976 0.0 50
-51 0.0233068466186523 0.0200000000000031 0.0200000000000031 0.0 51
-52 0.0230197906494141 0.0199999999999996 0.0199999999999996 0.0 52
-53 0.023003101348877 0.0299999999999976 0.0299999999999976 0.0 53
-54 0.0229551792144775 0.0199999999999996 0.0199999999999996 0.0 54
-55 0.0227420330047607 0.0200000000000031 0.0200000000000031 0.0 55
-56 0.0490391254425049 0.0499999999999972 0.0499999999999972 0.0 56
-57 0.0280921459197998 0.0300000000000011 0.0300000000000011 0.0 57
-58 0.0237009525299072 0.0199999999999996 0.0199999999999996 0.0 58
-59 0.0233352184295654 0.0300000000000011 0.0300000000000011 0.0 59
-60 0.0229549407958984 0.0199999999999996 0.0199999999999996 0.0 60
-61 0.0229389667510986 0.0199999999999996 0.0199999999999996 0.0 61
-62 0.022536039352417 0.0300000000000011 0.0300000000000011 0.0 62
-63 0.0481998920440674 0.0399999999999991 0.0399999999999991 0.0 63
-64 0.0232841968536377 0.0300000000000011 0.0300000000000011 0.0 64
-65 0.0232529640197754 0.0199999999999996 0.0199999999999996 0.0 65
-66 0.026047945022583 0.0299999999999976 0.0299999999999976 0.0 66
-67 0.0240390300750732 0.0200000000000031 0.0200000000000031 0.0 67
-68 0.0229721069335938 0.0199999999999996 0.0199999999999996 0.0 68
-69 0.0479068756103516 0.0500000000000007 0.0500000000000007 0.0 69
-70 0.023643970489502 0.0199999999999996 0.0199999999999996 0.0 70
-71 0.0241210460662842 0.0199999999999996 0.0199999999999996 0.0 71
-72 0.0232229232788086 0.0199999999999996 0.0199999999999996 0.0 72
-73 0.0230081081390381 0.0300000000000011 0.0300000000000011 0.0 73
-74 0.0300300121307373 0.0300000000000011 0.0300000000000011 0.0 74
-75 0.0227279663085938 0.0199999999999996 0.0199999999999996 0.0 75
-76 0.0513601303100586 0.0500000000000007 0.0500000000000007 0.0 76
-77 0.0237360000610352 0.0199999999999996 0.0199999999999996 0.0 77
-78 0.0233068466186523 0.0300000000000011 0.0300000000000011 0.0 78
-79 0.0231139659881592 0.0199999999999996 0.0199999999999996 0.0 79
-80 0.0230059623718262 0.0199999999999996 0.0199999999999996 0.0 80
-81 0.022935152053833 0.0299999999999976 0.0299999999999976 0.0 81
-82 0.0229039192199707 0.0200000000000031 0.0200000000000031 0.0 82
-83 0.0487849712371826 0.0499999999999972 0.0499999999999972 0.0 83
-84 0.0268459320068359 0.0199999999999996 0.0199999999999996 0.0 84
-85 0.0233829021453857 0.0300000000000011 0.0300000000000011 0.0 85
-86 0.0231680870056152 0.0199999999999996 0.0199999999999996 0.0 86
-87 0.0230309963226318 0.0199999999999996 0.0199999999999996 0.0 87
-88 0.0234689712524414 0.0300000000000011 0.0300000000000011 0.0 88
-89 0.0231020450592041 0.0199999999999996 0.0199999999999996 0.0 89
-90 0.0486099720001221 0.0500000000000007 0.0500000000000007 0.0 90
-91 0.0234777927398682 0.0200000000000031 0.0200000000000031 0.0 91
-92 0.0232808589935303 0.029999999999994 0.029999999999994 0.0 92
-93 0.0230159759521484 0.0200000000000031 0.0200000000000031 0.0 93
-94 0.0258738994598389 0.0300000000000011 0.0300000000000011 0.0 94
-95 0.0232770442962646 0.019999999999996 0.019999999999996 0.0 95
-96 0.022737979888916 0.0200000000000031 0.0200000000000031 0.0 96
-97 0.0484600067138672 0.0499999999999972 0.0499999999999972 0.0 97
-98 0.023435115814209 0.0200000000000031 0.0200000000000031 0.0 98
-99 0.0234768390655518 0.0300000000000011 0.0300000000000011 0.0 99
-100 0.0230209827423096 0.019999999999996 0.019999999999996 0.0 100
-101 0.0230460166931152 0.0200000000000031 0.0200000000000031 0.0 101
-102 0.0232481956481934 0.0300000000000011 0.0300000000000011 0.0 102
-103 0.0264010429382324 0.019999999999996 0.019999999999996 0.0 103
-104 0.0486769676208496 0.0500000000000043 0.0500000000000043 0.0 104
-105 0.0233399868011475 0.019999999999996 0.019999999999996 0.0 105
-106 0.0231819152832031 0.0300000000000011 0.0300000000000011 0.0 106
-107 0.0230488777160645 0.0200000000000031 0.0200000000000031 0.0 107
-108 0.0238149166107178 0.019999999999996 0.019999999999996 0.0 108
-109 0.0230348110198975 0.0300000000000011 0.0300000000000011 0.0 109
-110 0.0254418849945068 0.0200000000000031 0.0200000000000031 0.0 110
-111 0.0559201240539551 0.0599999999999952 0.0599999999999952 0.0 111
-112 0.0237429141998291 0.0200000000000031 0.0200000000000031 0.0 112
-113 0.0230910778045654 0.0300000000000011 0.0300000000000011 0.0 113
-114 0.0230679512023926 0.019999999999996 0.019999999999996 0.0 114
-115 0.022960901260376 0.0200000000000031 0.0200000000000031 0.0 115
-116 0.0229921340942383 0.019999999999996 0.019999999999996 0.0 116
-117 0.0226120948791504 0.0300000000000011 0.0300000000000011 0.0 117
-118 0.0491540431976318 0.0500000000000043 0.0500000000000043 0.0 118
-119 0.0233540534973145 0.019999999999996 0.019999999999996 0.0 119
-120 0.023921012878418 0.0200000000000031 0.0200000000000031 0.0 120
-121 0.02628493309021 0.0300000000000011 0.0300000000000011 0.0 121
-122 0.0231039524078369 0.019999999999996 0.019999999999996 0.0 122
-123 0.0229899883270264 0.0300000000000011 0.0300000000000011 0.0 123
-124 0.0484068393707275 0.0399999999999991 0.0399999999999991 0.0 124
-125 0.0236389636993408 0.0300000000000011 0.0300000000000011 0.0 125
-126 0.0232870578765869 0.019999999999996 0.019999999999996 0.0 126
-127 0.0232260227203369 0.0200000000000031 0.0200000000000031 0.0 127
-128 0.0229640007019043 0.0300000000000011 0.0300000000000011 0.0 128
-129 0.02298903465271 0.019999999999996 0.019999999999996 0.0 129
-130 0.0251820087432861 0.0300000000000011 0.0300000000000011 0.0 130
-131 0.0493929386138916 0.0399999999999991 0.0399999999999991 0.0 131
-132 0.0237491130828857 0.019999999999996 0.019999999999996 0.0 132
-133 0.0233249664306641 0.0200000000000031 0.0200000000000031 0.0 133
-134 0.0232069492340088 0.0300000000000011 0.0300000000000011 0.0 134
-135 0.0229921340942383 0.019999999999996 0.019999999999996 0.0 135
-136 0.0232110023498535 0.0200000000000031 0.0200000000000031 0.0 136
-137 0.0227601528167725 0.019999999999996 0.019999999999996 0.0 137
-138 0.0484609603881836 0.0500000000000043 0.0500000000000043 0.0 138
-139 0.0269899368286133 0.0300000000000011 0.0300000000000011 0.0 139
-140 0.0233750343322754 0.019999999999996 0.019999999999996 0.0 140
-141 0.023090124130249 0.0300000000000011 0.0300000000000011 0.0 141
-142 0.0229980945587158 0.019999999999996 0.019999999999996 0.0 142
-143 0.0231709480285645 0.0200000000000031 0.0200000000000031 0.0 143
-144 0.0230460166931152 0.0300000000000011 0.0300000000000011 0.0 144
-145 0.0494990348815918 0.0499999999999972 0.0499999999999972 0.0 145
-146 0.0304419994354248 0.0300000000000011 0.0300000000000011 0.0 146
-147 0.0233581066131592 0.0200000000000031 0.0200000000000031 0.0 147
-148 0.0262119770050049 0.0300000000000011 0.0300000000000011 0.0 148
-149 0.0228428840637207 0.019999999999996 0.019999999999996 0.0 149
-150 0.0228331089019775 0.0200000000000031 0.0200000000000031 0.0 150
-151 0.0226950645446777 0.019999999999996 0.019999999999996 0.0 151
-152 0.0486769676208496 0.0500000000000043 0.0500000000000043 0.0 152
-153 0.0234050750732422 0.029999999999994 0.029999999999994 0.0 153
-154 0.0234100818634033 0.0200000000000031 0.0200000000000031 0.0 154
-155 0.023036003112793 0.0200000000000031 0.0200000000000031 0.0 155
-156 0.0237429141998291 0.029999999999994 0.029999999999994 0.0 156
-157 0.0230100154876709 0.0200000000000031 0.0200000000000031 0.0 157
-158 0.0260419845581055 0.0300000000000011 0.0300000000000011 0.0 158
-159 0.0487880706787109 0.0399999999999991 0.0399999999999991 0.0 159
-160 0.0236630439758301 0.0200000000000031 0.0200000000000031 0.0 160
-161 0.0232570171356201 0.019999999999996 0.019999999999996 0.0 161
-162 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 162
-163 0.0229759216308594 0.0200000000000031 0.0200000000000031 0.0 163
-164 0.0229389667510986 0.019999999999996 0.019999999999996 0.0 164
-165 0.0226230621337891 0.0200000000000031 0.0200000000000031 0.0 165
-166 0.052177906036377 0.0600000000000023 0.0600000000000023 0.0 166
-167 0.0238969326019287 0.019999999999996 0.019999999999996 0.0 167
-168 0.0231490135192871 0.0200000000000031 0.0200000000000031 0.0 168
-169 0.0229499340057373 0.029999999999994 0.029999999999994 0.0 169
-170 0.0229768753051758 0.0200000000000031 0.0200000000000031 0.0 170
-171 0.0229849815368652 0.0200000000000031 0.0200000000000031 0.0 171
-172 0.0481510162353516 0.0499999999999972 0.0499999999999972 0.0 172
-173 0.0235779285430908 0.0200000000000031 0.0200000000000031 0.0 173
-174 0.0235681533813477 0.029999999999994 0.029999999999994 0.0 174
-175 0.0232248306274414 0.0200000000000031 0.0200000000000031 0.0 175
-176 0.0256550312042236 0.0300000000000011 0.0300000000000011 0.0 176
-177 0.023108959197998 0.019999999999996 0.019999999999996 0.0 177
-178 0.0228090286254883 0.0200000000000031 0.0200000000000031 0.0 178
-179 0.0490450859069824 0.0499999999999972 0.0499999999999972 0.0 179
-180 0.0244641304016113 0.0300000000000011 0.0300000000000011 0.0 180
-181 0.0233809947967529 0.0200000000000031 0.0200000000000031 0.0 181
-182 0.0231349468231201 0.019999999999996 0.019999999999996 0.0 182
-183 0.0308740139007568 0.0300000000000011 0.0300000000000011 0.0 183
-184 0.0236179828643799 0.0300000000000011 0.0300000000000011 0.0 184
-185 0.0272319316864014 0.0200000000000031 0.0200000000000031 0.0 185
-186 0.0488860607147217 0.0399999999999991 0.0399999999999991 0.0 186
-187 0.0235450267791748 0.0300000000000011 0.0300000000000011 0.0 187
-188 0.0232491493225098 0.019999999999996 0.019999999999996 0.0 188
-189 0.0231590270996094 0.0200000000000031 0.0200000000000031 0.0 189
-190 0.0231139659881592 0.0300000000000011 0.0300000000000011 0.0 190
-191 0.0231552124023438 0.019999999999996 0.019999999999996 0.0 191
-192 0.022982120513916 0.0200000000000031 0.0200000000000031 0.0 192
-193 0.0529110431671143 0.0600000000000023 0.0600000000000023 0.0 193
-194 0.0235891342163086 0.019999999999996 0.019999999999996 0.0 194
-195 0.0234260559082031 0.0200000000000031 0.0200000000000031 0.0 195
-196 0.0230891704559326 0.029999999999994 0.029999999999994 0.0 196
-197 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 197
-198 0.0229229927062988 0.0200000000000031 0.0200000000000031 0.0 198
-199 0.0226840972900391 0.029999999999994 0.029999999999994 0.0 199
-200 0.048753023147583 0.0400000000000063 0.0400000000000063 0.0 200
-201 0.0234558582305908 0.029999999999994 0.029999999999994 0.0 201
-202 0.0232200622558594 0.0200000000000031 0.0200000000000031 0.0 202
-203 0.0268151760101318 0.0300000000000011 0.0300000000000011 0.0 203
-204 0.0231211185455322 0.019999999999996 0.019999999999996 0.0 204
-205 0.0231039524078369 0.0200000000000031 0.0200000000000031 0.0 205
-206 0.0227501392364502 0.0300000000000011 0.0300000000000011 0.0 206
-207 0.0488438606262207 0.0499999999999972 0.0499999999999972 0.0 207
-208 0.023730993270874 0.0200000000000031 0.0200000000000031 0.0 208
-209 0.0231349468231201 0.019999999999996 0.019999999999996 0.0 209
-210 0.0231950283050537 0.0300000000000011 0.0300000000000011 0.0 210
-211 0.0232861042022705 0.0200000000000031 0.0200000000000031 0.0 211
-212 0.0260870456695557 0.0300000000000011 0.0300000000000011 0.0 212
-213 0.0480821132659912 0.0399999999999991 0.0399999999999991 0.0 213
-214 0.0236039161682129 0.029999999999994 0.029999999999994 0.0 214
-215 0.0233402252197266 0.0200000000000031 0.0200000000000031 0.0 215
-216 0.0233190059661865 0.0200000000000031 0.0200000000000031 0.0 216
-217 0.0242919921875 0.029999999999994 0.029999999999994 0.0 217
-218 0.0228087902069092 0.0200000000000031 0.0200000000000031 0.0 218
-219 0.0274980068206787 0.0300000000000011 0.0300000000000011 0.0 219
-220 0.0521900653839111 0.0499999999999972 0.0499999999999972 0.0 220
-221 0.0259828567504883 0.0300000000000011 0.0300000000000011 0.0 221
-222 0.0233159065246582 0.0200000000000031 0.0200000000000031 0.0 222
-223 0.0232350826263428 0.019999999999996 0.019999999999996 0.0 223
-224 0.023000955581665 0.0300000000000011 0.0300000000000011 0.0 224
-225 0.0230231285095215 0.0200000000000031 0.0200000000000031 0.0 225
-226 0.022864818572998 0.019999999999996 0.019999999999996 0.0 226
-227 0.0486090183258057 0.0500000000000043 0.0500000000000043 0.0 227
-228 0.0247719287872314 0.029999999999994 0.029999999999994 0.0 228
-229 0.0233240127563477 0.0200000000000031 0.0200000000000031 0.0 229
-230 0.0263748168945312 0.0300000000000011 0.0300000000000011 0.0 230
-231 0.0231301784515381 0.019999999999996 0.019999999999996 0.0 231
-232 0.0229740142822266 0.0200000000000031 0.0200000000000031 0.0 232
-233 0.0233769416809082 0.0300000000000011 0.0300000000000011 0.0 233
-234 0.0495500564575195 0.0499999999999972 0.0499999999999972 0.0 234
-235 0.0234000682830811 0.0200000000000031 0.0200000000000031 0.0 235
-236 0.0231790542602539 0.019999999999996 0.019999999999996 0.0 236
-237 0.0230810642242432 0.0300000000000011 0.0300000000000011 0.0 237
-238 0.0229249000549316 0.0200000000000031 0.0200000000000031 0.0 238
-239 0.0257270336151123 0.019999999999996 0.019999999999996 0.0 239
-240 0.0246570110321045 0.0300000000000011 0.0300000000000011 0.0 240
-241 0.049109935760498 0.0499999999999972 0.0499999999999972 0.0 241
-242 0.0233631134033203 0.0200000000000031 0.0200000000000031 0.0 242
-243 0.0232560634613037 0.0300000000000011 0.0300000000000011 0.0 243
-244 0.0232639312744141 0.019999999999996 0.019999999999996 0.0 244
-245 0.0231678485870361 0.0200000000000031 0.0200000000000031 0.0 245
-246 0.0229339599609375 0.0200000000000031 0.0200000000000031 0.0 246
-247 0.0234620571136475 0.029999999999994 0.029999999999994 0.0 247
-248 0.0517890453338623 0.0500000000000043 0.0500000000000043 0.0 248
-249 0.0233941078186035 0.019999999999996 0.019999999999996 0.0 249
-250 0.0230710506439209 0.0300000000000011 0.0300000000000011 0.0 250
-251 0.0229940414428711 0.0200000000000031 0.0200000000000031 0.0 251
-252 0.0231740474700928 0.019999999999996 0.019999999999996 0.0 252
-253 0.0238161087036133 0.0300000000000011 0.0300000000000011 0.0 253
-254 0.0480771064758301 0.0399999999999991 0.0399999999999991 0.0 254
-255 0.0314779281616211 0.0399999999999991 0.0399999999999991 0.0 255
-256 0.0233800411224365 0.0200000000000031 0.0200000000000031 0.0 256
-257 0.0274808406829834 0.0300000000000011 0.0300000000000011 0.0 257
-258 0.0230331420898438 0.019999999999996 0.019999999999996 0.0 258
-259 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 259
-260 0.0227811336517334 0.0300000000000011 0.0300000000000011 0.0 260
-261 0.048346996307373 0.0399999999999991 0.0399999999999991 0.0 261
-262 0.0237669944763184 0.0300000000000011 0.0300000000000011 0.0 262
-263 0.0234119892120361 0.019999999999996 0.019999999999996 0.0 263
-264 0.0230929851531982 0.0300000000000011 0.0300000000000011 0.0 264
-265 0.0237300395965576 0.0200000000000031 0.0200000000000031 0.0 265
-266 0.0250859260559082 0.019999999999996 0.019999999999996 0.0 266
-267 0.0239300727844238 0.0300000000000011 0.0300000000000011 0.0 267
-268 0.048508882522583 0.0499999999999972 0.0499999999999972 0.0 268
-269 0.0236718654632568 0.0200000000000031 0.0200000000000031 0.0 269
-270 0.0233798027038574 0.0200000000000031 0.0200000000000031 0.0 270
-271 0.0230140686035156 0.029999999999994 0.029999999999994 0.0 271
-272 0.023123025894165 0.0200000000000031 0.0200000000000031 0.0 272
-273 0.0230128765106201 0.0200000000000031 0.0200000000000031 0.0 273
-274 0.0230889320373535 0.029999999999994 0.029999999999994 0.0 274
-275 0.0541810989379883 0.0500000000000043 0.0500000000000043 0.0 275
-276 0.0234689712524414 0.019999999999996 0.019999999999996 0.0 276
-277 0.0232949256896973 0.0300000000000011 0.0300000000000011 0.0 277
-278 0.0229971408843994 0.0200000000000031 0.0200000000000031 0.0 278
-279 0.023047924041748 0.019999999999996 0.019999999999996 0.0 279
-280 0.0229649543762207 0.0300000000000011 0.0300000000000011 0.0 280
-281 0.0231289863586426 0.0200000000000031 0.0200000000000031 0.0 281
-282 0.0487880706787109 0.0499999999999972 0.0499999999999972 0.0 282
-283 0.0234870910644531 0.0200000000000031 0.0200000000000031 0.0 283
-284 0.0263619422912598 0.0300000000000011 0.0300000000000011 0.0 284
-285 0.0238580703735352 0.019999999999996 0.019999999999996 0.0 285
-286 0.0231029987335205 0.0300000000000011 0.0300000000000011 0.0 286
-287 0.0230438709259033 0.019999999999996 0.019999999999996 0.0 287
-288 0.0477249622344971 0.0500000000000043 0.0500000000000043 0.0 288
-289 0.024465799331665 0.019999999999996 0.019999999999996 0.0 289
-290 0.023345947265625 0.0200000000000031 0.0200000000000031 0.0 290
-291 0.0297031402587891 0.0300000000000011 0.0300000000000011 0.0 291
-292 0.0236890316009521 0.0300000000000011 0.0300000000000011 0.0 292
-293 0.0227231979370117 0.019999999999996 0.019999999999996 0.0 293
-294 0.0271649360656738 0.0300000000000011 0.0300000000000011 0.0 294
-295 0.0483009815216064 0.0499999999999972 0.0499999999999972 0.0 295
-296 0.0236551761627197 0.0200000000000031 0.0200000000000031 0.0 296
-297 0.0233678817749023 0.0200000000000031 0.0200000000000031 0.0 297
-298 0.0230870246887207 0.029999999999994 0.029999999999994 0.0 298
-299 0.0232620239257812 0.0200000000000031 0.0200000000000031 0.0 299
-300 0.0231177806854248 0.0200000000000031 0.0200000000000031 0.0 300
-301 0.0231750011444092 0.029999999999994 0.029999999999994 0.0 301
-302 0.0530638694763184 0.0500000000000043 0.0500000000000043 0.0 302
-303 0.0237231254577637 0.019999999999996 0.019999999999996 0.0 303
-304 0.0232911109924316 0.0300000000000011 0.0300000000000011 0.0 304
-305 0.0233948230743408 0.0200000000000031 0.0200000000000031 0.0 305
-306 0.0232441425323486 0.019999999999996 0.019999999999996 0.0 306
-307 0.0230438709259033 0.0300000000000011 0.0300000000000011 0.0 307
-308 0.0230541229248047 0.0200000000000031 0.0200000000000031 0.0 308
-309 0.0487320423126221 0.0499999999999972 0.0499999999999972 0.0 309
-310 0.0232770442962646 0.0200000000000031 0.0200000000000031 0.0 310
-311 0.0253291130065918 0.0300000000000011 0.0300000000000011 0.0 311
-312 0.0244429111480713 0.019999999999996 0.019999999999996 0.0 312
-313 0.0229580402374268 0.0200000000000031 0.0200000000000031 0.0 313
-314 0.0229830741882324 0.029999999999994 0.029999999999994 0.0 314
-315 0.022658109664917 0.0200000000000031 0.0200000000000031 0.0 315
-316 0.0462629795074463 0.0499999999999972 0.0499999999999972 0.0 316
-317 0.023582935333252 0.0200000000000031 0.0200000000000031 0.0 317
-318 0.0232110023498535 0.0200000000000031 0.0200000000000031 0.0 318
-319 0.0232689380645752 0.029999999999994 0.029999999999994 0.0 319
-320 0.0231220722198486 0.0200000000000031 0.0200000000000031 0.0 320
-321 0.0256280899047852 0.0300000000000011 0.0300000000000011 0.0 321
-322 0.0481250286102295 0.0399999999999991 0.0399999999999991 0.0 322
-323 0.0235259532928467 0.0300000000000011 0.0300000000000011 0.0 323
-324 0.0235180854797363 0.019999999999996 0.019999999999996 0.0 324
-325 0.0231471061706543 0.0200000000000031 0.0200000000000031 0.0 325
-326 0.0238540172576904 0.0300000000000011 0.0300000000000011 0.0 326
-327 0.02276611328125 0.019999999999996 0.019999999999996 0.0 327
-328 0.0304388999938965 0.0399999999999991 0.0300000000000011 0.01 328
-329 0.0523970127105713 0.0500000000000043 0.0500000000000043 0.0 329
-330 0.023996114730835 0.029999999999994 0.029999999999994 0.0 330
-331 0.0234379768371582 0.0200000000000031 0.0200000000000031 0.0 331
-332 0.0230920314788818 0.019999999999996 0.019999999999996 0.0 332
-333 0.02305006980896 0.0300000000000011 0.0300000000000011 0.0 333
-334 0.0229852199554443 0.0200000000000031 0.0200000000000031 0.0 334
-335 0.0228848457336426 0.019999999999996 0.019999999999996 0.0 335
-336 0.0461750030517578 0.0500000000000043 0.0500000000000043 0.0 336
-337 0.0242049694061279 0.019999999999996 0.019999999999996 0.0 337
-338 0.0232689380645752 0.0300000000000011 0.0300000000000011 0.0 338
-339 0.027277946472168 0.0200000000000031 0.0200000000000031 0.0 339
-340 0.0230321884155273 0.0300000000000011 0.0300000000000011 0.0 340
-341 0.0230269432067871 0.019999999999996 0.019999999999996 0.0 341
-342 0.0231468677520752 0.0200000000000031 0.0200000000000031 0.0 342
-343 0.0488090515136719 0.0499999999999972 0.0499999999999972 0.0 343
-344 0.0232529640197754 0.0300000000000011 0.0300000000000011 0.0 344
-345 0.0230770111083984 0.0200000000000031 0.0200000000000031 0.0 345
-346 0.0230259895324707 0.019999999999996 0.019999999999996 0.0 346
-347 0.0230309963226318 0.0200000000000031 0.0200000000000031 0.0 347
-348 0.026080846786499 0.0300000000000011 0.0300000000000011 0.0 348
-349 0.023392915725708 0.019999999999996 0.019999999999996 0.0 349
-350 0.0461099147796631 0.0499999999999972 0.0499999999999972 0.0 350
-351 0.0233287811279297 0.0200000000000031 0.0200000000000031 0.0 351
-352 0.023190975189209 0.0300000000000011 0.0300000000000011 0.0 352
-353 0.0231750011444092 0.019999999999996 0.019999999999996 0.0 353
-354 0.0230758190155029 0.0200000000000031 0.0200000000000031 0.0 354
-355 0.0229721069335938 0.0300000000000011 0.0300000000000011 0.0 355
-356 0.0483551025390625 0.0499999999999972 0.0499999999999972 0.0 356
-357 0.0269951820373535 0.0200000000000031 0.0200000000000031 0.0 357
-358 0.0235021114349365 0.0300000000000011 0.0300000000000011 0.0 358
-359 0.0231399536132812 0.019999999999996 0.019999999999996 0.0 359
-360 0.0230071544647217 0.0200000000000031 0.0200000000000031 0.0 360
-361 0.0228490829467773 0.019999999999996 0.019999999999996 0.0 361
-362 0.0229380130767822 0.0300000000000011 0.0300000000000011 0.0 362
-363 0.0501840114593506 0.0500000000000043 0.0500000000000043 0.0 363
-364 0.029426097869873 0.029999999999994 0.029999999999994 0.0 364
-365 0.023777961730957 0.0200000000000031 0.0200000000000031 0.0 365
-366 0.0276000499725342 0.0300000000000011 0.0300000000000011 0.0 366
-367 0.0230789184570312 0.019999999999996 0.019999999999996 0.0 367
-368 0.0233089923858643 0.0200000000000031 0.0200000000000031 0.0 368
-369 0.0229260921478271 0.0300000000000011 0.0300000000000011 0.0 369
-370 0.0456759929656982 0.0399999999999991 0.0399999999999991 0.0 370
-371 0.0234260559082031 0.0300000000000011 0.0300000000000011 0.0 371
-372 0.0235531330108643 0.019999999999996 0.019999999999996 0.0 372
-373 0.0229899883270264 0.0200000000000031 0.0200000000000031 0.0 373
-374 0.0239078998565674 0.0300000000000011 0.0300000000000011 0.0 374
-375 0.0229928493499756 0.019999999999996 0.019999999999996 0.0 375
-376 0.0269260406494141 0.0300000000000011 0.0300000000000011 0.0 376
-377 0.0490090847015381 0.0499999999999972 0.0499999999999972 0.0 377
-378 0.0235331058502197 0.0200000000000031 0.0200000000000031 0.0 378
-379 0.0232670307159424 0.0200000000000031 0.0200000000000031 0.0 379
-380 0.0229969024658203 0.029999999999994 0.029999999999994 0.0 380
-381 0.0230321884155273 0.0200000000000031 0.0200000000000031 0.0 381
-382 0.0229909420013428 0.0200000000000031 0.0200000000000031 0.0 382
-383 0.022780179977417 0.029999999999994 0.029999999999994 0.0 383
-384 0.0519418716430664 0.0500000000000043 0.0500000000000043 0.0 384
-385 0.0233969688415527 0.019999999999996 0.019999999999996 0.0 385
-386 0.0231471061706543 0.0200000000000031 0.0200000000000031 0.0 386
-387 0.0230250358581543 0.0300000000000011 0.0300000000000011 0.0 387
-388 0.0229988098144531 0.019999999999996 0.019999999999996 0.0 388
-389 0.0229358673095703 0.0200000000000031 0.0200000000000031 0.0 389
-390 0.0482490062713623 0.0499999999999972 0.0499999999999972 0.0 390
-391 0.0239629745483398 0.0200000000000031 0.0200000000000031 0.0 391
-392 0.0235099792480469 0.0300000000000011 0.0300000000000011 0.0 392
-393 0.0232250690460205 0.019999999999996 0.019999999999996 0.0 393
-394 0.0269668102264404 0.0300000000000011 0.0300000000000011 0.0 394
-395 0.0230469703674316 0.0200000000000031 0.0200000000000031 0.0 395
-396 0.0230209827423096 0.019999999999996 0.019999999999996 0.0 396
-397 0.0488598346710205 0.0500000000000043 0.0500000000000043 0.0 397
-398 0.0243711471557617 0.029999999999994 0.029999999999994 0.0 398
-399 0.023435115814209 0.0200000000000031 0.0200000000000031 0.0 399
-400 0.0307729244232178 0.0300000000000011 0.0300000000000011 0.0 400
-401 0.0231430530548096 0.0300000000000011 0.0300000000000011 0.0 401
-402 0.0228579044342041 0.019999999999996 0.019999999999996 0.0 402
-403 0.0268239974975586 0.0300000000000011 0.0300000000000011 0.0 403
-404 0.0487518310546875 0.0399999999999991 0.0399999999999991 0.0 404
-405 0.0233860015869141 0.0300000000000011 0.0300000000000011 0.0 405
-406 0.0233309268951416 0.0200000000000031 0.0200000000000031 0.0 406
-407 0.0230538845062256 0.019999999999996 0.019999999999996 0.0 407
-408 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 408
-409 0.0231878757476807 0.0200000000000031 0.0200000000000031 0.0 409
-410 0.0229208469390869 0.019999999999996 0.019999999999996 0.0 410
-411 0.0527458190917969 0.0600000000000023 0.0600000000000023 0.0 411
-412 0.0235259532928467 0.019999999999996 0.019999999999996 0.0 412
-413 0.0231070518493652 0.0200000000000031 0.0200000000000031 0.0 413
-414 0.0231637954711914 0.0300000000000011 0.0300000000000011 0.0 414
-415 0.0231881141662598 0.019999999999996 0.019999999999996 0.0 415
-416 0.0229959487915039 0.0200000000000031 0.0200000000000031 0.0 416
-417 0.0480611324310303 0.0499999999999972 0.0499999999999972 0.0 417
-418 0.0235860347747803 0.0200000000000031 0.0200000000000031 0.0 418
-419 0.0235400199890137 0.0300000000000011 0.0300000000000011 0.0 419
-420 0.0231409072875977 0.019999999999996 0.019999999999996 0.0 420
-421 0.0267078876495361 0.0300000000000011 0.0300000000000011 0.0 421
-422 0.0230278968811035 0.0200000000000031 0.0200000000000031 0.0 422
-423 0.0228691101074219 0.019999999999996 0.019999999999996 0.0 423
-424 0.0483551025390625 0.0500000000000043 0.0500000000000043 0.0 424
-425 0.0237739086151123 0.029999999999994 0.029999999999994 0.0 425
-426 0.0233981609344482 0.0200000000000031 0.0200000000000031 0.0 426
-427 0.0230469703674316 0.0200000000000031 0.0200000000000031 0.0 427
-428 0.0233399868011475 0.029999999999994 0.029999999999994 0.0 428
-429 0.0231611728668213 0.0200000000000031 0.0200000000000031 0.0 429
-430 0.0267009735107422 0.0300000000000011 0.0300000000000011 0.0 430
-431 0.0472571849822998 0.0399999999999991 0.0399999999999991 0.0 431
-432 0.0234270095825195 0.0300000000000011 0.0300000000000011 0.0 432
-433 0.0233609676361084 0.019999999999996 0.019999999999996 0.0 433
-434 0.0230159759521484 0.0200000000000031 0.0200000000000031 0.0 434
-435 0.0242648124694824 0.0300000000000011 0.0300000000000011 0.0 435
-436 0.0230550765991211 0.019999999999996 0.019999999999996 0.0 436
-437 0.0298559665679932 0.0300000000000011 0.0300000000000011 0.0 437
-438 0.0506420135498047 0.0500000000000043 0.0500000000000043 0.0 438
-439 0.0245800018310547 0.029999999999994 0.029999999999994 0.0 439
-440 0.0232729911804199 0.0200000000000031 0.0200000000000031 0.0 440
-441 0.023047924041748 0.019999999999996 0.019999999999996 0.0 441
-442 0.0230588912963867 0.0300000000000011 0.0300000000000011 0.0 442
-443 0.0230181217193604 0.0200000000000031 0.0200000000000031 0.0 443
-444 0.0474259853363037 0.0499999999999972 0.0499999999999972 0.0 444
-445 0.0234999656677246 0.0200000000000031 0.0200000000000031 0.0 445
-446 0.0245218276977539 0.019999999999996 0.019999999999996 0.0 446
-447 0.0232257843017578 0.0300000000000011 0.0300000000000011 0.0 447
-448 0.0262331962585449 0.0200000000000031 0.0200000000000031 0.0 448
-449 0.0228760242462158 0.0300000000000011 0.0300000000000011 0.0 449
-450 0.0228469371795654 0.019999999999996 0.019999999999996 0.0 450
-451 0.0489568710327148 0.0500000000000043 0.0500000000000043 0.0 451
-452 0.0236458778381348 0.019999999999996 0.019999999999996 0.0 452
-453 0.0232670307159424 0.0300000000000011 0.0300000000000011 0.0 453
-454 0.0231130123138428 0.0200000000000031 0.0200000000000031 0.0 454
-455 0.0231020450592041 0.019999999999996 0.019999999999996 0.0 455
-456 0.0229918956756592 0.0300000000000011 0.0300000000000011 0.0 456
-457 0.0239298343658447 0.0200000000000031 0.0200000000000031 0.0 457
-458 0.0493390560150146 0.0499999999999972 0.0499999999999972 0.0 458
-459 0.0235741138458252 0.019999999999996 0.019999999999996 0.0 459
-460 0.0232348442077637 0.0300000000000011 0.0300000000000011 0.0 460
-461 0.023144006729126 0.0200000000000031 0.0200000000000031 0.0 461
-462 0.0232930183410645 0.019999999999996 0.019999999999996 0.0 462
-463 0.0231001377105713 0.0300000000000011 0.0300000000000011 0.0 463
-464 0.022939920425415 0.0200000000000031 0.0200000000000031 0.0 464
-465 0.0494201183319092 0.0499999999999972 0.0499999999999972 0.0 465
-466 0.0259408950805664 0.0200000000000031 0.0200000000000031 0.0 466
-467 0.0232219696044922 0.0300000000000011 0.0300000000000011 0.0 467
-468 0.0229430198669434 0.019999999999996 0.019999999999996 0.0 468
-469 0.0229699611663818 0.0200000000000031 0.0200000000000031 0.0 469
-470 0.023082971572876 0.0300000000000011 0.0300000000000011 0.0 470
-471 0.0460779666900635 0.0399999999999991 0.0399999999999991 0.0 471
-472 0.0259521007537842 0.0300000000000011 0.0300000000000011 0.0 472
-473 0.0284790992736816 0.029999999999994 0.029999999999994 0.0 473
-474 0.0231249332427979 0.0200000000000031 0.0200000000000031 0.0 474
-475 0.0256848335266113 0.0300000000000011 0.0300000000000011 0.0 475
-476 0.0245170593261719 0.019999999999996 0.019999999999996 0.0 476
-477 0.0228760242462158 0.0200000000000031 0.0200000000000031 0.0 477
-478 0.0482878684997559 0.0499999999999972 0.0499999999999972 0.0 478
-479 0.0235881805419922 0.0300000000000011 0.0300000000000011 0.0 479
-480 0.0232489109039307 0.0200000000000031 0.0200000000000031 0.0 480
-481 0.0233352184295654 0.019999999999996 0.019999999999996 0.0 481
-482 0.0229990482330322 0.0300000000000011 0.0300000000000011 0.0 482
-483 0.0238139629364014 0.0200000000000031 0.0200000000000031 0.0 483
-484 0.0229029655456543 0.019999999999996 0.019999999999996 0.0 484
-485 0.0516219139099121 0.0500000000000043 0.0500000000000043 0.0 485
-486 0.023360013961792 0.029999999999994 0.029999999999994 0.0 486
-487 0.0233120918273926 0.0200000000000031 0.0200000000000031 0.0 487
-488 0.0231151580810547 0.0200000000000031 0.0200000000000031 0.0 488
-489 0.0229690074920654 0.029999999999994 0.029999999999994 0.0 489
-490 0.0230300426483154 0.0200000000000031 0.0200000000000031 0.0 490
-491 0.0228698253631592 0.0200000000000031 0.0200000000000031 0.0 491
-492 0.0457451343536377 0.0499999999999972 0.0499999999999972 0.0 492
-493 0.0249300003051758 0.0200000000000031 0.0200000000000031 0.0 493
-494 0.0259578227996826 0.029999999999994 0.029999999999994 0.0 494
-495 0.0231161117553711 0.0200000000000031 0.0200000000000031 0.0 495
-496 0.0229859352111816 0.0300000000000011 0.0300000000000011 0.0 496
-497 0.0230338573455811 0.019999999999996 0.019999999999996 0.0 497
-498 0.0484039783477783 0.0500000000000043 0.0500000000000043 0.0 498
-499 0.0237560272216797 0.019999999999996 0.019999999999996 0.0 499
-500 0.0233612060546875 0.0200000000000031 0.0200000000000031 0.0 500
-501 0.0233550071716309 0.0300000000000011 0.0300000000000011 0.0 501
-502 0.0231049060821533 0.019999999999996 0.019999999999996 0.0 502
-503 0.026008129119873 0.0300000000000011 0.0300000000000011 0.0 503
-504 0.0228710174560547 0.0200000000000031 0.0200000000000031 0.0 504
-505 0.0483829975128174 0.0499999999999972 0.0499999999999972 0.0 505
-506 0.0237247943878174 0.0200000000000031 0.0200000000000031 0.0 506
-507 0.02410888671875 0.029999999999994 0.029999999999994 0.0 507
-508 0.0231809616088867 0.0200000000000031 0.0200000000000031 0.0 508
-509 0.0286002159118652 0.0300000000000011 0.0300000000000011 0.0 509
-510 0.0245559215545654 0.019999999999996 0.019999999999996 0.0 510
-511 0.0228598117828369 0.0300000000000011 0.0300000000000011 0.0 511
-512 0.0508739948272705 0.0500000000000043 0.0500000000000043 0.0 512
-513 0.0235428810119629 0.019999999999996 0.019999999999996 0.0 513
-514 0.0231621265411377 0.0200000000000031 0.0200000000000031 0.0 514
-515 0.0231170654296875 0.0300000000000011 0.0300000000000011 0.0 515
-516 0.023061990737915 0.019999999999996 0.019999999999996 0.0 516
-517 0.0231702327728271 0.0200000000000031 0.0200000000000031 0.0 517
-518 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 518
-519 0.0464069843292236 0.0399999999999991 0.0399999999999991 0.0 519
-520 0.0233228206634521 0.0300000000000011 0.0300000000000011 0.0 520
-521 0.0263099670410156 0.019999999999996 0.019999999999996 0.0 521
-522 0.0230581760406494 0.0300000000000011 0.0300000000000011 0.0 522
-523 0.0230810642242432 0.019999999999996 0.019999999999996 0.0 523
-524 0.0231571197509766 0.0200000000000031 0.0200000000000031 0.0 524
-525 0.0479769706726074 0.0499999999999972 0.0499999999999972 0.0 525
-526 0.0237100124359131 0.0200000000000031 0.0200000000000031 0.0 526
-527 0.0232999324798584 0.0300000000000011 0.0300000000000011 0.0 527
-528 0.0232400894165039 0.019999999999996 0.019999999999996 0.0 528
-529 0.0229151248931885 0.0200000000000031 0.0200000000000031 0.0 529
-530 0.0261499881744385 0.0300000000000011 0.0300000000000011 0.0 530
-531 0.0231139659881592 0.019999999999996 0.019999999999996 0.0 531
-532 0.0486347675323486 0.0500000000000043 0.0500000000000043 0.0 532
-533 0.023561954498291 0.0300000000000011 0.0300000000000011 0.0 533
-534 0.0232679843902588 0.019999999999996 0.019999999999996 0.0 534
-535 0.023292064666748 0.0200000000000031 0.0200000000000031 0.0 535
-536 0.0231978893280029 0.0300000000000011 0.0300000000000011 0.0 536
-537 0.0229289531707764 0.019999999999996 0.019999999999996 0.0 537
-538 0.0231430530548096 0.0200000000000031 0.0200000000000031 0.0 538
-539 0.0520761013031006 0.0499999999999972 0.0499999999999972 0.0 539
-540 0.0233478546142578 0.0300000000000011 0.0300000000000011 0.0 540
-541 0.0231640338897705 0.019999999999996 0.019999999999996 0.0 541
-542 0.0230228900909424 0.0200000000000031 0.0200000000000031 0.0 542
-543 0.0231611728668213 0.0300000000000011 0.0300000000000011 0.0 543
-544 0.0238080024719238 0.019999999999996 0.019999999999996 0.0 544
-545 0.0228090286254883 0.0200000000000031 0.0200000000000031 0.0 545
-546 0.0527040958404541 0.0600000000000023 0.0600000000000023 0.0 546
-547 0.0233268737792969 0.019999999999996 0.019999999999996 0.0 547
-548 0.0268959999084473 0.0300000000000011 0.0300000000000011 0.0 548
-549 0.02323317527771 0.0200000000000031 0.0200000000000031 0.0 549
-550 0.0231490135192871 0.019999999999996 0.019999999999996 0.0 550
-551 0.0229969024658203 0.0300000000000011 0.0300000000000011 0.0 551
-552 0.0478971004486084 0.0399999999999991 0.0399999999999991 0.0 552
-553 0.0237979888916016 0.0300000000000011 0.0300000000000011 0.0 553
-554 0.0234241485595703 0.0200000000000031 0.0200000000000031 0.0 554
-555 0.023115873336792 0.019999999999996 0.019999999999996 0.0 555
-556 0.0237019062042236 0.0300000000000011 0.0300000000000011 0.0 556
-557 0.0229599475860596 0.0200000000000031 0.0200000000000031 0.0 557
-558 0.0263819694519043 0.029999999999994 0.029999999999994 0.0 558
-559 0.0488171577453613 0.0500000000000043 0.0500000000000043 0.0 559
-560 0.023486852645874 0.019999999999996 0.019999999999996 0.0 560
-561 0.0233681201934814 0.0200000000000031 0.0200000000000031 0.0 561
-562 0.0230288505554199 0.0300000000000011 0.0300000000000011 0.0 562
-563 0.022907018661499 0.019999999999996 0.019999999999996 0.0 563
-564 0.0227639675140381 0.0200000000000031 0.0200000000000031 0.0 564
-565 0.0228629112243652 0.019999999999996 0.019999999999996 0.0 565
-566 0.0502970218658447 0.0499999999999972 0.0499999999999972 0.0 566
-567 0.0234780311584473 0.0200000000000031 0.0200000000000031 0.0 567
-568 0.0246810913085938 0.019999999999996 0.019999999999996 0.0 568
-569 0.0233399868011475 0.0300000000000011 0.0300000000000011 0.0 569
-570 0.0233209133148193 0.0200000000000031 0.0200000000000031 0.0 570
-571 0.0233681201934814 0.019999999999996 0.019999999999996 0.0 571
-572 0.0485889911651611 0.0500000000000043 0.0500000000000043 0.0 572
-573 0.0244321823120117 0.029999999999994 0.029999999999994 0.0 573
-574 0.0241711139678955 0.0200000000000031 0.0200000000000031 0.0 574
-575 0.0249710083007812 0.0300000000000011 0.0300000000000011 0.0 575
-576 0.0267090797424316 0.019999999999996 0.019999999999996 0.0 576
-577 0.0232799053192139 0.0300000000000011 0.0300000000000011 0.0 577
-578 0.0231969356536865 0.0200000000000031 0.0200000000000031 0.0 578
-579 0.0491700172424316 0.0499999999999972 0.0499999999999972 0.0 579
-580 0.025277853012085 0.0200000000000031 0.0200000000000031 0.0 580
-581 0.0265741348266602 0.0300000000000011 0.0300000000000011 0.0 581
-582 0.0273458957672119 0.029999999999994 0.029999999999994 0.0 582
-583 0.0252799987792969 0.0200000000000031 0.0200000000000031 0.0 583
-584 0.0245480537414551 0.0300000000000011 0.0300000000000011 0.0 584
-585 0.0260021686553955 0.019999999999996 0.019999999999996 0.0 585
-586 0.0474262237548828 0.0500000000000043 0.0500000000000043 0.0 586
-587 0.0234909057617188 0.0300000000000011 0.0300000000000011 0.0 587
-588 0.023231029510498 0.019999999999996 0.019999999999996 0.0 588
-589 0.0231058597564697 0.0200000000000031 0.0200000000000031 0.0 589
-590 0.0234060287475586 0.0300000000000011 0.0300000000000011 0.0 590
-591 0.0230560302734375 0.019999999999996 0.019999999999996 0.0 591
-592 0.0236189365386963 0.0200000000000031 0.0200000000000031 0.0 592
-593 0.0531678199768066 0.0599999999999952 0.0599999999999952 0.0 593
-594 0.0234320163726807 0.0200000000000031 0.0200000000000031 0.0 594
-595 0.0234501361846924 0.019999999999996 0.019999999999996 0.0 595
-596 0.023097038269043 0.0300000000000011 0.0300000000000011 0.0 596
-597 0.0239620208740234 0.0200000000000031 0.0200000000000031 0.0 597
-598 0.023064136505127 0.019999999999996 0.019999999999996 0.0 598
-599 0.0469310283660889 0.0500000000000043 0.0500000000000043 0.0 599
-600 0.0238142013549805 0.019999999999996 0.019999999999996 0.0 600
-601 0.0232729911804199 0.0200000000000031 0.0200000000000031 0.0 601
-602 0.0264449119567871 0.0300000000000011 0.0300000000000011 0.0 602
-603 0.0250101089477539 0.0300000000000011 0.0300000000000011 0.0 603
-604 0.022953987121582 0.019999999999996 0.019999999999996 0.0 604
-605 0.0227360725402832 0.0200000000000031 0.0200000000000031 0.0 605
-606 0.0484528541564941 0.0499999999999972 0.0499999999999972 0.0 606
-607 0.0238401889801025 0.0200000000000031 0.0200000000000031 0.0 607
-608 0.023205041885376 0.0300000000000011 0.0300000000000011 0.0 608
-609 0.0230309963226318 0.019999999999996 0.019999999999996 0.0 609
-610 0.0233237743377686 0.0200000000000031 0.0200000000000031 0.0 610
-611 0.0229151248931885 0.0300000000000011 0.0300000000000011 0.0 611
-612 0.0266458988189697 0.019999999999996 0.019999999999996 0.0 612
-613 0.0459887981414795 0.0499999999999972 0.0499999999999972 0.0 613
-614 0.0233139991760254 0.0200000000000031 0.0200000000000031 0.0 614
-615 0.0232000350952148 0.0300000000000011 0.0300000000000011 0.0 615
-616 0.0238010883331299 0.019999999999996 0.019999999999996 0.0 616
-617 0.0231029987335205 0.0200000000000031 0.0200000000000031 0.0 617
-618 0.031013011932373 0.0300000000000011 0.0300000000000011 0.0 618
-619 0.0480711460113525 0.0499999999999972 0.0499999999999972 0.0 619
-620 0.0269320011138916 0.0300000000000011 0.0300000000000011 0.0 620
-621 0.0233550071716309 0.0200000000000031 0.0200000000000031 0.0 621
-622 0.0232939720153809 0.029999999999994 0.029999999999994 0.0 622
-623 0.0229189395904541 0.0200000000000031 0.0200000000000031 0.0 623
-624 0.022881031036377 0.0200000000000031 0.0200000000000031 0.0 624
-625 0.0228018760681152 0.029999999999994 0.029999999999994 0.0 625
-626 0.0487551689147949 0.0400000000000063 0.0400000000000063 0.0 626
-627 0.0234999656677246 0.029999999999994 0.029999999999994 0.0 627
-628 0.023996114730835 0.0200000000000031 0.0200000000000031 0.0 628
-629 0.0232369899749756 0.0300000000000011 0.0300000000000011 0.0 629
-630 0.0269510746002197 0.019999999999996 0.019999999999996 0.0 630
-631 0.024583101272583 0.0300000000000011 0.0300000000000011 0.0 631
-632 0.0230491161346436 0.0200000000000031 0.0200000000000031 0.0 632
-633 0.0473129749298096 0.0499999999999972 0.0499999999999972 0.0 633
-634 0.0233309268951416 0.0200000000000031 0.0200000000000031 0.0 634
-635 0.0232229232788086 0.019999999999996 0.019999999999996 0.0 635
-636 0.0229809284210205 0.0300000000000011 0.0300000000000011 0.0 636
-637 0.0231940746307373 0.0200000000000031 0.0200000000000031 0.0 637
-638 0.0231130123138428 0.019999999999996 0.019999999999996 0.0 638
-639 0.0522749423980713 0.0500000000000043 0.0500000000000043 0.0 639
-640 0.0235979557037354 0.029999999999994 0.029999999999994 0.0 640
-641 0.0233168601989746 0.0200000000000031 0.0200000000000031 0.0 641
-642 0.0231528282165527 0.0300000000000011 0.0300000000000011 0.0 642
-643 0.0232172012329102 0.019999999999996 0.019999999999996 0.0 643
-644 0.0227980613708496 0.0200000000000031 0.0200000000000031 0.0 644
-645 0.0227620601654053 0.0200000000000031 0.0200000000000031 0.0 645
-646 0.0490891933441162 0.0499999999999972 0.0499999999999972 0.0 646
-647 0.0240461826324463 0.0300000000000011 0.0300000000000011 0.0 647
-648 0.0267610549926758 0.019999999999996 0.019999999999996 0.0 648
-649 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 649
-650 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 650
-651 0.023500919342041 0.019999999999996 0.019999999999996 0.0 651
-652 0.0230460166931152 0.0300000000000011 0.0300000000000011 0.0 652
-653 0.0512759685516357 0.0500000000000043 0.0500000000000043 0.0 653
-654 0.0272390842437744 0.019999999999996 0.019999999999996 0.0 654
-655 0.0247349739074707 0.0300000000000011 0.0300000000000011 0.0 655
-656 0.0230178833007812 0.0200000000000031 0.0200000000000031 0.0 656
-657 0.0271899700164795 0.029999999999994 0.029999999999994 0.0 657
-658 0.0229711532592773 0.0200000000000031 0.0200000000000031 0.0 658
-659 0.0228548049926758 0.019999999999996 0.019999999999996 0.0 659
-660 0.0488860607147217 0.0500000000000043 0.0500000000000043 0.0 660
-661 0.0232799053192139 0.0300000000000011 0.0300000000000011 0.0 661
-662 0.0232510566711426 0.019999999999996 0.019999999999996 0.0 662
-663 0.0229790210723877 0.0200000000000031 0.0200000000000031 0.0 663
-664 0.0242810249328613 0.0300000000000011 0.0300000000000011 0.0 664
-665 0.0230100154876709 0.019999999999996 0.019999999999996 0.0 665
-666 0.0498199462890625 0.0500000000000043 0.0500000000000043 0.0 666
-667 0.0237331390380859 0.019999999999996 0.019999999999996 0.0 667
-668 0.0234551429748535 0.0300000000000011 0.0300000000000011 0.0 668
-669 0.0231800079345703 0.0200000000000031 0.0200000000000031 0.0 669
-670 0.0229709148406982 0.019999999999996 0.019999999999996 0.0 670
-671 0.023015022277832 0.0300000000000011 0.0300000000000011 0.0 671
-672 0.0230131149291992 0.0200000000000031 0.0200000000000031 0.0 672
-673 0.0487980842590332 0.0499999999999972 0.0499999999999972 0.0 673
-674 0.0240719318389893 0.0200000000000031 0.0200000000000031 0.0 674
-675 0.0269160270690918 0.029999999999994 0.029999999999994 0.0 675
-676 0.0230348110198975 0.0200000000000031 0.0200000000000031 0.0 676
-677 0.0227870941162109 0.0300000000000011 0.0300000000000011 0.0 677
-678 0.0228049755096436 0.019999999999996 0.019999999999996 0.0 678
-679 0.0226888656616211 0.0200000000000031 0.0200000000000031 0.0 679
-680 0.0477821826934814 0.0499999999999972 0.0499999999999972 0.0 680
-681 0.0232739448547363 0.0200000000000031 0.0200000000000031 0.0 681
-682 0.023953914642334 0.0300000000000011 0.0300000000000011 0.0 682
-683 0.0229859352111816 0.019999999999996 0.019999999999996 0.0 683
-684 0.0254220962524414 0.0200000000000031 0.0200000000000031 0.0 684
-685 0.0239348411560059 0.0300000000000011 0.0300000000000011 0.0 685
-686 0.0478279590606689 0.0499999999999972 0.0499999999999972 0.0 686
-687 0.023798942565918 0.0200000000000031 0.0200000000000031 0.0 687
-688 0.0233008861541748 0.019999999999996 0.019999999999996 0.0 688
-689 0.0240800380706787 0.0300000000000011 0.0300000000000011 0.0 689
-690 0.0304360389709473 0.0300000000000011 0.0300000000000011 0.0 690
-691 0.022982120513916 0.019999999999996 0.019999999999996 0.0 691
-692 0.0228438377380371 0.0200000000000031 0.0200000000000031 0.0 692
-693 0.0521981716156006 0.0600000000000023 0.0600000000000023 0.0 693
-694 0.0234532356262207 0.019999999999996 0.019999999999996 0.0 694
-695 0.0232119560241699 0.0200000000000031 0.0200000000000031 0.0 695
-696 0.0229840278625488 0.0300000000000011 0.0300000000000011 0.0 696
-697 0.0229799747467041 0.019999999999996 0.019999999999996 0.0 697
-698 0.0229427814483643 0.0200000000000031 0.0200000000000031 0.0 698
-699 0.0228908061981201 0.0300000000000011 0.0300000000000011 0.0 699
-700 0.0482070446014404 0.0399999999999991 0.0399999999999991 0.0 700
-701 0.023360013961792 0.0300000000000011 0.0300000000000011 0.0 701
-702 0.027055025100708 0.019999999999996 0.019999999999996 0.0 702
-703 0.0230090618133545 0.0300000000000011 0.0300000000000011 0.0 703
-704 0.02317214012146 0.019999999999996 0.019999999999996 0.0 704
-705 0.022986888885498 0.0200000000000031 0.0200000000000031 0.0 705
-706 0.0481140613555908 0.0499999999999972 0.0499999999999972 0.0 706
-707 0.0237739086151123 0.0300000000000011 0.0300000000000011 0.0 707
-708 0.0233809947967529 0.0200000000000031 0.0200000000000031 0.0 708
-709 0.0233211517333984 0.019999999999996 0.019999999999996 0.0 709
-710 0.0229690074920654 0.0300000000000011 0.0300000000000011 0.0 710
-711 0.0244121551513672 0.0200000000000031 0.0200000000000031 0.0 711
-712 0.0250389575958252 0.019999999999996 0.019999999999996 0.0 712
-713 0.0485482215881348 0.0399999999999991 0.0399999999999991 0.0 713
-714 0.0234758853912354 0.0300000000000011 0.0300000000000011 0.0 714
-715 0.023453950881958 0.019999999999996 0.019999999999996 0.0 715
-716 0.0230729579925537 0.0200000000000031 0.0200000000000031 0.0 716
-717 0.0230581760406494 0.0300000000000011 0.0300000000000011 0.0 717
-718 0.0230929851531982 0.019999999999996 0.019999999999996 0.0 718
-719 0.0229818820953369 0.0200000000000031 0.0200000000000031 0.0 719
-720 0.0512728691101074 0.0499999999999972 0.0499999999999972 0.0 720
-721 0.0234599113464355 0.0300000000000011 0.0300000000000011 0.0 721
-722 0.023129940032959 0.019999999999996 0.019999999999996 0.0 722
-723 0.0229649543762207 0.0200000000000031 0.0200000000000031 0.0 723
-724 0.0230588912963867 0.0300000000000011 0.0300000000000011 0.0 724
-725 0.0236339569091797 0.019999999999996 0.019999999999996 0.0 725
-726 0.0562300682067871 0.0600000000000023 0.0600000000000023 0.0 726
-727 0.0310180187225342 0.0300000000000011 0.0300000000000011 0.0 727
-728 0.0244710445404053 0.0200000000000031 0.0200000000000031 0.0 728
-729 0.0285270214080811 0.029999999999994 0.029999999999994 0.0 729
-730 0.0235979557037354 0.0300000000000011 0.0300000000000011 0.0 730
-731 0.0233108997344971 0.0200000000000031 0.0200000000000031 0.0 731
-732 0.0233650207519531 0.019999999999996 0.019999999999996 0.0 732
-733 0.0499210357666016 0.0500000000000043 0.0500000000000043 0.0 733
-734 0.0240199565887451 0.0300000000000011 0.0300000000000011 0.0 734
-735 0.0234189033508301 0.019999999999996 0.019999999999996 0.0 735
-736 0.0239479541778564 0.0200000000000031 0.0200000000000031 0.0 736
-737 0.0234498977661133 0.0300000000000011 0.0300000000000011 0.0 737
-738 0.027393102645874 0.019999999999996 0.019999999999996 0.0 738
-739 0.0233581066131592 0.0300000000000011 0.0300000000000011 0.0 739
-740 0.0494859218597412 0.0499999999999972 0.0499999999999972 0.0 740
-741 0.023939847946167 0.0200000000000031 0.0200000000000031 0.0 741
-742 0.0237078666687012 0.0300000000000011 0.0300000000000011 0.0 742
-743 0.023622989654541 0.019999999999996 0.019999999999996 0.0 743
-744 0.0235440731048584 0.0200000000000031 0.0200000000000031 0.0 744
-745 0.0236668586730957 0.0300000000000011 0.0300000000000011 0.0 745
-746 0.0538251399993896 0.0499999999999972 0.0499999999999972 0.0 746
-747 0.0246829986572266 0.0300000000000011 0.0300000000000011 0.0 747
-748 0.0239181518554688 0.019999999999996 0.019999999999996 0.0 748
-749 0.02370285987854 0.0200000000000031 0.0200000000000031 0.0 749
-750 0.0234520435333252 0.0300000000000011 0.0300000000000011 0.0 750
-751 0.0234749317169189 0.019999999999996 0.019999999999996 0.0 751
-752 0.0232760906219482 0.0200000000000031 0.0200000000000031 0.0 752
-753 0.050915002822876 0.0499999999999972 0.0499999999999972 0.0 753
-754 0.0237371921539307 0.0300000000000011 0.0300000000000011 0.0 754
-755 0.0239219665527344 0.0200000000000031 0.0200000000000031 0.0 755
-756 0.0273880958557129 0.0300000000000011 0.0300000000000011 0.0 756
-757 0.0232698917388916 0.019999999999996 0.019999999999996 0.0 757
-758 0.0235319137573242 0.0300000000000011 0.0300000000000011 0.0 758
-759 0.0232620239257812 0.0200000000000031 0.0200000000000031 0.0 759
-760 0.0498092174530029 0.0499999999999972 0.0499999999999972 0.0 760
-761 0.0315971374511719 0.0300000000000011 0.0300000000000011 0.0 761
-762 0.0236649513244629 0.019999999999996 0.019999999999996 0.0 762
-763 0.0233211517333984 0.0300000000000011 0.0300000000000011 0.0 763
-764 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 764
-765 0.0270240306854248 0.0300000000000011 0.0300000000000011 0.0 765
-766 0.0479528903961182 0.0499999999999972 0.0499999999999972 0.0 766
-767 0.025413990020752 0.0200000000000031 0.0200000000000031 0.0 767
-768 0.0233969688415527 0.019999999999996 0.019999999999996 0.0 768
-769 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 769
-770 0.0230209827423096 0.0200000000000031 0.0200000000000031 0.0 770
-771 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 771
-772 0.0236411094665527 0.0300000000000011 0.0300000000000011 0.0 772
-773 0.0529980659484863 0.0499999999999972 0.0499999999999972 0.0 773
-774 0.0234870910644531 0.0200000000000031 0.0200000000000031 0.0 774
-775 0.0233190059661865 0.0300000000000011 0.0300000000000011 0.0 775
-776 0.0230171680450439 0.019999999999996 0.019999999999996 0.0 776
-777 0.0230998992919922 0.0200000000000031 0.0200000000000031 0.0 777
-778 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 778
-779 0.0227389335632324 0.019999999999996 0.019999999999996 0.0 779
-780 0.0475330352783203 0.0500000000000043 0.0500000000000043 0.0 780
-781 0.0235450267791748 0.019999999999996 0.019999999999996 0.0 781
-782 0.024838924407959 0.0200000000000031 0.0200000000000031 0.0 782
-783 0.0251529216766357 0.0300000000000011 0.0300000000000011 0.0 783
-784 0.0230610370635986 0.019999999999996 0.019999999999996 0.0 784
-785 0.0230369567871094 0.0300000000000011 0.0300000000000011 0.0 785
-786 0.0483219623565674 0.0399999999999991 0.0399999999999991 0.0 786
-787 0.023716926574707 0.0300000000000011 0.0300000000000011 0.0 787
-788 0.0233070850372314 0.0200000000000031 0.0200000000000031 0.0 788
-789 0.0230929851531982 0.019999999999996 0.019999999999996 0.0 789
-790 0.0231740474700928 0.0300000000000011 0.0300000000000011 0.0 790
-791 0.0228431224822998 0.0200000000000031 0.0200000000000031 0.0 791
-792 0.0254631042480469 0.029999999999994 0.029999999999994 0.0 792
-793 0.0485448837280273 0.0399999999999991 0.0399999999999991 0.0 793
-794 0.0234110355377197 0.0300000000000011 0.0300000000000011 0.0 794
-795 0.023223876953125 0.0200000000000031 0.0200000000000031 0.0 795
-796 0.0238728523254395 0.0300000000000011 0.0300000000000011 0.0 796
-797 0.0251760482788086 0.019999999999996 0.019999999999996 0.0 797
-798 0.0276870727539062 0.0300000000000011 0.0300000000000011 0.0 798
-799 0.0227670669555664 0.0200000000000031 0.0200000000000031 0.0 799
-800 0.0514481067657471 0.0499999999999972 0.0499999999999972 0.0 800
-801 0.023374080657959 0.0300000000000011 0.0300000000000011 0.0 801
-802 0.0230941772460938 0.019999999999996 0.019999999999996 0.0 802
-803 0.0230350494384766 0.0200000000000031 0.0200000000000031 0.0 803
-804 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 804
-805 0.0229909420013428 0.019999999999996 0.019999999999996 0.0 805
-806 0.0481908321380615 0.0500000000000043 0.0500000000000043 0.0 806
-807 0.0239169597625732 0.019999999999996 0.019999999999996 0.0 807
-808 0.0238561630249023 0.0200000000000031 0.0200000000000031 0.0 808
-809 0.0231790542602539 0.0300000000000011 0.0300000000000011 0.0 809
-810 0.0275747776031494 0.0300000000000011 0.0300000000000011 0.0 810
-811 0.0230591297149658 0.019999999999996 0.019999999999996 0.0 811
-812 0.0231878757476807 0.0200000000000031 0.0200000000000031 0.0 812
-813 0.048914909362793 0.0499999999999972 0.0499999999999972 0.0 813
-814 0.0234620571136475 0.0200000000000031 0.0200000000000031 0.0 814
-815 0.0232930183410645 0.0300000000000011 0.0300000000000011 0.0 815
-816 0.022986888885498 0.019999999999996 0.019999999999996 0.0 816
-817 0.0229377746582031 0.0200000000000031 0.0200000000000031 0.0 817
-818 0.0235490798950195 0.0300000000000011 0.0300000000000011 0.0 818
-819 0.0506079196929932 0.0499999999999972 0.0499999999999972 0.0 819
-820 0.023629903793335 0.019999999999996 0.019999999999996 0.0 820
-821 0.0234060287475586 0.0300000000000011 0.0300000000000011 0.0 821
-822 0.0231649875640869 0.0200000000000031 0.0200000000000031 0.0 822
-823 0.0232610702514648 0.019999999999996 0.019999999999996 0.0 823
-824 0.0246009826660156 0.0300000000000011 0.0300000000000011 0.0 824
-825 0.0229051113128662 0.0200000000000031 0.0200000000000031 0.0 825
-826 0.0487561225891113 0.0499999999999972 0.0499999999999972 0.0 826
-827 0.0235860347747803 0.0200000000000031 0.0200000000000031 0.0 827
-828 0.0275599956512451 0.0300000000000011 0.0300000000000011 0.0 828
-829 0.0231928825378418 0.019999999999996 0.019999999999996 0.0 829
-830 0.0227789878845215 0.0200000000000031 0.0200000000000031 0.0 830
-831 0.022838830947876 0.0300000000000011 0.0300000000000011 0.0 831
-832 0.0226640701293945 0.019999999999996 0.019999999999996 0.0 832
-833 0.0558691024780273 0.0600000000000023 0.0600000000000023 0.0 833
-834 0.0235500335693359 0.019999999999996 0.019999999999996 0.0 834
-835 0.0233221054077148 0.0200000000000031 0.0200000000000031 0.0 835
-836 0.0230560302734375 0.0300000000000011 0.0300000000000011 0.0 836
-837 0.026296854019165 0.019999999999996 0.019999999999996 0.0 837
-838 0.0231189727783203 0.0200000000000031 0.0200000000000031 0.0 838
-839 0.0479569435119629 0.0399999999999991 0.0399999999999991 0.0 839
-840 0.0236861705780029 0.0300000000000011 0.0300000000000011 0.0 840
-841 0.0233621597290039 0.0200000000000031 0.0200000000000031 0.0 841
-842 0.0233719348907471 0.019999999999996 0.019999999999996 0.0 842
-843 0.022942066192627 0.0300000000000011 0.0300000000000011 0.0 843
-844 0.0234341621398926 0.0200000000000031 0.0200000000000031 0.0 844
-845 0.0227351188659668 0.019999999999996 0.019999999999996 0.0 845
-846 0.0519671440124512 0.0500000000000043 0.0500000000000043 0.0 846
-847 0.0236749649047852 0.029999999999994 0.029999999999994 0.0 847
-848 0.0233500003814697 0.0200000000000031 0.0200000000000031 0.0 848
-849 0.0230710506439209 0.0300000000000011 0.0300000000000011 0.0 849
-850 0.0229990482330322 0.019999999999996 0.019999999999996 0.0 850
-851 0.0230109691619873 0.0200000000000031 0.0200000000000031 0.0 851
-852 0.0227420330047607 0.0200000000000031 0.0200000000000031 0.0 852
-853 0.0477049350738525 0.0499999999999972 0.0499999999999972 0.0 853
-854 0.0240600109100342 0.0300000000000011 0.0300000000000011 0.0 854
-855 0.026954174041748 0.019999999999996 0.019999999999996 0.0 855
-856 0.0229690074920654 0.0300000000000011 0.0300000000000011 0.0 856
-857 0.0230190753936768 0.0200000000000031 0.0200000000000031 0.0 857
-858 0.0229530334472656 0.019999999999996 0.019999999999996 0.0 858
-859 0.0483298301696777 0.0500000000000043 0.0500000000000043 0.0 859
-860 0.0237421989440918 0.019999999999996 0.019999999999996 0.0 860
-861 0.0233712196350098 0.0300000000000011 0.0300000000000011 0.0 861
-862 0.0233938694000244 0.0200000000000031 0.0200000000000031 0.0 862
-863 0.0228838920593262 0.019999999999996 0.019999999999996 0.0 863
-864 0.0237820148468018 0.0300000000000011 0.0300000000000011 0.0 864
-865 0.0258240699768066 0.0200000000000031 0.0200000000000031 0.0 865
-866 0.0487151145935059 0.0499999999999972 0.0499999999999972 0.0 866
-867 0.023514986038208 0.0300000000000011 0.0300000000000011 0.0 867
-868 0.023252010345459 0.019999999999996 0.019999999999996 0.0 868
-869 0.0243101119995117 0.0200000000000031 0.0200000000000031 0.0 869
-870 0.0295658111572266 0.0300000000000011 0.0300000000000011 0.0 870
-871 0.0230669975280762 0.0300000000000011 0.0300000000000011 0.0 871
-872 0.0470709800720215 0.0399999999999991 0.0399999999999991 0.0 872
-873 0.0276908874511719 0.0300000000000011 0.0300000000000011 0.0 873
-874 0.0235562324523926 0.029999999999994 0.029999999999994 0.0 874
-875 0.0232779979705811 0.0200000000000031 0.0200000000000031 0.0 875
-876 0.0230128765106201 0.0200000000000031 0.0200000000000031 0.0 876
-877 0.0227088928222656 0.019999999999996 0.019999999999996 0.0 877
-878 0.0227501392364502 0.0300000000000011 0.0300000000000011 0.0 878
-879 0.048612117767334 0.0499999999999972 0.0499999999999972 0.0 879
-880 0.0247840881347656 0.0200000000000031 0.0200000000000031 0.0 880
-881 0.0233609676361084 0.0200000000000031 0.0200000000000031 0.0 881
-882 0.0263519287109375 0.029999999999994 0.029999999999994 0.0 882
-883 0.0231118202209473 0.0200000000000031 0.0200000000000031 0.0 883
-884 0.0230841636657715 0.0300000000000011 0.0300000000000011 0.0 884
-885 0.022723913192749 0.019999999999996 0.019999999999996 0.0 885
-886 0.0473191738128662 0.0500000000000043 0.0500000000000043 0.0 886
-887 0.0233719348907471 0.019999999999996 0.019999999999996 0.0 887
-888 0.0231339931488037 0.0200000000000031 0.0200000000000031 0.0 888
-889 0.0230438709259033 0.0300000000000011 0.0300000000000011 0.0 889
-890 0.0230700969696045 0.019999999999996 0.019999999999996 0.0 890
-891 0.0235311985015869 0.0200000000000031 0.0200000000000031 0.0 891
-892 0.0513098239898682 0.0499999999999972 0.0499999999999972 0.0 892
-893 0.0237538814544678 0.0300000000000011 0.0300000000000011 0.0 893
-894 0.0234150886535645 0.0200000000000031 0.0200000000000031 0.0 894
-895 0.0234220027923584 0.029999999999994 0.029999999999994 0.0 895
-896 0.0229578018188477 0.0200000000000031 0.0200000000000031 0.0 896
-897 0.0227642059326172 0.0200000000000031 0.0200000000000031 0.0 897
-898 0.0227861404418945 0.019999999999996 0.019999999999996 0.0 898
-899 0.0495121479034424 0.0500000000000043 0.0500000000000043 0.0 899
-900 0.0261099338531494 0.029999999999994 0.029999999999994 0.0 900
-901 0.0232861042022705 0.0200000000000031 0.0200000000000031 0.0 901
-902 0.0230598449707031 0.0300000000000011 0.0300000000000011 0.0 902
-903 0.0229661464691162 0.019999999999996 0.019999999999996 0.0 903
-904 0.0229828357696533 0.0200000000000031 0.0200000000000031 0.0 904
-905 0.0227420330047607 0.0300000000000011 0.0300000000000011 0.0 905
-906 0.0554108619689941 0.0499999999999972 0.0499999999999972 0.0 906
-907 0.0234618186950684 0.0200000000000031 0.0200000000000031 0.0 907
-908 0.023097038269043 0.0300000000000011 0.0300000000000011 0.0 908
-909 0.0240907669067383 0.019999999999996 0.019999999999996 0.0 909
-910 0.0250539779663086 0.0300000000000011 0.0300000000000011 0.0 910
-911 0.0229489803314209 0.019999999999996 0.019999999999996 0.0 911
-912 0.0479700565338135 0.0500000000000043 0.0500000000000043 0.0 912
-913 0.023643970489502 0.019999999999996 0.019999999999996 0.0 913
-914 0.0235710144042969 0.0200000000000031 0.0200000000000031 0.0 914
-915 0.0231690406799316 0.0300000000000011 0.0300000000000011 0.0 915
-916 0.0229480266571045 0.019999999999996 0.019999999999996 0.0 916
-917 0.0235409736633301 0.0200000000000031 0.0200000000000031 0.0 917
-918 0.0229229927062988 0.0300000000000011 0.0300000000000011 0.0 918
-919 0.0514621734619141 0.0499999999999972 0.0499999999999972 0.0 919
-920 0.023529052734375 0.0200000000000031 0.0200000000000031 0.0 920
-921 0.0231509208679199 0.0300000000000011 0.0300000000000011 0.0 921
-922 0.0229501724243164 0.019999999999996 0.019999999999996 0.0 922
-923 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 923
-924 0.0227689743041992 0.019999999999996 0.019999999999996 0.0 924
-925 0.047015905380249 0.0500000000000043 0.0500000000000043 0.0 925
-926 0.0242269039154053 0.0300000000000011 0.0300000000000011 0.0 926
-927 0.0240240097045898 0.019999999999996 0.019999999999996 0.0 927
-928 0.0257468223571777 0.0300000000000011 0.0300000000000011 0.0 928
-929 0.0229909420013428 0.019999999999996 0.019999999999996 0.0 929
-930 0.0228919982910156 0.0200000000000031 0.0200000000000031 0.0 930
-931 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 931
-932 0.0487589836120605 0.0499999999999972 0.0499999999999972 0.0 932
-933 0.023705005645752 0.0300000000000011 0.0300000000000011 0.0 933
-934 0.0232529640197754 0.019999999999996 0.019999999999996 0.0 934
-935 0.0233039855957031 0.0200000000000031 0.0200000000000031 0.0 935
-936 0.0228619575500488 0.0300000000000011 0.0300000000000011 0.0 936
-937 0.0260879993438721 0.019999999999996 0.019999999999996 0.0 937
-938 0.022723913192749 0.0300000000000011 0.0300000000000011 0.0 938
-939 0.0474221706390381 0.0399999999999991 0.0399999999999991 0.0 939
-940 0.0233960151672363 0.0300000000000011 0.0300000000000011 0.0 940
-941 0.0239980220794678 0.0200000000000031 0.0200000000000031 0.0 941
-942 0.0292730331420898 0.0300000000000011 0.0300000000000011 0.0 942
-943 0.0237081050872803 0.019999999999996 0.019999999999996 0.0 943
-944 0.0230300426483154 0.0300000000000011 0.0300000000000011 0.0 944
-945 0.050105094909668 0.0499999999999972 0.0499999999999972 0.0 945
-946 0.0247271060943604 0.0200000000000031 0.0200000000000031 0.0 946
-947 0.0233941078186035 0.019999999999996 0.019999999999996 0.0 947
-948 0.0232498645782471 0.0300000000000011 0.0300000000000011 0.0 948
-949 0.0229218006134033 0.0200000000000031 0.0200000000000031 0.0 949
-950 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 950
-951 0.023029088973999 0.0300000000000011 0.0300000000000011 0.0 951
-952 0.0492429733276367 0.0500000000000043 0.0500000000000043 0.0 952
-953 0.0234079360961914 0.019999999999996 0.019999999999996 0.0 953
-954 0.0232601165771484 0.0200000000000031 0.0200000000000031 0.0 954
-955 0.026918888092041 0.0300000000000011 0.0300000000000011 0.0 955
-956 0.0231409072875977 0.019999999999996 0.019999999999996 0.0 956
-957 0.0228209495544434 0.0300000000000011 0.0300000000000011 0.0 957
-958 0.0463271141052246 0.0399999999999991 0.0399999999999991 0.0 958
-959 0.0237219333648682 0.0300000000000011 0.0300000000000011 0.0 959
-960 0.0233180522918701 0.0200000000000031 0.0200000000000031 0.0 960
-961 0.0231690406799316 0.019999999999996 0.019999999999996 0.0 961
-962 0.0229840278625488 0.0300000000000011 0.0300000000000011 0.0 962
-963 0.0235729217529297 0.0200000000000031 0.0200000000000031 0.0 963
-964 0.0238869190216064 0.019999999999996 0.019999999999996 0.0 964
-965 0.0521998405456543 0.0600000000000023 0.0600000000000023 0.0 965
-966 0.0235168933868408 0.019999999999996 0.019999999999996 0.0 966
-967 0.0235238075256348 0.0200000000000031 0.0200000000000031 0.0 967
-968 0.0230309963226318 0.0300000000000011 0.0300000000000011 0.0 968
-969 0.0229330062866211 0.019999999999996 0.019999999999996 0.0 969
-970 0.0227758884429932 0.0200000000000031 0.0200000000000031 0.0 970
-971 0.0229518413543701 0.019999999999996 0.019999999999996 0.0 971
-972 0.0476210117340088 0.0500000000000043 0.0500000000000043 0.0 972
-973 0.0264060497283936 0.0300000000000011 0.0300000000000011 0.0 973
-974 0.023115873336792 0.019999999999996 0.019999999999996 0.0 974
-975 0.0229768753051758 0.0300000000000011 0.0300000000000011 0.0 975
-976 0.0229260921478271 0.0200000000000031 0.0200000000000031 0.0 976
-977 0.0229401588439941 0.019999999999996 0.019999999999996 0.0 977
-978 0.0558409690856934 0.0600000000000023 0.0600000000000023 0.0 978
-979 0.0236589908599854 0.019999999999996 0.019999999999996 0.0 979
-980 0.0233588218688965 0.0200000000000031 0.0200000000000031 0.0 980
-981 0.0231630802154541 0.0300000000000011 0.0300000000000011 0.0 981
-982 0.0260651111602783 0.019999999999996 0.019999999999996 0.0 982
-983 0.0229349136352539 0.0300000000000011 0.0300000000000011 0.0 983
-984 0.0229189395904541 0.0200000000000031 0.0200000000000031 0.0 984
-985 0.0485391616821289 0.0499999999999972 0.0499999999999972 0.0 985
-986 0.0233860015869141 0.0200000000000031 0.0200000000000031 0.0 986
-987 0.0233519077301025 0.0300000000000011 0.0300000000000011 0.0 987
-988 0.0228800773620605 0.019999999999996 0.019999999999996 0.0 988
-989 0.0234830379486084 0.0200000000000031 0.0200000000000031 0.0 989
-990 0.022752046585083 0.019999999999996 0.019999999999996 0.0 990
-991 0.0511069297790527 0.0600000000000023 0.0600000000000023 0.0 991
-992 0.0240139961242676 0.019999999999996 0.019999999999996 0.0 992
-993 0.0233669281005859 0.0200000000000031 0.0200000000000031 0.0 993
-994 0.0232489109039307 0.0300000000000011 0.0300000000000011 0.0 994
-995 0.0230247974395752 0.019999999999996 0.019999999999996 0.0 995
-996 0.023061990737915 0.0200000000000031 0.0200000000000031 0.0 996
-997 0.0229039192199707 0.0300000000000011 0.0300000000000011 0.0 997
-998 0.0489161014556885 0.0399999999999991 0.0399999999999991 0.0 998
-999 0.0239861011505127 0.0300000000000011 0.0300000000000011 0.0 999
-1000 0.0271100997924805 0.0300000000000011 0.0300000000000011 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat
deleted file mode 100644
index 28b793019..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.168711551610797
-3 -0.185075424775395
-4 -0.186405168470362
-5 -0.192236450287278
-6 -0.173995040669983
-7 0.497673430722803
-8 0.29654339644635
-9 -0.172542664486347
-10 -0.185316639646188
-11 -0.182116040823686
-12 -0.185415710620437
-13 0.0523528472158225
-14 0.71970177208368
-15 -0.151810164721185
-16 -0.187290279760093
-17 -0.182362754850871
-18 -0.182718737242755
-19 -0.129108594864474
-20 0.622082118720718
-21 0.130782387755957
-22 -0.170447345640965
-23 -0.196652105821247
-24 -0.173569338036787
-25 -0.182188355492763
-26 0.265071206382968
-27 0.484886522656777
-28 -0.140444543213911
-29 -0.174312335218403
-30 -0.183335022511814
-31 -0.179674296765045
-32 0.0232199842046602
-33 0.496114733715927
-34 0.0822638752997461
-35 -0.171572446908724
-36 -0.192551986206074
-37 -0.162051421499677
-38 -0.0895919384941433
-39 0.335786620502553
-40 0.327644243263212
-41 -0.129948612855453
-42 -0.184370502365683
-43 -0.177204007654948
-44 -0.162157037082618
-45 0.17271845923701
-46 0.351796103861273
-47 0.0642274162111852
-48 -0.170959443773073
-49 -0.190856323754992
-50 -0.163714827336534
-51 0.0228314931445091
-52 0.26381977073053
-53 0.247803374234943
-54 -0.117037193906021
-55 -0.183830227189461
-56 -0.164640226854526
-57 -0.079276117022691
-58 0.20723348437059
-59 0.239706931399691
-60 0.0489172113214087
-61 -0.172021951272623
-62 -0.182860808512729
-63 -0.127358224108573
-64 0.107845579472678
-65 0.188933656016848
-66 0.194757142044723
-67 -0.112205833758773
-68 -0.179001063269936
-69 -0.16311828493705
-70 0.0324344108778214
-71 0.15051955620332
-72 0.163810160363991
-73 0.0519448596312306
-74 -0.163602345245488
-75 -0.158418891887294
-76 -0.0560272711908581
-77 0.13272666880305
-78 0.128776651967307
-79 0.137508369826638
-80 -0.106468759380143
-81 -0.175112389279141
-82 -0.110600151424024
-83 0.0829713181187441
-84 0.116400027198787
-85 0.108590070864495
-86 0.0380032448395754
-87 -0.15928371193835
-88 -0.16128905172696
-89 0.0331094309593576
-90 0.0781776964153065
-91 0.102945304233414
-92 0.10106965637548
-93 -0.0872290949923226
-94 -0.169705593008044
-95 -0.0419012011984929
-96 0.0915477326766184
-97 0.0704199456915236
-98 0.0728740009744583
-99 0.0218543030675779
-100 -0.151415427637779
-101 -0.0978287647318857
-102 0.0561931235819149
-103 0.0505423398983019
-104 0.0727678785780604
-105 0.0722492445655898
-106 -0.0862525883888437
-107 -0.137087142443964
-108 0.00615618677612293
-109 0.05394162080397
-110 0.0553896795215559
-111 0.055562843944084
-112 0.0276994577739776
-113 -0.137189947176271
-114 -0.0377239416628224
-115 0.0514504295405741
-116 0.0313293831130493
-117 0.0301709278444951
-118 0.0568085567458709
-119 -0.0804133515562644
-120 -0.0795840579043476
-121 0.0330117984081293
-122 0.0164579873951377
-123 0.0433446545769141
-124 0.0255953757755855
-125 0.00173682042832781
-126 -0.103165860768009
-127 0.00232696284173702
-128 0.0312423522135313
-129 0.0149616490484137
-130 0.0184417493516088
-131 0.0447441958949695
-132 -0.0641393958061555
-133 -0.0383352332350825
-134 0.0245347192219029
-135 0.00652236926605711
-136 0.0171622535457413
-137 0.009279213035149
-138 0.00278884493235273
-139 -0.0536703342115355
-140 0.0241669190880944
-141 -0.00326726756980508
-142 0.0162345932059117
-143 -0.0128230828071517
-144 0.0286239253928854
-145 -0.0327123591597955
-146 -0.00540598964166124
-147 -0.000332512936572612
-148 0.0148948411721159
-149 0.0166966907990605
-150 -0.00567074642628022
-151 0.0228823388615856
-152 -0.0308965208330592
-153 0.0180444981742879
-154 -0.0206921039064052
-155 0.00595894351847688
-156 -0.0208220594875718
-157 0.0310092938713835
-158 0.00078836634941453
-159 0.0106191475130608
-160 -0.0238938431356785
-161 -0.00188312143245682
-162 -0.0172204115325742
-163 -0.0112282005708165
-164 0.045034914010554
-165 0.00699215558040877
-166 -0.00331533192179088
-167 -0.0190245860603562
-168 -0.00800260302384398
-169 -0.0268417229599795
-170 0.0337926174874967
-171 0.0299901254990817
-172 0.00546001840883143
-173 -0.0331114785270307
-174 -0.0100509196512551
-175 -0.0360797776791535
-176 0.00148731167321117
-177 0.0706998590798648
-178 0.0165067725132839
-179 -0.0253495351545265
-180 -0.0357212534091994
-181 -0.0113101599791917
-182 -0.0363761390533369
-183 0.0469745163800697
-184 0.0610771540099002
-185 0.00552862518083574
-186 -0.0369332414763318
-187 -0.0111795223609534
-188 -0.0432626099842255
-189 0.00749428956560664
-190 0.087771964947633
-191 0.00185581109295404
-192 -0.0313699827844243
-193 -0.0255394152605449
-194 -0.0313242476969615
-195 -0.0215433414073359
-196 0.0618252922061284
-197 0.0646027183854095
-198 -0.0273965032147501
-199 -0.0496517862033294
-200 -0.018433346375674
-201 -0.0411702579107107
-202 0.0253673387035334
-203 0.104691703014017
-204 -0.00185448989075414
-205 -0.0446682471573042
-206 -0.0238238321649752
-207 -0.0467619043304021
-208 -0.00360887459827125
-209 0.0793757654561071
-210 0.0429129421022387
-211 -0.0276583402343142
-212 -0.0541678923378372
-213 -0.0179592917752469
-214 -0.0355547481831798
-215 0.0461320988573292
-216 0.0913448308641226
-217 -0.01834847095298
-218 -0.0468350861575364
-219 -0.0339767892231334
-220 -0.0440298850183693
-221 0.0223578500867496
-222 0.0933434497060592
-223 0.0463337814726783
-224 -0.0425574347432942
-225 -0.0466890286886253
-226 -0.0399961538339586
-227 -0.0182587945265267
-228 0.0632222098042003
-229 0.0694906023247877
-230 -0.0142049617016301
-231 -0.0455291466080565
-232 -0.0361070791379545
-233 -0.0452564134883136
-234 0.0510580833723044
-235 0.0480780453494914
-236 0.0446139327527731
-237 -0.0522801405363582
-238 -0.0378004800445766
-239 -0.0470589177024096
-240 0.0108569075440268
-241 0.066938577476477
-242 0.0581800021039197
-243 -0.0194507150560373
-244 -0.0543671997964238
-245 -0.0401308556434312
-246 -0.0256000479147573
-247 0.0620205622045612
-248 0.030523271212025
-249 0.038296942239191
-250 -0.0449036287763184
-251 -0.0420966487827338
-252 -0.0465461175034265
-253 0.0377597573585246
-254 0.0350560493012657
-255 0.056093186329707
-256 -0.0275815952046349
-257 -0.04750423935097
-258 -0.0432832585148503
-259 0.0125157284398116
-260 0.064931228957816
-261 0.019604040715554
-262 0.0373596111888757
-263 -0.0636676558497218
-264 -0.0375272240403982
-265 -0.0361149121701811
-266 0.0465388746567212
-267 0.036241311622391
-268 0.0487539350868976
-269 -0.0287234748216925
-270 -0.0539239644524711
-271 -0.0436583063696183
-272 0.0205146377795573
-273 0.040230997344665
-274 0.0315213860739265
-275 0.0228897348670507
-276 -0.0572183200160057
-277 -0.0431270221897599
-278 -0.00833297422506617
-279 0.0473219005528863
-280 0.0251629586411652
-281 0.038915273454895
-282 -0.0354353137808485
-283 -0.0508161370460544
-284 -0.036047127999377
-285 0.0337334539194076
-286 0.0275614274110637
-287 0.0440004318004696
-288 0.00961414206729694
-289 -0.0613316463073689
-290 -0.0452152575735171
-291 0.00249641925695087
-292 0.0493185930315809
-293 0.011444255885649
-294 0.0316360674883416
-295 -0.0319106139816597
-296 -0.0295989018040149
-297 -0.0190441524352952
-298 0.0282870892585827
-299 0.0265353254552707
-300 0.032273319444618
-301 -0.000468750771499013
-302 -0.0611876583947586
-303 -0.0309474581592694
-304 0.0186631754625234
-305 0.0371821091242854
-306 0.0145022818476083
-307 0.0232617470286048
-308 -0.0395688677229205
-309 -0.0476060515379838
-310 -0.00769044117333217
-311 0.0353693458390462
-312 0.0240002604802843
-313 0.0245536637430618
-314 -0.004415413915098
-315 -0.0528044137604404
-316 -0.0234265814208568
-317 0.022470064568286
-318 0.028915521370024
-319 0.0211638004156281
-320 0.0054168896988135
-321 -0.042590350753945
-322 -0.0284283118181943
-323 -0.00664062749496557
-324 0.0411480242046925
-325 0.0128417754264411
-326 0.0305223344547661
-327 -0.0236579754952802
-328 -0.0540845927671526
-329 -0.015455893522093
-330 0.025833520023463
-331 0.0278005598102001
-332 0.023042186646012
-333 0.0188728568852482
-334 -0.0493662121878053
-335 -0.0261050936436941
-336 0.0147707465979224
-337 0.0180860444200187
-338 0.0126826785496685
-339 0.0298891954148176
-340 -0.0284892193567594
-341 -0.0442930583208295
-342 -0.00465824613683129
-343 0.0264974198001827
-344 0.0160287131470608
-345 0.0245897525651692
-346 -0.00575496663872669
-347 -0.0478041333821144
-348 -0.0171938958596392
-349 0.0121633028274292
-350 0.0339339464445481
-351 -0.00053023814088501
-352 0.0326742285343647
-353 -0.0341060707006212
-354 -0.039748874098284
-355 -8.49024655445998e-06
-356 0.0279658431303204
-357 0.00720050291043204
-358 0.0259853074034904
-359 -0.00689945021869653
-360 -0.0564417535195406
-361 0.00615675252612387
-362 0.012211786338546
-363 0.0210382695674554
-364 0.00854911585033297
-365 0.00730196086776967
-366 -0.0376558839307909
-367 -0.0205399505507927
-368 0.00730027899569551
-369 0.032246213402309
-370 0.0091169179182096
-371 0.0250196684542896
-372 -0.0111591997251681
-373 -0.0422136335522998
-374 -0.0128579601772781
-375 0.028053399466731
-376 0.00354103697855516
-377 0.0279174938103032
-378 -0.00904722473650234
-379 -0.028946301515676
-380 -0.0139786293136349
-381 0.00545851365358498
-382 0.0190227282430585
-383 -0.000179476269715586
-384 0.0207231566698558
-385 -0.0170447136957343
-386 -0.0310486179199879
-387 0.00187196784210256
-388 0.0224041083616037
-389 9.55672559842024e-06
-390 0.028063228403911
-391 -0.00629505686670561
-392 -0.0353987330853413
-393 -0.0136692381584725
-394 0.0175671180486305
-395 0.0138013069088845
-396 -0.00620615793014542
-397 0.0246579116616293
-398 -0.0183401258366494
-399 -0.032731274379925
-400 0.0140881514888206
-401 0.00766293328904026
-402 -0.00602692518274087
-403 0.0260538721783923
-404 -0.00584187577452444
-405 -0.0272022140360092
-406 -0.00245620949388524
-407 0.0238765788649767
-408 0.00803221790371331
-409 0.00486019379696553
-410 0.0128952371994524
-411 -0.0296483100976332
-412 -0.0169390703239796
-413 0.0100660026536031
-414 0.0116526840405598
-415 -0.00552490658166841
-416 0.0277013713253159
-417 -0.01262493213524
-418 -0.0279080581956591
-419 -0.00184485071740047
-420 0.0083680688534008
-421 0.00626000399151215
-422 0.0179881429190266
-423 -0.00447721272724791
-424 -0.0184829817994694
-425 -0.0111404841683833
-426 0.0129221736981228
-427 0.0117611123486844
-428 -0.00973900750863823
-429 0.0225145858300765
-430 -0.0109220115294983
-431 -0.0295910058303649
-432 0.00368789876917004
-433 0.00930110386233805
-434 0.00564395086046309
-435 0.0212026111611703
-436 -0.0130378739710715
-437 -0.0151643278007831
-438 -0.0180440351274524
-439 0.0151595776800046
-440 0.00929213226473587
-441 0.0003415659091603
-442 0.0139565319476247
-443 -0.00910162712841926
-444 -0.0047413122985865
-445 -0.00499428051231756
-446 0.0128999469215125
-447 -0.00928272901740709
-448 0.0272064223470049
-449 -0.0183788344655416
-450 -0.0118496040154817
-451 -0.0107494202754318
-452 0.0182399903606553
-453 0.00622660737187097
-454 0.00745915020514592
-455 -0.00127190501056035
-456 -0.0166547143603286
-457 -0.0103667163700212
-458 0.00400520855528189
-459 0.0147115427131264
-460 -0.0160615357972689
-461 0.0246609774312651
-462 -0.0029333920472466
-463 -0.0181346871754782
-464 -0.00953567256874797
-465 0.021178583971421
-466 -0.012606366153552
-467 0.0272533088449177
-468 -0.0210280900703455
-469 -0.00280319780800235
-470 -0.0170463672712959
-471 0.0183373667562639
-472 0.0107583671313877
-473 -0.0078936794893897
-474 0.00778649649424241
-475 -0.0155345265869157
-476 -0.00613257574212038
-477 -0.00504286887531768
-478 0.0210772277332088
-479 -0.0128524940267954
-480 0.0341276652831629
-481 -0.0170650621790446
-482 -0.00345617548803839
-483 -0.0129517082898899
-484 0.0173373606064477
-485 -0.00523973359223807
-486 0.00844247199289556
-487 -0.000388501685715539
-488 -0.00941832803307521
-489 -0.00657732323629541
-490 0.00367271132008509
-491 0.0104986289066865
-492 -0.012121254212176
-493 0.0144869605589711
-494 -0.00864941651177608
-495 -0.01112718777137
-496 -0.00334819620816524
-497 0.0185220421918073
-498 -0.00800250333583432
-499 0.0161430412671399
-500 -0.00811904696073173
-501 -0.0131958246871404
-502 0.00283288244567032
-503 0.00400534218369864
-504 0.00517285959530552
-505 -0.0113016945649371
-506 0.0133257896160407
-507 -0.0100249708015443
-508 -0.00256099015771646
-509 0.000136766223360138
-510 0.00855194730142931
-511 -0.00531138706017324
-512 0.00204161899934194
-513 -0.00420598958751402
-514 -0.00547421378316814
-515 -0.00769199850530263
-516 0.0216892032285094
-517 0.00908736119849349
-518 -0.00700354150287694
-519 0.00385030902693081
-520 -0.0123494297246387
-521 0.000934704276073887
-522 0.00705709592844499
-523 -0.00114787001008378
-524 -0.00210811799844287
-525 0.00379518996660863
-526 -0.00476039992301502
-527 0.00251331815987456
-528 -0.00826728020183847
-529 0.00902402695322199
-530 0.000870562551920878
-531 -0.00348481579363119
-532 -0.00125547085943994
-533 -0.00457730270844353
-534 0.000670589363068931
-535 0.00203788465196431
-536 0.00608567369144255
-537 2.19715778381094e-05
-538 -0.0039030628395208
-539 0.00512758275114747
-540 -0.0144646664397469
-541 0.0094686570477374
-542 0.00274671581906305
-543 -0.00678173613063177
-544 -0.00229002671014199
-545 0.00592727900087354
-546 -0.00816015486873931
-547 0.00907388451433627
-548 0.0018377578149579
-549 -0.0127399753897002
-550 0.0103068975915084
-551 -0.0106787121790095
-552 0.00570246495524106
-553 -0.00038055365375568
-554 0.0105773030205816
-555 0.00595131841957403
-556 -0.00509875005695669
-557 -0.00822359585740647
-558 0.00452689845139232
-559 -0.00293270803490497
-560 0.00105079194795726
-561 0.0109353635798441
-562 -0.0197506449586046
-563 0.0218239959802497
-564 -0.0146510772378776
-565 -0.0031545366575823
-566 0.00360976923040136
-567 0.00133537648121434
-568 -0.00289782413008785
-569 0.00758892970442103
-570 -0.0141005351769624
-571 0.00987824122870196
-572 -0.00255558849302304
-573 0.000744149940492195
-574 0.0106602498970704
-575 -0.0142431009887286
-576 0.00996314897224239
-577 -0.0104990007985002
-578 0.00109353754269881
-579 -0.00275371958433224
-580 0.0113885636424959
-581 -0.0150512253599863
-582 0.022337619882076
-583 -0.0216778389670573
-584 0.00863828810448533
-585 -0.00918952923772199
-586 0.00354541072669278
-587 0.00186796377320277
-588 -0.00419542916327283
-589 0.00975603734830963
-590 -0.00452668353073013
-591 0.00310061328497863
-592 0.00522892318692988
-593 0.000452603861773268
-594 -0.00392697607921247
-595 0.00863249154941176
-596 -0.00832078201242865
-597 -0.00394497658086084
-598 -0.00605451952414724
-599 0.0162191796757364
-600 -0.0110909733185336
-601 0.00720572232121751
-602 0.00218507796543462
-603 -0.00965401693454912
-604 -0.0108892449738329
-605 0.0182573291106095
-606 -0.0101848710757151
-607 0.00753912620319138
-608 0.00552590397878413
-609 -0.00699240285933447
-610 -0.00592445874426432
-611 0.00181675318258215
-612 0.00596213285085161
-613 -0.00175858286015883
-614 0.00407450191848153
-615 -0.00135060667016455
-616 -0.0132703466359575
-617 0.00119500154487564
-618 0.0104207042421722
-619 -0.0101546955527216
-620 0.0151923635732439
-621 -0.00273197735893913
-622 -0.00716289238336821
-623 -0.0171181101464724
-624 0.0167209884450157
-625 -0.00638456270553197
-626 0.0115244846746483
-627 0.00412387285497462
-628 0.00522037750437085
-629 -0.0207335154052575
-630 0.0107397344182975
-631 0.000446658250956307
-632 -0.00502788594559083
-633 0.0186557262987464
-634 -0.00802823332161929
-635 -0.0113496131760766
-636 -0.00301246620601798
-637 0.00960017707242071
-638 -0.0101983443096708
-639 0.0185874661412788
-640 -0.00796700063418294
-641 0.000800373366255129
-642 -0.0142259171933031
-643 0.00675256815377976
-644 -0.00261054615159158
-645 0.00391449782418117
-646 0.0139874531474154
-647 0.00530840019489214
-648 -0.0271260591182079
-649 0.00229999324419244
-650 0.0012589433396212
-651 0.000592814947107167
-652 0.0201903818074188
-653 -0.0109069610093694
-654 0.000612907033154517
-655 -0.0168429348765485
-656 0.00867757131382127
-657 -0.00734945498589961
-658 0.0116794460570149
-659 0.00508627131689495
-660 0.00338584069635359
-661 -0.0248824043490218
-662 0.00165251679722703
-663 0.00150493225276704
-664 0.0136218056659362
-665 0.0185790451050334
-666 -0.00254472668221909
-667 -0.012289308557362
-668 -0.0144954370766794
-669 0.00122172858017179
-670 0.0025962904924925
-671 0.0163382999614507
-672 0.00111261978891954
-673 0.0032877612305335
-674 -0.0260369810192395
-675 0.00159666131197362
-676 -0.00532940173394529
-677 0.0172320321775677
-678 0.00869668235164475
-679 0.00291575973127735
-680 -0.015462218778181
-681 -0.0118608792720508
-682 -0.00220903962177873
-683 0.0120179152403506
-684 0.0136302482537954
-685 0.00904529400779457
-686 -0.00689602667015569
-687 -0.0285633522016709
-688 -0.00218285494634568
-689 0.00546702558234338
-690 0.0209141673516685
-691 0.00370465573465944
-692 0.00302297586155796
-693 -0.016485314433266
-694 -0.0140010121985048
-695 -0.00666402217308437
-696 0.0185309777178555
-697 0.00524546360988583
-698 0.0136885255750835
-699 -0.0104440356403008
-700 -0.0241256457948681
-701 -0.000785820295910417
-702 0.0158790422192167
-703 0.0148074455993449
-704 0.0148524900638902
-705 -0.0115456319714617
-706 -0.0170567215815039
-707 -0.0158838823574548
-708 0.00366739139639638
-709 0.0229702948653725
-710 0.00020925945941642
-711 0.016393506286626
-712 -0.0146752015343459
-713 -0.0266439752231523
-714 -0.0106049447476659
-715 0.0200857710496951
-716 0.0159019417251445
-717 0.014477526739592
-718 -0.0114112270538866
-719 -0.0170568864212781
-720 -0.0198060133943224
-721 0.0141195633193631
-722 0.0169697876976791
-723 0.0111601506150928
-724 0.000736029778776562
-725 -0.0138823704910304
-726 -0.0297759947577568
-727 0.000877318422704956
-728 0.0245870344818203
-729 0.00991534185785315
-730 0.0167371008710776
-731 -0.01846756355292
-732 -0.0143120279886695
-733 -0.0275565546549941
-734 0.0192359115781678
-735 0.0161720734394042
-736 0.0126768844333159
-737 0.00181190220867761
-738 -0.0108467971335452
-739 -0.0304794501225128
-740 0.00782220949913542
-741 0.0209517859747924
-742 0.0159210578956611
-743 0.00507627421897103
-744 -0.0185977878326676
-745 -0.0172160801840428
-746 -0.0154503291175863
-747 0.0240468087097962
-748 0.00881259580601295
-749 0.0159692498562702
-750 -0.00910054705411617
-751 -0.0182022490122094
-752 -0.0240881360450285
-753 0.0120777690684819
-754 0.018009925362029
-755 0.0180902063329173
-756 0.000256136047852365
-757 -0.013362593701584
-758 -0.0228122214255098
-759 -0.00694060235600491
-760 0.0215395702278941
-761 0.0146271311142691
-762 0.0042224855013385
-763 -0.00912079764567066
-764 -0.0192977028904618
-765 -0.0141955473974918
-766 0.0183439845354601
-767 0.00930105732395573
-768 0.0184551584403917
-769 -0.00463309866829429
-770 -0.0226061978674481
-771 -0.0126560635461022
-772 -0.00415731908001533
-773 0.0187754008269273
-774 0.0180023436241415
-775 0.00200677790387502
-776 -0.00390091363657905
-777 -0.0259097935663753
-778 -0.00352849460582893
-779 0.0114869717500844
-780 0.0181590467496427
-781 0.00541354714803118
-782 -0.00341446349188591
-783 -0.0224873784300854
-784 -0.00419373295829652
-785 0.00151844686046239
-786 0.0113650109976602
-787 0.0158002722634896
-788 -0.00669123138348563
-789 -0.00944030297158121
-790 -0.0128471454926811
-791 -0.00195425126313221
-792 0.0074970279200069
-793 0.0181288263041054
-794 0.00373580246921938
-795 -0.00738898492727174
-796 -0.0131007631291169
-797 -0.000982016348095141
-798 -0.0077218774351863
-799 0.0213289345403391
-800 0.00354948225668615
-801 -0.00464603451943496
-802 -0.0112940265794087
-803 -0.00402400060757488
-804 0.00328202388625696
-805 -0.00289756468799923
-806 0.0217143167615233
-807 -0.00723480130387542
-808 -0.0106385305584251
-809 -0.000880622168562012
-810 0.00236278291649433
-811 -0.0102116844250211
-812 0.0231430095296313
-813 0.000498636796683443
-814 -0.00822238911567211
-815 -0.000690473274202945
-816 -0.0041688749017029
-817 -0.00252158403219581
-818 0.00607821741975229
-819 0.00777977338604755
-820 -0.00207050788971321
-821 -0.0140240864712808
-822 0.00947155215423528
-823 -0.00138467437610252
-824 -0.00770142306481203
-825 0.0154602942265093
-826 -0.00445857492028323
-827 -0.0101772151931684
-828 0.0100179562755017
-829 -0.00101796933766295
-830 -0.0119434679802116
-831 0.0102774737624907
-832 0.00478068349303803
-833 -0.00664556216054719
-834 -0.00197743246531773
-835 0.00543784524388563
-836 -0.0052886241893568
-837 0.0026439850351734
-838 0.0030919842085538
-839 -0.00804500518577692
-840 -0.0010416922039517
-841 0.0108884645351451
-842 -0.00566073610826143
-843 -0.00188898403884589
-844 -0.000623624431978478
-845 0.00428626298895372
-846 -0.0114117004140406
-847 0.0070058534073635
-848 0.01316321553763
-849 -0.0134743452627623
-850 0.00646873802741608
-851 -0.000711439355883821
-852 -0.0120290310079327
-853 0.00776340536975608
-854 0.0121426740397341
-855 -0.0112997696592519
-856 0.00101867582065373
-857 -0.00437667036049063
-858 0.000320275817054275
-859 -0.000142126707409615
-860 0.00721775365468403
-861 0.00498981583349973
-862 -0.00501663994971829
-863 -0.00749187478362105
-864 -0.00349429603220739
-865 0.00096737598977786
-866 0.00699694065608912
-867 0.00691803448626803
-868 -0.000449901074230268
-869 -0.00445988048738086
-870 -0.00905628623058306
-871 -0.00235661129997502
-872 0.00676090763319871
-873 0.00895030192113989
-874 4.49454384220283e-05
-875 -0.00263532947240222
-876 -0.010297542142376
-877 -0.010415543599356
-878 0.0128496698052284
-879 0.00696638356949457
-880 0.00214959987087146
-881 0.00604766744508239
-882 -0.0149547634792813
-883 -0.0133886474253249
-884 0.00661648124666426
-885 0.010135062194657
-886 0.0058559958108212
-887 0.00957431092209329
-888 -0.0090398903790597
-889 -0.0199467380548428
-890 -0.000587629934548291
-891 0.0110510611921795
-892 0.0128725674330994
-893 -0.00402188300253153
-894 0.00737831485228642
-895 -0.0184423803339027
-896 -0.0110288361296573
-897 0.00890220929064295
-898 0.0094403783725091
-899 -0.000809138837552774
-900 0.0116542051582576
-901 -0.0107875510009573
-902 -0.0180296809250011
-903 0.00306299530457164
-904 0.0106046718313357
-905 0.0100756629359416
-906 0.00402229149764495
-907 -0.00423755437734391
-908 -0.0147679502849595
-909 -0.00876645613183849
-910 0.00937383395424556
-911 0.00762135328148195
-912 0.00589312291049009
-913 0.00527632712012485
-914 -0.0150771941451772
-915 -0.0126209222242841
-916 0.00209594315460717
-917 0.0150533771997464
-918 -0.000323609234544641
-919 0.00910288654678051
-920 -0.00768699605697063
-921 -0.0131267840299683
-922 -0.00394519352651183
-923 0.0112577773951416
-924 0.00193303552341244
-925 0.0155473373100893
-926 -0.0059851304642569
-927 -0.0127129091731764
-928 -0.010012705310311
-929 0.00314209573634191
-930 0.0111473003309339
-931 0.00788913702307995
-932 0.00305911972139761
-933 -0.00846335727494071
-934 -0.0122811720479955
-935 -0.0061049349645249
-936 0.00712178796175147
-937 0.0109366030876719
-938 0.010847685977904
-939 -0.00884829082408408
-940 -0.00833721747749976
-941 -0.0119098033912994
-942 0.00740468154428091
-943 0.0055679748392607
-944 0.0108164694058525
-945 0.000125955287551805
-946 -0.00747241615545713
-947 -0.00869573388304389
-948 -0.00354302687064023
-949 0.00160999946217594
-950 0.0205396965281884
-951 -0.00211607394891862
-952 -0.00622739874288181
-953 -0.00653488891371642
-954 -0.00979554730684349
-955 0.000613100471788197
-956 0.0166711334404957
-957 0.00616769987888474
-958 -0.00491976982344559
-959 -0.00424317633763101
-960 -0.00827918671212606
-961 -0.00604128020653073
-962 0.00958577837280408
-963 0.0149354906693512
-964 -0.00421686394063702
-965 -0.00316215046844813
-966 -0.0064530371820805
-967 -0.00662231958613653
-968 0.00112156121486116
-969 0.0109421973075187
-970 0.00437305640139855
-971 -0.00455774256532607
-972 -0.00437412532272711
-973 -0.00518337545866395
-974 -0.00400100467146524
-975 0.0127573808612559
-976 0.00366553037525621
-977 -0.00238554249362654
-978 -0.00329057674587693
-979 -0.00396527990664183
-980 -0.00266571430247101
-981 0.00338581958247141
-982 0.00669480510272971
-983 -0.000520566185644882
-984 -0.00202730064400516
-985 -0.00225103555436894
-986 -0.00175391520986938
-987 -0.0030237079249996
-988 0.00556348089902938
-989 0.00016537124990895
-990 0.000366191847904269
-991 -0.000403568297995977
-992 -0.000980716337890804
-993 -0.00107150539540352
-994 -0.00116888364602599
-995 0.00111545140635789
-996 0.000974863549210892
-997 0.000888586420263992
-998 0.0007092258397136
-999 0.000470368356747198
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat
deleted file mode 100644
index feedffb98..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.023082971572876 0.019999999999996 0.019999999999996 0.0 1
-2 0.0226471424102783 0.0300000000000011 0.0300000000000011 0.0 2
-3 0.0225150585174561 0.0200000000000102 0.0200000000000102 0.0 3
-4 0.0226900577545166 0.019999999999996 0.019999999999996 0.0 4
-5 0.0225200653076172 0.019999999999996 0.019999999999996 0.0 5
-6 0.0237810611724854 0.0300000000000011 0.0300000000000011 0.0 6
-7 0.0472888946533203 0.0400000000000063 0.0400000000000063 0.0 7
-8 0.022852897644043 0.0300000000000011 0.0300000000000011 0.0 8
-9 0.0266950130462646 0.019999999999996 0.019999999999996 0.0 9
-10 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 10
-11 0.0223457813262939 0.019999999999996 0.019999999999996 0.0 11
-12 0.0224599838256836 0.019999999999996 0.019999999999996 0.0 12
-13 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 13
-14 0.0482068061828613 0.0499999999999972 0.0499999999999972 0.0 14
-15 0.0226612091064453 0.019999999999996 0.019999999999996 0.0 15
-16 0.0224330425262451 0.019999999999996 0.019999999999996 0.0 16
-17 0.0224549770355225 0.019999999999996 0.019999999999996 0.0 17
-18 0.0225000381469727 0.0200000000000102 0.0200000000000102 0.0 18
-19 0.0258901119232178 0.0300000000000011 0.0300000000000011 0.0 19
-20 0.0469810962677002 0.0499999999999972 0.0499999999999972 0.0 20
-21 0.0228328704833984 0.019999999999996 0.019999999999996 0.0 21
-22 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 22
-23 0.022468090057373 0.0200000000000102 0.0200000000000102 0.0 23
-24 0.0230059623718262 0.0299999999999869 0.0299999999999869 0.0 24
-25 0.0221710205078125 0.0200000000000102 0.0200000000000102 0.0 25
-26 0.0221641063690186 0.019999999999996 0.019999999999996 0.0 26
-27 0.0475480556488037 0.0499999999999972 0.0499999999999972 0.0 27
-28 0.025291919708252 0.0200000000000102 0.0200000000000102 0.0 28
-29 0.0225188732147217 0.0299999999999869 0.0299999999999869 0.0 29
-30 0.0293300151824951 0.0300000000000011 0.0300000000000011 0.0 30
-31 0.0234100818634033 0.0200000000000102 0.0200000000000102 0.0 31
-32 0.0224781036376953 0.019999999999996 0.019999999999996 0.0 32
-33 0.0478579998016357 0.0499999999999972 0.0499999999999972 0.0 33
-34 0.0229699611663818 0.019999999999996 0.019999999999996 0.0 34
-35 0.0227549076080322 0.0300000000000011 0.0300000000000011 0.0 35
-36 0.0226318836212158 0.0200000000000102 0.0200000000000102 0.0 36
-37 0.0262620449066162 0.019999999999996 0.019999999999996 0.0 37
-38 0.0223979949951172 0.0300000000000011 0.0300000000000011 0.0 38
-39 0.0222330093383789 0.019999999999996 0.019999999999996 0.0 39
-40 0.0477039813995361 0.0499999999999972 0.0499999999999972 0.0 40
-41 0.0228910446166992 0.0200000000000102 0.0200000000000102 0.0 41
-42 0.0233700275421143 0.019999999999996 0.019999999999996 0.0 42
-43 0.0224530696868896 0.0300000000000011 0.0300000000000011 0.0 43
-44 0.0225670337677002 0.019999999999996 0.019999999999996 0.0 44
-45 0.0227048397064209 0.019999999999996 0.019999999999996 0.0 45
-46 0.0222969055175781 0.0200000000000102 0.0200000000000102 0.0 46
-47 0.050562858581543 0.0499999999999972 0.0499999999999972 0.0 47
-48 0.0228369235992432 0.0300000000000011 0.0300000000000011 0.0 48
-49 0.0225470066070557 0.019999999999996 0.019999999999996 0.0 49
-50 0.02256178855896 0.019999999999996 0.019999999999996 0.0 50
-51 0.0225701332092285 0.0300000000000011 0.0300000000000011 0.0 51
-52 0.0230269432067871 0.019999999999996 0.019999999999996 0.0 52
-53 0.0470359325408936 0.0500000000000114 0.0500000000000114 0.0 53
-54 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 54
-55 0.0225660800933838 0.019999999999996 0.019999999999996 0.0 55
-56 0.025252103805542 0.0300000000000011 0.0300000000000011 0.0 56
-57 0.0222170352935791 0.019999999999996 0.019999999999996 0.0 57
-58 0.0221600532531738 0.0200000000000102 0.0200000000000102 0.0 58
-59 0.0222020149230957 0.019999999999996 0.019999999999996 0.0 59
-60 0.0476398468017578 0.0499999999999972 0.0499999999999972 0.0 60
-61 0.022913932800293 0.019999999999996 0.019999999999996 0.0 61
-62 0.0225539207458496 0.0300000000000011 0.0300000000000011 0.0 62
-63 0.0225050449371338 0.0200000000000102 0.0200000000000102 0.0 63
-64 0.022601842880249 0.019999999999996 0.019999999999996 0.0 64
-65 0.0236048698425293 0.0300000000000011 0.0300000000000011 0.0 65
-66 0.0489590167999268 0.039999999999992 0.039999999999992 0.0 66
-67 0.0297541618347168 0.0300000000000011 0.0300000000000011 0.0 67
-68 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 68
-69 0.0228681564331055 0.0200000000000102 0.0200000000000102 0.0 69
-70 0.0228149890899658 0.019999999999996 0.019999999999996 0.0 70
-71 0.0225210189819336 0.0300000000000011 0.0300000000000011 0.0 71
-72 0.022305965423584 0.019999999999996 0.019999999999996 0.0 72
-73 0.0474321842193604 0.0499999999999972 0.0499999999999972 0.0 73
-74 0.0265100002288818 0.0200000000000102 0.0200000000000102 0.0 74
-75 0.0226712226867676 0.019999999999996 0.019999999999996 0.0 75
-76 0.022493839263916 0.0300000000000011 0.0300000000000011 0.0 76
-77 0.0225288867950439 0.019999999999996 0.019999999999996 0.0 77
-78 0.0226340293884277 0.019999999999996 0.019999999999996 0.0 78
-79 0.0476889610290527 0.0499999999999972 0.0499999999999972 0.0 79
-80 0.0229480266571045 0.0200000000000102 0.0200000000000102 0.0 80
-81 0.0228819847106934 0.0300000000000011 0.0300000000000011 0.0 81
-82 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 82
-83 0.0224130153656006 0.019999999999996 0.019999999999996 0.0 83
-84 0.0260109901428223 0.0300000000000011 0.0300000000000011 0.0 84
-85 0.0223500728607178 0.019999999999996 0.019999999999996 0.0 85
-86 0.0476620197296143 0.0500000000000114 0.0500000000000114 0.0 86
-87 0.022737979888916 0.019999999999996 0.019999999999996 0.0 87
-88 0.0233170986175537 0.019999999999996 0.019999999999996 0.0 88
-89 0.0224459171295166 0.0300000000000011 0.0300000000000011 0.0 89
-90 0.0226268768310547 0.019999999999996 0.019999999999996 0.0 90
-91 0.0225470066070557 0.0200000000000102 0.0200000000000102 0.0 91
-92 0.0492300987243652 0.0499999999999972 0.0499999999999972 0.0 92
-93 0.0236849784851074 0.019999999999996 0.019999999999996 0.0 93
-94 0.0227689743041992 0.0300000000000011 0.0300000000000011 0.0 94
-95 0.022672176361084 0.019999999999996 0.019999999999996 0.0 95
-96 0.022651195526123 0.0200000000000102 0.0200000000000102 0.0 96
-97 0.0225498676300049 0.0300000000000011 0.0300000000000011 0.0 97
-98 0.0222620964050293 0.019999999999996 0.019999999999996 0.0 98
-99 0.0475699901580811 0.0499999999999972 0.0499999999999972 0.0 99
-100 0.0227551460266113 0.019999999999996 0.019999999999996 0.0 100
-101 0.0227038860321045 0.0200000000000102 0.0200000000000102 0.0 101
-102 0.0256071090698242 0.0300000000000011 0.0300000000000011 0.0 102
-103 0.0226211547851562 0.019999999999996 0.019999999999996 0.0 103
-104 0.0256171226501465 0.0300000000000011 0.0300000000000011 0.0 104
-105 0.051800012588501 0.0499999999999972 0.0499999999999972 0.0 105
-106 0.023643970489502 0.019999999999996 0.019999999999996 0.0 106
-107 0.0227420330047607 0.019999999999996 0.019999999999996 0.0 107
-108 0.0226438045501709 0.0300000000000011 0.0300000000000011 0.0 108
-109 0.022442102432251 0.0200000000000102 0.0200000000000102 0.0 109
-110 0.0223290920257568 0.019999999999996 0.019999999999996 0.0 110
-111 0.0222249031066895 0.019999999999996 0.019999999999996 0.0 111
-112 0.0505638122558594 0.0499999999999972 0.0499999999999972 0.0 112
-113 0.0227949619293213 0.0300000000000011 0.0300000000000011 0.0 113
-114 0.0227949619293213 0.0200000000000102 0.0200000000000102 0.0 114
-115 0.0225298404693604 0.019999999999996 0.019999999999996 0.0 115
-116 0.0225038528442383 0.019999999999996 0.019999999999996 0.0 116
-117 0.0231928825378418 0.0300000000000011 0.0300000000000011 0.0 117
-118 0.0223879814147949 0.019999999999996 0.019999999999996 0.0 118
-119 0.0476298332214355 0.0500000000000114 0.0500000000000114 0.0 119
-120 0.0247969627380371 0.019999999999996 0.019999999999996 0.0 120
-121 0.0240130424499512 0.0300000000000011 0.0300000000000011 0.0 121
-122 0.0225648880004883 0.019999999999996 0.019999999999996 0.0 122
-123 0.0225870609283447 0.019999999999996 0.019999999999996 0.0 123
-124 0.0225720405578613 0.0300000000000011 0.0300000000000011 0.0 124
-125 0.0477638244628906 0.0400000000000063 0.0400000000000063 0.0 125
-126 0.0232040882110596 0.0300000000000011 0.0300000000000011 0.0 126
-127 0.0227577686309814 0.019999999999996 0.019999999999996 0.0 127
-128 0.0225858688354492 0.019999999999996 0.019999999999996 0.0 128
-129 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 129
-130 0.0251419544219971 0.0300000000000011 0.0300000000000011 0.0 130
-131 0.0224969387054443 0.019999999999996 0.019999999999996 0.0 131
-132 0.0474879741668701 0.0499999999999972 0.0499999999999972 0.0 132
-133 0.0228550434112549 0.019999999999996 0.019999999999996 0.0 133
-134 0.0226738452911377 0.0300000000000011 0.0300000000000011 0.0 134
-135 0.0226309299468994 0.019999999999996 0.019999999999996 0.0 135
-136 0.0224778652191162 0.0200000000000102 0.0200000000000102 0.0 136
-137 0.0225551128387451 0.019999999999996 0.019999999999996 0.0 137
-138 0.0470321178436279 0.0499999999999972 0.0499999999999972 0.0 138
-139 0.0260279178619385 0.0300000000000011 0.0300000000000011 0.0 139
-140 0.0227389335632324 0.019999999999996 0.019999999999996 0.0 140
-141 0.029339075088501 0.0300000000000011 0.0300000000000011 0.0 141
-142 0.0226800441741943 0.0200000000000102 0.0200000000000102 0.0 142
-143 0.0223538875579834 0.019999999999996 0.019999999999996 0.0 143
-144 0.0231339931488037 0.0300000000000011 0.0300000000000011 0.0 144
-145 0.0474388599395752 0.039999999999992 0.039999999999992 0.0 145
-146 0.0227169990539551 0.0300000000000011 0.0300000000000011 0.0 146
-147 0.0225269794464111 0.0200000000000102 0.0200000000000102 0.0 147
-148 0.0240280628204346 0.019999999999996 0.019999999999996 0.0 148
-149 0.0242280960083008 0.0300000000000011 0.0300000000000011 0.0 149
-150 0.0225520133972168 0.019999999999996 0.019999999999996 0.0 150
-151 0.0471599102020264 0.0499999999999972 0.0499999999999972 0.0 151
-152 0.0230400562286377 0.0200000000000102 0.0200000000000102 0.0 152
-153 0.0234670639038086 0.019999999999996 0.019999999999996 0.0 153
-154 0.0225429534912109 0.0300000000000011 0.0300000000000011 0.0 154
-155 0.0225739479064941 0.019999999999996 0.019999999999996 0.0 155
-156 0.0225040912628174 0.019999999999996 0.019999999999996 0.0 156
-157 0.0224270820617676 0.0200000000000102 0.0200000000000102 0.0 157
-158 0.050184965133667 0.0499999999999972 0.0499999999999972 0.0 158
-159 0.0228159427642822 0.0300000000000011 0.0300000000000011 0.0 159
-160 0.0225830078125 0.019999999999996 0.019999999999996 0.0 160
-161 0.0224440097808838 0.019999999999996 0.019999999999996 0.0 161
-162 0.0228800773620605 0.0200000000000102 0.0200000000000102 0.0 162
-163 0.0230019092559814 0.0299999999999869 0.0299999999999869 0.0 163
-164 0.0468800067901611 0.0400000000000063 0.0400000000000063 0.0 164
-165 0.0230178833007812 0.019999999999996 0.019999999999996 0.0 165
-166 0.0227179527282715 0.0300000000000011 0.0300000000000011 0.0 166
-167 0.0280098915100098 0.0200000000000102 0.0200000000000102 0.0 167
-168 0.0224480628967285 0.0299999999999869 0.0299999999999869 0.0 168
-169 0.0222821235656738 0.0200000000000102 0.0200000000000102 0.0 169
-170 0.0222339630126953 0.019999999999996 0.019999999999996 0.0 170
-171 0.0482370853424072 0.0499999999999972 0.0499999999999972 0.0 171
-172 0.0229589939117432 0.019999999999996 0.019999999999996 0.0 172
-173 0.0225811004638672 0.0200000000000102 0.0200000000000102 0.0 173
-174 0.0225679874420166 0.0300000000000011 0.0300000000000011 0.0 174
-175 0.0226399898529053 0.019999999999996 0.019999999999996 0.0 175
-176 0.0225110054016113 0.019999999999996 0.019999999999996 0.0 176
-177 0.0512759685516357 0.0599999999999881 0.0499999999999972 0.01 177
-178 0.0293910503387451 0.0300000000000011 0.0300000000000011 0.0 178
-179 0.0228638648986816 0.0200000000000102 0.0200000000000102 0.0 179
-180 0.0226418972015381 0.0300000000000011 0.0300000000000011 0.0 180
-181 0.0233349800109863 0.019999999999996 0.019999999999996 0.0 181
-182 0.0224719047546387 0.019999999999996 0.019999999999996 0.0 182
-183 0.0222139358520508 0.019999999999996 0.019999999999996 0.0 183
-184 0.0475149154663086 0.0500000000000114 0.0500000000000114 0.0 184
-185 0.0268290042877197 0.0300000000000011 0.0300000000000011 0.0 185
-186 0.0225980281829834 0.019999999999996 0.019999999999996 0.0 186
-187 0.0224361419677734 0.019999999999996 0.019999999999996 0.0 187
-188 0.0225210189819336 0.0300000000000011 0.0300000000000011 0.0 188
-189 0.022615909576416 0.019999999999996 0.019999999999996 0.0 189
-190 0.0477218627929688 0.0499999999999972 0.0499999999999972 0.0 190
-191 0.0229659080505371 0.0200000000000102 0.0200000000000102 0.0 191
-192 0.0230429172515869 0.019999999999996 0.019999999999996 0.0 192
-193 0.0226750373840332 0.0300000000000011 0.0300000000000011 0.0 193
-194 0.0224380493164062 0.019999999999996 0.019999999999996 0.0 194
-195 0.0255289077758789 0.0200000000000102 0.0200000000000102 0.0 195
-196 0.0223410129547119 0.0299999999999869 0.0299999999999869 0.0 196
-197 0.0477759838104248 0.0400000000000063 0.0400000000000063 0.0 197
-198 0.0227560997009277 0.0300000000000011 0.0300000000000011 0.0 198
-199 0.0232150554656982 0.019999999999996 0.019999999999996 0.0 199
-200 0.0224218368530273 0.019999999999996 0.019999999999996 0.0 200
-201 0.0226380825042725 0.0300000000000011 0.0300000000000011 0.0 201
-202 0.0225119590759277 0.0200000000000102 0.0200000000000102 0.0 202
-203 0.0471208095550537 0.0499999999999972 0.0499999999999972 0.0 203
-204 0.0271830558776855 0.019999999999996 0.019999999999996 0.0 204
-205 0.0227551460266113 0.0300000000000011 0.0300000000000011 0.0 205
-206 0.0225760936737061 0.019999999999996 0.019999999999996 0.0 206
-207 0.0225489139556885 0.0200000000000102 0.0200000000000102 0.0 207
-208 0.0224738121032715 0.019999999999996 0.019999999999996 0.0 208
-209 0.0224080085754395 0.019999999999996 0.019999999999996 0.0 209
-210 0.0474929809570312 0.0499999999999972 0.0499999999999972 0.0 210
-211 0.0227348804473877 0.0200000000000102 0.0200000000000102 0.0 211
-212 0.0227007865905762 0.0300000000000011 0.0300000000000011 0.0 212
-213 0.0257821083068848 0.019999999999996 0.019999999999996 0.0 213
-214 0.0230338573455811 0.0300000000000011 0.0300000000000011 0.0 214
-215 0.0283098220825195 0.019999999999996 0.019999999999996 0.0 215
-216 0.048043966293335 0.0499999999999972 0.0499999999999972 0.0 216
-217 0.0241200923919678 0.0300000000000011 0.0300000000000011 0.0 217
-218 0.0226061344146729 0.019999999999996 0.019999999999996 0.0 218
-219 0.0226290225982666 0.0200000000000102 0.0200000000000102 0.0 219
-220 0.0223400592803955 0.019999999999996 0.019999999999996 0.0 220
-221 0.0222020149230957 0.019999999999996 0.019999999999996 0.0 221
-222 0.0221819877624512 0.019999999999996 0.019999999999996 0.0 222
-223 0.0513238906860352 0.0499999999999972 0.0499999999999972 0.0 223
-224 0.0227959156036377 0.0200000000000102 0.0200000000000102 0.0 224
-225 0.02286696434021 0.0300000000000011 0.0300000000000011 0.0 225
-226 0.0226180553436279 0.019999999999996 0.019999999999996 0.0 226
-227 0.0225269794464111 0.019999999999996 0.019999999999996 0.0 227
-228 0.0236740112304688 0.0300000000000011 0.0300000000000011 0.0 228
-229 0.0473580360412598 0.0400000000000063 0.0400000000000063 0.0 229
-230 0.0230889320373535 0.0300000000000011 0.0300000000000011 0.0 230
-231 0.0243098735809326 0.019999999999996 0.019999999999996 0.0 231
-232 0.0242350101470947 0.019999999999996 0.019999999999996 0.0 232
-233 0.0224809646606445 0.0300000000000011 0.0300000000000011 0.0 233
-234 0.0225131511688232 0.019999999999996 0.019999999999996 0.0 234
-235 0.0222058296203613 0.0200000000000102 0.0200000000000102 0.0 235
-236 0.0484139919281006 0.0499999999999972 0.0499999999999972 0.0 236
-237 0.0229649543762207 0.019999999999996 0.019999999999996 0.0 237
-238 0.0226538181304932 0.0300000000000011 0.0300000000000011 0.0 238
-239 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 239
-240 0.0224988460540771 0.0200000000000102 0.0200000000000102 0.0 240
-241 0.0252270698547363 0.0300000000000011 0.0300000000000011 0.0 241
-242 0.0471029281616211 0.039999999999992 0.039999999999992 0.0 242
-243 0.0229470729827881 0.0300000000000011 0.0300000000000011 0.0 243
-244 0.0228309631347656 0.019999999999996 0.019999999999996 0.0 244
-245 0.0227391719818115 0.0200000000000102 0.0200000000000102 0.0 245
-246 0.0233259201049805 0.0299999999999869 0.0299999999999869 0.0 246
-247 0.0224099159240723 0.0200000000000102 0.0200000000000102 0.0 247
-248 0.0227949619293213 0.019999999999996 0.019999999999996 0.0 248
-249 0.0480821132659912 0.0499999999999972 0.0499999999999972 0.0 249
-250 0.026867151260376 0.0300000000000011 0.0300000000000011 0.0 250
-251 0.0245769023895264 0.019999999999996 0.019999999999996 0.0 251
-252 0.0283010005950928 0.0300000000000011 0.0300000000000011 0.0 252
-253 0.0227351188659668 0.0200000000000102 0.0200000000000102 0.0 253
-254 0.0224411487579346 0.019999999999996 0.019999999999996 0.0 254
-255 0.0479519367218018 0.0499999999999972 0.0499999999999972 0.0 255
-256 0.0230560302734375 0.019999999999996 0.019999999999996 0.0 256
-257 0.0227730274200439 0.0300000000000011 0.0300000000000011 0.0 257
-258 0.022550106048584 0.0200000000000102 0.0200000000000102 0.0 258
-259 0.0257129669189453 0.0300000000000011 0.0300000000000011 0.0 259
-260 0.0255739688873291 0.019999999999996 0.019999999999996 0.0 260
-261 0.0222690105438232 0.019999999999996 0.019999999999996 0.0 261
-262 0.0475499629974365 0.0499999999999972 0.0499999999999972 0.0 262
-263 0.0229249000549316 0.0200000000000102 0.0200000000000102 0.0 263
-264 0.0233249664306641 0.0299999999999869 0.0299999999999869 0.0 264
-265 0.0224719047546387 0.0200000000000102 0.0200000000000102 0.0 265
-266 0.0227599143981934 0.019999999999996 0.019999999999996 0.0 266
-267 0.0225708484649658 0.019999999999996 0.019999999999996 0.0 267
-268 0.0508639812469482 0.0500000000000114 0.0500000000000114 0.0 268
-269 0.0232470035552979 0.0299999999999869 0.0299999999999869 0.0 269
-270 0.0228660106658936 0.0200000000000102 0.0200000000000102 0.0 270
-271 0.0226750373840332 0.019999999999996 0.019999999999996 0.0 271
-272 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 272
-273 0.023015022277832 0.019999999999996 0.019999999999996 0.0 273
-274 0.0223150253295898 0.019999999999996 0.019999999999996 0.0 274
-275 0.0476338863372803 0.0500000000000114 0.0500000000000114 0.0 275
-276 0.0227279663085938 0.019999999999996 0.019999999999996 0.0 276
-277 0.022507905960083 0.019999999999996 0.019999999999996 0.0 277
-278 0.0251290798187256 0.0300000000000011 0.0300000000000011 0.0 278
-279 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 279
-280 0.0226230621337891 0.0200000000000102 0.0200000000000102 0.0 280
-281 0.0479300022125244 0.0499999999999972 0.0499999999999972 0.0 281
-282 0.0231950283050537 0.019999999999996 0.019999999999996 0.0 282
-283 0.0243661403656006 0.0300000000000011 0.0300000000000011 0.0 283
-284 0.0225939750671387 0.019999999999996 0.019999999999996 0.0 284
-285 0.0224170684814453 0.0200000000000102 0.0200000000000102 0.0 285
-286 0.0223720073699951 0.019999999999996 0.019999999999996 0.0 286
-287 0.0249221324920654 0.0300000000000011 0.0300000000000011 0.0 287
-288 0.0556089878082275 0.0600000000000023 0.0600000000000023 0.0 288
-289 0.0228722095489502 0.019999999999996 0.019999999999996 0.0 289
-290 0.0225820541381836 0.019999999999996 0.019999999999996 0.0 290
-291 0.0232369899749756 0.0200000000000102 0.0200000000000102 0.0 291
-292 0.0225460529327393 0.0299999999999869 0.0299999999999869 0.0 292
-293 0.0225048065185547 0.0200000000000102 0.0200000000000102 0.0 293
-294 0.0471150875091553 0.0499999999999972 0.0499999999999972 0.0 294
-295 0.0229630470275879 0.019999999999996 0.019999999999996 0.0 295
-296 0.026698112487793 0.0300000000000011 0.0300000000000011 0.0 296
-297 0.0225720405578613 0.019999999999996 0.019999999999996 0.0 297
-298 0.0224101543426514 0.0200000000000102 0.0200000000000102 0.0 298
-299 0.0224401950836182 0.019999999999996 0.019999999999996 0.0 299
-300 0.0223391056060791 0.0300000000000011 0.0300000000000011 0.0 300
-301 0.0480380058288574 0.039999999999992 0.039999999999992 0.0 301
-302 0.0228781700134277 0.0300000000000011 0.0300000000000011 0.0 302
-303 0.0226998329162598 0.0200000000000102 0.0200000000000102 0.0 303
-304 0.0224788188934326 0.019999999999996 0.019999999999996 0.0 304
-305 0.0245270729064941 0.0300000000000011 0.0300000000000011 0.0 305
-306 0.0251939296722412 0.019999999999996 0.019999999999996 0.0 306
-307 0.0470340251922607 0.0499999999999972 0.0499999999999972 0.0 307
-308 0.0229289531707764 0.0200000000000102 0.0200000000000102 0.0 308
-309 0.0233960151672363 0.0300000000000011 0.0300000000000011 0.0 309
-310 0.0224819183349609 0.019999999999996 0.019999999999996 0.0 310
-311 0.0227260589599609 0.019999999999996 0.019999999999996 0.0 311
-312 0.0223228931427002 0.019999999999996 0.019999999999996 0.0 312
-313 0.0223159790039062 0.0300000000000011 0.0300000000000011 0.0 313
-314 0.0510008335113525 0.0500000000000114 0.0500000000000114 0.0 314
-315 0.022799015045166 0.019999999999996 0.019999999999996 0.0 315
-316 0.0225009918212891 0.019999999999996 0.019999999999996 0.0 316
-317 0.0224380493164062 0.0300000000000011 0.0300000000000011 0.0 317
-318 0.0225141048431396 0.019999999999996 0.019999999999996 0.0 318
-319 0.0224788188934326 0.0200000000000102 0.0200000000000102 0.0 319
-320 0.0472540855407715 0.0499999999999972 0.0499999999999972 0.0 320
-321 0.0229048728942871 0.019999999999996 0.019999999999996 0.0 321
-322 0.022752046585083 0.019999999999996 0.019999999999996 0.0 322
-323 0.0224988460540771 0.0300000000000011 0.0300000000000011 0.0 323
-324 0.026637077331543 0.0200000000000102 0.0200000000000102 0.0 324
-325 0.0254490375518799 0.0299999999999869 0.0299999999999869 0.0 325
-326 0.0267879962921143 0.0300000000000011 0.0300000000000011 0.0 326
-327 0.0475130081176758 0.0400000000000063 0.0400000000000063 0.0 327
-328 0.0235271453857422 0.0300000000000011 0.0300000000000011 0.0 328
-329 0.0225729942321777 0.019999999999996 0.019999999999996 0.0 329
-330 0.0224888324737549 0.019999999999996 0.019999999999996 0.0 330
-331 0.0224771499633789 0.0200000000000102 0.0200000000000102 0.0 331
-332 0.0225000381469727 0.0300000000000011 0.0300000000000011 0.0 332
-333 0.0503771305084229 0.0499999999999972 0.0499999999999972 0.0 333
-334 0.02280592918396 0.019999999999996 0.019999999999996 0.0 334
-335 0.0226900577545166 0.019999999999996 0.019999999999996 0.0 335
-336 0.0226840972900391 0.0300000000000011 0.0300000000000011 0.0 336
-337 0.0223648548126221 0.0200000000000102 0.0200000000000102 0.0 337
-338 0.0229740142822266 0.019999999999996 0.019999999999996 0.0 338
-339 0.0223648548126221 0.019999999999996 0.019999999999996 0.0 339
-340 0.047623872756958 0.0499999999999972 0.0499999999999972 0.0 340
-341 0.0227048397064209 0.0200000000000102 0.0200000000000102 0.0 341
-342 0.0267980098724365 0.0300000000000011 0.0300000000000011 0.0 342
-343 0.0225899219512939 0.019999999999996 0.019999999999996 0.0 343
-344 0.022446870803833 0.0300000000000011 0.0300000000000011 0.0 344
-345 0.0226569175720215 0.019999999999996 0.019999999999996 0.0 345
-346 0.0477259159088135 0.0499999999999972 0.0499999999999972 0.0 346
-347 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 347
-348 0.0228700637817383 0.0200000000000102 0.0200000000000102 0.0 348
-349 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 349
-350 0.0223531723022461 0.0300000000000011 0.0300000000000011 0.0 350
-351 0.0225429534912109 0.019999999999996 0.019999999999996 0.0 351
-352 0.0264379978179932 0.0300000000000011 0.0300000000000011 0.0 352
-353 0.04734206199646 0.0400000000000063 0.0400000000000063 0.0 353
-354 0.0228159427642822 0.0300000000000011 0.0300000000000011 0.0 354
-355 0.0224540233612061 0.019999999999996 0.019999999999996 0.0 355
-356 0.0227231979370117 0.019999999999996 0.019999999999996 0.0 356
-357 0.0225269794464111 0.019999999999996 0.019999999999996 0.0 357
-358 0.0225820541381836 0.0300000000000011 0.0300000000000011 0.0 358
-359 0.0475459098815918 0.0400000000000063 0.0400000000000063 0.0 359
-360 0.0234520435333252 0.0300000000000011 0.0300000000000011 0.0 360
-361 0.0246992111206055 0.019999999999996 0.019999999999996 0.0 361
-362 0.0294170379638672 0.0300000000000011 0.0300000000000011 0.0 362
-363 0.0224790573120117 0.019999999999996 0.019999999999996 0.0 363
-364 0.0222852230072021 0.0300000000000011 0.0300000000000011 0.0 364
-365 0.0477530956268311 0.0400000000000063 0.0400000000000063 0.0 365
-366 0.0229170322418213 0.0300000000000011 0.0300000000000011 0.0 366
-367 0.0227410793304443 0.019999999999996 0.019999999999996 0.0 367
-368 0.0225741863250732 0.019999999999996 0.019999999999996 0.0 368
-369 0.0224859714508057 0.0300000000000011 0.0300000000000011 0.0 369
-370 0.0270230770111084 0.0200000000000102 0.0200000000000102 0.0 370
-371 0.0225620269775391 0.0299999999999869 0.0299999999999869 0.0 371
-372 0.047544002532959 0.0400000000000063 0.0400000000000063 0.0 372
-373 0.0227890014648438 0.0300000000000011 0.0300000000000011 0.0 373
-374 0.0226559638977051 0.019999999999996 0.019999999999996 0.0 374
-375 0.0231430530548096 0.019999999999996 0.019999999999996 0.0 375
-376 0.0225589275360107 0.0200000000000102 0.0200000000000102 0.0 376
-377 0.0225508213043213 0.0300000000000011 0.0300000000000011 0.0 377
-378 0.0470719337463379 0.039999999999992 0.039999999999992 0.0 378
-379 0.0261499881744385 0.0300000000000011 0.0300000000000011 0.0 379
-380 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 380
-381 0.0226030349731445 0.0300000000000011 0.0300000000000011 0.0 381
-382 0.022442102432251 0.0200000000000102 0.0200000000000102 0.0 382
-383 0.0225498676300049 0.019999999999996 0.019999999999996 0.0 383
-384 0.0228650569915771 0.019999999999996 0.019999999999996 0.0 384
-385 0.0473499298095703 0.0499999999999972 0.0499999999999972 0.0 385
-386 0.0227880477905273 0.0200000000000102 0.0200000000000102 0.0 386
-387 0.0225081443786621 0.0300000000000011 0.0300000000000011 0.0 387
-388 0.0234310626983643 0.019999999999996 0.019999999999996 0.0 388
-389 0.0260570049285889 0.0300000000000011 0.0300000000000011 0.0 389
-390 0.0224580764770508 0.019999999999996 0.019999999999996 0.0 390
-391 0.0471310615539551 0.0499999999999972 0.0499999999999972 0.0 391
-392 0.02298903465271 0.0200000000000102 0.0200000000000102 0.0 392
-393 0.022860050201416 0.019999999999996 0.019999999999996 0.0 393
-394 0.0225329399108887 0.019999999999996 0.019999999999996 0.0 394
-395 0.0224058628082275 0.0300000000000011 0.0300000000000011 0.0 395
-396 0.0223350524902344 0.019999999999996 0.019999999999996 0.0 396
-397 0.022367000579834 0.0200000000000102 0.0200000000000102 0.0 397
-398 0.055199146270752 0.0599999999999881 0.0599999999999881 0.0 398
-399 0.0272421836853027 0.0200000000000102 0.0200000000000102 0.0 399
-400 0.0226209163665771 0.0300000000000011 0.0300000000000011 0.0 400
-401 0.0224409103393555 0.019999999999996 0.019999999999996 0.0 401
-402 0.0233349800109863 0.019999999999996 0.019999999999996 0.0 402
-403 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 403
-404 0.0471019744873047 0.0400000000000063 0.0400000000000063 0.0 404
-405 0.0228829383850098 0.0300000000000011 0.0300000000000011 0.0 405
-406 0.0244019031524658 0.019999999999996 0.019999999999996 0.0 406
-407 0.0267729759216309 0.0300000000000011 0.0300000000000011 0.0 407
-408 0.0224130153656006 0.019999999999996 0.019999999999996 0.0 408
-409 0.022313117980957 0.019999999999996 0.019999999999996 0.0 409
-410 0.0224151611328125 0.0200000000000102 0.0200000000000102 0.0 410
-411 0.0483131408691406 0.0499999999999972 0.0499999999999972 0.0 411
-412 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 412
-413 0.0228002071380615 0.0300000000000011 0.0300000000000011 0.0 413
-414 0.0224690437316895 0.019999999999996 0.019999999999996 0.0 414
-415 0.0225539207458496 0.0200000000000102 0.0200000000000102 0.0 415
-416 0.0254161357879639 0.0300000000000011 0.0300000000000011 0.0 416
-417 0.0482659339904785 0.0499999999999972 0.0499999999999972 0.0 417
-418 0.0229690074920654 0.019999999999996 0.019999999999996 0.0 418
-419 0.0226681232452393 0.019999999999996 0.019999999999996 0.0 419
-420 0.0230739116668701 0.0200000000000102 0.0200000000000102 0.0 420
-421 0.0223119258880615 0.0299999999999869 0.0299999999999869 0.0 421
-422 0.0240011215209961 0.0200000000000102 0.0200000000000102 0.0 422
-423 0.0470819473266602 0.0499999999999972 0.0499999999999972 0.0 423
-424 0.0231809616088867 0.019999999999996 0.019999999999996 0.0 424
-425 0.027169942855835 0.0300000000000011 0.0300000000000011 0.0 425
-426 0.0226540565490723 0.019999999999996 0.019999999999996 0.0 426
-427 0.0227150917053223 0.0200000000000102 0.0200000000000102 0.0 427
-428 0.0225992202758789 0.0300000000000011 0.0300000000000011 0.0 428
-429 0.0225179195404053 0.019999999999996 0.019999999999996 0.0 429
-430 0.0476188659667969 0.0499999999999972 0.0499999999999972 0.0 430
-431 0.0228111743927002 0.019999999999996 0.019999999999996 0.0 431
-432 0.0226650238037109 0.0200000000000102 0.0200000000000102 0.0 432
-433 0.0224969387054443 0.019999999999996 0.019999999999996 0.0 433
-434 0.0223591327667236 0.0300000000000011 0.0300000000000011 0.0 434
-435 0.0267119407653809 0.019999999999996 0.019999999999996 0.0 435
-436 0.0539910793304443 0.0600000000000023 0.0600000000000023 0.0 436
-437 0.0230631828308105 0.019999999999996 0.019999999999996 0.0 437
-438 0.0237729549407959 0.0200000000000102 0.0200000000000102 0.0 438
-439 0.0227470397949219 0.0299999999999869 0.0299999999999869 0.0 439
-440 0.0226438045501709 0.0200000000000102 0.0200000000000102 0.0 440
-441 0.0225329399108887 0.019999999999996 0.019999999999996 0.0 441
-442 0.0225589275360107 0.019999999999996 0.019999999999996 0.0 442
-443 0.0517570972442627 0.0600000000000023 0.0600000000000023 0.0 443
-444 0.0228259563446045 0.019999999999996 0.019999999999996 0.0 444
-445 0.0225679874420166 0.0200000000000102 0.0200000000000102 0.0 445
-446 0.0226199626922607 0.019999999999996 0.019999999999996 0.0 446
-447 0.0224108695983887 0.0300000000000011 0.0300000000000011 0.0 447
-448 0.022813081741333 0.019999999999996 0.019999999999996 0.0 448
-449 0.048245906829834 0.0499999999999972 0.0499999999999972 0.0 449
-450 0.0229110717773438 0.0200000000000102 0.0200000000000102 0.0 450
-451 0.0228190422058105 0.019999999999996 0.019999999999996 0.0 451
-452 0.022475004196167 0.0300000000000011 0.0300000000000011 0.0 452
-453 0.0269429683685303 0.019999999999996 0.019999999999996 0.0 453
-454 0.0225560665130615 0.0300000000000011 0.0300000000000011 0.0 454
-455 0.0226960182189941 0.019999999999996 0.019999999999996 0.0 455
-456 0.0481019020080566 0.0500000000000114 0.0500000000000114 0.0 456
-457 0.0228400230407715 0.019999999999996 0.019999999999996 0.0 457
-458 0.0225000381469727 0.019999999999996 0.019999999999996 0.0 458
-459 0.0225820541381836 0.0300000000000011 0.0300000000000011 0.0 459
-460 0.022550106048584 0.019999999999996 0.019999999999996 0.0 460
-461 0.0224931240081787 0.0200000000000102 0.0200000000000102 0.0 461
-462 0.0505130290985107 0.0499999999999972 0.0499999999999972 0.0 462
-463 0.0229830741882324 0.019999999999996 0.019999999999996 0.0 463
-464 0.0227599143981934 0.0300000000000011 0.0300000000000011 0.0 464
-465 0.0224440097808838 0.019999999999996 0.019999999999996 0.0 465
-466 0.0224459171295166 0.0200000000000102 0.0200000000000102 0.0 466
-467 0.0230529308319092 0.0299999999999869 0.0299999999999869 0.0 467
-468 0.0472948551177979 0.0400000000000063 0.0400000000000063 0.0 468
-469 0.0229778289794922 0.0300000000000011 0.0300000000000011 0.0 469
-470 0.0227181911468506 0.019999999999996 0.019999999999996 0.0 470
-471 0.0253911018371582 0.0200000000000102 0.0200000000000102 0.0 471
-472 0.0295701026916504 0.0299999999999869 0.0299999999999869 0.0 472
-473 0.0240099430084229 0.0300000000000011 0.0300000000000011 0.0 473
-474 0.0225830078125 0.0200000000000102 0.0200000000000102 0.0 474
-475 0.0483601093292236 0.0499999999999972 0.0499999999999972 0.0 475
-476 0.0228290557861328 0.019999999999996 0.019999999999996 0.0 476
-477 0.0227599143981934 0.019999999999996 0.019999999999996 0.0 477
-478 0.0223991870880127 0.0300000000000011 0.0300000000000011 0.0 478
-479 0.0224149227142334 0.0200000000000102 0.0200000000000102 0.0 479
-480 0.0231549739837646 0.019999999999996 0.019999999999996 0.0 480
-481 0.0494570732116699 0.0499999999999972 0.0499999999999972 0.0 481
-482 0.0229361057281494 0.0300000000000011 0.0300000000000011 0.0 482
-483 0.0228068828582764 0.019999999999996 0.019999999999996 0.0 483
-484 0.0226590633392334 0.0200000000000102 0.0200000000000102 0.0 484
-485 0.0231790542602539 0.019999999999996 0.019999999999996 0.0 485
-486 0.0226171016693115 0.0300000000000011 0.0300000000000011 0.0 486
-487 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 487
-488 0.0492510795593262 0.0499999999999972 0.0499999999999972 0.0 488
-489 0.0257031917572021 0.0200000000000102 0.0200000000000102 0.0 489
-490 0.0239601135253906 0.0299999999999869 0.0299999999999869 0.0 490
-491 0.0223851203918457 0.0200000000000102 0.0200000000000102 0.0 491
-492 0.0224499702453613 0.019999999999996 0.019999999999996 0.0 492
-493 0.0224368572235107 0.019999999999996 0.019999999999996 0.0 493
-494 0.0476479530334473 0.0499999999999972 0.0499999999999972 0.0 494
-495 0.022913932800293 0.0300000000000011 0.0300000000000011 0.0 495
-496 0.022791862487793 0.0200000000000102 0.0200000000000102 0.0 496
-497 0.0225038528442383 0.019999999999996 0.019999999999996 0.0 497
-498 0.0226709842681885 0.019999999999996 0.019999999999996 0.0 498
-499 0.0256888866424561 0.0300000000000011 0.0300000000000011 0.0 499
-500 0.0224859714508057 0.019999999999996 0.019999999999996 0.0 500
-501 0.0475161075592041 0.0500000000000114 0.0500000000000114 0.0 501
-502 0.0226891040802002 0.019999999999996 0.019999999999996 0.0 502
-503 0.0227141380310059 0.019999999999996 0.019999999999996 0.0 503
-504 0.0224587917327881 0.0300000000000011 0.0300000000000011 0.0 504
-505 0.0225260257720947 0.019999999999996 0.019999999999996 0.0 505
-506 0.0225589275360107 0.0200000000000102 0.0200000000000102 0.0 506
-507 0.0470049381256104 0.0499999999999972 0.0499999999999972 0.0 507
-508 0.0271100997924805 0.0300000000000011 0.0300000000000011 0.0 508
-509 0.0292420387268066 0.0300000000000011 0.0300000000000011 0.0 509
-510 0.0224711894989014 0.019999999999996 0.019999999999996 0.0 510
-511 0.0221920013427734 0.019999999999996 0.019999999999996 0.0 511
-512 0.0228841304779053 0.0200000000000102 0.0200000000000102 0.0 512
-513 0.0471491813659668 0.0499999999999972 0.0499999999999972 0.0 513
-514 0.0229198932647705 0.019999999999996 0.019999999999996 0.0 514
-515 0.0227129459381104 0.0300000000000011 0.0300000000000011 0.0 515
-516 0.0225949287414551 0.019999999999996 0.019999999999996 0.0 516
-517 0.0255181789398193 0.0200000000000102 0.0200000000000102 0.0 517
-518 0.0228209495544434 0.0299999999999869 0.0299999999999869 0.0 518
-519 0.0225160121917725 0.0200000000000102 0.0200000000000102 0.0 519
-520 0.0473577976226807 0.0499999999999972 0.0499999999999972 0.0 520
-521 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 521
-522 0.0231969356536865 0.019999999999996 0.019999999999996 0.0 522
-523 0.0227179527282715 0.0300000000000011 0.0300000000000011 0.0 523
-524 0.0223970413208008 0.0200000000000102 0.0200000000000102 0.0 524
-525 0.0223920345306396 0.019999999999996 0.019999999999996 0.0 525
-526 0.0507230758666992 0.0499999999999972 0.0499999999999972 0.0 526
-527 0.0229480266571045 0.019999999999996 0.019999999999996 0.0 527
-528 0.0227980613708496 0.0300000000000011 0.0300000000000011 0.0 528
-529 0.0225141048431396 0.0200000000000102 0.0200000000000102 0.0 529
-530 0.0231029987335205 0.019999999999996 0.019999999999996 0.0 530
-531 0.0224690437316895 0.0300000000000011 0.0300000000000011 0.0 531
-532 0.0224161148071289 0.019999999999996 0.019999999999996 0.0 532
-533 0.0474939346313477 0.0499999999999972 0.0499999999999972 0.0 533
-534 0.0227530002593994 0.0200000000000102 0.0200000000000102 0.0 534
-535 0.02276611328125 0.019999999999996 0.019999999999996 0.0 535
-536 0.025050163269043 0.0300000000000011 0.0300000000000011 0.0 536
-537 0.0224800109863281 0.019999999999996 0.019999999999996 0.0 537
-538 0.0225398540496826 0.019999999999996 0.019999999999996 0.0 538
-539 0.047184944152832 0.0500000000000114 0.0500000000000114 0.0 539
-540 0.0230119228363037 0.019999999999996 0.019999999999996 0.0 540
-541 0.022691011428833 0.019999999999996 0.019999999999996 0.0 541
-542 0.0224730968475342 0.0300000000000011 0.0300000000000011 0.0 542
-543 0.0223429203033447 0.019999999999996 0.019999999999996 0.0 543
-544 0.0224099159240723 0.0200000000000102 0.0200000000000102 0.0 544
-545 0.0533881187438965 0.0499999999999972 0.0499999999999972 0.0 545
-546 0.0262870788574219 0.0300000000000011 0.0300000000000011 0.0 546
-547 0.0228250026702881 0.019999999999996 0.019999999999996 0.0 547
-548 0.0226221084594727 0.0300000000000011 0.0300000000000011 0.0 548
-549 0.0232529640197754 0.019999999999996 0.019999999999996 0.0 549
-550 0.0225918292999268 0.019999999999996 0.019999999999996 0.0 550
-551 0.0225841999053955 0.0300000000000011 0.0300000000000011 0.0 551
-552 0.047435998916626 0.0400000000000063 0.0400000000000063 0.0 552
-553 0.0227999687194824 0.0300000000000011 0.0300000000000011 0.0 553
-554 0.0258529186248779 0.019999999999996 0.019999999999996 0.0 554
-555 0.022432804107666 0.019999999999996 0.019999999999996 0.0 555
-556 0.0223519802093506 0.0300000000000011 0.0300000000000011 0.0 556
-557 0.0224819183349609 0.0200000000000102 0.0200000000000102 0.0 557
-558 0.0474679470062256 0.0499999999999972 0.0499999999999972 0.0 558
-559 0.0229389667510986 0.019999999999996 0.019999999999996 0.0 559
-560 0.0228800773620605 0.019999999999996 0.019999999999996 0.0 560
-561 0.0224850177764893 0.0200000000000102 0.0200000000000102 0.0 561
-562 0.0225398540496826 0.0300000000000011 0.0300000000000011 0.0 562
-563 0.0224540233612061 0.019999999999996 0.019999999999996 0.0 563
-564 0.025576114654541 0.0300000000000011 0.0300000000000011 0.0 564
-565 0.0475959777832031 0.039999999999992 0.039999999999992 0.0 565
-566 0.0227079391479492 0.0300000000000011 0.0300000000000011 0.0 566
-567 0.0230989456176758 0.0200000000000102 0.0200000000000102 0.0 567
-568 0.0224859714508057 0.019999999999996 0.019999999999996 0.0 568
-569 0.0224618911743164 0.019999999999996 0.019999999999996 0.0 569
-570 0.0225780010223389 0.0300000000000011 0.0300000000000011 0.0 570
-571 0.0471539497375488 0.0400000000000063 0.0400000000000063 0.0 571
-572 0.0252819061279297 0.0300000000000011 0.0300000000000011 0.0 572
-573 0.0236349105834961 0.019999999999996 0.019999999999996 0.0 573
-574 0.0224208831787109 0.0300000000000011 0.0300000000000011 0.0 574
-575 0.0223720073699951 0.019999999999996 0.019999999999996 0.0 575
-576 0.0222949981689453 0.019999999999996 0.019999999999996 0.0 576
-577 0.0470468997955322 0.0499999999999972 0.0499999999999972 0.0 577
-578 0.0229780673980713 0.0200000000000102 0.0200000000000102 0.0 578
-579 0.0227508544921875 0.019999999999996 0.019999999999996 0.0 579
-580 0.022536039352417 0.0300000000000011 0.0300000000000011 0.0 580
-581 0.0225150585174561 0.019999999999996 0.019999999999996 0.0 581
-582 0.0254819393157959 0.0200000000000102 0.0200000000000102 0.0 582
-583 0.0310370922088623 0.0299999999999869 0.0299999999999869 0.0 583
-584 0.0474588871002197 0.0500000000000114 0.0500000000000114 0.0 584
-585 0.022752046585083 0.019999999999996 0.019999999999996 0.0 585
-586 0.0233280658721924 0.0300000000000011 0.0300000000000011 0.0 586
-587 0.0223760604858398 0.019999999999996 0.019999999999996 0.0 587
-588 0.0223050117492676 0.019999999999996 0.019999999999996 0.0 588
-589 0.0223169326782227 0.0200000000000102 0.0200000000000102 0.0 589
-590 0.047105073928833 0.0499999999999972 0.0499999999999972 0.0 590
-591 0.0272059440612793 0.0300000000000011 0.0300000000000011 0.0 591
-592 0.0227630138397217 0.019999999999996 0.019999999999996 0.0 592
-593 0.0226268768310547 0.019999999999996 0.019999999999996 0.0 593
-594 0.0225090980529785 0.0300000000000011 0.0300000000000011 0.0 594
-595 0.0225892066955566 0.0200000000000102 0.0200000000000102 0.0 595
-596 0.0231549739837646 0.019999999999996 0.019999999999996 0.0 596
-597 0.0475459098815918 0.0499999999999972 0.0499999999999972 0.0 597
-598 0.0226891040802002 0.019999999999996 0.019999999999996 0.0 598
-599 0.0224978923797607 0.0300000000000011 0.0300000000000011 0.0 599
-600 0.0245161056518555 0.0200000000000102 0.0200000000000102 0.0 600
-601 0.0242869853973389 0.019999999999996 0.019999999999996 0.0 601
-602 0.0225369930267334 0.0300000000000011 0.0300000000000011 0.0 602
-603 0.0477139949798584 0.039999999999992 0.039999999999992 0.0 603
-604 0.0228500366210938 0.0300000000000011 0.0300000000000011 0.0 604
-605 0.0225930213928223 0.019999999999996 0.019999999999996 0.0 605
-606 0.0224370956420898 0.0200000000000102 0.0200000000000102 0.0 606
-607 0.0223829746246338 0.019999999999996 0.019999999999996 0.0 607
-608 0.0222539901733398 0.0300000000000011 0.0300000000000011 0.0 608
-609 0.0497751235961914 0.0499999999999972 0.0499999999999972 0.0 609
-610 0.0235979557037354 0.019999999999996 0.019999999999996 0.0 610
-611 0.0227591991424561 0.0200000000000102 0.0200000000000102 0.0 611
-612 0.0226850509643555 0.0300000000000011 0.0300000000000011 0.0 612
-613 0.0225200653076172 0.019999999999996 0.019999999999996 0.0 613
-614 0.0227999687194824 0.019999999999996 0.019999999999996 0.0 614
-615 0.0224919319152832 0.019999999999996 0.019999999999996 0.0 615
-616 0.0472068786621094 0.0500000000000114 0.0500000000000114 0.0 616
-617 0.0227549076080322 0.019999999999996 0.019999999999996 0.0 617
-618 0.0224969387054443 0.0300000000000011 0.0300000000000011 0.0 618
-619 0.0257840156555176 0.019999999999996 0.019999999999996 0.0 619
-620 0.0295670032501221 0.0300000000000011 0.0300000000000011 0.0 620
-621 0.0229511260986328 0.019999999999996 0.019999999999996 0.0 621
-622 0.0471799373626709 0.0500000000000114 0.0500000000000114 0.0 622
-623 0.0238358974456787 0.0299999999999869 0.0299999999999869 0.0 623
-624 0.0228331089019775 0.0200000000000102 0.0200000000000102 0.0 624
-625 0.0225739479064941 0.019999999999996 0.019999999999996 0.0 625
-626 0.0223119258880615 0.019999999999996 0.019999999999996 0.0 626
-627 0.0223081111907959 0.0300000000000011 0.0300000000000011 0.0 627
-628 0.0510420799255371 0.0499999999999972 0.0499999999999972 0.0 628
-629 0.0229439735412598 0.0200000000000102 0.0200000000000102 0.0 629
-630 0.0228598117828369 0.019999999999996 0.019999999999996 0.0 630
-631 0.0226309299468994 0.0300000000000011 0.0300000000000011 0.0 631
-632 0.0225811004638672 0.019999999999996 0.019999999999996 0.0 632
-633 0.0231959819793701 0.019999999999996 0.019999999999996 0.0 633
-634 0.022752046585083 0.0200000000000102 0.0200000000000102 0.0 634
-635 0.0472497940063477 0.0499999999999972 0.0499999999999972 0.0 635
-636 0.0227398872375488 0.019999999999996 0.019999999999996 0.0 636
-637 0.0257761478424072 0.0300000000000011 0.0300000000000011 0.0 637
-638 0.0224080085754395 0.019999999999996 0.019999999999996 0.0 638
-639 0.0224230289459229 0.0300000000000011 0.0300000000000011 0.0 639
-640 0.0224108695983887 0.0200000000000102 0.0200000000000102 0.0 640
-641 0.0475258827209473 0.0499999999999972 0.0499999999999972 0.0 641
-642 0.0228271484375 0.019999999999996 0.019999999999996 0.0 642
-643 0.0227019786834717 0.019999999999996 0.019999999999996 0.0 643
-644 0.0224940776824951 0.0200000000000102 0.0200000000000102 0.0 644
-645 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 645
-646 0.0227019786834717 0.019999999999996 0.019999999999996 0.0 646
-647 0.0250790119171143 0.019999999999996 0.019999999999996 0.0 647
-648 0.0480010509490967 0.0499999999999972 0.0499999999999972 0.0 648
-649 0.0226480960845947 0.0200000000000102 0.0200000000000102 0.0 649
-650 0.0224239826202393 0.0300000000000011 0.0300000000000011 0.0 650
-651 0.0233159065246582 0.019999999999996 0.019999999999996 0.0 651
-652 0.022554874420166 0.019999999999996 0.019999999999996 0.0 652
-653 0.0225050449371338 0.019999999999996 0.019999999999996 0.0 653
-654 0.04734206199646 0.0500000000000114 0.0500000000000114 0.0 654
-655 0.0227370262145996 0.019999999999996 0.019999999999996 0.0 655
-656 0.0317370891571045 0.0299999999999869 0.0299999999999869 0.0 656
-657 0.0237619876861572 0.0200000000000102 0.0200000000000102 0.0 657
-658 0.0224289894104004 0.019999999999996 0.019999999999996 0.0 658
-659 0.0223090648651123 0.0300000000000011 0.0300000000000011 0.0 659
-660 0.0475950241088867 0.039999999999992 0.039999999999992 0.0 660
-661 0.0230028629302979 0.0300000000000011 0.0300000000000011 0.0 661
-662 0.0226609706878662 0.0200000000000102 0.0200000000000102 0.0 662
-663 0.0227439403533936 0.019999999999996 0.019999999999996 0.0 663
-664 0.0224378108978271 0.019999999999996 0.019999999999996 0.0 664
-665 0.0267817974090576 0.0300000000000011 0.0300000000000011 0.0 665
-666 0.0225181579589844 0.019999999999996 0.019999999999996 0.0 666
-667 0.0476372241973877 0.0500000000000114 0.0500000000000114 0.0 667
-668 0.0227279663085938 0.019999999999996 0.019999999999996 0.0 668
-669 0.0238058567047119 0.0300000000000011 0.0300000000000011 0.0 669
-670 0.0225961208343506 0.019999999999996 0.019999999999996 0.0 670
-671 0.0226478576660156 0.019999999999996 0.019999999999996 0.0 671
-672 0.0224800109863281 0.0300000000000011 0.0300000000000011 0.0 672
-673 0.0478980541229248 0.0400000000000063 0.0400000000000063 0.0 673
-674 0.0272519588470459 0.0300000000000011 0.0300000000000011 0.0 674
-675 0.0226519107818604 0.019999999999996 0.019999999999996 0.0 675
-676 0.0225238800048828 0.0300000000000011 0.0300000000000011 0.0 676
-677 0.0224411487579346 0.019999999999996 0.019999999999996 0.0 677
-678 0.0228710174560547 0.0200000000000102 0.0200000000000102 0.0 678
-679 0.0471720695495605 0.0499999999999972 0.0499999999999972 0.0 679
-680 0.0229899883270264 0.019999999999996 0.019999999999996 0.0 680
-681 0.0226860046386719 0.019999999999996 0.019999999999996 0.0 681
-682 0.0227768421173096 0.0300000000000011 0.0300000000000011 0.0 682
-683 0.0246498584747314 0.0200000000000102 0.0200000000000102 0.0 683
-684 0.024179220199585 0.0299999999999869 0.0299999999999869 0.0 684
-685 0.0224809646606445 0.0200000000000102 0.0200000000000102 0.0 685
-686 0.0472848415374756 0.0499999999999972 0.0499999999999972 0.0 686
-687 0.0227711200714111 0.019999999999996 0.019999999999996 0.0 687
-688 0.0226719379425049 0.019999999999996 0.019999999999996 0.0 688
-689 0.0224339962005615 0.0200000000000102 0.0200000000000102 0.0 689
-690 0.022291898727417 0.0300000000000011 0.0300000000000011 0.0 690
-691 0.02239990234375 0.019999999999996 0.019999999999996 0.0 691
-692 0.0513718128204346 0.0499999999999972 0.0499999999999972 0.0 692
-693 0.0307130813598633 0.0300000000000011 0.0300000000000011 0.0 693
-694 0.0228471755981445 0.019999999999996 0.019999999999996 0.0 694
-695 0.0224709510803223 0.0300000000000011 0.0300000000000011 0.0 695
-696 0.0225100517272949 0.0200000000000102 0.0200000000000102 0.0 696
-697 0.0233030319213867 0.019999999999996 0.019999999999996 0.0 697
-698 0.0470919609069824 0.0499999999999972 0.0499999999999972 0.0 698
-699 0.0229198932647705 0.019999999999996 0.019999999999996 0.0 699
-700 0.0227630138397217 0.0200000000000102 0.0200000000000102 0.0 700
-701 0.0225980281829834 0.0200000000000102 0.0200000000000102 0.0 701
-702 0.0258259773254395 0.019999999999996 0.019999999999996 0.0 702
-703 0.0223879814147949 0.0300000000000011 0.0300000000000011 0.0 703
-704 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 704
-705 0.0473251342773438 0.0499999999999972 0.0499999999999972 0.0 705
-706 0.0234189033508301 0.019999999999996 0.019999999999996 0.0 706
-707 0.0227119922637939 0.0200000000000102 0.0200000000000102 0.0 707
-708 0.0224349498748779 0.019999999999996 0.019999999999996 0.0 708
-709 0.0224518775939941 0.0300000000000011 0.0300000000000011 0.0 709
-710 0.0225179195404053 0.019999999999996 0.019999999999996 0.0 710
-711 0.0502331256866455 0.0499999999999972 0.0499999999999972 0.0 711
-712 0.0228428840637207 0.0200000000000102 0.0200000000000102 0.0 712
-713 0.0227060317993164 0.0300000000000011 0.0300000000000011 0.0 713
-714 0.023097038269043 0.019999999999996 0.019999999999996 0.0 714
-715 0.0223181247711182 0.019999999999996 0.019999999999996 0.0 715
-716 0.0222809314727783 0.019999999999996 0.019999999999996 0.0 716
-717 0.0471060276031494 0.0500000000000114 0.0500000000000114 0.0 717
-718 0.0228781700134277 0.019999999999996 0.019999999999996 0.0 718
-719 0.0229380130767822 0.0300000000000011 0.0300000000000011 0.0 719
-720 0.0258369445800781 0.019999999999996 0.019999999999996 0.0 720
-721 0.0224931240081787 0.0300000000000011 0.0300000000000011 0.0 721
-722 0.0230259895324707 0.019999999999996 0.019999999999996 0.0 722
-723 0.02252197265625 0.0200000000000102 0.0200000000000102 0.0 723
-724 0.0475549697875977 0.0499999999999972 0.0499999999999972 0.0 724
-725 0.0227770805358887 0.019999999999996 0.019999999999996 0.0 725
-726 0.0225141048431396 0.019999999999996 0.019999999999996 0.0 726
-727 0.0227451324462891 0.0300000000000011 0.0300000000000011 0.0 727
-728 0.0223758220672607 0.0200000000000102 0.0200000000000102 0.0 728
-729 0.023906946182251 0.019999999999996 0.019999999999996 0.0 729
-730 0.0556581020355225 0.0600000000000023 0.0600000000000023 0.0 730
-731 0.0229699611663818 0.019999999999996 0.019999999999996 0.0 731
-732 0.0226690769195557 0.019999999999996 0.019999999999996 0.0 732
-733 0.0225589275360107 0.0300000000000011 0.0300000000000011 0.0 733
-734 0.0232241153717041 0.019999999999996 0.019999999999996 0.0 734
-735 0.0225598812103271 0.0200000000000102 0.0200000000000102 0.0 735
-736 0.0470528602600098 0.0499999999999972 0.0499999999999972 0.0 736
-737 0.0228769779205322 0.019999999999996 0.019999999999996 0.0 737
-738 0.0257880687713623 0.0300000000000011 0.0300000000000011 0.0 738
-739 0.0235300064086914 0.019999999999996 0.019999999999996 0.0 739
-740 0.0224180221557617 0.0200000000000102 0.0200000000000102 0.0 740
-741 0.0224599838256836 0.0300000000000011 0.0300000000000011 0.0 741
-742 0.022385835647583 0.019999999999996 0.019999999999996 0.0 742
-743 0.0479929447174072 0.0499999999999972 0.0499999999999972 0.0 743
-744 0.0231039524078369 0.019999999999996 0.019999999999996 0.0 744
-745 0.0225660800933838 0.0200000000000102 0.0200000000000102 0.0 745
-746 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 746
-747 0.0224640369415283 0.0300000000000011 0.0300000000000011 0.0 747
-748 0.0256268978118896 0.019999999999996 0.019999999999996 0.0 748
-749 0.0473120212554932 0.0499999999999972 0.0499999999999972 0.0 749
-750 0.0228018760681152 0.0200000000000102 0.0200000000000102 0.0 750
-751 0.0232498645782471 0.0300000000000011 0.0300000000000011 0.0 751
-752 0.0224390029907227 0.019999999999996 0.019999999999996 0.0 752
-753 0.022291898727417 0.019999999999996 0.019999999999996 0.0 753
-754 0.0223748683929443 0.019999999999996 0.019999999999996 0.0 754
-755 0.0472152233123779 0.0500000000000114 0.0500000000000114 0.0 755
-756 0.0228731632232666 0.019999999999996 0.019999999999996 0.0 756
-757 0.0252671241760254 0.0300000000000011 0.0300000000000011 0.0 757
-758 0.0226409435272217 0.019999999999996 0.019999999999996 0.0 758
-759 0.0225830078125 0.019999999999996 0.019999999999996 0.0 759
-760 0.0225331783294678 0.0300000000000011 0.0300000000000011 0.0 760
-761 0.0225949287414551 0.0200000000000102 0.0200000000000102 0.0 761
-762 0.0475749969482422 0.0499999999999972 0.0499999999999972 0.0 762
-763 0.0227329730987549 0.019999999999996 0.019999999999996 0.0 763
-764 0.0225529670715332 0.019999999999996 0.019999999999996 0.0 764
-765 0.0224440097808838 0.0200000000000102 0.0200000000000102 0.0 765
-766 0.0223290920257568 0.0300000000000011 0.0300000000000011 0.0 766
-767 0.033358097076416 0.0299999999999869 0.0299999999999869 0.0 767
-768 0.0471920967102051 0.0500000000000114 0.0500000000000114 0.0 768
-769 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 769
-770 0.0234429836273193 0.019999999999996 0.019999999999996 0.0 770
-771 0.0224521160125732 0.0300000000000011 0.0300000000000011 0.0 771
-772 0.0226120948791504 0.019999999999996 0.019999999999996 0.0 772
-773 0.0225300788879395 0.0200000000000102 0.0200000000000102 0.0 773
-774 0.0472240447998047 0.0499999999999972 0.0499999999999972 0.0 774
-775 0.0266668796539307 0.0300000000000011 0.0300000000000011 0.0 775
-776 0.023015022277832 0.019999999999996 0.019999999999996 0.0 776
-777 0.0226809978485107 0.019999999999996 0.019999999999996 0.0 777
-778 0.0225629806518555 0.0200000000000102 0.0200000000000102 0.0 778
-779 0.0223550796508789 0.0300000000000011 0.0300000000000011 0.0 779
-780 0.0230989456176758 0.019999999999996 0.019999999999996 0.0 780
-781 0.0475809574127197 0.0499999999999972 0.0499999999999972 0.0 781
-782 0.0226840972900391 0.019999999999996 0.019999999999996 0.0 782
-783 0.0225729942321777 0.0200000000000102 0.0200000000000102 0.0 783
-784 0.0224289894104004 0.0300000000000011 0.0300000000000011 0.0 784
-785 0.0256469249725342 0.019999999999996 0.019999999999996 0.0 785
-786 0.0225028991699219 0.019999999999996 0.019999999999996 0.0 786
-787 0.0480420589447021 0.0499999999999972 0.0499999999999972 0.0 787
-788 0.0228919982910156 0.0200000000000102 0.0200000000000102 0.0 788
-789 0.0226309299468994 0.0299999999999869 0.0299999999999869 0.0 789
-790 0.0224378108978271 0.0200000000000102 0.0200000000000102 0.0 790
-791 0.0224709510803223 0.019999999999996 0.019999999999996 0.0 791
-792 0.0223159790039062 0.019999999999996 0.019999999999996 0.0 792
-793 0.0482239723205566 0.0400000000000063 0.0400000000000063 0.0 793
-794 0.0246069431304932 0.0299999999999869 0.0299999999999869 0.0 794
-795 0.0227251052856445 0.0200000000000102 0.0200000000000102 0.0 795
-796 0.0226359367370605 0.019999999999996 0.019999999999996 0.0 796
-797 0.0224781036376953 0.0300000000000011 0.0300000000000011 0.0 797
-798 0.0225961208343506 0.019999999999996 0.019999999999996 0.0 798
-799 0.0226588249206543 0.019999999999996 0.019999999999996 0.0 799
-800 0.0475590229034424 0.0500000000000114 0.0500000000000114 0.0 800
-801 0.0227870941162109 0.019999999999996 0.019999999999996 0.0 801
-802 0.0225069522857666 0.019999999999996 0.019999999999996 0.0 802
-803 0.0258538722991943 0.0300000000000011 0.0300000000000011 0.0 803
-804 0.0293428897857666 0.0300000000000011 0.0300000000000011 0.0 804
-805 0.022611141204834 0.019999999999996 0.019999999999996 0.0 805
-806 0.0470418930053711 0.0500000000000114 0.0500000000000114 0.0 806
-807 0.0237758159637451 0.019999999999996 0.019999999999996 0.0 807
-808 0.0227320194244385 0.0300000000000011 0.0300000000000011 0.0 808
-809 0.0224711894989014 0.019999999999996 0.019999999999996 0.0 809
-810 0.0225059986114502 0.019999999999996 0.019999999999996 0.0 810
-811 0.0224649906158447 0.0200000000000102 0.0200000000000102 0.0 811
-812 0.0506050586700439 0.0499999999999972 0.0499999999999972 0.0 812
-813 0.0230269432067871 0.0300000000000011 0.0300000000000011 0.0 813
-814 0.0228140354156494 0.019999999999996 0.019999999999996 0.0 814
-815 0.0225369930267334 0.019999999999996 0.019999999999996 0.0 815
-816 0.0224819183349609 0.0300000000000011 0.0300000000000011 0.0 816
-817 0.0230681896209717 0.019999999999996 0.019999999999996 0.0 817
-818 0.0226531028747559 0.0200000000000102 0.0200000000000102 0.0 818
-819 0.0471920967102051 0.0499999999999972 0.0499999999999972 0.0 819
-820 0.022752046585083 0.019999999999996 0.019999999999996 0.0 820
-821 0.0240130424499512 0.0300000000000011 0.0300000000000011 0.0 821
-822 0.024043083190918 0.019999999999996 0.019999999999996 0.0 822
-823 0.022367000579834 0.0200000000000102 0.0200000000000102 0.0 823
-824 0.0223929882049561 0.019999999999996 0.019999999999996 0.0 824
-825 0.0477418899536133 0.0499999999999972 0.0499999999999972 0.0 825
-826 0.0227749347686768 0.0300000000000011 0.0300000000000011 0.0 826
-827 0.0227129459381104 0.019999999999996 0.019999999999996 0.0 827
-828 0.0225088596343994 0.0200000000000102 0.0200000000000102 0.0 828
-829 0.0223178863525391 0.019999999999996 0.019999999999996 0.0 829
-830 0.02256178855896 0.0300000000000011 0.0300000000000011 0.0 830
-831 0.0491888523101807 0.039999999999992 0.039999999999992 0.0 831
-832 0.0238690376281738 0.0300000000000011 0.0300000000000011 0.0 832
-833 0.0228731632232666 0.0200000000000102 0.0200000000000102 0.0 833
-834 0.0226390361785889 0.019999999999996 0.019999999999996 0.0 834
-835 0.0226919651031494 0.0300000000000011 0.0300000000000011 0.0 835
-836 0.0225028991699219 0.019999999999996 0.019999999999996 0.0 836
-837 0.0224220752716064 0.019999999999996 0.019999999999996 0.0 837
-838 0.0475718975067139 0.0500000000000114 0.0500000000000114 0.0 838
-839 0.0228641033172607 0.019999999999996 0.019999999999996 0.0 839
-840 0.0308690071105957 0.0300000000000011 0.0300000000000011 0.0 840
-841 0.0251350402832031 0.0300000000000011 0.0300000000000011 0.0 841
-842 0.022784948348999 0.019999999999996 0.019999999999996 0.0 842
-843 0.022475004196167 0.019999999999996 0.019999999999996 0.0 843
-844 0.0481071472167969 0.0499999999999972 0.0499999999999972 0.0 844
-845 0.022777795791626 0.0200000000000102 0.0200000000000102 0.0 845
-846 0.0225391387939453 0.0300000000000011 0.0300000000000011 0.0 846
-847 0.0223829746246338 0.019999999999996 0.019999999999996 0.0 847
-848 0.0222880840301514 0.019999999999996 0.019999999999996 0.0 848
-849 0.0231649875640869 0.0200000000000102 0.0200000000000102 0.0 849
-850 0.0498239994049072 0.0499999999999972 0.0499999999999972 0.0 850
-851 0.0229728221893311 0.0300000000000011 0.0300000000000011 0.0 851
-852 0.0226678848266602 0.019999999999996 0.019999999999996 0.0 852
-853 0.0235629081726074 0.019999999999996 0.019999999999996 0.0 853
-854 0.0226778984069824 0.0300000000000011 0.0300000000000011 0.0 854
-855 0.0225760936737061 0.019999999999996 0.019999999999996 0.0 855
-856 0.0472428798675537 0.0500000000000114 0.0500000000000114 0.0 856
-857 0.0228590965270996 0.019999999999996 0.019999999999996 0.0 857
-858 0.0256388187408447 0.0300000000000011 0.0300000000000011 0.0 858
-859 0.0229208469390869 0.019999999999996 0.019999999999996 0.0 859
-860 0.0224840641021729 0.019999999999996 0.019999999999996 0.0 860
-861 0.0223701000213623 0.0200000000000102 0.0200000000000102 0.0 861
-862 0.0229117870330811 0.0300000000000011 0.0300000000000011 0.0 862
-863 0.0475149154663086 0.039999999999992 0.039999999999992 0.0 863
-864 0.022799015045166 0.0300000000000011 0.0300000000000011 0.0 864
-865 0.0225379467010498 0.019999999999996 0.019999999999996 0.0 865
-866 0.0226678848266602 0.0200000000000102 0.0200000000000102 0.0 866
-867 0.0223591327667236 0.019999999999996 0.019999999999996 0.0 867
-868 0.0251359939575195 0.0300000000000011 0.0300000000000011 0.0 868
-869 0.0475220680236816 0.0499999999999972 0.0499999999999972 0.0 869
-870 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 870
-871 0.0227110385894775 0.0200000000000102 0.0200000000000102 0.0 871
-872 0.0231759548187256 0.0299999999999869 0.0299999999999869 0.0 872
-873 0.0223469734191895 0.0200000000000102 0.0200000000000102 0.0 873
-874 0.0222749710083008 0.019999999999996 0.019999999999996 0.0 874
-875 0.046968936920166 0.0499999999999972 0.0499999999999972 0.0 875
-876 0.0229840278625488 0.0200000000000102 0.0200000000000102 0.0 876
-877 0.0336899757385254 0.0299999999999869 0.0299999999999869 0.0 877
-878 0.0226821899414062 0.0300000000000011 0.0300000000000011 0.0 878
-879 0.0225288867950439 0.0200000000000102 0.0200000000000102 0.0 879
-880 0.0224189758300781 0.019999999999996 0.019999999999996 0.0 880
-881 0.023205041885376 0.0300000000000011 0.0300000000000011 0.0 881
-882 0.0473780632019043 0.039999999999992 0.039999999999992 0.0 882
-883 0.0226800441741943 0.0300000000000011 0.0300000000000011 0.0 883
-884 0.0224399566650391 0.0200000000000102 0.0200000000000102 0.0 884
-885 0.0223681926727295 0.019999999999996 0.019999999999996 0.0 885
-886 0.0252659320831299 0.0300000000000011 0.0300000000000011 0.0 886
-887 0.0249259471893311 0.019999999999996 0.019999999999996 0.0 887
-888 0.047400951385498 0.0499999999999972 0.0499999999999972 0.0 888
-889 0.0227570533752441 0.0200000000000102 0.0200000000000102 0.0 889
-890 0.0234551429748535 0.019999999999996 0.019999999999996 0.0 890
-891 0.0227649211883545 0.0300000000000011 0.0300000000000011 0.0 891
-892 0.0223729610443115 0.019999999999996 0.019999999999996 0.0 892
-893 0.0223479270935059 0.019999999999996 0.019999999999996 0.0 893
-894 0.047307014465332 0.0500000000000114 0.0500000000000114 0.0 894
-895 0.0258030891418457 0.019999999999996 0.019999999999996 0.0 895
-896 0.0229730606079102 0.0300000000000011 0.0300000000000011 0.0 896
-897 0.0226550102233887 0.019999999999996 0.019999999999996 0.0 897
-898 0.0230071544647217 0.019999999999996 0.019999999999996 0.0 898
-899 0.0224480628967285 0.0300000000000011 0.0300000000000011 0.0 899
-900 0.047260046005249 0.0400000000000063 0.0400000000000063 0.0 900
-901 0.0229511260986328 0.0300000000000011 0.0300000000000011 0.0 901
-902 0.0227549076080322 0.019999999999996 0.019999999999996 0.0 902
-903 0.0227870941162109 0.019999999999996 0.019999999999996 0.0 903
-904 0.023169994354248 0.0200000000000102 0.0200000000000102 0.0 904
-905 0.0247299671173096 0.0299999999999869 0.0299999999999869 0.0 905
-906 0.0232272148132324 0.0200000000000102 0.0200000000000102 0.0 906
-907 0.0473639965057373 0.0499999999999972 0.0499999999999972 0.0 907
-908 0.0231180191040039 0.019999999999996 0.019999999999996 0.0 908
-909 0.0226378440856934 0.0300000000000011 0.0300000000000011 0.0 909
-910 0.0224730968475342 0.019999999999996 0.019999999999996 0.0 910
-911 0.0223720073699951 0.0200000000000102 0.0200000000000102 0.0 911
-912 0.0224881172180176 0.019999999999996 0.019999999999996 0.0 912
-913 0.0518181324005127 0.0600000000000023 0.0600000000000023 0.0 913
-914 0.0285370349884033 0.019999999999996 0.019999999999996 0.0 914
-915 0.0229339599609375 0.0300000000000011 0.0300000000000011 0.0 915
-916 0.0224258899688721 0.019999999999996 0.019999999999996 0.0 916
-917 0.0223419666290283 0.0200000000000102 0.0200000000000102 0.0 917
-918 0.0231149196624756 0.019999999999996 0.019999999999996 0.0 918
-919 0.0469498634338379 0.0499999999999972 0.0499999999999972 0.0 919
-920 0.0229380130767822 0.019999999999996 0.019999999999996 0.0 920
-921 0.022784948348999 0.0300000000000011 0.0300000000000011 0.0 921
-922 0.0224778652191162 0.0200000000000102 0.0200000000000102 0.0 922
-923 0.025670051574707 0.0299999999999869 0.0299999999999869 0.0 923
-924 0.0241270065307617 0.0200000000000102 0.0200000000000102 0.0 924
-925 0.0224959850311279 0.019999999999996 0.019999999999996 0.0 925
-926 0.0475151538848877 0.0499999999999972 0.0499999999999972 0.0 926
-927 0.0233569145202637 0.019999999999996 0.019999999999996 0.0 927
-928 0.022697925567627 0.0300000000000011 0.0300000000000011 0.0 928
-929 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 929
-930 0.0223929882049561 0.019999999999996 0.019999999999996 0.0 930
-931 0.0224430561065674 0.019999999999996 0.019999999999996 0.0 931
-932 0.0508589744567871 0.0499999999999972 0.0499999999999972 0.0 932
-933 0.0229549407958984 0.0300000000000011 0.0300000000000011 0.0 933
-934 0.0227360725402832 0.0200000000000102 0.0200000000000102 0.0 934
-935 0.0230159759521484 0.019999999999996 0.019999999999996 0.0 935
-936 0.0223309993743896 0.019999999999996 0.019999999999996 0.0 936
-937 0.0222959518432617 0.019999999999996 0.019999999999996 0.0 937
-938 0.0472970008850098 0.0400000000000063 0.0400000000000063 0.0 938
-939 0.0230600833892822 0.0300000000000011 0.0300000000000011 0.0 939
-940 0.0226349830627441 0.019999999999996 0.019999999999996 0.0 940
-941 0.025303840637207 0.0300000000000011 0.0300000000000011 0.0 941
-942 0.0234689712524414 0.019999999999996 0.019999999999996 0.0 942
-943 0.022615909576416 0.019999999999996 0.019999999999996 0.0 943
-944 0.0470030307769775 0.0500000000000114 0.0500000000000114 0.0 944
-945 0.0232269763946533 0.019999999999996 0.019999999999996 0.0 945
-946 0.0227811336517334 0.0300000000000011 0.0300000000000011 0.0 946
-947 0.0225110054016113 0.019999999999996 0.019999999999996 0.0 947
-948 0.0224099159240723 0.019999999999996 0.019999999999996 0.0 948
-949 0.0224759578704834 0.0200000000000102 0.0200000000000102 0.0 949
-950 0.0223360061645508 0.0300000000000011 0.0300000000000011 0.0 950
-951 0.0556850433349609 0.0499999999999972 0.0499999999999972 0.0 951
-952 0.0229251384735107 0.019999999999996 0.019999999999996 0.0 952
-953 0.0225358009338379 0.0300000000000011 0.0300000000000011 0.0 953
-954 0.0226168632507324 0.019999999999996 0.019999999999996 0.0 954
-955 0.023292064666748 0.019999999999996 0.019999999999996 0.0 955
-956 0.0225601196289062 0.0300000000000011 0.0300000000000011 0.0 956
-957 0.0472140312194824 0.0400000000000063 0.0400000000000063 0.0 957
-958 0.0228290557861328 0.0300000000000011 0.0300000000000011 0.0 958
-959 0.0247390270233154 0.019999999999996 0.019999999999996 0.0 959
-960 0.0244059562683105 0.019999999999996 0.019999999999996 0.0 960
-961 0.0223748683929443 0.0300000000000011 0.0300000000000011 0.0 961
-962 0.0224399566650391 0.0200000000000102 0.0200000000000102 0.0 962
-963 0.0478479862213135 0.0499999999999972 0.0499999999999972 0.0 963
-964 0.0231130123138428 0.019999999999996 0.019999999999996 0.0 964
-965 0.0229220390319824 0.019999999999996 0.019999999999996 0.0 965
-966 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 966
-967 0.0225620269775391 0.0200000000000102 0.0200000000000102 0.0 967
-968 0.0224020481109619 0.019999999999996 0.019999999999996 0.0 968
-969 0.0508251190185547 0.0499999999999972 0.0499999999999972 0.0 969
-970 0.0230629444122314 0.0300000000000011 0.0300000000000011 0.0 970
-971 0.0234439373016357 0.019999999999996 0.019999999999996 0.0 971
-972 0.0241410732269287 0.0200000000000102 0.0200000000000102 0.0 972
-973 0.0225048065185547 0.019999999999996 0.019999999999996 0.0 973
-974 0.0223360061645508 0.0300000000000011 0.0300000000000011 0.0 974
-975 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 975
-976 0.0475950241088867 0.0499999999999972 0.0499999999999972 0.0 976
-977 0.0227401256561279 0.0200000000000102 0.0200000000000102 0.0 977
-978 0.0255289077758789 0.019999999999996 0.019999999999996 0.0 978
-979 0.0238900184631348 0.0300000000000011 0.0300000000000011 0.0 979
-980 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 980
-981 0.0223910808563232 0.019999999999996 0.019999999999996 0.0 981
-982 0.0473268032073975 0.0499999999999972 0.0499999999999972 0.0 982
-983 0.0227880477905273 0.0200000000000102 0.0200000000000102 0.0 983
-984 0.0226118564605713 0.0300000000000011 0.0300000000000011 0.0 984
-985 0.0223948955535889 0.019999999999996 0.019999999999996 0.0 985
-986 0.0223472118377686 0.019999999999996 0.019999999999996 0.0 986
-987 0.0237748622894287 0.0200000000000102 0.0200000000000102 0.0 987
-988 0.0564570426940918 0.0499999999999972 0.0499999999999972 0.0 988
-989 0.0229530334472656 0.0200000000000102 0.0200000000000102 0.0 989
-990 0.0226871967315674 0.0300000000000011 0.0300000000000011 0.0 990
-991 0.0234870910644531 0.019999999999996 0.019999999999996 0.0 991
-992 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 992
-993 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 993
-994 0.0470020771026611 0.0400000000000063 0.0400000000000063 0.0 994
-995 0.022852897644043 0.0300000000000011 0.0300000000000011 0.0 995
-996 0.0257470607757568 0.019999999999996 0.019999999999996 0.0 996
-997 0.0236849784851074 0.0300000000000011 0.0300000000000011 0.0 997
-998 0.0226609706878662 0.019999999999996 0.019999999999996 0.0 998
-999 0.0222959518432617 0.019999999999996 0.019999999999996 0.0 999
-1000 0.0223429203033447 0.0200000000000102 0.0200000000000102 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log
deleted file mode 100644
index 1d42e63d0..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log
+++ /dev/null
@@ -1,262 +0,0 @@
-========================== 2009-04-01T16:50:52 CEST ===========================
-Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux].
-Running 'GeneratorBenchmarkPure' for 1000 iterations/method (compare_time=real)
-===============================================================================
-
-This first run is only for warmup.
-GeneratorBenchmarkPure#generator_pretty:
- real total user system
-sum 27.356301069 27.380000000 27.370000000 0.010000000
-min 0.022372007 0.020000000 0.020000000 0.000000000
-std- 0.018178834 0.017248947 0.017256376 -0.000306228
-mean 0.027356301 0.027380000 0.027370000 0.000010000
-std+ 0.036533768 0.037511053 0.037483624 0.000326228
-max 0.059602976 0.060000000 0.060000000 0.010000000
-std 0.009177467 0.010131053 0.010113624 0.000316228
-std% 33.547909026 37.001655096 36.951493429 3162.277660168
-harm 0.025499974 0.024719842 0.024716787 nan
-geo 0.026258699 0.025883656 0.025877881 0.000000000
-q1 0.023006916 0.020000000 0.020000000 0.000000000
-med 0.023234129 0.020000000 0.020000000 0.000000000
-q3 0.024879038 0.030000000 0.030000000 0.000000000
- 1000 36.55465 0.027356301
- calls calls/sec secs/call
-
- 0.05774 -|
- 0.05402 -|*
- 0.05030 -|****
- 0.04657 -|***
- 0.04285 -|
- 0.03913 -|
- 0.03540 -|
- 0.03168 -|*
- 0.02796 -|***
- 0.02423 -|**************************************************
-
-Outliers detected with box plot algo (median=0.02323, iqr=0.00187, factor=3.00):
-high=72 very_high=150
-
-Ljung-Box statistics: q=3705.61130 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-GeneratorBenchmarkPure#generator_pretty:
- real total user system
-sum 27.569372892 27.540000000 27.530000000 0.010000000
-min 0.022536039 0.020000000 0.020000000 0.000000000
-std- 0.018335894 0.017329581 0.017326902 -0.000306228
-mean 0.027569373 0.027540000 0.027530000 0.000010000
-std+ 0.036802852 0.037750419 0.037733098 0.000326228
-max 0.056230068 0.060000000 0.060000000 0.010000000
-std 0.009233479 0.010210419 0.010203098 0.000316228
-std% 33.491797772 37.074868658 37.061742557 3162.277660168
-harm 0.025675439 0.024841635 0.024836493 nan
-geo 0.026453993 0.026024721 0.026017235 0.000000000
-q1 0.023056030 0.020000000 0.020000000 0.000000000
-med 0.023363113 0.020000000 0.020000000 0.000000000
-q3 0.025253892 0.030000000 0.030000000 0.000000000
- 1000 36.27213 0.027569373
- calls calls/sec secs/call
-
- 0.05455 -|*
- 0.05118 -|**
- 0.04781 -|******
- 0.04444 -|
- 0.04107 -|
- 0.03770 -|
- 0.03433 -|
- 0.03096 -|*
- 0.02759 -|*****
- 0.02422 -|**************************************************
-
-Outliers detected with box plot algo (median=0.02336, iqr=0.00220, factor=3.00):
-high=67 very_high=148
-
-Ljung-Box statistics: q=3212.48820 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
--------------------------------------------------------------------------------
-
-This first run is only for warmup.
-GeneratorBenchmarkPure#generator_safe:
- real total user system
-sum 26.869803667 26.870000000 26.870000000 0.000000000
-min 0.022134781 0.020000000 0.020000000 0.000000000
-std- 0.017763505 0.016750439 0.016750439 0.000000000
-mean 0.026869804 0.026870000 0.026870000 0.000000000
-std+ 0.035976103 0.036989561 0.036989561 0.000000000
-max 0.054952860 0.060000000 0.060000000 0.000000000
-std 0.009106299 0.010119561 0.010119561 0.000000000
-std% 33.890455748 37.661185483 37.661185483 nan
-harm 0.024986876 0.024236549 0.024236549 nan
-geo 0.025759291 0.025373850 0.025373850 0.000000000
-q1 0.022480011 0.020000000 0.020000000 0.000000000
-med 0.022669554 0.020000000 0.020000000 0.000000000
-q3 0.024562180 0.030000000 0.030000000 0.000000000
- 1000 37.21650 0.026869804
- calls calls/sec secs/call
-
- 0.05331 -|*
- 0.05003 -|**
- 0.04675 -|*******
- 0.04347 -|
- 0.04018 -|
- 0.03690 -|
- 0.03362 -|
- 0.03034 -|*
- 0.02706 -|****
- 0.02378 -|**************************************************
-
-Outliers detected with box plot algo (median=0.02267, iqr=0.00208, factor=3.00):
-high=77 very_high=149
-
-Ljung-Box statistics: q=3100.69443 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-GeneratorBenchmarkPure#generator_safe:
- real total user system
-sum 27.079979420 27.040000000 27.030000000 0.010000000
-min 0.022160053 0.020000000 0.020000000 0.000000000
-std- 0.017839790 0.016756803 0.016774061 -0.000306228
-mean 0.027079979 0.027040000 0.027030000 0.000010000
-std+ 0.036320169 0.037323197 0.037285939 0.000326228
-max 0.056457043 0.060000000 0.060000000 0.010000000
-std 0.009240189 0.010283197 0.010255939 0.000316228
-std% 34.121847738 38.029575352 37.942800504 3162.277660168
-harm 0.025134510 0.024331887 0.024329914 nan
-geo 0.025935574 0.025501913 0.025497264 0.000000000
-q1 0.022511005 0.020000000 0.020000000 0.000000000
-med 0.022763968 0.020000000 0.020000000 0.000000000
-q3 0.024686873 0.030000000 0.030000000 0.000000000
- 1000 36.92765 0.027079979
- calls calls/sec secs/call
-
- 0.05474 -|
- 0.05131 -|*
- 0.04788 -|********
- 0.04445 -|
- 0.04102 -|
- 0.03759 -|
- 0.03416 -|
- 0.03073 -|*
- 0.02730 -|***
- 0.02387 -|**************************************************
-
-Outliers detected with box plot algo (median=0.02276, iqr=0.00218, factor=3.00):
-high=53 very_high=158
-
-Ljung-Box statistics: q=3263.81737 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
--------------------------------------------------------------------------------
-
-This first run is only for warmup.
-GeneratorBenchmarkPure#generator_fast:
- real total user system
-sum 19.930217266 19.900000000 19.900000000 0.000000000
-min 0.015556812 0.010000000 0.010000000 0.000000000
-std- 0.010984683 0.009865525 0.009865525 0.000000000
-mean 0.019930217 0.019900000 0.019900000 0.000000000
-std+ 0.028875752 0.029934475 0.029934475 0.000000000
-max 0.048508883 0.050000000 0.050000000 0.000000000
-std 0.008945535 0.010034475 0.010034475 0.000000000
-std% 44.884280314 50.424498030 50.424498030 nan
-harm 0.017806422 0.016056519 0.016056519 nan
-geo 0.018618502 0.017792091 0.017792091 0.000000000
-q1 0.015833676 0.010000000 0.010000000 0.000000000
-med 0.016059995 0.020000000 0.020000000 0.000000000
-q3 0.016686678 0.020000000 0.020000000 0.000000000
- 1000 50.17507 0.019930217
- calls calls/sec secs/call
-
- 0.04686 -|
- 0.04357 -|**
- 0.04027 -|******
- 0.03698 -|
- 0.03368 -|
- 0.03039 -|
- 0.02709 -|
- 0.02379 -|*
- 0.02050 -|**
- 0.01720 -|**************************************************
-
-Outliers detected with box plot algo (median=0.01606, iqr=0.00085, factor=3.00):
-high=46 very_high=180
-
-Ljung-Box statistics: q=3486.59836 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-GeneratorBenchmarkPure#generator_fast:
- real total user system
-sum 20.008520842 19.960000000 19.950000000 0.010000000
-min 0.015434027 0.010000000 0.010000000 0.000000000
-std- 0.010882230 0.009581845 0.009596030 -0.000306228
-mean 0.020008521 0.019960000 0.019950000 0.000010000
-std+ 0.029134812 0.030338155 0.030303970 0.000326228
-max 0.047976971 0.050000000 0.050000000 0.010000000
-std 0.009126291 0.010378155 0.010353970 0.000316228
-std% 45.612021047 51.994765712 51.899601404 3162.277660168
-harm 0.017787111 0.015944725 0.015943454 nan
-geo 0.018637889 0.017737808 0.017733851 0.000000000
-q1 0.015746295 0.010000000 0.010000000 0.000000000
-med 0.015944481 0.020000000 0.020000000 0.000000000
-q3 0.016811609 0.020000000 0.020000000 0.000000000
- 1000 49.97871 0.020008521
- calls calls/sec secs/call
-
- 0.04635 -|*
- 0.04310 -|**
- 0.03984 -|*******
- 0.03659 -|
- 0.03333 -|
- 0.03008 -|
- 0.02682 -|
- 0.02357 -|
- 0.02032 -|***
- 0.01706 -|**************************************************
-
-Outliers detected with box plot algo (median=0.01594, iqr=0.00107, factor=3.00):
-high=64 very_high=166
-
-Ljung-Box statistics: q=2965.93220 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
-========================== 2009-04-01T16:53:33 CEST ===========================
-
-Comparing times (call_time_mean):
- 1 GeneratorBenchmarkPure#generator_fast 1000 repeats:
- 49.978706968 ( real) -> 1.378x
- 0.020008521
- 2 GeneratorBenchmarkPure#generator_safe 1000 repeats:
- 36.927649925 ( real) -> 1.018x 3 (>=3859)
- 0.027079979
- 3 GeneratorBenchmarkPure#generator_pretty 1000 repeats:
- 36.272134441 ( real) -> 1.000x 2 (>=3859)
- 0.027569373
- calls/sec ( time) -> speed covers
- secs/call
-
-Comparing times (call_time_median):
- 1 GeneratorBenchmarkPure#generator_fast 1000 repeats:
- 62.717626652 ( real) -> 1.465x
- 0.015944481
- 2 GeneratorBenchmarkPure#generator_safe 1000 repeats:
- 43.929073409 ( real) -> 1.026x 3 (>=3859)
- 0.022763968
- 3 GeneratorBenchmarkPure#generator_pretty 1000 repeats:
- 42.802514491 ( real) -> 1.000x 2 (>=3859)
- 0.023363113
- calls/sec ( time) -> speed covers
- secs/call
-===============================================================================
-Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_pretty.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat'.
-Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_safe.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat'.
-Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_fast.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat'.
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat
deleted file mode 100644
index 8817d6516..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.0465724627546347
-3 -0.0538491011993629
-4 -0.0538837516678858
-5 -0.0581087152880847
-6 -0.0572986418232159
-7 -0.0599999756465123
-8 -0.068646253651936
-9 -0.0748373181827194
-10 -0.0762302382502274
-11 -0.0698190157504385
-12 -0.0638026172211339
-13 -0.056269249634719
-14 -0.0567327382445349
-15 -0.0596771394790282
-16 -0.054002423139168
-17 -0.0490317335722634
-18 0.461538736857567
-19 0.45915885478734
-20 -0.0465031134094806
-21 -0.0522729893812941
-22 -0.0556508820670087
-23 -0.0550082280116714
-24 -0.0545719306525113
-25 -0.0657168876641937
-26 -0.0693857874047984
-27 -0.0792986072802413
-28 -0.0733338236920328
-29 -0.0654333815670565
-30 -0.0571917436864775
-31 -0.0526717459233624
-32 -0.0557521787108153
-33 -0.0549975758505058
-34 -0.0517415749303995
-35 0.0235297603781655
-36 0.804189593789118
-37 0.0278204967070628
-38 -0.050024141489799
-39 -0.0518095926145569
-40 -0.0452419084747306
-41 -0.0508505065460828
-42 -0.0630761219578647
-43 -0.062815338541251
-44 -0.0772705590073707
-45 -0.0729125138410514
-46 -0.0718320579999123
-47 -0.0607354760752678
-48 -0.0537362276786008
-49 -0.0486777895346357
-50 -0.0554247873222313
-51 -0.0511645855928409
-52 -0.0466004298363093
-53 0.459873350367521
-54 0.424472275070108
-55 -0.0487047547824375
-56 -0.0545283173980978
-57 -0.0480870048405532
-58 -0.0558758950923908
-59 -0.0508952051704444
-60 -0.0620003778190341
-61 -0.0676424010473159
-62 -0.0753766989500048
-63 -0.0695341618321725
-64 -0.0663751431467297
-65 -0.0563170232338965
-66 -0.053655761264179
-67 -0.0530055660822738
-68 -0.0517420323264873
-69 -0.0456703115975304
-70 0.103335608865948
-71 0.639961232446673
-72 0.0835611643585718
-73 -0.0505874487567197
-74 -0.0544864827038179
-75 -0.05268470170316
-76 -0.0471381749128569
-77 -0.0587367141040808
-78 -0.0594188669128526
-79 -0.0650917021991912
-80 -0.068525580194848
-81 -0.0720464392408628
-82 -0.0530371585210882
-83 -0.0594974405056426
-84 -0.0468462249568105
-85 -0.0556729861678099
-86 -0.0486685569511801
-87 -0.0231831809211586
-88 0.412151261252192
-89 0.427286596751845
-90 -0.0468484487476343
-91 -0.0513065750413643
-92 -0.0506460103589642
-93 -0.0523040710285122
-94 -0.0553864194240335
-95 -0.0624298273708398
-96 -0.0629408163122051
-97 -0.0704192947779158
-98 -0.0661863417422444
-99 -0.0616198727092325
-100 -0.0549440862832691
-101 -0.0493100463446785
-102 -0.0513058903561152
-103 -0.0546567629566328
-104 -0.0447767089062448
-105 0.155994950171604
-106 0.499983838989633
-107 0.146752854694195
-108 -0.0499527760238258
-109 -0.0481994338837686
-110 -0.0507971256336303
-111 -0.053242725247733
-112 -0.0556340421399292
-113 -0.0659043126583437
-114 -0.0664898553672703
-115 -0.0623446272778118
-116 -0.0661076782182718
-117 -0.0496402401287781
-118 -0.0494603231236963
-119 -0.04785210230028
-120 -0.0549514395062738
-121 -0.0457893865901791
-122 0.0107718727916323
-123 0.354591871972286
-124 0.378214524188427
-125 -0.00576473785992366
-126 -0.0475263414095933
-127 -0.0467032507959455
-128 -0.0492439340398371
-129 -0.0553725291795042
-130 -0.0588373348224932
-131 -0.0653802923166691
-132 -0.065420878560692
-133 -0.0664825458346486
-134 -0.0585794787867471
-135 -0.0526654847715212
-136 -0.0458834268571694
-137 -0.0488834733479998
-138 -0.0484626462105708
-139 -0.0459832096817391
-140 0.217115969208045
-141 0.366645152379531
-142 0.180037374351014
-143 -0.0470069302868867
-144 -0.0448016085636167
-145 -0.0480964372087658
-146 -0.047581587974722
-147 -0.0542737921731714
-148 -0.0616712591015281
-149 -0.0645264998964167
-150 -0.0660893063296893
-151 -0.0626040533901412
-152 -0.0563401748225009
-153 -0.0489872324179382
-154 -0.0416660137613489
-155 -0.0474153625982119
-156 -0.0429322203344692
-157 0.0758981518142605
-158 0.280022168317631
-159 0.322388389335567
-160 0.029741268314489
-161 -0.0477650431020993
-162 -0.0450492975581489
-163 -0.0437136320420844
-164 -0.0525847472537078
-165 -0.0545773291954165
-166 -0.0605617971026816
-167 -0.0604174493574271
-168 -0.0668887082049361
-169 -0.0569988719330788
-170 -0.0531317736158737
-171 -0.0453847330038626
-172 -0.0478811645968217
-173 -0.0490973206952072
-174 -0.0208865958962374
-175 0.219799921570466
-176 0.281455499801039
-177 0.217413022569843
-178 -0.0472411753883375
-179 -0.0420519413404592
-180 -0.0503599257085886
-181 -0.0460149167014056
-182 -0.0525935089624673
-183 -0.058565014679309
-184 -0.0597480380605469
-185 -0.0594067588886417
-186 -0.0596129671442577
-187 -0.0532084985745771
-188 -0.0488672523172161
-189 -0.0467425993035773
-190 -0.047469398929737
-191 -0.0478812995202321
-192 0.113496325641223
-193 0.235261527843186
-194 0.274288512637064
-195 0.0686558749507578
-196 -0.0421890074761181
-197 -0.0462774420288975
-198 -0.0436343780463106
-199 -0.0526745158526506
-200 -0.0530085997416379
-201 -0.0595766365030657
-202 -0.0527520859095327
-203 -0.0617844575573737
-204 -0.0533732516707478
-205 -0.0475406344908671
-206 -0.0448557657939025
-207 -0.0491813452587493
-208 -0.0465215540303466
-209 0.0129885978681198
-210 0.18048531357979
-211 0.232613590605931
-212 0.216739579303611
-213 -0.0198642765598399
-214 -0.0414628173858397
-215 -0.0446070145491157
-216 -0.0466847454519845
-217 -0.0516226742873491
-218 -0.0545361970917439
-219 -0.0613148091516843
-220 -0.055072960413915
-221 -0.0570761596774525
-222 -0.0495753919838192
-223 -0.044640513821499
-224 -0.0405018327822807
-225 -0.0466702636420172
-226 -0.0430523088898141
-227 0.125260003795363
-228 0.191674753632075
-229 0.237532651857125
-230 0.0874635279713366
-231 -0.0384027504022232
-232 -0.0385130011851906
-233 -0.0369193020542282
-234 -0.0515458512947041
-235 -0.050306447453753
-236 -0.0581741159838659
-237 -0.052999201910556
-238 -0.0589658237786291
-239 -0.0514526377102802
-240 -0.0466869399159385
-241 -0.0380841759966984
-242 -0.0453267873931886
-243 -0.0425000608264673
-244 0.0366267109959152
-245 0.160369979130273
-246 0.196676462412679
-247 0.196963399648668
-248 -0.00269284361330376
-249 -0.0432567847711532
-250 -0.038260742578146
-251 -0.0448624744088596
-252 -0.0455503391926038
-253 -0.0532191861758754
-254 -0.0548508398385335
-255 -0.0555442566058335
-256 -0.0526918597919155
-257 -0.0496453707825256
-258 -0.0463836479193388
-259 -0.0379199031664589
-260 -0.043979755952542
-261 -0.0385836044654481
-262 0.148383243382033
-263 0.160888203514488
-264 0.201083269668142
-265 0.101463931607865
-266 -0.0389240581250844
-267 -0.043318710806698
-268 -0.0360099743646708
-269 -0.0479594556724686
-270 -0.0461272027080179
-271 -0.0510551768794275
-272 -0.0463026057033333
-273 -0.0586300566668458
-274 -0.0481537987530518
-275 -0.0467240944281063
-276 -0.0388278648519038
-277 -0.0438740084909164
-278 -0.0404201849366918
-279 0.0573087818198142
-280 0.149625568374594
-281 0.165251996461555
-282 0.180497909191808
-283 0.0141274252706337
-284 -0.0433910523077124
-285 -0.0353327138881179
-286 -0.04407012419326
-287 -0.0472875341495554
-288 -0.0500154039913527
-289 -0.0489059070454218
-290 -0.0523175481803876
-291 -0.0483438070974799
-292 -0.0465391341735897
-293 -0.0443706893358358
-294 -0.0383212232736209
-295 -0.0439923509231612
-296 -0.0179530530333497
-297 0.126953953852207
-298 0.148073497780274
-299 0.169463284775491
-300 0.12460981401008
-301 -0.0384433337210392
-302 -0.037574676038055
-303 -0.0373312294892246
-304 -0.0476939816787347
-305 -0.0485476034606885
-306 -0.053203479537681
-307 -0.0432695529453645
-308 -0.0531581165281506
-309 -0.0433332891054256
-310 -0.0406621361812071
-311 -0.0336785273069936
-312 -0.0450892345419585
-313 -0.0372803722726718
-314 0.0747413637301572
-315 0.12838403521187
-316 0.131273451158583
-317 0.165634916670676
-318 0.0393574762093495
-319 -0.0400219462092557
-320 -0.0321130988518114
-321 -0.0426329631110547
-322 -0.0472021330054887
-323 -0.0510884361963381
-324 -0.0451526836510229
-325 -0.0497432174259365
-326 -0.0494924567626408
-327 -0.0426445357005891
-328 -0.0399977780929692
-329 -0.035075954620801
-330 -0.0398937379838232
-331 0.00141601747607724
-332 0.111237045799794
-333 0.129781753698161
-334 0.148823429538605
-335 0.111428704849097
-336 -0.0189114212837953
-337 -0.0358144500870447
-338 -0.0338893528609611
-339 -0.04156202524001
-340 -0.0476279047622513
-341 -0.0479240001912479
-342 -0.0448192129885784
-343 -0.0520619488376005
-344 -0.045398294011681
-345 -0.0425448160252897
-346 -0.0301879715513119
-347 -0.039119844953792
-348 -0.0318445060292795
-349 0.0775128927560733
-350 0.133696030929458
-351 0.0934040962894178
-352 0.165037006342042
-353 0.0370713206399436
-354 -0.0370489719027206
-355 -0.0298304751416159
-356 -0.0387994185030151
-357 -0.0425739727567155
-358 -0.0469026409069165
-359 -0.0418293150822566
-360 -0.0473273219131854
-361 -0.049308019642061
-362 -0.0433284886806794
-363 -0.0369972157525989
-364 -0.0345525347288445
-365 -0.0400585889725531
-366 0.006656467274749
-367 0.11319538432443
-368 0.114967420474613
-369 0.133840368292221
-370 0.11280046677219
-371 -0.0184103961539414
-372 -0.0339399206362434
-373 -0.0341590200213704
-374 -0.0389400741910205
-375 -0.0448588461724111
-376 -0.0447120964840124
-377 -0.0401284599190171
-378 -0.0470280445927007
-379 -0.0439972690249817
-380 -0.0392994644400358
-381 -0.0331443114964012
-382 -0.0396320099995872
-383 -0.0357237280973228
-384 0.0769794799672965
-385 0.121101405134608
-386 0.100303300798787
-387 0.149213747230628
-388 0.0412712734968881
-389 -0.034428474543572
-390 -0.0309853686271892
-391 -0.037127802798713
-392 -0.0410862385400477
-393 -0.0446683655260938
-394 -0.0377779019366912
-395 -0.0432145550363202
-396 -0.0438865867392626
-397 -0.0397741719725851
-398 -0.0337532454079572
-399 -0.0345799482263535
-400 -0.0387855235790556
-401 0.0042952586621399
-402 0.114260797874283
-403 0.0962185400570627
-404 0.116302086694965
-405 0.116848660126361
-406 -0.0132599069767382
-407 -0.0326838372412273
-408 -0.031676894325753
-409 -0.0359544345578842
-410 -0.0430939231188687
-411 -0.0427909313399572
-412 -0.0392589148284163
-413 -0.0430139521930403
-414 -0.0405058980200932
-415 -0.0359005384516355
-416 -0.0297289315488662
-417 -0.0346787823837342
-418 -0.0332184590996983
-419 0.0771309823574169
-420 0.0954831808563938
-421 0.0986580814637101
-422 0.132204221810988
-423 0.0432995539287995
-424 -0.0282150289086581
-425 -0.0254088298731916
-426 -0.035952142901876
-427 -0.037552626088304
-428 -0.0405520090843967
-429 -0.0395737434856001
-430 -0.0415264891793749
-431 -0.0396875191674724
-432 -0.0384740880698292
-433 -0.0302213018176337
-434 -0.0302192627628463
-435 -0.0348307323662469
-436 0.00857082219058242
-437 0.113991981123305
-438 0.0810743348982558
-439 0.0970584251304922
-440 0.115026168034471
-441 -0.0130244881629081
-442 -0.0292031219799078
-443 -0.0308836212065116
-444 -0.0320575360367349
-445 -0.0393235092139189
-446 -0.0404817406521166
-447 -0.0375499698943704
-448 -0.0391450519157927
-449 -0.0397015347530508
-450 -0.0341587808934071
-451 -0.0310633384201306
-452 -0.0298881734250907
-453 -0.0295664081324632
-454 0.0805186281243404
-455 0.0833481690834954
-456 0.100864427083124
-457 0.111048128125141
-458 0.0464738054146592
-459 -0.0349995254836163
-460 -0.0255159736923953
-461 -0.0328764364137298
-462 -0.0338236112511505
-463 -0.0346782988250705
-464 -0.0340726935148046
-465 -0.0404234701095829
-466 -0.0356824878052483
-467 -0.0365578629303766
-468 -0.0324733709193554
-469 -0.0289648187856306
-470 -0.0320583632447268
-471 0.0109080362038411
-472 0.11757782076319
-473 0.0695324086716044
-474 0.079135520981604
-475 0.117166513712611
-476 -0.0107597842046391
-477 -0.0317910056255559
-478 -0.027713154753877
-479 -0.0328896799629515
-480 -0.0351148398263727
-481 -0.0367274328131775
-482 -0.0364350706943765
-483 -0.0352358798451258
-484 -0.0349817805140066
-485 -0.0341765926002117
-486 -0.0295770684618762
-487 -0.0265724708520466
-488 -0.0307810244464994
-489 0.0809894603579388
-490 0.0657550565427912
-491 0.106121880875152
-492 0.0974533505603275
-493 0.048238583810636
-494 -0.0288751879183889
-495 -0.0278787597095273
-496 -0.0337889205336922
-497 -0.0310688626579132
-498 -0.0384449649057626
-499 -0.0323682085966455
-500 -0.0361594385992874
-501 -0.0307937097313911
-502 -0.0313341566221988
-503 -0.0279856067641256
-504 -0.0289346840813807
-505 -0.0274872799690336
-506 0.00966555565940951
-507 0.0987720472362742
-508 0.0693890261403234
-509 0.0836756922797179
-510 0.10281770126579
-511 -0.00727787007831376
-512 -0.0258225019587932
-513 -0.0298502698700326
-514 -0.0306103473329238
-515 -0.0340826155989302
-516 -0.0355383371718098
-517 -0.0332157070791453
-518 -0.0354738192624273
-519 -0.0294010470848171
-520 -0.0310021513905682
-521 -0.0278235052216282
-522 -0.0239204460552095
-523 -0.0270969544256545
-524 0.0813764246127106
-525 0.0493102023473518
-526 0.104517332044244
-527 0.0811860139474904
-528 0.0510442031887192
-529 -0.0263637770970907
-530 -0.024755257304
-531 -0.0293388219300537
-532 -0.030007512828798
-533 -0.0323871465584352
-534 -0.0326780116025662
-535 -0.0374203204825225
-536 -0.0287231615177231
-537 -0.0332054768516264
-538 -0.0263051872864467
-539 -0.0243639277620771
-540 -0.023684344033898
-541 0.0142647324079813
-542 0.08574245660666
-543 0.0666795058595027
-544 0.0869761334698767
-545 0.0822018389405922
-546 -0.00295335814304317
-547 -0.0235452895911804
-548 -0.0281420988182953
-549 -0.0274120947938358
-550 -0.030158448744077
-551 -0.0295591560556766
-552 -0.0349368577359752
-553 -0.0326892340430509
-554 -0.0288806796544796
-555 -0.0295906146661126
-556 -0.0255785772166513
-557 -0.0247509384838002
-558 -0.0232231373627232
-559 0.0658724153140723
-560 0.0712698072158692
-561 0.0881661970571259
-562 0.0663434329796159
-563 0.0504442196817487
-564 -0.0220475381031792
-565 -0.0264520763210997
-566 -0.0262681630778278
-567 -0.0288120090469048
-568 -0.0292045667237407
-569 -0.0288062681932496
-570 -0.0330307486178301
-571 -0.0276514157813042
-572 -0.0268575483268837
-573 -0.0286764091398958
-574 -0.0281163961143271
-575 -0.0228693014048811
-576 0.0137045823052654
-577 0.0708633033596918
-578 0.0727744765379734
-579 0.0901470435080371
-580 0.0668755655920324
-581 -0.000653685262202251
-582 -0.0226994101946291
-583 -0.0270858316982201
-584 -0.0262718617327352
-585 -0.0265543856920115
-586 -0.0263771846461291
-587 -0.0319210552186977
-588 -0.029228183377507
-589 -0.0253777881177648
-590 -0.023809668956424
-591 -0.0280707574473553
-592 -0.0236140212549248
-593 -0.0228812657345804
-594 0.0486286781379677
-595 0.0898094414635747
-596 0.0508172134123107
-597 0.0901627351364118
-598 0.035844991775818
-599 -0.0203954379453198
-600 -0.0236862766959248
-601 -0.0247764225976876
-602 -0.0268581954253402
-603 -0.024001323229557
-604 -0.0303209729182735
-605 -0.0282931887611187
-606 -0.0292448557436288
-607 -0.0204578421032432
-608 -0.0248481591188926
-609 -0.0243082585401647
-610 -0.0203058655309834
-611 0.0139804741022989
-612 0.0505962449646704
-613 0.0690065939226321
-614 0.0907008020619833
-615 0.0519895469381193
-616 0.00206395484186643
-617 -0.0179281261622168
-618 -0.0227541776038619
-619 -0.0257149623750039
-620 -0.0221474812173537
-621 -0.0258958495203968
-622 -0.0291821476071184
-623 -0.0275173183668531
-624 -0.0219475947671766
-625 -0.0205864860149524
-626 -0.025198699283959
-627 -0.0196801475213126
-628 -0.0202813022751003
-629 0.0348753757737052
-630 0.0886744284826022
-631 0.0510351034421101
-632 0.0895415054055807
-633 0.0164865165554748
-634 -0.015820890351599
-635 -0.0235475303149806
-636 -0.0213487610196947
-637 -0.0223199871320358
-638 -0.0232883343131998
-639 -0.0272670686256873
-640 -0.0272994728260666
-641 -0.0251308147365066
-642 -0.0178939045831991
-643 -0.0228455395566411
-644 -0.0221674583093893
-645 -0.0181323711670327
-646 -0.000452057490636536
-647 0.0730003371658734
-648 0.0526039790662623
-649 0.0893120555725861
-650 0.0370376391850216
-651 -0.00089235639136826
-652 -0.0187548356986865
-653 -0.0202476722666913
-654 -0.0234402686094643
-655 -0.0176944079943485
-656 -0.0217419932421246
-657 -0.0252856528727102
-658 -0.0266563306764344
-659 -0.0179448089254929
-660 -0.0195530157887301
-661 -0.0242694989687706
-662 -0.0190898174037584
-663 -0.0162971087662526
-664 0.0190291931578508
-665 0.0920040569420149
-666 0.0547776230200262
-667 0.092519718174194
-668 -0.00323187468810452
-669 -0.0159810677640527
-670 -0.0185314129082898
-671 -0.0214996968543122
-672 -0.0209394743431591
-673 -0.0193460621057047
-674 -0.0257496298508357
-675 -0.0234878155623851
-676 -0.0215154679548733
-677 -0.0168154166505892
-678 -0.019623012738795
-679 -0.0222731795719489
-680 -0.0150548901993986
-681 -0.0172527061580013
-682 0.0747183966470148
-683 0.0721393781132992
-684 0.0565213941535672
-685 0.0565389116679803
-686 -0.0148388383909541
-687 -0.0189549593111703
-688 -0.0194161863407717
-689 -0.0197915076545455
-690 -0.0204244077381793
-691 -0.0218016316407433
-692 -0.0214645015602913
-693 -0.0238079641007921
-694 -0.0139629684168808
-695 -0.0156538895936235
-696 -0.021079456852115
-697 -0.0181418459552329
-698 -0.0145711876585601
-699 0.021215272535226
-700 0.0739558887973388
-701 0.0544658986157784
-702 0.0807341348823958
-703 -0.000188368345643536
-704 -0.0129199941327641
-705 -0.0180368997395347
-706 -0.0177692127800531
-707 -0.0204829544190261
-708 -0.0186632967600099
-709 -0.0204496056760325
-710 -0.023317274857146
-711 -0.0203774310283799
-712 -0.0136747501938559
-713 -0.0178116490297146
-714 -0.0189587954269383
-715 -0.0118858609089409
-716 -0.0172514569604997
-717 0.060802565704854
-718 0.0729937005677284
-719 0.0561951789698019
-720 0.042100568116198
-721 -0.0145015528092692
-722 -0.015700955312727
-723 -0.0167874521751816
-724 -0.0157176826421741
-725 -0.01783312467466
-726 -0.0220309477451877
-727 -0.0206302592507727
-728 -0.0200916933627863
-729 -0.0188778418069578
-730 -0.0113708982542668
-731 -0.0176778219523296
-732 -0.014843868366855
-733 -0.0112296460883651
-734 0.0256322345958098
-735 0.0560052205819785
-736 0.0568640232132456
-737 0.0611881586473825
-738 0.00379039852134298
-739 -0.0104730174558681
-740 -0.0164262606347393
-741 -0.0144022889870097
-742 -0.0168139620706729
-743 -0.0162615811333726
-744 -0.0196477371337629
-745 -0.0198824745918442
-746 -0.0192330305226495
-747 -0.012843462564526
-748 -0.0132891104080353
-749 -0.0181808023489715
-750 -0.0130545167379928
-751 -0.0113910229689613
-752 0.041990539641635
-753 0.0763855238906953
-754 0.0594251709620633
-755 0.0243609283015674
-756 -0.011509575108219
-757 -0.0130005756539877
-758 -0.0150890385548497
-759 -0.0139673203815592
-760 -0.0157156335728081
-761 -0.0186682466883542
-762 -0.0185554927618856
-763 -0.0162755018147282
-764 -0.0154200664197001
-765 -0.0134500863696249
-766 -0.014171081512106
-767 -0.0144636296247257
-768 -0.0126931065239486
-769 0.00886491087382969
-770 0.0582642578199214
-771 0.0786546867228701
-772 0.0272306482046141
-773 0.00822579495183492
-774 -0.011517390916366
-775 -0.0139592957633573
-776 -0.0129421565517047
-777 -0.0134986559471086
-778 -0.0136304589585504
-779 -0.0173438393070116
-780 -0.016064531677406
-781 -0.0152510664062614
-782 -0.0101822066131621
-783 -0.0130099394643087
-784 -0.0150897101751983
-785 -0.0121547232260943
-786 -0.0117824571975702
-787 0.0242515574526126
-788 0.0773173900249155
-789 0.061635146281499
-790 0.00959030625397352
-791 -0.0090693872805306
-792 -0.0112081729509553
-793 -0.0138649594742307
-794 -0.010084978733244
-795 -0.0132143360704552
-796 -0.01496302977637
-797 -0.0164140720480332
-798 -0.0137826264017484
-799 -0.0128738607141167
-800 -0.0108179181287105
-801 -0.0114389768189071
-802 -0.0115710434341599
-803 -0.00965025893918617
-804 -0.0135132422793313
-805 0.0617365766920115
-806 0.0779699523399871
-807 0.0247967756220761
-808 -0.0065090662747984
-809 -0.00857892822230665
-810 -0.0101662607994292
-811 -0.0108507653686812
-812 -0.00958246558520002
-813 -0.0144516907622999
-814 -0.0150147299589262
-815 -0.0135220759135818
-816 -0.0115211008118439
-817 -0.0104021106108387
-818 -0.00780776429502702
-819 -0.011404849912357
-820 -0.00951333011434902
-821 -0.00938572506372878
-822 0.0266216133025957
-823 0.0610181017554806
-824 0.0438869371591075
-825 0.00859504869317741
-826 -0.00699743519150731
-827 -0.00929600314682341
-828 -0.0111911531783819
-829 -0.00823625897932562
-830 -0.0100913686286367
-831 -0.0125756643002852
-832 -0.0152602353555104
-833 -0.00953260529007071
-834 -0.0100594605441607
-835 -0.00871459443751229
-836 -0.00938155933764076
-837 -0.00918618283897082
-838 -0.00755980106901216
-839 -0.0107245855066125
-840 0.0458486876264972
-841 0.0824090055093124
-842 0.00574421553061521
-843 -0.00725667517287379
-844 -0.00867494223043522
-845 -0.00829285117321785
-846 -0.00957414187855957
-847 -0.00659032223177494
-848 -0.0106624401215929
-849 -0.0122427759092887
-850 -0.0104622099267244
-851 -0.00799623147718296
-852 -0.0104382420530796
-853 -0.0075668223790859
-854 -0.00621892353946098
-855 -0.00836920759535837
-856 -0.00630014552985234
-857 0.0113479974095218
-858 0.0628686123242055
-859 0.0463260384468626
-860 -0.00865830449867469
-861 -0.00632533057369849
-862 -0.00620405394762857
-863 -0.00876475527943431
-864 -0.00910265771371557
-865 -0.00714690863853632
-866 -0.0103958026182488
-867 -0.0121633888743942
-868 -0.00676196610841381
-869 -0.00714452896204837
-870 -0.00679873891573572
-871 -0.00845680011347619
-872 -0.00625057507944579
-873 -0.00606839813409962
-874 -0.00725859558269772
-875 0.0281965759233777
-876 0.0670260741629087
-877 0.00963490036467712
-878 -0.00456245837151462
-879 -0.00755131292428571
-880 -0.00586747799683473
-881 -0.00783299131040265
-882 -0.00744370954110726
-883 -0.00915087240687255
-884 -0.00957213417268418
-885 -0.00832361596391925
-886 -0.0050340090260566
-887 -0.00755295159414475
-888 -0.00495117481094215
-889 -0.00424086001593403
-890 -0.00515343444584415
-891 -0.00744099299381077
-892 -0.00696188041633924
-893 0.0670358828192865
-894 0.0306555670430617
-895 -0.00700188318283173
-896 -0.00439483158228684
-897 -0.00440309654475794
-898 -0.00580106920715627
-899 -0.00743386431878525
-900 -0.00615300126683845
-901 -0.00852083652339179
-902 -0.00801483743475307
-903 -0.0074130347068713
-904 -0.00363565987760851
-905 -0.007955033309064
-906 -0.00193305784421065
-907 -0.0041800577189778
-908 -0.00353565656672481
-909 -0.0058551774732522
-910 0.0302595657677451
-911 0.0314102314562899
-912 0.013212750015713
-913 -0.00316630844923298
-914 -0.00520479906156008
-915 -0.00420739410816969
-916 -0.00564901350096342
-917 -0.00531128324885506
-918 -0.00606089198821065
-919 -0.00772996050306375
-920 -0.00676594704104744
-921 -0.00533751850001158
-922 -0.0058222391965106
-923 -0.00590469211682123
-924 -0.00139624368550244
-925 -0.00225770557975624
-926 -0.00430278519099915
-927 -0.00497994091066768
-928 0.0521745063047641
-929 0.0125007611461825
-930 -0.00335983528594071
-931 -0.00200633784627574
-932 -0.00192061226814783
-933 -0.00414996522579167
-934 -0.00453925170940819
-935 -0.00441610859184833
-936 -0.00487531850001996
-937 -0.00511365916811154
-938 -0.00549890284279737
-939 -0.00379682253936933
-940 -0.00404757676266654
-941 -0.00349312951783624
-942 -0.00159942004178191
-943 -0.00176952812644145
-944 -0.00366444935410891
-945 0.0162283566898874
-946 0.0320898583297591
-947 -0.00388380045409207
-948 -0.0018243911045478
-949 -0.00115125308892718
-950 -0.00149365801922153
-951 -0.00294988667592288
-952 -0.00329687293305934
-953 -0.00371267430404071
-954 -0.00407396263409427
-955 -0.00384065535263086
-956 -0.00283959971098493
-957 -0.00342824033321658
-958 -0.00321142688896053
-959 -0.00222112060678468
-960 -0.0020328615528584
-961 -0.00145605698519582
-962 -0.00287857829852364
-963 0.0183610738417914
-964 0.0154027556420478
-965 -0.00179489314871512
-966 -0.00129790436843852
-967 -0.000853980926230406
-968 -0.000666619047494671
-969 -0.00118456473308688
-970 -0.00182173221293997
-971 -0.00223763548036304
-972 -0.00250045159359336
-973 -0.00244783545512189
-974 -0.00233355012767793
-975 -0.00148662334882801
-976 -0.00109910993153004
-977 -0.00197535475727005
-978 -0.00150005492632689
-979 -0.000669782105543667
-980 -0.00133477373003284
-981 0.0173273972011934
-982 -0.00112526521664063
-983 -0.000841739351965462
-984 0.000565203827743629
-985 -0.000459312244397425
-986 -0.000418262528083788
-987 -0.000498463341452234
-988 -0.000616296957122406
-989 -0.000679296268851578
-990 -0.00084778145306077
-991 -0.000978798423497668
-992 -0.000894990113732281
-993 -0.000701461719327138
-994 -0.000511781130867642
-995 -0.000286708792038961
-996 -0.000395118651726646
-997 -0.000921290818811666
-998 -0.000781372909192289
-999 9.80848043031114e-05
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat
deleted file mode 100644
index 7ed81ad3d..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.0234072208404541 0.0299999999999976 0.0299999999999976 0.0 1
-2 0.0229461193084717 0.0199999999999996 0.0199999999999996 0.0 2
-3 0.0243709087371826 0.0200000000000031 0.0200000000000031 0.0 3
-4 0.0244681835174561 0.0299999999999976 0.0299999999999976 0.0 4
-5 0.0235309600830078 0.0199999999999996 0.0199999999999996 0.0 5
-6 0.0227420330047607 0.0199999999999996 0.0199999999999996 0.0 6
-7 0.022014856338501 0.0300000000000011 0.0300000000000011 0.0 7
-8 0.0215449333190918 0.0199999999999996 0.0199999999999996 0.0 8
-9 0.0216219425201416 0.0199999999999996 0.0199999999999996 0.0 9
-10 0.0218148231506348 0.0199999999999996 0.0199999999999996 0.0 10
-11 0.0217390060424805 0.0200000000000031 0.0200000000000031 0.0 11
-12 0.0218250751495361 0.0299999999999976 0.0299999999999976 0.0 12
-13 0.0219888687133789 0.0199999999999996 0.0199999999999996 0.0 13
-14 0.021812915802002 0.0200000000000031 0.0200000000000031 0.0 14
-15 0.0244221687316895 0.0199999999999996 0.0199999999999996 0.0 15
-16 0.022874116897583 0.0299999999999976 0.0299999999999976 0.0 16
-17 0.0218498706817627 0.0199999999999996 0.0199999999999996 0.0 17
-18 0.0760290622711182 0.0700000000000003 0.0700000000000003 0.0 18
-19 0.0238790512084961 0.0300000000000011 0.0300000000000011 0.0 19
-20 0.0229480266571045 0.0199999999999996 0.0199999999999996 0.0 20
-21 0.0231330394744873 0.0199999999999996 0.0199999999999996 0.0 21
-22 0.0228769779205322 0.0300000000000011 0.0300000000000011 0.0 22
-23 0.0258219242095947 0.0199999999999996 0.0199999999999996 0.0 23
-24 0.0243449211120605 0.0300000000000011 0.0300000000000011 0.0 24
-25 0.0228381156921387 0.0199999999999996 0.0199999999999996 0.0 25
-26 0.022367000579834 0.0199999999999996 0.0199999999999996 0.0 26
-27 0.0216410160064697 0.0199999999999996 0.0199999999999996 0.0 27
-28 0.0216100215911865 0.0300000000000011 0.0300000000000011 0.0 28
-29 0.0220630168914795 0.0199999999999996 0.0199999999999996 0.0 29
-30 0.0222890377044678 0.0199999999999996 0.0199999999999996 0.0 30
-31 0.0216050148010254 0.0199999999999996 0.0199999999999996 0.0 31
-32 0.0216009616851807 0.0199999999999996 0.0199999999999996 0.0 32
-33 0.021636962890625 0.0199999999999996 0.0199999999999996 0.0 33
-34 0.0239388942718506 0.0300000000000011 0.0300000000000011 0.0 34
-35 0.021759033203125 0.0199999999999996 0.0199999999999996 0.0 35
-36 0.0811088085174561 0.0800000000000018 0.0800000000000018 0.0 36
-37 0.0229001045227051 0.0199999999999996 0.0199999999999996 0.0 37
-38 0.0228509902954102 0.0299999999999976 0.0299999999999976 0.0 38
-39 0.0228641033172607 0.0200000000000031 0.0200000000000031 0.0 39
-40 0.0229160785675049 0.0199999999999996 0.0199999999999996 0.0 40
-41 0.0227169990539551 0.0299999999999976 0.0299999999999976 0.0 41
-42 0.0228250026702881 0.0200000000000031 0.0200000000000031 0.0 42
-43 0.0261838436126709 0.0199999999999996 0.0199999999999996 0.0 43
-44 0.0234429836273193 0.0299999999999976 0.0299999999999976 0.0 44
-45 0.0215818881988525 0.0199999999999996 0.0199999999999996 0.0 45
-46 0.0215709209442139 0.0200000000000031 0.0200000000000031 0.0 46
-47 0.0215950012207031 0.0199999999999996 0.0199999999999996 0.0 47
-48 0.0215859413146973 0.0199999999999996 0.0199999999999996 0.0 48
-49 0.0217461585998535 0.0299999999999976 0.0299999999999976 0.0 49
-50 0.021589994430542 0.0200000000000031 0.0200000000000031 0.0 50
-51 0.0216829776763916 0.0199999999999996 0.0199999999999996 0.0 51
-52 0.0217359066009521 0.0199999999999996 0.0199999999999996 0.0 52
-53 0.0219109058380127 0.0199999999999996 0.0199999999999996 0.0 53
-54 0.0795738697052002 0.0799999999999983 0.0799999999999983 0.0 54
-55 0.023021936416626 0.0300000000000011 0.0300000000000011 0.0 55
-56 0.0230770111083984 0.0199999999999996 0.0199999999999996 0.0 56
-57 0.0229918956756592 0.0199999999999996 0.0199999999999996 0.0 57
-58 0.0233080387115479 0.0300000000000011 0.0300000000000011 0.0 58
-59 0.0226249694824219 0.0199999999999996 0.0199999999999996 0.0 59
-60 0.022819995880127 0.0199999999999996 0.0199999999999996 0.0 60
-61 0.0220620632171631 0.0199999999999996 0.0199999999999996 0.0 61
-62 0.0242538452148438 0.0300000000000011 0.0300000000000011 0.0 62
-63 0.0224769115447998 0.0199999999999996 0.0199999999999996 0.0 63
-64 0.0229120254516602 0.0199999999999996 0.0199999999999996 0.0 64
-65 0.0216310024261475 0.0199999999999996 0.0199999999999996 0.0 65
-66 0.0215990543365479 0.0300000000000011 0.0300000000000011 0.0 66
-67 0.0216221809387207 0.0199999999999996 0.0199999999999996 0.0 67
-68 0.0220649242401123 0.0199999999999996 0.0199999999999996 0.0 68
-69 0.0225241184234619 0.0199999999999996 0.0199999999999996 0.0 69
-70 0.0217139720916748 0.0200000000000031 0.0200000000000031 0.0 70
-71 0.0781118869781494 0.0799999999999983 0.0799999999999983 0.0 71
-72 0.0234410762786865 0.0300000000000011 0.0300000000000011 0.0 72
-73 0.0229668617248535 0.0199999999999996 0.0199999999999996 0.0 73
-74 0.0291080474853516 0.0300000000000011 0.0300000000000011 0.0 74
-75 0.0240139961242676 0.0199999999999996 0.0199999999999996 0.0 75
-76 0.0226550102233887 0.0199999999999996 0.0199999999999996 0.0 76
-77 0.0226681232452393 0.0299999999999976 0.0299999999999976 0.0 77
-78 0.0226988792419434 0.0200000000000031 0.0200000000000031 0.0 78
-79 0.0223758220672607 0.0199999999999996 0.0199999999999996 0.0 79
-80 0.0216100215911865 0.0199999999999996 0.0199999999999996 0.0 80
-81 0.0216431617736816 0.0300000000000011 0.0300000000000011 0.0 81
-82 0.0247490406036377 0.0199999999999996 0.0199999999999996 0.0 82
-83 0.023237943649292 0.0199999999999996 0.0199999999999996 0.0 83
-84 0.0217869281768799 0.0299999999999976 0.0299999999999976 0.0 84
-85 0.0216598510742188 0.0200000000000031 0.0200000000000031 0.0 85
-86 0.0217628479003906 0.0199999999999996 0.0199999999999996 0.0 86
-87 0.0218119621276855 0.0199999999999996 0.0199999999999996 0.0 87
-88 0.0217659473419189 0.0199999999999996 0.0199999999999996 0.0 88
-89 0.0768370628356934 0.0799999999999983 0.0799999999999983 0.0 89
-90 0.025317907333374 0.0200000000000031 0.0200000000000031 0.0 90
-91 0.0233399868011475 0.0299999999999976 0.0299999999999976 0.0 91
-92 0.0232961177825928 0.0199999999999996 0.0199999999999996 0.0 92
-93 0.0227580070495605 0.0199999999999996 0.0199999999999996 0.0 93
-94 0.0227789878845215 0.0300000000000011 0.0300000000000011 0.0 94
-95 0.0228569507598877 0.0199999999999996 0.0199999999999996 0.0 95
-96 0.0226337909698486 0.0199999999999996 0.0199999999999996 0.0 96
-97 0.0222299098968506 0.0300000000000011 0.0300000000000011 0.0 97
-98 0.0214722156524658 0.0199999999999996 0.0199999999999996 0.0 98
-99 0.0216591358184814 0.0199999999999996 0.0199999999999996 0.0 99
-100 0.0215888023376465 0.0199999999999996 0.0199999999999996 0.0 100
-101 0.0234711170196533 0.0200000000000031 0.0200000000000031 0.0 101
-102 0.0229098796844482 0.0299999999999976 0.0299999999999976 0.0 102
-103 0.0220291614532471 0.0199999999999996 0.0199999999999996 0.0 103
-104 0.0216660499572754 0.0199999999999996 0.0199999999999996 0.0 104
-105 0.0216059684753418 0.0200000000000031 0.0200000000000031 0.0 105
-106 0.0761630535125732 0.0799999999999983 0.0799999999999983 0.0 106
-107 0.0231220722198486 0.0199999999999996 0.0199999999999996 0.0 107
-108 0.0229330062866211 0.0199999999999996 0.0199999999999996 0.0 108
-109 0.0230400562286377 0.0300000000000011 0.0300000000000011 0.0 109
-110 0.0250980854034424 0.0199999999999996 0.0199999999999996 0.0 110
-111 0.0231518745422363 0.0300000000000011 0.0300000000000011 0.0 111
-112 0.0227048397064209 0.0199999999999996 0.0199999999999996 0.0 112
-113 0.0284969806671143 0.0300000000000011 0.0300000000000011 0.0 113
-114 0.0239260196685791 0.0199999999999996 0.0199999999999996 0.0 114
-115 0.0219199657440186 0.0199999999999996 0.0199999999999996 0.0 115
-116 0.0215260982513428 0.0199999999999996 0.0199999999999996 0.0 116
-117 0.0215198993682861 0.0300000000000011 0.0300000000000011 0.0 117
-118 0.0216398239135742 0.0199999999999996 0.0199999999999996 0.0 118
-119 0.0215740203857422 0.0199999999999996 0.0199999999999996 0.0 119
-120 0.0216050148010254 0.0199999999999996 0.0199999999999996 0.0 120
-121 0.0247631072998047 0.0300000000000011 0.0300000000000011 0.0 121
-122 0.0225539207458496 0.0199999999999996 0.0199999999999996 0.0 122
-123 0.0218660831451416 0.0199999999999996 0.0199999999999996 0.0 123
-124 0.0765988826751709 0.0799999999999983 0.0799999999999983 0.0 124
-125 0.0230319499969482 0.0199999999999996 0.0199999999999996 0.0 125
-126 0.0229179859161377 0.0200000000000031 0.0200000000000031 0.0 126
-127 0.0229899883270264 0.0299999999999976 0.0299999999999976 0.0 127
-128 0.0230929851531982 0.0199999999999996 0.0199999999999996 0.0 128
-129 0.024507999420166 0.0200000000000031 0.0200000000000031 0.0 129
-130 0.0237898826599121 0.0299999999999976 0.0299999999999976 0.0 130
-131 0.0237009525299072 0.0199999999999996 0.0199999999999996 0.0 131
-132 0.0220949649810791 0.0199999999999996 0.0199999999999996 0.0 132
-133 0.0216069221496582 0.0300000000000011 0.0300000000000011 0.0 133
-134 0.0217080116271973 0.0199999999999996 0.0199999999999996 0.0 134
-135 0.0218410491943359 0.0199999999999996 0.0199999999999996 0.0 135
-136 0.0222909450531006 0.0199999999999996 0.0199999999999996 0.0 136
-137 0.0216519832611084 0.0200000000000031 0.0200000000000031 0.0 137
-138 0.0217440128326416 0.0299999999999976 0.0299999999999976 0.0 138
-139 0.0217659473419189 0.0199999999999996 0.0199999999999996 0.0 139
-140 0.0218610763549805 0.0200000000000031 0.0200000000000031 0.0 140
-141 0.0243120193481445 0.0199999999999996 0.0199999999999996 0.0 141
-142 0.0773770809173584 0.0799999999999983 0.0799999999999983 0.0 142
-143 0.0230779647827148 0.0199999999999996 0.0199999999999996 0.0 143
-144 0.022913932800293 0.0300000000000011 0.0300000000000011 0.0 144
-145 0.0239241123199463 0.0199999999999996 0.0199999999999996 0.0 145
-146 0.0227971076965332 0.0199999999999996 0.0199999999999996 0.0 146
-147 0.0230598449707031 0.0300000000000011 0.0300000000000011 0.0 147
-148 0.0227980613708496 0.0200000000000031 0.0199999999999996 0.0 148
-149 0.0250101089477539 0.019999999999996 0.0199999999999996 0.0 149
-150 0.0231060981750488 0.0300000000000011 0.0300000000000011 0.0 150
-151 0.021589994430542 0.0200000000000031 0.0199999999999996 0.0 151
-152 0.0279331207275391 0.029999999999994 0.0299999999999976 0.0 152
-153 0.0230989456176758 0.0200000000000031 0.0200000000000031 0.0 153
-154 0.0220518112182617 0.019999999999996 0.019999999999996 0.0 154
-155 0.02158522605896 0.0200000000000031 0.0200000000000031 0.0 155
-156 0.0215890407562256 0.0300000000000011 0.0300000000000011 0.0 156
-157 0.021787166595459 0.019999999999996 0.019999999999996 0.0 157
-158 0.0218689441680908 0.0200000000000031 0.0200000000000031 0.0 158
-159 0.0797779560089111 0.0799999999999983 0.0799999999999983 0.0 159
-160 0.0232160091400146 0.0200000000000031 0.0200000000000031 0.0 160
-161 0.0228378772735596 0.019999999999996 0.019999999999996 0.0 161
-162 0.02286696434021 0.0300000000000011 0.0300000000000011 0.0 162
-163 0.0227479934692383 0.0200000000000031 0.0200000000000031 0.0 163
-164 0.0228869915008545 0.019999999999996 0.019999999999996 0.0 164
-165 0.0226659774780273 0.0300000000000011 0.0300000000000011 0.0 165
-166 0.022770881652832 0.0200000000000031 0.0200000000000031 0.0 166
-167 0.0226860046386719 0.019999999999996 0.019999999999996 0.0 167
-168 0.0242869853973389 0.0300000000000011 0.0300000000000011 0.0 168
-169 0.0219647884368896 0.0200000000000031 0.0200000000000031 0.0 169
-170 0.0227658748626709 0.019999999999996 0.019999999999996 0.0 170
-171 0.0217809677124023 0.0200000000000031 0.0200000000000031 0.0 171
-172 0.0216867923736572 0.019999999999996 0.019999999999996 0.0 172
-173 0.0220091342926025 0.0300000000000011 0.0300000000000011 0.0 173
-174 0.0218439102172852 0.0200000000000031 0.0200000000000031 0.0 174
-175 0.0223178863525391 0.019999999999996 0.019999999999996 0.0 175
-176 0.0216579437255859 0.0200000000000031 0.0200000000000031 0.0 176
-177 0.0791630744934082 0.0799999999999983 0.0799999999999983 0.0 177
-178 0.0234289169311523 0.0300000000000011 0.0300000000000011 0.0 178
-179 0.0239951610565186 0.019999999999996 0.019999999999996 0.0 179
-180 0.0231759548187256 0.0200000000000031 0.0200000000000031 0.0 180
-181 0.0228521823883057 0.0300000000000011 0.0300000000000011 0.0 181
-182 0.0234448909759521 0.019999999999996 0.019999999999996 0.0 182
-183 0.0231420993804932 0.0200000000000031 0.0200000000000031 0.0 183
-184 0.0229649543762207 0.0300000000000011 0.0300000000000011 0.0 184
-185 0.0216999053955078 0.019999999999996 0.019999999999996 0.0 185
-186 0.0214908123016357 0.0200000000000031 0.0200000000000031 0.0 186
-187 0.0216050148010254 0.019999999999996 0.019999999999996 0.0 187
-188 0.0253100395202637 0.0200000000000031 0.0200000000000031 0.0 188
-189 0.0231828689575195 0.0300000000000011 0.0300000000000011 0.0 189
-190 0.021651029586792 0.019999999999996 0.019999999999996 0.0 190
-191 0.0281798839569092 0.0300000000000011 0.0300000000000011 0.0 191
-192 0.0221288204193115 0.0200000000000031 0.0200000000000031 0.0 192
-193 0.0217571258544922 0.019999999999996 0.019999999999996 0.0 193
-194 0.0757858753204346 0.0800000000000054 0.0800000000000054 0.0 194
-195 0.0231471061706543 0.019999999999996 0.019999999999996 0.0 195
-196 0.0251290798187256 0.0300000000000011 0.0300000000000011 0.0 196
-197 0.0239238739013672 0.0200000000000031 0.0200000000000031 0.0 197
-198 0.0237748622894287 0.019999999999996 0.019999999999996 0.0 198
-199 0.0228419303894043 0.0300000000000011 0.0300000000000011 0.0 199
-200 0.0227909088134766 0.0200000000000031 0.0200000000000031 0.0 200
-201 0.0227510929107666 0.019999999999996 0.019999999999996 0.0 201
-202 0.0226459503173828 0.0200000000000031 0.0200000000000031 0.0 202
-203 0.0219879150390625 0.0300000000000011 0.0300000000000011 0.0 203
-204 0.0215039253234863 0.019999999999996 0.019999999999996 0.0 204
-205 0.021712064743042 0.0200000000000031 0.0200000000000031 0.0 205
-206 0.0217649936676025 0.019999999999996 0.019999999999996 0.0 206
-207 0.0244510173797607 0.0300000000000011 0.0300000000000011 0.0 207
-208 0.0221529006958008 0.0200000000000031 0.0200000000000031 0.0 208
-209 0.0231170654296875 0.019999999999996 0.019999999999996 0.0 209
-210 0.0216870307922363 0.0200000000000031 0.0200000000000031 0.0 210
-211 0.0216608047485352 0.019999999999996 0.019999999999996 0.0 211
-212 0.0771470069885254 0.0800000000000054 0.0800000000000054 0.0 212
-213 0.0229711532592773 0.019999999999996 0.019999999999996 0.0 213
-214 0.0230278968811035 0.0300000000000011 0.0300000000000011 0.0 214
-215 0.0230338573455811 0.019999999999996 0.019999999999996 0.0 215
-216 0.0260100364685059 0.0300000000000011 0.0300000000000011 0.0 216
-217 0.0238170623779297 0.0200000000000031 0.0200000000000031 0.0 217
-218 0.0228071212768555 0.019999999999996 0.019999999999996 0.0 218
-219 0.0227000713348389 0.0300000000000011 0.0300000000000011 0.0 219
-220 0.0220599174499512 0.0200000000000031 0.0200000000000031 0.0 220
-221 0.0216770172119141 0.019999999999996 0.019999999999996 0.0 221
-222 0.0224151611328125 0.0200000000000031 0.0200000000000031 0.0 222
-223 0.0217008590698242 0.0200000000000031 0.0200000000000031 0.0 223
-224 0.0216941833496094 0.029999999999994 0.029999999999994 0.0 224
-225 0.0216820240020752 0.0200000000000031 0.0200000000000031 0.0 225
-226 0.0217270851135254 0.019999999999996 0.019999999999996 0.0 226
-227 0.0246779918670654 0.0200000000000031 0.0200000000000031 0.0 227
-228 0.0233469009399414 0.0300000000000011 0.0300000000000011 0.0 228
-229 0.0217921733856201 0.019999999999996 0.019999999999996 0.0 229
-230 0.0832829475402832 0.0800000000000054 0.0800000000000054 0.0 230
-231 0.02298903465271 0.019999999999996 0.019999999999996 0.0 231
-232 0.0229618549346924 0.0300000000000011 0.0300000000000011 0.0 232
-233 0.0230050086975098 0.0200000000000031 0.0200000000000031 0.0 233
-234 0.022770881652832 0.019999999999996 0.019999999999996 0.0 234
-235 0.0257570743560791 0.0300000000000011 0.0300000000000011 0.0 235
-236 0.0234668254852295 0.0200000000000031 0.0200000000000031 0.0 236
-237 0.0224740505218506 0.029999999999994 0.029999999999994 0.0 237
-238 0.0215451717376709 0.0200000000000031 0.0200000000000031 0.0 238
-239 0.0215630531311035 0.0200000000000031 0.0200000000000031 0.0 239
-240 0.0216259956359863 0.019999999999996 0.019999999999996 0.0 240
-241 0.0215809345245361 0.0200000000000031 0.0200000000000031 0.0 241
-242 0.0216450691223145 0.019999999999996 0.019999999999996 0.0 242
-243 0.0215449333190918 0.0300000000000011 0.0300000000000011 0.0 243
-244 0.0216479301452637 0.0200000000000031 0.0200000000000031 0.0 244
-245 0.0218291282653809 0.019999999999996 0.019999999999996 0.0 245
-246 0.0227890014648438 0.0200000000000031 0.0200000000000031 0.0 246
-247 0.0793211460113525 0.0799999999999983 0.0799999999999983 0.0 247
-248 0.0230979919433594 0.0200000000000031 0.0200000000000031 0.0 248
-249 0.0230920314788818 0.029999999999994 0.029999999999994 0.0 249
-250 0.0235588550567627 0.0200000000000031 0.0200000000000031 0.0 250
-251 0.0228121280670166 0.0200000000000031 0.0200000000000031 0.0 251
-252 0.0227479934692383 0.029999999999994 0.029999999999994 0.0 252
-253 0.0227429866790771 0.0200000000000031 0.0200000000000031 0.0 253
-254 0.0227539539337158 0.019999999999996 0.019999999999996 0.0 254
-255 0.0255939960479736 0.0300000000000011 0.0300000000000011 0.0 255
-256 0.0225818157196045 0.0200000000000031 0.0200000000000031 0.0 256
-257 0.0216748714447021 0.019999999999996 0.019999999999996 0.0 257
-258 0.0216860771179199 0.0200000000000031 0.0200000000000031 0.0 258
-259 0.0217640399932861 0.0300000000000011 0.0300000000000011 0.0 259
-260 0.0218229293823242 0.019999999999996 0.019999999999996 0.0 260
-261 0.0217108726501465 0.0200000000000031 0.0200000000000031 0.0 261
-262 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 262
-263 0.0218439102172852 0.019999999999996 0.019999999999996 0.0 263
-264 0.0216600894927979 0.0200000000000031 0.0200000000000031 0.0 264
-265 0.0821051597595215 0.0899999999999963 0.0899999999999963 0.0 265
-266 0.0255589485168457 0.0200000000000031 0.0200000000000031 0.0 266
-267 0.0274901390075684 0.0300000000000011 0.0300000000000011 0.0 267
-268 0.0230200290679932 0.019999999999996 0.019999999999996 0.0 268
-269 0.0227861404418945 0.0200000000000031 0.0200000000000031 0.0 269
-270 0.0227971076965332 0.0300000000000011 0.0300000000000011 0.0 270
-271 0.0227358341217041 0.019999999999996 0.019999999999996 0.0 271
-272 0.0242559909820557 0.0200000000000031 0.0200000000000031 0.0 272
-273 0.0217318534851074 0.029999999999994 0.029999999999994 0.0 273
-274 0.0250978469848633 0.0200000000000031 0.0200000000000031 0.0 274
-275 0.0236959457397461 0.0200000000000031 0.0200000000000031 0.0 275
-276 0.0217390060424805 0.029999999999994 0.029999999999994 0.0 276
-277 0.0216028690338135 0.0200000000000031 0.0200000000000031 0.0 277
-278 0.0216250419616699 0.0200000000000031 0.0200000000000031 0.0 278
-279 0.0216012001037598 0.019999999999996 0.019999999999996 0.0 279
-280 0.0216450691223145 0.0200000000000031 0.0200000000000031 0.0 280
-281 0.0217640399932861 0.019999999999996 0.019999999999996 0.0 281
-282 0.076016902923584 0.0799999999999983 0.0799999999999983 0.0 282
-283 0.0259561538696289 0.0300000000000011 0.0300000000000011 0.0 283
-284 0.024043083190918 0.0200000000000031 0.0200000000000031 0.0 284
-285 0.0230240821838379 0.019999999999996 0.019999999999996 0.0 285
-286 0.0229220390319824 0.0300000000000011 0.0300000000000011 0.0 286
-287 0.0229079723358154 0.0200000000000031 0.0200000000000031 0.0 287
-288 0.0228331089019775 0.019999999999996 0.019999999999996 0.0 288
-289 0.0232009887695312 0.0300000000000011 0.0300000000000011 0.0 289
-290 0.0225679874420166 0.0200000000000031 0.0200000000000031 0.0 290
-291 0.021859884262085 0.019999999999996 0.019999999999996 0.0 291
-292 0.0215480327606201 0.0200000000000031 0.0200000000000031 0.0 292
-293 0.0216219425201416 0.019999999999996 0.019999999999996 0.0 293
-294 0.0247988700866699 0.0300000000000011 0.0300000000000011 0.0 294
-295 0.0220661163330078 0.0200000000000031 0.0200000000000031 0.0 295
-296 0.0218551158905029 0.019999999999996 0.019999999999996 0.0 296
-297 0.0216910839080811 0.0200000000000031 0.0200000000000031 0.0 297
-298 0.0218009948730469 0.0300000000000011 0.0300000000000011 0.0 298
-299 0.0217809677124023 0.019999999999996 0.019999999999996 0.0 299
-300 0.0773510932922363 0.0800000000000054 0.0800000000000054 0.0 300
-301 0.0230739116668701 0.019999999999996 0.019999999999996 0.0 301
-302 0.0251951217651367 0.0200000000000031 0.0200000000000031 0.0 302
-303 0.0236630439758301 0.0300000000000011 0.0300000000000011 0.0 303
-304 0.0231490135192871 0.019999999999996 0.019999999999996 0.0 304
-305 0.029649019241333 0.0300000000000011 0.0300000000000011 0.0 305
-306 0.0232720375061035 0.0200000000000031 0.0200000000000031 0.0 306
-307 0.0227010250091553 0.029999999999994 0.029999999999994 0.0 307
-308 0.0219080448150635 0.0200000000000031 0.0200000000000031 0.0 308
-309 0.0215001106262207 0.0200000000000031 0.0200000000000031 0.0 309
-310 0.0215349197387695 0.019999999999996 0.019999999999996 0.0 310
-311 0.0216870307922363 0.0200000000000031 0.0200000000000031 0.0 311
-312 0.0215351581573486 0.019999999999996 0.019999999999996 0.0 312
-313 0.0247399806976318 0.0300000000000011 0.0300000000000011 0.0 313
-314 0.0232751369476318 0.0200000000000031 0.0200000000000031 0.0 314
-315 0.0219449996948242 0.019999999999996 0.019999999999996 0.0 315
-316 0.0216867923736572 0.0300000000000011 0.0300000000000011 0.0 316
-317 0.0756809711456299 0.0700000000000003 0.0700000000000003 0.0 317
-318 0.0230629444122314 0.0300000000000011 0.0300000000000011 0.0 318
-319 0.0229449272155762 0.019999999999996 0.019999999999996 0.0 319
-320 0.0231809616088867 0.0200000000000031 0.0200000000000031 0.0 320
-321 0.0229148864746094 0.019999999999996 0.019999999999996 0.0 321
-322 0.0256710052490234 0.0300000000000011 0.0300000000000011 0.0 322
-323 0.0237009525299072 0.0200000000000031 0.0200000000000031 0.0 323
-324 0.0227048397064209 0.0300000000000011 0.0300000000000011 0.0 324
-325 0.0226731300354004 0.019999999999996 0.019999999999996 0.0 325
-326 0.0221679210662842 0.0200000000000031 0.0200000000000031 0.0 326
-327 0.0216591358184814 0.019999999999996 0.019999999999996 0.0 327
-328 0.0220868587493896 0.0300000000000011 0.0300000000000011 0.0 328
-329 0.0215578079223633 0.0200000000000031 0.0200000000000031 0.0 329
-330 0.0216000080108643 0.019999999999996 0.019999999999996 0.0 330
-331 0.0216810703277588 0.0200000000000031 0.0200000000000031 0.0 331
-332 0.0217440128326416 0.019999999999996 0.019999999999996 0.0 332
-333 0.024817943572998 0.0300000000000011 0.0300000000000011 0.0 333
-334 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 334
-335 0.0767669677734375 0.0799999999999983 0.0799999999999983 0.0 335
-336 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 336
-337 0.0237720012664795 0.019999999999996 0.019999999999996 0.0 337
-338 0.0229918956756592 0.0300000000000011 0.0300000000000011 0.0 338
-339 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 339
-340 0.0227911472320557 0.019999999999996 0.019999999999996 0.0 340
-341 0.0249691009521484 0.0300000000000011 0.0300000000000011 0.0 341
-342 0.0228381156921387 0.0200000000000031 0.0200000000000031 0.0 342
-343 0.0229289531707764 0.019999999999996 0.019999999999996 0.0 343
-344 0.028364896774292 0.0300000000000011 0.0300000000000011 0.0 344
-345 0.0216519832611084 0.0200000000000031 0.0200000000000031 0.0 345
-346 0.0216679573059082 0.029999999999994 0.029999999999994 0.0 346
-347 0.0215489864349365 0.0200000000000031 0.0200000000000031 0.0 347
-348 0.0216460227966309 0.0200000000000031 0.0200000000000031 0.0 348
-349 0.0217490196228027 0.019999999999996 0.019999999999996 0.0 349
-350 0.0217440128326416 0.0200000000000031 0.0200000000000031 0.0 350
-351 0.0216310024261475 0.019999999999996 0.019999999999996 0.0 351
-352 0.0248680114746094 0.0300000000000011 0.0300000000000011 0.0 352
-353 0.0779280662536621 0.0799999999999983 0.0799999999999983 0.0 353
-354 0.0229990482330322 0.0200000000000031 0.0200000000000031 0.0 354
-355 0.02298903465271 0.019999999999996 0.019999999999996 0.0 355
-356 0.0229768753051758 0.0300000000000011 0.0300000000000011 0.0 356
-357 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 357
-358 0.0227739810943604 0.019999999999996 0.019999999999996 0.0 358
-359 0.0229020118713379 0.0200000000000031 0.0200000000000031 0.0 359
-360 0.0220818519592285 0.0300000000000011 0.0300000000000011 0.0 360
-361 0.024421215057373 0.019999999999996 0.019999999999996 0.0 361
-362 0.0219769477844238 0.0200000000000031 0.0200000000000031 0.0 362
-363 0.0216801166534424 0.0300000000000011 0.0300000000000011 0.0 363
-364 0.0218110084533691 0.019999999999996 0.019999999999996 0.0 364
-365 0.0219409465789795 0.0200000000000031 0.0200000000000031 0.0 365
-366 0.0218820571899414 0.019999999999996 0.019999999999996 0.0 366
-367 0.0223009586334229 0.0200000000000031 0.0200000000000031 0.0 367
-368 0.0218269824981689 0.0300000000000011 0.0300000000000011 0.0 368
-369 0.0217530727386475 0.019999999999996 0.019999999999996 0.0 369
-370 0.0778021812438965 0.0700000000000003 0.0700000000000003 0.0 370
-371 0.0233700275421143 0.0300000000000011 0.0300000000000011 0.0 371
-372 0.0233359336853027 0.0200000000000031 0.0200000000000031 0.0 372
-373 0.0229201316833496 0.019999999999996 0.019999999999996 0.0 373
-374 0.0229110717773438 0.0300000000000011 0.0300000000000011 0.0 374
-375 0.0227591991424561 0.0200000000000031 0.0200000000000031 0.0 375
-376 0.023568868637085 0.019999999999996 0.019999999999996 0.0 376
-377 0.022733211517334 0.0300000000000011 0.0300000000000011 0.0 377
-378 0.0221920013427734 0.0200000000000031 0.0200000000000031 0.0 378
-379 0.0215809345245361 0.019999999999996 0.019999999999996 0.0 379
-380 0.0231049060821533 0.0200000000000031 0.0200000000000031 0.0 380
-381 0.0227119922637939 0.0300000000000011 0.0300000000000011 0.0 381
-382 0.0230410099029541 0.019999999999996 0.019999999999996 0.0 382
-383 0.0276191234588623 0.0300000000000011 0.0300000000000011 0.0 383
-384 0.0234389305114746 0.0200000000000031 0.0200000000000031 0.0 384
-385 0.0217380523681641 0.019999999999996 0.019999999999996 0.0 385
-386 0.0216379165649414 0.0200000000000031 0.0200000000000031 0.0 386
-387 0.0217010974884033 0.0300000000000011 0.0300000000000011 0.0 387
-388 0.0771059989929199 0.0699999999999932 0.0699999999999932 0.0 388
-389 0.0259981155395508 0.0300000000000011 0.0300000000000011 0.0 389
-390 0.0245940685272217 0.0200000000000031 0.0200000000000031 0.0 390
-391 0.0229830741882324 0.0300000000000011 0.0300000000000011 0.0 391
-392 0.0227859020233154 0.019999999999996 0.019999999999996 0.0 392
-393 0.0226709842681885 0.0200000000000031 0.0200000000000031 0.0 393
-394 0.0227479934692383 0.0300000000000011 0.0300000000000011 0.0 394
-395 0.0223689079284668 0.019999999999996 0.019999999999996 0.0 395
-396 0.0215182304382324 0.0200000000000031 0.0200000000000031 0.0 396
-397 0.0214920043945312 0.019999999999996 0.019999999999996 0.0 397
-398 0.0217499732971191 0.0200000000000031 0.0200000000000031 0.0 398
-399 0.021583080291748 0.019999999999996 0.019999999999996 0.0 399
-400 0.0245871543884277 0.0300000000000011 0.0300000000000011 0.0 400
-401 0.0234861373901367 0.0200000000000031 0.0200000000000031 0.0 401
-402 0.0216600894927979 0.019999999999996 0.019999999999996 0.0 402
-403 0.0216600894927979 0.0300000000000011 0.0300000000000011 0.0 403
-404 0.021885871887207 0.0200000000000031 0.0200000000000031 0.0 404
-405 0.0772140026092529 0.0799999999999983 0.0799999999999983 0.0 405
-406 0.0230650901794434 0.0200000000000031 0.0200000000000031 0.0 406
-407 0.0229761600494385 0.019999999999996 0.019999999999996 0.0 407
-408 0.0251660346984863 0.0300000000000011 0.0300000000000011 0.0 408
-409 0.0232548713684082 0.0200000000000031 0.0200000000000031 0.0 409
-410 0.0238220691680908 0.019999999999996 0.019999999999996 0.0 410
-411 0.0227861404418945 0.0300000000000011 0.0300000000000011 0.0 411
-412 0.0226359367370605 0.0200000000000031 0.0200000000000031 0.0 412
-413 0.0224370956420898 0.019999999999996 0.019999999999996 0.0 413
-414 0.0216140747070312 0.0200000000000031 0.0200000000000031 0.0 414
-415 0.0223848819732666 0.0300000000000011 0.0300000000000011 0.0 415
-416 0.0215442180633545 0.019999999999996 0.019999999999996 0.0 416
-417 0.0215690135955811 0.0200000000000031 0.0200000000000031 0.0 417
-418 0.0216190814971924 0.019999999999996 0.019999999999996 0.0 418
-419 0.0228719711303711 0.0200000000000031 0.0200000000000031 0.0 419
-420 0.0226399898529053 0.0300000000000011 0.0300000000000011 0.0 420
-421 0.0236082077026367 0.019999999999996 0.019999999999996 0.0 421
-422 0.0264570713043213 0.0300000000000011 0.0300000000000011 0.0 422
-423 0.0789790153503418 0.0799999999999983 0.0799999999999983 0.0 423
-424 0.0229339599609375 0.0200000000000031 0.0200000000000031 0.0 424
-425 0.0229668617248535 0.019999999999996 0.019999999999996 0.0 425
-426 0.02298903465271 0.0200000000000031 0.0200000000000031 0.0 426
-427 0.0229198932647705 0.0300000000000011 0.0300000000000011 0.0 427
-428 0.0257198810577393 0.019999999999996 0.019999999999996 0.0 428
-429 0.0243279933929443 0.0300000000000011 0.0300000000000011 0.0 429
-430 0.022507905960083 0.0200000000000031 0.0200000000000031 0.0 430
-431 0.0216341018676758 0.019999999999996 0.019999999999996 0.0 431
-432 0.0214908123016357 0.0200000000000031 0.0200000000000031 0.0 432
-433 0.0215690135955811 0.0300000000000011 0.0300000000000011 0.0 433
-434 0.0216338634490967 0.019999999999996 0.019999999999996 0.0 434
-435 0.0216329097747803 0.0200000000000031 0.0200000000000031 0.0 435
-436 0.0217580795288086 0.019999999999996 0.019999999999996 0.0 436
-437 0.0218169689178467 0.0200000000000031 0.0200000000000031 0.0 437
-438 0.0216329097747803 0.019999999999996 0.019999999999996 0.0 438
-439 0.0245261192321777 0.0300000000000011 0.0300000000000011 0.0 439
-440 0.0769329071044922 0.0700000000000003 0.0700000000000003 0.0 440
-441 0.0231759548187256 0.0300000000000011 0.0300000000000011 0.0 441
-442 0.0230391025543213 0.0200000000000031 0.0200000000000031 0.0 442
-443 0.0233399868011475 0.019999999999996 0.019999999999996 0.0 443
-444 0.0227611064910889 0.0300000000000011 0.0300000000000011 0.0 444
-445 0.0228729248046875 0.0200000000000031 0.0200000000000031 0.0 445
-446 0.0227501392364502 0.019999999999996 0.019999999999996 0.0 446
-447 0.0253760814666748 0.0300000000000011 0.0300000000000011 0.0 447
-448 0.0228900909423828 0.0200000000000031 0.0200000000000031 0.0 448
-449 0.0227060317993164 0.019999999999996 0.019999999999996 0.0 449
-450 0.0215671062469482 0.0300000000000011 0.0300000000000011 0.0 450
-451 0.0215458869934082 0.0200000000000031 0.0200000000000031 0.0 451
-452 0.0216641426086426 0.019999999999996 0.019999999999996 0.0 452
-453 0.0215919017791748 0.0200000000000031 0.0200000000000031 0.0 453
-454 0.022503137588501 0.019999999999996 0.019999999999996 0.0 454
-455 0.0216779708862305 0.0300000000000011 0.0300000000000011 0.0 455
-456 0.0216538906097412 0.0200000000000031 0.0200000000000031 0.0 456
-457 0.0217761993408203 0.019999999999996 0.019999999999996 0.0 457
-458 0.0798358917236328 0.0799999999999983 0.0799999999999983 0.0 458
-459 0.0303719043731689 0.0300000000000011 0.0300000000000011 0.0 459
-460 0.0229458808898926 0.0200000000000031 0.0200000000000031 0.0 460
-461 0.0229299068450928 0.019999999999996 0.019999999999996 0.0 461
-462 0.0227961540222168 0.019999999999996 0.019999999999996 0.0 462
-463 0.0226409435272217 0.0200000000000031 0.0200000000000031 0.0 463
-464 0.0226771831512451 0.019999999999996 0.019999999999996 0.0 464
-465 0.0224730968475342 0.0300000000000011 0.0300000000000011 0.0 465
-466 0.0218050479888916 0.0200000000000031 0.0200000000000031 0.0 466
-467 0.025601863861084 0.019999999999996 0.019999999999996 0.0 467
-468 0.0238199234008789 0.0300000000000011 0.0300000000000011 0.0 468
-469 0.0232160091400146 0.0200000000000031 0.0200000000000031 0.0 469
-470 0.0216109752655029 0.019999999999996 0.019999999999996 0.0 470
-471 0.0216319561004639 0.0200000000000031 0.0200000000000031 0.0 471
-472 0.0216560363769531 0.019999999999996 0.019999999999996 0.0 472
-473 0.021658182144165 0.0300000000000011 0.0300000000000011 0.0 473
-474 0.0217010974884033 0.0200000000000031 0.0200000000000031 0.0 474
-475 0.0779910087585449 0.0799999999999983 0.0799999999999983 0.0 475
-476 0.0244100093841553 0.0200000000000031 0.0200000000000031 0.0 476
-477 0.026054859161377 0.029999999999994 0.029999999999994 0.0 477
-478 0.022968053817749 0.0200000000000031 0.0200000000000031 0.0 478
-479 0.0229709148406982 0.0200000000000031 0.0200000000000031 0.0 479
-480 0.0229671001434326 0.019999999999996 0.019999999999996 0.0 480
-481 0.0232329368591309 0.0300000000000011 0.0300000000000011 0.0 481
-482 0.0227680206298828 0.0200000000000031 0.0200000000000031 0.0 482
-483 0.0224251747131348 0.019999999999996 0.019999999999996 0.0 483
-484 0.021751880645752 0.0300000000000011 0.0300000000000011 0.0 484
-485 0.0215151309967041 0.019999999999996 0.019999999999996 0.0 485
-486 0.0246729850769043 0.0200000000000031 0.0200000000000031 0.0 486
-487 0.0227639675140381 0.0200000000000031 0.0200000000000031 0.0 487
-488 0.0219759941101074 0.029999999999994 0.029999999999994 0.0 488
-489 0.0217058658599854 0.0200000000000031 0.0200000000000031 0.0 489
-490 0.0216960906982422 0.0200000000000031 0.0200000000000031 0.0 490
-491 0.0218369960784912 0.019999999999996 0.019999999999996 0.0 491
-492 0.0217111110687256 0.0200000000000031 0.0200000000000031 0.0 492
-493 0.078171968460083 0.0799999999999983 0.0799999999999983 0.0 493
-494 0.0229799747467041 0.019999999999996 0.019999999999996 0.0 494
-495 0.0272798538208008 0.0300000000000011 0.0300000000000011 0.0 495
-496 0.0244588851928711 0.0200000000000031 0.0200000000000031 0.0 496
-497 0.028217077255249 0.0300000000000011 0.0300000000000011 0.0 497
-498 0.0241749286651611 0.0300000000000011 0.0300000000000011 0.0 498
-499 0.0227570533752441 0.019999999999996 0.019999999999996 0.0 499
-500 0.022475004196167 0.0200000000000031 0.0200000000000031 0.0 500
-501 0.021665096282959 0.019999999999996 0.019999999999996 0.0 501
-502 0.021481990814209 0.0300000000000011 0.0300000000000011 0.0 502
-503 0.0216250419616699 0.0200000000000031 0.0200000000000031 0.0 503
-504 0.0215671062469482 0.019999999999996 0.019999999999996 0.0 504
-505 0.0225341320037842 0.0200000000000031 0.0200000000000031 0.0 505
-506 0.0243070125579834 0.0300000000000011 0.0300000000000011 0.0 506
-507 0.0236639976501465 0.019999999999996 0.019999999999996 0.0 507
-508 0.021744966506958 0.0200000000000031 0.0200000000000031 0.0 508
-509 0.0216488838195801 0.019999999999996 0.019999999999996 0.0 509
-510 0.0759198665618896 0.0800000000000054 0.0800000000000054 0.0 510
-511 0.0230319499969482 0.019999999999996 0.019999999999996 0.0 511
-512 0.0232639312744141 0.0300000000000011 0.0300000000000011 0.0 512
-513 0.022974967956543 0.019999999999996 0.019999999999996 0.0 513
-514 0.0257279872894287 0.0200000000000031 0.0200000000000031 0.0 514
-515 0.0243010520935059 0.0300000000000011 0.0300000000000011 0.0 515
-516 0.0226881504058838 0.019999999999996 0.019999999999996 0.0 516
-517 0.0226349830627441 0.0200000000000031 0.0200000000000031 0.0 517
-518 0.0224928855895996 0.0300000000000011 0.0300000000000011 0.0 518
-519 0.0218918323516846 0.019999999999996 0.019999999999996 0.0 519
-520 0.0220029354095459 0.0200000000000031 0.0200000000000031 0.0 520
-521 0.0215179920196533 0.0200000000000031 0.0200000000000031 0.0 521
-522 0.0215981006622314 0.019999999999996 0.019999999999996 0.0 522
-523 0.0216679573059082 0.0300000000000011 0.0300000000000011 0.0 523
-524 0.0216460227966309 0.019999999999996 0.019999999999996 0.0 524
-525 0.0247371196746826 0.0200000000000031 0.0200000000000031 0.0 525
-526 0.0231599807739258 0.0300000000000011 0.0300000000000011 0.0 526
-527 0.021859884262085 0.019999999999996 0.019999999999996 0.0 527
-528 0.0768899917602539 0.0700000000000003 0.0700000000000003 0.0 528
-529 0.0238020420074463 0.0300000000000011 0.0300000000000011 0.0 529
-530 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 530
-531 0.0229158401489258 0.019999999999996 0.019999999999996 0.0 531
-532 0.0228259563446045 0.0300000000000011 0.0300000000000011 0.0 532
-533 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 533
-534 0.0252690315246582 0.0300000000000011 0.0300000000000011 0.0 534
-535 0.0236430168151855 0.019999999999996 0.019999999999996 0.0 535
-536 0.029339075088501 0.0300000000000011 0.0300000000000011 0.0 536
-537 0.0215559005737305 0.0200000000000031 0.0200000000000031 0.0 537
-538 0.0222070217132568 0.019999999999996 0.019999999999996 0.0 538
-539 0.0215811729431152 0.0200000000000031 0.0200000000000031 0.0 539
-540 0.0215599536895752 0.0300000000000011 0.0300000000000011 0.0 540
-541 0.0217399597167969 0.019999999999996 0.019999999999996 0.0 541
-542 0.0217771530151367 0.0200000000000031 0.0200000000000031 0.0 542
-543 0.0216219425201416 0.019999999999996 0.019999999999996 0.0 543
-544 0.0232682228088379 0.0200000000000031 0.0200000000000031 0.0 544
-545 0.0793290138244629 0.0799999999999983 0.0799999999999983 0.0 545
-546 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 546
-547 0.022838830947876 0.019999999999996 0.019999999999996 0.0 547
-548 0.0229969024658203 0.0200000000000031 0.0200000000000031 0.0 548
-549 0.0229189395904541 0.0300000000000011 0.0300000000000011 0.0 549
-550 0.0227901935577393 0.019999999999996 0.019999999999996 0.0 550
-551 0.0229239463806152 0.0200000000000031 0.0200000000000031 0.0 551
-552 0.022730827331543 0.019999999999996 0.019999999999996 0.0 552
-553 0.0253369808197021 0.0300000000000011 0.0300000000000011 0.0 553
-554 0.0220980644226074 0.0200000000000031 0.0200000000000031 0.0 554
-555 0.0214731693267822 0.019999999999996 0.019999999999996 0.0 555
-556 0.0215020179748535 0.0300000000000011 0.0300000000000011 0.0 556
-557 0.0217249393463135 0.0200000000000031 0.0200000000000031 0.0 557
-558 0.0217740535736084 0.019999999999996 0.019999999999996 0.0 558
-559 0.022136926651001 0.0200000000000031 0.0200000000000031 0.0 559
-560 0.021636962890625 0.0200000000000031 0.0200000000000031 0.0 560
-561 0.0216689109802246 0.019999999999996 0.019999999999996 0.0 561
-562 0.0218231678009033 0.0300000000000011 0.0300000000000011 0.0 562
-563 0.0795009136199951 0.0799999999999983 0.0799999999999983 0.0 563
-564 0.0232501029968262 0.0200000000000031 0.0200000000000031 0.0 564
-565 0.0230040550231934 0.019999999999996 0.019999999999996 0.0 565
-566 0.0230789184570312 0.0300000000000011 0.0300000000000011 0.0 566
-567 0.0227739810943604 0.0200000000000031 0.0200000000000031 0.0 567
-568 0.0235750675201416 0.019999999999996 0.019999999999996 0.0 568
-569 0.0226988792419434 0.0200000000000031 0.0200000000000031 0.0 569
-570 0.0223028659820557 0.0300000000000011 0.0300000000000011 0.0 570
-571 0.0216829776763916 0.019999999999996 0.019999999999996 0.0 571
-572 0.0214540958404541 0.0200000000000031 0.0200000000000031 0.0 572
-573 0.0238778591156006 0.019999999999996 0.019999999999996 0.0 573
-574 0.0230958461761475 0.0300000000000011 0.0300000000000011 0.0 574
-575 0.0280261039733887 0.0300000000000011 0.0300000000000011 0.0 575
-576 0.0220839977264404 0.0200000000000031 0.0200000000000031 0.0 576
-577 0.0217299461364746 0.019999999999996 0.019999999999996 0.0 577
-578 0.0215981006622314 0.0200000000000031 0.0200000000000031 0.0 578
-579 0.0216739177703857 0.019999999999996 0.019999999999996 0.0 579
-580 0.0760340690612793 0.0799999999999983 0.0799999999999983 0.0 580
-581 0.0261681079864502 0.0200000000000031 0.0200000000000031 0.0 581
-582 0.0245881080627441 0.0300000000000011 0.0300000000000011 0.0 582
-583 0.0231649875640869 0.019999999999996 0.019999999999996 0.0 583
-584 0.0228891372680664 0.0300000000000011 0.0300000000000011 0.0 584
-585 0.0227940082550049 0.0200000000000031 0.0200000000000031 0.0 585
-586 0.0227079391479492 0.019999999999996 0.019999999999996 0.0 586
-587 0.0227351188659668 0.0200000000000031 0.0200000000000031 0.0 587
-588 0.0223979949951172 0.0300000000000011 0.0300000000000011 0.0 588
-589 0.0217239856719971 0.019999999999996 0.019999999999996 0.0 589
-590 0.0216400623321533 0.0200000000000031 0.0200000000000031 0.0 590
-591 0.0222110748291016 0.019999999999996 0.019999999999996 0.0 591
-592 0.0244839191436768 0.0300000000000011 0.0300000000000011 0.0 592
-593 0.0231800079345703 0.0200000000000031 0.0200000000000031 0.0 593
-594 0.0216829776763916 0.019999999999996 0.019999999999996 0.0 594
-595 0.0216670036315918 0.0200000000000031 0.0200000000000031 0.0 595
-596 0.0216989517211914 0.0200000000000031 0.0200000000000031 0.0 596
-597 0.0218870639801025 0.039999999999992 0.029999999999994 0.01 597
-598 0.077578067779541 0.0700000000000003 0.0700000000000003 0.0 598
-599 0.0230538845062256 0.0300000000000011 0.0300000000000011 0.0 599
-600 0.0230109691619873 0.0200000000000031 0.0200000000000031 0.0 600
-601 0.0260770320892334 0.0300000000000011 0.0300000000000011 0.0 601
-602 0.0238099098205566 0.019999999999996 0.019999999999996 0.0 602
-603 0.0228049755096436 0.0200000000000031 0.0200000000000031 0.0 603
-604 0.0226948261260986 0.019999999999996 0.019999999999996 0.0 604
-605 0.0223379135131836 0.0300000000000011 0.0300000000000011 0.0 605
-606 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 606
-607 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 607
-608 0.0216529369354248 0.0200000000000031 0.0200000000000031 0.0 608
-609 0.0217139720916748 0.019999999999996 0.019999999999996 0.0 609
-610 0.0218150615692139 0.0300000000000011 0.0300000000000011 0.0 610
-611 0.0217039585113525 0.0200000000000031 0.0200000000000031 0.0 611
-612 0.0246798992156982 0.019999999999996 0.019999999999996 0.0 612
-613 0.0233089923858643 0.0300000000000011 0.0300000000000011 0.0 613
-614 0.0297579765319824 0.0300000000000011 0.0300000000000011 0.0 614
-615 0.0762190818786621 0.0700000000000003 0.0700000000000003 0.0 615
-616 0.0230169296264648 0.0200000000000031 0.0200000000000031 0.0 616
-617 0.0229558944702148 0.029999999999994 0.029999999999994 0.0 617
-618 0.0230798721313477 0.0200000000000031 0.0200000000000031 0.0 618
-619 0.0230178833007812 0.019999999999996 0.019999999999996 0.0 619
-620 0.0257527828216553 0.0300000000000011 0.0300000000000011 0.0 620
-621 0.0235459804534912 0.0200000000000031 0.0200000000000031 0.0 621
-622 0.0228161811828613 0.0300000000000011 0.0300000000000011 0.0 622
-623 0.022197961807251 0.019999999999996 0.019999999999996 0.0 623
-624 0.021589994430542 0.0200000000000031 0.0200000000000031 0.0 624
-625 0.0214920043945312 0.019999999999996 0.019999999999996 0.0 625
-626 0.0215818881988525 0.0200000000000031 0.0200000000000031 0.0 626
-627 0.021651029586792 0.0300000000000011 0.0300000000000011 0.0 627
-628 0.0215868949890137 0.019999999999996 0.019999999999996 0.0 628
-629 0.0218029022216797 0.0200000000000031 0.0200000000000031 0.0 629
-630 0.0216500759124756 0.019999999999996 0.019999999999996 0.0 630
-631 0.0244319438934326 0.0200000000000031 0.0200000000000031 0.0 631
-632 0.0230758190155029 0.0300000000000011 0.0300000000000011 0.0 632
-633 0.077272891998291 0.0799999999999983 0.0799999999999983 0.0 633
-634 0.0236070156097412 0.0200000000000031 0.0200000000000031 0.0 634
-635 0.0229601860046387 0.019999999999996 0.019999999999996 0.0 635
-636 0.0228729248046875 0.0200000000000031 0.0200000000000031 0.0 636
-637 0.0228011608123779 0.0300000000000011 0.0300000000000011 0.0 637
-638 0.0227499008178711 0.019999999999996 0.019999999999996 0.0 638
-639 0.0244989395141602 0.0200000000000031 0.0200000000000031 0.0 639
-640 0.0235378742218018 0.0200000000000031 0.0200000000000031 0.0 640
-641 0.0223779678344727 0.019999999999996 0.019999999999996 0.0 641
-642 0.0215990543365479 0.0200000000000031 0.0200000000000031 0.0 642
-643 0.0215990543365479 0.019999999999996 0.019999999999996 0.0 643
-644 0.0219650268554688 0.0300000000000011 0.0300000000000011 0.0 644
-645 0.0215990543365479 0.0200000000000031 0.0200000000000031 0.0 645
-646 0.0224740505218506 0.019999999999996 0.019999999999996 0.0 646
-647 0.0216758251190186 0.0200000000000031 0.0200000000000031 0.0 647
-648 0.0216619968414307 0.019999999999996 0.019999999999996 0.0 648
-649 0.0221309661865234 0.0300000000000011 0.0300000000000011 0.0 649
-650 0.0787041187286377 0.0700000000000003 0.0700000000000003 0.0 650
-651 0.0299739837646484 0.0300000000000011 0.0300000000000011 0.0 651
-652 0.0230100154876709 0.0200000000000031 0.0200000000000031 0.0 652
-653 0.0230507850646973 0.019999999999996 0.019999999999996 0.0 653
-654 0.0228569507598877 0.0200000000000031 0.0200000000000031 0.0 654
-655 0.0227470397949219 0.0300000000000011 0.0300000000000011 0.0 655
-656 0.0226500034332275 0.019999999999996 0.019999999999996 0.0 656
-657 0.0228099822998047 0.0200000000000031 0.0200000000000031 0.0 657
-658 0.0222539901733398 0.019999999999996 0.019999999999996 0.0 658
-659 0.0245277881622314 0.0300000000000011 0.0300000000000011 0.0 659
-660 0.0224230289459229 0.0200000000000031 0.0200000000000031 0.0 660
-661 0.0216460227966309 0.019999999999996 0.019999999999996 0.0 661
-662 0.0215950012207031 0.0300000000000011 0.0300000000000011 0.0 662
-663 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 663
-664 0.0216140747070312 0.019999999999996 0.019999999999996 0.0 664
-665 0.021726131439209 0.0200000000000031 0.0200000000000031 0.0 665
-666 0.0217559337615967 0.0200000000000031 0.0200000000000031 0.0 666
-667 0.0218238830566406 0.019999999999996 0.019999999999996 0.0 667
-668 0.0802149772644043 0.0799999999999983 0.0799999999999983 0.0 668
-669 0.0245440006256104 0.0300000000000011 0.0300000000000011 0.0 669
-670 0.0230040550231934 0.0200000000000031 0.0200000000000031 0.0 670
-671 0.02288818359375 0.019999999999996 0.019999999999996 0.0 671
-672 0.0228390693664551 0.0300000000000011 0.0300000000000011 0.0 672
-673 0.023313045501709 0.0200000000000031 0.0200000000000031 0.0 673
-674 0.0226609706878662 0.019999999999996 0.019999999999996 0.0 674
-675 0.0220029354095459 0.0300000000000011 0.0300000000000011 0.0 675
-676 0.0215702056884766 0.0200000000000031 0.0200000000000031 0.0 676
-677 0.0216479301452637 0.019999999999996 0.019999999999996 0.0 677
-678 0.0215539932250977 0.0200000000000031 0.0200000000000031 0.0 678
-679 0.0247859954833984 0.0300000000000011 0.0300000000000011 0.0 679
-680 0.0219168663024902 0.019999999999996 0.019999999999996 0.0 680
-681 0.0216579437255859 0.0200000000000031 0.0200000000000031 0.0 681
-682 0.0216360092163086 0.019999999999996 0.019999999999996 0.0 682
-683 0.0217740535736084 0.0200000000000031 0.0200000000000031 0.0 683
-684 0.0216720104217529 0.019999999999996 0.019999999999996 0.0 684
-685 0.076854944229126 0.0800000000000054 0.0800000000000054 0.0 685
-686 0.0229959487915039 0.019999999999996 0.019999999999996 0.0 686
-687 0.0258049964904785 0.0300000000000011 0.0300000000000011 0.0 687
-688 0.0232279300689697 0.0200000000000031 0.0200000000000031 0.0 688
-689 0.0251309871673584 0.029999999999994 0.029999999999994 0.0 689
-690 0.0279409885406494 0.0300000000000011 0.0300000000000011 0.0 690
-691 0.0227260589599609 0.0200000000000031 0.0200000000000031 0.0 691
-692 0.0227479934692383 0.019999999999996 0.019999999999996 0.0 692
-693 0.0219731330871582 0.0200000000000031 0.0200000000000031 0.0 693
-694 0.0215420722961426 0.0300000000000011 0.0300000000000011 0.0 694
-695 0.0214939117431641 0.019999999999996 0.019999999999996 0.0 695
-696 0.0216901302337646 0.0200000000000031 0.0200000000000031 0.0 696
-697 0.0216901302337646 0.019999999999996 0.019999999999996 0.0 697
-698 0.0246269702911377 0.0200000000000031 0.0200000000000031 0.0 698
-699 0.0231730937957764 0.0300000000000011 0.0300000000000011 0.0 699
-700 0.021737813949585 0.019999999999996 0.019999999999996 0.0 700
-701 0.0217559337615967 0.0200000000000031 0.0200000000000031 0.0 701
-702 0.0756359100341797 0.0799999999999983 0.0799999999999983 0.0 702
-703 0.0232179164886475 0.0200000000000031 0.0200000000000031 0.0 703
-704 0.0229458808898926 0.019999999999996 0.019999999999996 0.0 704
-705 0.0230169296264648 0.0300000000000011 0.0300000000000011 0.0 705
-706 0.0228660106658936 0.0200000000000031 0.0200000000000031 0.0 706
-707 0.0257608890533447 0.0300000000000011 0.0300000000000011 0.0 707
-708 0.0230529308319092 0.019999999999996 0.019999999999996 0.0 708
-709 0.0226249694824219 0.0200000000000031 0.0200000000000031 0.0 709
-710 0.0225780010223389 0.019999999999996 0.019999999999996 0.0 710
-711 0.0220761299133301 0.0300000000000011 0.0300000000000011 0.0 711
-712 0.0221598148345947 0.0200000000000031 0.0200000000000031 0.0 712
-713 0.0215129852294922 0.019999999999996 0.019999999999996 0.0 713
-714 0.0216219425201416 0.0200000000000031 0.0200000000000031 0.0 714
-715 0.0215890407562256 0.019999999999996 0.019999999999996 0.0 715
-716 0.0216820240020752 0.0200000000000031 0.0200000000000031 0.0 716
-717 0.0216300487518311 0.0300000000000011 0.0300000000000011 0.0 717
-718 0.0247721672058105 0.019999999999996 0.019999999999996 0.0 718
-719 0.0220820903778076 0.0200000000000031 0.0200000000000031 0.0 719
-720 0.0769851207733154 0.0799999999999983 0.0799999999999983 0.0 720
-721 0.0229990482330322 0.0200000000000031 0.0200000000000031 0.0 721
-722 0.024212121963501 0.0300000000000011 0.0300000000000011 0.0 722
-723 0.0229740142822266 0.019999999999996 0.019999999999996 0.0 723
-724 0.0227351188659668 0.0200000000000031 0.0200000000000031 0.0 724
-725 0.0226562023162842 0.029999999999994 0.029999999999994 0.0 725
-726 0.0255320072174072 0.0200000000000031 0.0200000000000031 0.0 726
-727 0.0227208137512207 0.0200000000000031 0.0200000000000031 0.0 727
-728 0.0237081050872803 0.029999999999994 0.029999999999994 0.0 728
-729 0.0268452167510986 0.0200000000000031 0.0200000000000031 0.0 729
-730 0.0218770503997803 0.0300000000000011 0.0300000000000011 0.0 730
-731 0.0217039585113525 0.019999999999996 0.019999999999996 0.0 731
-732 0.0215818881988525 0.0200000000000031 0.0200000000000031 0.0 732
-733 0.0217380523681641 0.0200000000000031 0.0200000000000031 0.0 733
-734 0.0216901302337646 0.019999999999996 0.019999999999996 0.0 734
-735 0.0217649936676025 0.0300000000000011 0.0300000000000011 0.0 735
-736 0.0216591358184814 0.019999999999996 0.019999999999996 0.0 736
-737 0.0809669494628906 0.0800000000000054 0.0800000000000054 0.0 737
-738 0.0230050086975098 0.019999999999996 0.019999999999996 0.0 738
-739 0.0229599475860596 0.0200000000000031 0.0200000000000031 0.0 739
-740 0.0229651927947998 0.0300000000000011 0.0300000000000011 0.0 740
-741 0.0228550434112549 0.019999999999996 0.019999999999996 0.0 741
-742 0.0228068828582764 0.0200000000000031 0.0200000000000031 0.0 742
-743 0.022993803024292 0.0300000000000011 0.0300000000000011 0.0 743
-744 0.0227200984954834 0.019999999999996 0.019999999999996 0.0 744
-745 0.02242112159729 0.0200000000000031 0.0200000000000031 0.0 745
-746 0.0246379375457764 0.0300000000000011 0.0300000000000011 0.0 746
-747 0.0218410491943359 0.019999999999996 0.019999999999996 0.0 747
-748 0.0215339660644531 0.0200000000000031 0.0200000000000031 0.0 748
-749 0.0215659141540527 0.019999999999996 0.019999999999996 0.0 749
-750 0.0216779708862305 0.0200000000000031 0.0200000000000031 0.0 750
-751 0.0216810703277588 0.019999999999996 0.019999999999996 0.0 751
-752 0.0221710205078125 0.0300000000000011 0.0300000000000011 0.0 752
-753 0.0216331481933594 0.0200000000000031 0.0200000000000031 0.0 753
-754 0.0217230319976807 0.019999999999996 0.019999999999996 0.0 754
-755 0.0797798633575439 0.0800000000000054 0.0800000000000054 0.0 755
-756 0.0233240127563477 0.019999999999996 0.019999999999996 0.0 756
-757 0.0232129096984863 0.0300000000000011 0.0300000000000011 0.0 757
-758 0.0233068466186523 0.0200000000000031 0.0200000000000031 0.0 758
-759 0.0228340625762939 0.019999999999996 0.019999999999996 0.0 759
-760 0.0226619243621826 0.0300000000000011 0.0300000000000011 0.0 760
-761 0.0235550403594971 0.0200000000000031 0.0200000000000031 0.0 761
-762 0.0222749710083008 0.019999999999996 0.019999999999996 0.0 762
-763 0.0216190814971924 0.0200000000000031 0.0200000000000031 0.0 763
-764 0.0215640068054199 0.019999999999996 0.019999999999996 0.0 764
-765 0.0237760543823242 0.0300000000000011 0.0300000000000011 0.0 765
-766 0.0217039585113525 0.0200000000000031 0.0200000000000031 0.0 766
-767 0.0219049453735352 0.019999999999996 0.019999999999996 0.0 767
-768 0.0291330814361572 0.0300000000000011 0.0300000000000011 0.0 768
-769 0.0216200351715088 0.0200000000000031 0.0200000000000031 0.0 769
-770 0.0217278003692627 0.019999999999996 0.019999999999996 0.0 770
-771 0.0217189788818359 0.0300000000000011 0.0300000000000011 0.0 771
-772 0.0760140419006348 0.0700000000000003 0.0700000000000003 0.0 772
-773 0.0230591297149658 0.0300000000000011 0.0300000000000011 0.0 773
-774 0.0260210037231445 0.019999999999996 0.019999999999996 0.0 774
-775 0.0247459411621094 0.0300000000000011 0.0300000000000011 0.0 775
-776 0.0229299068450928 0.0200000000000031 0.0200000000000031 0.0 776
-777 0.0227248668670654 0.019999999999996 0.019999999999996 0.0 777
-778 0.022636890411377 0.0300000000000011 0.0300000000000011 0.0 778
-779 0.0227160453796387 0.0200000000000031 0.0200000000000031 0.0 779
-780 0.0222170352935791 0.019999999999996 0.019999999999996 0.0 780
-781 0.0216178894042969 0.0200000000000031 0.0200000000000031 0.0 781
-782 0.0216701030731201 0.019999999999996 0.019999999999996 0.0 782
-783 0.0215609073638916 0.0300000000000011 0.0300000000000011 0.0 783
-784 0.0215671062469482 0.0200000000000031 0.0200000000000031 0.0 784
-785 0.0244979858398438 0.019999999999996 0.019999999999996 0.0 785
-786 0.02254319190979 0.0200000000000031 0.0200000000000031 0.0 786
-787 0.0216531753540039 0.0300000000000011 0.0300000000000011 0.0 787
-788 0.0216619968414307 0.019999999999996 0.019999999999996 0.0 788
-789 0.0218989849090576 0.0200000000000031 0.0200000000000031 0.0 789
-790 0.0775949954986572 0.0799999999999983 0.0799999999999983 0.0 790
-791 0.0229768753051758 0.0200000000000031 0.0200000000000031 0.0 791
-792 0.0230350494384766 0.019999999999996 0.019999999999996 0.0 792
-793 0.0247578620910645 0.0300000000000011 0.0300000000000011 0.0 793
-794 0.0241599082946777 0.0200000000000031 0.0200000000000031 0.0 794
-795 0.0229189395904541 0.029999999999994 0.029999999999994 0.0 795
-796 0.0227510929107666 0.0200000000000031 0.0200000000000031 0.0 796
-797 0.0223112106323242 0.0200000000000031 0.0200000000000031 0.0 797
-798 0.0216238498687744 0.019999999999996 0.019999999999996 0.0 798
-799 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 799
-800 0.0226099491119385 0.0300000000000011 0.0300000000000011 0.0 800
-801 0.0218279361724854 0.019999999999996 0.019999999999996 0.0 801
-802 0.0216817855834961 0.0200000000000031 0.0200000000000031 0.0 802
-803 0.0218219757080078 0.019999999999996 0.019999999999996 0.0 803
-804 0.0220489501953125 0.0200000000000031 0.0200000000000031 0.0 804
-805 0.0245721340179443 0.0300000000000011 0.0300000000000011 0.0 805
-806 0.0237100124359131 0.019999999999996 0.019999999999996 0.0 806
-807 0.0831229686737061 0.0900000000000034 0.0900000000000034 0.0 807
-808 0.0229980945587158 0.019999999999996 0.019999999999996 0.0 808
-809 0.0230069160461426 0.0200000000000031 0.0200000000000031 0.0 809
-810 0.0229578018188477 0.019999999999996 0.019999999999996 0.0 810
-811 0.0229570865631104 0.0300000000000011 0.0300000000000011 0.0 811
-812 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 812
-813 0.0257079601287842 0.0300000000000011 0.0300000000000011 0.0 813
-814 0.0235209465026855 0.019999999999996 0.019999999999996 0.0 814
-815 0.0221221446990967 0.0200000000000031 0.0200000000000031 0.0 815
-816 0.0214879512786865 0.019999999999996 0.019999999999996 0.0 816
-817 0.0215079784393311 0.0300000000000011 0.0300000000000011 0.0 817
-818 0.0216140747070312 0.0200000000000031 0.0200000000000031 0.0 818
-819 0.0216760635375977 0.019999999999996 0.019999999999996 0.0 819
-820 0.021683931350708 0.0200000000000031 0.0200000000000031 0.0 820
-821 0.0217459201812744 0.019999999999996 0.019999999999996 0.0 821
-822 0.0217831134796143 0.0200000000000031 0.0200000000000031 0.0 822
-823 0.0216968059539795 0.0300000000000011 0.0300000000000011 0.0 823
-824 0.0794470310211182 0.0799999999999983 0.0799999999999983 0.0 824
-825 0.0230400562286377 0.0200000000000031 0.0200000000000031 0.0 825
-826 0.0233430862426758 0.019999999999996 0.019999999999996 0.0 826
-827 0.023482084274292 0.0300000000000011 0.0300000000000011 0.0 827
-828 0.0228879451751709 0.0200000000000031 0.0200000000000031 0.0 828
-829 0.0232207775115967 0.019999999999996 0.019999999999996 0.0 829
-830 0.0228579044342041 0.0200000000000031 0.0200000000000031 0.0 830
-831 0.022691011428833 0.029999999999994 0.029999999999994 0.0 831
-832 0.024960994720459 0.0200000000000031 0.0200000000000031 0.0 832
-833 0.0226261615753174 0.0200000000000031 0.0200000000000031 0.0 833
-834 0.0222339630126953 0.029999999999994 0.029999999999994 0.0 834
-835 0.0216858386993408 0.0200000000000031 0.0200000000000031 0.0 835
-836 0.0216341018676758 0.0200000000000031 0.0200000000000031 0.0 836
-837 0.0216710567474365 0.019999999999996 0.019999999999996 0.0 837
-838 0.0217170715332031 0.0200000000000031 0.0200000000000031 0.0 838
-839 0.0223820209503174 0.0300000000000011 0.0300000000000011 0.0 839
-840 0.0218658447265625 0.019999999999996 0.019999999999996 0.0 840
-841 0.0216851234436035 0.0200000000000031 0.0200000000000031 0.0 841
-842 0.0797119140625 0.0799999999999983 0.0799999999999983 0.0 842
-843 0.0296900272369385 0.0300000000000011 0.0300000000000011 0.0 843
-844 0.023921012878418 0.019999999999996 0.019999999999996 0.0 844
-845 0.0230309963226318 0.0300000000000011 0.0300000000000011 0.0 845
-846 0.0227670669555664 0.0200000000000031 0.0200000000000031 0.0 846
-847 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 847
-848 0.0227150917053223 0.0200000000000031 0.0200000000000031 0.0 848
-849 0.0224990844726562 0.0300000000000011 0.0300000000000011 0.0 849
-850 0.0217578411102295 0.019999999999996 0.019999999999996 0.0 850
-851 0.0215840339660645 0.0200000000000031 0.0200000000000031 0.0 851
-852 0.0246429443359375 0.0300000000000011 0.0300000000000011 0.0 852
-853 0.0232079029083252 0.019999999999996 0.019999999999996 0.0 853
-854 0.0217320919036865 0.0200000000000031 0.0200000000000031 0.0 854
-855 0.0215840339660645 0.019999999999996 0.019999999999996 0.0 855
-856 0.0217161178588867 0.0200000000000031 0.0200000000000031 0.0 856
-857 0.0216400623321533 0.0300000000000011 0.0300000000000011 0.0 857
-858 0.0217981338500977 0.019999999999996 0.019999999999996 0.0 858
-859 0.0765349864959717 0.0700000000000003 0.0700000000000003 0.0 859
-860 0.0244770050048828 0.0300000000000011 0.0300000000000011 0.0 860
-861 0.0246331691741943 0.0200000000000031 0.0200000000000031 0.0 861
-862 0.0232968330383301 0.029999999999994 0.029999999999994 0.0 862
-863 0.0228350162506104 0.0200000000000031 0.0200000000000031 0.0 863
-864 0.0228140354156494 0.0200000000000031 0.0200000000000031 0.0 864
-865 0.0230000019073486 0.029999999999994 0.029999999999994 0.0 865
-866 0.0231919288635254 0.0200000000000031 0.0200000000000031 0.0 866
-867 0.0222370624542236 0.0200000000000031 0.0200000000000031 0.0 867
-868 0.0216059684753418 0.019999999999996 0.019999999999996 0.0 868
-869 0.0215280055999756 0.0200000000000031 0.0200000000000031 0.0 869
-870 0.0218400955200195 0.029999999999994 0.029999999999994 0.0 870
-871 0.0238420963287354 0.0200000000000031 0.0200000000000031 0.0 871
-872 0.0222158432006836 0.0200000000000031 0.0200000000000031 0.0 872
-873 0.0229439735412598 0.029999999999994 0.029999999999994 0.0 873
-874 0.022014856338501 0.0200000000000031 0.0200000000000031 0.0 874
-875 0.0218870639801025 0.0200000000000031 0.0200000000000031 0.0 875
-876 0.0765628814697266 0.0799999999999983 0.0799999999999983 0.0 876
-877 0.0229649543762207 0.019999999999996 0.019999999999996 0.0 877
-878 0.0228400230407715 0.0200000000000031 0.0200000000000031 0.0 878
-879 0.0230231285095215 0.019999999999996 0.019999999999996 0.0 879
-880 0.0252189636230469 0.0300000000000011 0.0300000000000011 0.0 880
-881 0.0232028961181641 0.0200000000000031 0.0200000000000031 0.0 881
-882 0.0295140743255615 0.0300000000000011 0.0300000000000011 0.0 882
-883 0.0227620601654053 0.0300000000000011 0.0300000000000011 0.0 883
-884 0.0229089260101318 0.019999999999996 0.019999999999996 0.0 884
-885 0.0219950675964355 0.0200000000000031 0.0200000000000031 0.0 885
-886 0.021589994430542 0.019999999999996 0.019999999999996 0.0 886
-887 0.0214979648590088 0.0200000000000031 0.0200000000000031 0.0 887
-888 0.0215859413146973 0.0300000000000011 0.0300000000000011 0.0 888
-889 0.0217750072479248 0.019999999999996 0.019999999999996 0.0 889
-890 0.021744966506958 0.0200000000000031 0.0200000000000031 0.0 890
-891 0.025892972946167 0.019999999999996 0.019999999999996 0.0 891
-892 0.0236170291900635 0.0300000000000011 0.0300000000000011 0.0 892
-893 0.0218141078948975 0.0200000000000031 0.0200000000000031 0.0 893
-894 0.0771820545196533 0.0799999999999983 0.0799999999999983 0.0 894
-895 0.0230357646942139 0.0200000000000031 0.0200000000000031 0.0 895
-896 0.0231060981750488 0.019999999999996 0.019999999999996 0.0 896
-897 0.023137092590332 0.0300000000000011 0.0300000000000011 0.0 897
-898 0.022799015045166 0.019999999999996 0.019999999999996 0.0 898
-899 0.0256779193878174 0.0200000000000031 0.0200000000000031 0.0 899
-900 0.0231838226318359 0.0300000000000011 0.0300000000000011 0.0 900
-901 0.0232141017913818 0.019999999999996 0.019999999999996 0.0 901
-902 0.0217940807342529 0.0200000000000031 0.0200000000000031 0.0 902
-903 0.0214989185333252 0.0200000000000031 0.0200000000000031 0.0 903
-904 0.0218000411987305 0.029999999999994 0.029999999999994 0.0 904
-905 0.0220961570739746 0.0200000000000031 0.0200000000000031 0.0 905
-906 0.0215680599212646 0.0200000000000031 0.0200000000000031 0.0 906
-907 0.0216329097747803 0.019999999999996 0.019999999999996 0.0 907
-908 0.0217070579528809 0.0200000000000031 0.0200000000000031 0.0 908
-909 0.0216760635375977 0.019999999999996 0.019999999999996 0.0 909
-910 0.0236759185791016 0.0300000000000011 0.0300000000000011 0.0 910
-911 0.0770270824432373 0.0799999999999983 0.0799999999999983 0.0 911
-912 0.0231328010559082 0.0200000000000031 0.0200000000000031 0.0 912
-913 0.0229079723358154 0.019999999999996 0.019999999999996 0.0 913
-914 0.0230019092559814 0.0200000000000031 0.0200000000000031 0.0 914
-915 0.0252349376678467 0.0300000000000011 0.0300000000000011 0.0 915
-916 0.0227150917053223 0.019999999999996 0.019999999999996 0.0 916
-917 0.0228018760681152 0.0200000000000031 0.0200000000000031 0.0 917
-918 0.0226809978485107 0.0300000000000011 0.0300000000000011 0.0 918
-919 0.0252270698547363 0.019999999999996 0.019999999999996 0.0 919
-920 0.0231540203094482 0.0300000000000011 0.0300000000000011 0.0 920
-921 0.0289709568023682 0.0200000000000031 0.0200000000000031 0.0 921
-922 0.0215799808502197 0.0300000000000011 0.0300000000000011 0.0 922
-923 0.0319468975067139 0.0300000000000011 0.019999999999996 0.01 923
-924 0.0216109752655029 0.0200000000000031 0.0200000000000031 0.0 924
-925 0.0217740535736084 0.019999999999996 0.019999999999996 0.0 925
-926 0.0216958522796631 0.0200000000000031 0.0200000000000031 0.0 926
-927 0.0216629505157471 0.019999999999996 0.019999999999996 0.0 927
-928 0.0217578411102295 0.0300000000000011 0.0300000000000011 0.0 928
-929 0.0820608139038086 0.0799999999999983 0.0799999999999983 0.0 929
-930 0.0229201316833496 0.0200000000000031 0.0200000000000031 0.0 930
-931 0.0229270458221436 0.0200000000000031 0.0200000000000031 0.0 931
-932 0.0229320526123047 0.029999999999994 0.029999999999994 0.0 932
-933 0.0227558612823486 0.0200000000000031 0.0200000000000031 0.0 933
-934 0.0226609706878662 0.0200000000000031 0.0200000000000031 0.0 934
-935 0.0229549407958984 0.019999999999996 0.019999999999996 0.0 935
-936 0.0221340656280518 0.0300000000000011 0.0300000000000011 0.0 936
-937 0.0215301513671875 0.019999999999996 0.019999999999996 0.0 937
-938 0.0243568420410156 0.0200000000000031 0.0200000000000031 0.0 938
-939 0.021946907043457 0.0300000000000011 0.0300000000000011 0.0 939
-940 0.021575927734375 0.019999999999996 0.019999999999996 0.0 940
-941 0.0216639041900635 0.0200000000000031 0.0200000000000031 0.0 941
-942 0.0217418670654297 0.0200000000000031 0.0200000000000031 0.0 942
-943 0.0222411155700684 0.019999999999996 0.019999999999996 0.0 943
-944 0.0216610431671143 0.0200000000000031 0.0200000000000031 0.0 944
-945 0.0216820240020752 0.019999999999996 0.019999999999996 0.0 945
-946 0.0792751312255859 0.0699999999999932 0.0699999999999932 0.0 946
-947 0.0251059532165527 0.0300000000000011 0.0300000000000011 0.0 947
-948 0.0247578620910645 0.0200000000000031 0.0200000000000031 0.0 948
-949 0.0229980945587158 0.0300000000000011 0.0300000000000011 0.0 949
-950 0.0229229927062988 0.019999999999996 0.019999999999996 0.0 950
-951 0.0227029323577881 0.0200000000000031 0.0200000000000031 0.0 951
-952 0.0226871967315674 0.019999999999996 0.019999999999996 0.0 952
-953 0.0235540866851807 0.0300000000000011 0.0300000000000011 0.0 953
-954 0.0219640731811523 0.0200000000000031 0.0200000000000031 0.0 954
-955 0.0214629173278809 0.019999999999996 0.019999999999996 0.0 955
-956 0.021557092666626 0.0200000000000031 0.0200000000000031 0.0 956
-957 0.02388596534729 0.0300000000000011 0.0300000000000011 0.0 957
-958 0.0222799777984619 0.019999999999996 0.019999999999996 0.0 958
-959 0.0276319980621338 0.0300000000000011 0.0300000000000011 0.0 959
-960 0.0242338180541992 0.0200000000000031 0.0200000000000031 0.0 960
-961 0.0216600894927979 0.019999999999996 0.019999999999996 0.0 961
-962 0.0217490196228027 0.0200000000000031 0.0200000000000031 0.0 962
-963 0.0757958889007568 0.0799999999999983 0.0799999999999983 0.0 963
-964 0.0231211185455322 0.0200000000000031 0.0200000000000031 0.0 964
-965 0.023090124130249 0.029999999999994 0.029999999999994 0.0 965
-966 0.02652907371521 0.0200000000000031 0.0200000000000031 0.0 966
-967 0.024601936340332 0.0300000000000011 0.0300000000000011 0.0 967
-968 0.0228731632232666 0.019999999999996 0.019999999999996 0.0 968
-969 0.0227208137512207 0.0200000000000031 0.0200000000000031 0.0 969
-970 0.0226399898529053 0.0300000000000011 0.0300000000000011 0.0 970
-971 0.0225419998168945 0.019999999999996 0.019999999999996 0.0 971
-972 0.0218651294708252 0.0200000000000031 0.0200000000000031 0.0 972
-973 0.0215599536895752 0.0200000000000031 0.0200000000000031 0.0 973
-974 0.0218329429626465 0.019999999999996 0.019999999999996 0.0 974
-975 0.0215480327606201 0.0300000000000011 0.0300000000000011 0.0 975
-976 0.0220801830291748 0.019999999999996 0.019999999999996 0.0 976
-977 0.0245459079742432 0.0200000000000031 0.0200000000000031 0.0 977
-978 0.0230350494384766 0.0300000000000011 0.0300000000000011 0.0 978
-979 0.0217211246490479 0.019999999999996 0.019999999999996 0.0 979
-980 0.0217759609222412 0.0200000000000031 0.0200000000000031 0.0 980
-981 0.0778119564056396 0.0799999999999983 0.0799999999999983 0.0 981
-982 0.0229709148406982 0.0200000000000031 0.0200000000000031 0.0 982
-983 0.023047924041748 0.019999999999996 0.019999999999996 0.0 983
-984 0.0228879451751709 0.0300000000000011 0.0300000000000011 0.0 984
-985 0.0263099670410156 0.0200000000000031 0.0200000000000031 0.0 985
-986 0.0241529941558838 0.0300000000000011 0.0300000000000011 0.0 986
-987 0.0228710174560547 0.019999999999996 0.019999999999996 0.0 987
-988 0.0223538875579834 0.0200000000000031 0.0200000000000031 0.0 988
-989 0.0217280387878418 0.019999999999996 0.019999999999996 0.0 989
-990 0.0214800834655762 0.0300000000000011 0.0300000000000011 0.0 990
-991 0.0215470790863037 0.0200000000000031 0.0200000000000031 0.0 991
-992 0.0224719047546387 0.019999999999996 0.019999999999996 0.0 992
-993 0.0216379165649414 0.0200000000000031 0.0200000000000031 0.0 993
-994 0.0215561389923096 0.019999999999996 0.019999999999996 0.0 994
-995 0.021676778793335 0.0200000000000031 0.0200000000000031 0.0 995
-996 0.024587869644165 0.0300000000000011 0.0300000000000011 0.0 996
-997 0.0231449604034424 0.019999999999996 0.019999999999996 0.0 997
-998 0.0824549198150635 0.0900000000000034 0.0900000000000034 0.0 998
-999 0.0230429172515869 0.019999999999996 0.019999999999996 0.0 999
-1000 0.0229730606079102 0.0200000000000031 0.0200000000000031 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log
deleted file mode 100644
index 727267931..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log
+++ /dev/null
@@ -1,82 +0,0 @@
-========================== 2009-04-01T16:49:55 CEST ===========================
-Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux].
-Running 'GeneratorBenchmarkRails' for 1000 iterations/method (compare_time=real)
-===============================================================================
-
-This first run is only for warmup.
-GeneratorBenchmarkRails#generator:
- real total user system
-sum 25.871086597 25.820000000 25.780000000 0.040000000
-min 0.021485090 0.020000000 0.020000000 0.000000000
-std- 0.013123732 0.012534515 0.012507179 -0.000591505
-mean 0.025871087 0.025820000 0.025780000 0.000040000
-std+ 0.038618441 0.039105485 0.039052821 0.000671505
-max 0.084933996 0.090000000 0.090000000 0.010000000
-std 0.012747354 0.013285485 0.013272821 0.000631505
-std% 49.272590131 51.454239794 51.484952060 1578.762962731
-harm 0.023654431 0.022959497 0.022933171 nan
-geo 0.024373445 0.023988580 0.023955348 0.000000000
-q1 0.021737874 0.020000000 0.020000000 0.000000000
-med 0.022677064 0.020000000 0.020000000 0.000000000
-q3 0.023290575 0.030000000 0.030000000 0.000000000
- 1000 38.65319 0.025871087
- calls calls/sec secs/call
-
- 0.08176 -|*
- 0.07542 -|**
- 0.06907 -|
- 0.06273 -|
- 0.05638 -|
- 0.05004 -|
- 0.04369 -|
- 0.03735 -|
- 0.03100 -|*
- 0.02466 -|**************************************************
-
-Outliers detected with box plot algo (median=0.02268, iqr=0.00155, factor=3.00):
-high=115 very_high=69
-
-Ljung-Box statistics: q=1246.12050 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-GeneratorBenchmarkRails#generator:
- real total user system
-sum 25.952543497 25.950000000 25.930000000 0.020000000
-min 0.021454096 0.020000000 0.020000000 0.000000000
-std- 0.013029796 0.012272113 0.012258057 -0.000426990
-mean 0.025952543 0.025950000 0.025930000 0.000020000
-std+ 0.038875291 0.039627887 0.039601943 0.000466990
-max 0.083282948 0.090000000 0.090000000 0.010000000
-std 0.012922747 0.013677887 0.013671943 0.000446990
-std% 49.793760083 52.708619269 52.726351240 2234.948544149
-harm 0.023675798 0.022977187 0.022963996 nan
-geo 0.024414095 0.024037524 0.024020868 0.000000000
-q1 0.021728516 0.020000000 0.020000000 0.000000000
-med 0.022745013 0.020000000 0.020000000 0.000000000
-q3 0.023253679 0.030000000 0.030000000 0.000000000
- 1000 38.53187 0.025952543
- calls calls/sec secs/call
-
- 0.08019 -|**
- 0.07401 -|*
- 0.06783 -|
- 0.06164 -|
- 0.05546 -|
- 0.04928 -|
- 0.04309 -|
- 0.03691 -|
- 0.03073 -|*
- 0.02455 -|**************************************************
-
-Outliers detected with box plot algo (median=0.02275, iqr=0.00153, factor=3.00):
-high=106 very_high=75
-
-Ljung-Box statistics: q=1270.99317 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
-========================== 2009-04-01T16:50:50 CEST ===========================
-
-Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkRails#generator.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkRails#generator-autocorrelation.dat'.
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log
deleted file mode 100644
index 7df444512..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log
+++ /dev/null
@@ -1,34 +0,0 @@
-========================== 2009-04-01T16:49:51 CEST ===========================
-
-Comparing times (call_time_mean):
- 1 ParserBenchmarkExt#parser 900 repeats:
- 553.922304770 ( real) -> 21.500x
- 0.001805307
- 2 ParserBenchmarkYAML#parser 1000 repeats:
- 224.513358139 ( real) -> 8.714x
- 0.004454078
- 3 ParserBenchmarkPure#parser 1000 repeats:
- 26.755020642 ( real) -> 1.038x
- 0.037376163
- 4 ParserBenchmarkRails#parser 1000 repeats:
- 25.763381731 ( real) -> 1.000x
- 0.038814780
- calls/sec ( time) -> speed covers
- secs/call
-
-Comparing times (call_time_median):
- 1 ParserBenchmarkExt#parser 900 repeats:
- 800.592479481 ( real) -> 26.936x
- 0.001249075
- 2 ParserBenchmarkYAML#parser 1000 repeats:
- 271.002390644 ( real) -> 9.118x
- 0.003690004
- 3 ParserBenchmarkRails#parser 1000 repeats:
- 30.227910865 ( real) -> 1.017x
- 0.033082008
- 4 ParserBenchmarkPure#parser 1000 repeats:
- 29.722384421 ( real) -> 1.000x
- 0.033644676
- calls/sec ( time) -> speed covers
- secs/call
-===============================================================================
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat
deleted file mode 100644
index 40efc57cc..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat
+++ /dev/null
@@ -1,900 +0,0 @@
-#lag autocorrelation
-101 1.0
-102 0.00985212418163005
-103 -0.00105742571489969
-104 -0.0200019393620297
-105 -0.00933105977449441
-106 -0.0198053539236752
-107 -0.0179767811553642
-108 -0.0176611423990743
-109 -0.0185222417953087
-110 -0.0205843694390457
-111 -0.01715959553508
-112 -0.0198505157325194
-113 -0.0185062490072185
-114 -0.0196897065923063
-115 -0.021656479097572
-116 -0.0204821887654524
-117 -0.0184415185088398
-118 -0.0211615011085338
-119 -0.0216761971444828
-120 -0.0198233495768411
-121 -0.0203604715880323
-122 -0.0198005010000642
-123 -0.0186848341524697
-124 -0.0180302780242917
-125 -0.0183844885059821
-126 -0.0193889269967917
-127 -0.0192676046194778
-128 -0.017137594880939
-129 -0.0170409124066728
-130 -0.0150595759310503
-131 -0.018497243864985
-132 -0.0191312662452333
-133 -0.0194917405622472
-134 -0.0182724916370003
-135 -0.0171018288530395
-136 -0.017693203383731
-137 -0.019233808628409
-138 -0.0204803489133546
-139 -0.0206519814870514
-140 -0.0209197600090546
-141 -0.0201426439148014
-142 -0.0181979335068176
-143 -0.0198192645275531
-144 -0.0202773409268149
-145 -0.0197509641765462
-146 -0.0174542791271672
-147 -0.0185131963029398
-148 -0.0142911622141816
-149 -0.018189949446747
-150 -0.0172775321644038
-151 -0.0172514996638929
-152 -0.0149711216258677
-153 -0.0180209406771167
-154 -0.0187829326095732
-155 -0.0179420788237305
-156 0.00424372785454928
-157 0.00821554188465932
-158 0.35293400731859
-159 0.366837592246794
-160 0.213298783047283
-161 -0.0157394761915721
-162 -0.00774376349114834
-163 -0.0172186119438013
-164 -0.0162348306988972
-165 -0.0179811217375531
-166 -0.0168325248721867
-167 -0.0177863454159124
-168 -0.0162717222175639
-169 -0.0191117204105146
-170 -0.0177356811020167
-171 -0.0186975490077008
-172 -0.0172583072789483
-173 -0.0189210264178748
-174 -0.0171826733538386
-175 -0.0197467598837419
-176 -0.0197612311894552
-177 -0.0200029809913758
-178 -0.0197615059774931
-179 -0.017571989727297
-180 -0.0173400082784329
-181 -0.0176396221137864
-182 -0.0178007321096628
-183 -0.0171581059408866
-184 -0.0175715243687287
-185 -0.0144018049890081
-186 -0.0137323861679082
-187 -0.0160141550759938
-188 -0.017722831700802
-189 -0.015351426662838
-190 -0.0185698089210776
-191 -0.0175157776409104
-192 -0.0155631516338833
-193 -0.0169248557096909
-194 -0.0172361325951485
-195 -0.0181452103029826
-196 -0.0188512630759419
-197 -0.019287412783149
-198 -0.0189502964327969
-199 -0.0175238114666983
-200 -0.0183952774301715
-201 -0.0186218598819691
-202 -0.018542074990071
-203 -0.0182545379514657
-204 -0.017840994815964
-205 -0.0165268111705284
-206 -0.0170697996989772
-207 -0.0164709961667795
-208 -0.016643508111465
-209 -0.0157568996501781
-210 -0.0168374783887807
-211 -0.0177159477110073
-212 -0.0185524368774668
-213 0.0053422952230943
-214 0.00276128222155045
-215 0.286489934471652
-216 0.0658269400928081
-217 0.262561253228902
-218 0.169103819531699
-219 0.0650049870287007
-220 -0.0133346213868773
-221 -0.0142126752180425
-222 -0.0160968078458446
-223 -0.0167528062012806
-224 -0.0164817511097463
-225 -0.0142119297070018
-226 -0.0184810797176798
-227 -0.0172569541054024
-228 -0.0172066024264211
-229 -0.0169726297147995
-230 -0.0150887497973008
-231 -0.0156277947184747
-232 -0.0180738339464492
-233 -0.0190883324101496
-234 -0.0183422711026111
-235 -0.018362277398652
-236 -0.0181804365041856
-237 -0.0173970084740036
-238 -0.0160781720728349
-239 -0.0175236902049324
-240 -0.0174042718759811
-241 -0.0173938793276598
-242 -0.0147551028769872
-243 -0.0122857581039405
-244 -0.010867924198452
-245 -0.0147424216205904
-246 -0.0161622617779801
-247 -0.0172022551420587
-248 -0.0150808969605776
-249 -0.0151917742587137
-250 -0.0152127703813932
-251 -0.0164007891388044
-252 -0.0158495946074772
-253 -0.0165231819746255
-254 -0.0179743821309601
-255 -0.0168790954979486
-256 -0.0162120097817564
-257 -0.0178739491417351
-258 -0.0173473040628906
-259 -0.017333660413587
-260 -0.0169091470123355
-261 -0.0173480396586057
-262 -0.0162244782824425
-263 -0.0161131334675745
-264 -0.015440149830728
-265 -0.0158807862437797
-266 -0.0152294521155507
-267 -0.0158352218642096
-268 -0.0155828944335708
-269 -0.0154836062421944
-270 0.00558208708467659
-271 0.0114870902959279
-272 0.231287473612096
-273 0.0339554100844083
-274 0.0575163566469858
-275 0.200319219612533
-276 0.130545113965154
-277 0.103208025156172
-278 -0.00828951271991966
-279 -0.011478192463039
-280 -0.0144428867470379
-281 -0.0166239539451988
-282 -0.0140920994032186
-283 -0.0158723288388108
-284 -0.0165069706040961
-285 -0.0161430629749153
-286 -0.0156730553051534
-287 -0.0140404598916659
-288 -0.0133504108974733
-289 -0.0157085445845684
-290 -0.0176124651386038
-291 -0.0171680503827001
-292 -0.0170039830572799
-293 -0.0168887759061973
-294 -0.0169101987732867
-295 -0.0163174932481928
-296 -0.0167303236582728
-297 -0.0164240715366653
-298 -0.0174052740404305
-299 -0.0154895527247017
-300 -0.0136444220312839
-301 -0.0116830781987026
-302 -0.0115068177333964
-303 -0.0122234935117673
-304 -0.0161080245808241
-305 -0.0156513921624129
-306 -0.015465759720129
-307 -0.0155883071657887
-308 -0.014915569597449
-309 -0.0154401977831601
-310 -0.0152328705988631
-311 -0.0150660231818582
-312 -0.0162849647550971
-313 -0.0156909486406831
-314 -0.0157314619149535
-315 -0.0171049069711299
-316 -0.0163207392432989
-317 -0.0162187518728422
-318 -0.0159225278740695
-319 -0.0158753160806369
-320 -0.0175020706698857
-321 -0.0162498852657993
-322 -0.0142911340574672
-323 -0.0134726499133121
-324 -0.0139601338890013
-325 -0.0135761876345162
-326 -0.0137860102565959
-327 0.00758105123652143
-328 0.0138556686845422
-329 0.160536954774616
-330 0.0580898398456171
-331 0.0362943231984366
-332 0.0582894097570709
-333 0.140607199465268
-334 0.122618966464092
-335 0.0544884026670781
-336 0.0574883295508244
-337 -0.0128811621108332
-338 -0.0142051495442353
-339 -0.012596825344306
-340 -0.0144711739317383
-341 -0.0143424560269512
-342 -0.0151482554143398
-343 -0.0152335381293791
-344 -0.0145008541639242
-345 -0.0128863677349906
-346 -0.0135998919997521
-347 -0.0137187354568586
-348 -0.016562150133356
-349 -0.0159327586951356
-350 -0.0157278421724429
-351 -0.0156917921778683
-352 -0.0162525169522264
-353 -0.0151087680645235
-354 -0.0163683946557918
-355 -0.0158321090068333
-356 -0.014187820897252
-357 -0.0135506277381031
-358 -0.0129291218507853
-359 -0.011476061331394
-360 -0.0106220863859184
-361 -0.0136381523747695
-362 -0.0144198007144617
-363 -0.0140646467360062
-364 -0.0146311562003427
-365 -0.0138043111265009
-366 -0.0132336502438289
-367 -0.0137447378009751
-368 -0.0134055994936963
-369 -0.0138096044909662
-370 -0.0148709544542698
-371 -0.0141560548846661
-372 -0.0143189068321436
-373 -0.0154246653827396
-374 -0.0143998490618263
-375 -0.0151239610115372
-376 -0.0145837141470442
-377 -0.0149820141088871
-378 -0.0152660994133885
-379 -0.0150896640677698
-380 -0.0143925874319689
-381 -0.012857919840862
-382 -0.012469852706461
-383 -0.0114191455070416
-384 -0.0117369627541799
-385 0.00901231127194259
-386 0.112581309251641
-387 0.0630586366341156
-388 0.0560506964150278
-389 0.034078031969884
-390 0.0673456104691437
-391 0.0675823686435704
-392 0.125111752483497
-393 0.0574208869213907
-394 0.0547195112212531
-395 -0.0126520762992662
-396 -0.0108416098060863
-397 -0.0130469248384881
-398 -0.0127546014788274
-399 -0.0132792357499854
-400 -0.0146832842515137
-401 -0.0126612510959431
-402 -0.0115800372136954
-403 -0.0113903072278453
-404 -0.0140846407853927
-405 -0.0131520362471166
-406 -0.0151139726926659
-407 -0.014338285447184
-408 -0.0139604129340576
-409 -0.0146086760584088
-410 -0.0147068805852203
-411 -0.0133990381740181
-412 -0.0146858710730989
-413 -0.0130742254367083
-414 -0.0131112804223081
-415 -0.0137104304702131
-416 -0.0127181490916882
-417 -0.0101122805581215
-418 -0.0116311057808783
-419 -0.0116685677717087
-420 -0.0125364818049418
-421 -0.0131681573750755
-422 -0.0136051276108772
-423 -0.0120078720987834
-424 -0.0120742461009416
-425 -0.0122528176238668
-426 -0.0117254366398627
-427 -0.0121713901545344
-428 -0.0134473192309673
-429 -0.0125993249687127
-430 -0.0127679522459455
-431 -0.0139092549620457
-432 -0.012803641341176
-433 -0.0136774030500624
-434 -0.0141830514589281
-435 -0.0128995570395618
-436 -0.0138061906269556
-437 -0.0138485903191603
-438 -0.0134705594226274
-439 -0.0135710367850959
-440 -0.0134802406736088
-441 -0.0114240523633417
-442 0.00941052876968686
-443 0.0430904882987511
-444 0.0610654134717703
-445 0.062319445242902
-446 0.0601232622212667
-447 0.0405754724552619
-448 0.0620931832458557
-449 0.0116088523973264
-450 0.0982633823768887
-451 0.0714603689521745
-452 0.0559398394361076
-453 -0.0101201070889078
-454 -0.00879771513149454
-455 -0.0115272354759577
-456 -0.0116269116840352
-457 -0.0122869101923228
-458 -0.0120188445899197
-459 -0.0118598309936189
-460 -0.0101004693907269
-461 -0.0114030122417514
-462 -0.0122734729370316
-463 -0.0115720712151182
-464 -0.0138183196216235
-465 -0.0127878610331042
-466 -0.0125076360625095
-467 -0.012954528306254
-468 -0.0134636454445403
-469 -0.0119988447482744
-470 -0.0129555835189171
-471 -0.0118492958760378
-472 -0.0118594416726488
-473 -0.0122062699596644
-474 -0.010080021699572
-475 -0.0096177810356361
-476 -0.0103925438270026
-477 -0.00956922010832709
-478 -0.0112412626452718
-479 -0.0121001052660535
-480 -0.011378640220319
-481 -0.0092484956113967
-482 -0.0106941808432033
-483 -0.0110034314038638
-484 -0.0110076000819364
-485 -0.0120066628455925
-486 -0.0120644325940679
-487 -0.0113002732292104
-488 -0.0115088408547228
-489 -0.0124620522688203
-490 -0.011436641831689
-491 -0.0122177151639931
-492 -0.011889848089267
-493 -0.0112514741258071
-494 -0.0123396196285994
-495 -0.0125441398199035
-496 -0.0120423852622065
-497 -0.0117710714915686
-498 -0.0120685728943707
-499 -0.0102415762932917
-500 -0.00952560982747511
-501 0.057365018480452
-502 0.0589533698587152
-503 0.0631840298934377
-504 0.0575949246719766
-505 0.0495075237359153
-506 -0.00276987533523964
-507 0.0566980942764334
-508 0.0446716609032234
-509 0.0800168272027955
-510 0.0590566885918559
-511 -0.00867575003512787
-512 -0.00762446391218853
-513 -0.0110530315739159
-514 -0.0112154987644773
-515 -0.0115595346792594
-516 -0.00980277940001169
-517 -0.00973051262117572
-518 -0.0103794047555936
-519 -0.0112379712859069
-520 -0.0115804163149423
-521 -0.0101848401928812
-522 -0.0124971838157264
-523 -0.0116095875762639
-524 -0.0110264315185272
-525 -0.0117091264505558
-526 -0.0123732885927322
-527 -0.010594137537324
-528 -0.0118959477121367
-529 -0.0104863548938662
-530 -0.0105605260979509
-531 -0.0106933635291854
-532 -0.0108043363381157
-533 -0.00921313629560141
-534 -0.00991616820012903
-535 -0.00958582052168739
-536 -0.00704544580624994
-537 -0.0106691661025772
-538 -0.010420801758334
-539 -0.00875433609811375
-540 -0.00883595894162315
-541 -0.00997102984238341
-542 -0.0102647231793572
-543 -0.0102814553860974
-544 -0.0108603826750419
-545 -0.00986739232072193
-546 -0.0101569632812344
-547 -0.011268829829185
-548 -0.0103314326239715
-549 -0.0108025538636602
-550 -0.0110885402975588
-551 -0.00994108726738058
-552 -0.0109717247548978
-553 -0.0111952027153027
-554 -0.0106777314688714
-555 -0.0105192670440749
-556 -0.0103965890169893
-557 -0.00921877528177769
-558 -0.0105438348503076
-559 0.0565407931203086
-560 0.0607631038776418
-561 0.0631456281304688
-562 0.0643969806813753
-563 0.00250124004424947
-564 0.0238807604805019
-565 0.0611062977177439
-566 0.00597775022828004
-567 0.0460556379694793
-568 0.0815090939407766
-569 -0.00626805713052914
-570 -0.00661349141206074
-571 -0.0103106916231778
-572 -0.00997759927119779
-573 -0.00925417552568336
-574 -0.00793232399214336
-575 -0.00984859802468641
-576 -0.00970943291247622
-577 -0.0102555983171129
-578 -0.0105112448841139
-579 -0.00934462727175849
-580 -0.0109724429920345
-581 -0.0105475816212072
-582 -0.00987869004825123
-583 -0.0108012349540747
-584 -0.0110285881583596
-585 -0.00936923199699531
-586 -0.010677032137483
-587 -0.00926759654250112
-588 -0.00927806685390026
-589 -0.00953198453346766
-590 -0.00985316922914821
-591 -0.00816343304426746
-592 -0.00804247528052676
-593 -0.00716187036218296
-594 -0.00719169352938419
-595 -0.00640320531281439
-596 -0.00933925279879329
-597 -0.00742884578783592
-598 -0.00884147481763569
-599 -0.00946231770499787
-600 -0.00920569741458586
-601 -0.00945237056796019
-602 -0.00981398771732927
-603 -0.00871297697902305
-604 -0.0100303276706874
-605 -0.00898480302286613
-606 -0.00924314281708078
-607 -0.00967182311916309
-608 -0.00990373367569264
-609 -0.00867546650016389
-610 -0.00974271626786161
-611 -0.00993605711012294
-612 -0.00942263108268127
-613 -0.00900896482065972
-614 -0.0091002536867116
-615 -0.0087141619357278
-616 -0.00892632720545352
-617 0.0589814861280723
-618 0.0605513762593439
-619 0.0714950418331747
-620 -0.00270802819557134
-621 0.0492471524740303
-622 0.038730090749927
-623 -0.00470286001171746
-624 0.0805291384934167
-625 -0.0061135815816416
-626 0.0469241708061885
-627 0.0129057834766504
-628 -0.00613654384956245
-629 -0.00879823441679327
-630 -0.00781138453907383
-631 -0.00742325743221473
-632 -0.00823530705565565
-633 -0.0084784951984544
-634 -0.00809365168883783
-635 -0.00953458560320773
-636 -0.00802484455858134
-637 -0.00916422962874895
-638 -0.00901522658367207
-639 -0.00980509257172476
-640 -0.00879042365734647
-641 -0.00895901541679582
-642 -0.00967011172668992
-643 -0.00909032972552398
-644 -0.00839888383893324
-645 -0.00811198094900032
-646 -0.00768107918073061
-647 -0.00816456224653991
-648 -0.0082275430634122
-649 -0.0081977088645516
-650 -0.00539347813540888
-651 -0.00654335448921841
-652 -0.00443308105716727
-653 -0.00570487900007702
-654 -0.0066893756968109
-655 -0.00818867754248517
-656 -0.00757689453770065
-657 -0.00809806707024929
-658 -0.00781954604985851
-659 -0.00817710586907003
-660 -0.00815598808085207
-661 -0.00838471453215144
-662 -0.00761655712958744
-663 -0.00754256056280177
-664 -0.00784016975796052
-665 -0.00809877261256007
-666 -0.00845387142411403
-667 -0.00839255166002082
-668 -0.00750643389123885
-669 -0.00842839786359518
-670 -0.00793771252048078
-671 -0.00821559065464683
-672 -0.00836801649799504
-673 -0.00801406294900344
-674 -0.0068829238602205
-675 0.0587431729672395
-676 0.0679066498016378
-677 0.00138627052356425
-678 0.045430011210707
-679 0.0703642058717147
-680 -0.00785311036081027
-681 0.0393771166371859
-682 -0.0012573720198598
-683 0.0787866974453597
-684 -0.00622669473512034
-685 -0.00636435714406588
-686 -0.00498738462505791
-687 -0.00682069596495773
-688 -0.00626878401038485
-689 -0.00829494420297491
-690 -0.00672112910303483
-691 -0.00742349355313316
-692 -0.00663050740514031
-693 -0.00668402104568857
-694 -0.00765554385447826
-695 -0.00750480426076586
-696 -0.00755677083867405
-697 -0.00878562401331522
-698 -0.00750067365297707
-699 -0.00777302023891454
-700 -0.00817258866736239
-701 -0.00782461564356417
-702 -0.00524788018311442
-703 -0.00639934484202989
-704 -0.00643323873066334
-705 -0.00675310931225713
-706 -0.00662734325519555
-707 -0.00521831889291382
-708 -0.00564541170834083
-709 -0.00456417269308792
-710 -0.00400766521918149
-711 -0.00371044720499201
-712 -0.00477769884156836
-713 -0.00650815478194108
-714 -0.00648004714637358
-715 -0.00676089500421721
-716 -0.00680941068103167
-717 -0.00642611423395982
-718 -0.00702188737616296
-719 -0.00653395389621014
-720 -0.00584494763207698
-721 -0.00698560115812894
-722 -0.00617395252882351
-723 -0.00649589045366301
-724 -0.00697571124768394
-725 -0.00710622766255317
-726 -0.00619879747257016
-727 -0.00665952366507082
-728 -0.00697267381777301
-729 -0.00656067343167249
-730 -0.00686476942480864
-731 -0.00642237619826439
-732 -0.00571464839985842
-733 0.0667446844690344
-734 -0.000602956363836805
-735 0.0435578419252502
-736 0.0671949304076346
-737 0.00272911716837698
-738 0.0617459164425819
-739 -0.00803573888395584
-740 0.0408644996908555
-741 -0.00188635612841879
-742 0.012816656873346
-743 -0.00568767407759494
-744 -0.00636171895252407
-745 -0.00542006518701238
-746 -0.00762131167004239
-747 -0.00660561178711003
-748 -0.00606759153689151
-749 -0.0058887906931096
-750 -0.00489479103900307
-751 -0.00560951874516548
-752 -0.00616879095509287
-753 -0.00635688929093473
-754 -0.00647498478390112
-755 -0.00602500915318228
-756 -0.00733096951475789
-757 -0.00594264381799701
-758 -0.00639292931982792
-759 -0.00572524668506834
-760 -0.00539599866786123
-761 -0.00379529224483641
-762 -0.00508628266806213
-763 -0.00482859601859399
-764 -0.00384270276169917
-765 -0.0048947554317503
-766 -0.0036868713314995
-767 -0.00296664588261117
-768 -0.00394853350358643
-769 -0.00370978621561119
-770 -0.00496135959443785
-771 -0.00483764544982328
-772 -0.00514032926285884
-773 -0.00429422735197048
-774 -0.00533057103732123
-775 -0.00536211175807313
-776 -0.00507354991704586
-777 -0.00523842710609345
-778 -0.00538601193828756
-779 -0.00457245530033061
-780 -0.00555196995586425
-781 -0.00431853553236008
-782 -0.00528202292794999
-783 -0.00548332867892791
-784 -0.0054668106220194
-785 -0.00467211264805423
-786 -0.0056172070705691
-787 -0.0050524268347218
-788 -0.00490507861057278
-789 -0.00533817709181219
-790 -0.00320459126822799
-791 0.000899360051725526
-792 0.0415445575505902
-793 0.0636610531703114
-794 -0.0016809425357539
-795 0.0687212087083107
-796 0.000196803163775908
-797 0.0629583673226595
-798 -0.00692549309097212
-799 -0.00464547193258324
-800 -0.00554999704707722
-801 -0.00548776067864322
-802 -0.00542976281097604
-803 -0.0035044437646846
-804 -0.0055525582475137
-805 -0.00571646473007065
-806 -0.00559650400651719
-807 -0.0038274405540596
-808 -0.0049295061654944
-809 -0.00431367615172496
-810 -0.00488424593891825
-811 -0.00508803026004008
-812 -0.00516376184293035
-813 -0.00533514975859532
-814 -0.00495590288647863
-815 -0.00582914296339316
-816 -0.00363638197988919
-817 -0.00435167714877856
-818 -0.00395852323776287
-819 -0.0040209798766184
-820 -0.00259964040539382
-821 -0.00252589454921766
-822 -0.00402931674090356
-823 -0.00437393888079731
-824 -0.00424357159059594
-825 -0.00410943374121717
-826 -0.00317027800134567
-827 -0.00401422305864503
-828 -0.00362959396117676
-829 -0.00435662189051477
-830 -0.00429725981497675
-831 -0.00437374795310113
-832 -0.00378466430841879
-833 -0.00411294642315096
-834 -0.00378707889918487
-835 -0.00453957661876227
-836 -0.00428380826395531
-837 -0.00440314525366383
-838 -0.0035999051330324
-839 -0.00448715088820831
-840 -0.00394825961839359
-841 -0.00424255651229298
-842 -0.00457239362923998
-843 -0.00454960510129971
-844 -0.00359729823872128
-845 -0.00427987549442926
-846 -0.00383749859614317
-847 -0.00440264075958008
-848 -0.00443053281886172
-849 -0.00462479790588209
-850 0.0635581089210887
-851 -0.00436894515178304
-852 0.0644673368682151
-853 -0.000871046243511147
-854 0.0774867967247699
-855 -0.00520058993039265
-856 -0.00455758197376518
-857 -0.0045515125818426
-858 -0.00326760124250017
-859 -0.00391042035486497
-860 -0.00365931176845998
-861 -0.00406590514483785
-862 -0.0025402582470179
-863 -0.00536731784656349
-864 -0.00383767883865199
-865 -0.00355617763954968
-866 -0.00378000247138692
-867 -0.00392301919821498
-868 -0.00311017256485425
-869 -0.00362676859689902
-870 -0.00388528530404416
-871 -0.00403811507092716
-872 -0.00389341264783238
-873 -0.00250872494912967
-874 -0.00227481761327797
-875 -0.00232996833366221
-876 -0.00304083453398083
-877 -0.00268074555016819
-878 -0.00265096778109124
-879 -0.00262000280831905
-880 -0.00263328713175465
-881 -0.0025831537476473
-882 -0.00285396803049453
-883 -0.00275081518908208
-884 -0.00275786365878849
-885 -0.00270692981149454
-886 -0.00279346701415621
-887 -0.00243358618146588
-888 -0.00292581648863345
-889 -0.00324682684580069
-890 -0.00268405340278505
-891 -0.00298098008752344
-892 -0.0030275487992921
-893 -0.00253465692577619
-894 -0.0030528198225934
-895 -0.00306163668899383
-896 -0.00302971568628192
-897 -0.00312372318456645
-898 -0.00302532654866883
-899 -0.00260699554256586
-900 -0.00314997872940616
-901 -0.00310092374684808
-902 -0.00285287807280204
-903 -0.00322514674479286
-904 -0.00324555248275787
-905 -0.00266343884682981
-906 -0.0033292088604627
-907 -0.00311942534161818
-908 -0.003188028948592
-909 0.063849474353312
-910 -0.00314766360320187
-911 0.0654720703776586
-912 -0.00104922659034679
-913 0.00682464273763961
-914 -0.00303985655616328
-915 -0.00305320941524036
-916 -0.00235000269848827
-917 -0.00159322372169743
-918 -0.00266570495618958
-919 -0.00262099570862898
-920 -0.00331666377238153
-921 -0.000308570913141365
-922 -0.0043164022171378
-923 -0.00371227484203275
-924 -0.00247827724873875
-925 -0.00234032536054011
-926 -0.00253743141649567
-927 -0.00196547166307156
-928 -0.00258072736023124
-929 -0.00262490193099622
-930 -0.00130204665127498
-931 -0.00126358935693649
-932 -0.00125324190600646
-933 -0.00103101472775934
-934 -0.00130963767061068
-935 -0.00170600528719406
-936 -0.00131231544424995
-937 -0.00130240649250473
-938 -0.0011496494054081
-939 -0.00120338315610114
-940 -0.00107955390929202
-941 -0.00136336765253578
-942 -0.00138525137115296
-943 -0.00142000506928781
-944 -0.00137347169208518
-945 -0.00130072987756282
-946 -0.00149282878067872
-947 -0.00147328073275425
-948 -0.00148996134571696
-949 -0.0015346094598941
-950 -0.00155787525175409
-951 -0.0015758298667031
-952 -0.00144258818629267
-953 -0.0016057038498501
-954 -0.00161313789189179
-955 -0.0014926163928444
-956 -0.00167630619540263
-957 -0.00171225333920666
-958 -0.00158417048330168
-959 -0.00172363849918105
-960 -0.00178681745393769
-961 -0.00177326985666539
-962 -0.00177274859905472
-963 -0.00180813461186522
-964 -0.00164734316246358
-965 -0.00179758469878046
-966 -0.00170533834289266
-967 -0.0018391064291266
-968 0.0648568044321966
-969 -0.00181391508277247
-970 -0.00187271774497418
-971 -0.00171843154333231
-972 0.00690748933974905
-973 -0.0020046618702145
-974 -0.00209930430368119
-975 -0.00151158386207428
-976 -0.00215827618636864
-977 -0.00219374577659291
-978 -0.00221636226760568
-979 -0.00228093075519445
-980 -0.00204652728069895
-981 -0.00229765429774947
-982 -0.00230704101453769
-983 -0.00107403973652915
-984 -0.00110441180969535
-985 -0.00113692360921596
-986 -0.00114267728647558
-987 0.000141381944635982
-988 0.00011755670125973
-989 9.44527623139297e-05
-990 7.92340829889737e-05
-991 0.000230018756762113
-992 0.000207110838703588
-993 0.000182764350871147
-994 0.000169272314028801
-995 0.000144905246673696
-996 0.000120096836237343
-997 9.53172448027285e-05
-998 7.0792968638772e-05
-999 4.98796983407663e-05
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat
deleted file mode 100644
index 797a3d099..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat
+++ /dev/null
@@ -1,901 +0,0 @@
-#scatter real total user system repeat
-101 0.00124120712280273 0.0 0.0 0.0 101
-102 0.00123310089111328 0.0 0.0 0.0 102
-103 0.0012359619140625 0.0 0.0 0.0 103
-104 0.00124216079711914 0.0 0.0 0.0 104
-105 0.00124096870422363 0.0 0.0 0.0 105
-106 0.00124096870422363 0.00999999999999979 0.00999999999999979 0.0 106
-107 0.00124692916870117 0.0 0.0 0.0 107
-108 0.00122189521789551 0.0 0.0 0.0 108
-109 0.00124287605285645 0.0 0.0 0.0 109
-110 0.00124287605285645 0.0 0.0 0.0 110
-111 0.00124597549438477 0.0 0.0 0.0 111
-112 0.0012519359588623 0.0 0.0 0.0 112
-113 0.00124788284301758 0.0 0.0 0.0 113
-114 0.00124502182006836 0.0100000000000007 0.0100000000000007 0.0 114
-115 0.00124692916870117 0.0 0.0 0.0 115
-116 0.00123810768127441 0.0 0.0 0.0 116
-117 0.00125002861022949 0.0 0.0 0.0 117
-118 0.00125789642333984 0.0 0.0 0.0 118
-119 0.0300710201263428 0.0299999999999994 0.0299999999999994 0.0 119
-120 0.00127291679382324 0.0 0.0 0.0 120
-121 0.00133109092712402 0.0 0.0 0.0 121
-122 0.0012810230255127 0.0100000000000007 0.0100000000000007 0.0 122
-123 0.00127792358398438 0.0 0.0 0.0 123
-124 0.0012671947479248 0.0 0.0 0.0 124
-125 0.00126814842224121 0.0 0.0 0.0 125
-126 0.00125694274902344 0.0 0.0 0.0 126
-127 0.00124883651733398 0.0 0.0 0.0 127
-128 0.00124907493591309 0.0 0.0 0.0 128
-129 0.0012509822845459 0.0 0.0 0.0 129
-130 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 130
-131 0.00125312805175781 0.0 0.0 0.0 131
-132 0.00131797790527344 0.0 0.0 0.0 132
-133 0.00125694274902344 0.0 0.0 0.0 133
-134 0.00125288963317871 0.0 0.0 0.0 134
-135 0.0012519359588623 0.0 0.0 0.0 135
-136 0.00124692916870117 0.0 0.0 0.0 136
-137 0.00124692916870117 0.0 0.0 0.0 137
-138 0.00124907493591309 0.00999999999999979 0.00999999999999979 0.0 138
-139 0.0012509822845459 0.0 0.0 0.0 139
-140 0.00125598907470703 0.0 0.0 0.0 140
-141 0.00124287605285645 0.0 0.0 0.0 141
-142 0.00124812126159668 0.0 0.0 0.0 142
-143 0.00124883651733398 0.0 0.0 0.0 143
-144 0.00123500823974609 0.0 0.0 0.0 144
-145 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 145
-146 0.00123715400695801 0.0 0.0 0.0 146
-147 0.00134897232055664 0.0 0.0 0.0 147
-148 0.00123906135559082 0.0 0.0 0.0 148
-149 0.00124788284301758 0.0 0.0 0.0 149
-150 0.0012359619140625 0.0 0.0 0.0 150
-151 0.00123476982116699 0.0 0.0 0.0 151
-152 0.00124597549438477 0.0 0.0 0.0 152
-153 0.00124597549438477 0.0100000000000007 0.0100000000000007 0.0 153
-154 0.00123190879821777 0.0 0.0 0.0 154
-155 0.0012509822845459 0.0 0.0 0.0 155
-156 0.00124096870422363 0.0 0.0 0.0 156
-157 0.0012359619140625 0.0 0.0 0.0 157
-158 0.00123906135559082 0.0 0.0 0.0 158
-159 0.00123906135559082 0.0 0.0 0.0 159
-160 0.00123691558837891 0.0 0.0 0.0 160
-161 0.00124001502990723 0.00999999999999979 0.00999999999999979 0.0 161
-162 0.00124597549438477 0.0 0.0 0.0 162
-163 0.00124096870422363 0.0 0.0 0.0 163
-164 0.0012359619140625 0.0 0.0 0.0 164
-165 0.00123500823974609 0.0 0.0 0.0 165
-166 0.00173211097717285 0.0 0.0 0.0 166
-167 0.00125217437744141 0.0 0.0 0.0 167
-168 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 168
-169 0.00124096870422363 0.0 0.0 0.0 169
-170 0.00123381614685059 0.0 0.0 0.0 170
-171 0.00124001502990723 0.0 0.0 0.0 171
-172 0.00124001502990723 0.0 0.0 0.0 172
-173 0.00123715400695801 0.0 0.0 0.0 173
-174 0.00123691558837891 0.0 0.0 0.0 174
-175 0.00124692916870117 0.0 0.0 0.0 175
-176 0.00130796432495117 0.00999999999999979 0.00999999999999979 0.0 176
-177 0.00127100944519043 0.0 0.0 0.0 177
-178 0.0301418304443359 0.0300000000000002 0.0300000000000002 0.0 178
-179 0.00127196311950684 0.0 0.0 0.0 179
-180 0.00131416320800781 0.0 0.0 0.0 180
-181 0.00119805335998535 0.0 0.0 0.0 181
-182 0.00128316879272461 0.0 0.0 0.0 182
-183 0.0013129711151123 0.0 0.0 0.0 183
-184 0.00127100944519043 0.0 0.0 0.0 184
-185 0.00141692161560059 0.0 0.0 0.0 185
-186 0.00130701065063477 0.0 0.0 0.0 186
-187 0.00126099586486816 0.0 0.0 0.0 187
-188 0.00125694274902344 0.0 0.0 0.0 188
-189 0.00124502182006836 0.0 0.0 0.0 189
-190 0.00125217437744141 0.0 0.0 0.0 190
-191 0.00124216079711914 0.0 0.0 0.0 191
-192 0.00125408172607422 0.0100000000000007 0.0100000000000007 0.0 192
-193 0.00124502182006836 0.0 0.0 0.0 193
-194 0.00125718116760254 0.0 0.0 0.0 194
-195 0.00125503540039062 0.0 0.0 0.0 195
-196 0.00125598907470703 0.0 0.0 0.0 196
-197 0.00137186050415039 0.0 0.0 0.0 197
-198 0.0011131763458252 0.0 0.0 0.0 198
-199 0.00124788284301758 0.0 0.0 0.0 199
-200 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 200
-201 0.00124597549438477 0.0 0.0 0.0 201
-202 0.00132608413696289 0.0 0.0 0.0 202
-203 0.00129795074462891 0.0 0.0 0.0 203
-204 0.00120997428894043 0.0 0.0 0.0 204
-205 0.00124192237854004 0.0 0.0 0.0 205
-206 0.00126290321350098 0.0 0.0 0.0 206
-207 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 207
-208 0.00125503540039062 0.0 0.0 0.0 208
-209 0.00124883651733398 0.0 0.0 0.0 209
-210 0.00124192237854004 0.0 0.0 0.0 210
-211 0.00124812126159668 0.0 0.0 0.0 211
-212 0.00125002861022949 0.0 0.0 0.0 212
-213 0.00124287605285645 0.0 0.0 0.0 213
-214 0.00125288963317871 0.0 0.0 0.0 214
-215 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 215
-216 0.00124287605285645 0.0 0.0 0.0 216
-217 0.00124001502990723 0.0 0.0 0.0 217
-218 0.00124883651733398 0.0 0.0 0.0 218
-219 0.00124192237854004 0.0 0.0 0.0 219
-220 0.00123405456542969 0.0 0.0 0.0 220
-221 0.00124883651733398 0.0 0.0 0.0 221
-222 0.00123810768127441 0.0 0.0 0.0 222
-223 0.0012359619140625 0.00999999999999979 0.00999999999999979 0.0 223
-224 0.00123405456542969 0.0 0.0 0.0 224
-225 0.00124788284301758 0.0 0.0 0.0 225
-226 0.00148200988769531 0.0 0.0 0.0 226
-227 0.00123882293701172 0.0 0.0 0.0 227
-228 0.00124907493591309 0.0 0.0 0.0 228
-229 0.00124120712280273 0.0 0.0 0.0 229
-230 0.00124096870422363 0.0 0.0 0.0 230
-231 0.00124812126159668 0.0100000000000007 0.0100000000000007 0.0 231
-232 0.00124001502990723 0.0 0.0 0.0 232
-233 0.001251220703125 0.0 0.0 0.0 233
-234 0.00123810768127441 0.0 0.0 0.0 234
-235 0.00125885009765625 0.0 0.0 0.0 235
-236 0.00126409530639648 0.0 0.0 0.0 236
-237 0.0301649570465088 0.0299999999999994 0.0299999999999994 0.0 237
-238 0.00130605697631836 0.0 0.0 0.0 238
-239 0.00129795074462891 0.0100000000000007 0.0100000000000007 0.0 239
-240 0.00127410888671875 0.0 0.0 0.0 240
-241 0.00134420394897461 0.0 0.0 0.0 241
-242 0.00127720832824707 0.0 0.0 0.0 242
-243 0.00126409530639648 0.0 0.0 0.0 243
-244 0.00125288963317871 0.0 0.0 0.0 244
-245 0.00125384330749512 0.0 0.0 0.0 245
-246 0.00124788284301758 0.0 0.0 0.0 246
-247 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 247
-248 0.00125813484191895 0.0 0.0 0.0 248
-249 0.00125002861022949 0.0 0.0 0.0 249
-250 0.00124502182006836 0.0 0.0 0.0 250
-251 0.00125694274902344 0.0 0.0 0.0 251
-252 0.00124192237854004 0.0 0.0 0.0 252
-253 0.00128889083862305 0.0 0.0 0.0 253
-254 0.00124883651733398 0.00999999999999979 0.00999999999999979 0.0 254
-255 0.00124907493591309 0.0 0.0 0.0 255
-256 0.00124812126159668 0.0 0.0 0.0 256
-257 0.00125503540039062 0.0 0.0 0.0 257
-258 0.00125789642333984 0.0 0.0 0.0 258
-259 0.00124692916870117 0.0 0.0 0.0 259
-260 0.00124812126159668 0.0 0.0 0.0 260
-261 0.00124192237854004 0.0 0.0 0.0 261
-262 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 262
-263 0.00124192237854004 0.0 0.0 0.0 263
-264 0.00123500823974609 0.0 0.0 0.0 264
-265 0.00123715400695801 0.0 0.0 0.0 265
-266 0.0018610954284668 0.0 0.0 0.0 266
-267 0.00128507614135742 0.0 0.0 0.0 267
-268 0.00123906135559082 0.0 0.0 0.0 268
-269 0.00124001502990723 0.0 0.0 0.0 269
-270 0.00124907493591309 0.0 0.0 0.0 270
-271 0.00124716758728027 0.0 0.0 0.0 271
-272 0.00124001502990723 0.0 0.0 0.0 272
-273 0.00125288963317871 0.0 0.0 0.0 273
-274 0.00118589401245117 0.0 0.0 0.0 274
-275 0.00124192237854004 0.0 0.0 0.0 275
-276 0.00123906135559082 0.0 0.0 0.0 276
-277 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 277
-278 0.00124597549438477 0.0 0.0 0.0 278
-279 0.00124096870422363 0.0 0.0 0.0 279
-280 0.00124382972717285 0.0 0.0 0.0 280
-281 0.00125694274902344 0.0 0.0 0.0 281
-282 0.00124812126159668 0.0 0.0 0.0 282
-283 0.00124192237854004 0.0 0.0 0.0 283
-284 0.001251220703125 0.0 0.0 0.0 284
-285 0.00128316879272461 0.00999999999999979 0.00999999999999979 0.0 285
-286 0.00124287605285645 0.0 0.0 0.0 286
-287 0.00133800506591797 0.0 0.0 0.0 287
-288 0.00124788284301758 0.0 0.0 0.0 288
-289 0.0012509822845459 0.0 0.0 0.0 289
-290 0.00124883651733398 0.0 0.0 0.0 290
-291 0.00124502182006836 0.0 0.0 0.0 291
-292 0.00124382972717285 0.0 0.0 0.0 292
-293 0.00125908851623535 0.00999999999999979 0.00999999999999979 0.0 293
-294 0.00126791000366211 0.0 0.0 0.0 294
-295 0.0215630531311035 0.0200000000000005 0.0200000000000005 0.0 295
-296 0.00352096557617188 0.0 0.0 0.0 296
-297 0.00220417976379395 0.0 0.0 0.0 297
-298 0.00125384330749512 0.00999999999999979 0.00999999999999979 0.0 298
-299 0.00129985809326172 0.0 0.0 0.0 299
-300 0.00123715400695801 0.0 0.0 0.0 300
-301 0.00124096870422363 0.0 0.0 0.0 301
-302 0.00124001502990723 0.0 0.0 0.0 302
-303 0.00123405456542969 0.0 0.0 0.0 303
-304 0.0012509822845459 0.0 0.0 0.0 304
-305 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 305
-306 0.00125288963317871 0.0 0.0 0.0 306
-307 0.00126099586486816 0.0 0.0 0.0 307
-308 0.00124788284301758 0.0 0.0 0.0 308
-309 0.00124907493591309 0.0 0.0 0.0 309
-310 0.00124096870422363 0.0 0.0 0.0 310
-311 0.00125002861022949 0.0 0.0 0.0 311
-312 0.0012519359588623 0.0 0.0 0.0 312
-313 0.00126314163208008 0.0100000000000007 0.0100000000000007 0.0 313
-314 0.00124406814575195 0.0 0.0 0.0 314
-315 0.00125789642333984 0.0 0.0 0.0 315
-316 0.00128793716430664 0.0 0.0 0.0 316
-317 0.0012509822845459 0.0 0.0 0.0 317
-318 0.00156903266906738 0.0 0.0 0.0 318
-319 0.00181221961975098 0.0 0.0 0.0 319
-320 0.0018010139465332 0.00999999999999979 0.00999999999999979 0.0 320
-321 0.00193095207214355 0.0 0.0 0.0 321
-322 0.0014030933380127 0.0 0.0 0.0 322
-323 0.0012519359588623 0.0 0.0 0.0 323
-324 0.00121903419494629 0.0 0.0 0.0 324
-325 0.00120687484741211 0.0 0.0 0.0 325
-326 0.00123000144958496 0.0 0.0 0.0 326
-327 0.00123095512390137 0.00999999999999979 0.00999999999999979 0.0 327
-328 0.00124692916870117 0.0 0.0 0.0 328
-329 0.00127005577087402 0.0 0.0 0.0 329
-330 0.00124716758728027 0.0 0.0 0.0 330
-331 0.00126481056213379 0.0 0.0 0.0 331
-332 0.00125694274902344 0.0 0.0 0.0 332
-333 0.00118613243103027 0.0 0.0 0.0 333
-334 0.00124001502990723 0.0 0.0 0.0 334
-335 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 335
-336 0.00126791000366211 0.0 0.0 0.0 336
-337 0.00124692916870117 0.0 0.0 0.0 337
-338 0.00124907493591309 0.0 0.0 0.0 338
-339 0.00126218795776367 0.0 0.0 0.0 339
-340 0.00124406814575195 0.0 0.0 0.0 340
-341 0.0012359619140625 0.0 0.0 0.0 341
-342 0.00125885009765625 0.0100000000000007 0.0100000000000007 0.0 342
-343 0.00131320953369141 0.0 0.0 0.0 343
-344 0.0012519359588623 0.0 0.0 0.0 344
-345 0.00123691558837891 0.0 0.0 0.0 345
-346 0.00125694274902344 0.0 0.0 0.0 346
-347 0.00139403343200684 0.0 0.0 0.0 347
-348 0.00127506256103516 0.0 0.0 0.0 348
-349 0.00130009651184082 0.0 0.0 0.0 349
-350 0.00128412246704102 0.00999999999999979 0.00999999999999979 0.0 350
-351 0.00133395195007324 0.0 0.0 0.0 351
-352 0.00152087211608887 0.0 0.0 0.0 352
-353 0.0015110969543457 0.0 0.0 0.0 353
-354 0.0320370197296143 0.0299999999999994 0.0299999999999994 0.0 354
-355 0.00130319595336914 0.0 0.0 0.0 355
-356 0.0012969970703125 0.0100000000000007 0.0100000000000007 0.0 356
-357 0.00127792358398438 0.0 0.0 0.0 357
-358 0.00127506256103516 0.0 0.0 0.0 358
-359 0.00126791000366211 0.0 0.0 0.0 359
-360 0.00126385688781738 0.0 0.0 0.0 360
-361 0.00125694274902344 0.0 0.0 0.0 361
-362 0.00125002861022949 0.0 0.0 0.0 362
-363 0.00125598907470703 0.0 0.0 0.0 363
-364 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 364
-365 0.00124692916870117 0.0 0.0 0.0 365
-366 0.00125503540039062 0.0 0.0 0.0 366
-367 0.00125217437744141 0.0 0.0 0.0 367
-368 0.00124406814575195 0.0 0.0 0.0 368
-369 0.00125789642333984 0.0 0.0 0.0 369
-370 0.0012509822845459 0.0 0.0 0.0 370
-371 0.00124287605285645 0.0 0.0 0.0 371
-372 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 372
-373 0.00124692916870117 0.0 0.0 0.0 373
-374 0.0012519359588623 0.0 0.0 0.0 374
-375 0.0012519359588623 0.0 0.0 0.0 375
-376 0.00125503540039062 0.0 0.0 0.0 376
-377 0.00123691558837891 0.0 0.0 0.0 377
-378 0.00123310089111328 0.0 0.0 0.0 378
-379 0.00123190879821777 0.0 0.0 0.0 379
-380 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 380
-381 0.00123906135559082 0.0 0.0 0.0 381
-382 0.00124883651733398 0.0 0.0 0.0 382
-383 0.00124192237854004 0.0 0.0 0.0 383
-384 0.0012509822845459 0.0 0.0 0.0 384
-385 0.00124406814575195 0.0 0.0 0.0 385
-386 0.00123405456542969 0.0 0.0 0.0 386
-387 0.00124788284301758 0.0100000000000007 0.0100000000000007 0.0 387
-388 0.00125002861022949 0.0 0.0 0.0 388
-389 0.00123214721679688 0.0 0.0 0.0 389
-390 0.00123810768127441 0.0 0.0 0.0 390
-391 0.00124287605285645 0.0 0.0 0.0 391
-392 0.0012359619140625 0.0 0.0 0.0 392
-393 0.00123405456542969 0.0 0.0 0.0 393
-394 0.00124621391296387 0.0 0.0 0.0 394
-395 0.00124907493591309 0.00999999999999979 0.00999999999999979 0.0 395
-396 0.00124216079711914 0.0 0.0 0.0 396
-397 0.00123190879821777 0.0 0.0 0.0 397
-398 0.00139594078063965 0.0 0.0 0.0 398
-399 0.0022280216217041 0.0 0.0 0.0 399
-400 0.00197100639343262 0.0 0.0 0.0 400
-401 0.00163888931274414 0.00999999999999979 0.00999999999999979 0.0 401
-402 0.00142812728881836 0.0 0.0 0.0 402
-403 0.00138711929321289 0.0 0.0 0.0 403
-404 0.00148701667785645 0.0 0.0 0.0 404
-405 0.00162696838378906 0.0 0.0 0.0 405
-406 0.00157594680786133 0.0 0.0 0.0 406
-407 0.00158596038818359 0.00999999999999979 0.00999999999999979 0.0 407
-408 0.00186491012573242 0.0 0.0 0.0 408
-409 0.0016481876373291 0.0 0.0 0.0 409
-410 0.00135707855224609 0.0 0.0 0.0 410
-411 0.00129485130310059 0.0 0.0 0.0 411
-412 0.0299890041351318 0.0300000000000002 0.0300000000000002 0.0 412
-413 0.00138497352600098 0.0 0.0 0.0 413
-414 0.0013120174407959 0.0 0.0 0.0 414
-415 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 415
-416 0.00128507614135742 0.0 0.0 0.0 416
-417 0.00126981735229492 0.0 0.0 0.0 417
-418 0.00126814842224121 0.0 0.0 0.0 418
-419 0.00125718116760254 0.0 0.0 0.0 419
-420 0.00125408172607422 0.0 0.0 0.0 420
-421 0.0012509822845459 0.0 0.0 0.0 421
-422 0.00124716758728027 0.0 0.0 0.0 422
-423 0.00125408172607422 0.0100000000000007 0.0100000000000007 0.0 423
-424 0.001251220703125 0.0 0.0 0.0 424
-425 0.00124812126159668 0.0 0.0 0.0 425
-426 0.00124692916870117 0.0 0.0 0.0 426
-427 0.00124597549438477 0.0 0.0 0.0 427
-428 0.001251220703125 0.0 0.0 0.0 428
-429 0.00124311447143555 0.0 0.0 0.0 429
-430 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 430
-431 0.00124311447143555 0.0 0.0 0.0 431
-432 0.00125002861022949 0.0 0.0 0.0 432
-433 0.00125002861022949 0.0 0.0 0.0 433
-434 0.00125002861022949 0.0 0.0 0.0 434
-435 0.00124502182006836 0.0 0.0 0.0 435
-436 0.00124382972717285 0.0 0.0 0.0 436
-437 0.00124812126159668 0.0 0.0 0.0 437
-438 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 438
-439 0.00122785568237305 0.0 0.0 0.0 439
-440 0.00123214721679688 0.0 0.0 0.0 440
-441 0.00123691558837891 0.0 0.0 0.0 441
-442 0.00124502182006836 0.0 0.0 0.0 442
-443 0.00123405456542969 0.0 0.0 0.0 443
-444 0.00124311447143555 0.0 0.0 0.0 444
-445 0.00124382972717285 0.0 0.0 0.0 445
-446 0.00123906135559082 0.00999999999999979 0.00999999999999979 0.0 446
-447 0.00124096870422363 0.0 0.0 0.0 447
-448 0.00124311447143555 0.0 0.0 0.0 448
-449 0.00124788284301758 0.0 0.0 0.0 449
-450 0.00123500823974609 0.0 0.0 0.0 450
-451 0.00124096870422363 0.0 0.0 0.0 451
-452 0.00123906135559082 0.0 0.0 0.0 452
-453 0.00123500823974609 0.0 0.0 0.0 453
-454 0.0012359619140625 0.0100000000000007 0.0100000000000007 0.0 454
-455 0.00124192237854004 0.0 0.0 0.0 455
-456 0.00124096870422363 0.0 0.0 0.0 456
-457 0.00123405456542969 0.0 0.0 0.0 457
-458 0.00124311447143555 0.0 0.0 0.0 458
-459 0.00158381462097168 0.0 0.0 0.0 459
-460 0.00182890892028809 0.0 0.0 0.0 460
-461 0.00183510780334473 0.00999999999999979 0.00999999999999979 0.0 461
-462 0.00188088417053223 0.0 0.0 0.0 462
-463 0.00174307823181152 0.0 0.0 0.0 463
-464 0.00124692916870117 0.0 0.0 0.0 464
-465 0.00123906135559082 0.0 0.0 0.0 465
-466 0.00124096870422363 0.0 0.0 0.0 466
-467 0.00124311447143555 0.00999999999999979 0.00999999999999979 0.0 467
-468 0.00125503540039062 0.0 0.0 0.0 468
-469 0.00125908851623535 0.0 0.0 0.0 469
-470 0.0304310321807861 0.0300000000000002 0.0300000000000002 0.0 470
-471 0.00145387649536133 0.0 0.0 0.0 471
-472 0.00129985809326172 0.0 0.0 0.0 472
-473 0.00149822235107422 0.0 0.0 0.0 473
-474 0.0015261173248291 0.0 0.0 0.0 474
-475 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 475
-476 0.0012669563293457 0.0 0.0 0.0 476
-477 0.00122594833374023 0.0 0.0 0.0 477
-478 0.00125002861022949 0.0 0.0 0.0 478
-479 0.00124478340148926 0.0 0.0 0.0 479
-480 0.00125694274902344 0.0 0.0 0.0 480
-481 0.001251220703125 0.0 0.0 0.0 481
-482 0.0012509822845459 0.0 0.0 0.0 482
-483 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 483
-484 0.00125288963317871 0.0 0.0 0.0 484
-485 0.00125408172607422 0.0 0.0 0.0 485
-486 0.00125718116760254 0.0 0.0 0.0 486
-487 0.00124716758728027 0.0 0.0 0.0 487
-488 0.00117087364196777 0.0 0.0 0.0 488
-489 0.00124812126159668 0.0 0.0 0.0 489
-490 0.00122618675231934 0.00999999999999979 0.00999999999999979 0.0 490
-491 0.00125598907470703 0.0 0.0 0.0 491
-492 0.00124311447143555 0.0 0.0 0.0 492
-493 0.00124192237854004 0.0 0.0 0.0 493
-494 0.00124692916870117 0.0 0.0 0.0 494
-495 0.00123381614685059 0.0 0.0 0.0 495
-496 0.00123691558837891 0.0 0.0 0.0 496
-497 0.00123906135559082 0.0 0.0 0.0 497
-498 0.00125718116760254 0.0100000000000007 0.0100000000000007 0.0 498
-499 0.00124502182006836 0.0 0.0 0.0 499
-500 0.00124788284301758 0.0 0.0 0.0 500
-501 0.00124812126159668 0.0 0.0 0.0 501
-502 0.00124096870422363 0.0 0.0 0.0 502
-503 0.00124287605285645 0.0 0.0 0.0 503
-504 0.00122690200805664 0.0 0.0 0.0 504
-505 0.00124406814575195 0.0 0.0 0.0 505
-506 0.00123786926269531 0.00999999999999979 0.00999999999999979 0.0 506
-507 0.00124001502990723 0.0 0.0 0.0 507
-508 0.0012519359588623 0.0 0.0 0.0 508
-509 0.00124597549438477 0.0 0.0 0.0 509
-510 0.00124311447143555 0.0 0.0 0.0 510
-511 0.00124979019165039 0.0 0.0 0.0 511
-512 0.00124502182006836 0.0 0.0 0.0 512
-513 0.00124001502990723 0.0 0.0 0.0 513
-514 0.00123810768127441 0.00999999999999979 0.00999999999999979 0.0 514
-515 0.00125002861022949 0.0 0.0 0.0 515
-516 0.00124812126159668 0.0 0.0 0.0 516
-517 0.00124311447143555 0.0 0.0 0.0 517
-518 0.00125288963317871 0.0 0.0 0.0 518
-519 0.00124979019165039 0.0 0.0 0.0 519
-520 0.00124192237854004 0.0 0.0 0.0 520
-521 0.00124406814575195 0.0 0.0 0.0 521
-522 0.00125622749328613 0.00999999999999979 0.00999999999999979 0.0 522
-523 0.00124907493591309 0.0 0.0 0.0 523
-524 0.00124692916870117 0.0 0.0 0.0 524
-525 0.00125002861022949 0.0 0.0 0.0 525
-526 0.0012671947479248 0.0 0.0 0.0 526
-527 0.00126910209655762 0.0 0.0 0.0 527
-528 0.0301029682159424 0.0300000000000002 0.0300000000000002 0.0 528
-529 0.00129103660583496 0.0 0.0 0.0 529
-530 0.00132203102111816 0.00999999999999979 0.00999999999999979 0.0 530
-531 0.00127696990966797 0.0 0.0 0.0 531
-532 0.00128507614135742 0.0 0.0 0.0 532
-533 0.00127196311950684 0.0 0.0 0.0 533
-534 0.00127100944519043 0.0 0.0 0.0 534
-535 0.00126886367797852 0.0 0.0 0.0 535
-536 0.00125789642333984 0.0 0.0 0.0 536
-537 0.00124311447143555 0.0 0.0 0.0 537
-538 0.0012509822845459 0.0100000000000007 0.0100000000000007 0.0 538
-539 0.00125908851623535 0.0 0.0 0.0 539
-540 0.00124788284301758 0.0 0.0 0.0 540
-541 0.00125002861022949 0.0 0.0 0.0 541
-542 0.0012671947479248 0.0 0.0 0.0 542
-543 0.00125312805175781 0.0 0.0 0.0 543
-544 0.00125885009765625 0.0 0.0 0.0 544
-545 0.00125503540039062 0.00999999999999979 0.00999999999999979 0.0 545
-546 0.00126099586486816 0.0 0.0 0.0 546
-547 0.00126218795776367 0.0 0.0 0.0 547
-548 0.00124883651733398 0.0 0.0 0.0 548
-549 0.00126099586486816 0.0 0.0 0.0 549
-550 0.00126194953918457 0.0 0.0 0.0 550
-551 0.00119996070861816 0.0 0.0 0.0 551
-552 0.00124883651733398 0.0 0.0 0.0 552
-553 0.00124192237854004 0.00999999999999979 0.00999999999999979 0.0 553
-554 0.00124382972717285 0.0 0.0 0.0 554
-555 0.00124311447143555 0.0 0.0 0.0 555
-556 0.00123500823974609 0.0 0.0 0.0 556
-557 0.0012359619140625 0.0 0.0 0.0 557
-558 0.00123882293701172 0.0 0.0 0.0 558
-559 0.0012519359588623 0.0 0.0 0.0 559
-560 0.00124716758728027 0.0 0.0 0.0 560
-561 0.00124406814575195 0.0 0.0 0.0 561
-562 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 562
-563 0.00129103660583496 0.0 0.0 0.0 563
-564 0.00124001502990723 0.0 0.0 0.0 564
-565 0.00124406814575195 0.0 0.0 0.0 565
-566 0.00125789642333984 0.0 0.0 0.0 566
-567 0.00124406814575195 0.0 0.0 0.0 567
-568 0.00123500823974609 0.0 0.0 0.0 568
-569 0.00124311447143555 0.0 0.0 0.0 569
-570 0.00124096870422363 0.0 0.0 0.0 570
-571 0.00124001502990723 0.0 0.0 0.0 571
-572 0.00123786926269531 0.0 0.0 0.0 572
-573 0.00125288963317871 0.0 0.0 0.0 573
-574 0.00124502182006836 0.0 0.0 0.0 574
-575 0.00124192237854004 0.0 0.0 0.0 575
-576 0.00124502182006836 0.0 0.0 0.0 576
-577 0.00125479698181152 0.00999999999999979 0.00999999999999979 0.0 577
-578 0.00124502182006836 0.0 0.0 0.0 578
-579 0.00124502182006836 0.0 0.0 0.0 579
-580 0.00124692916870117 0.0 0.0 0.0 580
-581 0.00123095512390137 0.0 0.0 0.0 581
-582 0.00124287605285645 0.0 0.0 0.0 582
-583 0.00125288963317871 0.0 0.0 0.0 583
-584 0.0012669563293457 0.0 0.0 0.0 584
-585 0.00127005577087402 0.00999999999999979 0.00999999999999979 0.0 585
-586 0.0311369895935059 0.0300000000000002 0.0300000000000002 0.0 586
-587 0.00198984146118164 0.0 0.0 0.0 587
-588 0.00141692161560059 0.0 0.0 0.0 588
-589 0.00131011009216309 0.0 0.0 0.0 589
-590 0.0012810230255127 0.0 0.0 0.0 590
-591 0.00123500823974609 0.0 0.0 0.0 591
-592 0.00117397308349609 0.00999999999999979 0.00999999999999979 0.0 592
-593 0.00125908851623535 0.0 0.0 0.0 593
-594 0.00126194953918457 0.0 0.0 0.0 594
-595 0.00124597549438477 0.0 0.0 0.0 595
-596 0.00124692916870117 0.0 0.0 0.0 596
-597 0.00125479698181152 0.0 0.0 0.0 597
-598 0.00127911567687988 0.0 0.0 0.0 598
-599 0.00125789642333984 0.0 0.0 0.0 599
-600 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 600
-601 0.00124907493591309 0.0 0.0 0.0 601
-602 0.00124216079711914 0.0 0.0 0.0 602
-603 0.00124907493591309 0.0 0.0 0.0 603
-604 0.00125384330749512 0.0 0.0 0.0 604
-605 0.00125694274902344 0.0 0.0 0.0 605
-606 0.00124192237854004 0.0 0.0 0.0 606
-607 0.00124502182006836 0.0 0.0 0.0 607
-608 0.0012509822845459 0.0100000000000007 0.0100000000000007 0.0 608
-609 0.00123906135559082 0.0 0.0 0.0 609
-610 0.0014030933380127 0.0 0.0 0.0 610
-611 0.00124883651733398 0.0 0.0 0.0 611
-612 0.00135397911071777 0.0 0.0 0.0 612
-613 0.00174593925476074 0.0 0.0 0.0 613
-614 0.00124716758728027 0.0 0.0 0.0 614
-615 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 615
-616 0.00125503540039062 0.0 0.0 0.0 616
-617 0.00140786170959473 0.0 0.0 0.0 617
-618 0.00125312805175781 0.0 0.0 0.0 618
-619 0.0012509822845459 0.0 0.0 0.0 619
-620 0.00124096870422363 0.0 0.0 0.0 620
-621 0.0012359619140625 0.0 0.0 0.0 621
-622 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 622
-623 0.00124406814575195 0.0 0.0 0.0 623
-624 0.00123000144958496 0.0 0.0 0.0 624
-625 0.00124001502990723 0.0 0.0 0.0 625
-626 0.00124001502990723 0.0 0.0 0.0 626
-627 0.00124001502990723 0.0 0.0 0.0 627
-628 0.00125885009765625 0.0 0.0 0.0 628
-629 0.00124907493591309 0.0 0.0 0.0 629
-630 0.00124192237854004 0.00999999999999979 0.00999999999999979 0.0 630
-631 0.00124406814575195 0.0 0.0 0.0 631
-632 0.0012519359588623 0.0 0.0 0.0 632
-633 0.00124502182006836 0.0 0.0 0.0 633
-634 0.00124287605285645 0.0 0.0 0.0 634
-635 0.00123906135559082 0.0 0.0 0.0 635
-636 0.00124621391296387 0.0 0.0 0.0 636
-637 0.00124502182006836 0.0 0.0 0.0 637
-638 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 638
-639 0.0012509822845459 0.0 0.0 0.0 639
-640 0.00132584571838379 0.0 0.0 0.0 640
-641 0.00126409530639648 0.0 0.0 0.0 641
-642 0.00126504898071289 0.0 0.0 0.0 642
-643 0.00127911567687988 0.0 0.0 0.0 643
-644 0.0240340232849121 0.0300000000000002 0.0300000000000002 0.0 644
-645 0.0101561546325684 0.00999999999999979 0.00999999999999979 0.0 645
-646 0.00133299827575684 0.0 0.0 0.0 646
-647 0.00129604339599609 0.0 0.0 0.0 647
-648 0.00124382972717285 0.0 0.0 0.0 648
-649 0.00127410888671875 0.0 0.0 0.0 649
-650 0.00126409530639648 0.0 0.0 0.0 650
-651 0.0012519359588623 0.0 0.0 0.0 651
-652 0.00124597549438477 0.0100000000000007 0.0100000000000007 0.0 652
-653 0.000922918319702148 0.0 0.0 0.0 653
-654 0.00125503540039062 0.0 0.0 0.0 654
-655 0.00124287605285645 0.0 0.0 0.0 655
-656 0.00124692916870117 0.0 0.0 0.0 656
-657 0.00126004219055176 0.0 0.0 0.0 657
-658 0.00125384330749512 0.0 0.0 0.0 658
-659 0.0013279914855957 0.0 0.0 0.0 659
-660 0.00124502182006836 0.00999999999999979 0.00999999999999979 0.0 660
-661 0.00125598907470703 0.0 0.0 0.0 661
-662 0.00124192237854004 0.0 0.0 0.0 662
-663 0.00124096870422363 0.0 0.0 0.0 663
-664 0.00125312805175781 0.0 0.0 0.0 664
-665 0.00124692916870117 0.0 0.0 0.0 665
-666 0.00124597549438477 0.0 0.0 0.0 666
-667 0.00123977661132812 0.0 0.0 0.0 667
-668 0.00124406814575195 0.0 0.0 0.0 668
-669 0.00123500823974609 0.0 0.0 0.0 669
-670 0.00124502182006836 0.0 0.0 0.0 670
-671 0.00124502182006836 0.0 0.0 0.0 671
-672 0.00124382972717285 0.0 0.0 0.0 672
-673 0.00123190879821777 0.0 0.0 0.0 673
-674 0.00123500823974609 0.0 0.0 0.0 674
-675 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 675
-676 0.00123310089111328 0.0 0.0 0.0 676
-677 0.00123095512390137 0.0 0.0 0.0 677
-678 0.00124192237854004 0.0 0.0 0.0 678
-679 0.00122690200805664 0.0 0.0 0.0 679
-680 0.00123286247253418 0.0 0.0 0.0 680
-681 0.00124096870422363 0.0 0.0 0.0 681
-682 0.00124192237854004 0.0 0.0 0.0 682
-683 0.00124692916870117 0.0100000000000007 0.0100000000000007 0.0 683
-684 0.0012359619140625 0.0 0.0 0.0 684
-685 0.00123286247253418 0.0 0.0 0.0 685
-686 0.00124001502990723 0.0 0.0 0.0 686
-687 0.00124001502990723 0.0 0.0 0.0 687
-688 0.00123786926269531 0.0 0.0 0.0 688
-689 0.00125002861022949 0.0 0.0 0.0 689
-690 0.00124907493591309 0.0 0.0 0.0 690
-691 0.00129103660583496 0.00999999999999979 0.00999999999999979 0.0 691
-692 0.00124311447143555 0.0 0.0 0.0 692
-693 0.00129890441894531 0.0 0.0 0.0 693
-694 0.00130796432495117 0.0 0.0 0.0 694
-695 0.00123500823974609 0.0 0.0 0.0 695
-696 0.00124716758728027 0.0 0.0 0.0 696
-697 0.00123906135559082 0.0 0.0 0.0 697
-698 0.00124287605285645 0.0 0.0 0.0 698
-699 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 699
-700 0.00124907493591309 0.0 0.0 0.0 700
-701 0.0300769805908203 0.0300000000000002 0.0300000000000002 0.0 701
-702 0.0012669563293457 0.0 0.0 0.0 702
-703 0.00174999237060547 0.0 0.0 0.0 703
-704 0.00131797790527344 0.0 0.0 0.0 704
-705 0.00130391120910645 0.0 0.0 0.0 705
-706 0.00126886367797852 0.0 0.0 0.0 706
-707 0.00127601623535156 0.00999999999999979 0.00999999999999979 0.0 707
-708 0.00125503540039062 0.0 0.0 0.0 708
-709 0.00125312805175781 0.0 0.0 0.0 709
-710 0.00124597549438477 0.0 0.0 0.0 710
-711 0.00125217437744141 0.0 0.0 0.0 711
-712 0.00124311447143555 0.0 0.0 0.0 712
-713 0.00124287605285645 0.0 0.0 0.0 713
-714 0.00125503540039062 0.00999999999999979 0.00999999999999979 0.0 714
-715 0.0012519359588623 0.0 0.0 0.0 715
-716 0.00124502182006836 0.0 0.0 0.0 716
-717 0.00124502182006836 0.0 0.0 0.0 717
-718 0.00126814842224121 0.0 0.0 0.0 718
-719 0.00124883651733398 0.0 0.0 0.0 719
-720 0.00124812126159668 0.0 0.0 0.0 720
-721 0.00125408172607422 0.0 0.0 0.0 721
-722 0.00125694274902344 0.0100000000000007 0.0100000000000007 0.0 722
-723 0.00125002861022949 0.0 0.0 0.0 723
-724 0.0012509822845459 0.0 0.0 0.0 724
-725 0.00124502182006836 0.0 0.0 0.0 725
-726 0.00115799903869629 0.0 0.0 0.0 726
-727 0.00148391723632812 0.0 0.0 0.0 727
-728 0.00177001953125 0.0 0.0 0.0 728
-729 0.00183606147766113 0.00999999999999979 0.00999999999999979 0.0 729
-730 0.00171613693237305 0.0 0.0 0.0 730
-731 0.00128793716430664 0.0 0.0 0.0 731
-732 0.000819921493530273 0.0 0.0 0.0 732
-733 0.00124001502990723 0.0 0.0 0.0 733
-734 0.00124692916870117 0.0 0.0 0.0 734
-735 0.00124001502990723 0.0 0.0 0.0 735
-736 0.00123882293701172 0.0 0.0 0.0 736
-737 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 737
-738 0.00124502182006836 0.0 0.0 0.0 738
-739 0.00124096870422363 0.0 0.0 0.0 739
-740 0.00124502182006836 0.0 0.0 0.0 740
-741 0.00124096870422363 0.0 0.0 0.0 741
-742 0.00124287605285645 0.0 0.0 0.0 742
-743 0.00124096870422363 0.0 0.0 0.0 743
-744 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 744
-745 0.00138497352600098 0.0 0.0 0.0 745
-746 0.00129485130310059 0.0 0.0 0.0 746
-747 0.0012509822845459 0.0 0.0 0.0 747
-748 0.00124907493591309 0.0 0.0 0.0 748
-749 0.00123500823974609 0.0 0.0 0.0 749
-750 0.00124621391296387 0.0 0.0 0.0 750
-751 0.00124096870422363 0.0 0.0 0.0 751
-752 0.00123810768127441 0.0100000000000007 0.0100000000000007 0.0 752
-753 0.00124287605285645 0.0 0.0 0.0 753
-754 0.00124716758728027 0.0 0.0 0.0 754
-755 0.00124311447143555 0.0 0.0 0.0 755
-756 0.00124883651733398 0.0 0.0 0.0 756
-757 0.0014030933380127 0.0 0.0 0.0 757
-758 0.0220100879669189 0.0199999999999996 0.0199999999999996 0.0 758
-759 0.00328278541564941 0.00999999999999979 0.00999999999999979 0.0 759
-760 0.00999212265014648 0.00999999999999979 0.00999999999999979 0.0 760
-761 0.00151991844177246 0.0 0.0 0.0 761
-762 0.00131011009216309 0.0 0.0 0.0 762
-763 0.00128889083862305 0.0 0.0 0.0 763
-764 0.0012819766998291 0.0 0.0 0.0 764
-765 0.0012819766998291 0.0 0.0 0.0 765
-766 0.00126886367797852 0.0100000000000007 0.0100000000000007 0.0 766
-767 0.00125288963317871 0.0 0.0 0.0 767
-768 0.00125408172607422 0.0 0.0 0.0 768
-769 0.00125718116760254 0.0 0.0 0.0 769
-770 0.00125384330749512 0.0 0.0 0.0 770
-771 0.00125002861022949 0.0 0.0 0.0 771
-772 0.00124406814575195 0.0 0.0 0.0 772
-773 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 773
-774 0.0012509822845459 0.0 0.0 0.0 774
-775 0.00124502182006836 0.0 0.0 0.0 775
-776 0.00124788284301758 0.0 0.0 0.0 776
-777 0.00125408172607422 0.0 0.0 0.0 777
-778 0.00125288963317871 0.0 0.0 0.0 778
-779 0.00124788284301758 0.0 0.0 0.0 779
-780 0.00124287605285645 0.0 0.0 0.0 780
-781 0.00125694274902344 0.00999999999999979 0.00999999999999979 0.0 781
-782 0.00124096870422363 0.0 0.0 0.0 782
-783 0.00123691558837891 0.0 0.0 0.0 783
-784 0.00124287605285645 0.0 0.0 0.0 784
-785 0.00124597549438477 0.0 0.0 0.0 785
-786 0.00123786926269531 0.0 0.0 0.0 786
-787 0.00124502182006836 0.0 0.0 0.0 787
-788 0.00124096870422363 0.0 0.0 0.0 788
-789 0.00124096870422363 0.00999999999999979 0.00999999999999979 0.0 789
-790 0.00123500823974609 0.0 0.0 0.0 790
-791 0.00124001502990723 0.0 0.0 0.0 791
-792 0.00124001502990723 0.0 0.0 0.0 792
-793 0.00123000144958496 0.0 0.0 0.0 793
-794 0.00124406814575195 0.0 0.0 0.0 794
-795 0.00123691558837891 0.0 0.0 0.0 795
-796 0.00123286247253418 0.0 0.0 0.0 796
-797 0.00123906135559082 0.0100000000000007 0.0100000000000007 0.0 797
-798 0.00120997428894043 0.0 0.0 0.0 798
-799 0.00156807899475098 0.0 0.0 0.0 799
-800 0.00123286247253418 0.0 0.0 0.0 800
-801 0.00125002861022949 0.0 0.0 0.0 801
-802 0.0012199878692627 0.0 0.0 0.0 802
-803 0.00123405456542969 0.0 0.0 0.0 803
-804 0.0012519359588623 0.00999999999999979 0.00999999999999979 0.0 804
-805 0.00124192237854004 0.0 0.0 0.0 805
-806 0.00124406814575195 0.0 0.0 0.0 806
-807 0.00124001502990723 0.0 0.0 0.0 807
-808 0.00124692916870117 0.0 0.0 0.0 808
-809 0.00125002861022949 0.0 0.0 0.0 809
-810 0.00125312805175781 0.0 0.0 0.0 810
-811 0.00126981735229492 0.0 0.0 0.0 811
-812 0.00124001502990723 0.00999999999999979 0.00999999999999979 0.0 812
-813 0.00124597549438477 0.0 0.0 0.0 813
-814 0.00126290321350098 0.0 0.0 0.0 814
-815 0.0310249328613281 0.0300000000000002 0.0300000000000002 0.0 815
-816 0.000841140747070312 0.0 0.0 0.0 816
-817 0.000878095626831055 0.0 0.0 0.0 817
-818 0.000874042510986328 0.0 0.0 0.0 818
-819 0.000869035720825195 0.0 0.0 0.0 819
-820 0.0012819766998291 0.0 0.0 0.0 820
-821 0.00133609771728516 0.00999999999999979 0.00999999999999979 0.0 821
-822 0.0012660026550293 0.0 0.0 0.0 822
-823 0.0013270378112793 0.0 0.0 0.0 823
-824 0.00125718116760254 0.0 0.0 0.0 824
-825 0.00124907493591309 0.0 0.0 0.0 825
-826 0.00137901306152344 0.0 0.0 0.0 826
-827 0.00125503540039062 0.0 0.0 0.0 827
-828 0.0012509822845459 0.0 0.0 0.0 828
-829 0.00126791000366211 0.00999999999999979 0.00999999999999979 0.0 829
-830 0.00128698348999023 0.0 0.0 0.0 830
-831 0.00125598907470703 0.0 0.0 0.0 831
-832 0.00135207176208496 0.0 0.0 0.0 832
-833 0.000869035720825195 0.0 0.0 0.0 833
-834 0.00125503540039062 0.0 0.0 0.0 834
-835 0.0012519359588623 0.0 0.0 0.0 835
-836 0.00126004219055176 0.0 0.0 0.0 836
-837 0.00126099586486816 0.0100000000000007 0.0100000000000007 0.0 837
-838 0.00181698799133301 0.0 0.0 0.0 838
-839 0.00126290321350098 0.0 0.0 0.0 839
-840 0.00124096870422363 0.0 0.0 0.0 840
-841 0.00118899345397949 0.0 0.0 0.0 841
-842 0.00124096870422363 0.0 0.0 0.0 842
-843 0.00123286247253418 0.0 0.0 0.0 843
-844 0.00165700912475586 0.00999999999999979 0.00999999999999979 0.0 844
-845 0.00125789642333984 0.0 0.0 0.0 845
-846 0.00123405456542969 0.0 0.0 0.0 846
-847 0.00123095512390137 0.0 0.0 0.0 847
-848 0.0012509822845459 0.0 0.0 0.0 848
-849 0.00123906135559082 0.0 0.0 0.0 849
-850 0.00165104866027832 0.0 0.0 0.0 850
-851 0.00123906135559082 0.00999999999999979 0.00999999999999979 0.0 851
-852 0.00123786926269531 0.0 0.0 0.0 852
-853 0.00120902061462402 0.0 0.0 0.0 853
-854 0.00130009651184082 0.0 0.0 0.0 854
-855 0.00124502182006836 0.0 0.0 0.0 855
-856 0.0016329288482666 0.0 0.0 0.0 856
-857 0.0012509822845459 0.0 0.0 0.0 857
-858 0.00124692916870117 0.0 0.0 0.0 858
-859 0.00129890441894531 0.00999999999999979 0.00999999999999979 0.0 859
-860 0.00123786926269531 0.0 0.0 0.0 860
-861 0.00123786926269531 0.0 0.0 0.0 861
-862 0.0016181468963623 0.0 0.0 0.0 862
-863 0.00124192237854004 0.0 0.0 0.0 863
-864 0.00124692916870117 0.0 0.0 0.0 864
-865 0.00124597549438477 0.0 0.0 0.0 865
-866 0.00124478340148926 0.0100000000000007 0.0100000000000007 0.0 866
-867 0.00123500823974609 0.0 0.0 0.0 867
-868 0.00165414810180664 0.0 0.0 0.0 868
-869 0.00124502182006836 0.0 0.0 0.0 869
-870 0.0012669563293457 0.0 0.0 0.0 870
-871 0.0018620491027832 0.0 0.0 0.0 871
-872 0.0325958728790283 0.04 0.04 0.0 872
-873 0.000857114791870117 0.0 0.0 0.0 873
-874 0.00117611885070801 0.0 0.0 0.0 874
-875 0.000876903533935547 0.0 0.0 0.0 875
-876 0.00108814239501953 0.0 0.0 0.0 876
-877 0.00129008293151855 0.0 0.0 0.0 877
-878 0.00138592720031738 0.0 0.0 0.0 878
-879 0.00126004219055176 0.0 0.0 0.0 879
-880 0.00133490562438965 0.00999999999999979 0.00999999999999979 0.0 880
-881 0.00133109092712402 0.0 0.0 0.0 881
-882 0.00126004219055176 0.0 0.0 0.0 882
-883 0.00134086608886719 0.0 0.0 0.0 883
-884 0.00124907493591309 0.0 0.0 0.0 884
-885 0.00122594833374023 0.0 0.0 0.0 885
-886 0.00130510330200195 0.0 0.0 0.0 886
-887 0.00134396553039551 0.0 0.0 0.0 887
-888 0.00126194953918457 0.00999999999999979 0.00999999999999979 0.0 888
-889 0.00120782852172852 0.0 0.0 0.0 889
-890 0.00124692916870117 0.0 0.0 0.0 890
-891 0.00125813484191895 0.0 0.0 0.0 891
-892 0.0012509822845459 0.0 0.0 0.0 892
-893 0.00136804580688477 0.0 0.0 0.0 893
-894 0.00125718116760254 0.0 0.0 0.0 894
-895 0.00125312805175781 0.00999999999999979 0.00999999999999979 0.0 895
-896 0.00126218795776367 0.0 0.0 0.0 896
-897 0.00123286247253418 0.0 0.0 0.0 897
-898 0.00124406814575195 0.0 0.0 0.0 898
-899 0.00131702423095703 0.0 0.0 0.0 899
-900 0.00123405456542969 0.0 0.0 0.0 900
-901 0.00121402740478516 0.0 0.0 0.0 901
-902 0.00123882293701172 0.0 0.0 0.0 902
-903 0.00123310089111328 0.00999999999999979 0.00999999999999979 0.0 903
-904 0.00124096870422363 0.0 0.0 0.0 904
-905 0.00147390365600586 0.0 0.0 0.0 905
-906 0.0012509822845459 0.0 0.0 0.0 906
-907 0.00124692916870117 0.0 0.0 0.0 907
-908 0.00124907493591309 0.0 0.0 0.0 908
-909 0.00124597549438477 0.0 0.0 0.0 909
-910 0.00124001502990723 0.0 0.0 0.0 910
-911 0.00142002105712891 0.0100000000000007 0.0100000000000007 0.0 911
-912 0.00124502182006836 0.0 0.0 0.0 912
-913 0.00124502182006836 0.0 0.0 0.0 913
-914 0.0012819766998291 0.0 0.0 0.0 914
-915 0.00123786926269531 0.0 0.0 0.0 915
-916 0.00124287605285645 0.0 0.0 0.0 916
-917 0.00142312049865723 0.0 0.0 0.0 917
-918 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 918
-919 0.00124502182006836 0.0 0.0 0.0 919
-920 0.00124692916870117 0.0 0.0 0.0 920
-921 0.00124192237854004 0.0 0.0 0.0 921
-922 0.00119709968566895 0.0 0.0 0.0 922
-923 0.00140190124511719 0.0 0.0 0.0 923
-924 0.00125002861022949 0.0 0.0 0.0 924
-925 0.00124502182006836 0.0 0.0 0.0 925
-926 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 926
-927 0.00127720832824707 0.0 0.0 0.0 927
-928 0.00126409530639648 0.0 0.0 0.0 928
-929 0.0312209129333496 0.0300000000000002 0.0300000000000002 0.0 929
-930 0.00214791297912598 0.0 0.0 0.0 930
-931 0.00183796882629395 0.0 0.0 0.0 931
-932 0.00143814086914062 0.00999999999999979 0.00999999999999979 0.0 932
-933 0.00145792961120605 0.0 0.0 0.0 933
-934 0.00152087211608887 0.0 0.0 0.0 934
-935 0.00213003158569336 0.0 0.0 0.0 935
-936 0.00166201591491699 0.0 0.0 0.0 936
-937 0.0016930103302002 0.0 0.0 0.0 937
-938 0.00139403343200684 0.00999999999999979 0.00999999999999979 0.0 938
-939 0.00214695930480957 0.0 0.0 0.0 939
-940 0.00102400779724121 0.0 0.0 0.0 940
-941 0.0012660026550293 0.0 0.0 0.0 941
-942 0.00126004219055176 0.0 0.0 0.0 942
-943 0.00126194953918457 0.0 0.0 0.0 943
-944 0.00125813484191895 0.0 0.0 0.0 944
-945 0.00152897834777832 0.0100000000000007 0.0100000000000007 0.0 945
-946 0.0012669563293457 0.0 0.0 0.0 946
-947 0.00125408172607422 0.0 0.0 0.0 947
-948 0.00125980377197266 0.0 0.0 0.0 948
-949 0.00126481056213379 0.0 0.0 0.0 949
-950 0.00125908851623535 0.0 0.0 0.0 950
-951 0.00138092041015625 0.0 0.0 0.0 951
-952 0.00125384330749512 0.00999999999999979 0.00999999999999979 0.0 952
-953 0.00108504295349121 0.0 0.0 0.0 953
-954 0.0012509822845459 0.0 0.0 0.0 954
-955 0.00125980377197266 0.0 0.0 0.0 955
-956 0.00131511688232422 0.0 0.0 0.0 956
-957 0.00130796432495117 0.0 0.0 0.0 957
-958 0.00124597549438477 0.0 0.0 0.0 958
-959 0.00125002861022949 0.0 0.0 0.0 959
-960 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 960
-961 0.00124812126159668 0.0 0.0 0.0 961
-962 0.0012509822845459 0.0 0.0 0.0 962
-963 0.00130891799926758 0.0 0.0 0.0 963
-964 0.00123500823974609 0.0 0.0 0.0 964
-965 0.00124096870422363 0.0 0.0 0.0 965
-966 0.00124883651733398 0.0 0.0 0.0 966
-967 0.00124192237854004 0.0 0.0 0.0 967
-968 0.00124502182006836 0.00999999999999979 0.00999999999999979 0.0 968
-969 0.00124597549438477 0.0 0.0 0.0 969
-970 0.00130796432495117 0.0 0.0 0.0 970
-971 0.00124716758728027 0.0 0.0 0.0 971
-972 0.00125408172607422 0.0 0.0 0.0 972
-973 0.00125384330749512 0.0 0.0 0.0 973
-974 0.00124907493591309 0.0 0.0 0.0 974
-975 0.00124502182006836 0.0 0.0 0.0 975
-976 0.00131011009216309 0.0100000000000007 0.0100000000000007 0.0 976
-977 0.00125384330749512 0.0 0.0 0.0 977
-978 0.00124597549438477 0.0 0.0 0.0 978
-979 0.00125503540039062 0.0 0.0 0.0 979
-980 0.00125384330749512 0.0 0.0 0.0 980
-981 0.0012509822845459 0.0 0.0 0.0 981
-982 0.00131988525390625 0.0 0.0 0.0 982
-983 0.00126099586486816 0.00999999999999979 0.00999999999999979 0.0 983
-984 0.00126004219055176 0.0 0.0 0.0 984
-985 0.00127100944519043 0.0 0.0 0.0 985
-986 0.0304250717163086 0.0300000000000002 0.0300000000000002 0.0 986
-987 0.00131678581237793 0.0 0.0 0.0 987
-988 0.00130200386047363 0.0 0.0 0.0 988
-989 0.00139880180358887 0.0 0.0 0.0 989
-990 0.00517010688781738 0.0 0.0 0.0 990
-991 0.00128984451293945 0.00999999999999979 0.00999999999999979 0.0 991
-992 0.00125789642333984 0.0 0.0 0.0 992
-993 0.00152301788330078 0.0 0.0 0.0 993
-994 0.00125598907470703 0.0 0.0 0.0 994
-995 0.00125312805175781 0.0 0.0 0.0 995
-996 0.00125312805175781 0.0 0.0 0.0 996
-997 0.00125598907470703 0.0 0.0 0.0 997
-998 0.00134396553039551 0.0 0.0 0.0 998
-999 0.00124979019165039 0.00999999999999979 0.00999999999999979 0.0 999
-1000 0.00125598907470703 0.0 0.0 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log
deleted file mode 100644
index ca6c64e43..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log
+++ /dev/null
@@ -1,81 +0,0 @@
-========================== 2009-04-01T16:49:42 CEST ===========================
-Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux].
-Running 'ParserBenchmarkExt' for 1000 iterations/method (compare_time=real)
-===============================================================================
-
-This first run is only for warmup.
-ParserBenchmarkExt#parser:
- real total user system
-sum 1.733042240 1.770000000 1.760000000 0.010000000
-min 0.000833988 0.000000000 0.000000000 0.000000000
-std- -0.001838092 -0.003229209 -0.003232727 -0.000306228
-mean 0.001733042 0.001770000 0.001760000 0.000010000
-std+ 0.005304177 0.006769209 0.006752727 0.000326228
-max 0.032314062 0.040000000 0.040000000 0.010000000
-std 0.003571134 0.004999209 0.004992727 0.000316228
-std% 206.061583704 282.441194727 283.677695666 3162.277660168
-harm 0.001283614 nan nan nan
-geo 0.001337350 0.000000000 0.000000000 0.000000000
-q1 0.001236916 0.000000000 0.000000000 0.000000000
-med 0.001246929 0.000000000 0.000000000 0.000000000
-q3 0.001260996 0.000000000 0.000000000 0.000000000
- 1000 577.01998 0.001733042
- calls calls/sec secs/call
-
- 0.03074 -|*
- 0.02759 -|
- 0.02444 -|
- 0.02130 -|
- 0.01815 -|
- 0.01500 -|
- 0.01185 -|
- 0.00870 -|
- 0.00556 -|
- 0.00241 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00125, iqr=0.00002, factor=3.00):
-very_low=32 low=15 high=77 very_high=135
-
-Ljung-Box statistics: q=13.14182 (alpha=0.05, df=50).
-0.00000 < 0.95000 => No autocorrelation was detected.
-
-ParserBenchmarkExt#parser:
- real total user system
-sum 1.624776602 1.620000000 1.620000000 0.000000000
-min 0.000819921 0.000000000 0.000000000 0.000000000
-std- -0.001936067 -0.003223194 -0.003223194 0.000000000
-mean 0.001805307 0.001800000 0.001800000 0.000000000
-std+ 0.005546681 0.006823194 0.006823194 0.000000000
-max 0.032595873 0.040000000 0.040000000 0.000000000
-std 0.003741374 0.005023194 0.005023194 0.000000000
-std% 207.243050150 279.066347558 279.066347558 nan
-harm 0.001297084 nan nan nan
-geo 0.001358799 0.000000000 0.000000000 0.000000000
-q1 0.001241922 0.000000000 0.000000000 0.000000000
-med 0.001249075 0.000000000 0.000000000 0.000000000
-q3 0.001264811 0.000000000 0.000000000 0.000000000
- 900 553.92230 0.001805307
- calls calls/sec secs/call
-
- 0.03101 -|*
- 0.02783 -|
- 0.02465 -|
- 0.02147 -|
- 0.01830 -|
- 0.01512 -|
- 0.01194 -|
- 0.00876 -|
- 0.00559 -|
- 0.00241 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00125, iqr=0.00002, factor=3.00):
-very_low=15 low=9 high=76 very_high=110
-
-Ljung-Box statistics: q=15.89429 (alpha=0.05, df=50).
-0.00000 < 0.95000 => No autocorrelation was detected.
-
-Truncated initial 100 measurements: 1000 -> 900 (-10.00%).
-========================== 2009-04-01T16:49:49 CEST ===========================
-
-Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkExt#parser.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkExt#parser-autocorrelation.dat'.
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat
deleted file mode 100644
index 40a0668a6..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.126526065077488
-3 -0.144961526627029
-4 -0.139357177406834
-5 -0.143974826894912
-6 -0.142298816838391
-7 -0.139337332621068
-8 -0.0804933565996591
-9 0.863154337738992
-10 -0.0856698326462466
-11 -0.139044499260128
-12 -0.144409577021306
-13 -0.139952610271037
-14 -0.137830644370195
-15 -0.138237560134025
-16 -0.0318228583907447
-17 0.762295174674438
-18 -0.0451085401986914
-19 -0.139574314980337
-20 -0.137706022735926
-21 -0.135000055250474
-22 -0.140944565680693
-23 -0.136209503772352
-24 0.0116248943043287
-25 0.668814012806624
-26 0.00194941922845652
-27 -0.132610614145838
-28 -0.110905629572418
-29 -0.142849770878147
-30 -0.143488824970324
-31 -0.134330197021416
-32 0.0538835449451642
-33 0.575132011890069
-34 0.0505429010331842
-35 -0.137467592425517
-36 -0.125877861208834
-37 -0.148631268110284
-38 -0.136115193781866
-39 -0.137935999911469
-40 0.0988849495063306
-41 0.486986888878156
-42 0.0878752779386658
-43 -0.132160917693119
-44 -0.129643145971886
-45 -0.149607998788336
-46 -0.13478438037923
-47 -0.133019295702461
-48 0.14888456218326
-49 0.393046641526692
-50 0.120499739018384
-51 -0.12075319894839
-52 -0.132962236637115
-53 -0.144429618272262
-54 -0.119605702139121
-55 -0.101682767008184
-56 0.152609045047458
-57 0.329588666724346
-58 0.139652155383137
-59 -0.114941895372878
-60 -0.126489834985415
-61 -0.139130898077927
-62 -0.137842155865592
-63 -0.0861253194251446
-64 0.150629648832854
-65 0.281018765279001
-66 0.13915358689329
-67 -0.0896859084267328
-68 -0.123313711110523
-69 -0.142874643960391
-70 -0.135495171639773
-71 -0.0711514410690874
-72 0.147596411956897
-73 0.251872397592371
-74 0.121839586873541
-75 -0.0575973326704366
-76 -0.126799299154496
-77 -0.144543550470945
-78 -0.124111534889387
-79 -0.0466899945416701
-80 0.131315152952299
-81 0.252160996580415
-82 0.10666721386194
-83 -0.0339037628702252
-84 -0.127183439268724
-85 -0.143132479164138
-86 -0.125851156910328
-87 -0.0147264358973224
-88 0.118449575410306
-89 0.201728736307241
-90 0.0886049712661605
-91 -0.00382129887238343
-92 -0.131751835679824
-93 -0.140792586519908
-94 -0.118637713578907
-95 0.02095681301022
-96 0.0813261521961686
-97 0.180482658314394
-98 0.0795745616300617
-99 0.0126200590172042
-100 -0.127051186194544
-101 -0.137444352404263
-102 -0.109978539446263
-103 0.0380230003474469
-104 0.0605417360053513
-105 0.171590136906878
-106 0.0604018417747588
-107 0.0402566049413917
-108 -0.100533719460918
-109 -0.140161784412186
-110 -0.10312957661735
-111 0.0485735840442751
-112 0.0373718997374129
-113 0.167648566872301
-114 0.0459260028708854
-115 0.046121183499996
-116 -0.110430068243273
-117 -0.140278458993756
-118 -0.0875776667752535
-119 0.0510626017064324
-120 0.0238451049454621
-121 0.16085061505561
-122 0.030276460935626
-123 0.0561232990819215
-124 -0.105464808595229
-125 -0.135546173373586
-126 -0.079801944025769
-127 0.0599654914699078
-128 0.0136534141192567
-129 0.15182365517752
-130 0.0197096306752212
-131 0.0534620866010349
-132 -0.0917414096626928
-133 -0.127172172660217
-134 -0.0514782042484449
-135 0.0685986797971808
-136 -0.00353858174559342
-137 0.142196102713977
-138 0.0134469000302172
-139 0.0396095015311617
-140 -0.0655242334449433
-141 -0.122832275916882
-142 -0.0479444786698279
-143 0.050751999392634
-144 -0.011019423438215
-145 0.132113807423818
-146 0.00290229828051553
-147 0.0324895304839574
-148 -0.0424435359166719
-149 -0.122337133535285
-150 -0.0293859066983028
-151 0.0383678650842516
-152 -0.0194742885265415
-153 0.126609912325987
-154 -0.00608808492180084
-155 0.0395330884838485
-156 -0.0368665742861527
-157 -0.121320946026168
-158 -0.0130016640468885
-159 0.0309861525800574
-160 -0.018558052599205
-161 0.137300590031426
-162 -0.00746032318164814
-163 0.0344072362770583
-164 -0.0323265667023796
-165 -0.108099357804514
-166 -0.00728009854612887
-167 0.0166450780849257
-168 -0.0143279526502486
-169 0.109076299549607
-170 -0.0115962562225386
-171 0.0177205211496241
-172 -0.0165802545828673
-173 -0.0995936967878659
-174 0.011605779237427
-175 0.00523220776952252
-176 -0.0161523464956781
-177 0.0989734877266892
-178 -0.0129792250545895
-179 0.00898322395475531
-180 -0.0153158199749067
-181 -0.0800824097692582
-182 0.0178200034942401
-183 -0.00474786676294106
-184 -0.0157551972778546
-185 0.0942532461909266
-186 -0.00969269130384397
-187 0.00652836785416871
-188 0.000910018587766529
-189 -0.0619232375104542
-190 0.0179928377991651
-191 -0.0159711302098274
-192 -0.018744717694339
-193 0.0877619939638119
-194 -0.00502556289883764
-195 -0.00667460786160017
-196 -0.0121723963071187
-197 -0.0449032831155359
-198 0.0212125953730812
-199 -0.0262860792829433
-200 -0.016162057795481
-201 0.0811913575034835
-202 -0.00330089426590078
-203 -0.0151519759511698
-204 -0.017960262928082
-205 -0.0215037814284608
-206 0.0182943543046035
-207 -0.0341747401956763
-208 -0.0146866352915169
-209 0.0792718771176078
-210 -0.00321919646839206
-211 -0.023611826169962
-212 -0.0126184079823646
-213 -0.000954698682123794
-214 0.0297339638938581
-215 -0.0312735654036501
-216 -0.0161173400247215
-217 0.0692180762363309
-218 -0.00283288277832248
-219 -0.0388702841271483
-220 0.00457538848515518
-221 0.017702534023738
-222 0.00544552208632338
-223 -0.0446102056961128
-224 -0.0135729757433799
-225 0.061318425794026
-226 -0.00494947349286398
-227 -0.0321768515141099
-228 0.00497720552190702
-229 0.0267952089554404
-230 -0.000738697332716776
-231 -0.0492659393491728
-232 -0.0148071186922711
-233 0.0545872347505704
-234 -0.00382673762292252
-235 -0.0282826124126036
-236 0.00794227173858329
-237 0.0378731489090914
-238 -0.00835973314997662
-239 -0.0447739268124712
-240 -0.0127983223158383
-241 0.0636581757214183
-242 -0.000854926428120144
-243 -0.0310943152069584
-244 -0.00259888627525403
-245 0.0558953643657078
-246 -0.0171154785163806
-247 -0.0391969466693341
-248 -0.0117324565371219
-249 0.0429666350675198
-250 -0.00749755396653516
-251 -0.0292116650124283
-252 -0.00980920002999956
-253 0.0728023253137216
-254 -0.0242433063094984
-255 -0.0319002210401708
-256 -0.0116887755426019
-257 0.0318202643673836
-258 -0.00934603617096265
-259 -0.0320628549574969
-260 -0.0138223876265734
-261 0.0891055411435177
-262 -0.0247651373213855
-263 -0.0309052036748624
-264 -0.0100532798596721
-265 0.0243378856936498
-266 -0.0045778331986359
-267 -0.026821752316485
-268 0.000989105341668746
-269 0.0888402056176568
-270 -0.0231248959628869
-271 -0.0335116780227126
-272 -0.0117587705487187
-273 0.0167906040316404
-274 -0.00329835726197584
-275 -0.0310756973538631
-276 -0.00167909352527941
-277 0.0731070181742769
-278 -0.0163827003248124
-279 -0.0314028257468305
-280 -0.00966921026548781
-281 0.0102706941067124
-282 0.00203072073029314
-283 -0.0308313739794282
-284 0.00547048142856235
-285 0.0539371640185639
-286 -0.00773101119983001
-287 -0.0303450446180751
-288 -0.00733600257056593
-289 0.00772935578415776
-290 0.00197958032226745
-291 -0.0273846524631412
-292 0.0112672702862109
-293 0.045049409831887
-294 0.00799728833473099
-295 -0.0200723316807648
-296 -0.00733856327080615
-297 -0.001791898850227
-298 0.00388503548910184
-299 -0.0339646317125627
-300 0.0269401380987506
-301 0.0295897394272477
-302 0.00882971838376906
-303 -0.0255032485942965
-304 -0.00586660773988975
-305 -0.0143116332821527
-306 0.00534299944397864
-307 -0.0288912695776605
-308 0.0357675762276391
-309 0.0162077381233435
-310 0.0175736980127429
-311 -0.0300119235674159
-312 -0.00563685913557697
-313 -0.0218208266576808
-314 0.00532212484976867
-315 -0.0165702155219983
-316 0.03160258037738
-317 0.0156089288371773
-318 0.0179977820150998
-319 -0.0255657663584924
-320 -0.00314013163781615
-321 -0.0174257276545932
-322 0.00856637995358983
-323 -0.00719462491658861
-324 0.0248064952084498
-325 0.0118797380566877
-326 0.0164280770611372
-327 -0.0202684072278218
-328 -0.000968003222461791
-329 -0.0392377749025386
-330 0.00616137008243444
-331 -0.00395889897053221
-332 0.0209975704367836
-333 0.0165669731399994
-334 0.0167876667126637
-335 -0.0162800034591445
-336 0.00157612684339945
-337 -0.0497601369515435
-338 0.00168009969601492
-339 -0.00390601780649794
-340 0.023648567413202
-341 0.0158640545767057
-342 0.0244736064929526
-343 -0.014150912333521
-344 0.00356083314932668
-345 -0.0588422955021098
-346 0.0064856866009032
-347 0.000344551175540443
-348 0.0364591845510023
-349 0.0166346451576227
-350 0.0251881929581815
-351 -0.01627179367963
-352 0.00180146013521436
-353 -0.0649333243287488
-354 0.00866862821696223
-355 -0.00279970209152114
-356 0.0263646717293285
-357 0.0211193247836195
-358 0.0214320318152118
-359 -0.0151817766787754
-360 0.00485821947887842
-361 -0.0715992844478512
-362 0.0108378220586832
-363 -0.00133094811006224
-364 0.0247532282729131
-365 0.016495069638089
-366 0.0229500626359929
-367 -0.0147226502159456
-368 0.00647045064867083
-369 -0.073385789691225
-370 0.0114312149907294
-371 0.00249982568991776
-372 0.0225934619182297
-373 0.0238409420604106
-374 0.0300604984923422
-375 -0.00852632300506627
-376 -0.000476408670694637
-377 -0.0669893069127702
-378 0.00708510482024032
-379 -0.00633855524099727
-380 0.0316293143381378
-381 0.0224467328328507
-382 0.024131620910292
-383 -0.0144420099990433
-384 -0.00656804302886437
-385 -0.0605047793511062
-386 -0.00244909720127004
-387 -0.00228283234187514
-388 0.0347630666059254
-389 0.0255372783174439
-390 0.0249118471215147
-391 -0.0156811043640799
-392 -0.0186780895478396
-393 -0.0500470638854078
-394 -0.0106681828115876
-395 0.00299348108637595
-396 0.0375478351991823
-397 0.0272676652644904
-398 0.0249262372804901
-399 -0.0128139590091909
-400 -0.0244260954570344
-401 -0.0296360177448727
-402 -0.0156522051426314
-403 0.00371335698467524
-404 0.0375532256529043
-405 0.025029221367199
-406 0.0252473835020561
-407 -0.00821195172190185
-408 -0.0340470970501328
-409 -0.0312374914683474
-410 -0.0253324219431086
-411 0.00556439075799471
-412 0.0343851616998114
-413 0.0296108649664041
-414 0.0244865536821279
-415 -0.00642396788124207
-416 -0.0381703614534087
-417 -0.0250381539188707
-418 -0.0339628157444566
-419 0.00243992182082179
-420 0.0377363310935231
-421 0.0279269519560789
-422 0.0330045526455719
-423 -0.00511644400658994
-424 -0.0450141067262116
-425 -0.0158485572785398
-426 -0.03936429400437
-427 0.00750953654479071
-428 0.0477707926390831
-429 0.0288151654666373
-430 0.0361802804944373
-431 -0.00712917753126239
-432 -0.0583334638414398
-433 -0.00267010949721538
-434 -0.0470917242637041
-435 0.00517042251078623
-436 0.037455528907572
-437 0.0343942996609878
-438 0.0332028694901519
-439 -0.00589078251875288
-440 -0.0637043911707992
-441 0.00666183788238349
-442 -0.0525517266899241
-443 0.00895232543554424
-444 0.0382697031000271
-445 0.0284021587291105
-446 0.0334942204660841
-447 -0.00596107650540415
-448 -0.0720966795946044
-449 0.0232447585917915
-450 -0.0608153052711438
-451 0.0116399374656849
-452 0.0381251008359883
-453 0.0346830496503291
-454 0.0398065018725046
-455 -0.000362012301347499
-456 -0.0785173577161933
-457 0.0300252474048187
-458 -0.0646382374089607
-459 0.00182900934772608
-460 0.0454064481406782
-461 0.0329664080833594
-462 0.0362011391795208
-463 -0.015347551228469
-464 -0.0671509681824761
-465 0.0296481877260799
-466 -0.0746946268126137
-467 0.00641586390856246
-468 0.0470505050556008
-469 0.0366327721242302
-470 0.0377150582080205
-471 -0.0257508722774105
-472 -0.0637151879640854
-473 0.0236744558402174
-474 -0.0680975388310196
-475 0.00255042565832294
-476 0.0512681657479446
-477 0.0403605713503443
-478 0.0359001859859639
-479 -0.029132074768914
-480 -0.0508034717438863
-481 0.0239527602817767
-482 -0.0575129877889322
-483 -0.00369721861473263
-484 0.0505988973989383
-485 0.0361467620291191
-486 0.0368416078787121
-487 -0.032834716815589
-488 -0.0434932898244011
-489 0.00911801422218572
-490 -0.0523537970034941
-491 -0.00821280045148764
-492 0.0487328578561805
-493 0.0392756061114285
-494 0.0353235938763974
-495 -0.0362172978867714
-496 -0.0301630804400009
-497 -0.00312318019738603
-498 -0.0442427016803628
-499 -0.0193549364510511
-500 0.0511246815814022
-501 0.0375525162491352
-502 0.0415223485757893
-503 -0.0434162929277164
-504 -0.0174703151437594
-505 -0.0123368071049746
-506 -0.030092552759096
-507 -0.0259859780907219
-508 0.0606752480087361
-509 0.0379827626715177
-510 0.0429850681863943
-511 -0.0519282882356438
-512 -0.0109290187868267
-513 -0.0198911294093943
-514 -0.0179805613817386
-515 -0.0373506310511416
-516 0.051718263130701
-517 0.0437679408364481
-518 0.0396991923289056
-519 -0.0598738380924832
-520 0.00227956370589332
-521 -0.0315948919060393
-522 -0.00689298816517704
-523 -0.0400683003822942
-524 0.0504116144670193
-525 0.0384452328799252
-526 0.0422779082777363
-527 -0.0628378541858099
-528 0.00648345925565532
-529 -0.0339074110875153
-530 0.00392215913901875
-531 -0.0447371320235012
-532 0.0499683975261213
-533 0.0445342493453758
-534 0.0358507522616787
-535 -0.0462975420467472
-536 0.0065134510940885
-537 -0.0446950607193122
-538 0.0078695055551158
-539 -0.0435564432715238
-540 0.0490054802985018
-541 0.0429751997079501
-542 0.0249996087628272
-543 -0.0442291516924361
-544 0.00869843705070359
-545 -0.0527698107871565
-546 0.00799130494240491
-547 -0.0323718744761137
-548 0.0410065929835765
-549 0.0475759092955819
-550 0.0175755467103812
-551 -0.0376302948184889
-552 0.00700412709467122
-553 -0.0608320774535298
-554 0.0048130064138099
-555 -0.0173352616909856
-556 0.0346973915783743
-557 0.0493903178904071
-558 0.0101108717892249
-559 -0.0265084973202414
-560 0.00358635362684098
-561 -0.0470576145955835
-562 9.30616028058754e-05
-563 -0.009328796983189
-564 0.0265128180743515
-565 0.047184891847067
-566 0.00219163772528874
-567 -0.0121413168884318
-568 -0.00749414671957915
-569 -0.0440813124278593
-570 -0.00813710471833781
-571 0.00114675437656366
-572 0.0162393335738264
-573 0.0504911799834256
-574 -0.00853374126083636
-575 0.000754234959055234
-576 -0.0117204282603961
-577 -0.0354583766676116
-578 -0.0192100536607529
-579 0.00839406418544501
-580 0.00960845163504427
-581 0.0469051048472684
-582 -0.00888902900418868
-583 0.0100099116353234
-584 -0.0179909146856837
-585 -0.0244293914853853
-586 -0.0256760479816353
-587 0.0212220748711766
-588 0.00632084475559719
-589 0.0387313178071368
-590 -0.000554587934313714
-591 0.0124601538908314
-592 -0.0295249733381573
-593 -0.0144520545351094
-594 -0.0331889907164869
-595 0.0212877712137735
-596 0.00590139546386316
-597 0.0273355576179403
-598 0.00735416770830889
-599 0.0128873818372069
-600 -0.0346175922714857
-601 -0.00857703845819032
-602 -0.0362631596335238
-603 0.0242701471795148
-604 0.0131286156780055
-605 0.00696270942062036
-606 0.0188195193146635
-607 0.0103462402033716
-608 -0.0417481445059436
-609 0.00414843805232896
-610 -0.041616927291058
-611 0.0282618294134973
-612 0.02337979916365
-613 -0.00673110780182958
-614 0.0290971868544386
-615 0.017105062059816
-616 -0.0516331546555055
-617 0.0142062007627548
-618 -0.046594757738246
-619 0.0214354322279795
-620 0.0395098993458107
-621 -0.0267793069789269
-622 0.0381323026116677
-623 0.0119813141067502
-624 -0.0521722164918075
-625 0.00907497826142658
-626 -0.0377414784171271
-627 0.0150907402651132
-628 0.0450797547657188
-629 -0.0367261749783528
-630 0.0474940016463238
-631 0.000764223750645765
-632 -0.0464350834773778
-633 0.00292816454844645
-634 -0.0345472431115147
-635 0.0140802099582887
-636 0.046733825449202
-637 -0.0331976317138726
-638 0.0505769917402539
-639 -0.00507624644834293
-640 -0.0344212973139547
-641 -0.00226163410076298
-642 -0.0197922791475835
-643 0.00383630490838536
-644 0.0363444998831405
-645 -0.0152447367341023
-646 0.0410735723819794
-647 -0.00866551034416046
-648 -0.0282028390344346
-649 -0.0138273162520216
-650 -0.013988974897117
-651 -0.00356215450658962
-652 0.0315292998347554
-653 0.00265684065928491
-654 0.0297462860635905
-655 -0.0132763024515043
-656 -0.0151844375022346
-657 -0.0222624267154824
-658 -0.00808783339763846
-659 -0.0118309039774407
-660 0.0257051832194354
-661 0.0139672196593361
-662 0.0297614515417377
-663 -0.021331361380431
-664 -0.00340733006761883
-665 -0.0283789637687968
-666 0.00461054911911345
-667 -0.018250569181885
-668 0.0226081124897128
-669 0.0323347720900023
-670 0.0223372263530966
-671 -0.0329163380381145
-672 0.00653265472132318
-673 -0.0348871958579168
-674 0.0141751097268468
-675 -0.0288075244305473
-676 0.00890270626763702
-677 0.0520479385647175
-678 0.0145072446621148
-679 -0.0415204263536339
-680 0.0171547215622114
-681 -0.0470557518960979
-682 0.0193254756646944
-683 -0.0255419271372531
-684 0.00688287993008186
-685 0.0526562424346814
-686 0.00589567882152875
-687 -0.0339847831638287
-688 0.02068125784698
-689 -0.0420544887083924
-690 0.013314784448658
-691 -0.0245768886587792
-692 0.00903037071195691
-693 0.0563846260400661
-694 -0.00286801368241955
-695 -0.0213844040017938
-696 0.0126629235111523
-697 -0.0309372292635961
-698 0.00276336704503089
-699 -0.015616452692981
-700 0.00419778210216804
-701 0.0536380666776548
-702 -0.012596502198999
-703 -0.0174715146408299
-704 0.00871952059420196
-705 -0.0227565257963439
-706 -0.00318256697092859
-707 -0.0038667173143475
-708 -0.00772968118848665
-709 0.0587207873901504
-710 -0.0193357475432715
-711 -0.0115269673972748
-712 -1.7421858581782e-05
-713 -0.012115015884252
-714 -0.0149797201478353
-715 0.00756590604451175
-716 -0.0126297132883264
-717 0.0594933008421939
-718 -0.0267304156748315
-719 0.00405070013394311
-720 -0.00821048967450404
-721 -0.000558386344514712
-722 -0.0178272992410061
-723 0.0152599286078378
-724 -0.0188510979465177
-725 0.056849489519984
-726 -0.0348880232368348
-727 0.0167352525344068
-728 -0.020642086446652
-729 0.00744701455708182
-730 -0.027702827538011
-731 0.0163569136090967
-732 -0.00705447320310994
-733 0.0411987341306314
-734 -0.0263596539233783
-735 0.0159406402225642
-736 -0.0248727169666328
-737 0.0157261169316672
-738 -0.039588636677443
-739 0.019694261902396
-740 0.00199064144206026
-741 0.0194114269206411
-742 -0.0122293779441828
-743 0.0185339904720133
-744 -0.0293392689309816
-745 0.0259396934186521
-746 -0.0358486717626121
-747 0.0137081983383313
-748 0.0135827148405382
-749 0.00581560048523093
-750 -0.00646581428956839
-751 0.0110071423563427
-752 -0.0246658880723862
-753 0.0234599435571564
-754 -0.0251762927530073
-755 0.00161483936854108
-756 0.0187635618473274
-757 -0.00741664776560292
-758 0.000689537114138283
-759 0.00538728043193201
-760 -0.0121682428833197
-761 0.0107275222262937
-762 -0.0128031079890448
-763 -0.0063592461488716
-764 0.0251504687162441
-765 -0.0239334767266835
-766 0.0114670525225061
-767 -0.00487523656435794
-768 -0.00763249778942318
-769 0.0104557895326864
-770 -0.00080890423935272
-771 -0.011995729852147
-772 0.0283817192968894
-773 -0.0287562177182345
-774 0.0217718323275436
-775 -0.0101305067053654
-776 0.0014155810398293
-777 0.00324589569032011
-778 0.00708416810583891
-779 -0.022169020480487
-780 0.0234205617460705
-781 -0.0208062585550248
-782 0.0203380109609699
-783 -0.020741474408173
-784 0.0135803686158102
-785 -0.00501416160524954
-786 0.0164731425495951
-787 -0.0268911165061168
-788 0.0106549298554577
-789 -0.00845501832015795
-790 0.023385887150049
-791 -0.0315824919189702
-792 0.0225937647734562
-793 -0.0122625199927789
-794 0.0237235394650212
-795 -0.027848735297458
-796 0.0102148026540408
-797 -0.00743306965465811
-798 0.0163964193052597
-799 -0.0205275094803387
-800 0.0268449934848731
-801 -0.0196194639874214
-802 0.0245047543387088
-803 -0.018846409722053
-804 0.00241958726037752
-805 -0.00956161998696891
-806 0.00999709244485242
-807 -0.010418326586979
-808 0.0168983481695472
-809 -0.0127566274792617
-810 0.0217393096303905
-811 -0.0103549544989814
-812 -0.00649684841130904
-813 -0.00620619985783303
-814 0.000695206197500287
-815 -0.00340809372595454
-816 0.0136404808756853
-817 -0.00453202592092646
-818 0.0101641460331084
-819 0.00219305363441266
-820 -0.01561469271582
-821 -0.00960597345375202
-822 -0.00481911400465912
-823 0.00944779427817189
-824 0.00716593193427114
-825 0.00794506991287553
-826 0.00465812347978461
-827 0.010359878693985
-828 -0.020236818592972
-829 -0.0111741972267443
-830 -0.0115950977160356
-831 0.020041269074572
-832 -0.00202251725285479
-833 0.015145433881013
-834 -0.00118772326275258
-835 0.0172802408084672
-836 -0.023141151004978
-837 -0.00684287010020396
-838 -0.0222362324134472
-839 0.0290833389346101
-840 -0.00863450139262045
-841 0.0198832975538718
-842 -0.0104466516619161
-843 0.0216180798136572
-844 -0.0224573860747524
-845 -0.0159317111021684
-846 -0.0124256114118245
-847 0.0319156051078274
-848 -0.020989683927269
-849 0.0331677982754718
-850 -0.0160779048828163
-851 0.0221942143966997
-852 -0.0207114091551809
-853 -0.0193864563297597
-854 -0.00631341525970981
-855 0.0256287918067823
-856 -0.0127670576748428
-857 0.0268901900517397
-858 -0.00929763294799435
-859 0.0179202360715882
-860 -0.0205297531444686
-861 -0.0205828726597419
-862 -0.00590540758107269
-863 0.0155451399031948
-864 -0.000875709073962753
-865 0.0168572022602374
-866 0.0028001228220118
-867 0.0104479294454913
-868 -0.0213679514358647
-869 -0.0190762037709474
-870 -0.00370777717818964
-871 0.00842042601552804
-872 0.010436753298379
-873 0.00801824546756709
-874 0.00905450943087241
-875 0.00193033358362754
-876 -0.0169120672468857
-877 -0.0180536990655791
-878 -0.00178520558336185
-879 0.00342242219620668
-880 0.0209308868044849
-881 0.00123969777653587
-882 0.0189079333389431
-883 -0.00681131675201787
-884 -0.0163080121259332
-885 -0.0199735256447265
-886 0.00366535906601146
-887 -0.00556880592163452
-888 0.0273660773092557
-889 -0.0056009291081872
-890 0.0258105464894864
-891 -0.0110454740226059
-892 -0.0163301324647326
-893 -0.0182941746735561
-894 0.00615903992467205
-895 -0.0162282546172766
-896 0.0386373258470084
-897 -0.0125315671068463
-898 0.0272787535301086
-899 -0.0123831641946371
-900 -0.0133878892299601
-901 -0.0190951688075489
-902 -0.00155326284649879
-903 -0.00410581328198279
-904 0.0316127784251008
-905 -0.00291818177314328
-906 0.0227531671125918
-907 -0.0109655434893085
-908 -0.012799308403064
-909 -0.0160017423860052
-910 -0.0119329107305064
-911 0.00364258505980213
-912 0.0217756860858317
-913 0.010678734327474
-914 0.0134293321905379
-915 -0.0116912782885493
-916 -0.0117630350181795
-917 -0.0135312586647217
-918 -0.0108968297221034
-919 0.00680452587364608
-920 0.0148747844715078
-921 0.0162949694832807
-922 0.00539910868322474
-923 -0.00933468939253505
-924 -0.0106686683836374
-925 -0.0124085659528643
-926 -0.0105711782287246
-927 0.00804235477237977
-928 0.00723801263775247
-929 0.0258061476363918
-930 -0.000684398388361734
-931 -0.00762103435599326
-932 -0.00904303753421588
-933 -0.00745301596275639
-934 -0.0103044124193686
-935 0.00595191617101465
-936 2.14978806537769e-05
-937 0.0352834100860169
-938 -0.00718396988767262
-939 -0.00837792361666858
-940 -0.00720830894781464
-941 -0.00721256609199517
-942 -0.0103563055654315
-943 0.0067689029813515
-944 -0.00615969185391731
-945 0.0366438822751357
-946 -0.00555322732762464
-947 -0.00559909850816345
-948 -0.00807226171468928
-949 -0.0072437466206792
-950 -0.00880657440286336
-951 -0.000406817302546885
-952 0.00334053871073266
-953 0.0282996182562531
-954 -0.00548530337183551
-955 -0.00508266404610792
-956 -0.00475991829082716
-957 -0.00556541448888507
-958 -0.00693102605261411
-959 -0.0068914951848352
-960 0.0124551723792496
-961 0.0205485192799428
-962 -0.0051215464298893
-963 -0.00544517946765895
-964 -0.00360902370385679
-965 -0.00389124817008502
-966 -0.00568418258247609
-967 -0.00451409289805204
-968 0.0126296974425642
-969 0.0119357974221847
-970 -0.00453960421739095
-971 -0.00389602063108262
-972 -0.00253945519375536
-973 -0.00246645747512712
-974 -0.00331176412956721
-975 -0.0045686818998509
-976 0.0119005284725565
-977 0.00477869960024375
-978 -0.00316972429661236
-979 -0.00294762637219811
-980 -0.00197263485163538
-981 -0.00240027919608702
-982 -0.00221728547295443
-983 -0.00268664184058333
-984 0.013078013292045
-985 -0.00054100792945422
-986 -0.000917736517605598
-987 -0.001567052283492
-988 -0.000836676486280892
-989 -0.00221208695388904
-990 -0.00248903162837629
-991 -0.0021625005351972
-992 0.0072477698974949
-993 0.00063353338379511
-994 0.000469110586525005
-995 -0.000441976909684745
-996 -0.000609378899765559
-997 -0.000809499361526555
-998 -0.0010684119522621
-999 -0.00124157520451844
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat
deleted file mode 100644
index 0d92cc377..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.0375239849090576 0.029999999999994 0.029999999999994 0.0 1
-2 0.0333089828491211 0.0300000000000011 0.0300000000000011 0.0 2
-3 0.0330851078033447 0.0399999999999991 0.0399999999999991 0.0 3
-4 0.0331559181213379 0.0300000000000011 0.0300000000000011 0.0 4
-5 0.0330770015716553 0.0300000000000011 0.0300000000000011 0.0 5
-6 0.0331110954284668 0.0399999999999991 0.0399999999999991 0.0 6
-7 0.0357470512390137 0.0300000000000011 0.0300000000000011 0.0 7
-8 0.0360550880432129 0.0399999999999991 0.0399999999999991 0.0 8
-9 0.0575530529022217 0.0600000000000023 0.0600000000000023 0.0 9
-10 0.0352299213409424 0.0300000000000011 0.0300000000000011 0.0 10
-11 0.0335679054260254 0.029999999999994 0.029999999999994 0.0 11
-12 0.0332560539245605 0.0400000000000063 0.0400000000000063 0.0 12
-13 0.0364248752593994 0.029999999999994 0.029999999999994 0.0 13
-14 0.033275842666626 0.0400000000000063 0.0400000000000063 0.0 14
-15 0.0336852073669434 0.029999999999994 0.029999999999994 0.0 15
-16 0.0334939956665039 0.0300000000000011 0.0300000000000011 0.0 16
-17 0.0582540035247803 0.0600000000000023 0.0600000000000023 0.0 17
-18 0.0354878902435303 0.0399999999999991 0.0399999999999991 0.0 18
-19 0.0385029315948486 0.0399999999999991 0.0399999999999991 0.0 19
-20 0.0362861156463623 0.0300000000000011 0.0300000000000011 0.0 20
-21 0.035506010055542 0.0399999999999991 0.0399999999999991 0.0 21
-22 0.0334300994873047 0.0300000000000011 0.0300000000000011 0.0 22
-23 0.0329139232635498 0.0399999999999991 0.0399999999999991 0.0 23
-24 0.0332398414611816 0.0300000000000011 0.0300000000000011 0.0 24
-25 0.0579190254211426 0.0600000000000023 0.0600000000000023 0.0 25
-26 0.0361781120300293 0.029999999999994 0.029999999999994 0.0 26
-27 0.0338189601898193 0.0400000000000063 0.0400000000000063 0.0 27
-28 0.0347120761871338 0.029999999999994 0.029999999999994 0.0 28
-29 0.0333528518676758 0.0399999999999991 0.0399999999999991 0.0 29
-30 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 30
-31 0.0329258441925049 0.0300000000000011 0.0300000000000011 0.0 31
-32 0.033383846282959 0.0300000000000011 0.0300000000000011 0.0 32
-33 0.0601050853729248 0.0700000000000003 0.0700000000000003 0.0 33
-34 0.0353600978851318 0.0300000000000011 0.0300000000000011 0.0 34
-35 0.0334739685058594 0.0300000000000011 0.0300000000000011 0.0 35
-36 0.0333919525146484 0.0399999999999991 0.0399999999999991 0.0 36
-37 0.034959077835083 0.0300000000000011 0.0300000000000011 0.0 37
-38 0.0332329273223877 0.029999999999994 0.029999999999994 0.0 38
-39 0.0333740711212158 0.0400000000000063 0.0400000000000063 0.0 39
-40 0.0358071327209473 0.029999999999994 0.029999999999994 0.0 40
-41 0.0592548847198486 0.0600000000000023 0.0600000000000023 0.0 41
-42 0.0328431129455566 0.0399999999999991 0.0399999999999991 0.0 42
-43 0.0325570106506348 0.0300000000000011 0.0300000000000011 0.0 43
-44 0.0326550006866455 0.0300000000000011 0.0300000000000011 0.0 44
-45 0.0341711044311523 0.0300000000000011 0.0300000000000011 0.0 45
-46 0.0385479927062988 0.0300000000000011 0.0300000000000011 0.0 46
-47 0.0355618000030518 0.0399999999999991 0.0399999999999991 0.0 47
-48 0.0336899757385254 0.0300000000000011 0.0300000000000011 0.0 48
-49 0.0340290069580078 0.0399999999999991 0.0399999999999991 0.0 49
-50 0.057744026184082 0.0499999999999972 0.0499999999999972 0.0 50
-51 0.0332441329956055 0.0399999999999991 0.0399999999999991 0.0 51
-52 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 52
-53 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 53
-54 0.0364229679107666 0.0399999999999991 0.0399999999999991 0.0 54
-55 0.0333731174468994 0.0300000000000011 0.0300000000000011 0.0 55
-56 0.0333929061889648 0.0399999999999991 0.0399999999999991 0.0 56
-57 0.0332939624786377 0.0300000000000011 0.0300000000000011 0.0 57
-58 0.0580708980560303 0.0600000000000023 0.0600000000000023 0.0 58
-59 0.0334999561309814 0.0300000000000011 0.0300000000000011 0.0 59
-60 0.0361111164093018 0.0399999999999991 0.0399999999999991 0.0 60
-61 0.0338809490203857 0.0300000000000011 0.0300000000000011 0.0 61
-62 0.0334880352020264 0.0399999999999991 0.0399999999999991 0.0 62
-63 0.0335280895233154 0.029999999999994 0.029999999999994 0.0 63
-64 0.0350849628448486 0.0300000000000011 0.0300000000000011 0.0 64
-65 0.033484935760498 0.0399999999999991 0.0399999999999991 0.0 65
-66 0.0578420162200928 0.0500000000000043 0.0500000000000043 0.0 66
-67 0.0367329120635986 0.0399999999999991 0.0399999999999991 0.0 67
-68 0.0351338386535645 0.0399999999999991 0.0399999999999991 0.0 68
-69 0.0334072113037109 0.0300000000000011 0.0300000000000011 0.0 69
-70 0.0339431762695312 0.0300000000000011 0.0300000000000011 0.0 70
-71 0.0332098007202148 0.0399999999999991 0.0399999999999991 0.0 71
-72 0.034019947052002 0.0300000000000011 0.0300000000000011 0.0 72
-73 0.0393249988555908 0.0399999999999991 0.0399999999999991 0.0 73
-74 0.0685920715332031 0.0600000000000023 0.0600000000000023 0.0 74
-75 0.034276008605957 0.0399999999999991 0.0399999999999991 0.0 75
-76 0.0334501266479492 0.029999999999994 0.029999999999994 0.0 76
-77 0.0332150459289551 0.0300000000000011 0.0300000000000011 0.0 77
-78 0.0333437919616699 0.0399999999999991 0.0399999999999991 0.0 78
-79 0.0332369804382324 0.0300000000000011 0.0300000000000011 0.0 79
-80 0.0360598564147949 0.0399999999999991 0.0399999999999991 0.0 80
-81 0.0335109233856201 0.0300000000000011 0.0300000000000011 0.0 81
-82 0.058535099029541 0.0600000000000023 0.0600000000000023 0.0 82
-83 0.0335390567779541 0.0300000000000011 0.0300000000000011 0.0 83
-84 0.0335979461669922 0.0399999999999991 0.0399999999999991 0.0 84
-85 0.0331900119781494 0.0300000000000011 0.0300000000000011 0.0 85
-86 0.03330397605896 0.0300000000000011 0.0300000000000011 0.0 86
-87 0.0366411209106445 0.0399999999999991 0.0399999999999991 0.0 87
-88 0.0347549915313721 0.0300000000000011 0.0300000000000011 0.0 88
-89 0.0331470966339111 0.0399999999999991 0.0399999999999991 0.0 89
-90 0.0598249435424805 0.0599999999999952 0.0599999999999952 0.0 90
-91 0.0330801010131836 0.0300000000000011 0.0300000000000011 0.0 91
-92 0.0329310894012451 0.0300000000000011 0.0300000000000011 0.0 92
-93 0.032721996307373 0.0300000000000011 0.0300000000000011 0.0 93
-94 0.0355160236358643 0.0399999999999991 0.0399999999999991 0.0 94
-95 0.0339648723602295 0.0300000000000011 0.0300000000000011 0.0 95
-96 0.032512903213501 0.0399999999999991 0.0399999999999991 0.0 96
-97 0.0330419540405273 0.0300000000000011 0.0300000000000011 0.0 97
-98 0.0334761142730713 0.0300000000000011 0.0300000000000011 0.0 98
-99 0.0660569667816162 0.0700000000000003 0.0700000000000003 0.0 99
-100 0.0368058681488037 0.0399999999999991 0.0399999999999991 0.0 100
-101 0.0347878932952881 0.0300000000000011 0.0300000000000011 0.0 101
-102 0.0338079929351807 0.029999999999994 0.029999999999994 0.0 102
-103 0.0334770679473877 0.029999999999994 0.029999999999994 0.0 103
-104 0.0329740047454834 0.0300000000000011 0.0300000000000011 0.0 104
-105 0.0333049297332764 0.0300000000000011 0.0300000000000011 0.0 105
-106 0.033519983291626 0.0399999999999991 0.0399999999999991 0.0 106
-107 0.0611979961395264 0.0600000000000023 0.0600000000000023 0.0 107
-108 0.0340859889984131 0.0300000000000011 0.0300000000000011 0.0 108
-109 0.0335040092468262 0.0399999999999991 0.0399999999999991 0.0 109
-110 0.0334708690643311 0.0300000000000011 0.0300000000000011 0.0 110
-111 0.0335888862609863 0.0300000000000011 0.0300000000000011 0.0 111
-112 0.033301830291748 0.0399999999999991 0.0399999999999991 0.0 112
-113 0.0332660675048828 0.0300000000000011 0.0300000000000011 0.0 113
-114 0.0370340347290039 0.0399999999999991 0.0399999999999991 0.0 114
-115 0.0586259365081787 0.0599999999999952 0.0599999999999952 0.0 115
-116 0.0336349010467529 0.0300000000000011 0.0300000000000011 0.0 116
-117 0.0350830554962158 0.0300000000000011 0.0300000000000011 0.0 117
-118 0.033397912979126 0.0399999999999991 0.0399999999999991 0.0 118
-119 0.0334382057189941 0.0300000000000011 0.0300000000000011 0.0 119
-120 0.0333988666534424 0.0399999999999991 0.0399999999999991 0.0 120
-121 0.0362389087677002 0.0300000000000011 0.0300000000000011 0.0 121
-122 0.033973217010498 0.0399999999999991 0.0399999999999991 0.0 122
-123 0.0578141212463379 0.0499999999999972 0.0499999999999972 0.0 123
-124 0.033689022064209 0.0400000000000063 0.0400000000000063 0.0 124
-125 0.0340471267700195 0.029999999999994 0.029999999999994 0.0 125
-126 0.0395550727844238 0.0400000000000063 0.0400000000000063 0.0 126
-127 0.0365371704101562 0.0399999999999991 0.0399999999999991 0.0 127
-128 0.034188985824585 0.0300000000000011 0.0300000000000011 0.0 128
-129 0.0336990356445312 0.0399999999999991 0.0399999999999991 0.0 129
-130 0.033534049987793 0.029999999999994 0.029999999999994 0.0 130
-131 0.0577750205993652 0.0600000000000023 0.0600000000000023 0.0 131
-132 0.0339059829711914 0.0300000000000011 0.0300000000000011 0.0 132
-133 0.0334141254425049 0.0300000000000011 0.0300000000000011 0.0 133
-134 0.0364940166473389 0.0399999999999991 0.0399999999999991 0.0 134
-135 0.0346250534057617 0.0399999999999991 0.0399999999999991 0.0 135
-136 0.03348708152771 0.0300000000000011 0.0300000000000011 0.0 136
-137 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 137
-138 0.0333828926086426 0.0399999999999991 0.0399999999999991 0.0 138
-139 0.0577211380004883 0.0499999999999972 0.0499999999999972 0.0 139
-140 0.0367538928985596 0.0399999999999991 0.0399999999999991 0.0 140
-141 0.0339748859405518 0.0300000000000011 0.0300000000000011 0.0 141
-142 0.0334391593933105 0.0399999999999991 0.0399999999999991 0.0 142
-143 0.0334470272064209 0.0300000000000011 0.0300000000000011 0.0 143
-144 0.0356760025024414 0.0399999999999991 0.0399999999999991 0.0 144
-145 0.0332551002502441 0.0300000000000011 0.0300000000000011 0.0 145
-146 0.0335030555725098 0.0300000000000011 0.0300000000000011 0.0 146
-147 0.0603840351104736 0.0600000000000023 0.0600000000000023 0.0 147
-148 0.033195972442627 0.0399999999999991 0.0399999999999991 0.0 148
-149 0.0326118469238281 0.0300000000000011 0.0300000000000011 0.0 149
-150 0.0324470996856689 0.029999999999994 0.029999999999994 0.0 150
-151 0.0330009460449219 0.0400000000000063 0.0400000000000063 0.0 151
-152 0.0324180126190186 0.029999999999994 0.029999999999994 0.0 152
-153 0.0400440692901611 0.0400000000000063 0.0400000000000063 0.0 153
-154 0.0362899303436279 0.029999999999994 0.029999999999994 0.0 154
-155 0.0349278450012207 0.0400000000000063 0.0400000000000063 0.0 155
-156 0.0600240230560303 0.0599999999999952 0.0599999999999952 0.0 156
-157 0.0334708690643311 0.0300000000000011 0.0300000000000011 0.0 157
-158 0.0335209369659424 0.0399999999999991 0.0399999999999991 0.0 158
-159 0.0335359573364258 0.0300000000000011 0.0300000000000011 0.0 159
-160 0.0334579944610596 0.0300000000000011 0.0300000000000011 0.0 160
-161 0.0362169742584229 0.0399999999999991 0.0399999999999991 0.0 161
-162 0.0338380336761475 0.0300000000000011 0.0300000000000011 0.0 162
-163 0.0335981845855713 0.0399999999999991 0.0399999999999991 0.0 163
-164 0.0578079223632812 0.0499999999999972 0.0499999999999972 0.0 164
-165 0.0334019660949707 0.0399999999999991 0.0399999999999991 0.0 165
-166 0.0331990718841553 0.0300000000000011 0.0300000000000011 0.0 166
-167 0.0360620021820068 0.0399999999999991 0.0399999999999991 0.0 167
-168 0.0344648361206055 0.0300000000000011 0.0300000000000011 0.0 168
-169 0.0341999530792236 0.0399999999999991 0.0399999999999991 0.0 169
-170 0.0331728458404541 0.0300000000000011 0.0300000000000011 0.0 170
-171 0.0350158214569092 0.0300000000000011 0.0300000000000011 0.0 171
-172 0.0580298900604248 0.0600000000000023 0.0600000000000023 0.0 172
-173 0.0335690975189209 0.0300000000000011 0.0300000000000011 0.0 173
-174 0.036384105682373 0.0399999999999991 0.0399999999999991 0.0 174
-175 0.034492015838623 0.0300000000000011 0.0300000000000011 0.0 175
-176 0.03336501121521 0.0399999999999991 0.0399999999999991 0.0 176
-177 0.0331079959869385 0.029999999999994 0.029999999999994 0.0 177
-178 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 178
-179 0.0350081920623779 0.0399999999999991 0.0399999999999991 0.0 179
-180 0.0666470527648926 0.0700000000000003 0.0700000000000003 0.0 180
-181 0.0338301658630371 0.0300000000000011 0.0300000000000011 0.0 181
-182 0.0340950489044189 0.0300000000000011 0.0300000000000011 0.0 182
-183 0.0334529876708984 0.0399999999999991 0.0399999999999991 0.0 183
-184 0.0331630706787109 0.0300000000000011 0.0300000000000011 0.0 184
-185 0.0333731174468994 0.0300000000000011 0.0300000000000011 0.0 185
-186 0.0330700874328613 0.0399999999999991 0.0399999999999991 0.0 186
-187 0.0334250926971436 0.0300000000000011 0.0300000000000011 0.0 187
-188 0.0619869232177734 0.0600000000000023 0.0600000000000023 0.0 188
-189 0.0336270332336426 0.0399999999999991 0.0399999999999991 0.0 189
-190 0.0331699848175049 0.029999999999994 0.029999999999994 0.0 190
-191 0.033411979675293 0.0300000000000011 0.0300000000000011 0.0 191
-192 0.0346980094909668 0.0399999999999991 0.0399999999999991 0.0 192
-193 0.0330710411071777 0.0300000000000011 0.0300000000000011 0.0 193
-194 0.0360589027404785 0.0399999999999991 0.0399999999999991 0.0 194
-195 0.0341928005218506 0.0300000000000011 0.0300000000000011 0.0 195
-196 0.0596940517425537 0.0600000000000023 0.0600000000000023 0.0 196
-197 0.0352950096130371 0.0300000000000011 0.0300000000000011 0.0 197
-198 0.0335190296173096 0.0399999999999991 0.0399999999999991 0.0 198
-199 0.0334808826446533 0.0300000000000011 0.0300000000000011 0.0 199
-200 0.0335469245910645 0.0399999999999991 0.0399999999999991 0.0 200
-201 0.035862922668457 0.0300000000000011 0.0300000000000011 0.0 201
-202 0.034390926361084 0.0399999999999991 0.0399999999999991 0.0 202
-203 0.0333080291748047 0.0300000000000011 0.0300000000000011 0.0 203
-204 0.0580418109893799 0.0599999999999952 0.0599999999999952 0.0 204
-205 0.0345079898834229 0.0300000000000011 0.0300000000000011 0.0 205
-206 0.041719913482666 0.0499999999999972 0.0399999999999991 0.01 206
-207 0.0368390083312988 0.0399999999999991 0.0399999999999991 0.0 207
-208 0.0351078510284424 0.0300000000000011 0.0300000000000011 0.0 208
-209 0.0345809459686279 0.0399999999999991 0.0399999999999991 0.0 209
-210 0.0339300632476807 0.0300000000000011 0.0300000000000011 0.0 210
-211 0.0333361625671387 0.0399999999999991 0.0399999999999991 0.0 211
-212 0.0581560134887695 0.0600000000000023 0.0600000000000023 0.0 212
-213 0.0329880714416504 0.0300000000000011 0.0300000000000011 0.0 213
-214 0.0360338687896729 0.0300000000000011 0.0300000000000011 0.0 214
-215 0.0338609218597412 0.0399999999999991 0.0399999999999991 0.0 215
-216 0.0329849720001221 0.0300000000000011 0.0300000000000011 0.0 216
-217 0.0327110290527344 0.029999999999994 0.029999999999994 0.0 217
-218 0.0328159332275391 0.0400000000000063 0.0400000000000063 0.0 218
-219 0.0330610275268555 0.029999999999994 0.029999999999994 0.0 219
-220 0.03336501121521 0.0300000000000011 0.0300000000000011 0.0 220
-221 0.0611529350280762 0.0600000000000023 0.0600000000000023 0.0 221
-222 0.0351941585540771 0.0399999999999991 0.0399999999999991 0.0 222
-223 0.0333490371704102 0.0300000000000011 0.0300000000000011 0.0 223
-224 0.0350041389465332 0.0399999999999991 0.0399999999999991 0.0 224
-225 0.0333740711212158 0.0300000000000011 0.0300000000000011 0.0 225
-226 0.0332489013671875 0.0300000000000011 0.0300000000000011 0.0 226
-227 0.0336949825286865 0.0399999999999991 0.0399999999999991 0.0 227
-228 0.035956859588623 0.0300000000000011 0.0300000000000011 0.0 228
-229 0.0582809448242188 0.0599999999999952 0.0599999999999952 0.0 229
-230 0.0335919857025146 0.0300000000000011 0.0300000000000011 0.0 230
-231 0.0334489345550537 0.0399999999999991 0.0399999999999991 0.0 231
-232 0.0346810817718506 0.0300000000000011 0.0300000000000011 0.0 232
-233 0.0393500328063965 0.0399999999999991 0.0399999999999991 0.0 233
-234 0.0365040302276611 0.0399999999999991 0.0399999999999991 0.0 234
-235 0.0341880321502686 0.0300000000000011 0.0300000000000011 0.0 235
-236 0.0340659618377686 0.0399999999999991 0.0399999999999991 0.0 236
-237 0.0579462051391602 0.0500000000000043 0.0500000000000043 0.0 237
-238 0.0337111949920654 0.0399999999999991 0.0399999999999991 0.0 238
-239 0.0335190296173096 0.0300000000000011 0.0300000000000011 0.0 239
-240 0.0335848331451416 0.0399999999999991 0.0399999999999991 0.0 240
-241 0.0367398262023926 0.0300000000000011 0.0300000000000011 0.0 241
-242 0.0346360206604004 0.0399999999999991 0.0399999999999991 0.0 242
-243 0.0332989692687988 0.0300000000000011 0.0300000000000011 0.0 243
-244 0.0345680713653564 0.029999999999994 0.029999999999994 0.0 244
-245 0.0580320358276367 0.0600000000000023 0.0600000000000023 0.0 245
-246 0.0333890914916992 0.0399999999999991 0.0399999999999991 0.0 246
-247 0.0363030433654785 0.0300000000000011 0.0300000000000011 0.0 247
-248 0.0343329906463623 0.0399999999999991 0.0399999999999991 0.0 248
-249 0.0347940921783447 0.0300000000000011 0.0300000000000011 0.0 249
-250 0.0332629680633545 0.0300000000000011 0.0300000000000011 0.0 250
-251 0.0347621440887451 0.0399999999999991 0.0399999999999991 0.0 251
-252 0.0334999561309814 0.0300000000000011 0.0300000000000011 0.0 252
-253 0.0580670833587646 0.0600000000000023 0.0600000000000023 0.0 253
-254 0.0367870330810547 0.0399999999999991 0.0399999999999991 0.0 254
-255 0.0336589813232422 0.0300000000000011 0.0300000000000011 0.0 255
-256 0.0331900119781494 0.029999999999994 0.029999999999994 0.0 256
-257 0.0331740379333496 0.0399999999999991 0.0399999999999991 0.0 257
-258 0.0331830978393555 0.0300000000000011 0.0300000000000011 0.0 258
-259 0.037837028503418 0.0399999999999991 0.0399999999999991 0.0 259
-260 0.0366449356079102 0.0300000000000011 0.0300000000000011 0.0 260
-261 0.0612552165985107 0.0599999999999952 0.0599999999999952 0.0 261
-262 0.0344550609588623 0.0300000000000011 0.0300000000000011 0.0 262
-263 0.0333309173583984 0.0300000000000011 0.0300000000000011 0.0 263
-264 0.0331869125366211 0.0399999999999991 0.0399999999999991 0.0 264
-265 0.0332980155944824 0.0300000000000011 0.0300000000000011 0.0 265
-266 0.0332081317901611 0.0300000000000011 0.0300000000000011 0.0 266
-267 0.0328857898712158 0.0399999999999991 0.0399999999999991 0.0 267
-268 0.036323070526123 0.0300000000000011 0.0300000000000011 0.0 268
-269 0.0584030151367188 0.0599999999999952 0.0599999999999952 0.0 269
-270 0.0336670875549316 0.0399999999999991 0.0399999999999991 0.0 270
-271 0.0333220958709717 0.0300000000000011 0.0300000000000011 0.0 271
-272 0.0331919193267822 0.0300000000000011 0.0300000000000011 0.0 272
-273 0.0332930088043213 0.0399999999999991 0.0399999999999991 0.0 273
-274 0.0363700389862061 0.0300000000000011 0.0300000000000011 0.0 274
-275 0.0336799621582031 0.0399999999999991 0.0399999999999991 0.0 275
-276 0.0346400737762451 0.0300000000000011 0.0300000000000011 0.0 276
-277 0.0583391189575195 0.0600000000000023 0.0600000000000023 0.0 277
-278 0.0353269577026367 0.0300000000000011 0.0300000000000011 0.0 278
-279 0.0334451198577881 0.0399999999999991 0.0399999999999991 0.0 279
-280 0.0338170528411865 0.0300000000000011 0.0300000000000011 0.0 280
-281 0.0358221530914307 0.0399999999999991 0.0399999999999991 0.0 281
-282 0.033682107925415 0.0300000000000011 0.0300000000000011 0.0 282
-283 0.0331659317016602 0.029999999999994 0.029999999999994 0.0 283
-284 0.0337538719177246 0.0399999999999991 0.0399999999999991 0.0 284
-285 0.0577969551086426 0.0600000000000023 0.0600000000000023 0.0 285
-286 0.0399131774902344 0.0399999999999991 0.0399999999999991 0.0 286
-287 0.0358040332794189 0.0300000000000011 0.0300000000000011 0.0 287
-288 0.0327050685882568 0.0300000000000011 0.0300000000000011 0.0 288
-289 0.0338749885559082 0.0399999999999991 0.0399999999999991 0.0 289
-290 0.0324099063873291 0.0300000000000011 0.0300000000000011 0.0 290
-291 0.032336950302124 0.0300000000000011 0.0300000000000011 0.0 291
-292 0.0333211421966553 0.0399999999999991 0.0399999999999991 0.0 292
-293 0.0579719543457031 0.0499999999999972 0.0499999999999972 0.0 293
-294 0.0362699031829834 0.0399999999999991 0.0399999999999991 0.0 294
-295 0.0343790054321289 0.0300000000000011 0.0300000000000011 0.0 295
-296 0.0331552028656006 0.0399999999999991 0.0399999999999991 0.0 296
-297 0.0328569412231445 0.0300000000000011 0.0300000000000011 0.0 297
-298 0.0329990386962891 0.0300000000000011 0.0300000000000011 0.0 298
-299 0.0327639579772949 0.0399999999999991 0.0399999999999991 0.0 299
-300 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 300
-301 0.0610020160675049 0.0600000000000023 0.0600000000000023 0.0 301
-302 0.0331580638885498 0.0300000000000011 0.0300000000000011 0.0 302
-303 0.0325980186462402 0.0399999999999991 0.0399999999999991 0.0 303
-304 0.0325989723205566 0.029999999999994 0.029999999999994 0.0 304
-305 0.0341310501098633 0.0300000000000011 0.0300000000000011 0.0 305
-306 0.0326070785522461 0.0399999999999991 0.0399999999999991 0.0 306
-307 0.032383918762207 0.0300000000000011 0.0300000000000011 0.0 307
-308 0.0361649990081787 0.0300000000000011 0.0300000000000011 0.0 308
-309 0.0585198402404785 0.0600000000000023 0.0600000000000023 0.0 309
-310 0.0331130027770996 0.0399999999999991 0.0399999999999991 0.0 310
-311 0.0329859256744385 0.0300000000000011 0.0300000000000011 0.0 311
-312 0.0329129695892334 0.0300000000000011 0.0300000000000011 0.0 312
-313 0.0405938625335693 0.0399999999999991 0.0399999999999991 0.0 313
-314 0.0329680442810059 0.0300000000000011 0.0300000000000011 0.0 314
-315 0.0359671115875244 0.0399999999999991 0.0399999999999991 0.0 315
-316 0.0347959995269775 0.0399999999999991 0.0399999999999991 0.0 316
-317 0.0335128307342529 0.0300000000000011 0.0300000000000011 0.0 317
-318 0.0581021308898926 0.0599999999999952 0.0599999999999952 0.0 318
-319 0.033390998840332 0.0300000000000011 0.0300000000000011 0.0 319
-320 0.0332300662994385 0.0300000000000011 0.0300000000000011 0.0 320
-321 0.0363011360168457 0.0399999999999991 0.0399999999999991 0.0 321
-322 0.0331549644470215 0.0300000000000011 0.0300000000000011 0.0 322
-323 0.0341241359710693 0.0399999999999991 0.0399999999999991 0.0 323
-324 0.0336441993713379 0.0300000000000011 0.0300000000000011 0.0 324
-325 0.0336179733276367 0.0300000000000011 0.0300000000000011 0.0 325
-326 0.0578069686889648 0.0599999999999952 0.0599999999999952 0.0 326
-327 0.0333080291748047 0.0400000000000063 0.0400000000000063 0.0 327
-328 0.0363671779632568 0.029999999999994 0.029999999999994 0.0 328
-329 0.0343098640441895 0.0400000000000063 0.0400000000000063 0.0 329
-330 0.033099889755249 0.029999999999994 0.029999999999994 0.0 330
-331 0.0332112312316895 0.0300000000000011 0.0300000000000011 0.0 331
-332 0.0349369049072266 0.0399999999999991 0.0399999999999991 0.0 332
-333 0.033397912979126 0.0300000000000011 0.0300000000000011 0.0 333
-334 0.0581459999084473 0.0600000000000023 0.0600000000000023 0.0 334
-335 0.0366590023040771 0.0300000000000011 0.0300000000000011 0.0 335
-336 0.0336220264434814 0.0399999999999991 0.0399999999999991 0.0 336
-337 0.0332498550415039 0.0300000000000011 0.0300000000000011 0.0 337
-338 0.0331971645355225 0.0399999999999991 0.0399999999999991 0.0 338
-339 0.0332369804382324 0.0300000000000011 0.0300000000000011 0.0 339
-340 0.0404288768768311 0.0399999999999991 0.0399999999999991 0.0 340
-341 0.0335631370544434 0.0300000000000011 0.0300000000000011 0.0 341
-342 0.0613040924072266 0.0599999999999952 0.0599999999999952 0.0 342
-343 0.0339159965515137 0.0399999999999991 0.0399999999999991 0.0 343
-344 0.0333619117736816 0.0300000000000011 0.0300000000000011 0.0 344
-345 0.0331740379333496 0.0300000000000011 0.0300000000000011 0.0 345
-346 0.0331220626831055 0.0399999999999991 0.0399999999999991 0.0 346
-347 0.0331380367279053 0.0300000000000011 0.0300000000000011 0.0 347
-348 0.0358641147613525 0.0399999999999991 0.0399999999999991 0.0 348
-349 0.0335299968719482 0.0300000000000011 0.0300000000000011 0.0 349
-350 0.0584430694580078 0.0600000000000023 0.0600000000000023 0.0 350
-351 0.0353488922119141 0.029999999999994 0.029999999999994 0.0 351
-352 0.03336501121521 0.0400000000000063 0.0400000000000063 0.0 352
-353 0.0332889556884766 0.029999999999994 0.029999999999994 0.0 353
-354 0.0334041118621826 0.0300000000000011 0.0300000000000011 0.0 354
-355 0.0363349914550781 0.0399999999999991 0.0399999999999991 0.0 355
-356 0.0346698760986328 0.0300000000000011 0.0300000000000011 0.0 356
-357 0.0335850715637207 0.0399999999999991 0.0399999999999991 0.0 357
-358 0.0599031448364258 0.0600000000000023 0.0600000000000023 0.0 358
-359 0.0340287685394287 0.0300000000000011 0.0300000000000011 0.0 359
-360 0.0335278511047363 0.0300000000000011 0.0300000000000011 0.0 360
-361 0.0349221229553223 0.0399999999999991 0.0399999999999991 0.0 361
-362 0.0355300903320312 0.0300000000000011 0.0300000000000011 0.0 362
-363 0.0349609851837158 0.0399999999999991 0.0399999999999991 0.0 363
-364 0.0329630374908447 0.0300000000000011 0.0300000000000011 0.0 364
-365 0.0333020687103271 0.0399999999999991 0.0399999999999991 0.0 365
-366 0.065701961517334 0.0599999999999952 0.0599999999999952 0.0 366
-367 0.0337100028991699 0.0400000000000063 0.0400000000000063 0.0 367
-368 0.0366199016571045 0.029999999999994 0.029999999999994 0.0 368
-369 0.0340349674224854 0.0400000000000063 0.0400000000000063 0.0 369
-370 0.0338621139526367 0.029999999999994 0.029999999999994 0.0 370
-371 0.0332958698272705 0.0300000000000011 0.0300000000000011 0.0 371
-372 0.0330479145050049 0.0399999999999991 0.0399999999999991 0.0 372
-373 0.033778190612793 0.0300000000000011 0.0300000000000011 0.0 373
-374 0.0588729381561279 0.0600000000000023 0.0600000000000023 0.0 374
-375 0.036099910736084 0.0399999999999991 0.0399999999999991 0.0 375
-376 0.0358579158782959 0.0300000000000011 0.0300000000000011 0.0 376
-377 0.03354811668396 0.0399999999999991 0.0399999999999991 0.0 377
-378 0.0334241390228271 0.0300000000000011 0.0300000000000011 0.0 378
-379 0.0335249900817871 0.0300000000000011 0.0300000000000011 0.0 379
-380 0.0329539775848389 0.0399999999999991 0.0399999999999991 0.0 380
-381 0.0334098339080811 0.0300000000000011 0.0300000000000011 0.0 381
-382 0.0632669925689697 0.0599999999999952 0.0599999999999952 0.0 382
-383 0.033499002456665 0.0399999999999991 0.0399999999999991 0.0 383
-384 0.0333430767059326 0.0300000000000011 0.0300000000000011 0.0 384
-385 0.03495192527771 0.0300000000000011 0.0300000000000011 0.0 385
-386 0.0333530902862549 0.0399999999999991 0.0399999999999991 0.0 386
-387 0.0335168838500977 0.0300000000000011 0.0300000000000011 0.0 387
-388 0.0355610847473145 0.0399999999999991 0.0399999999999991 0.0 388
-389 0.0336718559265137 0.0300000000000011 0.0300000000000011 0.0 389
-390 0.0594749450683594 0.0600000000000023 0.0600000000000023 0.0 390
-391 0.03342604637146 0.029999999999994 0.029999999999994 0.0 391
-392 0.0333490371704102 0.0400000000000063 0.0400000000000063 0.0 392
-393 0.0401210784912109 0.0399999999999991 0.0399999999999991 0.0 393
-394 0.0331671237945557 0.0300000000000011 0.0300000000000011 0.0 394
-395 0.0364630222320557 0.0399999999999991 0.0399999999999991 0.0 395
-396 0.0339119434356689 0.0300000000000011 0.0300000000000011 0.0 396
-397 0.0332529544830322 0.029999999999994 0.029999999999994 0.0 397
-398 0.0581979751586914 0.0600000000000023 0.0600000000000023 0.0 398
-399 0.0337510108947754 0.0300000000000011 0.0300000000000011 0.0 399
-400 0.0334861278533936 0.0300000000000011 0.0300000000000011 0.0 400
-401 0.0362730026245117 0.0300000000000011 0.0300000000000011 0.0 401
-402 0.03330397605896 0.0399999999999991 0.0399999999999991 0.0 402
-403 0.0347201824188232 0.0300000000000011 0.0300000000000011 0.0 403
-404 0.0331459045410156 0.0399999999999991 0.0399999999999991 0.0 404
-405 0.0333847999572754 0.0300000000000011 0.0300000000000011 0.0 405
-406 0.0580871105194092 0.0599999999999952 0.0599999999999952 0.0 406
-407 0.0334339141845703 0.0300000000000011 0.0300000000000011 0.0 407
-408 0.0370500087738037 0.0399999999999991 0.0399999999999991 0.0 408
-409 0.0344600677490234 0.0300000000000011 0.0300000000000011 0.0 409
-410 0.0331830978393555 0.0399999999999991 0.0399999999999991 0.0 410
-411 0.0335149765014648 0.0300000000000011 0.0300000000000011 0.0 411
-412 0.0346379280090332 0.0300000000000011 0.0300000000000011 0.0 412
-413 0.0334169864654541 0.0399999999999991 0.0399999999999991 0.0 413
-414 0.0582180023193359 0.0600000000000023 0.0600000000000023 0.0 414
-415 0.0361251831054688 0.0300000000000011 0.0300000000000011 0.0 415
-416 0.0350911617279053 0.0399999999999991 0.0399999999999991 0.0 416
-417 0.0334968566894531 0.0300000000000011 0.0300000000000011 0.0 417
-418 0.0332348346710205 0.029999999999994 0.029999999999994 0.0 418
-419 0.0332620143890381 0.0400000000000063 0.0400000000000063 0.0 419
-420 0.0409719944000244 0.0399999999999991 0.0399999999999991 0.0 420
-421 0.0333600044250488 0.0300000000000011 0.0300000000000011 0.0 421
-422 0.0630040168762207 0.0599999999999952 0.0599999999999952 0.0 422
-423 0.0343139171600342 0.0399999999999991 0.0399999999999991 0.0 423
-424 0.0333878993988037 0.0300000000000011 0.0300000000000011 0.0 424
-425 0.0333099365234375 0.0300000000000011 0.0300000000000011 0.0 425
-426 0.0331859588623047 0.0399999999999991 0.0399999999999991 0.0 426
-427 0.0331718921661377 0.0300000000000011 0.0300000000000011 0.0 427
-428 0.0377118587493896 0.0399999999999991 0.0399999999999991 0.0 428
-429 0.0332839488983154 0.0300000000000011 0.0300000000000011 0.0 429
-430 0.0597720146179199 0.0600000000000023 0.0600000000000023 0.0 430
-431 0.0336380004882812 0.029999999999994 0.029999999999994 0.0 431
-432 0.0333139896392822 0.0400000000000063 0.0400000000000063 0.0 432
-433 0.0331470966339111 0.029999999999994 0.029999999999994 0.0 433
-434 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 434
-435 0.0361709594726562 0.0399999999999991 0.0399999999999991 0.0 435
-436 0.0336370468139648 0.0300000000000011 0.0300000000000011 0.0 436
-437 0.0333271026611328 0.0399999999999991 0.0399999999999991 0.0 437
-438 0.0596990585327148 0.0500000000000043 0.0500000000000043 0.0 438
-439 0.0337719917297363 0.0399999999999991 0.0399999999999991 0.0 439
-440 0.0335121154785156 0.0300000000000011 0.0300000000000011 0.0 440
-441 0.0355470180511475 0.0399999999999991 0.0399999999999991 0.0 441
-442 0.0341551303863525 0.0300000000000011 0.0300000000000011 0.0 442
-443 0.033562183380127 0.0399999999999991 0.0399999999999991 0.0 443
-444 0.033012866973877 0.0300000000000011 0.0300000000000011 0.0 444
-445 0.0334839820861816 0.029999999999994 0.029999999999994 0.0 445
-446 0.064687967300415 0.0700000000000003 0.0700000000000003 0.0 446
-447 0.0336949825286865 0.0300000000000011 0.0300000000000011 0.0 447
-448 0.0361959934234619 0.0399999999999991 0.0399999999999991 0.0 448
-449 0.0349109172821045 0.0300000000000011 0.0300000000000011 0.0 449
-450 0.0339109897613525 0.0399999999999991 0.0399999999999991 0.0 450
-451 0.0331861972808838 0.0300000000000011 0.0300000000000011 0.0 451
-452 0.0328741073608398 0.0300000000000011 0.0300000000000011 0.0 452
-453 0.0332541465759277 0.0399999999999991 0.0399999999999991 0.0 453
-454 0.0579590797424316 0.0500000000000043 0.0500000000000043 0.0 454
-455 0.0366909503936768 0.0399999999999991 0.0399999999999991 0.0 455
-456 0.0345089435577393 0.0300000000000011 0.0300000000000011 0.0 456
-457 0.0332140922546387 0.0399999999999991 0.0399999999999991 0.0 457
-458 0.0330581665039062 0.029999999999994 0.029999999999994 0.0 458
-459 0.0331969261169434 0.0300000000000011 0.0300000000000011 0.0 459
-460 0.0328719615936279 0.0399999999999991 0.0399999999999991 0.0 460
-461 0.033440113067627 0.0300000000000011 0.0300000000000011 0.0 461
-462 0.0617790222167969 0.0600000000000023 0.0600000000000023 0.0 462
-463 0.033750057220459 0.0300000000000011 0.0300000000000011 0.0 463
-464 0.0332808494567871 0.0399999999999991 0.0399999999999991 0.0 464
-465 0.0350358486175537 0.0300000000000011 0.0300000000000011 0.0 465
-466 0.0332400798797607 0.0399999999999991 0.0399999999999991 0.0 466
-467 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 467
-468 0.0343048572540283 0.0300000000000011 0.0300000000000011 0.0 468
-469 0.0357210636138916 0.0399999999999991 0.0399999999999991 0.0 469
-470 0.0584299564361572 0.0599999999999952 0.0599999999999952 0.0 470
-471 0.0334739685058594 0.0300000000000011 0.0300000000000011 0.0 471
-472 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 472
-473 0.0423488616943359 0.0499999999999972 0.0499999999999972 0.0 473
-474 0.033174991607666 0.0300000000000011 0.0300000000000011 0.0 474
-475 0.0360331535339355 0.0300000000000011 0.0300000000000011 0.0 475
-476 0.036052942276001 0.0399999999999991 0.0399999999999991 0.0 476
-477 0.0333659648895264 0.0300000000000011 0.0300000000000011 0.0 477
-478 0.0577530860900879 0.0600000000000023 0.0600000000000023 0.0 478
-479 0.0335140228271484 0.0399999999999991 0.0399999999999991 0.0 479
-480 0.0333487987518311 0.0300000000000011 0.0300000000000011 0.0 480
-481 0.0346870422363281 0.0300000000000011 0.0300000000000011 0.0 481
-482 0.0349428653717041 0.0399999999999991 0.0399999999999991 0.0 482
-483 0.0336499214172363 0.0300000000000011 0.0300000000000011 0.0 483
-484 0.0331089496612549 0.0399999999999991 0.0399999999999991 0.0 484
-485 0.0334107875823975 0.029999999999994 0.029999999999994 0.0 485
-486 0.0580129623413086 0.0600000000000023 0.0600000000000023 0.0 486
-487 0.0336880683898926 0.0300000000000011 0.0300000000000011 0.0 487
-488 0.0364341735839844 0.0399999999999991 0.0399999999999991 0.0 488
-489 0.0356800556182861 0.0300000000000011 0.0300000000000011 0.0 489
-490 0.033689022064209 0.0399999999999991 0.0399999999999991 0.0 490
-491 0.0335180759429932 0.0300000000000011 0.0300000000000011 0.0 491
-492 0.0345418453216553 0.0300000000000011 0.0300000000000011 0.0 492
-493 0.0336930751800537 0.0399999999999991 0.0399999999999991 0.0 493
-494 0.0580000877380371 0.0600000000000023 0.0600000000000023 0.0 494
-495 0.0361080169677734 0.029999999999994 0.029999999999994 0.0 495
-496 0.0336720943450928 0.0400000000000063 0.0400000000000063 0.0 496
-497 0.0333058834075928 0.029999999999994 0.029999999999994 0.0 497
-498 0.0333189964294434 0.0300000000000011 0.0300000000000011 0.0 498
-499 0.0332541465759277 0.0399999999999991 0.0399999999999991 0.0 499
-500 0.0402250289916992 0.0399999999999991 0.0399999999999991 0.0 500
-501 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 501
-502 0.0628290176391602 0.0600000000000023 0.0600000000000023 0.0 502
-503 0.0341489315032959 0.0399999999999991 0.0399999999999991 0.0 503
-504 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 504
-505 0.03312087059021 0.0300000000000011 0.0300000000000011 0.0 505
-506 0.0330550670623779 0.0399999999999991 0.0399999999999991 0.0 506
-507 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 507
-508 0.0347590446472168 0.0300000000000011 0.0300000000000011 0.0 508
-509 0.0346050262451172 0.0399999999999991 0.0399999999999991 0.0 509
-510 0.0589158535003662 0.0599999999999952 0.0599999999999952 0.0 510
-511 0.0335807800292969 0.0300000000000011 0.0300000000000011 0.0 511
-512 0.0333380699157715 0.0399999999999991 0.0399999999999991 0.0 512
-513 0.0332279205322266 0.0300000000000011 0.0300000000000011 0.0 513
-514 0.0332310199737549 0.0300000000000011 0.0300000000000011 0.0 514
-515 0.0361509323120117 0.0399999999999991 0.0399999999999991 0.0 515
-516 0.0350699424743652 0.0300000000000011 0.0300000000000011 0.0 516
-517 0.0337638854980469 0.0399999999999991 0.0399999999999991 0.0 517
-518 0.0580861568450928 0.0600000000000023 0.0600000000000023 0.0 518
-519 0.035269021987915 0.0300000000000011 0.0300000000000011 0.0 519
-520 0.0334429740905762 0.029999999999994 0.029999999999994 0.0 520
-521 0.0334320068359375 0.0400000000000063 0.0400000000000063 0.0 521
-522 0.0365338325500488 0.029999999999994 0.029999999999994 0.0 522
-523 0.0335922241210938 0.0400000000000063 0.0400000000000063 0.0 523
-524 0.0331869125366211 0.029999999999994 0.029999999999994 0.0 524
-525 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 525
-526 0.0657279491424561 0.0700000000000003 0.0700000000000003 0.0 526
-527 0.0335869789123535 0.0300000000000011 0.0300000000000011 0.0 527
-528 0.0365140438079834 0.0399999999999991 0.0399999999999991 0.0 528
-529 0.033782958984375 0.0300000000000011 0.0300000000000011 0.0 529
-530 0.0337071418762207 0.0399999999999991 0.0399999999999991 0.0 530
-531 0.0332880020141602 0.0300000000000011 0.0300000000000011 0.0 531
-532 0.0329639911651611 0.0300000000000011 0.0300000000000011 0.0 532
-533 0.033315896987915 0.0399999999999991 0.0399999999999991 0.0 533
-534 0.0582611560821533 0.0499999999999972 0.0499999999999972 0.0 534
-535 0.0367379188537598 0.0399999999999991 0.0399999999999991 0.0 535
-536 0.033797025680542 0.0400000000000063 0.0400000000000063 0.0 536
-537 0.0335040092468262 0.029999999999994 0.029999999999994 0.0 537
-538 0.0333931446075439 0.0300000000000011 0.0300000000000011 0.0 538
-539 0.033318042755127 0.0399999999999991 0.0399999999999991 0.0 539
-540 0.0329570770263672 0.0300000000000011 0.0300000000000011 0.0 540
-541 0.0334439277648926 0.0300000000000011 0.0300000000000011 0.0 541
-542 0.0605781078338623 0.0600000000000023 0.0600000000000023 0.0 542
-543 0.0348639488220215 0.0399999999999991 0.0399999999999991 0.0 543
-544 0.0333831310272217 0.0300000000000011 0.0300000000000011 0.0 544
-545 0.0333919525146484 0.029999999999994 0.029999999999994 0.0 545
-546 0.0348379611968994 0.0400000000000063 0.0400000000000063 0.0 546
-547 0.0334489345550537 0.029999999999994 0.029999999999994 0.0 547
-548 0.0333089828491211 0.0400000000000063 0.0400000000000063 0.0 548
-549 0.0365209579467773 0.029999999999994 0.029999999999994 0.0 549
-550 0.0601961612701416 0.0600000000000023 0.0600000000000023 0.0 550
-551 0.0337119102478027 0.0300000000000011 0.0300000000000011 0.0 551
-552 0.0332701206207275 0.0399999999999991 0.0399999999999991 0.0 552
-553 0.0401608943939209 0.0399999999999991 0.0399999999999991 0.0 553
-554 0.0333070755004883 0.0300000000000011 0.0300000000000011 0.0 554
-555 0.0364260673522949 0.0399999999999991 0.0399999999999991 0.0 555
-556 0.0348329544067383 0.0300000000000011 0.0300000000000011 0.0 556
-557 0.0339481830596924 0.0399999999999991 0.0399999999999991 0.0 557
-558 0.0576767921447754 0.0499999999999972 0.0499999999999972 0.0 558
-559 0.0335049629211426 0.0300000000000011 0.0300000000000011 0.0 559
-560 0.0332691669464111 0.029999999999994 0.029999999999994 0.0 560
-561 0.0332450866699219 0.0400000000000063 0.0400000000000063 0.0 561
-562 0.037883996963501 0.029999999999994 0.029999999999994 0.0 562
-563 0.0370709896087646 0.0400000000000063 0.0400000000000063 0.0 563
-564 0.0331628322601318 0.029999999999994 0.029999999999994 0.0 564
-565 0.0335371494293213 0.0399999999999991 0.0399999999999991 0.0 565
-566 0.0579180717468262 0.0500000000000043 0.0500000000000043 0.0 566
-567 0.0335509777069092 0.0399999999999991 0.0399999999999991 0.0 567
-568 0.0369341373443604 0.0300000000000011 0.0300000000000011 0.0 568
-569 0.0334761142730713 0.0399999999999991 0.0399999999999991 0.0 569
-570 0.0333311557769775 0.0300000000000011 0.0300000000000011 0.0 570
-571 0.0333850383758545 0.0300000000000011 0.0300000000000011 0.0 571
-572 0.0344130992889404 0.0399999999999991 0.0399999999999991 0.0 572
-573 0.0333690643310547 0.0300000000000011 0.0300000000000011 0.0 573
-574 0.0581290721893311 0.0599999999999952 0.0599999999999952 0.0 574
-575 0.0367560386657715 0.0399999999999991 0.0399999999999991 0.0 575
-576 0.0336780548095703 0.0300000000000011 0.0300000000000011 0.0 576
-577 0.0331878662109375 0.0300000000000011 0.0300000000000011 0.0 577
-578 0.0332210063934326 0.0399999999999991 0.0399999999999991 0.0 578
-579 0.0332109928131104 0.0300000000000011 0.0300000000000011 0.0 579
-580 0.0409071445465088 0.0399999999999991 0.0399999999999991 0.0 580
-581 0.033595085144043 0.0300000000000011 0.0300000000000011 0.0 581
-582 0.0607550144195557 0.0600000000000023 0.0600000000000023 0.0 582
-583 0.0355041027069092 0.0399999999999991 0.0399999999999991 0.0 583
-584 0.0334818363189697 0.0300000000000011 0.0300000000000011 0.0 584
-585 0.0333139896392822 0.0399999999999991 0.0399999999999991 0.0 585
-586 0.0332391262054443 0.0300000000000011 0.0300000000000011 0.0 586
-587 0.0332348346710205 0.029999999999994 0.029999999999994 0.0 587
-588 0.0332849025726318 0.0400000000000063 0.0400000000000063 0.0 588
-589 0.0360300540924072 0.029999999999994 0.029999999999994 0.0 589
-590 0.0599799156188965 0.0600000000000023 0.0600000000000023 0.0 590
-591 0.0335240364074707 0.0399999999999991 0.0399999999999991 0.0 591
-592 0.0333631038665771 0.0300000000000011 0.0300000000000011 0.0 592
-593 0.0332529544830322 0.0300000000000011 0.0300000000000011 0.0 593
-594 0.0335328578948975 0.0399999999999991 0.0399999999999991 0.0 594
-595 0.0370910167694092 0.0300000000000011 0.0300000000000011 0.0 595
-596 0.0335230827331543 0.0399999999999991 0.0399999999999991 0.0 596
-597 0.0337550640106201 0.0300000000000011 0.0300000000000011 0.0 597
-598 0.0580778121948242 0.0599999999999952 0.0599999999999952 0.0 598
-599 0.0352489948272705 0.0300000000000011 0.0300000000000011 0.0 599
-600 0.0334210395812988 0.0399999999999991 0.0399999999999991 0.0 600
-601 0.0336451530456543 0.0300000000000011 0.0300000000000011 0.0 601
-602 0.0362639427185059 0.0399999999999991 0.0399999999999991 0.0 602
-603 0.0335409641265869 0.0300000000000011 0.0300000000000011 0.0 603
-604 0.0330269336700439 0.0300000000000011 0.0300000000000011 0.0 604
-605 0.033350944519043 0.0399999999999991 0.0399999999999991 0.0 605
-606 0.0649051666259766 0.0600000000000023 0.0600000000000023 0.0 606
-607 0.0337560176849365 0.0399999999999991 0.0399999999999991 0.0 607
-608 0.0365309715270996 0.0300000000000011 0.0300000000000011 0.0 608
-609 0.0352151393890381 0.0399999999999991 0.0399999999999991 0.0 609
-610 0.0339179039001465 0.0300000000000011 0.0300000000000011 0.0 610
-611 0.0331799983978271 0.0300000000000011 0.0300000000000011 0.0 611
-612 0.0330498218536377 0.0399999999999991 0.0399999999999991 0.0 612
-613 0.0336270332336426 0.0300000000000011 0.0300000000000011 0.0 613
-614 0.0577888488769531 0.0599999999999952 0.0599999999999952 0.0 614
-615 0.0366761684417725 0.0399999999999991 0.0399999999999991 0.0 615
-616 0.0336871147155762 0.0300000000000011 0.0300000000000011 0.0 616
-617 0.0334889888763428 0.0300000000000011 0.0300000000000011 0.0 617
-618 0.033146858215332 0.0399999999999991 0.0399999999999991 0.0 618
-619 0.0333569049835205 0.0300000000000011 0.0300000000000011 0.0 619
-620 0.0330309867858887 0.0300000000000011 0.0300000000000011 0.0 620
-621 0.0333929061889648 0.0399999999999991 0.0399999999999991 0.0 621
-622 0.0609011650085449 0.0600000000000023 0.0600000000000023 0.0 622
-623 0.0338809490203857 0.0300000000000011 0.0300000000000011 0.0 623
-624 0.0332272052764893 0.029999999999994 0.029999999999994 0.0 624
-625 0.0336441993713379 0.0399999999999991 0.0399999999999991 0.0 625
-626 0.035059928894043 0.0300000000000011 0.0300000000000011 0.0 626
-627 0.0334160327911377 0.0399999999999991 0.0399999999999991 0.0 627
-628 0.0334069728851318 0.0300000000000011 0.0300000000000011 0.0 628
-629 0.0366249084472656 0.0399999999999991 0.0399999999999991 0.0 629
-630 0.0583260059356689 0.0500000000000043 0.0500000000000043 0.0 630
-631 0.0333540439605713 0.0399999999999991 0.0399999999999991 0.0 631
-632 0.0333960056304932 0.0300000000000011 0.0300000000000011 0.0 632
-633 0.0413072109222412 0.0399999999999991 0.0399999999999991 0.0 633
-634 0.0332448482513428 0.0399999999999991 0.0399999999999991 0.0 634
-635 0.0363118648529053 0.0300000000000011 0.0300000000000011 0.0 635
-636 0.035132884979248 0.0399999999999991 0.0399999999999991 0.0 636
-637 0.0339901447296143 0.0300000000000011 0.0300000000000011 0.0 637
-638 0.0578219890594482 0.0599999999999952 0.0599999999999952 0.0 638
-639 0.0334219932556152 0.0300000000000011 0.0300000000000011 0.0 639
-640 0.0333530902862549 0.0399999999999991 0.0399999999999991 0.0 640
-641 0.033282995223999 0.0300000000000011 0.0300000000000011 0.0 641
-642 0.0364758968353271 0.0399999999999991 0.0399999999999991 0.0 642
-643 0.0333881378173828 0.0300000000000011 0.0300000000000011 0.0 643
-644 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 644
-645 0.0334770679473877 0.0399999999999991 0.0399999999999991 0.0 645
-646 0.0579509735107422 0.0500000000000043 0.0500000000000043 0.0 646
-647 0.0336329936981201 0.0399999999999991 0.0399999999999991 0.0 647
-648 0.0373489856719971 0.0399999999999991 0.0399999999999991 0.0 648
-649 0.0342509746551514 0.0300000000000011 0.0300000000000011 0.0 649
-650 0.0337338447570801 0.0300000000000011 0.0300000000000011 0.0 650
-651 0.0333359241485596 0.0399999999999991 0.0399999999999991 0.0 651
-652 0.0332560539245605 0.029999999999994 0.029999999999994 0.0 652
-653 0.034912109375 0.029999999999994 0.0300000000000011 0.0 653
-654 0.0582709312438965 0.0600000000000023 0.0600000000000023 0.0 654
-655 0.0366790294647217 0.0400000000000063 0.0400000000000063 0.0 655
-656 0.0336661338806152 0.0299999999999869 0.0299999999999869 0.0 656
-657 0.0334138870239258 0.0400000000000063 0.0400000000000063 0.0 657
-658 0.033390998840332 0.0300000000000011 0.0300000000000011 0.0 658
-659 0.0330209732055664 0.0300000000000011 0.0300000000000011 0.0 659
-660 0.0407001972198486 0.039999999999992 0.039999999999992 0.0 660
-661 0.0335381031036377 0.0400000000000063 0.0400000000000063 0.0 661
-662 0.0610449314117432 0.0600000000000023 0.0600000000000023 0.0 662
-663 0.0341410636901855 0.0300000000000011 0.0300000000000011 0.0 663
-664 0.0333421230316162 0.039999999999992 0.039999999999992 0.0 664
-665 0.0331799983978271 0.0300000000000011 0.0300000000000011 0.0 665
-666 0.0331680774688721 0.0300000000000011 0.0300000000000011 0.0 666
-667 0.0328528881072998 0.0400000000000063 0.0400000000000063 0.0 667
-668 0.0334010124206543 0.0300000000000011 0.0300000000000011 0.0 668
-669 0.0363960266113281 0.0300000000000011 0.0300000000000011 0.0 669
-670 0.058311939239502 0.0599999999999881 0.0599999999999881 0.0 670
-671 0.03330397605896 0.0400000000000063 0.0400000000000063 0.0 671
-672 0.0332088470458984 0.0300000000000011 0.0300000000000011 0.0 672
-673 0.0331571102142334 0.0300000000000011 0.0300000000000011 0.0 673
-674 0.0347979068756104 0.039999999999992 0.039999999999992 0.0 674
-675 0.0361380577087402 0.0300000000000011 0.0300000000000011 0.0 675
-676 0.0341131687164307 0.0400000000000063 0.0400000000000063 0.0 676
-677 0.03476881980896 0.0300000000000011 0.0300000000000011 0.0 677
-678 0.058121919631958 0.0600000000000023 0.0600000000000023 0.0 678
-679 0.0350527763366699 0.0300000000000011 0.0300000000000011 0.0 679
-680 0.0333900451660156 0.039999999999992 0.039999999999992 0.0 680
-681 0.033829927444458 0.0300000000000011 0.0300000000000011 0.0 681
-682 0.0363891124725342 0.0400000000000063 0.0400000000000063 0.0 682
-683 0.0345211029052734 0.0299999999999869 0.0299999999999869 0.0 683
-684 0.0335590839385986 0.0400000000000063 0.0400000000000063 0.0 684
-685 0.0574600696563721 0.0499999999999972 0.0499999999999972 0.0 685
-686 0.041471004486084 0.0499999999999972 0.0499999999999972 0.0 686
-687 0.0334889888763428 0.0300000000000011 0.0300000000000011 0.0 687
-688 0.0362579822540283 0.0400000000000063 0.0400000000000063 0.0 688
-689 0.033682107925415 0.0300000000000011 0.0300000000000011 0.0 689
-690 0.0352790355682373 0.0300000000000011 0.0300000000000011 0.0 690
-691 0.033221960067749 0.039999999999992 0.039999999999992 0.0 691
-692 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 692
-693 0.0577991008758545 0.0600000000000023 0.0600000000000023 0.0 693
-694 0.0340001583099365 0.0300000000000011 0.0300000000000011 0.0 694
-695 0.0366599559783936 0.0400000000000063 0.0400000000000063 0.0 695
-696 0.0336761474609375 0.0299999999999869 0.0299999999999869 0.0 696
-697 0.0338170528411865 0.0400000000000063 0.0400000000000063 0.0 697
-698 0.0334699153900146 0.0300000000000011 0.0300000000000011 0.0 698
-699 0.0334680080413818 0.0300000000000011 0.0300000000000011 0.0 699
-700 0.0334641933441162 0.039999999999992 0.039999999999992 0.0 700
-701 0.0584831237792969 0.0700000000000074 0.0600000000000023 0.01 701
-702 0.0371170043945312 0.0300000000000011 0.0300000000000011 0.0 702
-703 0.0348899364471436 0.0400000000000063 0.0400000000000063 0.0 703
-704 0.0332977771759033 0.0300000000000011 0.0300000000000011 0.0 704
-705 0.0337090492248535 0.0300000000000011 0.0300000000000011 0.0 705
-706 0.0363600254058838 0.039999999999992 0.039999999999992 0.0 706
-707 0.0332589149475098 0.0300000000000011 0.0300000000000011 0.0 707
-708 0.0335700511932373 0.0300000000000011 0.0300000000000011 0.0 708
-709 0.0618710517883301 0.0699999999999932 0.0699999999999932 0.0 709
-710 0.0338459014892578 0.0300000000000011 0.0300000000000011 0.0 710
-711 0.0334110260009766 0.0300000000000011 0.0300000000000011 0.0 711
-712 0.0332870483398438 0.0400000000000063 0.0400000000000063 0.0 712
-713 0.0403330326080322 0.039999999999992 0.039999999999992 0.0 713
-714 0.0332109928131104 0.0300000000000011 0.0300000000000011 0.0 714
-715 0.0362699031829834 0.0400000000000063 0.0400000000000063 0.0 715
-716 0.0349149703979492 0.0300000000000011 0.0300000000000011 0.0 716
-717 0.0590531826019287 0.0600000000000023 0.0600000000000023 0.0 717
-718 0.0336310863494873 0.039999999999992 0.039999999999992 0.0 718
-719 0.0333178043365479 0.0300000000000011 0.0300000000000011 0.0 719
-720 0.0332901477813721 0.0300000000000011 0.0300000000000011 0.0 720
-721 0.0332920551300049 0.0400000000000063 0.0400000000000063 0.0 721
-722 0.0363869667053223 0.0300000000000011 0.0300000000000011 0.0 722
-723 0.0335569381713867 0.039999999999992 0.039999999999992 0.0 723
-724 0.0336151123046875 0.0300000000000011 0.0300000000000011 0.0 724
-725 0.0579018592834473 0.0600000000000023 0.0600000000000023 0.0 725
-726 0.0334959030151367 0.0300000000000011 0.0300000000000011 0.0 726
-727 0.0332579612731934 0.0300000000000011 0.0300000000000011 0.0 727
-728 0.0363228321075439 0.039999999999992 0.039999999999992 0.0 728
-729 0.034060001373291 0.0300000000000011 0.0300000000000011 0.0 729
-730 0.0342481136322021 0.0400000000000063 0.0400000000000063 0.0 730
-731 0.033174991607666 0.0300000000000011 0.0300000000000011 0.0 731
-732 0.0333402156829834 0.039999999999992 0.039999999999992 0.0 732
-733 0.0594391822814941 0.0499999999999972 0.0499999999999972 0.0 733
-734 0.0340390205383301 0.0400000000000063 0.0400000000000063 0.0 734
-735 0.0368988513946533 0.0300000000000011 0.0300000000000011 0.0 735
-736 0.036196231842041 0.039999999999992 0.039999999999992 0.0 736
-737 0.0333859920501709 0.0300000000000011 0.0300000000000011 0.0 737
-738 0.0332441329956055 0.0400000000000063 0.0400000000000063 0.0 738
-739 0.0330839157104492 0.0300000000000011 0.0300000000000011 0.0 739
-740 0.0413918495178223 0.039999999999992 0.039999999999992 0.0 740
-741 0.0612490177154541 0.0600000000000023 0.0600000000000023 0.0 741
-742 0.0341551303863525 0.0300000000000011 0.0300000000000011 0.0 742
-743 0.035499095916748 0.0400000000000063 0.0400000000000063 0.0 743
-744 0.0333080291748047 0.0300000000000011 0.0300000000000011 0.0 744
-745 0.0331649780273438 0.039999999999992 0.039999999999992 0.0 745
-746 0.0332601070404053 0.0300000000000011 0.0300000000000011 0.0 746
-747 0.0330040454864502 0.0300000000000011 0.0300000000000011 0.0 747
-748 0.0333499908447266 0.0400000000000063 0.0400000000000063 0.0 748
-749 0.0617849826812744 0.0599999999999881 0.0599999999999881 0.0 749
-750 0.0337250232696533 0.0300000000000011 0.0300000000000011 0.0 750
-751 0.0336470603942871 0.0400000000000063 0.0400000000000063 0.0 751
-752 0.0334620475769043 0.0300000000000011 0.0300000000000011 0.0 752
-753 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 753
-754 0.0332539081573486 0.039999999999992 0.039999999999992 0.0 754
-755 0.036297082901001 0.0300000000000011 0.0300000000000011 0.0 755
-756 0.0344269275665283 0.0400000000000063 0.0400000000000063 0.0 756
-757 0.0584709644317627 0.0499999999999972 0.0499999999999972 0.0 757
-758 0.0336380004882812 0.0300000000000011 0.0300000000000011 0.0 758
-759 0.0352699756622314 0.0300000000000011 0.0300000000000011 0.0 759
-760 0.0333750247955322 0.039999999999992 0.039999999999992 0.0 760
-761 0.0338349342346191 0.0300000000000011 0.0300000000000011 0.0 761
-762 0.0356252193450928 0.0400000000000063 0.0400000000000063 0.0 762
-763 0.0349218845367432 0.0299999999999869 0.0299999999999869 0.0 763
-764 0.0333728790283203 0.0300000000000011 0.0300000000000011 0.0 764
-765 0.057542085647583 0.0600000000000023 0.0600000000000023 0.0 765
-766 0.040518045425415 0.0400000000000063 0.0400000000000063 0.0 766
-767 0.0333969593048096 0.039999999999992 0.039999999999992 0.0 767
-768 0.036506175994873 0.0300000000000011 0.0300000000000011 0.0 768
-769 0.034682035446167 0.0400000000000063 0.0400000000000063 0.0 769
-770 0.0337419509887695 0.0300000000000011 0.0300000000000011 0.0 770
-771 0.0334620475769043 0.0300000000000011 0.0300000000000011 0.0 771
-772 0.0577020645141602 0.0600000000000023 0.0600000000000023 0.0 772
-773 0.0334780216217041 0.039999999999992 0.039999999999992 0.0 773
-774 0.0334508419036865 0.0300000000000011 0.0300000000000011 0.0 774
-775 0.036329984664917 0.0300000000000011 0.0300000000000011 0.0 775
-776 0.0336270332336426 0.039999999999992 0.039999999999992 0.0 776
-777 0.0338649749755859 0.0300000000000011 0.0300000000000011 0.0 777
-778 0.0331289768218994 0.0400000000000063 0.0400000000000063 0.0 778
-779 0.0331418514251709 0.0300000000000011 0.0300000000000011 0.0 779
-780 0.0577938556671143 0.0600000000000023 0.0600000000000023 0.0 780
-781 0.0363731384277344 0.0300000000000011 0.0300000000000011 0.0 781
-782 0.0350909233093262 0.039999999999992 0.039999999999992 0.0 782
-783 0.0350501537322998 0.0300000000000011 0.0300000000000011 0.0 783
-784 0.0335679054260254 0.0400000000000063 0.0400000000000063 0.0 784
-785 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 785
-786 0.0349650382995605 0.0300000000000011 0.0300000000000011 0.0 786
-787 0.0338919162750244 0.039999999999992 0.039999999999992 0.0 787
-788 0.060966968536377 0.0600000000000023 0.0600000000000023 0.0 788
-789 0.0341048240661621 0.0300000000000011 0.0300000000000011 0.0 789
-790 0.0336289405822754 0.039999999999992 0.039999999999992 0.0 790
-791 0.0333750247955322 0.0300000000000011 0.0300000000000011 0.0 791
-792 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 792
-793 0.0411760807037354 0.0499999999999972 0.0499999999999972 0.0 793
-794 0.0330638885498047 0.0300000000000011 0.0300000000000011 0.0 794
-795 0.0362119674682617 0.0300000000000011 0.0300000000000011 0.0 795
-796 0.0589008331298828 0.0499999999999972 0.0499999999999972 0.0 796
-797 0.0335359573364258 0.0400000000000063 0.0400000000000063 0.0 797
-798 0.0333008766174316 0.0300000000000011 0.0300000000000011 0.0 798
-799 0.0347950458526611 0.0300000000000011 0.0300000000000011 0.0 799
-800 0.0332999229431152 0.039999999999992 0.039999999999992 0.0 800
-801 0.033350944519043 0.0300000000000011 0.0300000000000011 0.0 801
-802 0.0362880229949951 0.0400000000000063 0.0400000000000063 0.0 802
-803 0.0351760387420654 0.0299999999999869 0.0299999999999869 0.0 803
-804 0.0578329563140869 0.0600000000000023 0.0600000000000023 0.0 804
-805 0.0334799289703369 0.0300000000000011 0.0300000000000011 0.0 805
-806 0.0332357883453369 0.0400000000000063 0.0400000000000063 0.0 806
-807 0.0333900451660156 0.0300000000000011 0.0300000000000011 0.0 807
-808 0.0362451076507568 0.039999999999992 0.039999999999992 0.0 808
-809 0.0333170890808105 0.0300000000000011 0.0300000000000011 0.0 809
-810 0.0343527793884277 0.0400000000000063 0.0400000000000063 0.0 810
-811 0.0335409641265869 0.0300000000000011 0.0300000000000011 0.0 811
-812 0.0592930316925049 0.0600000000000023 0.0600000000000023 0.0 812
-813 0.0335829257965088 0.0299999999999869 0.0299999999999869 0.0 813
-814 0.033574104309082 0.0300000000000011 0.0300000000000011 0.0 814
-815 0.0360231399536133 0.0400000000000063 0.0400000000000063 0.0 815
-816 0.033574104309082 0.0300000000000011 0.0300000000000011 0.0 816
-817 0.0337851047515869 0.039999999999992 0.039999999999992 0.0 817
-818 0.0332200527191162 0.0300000000000011 0.0300000000000011 0.0 818
-819 0.0334579944610596 0.0300000000000011 0.0300000000000011 0.0 819
-820 0.063668966293335 0.0600000000000023 0.0600000000000023 0.0 820
-821 0.0360410213470459 0.0300000000000011 0.0300000000000011 0.0 821
-822 0.0340430736541748 0.039999999999992 0.039999999999992 0.0 822
-823 0.0340561866760254 0.0300000000000011 0.0300000000000011 0.0 823
-824 0.0331687927246094 0.0400000000000063 0.0400000000000063 0.0 824
-825 0.0331730842590332 0.0300000000000011 0.0300000000000011 0.0 825
-826 0.0330498218536377 0.0300000000000011 0.0300000000000011 0.0 826
-827 0.0333058834075928 0.039999999999992 0.039999999999992 0.0 827
-828 0.0610239505767822 0.0600000000000023 0.0600000000000023 0.0 828
-829 0.0348649024963379 0.0300000000000011 0.0300000000000011 0.0 829
-830 0.0334899425506592 0.039999999999992 0.039999999999992 0.0 830
-831 0.0332210063934326 0.0300000000000011 0.0300000000000011 0.0 831
-832 0.0332589149475098 0.0300000000000011 0.0300000000000011 0.0 832
-833 0.0330421924591064 0.0400000000000063 0.0400000000000063 0.0 833
-834 0.033440113067627 0.0300000000000011 0.0300000000000011 0.0 834
-835 0.0366320610046387 0.039999999999992 0.039999999999992 0.0 835
-836 0.0392351150512695 0.039999999999992 0.039999999999992 0.0 836
-837 0.0332860946655273 0.0400000000000063 0.0400000000000063 0.0 837
-838 0.0337049961090088 0.0300000000000011 0.0300000000000011 0.0 838
-839 0.0346989631652832 0.0300000000000011 0.0300000000000011 0.0 839
-840 0.0334670543670654 0.039999999999992 0.039999999999992 0.0 840
-841 0.0332751274108887 0.0300000000000011 0.0300000000000011 0.0 841
-842 0.0364458560943604 0.0400000000000063 0.0400000000000063 0.0 842
-843 0.0590341091156006 0.0600000000000023 0.0600000000000023 0.0 843
-844 0.0335009098052979 0.0300000000000011 0.0300000000000011 0.0 844
-845 0.0332801342010498 0.0300000000000011 0.0300000000000011 0.0 845
-846 0.0411808490753174 0.0499999999999972 0.0499999999999972 0.0 846
-847 0.0332710742950439 0.0300000000000011 0.0300000000000011 0.0 847
-848 0.0353641510009766 0.0300000000000011 0.0300000000000011 0.0 848
-849 0.0346250534057617 0.039999999999992 0.039999999999992 0.0 849
-850 0.0339748859405518 0.0300000000000011 0.0300000000000011 0.0 850
-851 0.0577869415283203 0.0600000000000023 0.0600000000000023 0.0 851
-852 0.0328571796417236 0.0300000000000011 0.0300000000000011 0.0 852
-853 0.0324909687042236 0.039999999999992 0.039999999999992 0.0 853
-854 0.0326740741729736 0.0300000000000011 0.0300000000000011 0.0 854
-855 0.035412073135376 0.0300000000000011 0.0300000000000011 0.0 855
-856 0.0338008403778076 0.0400000000000063 0.0400000000000063 0.0 856
-857 0.0328540802001953 0.0300000000000011 0.0300000000000011 0.0 857
-858 0.0333800315856934 0.0300000000000011 0.0300000000000011 0.0 858
-859 0.057999849319458 0.0600000000000023 0.0600000000000023 0.0 859
-860 0.0334048271179199 0.039999999999992 0.039999999999992 0.0 860
-861 0.0332610607147217 0.0300000000000011 0.0300000000000011 0.0 861
-862 0.0369820594787598 0.0400000000000063 0.0400000000000063 0.0 862
-863 0.0350849628448486 0.0299999999999869 0.0299999999999869 0.0 863
-864 0.0332708358764648 0.0300000000000011 0.0300000000000011 0.0 864
-865 0.0333819389343262 0.0400000000000063 0.0400000000000063 0.0 865
-866 0.0360109806060791 0.0300000000000011 0.0300000000000011 0.0 866
-867 0.058070182800293 0.0600000000000023 0.0600000000000023 0.0 867
-868 0.0367460250854492 0.039999999999992 0.039999999999992 0.0 868
-869 0.0335311889648438 0.0300000000000011 0.0300000000000011 0.0 869
-870 0.034480094909668 0.0400000000000063 0.0400000000000063 0.0 870
-871 0.0331480503082275 0.0300000000000011 0.0300000000000011 0.0 871
-872 0.0331017971038818 0.0300000000000011 0.0300000000000011 0.0 872
-873 0.0400230884552002 0.039999999999992 0.039999999999992 0.0 873
-874 0.0334382057189941 0.0400000000000063 0.0400000000000063 0.0 874
-875 0.0614311695098877 0.0600000000000023 0.0600000000000023 0.0 875
-876 0.0357120037078857 0.0299999999999869 0.0299999999999869 0.0 876
-877 0.0331881046295166 0.0400000000000063 0.0400000000000063 0.0 877
-878 0.0333230495452881 0.0300000000000011 0.0300000000000011 0.0 878
-879 0.033128023147583 0.0300000000000011 0.0300000000000011 0.0 879
-880 0.0331029891967773 0.039999999999992 0.039999999999992 0.0 880
-881 0.0331718921661377 0.0300000000000011 0.0300000000000011 0.0 881
-882 0.0365970134735107 0.0400000000000063 0.0400000000000063 0.0 882
-883 0.0594449043273926 0.0499999999999972 0.0499999999999972 0.0 883
-884 0.0333600044250488 0.0400000000000063 0.0400000000000063 0.0 884
-885 0.0332062244415283 0.0300000000000011 0.0300000000000011 0.0 885
-886 0.0332579612731934 0.0300000000000011 0.0300000000000011 0.0 886
-887 0.033174991607666 0.039999999999992 0.039999999999992 0.0 887
-888 0.033627986907959 0.0300000000000011 0.0300000000000011 0.0 888
-889 0.0363061428070068 0.0400000000000063 0.0400000000000063 0.0 889
-890 0.0346910953521729 0.0299999999999869 0.0299999999999869 0.0 890
-891 0.0577399730682373 0.0600000000000023 0.0600000000000023 0.0 891
-892 0.0351190567016602 0.0300000000000011 0.0300000000000011 0.0 892
-893 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 893
-894 0.0332920551300049 0.0300000000000011 0.0300000000000011 0.0 894
-895 0.0356509685516357 0.039999999999992 0.039999999999992 0.0 895
-896 0.0329999923706055 0.0300000000000011 0.0300000000000011 0.0 896
-897 0.0350220203399658 0.0400000000000063 0.0400000000000063 0.0 897
-898 0.0576491355895996 0.0499999999999972 0.0499999999999972 0.0 898
-899 0.0413708686828613 0.0400000000000063 0.0400000000000063 0.0 899
-900 0.0334579944610596 0.039999999999992 0.039999999999992 0.0 900
-901 0.0331728458404541 0.0300000000000011 0.0300000000000011 0.0 901
-902 0.0366899967193604 0.0400000000000063 0.0400000000000063 0.0 902
-903 0.0341849327087402 0.0299999999999869 0.0299999999999869 0.0 903
-904 0.0330212116241455 0.0300000000000011 0.0300000000000011 0.0 904
-905 0.0330519676208496 0.0400000000000063 0.0400000000000063 0.0 905
-906 0.0578551292419434 0.0600000000000023 0.0600000000000023 0.0 906
-907 0.0339560508728027 0.0300000000000011 0.0300000000000011 0.0 907
-908 0.0368251800537109 0.039999999999992 0.039999999999992 0.0 908
-909 0.0336120128631592 0.0300000000000011 0.0300000000000011 0.0 909
-910 0.0353670120239258 0.0400000000000063 0.0400000000000063 0.0 910
-911 0.0335800647735596 0.0300000000000011 0.0300000000000011 0.0 911
-912 0.0334420204162598 0.0300000000000011 0.0300000000000011 0.0 912
-913 0.0334601402282715 0.039999999999992 0.039999999999992 0.0 913
-914 0.058056116104126 0.0499999999999972 0.0499999999999972 0.0 914
-915 0.0368549823760986 0.0400000000000063 0.0400000000000063 0.0 915
-916 0.0347049236297607 0.039999999999992 0.039999999999992 0.0 916
-917 0.0332660675048828 0.0300000000000011 0.0300000000000011 0.0 917
-918 0.03336501121521 0.0300000000000011 0.0300000000000011 0.0 918
-919 0.0346500873565674 0.0400000000000063 0.0400000000000063 0.0 919
-920 0.0330588817596436 0.0300000000000011 0.0300000000000011 0.0 920
-921 0.0336630344390869 0.0300000000000011 0.0300000000000011 0.0 921
-922 0.0604748725891113 0.0600000000000023 0.0600000000000023 0.0 922
-923 0.0347628593444824 0.039999999999992 0.039999999999992 0.0 923
-924 0.0331780910491943 0.0300000000000011 0.0300000000000011 0.0 924
-925 0.0331499576568604 0.0300000000000011 0.0300000000000011 0.0 925
-926 0.0402188301086426 0.0400000000000063 0.0400000000000063 0.0 926
-927 0.0330500602722168 0.039999999999992 0.039999999999992 0.0 927
-928 0.0330708026885986 0.0300000000000011 0.0300000000000011 0.0 928
-929 0.036876916885376 0.0400000000000063 0.0400000000000063 0.0 929
-930 0.0586659908294678 0.0599999999999881 0.0599999999999881 0.0 930
-931 0.0333189964294434 0.0300000000000011 0.0300000000000011 0.0 931
-932 0.0332140922546387 0.0300000000000011 0.0300000000000011 0.0 932
-933 0.0332601070404053 0.0400000000000063 0.0400000000000063 0.0 933
-934 0.033146858215332 0.0300000000000011 0.0300000000000011 0.0 934
-935 0.0361688137054443 0.039999999999992 0.039999999999992 0.0 935
-936 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 936
-937 0.0338339805603027 0.0300000000000011 0.0300000000000011 0.0 937
-938 0.0579109191894531 0.0600000000000023 0.0600000000000023 0.0 938
-939 0.0335099697113037 0.0300000000000011 0.0300000000000011 0.0 939
-940 0.0332717895507812 0.039999999999992 0.039999999999992 0.0 940
-941 0.0332541465759277 0.0300000000000011 0.0300000000000011 0.0 941
-942 0.0368809700012207 0.0400000000000063 0.0400000000000063 0.0 942
-943 0.0335171222686768 0.0300000000000011 0.0300000000000011 0.0 943
-944 0.0335350036621094 0.0300000000000011 0.0300000000000011 0.0 944
-945 0.0578980445861816 0.0600000000000023 0.0600000000000023 0.0 945
-946 0.0351078510284424 0.039999999999992 0.039999999999992 0.0 946
-947 0.0334479808807373 0.0300000000000011 0.0300000000000011 0.0 947
-948 0.033311128616333 0.0300000000000011 0.0300000000000011 0.0 948
-949 0.0363750457763672 0.0400000000000063 0.0400000000000063 0.0 949
-950 0.033627986907959 0.0299999999999869 0.0299999999999869 0.0 950
-951 0.033160924911499 0.0400000000000063 0.0400000000000063 0.0 951
-952 0.033203125 0.0300000000000011 0.0300000000000011 0.0 952
-953 0.0647599697113037 0.0600000000000023 0.0600000000000023 0.0 953
-954 0.0328559875488281 0.039999999999992 0.039999999999992 0.0 954
-955 0.0357460975646973 0.0300000000000011 0.0300000000000011 0.0 955
-956 0.033236026763916 0.0400000000000063 0.0400000000000063 0.0 956
-957 0.0331499576568604 0.0300000000000011 0.0300000000000011 0.0 957
-958 0.0325798988342285 0.0300000000000011 0.0300000000000011 0.0 958
-959 0.0328090190887451 0.0300000000000011 0.0300000000000011 0.0 959
-960 0.033491849899292 0.039999999999992 0.039999999999992 0.0 960
-961 0.0579450130462646 0.0600000000000023 0.0600000000000023 0.0 961
-962 0.0369048118591309 0.0300000000000011 0.0300000000000011 0.0 962
-963 0.0337331295013428 0.039999999999992 0.039999999999992 0.0 963
-964 0.0333647727966309 0.0300000000000011 0.0300000000000011 0.0 964
-965 0.0332319736480713 0.0300000000000011 0.0300000000000011 0.0 965
-966 0.033174991607666 0.0400000000000063 0.0400000000000063 0.0 966
-967 0.0331299304962158 0.0300000000000011 0.0300000000000011 0.0 967
-968 0.0334961414337158 0.0300000000000011 0.0300000000000011 0.0 968
-969 0.0604250431060791 0.0600000000000023 0.0600000000000023 0.0 969
-970 0.0347049236297607 0.039999999999992 0.039999999999992 0.0 970
-971 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 971
-972 0.0332670211791992 0.0400000000000063 0.0400000000000063 0.0 972
-973 0.0347368717193604 0.0300000000000011 0.0300000000000011 0.0 973
-974 0.0333490371704102 0.0299999999999869 0.0299999999999869 0.0 974
-975 0.033484935760498 0.0400000000000063 0.0400000000000063 0.0 975
-976 0.0361530780792236 0.0300000000000011 0.0300000000000011 0.0 976
-977 0.0591049194335938 0.0600000000000023 0.0600000000000023 0.0 977
-978 0.0333170890808105 0.039999999999992 0.039999999999992 0.0 978
-979 0.0332751274108887 0.0300000000000011 0.0300000000000011 0.0 979
-980 0.0404400825500488 0.0400000000000063 0.0400000000000063 0.0 980
-981 0.0332608222961426 0.0300000000000011 0.0300000000000011 0.0 981
-982 0.0361859798431396 0.039999999999992 0.039999999999992 0.0 982
-983 0.0338070392608643 0.0300000000000011 0.0300000000000011 0.0 983
-984 0.0339329242706299 0.0400000000000063 0.0400000000000063 0.0 984
-985 0.0576000213623047 0.0499999999999972 0.0499999999999972 0.0 985
-986 0.0332310199737549 0.0400000000000063 0.0400000000000063 0.0 986
-987 0.0331230163574219 0.0299999999999869 0.0299999999999869 0.0 987
-988 0.0332698822021484 0.0300000000000011 0.0300000000000011 0.0 988
-989 0.0362260341644287 0.0400000000000063 0.0400000000000063 0.0 989
-990 0.0335850715637207 0.0300000000000011 0.0300000000000011 0.0 990
-991 0.0335838794708252 0.039999999999992 0.039999999999992 0.0 991
-992 0.0581378936767578 0.0600000000000023 0.0600000000000023 0.0 992
-993 0.0338449478149414 0.0300000000000011 0.0300000000000011 0.0 993
-994 0.0334839820861816 0.0300000000000011 0.0300000000000011 0.0 994
-995 0.0354399681091309 0.0400000000000063 0.0400000000000063 0.0 995
-996 0.0348441600799561 0.0300000000000011 0.0300000000000011 0.0 996
-997 0.033607006072998 0.039999999999992 0.039999999999992 0.0 997
-998 0.0334219932556152 0.0300000000000011 0.0300000000000011 0.0 998
-999 0.0331289768218994 0.0300000000000011 0.0300000000000011 0.0 999
-1000 0.0591549873352051 0.0600000000000023 0.0600000000000023 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log
deleted file mode 100644
index abfc0d4e5..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log
+++ /dev/null
@@ -1,82 +0,0 @@
-========================== 2009-04-01T16:48:20 CEST ===========================
-Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux].
-Running 'ParserBenchmarkPure' for 1000 iterations/method (compare_time=real)
-===============================================================================
-
-This first run is only for warmup.
-ParserBenchmarkPure#parser:
- real total user system
-sum 37.410897017 37.380000000 37.360000000 0.020000000
-min 0.032916069 0.030000000 0.030000000 0.000000000
-std- 0.029058517 0.027934111 0.027951551 -0.000426990
-mean 0.037410897 0.037380000 0.037360000 0.000020000
-std+ 0.045763277 0.046825889 0.046768449 0.000466990
-max 0.068524122 0.070000000 0.070000000 0.010000000
-std 0.008352380 0.009445889 0.009408449 0.000446990
-std% 22.326062222 25.269901841 25.183215569 2234.948544149
-harm 0.036161242 0.035525181 0.035515868 nan
-geo 0.036699193 0.036372385 0.036358664 0.000000000
-q1 0.033462286 0.030000000 0.030000000 0.000000000
-med 0.033834100 0.040000000 0.040000000 0.000000000
-q3 0.036020756 0.040000000 0.040000000 0.000000000
- 1000 26.73018 0.037410897
- calls calls/sec secs/call
-
- 0.06674 -|
- 0.06318 -|*
- 0.05962 -|******
- 0.05606 -|*
- 0.05250 -|
- 0.04894 -|
- 0.04538 -|
- 0.04182 -|*
- 0.03826 -|****
- 0.03470 -|**************************************************
-
-Outliers detected with box plot algo (median=0.03383, iqr=0.00256, factor=3.00):
-high=35 very_high=121
-
-Ljung-Box statistics: q=2505.23586 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-ParserBenchmarkPure#parser:
- real total user system
-sum 37.376162529 37.280000000 37.260000000 0.020000000
-min 0.032336950 0.030000000 0.030000000 0.000000000
-std- 0.028895529 0.027756750 0.027774096 -0.000426990
-mean 0.037376163 0.037280000 0.037260000 0.000020000
-std+ 0.045856796 0.046803250 0.046745904 0.000466990
-max 0.068592072 0.070000000 0.070000000 0.010000000
-std 0.008480634 0.009523250 0.009485904 0.000446990
-std% 22.689953522 25.545198741 25.458680636 2234.948544149
-harm 0.036080414 0.035400319 0.035391071 nan
-geo 0.036638902 0.036256656 0.036242979 0.000000000
-q1 0.033310235 0.030000000 0.030000000 0.000000000
-med 0.033644676 0.030000000 0.030000000 0.000000000
-q3 0.036110342 0.040000000 0.040000000 0.000000000
- 1000 26.75502 0.037376163
- calls calls/sec secs/call
-
- 0.06678 -|
- 0.06315 -|*
- 0.05953 -|*******
- 0.05590 -|
- 0.05228 -|
- 0.04865 -|
- 0.04503 -|
- 0.04140 -|**
- 0.03778 -|********
- 0.03415 -|**************************************************
-
-Outliers detected with box plot algo (median=0.03364, iqr=0.00280, factor=3.00):
-high=33 very_high=124
-
-Ljung-Box statistics: q=3251.86614 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
-========================== 2009-04-01T16:49:38 CEST ===========================
-
-Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkPure#parser.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkPure#parser-autocorrelation.dat'.
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat
deleted file mode 100644
index 17c5d6f42..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.155070059967971
-3 -0.138640912344721
-4 -0.139479328635323
-5 -0.143780851624976
-6 -0.131974028031826
-7 -0.131846874465781
-8 -0.0297449586146407
-9 0.845922970552183
-10 -0.159296984935386
-11 -0.138285991843348
-12 -0.134537533789242
-13 -0.131577093324224
-14 -0.125691308156566
-15 -0.132970073437043
-16 0.0701610897537414
-17 0.726509328882366
-18 -0.155563464936531
-19 -0.130583532910968
-20 -0.130321215707134
-21 -0.128053370668094
-22 -0.131414104117502
-23 -0.143370315509163
-24 0.167753265713558
-25 0.62702138447293
-26 -0.141554127399372
-27 -0.115269798845456
-28 -0.136445627883801
-29 -0.132820637414474
-30 -0.135080622216643
-31 -0.144602952408704
-32 0.276623173612157
-33 0.525501850891615
-34 -0.139450017650941
-35 -0.134162769453426
-36 -0.140949499976629
-37 -0.132215037534107
-38 -0.128279804339387
-39 -0.136810773207112
-40 0.379134129717981
-41 0.416977891767592
-42 -0.140192442908231
-43 -0.13892710741734
-44 -0.137436044286789
-45 -0.12612058061194
-46 -0.123633038155193
-47 -0.137070098406579
-48 0.472544339120691
-49 0.301863391448336
-50 -0.137675443743332
-51 -0.132184661720946
-52 -0.121519101402595
-53 -0.115776688296262
-54 -0.131478499025051
-55 -0.116275192910739
-56 0.513473974254625
-57 0.227814467008427
-58 -0.129625218043982
-59 -0.125216745459882
-60 -0.125935112946914
-61 -0.130109252240931
-62 -0.135733419564075
-63 -0.0889814647212915
-64 0.559816239969457
-65 0.163620887268623
-66 -0.126594899689712
-67 -0.127716578736114
-68 -0.128558799740727
-69 -0.132714253074456
-70 -0.132981927789806
-71 -0.0463125531444366
-72 0.581465412089299
-73 0.0982819048234013
-74 -0.129982480706599
-75 -0.133771142860062
-76 -0.126274218030991
-77 -0.123223469867868
-78 -0.11895869982128
-79 0.0160445617942978
-80 0.549313085089554
-81 0.0523653189850826
-82 -0.129204586675343
-83 -0.127677297248879
-84 -0.11959366617596
-85 -0.118162084235907
-86 -0.129587964492176
-87 0.0651465727581341
-88 0.512663258282342
-89 0.0223897667771226
-90 -0.118248096115527
-91 -0.123885682842303
-92 -0.117535431833331
-93 -0.121345328959052
-94 -0.133999463136408
-95 0.135326455911309
-96 0.463805777555027
-97 0.00311864739783577
-98 -0.114421979094575
-99 -0.128164506124927
-100 -0.122080031865248
-101 -0.127022342388225
-102 -0.12151335276331
-103 0.208878191673693
-104 0.419309330326886
-105 -0.0174799014199824
-106 -0.12009985269644
-107 -0.131417368471035
-108 -0.121134843634553
-109 -0.120666756344282
-110 -0.105725377626208
-111 0.262489561386311
-112 0.354541905467325
-113 -0.0429415817022358
-114 -0.118506332455011
-115 -0.127753774809165
-116 -0.109476116043001
-117 -0.119418083275649
-118 -0.0854522404041955
-119 0.302906589860581
-120 0.286896207128895
-121 -0.0493387013179091
-122 -0.111479392930294
-123 -0.123008951924811
-124 -0.106573141028928
-125 -0.126135643791708
-126 -0.0577076665067928
-127 0.311292557510419
-128 0.249513559300441
-129 -0.0437015056466829
-130 -0.10140472809797
-131 -0.125545283680022
-132 -0.113851927275127
-133 -0.129070941594458
-134 -0.0206722811383723
-135 0.33013248984195
-136 0.20961947786441
-137 -0.0505286003858023
-138 -0.118483870649077
-139 -0.129232461148704
-140 -0.110922591820262
-141 -0.126965629548802
-142 0.0286192948484217
-143 0.337096243794888
-144 0.169248086740963
-145 -0.0654190423907559
-146 -0.120486323653649
-147 -0.127288129860007
-148 -0.103891665783828
-149 -0.124659309493563
-150 0.0654747872813297
-151 0.339088871793489
-152 0.117694381111953
-153 -0.069800715562458
-154 -0.113826839844647
-155 -0.112055163352168
-156 -0.0970154053292618
-157 -0.12192255176261
-158 0.0946677686276986
-159 0.319767630968006
-160 0.0962983917333902
-161 -0.0684068034695184
-162 -0.112118295167087
-163 -0.114032731963194
-164 -0.110895191829693
-165 -0.12490942207346
-166 0.150898199785889
-167 0.291628773924692
-168 0.0856114574594624
-169 -0.0734234204063937
-170 -0.114367902362174
-171 -0.118059154641348
-172 -0.112572722725924
-173 -0.103481698557819
-174 0.173284813389025
-175 0.278003056900596
-176 0.0650604673280916
-177 -0.0868193733027222
-178 -0.11924430409928
-179 -0.113850555498896
-180 -0.104056053166332
-181 -0.0706195733056155
-182 0.195014655464426
-183 0.251621304231625
-184 0.0441497783679571
-185 -0.0959128518254443
-186 -0.114114295397473
-187 -0.10361116463172
-188 -0.107664797628733
-189 -0.0474401968360638
-190 0.192034834911418
-191 0.224134275351347
-192 0.0395907319098148
-193 -0.0949220934593083
-194 -0.110602484889644
-195 -0.100717728255861
-196 -0.112049320791611
-197 -0.0238825067986291
-198 0.201018888376214
-199 0.200211719960315
-200 0.0376449870339866
-201 -0.0991903665462876
-202 -0.116672120770685
-203 -0.104917842447271
-204 -0.116982682663512
-205 0.0162721560678791
-206 0.204021816160558
-207 0.207342785121829
-208 0.00663694227997103
-209 -0.106521500277643
-210 -0.116317595851116
-211 -0.104116328257713
-212 -0.112167749776831
-213 0.0615103449414028
-214 0.199609635845337
-215 0.172676627738091
-216 -0.0173787071397098
-217 -0.104939889867195
-218 -0.112425821733991
-219 -0.0953637703798143
-220 -0.093052367494033
-221 0.0644616034737725
-222 0.21086820069092
-223 0.135486543334319
-224 -0.0210787666638188
-225 -0.0993320996511885
-226 -0.109562190043721
-227 -0.0908673948537397
-228 -0.0914456089142807
-229 0.077581460778825
-230 0.208551872164277
-231 0.116140101018818
-232 -0.0163102277997069
-233 -0.0916236078939407
-234 -0.111987175847954
-235 -0.0967383768271821
-236 -0.0826408025523878
-237 0.0966321189661173
-238 0.217509001187049
-239 0.0915108637148122
-240 -0.0253671941695331
-241 -0.104462116651977
-242 -0.11348746907754
-243 -0.0959006192794962
-244 -0.0612059863164585
-245 0.113695227895139
-246 0.208511810998661
-247 0.0766780695718476
-248 -0.0378625564901882
-249 -0.10618641671093
-250 -0.109982771242569
-251 -0.0926244918680679
-252 -0.0406078163763886
-253 0.124817056851144
-254 0.194848461762426
-255 0.053597534522723
-256 -0.0438252920201072
-257 -0.0998946597604676
-258 -0.0959760154259235
-259 -0.090197307047542
-260 -0.0257502198933741
-261 0.136762854179184
-262 0.168912763917697
-263 0.048323842970136
-264 -0.0436786423512219
-265 -0.100740525834715
-266 -0.0977845042725835
-267 -0.0927358458760765
-268 -0.0166810260413945
-269 0.146292226604344
-270 0.158004011117704
-271 0.0463090919867654
-272 -0.0508649026224276
-273 -0.100538901603337
-274 -0.0991902746655388
-275 -0.0968540899423071
-276 0.0148153955144431
-277 0.142136683921793
-278 0.150608238602075
-279 0.0366986042958235
-280 -0.0623139712087233
-281 -0.104975317080266
-282 -0.0956029621068854
-283 -0.0890770998720019
-284 0.0548354482192922
-285 0.133209397126082
-286 0.135583138300418
-287 0.0272435880371227
-288 -0.0714230928286135
-289 -0.0994192940032151
-290 -0.088773103919012
-291 -0.0841613176265042
-292 0.0592558849502553
-293 0.125376924612805
-294 0.129920277737479
-295 0.0195010407479747
-296 -0.0711393383891102
-297 -0.0966110162658782
-298 -0.0881783407707736
-299 -0.0770822025982766
-300 0.066971190635949
-301 0.132833571859132
-302 0.106070818363025
-303 0.0264050368313431
-304 -0.0786120187871163
-305 -0.099744480101871
-306 -0.0903116034438872
-307 -0.0727258814461179
-308 0.0805880901984141
-309 0.152764049007061
-310 0.0897693593924932
-311 0.0244183980184888
-312 -0.0913585727715549
-313 -0.101610527844229
-314 -0.0890784444186723
-315 -0.0580505722105439
-316 0.10438372554223
-317 0.13749147221931
-318 0.0759708703685098
-319 0.0047310993987612
-320 -0.0918433949431894
-321 -0.0973283709859868
-322 -0.0830381658731675
-323 -0.0375501533905209
-324 0.104260628790112
-325 0.136767805598137
-326 0.0649623096294137
-327 -0.0111381353615883
-328 -0.0902174271151667
-329 -0.0900084947503609
-330 -0.0845603027974476
-331 -0.0222484905680352
-332 0.10044110265699
-333 0.137209031622297
-334 0.0512317724372533
-335 -0.00469813974344492
-336 -0.0852660869649502
-337 -0.0936856764672113
-338 -0.0810781749410849
-339 -0.0111001728500522
-340 0.103897631604526
-341 0.131709630700509
-342 0.0454986930271181
-343 -0.0154461854075281
-344 -0.0950428147360073
-345 -0.0917481808403137
-346 -0.0819073492712917
-347 0.0124487690676487
-348 0.108988172807393
-349 0.12289144923052
-350 0.0405329244459299
-351 -0.0278261263679556
-352 -0.0969672128436255
-353 -0.0868716693424195
-354 -0.0819407369083838
-355 0.035944491369377
-356 0.107744673984401
-357 0.112575623631055
-358 0.0263346758872926
-359 -0.0328420504056899
-360 -0.0908205706813633
-361 -0.0750870093565662
-362 -0.0805597459059112
-363 0.0581570376747647
-364 0.0865463018735628
-365 0.116540878273595
-366 0.0199948600453009
-367 -0.03533657508366
-368 -0.0918593012174403
-369 -0.0794617415964357
-370 -0.0787014627401186
-371 0.0674476303755033
-372 0.087942973565642
-373 0.104930936427726
-374 0.0273053506001638
-375 -0.0464030903226921
-376 -0.0892541387964512
-377 -0.0826842259404731
-378 -0.071374986057042
-379 0.0807180550904197
-380 0.0929177969009142
-381 0.0862437690352589
-382 0.0286028161793366
-383 -0.0593261076213299
-384 -0.0910657756760768
-385 -0.0789683507405574
-386 -0.0550314183063351
-387 0.100805664939276
-388 0.0897320960012182
-389 0.067010863731299
-390 0.0261048090556462
-391 -0.0659316696174206
-392 -0.086786864764739
-393 -0.0733845242014095
-394 -0.0405465879929758
-395 0.0859517679001778
-396 0.0936250494518407
-397 0.0524562962824195
-398 0.0270919515769923
-399 -0.0676718513969418
-400 -0.0824139549961516
-401 -0.0758274382046422
-402 -0.021973546868283
-403 0.075410664358751
-404 0.104172119247351
-405 0.0343795991613305
-406 0.0358573471696254
-407 -0.0790257754948948
-408 -0.0826103755113398
-409 -0.0802175095763564
-410 -0.00408772816730303
-411 0.0797817450643218
-412 0.10269754375399
-413 0.0435425040893042
-414 0.0151375915059022
-415 -0.082224988149043
-416 -0.0825565105203654
-417 -0.0696184362192416
-418 0.00170781584040336
-419 0.0936874402227218
-420 0.0877595224369305
-421 0.0362572112929432
-422 -0.000752383773564971
-423 -0.0819270792159826
-424 -0.0773158381537405
-425 -0.0651464418900243
-426 0.0233879760162931
-427 0.0833911120244448
-428 0.0867605850712271
-429 0.0258451549993298
-430 -0.00489040153892436
-431 -0.0813233842666857
-432 -0.0691569813607638
-433 -0.0684545819114933
-434 0.0396563587473597
-435 0.0716165433337824
-436 0.0861256506553954
-437 0.0246435046549525
-438 -0.00567840565516219
-439 -0.0766446108871898
-440 -0.0734501086613091
-441 -0.0625863247444175
-442 0.0405008658019374
-443 0.0751250312042876
-444 0.0937777476669092
-445 0.0157135360029692
-446 -0.0185119034061188
-447 -0.0834731849818629
-448 -0.0721596446426834
-449 -0.0539848776994025
-450 0.0482803239352817
-451 0.0865159532050759
-452 0.0758518110612569
-453 0.0183167125626064
-454 -0.0302067075389182
-455 -0.0836849146728332
-456 -0.0680915900681338
-457 -0.0453151677467697
-458 0.0635811903828984
-459 0.0735228836096314
-460 0.0668774855582583
-461 0.0155517569389754
-462 -0.0361902584803522
-463 -0.0772526293731969
-464 -0.0599993945121568
-465 -0.0350025604255705
-466 0.0675409442225932
-467 0.0626588958411958
-468 0.0628618478913283
-469 0.0182100018474144
-470 -0.0393572049932932
-471 -0.0769465863807705
-472 -0.0669019696984521
-473 -0.0307690547029792
-474 0.0787650857298563
-475 0.0555937053005102
-476 0.0591286536064479
-477 0.0236864710611653
-478 -0.0510348446259402
-479 -0.0750230625326582
-480 -0.0692429698123807
-481 -0.0136046303961235
-482 0.074650527480705
-483 0.0576038372995368
-484 0.0514169146679383
-485 0.0235780875676953
-486 -0.0619450461800331
-487 -0.0775574009249976
-488 -0.0561458830522187
-489 -0.00509801117317696
-490 0.0804313785186439
-491 0.0577719157969876
-492 0.03898688881339
-493 0.0241595263048843
-494 -0.0685591657894399
-495 -0.0723076795891697
-496 -0.0523226231903489
-497 0.00373957683716917
-498 0.0717069979485176
-499 0.0550717482683905
-500 0.0403995445989468
-501 0.0113079953085825
-502 -0.0649276537000009
-503 -0.06649843954063
-504 -0.0560505708705572
-505 0.0137761579457734
-506 0.0702863631617265
-507 0.0541404684830862
-508 0.0443433883094673
-509 -0.00133780696150024
-510 -0.0665134068108655
-511 -0.0657601321121601
-512 -0.0607034011107588
-513 0.0213546383342833
-514 0.0775077767181889
-515 0.063458353376667
-516 0.0389609528439854
-517 -0.0108770067728056
-518 -0.0688616436130423
-519 -0.065807838377633
-520 -0.0591899626361279
-521 0.0477995260084885
-522 0.069819996106301
-523 0.0493499046172744
-524 0.0332730594271413
-525 -0.0200687475895302
-526 -0.0673172583961927
-527 -0.0608118592717286
-528 -0.046481250749937
-529 0.0514180414158432
-530 0.0671097463271896
-531 0.0400867520372663
-532 0.0333984982834754
-533 -0.0264838317178022
-534 -0.0659983240048536
-535 -0.0542885590490045
-536 -0.0401453467006326
-537 0.0485625723714385
-538 0.0635239092110429
-539 0.0345979294218286
-540 0.0399929330334083
-541 -0.028147715594677
-542 -0.0619139995393741
-543 -0.0586913999576994
-544 -0.0334649755872845
-545 0.0516737635834675
-546 0.0645253644882226
-547 0.0345307867743962
-548 0.0400603616259159
-549 -0.0423531962375596
-550 -0.0672300807914405
-551 -0.0587843856721668
-552 -0.0232646807886831
-553 0.058345982518284
-554 0.0665917961516256
-555 0.0274860012958233
-556 0.0415598244265968
-557 -0.0545146822234879
-558 -0.0677685109591305
-559 -0.0552725887508413
-560 -0.0125012238487659
-561 0.0625075581718202
-562 0.066971444471093
-563 0.0129232540938186
-564 0.0392980506706601
-565 -0.05908734296345
-566 -0.0607304242571567
-567 -0.0493112113842046
-568 0.00071062117125135
-569 0.0653734421725974
-570 0.0469205167937502
-571 0.0252022285127285
-572 0.0269428623042389
-573 -0.0554040258813037
-574 -0.0594329262955446
-575 -0.0472055457536386
-576 -0.00273760356981996
-577 0.0642743964669037
-578 0.0419312704866381
-579 0.0399122296513867
-580 0.0132186725236814
-581 -0.0547466706460982
-582 -0.0579756221767372
-583 -0.0511476715833451
-584 0.00601423910448657
-585 0.0689373246423459
-586 0.0353940033868963
-587 0.0425778157862413
-588 0.00424129603039375
-589 -0.0586697203651189
-590 -0.059002595522944
-591 -0.0470191336291943
-592 0.0244211578887408
-593 0.0714176288385068
-594 0.0293208317804955
-595 0.0369996210742842
-596 -0.00457553552424864
-597 -0.0559531047561718
-598 -0.0523918096467366
-599 -0.0446664312862491
-600 0.0316320734850762
-601 0.0644602080811167
-602 0.0199863627247641
-603 0.0369746309809726
-604 -0.00948602618598588
-605 -0.0504144894458729
-606 -0.0498443845352435
-607 -0.0444638507903543
-608 0.0391189013974007
-609 0.0628424781970596
-610 0.0112347649830505
-611 0.041452654212153
-612 -0.0137347497952992
-613 -0.0506892746398375
-614 -0.0511072669077967
-615 -0.0477234466444133
-616 0.048705448350975
-617 0.0667627851388053
-618 0.0115120265386804
-619 0.0461383553267045
-620 -0.0255620287525987
-621 -0.0530260247588348
-622 -0.0518381410417808
-623 -0.034700796376516
-624 0.0438063518562166
-625 0.0798836058195734
-626 -0.00243894245318495
-627 0.0406243460796687
-628 -0.0332199890358811
-629 -0.0523350080049007
-630 -0.0477070167478482
-631 -0.0215305402264588
-632 0.0472394359550523
-633 0.0694737083559497
-634 -0.00372172457388709
-635 0.0391809172600764
-636 -0.0382719971378076
-637 -0.0501961995371232
-638 -0.042738214015656
-639 -0.0140839477377811
-640 0.0442885931768186
-641 0.0581346694204897
-642 -0.000477976111666972
-643 0.044566527743489
-644 -0.0396856402477227
-645 -0.0466626145007252
-646 -0.0480864305333951
-647 -0.00726442405889962
-648 0.0459497867910762
-649 0.0529082222445075
-650 0.0147432426130685
-651 0.0267433571795441
-652 -0.0446692520126606
-653 -0.0497203066081803
-654 -0.0480919421757669
-655 0.00345954210366673
-656 0.0509913399433936
-657 0.0467433070314585
-658 0.0252001648134732
-659 0.0106946846977517
-660 -0.0484551606819746
-661 -0.0500758070505588
-662 -0.0440163401232168
-663 0.0148218474037118
-664 0.0526365008291643
-665 0.0397902946591361
-666 0.0206689888910779
-667 0.00207265111858896
-668 -0.0440452489670014
-669 -0.0447792337914997
-670 -0.0286381554427784
-671 0.00640869437792482
-672 0.057153163903739
-673 0.0304890998129141
-674 0.0230136624918959
-675 -0.00281506118608654
-676 -0.0387242678971035
-677 -0.044929991903093
-678 -0.0345193810230013
-679 0.00492460337689268
-680 0.0679821172192718
-681 0.0219950472241659
-682 0.0289438385002853
-683 -0.00781136170677615
-684 -0.0388612390832975
-685 -0.0438680272774733
-686 -0.0376131497506628
-687 0.0139348600467974
-688 0.0615101213028946
-689 0.0249115734544766
-690 0.0331598636184604
-691 -0.0195415991964588
-692 -0.0396395679788538
-693 -0.0456649577394422
-694 -0.0344136244069955
-695 0.031200395934606
-696 0.0562012519733673
-697 0.0260663012747182
-698 0.0295359686001106
-699 -0.0291311572903775
-700 -0.0371203313810216
-701 -0.0424418146790537
-702 -0.0303746199454463
-703 0.0388492858751788
-704 0.0424481679100295
-705 0.0263584605497916
-706 0.0288712604390293
-707 -0.0341554547083513
-708 -0.0333021072203847
-709 -0.0383392296141879
-710 -0.030923211248435
-711 0.0471145773235206
-712 0.032067317539082
-713 0.0263399585846731
-714 0.0323937671311792
-715 -0.0392772990043492
-716 -0.0317758252581109
-717 -0.0407689976562314
-718 -0.0327532575849971
-719 0.0558983521943971
-720 0.026320879417627
-721 0.0457775828616138
-722 0.0162704705253485
-723 -0.0410862090233348
-724 -0.0334511325087015
-725 -0.0413337594074423
-726 -0.0301113850535044
-727 0.0700417742596319
-728 0.0210871230961877
-729 0.0496617422305004
-730 -0.00408251250355076
-731 -0.0406821339716385
-732 -0.0329210563908783
-733 -0.0378798823957753
-734 -0.0166612213666539
-735 0.0622559233401728
-736 0.0220631815362089
-737 0.0480937159816023
-738 -0.0123428856122574
-739 -0.0375402198111287
-740 -0.0309453130567288
-741 -0.0353256252179894
-742 -0.00536945125430805
-743 0.0496444169496324
-744 0.0204929366248046
-745 0.0499533569480695
-746 -0.0174935751544407
-747 -0.0286134919496942
-748 -0.0305151115655182
-749 -0.0370057423961568
-750 0.00182606608143132
-751 0.0417928304144692
-752 0.0232491015772242
-753 0.0556033683720853
-754 -0.0281117547926764
-755 -0.030035318580472
-756 -0.0330573966633533
-757 -0.0365260598388687
-758 0.0111750942979797
-759 0.0374827782514529
-760 0.0257453279628935
-761 0.0580299290244595
-762 -0.0358087395388202
-763 -0.0338231237069173
-764 -0.0328610625099181
-765 -0.0336222121488749
-766 0.0234186100148553
-767 0.0293361050839678
-768 0.0383060243360171
-769 0.0358879458606336
-770 -0.0363117922484678
-771 -0.0310100414844719
-772 -0.0298340231919974
-773 -0.0258481757762449
-774 0.033493341046757
-775 0.0172146853910682
-776 0.0455221955873717
-777 0.0204498758334694
-778 -0.033692934640153
-779 -0.0254246875075756
-780 -0.0321408035488926
-781 -0.0179574084831518
-782 0.0214789164114721
-783 0.019638114859952
-784 0.0455930828635699
-785 0.0178984964416421
-786 -0.0300055577311117
-787 -0.0240917794268532
-788 -0.0321597467853985
-789 -0.0210401731167207
-790 0.0230111556897733
-791 0.0217566052979974
-792 0.0489917866644012
-793 0.0104440982676834
-794 -0.0301428802473305
-795 -0.0258951028342734
-796 -0.03187192392573
-797 -0.0176269050708972
-798 0.027393570534183
-799 0.0263875715311133
-800 0.0486779658212448
-801 -0.00102291484615847
-802 -0.0300556523736458
-803 -0.023857819156972
-804 -0.0280605128257784
-805 -0.0146115387847382
-806 0.0244907923259942
-807 0.0247824841072157
-808 0.0494074681728141
-809 -0.0095960873131345
-810 -0.0267959528999005
-811 -0.0203312406902549
-812 -0.0260311947802059
-813 -0.0131484879600813
-814 0.0230120193265332
-815 0.0228091639758259
-816 0.051666749222434
-817 -0.0152576501369182
-818 -0.0250358027329496
-819 -0.0190314982739485
-820 -0.0266605188325892
-821 -0.0144373958898868
-822 0.0237380994329812
-823 0.0260374801079161
-824 0.0586957834829624
-825 -0.022457849542461
-826 -0.0262980585565696
-827 -0.0200584452117297
-828 -0.0266876132871316
-829 -0.0129290645560979
-830 0.0289095571745369
-831 0.0354539766084729
-832 0.0392777761914384
-833 -0.0238771076358964
-834 -0.0245018601036372
-835 -0.0205517186652316
-836 -0.0234327204627339
-837 -0.00933955244847433
-838 0.0296367828905565
-839 0.0459917434926111
-840 0.0186744768510845
-841 -0.0234505177518883
-842 -0.0215210406113312
-843 -0.01812563049523
-844 -0.0212885529434847
-845 -0.0088234522037928
-846 0.0280281842675072
-847 0.045730091253579
-848 0.0136208433079523
-849 -0.0205058386168346
-850 -0.0163481209061992
-851 -0.017230164457982
-852 -0.0230906563738739
-853 -0.00937085079532756
-854 0.0286089438226922
-855 0.0501679772526387
-856 0.00511934527865221
-857 -0.0188740591732872
-858 -0.017123441437589
-859 -0.0185029603009925
-860 -0.0202624384779385
-861 -0.0103662518808214
-862 0.0316765684721357
-863 0.0535962784902621
-864 -0.00257262435536896
-865 -0.0176721411023214
-866 -0.0194221796537958
-867 -0.0180419513954025
-868 -0.0173325086944974
-869 -0.00890051108382059
-870 0.0333845873727604
-871 0.0544120911411167
-872 -0.0112929673408612
-873 -0.0180526419713337
-874 -0.0167143497616369
-875 -0.0157948604767141
-876 -0.0130148291547908
-877 -0.0066614174930643
-878 0.0306666725820053
-879 0.0540685898200517
-880 -0.0179887040186856
-881 -0.0155749350538922
-882 -0.015542452853135
-883 -0.0149949065113926
-884 -0.0134739305361601
-885 -0.0082822064674981
-886 0.0415180058769115
-887 0.037756025074253
-888 -0.0148899027592997
-889 -0.013090094291838
-890 -0.0153014397425967
-891 -0.0135012972355123
-892 -0.015585448733386
-893 -0.00788737374502331
-894 0.0535415797928148
-895 0.0217926147381109
-896 -0.01363175489377
-897 -0.012354773771845
-898 -0.0155285058724365
-899 -0.0135036893080631
-900 -0.0125236766180776
-901 -0.00637080628552419
-902 0.0605226042557018
-903 0.0112303280281208
-904 -0.0133912061642023
-905 -0.0124502459337457
-906 -0.0142998634027549
-907 -0.0099981269727546
-908 -0.0122633402331702
-909 -0.00567413706716593
-910 0.0595172409685727
-911 0.00326019370638518
-912 -0.0128841193059995
-913 -0.0102224824574885
-914 -0.0116469346046309
-915 -0.00776357295252222
-916 -0.0118848925539363
-917 -0.00433896685705348
-918 0.0567076341120711
-919 -0.00300835870741313
-920 -0.0107647074857665
-921 -0.00845164093060122
-922 -0.0106818140369162
-923 -0.00761048402311565
-924 -0.0114674108324614
-925 -0.00417421313051504
-926 0.0598773670187433
-927 -0.00747931723570069
-928 -0.00927920131574313
-929 -0.00986810999500912
-930 -0.0104075730217127
-931 -0.00695169167094114
-932 -0.0109784274186893
-933 0.00811872232461237
-934 0.0430158981401019
-935 -0.00722859498851006
-936 -0.00990312674945696
-937 -0.00920124918803136
-938 -0.00908355760957161
-939 -0.00496962170124263
-940 -0.00878291146198605
-941 0.0194043242975934
-942 0.0256780783722546
-943 -0.00897052689874001
-944 -0.00954900138754423
-945 -0.00713164082441335
-946 -0.00673138670048183
-947 -0.00311543034312673
-948 -0.00793377494765913
-949 0.0199694046973212
-950 0.0180051634303271
-951 -0.00731841589233604
-952 -0.0061524475893558
-953 -0.00552246177877621
-954 -0.00405347414382562
-955 -0.00502519204794434
-956 -0.00735520719380658
-957 0.0201391483118552
-958 0.0115351551478785
-959 -0.00595396340022971
-960 -0.0044658313778136
-961 -0.00466635333434365
-962 -0.00505971330517482
-963 -0.00426347088471071
-964 -0.00630201264403959
-965 0.0226924063931286
-966 0.00532856864375404
-967 -0.00456693836529996
-968 -0.00500848518452319
-969 -0.00521286355162228
-970 -0.00466691800162192
-971 -0.00261192567994811
-972 -0.00365801738266432
-973 0.0244751515715762
-974 -0.00293671804465107
-975 -0.0036023990997325
-976 -0.00448873920500162
-977 -0.00365131282800052
-978 -0.00180880871887979
-979 -0.00132104428035144
-980 0.00742840409816276
-981 0.00626148410583357
-982 -0.00316720508921753
-983 -0.00304702341715472
-984 -0.0023682711547723
-985 -0.00118323799369014
-986 -3.66599346965767e-05
-987 -0.000324399710172427
-988 0.00733954118289635
-989 -0.00225809776707784
-990 -0.00133635779017759
-991 -0.00134850512655973
-992 -0.000434310902574387
-993 -0.000233992853297238
-994 0.000360461316321191
-995 -0.000531725699132137
-996 -0.000471000549829534
-997 0.000486792668870103
-998 0.000364177523187972
-999 0.000256019411210032
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat
deleted file mode 100644
index e51dc44f0..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.0337560176849365 0.0300000000000011 0.0300000000000011 0.0 1
-2 0.0330429077148438 0.029999999999994 0.029999999999994 0.0 2
-3 0.0369691848754883 0.0400000000000063 0.0400000000000063 0.0 3
-4 0.0330410003662109 0.029999999999994 0.029999999999994 0.0 4
-5 0.0346219539642334 0.0400000000000063 0.0400000000000063 0.0 5
-6 0.0324759483337402 0.029999999999994 0.029999999999994 0.0 6
-7 0.0320150852203369 0.0300000000000011 0.0300000000000011 0.0 7
-8 0.0320718288421631 0.0300000000000011 0.0300000000000011 0.0 8
-9 0.0765988826751709 0.0799999999999983 0.0799999999999983 0.0 9
-10 0.0331180095672607 0.0300000000000011 0.0300000000000011 0.0 10
-11 0.0346410274505615 0.0399999999999991 0.0399999999999991 0.0 11
-12 0.0330672264099121 0.0300000000000011 0.0300000000000011 0.0 12
-13 0.0326869487762451 0.0300000000000011 0.0300000000000011 0.0 13
-14 0.0323951244354248 0.0399999999999991 0.0399999999999991 0.0 14
-15 0.0317728519439697 0.0300000000000011 0.0300000000000011 0.0 15
-16 0.0336828231811523 0.0300000000000011 0.0300000000000011 0.0 16
-17 0.0816280841827393 0.0799999999999983 0.0799999999999983 0.0 17
-18 0.0336179733276367 0.0399999999999991 0.0399999999999991 0.0 18
-19 0.0329349040985107 0.0300000000000011 0.0300000000000011 0.0 19
-20 0.0328211784362793 0.0300000000000011 0.0300000000000011 0.0 20
-21 0.0326688289642334 0.0300000000000011 0.0300000000000011 0.0 21
-22 0.0329129695892334 0.0399999999999991 0.0399999999999991 0.0 22
-23 0.0351161956787109 0.0300000000000011 0.0300000000000011 0.0 23
-24 0.073289155960083 0.0799999999999983 0.0799999999999983 0.0 24
-25 0.0333049297332764 0.0300000000000011 0.0300000000000011 0.0 25
-26 0.0327980518341064 0.029999999999994 0.029999999999994 0.0 26
-27 0.0333559513092041 0.0400000000000063 0.0400000000000063 0.0 27
-28 0.0331299304962158 0.029999999999994 0.029999999999994 0.0 28
-29 0.0361030101776123 0.0300000000000011 0.0300000000000011 0.0 29
-30 0.0326149463653564 0.0399999999999991 0.0399999999999991 0.0 30
-31 0.0354421138763428 0.0300000000000011 0.0300000000000011 0.0 31
-32 0.0737769603729248 0.0799999999999983 0.0799999999999983 0.0 32
-33 0.0334198474884033 0.0300000000000011 0.0300000000000011 0.0 33
-34 0.0328729152679443 0.0300000000000011 0.0300000000000011 0.0 34
-35 0.0363237857818604 0.0399999999999991 0.0399999999999991 0.0 35
-36 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 36
-37 0.033970832824707 0.0399999999999991 0.0399999999999991 0.0 37
-38 0.0325729846954346 0.0300000000000011 0.0300000000000011 0.0 38
-39 0.0321781635284424 0.0300000000000011 0.0300000000000011 0.0 39
-40 0.0730009078979492 0.0700000000000003 0.0700000000000003 0.0 40
-41 0.0354671478271484 0.0399999999999991 0.0399999999999991 0.0 41
-42 0.0329980850219727 0.0300000000000011 0.0300000000000011 0.0 42
-43 0.0432839393615723 0.0499999999999972 0.0499999999999972 0.0 43
-44 0.0330131053924561 0.0300000000000011 0.0300000000000011 0.0 44
-45 0.032541036605835 0.0300000000000011 0.0300000000000011 0.0 45
-46 0.0323638916015625 0.0300000000000011 0.0300000000000011 0.0 46
-47 0.0322492122650146 0.0399999999999991 0.0399999999999991 0.0 47
-48 0.0752780437469482 0.0700000000000003 0.0700000000000003 0.0 48
-49 0.0334651470184326 0.0300000000000011 0.0300000000000011 0.0 49
-50 0.0330009460449219 0.0399999999999991 0.0399999999999991 0.0 50
-51 0.0331478118896484 0.0300000000000011 0.0300000000000011 0.0 51
-52 0.0328009128570557 0.029999999999994 0.029999999999994 0.0 52
-53 0.0326621532440186 0.0400000000000063 0.0400000000000063 0.0 53
-54 0.0325331687927246 0.029999999999994 0.029999999999994 0.0 54
-55 0.0355179309844971 0.0300000000000011 0.0300000000000011 0.0 55
-56 0.0758390426635742 0.0800000000000054 0.0800000000000054 0.0 56
-57 0.0330648422241211 0.029999999999994 0.029999999999994 0.0 57
-58 0.0333669185638428 0.0399999999999991 0.0399999999999991 0.0 58
-59 0.0331768989562988 0.0300000000000011 0.0300000000000011 0.0 59
-60 0.0326540470123291 0.0300000000000011 0.0300000000000011 0.0 60
-61 0.036034107208252 0.0399999999999991 0.0399999999999991 0.0 61
-62 0.0326058864593506 0.0300000000000011 0.0300000000000011 0.0 62
-63 0.032081127166748 0.0300000000000011 0.0300000000000011 0.0 63
-64 0.0732240676879883 0.0799999999999983 0.0799999999999983 0.0 64
-65 0.0332009792327881 0.0300000000000011 0.0300000000000011 0.0 65
-66 0.0333409309387207 0.0300000000000011 0.0300000000000011 0.0 66
-67 0.0352249145507812 0.0399999999999991 0.0399999999999991 0.0 67
-68 0.0328779220581055 0.0300000000000011 0.0300000000000011 0.0 68
-69 0.0408899784088135 0.0399999999999991 0.0399999999999991 0.0 69
-70 0.0330538749694824 0.0399999999999991 0.0399999999999991 0.0 70
-71 0.0315990447998047 0.0300000000000011 0.0300000000000011 0.0 71
-72 0.0723180770874023 0.0700000000000003 0.0700000000000003 0.0 72
-73 0.0360608100891113 0.0399999999999991 0.0399999999999991 0.0 73
-74 0.0332560539245605 0.0300000000000011 0.0300000000000011 0.0 74
-75 0.0337710380554199 0.0300000000000011 0.0300000000000011 0.0 75
-76 0.0330729484558105 0.0399999999999991 0.0399999999999991 0.0 76
-77 0.0325820446014404 0.0300000000000011 0.0300000000000011 0.0 77
-78 0.0323619842529297 0.029999999999994 0.029999999999994 0.0 78
-79 0.0319099426269531 0.0300000000000011 0.0300000000000011 0.0 79
-80 0.0756161212921143 0.0800000000000054 0.0800000000000054 0.0 80
-81 0.0331521034240723 0.029999999999994 0.029999999999994 0.0 81
-82 0.0353209972381592 0.0400000000000063 0.0400000000000063 0.0 82
-83 0.0330510139465332 0.029999999999994 0.029999999999994 0.0 83
-84 0.03314208984375 0.0300000000000011 0.0300000000000011 0.0 84
-85 0.03261399269104 0.0300000000000011 0.0300000000000011 0.0 85
-86 0.0322940349578857 0.0399999999999991 0.0399999999999991 0.0 86
-87 0.034559965133667 0.0300000000000011 0.0300000000000011 0.0 87
-88 0.0729730129241943 0.0700000000000003 0.0700000000000003 0.0 88
-89 0.033174991607666 0.0399999999999991 0.0399999999999991 0.0 89
-90 0.0331950187683105 0.0300000000000011 0.0300000000000011 0.0 90
-91 0.032789945602417 0.0300000000000011 0.0300000000000011 0.0 91
-92 0.032573938369751 0.0399999999999991 0.0399999999999991 0.0 92
-93 0.0352959632873535 0.0300000000000011 0.0300000000000011 0.0 93
-94 0.0322601795196533 0.0300000000000011 0.0300000000000011 0.0 94
-95 0.0399200916290283 0.0399999999999991 0.0399999999999991 0.0 95
-96 0.0733668804168701 0.0799999999999983 0.0799999999999983 0.0 96
-97 0.0330679416656494 0.0300000000000011 0.0300000000000011 0.0 97
-98 0.0331020355224609 0.0300000000000011 0.0300000000000011 0.0 98
-99 0.0338099002838135 0.0399999999999991 0.0399999999999991 0.0 99
-100 0.0351119041442871 0.0300000000000011 0.0300000000000011 0.0 100
-101 0.0325391292572021 0.0399999999999991 0.0399999999999991 0.0 101
-102 0.0326120853424072 0.0300000000000011 0.0300000000000011 0.0 102
-103 0.0314269065856934 0.029999999999994 0.029999999999994 0.0 103
-104 0.0736079216003418 0.0700000000000003 0.0700000000000003 0.0 104
-105 0.0331168174743652 0.0399999999999991 0.0399999999999991 0.0 105
-106 0.0369949340820312 0.0300000000000011 0.0300000000000011 0.0 106
-107 0.033034086227417 0.0399999999999991 0.0399999999999991 0.0 107
-108 0.0347108840942383 0.0300000000000011 0.0300000000000011 0.0 108
-109 0.0326550006866455 0.0300000000000011 0.0300000000000011 0.0 109
-110 0.032649040222168 0.0399999999999991 0.0399999999999991 0.0 110
-111 0.0317308902740479 0.0300000000000011 0.0300000000000011 0.0 111
-112 0.075963020324707 0.0700000000000003 0.0700000000000003 0.0 112
-113 0.0332450866699219 0.0399999999999991 0.0399999999999991 0.0 113
-114 0.0340969562530518 0.0300000000000011 0.0300000000000011 0.0 114
-115 0.0331099033355713 0.0300000000000011 0.0300000000000011 0.0 115
-116 0.0326979160308838 0.0399999999999991 0.0399999999999991 0.0 116
-117 0.0322890281677246 0.0300000000000011 0.0300000000000011 0.0 117
-118 0.0321509838104248 0.0300000000000011 0.0300000000000011 0.0 118
-119 0.0315690040588379 0.029999999999994 0.029999999999994 0.0 119
-120 0.0853371620178223 0.0900000000000034 0.0900000000000034 0.0 120
-121 0.0338900089263916 0.0300000000000011 0.0300000000000011 0.0 121
-122 0.0330648422241211 0.0399999999999991 0.0399999999999991 0.0 122
-123 0.0330510139465332 0.0300000000000011 0.0300000000000011 0.0 123
-124 0.0327119827270508 0.0300000000000011 0.0300000000000011 0.0 124
-125 0.0324461460113525 0.029999999999994 0.029999999999994 0.0 125
-126 0.036160945892334 0.0400000000000063 0.0400000000000063 0.0 126
-127 0.0314981937408447 0.029999999999994 0.029999999999994 0.0 127
-128 0.073836088180542 0.0800000000000054 0.0800000000000054 0.0 128
-129 0.0328719615936279 0.029999999999994 0.029999999999994 0.0 129
-130 0.0332820415496826 0.0300000000000011 0.0300000000000011 0.0 130
-131 0.0329020023345947 0.0300000000000011 0.0300000000000011 0.0 131
-132 0.0362491607666016 0.0399999999999991 0.0399999999999991 0.0 132
-133 0.0325329303741455 0.0300000000000011 0.0300000000000011 0.0 133
-134 0.0340819358825684 0.0399999999999991 0.0399999999999991 0.0 134
-135 0.0319511890411377 0.0300000000000011 0.0300000000000011 0.0 135
-136 0.0739138126373291 0.0700000000000003 0.0700000000000003 0.0 136
-137 0.0330600738525391 0.0300000000000011 0.0300000000000011 0.0 137
-138 0.0359530448913574 0.0399999999999991 0.0399999999999991 0.0 138
-139 0.0330100059509277 0.0300000000000011 0.0300000000000011 0.0 139
-140 0.0330448150634766 0.0399999999999991 0.0399999999999991 0.0 140
-141 0.0330119132995605 0.0300000000000011 0.0300000000000011 0.0 141
-142 0.0321979522705078 0.0300000000000011 0.0300000000000011 0.0 142
-143 0.0314090251922607 0.029999999999994 0.029999999999994 0.0 143
-144 0.0762948989868164 0.0800000000000054 0.0800000000000054 0.0 144
-145 0.0330369472503662 0.0300000000000011 0.0300000000000011 0.0 145
-146 0.0413818359375 0.0399999999999991 0.0399999999999991 0.0 146
-147 0.0336639881134033 0.0399999999999991 0.0399999999999991 0.0 147
-148 0.032634973526001 0.0300000000000011 0.0300000000000011 0.0 148
-149 0.0324230194091797 0.029999999999994 0.029999999999994 0.0 149
-150 0.0322530269622803 0.0400000000000063 0.0400000000000063 0.0 150
-151 0.0314328670501709 0.029999999999994 0.029999999999994 0.0 151
-152 0.0764839649200439 0.0700000000000003 0.0700000000000003 0.0 152
-153 0.0351881980895996 0.0400000000000063 0.0400000000000063 0.0 153
-154 0.0330648422241211 0.029999999999994 0.029999999999994 0.0 154
-155 0.0328710079193115 0.0399999999999991 0.0399999999999991 0.0 155
-156 0.032764196395874 0.0300000000000011 0.0300000000000011 0.0 156
-157 0.0323169231414795 0.0300000000000011 0.0300000000000011 0.0 157
-158 0.0350921154022217 0.0399999999999991 0.0399999999999991 0.0 158
-159 0.0315439701080322 0.0300000000000011 0.0300000000000011 0.0 159
-160 0.0760791301727295 0.0700000000000003 0.0700000000000003 0.0 160
-161 0.0333390235900879 0.0399999999999991 0.0399999999999991 0.0 161
-162 0.0331790447235107 0.0300000000000011 0.0300000000000011 0.0 162
-163 0.0328421592712402 0.0300000000000011 0.0300000000000011 0.0 163
-164 0.0354018211364746 0.0399999999999991 0.0399999999999991 0.0 164
-165 0.0326108932495117 0.0300000000000011 0.0300000000000011 0.0 165
-166 0.0330290794372559 0.0300000000000011 0.0300000000000011 0.0 166
-167 0.0316469669342041 0.0300000000000011 0.0300000000000011 0.0 167
-168 0.0735650062561035 0.0799999999999983 0.0799999999999983 0.0 168
-169 0.0328128337860107 0.0300000000000011 0.0300000000000011 0.0 169
-170 0.034276008605957 0.0399999999999991 0.0399999999999991 0.0 170
-171 0.0350871086120605 0.0300000000000011 0.0300000000000011 0.0 171
-172 0.0402491092681885 0.0399999999999991 0.0399999999999991 0.0 172
-173 0.033289909362793 0.0300000000000011 0.0300000000000011 0.0 173
-174 0.0319631099700928 0.0399999999999991 0.0399999999999991 0.0 174
-175 0.0314111709594727 0.029999999999994 0.029999999999994 0.0 175
-176 0.0736920833587646 0.0700000000000003 0.0700000000000003 0.0 176
-177 0.0366611480712891 0.0400000000000063 0.0400000000000063 0.0 177
-178 0.0331029891967773 0.029999999999994 0.029999999999994 0.0 178
-179 0.0331480503082275 0.0300000000000011 0.0300000000000011 0.0 179
-180 0.0324270725250244 0.0399999999999991 0.0399999999999991 0.0 180
-181 0.0324950218200684 0.0300000000000011 0.0300000000000011 0.0 181
-182 0.032120943069458 0.0300000000000011 0.0300000000000011 0.0 182
-183 0.0316941738128662 0.0300000000000011 0.0300000000000011 0.0 183
-184 0.0764799118041992 0.0799999999999983 0.0799999999999983 0.0 184
-185 0.0351009368896484 0.0300000000000011 0.0300000000000011 0.0 185
-186 0.0331439971923828 0.0399999999999991 0.0399999999999991 0.0 186
-187 0.0333070755004883 0.0300000000000011 0.0300000000000011 0.0 187
-188 0.0326988697052002 0.0300000000000011 0.0300000000000011 0.0 188
-189 0.0324010848999023 0.0399999999999991 0.0399999999999991 0.0 189
-190 0.0343129634857178 0.0300000000000011 0.0300000000000011 0.0 190
-191 0.0317180156707764 0.0300000000000011 0.0300000000000011 0.0 191
-192 0.0754880905151367 0.0799999999999983 0.0799999999999983 0.0 192
-193 0.0328428745269775 0.0300000000000011 0.0300000000000011 0.0 193
-194 0.0328872203826904 0.029999999999994 0.029999999999994 0.0 194
-195 0.0326900482177734 0.0400000000000063 0.0400000000000063 0.0 195
-196 0.0326938629150391 0.029999999999994 0.029999999999994 0.0 196
-197 0.036156177520752 0.0400000000000063 0.0400000000000063 0.0 197
-198 0.0402121543884277 0.029999999999994 0.029999999999994 0.0 198
-199 0.0345208644866943 0.0400000000000063 0.0400000000000063 0.0 199
-200 0.0736300945281982 0.0699999999999932 0.0699999999999932 0.0 200
-201 0.0329070091247559 0.0400000000000063 0.0400000000000063 0.0 201
-202 0.0329358577728271 0.029999999999994 0.029999999999994 0.0 202
-203 0.0367400646209717 0.0400000000000063 0.0400000000000063 0.0 203
-204 0.0326740741729736 0.029999999999994 0.029999999999994 0.0 204
-205 0.0328309535980225 0.0300000000000011 0.0300000000000011 0.0 205
-206 0.0319180488586426 0.0300000000000011 0.0300000000000011 0.0 206
-207 0.0315039157867432 0.0300000000000011 0.0300000000000011 0.0 207
-208 0.073983907699585 0.0799999999999983 0.0799999999999983 0.0 208
-209 0.0354940891265869 0.0300000000000011 0.0300000000000011 0.0 209
-210 0.0329270362854004 0.0399999999999991 0.0399999999999991 0.0 210
-211 0.0364441871643066 0.0300000000000011 0.0300000000000011 0.0 211
-212 0.0326921939849854 0.0300000000000011 0.0300000000000011 0.0 212
-213 0.0329389572143555 0.0399999999999991 0.0399999999999991 0.0 213
-214 0.0320320129394531 0.0300000000000011 0.0300000000000011 0.0 214
-215 0.0314679145812988 0.0300000000000011 0.0300000000000011 0.0 215
-216 0.0766069889068604 0.0799999999999983 0.0799999999999983 0.0 216
-217 0.0343639850616455 0.0300000000000011 0.0300000000000011 0.0 217
-218 0.0331821441650391 0.0399999999999991 0.0399999999999991 0.0 218
-219 0.0328841209411621 0.0300000000000011 0.0300000000000011 0.0 219
-220 0.0324678421020508 0.029999999999994 0.029999999999994 0.0 220
-221 0.0323128700256348 0.0300000000000011 0.0300000000000011 0.0 221
-222 0.0320940017700195 0.0399999999999991 0.0399999999999991 0.0 222
-223 0.084298849105835 0.0800000000000054 0.0800000000000054 0.0 223
-224 0.0338959693908691 0.0300000000000011 0.0300000000000011 0.0 224
-225 0.0326578617095947 0.0399999999999991 0.0399999999999991 0.0 225
-226 0.0329980850219727 0.029999999999994 0.029999999999994 0.0 226
-227 0.0328388214111328 0.0300000000000011 0.0300000000000011 0.0 227
-228 0.0324342250823975 0.0399999999999991 0.0399999999999991 0.0 228
-229 0.0363619327545166 0.0300000000000011 0.0300000000000011 0.0 229
-230 0.0319449901580811 0.0300000000000011 0.0300000000000011 0.0 230
-231 0.0728111267089844 0.0799999999999983 0.0799999999999983 0.0 231
-232 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 232
-233 0.0330288410186768 0.0300000000000011 0.0300000000000011 0.0 233
-234 0.0328319072723389 0.0399999999999991 0.0399999999999991 0.0 234
-235 0.0353119373321533 0.0300000000000011 0.0300000000000011 0.0 235
-236 0.0324058532714844 0.0300000000000011 0.0300000000000011 0.0 236
-237 0.0343661308288574 0.0399999999999991 0.0399999999999991 0.0 237
-238 0.0319287776947021 0.0300000000000011 0.0300000000000011 0.0 238
-239 0.0734179019927979 0.0700000000000003 0.0700000000000003 0.0 239
-240 0.0330750942230225 0.0399999999999991 0.0399999999999991 0.0 240
-241 0.0359859466552734 0.0300000000000011 0.0300000000000011 0.0 241
-242 0.0331950187683105 0.0399999999999991 0.0399999999999991 0.0 242
-243 0.0336649417877197 0.0300000000000011 0.0300000000000011 0.0 243
-244 0.0327489376068115 0.0300000000000011 0.0300000000000011 0.0 244
-245 0.0324509143829346 0.029999999999994 0.029999999999994 0.0 245
-246 0.0315418243408203 0.0399999999999991 0.0399999999999991 0.0 246
-247 0.0725250244140625 0.0700000000000003 0.0700000000000003 0.0 247
-248 0.0361208915710449 0.0300000000000011 0.0300000000000011 0.0 248
-249 0.040661096572876 0.0399999999999991 0.0399999999999991 0.0 249
-250 0.0346300601959229 0.0400000000000063 0.0400000000000063 0.0 250
-251 0.0325310230255127 0.029999999999994 0.029999999999994 0.0 251
-252 0.032663106918335 0.0300000000000011 0.0300000000000011 0.0 252
-253 0.0323901176452637 0.0399999999999991 0.0399999999999991 0.0 253
-254 0.0314888954162598 0.0300000000000011 0.0300000000000011 0.0 254
-255 0.0757758617401123 0.0700000000000003 0.0700000000000003 0.0 255
-256 0.0334639549255371 0.0399999999999991 0.0399999999999991 0.0 256
-257 0.032958984375 0.0300000000000011 0.0300000000000011 0.0 257
-258 0.0329427719116211 0.0300000000000011 0.0300000000000011 0.0 258
-259 0.0325839519500732 0.0399999999999991 0.0399999999999991 0.0 259
-260 0.0327038764953613 0.0300000000000011 0.0300000000000011 0.0 260
-261 0.0347969532012939 0.0300000000000011 0.0300000000000011 0.0 261
-262 0.0313179492950439 0.0399999999999991 0.0399999999999991 0.0 262
-263 0.0764021873474121 0.0700000000000003 0.0700000000000003 0.0 263
-264 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 264
-265 0.0331900119781494 0.0399999999999991 0.0399999999999991 0.0 265
-266 0.0328788757324219 0.0300000000000011 0.0300000000000011 0.0 266
-267 0.0352470874786377 0.0399999999999991 0.0399999999999991 0.0 267
-268 0.0326640605926514 0.0300000000000011 0.0300000000000011 0.0 268
-269 0.0323259830474854 0.029999999999994 0.029999999999994 0.0 269
-270 0.0321478843688965 0.0300000000000011 0.0300000000000011 0.0 270
-271 0.0730900764465332 0.0799999999999983 0.0799999999999983 0.0 271
-272 0.032844066619873 0.0300000000000011 0.0300000000000011 0.0 272
-273 0.0331649780273438 0.0300000000000011 0.0300000000000011 0.0 273
-274 0.0364649295806885 0.0399999999999991 0.0399999999999991 0.0 274
-275 0.0396530628204346 0.0399999999999991 0.0399999999999991 0.0 275
-276 0.0334179401397705 0.0300000000000011 0.0300000000000011 0.0 276
-277 0.0320639610290527 0.0300000000000011 0.0300000000000011 0.0 277
-278 0.0313940048217773 0.0399999999999991 0.0399999999999991 0.0 278
-279 0.0731561183929443 0.0700000000000003 0.0700000000000003 0.0 279
-280 0.0364029407501221 0.0399999999999991 0.0399999999999991 0.0 280
-281 0.0330798625946045 0.0300000000000011 0.0300000000000011 0.0 281
-282 0.0338191986083984 0.0300000000000011 0.0300000000000011 0.0 282
-283 0.0326099395751953 0.0399999999999991 0.0399999999999991 0.0 283
-284 0.0324950218200684 0.0300000000000011 0.0300000000000011 0.0 284
-285 0.0321521759033203 0.0300000000000011 0.0300000000000011 0.0 285
-286 0.0321328639984131 0.0300000000000011 0.0300000000000011 0.0 286
-287 0.0761940479278564 0.0799999999999983 0.0799999999999983 0.0 287
-288 0.0365800857543945 0.0300000000000011 0.0300000000000011 0.0 288
-289 0.0353879928588867 0.0399999999999991 0.0399999999999991 0.0 289
-290 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 290
-291 0.0328271389007568 0.029999999999994 0.029999999999994 0.0 291
-292 0.0326738357543945 0.0400000000000063 0.0400000000000063 0.0 292
-293 0.0339128971099854 0.029999999999994 0.029999999999994 0.0 293
-294 0.0325300693511963 0.0300000000000011 0.0300000000000011 0.0 294
-295 0.0739338397979736 0.0800000000000054 0.0800000000000054 0.0 295
-296 0.0328948497772217 0.029999999999994 0.029999999999994 0.0 296
-297 0.0328888893127441 0.0300000000000011 0.0300000000000011 0.0 297
-298 0.0327708721160889 0.0399999999999991 0.0399999999999991 0.0 298
-299 0.0325500965118408 0.0300000000000011 0.0300000000000011 0.0 299
-300 0.0354809761047363 0.0300000000000011 0.0300000000000011 0.0 300
-301 0.0396809577941895 0.0399999999999991 0.0399999999999991 0.0 301
-302 0.0334930419921875 0.0399999999999991 0.0399999999999991 0.0 302
-303 0.0734050273895264 0.0700000000000003 0.0700000000000003 0.0 303
-304 0.0328478813171387 0.0300000000000011 0.0300000000000011 0.0 304
-305 0.0329740047454834 0.0399999999999991 0.0399999999999991 0.0 305
-306 0.0364749431610107 0.0300000000000011 0.0300000000000011 0.0 306
-307 0.0326058864593506 0.0300000000000011 0.0300000000000011 0.0 307
-308 0.0327680110931396 0.0399999999999991 0.0399999999999991 0.0 308
-309 0.0319027900695801 0.0300000000000011 0.0300000000000011 0.0 309
-310 0.0315032005310059 0.0300000000000011 0.0300000000000011 0.0 310
-311 0.073652982711792 0.0700000000000003 0.0700000000000003 0.0 311
-312 0.0356411933898926 0.0399999999999991 0.0399999999999991 0.0 312
-313 0.0330371856689453 0.0300000000000011 0.0300000000000011 0.0 313
-314 0.0342891216278076 0.0399999999999991 0.0399999999999991 0.0 314
-315 0.0345110893249512 0.0300000000000011 0.0300000000000011 0.0 315
-316 0.032926082611084 0.029999999999994 0.029999999999994 0.0 316
-317 0.031851053237915 0.0399999999999991 0.0399999999999991 0.0 317
-318 0.0316848754882812 0.0300000000000011 0.0300000000000011 0.0 318
-319 0.0761759281158447 0.0700000000000003 0.0700000000000003 0.0 319
-320 0.0328528881072998 0.0399999999999991 0.0399999999999991 0.0 320
-321 0.0334789752960205 0.0300000000000011 0.0300000000000011 0.0 321
-322 0.0328638553619385 0.0300000000000011 0.0300000000000011 0.0 322
-323 0.0323901176452637 0.0399999999999991 0.0399999999999991 0.0 323
-324 0.0323100090026855 0.0300000000000011 0.0300000000000011 0.0 324
-325 0.0324501991271973 0.0300000000000011 0.0300000000000011 0.0 325
-326 0.0336298942565918 0.0300000000000011 0.0300000000000011 0.0 326
-327 0.0810260772705078 0.0899999999999963 0.0899999999999963 0.0 327
-328 0.0327072143554688 0.0300000000000011 0.0300000000000011 0.0 328
-329 0.0328741073608398 0.0300000000000011 0.0300000000000011 0.0 329
-330 0.0328249931335449 0.0300000000000011 0.0300000000000011 0.0 330
-331 0.0325191020965576 0.0399999999999991 0.0399999999999991 0.0 331
-332 0.0351779460906982 0.0300000000000011 0.0300000000000011 0.0 332
-333 0.0318300724029541 0.0300000000000011 0.0300000000000011 0.0 333
-334 0.075192928314209 0.0799999999999983 0.0799999999999983 0.0 334
-335 0.0331308841705322 0.0300000000000011 0.0300000000000011 0.0 335
-336 0.0328052043914795 0.029999999999994 0.029999999999994 0.0 336
-337 0.0331370830535889 0.0400000000000063 0.0400000000000063 0.0 337
-338 0.0356910228729248 0.029999999999994 0.029999999999994 0.0 338
-339 0.0324921607971191 0.0400000000000063 0.0400000000000063 0.0 339
-340 0.0324490070343018 0.029999999999994 0.029999999999994 0.0 340
-341 0.0341949462890625 0.0300000000000011 0.0300000000000011 0.0 341
-342 0.0734210014343262 0.0799999999999983 0.0799999999999983 0.0 342
-343 0.0332908630371094 0.0300000000000011 0.0300000000000011 0.0 343
-344 0.0332479476928711 0.0300000000000011 0.0300000000000011 0.0 344
-345 0.0360391139984131 0.0399999999999991 0.0399999999999991 0.0 345
-346 0.0328700542449951 0.0300000000000011 0.0300000000000011 0.0 346
-347 0.0346879959106445 0.0399999999999991 0.0399999999999991 0.0 347
-348 0.0322730541229248 0.0300000000000011 0.0300000000000011 0.0 348
-349 0.0316729545593262 0.0300000000000011 0.0300000000000011 0.0 349
-350 0.0730090141296387 0.0700000000000003 0.0700000000000003 0.0 350
-351 0.0364499092102051 0.0399999999999991 0.0399999999999991 0.0 351
-352 0.0416209697723389 0.0399999999999991 0.0399999999999991 0.0 352
-353 0.0340771675109863 0.0399999999999991 0.0399999999999991 0.0 353
-354 0.0326759815216064 0.0300000000000011 0.0300000000000011 0.0 354
-355 0.0324649810791016 0.0300000000000011 0.0300000000000011 0.0 355
-356 0.032310962677002 0.0300000000000011 0.0300000000000011 0.0 356
-357 0.0313961505889893 0.0300000000000011 0.0300000000000011 0.0 357
-358 0.0751090049743652 0.0799999999999983 0.0799999999999983 0.0 358
-359 0.0351879596710205 0.0399999999999991 0.0399999999999991 0.0 359
-360 0.0331299304962158 0.0300000000000011 0.0300000000000011 0.0 360
-361 0.0328550338745117 0.0300000000000011 0.0300000000000011 0.0 361
-362 0.0325639247894287 0.029999999999994 0.029999999999994 0.0 362
-363 0.0325849056243896 0.0400000000000063 0.0400000000000063 0.0 363
-364 0.0344219207763672 0.029999999999994 0.029999999999994 0.0 364
-365 0.0323021411895752 0.0300000000000011 0.0300000000000011 0.0 365
-366 0.0760447978973389 0.0800000000000054 0.0800000000000054 0.0 366
-367 0.0335848331451416 0.029999999999994 0.029999999999994 0.0 367
-368 0.0331020355224609 0.0399999999999991 0.0399999999999991 0.0 368
-369 0.0329232215881348 0.0300000000000011 0.0300000000000011 0.0 369
-370 0.0328400135040283 0.0300000000000011 0.0300000000000011 0.0 370
-371 0.0363020896911621 0.0399999999999991 0.0399999999999991 0.0 371
-372 0.0322511196136475 0.0300000000000011 0.0300000000000011 0.0 372
-373 0.0333948135375977 0.0300000000000011 0.0300000000000011 0.0 373
-374 0.0732510089874268 0.0799999999999983 0.0799999999999983 0.0 374
-375 0.032930850982666 0.0300000000000011 0.0300000000000011 0.0 375
-376 0.0330500602722168 0.0300000000000011 0.0300000000000011 0.0 376
-377 0.0361061096191406 0.0399999999999991 0.0399999999999991 0.0 377
-378 0.0395760536193848 0.0399999999999991 0.0399999999999991 0.0 378
-379 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 379
-380 0.0320568084716797 0.0300000000000011 0.0300000000000011 0.0 380
-381 0.0315189361572266 0.0399999999999991 0.0399999999999991 0.0 381
-382 0.0733020305633545 0.0700000000000003 0.0700000000000003 0.0 382
-383 0.0355980396270752 0.0399999999999991 0.0399999999999991 0.0 383
-384 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 384
-385 0.0331411361694336 0.0300000000000011 0.0300000000000011 0.0 385
-386 0.0324721336364746 0.0300000000000011 0.0300000000000011 0.0 386
-387 0.0324320793151855 0.0399999999999991 0.0399999999999991 0.0 387
-388 0.0321850776672363 0.029999999999994 0.029999999999994 0.0 388
-389 0.0315890312194824 0.0300000000000011 0.0300000000000011 0.0 389
-390 0.0761289596557617 0.0800000000000054 0.0800000000000054 0.0 390
-391 0.033301830291748 0.029999999999994 0.029999999999994 0.0 391
-392 0.035081148147583 0.0300000000000011 0.0300000000000011 0.0 392
-393 0.0335009098052979 0.0399999999999991 0.0399999999999991 0.0 393
-394 0.0326759815216064 0.0300000000000011 0.0300000000000011 0.0 394
-395 0.0327270030975342 0.0300000000000011 0.0300000000000011 0.0 395
-396 0.0323770046234131 0.0399999999999991 0.0399999999999991 0.0 396
-397 0.0347421169281006 0.0300000000000011 0.0300000000000011 0.0 397
-398 0.0752899646759033 0.0799999999999983 0.0799999999999983 0.0 398
-399 0.0327789783477783 0.0300000000000011 0.0300000000000011 0.0 399
-400 0.032951831817627 0.0300000000000011 0.0300000000000011 0.0 400
-401 0.03273606300354 0.0300000000000011 0.0300000000000011 0.0 401
-402 0.0324621200561523 0.0399999999999991 0.0399999999999991 0.0 402
-403 0.0350461006164551 0.0300000000000011 0.0300000000000011 0.0 403
-404 0.0376379489898682 0.0399999999999991 0.0399999999999991 0.0 404
-405 0.0354411602020264 0.0300000000000011 0.0300000000000011 0.0 405
-406 0.0734958648681641 0.0799999999999983 0.0799999999999983 0.0 406
-407 0.0329210758209229 0.0300000000000011 0.0300000000000011 0.0 407
-408 0.0329289436340332 0.0300000000000011 0.0300000000000011 0.0 408
-409 0.0354850292205811 0.0399999999999991 0.0399999999999991 0.0 409
-410 0.0325729846954346 0.0300000000000011 0.0300000000000011 0.0 410
-411 0.0327589511871338 0.0399999999999991 0.0399999999999991 0.0 411
-412 0.0319170951843262 0.0300000000000011 0.0300000000000011 0.0 412
-413 0.031519889831543 0.029999999999994 0.029999999999994 0.0 413
-414 0.0742340087890625 0.0700000000000003 0.0700000000000003 0.0 414
-415 0.0346739292144775 0.0399999999999991 0.0399999999999991 0.0 415
-416 0.0351288318634033 0.0300000000000011 0.0300000000000011 0.0 416
-417 0.0329630374908447 0.0399999999999991 0.0399999999999991 0.0 417
-418 0.0367558002471924 0.0300000000000011 0.0300000000000011 0.0 418
-419 0.0328981876373291 0.0300000000000011 0.0300000000000011 0.0 419
-420 0.0320210456848145 0.0399999999999991 0.0399999999999991 0.0 420
-421 0.031790018081665 0.0300000000000011 0.0300000000000011 0.0 421
-422 0.0784010887145996 0.0799999999999983 0.0799999999999983 0.0 422
-423 0.0330309867858887 0.0300000000000011 0.0300000000000011 0.0 423
-424 0.0335760116577148 0.0300000000000011 0.0300000000000011 0.0 424
-425 0.0327050685882568 0.0399999999999991 0.0399999999999991 0.0 425
-426 0.0326788425445557 0.0300000000000011 0.0300000000000011 0.0 426
-427 0.032289981842041 0.0300000000000011 0.0300000000000011 0.0 427
-428 0.0317809581756592 0.0300000000000011 0.0300000000000011 0.0 428
-429 0.0816869735717773 0.0899999999999963 0.0899999999999963 0.0 429
-430 0.035430908203125 0.0300000000000011 0.0300000000000011 0.0 430
-431 0.0327348709106445 0.0300000000000011 0.0300000000000011 0.0 431
-432 0.0328209400177002 0.0399999999999991 0.0399999999999991 0.0 432
-433 0.0328578948974609 0.0300000000000011 0.0300000000000011 0.0 433
-434 0.0324020385742188 0.0300000000000011 0.0300000000000011 0.0 434
-435 0.0351409912109375 0.0399999999999991 0.0399999999999991 0.0 435
-436 0.0321168899536133 0.0300000000000011 0.0300000000000011 0.0 436
-437 0.0726029872894287 0.0700000000000003 0.0700000000000003 0.0 437
-438 0.0331008434295654 0.029999999999994 0.029999999999994 0.0 438
-439 0.0328960418701172 0.0399999999999991 0.0399999999999991 0.0 439
-440 0.0328078269958496 0.0300000000000011 0.0300000000000011 0.0 440
-441 0.0326459407806396 0.0300000000000011 0.0300000000000011 0.0 441
-442 0.0361838340759277 0.0399999999999991 0.0399999999999991 0.0 442
-443 0.0322508811950684 0.0300000000000011 0.0300000000000011 0.0 443
-444 0.0355379581451416 0.0399999999999991 0.0399999999999991 0.0 444
-445 0.0736260414123535 0.0700000000000003 0.0700000000000003 0.0 445
-446 0.0333738327026367 0.0300000000000011 0.0300000000000011 0.0 446
-447 0.0333800315856934 0.0399999999999991 0.0399999999999991 0.0 447
-448 0.0369861125946045 0.0300000000000011 0.0300000000000011 0.0 448
-449 0.033034086227417 0.0399999999999991 0.0399999999999991 0.0 449
-450 0.034984827041626 0.0300000000000011 0.0300000000000011 0.0 450
-451 0.0323779582977295 0.0300000000000011 0.0300000000000011 0.0 451
-452 0.0319168567657471 0.0399999999999991 0.0399999999999991 0.0 452
-453 0.0730609893798828 0.0700000000000003 0.0700000000000003 0.0 453
-454 0.0357108116149902 0.0399999999999991 0.0399999999999991 0.0 454
-455 0.0403239727020264 0.0399999999999991 0.0399999999999991 0.0 455
-456 0.033923864364624 0.0300000000000011 0.0300000000000011 0.0 456
-457 0.0325479507446289 0.0300000000000011 0.0300000000000011 0.0 457
-458 0.0323481559753418 0.0300000000000011 0.0300000000000011 0.0 458
-459 0.0323350429534912 0.0399999999999991 0.0399999999999991 0.0 459
-460 0.0314900875091553 0.0300000000000011 0.0300000000000011 0.0 460
-461 0.075538158416748 0.0700000000000003 0.0700000000000003 0.0 461
-462 0.0340449810028076 0.0399999999999991 0.0399999999999991 0.0 462
-463 0.0331201553344727 0.0300000000000011 0.0300000000000011 0.0 463
-464 0.0330970287322998 0.029999999999994 0.029999999999994 0.0 464
-465 0.0326929092407227 0.0399999999999991 0.0399999999999991 0.0 465
-466 0.0326869487762451 0.0300000000000011 0.0300000000000011 0.0 466
-467 0.0325558185577393 0.0300000000000011 0.0300000000000011 0.0 467
-468 0.0355589389801025 0.0399999999999991 0.0399999999999991 0.0 468
-469 0.0771338939666748 0.0700000000000003 0.0700000000000003 0.0 469
-470 0.0334289073944092 0.0399999999999991 0.0399999999999991 0.0 470
-471 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 471
-472 0.0329241752624512 0.0300000000000011 0.0300000000000011 0.0 472
-473 0.0327908992767334 0.0399999999999991 0.0399999999999991 0.0 473
-474 0.0363669395446777 0.0300000000000011 0.0300000000000011 0.0 474
-475 0.0322010517120361 0.0300000000000011 0.0300000000000011 0.0 475
-476 0.0328471660614014 0.0399999999999991 0.0399999999999991 0.0 476
-477 0.0735671520233154 0.0700000000000003 0.0700000000000003 0.0 477
-478 0.0327999591827393 0.0300000000000011 0.0300000000000011 0.0 478
-479 0.0329790115356445 0.0399999999999991 0.0399999999999991 0.0 479
-480 0.0350720882415771 0.0300000000000011 0.0300000000000011 0.0 480
-481 0.0392179489135742 0.0399999999999991 0.0399999999999991 0.0 481
-482 0.0342378616333008 0.0399999999999991 0.0399999999999991 0.0 482
-483 0.0319888591766357 0.0300000000000011 0.0300000000000011 0.0 483
-484 0.0314619541168213 0.0300000000000011 0.0300000000000011 0.0 484
-485 0.0736970901489258 0.0700000000000003 0.0700000000000003 0.0 485
-486 0.0357317924499512 0.0399999999999991 0.0399999999999991 0.0 486
-487 0.0331878662109375 0.0300000000000011 0.0300000000000011 0.0 487
-488 0.033804178237915 0.0399999999999991 0.0399999999999991 0.0 488
-489 0.0325119495391846 0.0300000000000011 0.0300000000000011 0.0 489
-490 0.0325300693511963 0.029999999999994 0.029999999999994 0.0 490
-491 0.0321159362792969 0.0300000000000011 0.0300000000000011 0.0 491
-492 0.0320580005645752 0.0399999999999991 0.0399999999999991 0.0 492
-493 0.075861930847168 0.0700000000000003 0.0700000000000003 0.0 493
-494 0.033599853515625 0.0399999999999991 0.0399999999999991 0.0 494
-495 0.0367560386657715 0.0300000000000011 0.0300000000000011 0.0 495
-496 0.0333199501037598 0.0300000000000011 0.0300000000000011 0.0 496
-497 0.0325191020965576 0.0399999999999991 0.0399999999999991 0.0 497
-498 0.0327298641204834 0.0300000000000011 0.0300000000000011 0.0 498
-499 0.0322799682617188 0.0300000000000011 0.0300000000000011 0.0 499
-500 0.0348708629608154 0.0399999999999991 0.0399999999999991 0.0 500
-501 0.0749578475952148 0.0700000000000003 0.0700000000000003 0.0 501
-502 0.0332460403442383 0.0399999999999991 0.0399999999999991 0.0 502
-503 0.0331079959869385 0.0300000000000011 0.0300000000000011 0.0 503
-504 0.0328578948974609 0.0300000000000011 0.0300000000000011 0.0 504
-505 0.032494068145752 0.0300000000000011 0.0300000000000011 0.0 505
-506 0.0351459980010986 0.0399999999999991 0.0399999999999991 0.0 506
-507 0.0394799709320068 0.0500000000000043 0.0399999999999991 0.01 507
-508 0.0342020988464355 0.0300000000000011 0.0300000000000011 0.0 508
-509 0.0742120742797852 0.0799999999999983 0.0799999999999983 0.0 509
-510 0.0330269336700439 0.0300000000000011 0.0300000000000011 0.0 510
-511 0.032991886138916 0.0300000000000011 0.0300000000000011 0.0 511
-512 0.0354578495025635 0.0399999999999991 0.0399999999999991 0.0 512
-513 0.0327198505401611 0.0300000000000011 0.0300000000000011 0.0 513
-514 0.0336050987243652 0.029999999999994 0.029999999999994 0.0 514
-515 0.0318880081176758 0.0400000000000063 0.0400000000000063 0.0 515
-516 0.0725610256195068 0.0699999999999932 0.0699999999999932 0.0 516
-517 0.0332450866699219 0.0300000000000011 0.0300000000000011 0.0 517
-518 0.0342578887939453 0.0399999999999991 0.0399999999999991 0.0 518
-519 0.035430908203125 0.0300000000000011 0.0300000000000011 0.0 519
-520 0.032912015914917 0.0399999999999991 0.0399999999999991 0.0 520
-521 0.0366041660308838 0.0300000000000011 0.0300000000000011 0.0 521
-522 0.0328991413116455 0.0300000000000011 0.0300000000000011 0.0 522
-523 0.0319130420684814 0.0399999999999991 0.0399999999999991 0.0 523
-524 0.07318115234375 0.0700000000000003 0.0700000000000003 0.0 524
-525 0.0363700389862061 0.0399999999999991 0.0399999999999991 0.0 525
-526 0.033411979675293 0.0300000000000011 0.0300000000000011 0.0 526
-527 0.0364720821380615 0.0399999999999991 0.0399999999999991 0.0 527
-528 0.0327281951904297 0.0300000000000011 0.0300000000000011 0.0 528
-529 0.0325851440429688 0.0300000000000011 0.0300000000000011 0.0 529
-530 0.0322520732879639 0.0300000000000011 0.0300000000000011 0.0 530
-531 0.0316128730773926 0.0399999999999991 0.0399999999999991 0.0 531
-532 0.0813291072845459 0.0799999999999983 0.0799999999999983 0.0 532
-533 0.0356478691101074 0.0300000000000011 0.0300000000000011 0.0 533
-534 0.0330061912536621 0.0300000000000011 0.0300000000000011 0.0 534
-535 0.0327270030975342 0.0399999999999991 0.0399999999999991 0.0 535
-536 0.032696008682251 0.0300000000000011 0.0300000000000011 0.0 536
-537 0.032243013381958 0.0300000000000011 0.0300000000000011 0.0 537
-538 0.0348541736602783 0.0399999999999991 0.0399999999999991 0.0 538
-539 0.031674861907959 0.0300000000000011 0.0300000000000011 0.0 539
-540 0.0754058361053467 0.0700000000000003 0.0700000000000003 0.0 540
-541 0.0328490734100342 0.0399999999999991 0.0399999999999991 0.0 541
-542 0.0332391262054443 0.029999999999994 0.029999999999994 0.0 542
-543 0.0331962108612061 0.0300000000000011 0.0300000000000011 0.0 543
-544 0.0350210666656494 0.0399999999999991 0.0399999999999991 0.0 544
-545 0.0324161052703857 0.0300000000000011 0.0300000000000011 0.0 545
-546 0.031865119934082 0.0300000000000011 0.0300000000000011 0.0 546
-547 0.0355000495910645 0.0399999999999991 0.0399999999999991 0.0 547
-548 0.0733621120452881 0.0700000000000003 0.0700000000000003 0.0 548
-549 0.0331029891967773 0.0300000000000011 0.0300000000000011 0.0 549
-550 0.0332908630371094 0.0399999999999991 0.0399999999999991 0.0 550
-551 0.0365278720855713 0.0300000000000011 0.0300000000000011 0.0 551
-552 0.0326669216156006 0.0399999999999991 0.0399999999999991 0.0 552
-553 0.0345711708068848 0.0300000000000011 0.0300000000000011 0.0 553
-554 0.0320999622344971 0.0300000000000011 0.0300000000000011 0.0 554
-555 0.0315120220184326 0.0300000000000011 0.0300000000000011 0.0 555
-556 0.0733709335327148 0.0700000000000003 0.0700000000000003 0.0 556
-557 0.0357170104980469 0.0300000000000011 0.0300000000000011 0.0 557
-558 0.0411560535430908 0.0399999999999991 0.0399999999999991 0.0 558
-559 0.0337309837341309 0.0399999999999991 0.0399999999999991 0.0 559
-560 0.0325090885162354 0.0300000000000011 0.0300000000000011 0.0 560
-561 0.0326089859008789 0.0300000000000011 0.0300000000000011 0.0 561
-562 0.032412052154541 0.029999999999994 0.029999999999994 0.0 562
-563 0.0314450263977051 0.0300000000000011 0.0300000000000011 0.0 563
-564 0.0781939029693604 0.0700000000000003 0.0700000000000003 0.0 564
-565 0.0359461307525635 0.0399999999999991 0.0399999999999991 0.0 565
-566 0.0339870452880859 0.0300000000000011 0.0300000000000011 0.0 566
-567 0.0329389572143555 0.0399999999999991 0.0399999999999991 0.0 567
-568 0.0336530208587646 0.029999999999994 0.029999999999994 0.0 568
-569 0.0326399803161621 0.0300000000000011 0.0300000000000011 0.0 569
-570 0.0351450443267822 0.0399999999999991 0.0399999999999991 0.0 570
-571 0.0314168930053711 0.0300000000000011 0.0300000000000011 0.0 571
-572 0.0775408744812012 0.0800000000000054 0.0800000000000054 0.0 572
-573 0.032926082611084 0.029999999999994 0.029999999999994 0.0 573
-574 0.0330569744110107 0.0300000000000011 0.0300000000000011 0.0 574
-575 0.0329349040985107 0.0300000000000011 0.0300000000000011 0.0 575
-576 0.0327939987182617 0.0399999999999991 0.0399999999999991 0.0 576
-577 0.035599946975708 0.0300000000000011 0.0300000000000011 0.0 577
-578 0.0321230888366699 0.0399999999999991 0.0399999999999991 0.0 578
-579 0.0320999622344971 0.0300000000000011 0.0300000000000011 0.0 579
-580 0.0739450454711914 0.0700000000000003 0.0700000000000003 0.0 580
-581 0.0332319736480713 0.0300000000000011 0.0300000000000011 0.0 581
-582 0.0331840515136719 0.0300000000000011 0.0300000000000011 0.0 582
-583 0.0358431339263916 0.0300000000000011 0.0300000000000011 0.0 583
-584 0.0413031578063965 0.0499999999999972 0.0499999999999972 0.0 584
-585 0.0345101356506348 0.0300000000000011 0.0300000000000011 0.0 585
-586 0.0317580699920654 0.0300000000000011 0.0300000000000011 0.0 586
-587 0.0729880332946777 0.0799999999999983 0.0799999999999983 0.0 587
-588 0.0332069396972656 0.0300000000000011 0.0300000000000011 0.0 588
-589 0.036264181137085 0.0300000000000011 0.0300000000000011 0.0 589
-590 0.0331530570983887 0.0399999999999991 0.0399999999999991 0.0 590
-591 0.0343399047851562 0.0300000000000011 0.0300000000000011 0.0 591
-592 0.0326418876647949 0.0300000000000011 0.0300000000000011 0.0 592
-593 0.0326697826385498 0.0300000000000011 0.0300000000000011 0.0 593
-594 0.0320968627929688 0.0299999999999869 0.029999999999994 0.0 594
-595 0.0752952098846436 0.0800000000000125 0.0800000000000054 0.0 595
-596 0.0330331325531006 0.0299999999999869 0.029999999999994 0.0 596
-597 0.0343711376190186 0.0300000000000011 0.0300000000000011 0.0 597
-598 0.035207986831665 0.0400000000000063 0.0400000000000063 0.0 598
-599 0.0326581001281738 0.0300000000000011 0.0300000000000011 0.0 599
-600 0.0325701236724854 0.0300000000000011 0.0300000000000011 0.0 600
-601 0.0330169200897217 0.039999999999992 0.039999999999992 0.0 601
-602 0.0319371223449707 0.0300000000000011 0.0300000000000011 0.0 602
-603 0.0774281024932861 0.0799999999999983 0.0799999999999983 0.0 603
-604 0.033113956451416 0.0300000000000011 0.0300000000000011 0.0 604
-605 0.0331709384918213 0.0300000000000011 0.0300000000000011 0.0 605
-606 0.0327689647674561 0.0300000000000011 0.0300000000000011 0.0 606
-607 0.0324411392211914 0.0400000000000063 0.0400000000000063 0.0 607
-608 0.0325808525085449 0.0299999999999869 0.0299999999999869 0.0 608
-609 0.0360062122344971 0.0400000000000063 0.0400000000000063 0.0 609
-610 0.041234016418457 0.0400000000000063 0.0400000000000063 0.0 610
-611 0.0736250877380371 0.0699999999999932 0.0699999999999932 0.0 611
-612 0.0329921245574951 0.0300000000000011 0.0300000000000011 0.0 612
-613 0.0332169532775879 0.0400000000000063 0.0400000000000063 0.0 613
-614 0.0327460765838623 0.0299999999999869 0.0299999999999869 0.0 614
-615 0.0364718437194824 0.0400000000000063 0.0400000000000063 0.0 615
-616 0.0324280261993408 0.0300000000000011 0.0300000000000011 0.0 616
-617 0.0323798656463623 0.0300000000000011 0.0300000000000011 0.0 617
-618 0.031386137008667 0.0300000000000011 0.0300000000000011 0.0 618
-619 0.0726630687713623 0.0799999999999983 0.0799999999999983 0.0 619
-620 0.0328989028930664 0.0300000000000011 0.0300000000000011 0.0 620
-621 0.0358729362487793 0.0300000000000011 0.0300000000000011 0.0 621
-622 0.0327029228210449 0.039999999999992 0.039999999999992 0.0 622
-623 0.0342001914978027 0.0300000000000011 0.0300000000000011 0.0 623
-624 0.0347521305084229 0.0400000000000063 0.0400000000000063 0.0 624
-625 0.0318779945373535 0.0300000000000011 0.0300000000000011 0.0 625
-626 0.0316078662872314 0.0300000000000011 0.0300000000000011 0.0 626
-627 0.0768020153045654 0.0699999999999932 0.0699999999999932 0.0 627
-628 0.0332560539245605 0.0400000000000063 0.0400000000000063 0.0 628
-629 0.0345439910888672 0.0300000000000011 0.0300000000000011 0.0 629
-630 0.033174991607666 0.039999999999992 0.039999999999992 0.0 630
-631 0.0327689647674561 0.0300000000000011 0.0300000000000011 0.0 631
-632 0.0324020385742188 0.0300000000000011 0.0300000000000011 0.0 632
-633 0.0320298671722412 0.0300000000000011 0.0300000000000011 0.0 633
-634 0.0313320159912109 0.0300000000000011 0.0300000000000011 0.0 634
-635 0.0831730365753174 0.0900000000000034 0.0900000000000034 0.0 635
-636 0.0344598293304443 0.0299999999999869 0.0299999999999869 0.0 636
-637 0.0330190658569336 0.0400000000000063 0.0400000000000063 0.0 637
-638 0.033113956451416 0.0300000000000011 0.0300000000000011 0.0 638
-639 0.032689094543457 0.0300000000000011 0.0300000000000011 0.0 639
-640 0.0323820114135742 0.0300000000000011 0.0300000000000011 0.0 640
-641 0.034714937210083 0.039999999999992 0.039999999999992 0.0 641
-642 0.0318310260772705 0.0300000000000011 0.0300000000000011 0.0 642
-643 0.0750701427459717 0.0700000000000074 0.0700000000000074 0.0 643
-644 0.0330171585083008 0.039999999999992 0.039999999999992 0.0 644
-645 0.0331709384918213 0.0300000000000011 0.0300000000000011 0.0 645
-646 0.0328099727630615 0.0300000000000011 0.0300000000000011 0.0 646
-647 0.0354018211364746 0.0400000000000063 0.0400000000000063 0.0 647
-648 0.0324749946594238 0.0300000000000011 0.0300000000000011 0.0 648
-649 0.0331239700317383 0.0300000000000011 0.0300000000000011 0.0 649
-650 0.0337600708007812 0.039999999999992 0.039999999999992 0.0 650
-651 0.0735490322113037 0.0700000000000074 0.0700000000000074 0.0 651
-652 0.0332188606262207 0.0300000000000011 0.0300000000000011 0.0 652
-653 0.0344240665435791 0.039999999999992 0.039999999999992 0.0 653
-654 0.0346159934997559 0.0300000000000011 0.0300000000000011 0.0 654
-655 0.0326159000396729 0.0400000000000063 0.0400000000000063 0.0 655
-656 0.0342769622802734 0.0299999999999869 0.0299999999999869 0.0 656
-657 0.0318350791931152 0.0300000000000011 0.0300000000000011 0.0 657
-658 0.0315489768981934 0.0300000000000011 0.0300000000000011 0.0 658
-659 0.0741128921508789 0.0799999999999983 0.0799999999999983 0.0 659
-660 0.0384690761566162 0.0400000000000063 0.0400000000000063 0.0 660
-661 0.0412099361419678 0.0400000000000063 0.0400000000000063 0.0 661
-662 0.0339169502258301 0.0299999999999869 0.0299999999999869 0.0 662
-663 0.0325090885162354 0.0300000000000011 0.0300000000000011 0.0 663
-664 0.0323750972747803 0.0400000000000063 0.0400000000000063 0.0 664
-665 0.0319221019744873 0.0300000000000011 0.0300000000000011 0.0 665
-666 0.0757949352264404 0.0699999999999932 0.0699999999999932 0.0 666
-667 0.0332348346710205 0.0400000000000063 0.0400000000000063 0.0 667
-668 0.0343492031097412 0.0300000000000011 0.0300000000000011 0.0 668
-669 0.0330471992492676 0.0300000000000011 0.0300000000000011 0.0 669
-670 0.0328240394592285 0.039999999999992 0.039999999999992 0.0 670
-671 0.0326519012451172 0.0300000000000011 0.0300000000000011 0.0 671
-672 0.0323309898376465 0.0300000000000011 0.0300000000000011 0.0 672
-673 0.0348069667816162 0.0400000000000063 0.0400000000000063 0.0 673
-674 0.0734519958496094 0.0699999999999932 0.0699999999999932 0.0 674
-675 0.0358669757843018 0.0400000000000063 0.0400000000000063 0.0 675
-676 0.0329530239105225 0.0300000000000011 0.0300000000000011 0.0 676
-677 0.033228874206543 0.0300000000000011 0.0300000000000011 0.0 677
-678 0.0329709053039551 0.039999999999992 0.039999999999992 0.0 678
-679 0.0349721908569336 0.0300000000000011 0.0300000000000011 0.0 679
-680 0.0329270362854004 0.0300000000000011 0.0300000000000011 0.0 680
-681 0.0317440032958984 0.0400000000000063 0.0400000000000063 0.0 681
-682 0.0737960338592529 0.0699999999999932 0.0699999999999932 0.0 682
-683 0.0329961776733398 0.0300000000000011 0.0300000000000011 0.0 683
-684 0.0329370498657227 0.0400000000000063 0.0400000000000063 0.0 684
-685 0.033027172088623 0.0299999999999869 0.0299999999999869 0.0 685
-686 0.0384509563446045 0.0400000000000063 0.0400000000000063 0.0 686
-687 0.0391240119934082 0.0400000000000063 0.0400000000000063 0.0 687
-688 0.0333750247955322 0.0299999999999869 0.0299999999999869 0.0 688
-689 0.0313661098480225 0.0300000000000011 0.0300000000000011 0.0 689
-690 0.0728821754455566 0.0700000000000074 0.0700000000000074 0.0 690
-691 0.0328829288482666 0.039999999999992 0.039999999999992 0.0 691
-692 0.0367858409881592 0.0300000000000011 0.0300000000000011 0.0 692
-693 0.032905101776123 0.0400000000000063 0.0400000000000063 0.0 693
-694 0.0336589813232422 0.0300000000000011 0.0300000000000011 0.0 694
-695 0.0322878360748291 0.0300000000000011 0.0300000000000011 0.0 695
-696 0.0319581031799316 0.0300000000000011 0.0300000000000011 0.0 696
-697 0.0315032005310059 0.039999999999992 0.039999999999992 0.0 697
-698 0.0756649971008301 0.0700000000000074 0.0700000000000074 0.0 698
-699 0.0332357883453369 0.039999999999992 0.039999999999992 0.0 699
-700 0.0345721244812012 0.0300000000000011 0.0300000000000011 0.0 700
-701 0.035128116607666 0.0300000000000011 0.0300000000000011 0.0 701
-702 0.0327088832855225 0.0400000000000063 0.0400000000000063 0.0 702
-703 0.032559871673584 0.0300000000000011 0.0300000000000011 0.0 703
-704 0.0327198505401611 0.0300000000000011 0.0300000000000011 0.0 704
-705 0.0315008163452148 0.0299999999999869 0.0299999999999869 0.0 705
-706 0.0784509181976318 0.0800000000000125 0.0800000000000125 0.0 706
-707 0.032890796661377 0.039999999999992 0.039999999999992 0.0 707
-708 0.0331568717956543 0.0300000000000011 0.0300000000000011 0.0 708
-709 0.0327529907226562 0.0300000000000011 0.0300000000000011 0.0 709
-710 0.0325257778167725 0.0300000000000011 0.0300000000000011 0.0 710
-711 0.0323739051818848 0.039999999999992 0.039999999999992 0.0 711
-712 0.0377719402313232 0.0300000000000011 0.0300000000000011 0.0 712
-713 0.0389621257781982 0.0400000000000063 0.0400000000000063 0.0 713
-714 0.0756630897521973 0.0799999999999983 0.0799999999999983 0.0 714
-715 0.0329148769378662 0.0300000000000011 0.0300000000000011 0.0 715
-716 0.0330750942230225 0.0400000000000063 0.0400000000000063 0.0 716
-717 0.0328159332275391 0.0299999999999869 0.0299999999999869 0.0 717
-718 0.0366039276123047 0.0300000000000011 0.0300000000000011 0.0 718
-719 0.032505989074707 0.0400000000000063 0.0400000000000063 0.0 719
-720 0.0332479476928711 0.0300000000000011 0.0300000000000011 0.0 720
-721 0.0314240455627441 0.0300000000000011 0.0300000000000011 0.0 721
-722 0.0737588405609131 0.0799999999999983 0.0799999999999983 0.0 722
-723 0.0348548889160156 0.0300000000000011 0.0300000000000011 0.0 723
-724 0.0358438491821289 0.0300000000000011 0.0300000000000011 0.0 724
-725 0.0327739715576172 0.0300000000000011 0.0300000000000011 0.0 725
-726 0.0338411331176758 0.0300000000000011 0.0300000000000011 0.0 726
-727 0.0345768928527832 0.0400000000000063 0.0400000000000063 0.0 727
-728 0.0319709777832031 0.0300000000000011 0.0300000000000011 0.0 728
-729 0.0316281318664551 0.0300000000000011 0.0300000000000011 0.0 729
-730 0.0774428844451904 0.0799999999999983 0.0799999999999983 0.0 730
-731 0.0331730842590332 0.0300000000000011 0.0300000000000011 0.0 731
-732 0.0344212055206299 0.0300000000000011 0.0300000000000011 0.0 732
-733 0.0328938961029053 0.039999999999992 0.039999999999992 0.0 733
-734 0.032724142074585 0.0300000000000011 0.0300000000000011 0.0 734
-735 0.0324850082397461 0.0300000000000011 0.0300000000000011 0.0 735
-736 0.031792163848877 0.0300000000000011 0.0300000000000011 0.0 736
-737 0.0799460411071777 0.0799999999999983 0.0799999999999983 0.0 737
-738 0.0354650020599365 0.0400000000000063 0.0400000000000063 0.0 738
-739 0.0343890190124512 0.0299999999999869 0.0299999999999869 0.0 739
-740 0.0328691005706787 0.0400000000000063 0.0400000000000063 0.0 740
-741 0.0328059196472168 0.0300000000000011 0.0300000000000011 0.0 741
-742 0.0325958728790283 0.0300000000000011 0.0300000000000011 0.0 742
-743 0.0322740077972412 0.039999999999992 0.039999999999992 0.0 743
-744 0.0356390476226807 0.0300000000000011 0.0300000000000011 0.0 744
-745 0.0736830234527588 0.0700000000000074 0.0700000000000074 0.0 745
-746 0.0331189632415771 0.0300000000000011 0.0300000000000011 0.0 746
-747 0.0331828594207764 0.0300000000000011 0.0300000000000011 0.0 747
-748 0.0329599380493164 0.0300000000000011 0.0300000000000011 0.0 748
-749 0.0325560569763184 0.0400000000000063 0.0400000000000063 0.0 749
-750 0.0352969169616699 0.0300000000000011 0.0300000000000011 0.0 750
-751 0.0321471691131592 0.0300000000000011 0.0300000000000011 0.0 751
-752 0.0331270694732666 0.039999999999992 0.039999999999992 0.0 752
-753 0.0755550861358643 0.0700000000000074 0.0700000000000074 0.0 753
-754 0.0331971645355225 0.039999999999992 0.039999999999992 0.0 754
-755 0.0333280563354492 0.0300000000000011 0.0300000000000011 0.0 755
-756 0.0349440574645996 0.0300000000000011 0.0300000000000011 0.0 756
-757 0.0327320098876953 0.0400000000000063 0.0400000000000063 0.0 757
-758 0.0337162017822266 0.0300000000000011 0.0300000000000011 0.0 758
-759 0.0320689678192139 0.0299999999999869 0.0299999999999869 0.0 759
-760 0.0315940380096436 0.0300000000000011 0.0300000000000011 0.0 760
-761 0.0736989974975586 0.0800000000000125 0.0800000000000125 0.0 761
-762 0.0331079959869385 0.0299999999999869 0.0299999999999869 0.0 762
-763 0.0434081554412842 0.0400000000000063 0.0400000000000063 0.0 763
-764 0.0350160598754883 0.0400000000000063 0.0400000000000063 0.0 764
-765 0.0333938598632812 0.0299999999999869 0.0299999999999869 0.0 765
-766 0.0325360298156738 0.0400000000000063 0.0400000000000063 0.0 766
-767 0.032012939453125 0.0300000000000011 0.0300000000000011 0.0 767
-768 0.031588077545166 0.0300000000000011 0.0300000000000011 0.0 768
-769 0.0773451328277588 0.0799999999999983 0.0799999999999983 0.0 769
-770 0.0328960418701172 0.0300000000000011 0.0300000000000011 0.0 770
-771 0.0350039005279541 0.0300000000000011 0.0300000000000011 0.0 771
-772 0.0326879024505615 0.039999999999992 0.039999999999992 0.0 772
-773 0.0326569080352783 0.0300000000000011 0.0300000000000011 0.0 773
-774 0.0326459407806396 0.0300000000000011 0.0300000000000011 0.0 774
-775 0.0321180820465088 0.0300000000000011 0.0300000000000011 0.0 775
-776 0.0343871116638184 0.0400000000000063 0.0400000000000063 0.0 776
-777 0.0758569240570068 0.0799999999999983 0.0799999999999983 0.0 777
-778 0.0349979400634766 0.0300000000000011 0.0300000000000011 0.0 778
-779 0.0329880714416504 0.0300000000000011 0.0300000000000011 0.0 779
-780 0.0330510139465332 0.039999999999992 0.039999999999992 0.0 780
-781 0.0328168869018555 0.0300000000000011 0.0300000000000011 0.0 781
-782 0.0347089767456055 0.0300000000000011 0.0300000000000011 0.0 782
-783 0.0322279930114746 0.0400000000000063 0.0400000000000063 0.0 783
-784 0.0752460956573486 0.0699999999999932 0.0699999999999932 0.0 784
-785 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 785
-786 0.0327608585357666 0.0400000000000063 0.0400000000000063 0.0 786
-787 0.032987117767334 0.0300000000000011 0.0300000000000011 0.0 787
-788 0.0328860282897949 0.0299999999999869 0.0299999999999869 0.0 788
-789 0.0421018600463867 0.0500000000000114 0.0500000000000114 0.0 789
-790 0.0354950428009033 0.0300000000000011 0.0300000000000011 0.0 790
-791 0.0326569080352783 0.0299999999999869 0.0299999999999869 0.0 791
-792 0.072484016418457 0.0800000000000125 0.0800000000000125 0.0 792
-793 0.0332272052764893 0.0300000000000011 0.0300000000000011 0.0 793
-794 0.0329101085662842 0.0299999999999869 0.0299999999999869 0.0 794
-795 0.0368521213531494 0.0400000000000063 0.0400000000000063 0.0 795
-796 0.0328860282897949 0.0300000000000011 0.0300000000000011 0.0 796
-797 0.0351109504699707 0.039999999999992 0.039999999999992 0.0 797
-798 0.0322809219360352 0.0300000000000011 0.0300000000000011 0.0 798
-799 0.0317561626434326 0.0300000000000011 0.0300000000000011 0.0 799
-800 0.0744378566741943 0.0799999999999983 0.0799999999999983 0.0 800
-801 0.0369539260864258 0.0300000000000011 0.0300000000000011 0.0 801
-802 0.0338389873504639 0.0400000000000063 0.0400000000000063 0.0 802
-803 0.0353808403015137 0.0300000000000011 0.0300000000000011 0.0 803
-804 0.0346858501434326 0.039999999999992 0.039999999999992 0.0 804
-805 0.0324549674987793 0.0300000000000011 0.0300000000000011 0.0 805
-806 0.0338549613952637 0.0300000000000011 0.0300000000000011 0.0 806
-807 0.0316150188446045 0.0300000000000011 0.0300000000000011 0.0 807
-808 0.0747511386871338 0.0799999999999983 0.0799999999999983 0.0 808
-809 0.0340969562530518 0.0300000000000011 0.0300000000000011 0.0 809
-810 0.0330560207366943 0.0300000000000011 0.0300000000000011 0.0 810
-811 0.0328769683837891 0.0400000000000063 0.0400000000000063 0.0 811
-812 0.0325078964233398 0.0300000000000011 0.0300000000000011 0.0 812
-813 0.0323269367218018 0.0300000000000011 0.0300000000000011 0.0 813
-814 0.0345659255981445 0.039999999999992 0.039999999999992 0.0 814
-815 0.0393409729003906 0.0300000000000011 0.0300000000000011 0.0 815
-816 0.0769538879394531 0.0799999999999983 0.0799999999999983 0.0 816
-817 0.0329430103302002 0.0300000000000011 0.0300000000000011 0.0 817
-818 0.033038854598999 0.0400000000000063 0.0400000000000063 0.0 818
-819 0.0329020023345947 0.0300000000000011 0.0300000000000011 0.0 819
-820 0.0346760749816895 0.0299999999999869 0.0299999999999869 0.0 820
-821 0.0338461399078369 0.0400000000000063 0.0400000000000063 0.0 821
-822 0.0328898429870605 0.0300000000000011 0.0300000000000011 0.0 822
-823 0.0318491458892822 0.0300000000000011 0.0300000000000011 0.0 823
-824 0.0737371444702148 0.0799999999999983 0.0799999999999983 0.0 824
-825 0.032710075378418 0.0300000000000011 0.0300000000000011 0.0 825
-826 0.0330679416656494 0.0300000000000011 0.0300000000000011 0.0 826
-827 0.0366559028625488 0.039999999999992 0.039999999999992 0.0 827
-828 0.0327389240264893 0.0300000000000011 0.0300000000000011 0.0 828
-829 0.0343880653381348 0.0400000000000063 0.0400000000000063 0.0 829
-830 0.0338549613952637 0.0300000000000011 0.0300000000000011 0.0 830
-831 0.0315511226654053 0.0300000000000011 0.0300000000000011 0.0 831
-832 0.0741341114044189 0.0699999999999932 0.0699999999999932 0.0 832
-833 0.0351898670196533 0.0400000000000063 0.0400000000000063 0.0 833
-834 0.0331771373748779 0.0300000000000011 0.0300000000000011 0.0 834
-835 0.0344979763031006 0.039999999999992 0.039999999999992 0.0 835
-836 0.0324339866638184 0.0300000000000011 0.0300000000000011 0.0 836
-837 0.0324251651763916 0.0300000000000011 0.0300000000000011 0.0 837
-838 0.0322468280792236 0.0400000000000063 0.0400000000000063 0.0 838
-839 0.0315029621124268 0.0300000000000011 0.0300000000000011 0.0 839
-840 0.0842621326446533 0.0799999999999983 0.0799999999999983 0.0 840
-841 0.035271167755127 0.039999999999992 0.039999999999992 0.0 841
-842 0.0329780578613281 0.0300000000000011 0.0300000000000011 0.0 842
-843 0.0328261852264404 0.0300000000000011 0.0300000000000011 0.0 843
-844 0.032487154006958 0.0300000000000011 0.0300000000000011 0.0 844
-845 0.0325088500976562 0.0300000000000011 0.0300000000000011 0.0 845
-846 0.0327229499816895 0.0299999999999869 0.0299999999999869 0.0 846
-847 0.0770940780639648 0.0800000000000125 0.0800000000000125 0.0 847
-848 0.0332331657409668 0.0299999999999869 0.0299999999999869 0.0 848
-849 0.0330700874328613 0.0300000000000011 0.0300000000000011 0.0 849
-850 0.0333080291748047 0.0400000000000063 0.0400000000000063 0.0 850
-851 0.0327019691467285 0.0300000000000011 0.0300000000000011 0.0 851
-852 0.0325930118560791 0.0300000000000011 0.0300000000000011 0.0 852
-853 0.0363738536834717 0.039999999999992 0.039999999999992 0.0 853
-854 0.0318160057067871 0.0300000000000011 0.0300000000000011 0.0 854
-855 0.0756251811981201 0.0799999999999983 0.0799999999999983 0.0 855
-856 0.0331168174743652 0.0300000000000011 0.0300000000000011 0.0 856
-857 0.0332381725311279 0.0300000000000011 0.0300000000000011 0.0 857
-858 0.0331380367279053 0.0400000000000063 0.0400000000000063 0.0 858
-859 0.0359609127044678 0.0300000000000011 0.0300000000000011 0.0 859
-860 0.0326030254364014 0.0300000000000011 0.0300000000000011 0.0 860
-861 0.0326559543609619 0.039999999999992 0.039999999999992 0.0 861
-862 0.0313940048217773 0.0300000000000011 0.0300000000000011 0.0 862
-863 0.0721480846405029 0.0700000000000074 0.0700000000000074 0.0 863
-864 0.0329670906066895 0.0300000000000011 0.0300000000000011 0.0 864
-865 0.0358521938323975 0.039999999999992 0.039999999999992 0.0 865
-866 0.0417828559875488 0.0400000000000063 0.0400000000000063 0.0 866
-867 0.0335261821746826 0.039999999999992 0.039999999999992 0.0 867
-868 0.032412052154541 0.0300000000000011 0.0300000000000011 0.0 868
-869 0.0315959453582764 0.0300000000000011 0.0300000000000011 0.0 869
-870 0.0313148498535156 0.0300000000000011 0.0300000000000011 0.0 870
-871 0.0756919384002686 0.0799999999999983 0.0799999999999983 0.0 871
-872 0.033372163772583 0.0300000000000011 0.0300000000000011 0.0 872
-873 0.0342988967895508 0.0300000000000011 0.0300000000000011 0.0 873
-874 0.0328269004821777 0.039999999999992 0.039999999999992 0.0 874
-875 0.0327079296112061 0.0300000000000011 0.0300000000000011 0.0 875
-876 0.0325889587402344 0.0300000000000011 0.0300000000000011 0.0 876
-877 0.0320539474487305 0.0300000000000011 0.0300000000000011 0.0 877
-878 0.0315239429473877 0.0400000000000063 0.0400000000000063 0.0 878
-879 0.0760519504547119 0.0699999999999932 0.0699999999999932 0.0 879
-880 0.0334291458129883 0.0300000000000011 0.0300000000000011 0.0 880
-881 0.0349709987640381 0.0400000000000063 0.0400000000000063 0.0 881
-882 0.0328500270843506 0.0300000000000011 0.0300000000000011 0.0 882
-883 0.0326099395751953 0.0300000000000011 0.0300000000000011 0.0 883
-884 0.0326600074768066 0.039999999999992 0.039999999999992 0.0 884
-885 0.0347640514373779 0.0300000000000011 0.0300000000000011 0.0 885
-886 0.0317268371582031 0.0300000000000011 0.0300000000000011 0.0 886
-887 0.0741100311279297 0.0799999999999983 0.0799999999999983 0.0 887
-888 0.0328361988067627 0.0300000000000011 0.0300000000000011 0.0 888
-889 0.0330181121826172 0.0300000000000011 0.0300000000000011 0.0 889
-890 0.0327560901641846 0.0400000000000063 0.0400000000000063 0.0 890
-891 0.0344109535217285 0.0299999999999869 0.0299999999999869 0.0 891
-892 0.0412158966064453 0.0400000000000063 0.0400000000000063 0.0 892
-893 0.03265380859375 0.0400000000000063 0.0400000000000063 0.0 893
-894 0.0321509838104248 0.0299999999999869 0.0299999999999869 0.0 894
-895 0.0741260051727295 0.0700000000000074 0.0700000000000074 0.0 895
-896 0.0328559875488281 0.0300000000000011 0.0300000000000011 0.0 896
-897 0.0330810546875 0.039999999999992 0.039999999999992 0.0 897
-898 0.0366909503936768 0.0300000000000011 0.0300000000000011 0.0 898
-899 0.0327630043029785 0.0400000000000063 0.0400000000000063 0.0 899
-900 0.0326259136199951 0.0300000000000011 0.0300000000000011 0.0 900
-901 0.031965970993042 0.0300000000000011 0.0300000000000011 0.0 901
-902 0.0730900764465332 0.0699999999999932 0.0699999999999932 0.0 902
-903 0.0331590175628662 0.0400000000000063 0.0400000000000063 0.0 903
-904 0.0365490913391113 0.0300000000000011 0.0300000000000011 0.0 904
-905 0.0330300331115723 0.039999999999992 0.039999999999992 0.0 905
-906 0.0332710742950439 0.0300000000000011 0.0300000000000011 0.0 906
-907 0.0344429016113281 0.0300000000000011 0.0300000000000011 0.0 907
-908 0.032494068145752 0.0400000000000063 0.0400000000000063 0.0 908
-909 0.0318870544433594 0.0300000000000011 0.0300000000000011 0.0 909
-910 0.0748629570007324 0.0699999999999932 0.0699999999999932 0.0 910
-911 0.0334439277648926 0.0400000000000063 0.0400000000000063 0.0 911
-912 0.0351619720458984 0.0300000000000011 0.0300000000000011 0.0 912
-913 0.0328991413116455 0.039999999999992 0.039999999999992 0.0 913
-914 0.0326261520385742 0.0300000000000011 0.0300000000000011 0.0 914
-915 0.0323889255523682 0.0300000000000011 0.0300000000000011 0.0 915
-916 0.0323429107666016 0.0300000000000011 0.0300000000000011 0.0 916
-917 0.0321781635284424 0.039999999999992 0.039999999999992 0.0 917
-918 0.0845181941986084 0.0800000000000125 0.0800000000000125 0.0 918
-919 0.0327539443969727 0.0299999999999869 0.0299999999999869 0.0 919
-920 0.0328059196472168 0.0300000000000011 0.0300000000000011 0.0 920
-921 0.0324711799621582 0.0400000000000063 0.0400000000000063 0.0 921
-922 0.0323400497436523 0.0300000000000011 0.0300000000000011 0.0 922
-923 0.0321018695831299 0.0300000000000011 0.0300000000000011 0.0 923
-924 0.0361039638519287 0.039999999999992 0.039999999999992 0.0 924
-925 0.0316181182861328 0.0300000000000011 0.0300000000000011 0.0 925
-926 0.0748419761657715 0.0700000000000074 0.0700000000000074 0.0 926
-927 0.0332598686218262 0.039999999999992 0.039999999999992 0.0 927
-928 0.0332441329956055 0.0300000000000011 0.0300000000000011 0.0 928
-929 0.0330359935760498 0.0300000000000011 0.0300000000000011 0.0 929
-930 0.0358648300170898 0.0400000000000063 0.0400000000000063 0.0 930
-931 0.0327050685882568 0.0300000000000011 0.0300000000000011 0.0 931
-932 0.0349700450897217 0.039999999999992 0.039999999999992 0.0 932
-933 0.0338780879974365 0.0300000000000011 0.0300000000000011 0.0 933
-934 0.0738511085510254 0.0700000000000074 0.0700000000000074 0.0 934
-935 0.0332021713256836 0.039999999999992 0.039999999999992 0.0 935
-936 0.0359549522399902 0.0300000000000011 0.0300000000000011 0.0 936
-937 0.0331430435180664 0.0400000000000063 0.0400000000000063 0.0 937
-938 0.0340991020202637 0.0300000000000011 0.0300000000000011 0.0 938
-939 0.0326049327850342 0.0299999999999869 0.0299999999999869 0.0 939
-940 0.0325651168823242 0.0400000000000063 0.0400000000000063 0.0 940
-941 0.0317420959472656 0.0300000000000011 0.0300000000000011 0.0 941
-942 0.0775351524353027 0.0799999999999983 0.0799999999999983 0.0 942
-943 0.0417890548706055 0.0400000000000063 0.0400000000000063 0.0 943
-944 0.0358331203460693 0.0300000000000011 0.0300000000000011 0.0 944
-945 0.0328278541564941 0.039999999999992 0.039999999999992 0.0 945
-946 0.0325720310211182 0.0300000000000011 0.0300000000000011 0.0 946
-947 0.0324339866638184 0.0300000000000011 0.0300000000000011 0.0 947
-948 0.0318090915679932 0.0300000000000011 0.0300000000000011 0.0 948
-949 0.0755469799041748 0.0799999999999983 0.0799999999999983 0.0 949
-950 0.0346879959106445 0.0300000000000011 0.0300000000000011 0.0 950
-951 0.0329141616821289 0.039999999999992 0.039999999999992 0.0 951
-952 0.0330381393432617 0.0300000000000011 0.0300000000000011 0.0 952
-953 0.0330090522766113 0.0300000000000011 0.0300000000000011 0.0 953
-954 0.0340299606323242 0.0400000000000063 0.0400000000000063 0.0 954
-955 0.0325748920440674 0.0300000000000011 0.0300000000000011 0.0 955
-956 0.0356650352478027 0.039999999999992 0.039999999999992 0.0 956
-957 0.0749011039733887 0.0700000000000074 0.0700000000000074 0.0 957
-958 0.0347681045532227 0.0300000000000011 0.0300000000000011 0.0 958
-959 0.0330829620361328 0.039999999999992 0.039999999999992 0.0 959
-960 0.0334758758544922 0.0300000000000011 0.0300000000000011 0.0 960
-961 0.0329201221466064 0.0300000000000011 0.0300000000000011 0.0 961
-962 0.0358650684356689 0.0400000000000063 0.0400000000000063 0.0 962
-963 0.0327301025390625 0.0300000000000011 0.0300000000000011 0.0 963
-964 0.03354811668396 0.039999999999992 0.039999999999992 0.0 964
-965 0.0745160579681396 0.0700000000000074 0.0700000000000074 0.0 965
-966 0.0329270362854004 0.0300000000000011 0.0300000000000011 0.0 966
-967 0.0329809188842773 0.039999999999992 0.039999999999992 0.0 967
-968 0.0393757820129395 0.0300000000000011 0.0300000000000011 0.0 968
-969 0.0380401611328125 0.0300000000000011 0.0300000000000011 0.0 969
-970 0.0357730388641357 0.039999999999992 0.039999999999992 0.0 970
-971 0.0322329998016357 0.0300000000000011 0.0300000000000011 0.0 971
-972 0.0315341949462891 0.0300000000000011 0.0300000000000011 0.0 972
-973 0.0736370086669922 0.0799999999999983 0.0799999999999983 0.0 973
-974 0.0357208251953125 0.0300000000000011 0.0300000000000011 0.0 974
-975 0.0331871509552002 0.0400000000000063 0.0400000000000063 0.0 975
-976 0.0338621139526367 0.0300000000000011 0.0300000000000011 0.0 976
-977 0.03261399269104 0.0299999999999869 0.0299999999999869 0.0 977
-978 0.0324549674987793 0.0300000000000011 0.0300000000000011 0.0 978
-979 0.0323319435119629 0.0400000000000063 0.0400000000000063 0.0 979
-980 0.0314400196075439 0.0300000000000011 0.0300000000000011 0.0 980
-981 0.0762598514556885 0.0699999999999932 0.0699999999999932 0.0 981
-982 0.0347981452941895 0.0400000000000063 0.0400000000000063 0.0 982
-983 0.0366230010986328 0.0400000000000063 0.0300000000000011 0.01 983
-984 0.0328900814056396 0.039999999999992 0.039999999999992 0.0 984
-985 0.032588005065918 0.0300000000000011 0.0300000000000011 0.0 985
-986 0.0326781272888184 0.0300000000000011 0.0300000000000011 0.0 986
-987 0.0319411754608154 0.0300000000000011 0.0300000000000011 0.0 987
-988 0.0342800617218018 0.0400000000000063 0.0400000000000063 0.0 988
-989 0.0760009288787842 0.0699999999999932 0.0699999999999932 0.0 989
-990 0.0328078269958496 0.0400000000000063 0.0400000000000063 0.0 990
-991 0.0330369472503662 0.0300000000000011 0.0300000000000011 0.0 991
-992 0.0326659679412842 0.0300000000000011 0.0300000000000011 0.0 992
-993 0.0325169563293457 0.0300000000000011 0.0300000000000011 0.0 993
-994 0.0384469032287598 0.039999999999992 0.039999999999992 0.0 994
-995 0.035956859588623 0.0400000000000063 0.0400000000000063 0.0 995
-996 0.075498104095459 0.0699999999999932 0.0699999999999932 0.0 996
-997 0.0330910682678223 0.0300000000000011 0.0300000000000011 0.0 997
-998 0.0327069759368896 0.0300000000000011 0.0300000000000011 0.0 998
-999 0.0329201221466064 0.0300000000000011 0.0300000000000011 0.0 999
-1000 0.0352790355682373 0.039999999999992 0.039999999999992 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log
deleted file mode 100644
index f349db14e..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log
+++ /dev/null
@@ -1,82 +0,0 @@
-========================== 2009-04-01T16:46:56 CEST ===========================
-Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux].
-Running 'ParserBenchmarkRails' for 1000 iterations/method (compare_time=real)
-===============================================================================
-
-This first run is only for warmup.
-ParserBenchmarkRails#parser:
- real total user system
-sum 38.690086126 38.620000000 38.610000000 0.010000000
-min 0.031255007 0.030000000 0.030000000 0.000000000
-std- 0.025022178 0.024277709 0.024265187 -0.000306228
-mean 0.038690086 0.038620000 0.038610000 0.000010000
-std+ 0.052357994 0.052962291 0.052954813 0.000326228
-max 0.083594084 0.090000000 0.090000000 0.010000000
-std 0.013667908 0.014342291 0.014344813 0.000316228
-std% 35.326641197 37.136951469 37.153104057 3162.277660168
-harm 0.035964441 0.035345750 0.035335342 nan
-geo 0.037048388 0.036703287 0.036692729 0.000000000
-q1 0.032610178 0.030000000 0.030000000 0.000000000
-med 0.033129930 0.030000000 0.030000000 0.000000000
-q3 0.035388470 0.040000000 0.040000000 0.000000000
- 1000 25.84641 0.038690086
- calls calls/sec secs/call
-
- 0.08098 -|*
- 0.07574 -|*****
- 0.07051 -|**
- 0.06528 -|
- 0.06004 -|
- 0.05481 -|
- 0.04957 -|
- 0.04434 -|*
- 0.03911 -|***
- 0.03387 -|**************************************************
-
-Outliers detected with box plot algo (median=0.03313, iqr=0.00278, factor=3.00):
-high=47 very_high=124
-
-Ljung-Box statistics: q=5276.52020 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-ParserBenchmarkRails#parser:
- real total user system
-sum 38.814780235 38.730000000 38.710000000 0.020000000
-min 0.031314850 0.030000000 0.030000000 0.000000000
-std- 0.024801114 0.023975177 0.023956914 -0.000426990
-mean 0.038814780 0.038730000 0.038710000 0.000020000
-std+ 0.052828447 0.053484823 0.053463086 0.000466990
-max 0.085337162 0.090000000 0.090000000 0.010000000
-std 0.014013666 0.014754823 0.014753086 0.000446990
-std% 36.103943796 38.096625621 38.111821850 2234.948544149
-harm 0.035975867 0.035320781 0.035304155 nan
-geo 0.037101026 0.036725170 0.036706415 0.000000000
-q1 0.032611191 0.030000000 0.030000000 0.000000000
-med 0.033082008 0.030000000 0.030000000 0.000000000
-q3 0.035308182 0.040000000 0.040000000 0.000000000
- 1000 25.76338 0.038814780
- calls calls/sec secs/call
-
- 0.08264 -|*
- 0.07723 -|***
- 0.07183 -|****
- 0.06643 -|
- 0.06103 -|
- 0.05562 -|
- 0.05022 -|
- 0.04482 -|
- 0.03942 -|**
- 0.03402 -|**************************************************
-
-Outliers detected with box plot algo (median=0.03308, iqr=0.00270, factor=3.00):
-high=43 very_high=127
-
-Ljung-Box statistics: q=3451.96535 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
-========================== 2009-04-01T16:48:17 CEST ===========================
-
-Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkRails#parser.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkRails#parser-autocorrelation.dat'.
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat
deleted file mode 100644
index f32d17f64..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat
+++ /dev/null
@@ -1,1000 +0,0 @@
-#lag autocorrelation
-1 1.0
-2 -0.0162844496545126
-3 -0.0217599649154442
-4 -0.0158858309903125
-5 -0.0200808613960338
-6 -0.0259529053941171
-7 -0.0301975414696179
-8 -0.0250675870796551
-9 -0.0285985946623563
-10 -0.0307680893851068
-11 -0.0288265198488383
-12 -0.0271571829024007
-13 -0.0301250298936937
-14 -0.0226181132137933
-15 -0.0294060805772707
-16 -0.0337045155176462
-17 -0.0318194303001094
-18 -0.0292065217707409
-19 -0.0302440574139168
-20 -0.0358556403201638
-21 -0.0277391993235684
-22 -0.0302464277108834
-23 -0.0324555396059655
-24 -0.0281812881852202
-25 -0.022546962678309
-26 -0.0303404504420409
-27 -0.0284646539775073
-28 -0.028171618962038
-29 -0.028565092958004
-30 -0.0291690975621738
-31 -0.0281712395665202
-32 -0.0238379726807203
-33 -0.0294236975427878
-34 -0.0208882165043777
-35 -0.0209638384059497
-36 -0.0161683101478742
-37 -0.0198997973165107
-38 0.435257874984686
-39 0.458604874110641
-40 0.0237621756843474
-41 -0.0234662943892799
-42 -0.0132052112478708
-43 -0.0232550385773748
-44 -0.0265177529080711
-45 -0.0295042353148468
-46 -0.0248888514316335
-47 -0.0267548816775851
-48 -0.0301945196949619
-49 -0.0256866572019894
-50 -0.0261353739728522
-51 -0.0245073925246022
-52 -0.0267569882760944
-53 -0.0290607941928704
-54 -0.030612533159521
-55 -0.0324276179436348
-56 -0.0294828176269951
-57 -0.0302074451537584
-58 -0.0308924549200688
-59 -0.0272193925170758
-60 -0.0310943839021242
-61 -0.0282313865089381
-62 -0.0273610010809688
-63 -0.0250425898280312
-64 -0.0269825367863249
-65 -0.030293343792881
-66 -0.0285829676042798
-67 -0.0259669504450748
-68 -0.028423496235617
-69 -0.0286177493293173
-70 -0.0239113501418138
-71 -0.0226730211754719
-72 -0.0216274261753708
-73 -0.0175668930237053
-74 -0.016987706219544
-75 0.281860410751591
-76 0.25297384526533
-77 0.306701827698567
-78 0.0194414665764478
-79 -0.0243796783451221
-80 -0.0146952129609066
-81 -0.0229107323358625
-82 -0.02476592170182
-83 -0.0262150166126129
-84 -0.0233100425521956
-85 -0.0263455380004048
-86 -0.0253912832942502
-87 -0.0245622723440493
-88 -0.0225180917608497
-89 -0.0292400873158552
-90 -0.0255215645749941
-91 -0.02586826799364
-92 -0.0315849501291156
-93 -0.0319172083894574
-94 -0.0270097346640797
-95 -0.0278372423315524
-96 -0.0306627817548168
-97 -0.0258127345919013
-98 -0.0256340599415291
-99 -0.0270400681439884
-100 -0.0271863267200993
-101 -0.0223938908865392
-102 -0.0269881932444538
-103 -0.0286873034752439
-104 -0.0268085508356207
-105 -0.0250531313567446
-106 -0.0272655637793525
-107 -0.025337879180265
-108 -0.0187629329024022
-109 -0.0223207452723449
-110 -0.0185411706942619
-111 -0.0173591745979572
-112 0.212695002726406
-113 0.176100874201248
-114 0.181136796368959
-115 0.217985852640763
-116 0.0189775496631967
-117 -0.022070943088181
-118 -0.0198858953377023
-119 -0.0228614172431068
-120 -0.0222026156678026
-121 -0.026520195666479
-122 -0.0234557540286227
-123 -0.0222031583717324
-124 -0.0222512221835737
-125 -0.021957746397543
-126 -0.0268087376735115
-127 -0.0273093034119188
-128 -0.0245103124601919
-129 -0.0263347996406397
-130 -0.0312278911250281
-131 -0.0305253475957555
-132 -0.0261963547332742
-133 -0.0274617303870749
-134 -0.0243124109128202
-135 -0.0262235240356464
-136 -0.0239085429783869
-137 -0.0287564527494295
-138 -0.0249876754449911
-139 -0.0197254570216898
-140 -0.0266321665979349
-141 -0.0266120249498159
-142 -0.0248056589461695
-143 -0.0221257923724317
-144 -0.024933311620115
-145 -0.0196549868192828
-146 -0.0207328295283175
-147 -0.0200920805093202
-148 -0.0173063409154936
-149 0.175654369820573
-150 0.0996760311141833
-151 0.142600408151497
-152 0.175452601030937
-153 0.135092911757026
-154 0.015666937752102
-155 -0.0206532136473774
-156 -0.0225660207506427
-157 -0.0220914796170182
-158 -0.0212748341146881
-159 -0.0211831500010699
-160 -0.0199475712567065
-161 -0.0198090360921562
-162 -0.023406680899725
-163 -0.0238338433694836
-164 -0.0256046135139069
-165 -0.0242954498172123
-166 -0.0258660266004111
-167 -0.0269522804569596
-168 -0.0297189079034543
-169 -0.0286038809350082
-170 -0.0243084923873978
-171 -0.0257061323195295
-172 -0.0223670193406507
-173 -0.0230581197957092
-174 -0.0259009025367238
-175 -0.0257560518519552
-176 -0.023090387902458
-177 -0.0203272749388722
-178 -0.0249609826618749
-179 -0.0273749728570153
-180 -0.0232630581935224
-181 -0.0184293362184845
-182 -0.0227584354744901
-183 -0.0189661792281422
-184 -0.0231761259199879
-185 -0.0160634507453316
-186 0.135019288045276
-187 0.0659826079670161
-188 0.135226742645858
-189 0.0605819921567246
-190 0.212733971580529
-191 0.0594662500140067
-192 0.0196656779913871
-193 -0.0198404313214719
-194 -0.0234794798625044
-195 -0.020228110441232
-196 -0.0239711309581977
-197 -0.0213996457420545
-198 -0.0198198390682184
-199 -0.01837620236681
-200 -0.0252904949340885
-201 -0.0209512502626924
-202 -0.0221289412896572
-203 -0.027427908823154
-204 -0.0239458508129429
-205 -0.0247739743326578
-206 -0.0286549975885985
-207 -0.0274257626339078
-208 -0.0209339353182737
-209 -0.0217393583916566
-210 -0.0210676960785699
-211 -0.0244413756252707
-212 -0.0230553337146913
-213 -0.0249257698225569
-214 -0.0209961742884786
-215 -0.0187589223013789
-216 -0.0231441227112562
-217 -0.0256128148841961
-218 -0.0189996873737005
-219 -0.0186032704051841
-220 -0.024896664851184
-221 -0.0154586003532082
-222 -0.016622451190913
-223 0.10528876877612
-224 0.0616792976302413
-225 0.105381487366677
-226 0.0698781422585297
-227 0.0526859362556473
-228 0.252676201792791
-229 -0.0158777502042575
-230 0.0182465167560402
-231 -0.0189176416281867
-232 -0.0223947199370044
-233 -0.0187514827185257
-234 -0.0221421724471967
-235 -0.0189743029127782
-236 -0.0169132380201002
-237 -0.0244680755831848
-238 -0.0218734587520481
-239 -0.0186581914256442
-240 -0.026130481429307
-241 -0.0259336502285975
-242 -0.0243902837001253
-243 -0.0237554283001736
-244 -0.0260009623695832
-245 -0.0207407789914843
-246 -0.0195359028544637
-247 -0.0255947955165555
-248 -0.0192742650096326
-249 -0.02317092217707
-250 -0.0220804794353722
-251 -0.0231629589394634
-252 -0.01815715732966
-253 -0.0168380962328354
-254 -0.0240542649472067
-255 -0.0203501818767696
-256 -0.0171903409693322
-257 -0.0223563828072372
-258 -0.019940801207438
-259 -0.0169291109293721
-260 0.0608679690137956
-261 0.0647081802938391
-262 0.100717554509044
-263 0.0239520468414546
-264 0.0698991274638046
-265 0.0905559637290508
-266 0.178937593759438
-267 0.0219556620146547
-268 -0.0179147413001344
-269 -0.0178917963661612
-270 -0.0182758940871145
-271 -0.0193697306175885
-272 -0.0204671858114412
-273 -0.0171408579409368
-274 -0.0182409872271859
-275 -0.0211824035120345
-276 -0.0235000843866101
-277 -0.0202924958876639
-278 -0.0248505379989764
-279 -0.0220226888126351
-280 -0.0245762806223724
-281 -0.0252042782672907
-282 -0.0216801171879857
-283 -0.0210832689857307
-284 -0.0192213765705103
-285 -0.0220158312276208
-286 -0.0210439300781706
-287 -0.0209875936956392
-288 -0.0206630619760563
-289 -0.0216178400849402
-290 -0.0196909009290242
-291 -0.0174466524982222
-292 -0.0194381489522717
-293 -0.0214825111756293
-294 -0.0174953699462574
-295 -0.022683312446492
-296 -0.0180848133159409
-297 0.0254210486852796
-298 0.0654897828406648
-299 0.0986617374019184
-300 0.0211653698985848
-301 0.03519273754644
-302 0.0994229074199349
-303 0.0569927637089909
-304 0.144208154176788
-305 0.025634547369068
-306 -0.0192573217261146
-307 -0.0134291320771703
-308 -0.0186225883596377
-309 -0.0192924485153545
-310 -0.0212788468915268
-311 -0.0142437809504701
-312 -0.0164846225770394
-313 -0.0230149302918458
-314 -0.0226862925961795
-315 -0.0182027935965825
-316 -0.0223705185857763
-317 -0.0216288175818581
-318 -0.023788812144948
-319 -0.0211845254108688
-320 -0.0222450219207216
-321 -0.0187600056472826
-322 -0.0187902396176198
-323 -0.0195634679662719
-324 -0.0194501685935753
-325 -0.0190333705450752
-326 -0.0204687388385914
-327 -0.0200297119812042
-328 -0.0157733409782519
-329 -0.0164084747060388
-330 -0.0203726921633815
-331 -0.0190072727071644
-332 -0.018178093048503
-333 -0.0159556448940802
-334 -0.013791115173629
-335 0.066803434121925
-336 0.0987477853719105
-337 0.0244839447881098
-338 0.031202350625353
-339 0.0196479023204289
-340 0.141228694216934
-341 0.0175097275718119
-342 0.105954014939689
-343 0.0253759965520281
-344 -0.0116344384079018
-345 -0.0169720879403278
-346 -0.0193914989969224
-347 -0.019089553717436
-348 -0.0156466666300242
-349 -0.0156456435188142
-350 -0.0181150256079739
-351 -0.0223467109479219
-352 -0.0214801527438239
-353 -0.019082414276624
-354 -0.0178557951992504
-355 -0.0228090603341919
-356 -0.0204157042896649
-357 -0.0221410379160091
-358 -0.0199425390855694
-359 -0.018118375890382
-360 -0.0150454629858717
-361 -0.0183129793049915
-362 -0.0204645202101881
-363 -0.0174866608721183
-364 -0.0154096032136416
-365 -0.0179571796427601
-366 -0.0134888272478049
-367 -0.0176851479177383
-368 -0.0193002648975602
-369 -0.0189078544862062
-370 -0.0144320773947494
-371 -0.011260111407965
-372 0.0215572902035114
-373 0.100524914108148
-374 0.0219084872557524
-375 0.0354856193633486
-376 0.0229331908137013
-377 0.0626022532746132
-378 0.0969282134458387
-379 0.0189295482330605
-380 0.0617228180411101
-381 0.0425011894350961
-382 -0.0181588301030469
-383 -0.0171392718695313
-384 -0.0178324205119472
-385 -0.0156705733083666
-386 -0.0146663905947814
-387 -0.0173238224981501
-388 -0.0182073556277454
-389 -0.0204929470007114
-390 -0.0197959652809142
-391 -0.0178487074910014
-392 -0.0191264027449998
-393 -0.0190642154579731
-394 -0.0203166425576961
-395 -0.0188935352488649
-396 -0.0201224460748975
-397 -0.0141844683481906
-398 -0.0139898462786534
-399 -0.0198574924165857
-400 -0.0193966985699962
-401 -0.0164995946916847
-402 -0.0117403653932513
-403 -0.0158736541749091
-404 -0.0156974457240632
-405 -0.0181167763150603
-406 -0.0166788566307347
-407 -0.0180975807807039
-408 -0.0102853501517902
-409 -0.0153437162204268
-410 0.0979710078754703
-411 0.021440871598228
-412 0.0371454198455733
-413 0.0253571102027273
-414 0.0227276443059152
-415 0.101915236805497
-416 0.0635405858848997
-417 0.0221661378891733
-418 0.0270996559475876
-419 0.0299928379379863
-420 -0.0177873081118276
-421 -0.0176051191151391
-422 -0.0117281303593379
-423 -0.013306366759538
-424 -0.0189331445465995
-425 -0.015865418271051
-426 -0.0158088029122447
-427 -0.0187419731224742
-428 -0.0196315339939659
-429 -0.0154861746215526
-430 -0.0178360876528894
-431 -0.0193319397318428
-432 -0.0177297199409179
-433 -0.0183554889687674
-434 -0.0184208823533688
-435 -0.0122396577357641
-436 -0.0123492917667745
-437 -0.0175439953526604
-438 -0.0186111019818843
-439 -0.00971961709959576
-440 -0.0143165389296264
-441 -0.0164005922843576
-442 -0.0132806214338558
-443 -0.0153897804907211
-444 -0.0149226610955752
-445 -0.0161580725559834
-446 -0.0117152404534544
-447 0.0615441203316674
-448 0.0305601601558433
-449 0.0350768852591798
-450 0.026542742159402
-451 0.0220127678478309
-452 0.0626392669570081
-453 0.0651304401691263
-454 0.066454641622587
-455 0.0262150734837409
-456 -0.00708907991883236
-457 0.0224899268420003
-458 -0.0167773922489159
-459 -0.0122552342075114
-460 -0.00995490362784316
-461 -0.0177867736928084
-462 -0.018356900570592
-463 -0.0148615016520588
-464 -0.0148993799153167
-465 -0.0174924308469937
-466 -0.0139062884527871
-467 -0.0169155699762039
-468 -0.0176151358623509
-469 -0.018529629596926
-470 -0.0171234732753041
-471 -0.0168099527879603
-472 -0.0156260281448611
-473 -0.00797509847063728
-474 -0.0133340343499158
-475 -0.0168972023036313
-476 -0.0113479057717735
-477 -0.011961189414667
-478 -0.0152906312825423
-479 -0.0155644967932215
-480 -0.014521215308577
-481 -0.0128622749529332
-482 -0.0141888481401611
-483 -0.0161851374362205
-484 0.0249171103679042
-485 0.0252660269585891
-486 0.04058752667661
-487 0.0258186659046098
-488 0.0275225862715478
-489 0.0600609383170762
-490 0.0261628314767615
-491 0.0691832852264942
-492 0.0694273292329222
-493 -0.0138918138869676
-494 0.0281497919118445
-495 -0.0119297582637103
-496 -0.012445722104394
-497 -0.0152365517205078
-498 -0.0119682770076481
-499 -0.0168102415511826
-500 -0.0132602321806542
-501 -0.0162749170085761
-502 -0.0157874247447598
-503 -0.0143314681097962
-504 -0.0151373301279301
-505 -0.0162736515060562
-506 -0.0170997245763158
-507 -0.0169869002644868
-508 -0.0154802036412146
-509 -0.013854038240204
-510 -0.0151485070183504
-511 -0.00869753773999478
-512 -0.0140737135993086
-513 -0.0107650436900842
-514 -0.0132962323606625
-515 -0.0136429601231209
-516 -0.0155057052143115
-517 -0.0134332443796962
-518 -0.0123129109820222
-519 -0.0142180018449239
-520 -0.0150177576005828
-521 -0.0161252950528183
-522 0.0264250568660815
-523 0.0408783547796429
-524 0.031194610084782
-525 0.0288728641454938
-526 0.0641676357746677
-527 0.0239853005273055
-528 0.0300072680816552
-529 0.0736945294998491
-530 0.028012956538805
-531 0.0259732719006342
-532 -0.00990928630211568
-533 -0.0087387605842169
-534 -0.0137746654626445
-535 -0.0141412876283256
-536 -0.010029400862279
-537 -0.0150007749725246
-538 -0.0121537714685441
-539 -0.0144839491934252
-540 -0.0137950679588151
-541 -0.0155551392121605
-542 -0.0128911409577839
-543 -0.0152961676840741
-544 -0.0161369826243907
-545 -0.0148527760929147
-546 -0.013870773562618
-547 -0.0137226194734097
-548 -0.0113656379568685
-549 -0.00845176980813718
-550 -0.00933414448879775
-551 -0.0133281147011412
-552 -0.0122165348746803
-553 -0.0127303042014063
-554 -0.0128365256419083
-555 -0.0108554430140539
-556 -0.0130979026563391
-557 -0.0146601295923265
-558 -0.0142350683827201
-559 -0.0142543119821695
-560 0.0401428501979482
-561 0.0303680401593431
-562 0.0331394093682309
-563 0.0624790224369076
-564 0.0289179010523467
-565 0.0269736807010873
-566 0.0294760499995686
-567 0.0747760714226703
-568 -0.00997931599998069
-569 0.0266265362948006
-570 -0.00721129513546175
-571 -0.0127302032302545
-572 -0.0136267162889966
-573 -0.0142066353702017
-574 -0.00991164196188114
-575 -0.00996166830564141
-576 -0.0131573176468314
-577 -0.011434640474236
-578 -0.0148706383443339
-579 -0.0134129396964773
-580 -0.0113895405779604
-581 -0.0153189154780471
-582 -0.0150199426352393
-583 -0.0124159111813235
-584 -0.0113435779166304
-585 -0.00971798266945597
-586 -0.0123095479872052
-587 -0.00269803517441434
-588 -0.0127678761964892
-589 -0.0119102487047385
-590 -0.0115043060345689
-591 -0.0106658386617928
-592 -0.0106600448522206
-593 -0.011659738958058
-594 -0.01106663155357
-595 -0.0120386853981255
-596 -0.0127481791971609
-597 -0.00537363830084228
-598 0.0314689202072348
-599 0.032654353162099
-600 0.0639978451412954
-601 0.0283236694256126
-602 0.0317693531084274
-603 0.027542761382292
-604 0.02698217718116
-605 0.0361622659750207
-606 0.0320247155873757
-607 -0.00813391858463189
-608 -0.0089593887672382
-609 -0.0119010871906848
-610 -0.0124880990128273
-611 -0.0121364351320394
-612 -0.00971670182824936
-613 -0.0102177605462013
-614 -0.00898879705064074
-615 -0.013228009191572
-616 -0.012444080731119
-617 -0.0125819657984578
-618 -0.0106457926520048
-619 -0.0137483281342092
-620 -0.0135504808411789
-621 -0.0114612446080959
-622 -0.00821287310238534
-623 -0.0104378096847016
-624 -0.00593940096538122
-625 -0.00945814044610632
-626 -0.0101588782962685
-627 -0.0111243964828339
-628 -0.00950644868084363
-629 -0.00843830240019815
-630 -0.0122240327224205
-631 -0.0121911767968013
-632 -0.0106320087647656
-633 -0.0091538953720945
-634 -0.00833412226908421
-635 -0.00479924172227301
-636 0.0335905043465549
-637 0.0695170041831408
-638 0.0270790255635657
-639 0.0321106733648098
-640 0.0313560382377176
-641 0.0282951882582407
-642 0.0286246187371558
-643 -0.0063978013638528
-644 0.0304346790629898
-645 -0.0101048058759809
-646 -0.00730849974907403
-647 -0.010438994695384
-648 -0.0112449830718235
-649 -0.0113664024129399
-650 -0.00608318090180963
-651 -0.00840928737010642
-652 -0.0108644455614179
-653 -0.010794161792753
-654 -0.0114845408302525
-655 -0.0109919991005556
-656 -0.00951218627321188
-657 -0.0117973727840752
-658 -0.0116097431098058
-659 -0.00670996120713619
-660 -0.0087566923862707
-661 -0.00768893771119313
-662 -0.00792227368859181
-663 -0.0072108108823534
-664 -0.00863418502611649
-665 -0.00848535095588438
-666 -0.00750079906528092
-667 -0.00902829779223548
-668 -0.0104029286615084
-669 -0.00972615613411735
-670 -0.00909686229570264
-671 -0.00489514770930345
-672 -0.00695727933803365
-673 -0.00291923866250643
-674 0.0692585752006358
-675 0.0338324022772704
-676 0.0312432314045003
-677 0.0301206988202449
-678 0.0318944076704347
-679 0.0308282822415121
-680 -0.00918999100874598
-681 0.0315959820198552
-682 -0.00790274938593563
-683 -0.00905781884326524
-684 -0.00978094259623583
-685 -0.00713889275972127
-686 -0.00961735482798763
-687 -0.00462928907883874
-688 -0.00708992015115961
-689 -0.0103894616795413
-690 -0.00975021468154266
-691 -0.0104107842274988
-692 -0.00992064479267111
-693 -0.0101176695314485
-694 -0.0104463991054629
-695 -0.00746960217815067
-696 -0.00654218027790495
-697 -0.0072389149982618
-698 -0.00618599001631964
-699 -0.00987786436517789
-700 -0.00673370918278097
-701 -0.00741759762031304
-702 -0.00541549527991575
-703 -0.00791781857083014
-704 -0.00787381692952382
-705 -0.00794395001729855
-706 -0.00931768673974245
-707 -0.00885678465821695
-708 -0.0052821815238511
-709 -0.00521693921004783
-710 -0.00576093393541424
-711 0.0319052243530813
-712 0.0335565990727355
-713 0.0359823614765673
-714 0.0310776016839443
-715 0.0324813323954347
-716 0.0341278653693179
-717 -0.00771207564784067
-718 0.0276493611582263
-719 -0.00348763960636761
-720 -0.00758712167000528
-721 -0.00857064851604708
-722 -0.00851623359127258
-723 -0.00860306547563313
-724 -0.00613401688706074
-725 -0.00513329277378087
-726 -0.00905815149013341
-727 -0.00906250727280879
-728 -0.00928036762666381
-729 -0.00830114918655625
-730 -0.00888782794632727
-731 -0.00904256610543205
-732 -0.00874136315610037
-733 -0.00531018786452449
-734 -0.00629165130613466
-735 -0.00755517067228936
-736 -0.00836182239325517
-737 -0.00809350876481861
-738 -0.00404124535306633
-739 -0.00561644195626163
-740 -0.00642305805867293
-741 -0.00816305467996883
-742 -0.00843581049472936
-743 -0.00672325206596123
-744 -0.00617215358093702
-745 -0.00402751925690743
-746 -0.00479725155053775
-747 -0.00342071760962384
-748 -0.0076001254677333
-749 0.0344911275393927
-750 0.0357890953530814
-751 0.0369236838641285
-752 0.0337953594669526
-753 0.0341196656886643
-754 -0.00659802662549373
-755 0.0315371138736742
-756 -0.00562959157006591
-757 -0.00365306265936607
-758 -0.00637937791804702
-759 -0.00728163692006943
-760 -0.00728167255033979
-761 -0.00486863763712198
-762 -0.00700194438994883
-763 -0.00488445712486066
-764 -0.00785107429883577
-765 -0.00743663889427734
-766 -0.0075555414143233
-767 -0.0082175974779749
-768 -0.00762712314452127
-769 -0.00716801816399294
-770 -0.00420432905589099
-771 -0.00646377431872973
-772 -0.00627655191972345
-773 -0.0068281800863105
-774 -0.00646314628967681
-775 -0.00545387418053753
-776 -0.00272565261231244
-777 -0.00644191975512085
-778 -0.00690509982226062
-779 -0.00709925853315763
-780 -0.00694005333594523
-781 -0.00625875545170498
-782 -0.00292200977585102
-783 -0.00321016024715532
-784 -0.00336849507857711
-785 -0.00596633161271771
-786 -0.00616166058124168
-787 0.03411477548233
-788 0.03523911486873
-789 0.039313174460712
-790 0.0358510918513492
-791 -0.00378913539308921
-792 0.0304194265074042
-793 -0.0038004308918757
-794 -0.00607189262016905
-795 -0.00587612619804128
-796 -0.00189219359140836
-797 -0.00616375618998826
-798 -0.00388685360401677
-799 -0.00556254294258616
-800 -0.00661778351426878
-801 -0.00382440352172051
-802 -0.00647820073687594
-803 -0.00624655145167987
-804 -0.00667068925870065
-805 -0.00648578196572712
-806 -0.0051558107815927
-807 -0.00231291615968645
-808 -0.00505615473087768
-809 -0.00587295803700975
-810 -0.00558124863643099
-811 -0.00536491992472214
-812 -0.00398836838292933
-813 -0.00377202632549738
-814 -0.002354118299516
-815 -0.00450512819274966
-816 -0.0052767354763421
-817 -0.00524186198269607
-818 -0.00538929450465706
-819 -0.00531625688326681
-820 -0.00559074601189695
-821 -0.00531052145605409
-822 -0.00506016636387018
-823 -0.00558340516310152
-824 -0.00480493075033995
-825 0.0322805865937449
-826 0.0378874582814526
-827 0.0388905020209905
-828 0.00140630493053477
-829 0.0327652229435057
-830 -0.00223687990639532
-831 -0.00415072629779562
-832 -0.00449816632891999
-833 -0.00471900257056604
-834 -0.00380655567933039
-835 -0.00208013080352473
-836 -0.00399065266148802
-837 -0.00487092683399181
-838 -0.0050959015942598
-839 -0.00191592007441914
-840 -0.00461100733700934
-841 -0.00502472638398927
-842 -0.00505288732904903
-843 -0.00438730255591126
-844 -0.00306177948534003
-845 -0.00375916415653544
-846 -0.00446006819331235
-847 -0.00529861753336898
-848 -0.00366324407821308
-849 -0.00260207768467577
-850 -0.00307568973842944
-851 -0.00423298618954815
-852 -0.00402026548184328
-853 -0.00146181843080695
-854 -0.00349341567107831
-855 -0.00433554634082064
-856 -0.00410204223433599
-857 -0.00434967848256952
-858 -0.00421703547450881
-859 -0.00382881572564153
-860 -0.00423970806851707
-861 -0.00437449172653197
-862 -0.00400502122442197
-863 0.0346819215614161
-864 0.0348750856830455
-865 -0.00265543722265669
-866 0.0380644512814575
-867 -5.14244684871617e-05
-868 -0.0029850292925082
-869 -0.00280199446175912
-870 -0.00310596389994767
-871 -0.00343511488292023
-872 -0.000171378148703489
-873 -0.0024459240224584
-874 -0.00327675207097342
-875 -0.00348581260906698
-876 -0.00355868259309655
-877 -0.000312461719204031
-878 -0.00355336474543735
-879 -0.00357392139745643
-880 -0.00290172241076185
-881 -0.00208381746845654
-882 -0.00191420039525358
-883 -0.00288084255403359
-884 -0.00402165110428679
-885 -0.00363823711845451
-886 -0.00105719975984341
-887 -0.00194304900141352
-888 -0.0028117193732005
-889 -0.00272354659953838
-890 -0.00269119684418979
-891 -0.0024739833326293
-892 -0.00264720107421195
-893 -0.00266281337322763
-894 -0.00271486287490391
-895 -0.0025966883492992
-896 -0.00275998355842941
-897 -0.00285830804400797
-898 -0.00283220277180079
-899 -0.00268773055778214
-900 -0.00284073923200707
-901 0.0353145424004993
-902 -0.00160304708129049
-903 0.0348425254145825
-904 2.8677502125498e-05
-905 0.000437164769156674
-906 -0.000353406460783275
-907 -0.00195469155311098
-908 -0.00181504012345376
-909 0.000213017105712491
-910 -0.001310254306005
-911 -0.00211504011023419
-912 -0.00220453472901432
-913 -0.00221445718259423
-914 -0.0019385529058544
-915 -0.00242106879847995
-916 0.000515093602106525
-917 -0.00157522783064606
-918 -0.000809182215147043
-919 -0.00125292469032103
-920 -0.00240883966759777
-921 -0.0021786367875747
-922 -0.00240937489397921
-923 -0.00116795158553355
-924 -0.000727426386542781
-925 -0.00133194403721344
-926 -0.00124546108708765
-927 -0.00148107783605636
-928 -0.00142616980555449
-929 -0.00146243841366756
-930 -0.0015283737803334
-931 -0.00154540562504725
-932 -0.00155805559628689
-933 -0.00151938623493131
-934 -0.00165541232298659
-935 -0.00168144891364875
-936 -0.00132559687940882
-937 -0.00160394278309398
-938 -0.0017363807642805
-939 -0.00167995411949275
-940 0.0354478346047755
-941 0.00106969481951657
-942 -0.000561313854486038
-943 -0.000457998303574142
-944 -0.000583885106294125
-945 -0.000525159904309248
-946 -0.000517315333414318
-947 -0.000721221933781515
-948 -0.000829549124890304
-949 -8.82882583545919e-05
-950 -0.000766770294365053
-951 -0.000811881521540676
-952 -0.000891788154480318
-953 -0.000934560208414364
-954 -0.00079422177360351
-955 -0.000838129010273254
-956 -0.000963325512884482
-957 -0.00102235934683932
-958 -0.00106440392780229
-959 -0.000989883649450528
-960 0.000386274557612681
-961 -0.000389777489444674
-962 -0.00118692846255399
-963 -5.09408200005586e-06
-964 -5.89078730563787e-05
-965 -1.47060551334381e-05
-966 -0.000136166417132319
-967 -0.000121512032975118
-968 -0.00017156987502174
-969 -0.000156708081095913
-970 -0.000153840321519638
-971 -0.000310390758729453
-972 -0.000312404884024801
-973 -0.000200418566814807
-974 -0.000375662527155661
-975 -0.000354596399099672
-976 -0.000424295858947903
-977 -4.46088202453899e-06
-978 0.00224800854296348
-979 0.000523082860817624
-980 0.00048326199320117
-981 0.000448693340206397
-982 0.000421635212488891
-983 0.000437949926365211
-984 0.000428040241678261
-985 0.000391002232599501
-986 0.00036566913933478
-987 0.000381018446039441
-988 0.000321514512415979
-989 0.000287957422008028
-990 0.000255617051800765
-991 0.000221662354369779
-992 0.000188701605125869
-993 0.00016002049297156
-994 0.000127317707925566
-995 9.31667901426005e-05
-996 6.3380231067732e-05
-997 3.423275902354e-05
-998 -2.14223799528709e-06
-999 -3.67741480724576e-05
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat
deleted file mode 100644
index 484b94708..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat
+++ /dev/null
@@ -1,1001 +0,0 @@
-#scatter real total user system repeat
-1 0.00562119483947754 0.00999999999999979 0.00999999999999979 0.0 1
-2 0.00404691696166992 0.0 0.0 0.0 2
-3 0.00373387336730957 0.00999999999999979 0.00999999999999979 0.0 3
-4 0.00375699996948242 0.0 0.0 0.0 4
-5 0.00371694564819336 0.0 0.0 0.0 5
-6 0.00381088256835938 0.0100000000000007 0.0100000000000007 0.0 6
-7 0.00370693206787109 0.0 0.0 0.0 7
-8 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 8
-9 0.0037529468536377 0.0 0.0 0.0 9
-10 0.00371718406677246 0.0 0.0 0.0 10
-11 0.00370693206787109 0.00999999999999979 0.00999999999999979 0.0 11
-12 0.00371503829956055 0.0 0.0 0.0 12
-13 0.00367999076843262 0.0 0.0 0.0 13
-14 0.0037379264831543 0.00999999999999979 0.00999999999999979 0.0 14
-15 0.00368285179138184 0.0 0.0 0.0 15
-16 0.0036928653717041 0.00999999999999979 0.00999999999999979 0.0 16
-17 0.00363802909851074 0.0 0.0 0.0 17
-18 0.00420713424682617 0.0 0.0 0.0 18
-19 0.0046851634979248 0.0100000000000007 0.0100000000000007 0.0 19
-20 0.00365090370178223 0.0 0.0 0.0 20
-21 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 21
-22 0.00363302230834961 0.0 0.0 0.0 22
-23 0.00362706184387207 0.0 0.0 0.0 23
-24 0.00369381904602051 0.00999999999999979 0.00999999999999979 0.0 24
-25 0.00363802909851074 0.0 0.0 0.0 25
-26 0.00362586975097656 0.0 0.0 0.0 26
-27 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 27
-28 0.00364899635314941 0.0 0.0 0.0 28
-29 0.00363993644714355 0.0100000000000007 0.0100000000000007 0.0 29
-30 0.0036160945892334 0.0 0.0 0.0 30
-31 0.00362014770507812 0.0 0.0 0.0 31
-32 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 32
-33 0.00372695922851562 0.0 0.0 0.0 33
-34 0.00366806983947754 0.0 0.0 0.0 34
-35 0.00362205505371094 0.00999999999999979 0.00999999999999979 0.0 35
-36 0.00366711616516113 0.0 0.0 0.0 36
-37 0.00369906425476074 0.00999999999999979 0.00999999999999979 0.0 37
-38 0.00364184379577637 0.0 0.0 0.0 38
-39 0.0289762020111084 0.0300000000000002 0.0300000000000002 0.0 39
-40 0.00372695922851562 0.0 0.0 0.0 40
-41 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 41
-42 0.00373101234436035 0.0 0.0 0.0 42
-43 0.00379014015197754 0.0 0.0 0.0 43
-44 0.00367498397827148 0.0100000000000007 0.0100000000000007 0.0 44
-45 0.00369691848754883 0.0 0.0 0.0 45
-46 0.00368881225585938 0.0 0.0 0.0 46
-47 0.00369405746459961 0.00999999999999979 0.00999999999999979 0.0 47
-48 0.00369095802307129 0.0 0.0 0.0 48
-49 0.00370192527770996 0.00999999999999979 0.00999999999999979 0.0 49
-50 0.00373387336730957 0.0 0.0 0.0 50
-51 0.00370502471923828 0.0 0.0 0.0 51
-52 0.00367999076843262 0.00999999999999979 0.00999999999999979 0.0 52
-53 0.00374007225036621 0.0 0.0 0.0 53
-54 0.00364995002746582 0.0 0.0 0.0 54
-55 0.00367188453674316 0.0100000000000007 0.0100000000000007 0.0 55
-56 0.00363993644714355 0.0 0.0 0.0 56
-57 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 57
-58 0.0036160945892334 0.0 0.0 0.0 58
-59 0.00369095802307129 0.0 0.0 0.0 59
-60 0.00452899932861328 0.00999999999999979 0.00999999999999979 0.0 60
-61 0.00462913513183594 0.0 0.0 0.0 61
-62 0.00413894653320312 0.00999999999999979 0.00999999999999979 0.0 62
-63 0.0036470890045166 0.0 0.0 0.0 63
-64 0.00361418724060059 0.0 0.0 0.0 64
-65 0.00383710861206055 0.0100000000000007 0.0100000000000007 0.0 65
-66 0.00362491607666016 0.0 0.0 0.0 66
-67 0.0036318302154541 0.0 0.0 0.0 67
-68 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 68
-69 0.00365900993347168 0.0 0.0 0.0 69
-70 0.00515103340148926 0.00999999999999979 0.00999999999999979 0.0 70
-71 0.00363993644714355 0.0 0.0 0.0 71
-72 0.00365900993347168 0.0 0.0 0.0 72
-73 0.00374507904052734 0.00999999999999979 0.00999999999999979 0.0 73
-74 0.00366497039794922 0.0 0.0 0.0 74
-75 0.00367498397827148 0.00999999999999979 0.00999999999999979 0.0 75
-76 0.0036470890045166 0.0 0.0 0.0 76
-77 0.00451517105102539 0.0 0.0 0.0 77
-78 0.0300049781799316 0.0300000000000002 0.0300000000000002 0.0 78
-79 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 79
-80 0.00371098518371582 0.0 0.0 0.0 80
-81 0.00372600555419922 0.0 0.0 0.0 81
-82 0.00376200675964355 0.0100000000000007 0.0100000000000007 0.0 82
-83 0.00369596481323242 0.0 0.0 0.0 83
-84 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 84
-85 0.00370216369628906 0.0 0.0 0.0 85
-86 0.00374007225036621 0.0 0.0 0.0 86
-87 0.00369381904602051 0.00999999999999979 0.00999999999999979 0.0 87
-88 0.00372195243835449 0.0 0.0 0.0 88
-89 0.00368881225585938 0.0 0.0 0.0 89
-90 0.00371909141540527 0.00999999999999979 0.00999999999999979 0.0 90
-91 0.00371909141540527 0.0 0.0 0.0 91
-92 0.00366497039794922 0.0100000000000007 0.0100000000000007 0.0 92
-93 0.00366401672363281 0.0 0.0 0.0 93
-94 0.00378704071044922 0.0 0.0 0.0 94
-95 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 95
-96 0.00405406951904297 0.0 0.0 0.0 96
-97 0.00365591049194336 0.0 0.0 0.0 97
-98 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 98
-99 0.00363802909851074 0.0 0.0 0.0 99
-100 0.0036461353302002 0.00999999999999979 0.00999999999999979 0.0 100
-101 0.00359797477722168 0.0 0.0 0.0 101
-102 0.00361990928649902 0.0 0.0 0.0 102
-103 0.00364899635314941 0.0100000000000007 0.0100000000000007 0.0 103
-104 0.00359296798706055 0.0 0.0 0.0 104
-105 0.00363802909851074 0.0 0.0 0.0 105
-106 0.00417685508728027 0.00999999999999979 0.00999999999999979 0.0 106
-107 0.00371980667114258 0.0 0.0 0.0 107
-108 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 108
-109 0.00368213653564453 0.0 0.0 0.0 109
-110 0.00360202789306641 0.0 0.0 0.0 110
-111 0.00362992286682129 0.00999999999999979 0.00999999999999979 0.0 111
-112 0.0036311149597168 0.0 0.0 0.0 112
-113 0.00362801551818848 0.0 0.0 0.0 113
-114 0.00364995002746582 0.0100000000000007 0.0100000000000007 0.0 114
-115 0.00370001792907715 0.0 0.0 0.0 115
-116 0.0305509567260742 0.0299999999999994 0.0299999999999994 0.0 116
-117 0.00376200675964355 0.0100000000000007 0.0100000000000007 0.0 117
-118 0.0038001537322998 0.0 0.0 0.0 118
-119 0.00374984741210938 0.0 0.0 0.0 119
-120 0.00397920608520508 0.00999999999999979 0.00999999999999979 0.0 120
-121 0.00372481346130371 0.0 0.0 0.0 121
-122 0.00369715690612793 0.0 0.0 0.0 122
-123 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 123
-124 0.00372195243835449 0.0 0.0 0.0 124
-125 0.00375914573669434 0.00999999999999979 0.00999999999999979 0.0 125
-126 0.00368499755859375 0.0 0.0 0.0 126
-127 0.00371503829956055 0.0 0.0 0.0 127
-128 0.00380897521972656 0.00999999999999979 0.00999999999999979 0.0 128
-129 0.00403499603271484 0.0 0.0 0.0 129
-130 0.00370502471923828 0.0100000000000007 0.0100000000000007 0.0 130
-131 0.00371289253234863 0.0 0.0 0.0 131
-132 0.00365591049194336 0.0 0.0 0.0 132
-133 0.00368094444274902 0.00999999999999979 0.00999999999999979 0.0 133
-134 0.0036768913269043 0.0 0.0 0.0 134
-135 0.00362706184387207 0.0 0.0 0.0 135
-136 0.00366616249084473 0.00999999999999979 0.00999999999999979 0.0 136
-137 0.0036470890045166 0.0 0.0 0.0 137
-138 0.00362181663513184 0.0 0.0 0.0 138
-139 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 139
-140 0.00363707542419434 0.0 0.0 0.0 140
-141 0.00359892845153809 0.0100000000000007 0.0100000000000007 0.0 141
-142 0.00361514091491699 0.0 0.0 0.0 142
-143 0.00365495681762695 0.0 0.0 0.0 143
-144 0.00371885299682617 0.00999999999999979 0.00999999999999979 0.0 144
-145 0.00364208221435547 0.0 0.0 0.0 145
-146 0.00365304946899414 0.0 0.0 0.0 146
-147 0.00368404388427734 0.00999999999999979 0.00999999999999979 0.0 147
-148 0.00365900993347168 0.0 0.0 0.0 148
-149 0.00368785858154297 0.00999999999999979 0.00999999999999979 0.0 149
-150 0.003662109375 0.0 0.0 0.0 150
-151 0.00363397598266602 0.0 0.0 0.0 151
-152 0.00362491607666016 0.0100000000000007 0.0100000000000007 0.0 152
-153 0.00366687774658203 0.0 0.0 0.0 153
-154 0.0295231342315674 0.0299999999999994 0.0299999999999994 0.0 154
-155 0.00366806983947754 0.0 0.0 0.0 155
-156 0.00370311737060547 0.0100000000000007 0.0100000000000007 0.0 156
-157 0.0037238597869873 0.0 0.0 0.0 157
-158 0.00376701354980469 0.00999999999999979 0.00999999999999979 0.0 158
-159 0.0036771297454834 0.0 0.0 0.0 159
-160 0.00372195243835449 0.0 0.0 0.0 160
-161 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 161
-162 0.00371003150939941 0.0 0.0 0.0 162
-163 0.00369811058044434 0.0 0.0 0.0 163
-164 0.00378203392028809 0.00999999999999979 0.00999999999999979 0.0 164
-165 0.00370502471923828 0.0 0.0 0.0 165
-166 0.00371003150939941 0.0100000000000007 0.0100000000000007 0.0 166
-167 0.00371599197387695 0.0 0.0 0.0 167
-168 0.00370192527770996 0.0 0.0 0.0 168
-169 0.00369501113891602 0.00999999999999979 0.00999999999999979 0.0 169
-170 0.00369691848754883 0.0 0.0 0.0 170
-171 0.00400686264038086 0.0 0.0 0.0 171
-172 0.00524497032165527 0.00999999999999979 0.00999999999999979 0.0 172
-173 0.00366020202636719 0.0 0.0 0.0 173
-174 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 174
-175 0.00367379188537598 0.0 0.0 0.0 175
-176 0.00362706184387207 0.0 0.0 0.0 176
-177 0.00365996360778809 0.0100000000000007 0.0100000000000007 0.0 177
-178 0.00365900993347168 0.0 0.0 0.0 178
-179 0.00363492965698242 0.00999999999999979 0.00999999999999979 0.0 179
-180 0.00363397598266602 0.0 0.0 0.0 180
-181 0.00366401672363281 0.0 0.0 0.0 181
-182 0.00363302230834961 0.00999999999999979 0.00999999999999979 0.0 182
-183 0.00364494323730469 0.0 0.0 0.0 183
-184 0.00361990928649902 0.0 0.0 0.0 184
-185 0.00379490852355957 0.00999999999999979 0.00999999999999979 0.0 185
-186 0.0036468505859375 0.0 0.0 0.0 186
-187 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 187
-188 0.00387907028198242 0.0 0.0 0.0 188
-189 0.00541114807128906 0.0 0.0 0.0 189
-190 0.00428199768066406 0.0100000000000007 0.0100000000000007 0.0 190
-191 0.00368618965148926 0.0 0.0 0.0 191
-192 0.0293948650360107 0.0299999999999994 0.0299999999999994 0.0 192
-193 0.00434708595275879 0.0100000000000007 0.0100000000000007 0.0 193
-194 0.00372600555419922 0.0 0.0 0.0 194
-195 0.00628900527954102 0.00999999999999979 0.00999999999999979 0.0 195
-196 0.00624394416809082 0.0 0.0 0.0 196
-197 0.00649094581604004 0.00999999999999979 0.00999999999999979 0.0 197
-198 0.00419712066650391 0.0 0.0 0.0 198
-199 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 199
-200 0.0037531852722168 0.0 0.0 0.0 200
-201 0.00369119644165039 0.0 0.0 0.0 201
-202 0.00369000434875488 0.0100000000000007 0.0100000000000007 0.0 202
-203 0.00372099876403809 0.0 0.0 0.0 203
-204 0.00369000434875488 0.00999999999999979 0.00999999999999979 0.0 204
-205 0.00371885299682617 0.0 0.0 0.0 205
-206 0.00367903709411621 0.0 0.0 0.0 206
-207 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 207
-208 0.0037541389465332 0.0 0.0 0.0 208
-209 0.00364303588867188 0.0 0.0 0.0 209
-210 0.00363898277282715 0.00999999999999979 0.00999999999999979 0.0 210
-211 0.00363588333129883 0.0 0.0 0.0 211
-212 0.00367999076843262 0.0100000000000007 0.0100000000000007 0.0 212
-213 0.00364208221435547 0.0 0.0 0.0 213
-214 0.00365614891052246 0.0 0.0 0.0 214
-215 0.00363779067993164 0.00999999999999979 0.00999999999999979 0.0 215
-216 0.00362610816955566 0.0 0.0 0.0 216
-217 0.0036470890045166 0.0 0.0 0.0 217
-218 0.00366711616516113 0.00999999999999979 0.00999999999999979 0.0 218
-219 0.00364995002746582 0.0 0.0 0.0 219
-220 0.0036308765411377 0.0 0.0 0.0 220
-221 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 221
-222 0.00362896919250488 0.0 0.0 0.0 222
-223 0.00364899635314941 0.0100000000000007 0.0100000000000007 0.0 223
-224 0.00365805625915527 0.0 0.0 0.0 224
-225 0.00364589691162109 0.0 0.0 0.0 225
-226 0.00363683700561523 0.00999999999999979 0.00999999999999979 0.0 226
-227 0.00364995002746582 0.0 0.0 0.0 227
-228 0.00421810150146484 0.0 0.0 0.0 228
-229 0.00510215759277344 0.00999999999999979 0.00999999999999979 0.0 229
-230 0.0295019149780273 0.0300000000000002 0.0300000000000002 0.0 230
-231 0.00370287895202637 0.0 0.0 0.0 231
-232 0.00370287895202637 0.00999999999999979 0.00999999999999979 0.0 232
-233 0.00372409820556641 0.0 0.0 0.0 233
-234 0.00373697280883789 0.0 0.0 0.0 234
-235 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 235
-236 0.00374388694763184 0.0 0.0 0.0 236
-237 0.00366711616516113 0.00999999999999979 0.00999999999999979 0.0 237
-238 0.00371408462524414 0.0 0.0 0.0 238
-239 0.0048530101776123 0.0 0.0 0.0 239
-240 0.00423502922058105 0.0100000000000007 0.0100000000000007 0.0 240
-241 0.00370502471923828 0.0 0.0 0.0 241
-242 0.00370383262634277 0.00999999999999979 0.00999999999999979 0.0 242
-243 0.00366306304931641 0.0 0.0 0.0 243
-244 0.00367593765258789 0.0 0.0 0.0 244
-245 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 245
-246 0.00369501113891602 0.0 0.0 0.0 246
-247 0.00366902351379395 0.0 0.0 0.0 247
-248 0.00362110137939453 0.00999999999999979 0.00999999999999979 0.0 248
-249 0.00362896919250488 0.0 0.0 0.0 249
-250 0.00362896919250488 0.0100000000000007 0.0100000000000007 0.0 250
-251 0.00362205505371094 0.0 0.0 0.0 251
-252 0.00364923477172852 0.0 0.0 0.0 252
-253 0.00362801551818848 0.00999999999999979 0.00999999999999979 0.0 253
-254 0.00369715690612793 0.0 0.0 0.0 254
-255 0.00363993644714355 0.0 0.0 0.0 255
-256 0.00364518165588379 0.00999999999999979 0.00999999999999979 0.0 256
-257 0.00360393524169922 0.0 0.0 0.0 257
-258 0.00365090370178223 0.00999999999999979 0.00999999999999979 0.0 258
-259 0.00365996360778809 0.0 0.0 0.0 259
-260 0.00363016128540039 0.0 0.0 0.0 260
-261 0.00363707542419434 0.0100000000000007 0.0100000000000007 0.0 261
-262 0.00364112854003906 0.0 0.0 0.0 262
-263 0.00367903709411621 0.0 0.0 0.0 263
-264 0.00365304946899414 0.00999999999999979 0.00999999999999979 0.0 264
-265 0.00365900993347168 0.0 0.0 0.0 265
-266 0.00364804267883301 0.00999999999999979 0.00999999999999979 0.0 266
-267 0.00368404388427734 0.0 0.0 0.0 267
-268 0.02935791015625 0.0300000000000002 0.0300000000000002 0.0 268
-269 0.00368499755859375 0.0 0.0 0.0 269
-270 0.00371789932250977 0.00999999999999979 0.00999999999999979 0.0 270
-271 0.0037848949432373 0.0 0.0 0.0 271
-272 0.00371384620666504 0.0 0.0 0.0 272
-273 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 273
-274 0.00377702713012695 0.0 0.0 0.0 274
-275 0.00371503829956055 0.0 0.0 0.0 275
-276 0.00372791290283203 0.0100000000000007 0.0100000000000007 0.0 276
-277 0.00372004508972168 0.0 0.0 0.0 277
-278 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 278
-279 0.00369620323181152 0.0 0.0 0.0 279
-280 0.00374603271484375 0.0 0.0 0.0 280
-281 0.00559902191162109 0.00999999999999979 0.00999999999999979 0.0 281
-282 0.00370311737060547 0.0 0.0 0.0 282
-283 0.00371289253234863 0.00999999999999979 0.00999999999999979 0.0 283
-284 0.00368905067443848 0.0 0.0 0.0 284
-285 0.0037989616394043 0.0 0.0 0.0 285
-286 0.00368595123291016 0.00999999999999979 0.0100000000000007 0.0 286
-287 0.00365710258483887 0.0 0.0 0.0 287
-288 0.00366306304931641 0.00999999999999979 0.00999999999999979 0.0 288
-289 0.00366091728210449 0.0 0.0 0.0 289
-290 0.00363683700561523 0.0 0.0 0.0 290
-291 0.00508499145507812 0.00999999999999979 0.00999999999999979 0.0 291
-292 0.00364899635314941 0.0 0.0 0.0 292
-293 0.00364184379577637 0.0 0.0 0.0 293
-294 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 294
-295 0.00361919403076172 0.0 0.0 0.0 295
-296 0.00365996360778809 0.00999999999999979 0.00999999999999979 0.0 296
-297 0.00385499000549316 0.0 0.0 0.0 297
-298 0.00486421585083008 0.0 0.0 0.0 298
-299 0.00370907783508301 0.00999999999999979 0.00999999999999979 0.0 299
-300 0.00366020202636719 0.0 0.0 0.0 300
-301 0.00364780426025391 0.00999999999999979 0.00999999999999979 0.0 301
-302 0.00360703468322754 0.0 0.0 0.0 302
-303 0.00366711616516113 0.0 0.0 0.0 303
-304 0.00365304946899414 0.0100000000000016 0.0100000000000016 0.0 304
-305 0.0293490886688232 0.0299999999999994 0.0299999999999994 0.0 305
-306 0.00373411178588867 0.0 0.0 0.0 306
-307 0.00367593765258789 0.0 0.0 0.0 307
-308 0.0037379264831543 0.00999999999999979 0.00999999999999979 0.0 308
-309 0.00373697280883789 0.0 0.0 0.0 309
-310 0.00374507904052734 0.0 0.0 0.0 310
-311 0.00374889373779297 0.00999999999999979 0.00999999999999979 0.0 311
-312 0.00372195243835449 0.0 0.0 0.0 312
-313 0.00367879867553711 0.00999999999999979 0.00999999999999979 0.0 313
-314 0.00386714935302734 0.0 0.0 0.0 314
-315 0.00381088256835938 0.0 0.0 0.0 315
-316 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 316
-317 0.00370287895202637 0.0 0.0 0.0 317
-318 0.00370883941650391 0.0 0.0 0.0 318
-319 0.0037989616394043 0.0100000000000016 0.0100000000000016 0.0 319
-320 0.00371098518371582 0.0 0.0 0.0 320
-321 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 321
-322 0.00365209579467773 0.0 0.0 0.0 322
-323 0.00365400314331055 0.0 0.0 0.0 323
-324 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 324
-325 0.00365400314331055 0.0 0.0 0.0 325
-326 0.00417399406433105 0.00999999999999979 0.00999999999999979 0.0 326
-327 0.00363588333129883 0.0 0.0 0.0 327
-328 0.00362396240234375 0.0 0.0 0.0 328
-329 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 329
-330 0.0036461353302002 0.0 0.0 0.0 330
-331 0.00362610816955566 0.0 0.0 0.0 331
-332 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 332
-333 0.00365900993347168 0.0 0.0 0.0 333
-334 0.00363802909851074 0.0 0.0 0.0 334
-335 0.00365495681762695 0.00999999999999979 0.00999999999999979 0.0 335
-336 0.0036931037902832 0.0 0.0 0.0 336
-337 0.00366592407226562 0.00999999999999979 0.00999999999999979 0.0 337
-338 0.0036778450012207 0.0 0.0 0.0 338
-339 0.00438904762268066 0.0 0.0 0.0 339
-340 0.00471091270446777 0.0100000000000016 0.0100000000000016 0.0 340
-341 0.00389599800109863 0.0 0.0 0.0 341
-342 0.00366497039794922 0.00999999999999979 0.00999999999999979 0.0 342
-343 0.0298199653625488 0.0299999999999994 0.0299999999999994 0.0 343
-344 0.00373697280883789 0.0 0.0 0.0 344
-345 0.00366497039794922 0.0 0.0 0.0 345
-346 0.00375890731811523 0.00999999999999979 0.00999999999999979 0.0 346
-347 0.00376486778259277 0.0 0.0 0.0 347
-348 0.00379490852355957 0.00999999999999979 0.00999999999999979 0.0 348
-349 0.00371098518371582 0.0 0.0 0.0 349
-350 0.00410985946655273 0.0 0.0 0.0 350
-351 0.00371313095092773 0.00999999999999979 0.00999999999999979 0.0 351
-352 0.00372481346130371 0.0 0.0 0.0 352
-353 0.00371789932250977 0.0 0.0 0.0 353
-354 0.00374507904052734 0.00999999999999979 0.00999999999999979 0.0 354
-355 0.00374102592468262 0.0 0.0 0.0 355
-356 0.00371098518371582 0.0100000000000016 0.0100000000000016 0.0 356
-357 0.00369906425476074 0.0 0.0 0.0 357
-358 0.00367617607116699 0.0 0.0 0.0 358
-359 0.00366997718811035 0.00999999999999979 0.00999999999999979 0.0 359
-360 0.00365996360778809 0.0 0.0 0.0 360
-361 0.00363588333129883 0.0 0.0 0.0 361
-362 0.00361990928649902 0.00999999999999979 0.00999999999999979 0.0 362
-363 0.00364589691162109 0.0 0.0 0.0 363
-364 0.00363492965698242 0.00999999999999979 0.00999999999999979 0.0 364
-365 0.00372695922851562 0.0 0.0 0.0 365
-366 0.00362396240234375 0.0 0.0 0.0 366
-367 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 367
-368 0.0036921501159668 0.0 0.0 0.0 368
-369 0.00365710258483887 0.0 0.0 0.0 369
-370 0.00361800193786621 0.00999999999999979 0.00999999999999979 0.0 370
-371 0.00367903709411621 0.0 0.0 0.0 371
-372 0.00365805625915527 0.00999999999999979 0.00999999999999979 0.0 372
-373 0.00367999076843262 0.0 0.0 0.0 373
-374 0.00368404388427734 0.0 0.0 0.0 374
-375 0.00368690490722656 0.00999999999999979 0.00999999999999979 0.0 375
-376 0.00374794006347656 0.0 0.0 0.0 376
-377 0.00366997718811035 0.0 0.0 0.0 377
-378 0.00365018844604492 0.0100000000000016 0.0100000000000016 0.0 378
-379 0.0036780834197998 0.0 0.0 0.0 379
-380 0.00370216369628906 0.00999999999999979 0.00999999999999979 0.0 380
-381 0.0293450355529785 0.0199999999999996 0.0199999999999996 0.0 381
-382 0.00373005867004395 0.00999999999999979 0.00999999999999979 0.0 382
-383 0.00366306304931641 0.0 0.0 0.0 383
-384 0.00376296043395996 0.00999999999999979 0.00999999999999979 0.0 384
-385 0.00380301475524902 0.0 0.0 0.0 385
-386 0.00372815132141113 0.0 0.0 0.0 386
-387 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 387
-388 0.00368499755859375 0.0 0.0 0.0 388
-389 0.00373601913452148 0.0 0.0 0.0 389
-390 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 390
-391 0.00372791290283203 0.0 0.0 0.0 391
-392 0.00531101226806641 0.0100000000000016 0.0100000000000016 0.0 392
-393 0.00371789932250977 0.0 0.0 0.0 393
-394 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 394
-395 0.00369906425476074 0.0 0.0 0.0 395
-396 0.00373601913452148 0.0 0.0 0.0 396
-397 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 397
-398 0.00365591049194336 0.0 0.0 0.0 398
-399 0.00403714179992676 0.0 0.0 0.0 399
-400 0.00364208221435547 0.00999999999999979 0.00999999999999979 0.0 400
-401 0.00365400314331055 0.0 0.0 0.0 401
-402 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 402
-403 0.00363302230834961 0.0 0.0 0.0 403
-404 0.00365090370178223 0.0 0.0 0.0 404
-405 0.00374603271484375 0.00999999999999979 0.00999999999999979 0.0 405
-406 0.00363278388977051 0.0 0.0 0.0 406
-407 0.00362515449523926 0.0 0.0 0.0 407
-408 0.00372409820556641 0.00999999999999979 0.00999999999999979 0.0 408
-409 0.00486588478088379 0.0 0.0 0.0 409
-410 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 410
-411 0.00371599197387695 0.0 0.0 0.0 411
-412 0.0036618709564209 0.0 0.0 0.0 412
-413 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 413
-414 0.00367593765258789 0.0 0.0 0.0 414
-415 0.00361990928649902 0.0 0.0 0.0 415
-416 0.00365900993347168 0.0100000000000016 0.0100000000000016 0.0 416
-417 0.00365614891052246 0.0 0.0 0.0 417
-418 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 418
-419 0.0359270572662354 0.0299999999999994 0.0299999999999994 0.0 419
-420 0.00371479988098145 0.00999999999999979 0.00999999999999979 0.0 420
-421 0.00369119644165039 0.0 0.0 0.0 421
-422 0.00375699996948242 0.0 0.0 0.0 422
-423 0.00374388694763184 0.00999999999999979 0.00999999999999979 0.0 423
-424 0.00373291969299316 0.0 0.0 0.0 424
-425 0.00372982025146484 0.0 0.0 0.0 425
-426 0.00370216369628906 0.00999999999999979 0.00999999999999979 0.0 426
-427 0.00371408462524414 0.0 0.0 0.0 427
-428 0.0037078857421875 0.0100000000000016 0.0100000000000016 0.0 428
-429 0.00379300117492676 0.0 0.0 0.0 429
-430 0.00373482704162598 0.0 0.0 0.0 430
-431 0.00374007225036621 0.00999999999999979 0.00999999999999979 0.0 431
-432 0.00367999076843262 0.0 0.0 0.0 432
-433 0.00372695922851562 0.0 0.0 0.0 433
-434 0.00371384620666504 0.00999999999999979 0.00999999999999979 0.0 434
-435 0.0036170482635498 0.0 0.0 0.0 435
-436 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 436
-437 0.00367283821105957 0.0 0.0 0.0 437
-438 0.0036160945892334 0.0 0.0 0.0 438
-439 0.00362205505371094 0.00999999999999979 0.00999999999999979 0.0 439
-440 0.00364518165588379 0.0 0.0 0.0 440
-441 0.0036780834197998 0.0 0.0 0.0 441
-442 0.00361800193786621 0.00999999999999979 0.00999999999999979 0.0 442
-443 0.00362396240234375 0.0 0.0 0.0 443
-444 0.00362610816955566 0.00999999999999979 0.00999999999999979 0.0 444
-445 0.00364804267883301 0.0 0.0 0.0 445
-446 0.00360488891601562 0.0 0.0 0.0 446
-447 0.00363397598266602 0.00999999999999979 0.00999999999999979 0.0 447
-448 0.00361299514770508 0.0 0.0 0.0 448
-449 0.00390100479125977 0.0 0.0 0.0 449
-450 0.00565385818481445 0.0100000000000016 0.0100000000000016 0.0 450
-451 0.00366592407226562 0.0 0.0 0.0 451
-452 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 452
-453 0.00362896919250488 0.0 0.0 0.0 453
-454 0.0036618709564209 0.0 0.0 0.0 454
-455 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 455
-456 0.00375580787658691 0.0 0.0 0.0 456
-457 0.029231071472168 0.0299999999999994 0.0299999999999994 0.0 457
-458 0.00371885299682617 0.0 0.0 0.0 458
-459 0.00371003150939941 0.0 0.0 0.0 459
-460 0.00493097305297852 0.0 0.0 0.0 460
-461 0.00378513336181641 0.00999999999999979 0.00999999999999979 0.0 461
-462 0.0037388801574707 0.0 0.0 0.0 462
-463 0.00383710861206055 0.0 0.0 0.0 463
-464 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 464
-465 0.0037388801574707 0.0 0.0 0.0 465
-466 0.00373196601867676 0.0100000000000016 0.0100000000000016 0.0 466
-467 0.00371599197387695 0.0 0.0 0.0 467
-468 0.00373697280883789 0.0 0.0 0.0 468
-469 0.00368809700012207 0.00999999999999979 0.00999999999999979 0.0 469
-470 0.00370502471923828 0.0 0.0 0.0 470
-471 0.0036771297454834 0.0 0.0 0.0 471
-472 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 472
-473 0.00366902351379395 0.0 0.0 0.0 473
-474 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 474
-475 0.00371217727661133 0.0 0.0 0.0 475
-476 0.00365495681762695 0.0 0.0 0.0 476
-477 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 477
-478 0.00365710258483887 0.0 0.0 0.0 478
-479 0.00364899635314941 0.0 0.0 0.0 479
-480 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 480
-481 0.0036318302154541 0.0 0.0 0.0 481
-482 0.00359702110290527 0.0 0.0 0.0 482
-483 0.00360584259033203 0.00999999999999979 0.00999999999999979 0.0 483
-484 0.00364303588867188 0.0 0.0 0.0 484
-485 0.00361490249633789 0.00999999999999979 0.00999999999999979 0.0 485
-486 0.00365281105041504 0.0 0.0 0.0 486
-487 0.00365591049194336 0.0 0.0 0.0 487
-488 0.00358986854553223 0.0100000000000016 0.0100000000000016 0.0 488
-489 0.00365304946899414 0.0 0.0 0.0 489
-490 0.00380802154541016 0.0 0.0 0.0 490
-491 0.00366997718811035 0.00999999999999979 0.00999999999999979 0.0 491
-492 0.00363612174987793 0.0 0.0 0.0 492
-493 0.003662109375 0.00999999999999979 0.00999999999999979 0.0 493
-494 0.00367617607116699 0.0 0.0 0.0 494
-495 0.0286951065063477 0.0299999999999994 0.0299999999999994 0.0 495
-496 0.00378203392028809 0.0 0.0 0.0 496
-497 0.00374603271484375 0.00999999999999979 0.00999999999999979 0.0 497
-498 0.00373005867004395 0.0 0.0 0.0 498
-499 0.00371003150939941 0.0 0.0 0.0 499
-500 0.00367212295532227 0.00999999999999979 0.00999999999999979 0.0 500
-501 0.00379490852355957 0.0 0.0 0.0 501
-502 0.00532388687133789 0.0100000000000016 0.0100000000000016 0.0 502
-503 0.00412988662719727 0.0 0.0 0.0 503
-504 0.00371408462524414 0.0 0.0 0.0 504
-505 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 505
-506 0.00383114814758301 0.0 0.0 0.0 506
-507 0.00376319885253906 0.00999999999999979 0.00999999999999979 0.0 507
-508 0.00370383262634277 0.0 0.0 0.0 508
-509 0.00366592407226562 0.0 0.0 0.0 509
-510 0.00369906425476074 0.00999999999999979 0.00999999999999979 0.0 510
-511 0.00367116928100586 0.0 0.0 0.0 511
-512 0.00511002540588379 0.0 0.0 0.0 512
-513 0.00360512733459473 0.00999999999999979 0.00999999999999979 0.0 513
-514 0.00369119644165039 0.0 0.0 0.0 514
-515 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 515
-516 0.0036771297454834 0.0 0.0 0.0 516
-517 0.00361800193786621 0.0 0.0 0.0 517
-518 0.0038139820098877 0.00999999999999979 0.00999999999999979 0.0 518
-519 0.00537514686584473 0.0 0.0 0.0 519
-520 0.00412893295288086 0.00999999999999979 0.00999999999999979 0.0 520
-521 0.00373005867004395 0.0 0.0 0.0 521
-522 0.00365996360778809 0.0 0.0 0.0 522
-523 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 523
-524 0.00367403030395508 0.0 0.0 0.0 524
-525 0.00364589691162109 0.0100000000000016 0.0100000000000016 0.0 525
-526 0.00364398956298828 0.0 0.0 0.0 526
-527 0.00363898277282715 0.0 0.0 0.0 527
-528 0.00362682342529297 0.00999999999999979 0.00999999999999979 0.0 528
-529 0.00360894203186035 0.0 0.0 0.0 529
-530 0.00366091728210449 0.0 0.0 0.0 530
-531 0.00367999076843262 0.00999999999999979 0.00999999999999979 0.0 531
-532 0.0291500091552734 0.0299999999999994 0.0299999999999994 0.0 532
-533 0.00369596481323242 0.0 0.0 0.0 533
-534 0.00374984741210938 0.0 0.0 0.0 534
-535 0.00383186340332031 0.00999999999999979 0.00999999999999979 0.0 535
-536 0.00389409065246582 0.0 0.0 0.0 536
-537 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 537
-538 0.0037238597869873 0.0 0.0 0.0 538
-539 0.00371479988098145 0.0 0.0 0.0 539
-540 0.00371289253234863 0.0100000000000016 0.0100000000000016 0.0 540
-541 0.00380897521972656 0.0 0.0 0.0 541
-542 0.00371193885803223 0.0 0.0 0.0 542
-543 0.0036928653717041 0.00999999999999979 0.00999999999999979 0.0 543
-544 0.00368285179138184 0.0 0.0 0.0 544
-545 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 545
-546 0.00371193885803223 0.0 0.0 0.0 546
-547 0.00420904159545898 0.0 0.0 0.0 547
-548 0.00372791290283203 0.00999999999999979 0.00999999999999979 0.0 548
-549 0.0037071704864502 0.0 0.0 0.0 549
-550 0.00366401672363281 0.00999999999999979 0.00999999999999979 0.0 550
-551 0.00365710258483887 0.0 0.0 0.0 551
-552 0.00364494323730469 0.0 0.0 0.0 552
-553 0.00368499755859375 0.00999999999999979 0.00999999999999979 0.0 553
-554 0.00366806983947754 0.0 0.0 0.0 554
-555 0.00361418724060059 0.0 0.0 0.0 555
-556 0.00361394882202148 0.00999999999999979 0.00999999999999979 0.0 556
-557 0.00365090370178223 0.0 0.0 0.0 557
-558 0.00361990928649902 0.0 0.0 0.0 558
-559 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 559
-560 0.0040891170501709 0.0 0.0 0.0 560
-561 0.00469303131103516 0.0100000000000016 0.0100000000000016 0.0 561
-562 0.00363516807556152 0.0 0.0 0.0 562
-563 0.00363516807556152 0.0 0.0 0.0 563
-564 0.00361895561218262 0.00999999999999979 0.00999999999999979 0.0 564
-565 0.00365996360778809 0.0 0.0 0.0 565
-566 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 566
-567 0.00374007225036621 0.0 0.0 0.0 567
-568 0.00392389297485352 0.0 0.0 0.0 568
-569 0.0294678211212158 0.0299999999999994 0.0299999999999994 0.0 569
-570 0.00389218330383301 0.00999999999999979 0.00999999999999979 0.0 570
-571 0.00545501708984375 0.0 0.0 0.0 571
-572 0.00444793701171875 0.00999999999999979 0.00999999999999979 0.0 572
-573 0.00378513336181641 0.0 0.0 0.0 573
-574 0.00372600555419922 0.0 0.0 0.0 574
-575 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 575
-576 0.00376510620117188 0.0 0.0 0.0 576
-577 0.00368714332580566 0.0100000000000016 0.0100000000000016 0.0 577
-578 0.00371885299682617 0.0 0.0 0.0 578
-579 0.00372505187988281 0.0 0.0 0.0 579
-580 0.00372815132141113 0.00999999999999979 0.00999999999999979 0.0 580
-581 0.00370502471923828 0.0 0.0 0.0 581
-582 0.00371503829956055 0.0 0.0 0.0 582
-583 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 583
-584 0.00370287895202637 0.0 0.0 0.0 584
-585 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 585
-586 0.00377798080444336 0.0 0.0 0.0 586
-587 0.00368595123291016 0.0 0.0 0.0 587
-588 0.00366497039794922 0.00999999999999979 0.00999999999999979 0.0 588
-589 0.00367999076843262 0.0 0.0 0.0 589
-590 0.0036320686340332 0.0 0.0 0.0 590
-591 0.00362491607666016 0.00999999999999979 0.00999999999999979 0.0 591
-592 0.00367593765258789 0.0 0.0 0.0 592
-593 0.0036461353302002 0.00999999999999979 0.00999999999999979 0.0 593
-594 0.00365996360778809 0.0 0.0 0.0 594
-595 0.003662109375 0.0 0.0 0.0 595
-596 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 596
-597 0.00371479988098145 0.0 0.0 0.0 597
-598 0.00362610816955566 0.0 0.0 0.0 598
-599 0.00365614891052246 0.0100000000000016 0.0100000000000016 0.0 599
-600 0.00365400314331055 0.0 0.0 0.0 600
-601 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 601
-602 0.00363492965698242 0.0 0.0 0.0 602
-603 0.0036320686340332 0.0 0.0 0.0 603
-604 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 604
-605 0.00368785858154297 0.0 0.0 0.0 605
-606 0.00367999076843262 0.0 0.0 0.0 606
-607 0.0295491218566895 0.0299999999999994 0.0299999999999994 0.0 607
-608 0.00367212295532227 0.00999999999999979 0.00999999999999979 0.0 608
-609 0.00368118286132812 0.0 0.0 0.0 609
-610 0.00368499755859375 0.0 0.0 0.0 610
-611 0.00374102592468262 0.00999999999999979 0.00999999999999979 0.0 611
-612 0.00428009033203125 0.0 0.0 0.0 612
-613 0.00475502014160156 0.0100000000000016 0.0100000000000016 0.0 613
-614 0.00373005867004395 0.0 0.0 0.0 614
-615 0.00372791290283203 0.00999999999999979 0.00999999999999979 0.0 615
-616 0.00373196601867676 0.0 0.0 0.0 616
-617 0.00375008583068848 0.0 0.0 0.0 617
-618 0.00374102592468262 0.00999999999999979 0.00999999999999979 0.0 618
-619 0.00374102592468262 0.0 0.0 0.0 619
-620 0.00369095802307129 0.0 0.0 0.0 620
-621 0.00368785858154297 0.00999999999999979 0.00999999999999979 0.0 621
-622 0.00369095802307129 0.0 0.0 0.0 622
-623 0.0036778450012207 0.00999999999999979 0.00999999999999979 0.0 623
-624 0.0036468505859375 0.0 0.0 0.0 624
-625 0.00369906425476074 0.0 0.0 0.0 625
-626 0.00376510620117188 0.00999999999999979 0.00999999999999979 0.0 626
-627 0.00364899635314941 0.0 0.0 0.0 627
-628 0.00363397598266602 0.0 0.0 0.0 628
-629 0.00383210182189941 0.00999999999999979 0.00999999999999979 0.0 629
-630 0.00394892692565918 0.0 0.0 0.0 630
-631 0.00367307662963867 0.00999999999999979 0.00999999999999979 0.0 631
-632 0.0036311149597168 0.0 0.0 0.0 632
-633 0.00366497039794922 0.0 0.0 0.0 633
-634 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 634
-635 0.0036308765411377 0.0 0.0 0.0 635
-636 0.00362706184387207 0.0 0.0 0.0 636
-637 0.00366306304931641 0.0100000000000016 0.0100000000000016 0.0 637
-638 0.0036468505859375 0.0 0.0 0.0 638
-639 0.00365710258483887 0.0 0.0 0.0 639
-640 0.00370287895202637 0.00999999999999979 0.00999999999999979 0.0 640
-641 0.00424313545227051 0.0 0.0 0.0 641
-642 0.00360798835754395 0.00999999999999979 0.00999999999999979 0.0 642
-643 0.00641298294067383 0.0 0.0 0.0 643
-644 0.0336699485778809 0.0399999999999991 0.0399999999999991 0.0 644
-645 0.00376391410827637 0.0 0.0 0.0 645
-646 0.00372314453125 0.0 0.0 0.0 646
-647 0.00375103950500488 0.00999999999999979 0.00999999999999979 0.0 647
-648 0.00373101234436035 0.0 0.0 0.0 648
-649 0.00373196601867676 0.0 0.0 0.0 649
-650 0.00368499755859375 0.0100000000000016 0.0100000000000016 0.0 650
-651 0.00377416610717773 0.0 0.0 0.0 651
-652 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 652
-653 0.0036919116973877 0.0 0.0 0.0 653
-654 0.00371813774108887 0.0 0.0 0.0 654
-655 0.00372219085693359 0.00999999999999979 0.00999999999999979 0.0 655
-656 0.00370907783508301 0.0 0.0 0.0 656
-657 0.00366401672363281 0.0 0.0 0.0 657
-658 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 658
-659 0.00368309020996094 0.0 0.0 0.0 659
-660 0.00367307662963867 0.00999999999999979 0.00999999999999979 0.0 660
-661 0.00363898277282715 0.0 0.0 0.0 661
-662 0.003662109375 0.0 0.0 0.0 662
-663 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 663
-664 0.00363302230834961 0.0 0.0 0.0 664
-665 0.00366091728210449 0.0 0.0 0.0 665
-666 0.0036771297454834 0.00999999999999979 0.00999999999999979 0.0 666
-667 0.00365710258483887 0.0 0.0 0.0 667
-668 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 668
-669 0.00365900993347168 0.0 0.0 0.0 669
-670 0.00479602813720703 0.0 0.0 0.0 670
-671 0.0047600269317627 0.0100000000000016 0.0100000000000016 0.0 671
-672 0.00367999076843262 0.0 0.0 0.0 672
-673 0.00362992286682129 0.00999999999999979 0.00999999999999979 0.0 673
-674 0.00359392166137695 0.0 0.0 0.0 674
-675 0.00365710258483887 0.0 0.0 0.0 675
-676 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 676
-677 0.00373482704162598 0.0 0.0 0.0 677
-678 0.00359201431274414 0.0 0.0 0.0 678
-679 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 679
-680 0.0036919116973877 0.0 0.0 0.0 680
-681 0.00368595123291016 0.00999999999999979 0.00999999999999979 0.0 681
-682 0.0298888683319092 0.0299999999999994 0.0299999999999994 0.0 682
-683 0.00371694564819336 0.0 0.0 0.0 683
-684 0.00372409820556641 0.0 0.0 0.0 684
-685 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 685
-686 0.00372695922851562 0.0 0.0 0.0 686
-687 0.00368809700012207 0.0 0.0 0.0 687
-688 0.0036931037902832 0.0100000000000016 0.0100000000000016 0.0 688
-689 0.00371003150939941 0.0 0.0 0.0 689
-690 0.00369119644165039 0.0 0.0 0.0 690
-691 0.00370192527770996 0.0 0.0 0.0 691
-692 0.00372600555419922 0.0 0.0 0.0 692
-693 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 693
-694 0.00371193885803223 0.0 0.0 0.0 694
-695 0.00369095802307129 0.0 0.0 0.0 695
-696 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 696
-697 0.00373601913452148 0.0 0.0 0.0 697
-698 0.00366497039794922 0.0 0.0 0.0 698
-699 0.00366806983947754 0.0 0.0 0.0 699
-700 0.00364398956298828 0.0 0.0 0.0 700
-701 0.00358295440673828 0.00999999999999979 0.00999999999999979 0.0 701
-702 0.00363898277282715 0.0 0.0 0.0 702
-703 0.00365304946899414 0.0 0.0 0.0 703
-704 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 704
-705 0.00362300872802734 0.0 0.0 0.0 705
-706 0.00362801551818848 0.0 0.0 0.0 706
-707 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 707
-708 0.00362491607666016 0.0 0.0 0.0 708
-709 0.00363707542419434 0.0100000000000016 0.0100000000000016 0.0 709
-710 0.00364804267883301 0.0 0.0 0.0 710
-711 0.00362610816955566 0.0 0.0 0.0 711
-712 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 712
-713 0.00364398956298828 0.0 0.0 0.0 713
-714 0.00365400314331055 0.0 0.0 0.0 714
-715 0.00364518165588379 0.00999999999999979 0.00999999999999979 0.0 715
-716 0.00361394882202148 0.0 0.0 0.0 716
-717 0.00368309020996094 0.00999999999999979 0.00999999999999979 0.0 717
-718 0.00363492965698242 0.0 0.0 0.0 718
-719 0.0291500091552734 0.0299999999999994 0.0299999999999994 0.0 719
-720 0.00372695922851562 0.0 0.0 0.0 720
-721 0.00369691848754883 0.00999999999999979 0.00999999999999979 0.0 721
-722 0.0036919116973877 0.0 0.0 0.0 722
-723 0.00575518608093262 0.0100000000000016 0.0100000000000016 0.0 723
-724 0.00409793853759766 0.0 0.0 0.0 724
-725 0.00376510620117188 0.0 0.0 0.0 725
-726 0.00382494926452637 0.00999999999999979 0.00999999999999979 0.0 726
-727 0.00373482704162598 0.0 0.0 0.0 727
-728 0.00375699996948242 0.0 0.0 0.0 728
-729 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 729
-730 0.00372695922851562 0.0 0.0 0.0 730
-731 0.00370311737060547 0.00999999999999979 0.00999999999999979 0.0 731
-732 0.00367593765258789 0.0 0.0 0.0 732
-733 0.00520992279052734 0.0 0.0 0.0 733
-734 0.00372195243835449 0.00999999999999979 0.00999999999999979 0.0 734
-735 0.00368905067443848 0.0 0.0 0.0 735
-736 0.00366616249084473 0.00999999999999979 0.00999999999999979 0.0 736
-737 0.00368809700012207 0.0 0.0 0.0 737
-738 0.00368499755859375 0.0 0.0 0.0 738
-739 0.00387406349182129 0.00999999999999979 0.00999999999999979 0.0 739
-740 0.00513005256652832 0.0 0.0 0.0 740
-741 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 741
-742 0.00371885299682617 0.0 0.0 0.0 742
-743 0.00364398956298828 0.0 0.0 0.0 743
-744 0.00364589691162109 0.00999999999999979 0.00999999999999979 0.0 744
-745 0.00363993644714355 0.0 0.0 0.0 745
-746 0.00364089012145996 0.0 0.0 0.0 746
-747 0.00361490249633789 0.0100000000000016 0.0100000000000016 0.0 747
-748 0.00366783142089844 0.0 0.0 0.0 748
-749 0.00363898277282715 0.0 0.0 0.0 749
-750 0.00363612174987793 0.00999999999999979 0.00999999999999979 0.0 750
-751 0.0036470890045166 0.0 0.0 0.0 751
-752 0.00362300872802734 0.00999999999999979 0.00999999999999979 0.0 752
-753 0.00365209579467773 0.0 0.0 0.0 753
-754 0.00367999076843262 0.0 0.0 0.0 754
-755 0.0036628246307373 0.00999999999999979 0.00999999999999979 0.0 755
-756 0.0293610095977783 0.0299999999999994 0.0299999999999994 0.0 756
-757 0.00370907783508301 0.0 0.0 0.0 757
-758 0.00370001792907715 0.0 0.0 0.0 758
-759 0.00371313095092773 0.00999999999999979 0.00999999999999979 0.0 759
-760 0.00373601913452148 0.0 0.0 0.0 760
-761 0.00375699996948242 0.0100000000000016 0.0100000000000016 0.0 761
-762 0.00379014015197754 0.0 0.0 0.0 762
-763 0.00373101234436035 0.0 0.0 0.0 763
-764 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 764
-765 0.00373291969299316 0.0 0.0 0.0 765
-766 0.0037081241607666 0.0 0.0 0.0 766
-767 0.00425601005554199 0.00999999999999979 0.00999999999999979 0.0 767
-768 0.00375699996948242 0.0 0.0 0.0 768
-769 0.0037529468536377 0.00999999999999979 0.00999999999999979 0.0 769
-770 0.00371789932250977 0.0 0.0 0.0 770
-771 0.0037229061126709 0.0 0.0 0.0 771
-772 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 772
-773 0.00370311737060547 0.0 0.0 0.0 773
-774 0.00365304946899414 0.0 0.0 0.0 774
-775 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 775
-776 0.00362801551818848 0.0 0.0 0.0 776
-777 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 777
-778 0.00365209579467773 0.0 0.0 0.0 778
-779 0.00366592407226562 0.0 0.0 0.0 779
-780 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 780
-781 0.00458216667175293 0.0 0.0 0.0 781
-782 0.00462603569030762 0.0100000000000016 0.0100000000000016 0.0 782
-783 0.00362300872802734 0.0 0.0 0.0 783
-784 0.00360298156738281 0.0 0.0 0.0 784
-785 0.00363993644714355 0.00999999999999979 0.00999999999999979 0.0 785
-786 0.00367403030395508 0.0 0.0 0.0 786
-787 0.00365209579467773 0.0 0.0 0.0 787
-788 0.00373411178588867 0.00999999999999979 0.00999999999999979 0.0 788
-789 0.0038609504699707 0.0 0.0 0.0 789
-790 0.00365781784057617 0.00999999999999979 0.00999999999999979 0.0 790
-791 0.00362110137939453 0.0 0.0 0.0 791
-792 0.00369000434875488 0.0 0.0 0.0 792
-793 0.0307409763336182 0.0299999999999994 0.0299999999999994 0.0 793
-794 0.00374913215637207 0.00999999999999979 0.00999999999999979 0.0 794
-795 0.00369882583618164 0.0 0.0 0.0 795
-796 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 796
-797 0.00375890731811523 0.0 0.0 0.0 797
-798 0.00378894805908203 0.0 0.0 0.0 798
-799 0.00387096405029297 0.0100000000000016 0.0100000000000016 0.0 799
-800 0.00368213653564453 0.0 0.0 0.0 800
-801 0.00372719764709473 0.0 0.0 0.0 801
-802 0.00373101234436035 0.00999999999999979 0.00999999999999979 0.0 802
-803 0.00372600555419922 0.0 0.0 0.0 803
-804 0.00373411178588867 0.00999999999999979 0.00999999999999979 0.0 804
-805 0.00366687774658203 0.0 0.0 0.0 805
-806 0.00370907783508301 0.0 0.0 0.0 806
-807 0.0036921501159668 0.00999999999999979 0.00999999999999979 0.0 807
-808 0.00377511978149414 0.0 0.0 0.0 808
-809 0.00365090370178223 0.0 0.0 0.0 809
-810 0.00374388694763184 0.00999999999999979 0.00999999999999979 0.0 810
-811 0.0036778450012207 0.0 0.0 0.0 811
-812 0.0036780834197998 0.00999999999999979 0.00999999999999979 0.0 812
-813 0.00362801551818848 0.0 0.0 0.0 813
-814 0.00365304946899414 0.0 0.0 0.0 814
-815 0.00363516807556152 0.00999999999999979 0.00999999999999979 0.0 815
-816 0.00369000434875488 0.0 0.0 0.0 816
-817 0.00373196601867676 0.0 0.0 0.0 817
-818 0.00360512733459473 0.00999999999999979 0.00999999999999979 0.0 818
-819 0.00361204147338867 0.0 0.0 0.0 819
-820 0.00362610816955566 0.0100000000000016 0.0100000000000016 0.0 820
-821 0.00365090370178223 0.0 0.0 0.0 821
-822 0.00360703468322754 0.0 0.0 0.0 822
-823 0.00362896919250488 0.00999999999999979 0.00999999999999979 0.0 823
-824 0.0036468505859375 0.0 0.0 0.0 824
-825 0.0036320686340332 0.0 0.0 0.0 825
-826 0.00362610816955566 0.00999999999999979 0.00999999999999979 0.0 826
-827 0.00365090370178223 0.0 0.0 0.0 827
-828 0.00363516807556152 0.00999999999999979 0.00999999999999979 0.0 828
-829 0.00368213653564453 0.0 0.0 0.0 829
-830 0.0292301177978516 0.0299999999999994 0.0299999999999994 0.0 830
-831 0.0037531852722168 0.0 0.0 0.0 831
-832 0.00371718406677246 0.00999999999999979 0.00999999999999979 0.0 832
-833 0.0037989616394043 0.0 0.0 0.0 833
-834 0.00615215301513672 0.0100000000000016 0.0100000000000016 0.0 834
-835 0.00377607345581055 0.0 0.0 0.0 835
-836 0.00370907783508301 0.0 0.0 0.0 836
-837 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 837
-838 0.00375103950500488 0.0 0.0 0.0 838
-839 0.00372099876403809 0.0 0.0 0.0 839
-840 0.00375795364379883 0.00999999999999979 0.00999999999999979 0.0 840
-841 0.00370502471923828 0.0 0.0 0.0 841
-842 0.00369787216186523 0.00999999999999979 0.00999999999999979 0.0 842
-843 0.00369501113891602 0.0 0.0 0.0 843
-844 0.00370883941650391 0.0 0.0 0.0 844
-845 0.00371408462524414 0.00999999999999979 0.00999999999999979 0.0 845
-846 0.00368404388427734 0.0 0.0 0.0 846
-847 0.0038149356842041 0.0 0.0 0.0 847
-848 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 848
-849 0.00365686416625977 0.0 0.0 0.0 849
-850 0.00383400917053223 0.00999999999999979 0.00999999999999979 0.0 850
-851 0.00394606590270996 0.0 0.0 0.0 851
-852 0.00365996360778809 0.0 0.0 0.0 852
-853 0.00365495681762695 0.00999999999999979 0.00999999999999979 0.0 853
-854 0.00370621681213379 0.0 0.0 0.0 854
-855 0.0036461353302002 0.0 0.0 0.0 855
-856 0.00365281105041504 0.00999999999999979 0.00999999999999979 0.0 856
-857 0.00365686416625977 0.0 0.0 0.0 857
-858 0.00365400314331055 0.0100000000000016 0.0100000000000016 0.0 858
-859 0.00363683700561523 0.0 0.0 0.0 859
-860 0.00365209579467773 0.0 0.0 0.0 860
-861 0.00365614891052246 0.00999999999999979 0.00999999999999979 0.0 861
-862 0.00419211387634277 0.0 0.0 0.0 862
-863 0.00362920761108398 0.0 0.0 0.0 863
-864 0.0062098503112793 0.0 0.0 0.0 864
-865 0.00613093376159668 0.00999999999999979 0.00999999999999979 0.0 865
-866 0.00604104995727539 0.0 0.0 0.0 866
-867 0.0290992259979248 0.0299999999999994 0.0299999999999994 0.0 867
-868 0.00398516654968262 0.00999999999999979 0.00999999999999979 0.0 868
-869 0.00370597839355469 0.0 0.0 0.0 869
-870 0.00374913215637207 0.0 0.0 0.0 870
-871 0.00371384620666504 0.0100000000000016 0.0100000000000016 0.0 871
-872 0.00374984741210938 0.0 0.0 0.0 872
-873 0.00371623039245605 0.00999999999999979 0.00999999999999979 0.0 873
-874 0.00370502471923828 0.0 0.0 0.0 874
-875 0.00371003150939941 0.0 0.0 0.0 875
-876 0.00368094444274902 0.00999999999999979 0.00999999999999979 0.0 876
-877 0.00372886657714844 0.0 0.0 0.0 877
-878 0.00374293327331543 0.0 0.0 0.0 878
-879 0.00372195243835449 0.00999999999999979 0.00999999999999979 0.0 879
-880 0.00373101234436035 0.0 0.0 0.0 880
-881 0.00373005867004395 0.00999999999999979 0.00999999999999979 0.0 881
-882 0.00367903709411621 0.0 0.0 0.0 882
-883 0.00371694564819336 0.0 0.0 0.0 883
-884 0.00383996963500977 0.00999999999999979 0.00999999999999979 0.0 884
-885 0.00367379188537598 0.0 0.0 0.0 885
-886 0.00366806983947754 0.0 0.0 0.0 886
-887 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 887
-888 0.00361895561218262 0.0 0.0 0.0 888
-889 0.00358295440673828 0.00999999999999979 0.00999999999999979 0.0 889
-890 0.00368213653564453 0.0 0.0 0.0 890
-891 0.0056309700012207 0.0 0.0 0.0 891
-892 0.00402593612670898 0.0 0.0 0.0 892
-893 0.00361013412475586 0.0 0.0 0.0 893
-894 0.00365805625915527 0.00999999999999979 0.00999999999999979 0.0 894
-895 0.00363683700561523 0.0 0.0 0.0 895
-896 0.00369787216186523 0.0 0.0 0.0 896
-897 0.00366902351379395 0.00999999999999979 0.00999999999999979 0.0 897
-898 0.00373387336730957 0.0 0.0 0.0 898
-899 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 899
-900 0.00363802909851074 0.0 0.0 0.0 900
-901 0.00359702110290527 0.0 0.0 0.0 901
-902 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 902
-903 0.00368189811706543 0.0 0.0 0.0 903
-904 0.0309450626373291 0.0299999999999994 0.0299999999999994 0.0 904
-905 0.00368690490722656 0.0 0.0 0.0 905
-906 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 906
-907 0.00382113456726074 0.0 0.0 0.0 907
-908 0.00382494926452637 0.0100000000000016 0.0100000000000016 0.0 908
-909 0.00365877151489258 0.0 0.0 0.0 909
-910 0.00371003150939941 0.0 0.0 0.0 910
-911 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 911
-912 0.00368905067443848 0.0 0.0 0.0 912
-913 0.00370502471923828 0.0 0.0 0.0 913
-914 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 914
-915 0.00374484062194824 0.0 0.0 0.0 915
-916 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 916
-917 0.00371503829956055 0.0 0.0 0.0 917
-918 0.00377702713012695 0.0 0.0 0.0 918
-919 0.00374889373779297 0.00999999999999979 0.00999999999999979 0.0 919
-920 0.00369787216186523 0.0 0.0 0.0 920
-921 0.00368094444274902 0.0 0.0 0.0 921
-922 0.00360298156738281 0.0 0.0 0.0 922
-923 0.00363612174987793 0.0 0.0 0.0 923
-924 0.00366091728210449 0.00999999999999979 0.00999999999999979 0.0 924
-925 0.00364089012145996 0.0 0.0 0.0 925
-926 0.0036780834197998 0.0 0.0 0.0 926
-927 0.00362300872802734 0.00999999999999979 0.00999999999999979 0.0 927
-928 0.00365400314331055 0.0 0.0 0.0 928
-929 0.00363397598266602 0.0 0.0 0.0 929
-930 0.00364303588867188 0.0100000000000016 0.0100000000000016 0.0 930
-931 0.00363302230834961 0.0 0.0 0.0 931
-932 0.0036160945892334 0.00999999999999979 0.00999999999999979 0.0 932
-933 0.00370216369628906 0.0 0.0 0.0 933
-934 0.00365400314331055 0.0 0.0 0.0 934
-935 0.00365090370178223 0.00999999999999979 0.00999999999999979 0.0 935
-936 0.00369095802307129 0.0 0.0 0.0 936
-937 0.00361013412475586 0.0 0.0 0.0 937
-938 0.00361990928649902 0.00999999999999979 0.00999999999999979 0.0 938
-939 0.0036778450012207 0.0 0.0 0.0 939
-940 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 940
-941 0.0296061038970947 0.0199999999999996 0.0199999999999996 0.0 941
-942 0.00377488136291504 0.00999999999999979 0.00999999999999979 0.0 942
-943 0.00529098510742188 0.0 0.0 0.0 943
-944 0.0046539306640625 0.0100000000000016 0.0100000000000016 0.0 944
-945 0.00372815132141113 0.0 0.0 0.0 945
-946 0.00383687019348145 0.00999999999999979 0.00999999999999979 0.0 946
-947 0.00372600555419922 0.0 0.0 0.0 947
-948 0.00372004508972168 0.0 0.0 0.0 948
-949 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 949
-950 0.00370383262634277 0.0 0.0 0.0 950
-951 0.0037238597869873 0.00999999999999979 0.00999999999999979 0.0 951
-952 0.00373983383178711 0.00999999999999979 0.0 0.01 952
-953 0.00368404388427734 0.0 0.0 0.0 953
-954 0.00569581985473633 0.00999999999999979 0.00999999999999979 0.0 954
-955 0.00375699996948242 0.0 0.0 0.0 955
-956 0.00373697280883789 0.0 0.0 0.0 956
-957 0.00367903709411621 0.00999999999999979 0.00999999999999979 0.0 957
-958 0.00369405746459961 0.0 0.0 0.0 958
-959 0.00399684906005859 0.00999999999999979 0.00999999999999979 0.0 959
-960 0.00383996963500977 0.0 0.0 0.0 960
-961 0.00363612174987793 0.0 0.0 0.0 961
-962 0.00361013412475586 0.00999999999999979 0.00999999999999979 0.0 962
-963 0.00373411178588867 0.0 0.0 0.0 963
-964 0.00365495681762695 0.0 0.0 0.0 964
-965 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 965
-966 0.00362300872802734 0.0 0.0 0.0 966
-967 0.00367403030395508 0.0100000000000016 0.0100000000000016 0.0 967
-968 0.00365304946899414 0.0 0.0 0.0 968
-969 0.00368213653564453 0.0 0.0 0.0 969
-970 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 970
-971 0.00365900993347168 0.0 0.0 0.0 971
-972 0.00365519523620605 0.0 0.0 0.0 972
-973 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 973
-974 0.00362801551818848 0.0 0.0 0.0 974
-975 0.00365090370178223 0.0 0.0 0.0 975
-976 0.00363993644714355 0.0 0.0 0.0 976
-977 0.00367403030395508 0.0 0.0 0.0 977
-978 0.0291531085968018 0.0299999999999994 0.0299999999999994 0.0 978
-979 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 979
-980 0.00370097160339355 0.0 0.0 0.0 980
-981 0.00372910499572754 0.0 0.0 0.0 981
-982 0.00373220443725586 0.0100000000000016 0.0100000000000016 0.0 982
-983 0.00378298759460449 0.0 0.0 0.0 983
-984 0.00374412536621094 0.0 0.0 0.0 984
-985 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 985
-986 0.00369501113891602 0.0 0.0 0.0 986
-987 0.0042259693145752 0.00999999999999979 0.00999999999999979 0.0 987
-988 0.00376200675964355 0.0 0.0 0.0 988
-989 0.00373697280883789 0.0 0.0 0.0 989
-990 0.00372409820556641 0.00999999999999979 0.00999999999999979 0.0 990
-991 0.00370192527770996 0.0 0.0 0.0 991
-992 0.00368189811706543 0.0 0.0 0.0 992
-993 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 993
-994 0.00371217727661133 0.0 0.0 0.0 994
-995 0.0036919116973877 0.00999999999999979 0.00999999999999979 0.0 995
-996 0.00366711616516113 0.0 0.0 0.0 996
-997 0.00371313095092773 0.0 0.0 0.0 997
-998 0.00365209579467773 0.00999999999999979 0.00999999999999979 0.0 998
-999 0.00362896919250488 0.0 0.0 0.0 999
-1000 0.00367307662963867 0.0 0.0 0.0 1000
diff --git a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log b/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log
deleted file mode 100644
index d8a6aa314..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log
+++ /dev/null
@@ -1,82 +0,0 @@
-========================== 2009-04-01T16:46:41 CEST ===========================
-Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux].
-Running 'ParserBenchmarkYAML' for 1000 iterations/method (compare_time=real)
-===============================================================================
-
-This first run is only for warmup.
-ParserBenchmarkYAML#parser:
- real total user system
-sum 4.506546021 4.490000000 4.480000000 0.010000000
-min 0.003598928 0.000000000 0.000000000 0.000000000
-std- 0.000288588 -0.001817113 -0.001826296 -0.000306228
-mean 0.004506546 0.004490000 0.004480000 0.000010000
-std+ 0.008724504 0.010797113 0.010786296 0.000326228
-max 0.042540073 0.040000000 0.040000000 0.010000000
-std 0.004217958 0.006307113 0.006306296 0.000316228
-std% 93.596247306 140.470232048 140.765535944 3162.277660168
-harm 0.003882332 nan nan nan
-geo 0.004019118 0.000000000 0.000000000 0.000000000
-q1 0.003660917 0.000000000 0.000000000 0.000000000
-med 0.003705978 0.000000000 0.000000000 0.000000000
-q3 0.003748715 0.010000000 0.010000000 0.000000000
- 1000 221.89943 0.004506546
- calls calls/sec secs/call
-
- 0.04059 -|
- 0.03670 -|
- 0.03280 -|
- 0.02891 -|*
- 0.02502 -|
- 0.02112 -|
- 0.01723 -|
- 0.01333 -|
- 0.00944 -|
- 0.00555 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00371, iqr=0.00009, factor=3.00):
-high=56 very_high=119
-
-Ljung-Box statistics: q=433.20488 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-ParserBenchmarkYAML#parser:
- real total user system
-sum 4.454077959 4.430000000 4.420000000 0.010000000
-min 0.003582954 0.000000000 0.000000000 0.000000000
-std- 0.000263948 -0.001903657 -0.001912749 -0.000306228
-mean 0.004454078 0.004430000 0.004420000 0.000010000
-std+ 0.008644208 0.010763657 0.010752749 0.000326228
-max 0.035927057 0.040000000 0.040000000 0.010000000
-std 0.004190130 0.006333657 0.006332749 0.000316228
-std% 94.074019869 142.971948832 143.274853190 3162.277660168
-harm 0.003836471 nan nan nan
-geo 0.003968258 0.000000000 0.000000000 0.000000000
-q1 0.003650367 0.000000000 0.000000000 0.000000000
-med 0.003690004 0.000000000 0.000000000 0.000000000
-q3 0.003731966 0.010000000 0.010000000 0.000000000
- 1000 224.51336 0.004454078
- calls calls/sec secs/call
-
- 0.03431 -|
- 0.03108 -|*
- 0.02784 -|*
- 0.02461 -|
- 0.02137 -|
- 0.01814 -|
- 0.01490 -|
- 0.01167 -|
- 0.00843 -|
- 0.00520 -|**************************************************
-
-Outliers detected with box plot algo (median=0.00369, iqr=0.00008, factor=3.00):
-high=58 very_high=100
-
-Ljung-Box statistics: q=451.12745 (alpha=0.05, df=50).
-1.00000 >= 0.95000 => Autocorrelation was detected.
-
-No initial data truncated.
- => System may have been in a steady state from the beginning.
-========================== 2009-04-01T16:46:54 CEST ===========================
-
-Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkYAML#parser.dat'.
-Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkYAML#parser-autocorrelation.dat'.
diff --git a/vendor/gems/json-1.5.1/benchmarks/generator2_benchmark.rb b/vendor/gems/json-1.5.1/benchmarks/generator2_benchmark.rb
deleted file mode 100755
index 9885143ed..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/generator2_benchmark.rb
+++ /dev/null
@@ -1,222 +0,0 @@
-#!/usr/bin/env ruby
-# CODING: UTF-8
-
-require 'rbconfig'
-RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
-RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake')
-require 'bullshit'
-case ARGV.first
-when 'ext'
- require 'json/ext'
-when 'pure'
- require 'json/pure'
-when 'rails'
- require 'active_support'
-when 'yajl'
- require 'yajl'
- require 'yajl/json_gem'
- require 'stringio'
-end
-
-module JSON
- def self.[](*) end
-end
-
-module Generator2BenchmarkCommon
- include JSON
-
- def setup
- @big = eval File.read(File.join(File.dirname(__FILE__), 'ohai.ruby'))
- end
-
- def generic_reset_method
- @result and @result.size >= 16 or raise @result.to_s
- end
-end
-
-module JSONGeneratorCommon
- include Generator2BenchmarkCommon
-
- def benchmark_generator_fast
- @result = JSON.fast_generate(@big)
- end
-
- alias reset_benchmark_generator_fast generic_reset_method
-
- def benchmark_generator_safe
- @result = JSON.generate(@big)
- end
-
- alias reset_benchmark_generator_safe generic_reset_method
-
- def benchmark_generator_pretty
- @result = JSON.pretty_generate(@big)
- end
-
- alias reset_benchmark_generator_pretty generic_reset_method
-
- def benchmark_generator_ascii
- @result = JSON.generate(@big, :ascii_only => true)
- end
-
- alias reset_benchmark_generator_ascii generic_reset_method
-end
-
-class Generator2BenchmarkExt < Bullshit::RepeatCase
- include JSONGeneratorCommon
-
- warmup yes
- iterations 2000
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-end
-
-class Generator2BenchmarkPure < Bullshit::RepeatCase
- include JSONGeneratorCommon
-
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-end
-
-class Generator2BenchmarkRails < Bullshit::RepeatCase
- include Generator2BenchmarkCommon
-
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def benchmark_generator
- @result = ActiveSupport::JSON.encode @big
- end
-
- alias reset_benchmark_generator generic_reset_method
-end
-
-class Generator2BenchmarkYajl < Bullshit::RepeatCase
- include Generator2BenchmarkCommon
-
- warmup yes
- iterations 2000
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def benchmark_generator
- output = StringIO.new
- Yajl::Encoder.new.encode(@big, output)
- @result = output.string
- end
-
- def benchmark_generator_gem_api
- @result = @big.to_json
- end
-
- def reset_benchmark_generator
- generic_reset_method
- end
-end
-
-if $0 == __FILE__
- Bullshit::Case.autorun false
-
- case ARGV.first
- when 'ext'
- Generator2BenchmarkExt.run
- when 'pure'
- Generator2BenchmarkPure.run
- when 'rails'
- Generator2BenchmarkRails.run
- when 'yajl'
- Generator2BenchmarkYajl.run
- else
- system "#{RAKE_PATH} clean"
- system "#{RUBY_PATH} #$0 rails"
- system "#{RUBY_PATH} #$0 pure"
- system "#{RAKE_PATH} compile_ext"
- system "#{RUBY_PATH} #$0 ext"
- system "#{RUBY_PATH} #$0 yajl"
- Bullshit.compare do
- output_filename File.join(File.dirname(__FILE__), 'data', 'Generator2BenchmarkComparison.log')
-
- benchmark Generator2BenchmarkExt, :generator_fast, :load => yes
- benchmark Generator2BenchmarkExt, :generator_safe, :load => yes
- benchmark Generator2BenchmarkExt, :generator_pretty, :load => yes
- benchmark Generator2BenchmarkExt, :generator_ascii, :load => yes
- benchmark Generator2BenchmarkPure, :generator_fast, :load => yes
- benchmark Generator2BenchmarkPure, :generator_safe, :load => yes
- benchmark Generator2BenchmarkPure, :generator_pretty, :load => yes
- benchmark Generator2BenchmarkPure, :generator_ascii, :load => yes
- benchmark Generator2BenchmarkRails, :generator, :load => yes
- benchmark Generator2BenchmarkYajl, :generator, :load => yes
- benchmark Generator2BenchmarkYajl, :generator_gem_api, :load => yes
- end
- end
-end
-
diff --git a/vendor/gems/json-1.5.1/benchmarks/generator_benchmark.rb b/vendor/gems/json-1.5.1/benchmarks/generator_benchmark.rb
deleted file mode 100755
index 83fa5776c..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/generator_benchmark.rb
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/usr/bin/env ruby
-# CODING: UTF-8
-
-require 'rbconfig'
-RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
-RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake')
-require 'bullshit'
-case ARGV.first
-when 'ext'
- require 'json/ext'
-when 'pure'
- require 'json/pure'
-when 'rails'
- require 'active_support'
-when 'yajl'
- require 'yajl'
- require 'yajl/json_gem'
- require 'stringio'
-end
-
-module JSON
- def self.[](*) end
-end
-
-module GeneratorBenchmarkCommon
- include JSON
-
- def setup
- a = [ nil, false, true, "fÖßÄr", [ "n€st€d", true ], { "fooß" => "bär", "quux" => true } ]
- puts a.to_json if a.respond_to?(:to_json)
- @big = a * 100
- end
-
- def generic_reset_method
- @result and @result.size > 2 + 6 * @big.size or raise @result.to_s
- end
-end
-
-module JSONGeneratorCommon
- include GeneratorBenchmarkCommon
-
- def benchmark_generator_fast
- @result = JSON.fast_generate(@big)
- end
-
- alias reset_benchmark_generator_fast generic_reset_method
-
- def benchmark_generator_safe
- @result = JSON.generate(@big)
- end
-
- alias reset_benchmark_generator_safe generic_reset_method
-
- def benchmark_generator_pretty
- @result = JSON.pretty_generate(@big)
- end
-
- alias reset_benchmark_generator_pretty generic_reset_method
-
- def benchmark_generator_ascii
- @result = JSON.generate(@big, :ascii_only => true)
- end
-
- alias reset_benchmark_generator_ascii generic_reset_method
-end
-
-class GeneratorBenchmarkExt < Bullshit::RepeatCase
- include JSONGeneratorCommon
-
- warmup yes
- iterations 2000
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-end
-
-class GeneratorBenchmarkPure < Bullshit::RepeatCase
- include JSONGeneratorCommon
-
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-end
-
-class GeneratorBenchmarkRails < Bullshit::RepeatCase
- include GeneratorBenchmarkCommon
-
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def benchmark_generator
- @result = ActiveSupport::JSON.encode @big
- end
-
- alias reset_benchmark_generator generic_reset_method
-end
-
-class GeneratorBenchmarkYajl < Bullshit::RepeatCase
- include GeneratorBenchmarkCommon
-
- warmup yes
- iterations 2000
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def benchmark_generator
- output = StringIO.new
- Yajl::Encoder.new.encode(@big, output)
- @result = output.string
- end
-
- def benchmark_generator_gem_api
- @result = @big.to_json
- end
-
- def reset_benchmark_generator
- generic_reset_method
- end
-end
-
-if $0 == __FILE__
- Bullshit::Case.autorun false
-
- case ARGV.first
- when 'ext'
- GeneratorBenchmarkExt.run
- when 'pure'
- GeneratorBenchmarkPure.run
- when 'rails'
- GeneratorBenchmarkRails.run
- when 'yajl'
- GeneratorBenchmarkYajl.run
- else
- system "#{RAKE_PATH} clean"
- system "#{RUBY_PATH} #$0 rails"
- system "#{RUBY_PATH} #$0 pure"
- system "#{RAKE_PATH} compile_ext"
- system "#{RUBY_PATH} #$0 ext"
- system "#{RUBY_PATH} #$0 yajl"
- Bullshit.compare do
- output_filename File.join(File.dirname(__FILE__), 'data', 'GeneratorBenchmarkComparison.log')
-
- benchmark GeneratorBenchmarkExt, :generator_fast, :load => yes
- benchmark GeneratorBenchmarkExt, :generator_safe, :load => yes
- benchmark GeneratorBenchmarkExt, :generator_pretty, :load => yes
- benchmark GeneratorBenchmarkExt, :generator_ascii, :load => yes
- benchmark GeneratorBenchmarkPure, :generator_fast, :load => yes
- benchmark GeneratorBenchmarkPure, :generator_safe, :load => yes
- benchmark GeneratorBenchmarkPure, :generator_pretty, :load => yes
- benchmark GeneratorBenchmarkPure, :generator_ascii, :load => yes
- benchmark GeneratorBenchmarkRails, :generator, :load => yes
- benchmark GeneratorBenchmarkYajl, :generator, :load => yes
- benchmark GeneratorBenchmarkYajl, :generator_gem_api, :load => yes
- end
- end
-end
-
diff --git a/vendor/gems/json-1.5.1/benchmarks/ohai.json b/vendor/gems/json-1.5.1/benchmarks/ohai.json
deleted file mode 100644
index 584bdbd08..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/ohai.json
+++ /dev/null
@@ -1,1216 +0,0 @@
-{
- "command": {
- "ps": "ps -ef"
- },
- "kernel": {
- "modules": {
- "org.virtualbox.kext.VBoxDrv": {
- "size": 118784,
- "version": "2.2.0",
- "index": "114",
- "refcount": "3"
- },
- "com.cisco.nke.ipsec": {
- "size": 454656,
- "version": "2.0.1",
- "index": "111",
- "refcount": "0"
- },
- "com.apple.driver.AppleAPIC": {
- "size": 12288,
- "version": "1.4",
- "index": "26",
- "refcount": "0"
- },
- "com.apple.driver.AirPort.Atheros": {
- "size": 593920,
- "version": "318.8.3",
- "index": "88",
- "refcount": "0"
- },
- "com.apple.driver.AppleIntelCPUPowerManagement": {
- "size": 102400,
- "version": "59.0.1",
- "index": "22",
- "refcount": "0"
- },
- "com.apple.iokit.IOStorageFamily": {
- "size": 98304,
- "version": "1.5.5",
- "index": "44",
- "refcount": "9"
- },
- "com.apple.iokit.IOATAPIProtocolTransport": {
- "size": 16384,
- "version": "1.5.2",
- "index": "52",
- "refcount": "0"
- },
- "com.apple.iokit.IOPCIFamily": {
- "size": 65536,
- "version": "2.5",
- "index": "17",
- "refcount": "18"
- },
- "com.apple.driver.AppleHPET": {
- "size": 12288,
- "version": "1.3",
- "index": "33",
- "refcount": "0"
- },
- "com.apple.driver.AppleUSBHub": {
- "size": 49152,
- "version": "3.2.7",
- "index": "47",
- "refcount": "0"
- },
- "com.apple.iokit.IOFireWireFamily": {
- "size": 258048,
- "version": "3.4.6",
- "index": "49",
- "refcount": "2"
- },
- "com.apple.driver.AppleUSBComposite": {
- "size": 16384,
- "version": "3.2.0",
- "index": "60",
- "refcount": "1"
- },
- "com.apple.driver.AppleIntelPIIXATA": {
- "size": 36864,
- "version": "2.0.0",
- "index": "41",
- "refcount": "0"
- },
- "com.apple.driver.AppleSmartBatteryManager": {
- "size": 28672,
- "version": "158.6.0",
- "index": "32",
- "refcount": "0"
- },
- "com.apple.filesystems.udf": {
- "size": 233472,
- "version": "2.0.2",
- "index": "119",
- "refcount": "0"
- },
- "com.apple.iokit.IOSMBusFamily": {
- "size": 12288,
- "version": "1.1",
- "index": "27",
- "refcount": "2"
- },
- "com.apple.iokit.IOACPIFamily": {
- "size": 16384,
- "version": "1.2.0",
- "index": "18",
- "refcount": "10"
- },
- "foo.tap": {
- "size": 24576,
- "version": "1.0",
- "index": "113",
- "refcount": "0"
- },
- "com.vmware.kext.vmx86": {
- "size": 864256,
- "version": "2.0.4",
- "index": "104",
- "refcount": "0"
- },
- "com.apple.iokit.CHUDUtils": {
- "size": 28672,
- "version": "200",
- "index": "98",
- "refcount": "0"
- },
- "org.virtualbox.kext.VBoxNetAdp": {
- "size": 8192,
- "version": "2.2.0",
- "index": "117",
- "refcount": "0"
- },
- "com.apple.filesystems.autofs": {
- "size": 45056,
- "version": "2.0.1",
- "index": "109",
- "refcount": "0"
- },
- "com.vmware.kext.vmnet": {
- "size": 36864,
- "version": "2.0.4",
- "index": "108",
- "refcount": "0"
- },
- "com.apple.driver.AppleACPIButtons": {
- "size": 16384,
- "version": "1.2.4",
- "index": "30",
- "refcount": "0"
- },
- "com.apple.driver.AppleFWOHCI": {
- "size": 139264,
- "version": "3.7.2",
- "index": "50",
- "refcount": "0"
- },
- "com.apple.iokit.IOSCSIArchitectureModelFamily": {
- "size": 102400,
- "version": "2.0.5",
- "index": "51",
- "refcount": "4"
- },
- "com.apple.iokit.IOSCSIBlockCommandsDevice": {
- "size": 90112,
- "version": "2.0.5",
- "index": "57",
- "refcount": "1"
- },
- "com.apple.driver.AppleACPIPCI": {
- "size": 12288,
- "version": "1.2.4",
- "index": "31",
- "refcount": "0"
- },
- "com.apple.security.seatbelt": {
- "size": 98304,
- "version": "107.10",
- "index": "25",
- "refcount": "0"
- },
- "com.apple.driver.AppleUpstreamUserClient": {
- "size": 16384,
- "version": "2.7.2",
- "index": "100",
- "refcount": "0"
- },
- "com.apple.kext.OSvKernDSPLib": {
- "size": 12288,
- "version": "1.1",
- "index": "79",
- "refcount": "1"
- },
- "com.apple.iokit.IOBDStorageFamily": {
- "size": 20480,
- "version": "1.5",
- "index": "58",
- "refcount": "1"
- },
- "com.apple.iokit.IOGraphicsFamily": {
- "size": 118784,
- "version": "1.7.1",
- "index": "70",
- "refcount": "5"
- },
- "com.apple.iokit.IONetworkingFamily": {
- "size": 90112,
- "version": "1.6.1",
- "index": "82",
- "refcount": "4"
- },
- "com.apple.iokit.IOATAFamily": {
- "size": 53248,
- "version": "2.0.0",
- "index": "40",
- "refcount": "2"
- },
- "com.apple.iokit.IOUSBHIDDriver": {
- "size": 20480,
- "version": "3.2.2",
- "index": "63",
- "refcount": "2"
- },
- "org.virtualbox.kext.VBoxUSB": {
- "size": 28672,
- "version": "2.2.0",
- "index": "115",
- "refcount": "0"
- },
- "com.vmware.kext.vmioplug": {
- "size": 24576,
- "version": "2.0.4",
- "index": "107",
- "refcount": "0"
- },
- "com.apple.security.TMSafetyNet": {
- "size": 12288,
- "version": "3",
- "index": "23",
- "refcount": "0"
- },
- "com.apple.iokit.IONDRVSupport": {
- "size": 57344,
- "version": "1.7.1",
- "index": "71",
- "refcount": "3"
- },
- "com.apple.BootCache": {
- "size": 20480,
- "version": "30.3",
- "index": "20",
- "refcount": "0"
- },
- "com.apple.iokit.IOUSBUserClient": {
- "size": 8192,
- "version": "3.2.4",
- "index": "46",
- "refcount": "1"
- },
- "com.apple.iokit.IOSCSIMultimediaCommandsDevice": {
- "size": 90112,
- "version": "2.0.5",
- "index": "59",
- "refcount": "0"
- },
- "com.apple.driver.AppleIRController": {
- "size": 20480,
- "version": "110",
- "index": "78",
- "refcount": "0"
- },
- "com.apple.driver.AudioIPCDriver": {
- "size": 16384,
- "version": "1.0.5",
- "index": "81",
- "refcount": "0"
- },
- "org.virtualbox.kext.VBoxNetFlt": {
- "size": 16384,
- "version": "2.2.0",
- "index": "116",
- "refcount": "0"
- },
- "com.apple.driver.AppleLPC": {
- "size": 12288,
- "version": "1.2.11",
- "index": "73",
- "refcount": "0"
- },
- "com.apple.iokit.CHUDKernLib": {
- "size": 20480,
- "version": "196",
- "index": "93",
- "refcount": "2"
- },
- "com.apple.iokit.CHUDProf": {
- "size": 49152,
- "version": "207",
- "index": "97",
- "refcount": "0"
- },
- "com.apple.NVDAResman": {
- "size": 2478080,
- "version": "5.3.6",
- "index": "90",
- "refcount": "2"
- },
- "com.apple.driver.AppleACPIEC": {
- "size": 20480,
- "version": "1.2.4",
- "index": "28",
- "refcount": "0"
- },
- "foo.tun": {
- "size": 24576,
- "version": "1.0",
- "index": "118",
- "refcount": "0"
- },
- "com.apple.iokit.IOSerialFamily": {
- "size": 36864,
- "version": "9.3",
- "index": "102",
- "refcount": "1"
- },
- "com.apple.GeForce": {
- "size": 622592,
- "version": "5.3.6",
- "index": "96",
- "refcount": "0"
- },
- "com.apple.iokit.IOCDStorageFamily": {
- "size": 32768,
- "version": "1.5",
- "index": "55",
- "refcount": "3"
- },
- "com.apple.driver.AppleUSBEHCI": {
- "size": 73728,
- "version": "3.2.5",
- "index": "39",
- "refcount": "0"
- },
- "com.apple.nvidia.nv50hal": {
- "size": 2445312,
- "version": "5.3.6",
- "index": "91",
- "refcount": "0"
- },
- "com.apple.driver.AppleSMBIOS": {
- "size": 16384,
- "version": "1.1.1",
- "index": "29",
- "refcount": "0"
- },
- "com.apple.driver.AppleBacklight": {
- "size": 16384,
- "version": "1.4.4",
- "index": "72",
- "refcount": "0"
- },
- "com.apple.driver.AppleACPIPlatform": {
- "size": 253952,
- "version": "1.2.4",
- "index": "19",
- "refcount": "3"
- },
- "com.apple.iokit.SCSITaskUserClient": {
- "size": 24576,
- "version": "2.0.5",
- "index": "54",
- "refcount": "0"
- },
- "com.apple.iokit.IOHIDFamily": {
- "size": 233472,
- "version": "1.5.3",
- "index": "21",
- "refcount": "7"
- },
- "com.apple.driver.DiskImages": {
- "size": 65536,
- "version": "195.2.2",
- "index": "101",
- "refcount": "0"
- },
- "com.apple.iokit.IODVDStorageFamily": {
- "size": 24576,
- "version": "1.5",
- "index": "56",
- "refcount": "2"
- },
- "com.apple.driver.XsanFilter": {
- "size": 20480,
- "version": "2.7.91",
- "index": "53",
- "refcount": "0"
- },
- "com.apple.driver.AppleEFIRuntime": {
- "size": 12288,
- "version": "1.2.0",
- "index": "35",
- "refcount": "1"
- },
- "com.apple.driver.AppleRTC": {
- "size": 20480,
- "version": "1.2.3",
- "index": "34",
- "refcount": "0"
- },
- "com.apple.iokit.IOFireWireIP": {
- "size": 36864,
- "version": "1.7.6",
- "index": "83",
- "refcount": "0"
- },
- "com.vmware.kext.vmci": {
- "size": 45056,
- "version": "2.0.4",
- "index": "106",
- "refcount": "0"
- },
- "com.apple.iokit.IO80211Family": {
- "size": 126976,
- "version": "215.1",
- "index": "87",
- "refcount": "1"
- },
- "com.apple.nke.applicationfirewall": {
- "size": 32768,
- "version": "1.0.77",
- "index": "24",
- "refcount": "0"
- },
- "com.apple.iokit.IOAHCIBlockStorage": {
- "size": 69632,
- "version": "1.2.0",
- "index": "48",
- "refcount": "0"
- },
- "com.apple.driver.AppleUSBUHCI": {
- "size": 57344,
- "version": "3.2.5",
- "index": "38",
- "refcount": "0"
- },
- "com.apple.iokit.IOAHCIFamily": {
- "size": 24576,
- "version": "1.5.0",
- "index": "42",
- "refcount": "2"
- },
- "com.apple.driver.AppleAHCIPort": {
- "size": 53248,
- "version": "1.5.2",
- "index": "43",
- "refcount": "0"
- },
- "com.apple.driver.AppleEFINVRAM": {
- "size": 24576,
- "version": "1.2.0",
- "index": "36",
- "refcount": "0"
- },
- "com.apple.iokit.IOUSBFamily": {
- "size": 167936,
- "version": "3.2.7",
- "index": "37",
- "refcount": "13"
- },
- "com.apple.driver.AppleUSBMergeNub": {
- "size": 12288,
- "version": "3.2.4",
- "index": "61",
- "refcount": "0"
- }
- },
- "machine": "i386",
- "name": "Darwin",
- "os": "Darwin",
- "version": "Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1\/RELEASE_I386",
- "release": "9.6.0"
- },
- "platform_version": "10.5.6",
- "platform": "mac_os_x",
- "ipaddress": "192.168.88.1",
- "keys": {
- "ssh": {
- "host_dsa_public": "private",
- "host_rsa_public": "private"
- }
- },
- "network": {
- "settings": {
- "net.inet6.ip6.forwarding": "0",
- "net.inet.ip.dummynet.debug": "0",
- "net.inet.ip.rtexpire": "10",
- "net.inet6.ipsec6.esp_trans_deflev": "1",
- "net.inet.tcp.tcbhashsize": "4096",
- "net.key.esp_auth": "0",
- "net.inet6.ip6.hlim": "64",
- "net.inet.ip.fw.dyn_fin_lifetime": "1",
- "net.inet.ip.fw.dyn_udp_lifetime": "10",
- "net.inet.icmp.bmcastecho": "1",
- "net.athforceBias": "2 2",
- "net.athbgscan": "1 1",
- "net.inet.tcp.reass.maxsegments": "2048",
- "net.inet6.ip6.auto_flowlabel": "1",
- "net.inet6.ip6.rtmaxcache": "128",
- "net.inet.tcp.sendspace": "131072",
- "net.inet.tcp.keepinit": "75000",
- "net.inet.ip.dummynet.max_chain_len": "16",
- "net.inet.tcp.rfc1644": "0",
- "net.inet.ip.fw.curr_dyn_buckets": "256",
- "net.inet.ip.dummynet.ready_heap": "0",
- "net.inet.ip.portrange.first": "49152",
- "net.inet.tcp.background_io_trigger": "5",
- "net.link.ether.inet.host_down_time": "20",
- "net.inet6.ipsec6.def_policy": "1",
- "net.inet6.ipsec6.ecn": "0",
- "net.inet.ip.fastforwarding": "0",
- "net.athaddbaignore": "0 0",
- "net.inet6.ip6.v6only": "0",
- "net.inet.tcp.sack": "1",
- "net.inet6.ip6.rtexpire": "3600",
- "net.link.ether.inet.proxyall": "0",
- "net.inet6.ip6.keepfaith": "0",
- "net.key.spi_trycnt": "1000",
- "net.link.ether.inet.prune_intvl": "300",
- "net.inet.tcp.ecn_initiate_out": "0",
- "net.inet.ip.fw.dyn_rst_lifetime": "1",
- "net.local.stream.sendspace": "8192",
- "net.inet.tcp.socket_unlocked_on_output": "1",
- "net.inet.ip.fw.verbose_limit": "0",
- "net.local.dgram.recvspace": "4096",
- "net.inet.ipsec.debug": "0",
- "net.link.ether.inet.log_arp_warnings": "0",
- "net.inet.tcp.ecn_negotiate_in": "0",
- "net.inet.tcp.rfc3465": "1",
- "net.inet.tcp.icmp_may_rst": "1",
- "net.link.ether.inet.sendllconflict": "0",
- "net.inet.ipsec.ah_offsetmask": "0",
- "net.key.blockacq_count": "10",
- "net.inet.tcp.delayed_ack": "3",
- "net.inet.ip.fw.verbose": "2",
- "net.inet.ip.fw.dyn_count": "0",
- "net.inet.tcp.slowlink_wsize": "8192",
- "net.inet6.ip6.fw.enable": "1",
- "net.inet.ip.portrange.hilast": "65535",
- "net.inet.icmp.maskrepl": "0",
- "net.link.ether.inet.apple_hwcksum_rx": "1",
- "net.inet.tcp.drop_synfin": "1",
- "net.key.spi_maxval": "268435455",
- "net.inet.ipsec.ecn": "0",
- "net.inet.ip.fw.dyn_keepalive": "1",
- "net.key.int_random": "60",
- "net.key.debug": "0",
- "net.inet.ip.dummynet.curr_time": "0",
- "net.inet.udp.blackhole": "0",
- "net.athaggrqmin": "1 1",
- "net.athppmenable": "1 1",
- "net.inet.ip.fw.dyn_syn_lifetime": "20",
- "net.inet.tcp.keepidle": "7200000",
- "net.inet6.ip6.tempvltime": "604800",
- "net.inet.tcp.recvspace": "358400",
- "net.inet.tcp.keepintvl": "75000",
- "net.inet.udp.maxdgram": "9216",
- "net.inet.ip.maxchainsent": "0",
- "net.inet.ipsec.esp_net_deflev": "1",
- "net.inet6.icmp6.nd6_useloopback": "1",
- "net.inet.tcp.slowstart_flightsize": "1",
- "net.inet.ip.fw.debug": "0",
- "net.inet.ip.linklocal.in.allowbadttl": "1",
- "net.key.spi_minval": "256",
- "net.inet.ip.forwarding": "0",
- "net.inet.tcp.v6mssdflt": "1024",
- "net.key.larval_lifetime": "30",
- "net.inet6.ip6.fw.verbose_limit": "0",
- "net.inet.ip.dummynet.red_lookup_depth": "256",
- "net.inet.tcp.pcbcount": "36",
- "net.inet.ip.fw.dyn_ack_lifetime": "300",
- "net.inet.ip.portrange.lowlast": "600",
- "net.athCCAThreshold": "28 28",
- "net.link.ether.inet.useloopback": "1",
- "net.athqdepth": "0 0",
- "net.inet.ip.ttl": "64",
- "net.inet.ip.rtmaxcache": "128",
- "net.inet.ipsec.bypass": "0",
- "net.inet6.icmp6.nd6_debug": "0",
- "net.inet.ip.use_route_genid": "1",
- "net.inet6.icmp6.rediraccept": "1",
- "net.inet.ip.fw.static_count": "1",
- "net.inet6.ip6.fw.debug": "0",
- "net.inet.udp.pcbcount": "104",
- "net.inet.ipsec.esp_randpad": "-1",
- "net.inet6.icmp6.nd6_maxnudhint": "0",
- "net.inet.tcp.always_keepalive": "0",
- "net.inet.udp.checksum": "1",
- "net.link.ether.inet.keep_announcements": "1",
- "net.athfixedDropThresh": "150 150",
- "net.inet6.ip6.kame_version": "20010528\/apple-darwin",
- "net.inet.ip.fw.dyn_max": "4096",
- "net.inet.udp.log_in_vain": "0",
- "net.inet6.icmp6.nd6_mmaxtries": "3",
- "net.inet.ip.rtminexpire": "10",
- "net.inet.ip.fw.dyn_buckets": "256",
- "net.inet6.ip6.accept_rtadv": "0",
- "net.inet6.ip6.rr_prune": "5",
- "net.key.ah_keymin": "128",
- "net.inet.ip.redirect": "1",
- "net.inet.tcp.sack_globalmaxholes": "65536",
- "net.inet.ip.keepfaith": "0",
- "net.inet.ip.dummynet.expire": "1",
- "net.inet.ip.gifttl": "30",
- "net.inet.ip.portrange.last": "65535",
- "net.inet.ipsec.ah_net_deflev": "1",
- "net.inet6.icmp6.nd6_delay": "5",
- "net.inet.tcp.packetchain": "50",
- "net.inet6.ip6.hdrnestlimit": "50",
- "net.inet.tcp.newreno": "0",
- "net.inet6.ip6.dad_count": "1",
- "net.inet6.ip6.auto_linklocal": "1",
- "net.inet6.ip6.temppltime": "86400",
- "net.inet.tcp.strict_rfc1948": "0",
- "net.athdupie": "1 1",
- "net.inet.ip.dummynet.red_max_pkt_size": "1500",
- "net.inet.ip.maxfrags": "2048",
- "net.inet.tcp.log_in_vain": "0",
- "net.inet.tcp.rfc1323": "1",
- "net.inet.ip.subnets_are_local": "0",
- "net.inet.ip.dummynet.search_steps": "0",
- "net.inet.icmp.icmplim": "250",
- "net.link.ether.inet.apple_hwcksum_tx": "1",
- "net.inet6.icmp6.redirtimeout": "600",
- "net.inet.ipsec.ah_cleartos": "1",
- "net.inet6.ip6.log_interval": "5",
- "net.link.ether.inet.max_age": "1200",
- "net.inet.ip.fw.enable": "1",
- "net.inet6.ip6.redirect": "1",
- "net.athaggrfmax": "28 28",
- "net.inet.ip.maxfragsperpacket": "128",
- "net.inet6.ip6.use_deprecated": "1",
- "net.link.generic.system.dlil_input_sanity_check": "0",
- "net.inet.tcp.sack_globalholes": "0",
- "net.inet.tcp.reass.cursegments": "0",
- "net.inet6.icmp6.nodeinfo": "3",
- "net.local.inflight": "0",
- "net.inet.ip.dummynet.hash_size": "64",
- "net.inet.ip.dummynet.red_avg_pkt_size": "512",
- "net.inet.ipsec.dfbit": "0",
- "net.inet.tcp.reass.overflows": "0",
- "net.inet.tcp.rexmt_thresh": "2",
- "net.inet6.ip6.maxfrags": "8192",
- "net.inet6.ip6.rtminexpire": "10",
- "net.inet6.ipsec6.esp_net_deflev": "1",
- "net.inet.tcp.blackhole": "0",
- "net.key.esp_keymin": "256",
- "net.inet.ip.check_interface": "0",
- "net.inet.tcp.minmssoverload": "0",
- "net.link.ether.inet.maxtries": "5",
- "net.inet.tcp.do_tcpdrain": "0",
- "net.inet.ipsec.esp_port": "4500",
- "net.inet6.ipsec6.ah_net_deflev": "1",
- "net.inet.ip.dummynet.extract_heap": "0",
- "net.inet.tcp.path_mtu_discovery": "1",
- "net.inet.ip.intr_queue_maxlen": "50",
- "net.inet.ipsec.def_policy": "1",
- "net.inet.ip.fw.autoinc_step": "100",
- "net.inet.ip.accept_sourceroute": "0",
- "net.inet.raw.maxdgram": "8192",
- "net.inet.ip.maxfragpackets": "1024",
- "net.inet.ip.fw.one_pass": "0",
- "net.appletalk.routermix": "2000",
- "net.inet.tcp.tcp_lq_overflow": "1",
- "net.link.generic.system.ifcount": "9",
- "net.link.ether.inet.send_conflicting_probes": "1",
- "net.inet.tcp.background_io_enabled": "1",
- "net.inet6.ipsec6.debug": "0",
- "net.inet.tcp.win_scale_factor": "3",
- "net.key.natt_keepalive_interval": "20",
- "net.inet.tcp.msl": "15000",
- "net.inet.ip.portrange.hifirst": "49152",
- "net.inet.ipsec.ah_trans_deflev": "1",
- "net.inet.tcp.rtt_min": "1",
- "net.inet6.ip6.defmcasthlim": "1",
- "net.inet6.icmp6.nd6_prune": "1",
- "net.inet6.ip6.fw.verbose": "0",
- "net.inet.ip.portrange.lowfirst": "1023",
- "net.inet.tcp.maxseg_unacked": "8",
- "net.local.dgram.maxdgram": "2048",
- "net.key.blockacq_lifetime": "20",
- "net.inet.tcp.sack_maxholes": "128",
- "net.inet6.ip6.maxfragpackets": "1024",
- "net.inet6.ip6.use_tempaddr": "0",
- "net.athpowermode": "0 0",
- "net.inet.udp.recvspace": "73728",
- "net.inet.tcp.isn_reseed_interval": "0",
- "net.inet.tcp.local_slowstart_flightsize": "8",
- "net.inet.ip.dummynet.searches": "0",
- "net.inet.ip.intr_queue_drops": "0",
- "net.link.generic.system.multi_threaded_input": "1",
- "net.inet.raw.recvspace": "8192",
- "net.inet.ipsec.esp_trans_deflev": "1",
- "net.key.prefered_oldsa": "0",
- "net.local.stream.recvspace": "8192",
- "net.inet.tcp.sockthreshold": "64",
- "net.inet6.icmp6.nd6_umaxtries": "3",
- "net.pstimeout": "20 20",
- "net.inet.ip.sourceroute": "0",
- "net.inet.ip.fw.dyn_short_lifetime": "5",
- "net.inet.tcp.minmss": "216",
- "net.inet6.ip6.gifhlim": "0",
- "net.athvendorie": "1 1",
- "net.inet.ip.check_route_selfref": "1",
- "net.inet6.icmp6.errppslimit": "100",
- "net.inet.tcp.mssdflt": "512",
- "net.inet.icmp.log_redirect": "0",
- "net.inet6.ipsec6.ah_trans_deflev": "1",
- "net.inet6.ipsec6.esp_randpad": "-1",
- "net.inet.icmp.drop_redirect": "0",
- "net.inet.icmp.timestamp": "0",
- "net.inet.ip.random_id": "1"
- },
- "interfaces": {
- "vmnet1": {
- "flags": [
- "UP",
- "BROADCAST",
- "SMART",
- "RUNNING",
- "SIMPLEX",
- "MULTICAST"
- ],
- "addresses": [
- {
- "broadcast": "192.168.88.255",
- "netmask": "255.255.255.0",
- "family": "inet",
- "address": "192.168.88.1"
- },
- {
- "family": "lladdr",
- "address": "private"
- }
- ],
- "number": "1",
- "mtu": "1500",
- "type": "vmnet",
- "encapsulation": "Ethernet"
- },
- "stf0": {
- "flags": [
-
- ],
- "number": "0",
- "mtu": "1280",
- "type": "stf",
- "encapsulation": "6to4"
- },
- "vboxnet0": {
- "flags": [
- "BROADCAST",
- "RUNNING",
- "SIMPLEX",
- "MULTICAST"
- ],
- "addresses": [
- {
- "family": "lladdr",
- "address": "private"
- }
- ],
- "number": "0",
- "mtu": "1500",
- "type": "vboxnet",
- "encapsulation": "Ethernet"
- },
- "lo0": {
- "flags": [
- "UP",
- "LOOPBACK",
- "RUNNING",
- "MULTICAST"
- ],
- "addresses": [
- {
- "scope": "Link",
- "prefixlen": "64",
- "family": "inet6",
- "address": "fe80::1"
- },
- {
- "netmask": "255.0.0.0",
- "family": "inet",
- "address": "127.0.0.1"
- },
- {
- "scope": "Node",
- "prefixlen": "128",
- "family": "inet6",
- "address": "::1"
- },
- {
- "scope": "Node",
- "prefixlen": "128",
- "family": "inet6",
- "address": "private"
- }
- ],
- "number": "0",
- "mtu": "16384",
- "type": "lo",
- "encapsulation": "Loopback"
- },
- "vboxn": {
- "counters": {
- "tx": {
- "bytes": "0",
- "packets": "0",
- "collisions": "0",
- "compressed": 0,
- "carrier": 0,
- "drop": 0,
- "errors": "0",
- "overrun": 0
- },
- "rx": {
- "bytes": "0",
- "packets": "0",
- "compressed": 0,
- "drop": 0,
- "errors": "0",
- "overrun": 0,
- "frame": 0,
- "multicast": 0
- }
- }
- },
- "gif0": {
- "flags": [
- "POINTOPOINT",
- "MULTICAST"
- ],
- "number": "0",
- "mtu": "1280",
- "type": "gif",
- "encapsulation": "IPIP"
- },
- "vmnet": {
- "counters": {
- "tx": {
- "bytes": "0",
- "packets": "0",
- "collisions": "0",
- "compressed": 0,
- "carrier": 0,
- "drop": 0,
- "errors": "0",
- "overrun": 0
- },
- "rx": {
- "bytes": "0",
- "packets": "0",
- "compressed": 0,
- "drop": 0,
- "errors": "0",
- "overrun": 0,
- "frame": 0,
- "multicast": 0
- }
- }
- },
- "vmnet8": {
- "flags": [
- "UP",
- "BROADCAST",
- "SMART",
- "RUNNING",
- "SIMPLEX",
- "MULTICAST"
- ],
- "addresses": [
- {
- "broadcast": "192.168.237.255",
- "netmask": "255.255.255.0",
- "family": "inet",
- "address": "192.168.237.1"
- },
- {
- "family": "lladdr",
- "address": "private"
- }
- ],
- "number": "8",
- "mtu": "1500",
- "type": "vmnet",
- "encapsulation": "Ethernet"
- },
- "en0": {
- "status": "inactive",
- "flags": [
- "UP",
- "BROADCAST",
- "SMART",
- "RUNNING",
- "SIMPLEX",
- "MULTICAST"
- ],
- "addresses": [
- {
- "family": "lladdr",
- "address": "private"
- }
- ],
- "number": "0",
- "mtu": "1500",
- "media": {
- "supported": [
- {
- "autoselect": {
- "options": [
-
- ]
- }
- },
- {
- "10baseT\/UTP": {
- "options": [
- "half-duplex"
- ]
- }
- },
- {
- "10baseT\/UTP": {
- "options": [
- "full-duplex"
- ]
- }
- },
- {
- "10baseT\/UTP": {
- "options": [
- "full-duplex",
- "hw-loopback"
- ]
- }
- },
- {
- "10baseT\/UTP": {
- "options": [
- "full-duplex",
- "flow-control"
- ]
- }
- },
- {
- "100baseTX": {
- "options": [
- "half-duplex"
- ]
- }
- },
- {
- "100baseTX": {
- "options": [
- "full-duplex"
- ]
- }
- },
- {
- "100baseTX": {
- "options": [
- "full-duplex",
- "hw-loopback"
- ]
- }
- },
- {
- "100baseTX": {
- "options": [
- "full-duplex",
- "flow-control"
- ]
- }
- },
- {
- "1000baseT": {
- "options": [
- "full-duplex"
- ]
- }
- },
- {
- "1000baseT": {
- "options": [
- "full-duplex",
- "hw-loopback"
- ]
- }
- },
- {
- "1000baseT": {
- "options": [
- "full-duplex",
- "flow-control"
- ]
- }
- },
- {
- "none": {
- "options": [
-
- ]
- }
- }
- ],
- "selected": [
- {
- "autoselect": {
- "options": [
-
- ]
- }
- }
- ]
- },
- "type": "en",
- "counters": {
- "tx": {
- "bytes": "342",
- "packets": "0",
- "collisions": "0",
- "compressed": 0,
- "carrier": 0,
- "drop": 0,
- "errors": "0",
- "overrun": 0
- },
- "rx": {
- "bytes": "0",
- "packets": "0",
- "compressed": 0,
- "drop": 0,
- "errors": "0",
- "overrun": 0,
- "frame": 0,
- "multicast": 0
- }
- },
- "encapsulation": "Ethernet"
- },
- "en1": {
- "status": "active",
- "flags": [
- "UP",
- "BROADCAST",
- "SMART",
- "RUNNING",
- "SIMPLEX",
- "MULTICAST"
- ],
- "addresses": [
- {
- "scope": "Link",
- "prefixlen": "64",
- "family": "inet6",
- "address": "private"
- },
- {
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "family": "inet",
- "address": "192.168.1.4"
- },
- {
- "family": "lladdr",
- "address": "private"
- }
- ],
- "number": "1",
- "mtu": "1500",
- "media": {
- "supported": [
- {
- "autoselect": {
- "options": [
-
- ]
- }
- }
- ],
- "selected": [
- {
- "autoselect": {
- "options": [
-
- ]
- }
- }
- ]
- },
- "type": "en",
- "counters": {
- "tx": {
- "bytes": "449206298",
- "packets": "7041789",
- "collisions": "0",
- "compressed": 0,
- "carrier": 0,
- "drop": 0,
- "errors": "95",
- "overrun": 0
- },
- "rx": {
- "bytes": "13673879120",
- "packets": "19966002",
- "compressed": 0,
- "drop": 0,
- "errors": "1655893",
- "overrun": 0,
- "frame": 0,
- "multicast": 0
- }
- },
- "arp": {
- "192.168.1.7": "private"
- },
- "encapsulation": "Ethernet"
- },
- "fw0": {
- "status": "inactive",
- "flags": [
- "UP",
- "BROADCAST",
- "SMART",
- "RUNNING",
- "SIMPLEX",
- "MULTICAST"
- ],
- "addresses": [
- {
- "family": "lladdr",
- "address": "private"
- }
- ],
- "number": "0",
- "mtu": "4078",
- "media": {
- "supported": [
- {
- "autoselect": {
- "options": [
- "full-duplex"
- ]
- }
- }
- ],
- "selected": [
- {
- "autoselect": {
- "options": [
- "full-duplex"
- ]
- }
- }
- ]
- },
- "type": "fw",
- "counters": {
- "tx": {
- "bytes": "346",
- "packets": "0",
- "collisions": "0",
- "compressed": 0,
- "carrier": 0,
- "drop": 0,
- "errors": "0",
- "overrun": 0
- },
- "rx": {
- "bytes": "0",
- "packets": "0",
- "compressed": 0,
- "drop": 0,
- "errors": "0",
- "overrun": 0,
- "frame": 0,
- "multicast": 0
- }
- },
- "encapsulation": "1394"
- }
- }
- },
- "fqdn": "local.local",
- "ohai_time": 1240624355.08575,
- "domain": "local",
- "os": "darwin",
- "platform_build": "9G55",
- "os_version": "9.6.0",
- "hostname": "local",
- "macaddress": "private",
- "languages": {
- "ruby": {
- "target_os": "darwin9.0",
- "platform": "universal-darwin9.0",
- "host_vendor": "apple",
- "target_vendor": "apple",
- "target_cpu": "i686",
- "host_os": "darwin9.0",
- "host_cpu": "i686",
- "version": "1.8.6",
- "host": "i686-apple-darwin9.0",
- "target": "i686-apple-darwin9.0",
- "release_date": "2008-03-03"
- }
- }
-}
diff --git a/vendor/gems/json-1.5.1/benchmarks/ohai.ruby b/vendor/gems/json-1.5.1/benchmarks/ohai.ruby
deleted file mode 100644
index 36b4297e6..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/ohai.ruby
+++ /dev/null
@@ -1 +0,0 @@
-{"kernel"=>{"name"=>"Darwin", "machine"=>"i386", "modules"=>{"com.apple.driver.AppleAPIC"=>{"size"=>12288, "version"=>"1.4", "index"=>"26", "refcount"=>"0"}, "com.apple.driver.AirPort.Atheros"=>{"size"=>593920, "version"=>"318.8.3", "index"=>"88", "refcount"=>"0"}, "com.apple.driver.AppleIntelCPUPowerManagement"=>{"size"=>102400, "version"=>"59.0.1", "index"=>"22", "refcount"=>"0"}, "com.apple.iokit.IOStorageFamily"=>{"size"=>98304, "version"=>"1.5.5", "index"=>"44", "refcount"=>"9"}, "com.apple.iokit.IOATAPIProtocolTransport"=>{"size"=>16384, "version"=>"1.5.2", "index"=>"52", "refcount"=>"0"}, "com.apple.iokit.IOPCIFamily"=>{"size"=>65536, "version"=>"2.5", "index"=>"17", "refcount"=>"18"}, "org.virtualbox.kext.VBoxDrv"=>{"size"=>118784, "version"=>"2.2.0", "index"=>"114", "refcount"=>"3"}, "com.cisco.nke.ipsec"=>{"size"=>454656, "version"=>"2.0.1", "index"=>"111", "refcount"=>"0"}, "com.apple.driver.AppleHPET"=>{"size"=>12288, "version"=>"1.3", "index"=>"33", "refcount"=>"0"}, "com.apple.driver.AppleUSBHub"=>{"size"=>49152, "version"=>"3.2.7", "index"=>"47", "refcount"=>"0"}, "com.apple.iokit.IOFireWireFamily"=>{"size"=>258048, "version"=>"3.4.6", "index"=>"49", "refcount"=>"2"}, "com.apple.driver.AppleUSBComposite"=>{"size"=>16384, "version"=>"3.2.0", "index"=>"60", "refcount"=>"1"}, "com.apple.driver.AppleIntelPIIXATA"=>{"size"=>36864, "version"=>"2.0.0", "index"=>"41", "refcount"=>"0"}, "com.apple.driver.AppleSmartBatteryManager"=>{"size"=>28672, "version"=>"158.6.0", "index"=>"32", "refcount"=>"0"}, "com.apple.filesystems.udf"=>{"size"=>233472, "version"=>"2.0.2", "index"=>"119", "refcount"=>"0"}, "com.apple.iokit.IOSMBusFamily"=>{"size"=>12288, "version"=>"1.1", "index"=>"27", "refcount"=>"2"}, "com.apple.iokit.IOACPIFamily"=>{"size"=>16384, "version"=>"1.2.0", "index"=>"18", "refcount"=>"10"}, "foo.tap"=>{"size"=>24576, "version"=>"1.0", "index"=>"113", "refcount"=>"0"}, "com.vmware.kext.vmx86"=>{"size"=>864256, "version"=>"2.0.4", "index"=>"104", "refcount"=>"0"}, "com.apple.iokit.CHUDUtils"=>{"size"=>28672, "version"=>"200", "index"=>"98", "refcount"=>"0"}, "com.apple.driver.AppleACPIButtons"=>{"size"=>16384, "version"=>"1.2.4", "index"=>"30", "refcount"=>"0"}, "com.apple.driver.AppleFWOHCI"=>{"size"=>139264, "version"=>"3.7.2", "index"=>"50", "refcount"=>"0"}, "com.apple.iokit.IOSCSIArchitectureModelFamily"=>{"size"=>102400, "version"=>"2.0.5", "index"=>"51", "refcount"=>"4"}, "org.virtualbox.kext.VBoxNetAdp"=>{"size"=>8192, "version"=>"2.2.0", "index"=>"117", "refcount"=>"0"}, "com.apple.filesystems.autofs"=>{"size"=>45056, "version"=>"2.0.1", "index"=>"109", "refcount"=>"0"}, "com.vmware.kext.vmnet"=>{"size"=>36864, "version"=>"2.0.4", "index"=>"108", "refcount"=>"0"}, "com.apple.iokit.IOSCSIBlockCommandsDevice"=>{"size"=>90112, "version"=>"2.0.5", "index"=>"57", "refcount"=>"1"}, "com.apple.driver.AppleACPIPCI"=>{"size"=>12288, "version"=>"1.2.4", "index"=>"31", "refcount"=>"0"}, "com.apple.security.seatbelt"=>{"size"=>98304, "version"=>"107.10", "index"=>"25", "refcount"=>"0"}, "com.apple.driver.AppleUpstreamUserClient"=>{"size"=>16384, "version"=>"2.7.2", "index"=>"100", "refcount"=>"0"}, "com.apple.kext.OSvKernDSPLib"=>{"size"=>12288, "version"=>"1.1", "index"=>"79", "refcount"=>"1"}, "com.apple.iokit.IOBDStorageFamily"=>{"size"=>20480, "version"=>"1.5", "index"=>"58", "refcount"=>"1"}, "com.apple.iokit.IOGraphicsFamily"=>{"size"=>118784, "version"=>"1.7.1", "index"=>"70", "refcount"=>"5"}, "com.apple.iokit.IONetworkingFamily"=>{"size"=>90112, "version"=>"1.6.1", "index"=>"82", "refcount"=>"4"}, "com.apple.iokit.IOATAFamily"=>{"size"=>53248, "version"=>"2.0.0", "index"=>"40", "refcount"=>"2"}, "com.apple.iokit.IOUSBHIDDriver"=>{"size"=>20480, "version"=>"3.2.2", "index"=>"63", "refcount"=>"2"}, "org.virtualbox.kext.VBoxUSB"=>{"size"=>28672, "version"=>"2.2.0", "index"=>"115", "refcount"=>"0"}, "com.apple.security.TMSafetyNet"=>{"size"=>12288, "version"=>"3", "index"=>"23", "refcount"=>"0"}, "com.apple.iokit.IONDRVSupport"=>{"size"=>57344, "version"=>"1.7.1", "index"=>"71", "refcount"=>"3"}, "com.apple.BootCache"=>{"size"=>20480, "version"=>"30.3", "index"=>"20", "refcount"=>"0"}, "com.vmware.kext.vmioplug"=>{"size"=>24576, "version"=>"2.0.4", "index"=>"107", "refcount"=>"0"}, "com.apple.iokit.IOUSBUserClient"=>{"size"=>8192, "version"=>"3.2.4", "index"=>"46", "refcount"=>"1"}, "com.apple.iokit.IOSCSIMultimediaCommandsDevice"=>{"size"=>90112, "version"=>"2.0.5", "index"=>"59", "refcount"=>"0"}, "com.apple.driver.AppleIRController"=>{"size"=>20480, "version"=>"110", "index"=>"78", "refcount"=>"0"}, "com.apple.driver.AudioIPCDriver"=>{"size"=>16384, "version"=>"1.0.5", "index"=>"81", "refcount"=>"0"}, "com.apple.driver.AppleLPC"=>{"size"=>12288, "version"=>"1.2.11", "index"=>"73", "refcount"=>"0"}, "org.virtualbox.kext.VBoxNetFlt"=>{"size"=>16384, "version"=>"2.2.0", "index"=>"116", "refcount"=>"0"}, "com.apple.iokit.CHUDKernLib"=>{"size"=>20480, "version"=>"196", "index"=>"93", "refcount"=>"2"}, "com.apple.iokit.CHUDProf"=>{"size"=>49152, "version"=>"207", "index"=>"97", "refcount"=>"0"}, "com.apple.NVDAResman"=>{"size"=>2478080, "version"=>"5.3.6", "index"=>"90", "refcount"=>"2"}, "com.apple.driver.AppleACPIEC"=>{"size"=>20480, "version"=>"1.2.4", "index"=>"28", "refcount"=>"0"}, "foo.tun"=>{"size"=>24576, "version"=>"1.0", "index"=>"118", "refcount"=>"0"}, "com.apple.iokit.IOSerialFamily"=>{"size"=>36864, "version"=>"9.3", "index"=>"102", "refcount"=>"1"}, "com.apple.GeForce"=>{"size"=>622592, "version"=>"5.3.6", "index"=>"96", "refcount"=>"0"}, "com.apple.iokit.IOCDStorageFamily"=>{"size"=>32768, "version"=>"1.5", "index"=>"55", "refcount"=>"3"}, "com.apple.driver.AppleUSBEHCI"=>{"size"=>73728, "version"=>"3.2.5", "index"=>"39", "refcount"=>"0"}, "com.apple.nvidia.nv50hal"=>{"size"=>2445312, "version"=>"5.3.6", "index"=>"91", "refcount"=>"0"}, "com.apple.driver.AppleSMBIOS"=>{"size"=>16384, "version"=>"1.1.1", "index"=>"29", "refcount"=>"0"}, "com.apple.driver.AppleBacklight"=>{"size"=>16384, "version"=>"1.4.4", "index"=>"72", "refcount"=>"0"}, "com.apple.driver.AppleACPIPlatform"=>{"size"=>253952, "version"=>"1.2.4", "index"=>"19", "refcount"=>"3"}, "com.apple.iokit.SCSITaskUserClient"=>{"size"=>24576, "version"=>"2.0.5", "index"=>"54", "refcount"=>"0"}, "com.apple.iokit.IOHIDFamily"=>{"size"=>233472, "version"=>"1.5.3", "index"=>"21", "refcount"=>"7"}, "com.apple.driver.DiskImages"=>{"size"=>65536, "version"=>"195.2.2", "index"=>"101", "refcount"=>"0"}, "com.apple.iokit.IODVDStorageFamily"=>{"size"=>24576, "version"=>"1.5", "index"=>"56", "refcount"=>"2"}, "com.apple.iokit.IOFireWireIP"=>{"size"=>36864, "version"=>"1.7.6", "index"=>"83", "refcount"=>"0"}, "com.apple.driver.AppleRTC"=>{"size"=>20480, "version"=>"1.2.3", "index"=>"34", "refcount"=>"0"}, "com.apple.driver.XsanFilter"=>{"size"=>20480, "version"=>"2.7.91", "index"=>"53", "refcount"=>"0"}, "com.apple.driver.AppleEFIRuntime"=>{"size"=>12288, "version"=>"1.2.0", "index"=>"35", "refcount"=>"1"}, "com.apple.iokit.IOAHCIBlockStorage"=>{"size"=>69632, "version"=>"1.2.0", "index"=>"48", "refcount"=>"0"}, "com.apple.nke.applicationfirewall"=>{"size"=>32768, "version"=>"1.0.77", "index"=>"24", "refcount"=>"0"}, "com.apple.iokit.IO80211Family"=>{"size"=>126976, "version"=>"215.1", "index"=>"87", "refcount"=>"1"}, "com.vmware.kext.vmci"=>{"size"=>45056, "version"=>"2.0.4", "index"=>"106", "refcount"=>"0"}, "com.apple.iokit.IOAHCIFamily"=>{"size"=>24576, "version"=>"1.5.0", "index"=>"42", "refcount"=>"2"}, "com.apple.driver.AppleUSBUHCI"=>{"size"=>57344, "version"=>"3.2.5", "index"=>"38", "refcount"=>"0"}, "com.apple.driver.AppleUSBMergeNub"=>{"size"=>12288, "version"=>"3.2.4", "index"=>"61", "refcount"=>"0"}, "com.apple.iokit.IOUSBFamily"=>{"size"=>167936, "version"=>"3.2.7", "index"=>"37", "refcount"=>"13"}, "com.apple.driver.AppleEFINVRAM"=>{"size"=>24576, "version"=>"1.2.0", "index"=>"36", "refcount"=>"0"}, "com.apple.driver.AppleAHCIPort"=>{"size"=>53248, "version"=>"1.5.2", "index"=>"43", "refcount"=>"0"}}, "os"=>"Darwin", "version"=>"Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386", "release"=>"9.6.0"}, "command"=>{"ps"=>"ps -ef"}, "platform"=>"mac_os_x", "platform_version"=>"10.5.6", "keys"=>{"ssh"=>{"host_dsa_public"=>"private", "host_rsa_public"=>"private"}}, "ipaddress"=>"192.168.88.1", "fqdn"=>"local.local", "network"=>{"settings"=>{"net.inet6.ip6.forwarding"=>"0", "net.inet.ip.dummynet.debug"=>"0", "net.inet.ip.rtexpire"=>"10", "net.inet6.ipsec6.esp_trans_deflev"=>"1", "net.inet.tcp.tcbhashsize"=>"4096", "net.key.esp_auth"=>"0", "net.inet6.ip6.hlim"=>"64", "net.inet.ip.fw.dyn_fin_lifetime"=>"1", "net.inet.ip.fw.dyn_udp_lifetime"=>"10", "net.inet.icmp.bmcastecho"=>"1", "net.athbgscan"=>"1 1", "net.inet.tcp.reass.maxsegments"=>"2048", "net.athforceBias"=>"2 2", "net.inet6.ip6.auto_flowlabel"=>"1", "net.inet6.ip6.rtmaxcache"=>"128", "net.inet.tcp.sendspace"=>"131072", "net.inet.tcp.keepinit"=>"75000", "net.inet.ip.dummynet.max_chain_len"=>"16", "net.inet.tcp.rfc1644"=>"0", "net.inet.ip.fw.curr_dyn_buckets"=>"256", "net.inet.ip.dummynet.ready_heap"=>"0", "net.inet.ip.portrange.first"=>"49152", "net.inet.tcp.background_io_trigger"=>"5", "net.link.ether.inet.host_down_time"=>"20", "net.inet6.ipsec6.def_policy"=>"1", "net.inet6.ipsec6.ecn"=>"0", "net.inet.ip.fastforwarding"=>"0", "net.inet6.ip6.v6only"=>"0", "net.inet.tcp.sack"=>"1", "net.inet6.ip6.rtexpire"=>"3600", "net.link.ether.inet.proxyall"=>"0", "net.athaddbaignore"=>"0 0", "net.inet6.ip6.keepfaith"=>"0", "net.key.spi_trycnt"=>"1000", "net.link.ether.inet.prune_intvl"=>"300", "net.inet.tcp.ecn_initiate_out"=>"0", "net.inet.ip.fw.dyn_rst_lifetime"=>"1", "net.local.stream.sendspace"=>"8192", "net.inet.tcp.socket_unlocked_on_output"=>"1", "net.inet.ip.fw.verbose_limit"=>"0", "net.local.dgram.recvspace"=>"4096", "net.inet.ipsec.debug"=>"0", "net.link.ether.inet.log_arp_warnings"=>"0", "net.inet.tcp.ecn_negotiate_in"=>"0", "net.inet.tcp.rfc3465"=>"1", "net.inet.tcp.icmp_may_rst"=>"1", "net.link.ether.inet.sendllconflict"=>"0", "net.inet.ipsec.ah_offsetmask"=>"0", "net.key.blockacq_count"=>"10", "net.inet.tcp.delayed_ack"=>"3", "net.inet.ip.fw.verbose"=>"2", "net.inet.ip.fw.dyn_count"=>"0", "net.inet.tcp.slowlink_wsize"=>"8192", "net.inet6.ip6.fw.enable"=>"1", "net.inet.ip.portrange.hilast"=>"65535", "net.inet.icmp.maskrepl"=>"0", "net.link.ether.inet.apple_hwcksum_rx"=>"1", "net.inet.tcp.drop_synfin"=>"1", "net.key.spi_maxval"=>"268435455", "net.inet.ipsec.ecn"=>"0", "net.inet.ip.fw.dyn_keepalive"=>"1", "net.key.int_random"=>"60", "net.key.debug"=>"0", "net.inet.ip.dummynet.curr_time"=>"0", "net.inet.udp.blackhole"=>"0", "net.athaggrqmin"=>"1 1", "net.inet.ip.fw.dyn_syn_lifetime"=>"20", "net.inet.tcp.keepidle"=>"7200000", "net.inet6.ip6.tempvltime"=>"604800", "net.inet.tcp.recvspace"=>"358400", "net.inet.udp.maxdgram"=>"9216", "net.inet.tcp.keepintvl"=>"75000", "net.inet.ip.maxchainsent"=>"0", "net.athppmenable"=>"1 1", "net.inet.ipsec.esp_net_deflev"=>"1", "net.inet6.icmp6.nd6_useloopback"=>"1", "net.inet.tcp.slowstart_flightsize"=>"1", "net.inet.ip.fw.debug"=>"0", "net.inet.ip.linklocal.in.allowbadttl"=>"1", "net.key.spi_minval"=>"256", "net.inet.ip.forwarding"=>"0", "net.inet.tcp.v6mssdflt"=>"1024", "net.key.larval_lifetime"=>"30", "net.inet6.ip6.fw.verbose_limit"=>"0", "net.inet.ip.dummynet.red_lookup_depth"=>"256", "net.inet.tcp.pcbcount"=>"36", "net.inet.ip.fw.dyn_ack_lifetime"=>"300", "net.athCCAThreshold"=>"28 28", "net.inet.ip.portrange.lowlast"=>"600", "net.link.ether.inet.useloopback"=>"1", "net.athqdepth"=>"0 0", "net.inet.ip.ttl"=>"64", "net.inet.ip.rtmaxcache"=>"128", "net.inet.ipsec.bypass"=>"0", "net.inet6.icmp6.nd6_debug"=>"0", "net.inet.ip.use_route_genid"=>"1", "net.inet6.icmp6.rediraccept"=>"1", "net.inet.ip.fw.static_count"=>"1", "net.inet6.ip6.fw.debug"=>"0", "net.inet.udp.pcbcount"=>"104", "net.inet.ipsec.esp_randpad"=>"-1", "net.inet6.icmp6.nd6_maxnudhint"=>"0", "net.inet.tcp.always_keepalive"=>"0", "net.inet.udp.checksum"=>"1", "net.link.ether.inet.keep_announcements"=>"1", "net.athfixedDropThresh"=>"150 150", "net.inet6.ip6.kame_version"=>"20010528/apple-darwin", "net.inet.ip.fw.dyn_max"=>"4096", "net.inet.udp.log_in_vain"=>"0", "net.inet6.icmp6.nd6_mmaxtries"=>"3", "net.inet.ip.rtminexpire"=>"10", "net.inet.ip.fw.dyn_buckets"=>"256", "net.inet6.ip6.accept_rtadv"=>"0", "net.inet6.ip6.rr_prune"=>"5", "net.key.ah_keymin"=>"128", "net.inet.ip.redirect"=>"1", "net.inet.tcp.sack_globalmaxholes"=>"65536", "net.inet.ip.keepfaith"=>"0", "net.inet.ip.dummynet.expire"=>"1", "net.inet.ip.gifttl"=>"30", "net.inet.ip.portrange.last"=>"65535", "net.inet.ipsec.ah_net_deflev"=>"1", "net.inet6.icmp6.nd6_delay"=>"5", "net.inet.tcp.packetchain"=>"50", "net.inet6.ip6.hdrnestlimit"=>"50", "net.inet.tcp.newreno"=>"0", "net.inet6.ip6.dad_count"=>"1", "net.inet6.ip6.auto_linklocal"=>"1", "net.inet6.ip6.temppltime"=>"86400", "net.inet.tcp.strict_rfc1948"=>"0", "net.inet.ip.dummynet.red_max_pkt_size"=>"1500", "net.inet.ip.maxfrags"=>"2048", "net.inet.tcp.log_in_vain"=>"0", "net.athdupie"=>"1 1", "net.inet.tcp.rfc1323"=>"1", "net.inet.ip.subnets_are_local"=>"0", "net.inet.ip.dummynet.search_steps"=>"0", "net.inet.icmp.icmplim"=>"250", "net.link.ether.inet.apple_hwcksum_tx"=>"1", "net.inet6.icmp6.redirtimeout"=>"600", "net.inet.ipsec.ah_cleartos"=>"1", "net.inet6.ip6.log_interval"=>"5", "net.link.ether.inet.max_age"=>"1200", "net.inet.ip.fw.enable"=>"1", "net.inet6.ip6.redirect"=>"1", "net.athaggrfmax"=>"28 28", "net.inet.ip.maxfragsperpacket"=>"128", "net.inet6.ip6.use_deprecated"=>"1", "net.link.generic.system.dlil_input_sanity_check"=>"0", "net.inet.tcp.sack_globalholes"=>"0", "net.inet.tcp.reass.cursegments"=>"0", "net.inet6.icmp6.nodeinfo"=>"3", "net.local.inflight"=>"0", "net.inet.ip.dummynet.hash_size"=>"64", "net.inet.ip.dummynet.red_avg_pkt_size"=>"512", "net.inet.ipsec.dfbit"=>"0", "net.inet.tcp.reass.overflows"=>"0", "net.inet.tcp.rexmt_thresh"=>"2", "net.inet6.ip6.maxfrags"=>"8192", "net.inet6.ip6.rtminexpire"=>"10", "net.inet6.ipsec6.esp_net_deflev"=>"1", "net.inet.tcp.blackhole"=>"0", "net.key.esp_keymin"=>"256", "net.inet.ip.check_interface"=>"0", "net.inet.tcp.minmssoverload"=>"0", "net.link.ether.inet.maxtries"=>"5", "net.inet.tcp.do_tcpdrain"=>"0", "net.inet.ipsec.esp_port"=>"4500", "net.inet6.ipsec6.ah_net_deflev"=>"1", "net.inet.ip.dummynet.extract_heap"=>"0", "net.inet.tcp.path_mtu_discovery"=>"1", "net.inet.ip.intr_queue_maxlen"=>"50", "net.inet.ipsec.def_policy"=>"1", "net.inet.ip.fw.autoinc_step"=>"100", "net.inet.ip.accept_sourceroute"=>"0", "net.inet.raw.maxdgram"=>"8192", "net.inet.ip.maxfragpackets"=>"1024", "net.inet.ip.fw.one_pass"=>"0", "net.appletalk.routermix"=>"2000", "net.inet.tcp.tcp_lq_overflow"=>"1", "net.link.generic.system.ifcount"=>"9", "net.link.ether.inet.send_conflicting_probes"=>"1", "net.inet.tcp.background_io_enabled"=>"1", "net.inet6.ipsec6.debug"=>"0", "net.inet.tcp.win_scale_factor"=>"3", "net.key.natt_keepalive_interval"=>"20", "net.inet.tcp.msl"=>"15000", "net.inet.ip.portrange.hifirst"=>"49152", "net.inet.ipsec.ah_trans_deflev"=>"1", "net.inet.tcp.rtt_min"=>"1", "net.inet6.ip6.defmcasthlim"=>"1", "net.inet6.icmp6.nd6_prune"=>"1", "net.inet6.ip6.fw.verbose"=>"0", "net.inet.ip.portrange.lowfirst"=>"1023", "net.inet.tcp.maxseg_unacked"=>"8", "net.local.dgram.maxdgram"=>"2048", "net.key.blockacq_lifetime"=>"20", "net.inet.tcp.sack_maxholes"=>"128", "net.inet6.ip6.maxfragpackets"=>"1024", "net.inet6.ip6.use_tempaddr"=>"0", "net.athpowermode"=>"0 0", "net.inet.udp.recvspace"=>"73728", "net.inet.tcp.isn_reseed_interval"=>"0", "net.inet.tcp.local_slowstart_flightsize"=>"8", "net.inet.ip.dummynet.searches"=>"0", "net.inet.ip.intr_queue_drops"=>"0", "net.link.generic.system.multi_threaded_input"=>"1", "net.inet.raw.recvspace"=>"8192", "net.inet.ipsec.esp_trans_deflev"=>"1", "net.key.prefered_oldsa"=>"0", "net.local.stream.recvspace"=>"8192", "net.inet.tcp.sockthreshold"=>"64", "net.inet6.icmp6.nd6_umaxtries"=>"3", "net.pstimeout"=>"20 20", "net.inet.ip.sourceroute"=>"0", "net.inet.ip.fw.dyn_short_lifetime"=>"5", "net.inet.tcp.minmss"=>"216", "net.inet6.ip6.gifhlim"=>"0", "net.athvendorie"=>"1 1", "net.inet.ip.check_route_selfref"=>"1", "net.inet.icmp.log_redirect"=>"0", "net.inet6.icmp6.errppslimit"=>"100", "net.inet.tcp.mssdflt"=>"512", "net.inet.icmp.drop_redirect"=>"0", "net.inet6.ipsec6.esp_randpad"=>"-1", "net.inet6.ipsec6.ah_trans_deflev"=>"1", "net.inet.ip.random_id"=>"1", "net.inet.icmp.timestamp"=>"0"}, "interfaces"=>{"stf0"=>{"flags"=>[], "number"=>"0", "mtu"=>"1280", "type"=>"stf", "encapsulation"=>"6to4"}, "vmnet1"=>{"flags"=>["UP", "BROADCAST", "SMART", "RUNNING", "SIMPLEX", "MULTICAST"], "number"=>"1", "addresses"=>[{"broadcast"=>"192.168.88.255", "netmask"=>"255.255.255.0", "family"=>"inet", "address"=>"192.168.88.1"}, {"family"=>"lladdr", "address"=>"private"}], "mtu"=>"1500", "type"=>"vmnet", "encapsulation"=>"Ethernet"}, "vboxnet0"=>{"flags"=>["BROADCAST", "RUNNING", "SIMPLEX", "MULTICAST"], "number"=>"0", "addresses"=>[{"family"=>"lladdr", "address"=>"private"}], "mtu"=>"1500", "type"=>"vboxnet", "encapsulation"=>"Ethernet"}, "lo0"=>{"flags"=>["UP", "LOOPBACK", "RUNNING", "MULTICAST"], "number"=>"0", "addresses"=>[{"scope"=>"Link", "prefixlen"=>"64", "family"=>"inet6", "address"=>"fe80::1"}, {"netmask"=>"255.0.0.0", "family"=>"inet", "address"=>"127.0.0.1"}, {"scope"=>"Node", "prefixlen"=>"128", "family"=>"inet6", "address"=>"::1"}, {"scope"=>"Node", "prefixlen"=>"128", "family"=>"inet6", "address"=>"private"}], "mtu"=>"16384", "type"=>"lo", "encapsulation"=>"Loopback"}, "vboxn"=>{"counters"=>{"tx"=>{"packets"=>"0", "bytes"=>"0", "compressed"=>0, "collisions"=>"0", "carrier"=>0, "errors"=>"0", "drop"=>0, "overrun"=>0}, "rx"=>{"packets"=>"0", "bytes"=>"0", "compressed"=>0, "errors"=>"0", "drop"=>0, "overrun"=>0, "multicast"=>0, "frame"=>0}}}, "gif0"=>{"flags"=>["POINTOPOINT", "MULTICAST"], "number"=>"0", "mtu"=>"1280", "type"=>"gif", "encapsulation"=>"IPIP"}, "vmnet"=>{"counters"=>{"tx"=>{"packets"=>"0", "bytes"=>"0", "compressed"=>0, "collisions"=>"0", "carrier"=>0, "errors"=>"0", "drop"=>0, "overrun"=>0}, "rx"=>{"packets"=>"0", "bytes"=>"0", "compressed"=>0, "errors"=>"0", "drop"=>0, "overrun"=>0, "multicast"=>0, "frame"=>0}}}, "en0"=>{"flags"=>["UP", "BROADCAST", "SMART", "RUNNING", "SIMPLEX", "MULTICAST"], "status"=>"inactive", "number"=>"0", "addresses"=>[{"family"=>"lladdr", "address"=>"private"}], "mtu"=>"1500", "type"=>"en", "media"=>{"supported"=>[{"autoselect"=>{"options"=>[]}}, {"10baseT/UTP"=>{"options"=>["half-duplex"]}}, {"10baseT/UTP"=>{"options"=>["full-duplex"]}}, {"10baseT/UTP"=>{"options"=>["full-duplex", "hw-loopback"]}}, {"10baseT/UTP"=>{"options"=>["full-duplex", "flow-control"]}}, {"100baseTX"=>{"options"=>["half-duplex"]}}, {"100baseTX"=>{"options"=>["full-duplex"]}}, {"100baseTX"=>{"options"=>["full-duplex", "hw-loopback"]}}, {"100baseTX"=>{"options"=>["full-duplex", "flow-control"]}}, {"1000baseT"=>{"options"=>["full-duplex"]}}, {"1000baseT"=>{"options"=>["full-duplex", "hw-loopback"]}}, {"1000baseT"=>{"options"=>["full-duplex", "flow-control"]}}, {"none"=>{"options"=>[]}}], "selected"=>[{"autoselect"=>{"options"=>[]}}]}, "counters"=>{"tx"=>{"packets"=>"0", "bytes"=>"342", "compressed"=>0, "collisions"=>"0", "carrier"=>0, "errors"=>"0", "drop"=>0, "overrun"=>0}, "rx"=>{"packets"=>"0", "bytes"=>"0", "compressed"=>0, "errors"=>"0", "drop"=>0, "overrun"=>0, "multicast"=>0, "frame"=>0}}, "encapsulation"=>"Ethernet"}, "vmnet8"=>{"flags"=>["UP", "BROADCAST", "SMART", "RUNNING", "SIMPLEX", "MULTICAST"], "number"=>"8", "addresses"=>[{"broadcast"=>"192.168.237.255", "netmask"=>"255.255.255.0", "family"=>"inet", "address"=>"192.168.237.1"}, {"family"=>"lladdr", "address"=>"private"}], "mtu"=>"1500", "type"=>"vmnet", "encapsulation"=>"Ethernet"}, "en1"=>{"flags"=>["UP", "BROADCAST", "SMART", "RUNNING", "SIMPLEX", "MULTICAST"], "status"=>"active", "number"=>"1", "addresses"=>[{"scope"=>"Link", "prefixlen"=>"64", "family"=>"inet6", "address"=>"private"}, {"broadcast"=>"192.168.1.255", "netmask"=>"255.255.255.0", "family"=>"inet", "address"=>"192.168.1.4"}, {"family"=>"lladdr", "address"=>"private"}], "mtu"=>"1500", "type"=>"en", "media"=>{"supported"=>[{"autoselect"=>{"options"=>[]}}], "selected"=>[{"autoselect"=>{"options"=>[]}}]}, "counters"=>{"tx"=>{"packets"=>"7041789", "bytes"=>"449206298", "compressed"=>0, "collisions"=>"0", "carrier"=>0, "errors"=>"95", "drop"=>0, "overrun"=>0}, "rx"=>{"packets"=>"19966002", "bytes"=>"13673879120", "compressed"=>0, "errors"=>"1655893", "drop"=>0, "overrun"=>0, "multicast"=>0, "frame"=>0}}, "encapsulation"=>"Ethernet", "arp"=>{"192.168.1.7"=>"private"}}, "fw0"=>{"flags"=>["UP", "BROADCAST", "SMART", "RUNNING", "SIMPLEX", "MULTICAST"], "status"=>"inactive", "number"=>"0", "addresses"=>[{"family"=>"lladdr", "address"=>"private"}], "mtu"=>"4078", "type"=>"fw", "media"=>{"supported"=>[{"autoselect"=>{"options"=>["full-duplex"]}}], "selected"=>[{"autoselect"=>{"options"=>["full-duplex"]}}]}, "counters"=>{"tx"=>{"packets"=>"0", "bytes"=>"346", "compressed"=>0, "collisions"=>"0", "carrier"=>0, "errors"=>"0", "drop"=>0, "overrun"=>0}, "rx"=>{"packets"=>"0", "bytes"=>"0", "compressed"=>0, "errors"=>"0", "drop"=>0, "overrun"=>0, "multicast"=>0, "frame"=>0}}, "encapsulation"=>"1394"}}}, "os"=>"darwin", "domain"=>"local", "ohai_time"=>1240624355.08575, "platform_build"=>"9G55", "os_version"=>"9.6.0", "hostname"=>"local", "languages"=>{"ruby"=>{"target_os"=>"darwin9.0", "platform"=>"universal-darwin9.0", "host_vendor"=>"apple", "target_cpu"=>"i686", "target_vendor"=>"apple", "host_os"=>"darwin9.0", "version"=>"1.8.6", "host_cpu"=>"i686", "host"=>"i686-apple-darwin9.0", "release_date"=>"2008-03-03", "target"=>"i686-apple-darwin9.0"}}, "macaddress"=>"private"}
diff --git a/vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb b/vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb
deleted file mode 100755
index 95a510de6..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/parser2_benchmark.rb
+++ /dev/null
@@ -1,251 +0,0 @@
-#!/usr/bin/env ruby
-# CODING: UTF-8
-
-require 'rbconfig'
-RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
-RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake')
-require 'bullshit'
-case ARGV.first
-when 'ext'
- require 'json/ext'
-when 'pure'
- require 'json/pure'
-when 'yaml'
- require 'yaml'
- require 'json/pure'
-when 'rails'
- require 'active_support'
- require 'json/pure'
-when 'yajl'
- require 'yajl'
- require 'json/pure'
-else
- require 'json/pure'
-end
-
-module Parser2BenchmarkCommon
- include JSON
-
- def setup
- @big = @json = File.read(File.join(File.dirname(__FILE__), 'ohai.json'))
- end
-
- def generic_reset_method
- @result == @big or raise "not equal"
- end
-end
-
-class Parser2BenchmarkExt < Bullshit::RepeatCase
- include Parser2BenchmarkCommon
-
- warmup yes
- iterations 2000
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def benchmark_parser
- @result = JSON.parse(@json)
- end
-
- alias reset_parser generic_reset_method
-
- def benchmark_parser_symbolic
- @result = JSON.parse(@json, :symbolize_names => true)
- end
-
- alias reset_parser_symbolc generic_reset_method
-end
-
-class Parser2BenchmarkPure < Bullshit::RepeatCase
- include Parser2BenchmarkCommon
-
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def benchmark_parser
- @result = JSON.parse(@json)
- end
-
- alias reset_parser generic_reset_method
-
- def benchmark_parser_symbolic
- @result = JSON.parse(@json, :symbolize_names => true)
- end
-
- alias reset_parser_symbolc generic_reset_method
-end
-
-class Parser2BenchmarkYAML < Bullshit::RepeatCase
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def setup
- @big = @json = File.read(File.join(File.dirname(__FILE__), 'ohai.json'))
- end
-
- def benchmark_parser
- @result = YAML.load(@json)
- end
-
- def generic_reset_method
- @result == @big or raise "not equal"
- end
-end
-
-class Parser2BenchmarkRails < Bullshit::RepeatCase
- warmup yes
- iterations 400
-
- truncate_data do
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def setup
- a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ]
- @big = a * 100
- @json = JSON.generate(@big)
- end
-
- def benchmark_parser
- @result = ActiveSupport::JSON.decode(@json)
- end
-
- def generic_reset_method
- @result == @big or raise "not equal"
- end
-end
-
-class Parser2BenchmarkYajl < Bullshit::RepeatCase
- warmup yes
- iterations 2000
-
- truncate_data do
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def setup
- @big = @json = File.read(File.join(File.dirname(__FILE__), 'ohai.json'))
- end
-
- def benchmark_parser
- @result = Yajl::Parser.new.parse(@json)
- end
-
- def generic_reset_method
- @result == @big or raise "not equal"
- end
-end
-
-if $0 == __FILE__
- Bullshit::Case.autorun false
-
- case ARGV.first
- when 'ext'
- Parser2BenchmarkExt.run
- when 'pure'
- Parser2BenchmarkPure.run
- when 'yaml'
- Parser2BenchmarkYAML.run
- when 'rails'
- Parser2BenchmarkRails.run
- when 'yajl'
- Parser2BenchmarkYajl.run
- else
- system "#{RAKE_PATH} clean"
- system "#{RUBY_PATH} #$0 yaml"
- system "#{RUBY_PATH} #$0 rails"
- system "#{RUBY_PATH} #$0 pure"
- system "#{RAKE_PATH} compile_ext"
- system "#{RUBY_PATH} #$0 ext"
- system "#{RUBY_PATH} #$0 yajl"
- Bullshit.compare do
- output_filename File.join(File.dirname(__FILE__), 'data', 'Parser2BenchmarkComparison.log')
-
- benchmark Parser2BenchmarkExt, :parser, :load => yes
- benchmark Parser2BenchmarkExt, :parser_symbolic, :load => yes
- benchmark Parser2BenchmarkPure, :parser, :load => yes
- benchmark Parser2BenchmarkPure, :parser_symbolic, :load => yes
- benchmark Parser2BenchmarkYAML, :parser, :load => yes
- benchmark Parser2BenchmarkRails, :parser, :load => yes
- benchmark Parser2BenchmarkYajl, :parser, :load => yes
- end
- end
-end
diff --git a/vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb b/vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb
deleted file mode 100755
index 9ce7e257d..000000000
--- a/vendor/gems/json-1.5.1/benchmarks/parser_benchmark.rb
+++ /dev/null
@@ -1,259 +0,0 @@
-#!/usr/bin/env ruby
-# CODING: UTF-8
-
-require 'rbconfig'
-RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
-RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake')
-require 'bullshit'
-case ARGV.first
-when 'ext'
- require 'json/ext'
-when 'pure'
- require 'json/pure'
-when 'yaml'
- require 'yaml'
- require 'json/pure'
-when 'rails'
- require 'active_support'
- require 'json/pure'
-when 'yajl'
- require 'yajl'
- require 'json/pure'
-else
- require 'json/pure'
-end
-
-module ParserBenchmarkCommon
- include JSON
-
- def setup
- a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ]
- @big = a * 100
- @json = JSON.generate(@big)
- end
-
- def generic_reset_method
- @result == @big or raise "not equal"
- end
-end
-
-class ParserBenchmarkExt < Bullshit::RepeatCase
- include ParserBenchmarkCommon
-
- warmup yes
- iterations 2000
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def benchmark_parser
- @result = JSON.parse(@json)
- end
-
- alias reset_parser generic_reset_method
-
- def benchmark_parser_symbolic
- @result = JSON.parse(@json, :symbolize_names => true)
- end
-
- alias reset_parser_symbolc generic_reset_method
-end
-
-class ParserBenchmarkPure < Bullshit::RepeatCase
- include ParserBenchmarkCommon
-
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def benchmark_parser
- @result = JSON.parse(@json)
- end
-
- alias reset_parser generic_reset_method
-
- def benchmark_parser_symbolic
- @result = JSON.parse(@json, :symbolize_names => true)
- end
-
- alias reset_parser_symbolc generic_reset_method
-end
-
-class ParserBenchmarkYAML < Bullshit::RepeatCase
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def setup
- a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ]
- @big = a * 100
- @json = JSON.pretty_generate(@big)
- end
-
- def benchmark_parser
- @result = YAML.load(@json)
- end
-
- def generic_reset_method
- @result == @big or raise "not equal"
- end
-end
-
-class ParserBenchmarkRails < Bullshit::RepeatCase
- warmup yes
- iterations 400
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def setup
- a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ]
- @big = a * 100
- @json = JSON.generate(@big)
- end
-
- def benchmark_parser
- @result = ActiveSupport::JSON.decode(@json)
- end
-
- def generic_reset_method
- @result == @big or raise "not equal"
- end
-end
-
-class ParserBenchmarkYajl < Bullshit::RepeatCase
- warmup yes
- iterations 2000
-
- truncate_data do
- enabled false
- alpha_level 0.05
- window_size 50
- slope_angle 0.1
- end
-
- autocorrelation do
- alpha_level 0.05
- max_lags 50
- file yes
- end
-
- output_dir File.join(File.dirname(__FILE__), 'data')
- output_filename benchmark_name + '.log'
- data_file yes
- histogram yes
-
- def setup
- a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ]
- @big = a * 100
- @json = JSON.generate(@big)
- end
-
- def benchmark_parser
- @result = Yajl::Parser.new.parse(@json)
- end
-
- def generic_reset_method
- @result == @big or raise "not equal"
- end
-end
-
-if $0 == __FILE__
- Bullshit::Case.autorun false
-
- case ARGV.first
- when 'ext'
- ParserBenchmarkExt.run
- when 'pure'
- ParserBenchmarkPure.run
- when 'yaml'
- ParserBenchmarkYAML.run
- when 'rails'
- ParserBenchmarkRails.run
- when 'yajl'
- ParserBenchmarkYajl.run
- else
- system "#{RAKE_PATH} clean"
- system "#{RUBY_PATH} #$0 yaml"
- system "#{RUBY_PATH} #$0 rails"
- system "#{RUBY_PATH} #$0 pure"
- system "#{RAKE_PATH} compile_ext"
- system "#{RUBY_PATH} #$0 ext"
- system "#{RUBY_PATH} #$0 yajl"
- Bullshit.compare do
- output_filename File.join(File.dirname(__FILE__), 'data', 'ParserBenchmarkComparison.log')
-
- benchmark ParserBenchmarkExt, :parser, :load => yes
- benchmark ParserBenchmarkExt, :parser_symbolic, :load => yes
- benchmark ParserBenchmarkPure, :parser, :load => yes
- benchmark ParserBenchmarkPure, :parser_symbolic, :load => yes
- benchmark ParserBenchmarkYAML, :parser, :load => yes
- benchmark ParserBenchmarkRails, :parser, :load => yes
- benchmark ParserBenchmarkYajl, :parser, :load => yes
- end
- end
-end
diff --git a/vendor/gems/json-1.5.1/bin/edit_json.rb b/vendor/gems/json-1.5.1/bin/edit_json.rb
deleted file mode 100755
index 04a8189d2..000000000
--- a/vendor/gems/json-1.5.1/bin/edit_json.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env ruby
-require 'json/editor'
-
-filename, encoding = ARGV
-JSON::Editor.start(encoding) do |window|
- if filename
- window.file_open(filename)
- end
-end
diff --git a/vendor/gems/json-1.5.1/bin/prettify_json.rb b/vendor/gems/json-1.5.1/bin/prettify_json.rb
deleted file mode 100755
index 5e1f8062d..000000000
--- a/vendor/gems/json-1.5.1/bin/prettify_json.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'json'
-require 'fileutils'
-include FileUtils
-
-# Parses the argument array _args_, according to the pattern _s_, to
-# retrieve the single character command line options from it. If _s_ is
-# 'xy:' an option '-x' without an option argument is searched, and an
-# option '-y foo' with an option argument ('foo').
-#
-# An option hash is returned with all found options set to true or the
-# found option argument.
-def go(s, args = ARGV)
- b, v = s.scan(/(.)(:?)/).inject([{},{}]) { |t,(o,a)|
- t[a.empty? ? 0 : 1][o] = a.empty? ? false : nil
- t
- }
- while a = args.shift
- a !~ /\A-(.+)/ and args.unshift a and break
- p = $1
- until p == ''
- o = p.slice!(0, 1)
- if v.key?(o)
- v[o] = if p == '' then args.shift or break 1 else p end
- break
- elsif b.key?(o)
- b[o] = true
- else
- args.unshift a
- break 1
- end
- end and break
- end
- b.merge(v)
-end
-
-opts = go 'slhi:', args = ARGV.dup
-if opts['h'] || opts['l'] && opts['s']
- puts <<EOT
-Usage: #{File.basename($0)} [OPTION] [FILE]
-
-If FILE is skipped, this scripts waits for input from STDIN. Otherwise
-FILE is opened, read, and used as input for the prettifier.
-
-OPTION can be
- -s to output the shortest possible JSON (precludes -l)
- -l to output a longer, better formatted JSON (precludes -s)
- -i EXT prettifies FILE in place, saving a backup to FILE.EXT
- -h this help
-EOT
- exit 0
-end
-
-filename = nil
-json = JSON[
- if args.empty?
- STDIN.read
- else
- File.read filename = args.first
- end
-]
-
-output = if opts['s']
- JSON.fast_generate json
-else # default is -l
- JSON.pretty_generate json
-end
-
-if opts['i'] && filename
- cp filename, "#{filename}.#{opts['i']}"
- File.open(filename, 'w') { |f| f.puts output }
-else
- puts output
-end
diff --git a/vendor/gems/json-1.5.1/data/example.json b/vendor/gems/json-1.5.1/data/example.json
deleted file mode 100644
index 88b4e8265..000000000
--- a/vendor/gems/json-1.5.1/data/example.json
+++ /dev/null
@@ -1 +0,0 @@
-{"a":2,"b":3.141,"TIME":"2007-03-14T11:52:40","c":"c","d":[1,"b",3.14],"COUNT":666,"e":{"foo":"bar"},"foo":"B\u00e4r","g":"\u677e\u672c\u884c\u5f18","h":1000.0,"bar":"\u00a9 \u2260 \u20ac!","i":0.001,"j":"\ud840\udc01"}
diff --git a/vendor/gems/json-1.5.1/data/index.html b/vendor/gems/json-1.5.1/data/index.html
deleted file mode 100644
index abe6fdbfa..000000000
--- a/vendor/gems/json-1.5.1/data/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
- <head>
- <title>Javascript Example</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <script src="prototype.js" type="text/javascript"></script>
- </head>
-
- <body>
- <h1>Fetching object from server</h1>
- <div id="list">
- Wait...<br/>
- <noscript><p>Switch on Javascript!</p></noscript>
- </div>
- <script type="text/javascript">
- <!--
- function pollJSON() {
- new Ajax.Request('/json',
- {
- method: 'get',
- onSuccess: function(transport) {
- var response = transport.responseText || "no response text";
- response = eval("(" + response + ")");
- var text = "";
- for (var k in response) {
- text = text + "<b>" + k + "</b>: " + response[k] + "<br/>"
- }
- $("list").update(text);
- },
- onFailure: function() { alert('Something went wrong...') }
- });
- }
- new PeriodicalExecuter(pollJSON, 1);
- -->
- </script>
- </body>
-</html>
diff --git a/vendor/gems/json-1.5.1/data/prototype.js b/vendor/gems/json-1.5.1/data/prototype.js
deleted file mode 100644
index 5c7346294..000000000
--- a/vendor/gems/json-1.5.1/data/prototype.js
+++ /dev/null
@@ -1,4184 +0,0 @@
-/* Prototype JavaScript framework, version 1.6.0
- * (c) 2005-2007 Sam Stephenson
- *
- * Prototype is freely distributable under the terms of an MIT-style license.
- * For details, see the Prototype web site: http://www.prototypejs.org/
- *
- *--------------------------------------------------------------------------*/
-
-var Prototype = {
- Version: '1.6.0',
-
- Browser: {
- IE: !!(window.attachEvent && !window.opera),
- Opera: !!window.opera,
- WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
- Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
- MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
- },
-
- BrowserFeatures: {
- XPath: !!document.evaluate,
- ElementExtensions: !!window.HTMLElement,
- SpecificElementExtensions:
- document.createElement('div').__proto__ &&
- document.createElement('div').__proto__ !==
- document.createElement('form').__proto__
- },
-
- ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
- JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
-
- emptyFunction: function() { },
- K: function(x) { return x }
-};
-
-if (Prototype.Browser.MobileSafari)
- Prototype.BrowserFeatures.SpecificElementExtensions = false;
-
-if (Prototype.Browser.WebKit)
- Prototype.BrowserFeatures.XPath = false;
-
-/* Based on Alex Arnell's inheritance implementation. */
-var Class = {
- create: function() {
- var parent = null, properties = $A(arguments);
- if (Object.isFunction(properties[0]))
- parent = properties.shift();
-
- function klass() {
- this.initialize.apply(this, arguments);
- }
-
- Object.extend(klass, Class.Methods);
- klass.superclass = parent;
- klass.subclasses = [];
-
- if (parent) {
- var subclass = function() { };
- subclass.prototype = parent.prototype;
- klass.prototype = new subclass;
- parent.subclasses.push(klass);
- }
-
- for (var i = 0; i < properties.length; i++)
- klass.addMethods(properties[i]);
-
- if (!klass.prototype.initialize)
- klass.prototype.initialize = Prototype.emptyFunction;
-
- klass.prototype.constructor = klass;
-
- return klass;
- }
-};
-
-Class.Methods = {
- addMethods: function(source) {
- var ancestor = this.superclass && this.superclass.prototype;
- var properties = Object.keys(source);
-
- if (!Object.keys({ toString: true }).length)
- properties.push("toString", "valueOf");
-
- for (var i = 0, length = properties.length; i < length; i++) {
- var property = properties[i], value = source[property];
- if (ancestor && Object.isFunction(value) &&
- value.argumentNames().first() == "$super") {
- var method = value, value = Object.extend((function(m) {
- return function() { return ancestor[m].apply(this, arguments) };
- })(property).wrap(method), {
- valueOf: function() { return method },
- toString: function() { return method.toString() }
- });
- }
- this.prototype[property] = value;
- }
-
- return this;
- }
-};
-
-var Abstract = { };
-
-Object.extend = function(destination, source) {
- for (var property in source)
- destination[property] = source[property];
- return destination;
-};
-
-Object.extend(Object, {
- inspect: function(object) {
- try {
- if (object === undefined) return 'undefined';
- if (object === null) return 'null';
- return object.inspect ? object.inspect() : object.toString();
- } catch (e) {
- if (e instanceof RangeError) return '...';
- throw e;
- }
- },
-
- toJSON: function(object) {
- var type = typeof object;
- switch (type) {
- case 'undefined':
- case 'function':
- case 'unknown': return;
- case 'boolean': return object.toString();
- }
-
- if (object === null) return 'null';
- if (object.toJSON) return object.toJSON();
- if (Object.isElement(object)) return;
-
- var results = [];
- for (var property in object) {
- var value = Object.toJSON(object[property]);
- if (value !== undefined)
- results.push(property.toJSON() + ': ' + value);
- }
-
- return '{' + results.join(', ') + '}';
- },
-
- toQueryString: function(object) {
- return $H(object).toQueryString();
- },
-
- toHTML: function(object) {
- return object && object.toHTML ? object.toHTML() : String.interpret(object);
- },
-
- keys: function(object) {
- var keys = [];
- for (var property in object)
- keys.push(property);
- return keys;
- },
-
- values: function(object) {
- var values = [];
- for (var property in object)
- values.push(object[property]);
- return values;
- },
-
- clone: function(object) {
- return Object.extend({ }, object);
- },
-
- isElement: function(object) {
- return object && object.nodeType == 1;
- },
-
- isArray: function(object) {
- return object && object.constructor === Array;
- },
-
- isHash: function(object) {
- return object instanceof Hash;
- },
-
- isFunction: function(object) {
- return typeof object == "function";
- },
-
- isString: function(object) {
- return typeof object == "string";
- },
-
- isNumber: function(object) {
- return typeof object == "number";
- },
-
- isUndefined: function(object) {
- return typeof object == "undefined";
- }
-});
-
-Object.extend(Function.prototype, {
- argumentNames: function() {
- var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip");
- return names.length == 1 && !names[0] ? [] : names;
- },
-
- bind: function() {
- if (arguments.length < 2 && arguments[0] === undefined) return this;
- var __method = this, args = $A(arguments), object = args.shift();
- return function() {
- return __method.apply(object, args.concat($A(arguments)));
- }
- },
-
- bindAsEventListener: function() {
- var __method = this, args = $A(arguments), object = args.shift();
- return function(event) {
- return __method.apply(object, [event || window.event].concat(args));
- }
- },
-
- curry: function() {
- if (!arguments.length) return this;
- var __method = this, args = $A(arguments);
- return function() {
- return __method.apply(this, args.concat($A(arguments)));
- }
- },
-
- delay: function() {
- var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
- return window.setTimeout(function() {
- return __method.apply(__method, args);
- }, timeout);
- },
-
- wrap: function(wrapper) {
- var __method = this;
- return function() {
- return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
- }
- },
-
- methodize: function() {
- if (this._methodized) return this._methodized;
- var __method = this;
- return this._methodized = function() {
- return __method.apply(null, [this].concat($A(arguments)));
- };
- }
-});
-
-Function.prototype.defer = Function.prototype.delay.curry(0.01);
-
-Date.prototype.toJSON = function() {
- return '"' + this.getUTCFullYear() + '-' +
- (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
- this.getUTCDate().toPaddedString(2) + 'T' +
- this.getUTCHours().toPaddedString(2) + ':' +
- this.getUTCMinutes().toPaddedString(2) + ':' +
- this.getUTCSeconds().toPaddedString(2) + 'Z"';
-};
-
-var Try = {
- these: function() {
- var returnValue;
-
- for (var i = 0, length = arguments.length; i < length; i++) {
- var lambda = arguments[i];
- try {
- returnValue = lambda();
- break;
- } catch (e) { }
- }
-
- return returnValue;
- }
-};
-
-RegExp.prototype.match = RegExp.prototype.test;
-
-RegExp.escape = function(str) {
- return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
-};
-
-/*--------------------------------------------------------------------------*/
-
-var PeriodicalExecuter = Class.create({
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
-
- this.registerCallback();
- },
-
- registerCallback: function() {
- this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- execute: function() {
- this.callback(this);
- },
-
- stop: function() {
- if (!this.timer) return;
- clearInterval(this.timer);
- this.timer = null;
- },
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- try {
- this.currentlyExecuting = true;
- this.execute();
- } finally {
- this.currentlyExecuting = false;
- }
- }
- }
-});
-Object.extend(String, {
- interpret: function(value) {
- return value == null ? '' : String(value);
- },
- specialChar: {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '\\': '\\\\'
- }
-});
-
-Object.extend(String.prototype, {
- gsub: function(pattern, replacement) {
- var result = '', source = this, match;
- replacement = arguments.callee.prepareReplacement(replacement);
-
- while (source.length > 0) {
- if (match = source.match(pattern)) {
- result += source.slice(0, match.index);
- result += String.interpret(replacement(match));
- source = source.slice(match.index + match[0].length);
- } else {
- result += source, source = '';
- }
- }
- return result;
- },
-
- sub: function(pattern, replacement, count) {
- replacement = this.gsub.prepareReplacement(replacement);
- count = count === undefined ? 1 : count;
-
- return this.gsub(pattern, function(match) {
- if (--count < 0) return match[0];
- return replacement(match);
- });
- },
-
- scan: function(pattern, iterator) {
- this.gsub(pattern, iterator);
- return String(this);
- },
-
- truncate: function(length, truncation) {
- length = length || 30;
- truncation = truncation === undefined ? '...' : truncation;
- return this.length > length ?
- this.slice(0, length - truncation.length) + truncation : String(this);
- },
-
- strip: function() {
- return this.replace(/^\s+/, '').replace(/\s+$/, '');
- },
-
- stripTags: function() {
- return this.replace(/<\/?[^>]+>/gi, '');
- },
-
- stripScripts: function() {
- return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
- },
-
- extractScripts: function() {
- var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
- var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
- return (this.match(matchAll) || []).map(function(scriptTag) {
- return (scriptTag.match(matchOne) || ['', ''])[1];
- });
- },
-
- evalScripts: function() {
- return this.extractScripts().map(function(script) { return eval(script) });
- },
-
- escapeHTML: function() {
- var self = arguments.callee;
- self.text.data = this;
- return self.div.innerHTML;
- },
-
- unescapeHTML: function() {
- var div = new Element('div');
- div.innerHTML = this.stripTags();
- return div.childNodes[0] ? (div.childNodes.length > 1 ?
- $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
- div.childNodes[0].nodeValue) : '';
- },
-
- toQueryParams: function(separator) {
- var match = this.strip().match(/([^?#]*)(#.*)?$/);
- if (!match) return { };
-
- return match[1].split(separator || '&').inject({ }, function(hash, pair) {
- if ((pair = pair.split('='))[0]) {
- var key = decodeURIComponent(pair.shift());
- var value = pair.length > 1 ? pair.join('=') : pair[0];
- if (value != undefined) value = decodeURIComponent(value);
-
- if (key in hash) {
- if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
- hash[key].push(value);
- }
- else hash[key] = value;
- }
- return hash;
- });
- },
-
- toArray: function() {
- return this.split('');
- },
-
- succ: function() {
- return this.slice(0, this.length - 1) +
- String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
- },
-
- times: function(count) {
- return count < 1 ? '' : new Array(count + 1).join(this);
- },
-
- camelize: function() {
- var parts = this.split('-'), len = parts.length;
- if (len == 1) return parts[0];
-
- var camelized = this.charAt(0) == '-'
- ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
- : parts[0];
-
- for (var i = 1; i < len; i++)
- camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
-
- return camelized;
- },
-
- capitalize: function() {
- return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
- },
-
- underscore: function() {
- return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
- },
-
- dasherize: function() {
- return this.gsub(/_/,'-');
- },
-
- inspect: function(useDoubleQuotes) {
- var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
- var character = String.specialChar[match[0]];
- return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
- });
- if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
- return "'" + escapedString.replace(/'/g, '\\\'') + "'";
- },
-
- toJSON: function() {
- return this.inspect(true);
- },
-
- unfilterJSON: function(filter) {
- return this.sub(filter || Prototype.JSONFilter, '#{1}');
- },
-
- isJSON: function() {
- var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
- return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
- },
-
- evalJSON: function(sanitize) {
- var json = this.unfilterJSON();
- try {
- if (!sanitize || json.isJSON()) return eval('(' + json + ')');
- } catch (e) { }
- throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
- },
-
- include: function(pattern) {
- return this.indexOf(pattern) > -1;
- },
-
- startsWith: function(pattern) {
- return this.indexOf(pattern) === 0;
- },
-
- endsWith: function(pattern) {
- var d = this.length - pattern.length;
- return d >= 0 && this.lastIndexOf(pattern) === d;
- },
-
- empty: function() {
- return this == '';
- },
-
- blank: function() {
- return /^\s*$/.test(this);
- },
-
- interpolate: function(object, pattern) {
- return new Template(this, pattern).evaluate(object);
- }
-});
-
-if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
- escapeHTML: function() {
- return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
- },
- unescapeHTML: function() {
- return this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
- }
-});
-
-String.prototype.gsub.prepareReplacement = function(replacement) {
- if (Object.isFunction(replacement)) return replacement;
- var template = new Template(replacement);
- return function(match) { return template.evaluate(match) };
-};
-
-String.prototype.parseQuery = String.prototype.toQueryParams;
-
-Object.extend(String.prototype.escapeHTML, {
- div: document.createElement('div'),
- text: document.createTextNode('')
-});
-
-with (String.prototype.escapeHTML) div.appendChild(text);
-
-var Template = Class.create({
- initialize: function(template, pattern) {
- this.template = template.toString();
- this.pattern = pattern || Template.Pattern;
- },
-
- evaluate: function(object) {
- if (Object.isFunction(object.toTemplateReplacements))
- object = object.toTemplateReplacements();
-
- return this.template.gsub(this.pattern, function(match) {
- if (object == null) return '';
-
- var before = match[1] || '';
- if (before == '\\') return match[2];
-
- var ctx = object, expr = match[3];
- var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr);
- if (match == null) return before;
-
- while (match != null) {
- var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
- ctx = ctx[comp];
- if (null == ctx || '' == match[3]) break;
- expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
- match = pattern.exec(expr);
- }
-
- return before + String.interpret(ctx);
- }.bind(this));
- }
-});
-Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
-
-var $break = { };
-
-var Enumerable = {
- each: function(iterator, context) {
- var index = 0;
- iterator = iterator.bind(context);
- try {
- this._each(function(value) {
- iterator(value, index++);
- });
- } catch (e) {
- if (e != $break) throw e;
- }
- return this;
- },
-
- eachSlice: function(number, iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var index = -number, slices = [], array = this.toArray();
- while ((index += number) < array.length)
- slices.push(array.slice(index, index+number));
- return slices.collect(iterator, context);
- },
-
- all: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var result = true;
- this.each(function(value, index) {
- result = result && !!iterator(value, index);
- if (!result) throw $break;
- });
- return result;
- },
-
- any: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var result = false;
- this.each(function(value, index) {
- if (result = !!iterator(value, index))
- throw $break;
- });
- return result;
- },
-
- collect: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var results = [];
- this.each(function(value, index) {
- results.push(iterator(value, index));
- });
- return results;
- },
-
- detect: function(iterator, context) {
- iterator = iterator.bind(context);
- var result;
- this.each(function(value, index) {
- if (iterator(value, index)) {
- result = value;
- throw $break;
- }
- });
- return result;
- },
-
- findAll: function(iterator, context) {
- iterator = iterator.bind(context);
- var results = [];
- this.each(function(value, index) {
- if (iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- grep: function(filter, iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var results = [];
-
- if (Object.isString(filter))
- filter = new RegExp(filter);
-
- this.each(function(value, index) {
- if (filter.match(value))
- results.push(iterator(value, index));
- });
- return results;
- },
-
- include: function(object) {
- if (Object.isFunction(this.indexOf))
- if (this.indexOf(object) != -1) return true;
-
- var found = false;
- this.each(function(value) {
- if (value == object) {
- found = true;
- throw $break;
- }
- });
- return found;
- },
-
- inGroupsOf: function(number, fillWith) {
- fillWith = fillWith === undefined ? null : fillWith;
- return this.eachSlice(number, function(slice) {
- while(slice.length < number) slice.push(fillWith);
- return slice;
- });
- },
-
- inject: function(memo, iterator, context) {
- iterator = iterator.bind(context);
- this.each(function(value, index) {
- memo = iterator(memo, value, index);
- });
- return memo;
- },
-
- invoke: function(method) {
- var args = $A(arguments).slice(1);
- return this.map(function(value) {
- return value[method].apply(value, args);
- });
- },
-
- max: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var result;
- this.each(function(value, index) {
- value = iterator(value, index);
- if (result == undefined || value >= result)
- result = value;
- });
- return result;
- },
-
- min: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var result;
- this.each(function(value, index) {
- value = iterator(value, index);
- if (result == undefined || value < result)
- result = value;
- });
- return result;
- },
-
- partition: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var trues = [], falses = [];
- this.each(function(value, index) {
- (iterator(value, index) ?
- trues : falses).push(value);
- });
- return [trues, falses];
- },
-
- pluck: function(property) {
- var results = [];
- this.each(function(value) {
- results.push(value[property]);
- });
- return results;
- },
-
- reject: function(iterator, context) {
- iterator = iterator.bind(context);
- var results = [];
- this.each(function(value, index) {
- if (!iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- sortBy: function(iterator, context) {
- iterator = iterator.bind(context);
- return this.map(function(value, index) {
- return {value: value, criteria: iterator(value, index)};
- }).sort(function(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }).pluck('value');
- },
-
- toArray: function() {
- return this.map();
- },
-
- zip: function() {
- var iterator = Prototype.K, args = $A(arguments);
- if (Object.isFunction(args.last()))
- iterator = args.pop();
-
- var collections = [this].concat(args).map($A);
- return this.map(function(value, index) {
- return iterator(collections.pluck(index));
- });
- },
-
- size: function() {
- return this.toArray().length;
- },
-
- inspect: function() {
- return '#<Enumerable:' + this.toArray().inspect() + '>';
- }
-};
-
-Object.extend(Enumerable, {
- map: Enumerable.collect,
- find: Enumerable.detect,
- select: Enumerable.findAll,
- filter: Enumerable.findAll,
- member: Enumerable.include,
- entries: Enumerable.toArray,
- every: Enumerable.all,
- some: Enumerable.any
-});
-function $A(iterable) {
- if (!iterable) return [];
- if (iterable.toArray) return iterable.toArray();
- var length = iterable.length, results = new Array(length);
- while (length--) results[length] = iterable[length];
- return results;
-}
-
-if (Prototype.Browser.WebKit) {
- function $A(iterable) {
- if (!iterable) return [];
- if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&
- iterable.toArray) return iterable.toArray();
- var length = iterable.length, results = new Array(length);
- while (length--) results[length] = iterable[length];
- return results;
- }
-}
-
-Array.from = $A;
-
-Object.extend(Array.prototype, Enumerable);
-
-if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
-
-Object.extend(Array.prototype, {
- _each: function(iterator) {
- for (var i = 0, length = this.length; i < length; i++)
- iterator(this[i]);
- },
-
- clear: function() {
- this.length = 0;
- return this;
- },
-
- first: function() {
- return this[0];
- },
-
- last: function() {
- return this[this.length - 1];
- },
-
- compact: function() {
- return this.select(function(value) {
- return value != null;
- });
- },
-
- flatten: function() {
- return this.inject([], function(array, value) {
- return array.concat(Object.isArray(value) ?
- value.flatten() : [value]);
- });
- },
-
- without: function() {
- var values = $A(arguments);
- return this.select(function(value) {
- return !values.include(value);
- });
- },
-
- reverse: function(inline) {
- return (inline !== false ? this : this.toArray())._reverse();
- },
-
- reduce: function() {
- return this.length > 1 ? this : this[0];
- },
-
- uniq: function(sorted) {
- return this.inject([], function(array, value, index) {
- if (0 == index || (sorted ? array.last() != value : !array.include(value)))
- array.push(value);
- return array;
- });
- },
-
- intersect: function(array) {
- return this.uniq().findAll(function(item) {
- return array.detect(function(value) { return item === value });
- });
- },
-
- clone: function() {
- return [].concat(this);
- },
-
- size: function() {
- return this.length;
- },
-
- inspect: function() {
- return '[' + this.map(Object.inspect).join(', ') + ']';
- },
-
- toJSON: function() {
- var results = [];
- this.each(function(object) {
- var value = Object.toJSON(object);
- if (value !== undefined) results.push(value);
- });
- return '[' + results.join(', ') + ']';
- }
-});
-
-// use native browser JS 1.6 implementation if available
-if (Object.isFunction(Array.prototype.forEach))
- Array.prototype._each = Array.prototype.forEach;
-
-if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
- i || (i = 0);
- var length = this.length;
- if (i < 0) i = length + i;
- for (; i < length; i++)
- if (this[i] === item) return i;
- return -1;
-};
-
-if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
- i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
- var n = this.slice(0, i).reverse().indexOf(item);
- return (n < 0) ? n : i - n - 1;
-};
-
-Array.prototype.toArray = Array.prototype.clone;
-
-function $w(string) {
- if (!Object.isString(string)) return [];
- string = string.strip();
- return string ? string.split(/\s+/) : [];
-}
-
-if (Prototype.Browser.Opera){
- Array.prototype.concat = function() {
- var array = [];
- for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
- for (var i = 0, length = arguments.length; i < length; i++) {
- if (Object.isArray(arguments[i])) {
- for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
- array.push(arguments[i][j]);
- } else {
- array.push(arguments[i]);
- }
- }
- return array;
- };
-}
-Object.extend(Number.prototype, {
- toColorPart: function() {
- return this.toPaddedString(2, 16);
- },
-
- succ: function() {
- return this + 1;
- },
-
- times: function(iterator) {
- $R(0, this, true).each(iterator);
- return this;
- },
-
- toPaddedString: function(length, radix) {
- var string = this.toString(radix || 10);
- return '0'.times(length - string.length) + string;
- },
-
- toJSON: function() {
- return isFinite(this) ? this.toString() : 'null';
- }
-});
-
-$w('abs round ceil floor').each(function(method){
- Number.prototype[method] = Math[method].methodize();
-});
-function $H(object) {
- return new Hash(object);
-};
-
-var Hash = Class.create(Enumerable, (function() {
- if (function() {
- var i = 0, Test = function(value) { this.key = value };
- Test.prototype.key = 'foo';
- for (var property in new Test('bar')) i++;
- return i > 1;
- }()) {
- function each(iterator) {
- var cache = [];
- for (var key in this._object) {
- var value = this._object[key];
- if (cache.include(key)) continue;
- cache.push(key);
- var pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- }
- } else {
- function each(iterator) {
- for (var key in this._object) {
- var value = this._object[key], pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- }
- }
-
- function toQueryPair(key, value) {
- if (Object.isUndefined(value)) return key;
- return key + '=' + encodeURIComponent(String.interpret(value));
- }
-
- return {
- initialize: function(object) {
- this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
- },
-
- _each: each,
-
- set: function(key, value) {
- return this._object[key] = value;
- },
-
- get: function(key) {
- return this._object[key];
- },
-
- unset: function(key) {
- var value = this._object[key];
- delete this._object[key];
- return value;
- },
-
- toObject: function() {
- return Object.clone(this._object);
- },
-
- keys: function() {
- return this.pluck('key');
- },
-
- values: function() {
- return this.pluck('value');
- },
-
- index: function(value) {
- var match = this.detect(function(pair) {
- return pair.value === value;
- });
- return match && match.key;
- },
-
- merge: function(object) {
- return this.clone().update(object);
- },
-
- update: function(object) {
- return new Hash(object).inject(this, function(result, pair) {
- result.set(pair.key, pair.value);
- return result;
- });
- },
-
- toQueryString: function() {
- return this.map(function(pair) {
- var key = encodeURIComponent(pair.key), values = pair.value;
-
- if (values && typeof values == 'object') {
- if (Object.isArray(values))
- return values.map(toQueryPair.curry(key)).join('&');
- }
- return toQueryPair(key, values);
- }).join('&');
- },
-
- inspect: function() {
- return '#<Hash:{' + this.map(function(pair) {
- return pair.map(Object.inspect).join(': ');
- }).join(', ') + '}>';
- },
-
- toJSON: function() {
- return Object.toJSON(this.toObject());
- },
-
- clone: function() {
- return new Hash(this);
- }
- }
-})());
-
-Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
-Hash.from = $H;
-var ObjectRange = Class.create(Enumerable, {
- initialize: function(start, end, exclusive) {
- this.start = start;
- this.end = end;
- this.exclusive = exclusive;
- },
-
- _each: function(iterator) {
- var value = this.start;
- while (this.include(value)) {
- iterator(value);
- value = value.succ();
- }
- },
-
- include: function(value) {
- if (value < this.start)
- return false;
- if (this.exclusive)
- return value < this.end;
- return value <= this.end;
- }
-});
-
-var $R = function(start, end, exclusive) {
- return new ObjectRange(start, end, exclusive);
-};
-
-var Ajax = {
- getTransport: function() {
- return Try.these(
- function() {return new XMLHttpRequest()},
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
- function() {return new ActiveXObject('Microsoft.XMLHTTP')}
- ) || false;
- },
-
- activeRequestCount: 0
-};
-
-Ajax.Responders = {
- responders: [],
-
- _each: function(iterator) {
- this.responders._each(iterator);
- },
-
- register: function(responder) {
- if (!this.include(responder))
- this.responders.push(responder);
- },
-
- unregister: function(responder) {
- this.responders = this.responders.without(responder);
- },
-
- dispatch: function(callback, request, transport, json) {
- this.each(function(responder) {
- if (Object.isFunction(responder[callback])) {
- try {
- responder[callback].apply(responder, [request, transport, json]);
- } catch (e) { }
- }
- });
- }
-};
-
-Object.extend(Ajax.Responders, Enumerable);
-
-Ajax.Responders.register({
- onCreate: function() { Ajax.activeRequestCount++ },
- onComplete: function() { Ajax.activeRequestCount-- }
-});
-
-Ajax.Base = Class.create({
- initialize: function(options) {
- this.options = {
- method: 'post',
- asynchronous: true,
- contentType: 'application/x-www-form-urlencoded',
- encoding: 'UTF-8',
- parameters: '',
- evalJSON: true,
- evalJS: true
- };
- Object.extend(this.options, options || { });
-
- this.options.method = this.options.method.toLowerCase();
- if (Object.isString(this.options.parameters))
- this.options.parameters = this.options.parameters.toQueryParams();
- }
-});
-
-Ajax.Request = Class.create(Ajax.Base, {
- _complete: false,
-
- initialize: function($super, url, options) {
- $super(options);
- this.transport = Ajax.getTransport();
- this.request(url);
- },
-
- request: function(url) {
- this.url = url;
- this.method = this.options.method;
- var params = Object.clone(this.options.parameters);
-
- if (!['get', 'post'].include(this.method)) {
- // simulate other verbs over post
- params['_method'] = this.method;
- this.method = 'post';
- }
-
- this.parameters = params;
-
- if (params = Object.toQueryString(params)) {
- // when GET, append parameters to URL
- if (this.method == 'get')
- this.url += (this.url.include('?') ? '&' : '?') + params;
- else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
- params += '&_=';
- }
-
- try {
- var response = new Ajax.Response(this);
- if (this.options.onCreate) this.options.onCreate(response);
- Ajax.Responders.dispatch('onCreate', this, response);
-
- this.transport.open(this.method.toUpperCase(), this.url,
- this.options.asynchronous);
-
- if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
-
- this.transport.onreadystatechange = this.onStateChange.bind(this);
- this.setRequestHeaders();
-
- this.body = this.method == 'post' ? (this.options.postBody || params) : null;
- this.transport.send(this.body);
-
- /* Force Firefox to handle ready state 4 for synchronous requests */
- if (!this.options.asynchronous && this.transport.overrideMimeType)
- this.onStateChange();
-
- }
- catch (e) {
- this.dispatchException(e);
- }
- },
-
- onStateChange: function() {
- var readyState = this.transport.readyState;
- if (readyState > 1 && !((readyState == 4) && this._complete))
- this.respondToReadyState(this.transport.readyState);
- },
-
- setRequestHeaders: function() {
- var headers = {
- 'X-Requested-With': 'XMLHttpRequest',
- 'X-Prototype-Version': Prototype.Version,
- 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
- };
-
- if (this.method == 'post') {
- headers['Content-type'] = this.options.contentType +
- (this.options.encoding ? '; charset=' + this.options.encoding : '');
-
- /* Force "Connection: close" for older Mozilla browsers to work
- * around a bug where XMLHttpRequest sends an incorrect
- * Content-length header. See Mozilla Bugzilla #246651.
- */
- if (this.transport.overrideMimeType &&
- (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
- headers['Connection'] = 'close';
- }
-
- // user-defined headers
- if (typeof this.options.requestHeaders == 'object') {
- var extras = this.options.requestHeaders;
-
- if (Object.isFunction(extras.push))
- for (var i = 0, length = extras.length; i < length; i += 2)
- headers[extras[i]] = extras[i+1];
- else
- $H(extras).each(function(pair) { headers[pair.key] = pair.value });
- }
-
- for (var name in headers)
- this.transport.setRequestHeader(name, headers[name]);
- },
-
- success: function() {
- var status = this.getStatus();
- return !status || (status >= 200 && status < 300);
- },
-
- getStatus: function() {
- try {
- return this.transport.status || 0;
- } catch (e) { return 0 }
- },
-
- respondToReadyState: function(readyState) {
- var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
-
- if (state == 'Complete') {
- try {
- this._complete = true;
- (this.options['on' + response.status]
- || this.options['on' + (this.success() ? 'Success' : 'Failure')]
- || Prototype.emptyFunction)(response, response.headerJSON);
- } catch (e) {
- this.dispatchException(e);
- }
-
- var contentType = response.getHeader('Content-type');
- if (this.options.evalJS == 'force'
- || (this.options.evalJS && contentType
- && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
- this.evalResponse();
- }
-
- try {
- (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
- Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
- } catch (e) {
- this.dispatchException(e);
- }
-
- if (state == 'Complete') {
- // avoid memory leak in MSIE: clean up
- this.transport.onreadystatechange = Prototype.emptyFunction;
- }
- },
-
- getHeader: function(name) {
- try {
- return this.transport.getResponseHeader(name);
- } catch (e) { return null }
- },
-
- evalResponse: function() {
- try {
- return eval((this.transport.responseText || '').unfilterJSON());
- } catch (e) {
- this.dispatchException(e);
- }
- },
-
- dispatchException: function(exception) {
- (this.options.onException || Prototype.emptyFunction)(this, exception);
- Ajax.Responders.dispatch('onException', this, exception);
- }
-});
-
-Ajax.Request.Events =
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
-
-Ajax.Response = Class.create({
- initialize: function(request){
- this.request = request;
- var transport = this.transport = request.transport,
- readyState = this.readyState = transport.readyState;
-
- if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
- this.status = this.getStatus();
- this.statusText = this.getStatusText();
- this.responseText = String.interpret(transport.responseText);
- this.headerJSON = this._getHeaderJSON();
- }
-
- if(readyState == 4) {
- var xml = transport.responseXML;
- this.responseXML = xml === undefined ? null : xml;
- this.responseJSON = this._getResponseJSON();
- }
- },
-
- status: 0,
- statusText: '',
-
- getStatus: Ajax.Request.prototype.getStatus,
-
- getStatusText: function() {
- try {
- return this.transport.statusText || '';
- } catch (e) { return '' }
- },
-
- getHeader: Ajax.Request.prototype.getHeader,
-
- getAllHeaders: function() {
- try {
- return this.getAllResponseHeaders();
- } catch (e) { return null }
- },
-
- getResponseHeader: function(name) {
- return this.transport.getResponseHeader(name);
- },
-
- getAllResponseHeaders: function() {
- return this.transport.getAllResponseHeaders();
- },
-
- _getHeaderJSON: function() {
- var json = this.getHeader('X-JSON');
- if (!json) return null;
- json = decodeURIComponent(escape(json));
- try {
- return json.evalJSON(this.request.options.sanitizeJSON);
- } catch (e) {
- this.request.dispatchException(e);
- }
- },
-
- _getResponseJSON: function() {
- var options = this.request.options;
- if (!options.evalJSON || (options.evalJSON != 'force' &&
- !(this.getHeader('Content-type') || '').include('application/json')))
- return null;
- try {
- return this.transport.responseText.evalJSON(options.sanitizeJSON);
- } catch (e) {
- this.request.dispatchException(e);
- }
- }
-});
-
-Ajax.Updater = Class.create(Ajax.Request, {
- initialize: function($super, container, url, options) {
- this.container = {
- success: (container.success || container),
- failure: (container.failure || (container.success ? null : container))
- };
-
- options = options || { };
- var onComplete = options.onComplete;
- options.onComplete = (function(response, param) {
- this.updateContent(response.responseText);
- if (Object.isFunction(onComplete)) onComplete(response, param);
- }).bind(this);
-
- $super(url, options);
- },
-
- updateContent: function(responseText) {
- var receiver = this.container[this.success() ? 'success' : 'failure'],
- options = this.options;
-
- if (!options.evalScripts) responseText = responseText.stripScripts();
-
- if (receiver = $(receiver)) {
- if (options.insertion) {
- if (Object.isString(options.insertion)) {
- var insertion = { }; insertion[options.insertion] = responseText;
- receiver.insert(insertion);
- }
- else options.insertion(receiver, responseText);
- }
- else receiver.update(responseText);
- }
-
- if (this.success()) {
- if (this.onComplete) this.onComplete.bind(this).defer();
- }
- }
-});
-
-Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
- initialize: function($super, container, url, options) {
- $super(options);
- this.onComplete = this.options.onComplete;
-
- this.frequency = (this.options.frequency || 2);
- this.decay = (this.options.decay || 1);
-
- this.updater = { };
- this.container = container;
- this.url = url;
-
- this.start();
- },
-
- start: function() {
- this.options.onComplete = this.updateComplete.bind(this);
- this.onTimerEvent();
- },
-
- stop: function() {
- this.updater.options.onComplete = undefined;
- clearTimeout(this.timer);
- (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
- },
-
- updateComplete: function(response) {
- if (this.options.decay) {
- this.decay = (response.responseText == this.lastText ?
- this.decay * this.options.decay : 1);
-
- this.lastText = response.responseText;
- }
- this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
- },
-
- onTimerEvent: function() {
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
- }
-});
-function $(element) {
- if (arguments.length > 1) {
- for (var i = 0, elements = [], length = arguments.length; i < length; i++)
- elements.push($(arguments[i]));
- return elements;
- }
- if (Object.isString(element))
- element = document.getElementById(element);
- return Element.extend(element);
-}
-
-if (Prototype.BrowserFeatures.XPath) {
- document._getElementsByXPath = function(expression, parentElement) {
- var results = [];
- var query = document.evaluate(expression, $(parentElement) || document,
- null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- for (var i = 0, length = query.snapshotLength; i < length; i++)
- results.push(Element.extend(query.snapshotItem(i)));
- return results;
- };
-}
-
-/*--------------------------------------------------------------------------*/
-
-if (!window.Node) var Node = { };
-
-if (!Node.ELEMENT_NODE) {
- // DOM level 2 ECMAScript Language Binding
- Object.extend(Node, {
- ELEMENT_NODE: 1,
- ATTRIBUTE_NODE: 2,
- TEXT_NODE: 3,
- CDATA_SECTION_NODE: 4,
- ENTITY_REFERENCE_NODE: 5,
- ENTITY_NODE: 6,
- PROCESSING_INSTRUCTION_NODE: 7,
- COMMENT_NODE: 8,
- DOCUMENT_NODE: 9,
- DOCUMENT_TYPE_NODE: 10,
- DOCUMENT_FRAGMENT_NODE: 11,
- NOTATION_NODE: 12
- });
-}
-
-(function() {
- var element = this.Element;
- this.Element = function(tagName, attributes) {
- attributes = attributes || { };
- tagName = tagName.toLowerCase();
- var cache = Element.cache;
- if (Prototype.Browser.IE && attributes.name) {
- tagName = '<' + tagName + ' name="' + attributes.name + '">';
- delete attributes.name;
- return Element.writeAttribute(document.createElement(tagName), attributes);
- }
- if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
- return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
- };
- Object.extend(this.Element, element || { });
-}).call(window);
-
-Element.cache = { };
-
-Element.Methods = {
- visible: function(element) {
- return $(element).style.display != 'none';
- },
-
- toggle: function(element) {
- element = $(element);
- Element[Element.visible(element) ? 'hide' : 'show'](element);
- return element;
- },
-
- hide: function(element) {
- $(element).style.display = 'none';
- return element;
- },
-
- show: function(element) {
- $(element).style.display = '';
- return element;
- },
-
- remove: function(element) {
- element = $(element);
- element.parentNode.removeChild(element);
- return element;
- },
-
- update: function(element, content) {
- element = $(element);
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) return element.update().insert(content);
- content = Object.toHTML(content);
- element.innerHTML = content.stripScripts();
- content.evalScripts.bind(content).defer();
- return element;
- },
-
- replace: function(element, content) {
- element = $(element);
- if (content && content.toElement) content = content.toElement();
- else if (!Object.isElement(content)) {
- content = Object.toHTML(content);
- var range = element.ownerDocument.createRange();
- range.selectNode(element);
- content.evalScripts.bind(content).defer();
- content = range.createContextualFragment(content.stripScripts());
- }
- element.parentNode.replaceChild(content, element);
- return element;
- },
-
- insert: function(element, insertions) {
- element = $(element);
-
- if (Object.isString(insertions) || Object.isNumber(insertions) ||
- Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
- insertions = {bottom:insertions};
-
- var content, t, range;
-
- for (position in insertions) {
- content = insertions[position];
- position = position.toLowerCase();
- t = Element._insertionTranslations[position];
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) {
- t.insert(element, content);
- continue;
- }
-
- content = Object.toHTML(content);
-
- range = element.ownerDocument.createRange();
- t.initializeRange(element, range);
- t.insert(element, range.createContextualFragment(content.stripScripts()));
-
- content.evalScripts.bind(content).defer();
- }
-
- return element;
- },
-
- wrap: function(element, wrapper, attributes) {
- element = $(element);
- if (Object.isElement(wrapper))
- $(wrapper).writeAttribute(attributes || { });
- else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
- else wrapper = new Element('div', wrapper);
- if (element.parentNode)
- element.parentNode.replaceChild(wrapper, element);
- wrapper.appendChild(element);
- return wrapper;
- },
-
- inspect: function(element) {
- element = $(element);
- var result = '<' + element.tagName.toLowerCase();
- $H({'id': 'id', 'className': 'class'}).each(function(pair) {
- var property = pair.first(), attribute = pair.last();
- var value = (element[property] || '').toString();
- if (value) result += ' ' + attribute + '=' + value.inspect(true);
- });
- return result + '>';
- },
-
- recursivelyCollect: function(element, property) {
- element = $(element);
- var elements = [];
- while (element = element[property])
- if (element.nodeType == 1)
- elements.push(Element.extend(element));
- return elements;
- },
-
- ancestors: function(element) {
- return $(element).recursivelyCollect('parentNode');
- },
-
- descendants: function(element) {
- return $A($(element).getElementsByTagName('*')).each(Element.extend);
- },
-
- firstDescendant: function(element) {
- element = $(element).firstChild;
- while (element && element.nodeType != 1) element = element.nextSibling;
- return $(element);
- },
-
- immediateDescendants: function(element) {
- if (!(element = $(element).firstChild)) return [];
- while (element && element.nodeType != 1) element = element.nextSibling;
- if (element) return [element].concat($(element).nextSiblings());
- return [];
- },
-
- previousSiblings: function(element) {
- return $(element).recursivelyCollect('previousSibling');
- },
-
- nextSiblings: function(element) {
- return $(element).recursivelyCollect('nextSibling');
- },
-
- siblings: function(element) {
- element = $(element);
- return element.previousSiblings().reverse().concat(element.nextSiblings());
- },
-
- match: function(element, selector) {
- if (Object.isString(selector))
- selector = new Selector(selector);
- return selector.match($(element));
- },
-
- up: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(element.parentNode);
- var ancestors = element.ancestors();
- return expression ? Selector.findElement(ancestors, expression, index) :
- ancestors[index || 0];
- },
-
- down: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return element.firstDescendant();
- var descendants = element.descendants();
- return expression ? Selector.findElement(descendants, expression, index) :
- descendants[index || 0];
- },
-
- previous: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
- var previousSiblings = element.previousSiblings();
- return expression ? Selector.findElement(previousSiblings, expression, index) :
- previousSiblings[index || 0];
- },
-
- next: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
- var nextSiblings = element.nextSiblings();
- return expression ? Selector.findElement(nextSiblings, expression, index) :
- nextSiblings[index || 0];
- },
-
- select: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element, args);
- },
-
- adjacent: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element.parentNode, args).without(element);
- },
-
- identify: function(element) {
- element = $(element);
- var id = element.readAttribute('id'), self = arguments.callee;
- if (id) return id;
- do { id = 'anonymous_element_' + self.counter++ } while ($(id));
- element.writeAttribute('id', id);
- return id;
- },
-
- readAttribute: function(element, name) {
- element = $(element);
- if (Prototype.Browser.IE) {
- var t = Element._attributeTranslations.read;
- if (t.values[name]) return t.values[name](element, name);
- if (t.names[name]) name = t.names[name];
- if (name.include(':')) {
- return (!element.attributes || !element.attributes[name]) ? null :
- element.attributes[name].value;
- }
- }
- return element.getAttribute(name);
- },
-
- writeAttribute: function(element, name, value) {
- element = $(element);
- var attributes = { }, t = Element._attributeTranslations.write;
-
- if (typeof name == 'object') attributes = name;
- else attributes[name] = value === undefined ? true : value;
-
- for (var attr in attributes) {
- var name = t.names[attr] || attr, value = attributes[attr];
- if (t.values[attr]) name = t.values[attr](element, value);
- if (value === false || value === null)
- element.removeAttribute(name);
- else if (value === true)
- element.setAttribute(name, name);
- else element.setAttribute(name, value);
- }
- return element;
- },
-
- getHeight: function(element) {
- return $(element).getDimensions().height;
- },
-
- getWidth: function(element) {
- return $(element).getDimensions().width;
- },
-
- classNames: function(element) {
- return new Element.ClassNames(element);
- },
-
- hasClassName: function(element, className) {
- if (!(element = $(element))) return;
- var elementClassName = element.className;
- return (elementClassName.length > 0 && (elementClassName == className ||
- new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
- },
-
- addClassName: function(element, className) {
- if (!(element = $(element))) return;
- if (!element.hasClassName(className))
- element.className += (element.className ? ' ' : '') + className;
- return element;
- },
-
- removeClassName: function(element, className) {
- if (!(element = $(element))) return;
- element.className = element.className.replace(
- new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
- return element;
- },
-
- toggleClassName: function(element, className) {
- if (!(element = $(element))) return;
- return element[element.hasClassName(className) ?
- 'removeClassName' : 'addClassName'](className);
- },
-
- // removes whitespace-only text node children
- cleanWhitespace: function(element) {
- element = $(element);
- var node = element.firstChild;
- while (node) {
- var nextNode = node.nextSibling;
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
- element.removeChild(node);
- node = nextNode;
- }
- return element;
- },
-
- empty: function(element) {
- return $(element).innerHTML.blank();
- },
-
- descendantOf: function(element, ancestor) {
- element = $(element), ancestor = $(ancestor);
-
- if (element.compareDocumentPosition)
- return (element.compareDocumentPosition(ancestor) & 8) === 8;
-
- if (element.sourceIndex && !Prototype.Browser.Opera) {
- var e = element.sourceIndex, a = ancestor.sourceIndex,
- nextAncestor = ancestor.nextSibling;
- if (!nextAncestor) {
- do { ancestor = ancestor.parentNode; }
- while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode);
- }
- if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);
- }
-
- while (element = element.parentNode)
- if (element == ancestor) return true;
- return false;
- },
-
- scrollTo: function(element) {
- element = $(element);
- var pos = element.cumulativeOffset();
- window.scrollTo(pos[0], pos[1]);
- return element;
- },
-
- getStyle: function(element, style) {
- element = $(element);
- style = style == 'float' ? 'cssFloat' : style.camelize();
- var value = element.style[style];
- if (!value) {
- var css = document.defaultView.getComputedStyle(element, null);
- value = css ? css[style] : null;
- }
- if (style == 'opacity') return value ? parseFloat(value) : 1.0;
- return value == 'auto' ? null : value;
- },
-
- getOpacity: function(element) {
- return $(element).getStyle('opacity');
- },
-
- setStyle: function(element, styles) {
- element = $(element);
- var elementStyle = element.style, match;
- if (Object.isString(styles)) {
- element.style.cssText += ';' + styles;
- return styles.include('opacity') ?
- element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
- }
- for (var property in styles)
- if (property == 'opacity') element.setOpacity(styles[property]);
- else
- elementStyle[(property == 'float' || property == 'cssFloat') ?
- (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') :
- property] = styles[property];
-
- return element;
- },
-
- setOpacity: function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1 || value === '') ? '' :
- (value < 0.00001) ? 0 : value;
- return element;
- },
-
- getDimensions: function(element) {
- element = $(element);
- var display = $(element).getStyle('display');
- if (display != 'none' && display != null) // Safari bug
- return {width: element.offsetWidth, height: element.offsetHeight};
-
- // All *Width and *Height properties give 0 on elements with display none,
- // so enable the element temporarily
- var els = element.style;
- var originalVisibility = els.visibility;
- var originalPosition = els.position;
- var originalDisplay = els.display;
- els.visibility = 'hidden';
- els.position = 'absolute';
- els.display = 'block';
- var originalWidth = element.clientWidth;
- var originalHeight = element.clientHeight;
- els.display = originalDisplay;
- els.position = originalPosition;
- els.visibility = originalVisibility;
- return {width: originalWidth, height: originalHeight};
- },
-
- makePositioned: function(element) {
- element = $(element);
- var pos = Element.getStyle(element, 'position');
- if (pos == 'static' || !pos) {
- element._madePositioned = true;
- element.style.position = 'relative';
- // Opera returns the offset relative to the positioning context, when an
- // element is position relative but top and left have not been defined
- if (window.opera) {
- element.style.top = 0;
- element.style.left = 0;
- }
- }
- return element;
- },
-
- undoPositioned: function(element) {
- element = $(element);
- if (element._madePositioned) {
- element._madePositioned = undefined;
- element.style.position =
- element.style.top =
- element.style.left =
- element.style.bottom =
- element.style.right = '';
- }
- return element;
- },
-
- makeClipping: function(element) {
- element = $(element);
- if (element._overflow) return element;
- element._overflow = Element.getStyle(element, 'overflow') || 'auto';
- if (element._overflow !== 'hidden')
- element.style.overflow = 'hidden';
- return element;
- },
-
- undoClipping: function(element) {
- element = $(element);
- if (!element._overflow) return element;
- element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
- element._overflow = null;
- return element;
- },
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- positionedOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- if (element) {
- if (element.tagName == 'BODY') break;
- var p = Element.getStyle(element, 'position');
- if (p == 'relative' || p == 'absolute') break;
- }
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- absolutize: function(element) {
- element = $(element);
- if (element.getStyle('position') == 'absolute') return;
- // Position.prepare(); // To be done manually by Scripty when it needs it.
-
- var offsets = element.positionedOffset();
- var top = offsets[1];
- var left = offsets[0];
- var width = element.clientWidth;
- var height = element.clientHeight;
-
- element._originalLeft = left - parseFloat(element.style.left || 0);
- element._originalTop = top - parseFloat(element.style.top || 0);
- element._originalWidth = element.style.width;
- element._originalHeight = element.style.height;
-
- element.style.position = 'absolute';
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.width = width + 'px';
- element.style.height = height + 'px';
- return element;
- },
-
- relativize: function(element) {
- element = $(element);
- if (element.getStyle('position') == 'relative') return;
- // Position.prepare(); // To be done manually by Scripty when it needs it.
-
- element.style.position = 'relative';
- var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
- var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
-
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.height = element._originalHeight;
- element.style.width = element._originalWidth;
- return element;
- },
-
- cumulativeScrollOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.scrollTop || 0;
- valueL += element.scrollLeft || 0;
- element = element.parentNode;
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- getOffsetParent: function(element) {
- if (element.offsetParent) return $(element.offsetParent);
- if (element == document.body) return $(element);
-
- while ((element = element.parentNode) && element != document.body)
- if (Element.getStyle(element, 'position') != 'static')
- return $(element);
-
- return $(document.body);
- },
-
- viewportOffset: function(forElement) {
- var valueT = 0, valueL = 0;
-
- var element = forElement;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
-
- // Safari fix
- if (element.offsetParent == document.body &&
- Element.getStyle(element, 'position') == 'absolute') break;
-
- } while (element = element.offsetParent);
-
- element = forElement;
- do {
- if (!Prototype.Browser.Opera || element.tagName == 'BODY') {
- valueT -= element.scrollTop || 0;
- valueL -= element.scrollLeft || 0;
- }
- } while (element = element.parentNode);
-
- return Element._returnOffset(valueL, valueT);
- },
-
- clonePosition: function(element, source) {
- var options = Object.extend({
- setLeft: true,
- setTop: true,
- setWidth: true,
- setHeight: true,
- offsetTop: 0,
- offsetLeft: 0
- }, arguments[2] || { });
-
- // find page position of source
- source = $(source);
- var p = source.viewportOffset();
-
- // find coordinate system to use
- element = $(element);
- var delta = [0, 0];
- var parent = null;
- // delta [0,0] will do fine with position: fixed elements,
- // position:absolute needs offsetParent deltas
- if (Element.getStyle(element, 'position') == 'absolute') {
- parent = element.getOffsetParent();
- delta = parent.viewportOffset();
- }
-
- // correct by body offsets (fixes Safari)
- if (parent == document.body) {
- delta[0] -= document.body.offsetLeft;
- delta[1] -= document.body.offsetTop;
- }
-
- // set position
- if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
- if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
- if (options.setWidth) element.style.width = source.offsetWidth + 'px';
- if (options.setHeight) element.style.height = source.offsetHeight + 'px';
- return element;
- }
-};
-
-Element.Methods.identify.counter = 1;
-
-Object.extend(Element.Methods, {
- getElementsBySelector: Element.Methods.select,
- childElements: Element.Methods.immediateDescendants
-});
-
-Element._attributeTranslations = {
- write: {
- names: {
- className: 'class',
- htmlFor: 'for'
- },
- values: { }
- }
-};
-
-
-if (!document.createRange || Prototype.Browser.Opera) {
- Element.Methods.insert = function(element, insertions) {
- element = $(element);
-
- if (Object.isString(insertions) || Object.isNumber(insertions) ||
- Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
- insertions = { bottom: insertions };
-
- var t = Element._insertionTranslations, content, position, pos, tagName;
-
- for (position in insertions) {
- content = insertions[position];
- position = position.toLowerCase();
- pos = t[position];
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) {
- pos.insert(element, content);
- continue;
- }
-
- content = Object.toHTML(content);
- tagName = ((position == 'before' || position == 'after')
- ? element.parentNode : element).tagName.toUpperCase();
-
- if (t.tags[tagName]) {
- var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
- if (position == 'top' || position == 'after') fragments.reverse();
- fragments.each(pos.insert.curry(element));
- }
- else element.insertAdjacentHTML(pos.adjacency, content.stripScripts());
-
- content.evalScripts.bind(content).defer();
- }
-
- return element;
- };
-}
-
-if (Prototype.Browser.Opera) {
- Element.Methods._getStyle = Element.Methods.getStyle;
- Element.Methods.getStyle = function(element, style) {
- switch(style) {
- case 'left':
- case 'top':
- case 'right':
- case 'bottom':
- if (Element._getStyle(element, 'position') == 'static') return null;
- default: return Element._getStyle(element, style);
- }
- };
- Element.Methods._readAttribute = Element.Methods.readAttribute;
- Element.Methods.readAttribute = function(element, attribute) {
- if (attribute == 'title') return element.title;
- return Element._readAttribute(element, attribute);
- };
-}
-
-else if (Prototype.Browser.IE) {
- $w('positionedOffset getOffsetParent viewportOffset').each(function(method) {
- Element.Methods[method] = Element.Methods[method].wrap(
- function(proceed, element) {
- element = $(element);
- var position = element.getStyle('position');
- if (position != 'static') return proceed(element);
- element.setStyle({ position: 'relative' });
- var value = proceed(element);
- element.setStyle({ position: position });
- return value;
- }
- );
- });
-
- Element.Methods.getStyle = function(element, style) {
- element = $(element);
- style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
- var value = element.style[style];
- if (!value && element.currentStyle) value = element.currentStyle[style];
-
- if (style == 'opacity') {
- if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
- if (value[1]) return parseFloat(value[1]) / 100;
- return 1.0;
- }
-
- if (value == 'auto') {
- if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
- return element['offset' + style.capitalize()] + 'px';
- return null;
- }
- return value;
- };
-
- Element.Methods.setOpacity = function(element, value) {
- function stripAlpha(filter){
- return filter.replace(/alpha\([^\)]*\)/gi,'');
- }
- element = $(element);
- var currentStyle = element.currentStyle;
- if ((currentStyle && !currentStyle.hasLayout) ||
- (!currentStyle && element.style.zoom == 'normal'))
- element.style.zoom = 1;
-
- var filter = element.getStyle('filter'), style = element.style;
- if (value == 1 || value === '') {
- (filter = stripAlpha(filter)) ?
- style.filter = filter : style.removeAttribute('filter');
- return element;
- } else if (value < 0.00001) value = 0;
- style.filter = stripAlpha(filter) +
- 'alpha(opacity=' + (value * 100) + ')';
- return element;
- };
-
- Element._attributeTranslations = {
- read: {
- names: {
- 'class': 'className',
- 'for': 'htmlFor'
- },
- values: {
- _getAttr: function(element, attribute) {
- return element.getAttribute(attribute, 2);
- },
- _getAttrNode: function(element, attribute) {
- var node = element.getAttributeNode(attribute);
- return node ? node.value : "";
- },
- _getEv: function(element, attribute) {
- var attribute = element.getAttribute(attribute);
- return attribute ? attribute.toString().slice(23, -2) : null;
- },
- _flag: function(element, attribute) {
- return $(element).hasAttribute(attribute) ? attribute : null;
- },
- style: function(element) {
- return element.style.cssText.toLowerCase();
- },
- title: function(element) {
- return element.title;
- }
- }
- }
- };
-
- Element._attributeTranslations.write = {
- names: Object.clone(Element._attributeTranslations.read.names),
- values: {
- checked: function(element, value) {
- element.checked = !!value;
- },
-
- style: function(element, value) {
- element.style.cssText = value ? value : '';
- }
- }
- };
-
- Element._attributeTranslations.has = {};
-
- $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
- 'encType maxLength readOnly longDesc').each(function(attr) {
- Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
- Element._attributeTranslations.has[attr.toLowerCase()] = attr;
- });
-
- (function(v) {
- Object.extend(v, {
- href: v._getAttr,
- src: v._getAttr,
- type: v._getAttr,
- action: v._getAttrNode,
- disabled: v._flag,
- checked: v._flag,
- readonly: v._flag,
- multiple: v._flag,
- onload: v._getEv,
- onunload: v._getEv,
- onclick: v._getEv,
- ondblclick: v._getEv,
- onmousedown: v._getEv,
- onmouseup: v._getEv,
- onmouseover: v._getEv,
- onmousemove: v._getEv,
- onmouseout: v._getEv,
- onfocus: v._getEv,
- onblur: v._getEv,
- onkeypress: v._getEv,
- onkeydown: v._getEv,
- onkeyup: v._getEv,
- onsubmit: v._getEv,
- onreset: v._getEv,
- onselect: v._getEv,
- onchange: v._getEv
- });
- })(Element._attributeTranslations.read.values);
-}
-
-else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
- Element.Methods.setOpacity = function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1) ? 0.999999 :
- (value === '') ? '' : (value < 0.00001) ? 0 : value;
- return element;
- };
-}
-
-else if (Prototype.Browser.WebKit) {
- Element.Methods.setOpacity = function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1 || value === '') ? '' :
- (value < 0.00001) ? 0 : value;
-
- if (value == 1)
- if(element.tagName == 'IMG' && element.width) {
- element.width++; element.width--;
- } else try {
- var n = document.createTextNode(' ');
- element.appendChild(n);
- element.removeChild(n);
- } catch (e) { }
-
- return element;
- };
-
- // Safari returns margins on body which is incorrect if the child is absolutely
- // positioned. For performance reasons, redefine Position.cumulativeOffset for
- // KHTML/WebKit only.
- Element.Methods.cumulativeOffset = function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- if (element.offsetParent == document.body)
- if (Element.getStyle(element, 'position') == 'absolute') break;
-
- element = element.offsetParent;
- } while (element);
-
- return Element._returnOffset(valueL, valueT);
- };
-}
-
-if (Prototype.Browser.IE || Prototype.Browser.Opera) {
- // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
- Element.Methods.update = function(element, content) {
- element = $(element);
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) return element.update().insert(content);
-
- content = Object.toHTML(content);
- var tagName = element.tagName.toUpperCase();
-
- if (tagName in Element._insertionTranslations.tags) {
- $A(element.childNodes).each(function(node) { element.removeChild(node) });
- Element._getContentFromAnonymousElement(tagName, content.stripScripts())
- .each(function(node) { element.appendChild(node) });
- }
- else element.innerHTML = content.stripScripts();
-
- content.evalScripts.bind(content).defer();
- return element;
- };
-}
-
-if (document.createElement('div').outerHTML) {
- Element.Methods.replace = function(element, content) {
- element = $(element);
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) {
- element.parentNode.replaceChild(content, element);
- return element;
- }
-
- content = Object.toHTML(content);
- var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
-
- if (Element._insertionTranslations.tags[tagName]) {
- var nextSibling = element.next();
- var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
- parent.removeChild(element);
- if (nextSibling)
- fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
- else
- fragments.each(function(node) { parent.appendChild(node) });
- }
- else element.outerHTML = content.stripScripts();
-
- content.evalScripts.bind(content).defer();
- return element;
- };
-}
-
-Element._returnOffset = function(l, t) {
- var result = [l, t];
- result.left = l;
- result.top = t;
- return result;
-};
-
-Element._getContentFromAnonymousElement = function(tagName, html) {
- var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
- div.innerHTML = t[0] + html + t[1];
- t[2].times(function() { div = div.firstChild });
- return $A(div.childNodes);
-};
-
-Element._insertionTranslations = {
- before: {
- adjacency: 'beforeBegin',
- insert: function(element, node) {
- element.parentNode.insertBefore(node, element);
- },
- initializeRange: function(element, range) {
- range.setStartBefore(element);
- }
- },
- top: {
- adjacency: 'afterBegin',
- insert: function(element, node) {
- element.insertBefore(node, element.firstChild);
- },
- initializeRange: function(element, range) {
- range.selectNodeContents(element);
- range.collapse(true);
- }
- },
- bottom: {
- adjacency: 'beforeEnd',
- insert: function(element, node) {
- element.appendChild(node);
- }
- },
- after: {
- adjacency: 'afterEnd',
- insert: function(element, node) {
- element.parentNode.insertBefore(node, element.nextSibling);
- },
- initializeRange: function(element, range) {
- range.setStartAfter(element);
- }
- },
- tags: {
- TABLE: ['<table>', '</table>', 1],
- TBODY: ['<table><tbody>', '</tbody></table>', 2],
- TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3],
- TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
- SELECT: ['<select>', '</select>', 1]
- }
-};
-
-(function() {
- this.bottom.initializeRange = this.top.initializeRange;
- Object.extend(this.tags, {
- THEAD: this.tags.TBODY,
- TFOOT: this.tags.TBODY,
- TH: this.tags.TD
- });
-}).call(Element._insertionTranslations);
-
-Element.Methods.Simulated = {
- hasAttribute: function(element, attribute) {
- attribute = Element._attributeTranslations.has[attribute] || attribute;
- var node = $(element).getAttributeNode(attribute);
- return node && node.specified;
- }
-};
-
-Element.Methods.ByTag = { };
-
-Object.extend(Element, Element.Methods);
-
-if (!Prototype.BrowserFeatures.ElementExtensions &&
- document.createElement('div').__proto__) {
- window.HTMLElement = { };
- window.HTMLElement.prototype = document.createElement('div').__proto__;
- Prototype.BrowserFeatures.ElementExtensions = true;
-}
-
-Element.extend = (function() {
- if (Prototype.BrowserFeatures.SpecificElementExtensions)
- return Prototype.K;
-
- var Methods = { }, ByTag = Element.Methods.ByTag;
-
- var extend = Object.extend(function(element) {
- if (!element || element._extendedByPrototype ||
- element.nodeType != 1 || element == window) return element;
-
- var methods = Object.clone(Methods),
- tagName = element.tagName, property, value;
-
- // extend methods for specific tags
- if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
-
- for (property in methods) {
- value = methods[property];
- if (Object.isFunction(value) && !(property in element))
- element[property] = value.methodize();
- }
-
- element._extendedByPrototype = Prototype.emptyFunction;
- return element;
-
- }, {
- refresh: function() {
- // extend methods for all tags (Safari doesn't need this)
- if (!Prototype.BrowserFeatures.ElementExtensions) {
- Object.extend(Methods, Element.Methods);
- Object.extend(Methods, Element.Methods.Simulated);
- }
- }
- });
-
- extend.refresh();
- return extend;
-})();
-
-Element.hasAttribute = function(element, attribute) {
- if (element.hasAttribute) return element.hasAttribute(attribute);
- return Element.Methods.Simulated.hasAttribute(element, attribute);
-};
-
-Element.addMethods = function(methods) {
- var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
-
- if (!methods) {
- Object.extend(Form, Form.Methods);
- Object.extend(Form.Element, Form.Element.Methods);
- Object.extend(Element.Methods.ByTag, {
- "FORM": Object.clone(Form.Methods),
- "INPUT": Object.clone(Form.Element.Methods),
- "SELECT": Object.clone(Form.Element.Methods),
- "TEXTAREA": Object.clone(Form.Element.Methods)
- });
- }
-
- if (arguments.length == 2) {
- var tagName = methods;
- methods = arguments[1];
- }
-
- if (!tagName) Object.extend(Element.Methods, methods || { });
- else {
- if (Object.isArray(tagName)) tagName.each(extend);
- else extend(tagName);
- }
-
- function extend(tagName) {
- tagName = tagName.toUpperCase();
- if (!Element.Methods.ByTag[tagName])
- Element.Methods.ByTag[tagName] = { };
- Object.extend(Element.Methods.ByTag[tagName], methods);
- }
-
- function copy(methods, destination, onlyIfAbsent) {
- onlyIfAbsent = onlyIfAbsent || false;
- for (var property in methods) {
- var value = methods[property];
- if (!Object.isFunction(value)) continue;
- if (!onlyIfAbsent || !(property in destination))
- destination[property] = value.methodize();
- }
- }
-
- function findDOMClass(tagName) {
- var klass;
- var trans = {
- "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
- "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
- "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
- "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
- "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
- "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
- "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
- "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
- "FrameSet", "IFRAME": "IFrame"
- };
- if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
- if (window[klass]) return window[klass];
- klass = 'HTML' + tagName + 'Element';
- if (window[klass]) return window[klass];
- klass = 'HTML' + tagName.capitalize() + 'Element';
- if (window[klass]) return window[klass];
-
- window[klass] = { };
- window[klass].prototype = document.createElement(tagName).__proto__;
- return window[klass];
- }
-
- if (F.ElementExtensions) {
- copy(Element.Methods, HTMLElement.prototype);
- copy(Element.Methods.Simulated, HTMLElement.prototype, true);
- }
-
- if (F.SpecificElementExtensions) {
- for (var tag in Element.Methods.ByTag) {
- var klass = findDOMClass(tag);
- if (Object.isUndefined(klass)) continue;
- copy(T[tag], klass.prototype);
- }
- }
-
- Object.extend(Element, Element.Methods);
- delete Element.ByTag;
-
- if (Element.extend.refresh) Element.extend.refresh();
- Element.cache = { };
-};
-
-document.viewport = {
- getDimensions: function() {
- var dimensions = { };
- $w('width height').each(function(d) {
- var D = d.capitalize();
- dimensions[d] = self['inner' + D] ||
- (document.documentElement['client' + D] || document.body['client' + D]);
- });
- return dimensions;
- },
-
- getWidth: function() {
- return this.getDimensions().width;
- },
-
- getHeight: function() {
- return this.getDimensions().height;
- },
-
- getScrollOffsets: function() {
- return Element._returnOffset(
- window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
- window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
- }
-};
-/* Portions of the Selector class are derived from Jack Slocum’s DomQuery,
- * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
- * license. Please see http://www.yui-ext.com/ for more information. */
-
-var Selector = Class.create({
- initialize: function(expression) {
- this.expression = expression.strip();
- this.compileMatcher();
- },
-
- compileMatcher: function() {
- // Selectors with namespaced attributes can't use the XPath version
- if (Prototype.BrowserFeatures.XPath && !(/(\[[\w-]*?:|:checked)/).test(this.expression))
- return this.compileXPathMatcher();
-
- var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
- c = Selector.criteria, le, p, m;
-
- if (Selector._cache[e]) {
- this.matcher = Selector._cache[e];
- return;
- }
-
- this.matcher = ["this.matcher = function(root) {",
- "var r = root, h = Selector.handlers, c = false, n;"];
-
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- p = ps[i];
- if (m = e.match(p)) {
- this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
- new Template(c[i]).evaluate(m));
- e = e.replace(m[0], '');
- break;
- }
- }
- }
-
- this.matcher.push("return h.unique(n);\n}");
- eval(this.matcher.join('\n'));
- Selector._cache[this.expression] = this.matcher;
- },
-
- compileXPathMatcher: function() {
- var e = this.expression, ps = Selector.patterns,
- x = Selector.xpath, le, m;
-
- if (Selector._cache[e]) {
- this.xpath = Selector._cache[e]; return;
- }
-
- this.matcher = ['.//*'];
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- if (m = e.match(ps[i])) {
- this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
- new Template(x[i]).evaluate(m));
- e = e.replace(m[0], '');
- break;
- }
- }
- }
-
- this.xpath = this.matcher.join('');
- Selector._cache[this.expression] = this.xpath;
- },
-
- findElements: function(root) {
- root = root || document;
- if (this.xpath) return document._getElementsByXPath(this.xpath, root);
- return this.matcher(root);
- },
-
- match: function(element) {
- this.tokens = [];
-
- var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
- var le, p, m;
-
- while (e && le !== e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- p = ps[i];
- if (m = e.match(p)) {
- // use the Selector.assertions methods unless the selector
- // is too complex.
- if (as[i]) {
- this.tokens.push([i, Object.clone(m)]);
- e = e.replace(m[0], '');
- } else {
- // reluctantly do a document-wide search
- // and look for a match in the array
- return this.findElements(document).include(element);
- }
- }
- }
- }
-
- var match = true, name, matches;
- for (var i = 0, token; token = this.tokens[i]; i++) {
- name = token[0], matches = token[1];
- if (!Selector.assertions[name](element, matches)) {
- match = false; break;
- }
- }
-
- return match;
- },
-
- toString: function() {
- return this.expression;
- },
-
- inspect: function() {
- return "#<Selector:" + this.expression.inspect() + ">";
- }
-});
-
-Object.extend(Selector, {
- _cache: { },
-
- xpath: {
- descendant: "//*",
- child: "/*",
- adjacent: "/following-sibling::*[1]",
- laterSibling: '/following-sibling::*',
- tagName: function(m) {
- if (m[1] == '*') return '';
- return "[local-name()='" + m[1].toLowerCase() +
- "' or local-name()='" + m[1].toUpperCase() + "']";
- },
- className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",
- id: "[@id='#{1}']",
- attrPresence: "[@#{1}]",
- attr: function(m) {
- m[3] = m[5] || m[6];
- return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
- },
- pseudo: function(m) {
- var h = Selector.xpath.pseudos[m[1]];
- if (!h) return '';
- if (Object.isFunction(h)) return h(m);
- return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
- },
- operators: {
- '=': "[@#{1}='#{3}']",
- '!=': "[@#{1}!='#{3}']",
- '^=': "[starts-with(@#{1}, '#{3}')]",
- '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
- '*=': "[contains(@#{1}, '#{3}')]",
- '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
- '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
- },
- pseudos: {
- 'first-child': '[not(preceding-sibling::*)]',
- 'last-child': '[not(following-sibling::*)]',
- 'only-child': '[not(preceding-sibling::* or following-sibling::*)]',
- 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]",
- 'checked': "[@checked]",
- 'disabled': "[@disabled]",
- 'enabled': "[not(@disabled)]",
- 'not': function(m) {
- var e = m[6], p = Selector.patterns,
- x = Selector.xpath, le, m, v;
-
- var exclusion = [];
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in p) {
- if (m = e.match(p[i])) {
- v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
- exclusion.push("(" + v.substring(1, v.length - 1) + ")");
- e = e.replace(m[0], '');
- break;
- }
- }
- }
- return "[not(" + exclusion.join(" and ") + ")]";
- },
- 'nth-child': function(m) {
- return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
- },
- 'nth-last-child': function(m) {
- return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
- },
- 'nth-of-type': function(m) {
- return Selector.xpath.pseudos.nth("position() ", m);
- },
- 'nth-last-of-type': function(m) {
- return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
- },
- 'first-of-type': function(m) {
- m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
- },
- 'last-of-type': function(m) {
- m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
- },
- 'only-of-type': function(m) {
- var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
- },
- nth: function(fragment, m) {
- var mm, formula = m[6], predicate;
- if (formula == 'even') formula = '2n+0';
- if (formula == 'odd') formula = '2n+1';
- if (mm = formula.match(/^(\d+)$/)) // digit only
- return '[' + fragment + "= " + mm[1] + ']';
- if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
- if (mm[1] == "-") mm[1] = -1;
- var a = mm[1] ? Number(mm[1]) : 1;
- var b = mm[2] ? Number(mm[2]) : 0;
- predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
- "((#{fragment} - #{b}) div #{a} >= 0)]";
- return new Template(predicate).evaluate({
- fragment: fragment, a: a, b: b });
- }
- }
- }
- },
-
- criteria: {
- tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;',
- className: 'n = h.className(n, r, "#{1}", c); c = false;',
- id: 'n = h.id(n, r, "#{1}", c); c = false;',
- attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;',
- attr: function(m) {
- m[3] = (m[5] || m[6]);
- return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m);
- },
- pseudo: function(m) {
- if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
- return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
- },
- descendant: 'c = "descendant";',
- child: 'c = "child";',
- adjacent: 'c = "adjacent";',
- laterSibling: 'c = "laterSibling";'
- },
-
- patterns: {
- // combinators must be listed first
- // (and descendant needs to be last combinator)
- laterSibling: /^\s*~\s*/,
- child: /^\s*>\s*/,
- adjacent: /^\s*\+\s*/,
- descendant: /^\s/,
-
- // selectors follow
- tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,
- id: /^#([\w\-\*]+)(\b|$)/,
- className: /^\.([\w\-\*]+)(\b|$)/,
- pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/,
- attrPresence: /^\[([\w]+)\]/,
- attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
- },
-
- // for Selector.match and Element#match
- assertions: {
- tagName: function(element, matches) {
- return matches[1].toUpperCase() == element.tagName.toUpperCase();
- },
-
- className: function(element, matches) {
- return Element.hasClassName(element, matches[1]);
- },
-
- id: function(element, matches) {
- return element.id === matches[1];
- },
-
- attrPresence: function(element, matches) {
- return Element.hasAttribute(element, matches[1]);
- },
-
- attr: function(element, matches) {
- var nodeValue = Element.readAttribute(element, matches[1]);
- return Selector.operators[matches[2]](nodeValue, matches[3]);
- }
- },
-
- handlers: {
- // UTILITY FUNCTIONS
- // joins two collections
- concat: function(a, b) {
- for (var i = 0, node; node = b[i]; i++)
- a.push(node);
- return a;
- },
-
- // marks an array of nodes for counting
- mark: function(nodes) {
- for (var i = 0, node; node = nodes[i]; i++)
- node._counted = true;
- return nodes;
- },
-
- unmark: function(nodes) {
- for (var i = 0, node; node = nodes[i]; i++)
- node._counted = undefined;
- return nodes;
- },
-
- // mark each child node with its position (for nth calls)
- // "ofType" flag indicates whether we're indexing for nth-of-type
- // rather than nth-child
- index: function(parentNode, reverse, ofType) {
- parentNode._counted = true;
- if (reverse) {
- for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
- var node = nodes[i];
- if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
- }
- } else {
- for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
- if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
- }
- },
-
- // filters out duplicates and extends all nodes
- unique: function(nodes) {
- if (nodes.length == 0) return nodes;
- var results = [], n;
- for (var i = 0, l = nodes.length; i < l; i++)
- if (!(n = nodes[i])._counted) {
- n._counted = true;
- results.push(Element.extend(n));
- }
- return Selector.handlers.unmark(results);
- },
-
- // COMBINATOR FUNCTIONS
- descendant: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- h.concat(results, node.getElementsByTagName('*'));
- return results;
- },
-
- child: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- for (var j = 0, children = [], child; child = node.childNodes[j]; j++)
- if (child.nodeType == 1 && child.tagName != '!') results.push(child);
- }
- return results;
- },
-
- adjacent: function(nodes) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- var next = this.nextElementSibling(node);
- if (next) results.push(next);
- }
- return results;
- },
-
- laterSibling: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- h.concat(results, Element.nextSiblings(node));
- return results;
- },
-
- nextElementSibling: function(node) {
- while (node = node.nextSibling)
- if (node.nodeType == 1) return node;
- return null;
- },
-
- previousElementSibling: function(node) {
- while (node = node.previousSibling)
- if (node.nodeType == 1) return node;
- return null;
- },
-
- // TOKEN FUNCTIONS
- tagName: function(nodes, root, tagName, combinator) {
- tagName = tagName.toUpperCase();
- var results = [], h = Selector.handlers;
- if (nodes) {
- if (combinator) {
- // fastlane for ordinary descendant combinators
- if (combinator == "descendant") {
- for (var i = 0, node; node = nodes[i]; i++)
- h.concat(results, node.getElementsByTagName(tagName));
- return results;
- } else nodes = this[combinator](nodes);
- if (tagName == "*") return nodes;
- }
- for (var i = 0, node; node = nodes[i]; i++)
- if (node.tagName.toUpperCase() == tagName) results.push(node);
- return results;
- } else return root.getElementsByTagName(tagName);
- },
-
- id: function(nodes, root, id, combinator) {
- var targetNode = $(id), h = Selector.handlers;
- if (!targetNode) return [];
- if (!nodes && root == document) return [targetNode];
- if (nodes) {
- if (combinator) {
- if (combinator == 'child') {
- for (var i = 0, node; node = nodes[i]; i++)
- if (targetNode.parentNode == node) return [targetNode];
- } else if (combinator == 'descendant') {
- for (var i = 0, node; node = nodes[i]; i++)
- if (Element.descendantOf(targetNode, node)) return [targetNode];
- } else if (combinator == 'adjacent') {
- for (var i = 0, node; node = nodes[i]; i++)
- if (Selector.handlers.previousElementSibling(targetNode) == node)
- return [targetNode];
- } else nodes = h[combinator](nodes);
- }
- for (var i = 0, node; node = nodes[i]; i++)
- if (node == targetNode) return [targetNode];
- return [];
- }
- return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
- },
-
- className: function(nodes, root, className, combinator) {
- if (nodes && combinator) nodes = this[combinator](nodes);
- return Selector.handlers.byClassName(nodes, root, className);
- },
-
- byClassName: function(nodes, root, className) {
- if (!nodes) nodes = Selector.handlers.descendant([root]);
- var needle = ' ' + className + ' ';
- for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
- nodeClassName = node.className;
- if (nodeClassName.length == 0) continue;
- if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
- results.push(node);
- }
- return results;
- },
-
- attrPresence: function(nodes, root, attr) {
- if (!nodes) nodes = root.getElementsByTagName("*");
- var results = [];
- for (var i = 0, node; node = nodes[i]; i++)
- if (Element.hasAttribute(node, attr)) results.push(node);
- return results;
- },
-
- attr: function(nodes, root, attr, value, operator) {
- if (!nodes) nodes = root.getElementsByTagName("*");
- var handler = Selector.operators[operator], results = [];
- for (var i = 0, node; node = nodes[i]; i++) {
- var nodeValue = Element.readAttribute(node, attr);
- if (nodeValue === null) continue;
- if (handler(nodeValue, value)) results.push(node);
- }
- return results;
- },
-
- pseudo: function(nodes, name, value, root, combinator) {
- if (nodes && combinator) nodes = this[combinator](nodes);
- if (!nodes) nodes = root.getElementsByTagName("*");
- return Selector.pseudos[name](nodes, value, root);
- }
- },
-
- pseudos: {
- 'first-child': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- if (Selector.handlers.previousElementSibling(node)) continue;
- results.push(node);
- }
- return results;
- },
- 'last-child': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- if (Selector.handlers.nextElementSibling(node)) continue;
- results.push(node);
- }
- return results;
- },
- 'only-child': function(nodes, value, root) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
- results.push(node);
- return results;
- },
- 'nth-child': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root);
- },
- 'nth-last-child': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, true);
- },
- 'nth-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, false, true);
- },
- 'nth-last-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, true, true);
- },
- 'first-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, "1", root, false, true);
- },
- 'last-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, "1", root, true, true);
- },
- 'only-of-type': function(nodes, formula, root) {
- var p = Selector.pseudos;
- return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
- },
-
- // handles the an+b logic
- getIndices: function(a, b, total) {
- if (a == 0) return b > 0 ? [b] : [];
- return $R(1, total).inject([], function(memo, i) {
- if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
- return memo;
- });
- },
-
- // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
- nth: function(nodes, formula, root, reverse, ofType) {
- if (nodes.length == 0) return [];
- if (formula == 'even') formula = '2n+0';
- if (formula == 'odd') formula = '2n+1';
- var h = Selector.handlers, results = [], indexed = [], m;
- h.mark(nodes);
- for (var i = 0, node; node = nodes[i]; i++) {
- if (!node.parentNode._counted) {
- h.index(node.parentNode, reverse, ofType);
- indexed.push(node.parentNode);
- }
- }
- if (formula.match(/^\d+$/)) { // just a number
- formula = Number(formula);
- for (var i = 0, node; node = nodes[i]; i++)
- if (node.nodeIndex == formula) results.push(node);
- } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
- if (m[1] == "-") m[1] = -1;
- var a = m[1] ? Number(m[1]) : 1;
- var b = m[2] ? Number(m[2]) : 0;
- var indices = Selector.pseudos.getIndices(a, b, nodes.length);
- for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
- for (var j = 0; j < l; j++)
- if (node.nodeIndex == indices[j]) results.push(node);
- }
- }
- h.unmark(nodes);
- h.unmark(indexed);
- return results;
- },
-
- 'empty': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- // IE treats comments as element nodes
- if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue;
- results.push(node);
- }
- return results;
- },
-
- 'not': function(nodes, selector, root) {
- var h = Selector.handlers, selectorType, m;
- var exclusions = new Selector(selector).findElements(root);
- h.mark(exclusions);
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!node._counted) results.push(node);
- h.unmark(exclusions);
- return results;
- },
-
- 'enabled': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!node.disabled) results.push(node);
- return results;
- },
-
- 'disabled': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (node.disabled) results.push(node);
- return results;
- },
-
- 'checked': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (node.checked) results.push(node);
- return results;
- }
- },
-
- operators: {
- '=': function(nv, v) { return nv == v; },
- '!=': function(nv, v) { return nv != v; },
- '^=': function(nv, v) { return nv.startsWith(v); },
- '$=': function(nv, v) { return nv.endsWith(v); },
- '*=': function(nv, v) { return nv.include(v); },
- '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
- '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); }
- },
-
- matchElements: function(elements, expression) {
- var matches = new Selector(expression).findElements(), h = Selector.handlers;
- h.mark(matches);
- for (var i = 0, results = [], element; element = elements[i]; i++)
- if (element._counted) results.push(element);
- h.unmark(matches);
- return results;
- },
-
- findElement: function(elements, expression, index) {
- if (Object.isNumber(expression)) {
- index = expression; expression = false;
- }
- return Selector.matchElements(elements, expression || '*')[index || 0];
- },
-
- findChildElements: function(element, expressions) {
- var exprs = expressions.join(','), expressions = [];
- exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
- expressions.push(m[1].strip());
- });
- var results = [], h = Selector.handlers;
- for (var i = 0, l = expressions.length, selector; i < l; i++) {
- selector = new Selector(expressions[i].strip());
- h.concat(results, selector.findElements(element));
- }
- return (l > 1) ? h.unique(results) : results;
- }
-});
-
-function $$() {
- return Selector.findChildElements(document, $A(arguments));
-}
-var Form = {
- reset: function(form) {
- $(form).reset();
- return form;
- },
-
- serializeElements: function(elements, options) {
- if (typeof options != 'object') options = { hash: !!options };
- else if (options.hash === undefined) options.hash = true;
- var key, value, submitted = false, submit = options.submit;
-
- var data = elements.inject({ }, function(result, element) {
- if (!element.disabled && element.name) {
- key = element.name; value = $(element).getValue();
- if (value != null && (element.type != 'submit' || (!submitted &&
- submit !== false && (!submit || key == submit) && (submitted = true)))) {
- if (key in result) {
- // a key is already present; construct an array of values
- if (!Object.isArray(result[key])) result[key] = [result[key]];
- result[key].push(value);
- }
- else result[key] = value;
- }
- }
- return result;
- });
-
- return options.hash ? data : Object.toQueryString(data);
- }
-};
-
-Form.Methods = {
- serialize: function(form, options) {
- return Form.serializeElements(Form.getElements(form), options);
- },
-
- getElements: function(form) {
- return $A($(form).getElementsByTagName('*')).inject([],
- function(elements, child) {
- if (Form.Element.Serializers[child.tagName.toLowerCase()])
- elements.push(Element.extend(child));
- return elements;
- }
- );
- },
-
- getInputs: function(form, typeName, name) {
- form = $(form);
- var inputs = form.getElementsByTagName('input');
-
- if (!typeName && !name) return $A(inputs).map(Element.extend);
-
- for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
- var input = inputs[i];
- if ((typeName && input.type != typeName) || (name && input.name != name))
- continue;
- matchingInputs.push(Element.extend(input));
- }
-
- return matchingInputs;
- },
-
- disable: function(form) {
- form = $(form);
- Form.getElements(form).invoke('disable');
- return form;
- },
-
- enable: function(form) {
- form = $(form);
- Form.getElements(form).invoke('enable');
- return form;
- },
-
- findFirstElement: function(form) {
- var elements = $(form).getElements().findAll(function(element) {
- return 'hidden' != element.type && !element.disabled;
- });
- var firstByIndex = elements.findAll(function(element) {
- return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
- }).sortBy(function(element) { return element.tabIndex }).first();
-
- return firstByIndex ? firstByIndex : elements.find(function(element) {
- return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
- });
- },
-
- focusFirstElement: function(form) {
- form = $(form);
- form.findFirstElement().activate();
- return form;
- },
-
- request: function(form, options) {
- form = $(form), options = Object.clone(options || { });
-
- var params = options.parameters, action = form.readAttribute('action') || '';
- if (action.blank()) action = window.location.href;
- options.parameters = form.serialize(true);
-
- if (params) {
- if (Object.isString(params)) params = params.toQueryParams();
- Object.extend(options.parameters, params);
- }
-
- if (form.hasAttribute('method') && !options.method)
- options.method = form.method;
-
- return new Ajax.Request(action, options);
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-Form.Element = {
- focus: function(element) {
- $(element).focus();
- return element;
- },
-
- select: function(element) {
- $(element).select();
- return element;
- }
-};
-
-Form.Element.Methods = {
- serialize: function(element) {
- element = $(element);
- if (!element.disabled && element.name) {
- var value = element.getValue();
- if (value != undefined) {
- var pair = { };
- pair[element.name] = value;
- return Object.toQueryString(pair);
- }
- }
- return '';
- },
-
- getValue: function(element) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- return Form.Element.Serializers[method](element);
- },
-
- setValue: function(element, value) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- Form.Element.Serializers[method](element, value);
- return element;
- },
-
- clear: function(element) {
- $(element).value = '';
- return element;
- },
-
- present: function(element) {
- return $(element).value != '';
- },
-
- activate: function(element) {
- element = $(element);
- try {
- element.focus();
- if (element.select && (element.tagName.toLowerCase() != 'input' ||
- !['button', 'reset', 'submit'].include(element.type)))
- element.select();
- } catch (e) { }
- return element;
- },
-
- disable: function(element) {
- element = $(element);
- element.blur();
- element.disabled = true;
- return element;
- },
-
- enable: function(element) {
- element = $(element);
- element.disabled = false;
- return element;
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-var Field = Form.Element;
-var $F = Form.Element.Methods.getValue;
-
-/*--------------------------------------------------------------------------*/
-
-Form.Element.Serializers = {
- input: function(element, value) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- return Form.Element.Serializers.inputSelector(element, value);
- default:
- return Form.Element.Serializers.textarea(element, value);
- }
- },
-
- inputSelector: function(element, value) {
- if (value === undefined) return element.checked ? element.value : null;
- else element.checked = !!value;
- },
-
- textarea: function(element, value) {
- if (value === undefined) return element.value;
- else element.value = value;
- },
-
- select: function(element, index) {
- if (index === undefined)
- return this[element.type == 'select-one' ?
- 'selectOne' : 'selectMany'](element);
- else {
- var opt, value, single = !Object.isArray(index);
- for (var i = 0, length = element.length; i < length; i++) {
- opt = element.options[i];
- value = this.optionValue(opt);
- if (single) {
- if (value == index) {
- opt.selected = true;
- return;
- }
- }
- else opt.selected = index.include(value);
- }
- }
- },
-
- selectOne: function(element) {
- var index = element.selectedIndex;
- return index >= 0 ? this.optionValue(element.options[index]) : null;
- },
-
- selectMany: function(element) {
- var values, length = element.length;
- if (!length) return null;
-
- for (var i = 0, values = []; i < length; i++) {
- var opt = element.options[i];
- if (opt.selected) values.push(this.optionValue(opt));
- }
- return values;
- },
-
- optionValue: function(opt) {
- // extend element because hasAttribute may not be native
- return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
- initialize: function($super, element, frequency, callback) {
- $super(callback, frequency);
- this.element = $(element);
- this.lastValue = this.getValue();
- },
-
- execute: function() {
- var value = this.getValue();
- if (Object.isString(this.lastValue) && Object.isString(value) ?
- this.lastValue != value : String(this.lastValue) != String(value)) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- }
-});
-
-Form.Element.Observer = Class.create(Abstract.TimedObserver, {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.Observer = Class.create(Abstract.TimedObserver, {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-
-/*--------------------------------------------------------------------------*/
-
-Abstract.EventObserver = Class.create({
- initialize: function(element, callback) {
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- if (this.element.tagName.toLowerCase() == 'form')
- this.registerFormCallbacks();
- else
- this.registerCallback(this.element);
- },
-
- onElementEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- },
-
- registerFormCallbacks: function() {
- Form.getElements(this.element).each(this.registerCallback, this);
- },
-
- registerCallback: function(element) {
- if (element.type) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- Event.observe(element, 'click', this.onElementEvent.bind(this));
- break;
- default:
- Event.observe(element, 'change', this.onElementEvent.bind(this));
- break;
- }
- }
- }
-});
-
-Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
-});
-
-Form.EventObserver = Class.create(Abstract.EventObserver, {
- getValue: function() {
- return Form.serialize(this.element);
- }
-});
-if (!window.Event) var Event = { };
-
-Object.extend(Event, {
- KEY_BACKSPACE: 8,
- KEY_TAB: 9,
- KEY_RETURN: 13,
- KEY_ESC: 27,
- KEY_LEFT: 37,
- KEY_UP: 38,
- KEY_RIGHT: 39,
- KEY_DOWN: 40,
- KEY_DELETE: 46,
- KEY_HOME: 36,
- KEY_END: 35,
- KEY_PAGEUP: 33,
- KEY_PAGEDOWN: 34,
- KEY_INSERT: 45,
-
- cache: { },
-
- relatedTarget: function(event) {
- var element;
- switch(event.type) {
- case 'mouseover': element = event.fromElement; break;
- case 'mouseout': element = event.toElement; break;
- default: return null;
- }
- return Element.extend(element);
- }
-});
-
-Event.Methods = (function() {
- var isButton;
-
- if (Prototype.Browser.IE) {
- var buttonMap = { 0: 1, 1: 4, 2: 2 };
- isButton = function(event, code) {
- return event.button == buttonMap[code];
- };
-
- } else if (Prototype.Browser.WebKit) {
- isButton = function(event, code) {
- switch (code) {
- case 0: return event.which == 1 && !event.metaKey;
- case 1: return event.which == 1 && event.metaKey;
- default: return false;
- }
- };
-
- } else {
- isButton = function(event, code) {
- return event.which ? (event.which === code + 1) : (event.button === code);
- };
- }
-
- return {
- isLeftClick: function(event) { return isButton(event, 0) },
- isMiddleClick: function(event) { return isButton(event, 1) },
- isRightClick: function(event) { return isButton(event, 2) },
-
- element: function(event) {
- var node = Event.extend(event).target;
- return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node);
- },
-
- findElement: function(event, expression) {
- var element = Event.element(event);
- return element.match(expression) ? element : element.up(expression);
- },
-
- pointer: function(event) {
- return {
- x: event.pageX || (event.clientX +
- (document.documentElement.scrollLeft || document.body.scrollLeft)),
- y: event.pageY || (event.clientY +
- (document.documentElement.scrollTop || document.body.scrollTop))
- };
- },
-
- pointerX: function(event) { return Event.pointer(event).x },
- pointerY: function(event) { return Event.pointer(event).y },
-
- stop: function(event) {
- Event.extend(event);
- event.preventDefault();
- event.stopPropagation();
- event.stopped = true;
- }
- };
-})();
-
-Event.extend = (function() {
- var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
- m[name] = Event.Methods[name].methodize();
- return m;
- });
-
- if (Prototype.Browser.IE) {
- Object.extend(methods, {
- stopPropagation: function() { this.cancelBubble = true },
- preventDefault: function() { this.returnValue = false },
- inspect: function() { return "[object Event]" }
- });
-
- return function(event) {
- if (!event) return false;
- if (event._extendedByPrototype) return event;
-
- event._extendedByPrototype = Prototype.emptyFunction;
- var pointer = Event.pointer(event);
- Object.extend(event, {
- target: event.srcElement,
- relatedTarget: Event.relatedTarget(event),
- pageX: pointer.x,
- pageY: pointer.y
- });
- return Object.extend(event, methods);
- };
-
- } else {
- Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__;
- Object.extend(Event.prototype, methods);
- return Prototype.K;
- }
-})();
-
-Object.extend(Event, (function() {
- var cache = Event.cache;
-
- function getEventID(element) {
- if (element._eventID) return element._eventID;
- arguments.callee.id = arguments.callee.id || 1;
- return element._eventID = ++arguments.callee.id;
- }
-
- function getDOMEventName(eventName) {
- if (eventName && eventName.include(':')) return "dataavailable";
- return eventName;
- }
-
- function getCacheForID(id) {
- return cache[id] = cache[id] || { };
- }
-
- function getWrappersForEventName(id, eventName) {
- var c = getCacheForID(id);
- return c[eventName] = c[eventName] || [];
- }
-
- function createWrapper(element, eventName, handler) {
- var id = getEventID(element);
- var c = getWrappersForEventName(id, eventName);
- if (c.pluck("handler").include(handler)) return false;
-
- var wrapper = function(event) {
- if (!Event || !Event.extend ||
- (event.eventName && event.eventName != eventName))
- return false;
-
- Event.extend(event);
- handler.call(element, event)
- };
-
- wrapper.handler = handler;
- c.push(wrapper);
- return wrapper;
- }
-
- function findWrapper(id, eventName, handler) {
- var c = getWrappersForEventName(id, eventName);
- return c.find(function(wrapper) { return wrapper.handler == handler });
- }
-
- function destroyWrapper(id, eventName, handler) {
- var c = getCacheForID(id);
- if (!c[eventName]) return false;
- c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
- }
-
- function destroyCache() {
- for (var id in cache)
- for (var eventName in cache[id])
- cache[id][eventName] = null;
- }
-
- if (window.attachEvent) {
- window.attachEvent("onunload", destroyCache);
- }
-
- return {
- observe: function(element, eventName, handler) {
- element = $(element);
- var name = getDOMEventName(eventName);
-
- var wrapper = createWrapper(element, eventName, handler);
- if (!wrapper) return element;
-
- if (element.addEventListener) {
- element.addEventListener(name, wrapper, false);
- } else {
- element.attachEvent("on" + name, wrapper);
- }
-
- return element;
- },
-
- stopObserving: function(element, eventName, handler) {
- element = $(element);
- var id = getEventID(element), name = getDOMEventName(eventName);
-
- if (!handler && eventName) {
- getWrappersForEventName(id, eventName).each(function(wrapper) {
- element.stopObserving(eventName, wrapper.handler);
- });
- return element;
-
- } else if (!eventName) {
- Object.keys(getCacheForID(id)).each(function(eventName) {
- element.stopObserving(eventName);
- });
- return element;
- }
-
- var wrapper = findWrapper(id, eventName, handler);
- if (!wrapper) return element;
-
- if (element.removeEventListener) {
- element.removeEventListener(name, wrapper, false);
- } else {
- element.detachEvent("on" + name, wrapper);
- }
-
- destroyWrapper(id, eventName, handler);
-
- return element;
- },
-
- fire: function(element, eventName, memo) {
- element = $(element);
- if (element == document && document.createEvent && !element.dispatchEvent)
- element = document.documentElement;
-
- if (document.createEvent) {
- var event = document.createEvent("HTMLEvents");
- event.initEvent("dataavailable", true, true);
- } else {
- var event = document.createEventObject();
- event.eventType = "ondataavailable";
- }
-
- event.eventName = eventName;
- event.memo = memo || { };
-
- if (document.createEvent) {
- element.dispatchEvent(event);
- } else {
- element.fireEvent(event.eventType, event);
- }
-
- return event;
- }
- };
-})());
-
-Object.extend(Event, Event.Methods);
-
-Element.addMethods({
- fire: Event.fire,
- observe: Event.observe,
- stopObserving: Event.stopObserving
-});
-
-Object.extend(document, {
- fire: Element.Methods.fire.methodize(),
- observe: Element.Methods.observe.methodize(),
- stopObserving: Element.Methods.stopObserving.methodize()
-});
-
-(function() {
- /* Support for the DOMContentLoaded event is based on work by Dan Webb,
- Matthias Miller, Dean Edwards and John Resig. */
-
- var timer, fired = false;
-
- function fireContentLoadedEvent() {
- if (fired) return;
- if (timer) window.clearInterval(timer);
- document.fire("dom:loaded");
- fired = true;
- }
-
- if (document.addEventListener) {
- if (Prototype.Browser.WebKit) {
- timer = window.setInterval(function() {
- if (/loaded|complete/.test(document.readyState))
- fireContentLoadedEvent();
- }, 0);
-
- Event.observe(window, "load", fireContentLoadedEvent);
-
- } else {
- document.addEventListener("DOMContentLoaded",
- fireContentLoadedEvent, false);
- }
-
- } else {
- document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
- $("__onDOMContentLoaded").onreadystatechange = function() {
- if (this.readyState == "complete") {
- this.onreadystatechange = null;
- fireContentLoadedEvent();
- }
- };
- }
-})();
-/*------------------------------- DEPRECATED -------------------------------*/
-
-Hash.toQueryString = Object.toQueryString;
-
-var Toggle = { display: Element.toggle };
-
-Element.Methods.childOf = Element.Methods.descendantOf;
-
-var Insertion = {
- Before: function(element, content) {
- return Element.insert(element, {before:content});
- },
-
- Top: function(element, content) {
- return Element.insert(element, {top:content});
- },
-
- Bottom: function(element, content) {
- return Element.insert(element, {bottom:content});
- },
-
- After: function(element, content) {
- return Element.insert(element, {after:content});
- }
-};
-
-var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
-
-// This should be moved to script.aculo.us; notice the deprecated methods
-// further below, that map to the newer Element methods.
-var Position = {
- // set to true if needed, warning: firefox performance problems
- // NOT neeeded for page scrolling, only if draggable contained in
- // scrollable elements
- includeScrollOffsets: false,
-
- // must be called before calling withinIncludingScrolloffset, every time the
- // page is scrolled
- prepare: function() {
- this.deltaX = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- this.deltaY = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- },
-
- // caches x/y coordinate pair to use with overlap
- within: function(element, x, y) {
- if (this.includeScrollOffsets)
- return this.withinIncludingScrolloffsets(element, x, y);
- this.xcomp = x;
- this.ycomp = y;
- this.offset = Element.cumulativeOffset(element);
-
- return (y >= this.offset[1] &&
- y < this.offset[1] + element.offsetHeight &&
- x >= this.offset[0] &&
- x < this.offset[0] + element.offsetWidth);
- },
-
- withinIncludingScrolloffsets: function(element, x, y) {
- var offsetcache = Element.cumulativeScrollOffset(element);
-
- this.xcomp = x + offsetcache[0] - this.deltaX;
- this.ycomp = y + offsetcache[1] - this.deltaY;
- this.offset = Element.cumulativeOffset(element);
-
- return (this.ycomp >= this.offset[1] &&
- this.ycomp < this.offset[1] + element.offsetHeight &&
- this.xcomp >= this.offset[0] &&
- this.xcomp < this.offset[0] + element.offsetWidth);
- },
-
- // within must be called directly before
- overlap: function(mode, element) {
- if (!mode) return 0;
- if (mode == 'vertical')
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
- element.offsetHeight;
- if (mode == 'horizontal')
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
- element.offsetWidth;
- },
-
- // Deprecation layer -- use newer Element methods now (1.5.2).
-
- cumulativeOffset: Element.Methods.cumulativeOffset,
-
- positionedOffset: Element.Methods.positionedOffset,
-
- absolutize: function(element) {
- Position.prepare();
- return Element.absolutize(element);
- },
-
- relativize: function(element) {
- Position.prepare();
- return Element.relativize(element);
- },
-
- realOffset: Element.Methods.cumulativeScrollOffset,
-
- offsetParent: Element.Methods.getOffsetParent,
-
- page: Element.Methods.viewportOffset,
-
- clone: function(source, target, options) {
- options = options || { };
- return Element.clonePosition(target, source, options);
- }
-};
-
-/*--------------------------------------------------------------------------*/
-
-if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
- function iter(name) {
- return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
- }
-
- instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
- function(element, className) {
- className = className.toString().strip();
- var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
- return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
- } : function(element, className) {
- className = className.toString().strip();
- var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
- if (!classNames && !className) return elements;
-
- var nodes = $(element).getElementsByTagName('*');
- className = ' ' + className + ' ';
-
- for (var i = 0, child, cn; child = nodes[i]; i++) {
- if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
- (classNames && classNames.all(function(name) {
- return !name.toString().blank() && cn.include(' ' + name + ' ');
- }))))
- elements.push(Element.extend(child));
- }
- return elements;
- };
-
- return function(className, parentElement) {
- return $(parentElement || document.body).getElementsByClassName(className);
- };
-}(Element.Methods);
-
-/*--------------------------------------------------------------------------*/
-
-Element.ClassNames = Class.create();
-Element.ClassNames.prototype = {
- initialize: function(element) {
- this.element = $(element);
- },
-
- _each: function(iterator) {
- this.element.className.split(/\s+/).select(function(name) {
- return name.length > 0;
- })._each(iterator);
- },
-
- set: function(className) {
- this.element.className = className;
- },
-
- add: function(classNameToAdd) {
- if (this.include(classNameToAdd)) return;
- this.set($A(this).concat(classNameToAdd).join(' '));
- },
-
- remove: function(classNameToRemove) {
- if (!this.include(classNameToRemove)) return;
- this.set($A(this).without(classNameToRemove).join(' '));
- },
-
- toString: function() {
- return $A(this).join(' ');
- }
-};
-
-Object.extend(Element.ClassNames.prototype, Enumerable);
-
-/*--------------------------------------------------------------------------*/
-
-Element.addMethods(); \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/ext/json/ext/generator/extconf.rb b/vendor/gems/json-1.5.1/ext/json/ext/generator/extconf.rb
deleted file mode 100644
index 149f22c13..000000000
--- a/vendor/gems/json-1.5.1/ext/json/ext/generator/extconf.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'mkmf'
-require 'rbconfig'
-
-unless $CFLAGS.gsub!(/ -O[\dsz]?/, ' -O3')
- $CFLAGS << ' -O3'
-end
-if CONFIG['CC'] =~ /gcc/
- $CFLAGS << ' -Wall'
- #unless $CFLAGS.gsub!(/ -O[\dsz]?/, ' -O0 -ggdb')
- # $CFLAGS << ' -O0 -ggdb'
- #end
-end
-
-if RUBY_VERSION < "1.9"
- have_header("re.h")
-else
- have_header("ruby/re.h")
- have_header("ruby/encoding.h")
-end
-create_makefile 'json/ext/generator'
diff --git a/vendor/gems/json-1.5.1/ext/json/ext/generator/generator.c b/vendor/gems/json-1.5.1/ext/json/ext/generator/generator.c
deleted file mode 100644
index 65058820c..000000000
--- a/vendor/gems/json-1.5.1/ext/json/ext/generator/generator.c
+++ /dev/null
@@ -1,1417 +0,0 @@
-#include "generator.h"
-
-#ifdef HAVE_RUBY_ENCODING_H
-static VALUE CEncoding_UTF_8;
-static ID i_encoding, i_encode;
-#endif
-
-static VALUE mJSON, mExt, mGenerator, cState, mGeneratorMethods, mObject,
- mHash, mArray, mFixnum, mBignum, mFloat, mString, mString_Extend,
- mTrueClass, mFalseClass, mNilClass, eGeneratorError,
- eNestingError, CRegexp_MULTILINE, CJSON_SAFE_STATE_PROTOTYPE,
- i_SAFE_STATE_PROTOTYPE;
-
-static ID i_to_s, i_to_json, i_new, i_indent, i_space, i_space_before,
- i_object_nl, i_array_nl, i_max_nesting, i_allow_nan, i_ascii_only,
- i_pack, i_unpack, i_create_id, i_extend, i_key_p, i_aref, i_send,
- i_respond_to_p, i_match, i_keys, i_depth, i_dup;
-
-/*
- * Copyright 2001-2004 Unicode, Inc.
- *
- * Disclaimer
- *
- * This source code is provided as is by Unicode, Inc. No claims are
- * made as to fitness for any particular purpose. No warranties of any
- * kind are expressed or implied. The recipient agrees to determine
- * applicability of information provided. If this file has been
- * purchased on magnetic or optical media from Unicode, Inc., the
- * sole remedy for any claim will be exchange of defective media
- * within 90 days of receipt.
- *
- * Limitations on Rights to Redistribute This Code
- *
- * Unicode, Inc. hereby grants the right to freely use the information
- * supplied in this file in the creation of products supporting the
- * Unicode Standard, and to make copies of this file in any form
- * for internal or external distribution as long as this notice
- * remains attached.
- */
-
-/*
- * Index into the table below with the first byte of a UTF-8 sequence to
- * get the number of trailing bytes that are supposed to follow it.
- * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is
- * left as-is for anyone who may want to do such conversion, which was
- * allowed in earlier algorithms.
- */
-static const char trailingBytesForUTF8[256] = {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
-};
-
-/*
- * Magic values subtracted from a buffer value during UTF8 conversion.
- * This table contains as many values as there might be trailing bytes
- * in a UTF-8 sequence.
- */
-static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
- 0x03C82080UL, 0xFA082080UL, 0x82082080UL };
-
-/*
- * Utility routine to tell whether a sequence of bytes is legal UTF-8.
- * This must be called with the length pre-determined by the first byte.
- * If not calling this from ConvertUTF8to*, then the length can be set by:
- * length = trailingBytesForUTF8[*source]+1;
- * and the sequence is illegal right away if there aren't that many bytes
- * available.
- * If presented with a length > 4, this returns 0. The Unicode
- * definition of UTF-8 goes up to 4-byte sequences.
- */
-static unsigned char isLegalUTF8(const UTF8 *source, unsigned long length)
-{
- UTF8 a;
- const UTF8 *srcptr = source+length;
- switch (length) {
- default: return 0;
- /* Everything else falls through when "1"... */
- case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0;
- case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0;
- case 2: if ((a = (*--srcptr)) > 0xBF) return 0;
-
- switch (*source) {
- /* no fall-through in this inner switch */
- case 0xE0: if (a < 0xA0) return 0; break;
- case 0xED: if (a > 0x9F) return 0; break;
- case 0xF0: if (a < 0x90) return 0; break;
- case 0xF4: if (a > 0x8F) return 0; break;
- default: if (a < 0x80) return 0;
- }
-
- case 1: if (*source >= 0x80 && *source < 0xC2) return 0;
- }
- if (*source > 0xF4) return 0;
- return 1;
-}
-
-/* Escapes the UTF16 character and stores the result in the buffer buf. */
-static void unicode_escape(char *buf, UTF16 character)
-{
- const char *digits = "0123456789abcdef";
-
- buf[2] = digits[character >> 12];
- buf[3] = digits[(character >> 8) & 0xf];
- buf[4] = digits[(character >> 4) & 0xf];
- buf[5] = digits[character & 0xf];
-}
-
-/* Escapes the UTF16 character and stores the result in the buffer buf, then
- * the buffer buf іs appended to the FBuffer buffer. */
-static void unicode_escape_to_buffer(FBuffer *buffer, char buf[6], UTF16
- character)
-{
- unicode_escape(buf, character);
- fbuffer_append(buffer, buf, 6);
-}
-
-/* Converts string to a JSON string in FBuffer buffer, where all but the ASCII
- * and control characters are JSON escaped. */
-static void convert_UTF8_to_JSON_ASCII(FBuffer *buffer, VALUE string)
-{
- const UTF8 *source = (UTF8 *) RSTRING_PTR(string);
- const UTF8 *sourceEnd = source + RSTRING_LEN(string);
- char buf[6] = { '\\', 'u' };
-
- while (source < sourceEnd) {
- UTF32 ch = 0;
- unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
- if (source + extraBytesToRead >= sourceEnd) {
- rb_raise(rb_path2class("JSON::GeneratorError"),
- "partial character in source, but hit end");
- }
- if (!isLegalUTF8(source, extraBytesToRead+1)) {
- rb_raise(rb_path2class("JSON::GeneratorError"),
- "source sequence is illegal/malformed utf-8");
- }
- /*
- * The cases all fall through. See "Note A" below.
- */
- switch (extraBytesToRead) {
- case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
- case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
- case 3: ch += *source++; ch <<= 6;
- case 2: ch += *source++; ch <<= 6;
- case 1: ch += *source++; ch <<= 6;
- case 0: ch += *source++;
- }
- ch -= offsetsFromUTF8[extraBytesToRead];
-
- if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
- /* UTF-16 surrogate values are illegal in UTF-32 */
- if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
-#if UNI_STRICT_CONVERSION
- source -= (extraBytesToRead+1); /* return to the illegal value itself */
- rb_raise(rb_path2class("JSON::GeneratorError"),
- "source sequence is illegal/malformed utf-8");
-#else
- unicode_escape_to_buffer(buffer, buf, UNI_REPLACEMENT_CHAR);
-#endif
- } else {
- /* normal case */
- if (ch >= 0x20 && ch <= 0x7f) {
- switch (ch) {
- case '\\':
- fbuffer_append(buffer, "\\\\", 2);
- break;
- case '"':
- fbuffer_append(buffer, "\\\"", 2);
- break;
- default:
- fbuffer_append_char(buffer, (char)ch);
- break;
- }
- } else {
- switch (ch) {
- case '\n':
- fbuffer_append(buffer, "\\n", 2);
- break;
- case '\r':
- fbuffer_append(buffer, "\\r", 2);
- break;
- case '\t':
- fbuffer_append(buffer, "\\t", 2);
- break;
- case '\f':
- fbuffer_append(buffer, "\\f", 2);
- break;
- case '\b':
- fbuffer_append(buffer, "\\b", 2);
- break;
- default:
- unicode_escape_to_buffer(buffer, buf, (UTF16) ch);
- break;
- }
- }
- }
- } else if (ch > UNI_MAX_UTF16) {
-#if UNI_STRICT_CONVERSION
- source -= (extraBytesToRead+1); /* return to the start */
- rb_raise(rb_path2class("JSON::GeneratorError"),
- "source sequence is illegal/malformed utf8");
-#else
- unicode_escape_to_buffer(buffer, buf, UNI_REPLACEMENT_CHAR);
-#endif
- } else {
- /* target is a character in range 0xFFFF - 0x10FFFF. */
- ch -= halfBase;
- unicode_escape_to_buffer(buffer, buf, (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START));
- unicode_escape_to_buffer(buffer, buf, (UTF16)((ch & halfMask) + UNI_SUR_LOW_START));
- }
- }
-}
-
-/* Converts string to a JSON string in FBuffer buffer, where only the
- * characters required by the JSON standard are JSON escaped. The remaining
- * characters (should be UTF8) are just passed through and appended to the
- * result. */
-static void convert_UTF8_to_JSON(FBuffer *buffer, VALUE string)
-{
- const char *ptr = RSTRING_PTR(string), *p;
- unsigned long len = RSTRING_LEN(string), start = 0, end = 0;
- const char *escape = NULL;
- int escape_len;
- unsigned char c;
- char buf[6] = { '\\', 'u' };
-
- for (start = 0, end = 0; end < len;) {
- p = ptr + end;
- c = (unsigned char) *p;
- if (c < 0x20) {
- switch (c) {
- case '\n':
- escape = "\\n";
- escape_len = 2;
- break;
- case '\r':
- escape = "\\r";
- escape_len = 2;
- break;
- case '\t':
- escape = "\\t";
- escape_len = 2;
- break;
- case '\f':
- escape = "\\f";
- escape_len = 2;
- break;
- case '\b':
- escape = "\\b";
- escape_len = 2;
- break;
- default:
- unicode_escape(buf, (UTF16) *p);
- escape = buf;
- escape_len = 6;
- break;
- }
- } else {
- switch (c) {
- case '\\':
- escape = "\\\\";
- escape_len = 2;
- break;
- case '"':
- escape = "\\\"";
- escape_len = 2;
- break;
- default:
- end++;
- continue;
- break;
- }
- }
- fbuffer_append(buffer, ptr + start, end - start);
- fbuffer_append(buffer, escape, escape_len);
- start = ++end;
- escape = NULL;
- }
- fbuffer_append(buffer, ptr + start, end - start);
-}
-
-static char *fstrndup(const char *ptr, unsigned long len) {
- char *result;
- if (len <= 0) return NULL;
- result = ALLOC_N(char, len);
- memccpy(result, ptr, 0, len);
- return result;
-}
-
-/* fbuffer implementation */
-
-static FBuffer *fbuffer_alloc()
-{
- FBuffer *fb = ALLOC(FBuffer);
- memset((void *) fb, 0, sizeof(FBuffer));
- fb->initial_length = FBUFFER_INITIAL_LENGTH;
- return fb;
-}
-
-static FBuffer *fbuffer_alloc_with_length(unsigned long initial_length)
-{
- FBuffer *fb;
- assert(initial_length > 0);
- fb = ALLOC(FBuffer);
- memset((void *) fb, 0, sizeof(FBuffer));
- fb->initial_length = initial_length;
- return fb;
-}
-
-static void fbuffer_free(FBuffer *fb)
-{
- if (fb->ptr) ruby_xfree(fb->ptr);
- ruby_xfree(fb);
-}
-
-static void fbuffer_free_only_buffer(FBuffer *fb)
-{
- ruby_xfree(fb);
-}
-
-static void fbuffer_clear(FBuffer *fb)
-{
- fb->len = 0;
-}
-
-static void fbuffer_inc_capa(FBuffer *fb, unsigned long requested)
-{
- unsigned long required;
-
- if (!fb->ptr) {
- fb->ptr = ALLOC_N(char, fb->initial_length);
- fb->capa = fb->initial_length;
- }
-
- for (required = fb->capa; requested > required - fb->len; required <<= 1);
-
- if (required > fb->capa) {
- REALLOC_N(fb->ptr, char, required);
- fb->capa = required;
- }
-}
-
-static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len)
-{
- if (len > 0) {
- fbuffer_inc_capa(fb, len);
- MEMCPY(fb->ptr + fb->len, newstr, char, len);
- fb->len += len;
- }
-}
-
-static void fbuffer_append_char(FBuffer *fb, char newchr)
-{
- fbuffer_inc_capa(fb, 1);
- *(fb->ptr + fb->len) = newchr;
- fb->len++;
-}
-
-static void freverse(char *start, char *end)
-{
- char c;
-
- while (end > start) {
- c = *end, *end-- = *start, *start++ = c;
- }
-}
-
-static long fltoa(long number, char *buf)
-{
- static char digits[] = "0123456789";
- long sign = number;
- char* tmp = buf;
-
- if (sign < 0) number = -number;
- do *tmp++ = digits[number % 10]; while (number /= 10);
- if (sign < 0) *tmp++ = '-';
- freverse(buf, tmp - 1);
- return tmp - buf;
-}
-
-static void fbuffer_append_long(FBuffer *fb, long number)
-{
- char buf[20];
- unsigned long len = fltoa(number, buf);
- fbuffer_append(fb, buf, len);
-}
-
-static FBuffer *fbuffer_dup(FBuffer *fb)
-{
- unsigned long len = fb->len;
- FBuffer *result;
-
- if (len > 0) {
- result = fbuffer_alloc_with_length(len);
- fbuffer_append(result, FBUFFER_PAIR(fb));
- } else {
- result = fbuffer_alloc();
- }
- return result;
-}
-
-/*
- * Document-module: JSON::Ext::Generator
- *
- * This is the JSON generator implemented as a C extension. It can be
- * configured to be used by setting
- *
- * JSON.generator = JSON::Ext::Generator
- *
- * with the method generator= in JSON.
- *
- */
-
-/*
- * call-seq: to_json(state = nil)
- *
- * Returns a JSON string containing a JSON object, that is generated from
- * this Hash instance.
- * _state_ is a JSON::State object, that can also be used to configure the
- * produced JSON string output further.
- */
-static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self)
-{
- GENERATE_JSON(object);
-}
-
-/*
- * call-seq: to_json(state = nil)
- *
- * Returns a JSON string containing a JSON array, that is generated from
- * this Array instance.
- * _state_ is a JSON::State object, that can also be used to configure the
- * produced JSON string output further.
- */
-static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self) {
- GENERATE_JSON(array);
-}
-
-/*
- * call-seq: to_json(*)
- *
- * Returns a JSON string representation for this Integer number.
- */
-static VALUE mFixnum_to_json(int argc, VALUE *argv, VALUE self)
-{
- GENERATE_JSON(fixnum);
-}
-
-/*
- * call-seq: to_json(*)
- *
- * Returns a JSON string representation for this Integer number.
- */
-static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self)
-{
- GENERATE_JSON(bignum);
-}
-
-/*
- * call-seq: to_json(*)
- *
- * Returns a JSON string representation for this Float number.
- */
-static VALUE mFloat_to_json(int argc, VALUE *argv, VALUE self)
-{
- GENERATE_JSON(float);
-}
-
-/*
- * call-seq: String.included(modul)
- *
- * Extends _modul_ with the String::Extend module.
- */
-static VALUE mString_included_s(VALUE self, VALUE modul) {
- VALUE result = rb_funcall(modul, i_extend, 1, mString_Extend);
- return result;
-}
-
-/*
- * call-seq: to_json(*)
- *
- * This string should be encoded with UTF-8 A call to this method
- * returns a JSON string encoded with UTF16 big endian characters as
- * \u????.
- */
-static VALUE mString_to_json(int argc, VALUE *argv, VALUE self)
-{
- GENERATE_JSON(string);
-}
-
-/*
- * call-seq: to_json_raw_object()
- *
- * This method creates a raw object hash, that can be nested into
- * other data structures and will be generated as a raw string. This
- * method should be used, if you want to convert raw strings to JSON
- * instead of UTF-8 strings, e. g. binary data.
- */
-static VALUE mString_to_json_raw_object(VALUE self)
-{
- VALUE ary;
- VALUE result = rb_hash_new();
- rb_hash_aset(result, rb_funcall(mJSON, i_create_id, 0), rb_class_name(rb_obj_class(self)));
- ary = rb_funcall(self, i_unpack, 1, rb_str_new2("C*"));
- rb_hash_aset(result, rb_str_new2("raw"), ary);
- return result;
-}
-
-/*
- * call-seq: to_json_raw(*args)
- *
- * This method creates a JSON text from the result of a call to
- * to_json_raw_object of this String.
- */
-static VALUE mString_to_json_raw(int argc, VALUE *argv, VALUE self)
-{
- VALUE obj = mString_to_json_raw_object(self);
- Check_Type(obj, T_HASH);
- return mHash_to_json(argc, argv, obj);
-}
-
-/*
- * call-seq: json_create(o)
- *
- * Raw Strings are JSON Objects (the raw bytes are stored in an array for the
- * key "raw"). The Ruby String can be created by this module method.
- */
-static VALUE mString_Extend_json_create(VALUE self, VALUE o)
-{
- VALUE ary;
- Check_Type(o, T_HASH);
- ary = rb_hash_aref(o, rb_str_new2("raw"));
- return rb_funcall(ary, i_pack, 1, rb_str_new2("C*"));
-}
-
-/*
- * call-seq: to_json(*)
- *
- * Returns a JSON string for true: 'true'.
- */
-static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self)
-{
- GENERATE_JSON(true);
-}
-
-/*
- * call-seq: to_json(*)
- *
- * Returns a JSON string for false: 'false'.
- */
-static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self)
-{
- GENERATE_JSON(false);
-}
-
-/*
- * call-seq: to_json(*)
- *
- */
-static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self)
-{
- GENERATE_JSON(null);
-}
-
-/*
- * call-seq: to_json(*)
- *
- * Converts this object to a string (calling #to_s), converts
- * it to a JSON string, and returns the result. This is a fallback, if no
- * special method #to_json was defined for some object.
- */
-static VALUE mObject_to_json(int argc, VALUE *argv, VALUE self)
-{
- VALUE state;
- VALUE string = rb_funcall(self, i_to_s, 0);
- rb_scan_args(argc, argv, "01", &state);
- Check_Type(string, T_STRING);
- state = cState_from_state_s(cState, state);
- return cState_partial_generate(state, string);
-}
-
-static void State_free(JSON_Generator_State *state)
-{
- if (state->indent) ruby_xfree(state->indent);
- if (state->space) ruby_xfree(state->space);
- if (state->space_before) ruby_xfree(state->space_before);
- if (state->object_nl) ruby_xfree(state->object_nl);
- if (state->array_nl) ruby_xfree(state->array_nl);
- if (state->array_delim) fbuffer_free(state->array_delim);
- if (state->object_delim) fbuffer_free(state->object_delim);
- if (state->object_delim2) fbuffer_free(state->object_delim2);
- ruby_xfree(state);
-}
-
-static JSON_Generator_State *State_allocate()
-{
- JSON_Generator_State *state = ALLOC(JSON_Generator_State);
- MEMZERO(state, JSON_Generator_State, 1);
- return state;
-}
-
-static VALUE cState_s_allocate(VALUE klass)
-{
- JSON_Generator_State *state = State_allocate();
- return Data_Wrap_Struct(klass, NULL, State_free, state);
-}
-
-/*
- * call-seq: configure(opts)
- *
- * Configure this State instance with the Hash _opts_, and return
- * itself.
- */
-static VALUE cState_configure(VALUE self, VALUE opts)
-{
- VALUE tmp;
- GET_STATE(self);
- tmp = rb_convert_type(opts, T_HASH, "Hash", "to_hash");
- if (NIL_P(tmp)) tmp = rb_convert_type(opts, T_HASH, "Hash", "to_h");
- if (NIL_P(tmp)) {
- rb_raise(rb_eArgError, "opts has to be hash like or convertable into a hash");
- }
- opts = tmp;
- tmp = rb_hash_aref(opts, ID2SYM(i_indent));
- if (RTEST(tmp)) {
- unsigned long len;
- Check_Type(tmp, T_STRING);
- len = RSTRING_LEN(tmp);
- state->indent = fstrndup(RSTRING_PTR(tmp), len);
- state->indent_len = len;
- }
- tmp = rb_hash_aref(opts, ID2SYM(i_space));
- if (RTEST(tmp)) {
- unsigned long len;
- Check_Type(tmp, T_STRING);
- len = RSTRING_LEN(tmp);
- state->space = fstrndup(RSTRING_PTR(tmp), len);
- state->space_len = len;
- }
- tmp = rb_hash_aref(opts, ID2SYM(i_space_before));
- if (RTEST(tmp)) {
- unsigned long len;
- Check_Type(tmp, T_STRING);
- len = RSTRING_LEN(tmp);
- state->space_before = fstrndup(RSTRING_PTR(tmp), len);
- state->space_before_len = len;
- }
- tmp = rb_hash_aref(opts, ID2SYM(i_array_nl));
- if (RTEST(tmp)) {
- unsigned long len;
- Check_Type(tmp, T_STRING);
- len = RSTRING_LEN(tmp);
- state->array_nl = fstrndup(RSTRING_PTR(tmp), len);
- state->array_nl_len = len;
- }
- tmp = rb_hash_aref(opts, ID2SYM(i_object_nl));
- if (RTEST(tmp)) {
- unsigned long len;
- Check_Type(tmp, T_STRING);
- len = RSTRING_LEN(tmp);
- state->object_nl = fstrndup(RSTRING_PTR(tmp), len);
- state->object_nl_len = len;
- }
- tmp = ID2SYM(i_max_nesting);
- state->max_nesting = 19;
- if (option_given_p(opts, tmp)) {
- VALUE max_nesting = rb_hash_aref(opts, tmp);
- if (RTEST(max_nesting)) {
- Check_Type(max_nesting, T_FIXNUM);
- state->max_nesting = FIX2LONG(max_nesting);
- } else {
- state->max_nesting = 0;
- }
- }
- tmp = ID2SYM(i_depth);
- state->depth = 0;
- if (option_given_p(opts, tmp)) {
- VALUE depth = rb_hash_aref(opts, tmp);
- if (RTEST(depth)) {
- Check_Type(depth, T_FIXNUM);
- state->depth = FIX2LONG(depth);
- } else {
- state->depth = 0;
- }
- }
- tmp = rb_hash_aref(opts, ID2SYM(i_allow_nan));
- state->allow_nan = RTEST(tmp);
- tmp = rb_hash_aref(opts, ID2SYM(i_ascii_only));
- state->ascii_only = RTEST(tmp);
- return self;
-}
-
-/*
- * call-seq: to_h
- *
- * Returns the configuration instance variables as a hash, that can be
- * passed to the configure method.
- */
-static VALUE cState_to_h(VALUE self)
-{
- VALUE result = rb_hash_new();
- GET_STATE(self);
- rb_hash_aset(result, ID2SYM(i_indent), rb_str_new(state->indent, state->indent_len));
- rb_hash_aset(result, ID2SYM(i_space), rb_str_new(state->space, state->space_len));
- rb_hash_aset(result, ID2SYM(i_space_before), rb_str_new(state->space_before, state->space_before_len));
- rb_hash_aset(result, ID2SYM(i_object_nl), rb_str_new(state->object_nl, state->object_nl_len));
- rb_hash_aset(result, ID2SYM(i_array_nl), rb_str_new(state->array_nl, state->array_nl_len));
- rb_hash_aset(result, ID2SYM(i_allow_nan), state->allow_nan ? Qtrue : Qfalse);
- rb_hash_aset(result, ID2SYM(i_ascii_only), state->ascii_only ? Qtrue : Qfalse);
- rb_hash_aset(result, ID2SYM(i_max_nesting), LONG2FIX(state->max_nesting));
- rb_hash_aset(result, ID2SYM(i_depth), LONG2FIX(state->depth));
- return result;
-}
-
-/*
-* call-seq: [](name)
-*
-* Return the value returned by method +name+.
-*/
-static VALUE cState_aref(VALUE self, VALUE name)
-{
- GET_STATE(self);
- if (RTEST(rb_funcall(self, i_respond_to_p, 1, name))) {
- return rb_funcall(self, i_send, 1, name);
- } else {
- return Qnil;
- }
-}
-
-static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- char *object_nl = state->object_nl;
- long object_nl_len = state->object_nl_len;
- char *indent = state->indent;
- long indent_len = state->indent_len;
- long max_nesting = state->max_nesting;
- char *delim = FBUFFER_PTR(state->object_delim);
- long delim_len = FBUFFER_LEN(state->object_delim);
- char *delim2 = FBUFFER_PTR(state->object_delim2);
- long delim2_len = FBUFFER_LEN(state->object_delim2);
- long depth = ++state->depth;
- int i, j;
- VALUE key, key_to_s, keys;
- if (max_nesting != 0 && depth > max_nesting) {
- fbuffer_free(buffer);
- rb_raise(eNestingError, "nesting of %ld is too deep", --state->depth);
- }
- fbuffer_append_char(buffer, '{');
- keys = rb_funcall(obj, i_keys, 0);
- for(i = 0; i < RARRAY_LEN(keys); i++) {
- if (i > 0) fbuffer_append(buffer, delim, delim_len);
- if (object_nl) {
- fbuffer_append(buffer, object_nl, object_nl_len);
- }
- if (indent) {
- for (j = 0; j < depth; j++) {
- fbuffer_append(buffer, indent, indent_len);
- }
- }
- key = rb_ary_entry(keys, i);
- key_to_s = rb_funcall(key, i_to_s, 0);
- Check_Type(key_to_s, T_STRING);
- generate_json(buffer, Vstate, state, key_to_s);
- fbuffer_append(buffer, delim2, delim2_len);
- generate_json(buffer, Vstate, state, rb_hash_aref(obj, key));
- }
- depth = --state->depth;
- if (object_nl) {
- fbuffer_append(buffer, object_nl, object_nl_len);
- if (indent) {
- for (j = 0; j < depth; j++) {
- fbuffer_append(buffer, indent, indent_len);
- }
- }
- }
- fbuffer_append_char(buffer, '}');
-}
-
-static void generate_json_array(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- char *array_nl = state->array_nl;
- long array_nl_len = state->array_nl_len;
- char *indent = state->indent;
- long indent_len = state->indent_len;
- long max_nesting = state->max_nesting;
- char *delim = FBUFFER_PTR(state->array_delim);
- long delim_len = FBUFFER_LEN(state->array_delim);
- long depth = ++state->depth;
- int i, j;
- if (max_nesting != 0 && depth > max_nesting) {
- fbuffer_free(buffer);
- rb_raise(eNestingError, "nesting of %ld is too deep", --state->depth);
- }
- fbuffer_append_char(buffer, '[');
- if (array_nl) fbuffer_append(buffer, array_nl, array_nl_len);
- for(i = 0; i < RARRAY_LEN(obj); i++) {
- if (i > 0) fbuffer_append(buffer, delim, delim_len);
- if (indent) {
- for (j = 0; j < depth; j++) {
- fbuffer_append(buffer, indent, indent_len);
- }
- }
- generate_json(buffer, Vstate, state, rb_ary_entry(obj, i));
- }
- state->depth = --depth;
- if (array_nl) {
- fbuffer_append(buffer, array_nl, array_nl_len);
- if (indent) {
- for (j = 0; j < depth; j++) {
- fbuffer_append(buffer, indent, indent_len);
- }
- }
- }
- fbuffer_append_char(buffer, ']');
-}
-
-static void generate_json_string(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- fbuffer_append_char(buffer, '"');
-#ifdef HAVE_RUBY_ENCODING_H
- obj = rb_funcall(obj, i_encode, 1, CEncoding_UTF_8);
-#endif
- if (state->ascii_only) {
- convert_UTF8_to_JSON_ASCII(buffer, obj);
- } else {
- convert_UTF8_to_JSON(buffer, obj);
- }
- fbuffer_append_char(buffer, '"');
-}
-
-static void generate_json_null(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- fbuffer_append(buffer, "null", 4);
-}
-
-static void generate_json_false(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- fbuffer_append(buffer, "false", 5);
-}
-
-static void generate_json_true(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- fbuffer_append(buffer, "true", 4);
-}
-
-static void generate_json_fixnum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- fbuffer_append_long(buffer, FIX2LONG(obj));
-}
-
-static void generate_json_bignum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- VALUE tmp = rb_funcall(obj, i_to_s, 0);
- fbuffer_append(buffer, RSTRING_PAIR(tmp));
-}
-
-static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- double value = RFLOAT_VALUE(obj);
- char allow_nan = state->allow_nan;
- VALUE tmp = rb_funcall(obj, i_to_s, 0);
- if (!allow_nan) {
- if (isinf(value)) {
- fbuffer_free(buffer);
- rb_raise(eGeneratorError, "%u: %s not allowed in JSON", __LINE__, StringValueCStr(tmp));
- } else if (isnan(value)) {
- fbuffer_free(buffer);
- rb_raise(eGeneratorError, "%u: %s not allowed in JSON", __LINE__, StringValueCStr(tmp));
- }
- }
- fbuffer_append(buffer, RSTRING_PAIR(tmp));
-}
-
-static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
-{
- VALUE tmp;
- VALUE klass = CLASS_OF(obj);
- if (klass == rb_cHash) {
- generate_json_object(buffer, Vstate, state, obj);
- } else if (klass == rb_cArray) {
- generate_json_array(buffer, Vstate, state, obj);
- } else if (klass == rb_cString) {
- generate_json_string(buffer, Vstate, state, obj);
- } else if (obj == Qnil) {
- generate_json_null(buffer, Vstate, state, obj);
- } else if (obj == Qfalse) {
- generate_json_false(buffer, Vstate, state, obj);
- } else if (obj == Qtrue) {
- generate_json_true(buffer, Vstate, state, obj);
- } else if (klass == rb_cFixnum) {
- generate_json_fixnum(buffer, Vstate, state, obj);
- } else if (klass == rb_cBignum) {
- generate_json_bignum(buffer, Vstate, state, obj);
- } else if (klass == rb_cFloat) {
- generate_json_float(buffer, Vstate, state, obj);
- } else if (rb_respond_to(obj, i_to_json)) {
- tmp = rb_funcall(obj, i_to_json, 1, Vstate);
- Check_Type(tmp, T_STRING);
- fbuffer_append(buffer, RSTRING_PAIR(tmp));
- } else {
- tmp = rb_funcall(obj, i_to_s, 0);
- Check_Type(tmp, T_STRING);
- generate_json(buffer, Vstate, state, tmp);
- }
-}
-
-static FBuffer *cState_prepare_buffer(VALUE self)
-{
- FBuffer *buffer = fbuffer_alloc();
- GET_STATE(self);
-
- if (state->object_delim) {
- fbuffer_clear(state->object_delim);
- } else {
- state->object_delim = fbuffer_alloc_with_length(16);
- }
- fbuffer_append_char(state->object_delim, ',');
- if (state->object_delim2) {
- fbuffer_clear(state->object_delim2);
- } else {
- state->object_delim2 = fbuffer_alloc_with_length(16);
- }
- fbuffer_append_char(state->object_delim2, ':');
- if (state->space) fbuffer_append(state->object_delim2, state->space, state->space_len);
-
- if (state->array_delim) {
- fbuffer_clear(state->array_delim);
- } else {
- state->array_delim = fbuffer_alloc_with_length(16);
- }
- fbuffer_append_char(state->array_delim, ',');
- if (state->array_nl) fbuffer_append(state->array_delim, state->array_nl, state->array_nl_len);
- return buffer;
-}
-
-static VALUE fbuffer_to_s(FBuffer *fb)
-{
- VALUE result = rb_str_new(FBUFFER_PAIR(fb));
- fbuffer_free(fb);
- FORCE_UTF8(result);
- return result;
-}
-
-static VALUE cState_partial_generate(VALUE self, VALUE obj)
-{
- FBuffer *buffer = cState_prepare_buffer(self);
- GET_STATE(self);
- generate_json(buffer, self, state, obj);
- return fbuffer_to_s(buffer);
-}
-
-/*
- * call-seq: generate(obj)
- *
- * Generates a valid JSON document from object +obj+ and returns the
- * result. If no valid JSON document can be created this method raises a
- * GeneratorError exception.
- */
-static VALUE cState_generate(VALUE self, VALUE obj)
-{
- VALUE result = cState_partial_generate(self, obj);
- VALUE re, args[2];
- args[0] = rb_str_new2("\\A\\s*(?:\\[.*\\]|\\{.*\\})\\s*\\Z");
- args[1] = CRegexp_MULTILINE;
- re = rb_class_new_instance(2, args, rb_cRegexp);
- if (NIL_P(rb_funcall(re, i_match, 1, result))) {
- rb_raise(eGeneratorError, "only generation of JSON objects or arrays allowed");
- }
- return result;
-}
-
-/*
- * call-seq: new(opts = {})
- *
- * Instantiates a new State object, configured by _opts_.
- *
- * _opts_ can have the following keys:
- *
- * * *indent*: a string used to indent levels (default: ''),
- * * *space*: a string that is put after, a : or , delimiter (default: ''),
- * * *space_before*: a string that is put before a : pair delimiter (default: ''),
- * * *object_nl*: a string that is put at the end of a JSON object (default: ''),
- * * *array_nl*: a string that is put at the end of a JSON array (default: ''),
- * * *allow_nan*: true if NaN, Infinity, and -Infinity should be
- * generated, otherwise an exception is thrown, if these values are
- * encountered. This options defaults to false.
- */
-static VALUE cState_initialize(int argc, VALUE *argv, VALUE self)
-{
- VALUE opts;
- GET_STATE(self);
- state->max_nesting = 19;
- rb_scan_args(argc, argv, "01", &opts);
- if (!NIL_P(opts)) cState_configure(self, opts);
- return self;
-}
-
-/*
- * call-seq: initialize_copy(orig)
- *
- * Initializes this object from orig if it to be duplicated/cloned and returns
- * it.
-*/
-static VALUE cState_init_copy(VALUE obj, VALUE orig)
-{
- JSON_Generator_State *objState, *origState;
-
- Data_Get_Struct(obj, JSON_Generator_State, objState);
- Data_Get_Struct(orig, JSON_Generator_State, origState);
- if (!objState) rb_raise(rb_eArgError, "unallocated JSON::State");
-
- MEMCPY(objState, origState, JSON_Generator_State, 1);
- objState->indent = fstrndup(origState->indent, origState->indent_len);
- objState->space = fstrndup(origState->space, origState->space_len);
- objState->space_before = fstrndup(origState->space_before, origState->space_before_len);
- objState->object_nl = fstrndup(origState->object_nl, origState->object_nl_len);
- objState->array_nl = fstrndup(origState->array_nl, origState->array_nl_len);
- if (origState->array_delim) objState->array_delim = fbuffer_dup(origState->array_delim);
- if (origState->object_delim) objState->object_delim = fbuffer_dup(origState->object_delim);
- if (origState->object_delim2) objState->object_delim2 = fbuffer_dup(origState->object_delim2);
- return obj;
-}
-
-/*
- * call-seq: from_state(opts)
- *
- * Creates a State object from _opts_, which ought to be Hash to create a
- * new State instance configured by _opts_, something else to create an
- * unconfigured instance. If _opts_ is a State object, it is just returned.
- */
-static VALUE cState_from_state_s(VALUE self, VALUE opts)
-{
- if (rb_obj_is_kind_of(opts, self)) {
- return opts;
- } else if (rb_obj_is_kind_of(opts, rb_cHash)) {
- return rb_funcall(self, i_new, 1, opts);
- } else {
- if (NIL_P(CJSON_SAFE_STATE_PROTOTYPE)) {
- CJSON_SAFE_STATE_PROTOTYPE = rb_const_get(mJSON, i_SAFE_STATE_PROTOTYPE);
- }
- return rb_funcall(CJSON_SAFE_STATE_PROTOTYPE, i_dup, 0);
- }
-}
-
-/*
- * call-seq: indent()
- *
- * This string is used to indent levels in the JSON text.
- */
-static VALUE cState_indent(VALUE self)
-{
- GET_STATE(self);
- return state->indent ? rb_str_new2(state->indent) : rb_str_new2("");
-}
-
-/*
- * call-seq: indent=(indent)
- *
- * This string is used to indent levels in the JSON text.
- */
-static VALUE cState_indent_set(VALUE self, VALUE indent)
-{
- unsigned long len;
- GET_STATE(self);
- Check_Type(indent, T_STRING);
- len = RSTRING_LEN(indent);
- if (len == 0) {
- if (state->indent) {
- ruby_xfree(state->indent);
- state->indent = NULL;
- state->indent_len = 0;
- }
- } else {
- if (state->indent) ruby_xfree(state->indent);
- state->indent = strdup(RSTRING_PTR(indent));
- state->indent_len = len;
- }
- return Qnil;
-}
-
-/*
- * call-seq: space()
- *
- * This string is used to insert a space between the tokens in a JSON
- * string.
- */
-static VALUE cState_space(VALUE self)
-{
- GET_STATE(self);
- return state->space ? rb_str_new2(state->space) : rb_str_new2("");
-}
-
-/*
- * call-seq: space=(space)
- *
- * This string is used to insert a space between the tokens in a JSON
- * string.
- */
-static VALUE cState_space_set(VALUE self, VALUE space)
-{
- unsigned long len;
- GET_STATE(self);
- Check_Type(space, T_STRING);
- len = RSTRING_LEN(space);
- if (len == 0) {
- if (state->space) {
- ruby_xfree(state->space);
- state->space = NULL;
- state->space_len = 0;
- }
- } else {
- if (state->space) ruby_xfree(state->space);
- state->space = strdup(RSTRING_PTR(space));
- state->space_len = len;
- }
- return Qnil;
-}
-
-/*
- * call-seq: space_before()
- *
- * This string is used to insert a space before the ':' in JSON objects.
- */
-static VALUE cState_space_before(VALUE self)
-{
- GET_STATE(self);
- return state->space_before ? rb_str_new2(state->space_before) : rb_str_new2("");
-}
-
-/*
- * call-seq: space_before=(space_before)
- *
- * This string is used to insert a space before the ':' in JSON objects.
- */
-static VALUE cState_space_before_set(VALUE self, VALUE space_before)
-{
- unsigned long len;
- GET_STATE(self);
- Check_Type(space_before, T_STRING);
- len = RSTRING_LEN(space_before);
- if (len == 0) {
- if (state->space_before) {
- ruby_xfree(state->space_before);
- state->space_before = NULL;
- state->space_before_len = 0;
- }
- } else {
- if (state->space_before) ruby_xfree(state->space_before);
- state->space_before = strdup(RSTRING_PTR(space_before));
- state->space_before_len = len;
- }
- return Qnil;
-}
-
-/*
- * call-seq: object_nl()
- *
- * This string is put at the end of a line that holds a JSON object (or
- * Hash).
- */
-static VALUE cState_object_nl(VALUE self)
-{
- GET_STATE(self);
- return state->object_nl ? rb_str_new2(state->object_nl) : rb_str_new2("");
-}
-
-/*
- * call-seq: object_nl=(object_nl)
- *
- * This string is put at the end of a line that holds a JSON object (or
- * Hash).
- */
-static VALUE cState_object_nl_set(VALUE self, VALUE object_nl)
-{
- unsigned long len;
- GET_STATE(self);
- Check_Type(object_nl, T_STRING);
- len = RSTRING_LEN(object_nl);
- if (len == 0) {
- if (state->object_nl) {
- ruby_xfree(state->object_nl);
- state->object_nl = NULL;
- }
- } else {
- if (state->object_nl) ruby_xfree(state->object_nl);
- state->object_nl = strdup(RSTRING_PTR(object_nl));
- state->object_nl_len = len;
- }
- return Qnil;
-}
-
-/*
- * call-seq: array_nl()
- *
- * This string is put at the end of a line that holds a JSON array.
- */
-static VALUE cState_array_nl(VALUE self)
-{
- GET_STATE(self);
- return state->array_nl ? rb_str_new2(state->array_nl) : rb_str_new2("");
-}
-
-/*
- * call-seq: array_nl=(array_nl)
- *
- * This string is put at the end of a line that holds a JSON array.
- */
-static VALUE cState_array_nl_set(VALUE self, VALUE array_nl)
-{
- unsigned long len;
- GET_STATE(self);
- Check_Type(array_nl, T_STRING);
- len = RSTRING_LEN(array_nl);
- if (len == 0) {
- if (state->array_nl) {
- ruby_xfree(state->array_nl);
- state->array_nl = NULL;
- }
- } else {
- if (state->array_nl) ruby_xfree(state->array_nl);
- state->array_nl = strdup(RSTRING_PTR(array_nl));
- state->array_nl_len = len;
- }
- return Qnil;
-}
-
-
-/*
-* call-seq: check_circular?
-*
-* Returns true, if circular data structures should be checked,
-* otherwise returns false.
-*/
-static VALUE cState_check_circular_p(VALUE self)
-{
- GET_STATE(self);
- return state->max_nesting ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq: max_nesting
- *
- * This integer returns the maximum level of data structure nesting in
- * the generated JSON, max_nesting = 0 if no maximum is checked.
- */
-static VALUE cState_max_nesting(VALUE self)
-{
- GET_STATE(self);
- return LONG2FIX(state->max_nesting);
-}
-
-/*
- * call-seq: max_nesting=(depth)
- *
- * This sets the maximum level of data structure nesting in the generated JSON
- * to the integer depth, max_nesting = 0 if no maximum should be checked.
- */
-static VALUE cState_max_nesting_set(VALUE self, VALUE depth)
-{
- GET_STATE(self);
- Check_Type(depth, T_FIXNUM);
- return state->max_nesting = FIX2LONG(depth);
-}
-
-/*
- * call-seq: allow_nan?
- *
- * Returns true, if NaN, Infinity, and -Infinity should be generated, otherwise
- * returns false.
- */
-static VALUE cState_allow_nan_p(VALUE self)
-{
- GET_STATE(self);
- return state->allow_nan ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq: ascii_only?
- *
- * Returns true, if NaN, Infinity, and -Infinity should be generated, otherwise
- * returns false.
- */
-static VALUE cState_ascii_only_p(VALUE self)
-{
- GET_STATE(self);
- return state->ascii_only ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq: depth
- *
- * This integer returns the current depth of data structure nesting.
- */
-static VALUE cState_depth(VALUE self)
-{
- GET_STATE(self);
- return LONG2FIX(state->depth);
-}
-
-/*
- * call-seq: depth=(depth)
- *
- * This sets the maximum level of data structure nesting in the generated JSON
- * to the integer depth, max_nesting = 0 if no maximum should be checked.
- */
-static VALUE cState_depth_set(VALUE self, VALUE depth)
-{
- GET_STATE(self);
- Check_Type(depth, T_FIXNUM);
- return state->depth = FIX2LONG(depth);
-}
-
-/*
- *
- */
-void Init_generator()
-{
- rb_require("json/common");
-
- mJSON = rb_define_module("JSON");
- mExt = rb_define_module_under(mJSON, "Ext");
- mGenerator = rb_define_module_under(mExt, "Generator");
-
- eGeneratorError = rb_path2class("JSON::GeneratorError");
- eNestingError = rb_path2class("JSON::NestingError");
-
- cState = rb_define_class_under(mGenerator, "State", rb_cObject);
- rb_define_alloc_func(cState, cState_s_allocate);
- rb_define_singleton_method(cState, "from_state", cState_from_state_s, 1);
- rb_define_method(cState, "initialize", cState_initialize, -1);
- rb_define_method(cState, "initialize_copy", cState_init_copy, 1);
- rb_define_method(cState, "indent", cState_indent, 0);
- rb_define_method(cState, "indent=", cState_indent_set, 1);
- rb_define_method(cState, "space", cState_space, 0);
- rb_define_method(cState, "space=", cState_space_set, 1);
- rb_define_method(cState, "space_before", cState_space_before, 0);
- rb_define_method(cState, "space_before=", cState_space_before_set, 1);
- rb_define_method(cState, "object_nl", cState_object_nl, 0);
- rb_define_method(cState, "object_nl=", cState_object_nl_set, 1);
- rb_define_method(cState, "array_nl", cState_array_nl, 0);
- rb_define_method(cState, "array_nl=", cState_array_nl_set, 1);
- rb_define_method(cState, "max_nesting", cState_max_nesting, 0);
- rb_define_method(cState, "max_nesting=", cState_max_nesting_set, 1);
- rb_define_method(cState, "check_circular?", cState_check_circular_p, 0);
- rb_define_method(cState, "allow_nan?", cState_allow_nan_p, 0);
- rb_define_method(cState, "ascii_only?", cState_ascii_only_p, 0);
- rb_define_method(cState, "depth", cState_depth, 0);
- rb_define_method(cState, "depth=", cState_depth_set, 1);
- rb_define_method(cState, "configure", cState_configure, 1);
- rb_define_method(cState, "to_h", cState_to_h, 0);
- rb_define_method(cState, "[]", cState_aref, 1);
- rb_define_method(cState, "generate", cState_generate, 1);
-
- mGeneratorMethods = rb_define_module_under(mGenerator, "GeneratorMethods");
- mObject = rb_define_module_under(mGeneratorMethods, "Object");
- rb_define_method(mObject, "to_json", mObject_to_json, -1);
- mHash = rb_define_module_under(mGeneratorMethods, "Hash");
- rb_define_method(mHash, "to_json", mHash_to_json, -1);
- mArray = rb_define_module_under(mGeneratorMethods, "Array");
- rb_define_method(mArray, "to_json", mArray_to_json, -1);
- mFixnum = rb_define_module_under(mGeneratorMethods, "Fixnum");
- rb_define_method(mFixnum, "to_json", mFixnum_to_json, -1);
- mBignum = rb_define_module_under(mGeneratorMethods, "Bignum");
- rb_define_method(mBignum, "to_json", mBignum_to_json, -1);
- mFloat = rb_define_module_under(mGeneratorMethods, "Float");
- rb_define_method(mFloat, "to_json", mFloat_to_json, -1);
- mString = rb_define_module_under(mGeneratorMethods, "String");
- rb_define_singleton_method(mString, "included", mString_included_s, 1);
- rb_define_method(mString, "to_json", mString_to_json, -1);
- rb_define_method(mString, "to_json_raw", mString_to_json_raw, -1);
- rb_define_method(mString, "to_json_raw_object", mString_to_json_raw_object, 0);
- mString_Extend = rb_define_module_under(mString, "Extend");
- rb_define_method(mString_Extend, "json_create", mString_Extend_json_create, 1);
- mTrueClass = rb_define_module_under(mGeneratorMethods, "TrueClass");
- rb_define_method(mTrueClass, "to_json", mTrueClass_to_json, -1);
- mFalseClass = rb_define_module_under(mGeneratorMethods, "FalseClass");
- rb_define_method(mFalseClass, "to_json", mFalseClass_to_json, -1);
- mNilClass = rb_define_module_under(mGeneratorMethods, "NilClass");
- rb_define_method(mNilClass, "to_json", mNilClass_to_json, -1);
-
- CRegexp_MULTILINE = rb_const_get(rb_cRegexp, rb_intern("MULTILINE"));
- i_to_s = rb_intern("to_s");
- i_to_json = rb_intern("to_json");
- i_new = rb_intern("new");
- i_indent = rb_intern("indent");
- i_space = rb_intern("space");
- i_space_before = rb_intern("space_before");
- i_object_nl = rb_intern("object_nl");
- i_array_nl = rb_intern("array_nl");
- i_max_nesting = rb_intern("max_nesting");
- i_allow_nan = rb_intern("allow_nan");
- i_ascii_only = rb_intern("ascii_only");
- i_depth = rb_intern("depth");
- i_pack = rb_intern("pack");
- i_unpack = rb_intern("unpack");
- i_create_id = rb_intern("create_id");
- i_extend = rb_intern("extend");
- i_key_p = rb_intern("key?");
- i_aref = rb_intern("[]");
- i_send = rb_intern("__send__");
- i_respond_to_p = rb_intern("respond_to?");
- i_match = rb_intern("match");
- i_keys = rb_intern("keys");
- i_dup = rb_intern("dup");
-#ifdef HAVE_RUBY_ENCODING_H
- CEncoding_UTF_8 = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-8"));
- i_encoding = rb_intern("encoding");
- i_encode = rb_intern("encode");
-#endif
- i_SAFE_STATE_PROTOTYPE = rb_intern("SAFE_STATE_PROTOTYPE");
- CJSON_SAFE_STATE_PROTOTYPE = Qnil;
-}
diff --git a/vendor/gems/json-1.5.1/ext/json/ext/generator/generator.h b/vendor/gems/json-1.5.1/ext/json/ext/generator/generator.h
deleted file mode 100644
index e47f507b0..000000000
--- a/vendor/gems/json-1.5.1/ext/json/ext/generator/generator.h
+++ /dev/null
@@ -1,197 +0,0 @@
-#ifndef _GENERATOR_H_
-#define _GENERATOR_H_
-
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#include "ruby.h"
-
-#if HAVE_RUBY_RE_H
-#include "ruby/re.h"
-#endif
-
-#if HAVE_RE_H
-#include "re.h"
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include "ruby/encoding.h"
-#define FORCE_UTF8(obj) rb_enc_associate((obj), rb_utf8_encoding())
-#else
-#define FORCE_UTF8(obj)
-#endif
-
-#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
-
-#ifndef RHASH_SIZE
-#define RHASH_SIZE(hsh) (RHASH(hsh)->tbl->num_entries)
-#endif
-
-#ifndef RFLOAT_VALUE
-#define RFLOAT_VALUE(val) (RFLOAT(val)->value)
-#endif
-
-#ifndef RARRAY_PTR
-#define RARRAY_PTR(ARRAY) RARRAY(ARRAY)->ptr
-#endif
-#ifndef RARRAY_LEN
-#define RARRAY_LEN(ARRAY) RARRAY(ARRAY)->len
-#endif
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(string) RSTRING(string)->ptr
-#endif
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(string) RSTRING(string)->len
-#endif
-
-#define RSTRING_PAIR(string) RSTRING_PTR(string), RSTRING_LEN(string)
-
-/* fbuffer implementation */
-
-typedef struct FBufferStruct {
- unsigned long initial_length;
- char *ptr;
- unsigned long len;
- unsigned long capa;
-} FBuffer;
-
-#define FBUFFER_INITIAL_LENGTH 4096
-
-#define FBUFFER_PTR(fb) (fb->ptr)
-#define FBUFFER_LEN(fb) (fb->len)
-#define FBUFFER_CAPA(fb) (fb->capa)
-#define FBUFFER_PAIR(fb) FBUFFER_PTR(fb), FBUFFER_LEN(fb)
-
-static char *fstrndup(const char *ptr, unsigned long len);
-static FBuffer *fbuffer_alloc();
-static FBuffer *fbuffer_alloc_with_length(unsigned long initial_length);
-static void fbuffer_free(FBuffer *fb);
-static void fbuffer_free_only_buffer(FBuffer *fb);
-static void fbuffer_clear(FBuffer *fb);
-static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len);
-static void fbuffer_append_long(FBuffer *fb, long number);
-static void fbuffer_append_char(FBuffer *fb, char newchr);
-static FBuffer *fbuffer_dup(FBuffer *fb);
-static VALUE fbuffer_to_s(FBuffer *fb);
-
-/* unicode defintions */
-
-#define UNI_STRICT_CONVERSION 1
-
-typedef unsigned long UTF32; /* at least 32 bits */
-typedef unsigned short UTF16; /* at least 16 bits */
-typedef unsigned char UTF8; /* typically 8 bits */
-
-#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
-#define UNI_MAX_BMP (UTF32)0x0000FFFF
-#define UNI_MAX_UTF16 (UTF32)0x0010FFFF
-#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF
-#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF
-
-#define UNI_SUR_HIGH_START (UTF32)0xD800
-#define UNI_SUR_HIGH_END (UTF32)0xDBFF
-#define UNI_SUR_LOW_START (UTF32)0xDC00
-#define UNI_SUR_LOW_END (UTF32)0xDFFF
-
-static const int halfShift = 10; /* used for shifting by 10 bits */
-
-static const UTF32 halfBase = 0x0010000UL;
-static const UTF32 halfMask = 0x3FFUL;
-
-static unsigned char isLegalUTF8(const UTF8 *source, unsigned long length);
-static void unicode_escape(char *buf, UTF16 character);
-static void unicode_escape_to_buffer(FBuffer *buffer, char buf[6], UTF16 character);
-static void convert_UTF8_to_JSON_ASCII(FBuffer *buffer, VALUE string);
-static void convert_UTF8_to_JSON(FBuffer *buffer, VALUE string);
-
-/* ruby api and some helpers */
-
-typedef struct JSON_Generator_StateStruct {
- char *indent;
- long indent_len;
- char *space;
- long space_len;
- char *space_before;
- long space_before_len;
- char *object_nl;
- long object_nl_len;
- char *array_nl;
- long array_nl_len;
- FBuffer *array_delim;
- FBuffer *object_delim;
- FBuffer *object_delim2;
- long max_nesting;
- char allow_nan;
- char ascii_only;
- long depth;
-} JSON_Generator_State;
-
-#define GET_STATE(self) \
- JSON_Generator_State *state; \
- Data_Get_Struct(self, JSON_Generator_State, state)
-
-#define GENERATE_JSON(type) \
- FBuffer *buffer; \
- VALUE Vstate; \
- JSON_Generator_State *state; \
- \
- rb_scan_args(argc, argv, "01", &Vstate); \
- Vstate = cState_from_state_s(cState, Vstate); \
- Data_Get_Struct(Vstate, JSON_Generator_State, state); \
- buffer = cState_prepare_buffer(Vstate); \
- generate_json_##type(buffer, Vstate, state, self); \
- return fbuffer_to_s(buffer)
-
-static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mFixnum_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mFloat_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mString_included_s(VALUE self, VALUE modul);
-static VALUE mString_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mString_to_json_raw_object(VALUE self);
-static VALUE mString_to_json_raw(int argc, VALUE *argv, VALUE self);
-static VALUE mString_Extend_json_create(VALUE self, VALUE o);
-static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self);
-static VALUE mObject_to_json(int argc, VALUE *argv, VALUE self);
-static void State_free(JSON_Generator_State *state);
-static JSON_Generator_State *State_allocate();
-static VALUE cState_s_allocate(VALUE klass);
-static VALUE cState_configure(VALUE self, VALUE opts);
-static VALUE cState_to_h(VALUE self);
-static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_array(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_string(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_null(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_false(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_true(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_fixnum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_bignum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
-static VALUE cState_partial_generate(VALUE self, VALUE obj);
-static VALUE cState_generate(VALUE self, VALUE obj);
-static VALUE cState_initialize(int argc, VALUE *argv, VALUE self);
-static VALUE cState_from_state_s(VALUE self, VALUE opts);
-static VALUE cState_indent(VALUE self);
-static VALUE cState_indent_set(VALUE self, VALUE indent);
-static VALUE cState_space(VALUE self);
-static VALUE cState_space_set(VALUE self, VALUE space);
-static VALUE cState_space_before(VALUE self);
-static VALUE cState_space_before_set(VALUE self, VALUE space_before);
-static VALUE cState_object_nl(VALUE self);
-static VALUE cState_object_nl_set(VALUE self, VALUE object_nl);
-static VALUE cState_array_nl(VALUE self);
-static VALUE cState_array_nl_set(VALUE self, VALUE array_nl);
-static VALUE cState_max_nesting(VALUE self);
-static VALUE cState_max_nesting_set(VALUE self, VALUE depth);
-static VALUE cState_allow_nan_p(VALUE self);
-static VALUE cState_ascii_only_p(VALUE self);
-static VALUE cState_depth(VALUE self);
-static VALUE cState_depth_set(VALUE self, VALUE depth);
-static FBuffer *cState_prepare_buffer(VALUE self);
-
-#endif
diff --git a/vendor/gems/json-1.5.1/ext/json/ext/parser/extconf.rb b/vendor/gems/json-1.5.1/ext/json/ext/parser/extconf.rb
deleted file mode 100644
index d2438cd64..000000000
--- a/vendor/gems/json-1.5.1/ext/json/ext/parser/extconf.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'mkmf'
-require 'rbconfig'
-
-unless $CFLAGS.gsub!(/ -O[\dsz]?/, ' -O3')
- $CFLAGS << ' -O3'
-end
-if CONFIG['CC'] =~ /gcc/
- $CFLAGS << ' -Wall'
- #unless $CFLAGS.gsub!(/ -O[\dsz]?/, ' -O0 -ggdb')
- # $CFLAGS << ' -O0 -ggdb'
- #end
-end
-
-have_header("re.h")
-have_header("ruby/st.h")
-create_makefile 'json/ext/parser'
diff --git a/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.c b/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.c
deleted file mode 100644
index c125f82ca..000000000
--- a/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.c
+++ /dev/null
@@ -1,1969 +0,0 @@
-
-#line 1 "parser.rl"
-#include "parser.h"
-
-/* unicode */
-
-static const char digit_values[256] = {
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1,
- -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1
-};
-
-static UTF32 unescape_unicode(const unsigned char *p)
-{
- char b;
- UTF32 result = 0;
- b = digit_values[p[0]];
- if (b < 0) return UNI_REPLACEMENT_CHAR;
- result = (result << 4) | b;
- b = digit_values[p[1]];
- result = (result << 4) | b;
- if (b < 0) return UNI_REPLACEMENT_CHAR;
- b = digit_values[p[2]];
- result = (result << 4) | b;
- if (b < 0) return UNI_REPLACEMENT_CHAR;
- b = digit_values[p[3]];
- result = (result << 4) | b;
- if (b < 0) return UNI_REPLACEMENT_CHAR;
- return result;
-}
-
-static int convert_UTF32_to_UTF8(char *buf, UTF32 ch)
-{
- int len = 1;
- if (ch <= 0x7F) {
- buf[0] = (char) ch;
- } else if (ch <= 0x07FF) {
- buf[0] = (char) ((ch >> 6) | 0xC0);
- buf[1] = (char) ((ch & 0x3F) | 0x80);
- len++;
- } else if (ch <= 0xFFFF) {
- buf[0] = (char) ((ch >> 12) | 0xE0);
- buf[1] = (char) (((ch >> 6) & 0x3F) | 0x80);
- buf[2] = (char) ((ch & 0x3F) | 0x80);
- len += 2;
- } else if (ch <= 0x1fffff) {
- buf[0] =(char) ((ch >> 18) | 0xF0);
- buf[1] =(char) (((ch >> 12) & 0x3F) | 0x80);
- buf[2] =(char) (((ch >> 6) & 0x3F) | 0x80);
- buf[3] =(char) ((ch & 0x3F) | 0x80);
- len += 3;
- } else {
- buf[0] = '?';
- }
- return len;
-}
-
-#ifdef HAVE_RUBY_ENCODING_H
-static VALUE CEncoding_ASCII_8BIT, CEncoding_UTF_8, CEncoding_UTF_16BE,
- CEncoding_UTF_16LE, CEncoding_UTF_32BE, CEncoding_UTF_32LE;
-static ID i_encoding, i_encode, i_encode_bang, i_force_encoding;
-#else
-static ID i_iconv;
-#endif
-
-static VALUE mJSON, mExt, cParser, eParserError, eNestingError;
-static VALUE CNaN, CInfinity, CMinusInfinity;
-
-static ID i_json_creatable_p, i_json_create, i_create_id, i_create_additions,
- i_chr, i_max_nesting, i_allow_nan, i_symbolize_names, i_object_class,
- i_array_class, i_key_p, i_deep_const_get, i_match, i_match_string;
-
-
-#line 108 "parser.rl"
-
-
-
-#line 90 "parser.c"
-static const int JSON_object_start = 1;
-static const int JSON_object_first_final = 27;
-static const int JSON_object_error = 0;
-
-static const int JSON_object_en_main = 1;
-
-
-#line 144 "parser.rl"
-
-
-static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
- VALUE last_name = Qnil;
- VALUE object_class = json->object_class;
-
- if (json->max_nesting && json->current_nesting > json->max_nesting) {
- rb_raise(eNestingError, "nesting of %d is too deep", json->current_nesting);
- }
-
- *result = NIL_P(object_class) ? rb_hash_new() : rb_class_new_instance(0, 0, object_class);
-
-
-#line 114 "parser.c"
- {
- cs = JSON_object_start;
- }
-
-#line 159 "parser.rl"
-
-#line 121 "parser.c"
- {
- if ( p == pe )
- goto _test_eof;
- switch ( cs )
- {
-case 1:
- if ( (*p) == 123 )
- goto st2;
- goto st0;
-st0:
-cs = 0;
- goto _out;
-st2:
- if ( ++p == pe )
- goto _test_eof2;
-case 2:
- switch( (*p) ) {
- case 13: goto st2;
- case 32: goto st2;
- case 34: goto tr2;
- case 47: goto st23;
- case 125: goto tr4;
- }
- if ( 9 <= (*p) && (*p) <= 10 )
- goto st2;
- goto st0;
-tr2:
-#line 127 "parser.rl"
- {
- char *np;
- json->parsing_name = 1;
- np = JSON_parse_string(json, p, pe, &last_name);
- json->parsing_name = 0;
- if (np == NULL) { p--; {p++; cs = 3; goto _out;} } else {p = (( np))-1;}
- }
- goto st3;
-st3:
- if ( ++p == pe )
- goto _test_eof3;
-case 3:
-#line 162 "parser.c"
- switch( (*p) ) {
- case 13: goto st3;
- case 32: goto st3;
- case 47: goto st4;
- case 58: goto st8;
- }
- if ( 9 <= (*p) && (*p) <= 10 )
- goto st3;
- goto st0;
-st4:
- if ( ++p == pe )
- goto _test_eof4;
-case 4:
- switch( (*p) ) {
- case 42: goto st5;
- case 47: goto st7;
- }
- goto st0;
-st5:
- if ( ++p == pe )
- goto _test_eof5;
-case 5:
- if ( (*p) == 42 )
- goto st6;
- goto st5;
-st6:
- if ( ++p == pe )
- goto _test_eof6;
-case 6:
- switch( (*p) ) {
- case 42: goto st6;
- case 47: goto st3;
- }
- goto st5;
-st7:
- if ( ++p == pe )
- goto _test_eof7;
-case 7:
- if ( (*p) == 10 )
- goto st3;
- goto st7;
-st8:
- if ( ++p == pe )
- goto _test_eof8;
-case 8:
- switch( (*p) ) {
- case 13: goto st8;
- case 32: goto st8;
- case 34: goto tr11;
- case 45: goto tr11;
- case 47: goto st19;
- case 73: goto tr11;
- case 78: goto tr11;
- case 91: goto tr11;
- case 102: goto tr11;
- case 110: goto tr11;
- case 116: goto tr11;
- case 123: goto tr11;
- }
- if ( (*p) > 10 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr11;
- } else if ( (*p) >= 9 )
- goto st8;
- goto st0;
-tr11:
-#line 116 "parser.rl"
- {
- VALUE v = Qnil;
- char *np = JSON_parse_value(json, p, pe, &v);
- if (np == NULL) {
- p--; {p++; cs = 9; goto _out;}
- } else {
- rb_hash_aset(*result, last_name, v);
- {p = (( np))-1;}
- }
- }
- goto st9;
-st9:
- if ( ++p == pe )
- goto _test_eof9;
-case 9:
-#line 245 "parser.c"
- switch( (*p) ) {
- case 13: goto st9;
- case 32: goto st9;
- case 44: goto st10;
- case 47: goto st15;
- case 125: goto tr4;
- }
- if ( 9 <= (*p) && (*p) <= 10 )
- goto st9;
- goto st0;
-st10:
- if ( ++p == pe )
- goto _test_eof10;
-case 10:
- switch( (*p) ) {
- case 13: goto st10;
- case 32: goto st10;
- case 34: goto tr2;
- case 47: goto st11;
- }
- if ( 9 <= (*p) && (*p) <= 10 )
- goto st10;
- goto st0;
-st11:
- if ( ++p == pe )
- goto _test_eof11;
-case 11:
- switch( (*p) ) {
- case 42: goto st12;
- case 47: goto st14;
- }
- goto st0;
-st12:
- if ( ++p == pe )
- goto _test_eof12;
-case 12:
- if ( (*p) == 42 )
- goto st13;
- goto st12;
-st13:
- if ( ++p == pe )
- goto _test_eof13;
-case 13:
- switch( (*p) ) {
- case 42: goto st13;
- case 47: goto st10;
- }
- goto st12;
-st14:
- if ( ++p == pe )
- goto _test_eof14;
-case 14:
- if ( (*p) == 10 )
- goto st10;
- goto st14;
-st15:
- if ( ++p == pe )
- goto _test_eof15;
-case 15:
- switch( (*p) ) {
- case 42: goto st16;
- case 47: goto st18;
- }
- goto st0;
-st16:
- if ( ++p == pe )
- goto _test_eof16;
-case 16:
- if ( (*p) == 42 )
- goto st17;
- goto st16;
-st17:
- if ( ++p == pe )
- goto _test_eof17;
-case 17:
- switch( (*p) ) {
- case 42: goto st17;
- case 47: goto st9;
- }
- goto st16;
-st18:
- if ( ++p == pe )
- goto _test_eof18;
-case 18:
- if ( (*p) == 10 )
- goto st9;
- goto st18;
-tr4:
-#line 135 "parser.rl"
- { p--; {p++; cs = 27; goto _out;} }
- goto st27;
-st27:
- if ( ++p == pe )
- goto _test_eof27;
-case 27:
-#line 341 "parser.c"
- goto st0;
-st19:
- if ( ++p == pe )
- goto _test_eof19;
-case 19:
- switch( (*p) ) {
- case 42: goto st20;
- case 47: goto st22;
- }
- goto st0;
-st20:
- if ( ++p == pe )
- goto _test_eof20;
-case 20:
- if ( (*p) == 42 )
- goto st21;
- goto st20;
-st21:
- if ( ++p == pe )
- goto _test_eof21;
-case 21:
- switch( (*p) ) {
- case 42: goto st21;
- case 47: goto st8;
- }
- goto st20;
-st22:
- if ( ++p == pe )
- goto _test_eof22;
-case 22:
- if ( (*p) == 10 )
- goto st8;
- goto st22;
-st23:
- if ( ++p == pe )
- goto _test_eof23;
-case 23:
- switch( (*p) ) {
- case 42: goto st24;
- case 47: goto st26;
- }
- goto st0;
-st24:
- if ( ++p == pe )
- goto _test_eof24;
-case 24:
- if ( (*p) == 42 )
- goto st25;
- goto st24;
-st25:
- if ( ++p == pe )
- goto _test_eof25;
-case 25:
- switch( (*p) ) {
- case 42: goto st25;
- case 47: goto st2;
- }
- goto st24;
-st26:
- if ( ++p == pe )
- goto _test_eof26;
-case 26:
- if ( (*p) == 10 )
- goto st2;
- goto st26;
- }
- _test_eof2: cs = 2; goto _test_eof;
- _test_eof3: cs = 3; goto _test_eof;
- _test_eof4: cs = 4; goto _test_eof;
- _test_eof5: cs = 5; goto _test_eof;
- _test_eof6: cs = 6; goto _test_eof;
- _test_eof7: cs = 7; goto _test_eof;
- _test_eof8: cs = 8; goto _test_eof;
- _test_eof9: cs = 9; goto _test_eof;
- _test_eof10: cs = 10; goto _test_eof;
- _test_eof11: cs = 11; goto _test_eof;
- _test_eof12: cs = 12; goto _test_eof;
- _test_eof13: cs = 13; goto _test_eof;
- _test_eof14: cs = 14; goto _test_eof;
- _test_eof15: cs = 15; goto _test_eof;
- _test_eof16: cs = 16; goto _test_eof;
- _test_eof17: cs = 17; goto _test_eof;
- _test_eof18: cs = 18; goto _test_eof;
- _test_eof27: cs = 27; goto _test_eof;
- _test_eof19: cs = 19; goto _test_eof;
- _test_eof20: cs = 20; goto _test_eof;
- _test_eof21: cs = 21; goto _test_eof;
- _test_eof22: cs = 22; goto _test_eof;
- _test_eof23: cs = 23; goto _test_eof;
- _test_eof24: cs = 24; goto _test_eof;
- _test_eof25: cs = 25; goto _test_eof;
- _test_eof26: cs = 26; goto _test_eof;
-
- _test_eof: {}
- _out: {}
- }
-
-#line 160 "parser.rl"
-
- if (cs >= JSON_object_first_final) {
- if (json->create_additions) {
- VALUE klassname = rb_hash_aref(*result, json->create_id);
- if (!NIL_P(klassname)) {
- VALUE klass = rb_funcall(mJSON, i_deep_const_get, 1, klassname);
- if (RTEST(rb_funcall(klass, i_json_creatable_p, 0))) {
- *result = rb_funcall(klass, i_json_create, 1, *result);
- }
- }
- }
- return p + 1;
- } else {
- return NULL;
- }
-}
-
-
-#line 458 "parser.c"
-static const int JSON_value_start = 1;
-static const int JSON_value_first_final = 21;
-static const int JSON_value_error = 0;
-
-static const int JSON_value_en_main = 1;
-
-
-#line 258 "parser.rl"
-
-
-static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
-
-
-#line 474 "parser.c"
- {
- cs = JSON_value_start;
- }
-
-#line 265 "parser.rl"
-
-#line 481 "parser.c"
- {
- if ( p == pe )
- goto _test_eof;
- switch ( cs )
- {
-case 1:
- switch( (*p) ) {
- case 34: goto tr0;
- case 45: goto tr2;
- case 73: goto st2;
- case 78: goto st9;
- case 91: goto tr5;
- case 102: goto st11;
- case 110: goto st15;
- case 116: goto st18;
- case 123: goto tr9;
- }
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr2;
- goto st0;
-st0:
-cs = 0;
- goto _out;
-tr0:
-#line 206 "parser.rl"
- {
- char *np = JSON_parse_string(json, p, pe, result);
- if (np == NULL) { p--; {p++; cs = 21; goto _out;} } else {p = (( np))-1;}
- }
- goto st21;
-tr2:
-#line 211 "parser.rl"
- {
- char *np;
- if(pe > p + 9 && !strncmp(MinusInfinity, p, 9)) {
- if (json->allow_nan) {
- *result = CMinusInfinity;
- {p = (( p + 10))-1;}
- p--; {p++; cs = 21; goto _out;}
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p);
- }
- }
- np = JSON_parse_float(json, p, pe, result);
- if (np != NULL) {p = (( np))-1;}
- np = JSON_parse_integer(json, p, pe, result);
- if (np != NULL) {p = (( np))-1;}
- p--; {p++; cs = 21; goto _out;}
- }
- goto st21;
-tr5:
-#line 229 "parser.rl"
- {
- char *np;
- json->current_nesting++;
- np = JSON_parse_array(json, p, pe, result);
- json->current_nesting--;
- if (np == NULL) { p--; {p++; cs = 21; goto _out;} } else {p = (( np))-1;}
- }
- goto st21;
-tr9:
-#line 237 "parser.rl"
- {
- char *np;
- json->current_nesting++;
- np = JSON_parse_object(json, p, pe, result);
- json->current_nesting--;
- if (np == NULL) { p--; {p++; cs = 21; goto _out;} } else {p = (( np))-1;}
- }
- goto st21;
-tr16:
-#line 199 "parser.rl"
- {
- if (json->allow_nan) {
- *result = CInfinity;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p - 8);
- }
- }
- goto st21;
-tr18:
-#line 192 "parser.rl"
- {
- if (json->allow_nan) {
- *result = CNaN;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p - 2);
- }
- }
- goto st21;
-tr22:
-#line 186 "parser.rl"
- {
- *result = Qfalse;
- }
- goto st21;
-tr25:
-#line 183 "parser.rl"
- {
- *result = Qnil;
- }
- goto st21;
-tr28:
-#line 189 "parser.rl"
- {
- *result = Qtrue;
- }
- goto st21;
-st21:
- if ( ++p == pe )
- goto _test_eof21;
-case 21:
-#line 245 "parser.rl"
- { p--; {p++; cs = 21; goto _out;} }
-#line 596 "parser.c"
- goto st0;
-st2:
- if ( ++p == pe )
- goto _test_eof2;
-case 2:
- if ( (*p) == 110 )
- goto st3;
- goto st0;
-st3:
- if ( ++p == pe )
- goto _test_eof3;
-case 3:
- if ( (*p) == 102 )
- goto st4;
- goto st0;
-st4:
- if ( ++p == pe )
- goto _test_eof4;
-case 4:
- if ( (*p) == 105 )
- goto st5;
- goto st0;
-st5:
- if ( ++p == pe )
- goto _test_eof5;
-case 5:
- if ( (*p) == 110 )
- goto st6;
- goto st0;
-st6:
- if ( ++p == pe )
- goto _test_eof6;
-case 6:
- if ( (*p) == 105 )
- goto st7;
- goto st0;
-st7:
- if ( ++p == pe )
- goto _test_eof7;
-case 7:
- if ( (*p) == 116 )
- goto st8;
- goto st0;
-st8:
- if ( ++p == pe )
- goto _test_eof8;
-case 8:
- if ( (*p) == 121 )
- goto tr16;
- goto st0;
-st9:
- if ( ++p == pe )
- goto _test_eof9;
-case 9:
- if ( (*p) == 97 )
- goto st10;
- goto st0;
-st10:
- if ( ++p == pe )
- goto _test_eof10;
-case 10:
- if ( (*p) == 78 )
- goto tr18;
- goto st0;
-st11:
- if ( ++p == pe )
- goto _test_eof11;
-case 11:
- if ( (*p) == 97 )
- goto st12;
- goto st0;
-st12:
- if ( ++p == pe )
- goto _test_eof12;
-case 12:
- if ( (*p) == 108 )
- goto st13;
- goto st0;
-st13:
- if ( ++p == pe )
- goto _test_eof13;
-case 13:
- if ( (*p) == 115 )
- goto st14;
- goto st0;
-st14:
- if ( ++p == pe )
- goto _test_eof14;
-case 14:
- if ( (*p) == 101 )
- goto tr22;
- goto st0;
-st15:
- if ( ++p == pe )
- goto _test_eof15;
-case 15:
- if ( (*p) == 117 )
- goto st16;
- goto st0;
-st16:
- if ( ++p == pe )
- goto _test_eof16;
-case 16:
- if ( (*p) == 108 )
- goto st17;
- goto st0;
-st17:
- if ( ++p == pe )
- goto _test_eof17;
-case 17:
- if ( (*p) == 108 )
- goto tr25;
- goto st0;
-st18:
- if ( ++p == pe )
- goto _test_eof18;
-case 18:
- if ( (*p) == 114 )
- goto st19;
- goto st0;
-st19:
- if ( ++p == pe )
- goto _test_eof19;
-case 19:
- if ( (*p) == 117 )
- goto st20;
- goto st0;
-st20:
- if ( ++p == pe )
- goto _test_eof20;
-case 20:
- if ( (*p) == 101 )
- goto tr28;
- goto st0;
- }
- _test_eof21: cs = 21; goto _test_eof;
- _test_eof2: cs = 2; goto _test_eof;
- _test_eof3: cs = 3; goto _test_eof;
- _test_eof4: cs = 4; goto _test_eof;
- _test_eof5: cs = 5; goto _test_eof;
- _test_eof6: cs = 6; goto _test_eof;
- _test_eof7: cs = 7; goto _test_eof;
- _test_eof8: cs = 8; goto _test_eof;
- _test_eof9: cs = 9; goto _test_eof;
- _test_eof10: cs = 10; goto _test_eof;
- _test_eof11: cs = 11; goto _test_eof;
- _test_eof12: cs = 12; goto _test_eof;
- _test_eof13: cs = 13; goto _test_eof;
- _test_eof14: cs = 14; goto _test_eof;
- _test_eof15: cs = 15; goto _test_eof;
- _test_eof16: cs = 16; goto _test_eof;
- _test_eof17: cs = 17; goto _test_eof;
- _test_eof18: cs = 18; goto _test_eof;
- _test_eof19: cs = 19; goto _test_eof;
- _test_eof20: cs = 20; goto _test_eof;
-
- _test_eof: {}
- _out: {}
- }
-
-#line 266 "parser.rl"
-
- if (cs >= JSON_value_first_final) {
- return p;
- } else {
- return NULL;
- }
-}
-
-
-#line 767 "parser.c"
-static const int JSON_integer_start = 1;
-static const int JSON_integer_first_final = 5;
-static const int JSON_integer_error = 0;
-
-static const int JSON_integer_en_main = 1;
-
-
-#line 282 "parser.rl"
-
-
-static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
-
-
-#line 783 "parser.c"
- {
- cs = JSON_integer_start;
- }
-
-#line 289 "parser.rl"
- json->memo = p;
-
-#line 791 "parser.c"
- {
- if ( p == pe )
- goto _test_eof;
- switch ( cs )
- {
-case 1:
- switch( (*p) ) {
- case 45: goto st2;
- case 48: goto st3;
- }
- if ( 49 <= (*p) && (*p) <= 57 )
- goto st4;
- goto st0;
-st0:
-cs = 0;
- goto _out;
-st2:
- if ( ++p == pe )
- goto _test_eof2;
-case 2:
- if ( (*p) == 48 )
- goto st3;
- if ( 49 <= (*p) && (*p) <= 57 )
- goto st4;
- goto st0;
-st3:
- if ( ++p == pe )
- goto _test_eof3;
-case 3:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st0;
- goto tr4;
-tr4:
-#line 279 "parser.rl"
- { p--; {p++; cs = 5; goto _out;} }
- goto st5;
-st5:
- if ( ++p == pe )
- goto _test_eof5;
-case 5:
-#line 832 "parser.c"
- goto st0;
-st4:
- if ( ++p == pe )
- goto _test_eof4;
-case 4:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st4;
- goto tr4;
- }
- _test_eof2: cs = 2; goto _test_eof;
- _test_eof3: cs = 3; goto _test_eof;
- _test_eof5: cs = 5; goto _test_eof;
- _test_eof4: cs = 4; goto _test_eof;
-
- _test_eof: {}
- _out: {}
- }
-
-#line 291 "parser.rl"
-
- if (cs >= JSON_integer_first_final) {
- long len = p - json->memo;
- *result = rb_Integer(rb_str_new(json->memo, len));
- return p + 1;
- } else {
- return NULL;
- }
-}
-
-
-#line 863 "parser.c"
-static const int JSON_float_start = 1;
-static const int JSON_float_first_final = 10;
-static const int JSON_float_error = 0;
-
-static const int JSON_float_en_main = 1;
-
-
-#line 313 "parser.rl"
-
-
-static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
-
-
-#line 879 "parser.c"
- {
- cs = JSON_float_start;
- }
-
-#line 320 "parser.rl"
- json->memo = p;
-
-#line 887 "parser.c"
- {
- if ( p == pe )
- goto _test_eof;
- switch ( cs )
- {
-case 1:
- switch( (*p) ) {
- case 45: goto st2;
- case 48: goto st3;
- }
- if ( 49 <= (*p) && (*p) <= 57 )
- goto st9;
- goto st0;
-st0:
-cs = 0;
- goto _out;
-st2:
- if ( ++p == pe )
- goto _test_eof2;
-case 2:
- if ( (*p) == 48 )
- goto st3;
- if ( 49 <= (*p) && (*p) <= 57 )
- goto st9;
- goto st0;
-st3:
- if ( ++p == pe )
- goto _test_eof3;
-case 3:
- switch( (*p) ) {
- case 46: goto st4;
- case 69: goto st6;
- case 101: goto st6;
- }
- goto st0;
-st4:
- if ( ++p == pe )
- goto _test_eof4;
-case 4:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st5;
- goto st0;
-st5:
- if ( ++p == pe )
- goto _test_eof5;
-case 5:
- switch( (*p) ) {
- case 69: goto st6;
- case 101: goto st6;
- }
- if ( (*p) > 46 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st5;
- } else if ( (*p) >= 45 )
- goto st0;
- goto tr7;
-tr7:
-#line 307 "parser.rl"
- { p--; {p++; cs = 10; goto _out;} }
- goto st10;
-st10:
- if ( ++p == pe )
- goto _test_eof10;
-case 10:
-#line 952 "parser.c"
- goto st0;
-st6:
- if ( ++p == pe )
- goto _test_eof6;
-case 6:
- switch( (*p) ) {
- case 43: goto st7;
- case 45: goto st7;
- }
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st8;
- goto st0;
-st7:
- if ( ++p == pe )
- goto _test_eof7;
-case 7:
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st8;
- goto st0;
-st8:
- if ( ++p == pe )
- goto _test_eof8;
-case 8:
- switch( (*p) ) {
- case 69: goto st0;
- case 101: goto st0;
- }
- if ( (*p) > 46 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st8;
- } else if ( (*p) >= 45 )
- goto st0;
- goto tr7;
-st9:
- if ( ++p == pe )
- goto _test_eof9;
-case 9:
- switch( (*p) ) {
- case 46: goto st4;
- case 69: goto st6;
- case 101: goto st6;
- }
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st9;
- goto st0;
- }
- _test_eof2: cs = 2; goto _test_eof;
- _test_eof3: cs = 3; goto _test_eof;
- _test_eof4: cs = 4; goto _test_eof;
- _test_eof5: cs = 5; goto _test_eof;
- _test_eof10: cs = 10; goto _test_eof;
- _test_eof6: cs = 6; goto _test_eof;
- _test_eof7: cs = 7; goto _test_eof;
- _test_eof8: cs = 8; goto _test_eof;
- _test_eof9: cs = 9; goto _test_eof;
-
- _test_eof: {}
- _out: {}
- }
-
-#line 322 "parser.rl"
-
- if (cs >= JSON_float_first_final) {
- long len = p - json->memo;
- *result = rb_Float(rb_str_new(json->memo, len));
- return p + 1;
- } else {
- return NULL;
- }
-}
-
-
-
-#line 1026 "parser.c"
-static const int JSON_array_start = 1;
-static const int JSON_array_first_final = 17;
-static const int JSON_array_error = 0;
-
-static const int JSON_array_en_main = 1;
-
-
-#line 358 "parser.rl"
-
-
-static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
- VALUE array_class = json->array_class;
-
- if (json->max_nesting && json->current_nesting > json->max_nesting) {
- rb_raise(eNestingError, "nesting of %d is too deep", json->current_nesting);
- }
- *result = NIL_P(array_class) ? rb_ary_new() : rb_class_new_instance(0, 0, array_class);
-
-
-#line 1048 "parser.c"
- {
- cs = JSON_array_start;
- }
-
-#line 371 "parser.rl"
-
-#line 1055 "parser.c"
- {
- if ( p == pe )
- goto _test_eof;
- switch ( cs )
- {
-case 1:
- if ( (*p) == 91 )
- goto st2;
- goto st0;
-st0:
-cs = 0;
- goto _out;
-st2:
- if ( ++p == pe )
- goto _test_eof2;
-case 2:
- switch( (*p) ) {
- case 13: goto st2;
- case 32: goto st2;
- case 34: goto tr2;
- case 45: goto tr2;
- case 47: goto st13;
- case 73: goto tr2;
- case 78: goto tr2;
- case 91: goto tr2;
- case 93: goto tr4;
- case 102: goto tr2;
- case 110: goto tr2;
- case 116: goto tr2;
- case 123: goto tr2;
- }
- if ( (*p) > 10 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr2;
- } else if ( (*p) >= 9 )
- goto st2;
- goto st0;
-tr2:
-#line 339 "parser.rl"
- {
- VALUE v = Qnil;
- char *np = JSON_parse_value(json, p, pe, &v);
- if (np == NULL) {
- p--; {p++; cs = 3; goto _out;}
- } else {
- rb_ary_push(*result, v);
- {p = (( np))-1;}
- }
- }
- goto st3;
-st3:
- if ( ++p == pe )
- goto _test_eof3;
-case 3:
-#line 1110 "parser.c"
- switch( (*p) ) {
- case 13: goto st3;
- case 32: goto st3;
- case 44: goto st4;
- case 47: goto st9;
- case 93: goto tr4;
- }
- if ( 9 <= (*p) && (*p) <= 10 )
- goto st3;
- goto st0;
-st4:
- if ( ++p == pe )
- goto _test_eof4;
-case 4:
- switch( (*p) ) {
- case 13: goto st4;
- case 32: goto st4;
- case 34: goto tr2;
- case 45: goto tr2;
- case 47: goto st5;
- case 73: goto tr2;
- case 78: goto tr2;
- case 91: goto tr2;
- case 102: goto tr2;
- case 110: goto tr2;
- case 116: goto tr2;
- case 123: goto tr2;
- }
- if ( (*p) > 10 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto tr2;
- } else if ( (*p) >= 9 )
- goto st4;
- goto st0;
-st5:
- if ( ++p == pe )
- goto _test_eof5;
-case 5:
- switch( (*p) ) {
- case 42: goto st6;
- case 47: goto st8;
- }
- goto st0;
-st6:
- if ( ++p == pe )
- goto _test_eof6;
-case 6:
- if ( (*p) == 42 )
- goto st7;
- goto st6;
-st7:
- if ( ++p == pe )
- goto _test_eof7;
-case 7:
- switch( (*p) ) {
- case 42: goto st7;
- case 47: goto st4;
- }
- goto st6;
-st8:
- if ( ++p == pe )
- goto _test_eof8;
-case 8:
- if ( (*p) == 10 )
- goto st4;
- goto st8;
-st9:
- if ( ++p == pe )
- goto _test_eof9;
-case 9:
- switch( (*p) ) {
- case 42: goto st10;
- case 47: goto st12;
- }
- goto st0;
-st10:
- if ( ++p == pe )
- goto _test_eof10;
-case 10:
- if ( (*p) == 42 )
- goto st11;
- goto st10;
-st11:
- if ( ++p == pe )
- goto _test_eof11;
-case 11:
- switch( (*p) ) {
- case 42: goto st11;
- case 47: goto st3;
- }
- goto st10;
-st12:
- if ( ++p == pe )
- goto _test_eof12;
-case 12:
- if ( (*p) == 10 )
- goto st3;
- goto st12;
-tr4:
-#line 350 "parser.rl"
- { p--; {p++; cs = 17; goto _out;} }
- goto st17;
-st17:
- if ( ++p == pe )
- goto _test_eof17;
-case 17:
-#line 1217 "parser.c"
- goto st0;
-st13:
- if ( ++p == pe )
- goto _test_eof13;
-case 13:
- switch( (*p) ) {
- case 42: goto st14;
- case 47: goto st16;
- }
- goto st0;
-st14:
- if ( ++p == pe )
- goto _test_eof14;
-case 14:
- if ( (*p) == 42 )
- goto st15;
- goto st14;
-st15:
- if ( ++p == pe )
- goto _test_eof15;
-case 15:
- switch( (*p) ) {
- case 42: goto st15;
- case 47: goto st2;
- }
- goto st14;
-st16:
- if ( ++p == pe )
- goto _test_eof16;
-case 16:
- if ( (*p) == 10 )
- goto st2;
- goto st16;
- }
- _test_eof2: cs = 2; goto _test_eof;
- _test_eof3: cs = 3; goto _test_eof;
- _test_eof4: cs = 4; goto _test_eof;
- _test_eof5: cs = 5; goto _test_eof;
- _test_eof6: cs = 6; goto _test_eof;
- _test_eof7: cs = 7; goto _test_eof;
- _test_eof8: cs = 8; goto _test_eof;
- _test_eof9: cs = 9; goto _test_eof;
- _test_eof10: cs = 10; goto _test_eof;
- _test_eof11: cs = 11; goto _test_eof;
- _test_eof12: cs = 12; goto _test_eof;
- _test_eof17: cs = 17; goto _test_eof;
- _test_eof13: cs = 13; goto _test_eof;
- _test_eof14: cs = 14; goto _test_eof;
- _test_eof15: cs = 15; goto _test_eof;
- _test_eof16: cs = 16; goto _test_eof;
-
- _test_eof: {}
- _out: {}
- }
-
-#line 372 "parser.rl"
-
- if(cs >= JSON_array_first_final) {
- return p + 1;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p);
- return NULL;
- }
-}
-
-static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
-{
- char *p = string, *pe = string, *unescape;
- int unescape_len;
-
- while (pe < stringEnd) {
- if (*pe == '\\') {
- unescape = (char *) "?";
- unescape_len = 1;
- if (pe > p) rb_str_buf_cat(result, p, pe - p);
- switch (*++pe) {
- case 'n':
- unescape = (char *) "\n";
- break;
- case 'r':
- unescape = (char *) "\r";
- break;
- case 't':
- unescape = (char *) "\t";
- break;
- case '"':
- unescape = (char *) "\"";
- break;
- case '\\':
- unescape = (char *) "\\";
- break;
- case 'b':
- unescape = (char *) "\b";
- break;
- case 'f':
- unescape = (char *) "\f";
- break;
- case 'u':
- if (pe > stringEnd - 4) {
- return Qnil;
- } else {
- char buf[4];
- UTF32 ch = unescape_unicode((unsigned char *) ++pe);
- pe += 3;
- if (UNI_SUR_HIGH_START == (ch & 0xFC00)) {
- pe++;
- if (pe > stringEnd - 6) return Qnil;
- if (pe[0] == '\\' && pe[1] == 'u') {
- UTF32 sur = unescape_unicode((unsigned char *) pe + 2);
- ch = (((ch & 0x3F) << 10) | ((((ch >> 6) & 0xF) + 1) << 16)
- | (sur & 0x3FF));
- pe += 5;
- } else {
- unescape = (char *) "?";
- break;
- }
- }
- unescape_len = convert_UTF32_to_UTF8(buf, ch);
- unescape = buf;
- }
- break;
- default:
- p = pe;
- continue;
- }
- rb_str_buf_cat(result, unescape, unescape_len);
- p = ++pe;
- } else {
- pe++;
- }
- }
- rb_str_buf_cat(result, p, pe - p);
- return result;
-}
-
-
-#line 1354 "parser.c"
-static const int JSON_string_start = 1;
-static const int JSON_string_first_final = 8;
-static const int JSON_string_error = 0;
-
-static const int JSON_string_en_main = 1;
-
-
-#line 471 "parser.rl"
-
-
-static int
-match_i(VALUE regexp, VALUE klass, VALUE memo)
-{
- if (regexp == Qundef) return ST_STOP;
- if (RTEST(rb_funcall(klass, i_json_creatable_p, 0)) &&
- RTEST(rb_funcall(regexp, i_match, 1, rb_ary_entry(memo, 0)))) {
- rb_ary_push(memo, klass);
- return ST_STOP;
- }
- return ST_CONTINUE;
-}
-
-static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
- VALUE match_string;
-
- *result = rb_str_buf_new(0);
-
-#line 1384 "parser.c"
- {
- cs = JSON_string_start;
- }
-
-#line 492 "parser.rl"
- json->memo = p;
-
-#line 1392 "parser.c"
- {
- if ( p == pe )
- goto _test_eof;
- switch ( cs )
- {
-case 1:
- if ( (*p) == 34 )
- goto st2;
- goto st0;
-st0:
-cs = 0;
- goto _out;
-st2:
- if ( ++p == pe )
- goto _test_eof2;
-case 2:
- switch( (*p) ) {
- case 34: goto tr2;
- case 92: goto st3;
- }
- if ( 0 <= (*p) && (*p) <= 31 )
- goto st0;
- goto st2;
-tr2:
-#line 457 "parser.rl"
- {
- *result = json_string_unescape(*result, json->memo + 1, p);
- if (NIL_P(*result)) {
- p--;
- {p++; cs = 8; goto _out;}
- } else {
- FORCE_UTF8(*result);
- {p = (( p + 1))-1;}
- }
- }
-#line 468 "parser.rl"
- { p--; {p++; cs = 8; goto _out;} }
- goto st8;
-st8:
- if ( ++p == pe )
- goto _test_eof8;
-case 8:
-#line 1435 "parser.c"
- goto st0;
-st3:
- if ( ++p == pe )
- goto _test_eof3;
-case 3:
- if ( (*p) == 117 )
- goto st4;
- if ( 0 <= (*p) && (*p) <= 31 )
- goto st0;
- goto st2;
-st4:
- if ( ++p == pe )
- goto _test_eof4;
-case 4:
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st5;
- } else if ( (*p) > 70 ) {
- if ( 97 <= (*p) && (*p) <= 102 )
- goto st5;
- } else
- goto st5;
- goto st0;
-st5:
- if ( ++p == pe )
- goto _test_eof5;
-case 5:
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st6;
- } else if ( (*p) > 70 ) {
- if ( 97 <= (*p) && (*p) <= 102 )
- goto st6;
- } else
- goto st6;
- goto st0;
-st6:
- if ( ++p == pe )
- goto _test_eof6;
-case 6:
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st7;
- } else if ( (*p) > 70 ) {
- if ( 97 <= (*p) && (*p) <= 102 )
- goto st7;
- } else
- goto st7;
- goto st0;
-st7:
- if ( ++p == pe )
- goto _test_eof7;
-case 7:
- if ( (*p) < 65 ) {
- if ( 48 <= (*p) && (*p) <= 57 )
- goto st2;
- } else if ( (*p) > 70 ) {
- if ( 97 <= (*p) && (*p) <= 102 )
- goto st2;
- } else
- goto st2;
- goto st0;
- }
- _test_eof2: cs = 2; goto _test_eof;
- _test_eof8: cs = 8; goto _test_eof;
- _test_eof3: cs = 3; goto _test_eof;
- _test_eof4: cs = 4; goto _test_eof;
- _test_eof5: cs = 5; goto _test_eof;
- _test_eof6: cs = 6; goto _test_eof;
- _test_eof7: cs = 7; goto _test_eof;
-
- _test_eof: {}
- _out: {}
- }
-
-#line 494 "parser.rl"
-
- if (json->create_additions && RTEST(match_string = json->match_string)) {
- VALUE klass;
- VALUE memo = rb_ary_new2(2);
- rb_ary_push(memo, *result);
- rb_hash_foreach(match_string, match_i, memo);
- klass = rb_ary_entry(memo, 1);
- if (RTEST(klass)) {
- *result = rb_funcall(klass, i_json_create, 1, *result);
- }
- }
-
- if (json->symbolize_names && json->parsing_name) {
- *result = rb_str_intern(*result);
- }
- if (cs >= JSON_string_first_final) {
- return p + 1;
- } else {
- return NULL;
- }
-}
-
-
-
-#line 1536 "parser.c"
-static const int JSON_start = 1;
-static const int JSON_first_final = 10;
-static const int JSON_error = 0;
-
-static const int JSON_en_main = 1;
-
-
-#line 542 "parser.rl"
-
-
-/*
- * Document-class: JSON::Ext::Parser
- *
- * This is the JSON parser implemented as a C extension. It can be configured
- * to be used by setting
- *
- * JSON.parser = JSON::Ext::Parser
- *
- * with the method parser= in JSON.
- *
- */
-
-static VALUE convert_encoding(VALUE source)
-{
- char *ptr = RSTRING_PTR(source);
- long len = RSTRING_LEN(source);
- if (len < 2) {
- rb_raise(eParserError, "A JSON text must at least contain two octets!");
- }
-#ifdef HAVE_RUBY_ENCODING_H
- {
- VALUE encoding = rb_funcall(source, i_encoding, 0);
- if (encoding == CEncoding_ASCII_8BIT) {
- if (len >= 4 && ptr[0] == 0 && ptr[1] == 0 && ptr[2] == 0) {
- source = rb_str_dup(source);
- rb_funcall(source, i_force_encoding, 1, CEncoding_UTF_32BE);
- source = rb_funcall(source, i_encode_bang, 1, CEncoding_UTF_8);
- } else if (len >= 4 && ptr[0] == 0 && ptr[2] == 0) {
- source = rb_str_dup(source);
- rb_funcall(source, i_force_encoding, 1, CEncoding_UTF_16BE);
- source = rb_funcall(source, i_encode_bang, 1, CEncoding_UTF_8);
- } else if (len >= 4 && ptr[1] == 0 && ptr[2] == 0 && ptr[3] == 0) {
- source = rb_str_dup(source);
- rb_funcall(source, i_force_encoding, 1, CEncoding_UTF_32LE);
- source = rb_funcall(source, i_encode_bang, 1, CEncoding_UTF_8);
- } else if (len >= 4 && ptr[1] == 0 && ptr[3] == 0) {
- source = rb_str_dup(source);
- rb_funcall(source, i_force_encoding, 1, CEncoding_UTF_16LE);
- source = rb_funcall(source, i_encode_bang, 1, CEncoding_UTF_8);
- } else {
- FORCE_UTF8(source);
- }
- } else {
- source = rb_funcall(source, i_encode, 1, CEncoding_UTF_8);
- }
- }
-#else
- if (len >= 4 && ptr[0] == 0 && ptr[1] == 0 && ptr[2] == 0) {
- source = rb_funcall(mJSON, i_iconv, 3, rb_str_new2("utf-8"), rb_str_new2("utf-32be"), source);
- } else if (len >= 4 && ptr[0] == 0 && ptr[2] == 0) {
- source = rb_funcall(mJSON, i_iconv, 3, rb_str_new2("utf-8"), rb_str_new2("utf-16be"), source);
- } else if (len >= 4 && ptr[1] == 0 && ptr[2] == 0 && ptr[3] == 0) {
- source = rb_funcall(mJSON, i_iconv, 3, rb_str_new2("utf-8"), rb_str_new2("utf-32le"), source);
- } else if (len >= 4 && ptr[1] == 0 && ptr[3] == 0) {
- source = rb_funcall(mJSON, i_iconv, 3, rb_str_new2("utf-8"), rb_str_new2("utf-16le"), source);
- }
-#endif
- return source;
-}
-
-/*
- * call-seq: new(source, opts => {})
- *
- * Creates a new JSON::Ext::Parser instance for the string _source_.
- *
- * Creates a new JSON::Ext::Parser instance for the string _source_.
- *
- * It will be configured by the _opts_ hash. _opts_ can have the following
- * keys:
- *
- * _opts_ can have the following keys:
- * * *max_nesting*: The maximum depth of nesting allowed in the parsed data
- * structures. Disable depth checking with :max_nesting => false|nil|0, it
- * defaults to 19.
- * * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
- * defiance of RFC 4627 to be parsed by the Parser. This option defaults to
- * false.
- * * *symbolize_names*: If set to true, returns symbols for the names
- * (keys) in a JSON object. Otherwise strings are returned, which is also
- * the default.
- * * *create_additions*: If set to false, the Parser doesn't create
- * additions even if a matchin class and create_id was found. This option
- * defaults to true.
- * * *object_class*: Defaults to Hash
- * * *array_class*: Defaults to Array
- */
-static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
-{
- char *ptr;
- long len;
- VALUE source, opts;
- GET_PARSER;
- rb_scan_args(argc, argv, "11", &source, &opts);
- source = convert_encoding(StringValue(source));
- ptr = RSTRING_PTR(source);
- len = RSTRING_LEN(source);
- if (!NIL_P(opts)) {
- opts = rb_convert_type(opts, T_HASH, "Hash", "to_hash");
- if (NIL_P(opts)) {
- rb_raise(rb_eArgError, "opts needs to be like a hash");
- } else {
- VALUE tmp = ID2SYM(i_max_nesting);
- if (option_given_p(opts, tmp)) {
- VALUE max_nesting = rb_hash_aref(opts, tmp);
- if (RTEST(max_nesting)) {
- Check_Type(max_nesting, T_FIXNUM);
- json->max_nesting = FIX2INT(max_nesting);
- } else {
- json->max_nesting = 0;
- }
- } else {
- json->max_nesting = 19;
- }
- tmp = ID2SYM(i_allow_nan);
- if (option_given_p(opts, tmp)) {
- json->allow_nan = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
- } else {
- json->allow_nan = 0;
- }
- tmp = ID2SYM(i_symbolize_names);
- if (option_given_p(opts, tmp)) {
- json->symbolize_names = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
- } else {
- json->symbolize_names = 0;
- }
- tmp = ID2SYM(i_create_additions);
- if (option_given_p(opts, tmp)) {
- json->create_additions = RTEST(rb_hash_aref(opts, tmp));
- } else {
- json->create_additions = 1;
- }
- tmp = ID2SYM(i_create_id);
- if (option_given_p(opts, tmp)) {
- json->create_id = rb_hash_aref(opts, tmp);
- } else {
- json->create_id = rb_funcall(mJSON, i_create_id, 0);
- }
- tmp = ID2SYM(i_object_class);
- if (option_given_p(opts, tmp)) {
- json->object_class = rb_hash_aref(opts, tmp);
- } else {
- json->object_class = Qnil;
- }
- tmp = ID2SYM(i_array_class);
- if (option_given_p(opts, tmp)) {
- json->array_class = rb_hash_aref(opts, tmp);
- } else {
- json->array_class = Qnil;
- }
- tmp = ID2SYM(i_match_string);
- if (option_given_p(opts, tmp)) {
- VALUE match_string = rb_hash_aref(opts, tmp);
- json->match_string = RTEST(match_string) ? match_string : Qnil;
- } else {
- json->match_string = Qnil;
- }
- }
- } else {
- json->max_nesting = 19;
- json->allow_nan = 0;
- json->create_additions = 1;
- json->create_id = rb_funcall(mJSON, i_create_id, 0);
- json->object_class = Qnil;
- json->array_class = Qnil;
- }
- json->current_nesting = 0;
- json->len = len;
- json->source = ptr;
- json->Vsource = source;
- return self;
-}
-
-/*
- * call-seq: parse()
- *
- * Parses the current JSON text _source_ and returns the complete data
- * structure as a result.
- */
-static VALUE cParser_parse(VALUE self)
-{
- char *p, *pe;
- int cs = EVIL;
- VALUE result = Qnil;
- GET_PARSER;
-
-
-#line 1733 "parser.c"
- {
- cs = JSON_start;
- }
-
-#line 730 "parser.rl"
- p = json->source;
- pe = p + json->len;
-
-#line 1742 "parser.c"
- {
- if ( p == pe )
- goto _test_eof;
- switch ( cs )
- {
-st1:
- if ( ++p == pe )
- goto _test_eof1;
-case 1:
- switch( (*p) ) {
- case 13: goto st1;
- case 32: goto st1;
- case 47: goto st2;
- case 91: goto tr3;
- case 123: goto tr4;
- }
- if ( 9 <= (*p) && (*p) <= 10 )
- goto st1;
- goto st0;
-st0:
-cs = 0;
- goto _out;
-st2:
- if ( ++p == pe )
- goto _test_eof2;
-case 2:
- switch( (*p) ) {
- case 42: goto st3;
- case 47: goto st5;
- }
- goto st0;
-st3:
- if ( ++p == pe )
- goto _test_eof3;
-case 3:
- if ( (*p) == 42 )
- goto st4;
- goto st3;
-st4:
- if ( ++p == pe )
- goto _test_eof4;
-case 4:
- switch( (*p) ) {
- case 42: goto st4;
- case 47: goto st1;
- }
- goto st3;
-st5:
- if ( ++p == pe )
- goto _test_eof5;
-case 5:
- if ( (*p) == 10 )
- goto st1;
- goto st5;
-tr3:
-#line 531 "parser.rl"
- {
- char *np;
- json->current_nesting = 1;
- np = JSON_parse_array(json, p, pe, &result);
- if (np == NULL) { p--; {p++; cs = 10; goto _out;} } else {p = (( np))-1;}
- }
- goto st10;
-tr4:
-#line 524 "parser.rl"
- {
- char *np;
- json->current_nesting = 1;
- np = JSON_parse_object(json, p, pe, &result);
- if (np == NULL) { p--; {p++; cs = 10; goto _out;} } else {p = (( np))-1;}
- }
- goto st10;
-st10:
- if ( ++p == pe )
- goto _test_eof10;
-case 10:
-#line 1819 "parser.c"
- switch( (*p) ) {
- case 13: goto st10;
- case 32: goto st10;
- case 47: goto st6;
- }
- if ( 9 <= (*p) && (*p) <= 10 )
- goto st10;
- goto st0;
-st6:
- if ( ++p == pe )
- goto _test_eof6;
-case 6:
- switch( (*p) ) {
- case 42: goto st7;
- case 47: goto st9;
- }
- goto st0;
-st7:
- if ( ++p == pe )
- goto _test_eof7;
-case 7:
- if ( (*p) == 42 )
- goto st8;
- goto st7;
-st8:
- if ( ++p == pe )
- goto _test_eof8;
-case 8:
- switch( (*p) ) {
- case 42: goto st8;
- case 47: goto st10;
- }
- goto st7;
-st9:
- if ( ++p == pe )
- goto _test_eof9;
-case 9:
- if ( (*p) == 10 )
- goto st10;
- goto st9;
- }
- _test_eof1: cs = 1; goto _test_eof;
- _test_eof2: cs = 2; goto _test_eof;
- _test_eof3: cs = 3; goto _test_eof;
- _test_eof4: cs = 4; goto _test_eof;
- _test_eof5: cs = 5; goto _test_eof;
- _test_eof10: cs = 10; goto _test_eof;
- _test_eof6: cs = 6; goto _test_eof;
- _test_eof7: cs = 7; goto _test_eof;
- _test_eof8: cs = 8; goto _test_eof;
- _test_eof9: cs = 9; goto _test_eof;
-
- _test_eof: {}
- _out: {}
- }
-
-#line 733 "parser.rl"
-
- if (cs >= JSON_first_final && p == pe) {
- return result;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p);
- return Qnil;
- }
-}
-
-static JSON_Parser *JSON_allocate()
-{
- JSON_Parser *json = ALLOC(JSON_Parser);
- MEMZERO(json, JSON_Parser, 1);
- return json;
-}
-
-static void JSON_mark(JSON_Parser *json)
-{
- rb_gc_mark_maybe(json->Vsource);
- rb_gc_mark_maybe(json->create_id);
- rb_gc_mark_maybe(json->object_class);
- rb_gc_mark_maybe(json->array_class);
- rb_gc_mark_maybe(json->match_string);
-}
-
-static void JSON_free(JSON_Parser *json)
-{
- ruby_xfree(json);
-}
-
-static VALUE cJSON_parser_s_allocate(VALUE klass)
-{
- JSON_Parser *json = JSON_allocate();
- return Data_Wrap_Struct(klass, JSON_mark, JSON_free, json);
-}
-
-/*
- * call-seq: source()
- *
- * Returns a copy of the current _source_ string, that was used to construct
- * this Parser.
- */
-static VALUE cParser_source(VALUE self)
-{
- GET_PARSER;
- return rb_str_dup(json->Vsource);
-}
-
-void Init_parser()
-{
- rb_require("json/common");
- mJSON = rb_define_module("JSON");
- mExt = rb_define_module_under(mJSON, "Ext");
- cParser = rb_define_class_under(mExt, "Parser", rb_cObject);
- eParserError = rb_path2class("JSON::ParserError");
- eNestingError = rb_path2class("JSON::NestingError");
- rb_define_alloc_func(cParser, cJSON_parser_s_allocate);
- rb_define_method(cParser, "initialize", cParser_initialize, -1);
- rb_define_method(cParser, "parse", cParser_parse, 0);
- rb_define_method(cParser, "source", cParser_source, 0);
-
- CNaN = rb_const_get(mJSON, rb_intern("NaN"));
- CInfinity = rb_const_get(mJSON, rb_intern("Infinity"));
- CMinusInfinity = rb_const_get(mJSON, rb_intern("MinusInfinity"));
-
- i_json_creatable_p = rb_intern("json_creatable?");
- i_json_create = rb_intern("json_create");
- i_create_id = rb_intern("create_id");
- i_create_additions = rb_intern("create_additions");
- i_chr = rb_intern("chr");
- i_max_nesting = rb_intern("max_nesting");
- i_allow_nan = rb_intern("allow_nan");
- i_symbolize_names = rb_intern("symbolize_names");
- i_object_class = rb_intern("object_class");
- i_array_class = rb_intern("array_class");
- i_match = rb_intern("match");
- i_match_string = rb_intern("match_string");
- i_key_p = rb_intern("key?");
- i_deep_const_get = rb_intern("deep_const_get");
-#ifdef HAVE_RUBY_ENCODING_H
- CEncoding_UTF_8 = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-8"));
- CEncoding_UTF_16BE = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-16be"));
- CEncoding_UTF_16LE = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-16le"));
- CEncoding_UTF_32BE = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-32be"));
- CEncoding_UTF_32LE = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-32le"));
- CEncoding_ASCII_8BIT = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("ascii-8bit"));
- i_encoding = rb_intern("encoding");
- i_encode = rb_intern("encode");
- i_encode_bang = rb_intern("encode!");
- i_force_encoding = rb_intern("force_encoding");
-#else
- i_iconv = rb_intern("iconv");
-#endif
-}
diff --git a/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.h b/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.h
deleted file mode 100644
index ed48035de..000000000
--- a/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef _PARSER_H_
-#define _PARSER_H_
-
-#include "ruby.h"
-
-#if HAVE_RE_H
-#include "re.h"
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include "ruby/encoding.h"
-#define FORCE_UTF8(obj) rb_enc_associate((obj), rb_utf8_encoding())
-#else
-#define FORCE_UTF8(obj)
-#endif
-#ifdef HAVE_RUBY_ST_H
-#include "ruby/st.h"
-#else
-#include "st.h"
-#endif
-
-#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
-
-/* unicode */
-
-typedef unsigned long UTF32; /* at least 32 bits */
-typedef unsigned short UTF16; /* at least 16 bits */
-typedef unsigned char UTF8; /* typically 8 bits */
-
-#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
-#define UNI_SUR_HIGH_START (UTF32)0xD800
-#define UNI_SUR_HIGH_END (UTF32)0xDBFF
-#define UNI_SUR_LOW_START (UTF32)0xDC00
-#define UNI_SUR_LOW_END (UTF32)0xDFFF
-
-typedef struct JSON_ParserStruct {
- VALUE Vsource;
- char *source;
- long len;
- char *memo;
- VALUE create_id;
- int max_nesting;
- int current_nesting;
- int allow_nan;
- int parsing_name;
- int symbolize_names;
- VALUE object_class;
- VALUE array_class;
- int create_additions;
- VALUE match_string;
-} JSON_Parser;
-
-#define GET_PARSER \
- JSON_Parser *json; \
- Data_Get_Struct(self, JSON_Parser, json)
-
-#define MinusInfinity "-Infinity"
-#define EVIL 0x666
-
-static UTF32 unescape_unicode(const unsigned char *p);
-static int convert_UTF32_to_UTF8(char *buf, UTF32 ch);
-static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result);
-static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result);
-static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result);
-static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result);
-static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result);
-static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd);
-static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *result);
-static VALUE convert_encoding(VALUE source);
-static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self);
-static VALUE cParser_parse(VALUE self);
-static JSON_Parser *JSON_allocate();
-static void JSON_mark(JSON_Parser *json);
-static void JSON_free(JSON_Parser *json);
-static VALUE cJSON_parser_s_allocate(VALUE klass);
-static VALUE cParser_source(VALUE self);
-
-#endif
diff --git a/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.rl b/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.rl
deleted file mode 100644
index 586269877..000000000
--- a/vendor/gems/json-1.5.1/ext/json/ext/parser/parser.rl
+++ /dev/null
@@ -1,826 +0,0 @@
-#include "parser.h"
-
-/* unicode */
-
-static const char digit_values[256] = {
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1,
- -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1
-};
-
-static UTF32 unescape_unicode(const unsigned char *p)
-{
- char b;
- UTF32 result = 0;
- b = digit_values[p[0]];
- if (b < 0) return UNI_REPLACEMENT_CHAR;
- result = (result << 4) | b;
- b = digit_values[p[1]];
- result = (result << 4) | b;
- if (b < 0) return UNI_REPLACEMENT_CHAR;
- b = digit_values[p[2]];
- result = (result << 4) | b;
- if (b < 0) return UNI_REPLACEMENT_CHAR;
- b = digit_values[p[3]];
- result = (result << 4) | b;
- if (b < 0) return UNI_REPLACEMENT_CHAR;
- return result;
-}
-
-static int convert_UTF32_to_UTF8(char *buf, UTF32 ch)
-{
- int len = 1;
- if (ch <= 0x7F) {
- buf[0] = (char) ch;
- } else if (ch <= 0x07FF) {
- buf[0] = (char) ((ch >> 6) | 0xC0);
- buf[1] = (char) ((ch & 0x3F) | 0x80);
- len++;
- } else if (ch <= 0xFFFF) {
- buf[0] = (char) ((ch >> 12) | 0xE0);
- buf[1] = (char) (((ch >> 6) & 0x3F) | 0x80);
- buf[2] = (char) ((ch & 0x3F) | 0x80);
- len += 2;
- } else if (ch <= 0x1fffff) {
- buf[0] =(char) ((ch >> 18) | 0xF0);
- buf[1] =(char) (((ch >> 12) & 0x3F) | 0x80);
- buf[2] =(char) (((ch >> 6) & 0x3F) | 0x80);
- buf[3] =(char) ((ch & 0x3F) | 0x80);
- len += 3;
- } else {
- buf[0] = '?';
- }
- return len;
-}
-
-#ifdef HAVE_RUBY_ENCODING_H
-static VALUE CEncoding_ASCII_8BIT, CEncoding_UTF_8, CEncoding_UTF_16BE,
- CEncoding_UTF_16LE, CEncoding_UTF_32BE, CEncoding_UTF_32LE;
-static ID i_encoding, i_encode, i_encode_bang, i_force_encoding;
-#else
-static ID i_iconv;
-#endif
-
-static VALUE mJSON, mExt, cParser, eParserError, eNestingError;
-static VALUE CNaN, CInfinity, CMinusInfinity;
-
-static ID i_json_creatable_p, i_json_create, i_create_id, i_create_additions,
- i_chr, i_max_nesting, i_allow_nan, i_symbolize_names, i_object_class,
- i_array_class, i_key_p, i_deep_const_get, i_match, i_match_string;
-
-%%{
- machine JSON_common;
-
- cr = '\n';
- cr_neg = [^\n];
- ws = [ \t\r\n];
- c_comment = '/*' ( any* - (any* '*/' any* ) ) '*/';
- cpp_comment = '//' cr_neg* cr;
- comment = c_comment | cpp_comment;
- ignore = ws | comment;
- name_separator = ':';
- value_separator = ',';
- Vnull = 'null';
- Vfalse = 'false';
- Vtrue = 'true';
- VNaN = 'NaN';
- VInfinity = 'Infinity';
- VMinusInfinity = '-Infinity';
- begin_value = [nft"\-[{NI] | digit;
- begin_object = '{';
- end_object = '}';
- begin_array = '[';
- end_array = ']';
- begin_string = '"';
- begin_name = begin_string;
- begin_number = digit | '-';
-}%%
-
-%%{
- machine JSON_object;
- include JSON_common;
-
- write data;
-
- action parse_value {
- VALUE v = Qnil;
- char *np = JSON_parse_value(json, fpc, pe, &v);
- if (np == NULL) {
- fhold; fbreak;
- } else {
- rb_hash_aset(*result, last_name, v);
- fexec np;
- }
- }
-
- action parse_name {
- char *np;
- json->parsing_name = 1;
- np = JSON_parse_string(json, fpc, pe, &last_name);
- json->parsing_name = 0;
- if (np == NULL) { fhold; fbreak; } else fexec np;
- }
-
- action exit { fhold; fbreak; }
-
- a_pair = ignore* begin_name >parse_name
- ignore* name_separator ignore*
- begin_value >parse_value;
-
- main := begin_object
- (a_pair (ignore* value_separator a_pair)*)?
- ignore* end_object @exit;
-}%%
-
-static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
- VALUE last_name = Qnil;
- VALUE object_class = json->object_class;
-
- if (json->max_nesting && json->current_nesting > json->max_nesting) {
- rb_raise(eNestingError, "nesting of %d is too deep", json->current_nesting);
- }
-
- *result = NIL_P(object_class) ? rb_hash_new() : rb_class_new_instance(0, 0, object_class);
-
- %% write init;
- %% write exec;
-
- if (cs >= JSON_object_first_final) {
- if (json->create_additions) {
- VALUE klassname = rb_hash_aref(*result, json->create_id);
- if (!NIL_P(klassname)) {
- VALUE klass = rb_funcall(mJSON, i_deep_const_get, 1, klassname);
- if (RTEST(rb_funcall(klass, i_json_creatable_p, 0))) {
- *result = rb_funcall(klass, i_json_create, 1, *result);
- }
- }
- }
- return p + 1;
- } else {
- return NULL;
- }
-}
-
-%%{
- machine JSON_value;
- include JSON_common;
-
- write data;
-
- action parse_null {
- *result = Qnil;
- }
- action parse_false {
- *result = Qfalse;
- }
- action parse_true {
- *result = Qtrue;
- }
- action parse_nan {
- if (json->allow_nan) {
- *result = CNaN;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p - 2);
- }
- }
- action parse_infinity {
- if (json->allow_nan) {
- *result = CInfinity;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p - 8);
- }
- }
- action parse_string {
- char *np = JSON_parse_string(json, fpc, pe, result);
- if (np == NULL) { fhold; fbreak; } else fexec np;
- }
-
- action parse_number {
- char *np;
- if(pe > fpc + 9 && !strncmp(MinusInfinity, fpc, 9)) {
- if (json->allow_nan) {
- *result = CMinusInfinity;
- fexec p + 10;
- fhold; fbreak;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p);
- }
- }
- np = JSON_parse_float(json, fpc, pe, result);
- if (np != NULL) fexec np;
- np = JSON_parse_integer(json, fpc, pe, result);
- if (np != NULL) fexec np;
- fhold; fbreak;
- }
-
- action parse_array {
- char *np;
- json->current_nesting++;
- np = JSON_parse_array(json, fpc, pe, result);
- json->current_nesting--;
- if (np == NULL) { fhold; fbreak; } else fexec np;
- }
-
- action parse_object {
- char *np;
- json->current_nesting++;
- np = JSON_parse_object(json, fpc, pe, result);
- json->current_nesting--;
- if (np == NULL) { fhold; fbreak; } else fexec np;
- }
-
- action exit { fhold; fbreak; }
-
-main := (
- Vnull @parse_null |
- Vfalse @parse_false |
- Vtrue @parse_true |
- VNaN @parse_nan |
- VInfinity @parse_infinity |
- begin_number >parse_number |
- begin_string >parse_string |
- begin_array >parse_array |
- begin_object >parse_object
- ) %*exit;
-}%%
-
-static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
-
- %% write init;
- %% write exec;
-
- if (cs >= JSON_value_first_final) {
- return p;
- } else {
- return NULL;
- }
-}
-
-%%{
- machine JSON_integer;
-
- write data;
-
- action exit { fhold; fbreak; }
-
- main := '-'? ('0' | [1-9][0-9]*) (^[0-9] @exit);
-}%%
-
-static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
-
- %% write init;
- json->memo = p;
- %% write exec;
-
- if (cs >= JSON_integer_first_final) {
- long len = p - json->memo;
- *result = rb_Integer(rb_str_new(json->memo, len));
- return p + 1;
- } else {
- return NULL;
- }
-}
-
-%%{
- machine JSON_float;
- include JSON_common;
-
- write data;
-
- action exit { fhold; fbreak; }
-
- main := '-'? (
- (('0' | [1-9][0-9]*) '.' [0-9]+ ([Ee] [+\-]?[0-9]+)?)
- | (('0' | [1-9][0-9]*) ([Ee] [+\-]?[0-9]+))
- ) (^[0-9Ee.\-] @exit );
-}%%
-
-static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
-
- %% write init;
- json->memo = p;
- %% write exec;
-
- if (cs >= JSON_float_first_final) {
- long len = p - json->memo;
- *result = rb_Float(rb_str_new(json->memo, len));
- return p + 1;
- } else {
- return NULL;
- }
-}
-
-
-%%{
- machine JSON_array;
- include JSON_common;
-
- write data;
-
- action parse_value {
- VALUE v = Qnil;
- char *np = JSON_parse_value(json, fpc, pe, &v);
- if (np == NULL) {
- fhold; fbreak;
- } else {
- rb_ary_push(*result, v);
- fexec np;
- }
- }
-
- action exit { fhold; fbreak; }
-
- next_element = value_separator ignore* begin_value >parse_value;
-
- main := begin_array ignore*
- ((begin_value >parse_value ignore*)
- (ignore* next_element ignore*)*)?
- end_array @exit;
-}%%
-
-static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
- VALUE array_class = json->array_class;
-
- if (json->max_nesting && json->current_nesting > json->max_nesting) {
- rb_raise(eNestingError, "nesting of %d is too deep", json->current_nesting);
- }
- *result = NIL_P(array_class) ? rb_ary_new() : rb_class_new_instance(0, 0, array_class);
-
- %% write init;
- %% write exec;
-
- if(cs >= JSON_array_first_final) {
- return p + 1;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p);
- return NULL;
- }
-}
-
-static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
-{
- char *p = string, *pe = string, *unescape;
- int unescape_len;
-
- while (pe < stringEnd) {
- if (*pe == '\\') {
- unescape = (char *) "?";
- unescape_len = 1;
- if (pe > p) rb_str_buf_cat(result, p, pe - p);
- switch (*++pe) {
- case 'n':
- unescape = (char *) "\n";
- break;
- case 'r':
- unescape = (char *) "\r";
- break;
- case 't':
- unescape = (char *) "\t";
- break;
- case '"':
- unescape = (char *) "\"";
- break;
- case '\\':
- unescape = (char *) "\\";
- break;
- case 'b':
- unescape = (char *) "\b";
- break;
- case 'f':
- unescape = (char *) "\f";
- break;
- case 'u':
- if (pe > stringEnd - 4) {
- return Qnil;
- } else {
- char buf[4];
- UTF32 ch = unescape_unicode((unsigned char *) ++pe);
- pe += 3;
- if (UNI_SUR_HIGH_START == (ch & 0xFC00)) {
- pe++;
- if (pe > stringEnd - 6) return Qnil;
- if (pe[0] == '\\' && pe[1] == 'u') {
- UTF32 sur = unescape_unicode((unsigned char *) pe + 2);
- ch = (((ch & 0x3F) << 10) | ((((ch >> 6) & 0xF) + 1) << 16)
- | (sur & 0x3FF));
- pe += 5;
- } else {
- unescape = (char *) "?";
- break;
- }
- }
- unescape_len = convert_UTF32_to_UTF8(buf, ch);
- unescape = buf;
- }
- break;
- default:
- p = pe;
- continue;
- }
- rb_str_buf_cat(result, unescape, unescape_len);
- p = ++pe;
- } else {
- pe++;
- }
- }
- rb_str_buf_cat(result, p, pe - p);
- return result;
-}
-
-%%{
- machine JSON_string;
- include JSON_common;
-
- write data;
-
- action parse_string {
- *result = json_string_unescape(*result, json->memo + 1, p);
- if (NIL_P(*result)) {
- fhold;
- fbreak;
- } else {
- FORCE_UTF8(*result);
- fexec p + 1;
- }
- }
-
- action exit { fhold; fbreak; }
-
- main := '"' ((^(["\\] | 0..0x1f) | '\\'["\\/bfnrt] | '\\u'[0-9a-fA-F]{4} | '\\'^(["\\/bfnrtu]|0..0x1f))* %parse_string) '"' @exit;
-}%%
-
-static int
-match_i(VALUE regexp, VALUE klass, VALUE memo)
-{
- if (regexp == Qundef) return ST_STOP;
- if (RTEST(rb_funcall(klass, i_json_creatable_p, 0)) &&
- RTEST(rb_funcall(regexp, i_match, 1, rb_ary_entry(memo, 0)))) {
- rb_ary_push(memo, klass);
- return ST_STOP;
- }
- return ST_CONTINUE;
-}
-
-static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *result)
-{
- int cs = EVIL;
- VALUE match_string;
-
- *result = rb_str_buf_new(0);
- %% write init;
- json->memo = p;
- %% write exec;
-
- if (json->create_additions && RTEST(match_string = json->match_string)) {
- VALUE klass;
- VALUE memo = rb_ary_new2(2);
- rb_ary_push(memo, *result);
- rb_hash_foreach(match_string, match_i, memo);
- klass = rb_ary_entry(memo, 1);
- if (RTEST(klass)) {
- *result = rb_funcall(klass, i_json_create, 1, *result);
- }
- }
-
- if (json->symbolize_names && json->parsing_name) {
- *result = rb_str_intern(*result);
- }
- if (cs >= JSON_string_first_final) {
- return p + 1;
- } else {
- return NULL;
- }
-}
-
-
-%%{
- machine JSON;
-
- write data;
-
- include JSON_common;
-
- action parse_object {
- char *np;
- json->current_nesting = 1;
- np = JSON_parse_object(json, fpc, pe, &result);
- if (np == NULL) { fhold; fbreak; } else fexec np;
- }
-
- action parse_array {
- char *np;
- json->current_nesting = 1;
- np = JSON_parse_array(json, fpc, pe, &result);
- if (np == NULL) { fhold; fbreak; } else fexec np;
- }
-
- main := ignore* (
- begin_object >parse_object |
- begin_array >parse_array
- ) ignore*;
-}%%
-
-/*
- * Document-class: JSON::Ext::Parser
- *
- * This is the JSON parser implemented as a C extension. It can be configured
- * to be used by setting
- *
- * JSON.parser = JSON::Ext::Parser
- *
- * with the method parser= in JSON.
- *
- */
-
-static VALUE convert_encoding(VALUE source)
-{
- char *ptr = RSTRING_PTR(source);
- long len = RSTRING_LEN(source);
- if (len < 2) {
- rb_raise(eParserError, "A JSON text must at least contain two octets!");
- }
-#ifdef HAVE_RUBY_ENCODING_H
- {
- VALUE encoding = rb_funcall(source, i_encoding, 0);
- if (encoding == CEncoding_ASCII_8BIT) {
- if (len >= 4 && ptr[0] == 0 && ptr[1] == 0 && ptr[2] == 0) {
- source = rb_str_dup(source);
- rb_funcall(source, i_force_encoding, 1, CEncoding_UTF_32BE);
- source = rb_funcall(source, i_encode_bang, 1, CEncoding_UTF_8);
- } else if (len >= 4 && ptr[0] == 0 && ptr[2] == 0) {
- source = rb_str_dup(source);
- rb_funcall(source, i_force_encoding, 1, CEncoding_UTF_16BE);
- source = rb_funcall(source, i_encode_bang, 1, CEncoding_UTF_8);
- } else if (len >= 4 && ptr[1] == 0 && ptr[2] == 0 && ptr[3] == 0) {
- source = rb_str_dup(source);
- rb_funcall(source, i_force_encoding, 1, CEncoding_UTF_32LE);
- source = rb_funcall(source, i_encode_bang, 1, CEncoding_UTF_8);
- } else if (len >= 4 && ptr[1] == 0 && ptr[3] == 0) {
- source = rb_str_dup(source);
- rb_funcall(source, i_force_encoding, 1, CEncoding_UTF_16LE);
- source = rb_funcall(source, i_encode_bang, 1, CEncoding_UTF_8);
- } else {
- FORCE_UTF8(source);
- }
- } else {
- source = rb_funcall(source, i_encode, 1, CEncoding_UTF_8);
- }
- }
-#else
- if (len >= 4 && ptr[0] == 0 && ptr[1] == 0 && ptr[2] == 0) {
- source = rb_funcall(mJSON, i_iconv, 3, rb_str_new2("utf-8"), rb_str_new2("utf-32be"), source);
- } else if (len >= 4 && ptr[0] == 0 && ptr[2] == 0) {
- source = rb_funcall(mJSON, i_iconv, 3, rb_str_new2("utf-8"), rb_str_new2("utf-16be"), source);
- } else if (len >= 4 && ptr[1] == 0 && ptr[2] == 0 && ptr[3] == 0) {
- source = rb_funcall(mJSON, i_iconv, 3, rb_str_new2("utf-8"), rb_str_new2("utf-32le"), source);
- } else if (len >= 4 && ptr[1] == 0 && ptr[3] == 0) {
- source = rb_funcall(mJSON, i_iconv, 3, rb_str_new2("utf-8"), rb_str_new2("utf-16le"), source);
- }
-#endif
- return source;
-}
-
-/*
- * call-seq: new(source, opts => {})
- *
- * Creates a new JSON::Ext::Parser instance for the string _source_.
- *
- * Creates a new JSON::Ext::Parser instance for the string _source_.
- *
- * It will be configured by the _opts_ hash. _opts_ can have the following
- * keys:
- *
- * _opts_ can have the following keys:
- * * *max_nesting*: The maximum depth of nesting allowed in the parsed data
- * structures. Disable depth checking with :max_nesting => false|nil|0, it
- * defaults to 19.
- * * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
- * defiance of RFC 4627 to be parsed by the Parser. This option defaults to
- * false.
- * * *symbolize_names*: If set to true, returns symbols for the names
- * (keys) in a JSON object. Otherwise strings are returned, which is also
- * the default.
- * * *create_additions*: If set to false, the Parser doesn't create
- * additions even if a matchin class and create_id was found. This option
- * defaults to true.
- * * *object_class*: Defaults to Hash
- * * *array_class*: Defaults to Array
- */
-static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
-{
- char *ptr;
- long len;
- VALUE source, opts;
- GET_PARSER;
- rb_scan_args(argc, argv, "11", &source, &opts);
- source = convert_encoding(StringValue(source));
- ptr = RSTRING_PTR(source);
- len = RSTRING_LEN(source);
- if (!NIL_P(opts)) {
- opts = rb_convert_type(opts, T_HASH, "Hash", "to_hash");
- if (NIL_P(opts)) {
- rb_raise(rb_eArgError, "opts needs to be like a hash");
- } else {
- VALUE tmp = ID2SYM(i_max_nesting);
- if (option_given_p(opts, tmp)) {
- VALUE max_nesting = rb_hash_aref(opts, tmp);
- if (RTEST(max_nesting)) {
- Check_Type(max_nesting, T_FIXNUM);
- json->max_nesting = FIX2INT(max_nesting);
- } else {
- json->max_nesting = 0;
- }
- } else {
- json->max_nesting = 19;
- }
- tmp = ID2SYM(i_allow_nan);
- if (option_given_p(opts, tmp)) {
- json->allow_nan = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
- } else {
- json->allow_nan = 0;
- }
- tmp = ID2SYM(i_symbolize_names);
- if (option_given_p(opts, tmp)) {
- json->symbolize_names = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0;
- } else {
- json->symbolize_names = 0;
- }
- tmp = ID2SYM(i_create_additions);
- if (option_given_p(opts, tmp)) {
- json->create_additions = RTEST(rb_hash_aref(opts, tmp));
- } else {
- json->create_additions = 1;
- }
- tmp = ID2SYM(i_create_id);
- if (option_given_p(opts, tmp)) {
- json->create_id = rb_hash_aref(opts, tmp);
- } else {
- json->create_id = rb_funcall(mJSON, i_create_id, 0);
- }
- tmp = ID2SYM(i_object_class);
- if (option_given_p(opts, tmp)) {
- json->object_class = rb_hash_aref(opts, tmp);
- } else {
- json->object_class = Qnil;
- }
- tmp = ID2SYM(i_array_class);
- if (option_given_p(opts, tmp)) {
- json->array_class = rb_hash_aref(opts, tmp);
- } else {
- json->array_class = Qnil;
- }
- tmp = ID2SYM(i_match_string);
- if (option_given_p(opts, tmp)) {
- VALUE match_string = rb_hash_aref(opts, tmp);
- json->match_string = RTEST(match_string) ? match_string : Qnil;
- } else {
- json->match_string = Qnil;
- }
- }
- } else {
- json->max_nesting = 19;
- json->allow_nan = 0;
- json->create_additions = 1;
- json->create_id = rb_funcall(mJSON, i_create_id, 0);
- json->object_class = Qnil;
- json->array_class = Qnil;
- }
- json->current_nesting = 0;
- json->len = len;
- json->source = ptr;
- json->Vsource = source;
- return self;
-}
-
-/*
- * call-seq: parse()
- *
- * Parses the current JSON text _source_ and returns the complete data
- * structure as a result.
- */
-static VALUE cParser_parse(VALUE self)
-{
- char *p, *pe;
- int cs = EVIL;
- VALUE result = Qnil;
- GET_PARSER;
-
- %% write init;
- p = json->source;
- pe = p + json->len;
- %% write exec;
-
- if (cs >= JSON_first_final && p == pe) {
- return result;
- } else {
- rb_raise(eParserError, "%u: unexpected token at '%s'", __LINE__, p);
- return Qnil;
- }
-}
-
-static JSON_Parser *JSON_allocate()
-{
- JSON_Parser *json = ALLOC(JSON_Parser);
- MEMZERO(json, JSON_Parser, 1);
- return json;
-}
-
-static void JSON_mark(JSON_Parser *json)
-{
- rb_gc_mark_maybe(json->Vsource);
- rb_gc_mark_maybe(json->create_id);
- rb_gc_mark_maybe(json->object_class);
- rb_gc_mark_maybe(json->array_class);
- rb_gc_mark_maybe(json->match_string);
-}
-
-static void JSON_free(JSON_Parser *json)
-{
- ruby_xfree(json);
-}
-
-static VALUE cJSON_parser_s_allocate(VALUE klass)
-{
- JSON_Parser *json = JSON_allocate();
- return Data_Wrap_Struct(klass, JSON_mark, JSON_free, json);
-}
-
-/*
- * call-seq: source()
- *
- * Returns a copy of the current _source_ string, that was used to construct
- * this Parser.
- */
-static VALUE cParser_source(VALUE self)
-{
- GET_PARSER;
- return rb_str_dup(json->Vsource);
-}
-
-void Init_parser()
-{
- rb_require("json/common");
- mJSON = rb_define_module("JSON");
- mExt = rb_define_module_under(mJSON, "Ext");
- cParser = rb_define_class_under(mExt, "Parser", rb_cObject);
- eParserError = rb_path2class("JSON::ParserError");
- eNestingError = rb_path2class("JSON::NestingError");
- rb_define_alloc_func(cParser, cJSON_parser_s_allocate);
- rb_define_method(cParser, "initialize", cParser_initialize, -1);
- rb_define_method(cParser, "parse", cParser_parse, 0);
- rb_define_method(cParser, "source", cParser_source, 0);
-
- CNaN = rb_const_get(mJSON, rb_intern("NaN"));
- CInfinity = rb_const_get(mJSON, rb_intern("Infinity"));
- CMinusInfinity = rb_const_get(mJSON, rb_intern("MinusInfinity"));
-
- i_json_creatable_p = rb_intern("json_creatable?");
- i_json_create = rb_intern("json_create");
- i_create_id = rb_intern("create_id");
- i_create_additions = rb_intern("create_additions");
- i_chr = rb_intern("chr");
- i_max_nesting = rb_intern("max_nesting");
- i_allow_nan = rb_intern("allow_nan");
- i_symbolize_names = rb_intern("symbolize_names");
- i_object_class = rb_intern("object_class");
- i_array_class = rb_intern("array_class");
- i_match = rb_intern("match");
- i_match_string = rb_intern("match_string");
- i_key_p = rb_intern("key?");
- i_deep_const_get = rb_intern("deep_const_get");
-#ifdef HAVE_RUBY_ENCODING_H
- CEncoding_UTF_8 = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-8"));
- CEncoding_UTF_16BE = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-16be"));
- CEncoding_UTF_16LE = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-16le"));
- CEncoding_UTF_32BE = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-32be"));
- CEncoding_UTF_32LE = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-32le"));
- CEncoding_ASCII_8BIT = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("ascii-8bit"));
- i_encoding = rb_intern("encoding");
- i_encode = rb_intern("encode");
- i_encode_bang = rb_intern("encode!");
- i_force_encoding = rb_intern("force_encoding");
-#else
- i_iconv = rb_intern("iconv");
-#endif
-}
diff --git a/vendor/gems/json-1.5.1/install.rb b/vendor/gems/json-1.5.1/install.rb
deleted file mode 100755
index adf77a0d0..000000000
--- a/vendor/gems/json-1.5.1/install.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'rbconfig'
-require 'fileutils'
-include FileUtils::Verbose
-
-include Config
-
-bindir = CONFIG["bindir"]
-cd 'bin' do
- filename = 'edit_json.rb'
- #install(filename, bindir)
-end
-sitelibdir = CONFIG["sitelibdir"]
-cd 'lib' do
- install('json.rb', sitelibdir)
- mkdir_p File.join(sitelibdir, 'json')
- for file in Dir['json/**/*.{rb,xpm}']
- d = File.join(sitelibdir, file)
- mkdir_p File.dirname(d)
- install(file, d)
- end
- install(File.join('json', 'editor.rb'), File.join(sitelibdir,'json'))
- install(File.join('json', 'json.xpm'), File.join(sitelibdir,'json'))
-end
-warn " *** Installed PURE ruby library."
diff --git a/vendor/gems/json-1.5.1/java/lib/bytelist-1.0.6.jar b/vendor/gems/json-1.5.1/java/lib/bytelist-1.0.6.jar
deleted file mode 100644
index 7918e7ccb..000000000
--- a/vendor/gems/json-1.5.1/java/lib/bytelist-1.0.6.jar
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/json-1.5.1/java/lib/jcodings.jar b/vendor/gems/json-1.5.1/java/lib/jcodings.jar
deleted file mode 100644
index e33fc99c0..000000000
--- a/vendor/gems/json-1.5.1/java/lib/jcodings.jar
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/ByteListTranscoder.java b/vendor/gems/json-1.5.1/java/src/json/ext/ByteListTranscoder.java
deleted file mode 100644
index ed9e54b71..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/ByteListTranscoder.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.exceptions.RaiseException;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.util.ByteList;
-
-/**
- * A class specialized in transcoding a certain String format into another,
- * using UTF-8 ByteLists as both input and output.
- */
-abstract class ByteListTranscoder {
- protected final ThreadContext context;
-
- protected ByteList src;
- protected int srcEnd;
- /** Position where the last read character started */
- protected int charStart;
- /** Position of the next character to read */
- protected int pos;
-
- private ByteList out;
- /**
- * When a character that can be copied straight into the output is found,
- * its index is stored on this variable, and copying is delayed until
- * the sequence of characters that can be copied ends.
- *
- * <p>The variable stores -1 when not in a plain sequence.
- */
- private int quoteStart = -1;
-
- protected ByteListTranscoder(ThreadContext context) {
- this.context = context;
- }
-
- protected void init(ByteList src, ByteList out) {
- this.init(src, 0, src.length(), out);
- }
-
- protected void init(ByteList src, int start, int end, ByteList out) {
- this.src = src;
- this.pos = start;
- this.charStart = start;
- this.srcEnd = end;
- this.out = out;
- }
-
- /**
- * Returns whether there are any characters left to be read.
- */
- protected boolean hasNext() {
- return pos < srcEnd;
- }
-
- /**
- * Returns the next character in the buffer.
- */
- private char next() {
- return src.charAt(pos++);
- }
-
- /**
- * Reads an UTF-8 character from the input and returns its code point,
- * while advancing the input position.
- *
- * <p>Raises an {@link #invalidUtf8()} exception if an invalid byte
- * is found.
- */
- protected int readUtf8Char() {
- charStart = pos;
- char head = next();
- if (head <= 0x7f) { // 0b0xxxxxxx (ASCII)
- return head;
- }
- if (head <= 0xbf) { // 0b10xxxxxx
- throw invalidUtf8(); // tail byte with no head
- }
- if (head <= 0xdf) { // 0b110xxxxx
- ensureMin(1);
- int cp = ((head & 0x1f) << 6)
- | nextPart();
- if (cp < 0x0080) throw invalidUtf8();
- return cp;
- }
- if (head <= 0xef) { // 0b1110xxxx
- ensureMin(2);
- int cp = ((head & 0x0f) << 12)
- | (nextPart() << 6)
- | nextPart();
- if (cp < 0x0800) throw invalidUtf8();
- return cp;
- }
- if (head <= 0xf7) { // 0b11110xxx
- ensureMin(3);
- int cp = ((head & 0x07) << 18)
- | (nextPart() << 12)
- | (nextPart() << 6)
- | nextPart();
- if (!Character.isValidCodePoint(cp)) throw invalidUtf8();
- return cp;
- }
- // 0b11111xxx?
- throw invalidUtf8();
- }
-
- /**
- * Throws a GeneratorError if the input list doesn't have at least this
- * many bytes left.
- */
- protected void ensureMin(int n) {
- if (pos + n > srcEnd) throw incompleteUtf8();
- }
-
- /**
- * Reads the next byte of a multi-byte UTF-8 character and returns its
- * contents (lower 6 bits).
- *
- * <p>Throws a GeneratorError if the byte is not a valid tail.
- */
- private int nextPart() {
- char c = next();
- // tail bytes must be 0b10xxxxxx
- if ((c & 0xc0) != 0x80) throw invalidUtf8();
- return c & 0x3f;
- }
-
-
- protected void quoteStart() {
- if (quoteStart == -1) quoteStart = charStart;
- }
-
- /**
- * When in a sequence of characters that can be copied directly,
- * interrupts the sequence and copies it to the output buffer.
- *
- * @param endPos The offset until which the direct character quoting should
- * occur. You may pass {@link #pos} to quote until the most
- * recently read character, or {@link #charStart} to quote
- * until the character before it.
- */
- protected void quoteStop(int endPos) {
- if (quoteStart != -1) {
- out.append(src, quoteStart, endPos - quoteStart);
- quoteStart = -1;
- }
- }
-
- protected void append(int b) {
- out.append(b);
- }
-
- protected void append(byte[] origin, int start, int length) {
- out.append(origin, start, length);
- }
-
-
- protected abstract RaiseException invalidUtf8();
-
- protected RaiseException incompleteUtf8() {
- return invalidUtf8();
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/Generator.java b/vendor/gems/json-1.5.1/java/src/json/ext/Generator.java
deleted file mode 100644
index 230d68f68..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/Generator.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.Ruby;
-import org.jruby.RubyArray;
-import org.jruby.RubyBignum;
-import org.jruby.RubyBoolean;
-import org.jruby.RubyClass;
-import org.jruby.RubyFixnum;
-import org.jruby.RubyFloat;
-import org.jruby.RubyHash;
-import org.jruby.RubyNumeric;
-import org.jruby.RubyString;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.ByteList;
-
-public final class Generator {
- private Generator() {
- throw new RuntimeException();
- }
-
- /**
- * Encodes the given object as a JSON string, using the given handler.
- */
- static <T extends IRubyObject> RubyString
- generateJson(ThreadContext context, T object,
- Handler<? super T> handler, IRubyObject[] args) {
- Session session = new Session(context, args.length > 0 ? args[0]
- : null);
- return session.infect(handler.generateNew(session, object));
- }
-
- /**
- * Encodes the given object as a JSON string, detecting the appropriate handler
- * for the given object.
- */
- static <T extends IRubyObject> RubyString
- generateJson(ThreadContext context, T object, IRubyObject[] args) {
- Handler<? super T> handler = getHandlerFor(context.getRuntime(), object);
- return generateJson(context, object, handler, args);
- }
-
- /**
- * Encodes the given object as a JSON string, using the appropriate
- * handler if one is found or calling #to_json if not.
- */
- public static <T extends IRubyObject> RubyString
- generateJson(ThreadContext context, T object,
- GeneratorState config) {
- Session session = new Session(context, config);
- Handler<? super T> handler = getHandlerFor(context.getRuntime(), object);
- return handler.generateNew(session, object);
- }
-
- /**
- * Returns the best serialization handler for the given object.
- */
- // Java's generics can't handle this satisfactorily, so I'll just leave
- // the best I could get and ignore the warnings
- @SuppressWarnings("unchecked")
- private static <T extends IRubyObject>
- Handler<? super T> getHandlerFor(Ruby runtime, T object) {
- RubyClass metaClass = object.getMetaClass();
- if (metaClass == runtime.getString()) return (Handler)STRING_HANDLER;
- if (metaClass == runtime.getFixnum()) return (Handler)FIXNUM_HANDLER;
- if (metaClass == runtime.getHash()) return (Handler)HASH_HANDLER;
- if (metaClass == runtime.getArray()) return (Handler)ARRAY_HANDLER;
- if (object.isNil()) return (Handler)NIL_HANDLER;
- if (object == runtime.getTrue()) return (Handler)TRUE_HANDLER;
- if (object == runtime.getFalse()) return (Handler)FALSE_HANDLER;
- if (metaClass == runtime.getFloat()) return (Handler)FLOAT_HANDLER;
- if (metaClass == runtime.getBignum()) return (Handler)BIGNUM_HANDLER;
- return GENERIC_HANDLER;
- }
-
-
- /* Generator context */
-
- /**
- * A class that concentrates all the information that is shared by
- * generators working on a single session.
- *
- * <p>A session is defined as the process of serializing a single root
- * object; any handler directly called by container handlers (arrays and
- * hashes/objects) shares this object with its caller.
- *
- * <p>Note that anything called indirectly (via {@link GENERIC_HANDLER})
- * won't be part of the session.
- */
- static class Session {
- private final ThreadContext context;
- private GeneratorState state;
- private IRubyObject possibleState;
- private RuntimeInfo info;
- private StringEncoder stringEncoder;
-
- private boolean tainted = false;
- private boolean untrusted = false;
-
- Session(ThreadContext context, GeneratorState state) {
- this.context = context;
- this.state = state;
- }
-
- Session(ThreadContext context, IRubyObject possibleState) {
- this.context = context;
- this.possibleState = possibleState == null || possibleState.isNil()
- ? null : possibleState;
- }
-
- public ThreadContext getContext() {
- return context;
- }
-
- public Ruby getRuntime() {
- return context.getRuntime();
- }
-
- public GeneratorState getState() {
- if (state == null) {
- state = GeneratorState.fromState(context, getInfo(), possibleState);
- }
- return state;
- }
-
- public RuntimeInfo getInfo() {
- if (info == null) info = RuntimeInfo.forRuntime(getRuntime());
- return info;
- }
-
- public StringEncoder getStringEncoder() {
- if (stringEncoder == null) {
- stringEncoder = new StringEncoder(context, getState().asciiOnly());
- }
- return stringEncoder;
- }
-
- public void infectBy(IRubyObject object) {
- if (object.isTaint()) tainted = true;
- if (object.isUntrusted()) untrusted = true;
- }
-
- public <T extends IRubyObject> T infect(T object) {
- if (tainted) object.setTaint(true);
- if (untrusted) object.setUntrusted(true);
- return object;
- }
- }
-
-
- /* Handler base classes */
-
- private static abstract class Handler<T extends IRubyObject> {
- /**
- * Returns an estimative of how much space the serialization of the
- * given object will take. Used for allocating enough buffer space
- * before invoking other methods.
- */
- int guessSize(Session session, T object) {
- return 4;
- }
-
- RubyString generateNew(Session session, T object) {
- ByteList buffer = new ByteList(guessSize(session, object));
- generate(session, object, buffer);
- return RubyString.newString(session.getRuntime(), buffer);
- }
-
- abstract void generate(Session session, T object, ByteList buffer);
- }
-
- /**
- * A handler that returns a fixed keyword regardless of the passed object.
- */
- private static class KeywordHandler<T extends IRubyObject>
- extends Handler<T> {
- private final ByteList keyword;
-
- private KeywordHandler(String keyword) {
- this.keyword = new ByteList(ByteList.plain(keyword), false);
- }
-
- @Override
- int guessSize(Session session, T object) {
- return keyword.length();
- }
-
- @Override
- RubyString generateNew(Session session, T object) {
- return RubyString.newStringShared(session.getRuntime(), keyword);
- }
-
- @Override
- void generate(Session session, T object, ByteList buffer) {
- buffer.append(keyword);
- }
- }
-
-
- /* Handlers */
-
- static final Handler<RubyBignum> BIGNUM_HANDLER =
- new Handler<RubyBignum>() {
- @Override
- void generate(Session session, RubyBignum object, ByteList buffer) {
- // JRUBY-4751: RubyBignum.to_s() returns generic object
- // representation (fixed in 1.5, but we maintain backwards
- // compatibility; call to_s(IRubyObject[]) then
- buffer.append(((RubyString)object.to_s(IRubyObject.NULL_ARRAY)).getByteList());
- }
- };
-
- static final Handler<RubyFixnum> FIXNUM_HANDLER =
- new Handler<RubyFixnum>() {
- @Override
- void generate(Session session, RubyFixnum object, ByteList buffer) {
- buffer.append(object.to_s().getByteList());
- }
- };
-
- static final Handler<RubyFloat> FLOAT_HANDLER =
- new Handler<RubyFloat>() {
- @Override
- void generate(Session session, RubyFloat object, ByteList buffer) {
- double value = RubyFloat.num2dbl(object);
-
- if (Double.isInfinite(value) || Double.isNaN(value)) {
- if (!session.getState().allowNaN()) {
- throw Utils.newException(session.getContext(),
- Utils.M_GENERATOR_ERROR,
- object + " not allowed in JSON");
- }
- }
- buffer.append(((RubyString)object.to_s()).getByteList());
- }
- };
-
- static final Handler<RubyArray> ARRAY_HANDLER =
- new Handler<RubyArray>() {
- @Override
- int guessSize(Session session, RubyArray object) {
- GeneratorState state = session.getState();
- int depth = state.getDepth();
- int perItem =
- 4 // prealloc
- + (depth + 1) * state.getIndent().length() // indent
- + 1 + state.getArrayNl().length(); // ',' arrayNl
- return 2 + object.size() * perItem;
- }
-
- @Override
- void generate(Session session, RubyArray object, ByteList buffer) {
- ThreadContext context = session.getContext();
- Ruby runtime = context.getRuntime();
- GeneratorState state = session.getState();
- int depth = state.increaseDepth();
-
- ByteList indentUnit = state.getIndent();
- byte[] shift = Utils.repeat(indentUnit, depth);
-
- ByteList arrayNl = state.getArrayNl();
- byte[] delim = new byte[1 + arrayNl.length()];
- delim[0] = ',';
- System.arraycopy(arrayNl.unsafeBytes(), arrayNl.begin(), delim, 1,
- arrayNl.length());
-
- session.infectBy(object);
-
- buffer.append((byte)'[');
- buffer.append(arrayNl);
- boolean firstItem = true;
- for (int i = 0, t = object.getLength(); i < t; i++) {
- IRubyObject element = object.eltInternal(i);
- session.infectBy(element);
- if (firstItem) {
- firstItem = false;
- } else {
- buffer.append(delim);
- }
- buffer.append(shift);
- Handler<IRubyObject> handler = getHandlerFor(runtime, element);
- handler.generate(session, element, buffer);
- }
-
- state.decreaseDepth();
- if (arrayNl.length() != 0) {
- buffer.append(arrayNl);
- buffer.append(shift, 0, state.getDepth() * indentUnit.length());
- }
-
- buffer.append((byte)']');
- }
- };
-
- static final Handler<RubyHash> HASH_HANDLER =
- new Handler<RubyHash>() {
- @Override
- int guessSize(Session session, RubyHash object) {
- GeneratorState state = session.getState();
- int perItem =
- 12 // key, colon, comma
- + (state.getDepth() + 1) * state.getIndent().length()
- + state.getSpaceBefore().length()
- + state.getSpace().length();
- return 2 + object.size() * perItem;
- }
-
- @Override
- void generate(final Session session, RubyHash object,
- final ByteList buffer) {
- ThreadContext context = session.getContext();
- final Ruby runtime = context.getRuntime();
- final GeneratorState state = session.getState();
- final int depth = state.increaseDepth();
-
- final ByteList objectNl = state.getObjectNl();
- final byte[] indent = Utils.repeat(state.getIndent(), depth);
- final ByteList spaceBefore = state.getSpaceBefore();
- final ByteList space = state.getSpace();
-
- buffer.append((byte)'{');
- buffer.append(objectNl);
- object.visitAll(new RubyHash.Visitor() {
- private boolean firstPair = true;
-
- @Override
- public void visit(IRubyObject key, IRubyObject value) {
- if (firstPair) {
- firstPair = false;
- } else {
- buffer.append((byte)',');
- buffer.append(objectNl);
- }
- if (objectNl.length() != 0) buffer.append(indent);
-
- STRING_HANDLER.generate(session, key.asString(), buffer);
- session.infectBy(key);
-
- buffer.append(spaceBefore);
- buffer.append((byte)':');
- buffer.append(space);
-
- Handler<IRubyObject> valueHandler = getHandlerFor(runtime, value);
- valueHandler.generate(session, value, buffer);
- session.infectBy(value);
- }
- });
- state.decreaseDepth();
- if (objectNl.length() != 0) {
- buffer.append(objectNl);
- if (indent.length != 0) {
- for (int i = 0; i < state.getDepth(); i++) {
- buffer.append(indent);
- }
- }
- }
- buffer.append((byte)'}');
- }
- };
-
- static final Handler<RubyString> STRING_HANDLER =
- new Handler<RubyString>() {
- @Override
- int guessSize(Session session, RubyString object) {
- // for most applications, most strings will be just a set of
- // printable ASCII characters without any escaping, so let's
- // just allocate enough space for that + the quotes
- return 2 + object.getByteList().length();
- }
-
- @Override
- void generate(Session session, RubyString object, ByteList buffer) {
- RuntimeInfo info = session.getInfo();
- RubyString src;
-
- if (info.encodingsSupported() &&
- object.encoding(session.getContext()) != info.utf8) {
- src = (RubyString)object.encode(session.getContext(),
- info.utf8);
- } else {
- src = object;
- }
-
- session.getStringEncoder().encode(src.getByteList(), buffer);
- }
- };
-
- static final Handler<RubyBoolean> TRUE_HANDLER =
- new KeywordHandler<RubyBoolean>("true");
- static final Handler<RubyBoolean> FALSE_HANDLER =
- new KeywordHandler<RubyBoolean>("false");
- static final Handler<IRubyObject> NIL_HANDLER =
- new KeywordHandler<IRubyObject>("null");
-
- /**
- * The default handler (<code>Object#to_json</code>): coerces the object
- * to string using <code>#to_s</code>, and serializes that string.
- */
- static final Handler<IRubyObject> OBJECT_HANDLER =
- new Handler<IRubyObject>() {
- @Override
- RubyString generateNew(Session session, IRubyObject object) {
- RubyString str = object.asString();
- return STRING_HANDLER.generateNew(session, str);
- }
-
- @Override
- void generate(Session session, IRubyObject object, ByteList buffer) {
- RubyString str = object.asString();
- STRING_HANDLER.generate(session, str, buffer);
- }
- };
-
- /**
- * A handler that simply calls <code>#to_json(state)</code> on the
- * given object.
- */
- static final Handler<IRubyObject> GENERIC_HANDLER =
- new Handler<IRubyObject>() {
- @Override
- RubyString generateNew(Session session, IRubyObject object) {
- IRubyObject result =
- object.callMethod(session.getContext(), "to_json",
- new IRubyObject[] {session.getState()});
- if (result instanceof RubyString) return (RubyString)result;
- throw session.getRuntime().newTypeError("to_json must return a String");
- }
-
- @Override
- void generate(Session session, IRubyObject object, ByteList buffer) {
- RubyString result = generateNew(session, object);
- buffer.append(result.getByteList());
- }
- };
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorMethods.java b/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorMethods.java
deleted file mode 100644
index 28a612d50..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorMethods.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.Ruby;
-import org.jruby.RubyArray;
-import org.jruby.RubyBoolean;
-import org.jruby.RubyFixnum;
-import org.jruby.RubyFloat;
-import org.jruby.RubyHash;
-import org.jruby.RubyInteger;
-import org.jruby.RubyModule;
-import org.jruby.RubyNumeric;
-import org.jruby.RubyString;
-import org.jruby.anno.JRubyMethod;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.ByteList;
-
-/**
- * A class that populates the
- * <code>Json::Ext::Generator::GeneratorMethods</code> module.
- *
- * @author mernen
- */
-class GeneratorMethods {
- /**
- * Populates the given module with all modules and their methods
- * @param info
- * @param generatorMethodsModule The module to populate
- * (normally <code>JSON::Generator::GeneratorMethods</code>)
- */
- static void populate(RuntimeInfo info, RubyModule module) {
- defineMethods(module, "Array", RbArray.class);
- defineMethods(module, "FalseClass", RbFalse.class);
- defineMethods(module, "Float", RbFloat.class);
- defineMethods(module, "Hash", RbHash.class);
- defineMethods(module, "Integer", RbInteger.class);
- defineMethods(module, "NilClass", RbNil.class);
- defineMethods(module, "Object", RbObject.class);
- defineMethods(module, "String", RbString.class);
- defineMethods(module, "TrueClass", RbTrue.class);
-
- info.stringExtendModule = module.defineModuleUnder("String")
- .defineModuleUnder("Extend");
- info.stringExtendModule.defineAnnotatedMethods(StringExtend.class);
- }
-
- /**
- * Convenience method for defining methods on a submodule.
- * @param parentModule
- * @param submoduleName
- * @param klass
- */
- private static void defineMethods(RubyModule parentModule,
- String submoduleName, Class klass) {
- RubyModule submodule = parentModule.defineModuleUnder(submoduleName);
- submodule.defineAnnotatedMethods(klass);
- }
-
-
- public static class RbHash {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return Generator.generateJson(context, (RubyHash)vSelf,
- Generator.HASH_HANDLER, args);
- }
- }
-
- public static class RbArray {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return Generator.generateJson(context, (RubyArray)vSelf,
- Generator.ARRAY_HANDLER, args);
- }
- }
-
- public static class RbInteger {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return Generator.generateJson(context, vSelf, args);
- }
- }
-
- public static class RbFloat {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return Generator.generateJson(context, (RubyFloat)vSelf,
- Generator.FLOAT_HANDLER, args);
- }
- }
-
- public static class RbString {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return Generator.generateJson(context, (RubyString)vSelf,
- Generator.STRING_HANDLER, args);
- }
-
- /**
- * <code>{@link RubyString String}#to_json_raw(*)</code>
- *
- * <p>This method creates a JSON text from the result of a call to
- * {@link #to_json_raw_object} of this String.
- */
- @JRubyMethod(rest=true)
- public static IRubyObject to_json_raw(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- RubyHash obj = toJsonRawObject(context, Utils.ensureString(vSelf));
- return Generator.generateJson(context, obj,
- Generator.HASH_HANDLER, args);
- }
-
- /**
- * <code>{@link RubyString String}#to_json_raw_object(*)</code>
- *
- * <p>This method creates a raw object Hash, that can be nested into
- * other data structures and will be unparsed as a raw string. This
- * method should be used if you want to convert raw strings to JSON
- * instead of UTF-8 strings, e.g. binary data.
- */
- @JRubyMethod(rest=true)
- public static IRubyObject to_json_raw_object(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return toJsonRawObject(context, Utils.ensureString(vSelf));
- }
-
- private static RubyHash toJsonRawObject(ThreadContext context,
- RubyString self) {
- Ruby runtime = context.getRuntime();
- RubyHash result = RubyHash.newHash(runtime);
-
- IRubyObject createId = RuntimeInfo.forRuntime(runtime)
- .jsonModule.callMethod(context, "create_id");
- result.op_aset(context, createId, self.getMetaClass().to_s());
-
- ByteList bl = self.getByteList();
- byte[] uBytes = bl.unsafeBytes();
- RubyArray array = runtime.newArray(bl.length());
- for (int i = bl.begin(), t = bl.begin() + bl.length(); i < t; i++) {
- array.store(i, runtime.newFixnum(uBytes[i] & 0xff));
- }
-
- result.op_aset(context, runtime.newString("raw"), array);
- return result;
- }
-
- @JRubyMethod(required=1, module=true)
- public static IRubyObject included(ThreadContext context,
- IRubyObject vSelf, IRubyObject module) {
- RuntimeInfo info = RuntimeInfo.forRuntime(context.getRuntime());
- return module.callMethod(context, "extend", info.stringExtendModule);
- }
- }
-
- public static class StringExtend {
- /**
- * <code>{@link RubyString String}#json_create(o)</code>
- *
- * <p>Raw Strings are JSON Objects (the raw bytes are stored in an
- * array for the key "raw"). The Ruby String can be created by this
- * module method.
- */
- @JRubyMethod(required=1)
- public static IRubyObject json_create(ThreadContext context,
- IRubyObject vSelf, IRubyObject vHash) {
- Ruby runtime = context.getRuntime();
- RubyHash o = vHash.convertToHash();
- IRubyObject rawData = o.fastARef(runtime.newString("raw"));
- if (rawData == null) {
- throw runtime.newArgumentError("\"raw\" value not defined "
- + "for encoded String");
- }
- RubyArray ary = Utils.ensureArray(rawData);
- byte[] bytes = new byte[ary.getLength()];
- for (int i = 0, t = ary.getLength(); i < t; i++) {
- IRubyObject element = ary.eltInternal(i);
- if (element instanceof RubyFixnum) {
- bytes[i] = (byte)RubyNumeric.fix2long(element);
- } else {
- throw runtime.newTypeError(element, runtime.getFixnum());
- }
- }
- return runtime.newString(new ByteList(bytes, false));
- }
- }
-
- public static class RbTrue {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return Generator.generateJson(context, (RubyBoolean)vSelf,
- Generator.TRUE_HANDLER, args);
- }
- }
-
- public static class RbFalse {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return Generator.generateJson(context, (RubyBoolean)vSelf,
- Generator.FALSE_HANDLER, args);
- }
- }
-
- public static class RbNil {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject vSelf, IRubyObject[] args) {
- return Generator.generateJson(context, vSelf,
- Generator.NIL_HANDLER, args);
- }
- }
-
- public static class RbObject {
- @JRubyMethod(rest=true)
- public static IRubyObject to_json(ThreadContext context,
- IRubyObject self, IRubyObject[] args) {
- return RbString.to_json(context, self.asString(), args);
- }
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorService.java b/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorService.java
deleted file mode 100644
index b8deb2283..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import java.io.IOException;
-
-import org.jruby.Ruby;
-import org.jruby.RubyClass;
-import org.jruby.RubyModule;
-import org.jruby.runtime.load.BasicLibraryService;
-
-/**
- * The service invoked by JRuby's {@link org.jruby.runtime.load.LoadService LoadService}.
- * Defines the <code>JSON::Ext::Generator</code> module.
- * @author mernen
- */
-public class GeneratorService implements BasicLibraryService {
- public boolean basicLoad(Ruby runtime) throws IOException {
- runtime.getLoadService().require("json/common");
- RuntimeInfo info = RuntimeInfo.initRuntime(runtime);
-
- info.jsonModule = runtime.defineModule("JSON");
- RubyModule jsonExtModule = info.jsonModule.defineModuleUnder("Ext");
- RubyModule generatorModule = jsonExtModule.defineModuleUnder("Generator");
-
- RubyClass stateClass =
- generatorModule.defineClassUnder("State", runtime.getObject(),
- GeneratorState.ALLOCATOR);
- stateClass.defineAnnotatedMethods(GeneratorState.class);
- info.generatorStateClass = stateClass;
-
- RubyModule generatorMethods =
- generatorModule.defineModuleUnder("GeneratorMethods");
- GeneratorMethods.populate(info, generatorMethods);
-
- return true;
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorState.java b/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorState.java
deleted file mode 100644
index dc990008f..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/GeneratorState.java
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.Ruby;
-import org.jruby.RubyBoolean;
-import org.jruby.RubyClass;
-import org.jruby.RubyHash;
-import org.jruby.RubyInteger;
-import org.jruby.RubyNumeric;
-import org.jruby.RubyObject;
-import org.jruby.RubyString;
-import org.jruby.anno.JRubyMethod;
-import org.jruby.runtime.Block;
-import org.jruby.runtime.ObjectAllocator;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.Visibility;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.ByteList;
-
-/**
- * The <code>JSON::Ext::Generator::State</code> class.
- *
- * <p>This class is used to create State instances, that are use to hold data
- * while generating a JSON text from a a Ruby data structure.
- *
- * @author mernen
- */
-public class GeneratorState extends RubyObject {
- /**
- * The indenting unit string. Will be repeated several times for larger
- * indenting levels.
- */
- private ByteList indent = ByteList.EMPTY_BYTELIST;
- /**
- * The spacing to be added after a semicolon on a JSON object.
- * @see #spaceBefore
- */
- private ByteList space = ByteList.EMPTY_BYTELIST;
- /**
- * The spacing to be added before a semicolon on a JSON object.
- * @see #space
- */
- private ByteList spaceBefore = ByteList.EMPTY_BYTELIST;
- /**
- * Any suffix to be added after the comma for each element on a JSON object.
- * It is assumed to be a newline, if set.
- */
- private ByteList objectNl = ByteList.EMPTY_BYTELIST;
- /**
- * Any suffix to be added after the comma for each element on a JSON Array.
- * It is assumed to be a newline, if set.
- */
- private ByteList arrayNl = ByteList.EMPTY_BYTELIST;
-
- /**
- * The maximum level of nesting of structures allowed.
- * <code>0</code> means disabled.
- */
- private int maxNesting = DEFAULT_MAX_NESTING;
- static final int DEFAULT_MAX_NESTING = 19;
- /**
- * Whether special float values (<code>NaN</code>, <code>Infinity</code>,
- * <code>-Infinity</code>) are accepted.
- * If set to <code>false</code>, an exception will be thrown upon
- * encountering one.
- */
- private boolean allowNaN = DEFAULT_ALLOW_NAN;
- static final boolean DEFAULT_ALLOW_NAN = false;
- /**
- * XXX
- */
- private boolean asciiOnly = DEFAULT_ASCII_ONLY;
- static final boolean DEFAULT_ASCII_ONLY = false;
-
- /**
- * The current depth (inside a #to_json call)
- */
- private int depth = 0;
-
- static final ObjectAllocator ALLOCATOR = new ObjectAllocator() {
- public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
- return new GeneratorState(runtime, klazz);
- }
- };
-
- public GeneratorState(Ruby runtime, RubyClass metaClass) {
- super(runtime, metaClass);
- }
-
- /**
- * <code>State.from_state(opts)</code>
- *
- * <p>Creates a State object from <code>opts</code>, which ought to be
- * {@link RubyHash Hash} to create a new <code>State</code> instance
- * configured by <codes>opts</code>, something else to create an
- * unconfigured instance. If <code>opts</code> is a <code>State</code>
- * object, it is just returned.
- * @param clazzParam The receiver of the method call
- * ({@link RubyClass} <code>State</code>)
- * @param opts The object to use as a base for the new <code>State</code>
- * @param block The block passed to the method
- * @return A <code>GeneratorState</code> as determined above
- */
- @JRubyMethod(meta=true)
- public static IRubyObject from_state(ThreadContext context,
- IRubyObject klass, IRubyObject opts) {
- return fromState(context, opts);
- }
-
- static GeneratorState fromState(ThreadContext context, IRubyObject opts) {
- return fromState(context, RuntimeInfo.forRuntime(context.getRuntime()), opts);
- }
-
- static GeneratorState fromState(ThreadContext context, RuntimeInfo info,
- IRubyObject opts) {
- RubyClass klass = info.generatorStateClass;
- if (opts != null) {
- // if the given parameter is a Generator::State, return itself
- if (klass.isInstance(opts)) return (GeneratorState)opts;
-
- // if the given parameter is a Hash, pass it to the instantiator
- if (context.getRuntime().getHash().isInstance(opts)) {
- return (GeneratorState)klass.newInstance(context,
- new IRubyObject[] {opts}, Block.NULL_BLOCK);
- }
- }
-
- // for other values, return the safe prototype
- return (GeneratorState)info.getSafeStatePrototype(context).dup();
- }
-
- /**
- * <code>State#initialize(opts = {})</code>
- *
- * Instantiates a new <code>State</code> object, configured by <code>opts</code>.
- *
- * <code>opts</code> can have the following keys:
- *
- * <dl>
- * <dt><code>:indent</code>
- * <dd>a {@link RubyString String} used to indent levels (default: <code>""</code>)
- * <dt><code>:space</code>
- * <dd>a String that is put after a <code>':'</code> or <code>','</code>
- * delimiter (default: <code>""</code>)
- * <dt><code>:space_before</code>
- * <dd>a String that is put before a <code>":"</code> pair delimiter
- * (default: <code>""</code>)
- * <dt><code>:object_nl</code>
- * <dd>a String that is put at the end of a JSON object (default: <code>""</code>)
- * <dt><code>:array_nl</code>
- * <dd>a String that is put at the end of a JSON array (default: <code>""</code>)
- * <dt><code>:allow_nan</code>
- * <dd><code>true</code> if <code>NaN</code>, <code>Infinity</code>, and
- * <code>-Infinity</code> should be generated, otherwise an exception is
- * thrown if these values are encountered.
- * This options defaults to <code>false</code>.
- */
- @JRubyMethod(optional=1, visibility=Visibility.PRIVATE)
- public IRubyObject initialize(ThreadContext context, IRubyObject[] args) {
- configure(context, args.length > 0 ? args[0] : null);
- return this;
- }
-
- @JRubyMethod
- public IRubyObject initialize_copy(ThreadContext context, IRubyObject vOrig) {
- Ruby runtime = context.getRuntime();
- if (!(vOrig instanceof GeneratorState)) {
- throw runtime.newTypeError(vOrig, getType());
- }
- GeneratorState orig = (GeneratorState)vOrig;
- this.indent = orig.indent;
- this.space = orig.space;
- this.spaceBefore = orig.spaceBefore;
- this.objectNl = orig.objectNl;
- this.arrayNl = orig.arrayNl;
- this.maxNesting = orig.maxNesting;
- this.allowNaN = orig.allowNaN;
- this.asciiOnly = orig.asciiOnly;
- this.depth = orig.depth;
- return this;
- }
-
- /**
- * XXX
- */
- @JRubyMethod
- public IRubyObject generate(ThreadContext context, IRubyObject obj) {
- RubyString result = Generator.generateJson(context, obj, this);
- if (!objectOrArrayLiteral(result)) {
- throw Utils.newException(context, Utils.M_GENERATOR_ERROR,
- "only generation of JSON objects or arrays allowed");
- }
- return result;
- }
-
- /**
- * Ensures the given string is in the form "[...]" or "{...}", being
- * possibly surrounded by white space.
- * The string's encoding must be ASCII-compatible.
- * @param value
- * @return
- */
- private static boolean objectOrArrayLiteral(RubyString value) {
- ByteList bl = value.getByteList();
- int len = bl.length();
-
- for (int pos = 0; pos < len - 1; pos++) {
- int b = bl.get(pos);
- if (Character.isWhitespace(b)) continue;
-
- // match the opening brace
- switch (b) {
- case '[':
- return matchClosingBrace(bl, pos, len, ']');
- case '{':
- return matchClosingBrace(bl, pos, len, '}');
- default:
- return false;
- }
- }
- return false;
- }
-
- private static boolean matchClosingBrace(ByteList bl, int pos, int len,
- int brace) {
- for (int endPos = len - 1; endPos > pos; endPos--) {
- int b = bl.get(endPos);
- if (Character.isWhitespace(b)) continue;
- return b == brace;
- }
- return false;
- }
-
- @JRubyMethod(name="[]", required=1)
- public IRubyObject op_aref(ThreadContext context, IRubyObject vName) {
- String name = vName.asJavaString();
- if (getMetaClass().isMethodBound(name, true)) {
- return send(context, vName, Block.NULL_BLOCK);
- }
- return context.getRuntime().getNil();
- }
-
- public ByteList getIndent() {
- return indent;
- }
-
- @JRubyMethod(name="indent")
- public RubyString indent_get(ThreadContext context) {
- return context.getRuntime().newString(indent);
- }
-
- @JRubyMethod(name="indent=")
- public IRubyObject indent_set(ThreadContext context, IRubyObject indent) {
- this.indent = prepareByteList(context, indent);
- return indent;
- }
-
- public ByteList getSpace() {
- return space;
- }
-
- @JRubyMethod(name="space")
- public RubyString space_get(ThreadContext context) {
- return context.getRuntime().newString(space);
- }
-
- @JRubyMethod(name="space=")
- public IRubyObject space_set(ThreadContext context, IRubyObject space) {
- this.space = prepareByteList(context, space);
- return space;
- }
-
- public ByteList getSpaceBefore() {
- return spaceBefore;
- }
-
- @JRubyMethod(name="space_before")
- public RubyString space_before_get(ThreadContext context) {
- return context.getRuntime().newString(spaceBefore);
- }
-
- @JRubyMethod(name="space_before=")
- public IRubyObject space_before_set(ThreadContext context,
- IRubyObject spaceBefore) {
- this.spaceBefore = prepareByteList(context, spaceBefore);
- return spaceBefore;
- }
-
- public ByteList getObjectNl() {
- return objectNl;
- }
-
- @JRubyMethod(name="object_nl")
- public RubyString object_nl_get(ThreadContext context) {
- return context.getRuntime().newString(objectNl);
- }
-
- @JRubyMethod(name="object_nl=")
- public IRubyObject object_nl_set(ThreadContext context,
- IRubyObject objectNl) {
- this.objectNl = prepareByteList(context, objectNl);
- return objectNl;
- }
-
- public ByteList getArrayNl() {
- return arrayNl;
- }
-
- @JRubyMethod(name="array_nl")
- public RubyString array_nl_get(ThreadContext context) {
- return context.getRuntime().newString(arrayNl);
- }
-
- @JRubyMethod(name="array_nl=")
- public IRubyObject array_nl_set(ThreadContext context,
- IRubyObject arrayNl) {
- this.arrayNl = prepareByteList(context, arrayNl);
- return arrayNl;
- }
-
- @JRubyMethod(name="check_circular?")
- public RubyBoolean check_circular_p(ThreadContext context) {
- return context.getRuntime().newBoolean(maxNesting != 0);
- }
-
- /**
- * Returns the maximum level of nesting configured for this state.
- */
- public int getMaxNesting() {
- return maxNesting;
- }
-
- @JRubyMethod(name="max_nesting")
- public RubyInteger max_nesting_get(ThreadContext context) {
- return context.getRuntime().newFixnum(maxNesting);
- }
-
- @JRubyMethod(name="max_nesting=")
- public IRubyObject max_nesting_set(IRubyObject max_nesting) {
- maxNesting = RubyNumeric.fix2int(max_nesting);
- return max_nesting;
- }
-
- public boolean allowNaN() {
- return allowNaN;
- }
-
- @JRubyMethod(name="allow_nan?")
- public RubyBoolean allow_nan_p(ThreadContext context) {
- return context.getRuntime().newBoolean(allowNaN);
- }
-
- public boolean asciiOnly() {
- return asciiOnly;
- }
-
- @JRubyMethod(name="ascii_only?")
- public RubyBoolean ascii_only_p(ThreadContext context) {
- return context.getRuntime().newBoolean(asciiOnly);
- }
-
- public int getDepth() {
- return depth;
- }
-
- @JRubyMethod(name="depth")
- public RubyInteger depth_get(ThreadContext context) {
- return context.getRuntime().newFixnum(depth);
- }
-
- @JRubyMethod(name="depth=")
- public IRubyObject depth_set(IRubyObject vDepth) {
- depth = RubyNumeric.fix2int(vDepth);
- return vDepth;
- }
-
- private ByteList prepareByteList(ThreadContext context, IRubyObject value) {
- RubyString str = value.convertToString();
- RuntimeInfo info = RuntimeInfo.forRuntime(context.getRuntime());
- if (info.encodingsSupported() && str.encoding(context) != info.utf8) {
- str = (RubyString)str.encode(context, info.utf8);
- }
- return str.getByteList().dup();
- }
-
- /**
- * <code>State#configure(opts)</code>
- *
- * <p>Configures this State instance with the {@link RubyHash Hash}
- * <code>opts</code>, and returns itself.
- * @param vOpts The options hash
- * @return The receiver
- */
- @JRubyMethod
- public IRubyObject configure(ThreadContext context, IRubyObject vOpts) {
- OptionsReader opts = new OptionsReader(context, vOpts);
-
- ByteList indent = opts.getString("indent");
- if (indent != null) this.indent = indent;
-
- ByteList space = opts.getString("space");
- if (space != null) this.space = space;
-
- ByteList spaceBefore = opts.getString("space_before");
- if (spaceBefore != null) this.spaceBefore = spaceBefore;
-
- ByteList arrayNl = opts.getString("array_nl");
- if (arrayNl != null) this.arrayNl = arrayNl;
-
- ByteList objectNl = opts.getString("object_nl");
- if (objectNl != null) this.objectNl = objectNl;
-
- maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING);
- allowNaN = opts.getBool("allow_nan", DEFAULT_ALLOW_NAN);
- asciiOnly = opts.getBool("ascii_only", DEFAULT_ASCII_ONLY);
-
- depth = opts.getInt("depth", 0);
-
- return this;
- }
-
- /**
- * <code>State#to_h()</code>
- *
- * <p>Returns the configuration instance variables as a hash, that can be
- * passed to the configure method.
- * @return
- */
- @JRubyMethod
- public RubyHash to_h(ThreadContext context) {
- Ruby runtime = context.getRuntime();
- RubyHash result = RubyHash.newHash(runtime);
-
- result.op_aset(context, runtime.newSymbol("indent"), indent_get(context));
- result.op_aset(context, runtime.newSymbol("space"), space_get(context));
- result.op_aset(context, runtime.newSymbol("space_before"), space_before_get(context));
- result.op_aset(context, runtime.newSymbol("object_nl"), object_nl_get(context));
- result.op_aset(context, runtime.newSymbol("array_nl"), array_nl_get(context));
- result.op_aset(context, runtime.newSymbol("allow_nan"), allow_nan_p(context));
- result.op_aset(context, runtime.newSymbol("ascii_only"), ascii_only_p(context));
- result.op_aset(context, runtime.newSymbol("max_nesting"), max_nesting_get(context));
- result.op_aset(context, runtime.newSymbol("depth"), depth_get(context));
- return result;
- }
-
- public int increaseDepth() {
- depth++;
- checkMaxNesting();
- return depth;
- }
-
- public int decreaseDepth() {
- return --depth;
- }
-
- /**
- * Checks if the current depth is allowed as per this state's options.
- * @param context
- * @param depth The corrent depth
- */
- private void checkMaxNesting() {
- if (maxNesting != 0 && depth > maxNesting) {
- depth--;
- throw Utils.newException(getRuntime().getCurrentContext(),
- Utils.M_NESTING_ERROR, "nesting of " + depth + " is too deep");
- }
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/OptionsReader.java b/vendor/gems/json-1.5.1/java/src/json/ext/OptionsReader.java
deleted file mode 100644
index 018ace4cd..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/OptionsReader.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.Ruby;
-import org.jruby.RubyClass;
-import org.jruby.RubyHash;
-import org.jruby.RubyNumeric;
-import org.jruby.RubyString;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.ByteList;
-
-final class OptionsReader {
- private final ThreadContext context;
- private final Ruby runtime;
- private final RubyHash opts;
- private RuntimeInfo info;
-
- OptionsReader(ThreadContext context, IRubyObject vOpts) {
- this.context = context;
- this.runtime = context.getRuntime();
-
- if (vOpts == null || vOpts.isNil()) {
- opts = null;
- } else if (vOpts.respondsTo("to_hash")) {
- opts = vOpts.convertToHash();
- } else {
- opts = vOpts.callMethod(context, "to_h").convertToHash();
- }
- }
-
- private RuntimeInfo getRuntimeInfo() {
- if (info != null) return info;
- info = RuntimeInfo.forRuntime(runtime);
- return info;
- }
-
- /**
- * Efficiently looks up items with a {@link RubySymbol Symbol} key
- * @param key The Symbol name to look up for
- * @return The item in the {@link RubyHash Hash}, or <code>null</code>
- * if not found
- */
- IRubyObject get(String key) {
- return opts == null ? null : opts.fastARef(runtime.newSymbol(key));
- }
-
- boolean getBool(String key, boolean defaultValue) {
- IRubyObject value = get(key);
- return value == null ? defaultValue : value.isTrue();
- }
-
- int getInt(String key, int defaultValue) {
- IRubyObject value = get(key);
- if (value == null) return defaultValue;
- if (!value.isTrue()) return 0;
- return RubyNumeric.fix2int(value);
- }
-
- /**
- * Reads the setting from the options hash. If no entry is set for this
- * key or if it evaluates to <code>false</code>, returns null; attempts to
- * coerce the value to {@link RubyString String} otherwise.
- * @param key The Symbol name to look up for
- * @return <code>null</code> if the key is not in the Hash or if
- * its value evaluates to <code>false</code>
- * @throws RaiseException <code>TypeError</code> if the value does not
- * evaluate to <code>false</code> and can't be
- * converted to string
- */
- ByteList getString(String key) {
- RubyString str = getString(key, null);
- return str == null ? null : str.getByteList().dup();
- }
-
- RubyString getString(String key, RubyString defaultValue) {
- IRubyObject value = get(key);
- if (value == null || !value.isTrue()) return defaultValue;
-
- RubyString str = value.convertToString();
- RuntimeInfo info = getRuntimeInfo();
- if (info.encodingsSupported() && str.encoding(context) != info.utf8) {
- str = (RubyString)str.encode(context, info.utf8);
- }
- return str;
- }
-
- /**
- * Reads the setting from the options hash. If it is <code>nil</code> or
- * undefined, returns the default value given.
- * If not, ensures it is a RubyClass instance and shares the same
- * allocator as the default value (i.e. for the basic types which have
- * their specific allocators, this ensures the passed value is
- * a subclass of them).
- */
- RubyClass getClass(String key, RubyClass defaultValue) {
- IRubyObject value = get(key);
-
- if (value == null || value.isNil()) return defaultValue;
-
- if (value instanceof RubyClass &&
- ((RubyClass)value).getAllocator() == defaultValue.getAllocator()) {
- return (RubyClass)value;
- }
- throw runtime.newTypeError(key + " option must be a subclass of "
- + defaultValue);
- }
-
- public RubyHash getHash(String key) {
- IRubyObject value = get(key);
- if (value == null || value.isNil()) return new RubyHash(runtime);
- return (RubyHash) value;
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/Parser.java b/vendor/gems/json-1.5.1/java/src/json/ext/Parser.java
deleted file mode 100644
index c92600e9e..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/Parser.java
+++ /dev/null
@@ -1,2295 +0,0 @@
-
-// line 1 "Parser.rl"
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.Ruby;
-import org.jruby.RubyArray;
-import org.jruby.RubyClass;
-import org.jruby.RubyEncoding;
-import org.jruby.RubyFloat;
-import org.jruby.RubyHash;
-import org.jruby.RubyInteger;
-import org.jruby.RubyModule;
-import org.jruby.RubyNumeric;
-import org.jruby.RubyObject;
-import org.jruby.RubyString;
-import org.jruby.anno.JRubyMethod;
-import org.jruby.exceptions.JumpException;
-import org.jruby.exceptions.RaiseException;
-import org.jruby.runtime.Block;
-import org.jruby.runtime.ObjectAllocator;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.Visibility;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.ByteList;
-
-/**
- * The <code>JSON::Ext::Parser</code> class.
- *
- * <p>This is the JSON parser implemented as a Java class. To use it as the
- * standard parser, set
- * <pre>JSON.parser = JSON::Ext::Parser</pre>
- * This is performed for you when you <code>include "json/ext"</code>.
- *
- * <p>This class does not perform the actual parsing, just acts as an interface
- * to Ruby code. When the {@link #parse()} method is invoked, a
- * Parser.ParserSession object is instantiated, which handles the process.
- *
- * @author mernen
- */
-public class Parser extends RubyObject {
- private final RuntimeInfo info;
- private RubyString vSource;
- private RubyString createId;
- private boolean createAdditions;
- private int maxNesting;
- private boolean allowNaN;
- private boolean symbolizeNames;
- private RubyClass objectClass;
- private RubyClass arrayClass;
- private RubyHash match_string;
-
- private static final int DEFAULT_MAX_NESTING = 19;
-
- private static final String JSON_MINUS_INFINITY = "-Infinity";
- // constant names in the JSON module containing those values
- private static final String CONST_NAN = "NaN";
- private static final String CONST_INFINITY = "Infinity";
- private static final String CONST_MINUS_INFINITY = "MinusInfinity";
-
- static final ObjectAllocator ALLOCATOR = new ObjectAllocator() {
- public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
- return new Parser(runtime, klazz);
- }
- };
-
- /**
- * Multiple-value return for internal parser methods.
- *
- * <p>All the <code>parse<var>Stuff</var></code> methods return instances of
- * <code>ParserResult</code> when successful, or <code>null</code> when
- * there's a problem with the input data.
- */
- static final class ParserResult {
- /**
- * The result of the successful parsing. Should never be
- * <code>null</code>.
- */
- final IRubyObject result;
- /**
- * The point where the parser returned.
- */
- final int p;
-
- ParserResult(IRubyObject result, int p) {
- this.result = result;
- this.p = p;
- }
- }
-
- public Parser(Ruby runtime, RubyClass metaClass) {
- super(runtime, metaClass);
- info = RuntimeInfo.forRuntime(runtime);
- }
-
- /**
- * <code>Parser.new(source, opts = {})</code>
- *
- * <p>Creates a new <code>JSON::Ext::Parser</code> instance for the string
- * <code>source</code>.
- * It will be configured by the <code>opts</code> Hash.
- * <code>opts</code> can have the following keys:
- *
- * <dl>
- * <dt><code>:max_nesting</code>
- * <dd>The maximum depth of nesting allowed in the parsed data
- * structures. Disable depth checking with <code>:max_nesting => false|nil|0</code>,
- * it defaults to 19.
- *
- * <dt><code>:allow_nan</code>
- * <dd>If set to <code>true</code>, allow <code>NaN</code>,
- * <code>Infinity</code> and <code>-Infinity</code> in defiance of RFC 4627
- * to be parsed by the Parser. This option defaults to <code>false</code>.
- *
- * <dt><code>:symbolize_names</code>
- * <dd>If set to <code>true</code>, returns symbols for the names (keys) in
- * a JSON object. Otherwise strings are returned, which is also the default.
- *
- * <dt><code>:create_additions</code>
- * <dd>If set to <code>false</code>, the Parser doesn't create additions
- * even if a matchin class and <code>create_id</code> was found. This option
- * defaults to <code>true</code>.
- *
- * <dt><code>:object_class</code>
- * <dd>Defaults to Hash.
- *
- * <dt><code>:array_class</code>
- * <dd>Defaults to Array.
- * </dl>
- */
- @JRubyMethod(name = "new", required = 1, optional = 1, meta = true)
- public static IRubyObject newInstance(IRubyObject clazz, IRubyObject[] args, Block block) {
- Parser parser = (Parser)((RubyClass)clazz).allocate();
-
- parser.callInit(args, block);
-
- return parser;
- }
-
- @JRubyMethod(required = 1, optional = 1, visibility = Visibility.PRIVATE)
- public IRubyObject initialize(ThreadContext context, IRubyObject[] args) {
- Ruby runtime = context.getRuntime();
- RubyString source = convertEncoding(context, args[0].convertToString());
-
- OptionsReader opts = new OptionsReader(context, args.length > 1 ? args[1] : null);
- this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING);
- this.allowNaN = opts.getBool("allow_nan", false);
- this.symbolizeNames = opts.getBool("symbolize_names", false);
- this.createId = opts.getString("create_id", getCreateId(context));
- this.createAdditions = opts.getBool("create_additions", true);
- this.objectClass = opts.getClass("object_class", runtime.getHash());
- this.arrayClass = opts.getClass("array_class", runtime.getArray());
- this.match_string = opts.getHash("match_string");
-
- this.vSource = source;
- return this;
- }
-
- /**
- * Checks the given string's encoding. If a non-UTF-8 encoding is detected,
- * a converted copy is returned.
- * Returns the source string if no conversion is needed.
- */
- private RubyString convertEncoding(ThreadContext context, RubyString source) {
- ByteList bl = source.getByteList();
- int len = bl.length();
- if (len < 2) {
- throw Utils.newException(context, Utils.M_PARSER_ERROR,
- "A JSON text must at least contain two octets!");
- }
-
- if (info.encodingsSupported()) {
- RubyEncoding encoding = (RubyEncoding)source.encoding(context);
- if (encoding != info.ascii8bit) {
- return (RubyString)source.encode(context, info.utf8);
- }
-
- String sniffedEncoding = sniffByteList(bl);
- if (sniffedEncoding == null) return source; // assume UTF-8
- return reinterpretEncoding(context, source, sniffedEncoding);
- }
-
- String sniffedEncoding = sniffByteList(bl);
- if (sniffedEncoding == null) return source; // assume UTF-8
- Ruby runtime = context.getRuntime();
- return (RubyString)info.jsonModule.
- callMethod(context, "iconv",
- new IRubyObject[] {
- runtime.newString("utf-8"),
- runtime.newString(sniffedEncoding),
- source});
- }
-
- /**
- * Checks the first four bytes of the given ByteList to infer its encoding,
- * using the principle demonstrated on section 3 of RFC 4627 (JSON).
- */
- private static String sniffByteList(ByteList bl) {
- if (bl.length() < 4) return null;
- if (bl.get(0) == 0 && bl.get(2) == 0) {
- return bl.get(1) == 0 ? "utf-32be" : "utf-16be";
- }
- if (bl.get(1) == 0 && bl.get(3) == 0) {
- return bl.get(2) == 0 ? "utf-32le" : "utf-16le";
- }
- return null;
- }
-
- /**
- * Assumes the given (binary) RubyString to be in the given encoding, then
- * converts it to UTF-8.
- */
- private RubyString reinterpretEncoding(ThreadContext context,
- RubyString str, String sniffedEncoding) {
- RubyEncoding actualEncoding = info.getEncoding(context, sniffedEncoding);
- RubyEncoding targetEncoding = info.utf8;
- RubyString dup = (RubyString)str.dup();
- dup.force_encoding(context, actualEncoding);
- return (RubyString)dup.encode_bang(context, targetEncoding);
- }
-
- /**
- * <code>Parser#parse()</code>
- *
- * <p>Parses the current JSON text <code>source</code> and returns the
- * complete data structure as a result.
- */
- @JRubyMethod
- public IRubyObject parse(ThreadContext context) {
- return new ParserSession(this, context).parse();
- }
-
- /**
- * <code>Parser#source()</code>
- *
- * <p>Returns a copy of the current <code>source</code> string, that was
- * used to construct this Parser.
- */
- @JRubyMethod(name = "source")
- public IRubyObject source_get() {
- return vSource.dup();
- }
-
- /**
- * Queries <code>JSON.create_id</code>. Returns <code>null</code> if it is
- * set to <code>nil</code> or <code>false</code>, and a String if not.
- */
- private RubyString getCreateId(ThreadContext context) {
- IRubyObject v = info.jsonModule.callMethod(context, "create_id");
- return v.isTrue() ? v.convertToString() : null;
- }
-
- /**
- * A string parsing session.
- *
- * <p>Once a ParserSession is instantiated, the source string should not
- * change until the parsing is complete. The ParserSession object assumes
- * the source {@link RubyString} is still associated to its original
- * {@link ByteList}, which in turn must still be bound to the same
- * <code>byte[]</code> value (and on the same offset).
- */
- // Ragel uses lots of fall-through
- @SuppressWarnings("fallthrough")
- private static class ParserSession {
- private final Parser parser;
- private final ThreadContext context;
- private final ByteList byteList;
- private final byte[] data;
- private final StringDecoder decoder;
- private int currentNesting = 0;
-
- // initialization value for all state variables.
- // no idea about the origins of this value, ask Flori ;)
- private static final int EVIL = 0x666;
-
- private ParserSession(Parser parser, ThreadContext context) {
- this.parser = parser;
- this.context = context;
- this.byteList = parser.vSource.getByteList();
- this.data = byteList.unsafeBytes();
- this.decoder = new StringDecoder(context);
- }
-
- private RaiseException unexpectedToken(int absStart, int absEnd) {
- RubyString msg = getRuntime().newString("unexpected token at '")
- .cat(data, absStart, absEnd - absStart)
- .cat((byte)'\'');
- return newException(Utils.M_PARSER_ERROR, msg);
- }
-
- private Ruby getRuntime() {
- return context.getRuntime();
- }
-
-
-// line 324 "Parser.rl"
-
-
-
-// line 306 "Parser.java"
-private static byte[] init__JSON_value_actions_0()
-{
- return new byte [] {
- 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1,
- 5, 1, 6, 1, 7, 1, 8, 1, 9
- };
-}
-
-private static final byte _JSON_value_actions[] = init__JSON_value_actions_0();
-
-
-private static byte[] init__JSON_value_key_offsets_0()
-{
- return new byte [] {
- 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
- };
-}
-
-private static final byte _JSON_value_key_offsets[] = init__JSON_value_key_offsets_0();
-
-
-private static char[] init__JSON_value_trans_keys_0()
-{
- return new char [] {
- 34, 45, 73, 78, 91, 102, 110, 116, 123, 48, 57, 110,
- 102, 105, 110, 105, 116, 121, 97, 78, 97, 108, 115, 101,
- 117, 108, 108, 114, 117, 101, 0
- };
-}
-
-private static final char _JSON_value_trans_keys[] = init__JSON_value_trans_keys_0();
-
-
-private static byte[] init__JSON_value_single_lengths_0()
-{
- return new byte [] {
- 0, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0
- };
-}
-
-private static final byte _JSON_value_single_lengths[] = init__JSON_value_single_lengths_0();
-
-
-private static byte[] init__JSON_value_range_lengths_0()
-{
- return new byte [] {
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
-}
-
-private static final byte _JSON_value_range_lengths[] = init__JSON_value_range_lengths_0();
-
-
-private static byte[] init__JSON_value_index_offsets_0()
-{
- return new byte [] {
- 0, 0, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29,
- 31, 33, 35, 37, 39, 41, 43, 45, 47, 49
- };
-}
-
-private static final byte _JSON_value_index_offsets[] = init__JSON_value_index_offsets_0();
-
-
-private static byte[] init__JSON_value_trans_targs_0()
-{
- return new byte [] {
- 21, 21, 2, 9, 21, 11, 15, 18, 21, 21, 0, 3,
- 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 21,
- 0, 10, 0, 21, 0, 12, 0, 13, 0, 14, 0, 21,
- 0, 16, 0, 17, 0, 21, 0, 19, 0, 20, 0, 21,
- 0, 0, 0
- };
-}
-
-private static final byte _JSON_value_trans_targs[] = init__JSON_value_trans_targs_0();
-
-
-private static byte[] init__JSON_value_trans_actions_0()
-{
- return new byte [] {
- 13, 11, 0, 0, 15, 0, 0, 0, 17, 11, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
- 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
- 0, 0, 0
- };
-}
-
-private static final byte _JSON_value_trans_actions[] = init__JSON_value_trans_actions_0();
-
-
-private static byte[] init__JSON_value_from_state_actions_0()
-{
- return new byte [] {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19
- };
-}
-
-private static final byte _JSON_value_from_state_actions[] = init__JSON_value_from_state_actions_0();
-
-
-static final int JSON_value_start = 1;
-static final int JSON_value_first_final = 21;
-static final int JSON_value_error = 0;
-
-static final int JSON_value_en_main = 1;
-
-
-// line 430 "Parser.rl"
-
-
- ParserResult parseValue(int p, int pe) {
- int cs = EVIL;
- IRubyObject result = null;
-
-
-// line 428 "Parser.java"
- {
- cs = JSON_value_start;
- }
-
-// line 437 "Parser.rl"
-
-// line 435 "Parser.java"
- {
- int _klen;
- int _trans = 0;
- int _acts;
- int _nacts;
- int _keys;
- int _goto_targ = 0;
-
- _goto: while (true) {
- switch ( _goto_targ ) {
- case 0:
- if ( p == pe ) {
- _goto_targ = 4;
- continue _goto;
- }
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
-case 1:
- _acts = _JSON_value_from_state_actions[cs];
- _nacts = (int) _JSON_value_actions[_acts++];
- while ( _nacts-- > 0 ) {
- switch ( _JSON_value_actions[_acts++] ) {
- case 9:
-// line 415 "Parser.rl"
- {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- }
- break;
-// line 467 "Parser.java"
- }
- }
-
- _match: do {
- _keys = _JSON_value_key_offsets[cs];
- _trans = _JSON_value_index_offsets[cs];
- _klen = _JSON_value_single_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + _klen - 1;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( data[p] < _JSON_value_trans_keys[_mid] )
- _upper = _mid - 1;
- else if ( data[p] > _JSON_value_trans_keys[_mid] )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- break _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _JSON_value_range_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + (_klen<<1) - 2;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( data[p] < _JSON_value_trans_keys[_mid] )
- _upper = _mid - 2;
- else if ( data[p] > _JSON_value_trans_keys[_mid+1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- break _match;
- }
- }
- _trans += _klen;
- }
- } while (false);
-
- cs = _JSON_value_trans_targs[_trans];
-
- if ( _JSON_value_trans_actions[_trans] != 0 ) {
- _acts = _JSON_value_trans_actions[_trans];
- _nacts = (int) _JSON_value_actions[_acts++];
- while ( _nacts-- > 0 )
- {
- switch ( _JSON_value_actions[_acts++] )
- {
- case 0:
-// line 332 "Parser.rl"
- {
- result = getRuntime().getNil();
- }
- break;
- case 1:
-// line 335 "Parser.rl"
- {
- result = getRuntime().getFalse();
- }
- break;
- case 2:
-// line 338 "Parser.rl"
- {
- result = getRuntime().getTrue();
- }
- break;
- case 3:
-// line 341 "Parser.rl"
- {
- if (parser.allowNaN) {
- result = getConstant(CONST_NAN);
- } else {
- throw unexpectedToken(p - 2, pe);
- }
- }
- break;
- case 4:
-// line 348 "Parser.rl"
- {
- if (parser.allowNaN) {
- result = getConstant(CONST_INFINITY);
- } else {
- throw unexpectedToken(p - 7, pe);
- }
- }
- break;
- case 5:
-// line 355 "Parser.rl"
- {
- if (pe > p + 9 &&
- absSubSequence(p, p + 9).toString().equals(JSON_MINUS_INFINITY)) {
-
- if (parser.allowNaN) {
- result = getConstant(CONST_MINUS_INFINITY);
- {p = (( p + 10))-1;}
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- throw unexpectedToken(p, pe);
- }
- }
- ParserResult res = parseFloat(p, pe);
- if (res != null) {
- result = res.result;
- {p = (( res.p))-1;}
- }
- res = parseInteger(p, pe);
- if (res != null) {
- result = res.result;
- {p = (( res.p))-1;}
- }
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- }
- break;
- case 6:
-// line 381 "Parser.rl"
- {
- ParserResult res = parseString(p, pe);
- if (res == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- result = res.result;
- {p = (( res.p))-1;}
- }
- }
- break;
- case 7:
-// line 391 "Parser.rl"
- {
- currentNesting++;
- ParserResult res = parseArray(p, pe);
- currentNesting--;
- if (res == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- result = res.result;
- {p = (( res.p))-1;}
- }
- }
- break;
- case 8:
-// line 403 "Parser.rl"
- {
- currentNesting++;
- ParserResult res = parseObject(p, pe);
- currentNesting--;
- if (res == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- result = res.result;
- {p = (( res.p))-1;}
- }
- }
- break;
-// line 639 "Parser.java"
- }
- }
- }
-
-case 2:
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
- if ( ++p != pe ) {
- _goto_targ = 1;
- continue _goto;
- }
-case 4:
-case 5:
- }
- break; }
- }
-
-// line 438 "Parser.rl"
-
- if (cs >= JSON_value_first_final && result != null) {
- return new ParserResult(result, p);
- } else {
- return null;
- }
- }
-
-
-// line 669 "Parser.java"
-private static byte[] init__JSON_integer_actions_0()
-{
- return new byte [] {
- 0, 1, 0
- };
-}
-
-private static final byte _JSON_integer_actions[] = init__JSON_integer_actions_0();
-
-
-private static byte[] init__JSON_integer_key_offsets_0()
-{
- return new byte [] {
- 0, 0, 4, 7, 9, 11
- };
-}
-
-private static final byte _JSON_integer_key_offsets[] = init__JSON_integer_key_offsets_0();
-
-
-private static char[] init__JSON_integer_trans_keys_0()
-{
- return new char [] {
- 45, 48, 49, 57, 48, 49, 57, 48, 57, 48, 57, 0
- };
-}
-
-private static final char _JSON_integer_trans_keys[] = init__JSON_integer_trans_keys_0();
-
-
-private static byte[] init__JSON_integer_single_lengths_0()
-{
- return new byte [] {
- 0, 2, 1, 0, 0, 0
- };
-}
-
-private static final byte _JSON_integer_single_lengths[] = init__JSON_integer_single_lengths_0();
-
-
-private static byte[] init__JSON_integer_range_lengths_0()
-{
- return new byte [] {
- 0, 1, 1, 1, 1, 0
- };
-}
-
-private static final byte _JSON_integer_range_lengths[] = init__JSON_integer_range_lengths_0();
-
-
-private static byte[] init__JSON_integer_index_offsets_0()
-{
- return new byte [] {
- 0, 0, 4, 7, 9, 11
- };
-}
-
-private static final byte _JSON_integer_index_offsets[] = init__JSON_integer_index_offsets_0();
-
-
-private static byte[] init__JSON_integer_indicies_0()
-{
- return new byte [] {
- 0, 2, 3, 1, 2, 3, 1, 1, 4, 3, 4, 1,
- 0
- };
-}
-
-private static final byte _JSON_integer_indicies[] = init__JSON_integer_indicies_0();
-
-
-private static byte[] init__JSON_integer_trans_targs_0()
-{
- return new byte [] {
- 2, 0, 3, 4, 5
- };
-}
-
-private static final byte _JSON_integer_trans_targs[] = init__JSON_integer_trans_targs_0();
-
-
-private static byte[] init__JSON_integer_trans_actions_0()
-{
- return new byte [] {
- 0, 0, 0, 0, 1
- };
-}
-
-private static final byte _JSON_integer_trans_actions[] = init__JSON_integer_trans_actions_0();
-
-
-static final int JSON_integer_start = 1;
-static final int JSON_integer_first_final = 5;
-static final int JSON_integer_error = 0;
-
-static final int JSON_integer_en_main = 1;
-
-
-// line 457 "Parser.rl"
-
-
- ParserResult parseInteger(int p, int pe) {
- int cs = EVIL;
-
-
-// line 775 "Parser.java"
- {
- cs = JSON_integer_start;
- }
-
-// line 463 "Parser.rl"
- int memo = p;
-
-// line 783 "Parser.java"
- {
- int _klen;
- int _trans = 0;
- int _acts;
- int _nacts;
- int _keys;
- int _goto_targ = 0;
-
- _goto: while (true) {
- switch ( _goto_targ ) {
- case 0:
- if ( p == pe ) {
- _goto_targ = 4;
- continue _goto;
- }
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
-case 1:
- _match: do {
- _keys = _JSON_integer_key_offsets[cs];
- _trans = _JSON_integer_index_offsets[cs];
- _klen = _JSON_integer_single_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + _klen - 1;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( data[p] < _JSON_integer_trans_keys[_mid] )
- _upper = _mid - 1;
- else if ( data[p] > _JSON_integer_trans_keys[_mid] )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- break _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _JSON_integer_range_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + (_klen<<1) - 2;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( data[p] < _JSON_integer_trans_keys[_mid] )
- _upper = _mid - 2;
- else if ( data[p] > _JSON_integer_trans_keys[_mid+1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- break _match;
- }
- }
- _trans += _klen;
- }
- } while (false);
-
- _trans = _JSON_integer_indicies[_trans];
- cs = _JSON_integer_trans_targs[_trans];
-
- if ( _JSON_integer_trans_actions[_trans] != 0 ) {
- _acts = _JSON_integer_trans_actions[_trans];
- _nacts = (int) _JSON_integer_actions[_acts++];
- while ( _nacts-- > 0 )
- {
- switch ( _JSON_integer_actions[_acts++] )
- {
- case 0:
-// line 451 "Parser.rl"
- {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- }
- break;
-// line 870 "Parser.java"
- }
- }
- }
-
-case 2:
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
- if ( ++p != pe ) {
- _goto_targ = 1;
- continue _goto;
- }
-case 4:
-case 5:
- }
- break; }
- }
-
-// line 465 "Parser.rl"
-
- if (cs < JSON_integer_first_final) {
- return null;
- }
-
- ByteList num = absSubSequence(memo, p);
- // note: this is actually a shared string, but since it is temporary and
- // read-only, it doesn't really matter
- RubyString expr = RubyString.newStringLight(getRuntime(), num);
- RubyInteger number = RubyNumeric.str2inum(getRuntime(), expr, 10, true);
- return new ParserResult(number, p + 1);
- }
-
-
-// line 905 "Parser.java"
-private static byte[] init__JSON_float_actions_0()
-{
- return new byte [] {
- 0, 1, 0
- };
-}
-
-private static final byte _JSON_float_actions[] = init__JSON_float_actions_0();
-
-
-private static byte[] init__JSON_float_key_offsets_0()
-{
- return new byte [] {
- 0, 0, 4, 7, 10, 12, 18, 22, 24, 30, 35
- };
-}
-
-private static final byte _JSON_float_key_offsets[] = init__JSON_float_key_offsets_0();
-
-
-private static char[] init__JSON_float_trans_keys_0()
-{
- return new char [] {
- 45, 48, 49, 57, 48, 49, 57, 46, 69, 101, 48, 57,
- 69, 101, 45, 46, 48, 57, 43, 45, 48, 57, 48, 57,
- 69, 101, 45, 46, 48, 57, 46, 69, 101, 48, 57, 0
- };
-}
-
-private static final char _JSON_float_trans_keys[] = init__JSON_float_trans_keys_0();
-
-
-private static byte[] init__JSON_float_single_lengths_0()
-{
- return new byte [] {
- 0, 2, 1, 3, 0, 2, 2, 0, 2, 3, 0
- };
-}
-
-private static final byte _JSON_float_single_lengths[] = init__JSON_float_single_lengths_0();
-
-
-private static byte[] init__JSON_float_range_lengths_0()
-{
- return new byte [] {
- 0, 1, 1, 0, 1, 2, 1, 1, 2, 1, 0
- };
-}
-
-private static final byte _JSON_float_range_lengths[] = init__JSON_float_range_lengths_0();
-
-
-private static byte[] init__JSON_float_index_offsets_0()
-{
- return new byte [] {
- 0, 0, 4, 7, 11, 13, 18, 22, 24, 29, 34
- };
-}
-
-private static final byte _JSON_float_index_offsets[] = init__JSON_float_index_offsets_0();
-
-
-private static byte[] init__JSON_float_indicies_0()
-{
- return new byte [] {
- 0, 2, 3, 1, 2, 3, 1, 4, 5, 5, 1, 6,
- 1, 5, 5, 1, 6, 7, 8, 8, 9, 1, 9, 1,
- 1, 1, 1, 9, 7, 4, 5, 5, 3, 1, 1, 0
- };
-}
-
-private static final byte _JSON_float_indicies[] = init__JSON_float_indicies_0();
-
-
-private static byte[] init__JSON_float_trans_targs_0()
-{
- return new byte [] {
- 2, 0, 3, 9, 4, 6, 5, 10, 7, 8
- };
-}
-
-private static final byte _JSON_float_trans_targs[] = init__JSON_float_trans_targs_0();
-
-
-private static byte[] init__JSON_float_trans_actions_0()
-{
- return new byte [] {
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
- };
-}
-
-private static final byte _JSON_float_trans_actions[] = init__JSON_float_trans_actions_0();
-
-
-static final int JSON_float_start = 1;
-static final int JSON_float_first_final = 10;
-static final int JSON_float_error = 0;
-
-static final int JSON_float_en_main = 1;
-
-
-// line 493 "Parser.rl"
-
-
- ParserResult parseFloat(int p, int pe) {
- int cs = EVIL;
-
-
-// line 1014 "Parser.java"
- {
- cs = JSON_float_start;
- }
-
-// line 499 "Parser.rl"
- int memo = p;
-
-// line 1022 "Parser.java"
- {
- int _klen;
- int _trans = 0;
- int _acts;
- int _nacts;
- int _keys;
- int _goto_targ = 0;
-
- _goto: while (true) {
- switch ( _goto_targ ) {
- case 0:
- if ( p == pe ) {
- _goto_targ = 4;
- continue _goto;
- }
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
-case 1:
- _match: do {
- _keys = _JSON_float_key_offsets[cs];
- _trans = _JSON_float_index_offsets[cs];
- _klen = _JSON_float_single_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + _klen - 1;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( data[p] < _JSON_float_trans_keys[_mid] )
- _upper = _mid - 1;
- else if ( data[p] > _JSON_float_trans_keys[_mid] )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- break _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _JSON_float_range_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + (_klen<<1) - 2;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( data[p] < _JSON_float_trans_keys[_mid] )
- _upper = _mid - 2;
- else if ( data[p] > _JSON_float_trans_keys[_mid+1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- break _match;
- }
- }
- _trans += _klen;
- }
- } while (false);
-
- _trans = _JSON_float_indicies[_trans];
- cs = _JSON_float_trans_targs[_trans];
-
- if ( _JSON_float_trans_actions[_trans] != 0 ) {
- _acts = _JSON_float_trans_actions[_trans];
- _nacts = (int) _JSON_float_actions[_acts++];
- while ( _nacts-- > 0 )
- {
- switch ( _JSON_float_actions[_acts++] )
- {
- case 0:
-// line 484 "Parser.rl"
- {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- }
- break;
-// line 1109 "Parser.java"
- }
- }
- }
-
-case 2:
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
- if ( ++p != pe ) {
- _goto_targ = 1;
- continue _goto;
- }
-case 4:
-case 5:
- }
- break; }
- }
-
-// line 501 "Parser.rl"
-
- if (cs < JSON_float_first_final) {
- return null;
- }
-
- ByteList num = absSubSequence(memo, p);
- // note: this is actually a shared string, but since it is temporary and
- // read-only, it doesn't really matter
- RubyString expr = RubyString.newStringLight(getRuntime(), num);
- RubyFloat number = RubyNumeric.str2fnum(getRuntime(), expr, true);
- return new ParserResult(number, p + 1);
- }
-
-
-// line 1144 "Parser.java"
-private static byte[] init__JSON_string_actions_0()
-{
- return new byte [] {
- 0, 2, 0, 1
- };
-}
-
-private static final byte _JSON_string_actions[] = init__JSON_string_actions_0();
-
-
-private static byte[] init__JSON_string_key_offsets_0()
-{
- return new byte [] {
- 0, 0, 1, 5, 8, 14, 20, 26, 32
- };
-}
-
-private static final byte _JSON_string_key_offsets[] = init__JSON_string_key_offsets_0();
-
-
-private static char[] init__JSON_string_trans_keys_0()
-{
- return new char [] {
- 34, 34, 92, 0, 31, 117, 0, 31, 48, 57, 65, 70,
- 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70,
- 97, 102, 48, 57, 65, 70, 97, 102, 0
- };
-}
-
-private static final char _JSON_string_trans_keys[] = init__JSON_string_trans_keys_0();
-
-
-private static byte[] init__JSON_string_single_lengths_0()
-{
- return new byte [] {
- 0, 1, 2, 1, 0, 0, 0, 0, 0
- };
-}
-
-private static final byte _JSON_string_single_lengths[] = init__JSON_string_single_lengths_0();
-
-
-private static byte[] init__JSON_string_range_lengths_0()
-{
- return new byte [] {
- 0, 0, 1, 1, 3, 3, 3, 3, 0
- };
-}
-
-private static final byte _JSON_string_range_lengths[] = init__JSON_string_range_lengths_0();
-
-
-private static byte[] init__JSON_string_index_offsets_0()
-{
- return new byte [] {
- 0, 0, 2, 6, 9, 13, 17, 21, 25
- };
-}
-
-private static final byte _JSON_string_index_offsets[] = init__JSON_string_index_offsets_0();
-
-
-private static byte[] init__JSON_string_indicies_0()
-{
- return new byte [] {
- 0, 1, 2, 3, 1, 0, 4, 1, 0, 5, 5, 5,
- 1, 6, 6, 6, 1, 7, 7, 7, 1, 0, 0, 0,
- 1, 1, 0
- };
-}
-
-private static final byte _JSON_string_indicies[] = init__JSON_string_indicies_0();
-
-
-private static byte[] init__JSON_string_trans_targs_0()
-{
- return new byte [] {
- 2, 0, 8, 3, 4, 5, 6, 7
- };
-}
-
-private static final byte _JSON_string_trans_targs[] = init__JSON_string_trans_targs_0();
-
-
-private static byte[] init__JSON_string_trans_actions_0()
-{
- return new byte [] {
- 0, 0, 1, 0, 0, 0, 0, 0
- };
-}
-
-private static final byte _JSON_string_trans_actions[] = init__JSON_string_trans_actions_0();
-
-
-static final int JSON_string_start = 1;
-static final int JSON_string_first_final = 8;
-static final int JSON_string_error = 0;
-
-static final int JSON_string_en_main = 1;
-
-
-// line 545 "Parser.rl"
-
-
- ParserResult parseString(int p, int pe) {
- int cs = EVIL;
- IRubyObject result = null;
-
-
-// line 1254 "Parser.java"
- {
- cs = JSON_string_start;
- }
-
-// line 552 "Parser.rl"
- int memo = p;
-
-// line 1262 "Parser.java"
- {
- int _klen;
- int _trans = 0;
- int _acts;
- int _nacts;
- int _keys;
- int _goto_targ = 0;
-
- _goto: while (true) {
- switch ( _goto_targ ) {
- case 0:
- if ( p == pe ) {
- _goto_targ = 4;
- continue _goto;
- }
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
-case 1:
- _match: do {
- _keys = _JSON_string_key_offsets[cs];
- _trans = _JSON_string_index_offsets[cs];
- _klen = _JSON_string_single_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + _klen - 1;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( data[p] < _JSON_string_trans_keys[_mid] )
- _upper = _mid - 1;
- else if ( data[p] > _JSON_string_trans_keys[_mid] )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- break _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _JSON_string_range_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + (_klen<<1) - 2;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( data[p] < _JSON_string_trans_keys[_mid] )
- _upper = _mid - 2;
- else if ( data[p] > _JSON_string_trans_keys[_mid+1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- break _match;
- }
- }
- _trans += _klen;
- }
- } while (false);
-
- _trans = _JSON_string_indicies[_trans];
- cs = _JSON_string_trans_targs[_trans];
-
- if ( _JSON_string_trans_actions[_trans] != 0 ) {
- _acts = _JSON_string_trans_actions[_trans];
- _nacts = (int) _JSON_string_actions[_acts++];
- while ( _nacts-- > 0 )
- {
- switch ( _JSON_string_actions[_acts++] )
- {
- case 0:
-// line 520 "Parser.rl"
- {
- int offset = byteList.begin();
- ByteList decoded = decoder.decode(byteList, memo + 1 - offset,
- p - offset);
- result = getRuntime().newString(decoded);
- if (result == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- {p = (( p + 1))-1;}
- }
- }
- break;
- case 1:
-// line 533 "Parser.rl"
- {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- }
- break;
-// line 1364 "Parser.java"
- }
- }
- }
-
-case 2:
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
- if ( ++p != pe ) {
- _goto_targ = 1;
- continue _goto;
- }
-case 4:
-case 5:
- }
- break; }
- }
-
-// line 554 "Parser.rl"
-
- if (parser.createAdditions) {
- RubyHash match_string = parser.match_string;
- if (match_string != null) {
- final IRubyObject[] memoArray = { result, null };
- try {
- match_string.visitAll(new RubyHash.Visitor() {
- @Override
- public void visit(IRubyObject pattern, IRubyObject klass) {
- if (pattern.callMethod(context, "===", memoArray[0]).isTrue()) {
- memoArray[1] = klass;
- throw JumpException.SPECIAL_JUMP;
- }
- }
- });
- } catch (JumpException e) { }
- if (memoArray[1] != null) {
- RubyClass klass = (RubyClass) memoArray[1];
- if (klass.respondsTo("json_creatable?") &&
- klass.callMethod(context, "json_creatable?").isTrue()) {
- result = klass.callMethod(context, "json_create", result);
- }
- }
- }
- }
-
- if (cs >= JSON_string_first_final && result != null) {
- return new ParserResult(result, p + 1);
- } else {
- return null;
- }
- }
-
-
-// line 1419 "Parser.java"
-private static byte[] init__JSON_array_actions_0()
-{
- return new byte [] {
- 0, 1, 0, 1, 1
- };
-}
-
-private static final byte _JSON_array_actions[] = init__JSON_array_actions_0();
-
-
-private static byte[] init__JSON_array_key_offsets_0()
-{
- return new byte [] {
- 0, 0, 1, 18, 25, 41, 43, 44, 46, 47, 49, 50,
- 52, 53, 55, 56, 58, 59
- };
-}
-
-private static final byte _JSON_array_key_offsets[] = init__JSON_array_key_offsets_0();
-
-
-private static char[] init__JSON_array_trans_keys_0()
-{
- return new char [] {
- 91, 13, 32, 34, 45, 47, 73, 78, 91, 93, 102, 110,
- 116, 123, 9, 10, 48, 57, 13, 32, 44, 47, 93, 9,
- 10, 13, 32, 34, 45, 47, 73, 78, 91, 102, 110, 116,
- 123, 9, 10, 48, 57, 42, 47, 42, 42, 47, 10, 42,
- 47, 42, 42, 47, 10, 42, 47, 42, 42, 47, 10, 0
- };
-}
-
-private static final char _JSON_array_trans_keys[] = init__JSON_array_trans_keys_0();
-
-
-private static byte[] init__JSON_array_single_lengths_0()
-{
- return new byte [] {
- 0, 1, 13, 5, 12, 2, 1, 2, 1, 2, 1, 2,
- 1, 2, 1, 2, 1, 0
- };
-}
-
-private static final byte _JSON_array_single_lengths[] = init__JSON_array_single_lengths_0();
-
-
-private static byte[] init__JSON_array_range_lengths_0()
-{
- return new byte [] {
- 0, 0, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-}
-
-private static final byte _JSON_array_range_lengths[] = init__JSON_array_range_lengths_0();
-
-
-private static byte[] init__JSON_array_index_offsets_0()
-{
- return new byte [] {
- 0, 0, 2, 18, 25, 40, 43, 45, 48, 50, 53, 55,
- 58, 60, 63, 65, 68, 70
- };
-}
-
-private static final byte _JSON_array_index_offsets[] = init__JSON_array_index_offsets_0();
-
-
-private static byte[] init__JSON_array_indicies_0()
-{
- return new byte [] {
- 0, 1, 0, 0, 2, 2, 3, 2, 2, 2, 4, 2,
- 2, 2, 2, 0, 2, 1, 5, 5, 6, 7, 4, 5,
- 1, 6, 6, 2, 2, 8, 2, 2, 2, 2, 2, 2,
- 2, 6, 2, 1, 9, 10, 1, 11, 9, 11, 6, 9,
- 6, 10, 12, 13, 1, 14, 12, 14, 5, 12, 5, 13,
- 15, 16, 1, 17, 15, 17, 0, 15, 0, 16, 1, 0
- };
-}
-
-private static final byte _JSON_array_indicies[] = init__JSON_array_indicies_0();
-
-
-private static byte[] init__JSON_array_trans_targs_0()
-{
- return new byte [] {
- 2, 0, 3, 13, 17, 3, 4, 9, 5, 6, 8, 7,
- 10, 12, 11, 14, 16, 15
- };
-}
-
-private static final byte _JSON_array_trans_targs[] = init__JSON_array_trans_targs_0();
-
-
-private static byte[] init__JSON_array_trans_actions_0()
-{
- return new byte [] {
- 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-}
-
-private static final byte _JSON_array_trans_actions[] = init__JSON_array_trans_actions_0();
-
-
-static final int JSON_array_start = 1;
-static final int JSON_array_first_final = 17;
-static final int JSON_array_error = 0;
-
-static final int JSON_array_en_main = 1;
-
-
-// line 620 "Parser.rl"
-
-
- ParserResult parseArray(int p, int pe) {
- int cs = EVIL;
-
- if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) {
- throw newException(Utils.M_NESTING_ERROR,
- "nesting of " + currentNesting + " is too deep");
- }
-
- // this is guaranteed to be a RubyArray due to the earlier
- // allocator test at OptionsReader#getClass
- RubyArray result =
- (RubyArray)parser.arrayClass.newInstance(context,
- IRubyObject.NULL_ARRAY, Block.NULL_BLOCK);
-
-
-// line 1550 "Parser.java"
- {
- cs = JSON_array_start;
- }
-
-// line 637 "Parser.rl"
-
-// line 1557 "Parser.java"
- {
- int _klen;
- int _trans = 0;
- int _acts;
- int _nacts;
- int _keys;
- int _goto_targ = 0;
-
- _goto: while (true) {
- switch ( _goto_targ ) {
- case 0:
- if ( p == pe ) {
- _goto_targ = 4;
- continue _goto;
- }
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
-case 1:
- _match: do {
- _keys = _JSON_array_key_offsets[cs];
- _trans = _JSON_array_index_offsets[cs];
- _klen = _JSON_array_single_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + _klen - 1;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( data[p] < _JSON_array_trans_keys[_mid] )
- _upper = _mid - 1;
- else if ( data[p] > _JSON_array_trans_keys[_mid] )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- break _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _JSON_array_range_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + (_klen<<1) - 2;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( data[p] < _JSON_array_trans_keys[_mid] )
- _upper = _mid - 2;
- else if ( data[p] > _JSON_array_trans_keys[_mid+1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- break _match;
- }
- }
- _trans += _klen;
- }
- } while (false);
-
- _trans = _JSON_array_indicies[_trans];
- cs = _JSON_array_trans_targs[_trans];
-
- if ( _JSON_array_trans_actions[_trans] != 0 ) {
- _acts = _JSON_array_trans_actions[_trans];
- _nacts = (int) _JSON_array_actions[_acts++];
- while ( _nacts-- > 0 )
- {
- switch ( _JSON_array_actions[_acts++] )
- {
- case 0:
-// line 593 "Parser.rl"
- {
- ParserResult res = parseValue(p, pe);
- if (res == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- result.append(res.result);
- {p = (( res.p))-1;}
- }
- }
- break;
- case 1:
-// line 604 "Parser.rl"
- {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- }
- break;
-// line 1657 "Parser.java"
- }
- }
- }
-
-case 2:
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
- if ( ++p != pe ) {
- _goto_targ = 1;
- continue _goto;
- }
-case 4:
-case 5:
- }
- break; }
- }
-
-// line 638 "Parser.rl"
-
- if (cs >= JSON_array_first_final) {
- return new ParserResult(result, p + 1);
- } else {
- throw unexpectedToken(p, pe);
- }
- }
-
-
-// line 1687 "Parser.java"
-private static byte[] init__JSON_object_actions_0()
-{
- return new byte [] {
- 0, 1, 0, 1, 1, 1, 2
- };
-}
-
-private static final byte _JSON_object_actions[] = init__JSON_object_actions_0();
-
-
-private static byte[] init__JSON_object_key_offsets_0()
-{
- return new byte [] {
- 0, 0, 1, 8, 14, 16, 17, 19, 20, 36, 43, 49,
- 51, 52, 54, 55, 57, 58, 60, 61, 63, 64, 66, 67,
- 69, 70, 72, 73
- };
-}
-
-private static final byte _JSON_object_key_offsets[] = init__JSON_object_key_offsets_0();
-
-
-private static char[] init__JSON_object_trans_keys_0()
-{
- return new char [] {
- 123, 13, 32, 34, 47, 125, 9, 10, 13, 32, 47, 58,
- 9, 10, 42, 47, 42, 42, 47, 10, 13, 32, 34, 45,
- 47, 73, 78, 91, 102, 110, 116, 123, 9, 10, 48, 57,
- 13, 32, 44, 47, 125, 9, 10, 13, 32, 34, 47, 9,
- 10, 42, 47, 42, 42, 47, 10, 42, 47, 42, 42, 47,
- 10, 42, 47, 42, 42, 47, 10, 42, 47, 42, 42, 47,
- 10, 0
- };
-}
-
-private static final char _JSON_object_trans_keys[] = init__JSON_object_trans_keys_0();
-
-
-private static byte[] init__JSON_object_single_lengths_0()
-{
- return new byte [] {
- 0, 1, 5, 4, 2, 1, 2, 1, 12, 5, 4, 2,
- 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
- 1, 2, 1, 0
- };
-}
-
-private static final byte _JSON_object_single_lengths[] = init__JSON_object_single_lengths_0();
-
-
-private static byte[] init__JSON_object_range_lengths_0()
-{
- return new byte [] {
- 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
- };
-}
-
-private static final byte _JSON_object_range_lengths[] = init__JSON_object_range_lengths_0();
-
-
-private static byte[] init__JSON_object_index_offsets_0()
-{
- return new byte [] {
- 0, 0, 2, 9, 15, 18, 20, 23, 25, 40, 47, 53,
- 56, 58, 61, 63, 66, 68, 71, 73, 76, 78, 81, 83,
- 86, 88, 91, 93
- };
-}
-
-private static final byte _JSON_object_index_offsets[] = init__JSON_object_index_offsets_0();
-
-
-private static byte[] init__JSON_object_indicies_0()
-{
- return new byte [] {
- 0, 1, 0, 0, 2, 3, 4, 0, 1, 5, 5, 6,
- 7, 5, 1, 8, 9, 1, 10, 8, 10, 5, 8, 5,
- 9, 7, 7, 11, 11, 12, 11, 11, 11, 11, 11, 11,
- 11, 7, 11, 1, 13, 13, 14, 15, 4, 13, 1, 14,
- 14, 2, 16, 14, 1, 17, 18, 1, 19, 17, 19, 14,
- 17, 14, 18, 20, 21, 1, 22, 20, 22, 13, 20, 13,
- 21, 23, 24, 1, 25, 23, 25, 7, 23, 7, 24, 26,
- 27, 1, 28, 26, 28, 0, 26, 0, 27, 1, 0
- };
-}
-
-private static final byte _JSON_object_indicies[] = init__JSON_object_indicies_0();
-
-
-private static byte[] init__JSON_object_trans_targs_0()
-{
- return new byte [] {
- 2, 0, 3, 23, 27, 3, 4, 8, 5, 7, 6, 9,
- 19, 9, 10, 15, 11, 12, 14, 13, 16, 18, 17, 20,
- 22, 21, 24, 26, 25
- };
-}
-
-private static final byte _JSON_object_trans_targs[] = init__JSON_object_trans_targs_0();
-
-
-private static byte[] init__JSON_object_trans_actions_0()
-{
- return new byte [] {
- 0, 0, 3, 0, 5, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
- };
-}
-
-private static final byte _JSON_object_trans_actions[] = init__JSON_object_trans_actions_0();
-
-
-static final int JSON_object_start = 1;
-static final int JSON_object_first_final = 27;
-static final int JSON_object_error = 0;
-
-static final int JSON_object_en_main = 1;
-
-
-// line 694 "Parser.rl"
-
-
- ParserResult parseObject(int p, int pe) {
- int cs = EVIL;
- IRubyObject lastName = null;
-
- if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) {
- throw newException(Utils.M_NESTING_ERROR,
- "nesting of " + currentNesting + " is too deep");
- }
-
- // this is guaranteed to be a RubyHash due to the earlier
- // allocator test at OptionsReader#getClass
- RubyHash result =
- (RubyHash)parser.objectClass.newInstance(context,
- IRubyObject.NULL_ARRAY, Block.NULL_BLOCK);
-
-
-// line 1829 "Parser.java"
- {
- cs = JSON_object_start;
- }
-
-// line 712 "Parser.rl"
-
-// line 1836 "Parser.java"
- {
- int _klen;
- int _trans = 0;
- int _acts;
- int _nacts;
- int _keys;
- int _goto_targ = 0;
-
- _goto: while (true) {
- switch ( _goto_targ ) {
- case 0:
- if ( p == pe ) {
- _goto_targ = 4;
- continue _goto;
- }
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
-case 1:
- _match: do {
- _keys = _JSON_object_key_offsets[cs];
- _trans = _JSON_object_index_offsets[cs];
- _klen = _JSON_object_single_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + _klen - 1;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( data[p] < _JSON_object_trans_keys[_mid] )
- _upper = _mid - 1;
- else if ( data[p] > _JSON_object_trans_keys[_mid] )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- break _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _JSON_object_range_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + (_klen<<1) - 2;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( data[p] < _JSON_object_trans_keys[_mid] )
- _upper = _mid - 2;
- else if ( data[p] > _JSON_object_trans_keys[_mid+1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- break _match;
- }
- }
- _trans += _klen;
- }
- } while (false);
-
- _trans = _JSON_object_indicies[_trans];
- cs = _JSON_object_trans_targs[_trans];
-
- if ( _JSON_object_trans_actions[_trans] != 0 ) {
- _acts = _JSON_object_trans_actions[_trans];
- _nacts = (int) _JSON_object_actions[_acts++];
- while ( _nacts-- > 0 )
- {
- switch ( _JSON_object_actions[_acts++] )
- {
- case 0:
-// line 652 "Parser.rl"
- {
- ParserResult res = parseValue(p, pe);
- if (res == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- result.op_aset(context, lastName, res.result);
- {p = (( res.p))-1;}
- }
- }
- break;
- case 1:
-// line 663 "Parser.rl"
- {
- ParserResult res = parseString(p, pe);
- if (res == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- RubyString name = (RubyString)res.result;
- if (parser.symbolizeNames) {
- lastName = context.getRuntime().is1_9()
- ? name.intern19()
- : name.intern();
- } else {
- lastName = name;
- }
- {p = (( res.p))-1;}
- }
- }
- break;
- case 2:
-// line 681 "Parser.rl"
- {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- }
- break;
-// line 1956 "Parser.java"
- }
- }
- }
-
-case 2:
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
- if ( ++p != pe ) {
- _goto_targ = 1;
- continue _goto;
- }
-case 4:
-case 5:
- }
- break; }
- }
-
-// line 713 "Parser.rl"
-
- if (cs < JSON_object_first_final) {
- return null;
- }
-
- IRubyObject returnedResult = result;
-
- // attempt to de-serialize object
- if (parser.createAdditions) {
- IRubyObject vKlassName = result.op_aref(context, parser.createId);
- if (!vKlassName.isNil()) {
- // might throw ArgumentError, we let it propagate
- IRubyObject klass = parser.info.jsonModule.
- callMethod(context, "deep_const_get", vKlassName);
- if (klass.respondsTo("json_creatable?") &&
- klass.callMethod(context, "json_creatable?").isTrue()) {
-
- returnedResult = klass.callMethod(context, "json_create", result);
- }
- }
- }
- return new ParserResult(returnedResult, p + 1);
- }
-
-
-// line 2002 "Parser.java"
-private static byte[] init__JSON_actions_0()
-{
- return new byte [] {
- 0, 1, 0, 1, 1
- };
-}
-
-private static final byte _JSON_actions[] = init__JSON_actions_0();
-
-
-private static byte[] init__JSON_key_offsets_0()
-{
- return new byte [] {
- 0, 0, 7, 9, 10, 12, 13, 15, 16, 18, 19
- };
-}
-
-private static final byte _JSON_key_offsets[] = init__JSON_key_offsets_0();
-
-
-private static char[] init__JSON_trans_keys_0()
-{
- return new char [] {
- 13, 32, 47, 91, 123, 9, 10, 42, 47, 42, 42, 47,
- 10, 42, 47, 42, 42, 47, 10, 13, 32, 47, 9, 10,
- 0
- };
-}
-
-private static final char _JSON_trans_keys[] = init__JSON_trans_keys_0();
-
-
-private static byte[] init__JSON_single_lengths_0()
-{
- return new byte [] {
- 0, 5, 2, 1, 2, 1, 2, 1, 2, 1, 3
- };
-}
-
-private static final byte _JSON_single_lengths[] = init__JSON_single_lengths_0();
-
-
-private static byte[] init__JSON_range_lengths_0()
-{
- return new byte [] {
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1
- };
-}
-
-private static final byte _JSON_range_lengths[] = init__JSON_range_lengths_0();
-
-
-private static byte[] init__JSON_index_offsets_0()
-{
- return new byte [] {
- 0, 0, 7, 10, 12, 15, 17, 20, 22, 25, 27
- };
-}
-
-private static final byte _JSON_index_offsets[] = init__JSON_index_offsets_0();
-
-
-private static byte[] init__JSON_indicies_0()
-{
- return new byte [] {
- 0, 0, 2, 3, 4, 0, 1, 5, 6, 1, 7, 5,
- 7, 0, 5, 0, 6, 8, 9, 1, 10, 8, 10, 11,
- 8, 11, 9, 11, 11, 12, 11, 1, 0
- };
-}
-
-private static final byte _JSON_indicies[] = init__JSON_indicies_0();
-
-
-private static byte[] init__JSON_trans_targs_0()
-{
- return new byte [] {
- 1, 0, 2, 10, 10, 3, 5, 4, 7, 9, 8, 10,
- 6
- };
-}
-
-private static final byte _JSON_trans_targs[] = init__JSON_trans_targs_0();
-
-
-private static byte[] init__JSON_trans_actions_0()
-{
- return new byte [] {
- 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0,
- 0
- };
-}
-
-private static final byte _JSON_trans_actions[] = init__JSON_trans_actions_0();
-
-
-static final int JSON_start = 1;
-static final int JSON_first_final = 10;
-static final int JSON_error = 0;
-
-static final int JSON_en_main = 1;
-
-
-// line 771 "Parser.rl"
-
-
- public IRubyObject parse() {
- int cs = EVIL;
- int p, pe;
- IRubyObject result = null;
-
-
-// line 2115 "Parser.java"
- {
- cs = JSON_start;
- }
-
-// line 779 "Parser.rl"
- p = byteList.begin();
- pe = p + byteList.length();
-
-// line 2124 "Parser.java"
- {
- int _klen;
- int _trans = 0;
- int _acts;
- int _nacts;
- int _keys;
- int _goto_targ = 0;
-
- _goto: while (true) {
- switch ( _goto_targ ) {
- case 0:
- if ( p == pe ) {
- _goto_targ = 4;
- continue _goto;
- }
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
-case 1:
- _match: do {
- _keys = _JSON_key_offsets[cs];
- _trans = _JSON_index_offsets[cs];
- _klen = _JSON_single_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + _klen - 1;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( data[p] < _JSON_trans_keys[_mid] )
- _upper = _mid - 1;
- else if ( data[p] > _JSON_trans_keys[_mid] )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- break _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _JSON_range_lengths[cs];
- if ( _klen > 0 ) {
- int _lower = _keys;
- int _mid;
- int _upper = _keys + (_klen<<1) - 2;
- while (true) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( data[p] < _JSON_trans_keys[_mid] )
- _upper = _mid - 2;
- else if ( data[p] > _JSON_trans_keys[_mid+1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- break _match;
- }
- }
- _trans += _klen;
- }
- } while (false);
-
- _trans = _JSON_indicies[_trans];
- cs = _JSON_trans_targs[_trans];
-
- if ( _JSON_trans_actions[_trans] != 0 ) {
- _acts = _JSON_trans_actions[_trans];
- _nacts = (int) _JSON_actions[_acts++];
- while ( _nacts-- > 0 )
- {
- switch ( _JSON_actions[_acts++] )
- {
- case 0:
-// line 743 "Parser.rl"
- {
- currentNesting = 1;
- ParserResult res = parseObject(p, pe);
- if (res == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- result = res.result;
- {p = (( res.p))-1;}
- }
- }
- break;
- case 1:
-// line 755 "Parser.rl"
- {
- currentNesting = 1;
- ParserResult res = parseArray(p, pe);
- if (res == null) {
- p--;
- { p += 1; _goto_targ = 5; if (true) continue _goto;}
- } else {
- result = res.result;
- {p = (( res.p))-1;}
- }
- }
- break;
-// line 2232 "Parser.java"
- }
- }
- }
-
-case 2:
- if ( cs == 0 ) {
- _goto_targ = 5;
- continue _goto;
- }
- if ( ++p != pe ) {
- _goto_targ = 1;
- continue _goto;
- }
-case 4:
-case 5:
- }
- break; }
- }
-
-// line 782 "Parser.rl"
-
- if (cs >= JSON_first_final && p == pe) {
- return result;
- } else {
- throw unexpectedToken(p, pe);
- }
- }
-
- /**
- * Returns a subsequence of the source ByteList, based on source
- * array byte offsets (i.e., the ByteList's own begin offset is not
- * automatically added).
- * @param start
- * @param end
- */
- private ByteList absSubSequence(int absStart, int absEnd) {
- int offset = byteList.begin();
- return (ByteList)byteList.subSequence(absStart - offset,
- absEnd - offset);
- }
-
- /**
- * Retrieves a constant directly descended from the <code>JSON</code> module.
- * @param name The constant name
- */
- private IRubyObject getConstant(String name) {
- return parser.info.jsonModule.getConstant(name);
- }
-
- private RaiseException newException(String className, String message) {
- return Utils.newException(context, className, message);
- }
-
- private RaiseException newException(String className, RubyString message) {
- return Utils.newException(context, className, message);
- }
-
- private RaiseException newException(String className,
- String messageBegin, ByteList messageEnd) {
- return newException(className,
- getRuntime().newString(messageBegin).cat(messageEnd));
- }
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/Parser.rl b/vendor/gems/json-1.5.1/java/src/json/ext/Parser.rl
deleted file mode 100644
index e576b9790..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/Parser.rl
+++ /dev/null
@@ -1,825 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.Ruby;
-import org.jruby.RubyArray;
-import org.jruby.RubyClass;
-import org.jruby.RubyEncoding;
-import org.jruby.RubyFloat;
-import org.jruby.RubyHash;
-import org.jruby.RubyInteger;
-import org.jruby.RubyModule;
-import org.jruby.RubyNumeric;
-import org.jruby.RubyObject;
-import org.jruby.RubyString;
-import org.jruby.anno.JRubyMethod;
-import org.jruby.exceptions.JumpException;
-import org.jruby.exceptions.RaiseException;
-import org.jruby.runtime.Block;
-import org.jruby.runtime.ObjectAllocator;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.Visibility;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.ByteList;
-
-/**
- * The <code>JSON::Ext::Parser</code> class.
- *
- * <p>This is the JSON parser implemented as a Java class. To use it as the
- * standard parser, set
- * <pre>JSON.parser = JSON::Ext::Parser</pre>
- * This is performed for you when you <code>include "json/ext"</code>.
- *
- * <p>This class does not perform the actual parsing, just acts as an interface
- * to Ruby code. When the {@link #parse()} method is invoked, a
- * Parser.ParserSession object is instantiated, which handles the process.
- *
- * @author mernen
- */
-public class Parser extends RubyObject {
- private final RuntimeInfo info;
- private RubyString vSource;
- private RubyString createId;
- private boolean createAdditions;
- private int maxNesting;
- private boolean allowNaN;
- private boolean symbolizeNames;
- private RubyClass objectClass;
- private RubyClass arrayClass;
- private RubyHash match_string;
-
- private static final int DEFAULT_MAX_NESTING = 19;
-
- private static final String JSON_MINUS_INFINITY = "-Infinity";
- // constant names in the JSON module containing those values
- private static final String CONST_NAN = "NaN";
- private static final String CONST_INFINITY = "Infinity";
- private static final String CONST_MINUS_INFINITY = "MinusInfinity";
-
- static final ObjectAllocator ALLOCATOR = new ObjectAllocator() {
- public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
- return new Parser(runtime, klazz);
- }
- };
-
- /**
- * Multiple-value return for internal parser methods.
- *
- * <p>All the <code>parse<var>Stuff</var></code> methods return instances of
- * <code>ParserResult</code> when successful, or <code>null</code> when
- * there's a problem with the input data.
- */
- static final class ParserResult {
- /**
- * The result of the successful parsing. Should never be
- * <code>null</code>.
- */
- final IRubyObject result;
- /**
- * The point where the parser returned.
- */
- final int p;
-
- ParserResult(IRubyObject result, int p) {
- this.result = result;
- this.p = p;
- }
- }
-
- public Parser(Ruby runtime, RubyClass metaClass) {
- super(runtime, metaClass);
- info = RuntimeInfo.forRuntime(runtime);
- }
-
- /**
- * <code>Parser.new(source, opts = {})</code>
- *
- * <p>Creates a new <code>JSON::Ext::Parser</code> instance for the string
- * <code>source</code>.
- * It will be configured by the <code>opts</code> Hash.
- * <code>opts</code> can have the following keys:
- *
- * <dl>
- * <dt><code>:max_nesting</code>
- * <dd>The maximum depth of nesting allowed in the parsed data
- * structures. Disable depth checking with <code>:max_nesting => false|nil|0</code>,
- * it defaults to 19.
- *
- * <dt><code>:allow_nan</code>
- * <dd>If set to <code>true</code>, allow <code>NaN</code>,
- * <code>Infinity</code> and <code>-Infinity</code> in defiance of RFC 4627
- * to be parsed by the Parser. This option defaults to <code>false</code>.
- *
- * <dt><code>:symbolize_names</code>
- * <dd>If set to <code>true</code>, returns symbols for the names (keys) in
- * a JSON object. Otherwise strings are returned, which is also the default.
- *
- * <dt><code>:create_additions</code>
- * <dd>If set to <code>false</code>, the Parser doesn't create additions
- * even if a matchin class and <code>create_id</code> was found. This option
- * defaults to <code>true</code>.
- *
- * <dt><code>:object_class</code>
- * <dd>Defaults to Hash.
- *
- * <dt><code>:array_class</code>
- * <dd>Defaults to Array.
- * </dl>
- */
- @JRubyMethod(name = "new", required = 1, optional = 1, meta = true)
- public static IRubyObject newInstance(IRubyObject clazz, IRubyObject[] args, Block block) {
- Parser parser = (Parser)((RubyClass)clazz).allocate();
-
- parser.callInit(args, block);
-
- return parser;
- }
-
- @JRubyMethod(required = 1, optional = 1, visibility = Visibility.PRIVATE)
- public IRubyObject initialize(ThreadContext context, IRubyObject[] args) {
- Ruby runtime = context.getRuntime();
- RubyString source = convertEncoding(context, args[0].convertToString());
-
- OptionsReader opts = new OptionsReader(context, args.length > 1 ? args[1] : null);
- this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING);
- this.allowNaN = opts.getBool("allow_nan", false);
- this.symbolizeNames = opts.getBool("symbolize_names", false);
- this.createId = opts.getString("create_id", getCreateId(context));
- this.createAdditions = opts.getBool("create_additions", true);
- this.objectClass = opts.getClass("object_class", runtime.getHash());
- this.arrayClass = opts.getClass("array_class", runtime.getArray());
- this.match_string = opts.getHash("match_string");
-
- this.vSource = source;
- return this;
- }
-
- /**
- * Checks the given string's encoding. If a non-UTF-8 encoding is detected,
- * a converted copy is returned.
- * Returns the source string if no conversion is needed.
- */
- private RubyString convertEncoding(ThreadContext context, RubyString source) {
- ByteList bl = source.getByteList();
- int len = bl.length();
- if (len < 2) {
- throw Utils.newException(context, Utils.M_PARSER_ERROR,
- "A JSON text must at least contain two octets!");
- }
-
- if (info.encodingsSupported()) {
- RubyEncoding encoding = (RubyEncoding)source.encoding(context);
- if (encoding != info.ascii8bit) {
- return (RubyString)source.encode(context, info.utf8);
- }
-
- String sniffedEncoding = sniffByteList(bl);
- if (sniffedEncoding == null) return source; // assume UTF-8
- return reinterpretEncoding(context, source, sniffedEncoding);
- }
-
- String sniffedEncoding = sniffByteList(bl);
- if (sniffedEncoding == null) return source; // assume UTF-8
- Ruby runtime = context.getRuntime();
- return (RubyString)info.jsonModule.
- callMethod(context, "iconv",
- new IRubyObject[] {
- runtime.newString("utf-8"),
- runtime.newString(sniffedEncoding),
- source});
- }
-
- /**
- * Checks the first four bytes of the given ByteList to infer its encoding,
- * using the principle demonstrated on section 3 of RFC 4627 (JSON).
- */
- private static String sniffByteList(ByteList bl) {
- if (bl.length() < 4) return null;
- if (bl.get(0) == 0 && bl.get(2) == 0) {
- return bl.get(1) == 0 ? "utf-32be" : "utf-16be";
- }
- if (bl.get(1) == 0 && bl.get(3) == 0) {
- return bl.get(2) == 0 ? "utf-32le" : "utf-16le";
- }
- return null;
- }
-
- /**
- * Assumes the given (binary) RubyString to be in the given encoding, then
- * converts it to UTF-8.
- */
- private RubyString reinterpretEncoding(ThreadContext context,
- RubyString str, String sniffedEncoding) {
- RubyEncoding actualEncoding = info.getEncoding(context, sniffedEncoding);
- RubyEncoding targetEncoding = info.utf8;
- RubyString dup = (RubyString)str.dup();
- dup.force_encoding(context, actualEncoding);
- return (RubyString)dup.encode_bang(context, targetEncoding);
- }
-
- /**
- * <code>Parser#parse()</code>
- *
- * <p>Parses the current JSON text <code>source</code> and returns the
- * complete data structure as a result.
- */
- @JRubyMethod
- public IRubyObject parse(ThreadContext context) {
- return new ParserSession(this, context).parse();
- }
-
- /**
- * <code>Parser#source()</code>
- *
- * <p>Returns a copy of the current <code>source</code> string, that was
- * used to construct this Parser.
- */
- @JRubyMethod(name = "source")
- public IRubyObject source_get() {
- return vSource.dup();
- }
-
- /**
- * Queries <code>JSON.create_id</code>. Returns <code>null</code> if it is
- * set to <code>nil</code> or <code>false</code>, and a String if not.
- */
- private RubyString getCreateId(ThreadContext context) {
- IRubyObject v = info.jsonModule.callMethod(context, "create_id");
- return v.isTrue() ? v.convertToString() : null;
- }
-
- /**
- * A string parsing session.
- *
- * <p>Once a ParserSession is instantiated, the source string should not
- * change until the parsing is complete. The ParserSession object assumes
- * the source {@link RubyString} is still associated to its original
- * {@link ByteList}, which in turn must still be bound to the same
- * <code>byte[]</code> value (and on the same offset).
- */
- // Ragel uses lots of fall-through
- @SuppressWarnings("fallthrough")
- private static class ParserSession {
- private final Parser parser;
- private final ThreadContext context;
- private final ByteList byteList;
- private final byte[] data;
- private final StringDecoder decoder;
- private int currentNesting = 0;
-
- // initialization value for all state variables.
- // no idea about the origins of this value, ask Flori ;)
- private static final int EVIL = 0x666;
-
- private ParserSession(Parser parser, ThreadContext context) {
- this.parser = parser;
- this.context = context;
- this.byteList = parser.vSource.getByteList();
- this.data = byteList.unsafeBytes();
- this.decoder = new StringDecoder(context);
- }
-
- private RaiseException unexpectedToken(int absStart, int absEnd) {
- RubyString msg = getRuntime().newString("unexpected token at '")
- .cat(data, absStart, absEnd - absStart)
- .cat((byte)'\'');
- return newException(Utils.M_PARSER_ERROR, msg);
- }
-
- private Ruby getRuntime() {
- return context.getRuntime();
- }
-
- %%{
- machine JSON_common;
-
- cr = '\n';
- cr_neg = [^\n];
- ws = [ \t\r\n];
- c_comment = '/*' ( any* - (any* '*/' any* ) ) '*/';
- cpp_comment = '//' cr_neg* cr;
- comment = c_comment | cpp_comment;
- ignore = ws | comment;
- name_separator = ':';
- value_separator = ',';
- Vnull = 'null';
- Vfalse = 'false';
- Vtrue = 'true';
- VNaN = 'NaN';
- VInfinity = 'Infinity';
- VMinusInfinity = '-Infinity';
- begin_value = [nft"\-[{NI] | digit;
- begin_object = '{';
- end_object = '}';
- begin_array = '[';
- end_array = ']';
- begin_string = '"';
- begin_name = begin_string;
- begin_number = digit | '-';
- }%%
-
- %%{
- machine JSON_value;
- include JSON_common;
-
- write data;
-
- action parse_null {
- result = getRuntime().getNil();
- }
- action parse_false {
- result = getRuntime().getFalse();
- }
- action parse_true {
- result = getRuntime().getTrue();
- }
- action parse_nan {
- if (parser.allowNaN) {
- result = getConstant(CONST_NAN);
- } else {
- throw unexpectedToken(p - 2, pe);
- }
- }
- action parse_infinity {
- if (parser.allowNaN) {
- result = getConstant(CONST_INFINITY);
- } else {
- throw unexpectedToken(p - 7, pe);
- }
- }
- action parse_number {
- if (pe > fpc + 9 &&
- absSubSequence(fpc, fpc + 9).toString().equals(JSON_MINUS_INFINITY)) {
-
- if (parser.allowNaN) {
- result = getConstant(CONST_MINUS_INFINITY);
- fexec p + 10;
- fhold;
- fbreak;
- } else {
- throw unexpectedToken(p, pe);
- }
- }
- ParserResult res = parseFloat(fpc, pe);
- if (res != null) {
- result = res.result;
- fexec res.p;
- }
- res = parseInteger(fpc, pe);
- if (res != null) {
- result = res.result;
- fexec res.p;
- }
- fhold;
- fbreak;
- }
- action parse_string {
- ParserResult res = parseString(fpc, pe);
- if (res == null) {
- fhold;
- fbreak;
- } else {
- result = res.result;
- fexec res.p;
- }
- }
- action parse_array {
- currentNesting++;
- ParserResult res = parseArray(fpc, pe);
- currentNesting--;
- if (res == null) {
- fhold;
- fbreak;
- } else {
- result = res.result;
- fexec res.p;
- }
- }
- action parse_object {
- currentNesting++;
- ParserResult res = parseObject(fpc, pe);
- currentNesting--;
- if (res == null) {
- fhold;
- fbreak;
- } else {
- result = res.result;
- fexec res.p;
- }
- }
- action exit {
- fhold;
- fbreak;
- }
-
- main := ( Vnull @parse_null |
- Vfalse @parse_false |
- Vtrue @parse_true |
- VNaN @parse_nan |
- VInfinity @parse_infinity |
- begin_number >parse_number |
- begin_string >parse_string |
- begin_array >parse_array |
- begin_object >parse_object
- ) %*exit;
- }%%
-
- ParserResult parseValue(int p, int pe) {
- int cs = EVIL;
- IRubyObject result = null;
-
- %% write init;
- %% write exec;
-
- if (cs >= JSON_value_first_final && result != null) {
- return new ParserResult(result, p);
- } else {
- return null;
- }
- }
-
- %%{
- machine JSON_integer;
-
- write data;
-
- action exit {
- fhold;
- fbreak;
- }
-
- main := '-'? ( '0' | [1-9][0-9]* ) ( ^[0-9] @exit );
- }%%
-
- ParserResult parseInteger(int p, int pe) {
- int cs = EVIL;
-
- %% write init;
- int memo = p;
- %% write exec;
-
- if (cs < JSON_integer_first_final) {
- return null;
- }
-
- ByteList num = absSubSequence(memo, p);
- // note: this is actually a shared string, but since it is temporary and
- // read-only, it doesn't really matter
- RubyString expr = RubyString.newStringLight(getRuntime(), num);
- RubyInteger number = RubyNumeric.str2inum(getRuntime(), expr, 10, true);
- return new ParserResult(number, p + 1);
- }
-
- %%{
- machine JSON_float;
- include JSON_common;
-
- write data;
-
- action exit {
- fhold;
- fbreak;
- }
-
- main := '-'?
- ( ( ( '0' | [1-9][0-9]* ) '.' [0-9]+ ( [Ee] [+\-]?[0-9]+ )? )
- | ( ( '0' | [1-9][0-9]* ) ( [Ee] [+\-]? [0-9]+ ) ) )
- ( ^[0-9Ee.\-] @exit );
- }%%
-
- ParserResult parseFloat(int p, int pe) {
- int cs = EVIL;
-
- %% write init;
- int memo = p;
- %% write exec;
-
- if (cs < JSON_float_first_final) {
- return null;
- }
-
- ByteList num = absSubSequence(memo, p);
- // note: this is actually a shared string, but since it is temporary and
- // read-only, it doesn't really matter
- RubyString expr = RubyString.newStringLight(getRuntime(), num);
- RubyFloat number = RubyNumeric.str2fnum(getRuntime(), expr, true);
- return new ParserResult(number, p + 1);
- }
-
- %%{
- machine JSON_string;
- include JSON_common;
-
- write data;
-
- action parse_string {
- int offset = byteList.begin();
- ByteList decoded = decoder.decode(byteList, memo + 1 - offset,
- p - offset);
- result = getRuntime().newString(decoded);
- if (result == null) {
- fhold;
- fbreak;
- } else {
- fexec p + 1;
- }
- }
-
- action exit {
- fhold;
- fbreak;
- }
-
- main := '"'
- ( ( ^(["\\]|0..0x1f)
- | '\\'["\\/bfnrt]
- | '\\u'[0-9a-fA-F]{4}
- | '\\'^(["\\/bfnrtu]|0..0x1f)
- )* %parse_string
- ) '"' @exit;
- }%%
-
- ParserResult parseString(int p, int pe) {
- int cs = EVIL;
- IRubyObject result = null;
-
- %% write init;
- int memo = p;
- %% write exec;
-
- if (parser.createAdditions) {
- RubyHash match_string = parser.match_string;
- if (match_string != null) {
- final IRubyObject[] memoArray = { result, null };
- try {
- match_string.visitAll(new RubyHash.Visitor() {
- @Override
- public void visit(IRubyObject pattern, IRubyObject klass) {
- if (pattern.callMethod(context, "===", memoArray[0]).isTrue()) {
- memoArray[1] = klass;
- throw JumpException.SPECIAL_JUMP;
- }
- }
- });
- } catch (JumpException e) { }
- if (memoArray[1] != null) {
- RubyClass klass = (RubyClass) memoArray[1];
- if (klass.respondsTo("json_creatable?") &&
- klass.callMethod(context, "json_creatable?").isTrue()) {
- result = klass.callMethod(context, "json_create", result);
- }
- }
- }
- }
-
- if (cs >= JSON_string_first_final && result != null) {
- return new ParserResult(result, p + 1);
- } else {
- return null;
- }
- }
-
- %%{
- machine JSON_array;
- include JSON_common;
-
- write data;
-
- action parse_value {
- ParserResult res = parseValue(fpc, pe);
- if (res == null) {
- fhold;
- fbreak;
- } else {
- result.append(res.result);
- fexec res.p;
- }
- }
-
- action exit {
- fhold;
- fbreak;
- }
-
- next_element = value_separator ignore* begin_value >parse_value;
-
- main := begin_array
- ignore*
- ( ( begin_value >parse_value
- ignore* )
- ( ignore*
- next_element
- ignore* )* )?
- ignore*
- end_array @exit;
- }%%
-
- ParserResult parseArray(int p, int pe) {
- int cs = EVIL;
-
- if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) {
- throw newException(Utils.M_NESTING_ERROR,
- "nesting of " + currentNesting + " is too deep");
- }
-
- // this is guaranteed to be a RubyArray due to the earlier
- // allocator test at OptionsReader#getClass
- RubyArray result =
- (RubyArray)parser.arrayClass.newInstance(context,
- IRubyObject.NULL_ARRAY, Block.NULL_BLOCK);
-
- %% write init;
- %% write exec;
-
- if (cs >= JSON_array_first_final) {
- return new ParserResult(result, p + 1);
- } else {
- throw unexpectedToken(p, pe);
- }
- }
-
- %%{
- machine JSON_object;
- include JSON_common;
-
- write data;
-
- action parse_value {
- ParserResult res = parseValue(fpc, pe);
- if (res == null) {
- fhold;
- fbreak;
- } else {
- result.op_aset(context, lastName, res.result);
- fexec res.p;
- }
- }
-
- action parse_name {
- ParserResult res = parseString(fpc, pe);
- if (res == null) {
- fhold;
- fbreak;
- } else {
- RubyString name = (RubyString)res.result;
- if (parser.symbolizeNames) {
- lastName = context.getRuntime().is1_9()
- ? name.intern19()
- : name.intern();
- } else {
- lastName = name;
- }
- fexec res.p;
- }
- }
-
- action exit {
- fhold;
- fbreak;
- }
-
- a_pair = ignore*
- begin_name >parse_name
- ignore* name_separator ignore*
- begin_value >parse_value;
-
- main := begin_object
- (a_pair (ignore* value_separator a_pair)*)?
- ignore* end_object @exit;
- }%%
-
- ParserResult parseObject(int p, int pe) {
- int cs = EVIL;
- IRubyObject lastName = null;
-
- if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) {
- throw newException(Utils.M_NESTING_ERROR,
- "nesting of " + currentNesting + " is too deep");
- }
-
- // this is guaranteed to be a RubyHash due to the earlier
- // allocator test at OptionsReader#getClass
- RubyHash result =
- (RubyHash)parser.objectClass.newInstance(context,
- IRubyObject.NULL_ARRAY, Block.NULL_BLOCK);
-
- %% write init;
- %% write exec;
-
- if (cs < JSON_object_first_final) {
- return null;
- }
-
- IRubyObject returnedResult = result;
-
- // attempt to de-serialize object
- if (parser.createAdditions) {
- IRubyObject vKlassName = result.op_aref(context, parser.createId);
- if (!vKlassName.isNil()) {
- // might throw ArgumentError, we let it propagate
- IRubyObject klass = parser.info.jsonModule.
- callMethod(context, "deep_const_get", vKlassName);
- if (klass.respondsTo("json_creatable?") &&
- klass.callMethod(context, "json_creatable?").isTrue()) {
-
- returnedResult = klass.callMethod(context, "json_create", result);
- }
- }
- }
- return new ParserResult(returnedResult, p + 1);
- }
-
- %%{
- machine JSON;
- include JSON_common;
-
- write data;
-
- action parse_object {
- currentNesting = 1;
- ParserResult res = parseObject(fpc, pe);
- if (res == null) {
- fhold;
- fbreak;
- } else {
- result = res.result;
- fexec res.p;
- }
- }
-
- action parse_array {
- currentNesting = 1;
- ParserResult res = parseArray(fpc, pe);
- if (res == null) {
- fhold;
- fbreak;
- } else {
- result = res.result;
- fexec res.p;
- }
- }
-
- main := ignore*
- ( begin_object >parse_object
- | begin_array >parse_array )
- ignore*;
- }%%
-
- public IRubyObject parse() {
- int cs = EVIL;
- int p, pe;
- IRubyObject result = null;
-
- %% write init;
- p = byteList.begin();
- pe = p + byteList.length();
- %% write exec;
-
- if (cs >= JSON_first_final && p == pe) {
- return result;
- } else {
- throw unexpectedToken(p, pe);
- }
- }
-
- /**
- * Returns a subsequence of the source ByteList, based on source
- * array byte offsets (i.e., the ByteList's own begin offset is not
- * automatically added).
- * @param start
- * @param end
- */
- private ByteList absSubSequence(int absStart, int absEnd) {
- int offset = byteList.begin();
- return (ByteList)byteList.subSequence(absStart - offset,
- absEnd - offset);
- }
-
- /**
- * Retrieves a constant directly descended from the <code>JSON</code> module.
- * @param name The constant name
- */
- private IRubyObject getConstant(String name) {
- return parser.info.jsonModule.getConstant(name);
- }
-
- private RaiseException newException(String className, String message) {
- return Utils.newException(context, className, message);
- }
-
- private RaiseException newException(String className, RubyString message) {
- return Utils.newException(context, className, message);
- }
-
- private RaiseException newException(String className,
- String messageBegin, ByteList messageEnd) {
- return newException(className,
- getRuntime().newString(messageBegin).cat(messageEnd));
- }
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/ParserService.java b/vendor/gems/json-1.5.1/java/src/json/ext/ParserService.java
deleted file mode 100644
index e0805a743..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/ParserService.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import java.io.IOException;
-
-import org.jruby.Ruby;
-import org.jruby.RubyClass;
-import org.jruby.RubyModule;
-import org.jruby.runtime.load.BasicLibraryService;
-
-/**
- * The service invoked by JRuby's {@link org.jruby.runtime.load.LoadService LoadService}.
- * Defines the <code>JSON::Ext::Parser</code> class.
- * @author mernen
- */
-public class ParserService implements BasicLibraryService {
- public boolean basicLoad(Ruby runtime) throws IOException {
- runtime.getLoadService().require("json/common");
- RuntimeInfo info = RuntimeInfo.initRuntime(runtime);
-
- info.jsonModule = runtime.defineModule("JSON");
- RubyModule jsonExtModule = info.jsonModule.defineModuleUnder("Ext");
- RubyClass parserClass =
- jsonExtModule.defineClassUnder("Parser", runtime.getObject(),
- Parser.ALLOCATOR);
- parserClass.defineAnnotatedMethods(Parser.class);
- return true;
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/RuntimeInfo.java b/vendor/gems/json-1.5.1/java/src/json/ext/RuntimeInfo.java
deleted file mode 100644
index f446afe5d..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/RuntimeInfo.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import java.lang.ref.WeakReference;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.WeakHashMap;
-import org.jruby.Ruby;
-import org.jruby.RubyClass;
-import org.jruby.RubyEncoding;
-import org.jruby.RubyModule;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.builtin.IRubyObject;
-
-
-final class RuntimeInfo {
- // since the vast majority of cases runs just one runtime,
- // we optimize for that
- private static WeakReference<Ruby> runtime1 = new WeakReference<Ruby>(null);
- private static RuntimeInfo info1;
- // store remaining runtimes here (does not include runtime1)
- private static Map<Ruby, RuntimeInfo> runtimes;
-
- // these fields are filled by the service loaders
- /** JSON */
- RubyModule jsonModule;
- /** JSON::Ext::Generator::GeneratorMethods::String::Extend */
- RubyModule stringExtendModule;
- /** JSON::Ext::Generator::State */
- RubyClass generatorStateClass;
- /** JSON::SAFE_STATE_PROTOTYPE */
- GeneratorState safeStatePrototype;
-
- final RubyEncoding utf8;
- final RubyEncoding ascii8bit;
- // other encodings
- private final Map<String, RubyEncoding> encodings;
-
- private RuntimeInfo(Ruby runtime) {
- RubyClass encodingClass = runtime.getEncoding();
- if (encodingClass == null) { // 1.8 mode
- utf8 = ascii8bit = null;
- encodings = null;
- } else {
- ThreadContext context = runtime.getCurrentContext();
-
- utf8 = (RubyEncoding)RubyEncoding.find(context,
- encodingClass, runtime.newString("utf-8"));
- ascii8bit = (RubyEncoding)RubyEncoding.find(context,
- encodingClass, runtime.newString("ascii-8bit"));
- encodings = new HashMap<String, RubyEncoding>();
- }
- }
-
- static RuntimeInfo initRuntime(Ruby runtime) {
- synchronized (RuntimeInfo.class) {
- if (runtime1.get() == runtime) {
- return info1;
- } else if (runtime1.get() == null) {
- runtime1 = new WeakReference<Ruby>(runtime);
- info1 = new RuntimeInfo(runtime);
- return info1;
- } else {
- if (runtimes == null) {
- runtimes = new WeakHashMap<Ruby, RuntimeInfo>(1);
- }
- RuntimeInfo cache = runtimes.get(runtime);
- if (cache == null) {
- cache = new RuntimeInfo(runtime);
- runtimes.put(runtime, cache);
- }
- return cache;
- }
- }
- }
-
- public static RuntimeInfo forRuntime(Ruby runtime) {
- synchronized (RuntimeInfo.class) {
- if (runtime1.get() == runtime) return info1;
- RuntimeInfo cache = null;
- if (runtimes != null) cache = runtimes.get(runtime);
- assert cache != null : "Runtime given has not initialized JSON::Ext";
- return cache;
- }
- }
-
- public boolean encodingsSupported() {
- return utf8 != null;
- }
-
- public RubyEncoding getEncoding(ThreadContext context, String name) {
- synchronized (encodings) {
- RubyEncoding encoding = encodings.get(name);
- if (encoding == null) {
- Ruby runtime = context.getRuntime();
- encoding = (RubyEncoding)RubyEncoding.find(context,
- runtime.getEncoding(), runtime.newString(name));
- encodings.put(name, encoding);
- }
- return encoding;
- }
- }
-
- public GeneratorState getSafeStatePrototype(ThreadContext context) {
- if (safeStatePrototype == null) {
- IRubyObject value = jsonModule.getConstant("SAFE_STATE_PROTOTYPE");
- if (!(value instanceof GeneratorState)) {
- throw context.getRuntime().newTypeError(value, generatorStateClass);
- }
- safeStatePrototype = (GeneratorState)value;
- }
- return safeStatePrototype;
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/StringDecoder.java b/vendor/gems/json-1.5.1/java/src/json/ext/StringDecoder.java
deleted file mode 100644
index a4ee975cc..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/StringDecoder.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.exceptions.RaiseException;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.util.ByteList;
-
-/**
- * A decoder that reads a JSON-encoded string from the given sources and
- * returns its decoded form on a new ByteList. Escaped Unicode characters
- * are encoded as UTF-8.
- */
-final class StringDecoder extends ByteListTranscoder {
- /**
- * Stores the offset of the high surrogate when reading a surrogate pair,
- * or -1 when not.
- */
- private int surrogatePairStart = -1;
-
- // Array used for writing multi-byte characters into the buffer at once
- private final byte[] aux = new byte[4];
-
- StringDecoder(ThreadContext context) {
- super(context);
- }
-
- ByteList decode(ByteList src, int start, int end) {
- ByteList out = new ByteList(end - start);
- init(src, start, end, out);
- while (hasNext()) {
- handleChar(readUtf8Char());
- }
- quoteStop(pos);
- return out;
- }
-
- private void handleChar(int c) {
- if (c == '\\') {
- quoteStop(charStart);
- handleEscapeSequence();
- } else {
- quoteStart();
- }
- }
-
- private void handleEscapeSequence() {
- ensureMin(1);
- switch (readUtf8Char()) {
- case 'b':
- append('\b');
- break;
- case 'f':
- append('\f');
- break;
- case 'n':
- append('\n');
- break;
- case 'r':
- append('\r');
- break;
- case 't':
- append('\t');
- break;
- case 'u':
- ensureMin(4);
- int cp = readHex();
- if (Character.isHighSurrogate((char)cp)) {
- handleLowSurrogate((char)cp);
- } else if (Character.isLowSurrogate((char)cp)) {
- // low surrogate with no high surrogate
- throw invalidUtf8();
- } else {
- writeUtf8Char(cp);
- }
- break;
- default: // '\\', '"', '/'...
- quoteStart();
- }
- }
-
- private void handleLowSurrogate(char highSurrogate) {
- surrogatePairStart = charStart;
- ensureMin(1);
- int lowSurrogate = readUtf8Char();
-
- if (lowSurrogate == '\\') {
- ensureMin(5);
- if (readUtf8Char() != 'u') throw invalidUtf8();
- lowSurrogate = readHex();
- }
-
- if (Character.isLowSurrogate((char)lowSurrogate)) {
- writeUtf8Char(Character.toCodePoint(highSurrogate,
- (char)lowSurrogate));
- surrogatePairStart = -1;
- } else {
- throw invalidUtf8();
- }
- }
-
- private void writeUtf8Char(int codePoint) {
- if (codePoint < 0x80) {
- append(codePoint);
- } else if (codePoint < 0x800) {
- aux[0] = (byte)(0xc0 | (codePoint >>> 6));
- aux[1] = tailByte(codePoint & 0x3f);
- append(aux, 0, 2);
- } else if (codePoint < 0x10000) {
- aux[0] = (byte)(0xe0 | (codePoint >>> 12));
- aux[1] = tailByte(codePoint >>> 6);
- aux[2] = tailByte(codePoint);
- append(aux, 0, 3);
- } else {
- aux[0] = (byte)(0xf0 | codePoint >>> 18);
- aux[1] = tailByte(codePoint >>> 12);
- aux[2] = tailByte(codePoint >>> 6);
- aux[3] = tailByte(codePoint);
- append(aux, 0, 4);
- }
- }
-
- private byte tailByte(int value) {
- return (byte)(0x80 | (value & 0x3f));
- }
-
- /**
- * Reads a 4-digit unsigned hexadecimal number from the source.
- */
- private int readHex() {
- int numberStart = pos;
- int result = 0;
- int length = 4;
- for (int i = 0; i < length; i++) {
- int digit = readUtf8Char();
- int digitValue;
- if (digit >= '0' && digit <= '9') {
- digitValue = digit - '0';
- } else if (digit >= 'a' && digit <= 'f') {
- digitValue = 10 + digit - 'a';
- } else if (digit >= 'A' && digit <= 'F') {
- digitValue = 10 + digit - 'A';
- } else {
- throw new NumberFormatException("Invalid base 16 number "
- + src.subSequence(numberStart, numberStart + length));
- }
- result = result * 16 + digitValue;
- }
- return result;
- }
-
- @Override
- protected RaiseException invalidUtf8() {
- ByteList message = new ByteList(
- ByteList.plain("partial character in source, " +
- "but hit end near "));
- int start = surrogatePairStart != -1 ? surrogatePairStart : charStart;
- message.append(src, start, srcEnd - start);
- return Utils.newException(context, Utils.M_PARSER_ERROR,
- context.getRuntime().newString(message));
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/StringEncoder.java b/vendor/gems/json-1.5.1/java/src/json/ext/StringEncoder.java
deleted file mode 100644
index 57bd19bce..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/StringEncoder.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package json.ext;
-
-import org.jruby.exceptions.RaiseException;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.util.ByteList;
-
-/**
- * An encoder that reads from the given source and outputs its representation
- * to another ByteList. The source string is fully checked for UTF-8 validity,
- * and throws a GeneratorError if any problem is found.
- */
-final class StringEncoder extends ByteListTranscoder {
- private final boolean asciiOnly;
-
- // Escaped characters will reuse this array, to avoid new allocations
- // or appending them byte-by-byte
- private final byte[] aux =
- new byte[] {/* First unicode character */
- '\\', 'u', 0, 0, 0, 0,
- /* Second unicode character (for surrogate pairs) */
- '\\', 'u', 0, 0, 0, 0,
- /* "\X" characters */
- '\\', 0};
- // offsets on the array above
- private static final int ESCAPE_UNI1_OFFSET = 0;
- private static final int ESCAPE_UNI2_OFFSET = ESCAPE_UNI1_OFFSET + 6;
- private static final int ESCAPE_CHAR_OFFSET = ESCAPE_UNI2_OFFSET + 6;
- /** Array used for code point decomposition in surrogates */
- private final char[] utf16 = new char[2];
-
- private static final byte[] HEX =
- new byte[] {'0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
-
- StringEncoder(ThreadContext context, boolean asciiOnly) {
- super(context);
- this.asciiOnly = asciiOnly;
- }
-
- void encode(ByteList src, ByteList out) {
- init(src, out);
- append('"');
- while (hasNext()) {
- handleChar(readUtf8Char());
- }
- quoteStop(pos);
- append('"');
- }
-
- private void handleChar(int c) {
- switch (c) {
- case '"':
- case '\\':
- escapeChar((char)c);
- break;
- case '\n':
- escapeChar('n');
- break;
- case '\r':
- escapeChar('r');
- break;
- case '\t':
- escapeChar('t');
- break;
- case '\f':
- escapeChar('f');
- break;
- case '\b':
- escapeChar('b');
- break;
- default:
- if (c >= 0x20 && c <= 0x7f ||
- (c >= 0x80 && !asciiOnly)) {
- quoteStart();
- } else {
- quoteStop(charStart);
- escapeUtf8Char(c);
- }
- }
- }
-
- private void escapeChar(char c) {
- quoteStop(charStart);
- aux[ESCAPE_CHAR_OFFSET + 1] = (byte)c;
- append(aux, ESCAPE_CHAR_OFFSET, 2);
- }
-
- private void escapeUtf8Char(int codePoint) {
- int numChars = Character.toChars(codePoint, utf16, 0);
- escapeCodeUnit(utf16[0], ESCAPE_UNI1_OFFSET + 2);
- if (numChars > 1) escapeCodeUnit(utf16[1], ESCAPE_UNI2_OFFSET + 2);
- append(aux, ESCAPE_UNI1_OFFSET, 6 * numChars);
- }
-
- private void escapeCodeUnit(char c, int auxOffset) {
- for (int i = 0; i < 4; i++) {
- aux[auxOffset + i] = HEX[(c >>> (12 - 4 * i)) & 0xf];
- }
- }
-
- @Override
- protected RaiseException invalidUtf8() {
- return Utils.newException(context, Utils.M_GENERATOR_ERROR,
- "source sequence is illegal/malformed utf-8");
- }
-}
diff --git a/vendor/gems/json-1.5.1/java/src/json/ext/Utils.java b/vendor/gems/json-1.5.1/java/src/json/ext/Utils.java
deleted file mode 100644
index 7a1dfee83..000000000
--- a/vendor/gems/json-1.5.1/java/src/json/ext/Utils.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
- *
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
- */
-package json.ext;
-
-import org.jruby.Ruby;
-import org.jruby.RubyArray;
-import org.jruby.RubyClass;
-import org.jruby.RubyException;
-import org.jruby.RubyHash;
-import org.jruby.RubyString;
-import org.jruby.exceptions.RaiseException;
-import org.jruby.runtime.Block;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.util.ByteList;
-
-/**
- * Library of miscellaneous utility functions
- */
-final class Utils {
- public static final String M_GENERATOR_ERROR = "GeneratorError";
- public static final String M_NESTING_ERROR = "NestingError";
- public static final String M_PARSER_ERROR = "ParserError";
-
- private Utils() {
- throw new RuntimeException();
- }
-
- /**
- * Safe {@link RubyArray} type-checking.
- * Returns the given object if it is an <code>Array</code>,
- * or throws an exception if not.
- * @param object The object to test
- * @return The given object if it is an <code>Array</code>
- * @throws RaiseException <code>TypeError</code> if the object is not
- * of the expected type
- */
- static RubyArray ensureArray(IRubyObject object) throws RaiseException {
- if (object instanceof RubyArray) return (RubyArray)object;
- Ruby runtime = object.getRuntime();
- throw runtime.newTypeError(object, runtime.getArray());
- }
-
- static RubyHash ensureHash(IRubyObject object) throws RaiseException {
- if (object instanceof RubyHash) return (RubyHash)object;
- Ruby runtime = object.getRuntime();
- throw runtime.newTypeError(object, runtime.getHash());
- }
-
- static RubyString ensureString(IRubyObject object) throws RaiseException {
- if (object instanceof RubyString) return (RubyString)object;
- Ruby runtime = object.getRuntime();
- throw runtime.newTypeError(object, runtime.getString());
- }
-
- static RaiseException newException(ThreadContext context,
- String className, String message) {
- return newException(context, className,
- context.getRuntime().newString(message));
- }
-
- static RaiseException newException(ThreadContext context,
- String className, RubyString message) {
- RuntimeInfo info = RuntimeInfo.forRuntime(context.getRuntime());
- RubyClass klazz = info.jsonModule.getClass(className);
- RubyException excptn =
- (RubyException)klazz.newInstance(context,
- new IRubyObject[] {message}, Block.NULL_BLOCK);
- return new RaiseException(excptn);
- }
-
- static byte[] repeat(ByteList a, int n) {
- return repeat(a.unsafeBytes(), a.begin(), a.length(), n);
- }
-
- static byte[] repeat(byte[] a, int begin, int length, int n) {
- if (length == 0) return ByteList.NULL_ARRAY;
- int resultLen = length * n;
- byte[] result = new byte[resultLen];
- for (int pos = 0; pos < resultLen; pos += length) {
- System.arraycopy(a, begin, result, pos, length);
- }
- return result;
- }
-}
diff --git a/vendor/gems/json-1.5.1/json-java.gemspec b/vendor/gems/json-1.5.1/json-java.gemspec
deleted file mode 100644
index 144f650e7..000000000
--- a/vendor/gems/json-1.5.1/json-java.gemspec
+++ /dev/null
@@ -1,20 +0,0 @@
-#! /usr/bin/env jruby
-require "rubygems"
-
-spec = Gem::Specification.new do |s|
- s.name = "json"
- s.version = File.read("VERSION").chomp
- s.summary = "JSON implementation for JRuby"
- s.description = "A JSON implementation as a JRuby extension."
- s.author = "Daniel Luz"
- s.email = "dev+ruby@mernen.com"
- s.homepage = "http://json-jruby.rubyforge.org/"
- s.platform = 'java'
- s.rubyforge_project = "json-jruby"
-
- s.files = Dir["{docs,lib,tests}/**/*"]
-end
-
-if $0 == __FILE__
- Gem::Builder.new(spec).build
-end
diff --git a/vendor/gems/json-1.5.1/lib/json.rb b/vendor/gems/json-1.5.1/lib/json.rb
deleted file mode 100644
index 789b0de54..000000000
--- a/vendor/gems/json-1.5.1/lib/json.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'json/common'
-module JSON
- require 'json/version'
-
- begin
- require 'json/ext'
- rescue LoadError
- require 'json/pure'
- end
-end
diff --git a/vendor/gems/json-1.5.1/lib/json/Array.xpm b/vendor/gems/json-1.5.1/lib/json/Array.xpm
deleted file mode 100644
index 27c48011f..000000000
--- a/vendor/gems/json-1.5.1/lib/json/Array.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * Array_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ",
-" .......... ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" .......... ",
-" ",
-" ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/FalseClass.xpm b/vendor/gems/json-1.5.1/lib/json/FalseClass.xpm
deleted file mode 100644
index 25ce60832..000000000
--- a/vendor/gems/json-1.5.1/lib/json/FalseClass.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * False_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #FF0000",
-" ",
-" ",
-" ",
-" ...... ",
-" . ",
-" . ",
-" . ",
-" ...... ",
-" . ",
-" . ",
-" . ",
-" . ",
-" . ",
-" ",
-" ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/Hash.xpm b/vendor/gems/json-1.5.1/lib/json/Hash.xpm
deleted file mode 100644
index cd8f6f7b5..000000000
--- a/vendor/gems/json-1.5.1/lib/json/Hash.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * Hash_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ",
-" . . ",
-" . . ",
-" . . ",
-" ......... ",
-" . . ",
-" . . ",
-" ......... ",
-" . . ",
-" . . ",
-" . . ",
-" ",
-" ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/Key.xpm b/vendor/gems/json-1.5.1/lib/json/Key.xpm
deleted file mode 100644
index 9fd728138..000000000
--- a/vendor/gems/json-1.5.1/lib/json/Key.xpm
+++ /dev/null
@@ -1,73 +0,0 @@
-/* XPM */
-static char * Key_xpm[] = {
-"16 16 54 1",
-" c None",
-". c #110007",
-"+ c #0E0900",
-"@ c #000013",
-"# c #070600",
-"$ c #F6F006",
-"% c #ECE711",
-"& c #E5EE00",
-"* c #16021E",
-"= c #120900",
-"- c #EDF12B",
-"; c #000033",
-"> c #0F0000",
-", c #FFFE03",
-"' c #E6E500",
-") c #16021B",
-"! c #F7F502",
-"~ c #000E00",
-"{ c #130000",
-"] c #FFF000",
-"^ c #FFE711",
-"/ c #140005",
-"( c #190025",
-"_ c #E9DD27",
-": c #E7DC04",
-"< c #FFEC09",
-"[ c #FFE707",
-"} c #FFDE10",
-"| c #150021",
-"1 c #160700",
-"2 c #FAF60E",
-"3 c #EFE301",
-"4 c #FEF300",
-"5 c #E7E000",
-"6 c #FFFF08",
-"7 c #0E0206",
-"8 c #040000",
-"9 c #03052E",
-"0 c #041212",
-"a c #070300",
-"b c #F2E713",
-"c c #F9DE13",
-"d c #36091E",
-"e c #00001C",
-"f c #1F0010",
-"g c #FFF500",
-"h c #DEDE00",
-"i c #050A00",
-"j c #FAF14A",
-"k c #F5F200",
-"l c #040404",
-"m c #1A0D00",
-"n c #EDE43D",
-"o c #ECE007",
-" ",
-" ",
-" .+@ ",
-" #$%&* ",
-" =-;>,') ",
-" >!~{]^/ ",
-" (_:<[}| ",
-" 1234567 ",
-" 890abcd ",
-" efghi ",
-" >jkl ",
-" mnol ",
-" >kl ",
-" ll ",
-" ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/NilClass.xpm b/vendor/gems/json-1.5.1/lib/json/NilClass.xpm
deleted file mode 100644
index 3509f06c9..000000000
--- a/vendor/gems/json-1.5.1/lib/json/NilClass.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * False_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ",
-" ... ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" ... ",
-" ",
-" ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/Numeric.xpm b/vendor/gems/json-1.5.1/lib/json/Numeric.xpm
deleted file mode 100644
index e071e2ee9..000000000
--- a/vendor/gems/json-1.5.1/lib/json/Numeric.xpm
+++ /dev/null
@@ -1,28 +0,0 @@
-/* XPM */
-static char * Numeric_xpm[] = {
-"16 16 9 1",
-" c None",
-". c #FF0000",
-"+ c #0000FF",
-"@ c #0023DB",
-"# c #00EA14",
-"$ c #00FF00",
-"% c #004FAF",
-"& c #0028D6",
-"* c #00F20C",
-" ",
-" ",
-" ",
-" ... +++@#$$$$ ",
-" .+ %& $$ ",
-" . + $ ",
-" . + $$ ",
-" . ++$$$$ ",
-" . + $$ ",
-" . + $ ",
-" . + $ ",
-" . + $ $$ ",
-" .....++++*$$ ",
-" ",
-" ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/String.xpm b/vendor/gems/json-1.5.1/lib/json/String.xpm
deleted file mode 100644
index f79a89cdc..000000000
--- a/vendor/gems/json-1.5.1/lib/json/String.xpm
+++ /dev/null
@@ -1,96 +0,0 @@
-/* XPM */
-static char * String_xpm[] = {
-"16 16 77 1",
-" c None",
-". c #000000",
-"+ c #040404",
-"@ c #080806",
-"# c #090606",
-"$ c #EEEAE1",
-"% c #E7E3DA",
-"& c #E0DBD1",
-"* c #D4B46F",
-"= c #0C0906",
-"- c #E3C072",
-"; c #E4C072",
-"> c #060505",
-", c #0B0A08",
-"' c #D5B264",
-") c #D3AF5A",
-"! c #080602",
-"~ c #E1B863",
-"{ c #DDB151",
-"] c #DBAE4A",
-"^ c #DDB152",
-"/ c #DDB252",
-"( c #070705",
-"_ c #0C0A07",
-": c #D3A33B",
-"< c #020201",
-"[ c #DAAA41",
-"} c #040302",
-"| c #E4D9BF",
-"1 c #0B0907",
-"2 c #030201",
-"3 c #020200",
-"4 c #C99115",
-"5 c #080704",
-"6 c #DBC8A2",
-"7 c #E7D7B4",
-"8 c #E0CD9E",
-"9 c #080601",
-"0 c #040400",
-"a c #010100",
-"b c #0B0B08",
-"c c #DCBF83",
-"d c #DCBC75",
-"e c #DEB559",
-"f c #040301",
-"g c #BC8815",
-"h c #120E07",
-"i c #060402",
-"j c #0A0804",
-"k c #D4A747",
-"l c #D6A12F",
-"m c #0E0C05",
-"n c #C8C1B0",
-"o c #1D1B15",
-"p c #D7AD51",
-"q c #070502",
-"r c #080804",
-"s c #BC953B",
-"t c #C4BDAD",
-"u c #0B0807",
-"v c #DBAC47",
-"w c #1B150A",
-"x c #B78A2C",
-"y c #D8A83C",
-"z c #D4A338",
-"A c #0F0B03",
-"B c #181105",
-"C c #C59325",
-"D c #C18E1F",
-"E c #060600",
-"F c #CC992D",
-"G c #B98B25",
-"H c #B3831F",
-"I c #C08C1C",
-"J c #060500",
-"K c #0E0C03",
-"L c #0D0A00",
-" ",
-" .+@# ",
-" .$%&*= ",
-" .-;>,')! ",
-" .~. .{]. ",
-" .^/. (_:< ",
-" .[.}|$12 ",
-" 345678}90 ",
-" a2bcdefgh ",
-" ijkl.mno ",
-" <pq. rstu ",
-" .]v. wx= ",
-" .yzABCDE ",
-" .FGHIJ ",
-" 0KL0 ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/TrueClass.xpm b/vendor/gems/json-1.5.1/lib/json/TrueClass.xpm
deleted file mode 100644
index 143eef49b..000000000
--- a/vendor/gems/json-1.5.1/lib/json/TrueClass.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static char * TrueClass_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #0BF311",
-" ",
-" ",
-" ",
-" ......... ",
-" . ",
-" . ",
-" . ",
-" . ",
-" . ",
-" . ",
-" . ",
-" . ",
-" . ",
-" ",
-" ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/add/core.rb b/vendor/gems/json-1.5.1/lib/json/add/core.rb
deleted file mode 100644
index 7a901d0b2..000000000
--- a/vendor/gems/json-1.5.1/lib/json/add/core.rb
+++ /dev/null
@@ -1,147 +0,0 @@
-# This file contains implementations of ruby core's custom objects for
-# serialisation/deserialisation.
-
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-require 'date'
-
-class Symbol
- def to_json(*a)
- {
- JSON.create_id => self.class.name,
- 's' => to_s,
- }.to_json(*a)
- end
-
- def self.json_create(o)
- o['s'].to_sym
- end
-end
-
-class Time
- def self.json_create(object)
- if usec = object.delete('u') # used to be tv_usec -> tv_nsec
- object['n'] = usec * 1000
- end
- if respond_to?(:tv_nsec)
- at(*object.values_at('s', 'n'))
- else
- at(object['s'], object['n'] / 1000)
- end
- end
-
- def to_json(*args)
- {
- JSON.create_id => self.class.name,
- 's' => tv_sec,
- 'n' => respond_to?(:tv_nsec) ? tv_nsec : tv_usec * 1000
- }.to_json(*args)
- end
-end
-
-class Date
- def self.json_create(object)
- civil(*object.values_at('y', 'm', 'd', 'sg'))
- end
-
- alias start sg unless method_defined?(:start)
-
- def to_json(*args)
- {
- JSON.create_id => self.class.name,
- 'y' => year,
- 'm' => month,
- 'd' => day,
- 'sg' => start,
- }.to_json(*args)
- end
-end
-
-class DateTime
- def self.json_create(object)
- args = object.values_at('y', 'm', 'd', 'H', 'M', 'S')
- of_a, of_b = object['of'].split('/')
- if of_b and of_b != '0'
- args << Rational(of_a.to_i, of_b.to_i)
- else
- args << of_a
- end
- args << object['sg']
- civil(*args)
- end
-
- alias start sg unless method_defined?(:start)
-
- def to_json(*args)
- {
- JSON.create_id => self.class.name,
- 'y' => year,
- 'm' => month,
- 'd' => day,
- 'H' => hour,
- 'M' => min,
- 'S' => sec,
- 'of' => offset.to_s,
- 'sg' => start,
- }.to_json(*args)
- end
-end
-
-class Range
- def self.json_create(object)
- new(*object['a'])
- end
-
- def to_json(*args)
- {
- JSON.create_id => self.class.name,
- 'a' => [ first, last, exclude_end? ]
- }.to_json(*args)
- end
-end
-
-class Struct
- def self.json_create(object)
- new(*object['v'])
- end
-
- def to_json(*args)
- klass = self.class.name
- klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
- {
- JSON.create_id => klass,
- 'v' => values,
- }.to_json(*args)
- end
-end
-
-class Exception
- def self.json_create(object)
- result = new(object['m'])
- result.set_backtrace object['b']
- result
- end
-
- def to_json(*args)
- {
- JSON.create_id => self.class.name,
- 'm' => message,
- 'b' => backtrace,
- }.to_json(*args)
- end
-end
-
-class Regexp
- def self.json_create(object)
- new(object['s'], object['o'])
- end
-
- def to_json(*)
- {
- JSON.create_id => self.class.name,
- 'o' => options,
- 's' => source,
- }.to_json
- end
-end
diff --git a/vendor/gems/json-1.5.1/lib/json/add/rails.rb b/vendor/gems/json-1.5.1/lib/json/add/rails.rb
deleted file mode 100644
index af95e52d4..000000000
--- a/vendor/gems/json-1.5.1/lib/json/add/rails.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# This file used to implementations of rails custom objects for
-# serialisation/deserialisation and is obsoleted now.
-
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-
-$DEBUG and warn "required json/add/rails which is obsolete now!"
diff --git a/vendor/gems/json-1.5.1/lib/json/common.rb b/vendor/gems/json-1.5.1/lib/json/common.rb
deleted file mode 100644
index f8ce2da7b..000000000
--- a/vendor/gems/json-1.5.1/lib/json/common.rb
+++ /dev/null
@@ -1,419 +0,0 @@
-require 'json/version'
-
-module JSON
- class << self
- # If _object_ is string-like parse the string and return the parsed result
- # as a Ruby data structure. Otherwise generate a JSON text from the Ruby
- # data structure object and return it.
- #
- # The _opts_ argument is passed through to generate/parse respectively, see
- # generate and parse for their documentation.
- def [](object, opts = {})
- if object.respond_to? :to_str
- JSON.parse(object.to_str, opts)
- else
- JSON.generate(object, opts)
- end
- end
-
- # Returns the JSON parser class, that is used by JSON. This might be either
- # JSON::Ext::Parser or JSON::Pure::Parser.
- attr_reader :parser
-
- # Set the JSON parser class _parser_ to be used by JSON.
- def parser=(parser) # :nodoc:
- @parser = parser
- remove_const :Parser if JSON.const_defined_in?(self, :Parser)
- const_set :Parser, parser
- end
-
- # Return the constant located at _path_. The format of _path_ has to be
- # either ::A::B::C or A::B::C. In any case A has to be located at the top
- # level (absolute namespace path?). If there doesn't exist a constant at
- # the given path, an ArgumentError is raised.
- def deep_const_get(path) # :nodoc:
- path.to_s.split(/::/).inject(Object) do |p, c|
- case
- when c.empty? then p
- when JSON.const_defined_in?(p, c) then p.const_get(c)
- else
- begin
- p.const_missing(c)
- rescue NameError => e
- raise ArgumentError, "can't get const #{path}: #{e}"
- end
- end
- end
- end
-
- # Set the module _generator_ to be used by JSON.
- def generator=(generator) # :nodoc:
- old, $VERBOSE = $VERBOSE, nil
- @generator = generator
- generator_methods = generator::GeneratorMethods
- for const in generator_methods.constants
- klass = deep_const_get(const)
- modul = generator_methods.const_get(const)
- klass.class_eval do
- instance_methods(false).each do |m|
- m.to_s == 'to_json' and remove_method m
- end
- include modul
- end
- end
- self.state = generator::State
- const_set :State, self.state
- const_set :SAFE_STATE_PROTOTYPE, State.new
- const_set :FAST_STATE_PROTOTYPE, State.new(
- :indent => '',
- :space => '',
- :object_nl => "",
- :array_nl => "",
- :max_nesting => false
- )
- const_set :PRETTY_STATE_PROTOTYPE, State.new(
- :indent => ' ',
- :space => ' ',
- :object_nl => "\n",
- :array_nl => "\n"
- )
- ensure
- $VERBOSE = old
- end
-
- # Returns the JSON generator modul, that is used by JSON. This might be
- # either JSON::Ext::Generator or JSON::Pure::Generator.
- attr_reader :generator
-
- # Returns the JSON generator state class, that is used by JSON. This might
- # be either JSON::Ext::Generator::State or JSON::Pure::Generator::State.
- attr_accessor :state
-
- # This is create identifier, that is used to decide, if the _json_create_
- # hook of a class should be called. It defaults to 'json_class'.
- attr_accessor :create_id
- end
- self.create_id = 'json_class'
-
- NaN = 0.0/0
-
- Infinity = 1.0/0
-
- MinusInfinity = -Infinity
-
- # The base exception for JSON errors.
- class JSONError < StandardError; end
-
- # This exception is raised, if a parser error occurs.
- class ParserError < JSONError; end
-
- # This exception is raised, if the nesting of parsed datastructures is too
- # deep.
- class NestingError < ParserError; end
-
- # :stopdoc:
- class CircularDatastructure < NestingError; end
- # :startdoc:
-
- # This exception is raised, if a generator or unparser error occurs.
- class GeneratorError < JSONError; end
- # For backwards compatibility
- UnparserError = GeneratorError
-
- # This exception is raised, if the required unicode support is missing on the
- # system. Usually this means, that the iconv library is not installed.
- class MissingUnicodeSupport < JSONError; end
-
- module_function
-
- # Parse the JSON document _source_ into a Ruby data structure and return it.
- #
- # _opts_ can have the following
- # keys:
- # * *max_nesting*: The maximum depth of nesting allowed in the parsed data
- # structures. Disable depth checking with :max_nesting => false, it defaults
- # to 19.
- # * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
- # defiance of RFC 4627 to be parsed by the Parser. This option defaults
- # to false.
- # * *symbolize_names*: If set to true, returns symbols for the names
- # (keys) in a JSON object. Otherwise strings are returned, which is also
- # the default.
- # * *create_additions*: If set to false, the Parser doesn't create
- # additions even if a matchin class and create_id was found. This option
- # defaults to true.
- # * *object_class*: Defaults to Hash
- # * *array_class*: Defaults to Array
- def parse(source, opts = {})
- Parser.new(source, opts).parse
- end
-
- # Parse the JSON document _source_ into a Ruby data structure and return it.
- # The bang version of the parse method, defaults to the more dangerous values
- # for the _opts_ hash, so be sure only to parse trusted _source_ documents.
- #
- # _opts_ can have the following keys:
- # * *max_nesting*: The maximum depth of nesting allowed in the parsed data
- # structures. Enable depth checking with :max_nesting => anInteger. The parse!
- # methods defaults to not doing max depth checking: This can be dangerous,
- # if someone wants to fill up your stack.
- # * *allow_nan*: If set to true, allow NaN, Infinity, and -Infinity in
- # defiance of RFC 4627 to be parsed by the Parser. This option defaults
- # to true.
- # * *create_additions*: If set to false, the Parser doesn't create
- # additions even if a matchin class and create_id was found. This option
- # defaults to true.
- def parse!(source, opts = {})
- opts = {
- :max_nesting => false,
- :allow_nan => true
- }.update(opts)
- Parser.new(source, opts).parse
- end
-
- # Generate a JSON document from the Ruby data structure _obj_ and return
- # it. _state_ is * a JSON::State object,
- # * or a Hash like object (responding to to_hash),
- # * an object convertible into a hash by a to_h method,
- # that is used as or to configure a State object.
- #
- # It defaults to a state object, that creates the shortest possible JSON text
- # in one line, checks for circular data structures and doesn't allow NaN,
- # Infinity, and -Infinity.
- #
- # A _state_ hash can have the following keys:
- # * *indent*: a string used to indent levels (default: ''),
- # * *space*: a string that is put after, a : or , delimiter (default: ''),
- # * *space_before*: a string that is put before a : pair delimiter (default: ''),
- # * *object_nl*: a string that is put at the end of a JSON object (default: ''),
- # * *array_nl*: a string that is put at the end of a JSON array (default: ''),
- # * *allow_nan*: true if NaN, Infinity, and -Infinity should be
- # generated, otherwise an exception is thrown, if these values are
- # encountered. This options defaults to false.
- # * *max_nesting*: The maximum depth of nesting allowed in the data
- # structures from which JSON is to be generated. Disable depth checking
- # with :max_nesting => false, it defaults to 19.
- #
- # See also the fast_generate for the fastest creation method with the least
- # amount of sanity checks, and the pretty_generate method for some
- # defaults for a pretty output.
- def generate(obj, opts = nil)
- state = SAFE_STATE_PROTOTYPE.dup
- if opts
- if opts.respond_to? :to_hash
- opts = opts.to_hash
- elsif opts.respond_to? :to_h
- opts = opts.to_h
- else
- raise TypeError, "can't convert #{opts.class} into Hash"
- end
- state = state.configure(opts)
- end
- state.generate(obj)
- end
-
- # :stopdoc:
- # I want to deprecate these later, so I'll first be silent about them, and
- # later delete them.
- alias unparse generate
- module_function :unparse
- # :startdoc:
-
- # Generate a JSON document from the Ruby data structure _obj_ and return it.
- # This method disables the checks for circles in Ruby objects.
- #
- # *WARNING*: Be careful not to pass any Ruby data structures with circles as
- # _obj_ argument, because this will cause JSON to go into an infinite loop.
- def fast_generate(obj, opts = nil)
- state = FAST_STATE_PROTOTYPE.dup
- if opts
- if opts.respond_to? :to_hash
- opts = opts.to_hash
- elsif opts.respond_to? :to_h
- opts = opts.to_h
- else
- raise TypeError, "can't convert #{opts.class} into Hash"
- end
- state.configure(opts)
- end
- state.generate(obj)
- end
-
- # :stopdoc:
- # I want to deprecate these later, so I'll first be silent about them, and later delete them.
- alias fast_unparse fast_generate
- module_function :fast_unparse
- # :startdoc:
-
- # Generate a JSON document from the Ruby data structure _obj_ and return it.
- # The returned document is a prettier form of the document returned by
- # #unparse.
- #
- # The _opts_ argument can be used to configure the generator, see the
- # generate method for a more detailed explanation.
- def pretty_generate(obj, opts = nil)
- state = PRETTY_STATE_PROTOTYPE.dup
- if opts
- if opts.respond_to? :to_hash
- opts = opts.to_hash
- elsif opts.respond_to? :to_h
- opts = opts.to_h
- else
- raise TypeError, "can't convert #{opts.class} into Hash"
- end
- state.configure(opts)
- end
- state.generate(obj)
- end
-
- # :stopdoc:
- # I want to deprecate these later, so I'll first be silent about them, and later delete them.
- alias pretty_unparse pretty_generate
- module_function :pretty_unparse
- # :startdoc:
-
- # Load a ruby data structure from a JSON _source_ and return it. A source can
- # either be a string-like object, an IO like object, or an object responding
- # to the read method. If _proc_ was given, it will be called with any nested
- # Ruby object as an argument recursively in depth first order.
- #
- # This method is part of the implementation of the load/dump interface of
- # Marshal and YAML.
- def load(source, proc = nil)
- if source.respond_to? :to_str
- source = source.to_str
- elsif source.respond_to? :to_io
- source = source.to_io.read
- else
- source = source.read
- end
- result = parse(source, :max_nesting => false, :allow_nan => true)
- recurse_proc(result, &proc) if proc
- result
- end
-
- def recurse_proc(result, &proc)
- case result
- when Array
- result.each { |x| recurse_proc x, &proc }
- proc.call result
- when Hash
- result.each { |x, y| recurse_proc x, &proc; recurse_proc y, &proc }
- proc.call result
- else
- proc.call result
- end
- end
-
- alias restore load
- module_function :restore
-
- # Dumps _obj_ as a JSON string, i.e. calls generate on the object and returns
- # the result.
- #
- # If anIO (an IO like object or an object that responds to the write method)
- # was given, the resulting JSON is written to it.
- #
- # If the number of nested arrays or objects exceeds _limit_ an ArgumentError
- # exception is raised. This argument is similar (but not exactly the
- # same!) to the _limit_ argument in Marshal.dump.
- #
- # This method is part of the implementation of the load/dump interface of
- # Marshal and YAML.
- def dump(obj, anIO = nil, limit = nil)
- if anIO and limit.nil?
- anIO = anIO.to_io if anIO.respond_to?(:to_io)
- unless anIO.respond_to?(:write)
- limit = anIO
- anIO = nil
- end
- end
- limit ||= 0
- result = generate(obj, :allow_nan => true, :max_nesting => limit)
- if anIO
- anIO.write result
- anIO
- else
- result
- end
- rescue JSON::NestingError
- raise ArgumentError, "exceed depth limit"
- end
-
- # Swap consecutive bytes of _string_ in place.
- def self.swap!(string) # :nodoc:
- 0.upto(string.size / 2) do |i|
- break unless string[2 * i + 1]
- string[2 * i], string[2 * i + 1] = string[2 * i + 1], string[2 * i]
- end
- string
- end
-
- # Shortuct for iconv.
- if ::String.method_defined?(:encode)
- def self.iconv(to, from, string)
- string.encode(to, from)
- end
- else
- require 'iconv'
- def self.iconv(to, from, string)
- Iconv.iconv(to, from, string).first
- end
- end
-
- if ::Object.method(:const_defined?).arity == 1
- def self.const_defined_in?(modul, constant)
- modul.const_defined?(constant)
- end
- else
- def self.const_defined_in?(modul, constant)
- modul.const_defined?(constant, false)
- end
- end
-end
-
-module ::Kernel
- private
-
- # Outputs _objs_ to STDOUT as JSON strings in the shortest form, that is in
- # one line.
- def j(*objs)
- objs.each do |obj|
- puts JSON::generate(obj, :allow_nan => true, :max_nesting => false)
- end
- nil
- end
-
- # Ouputs _objs_ to STDOUT as JSON strings in a pretty format, with
- # indentation and over many lines.
- def jj(*objs)
- objs.each do |obj|
- puts JSON::pretty_generate(obj, :allow_nan => true, :max_nesting => false)
- end
- nil
- end
-
- # If _object_ is string-like parse the string and return the parsed result as
- # a Ruby data structure. Otherwise generate a JSON text from the Ruby data
- # structure object and return it.
- #
- # The _opts_ argument is passed through to generate/parse respectively, see
- # generate and parse for their documentation.
- def JSON(object, *args)
- if object.respond_to? :to_str
- JSON.parse(object.to_str, args.first)
- else
- JSON.generate(object, args.first)
- end
- end
-end
-
-class ::Class
- # Returns true, if this class can be used to create an instance
- # from a serialised JSON string. The class has to implement a class
- # method _json_create_ that expects a hash as first parameter, which includes
- # the required data.
- def json_creatable?
- respond_to?(:json_create)
- end
-end
diff --git a/vendor/gems/json-1.5.1/lib/json/editor.rb b/vendor/gems/json-1.5.1/lib/json/editor.rb
deleted file mode 100644
index 3450455be..000000000
--- a/vendor/gems/json-1.5.1/lib/json/editor.rb
+++ /dev/null
@@ -1,1369 +0,0 @@
-# To use the GUI JSON editor, start the edit_json.rb executable script. It
-# requires ruby-gtk to be installed.
-
-require 'gtk2'
-require 'json'
-require 'rbconfig'
-require 'open-uri'
-
-module JSON
- module Editor
- include Gtk
-
- # Beginning of the editor window title
- TITLE = 'JSON Editor'.freeze
-
- # Columns constants
- ICON_COL, TYPE_COL, CONTENT_COL = 0, 1, 2
-
- # JSON primitive types (Containers)
- CONTAINER_TYPES = %w[Array Hash].sort
- # All JSON primitive types
- ALL_TYPES = (%w[TrueClass FalseClass Numeric String NilClass] +
- CONTAINER_TYPES).sort
-
- # The Nodes necessary for the tree representation of a JSON document
- ALL_NODES = (ALL_TYPES + %w[Key]).sort
-
- DEFAULT_DIALOG_KEY_PRESS_HANDLER = lambda do |dialog, event|
- case event.keyval
- when Gdk::Keyval::GDK_Return
- dialog.response Dialog::RESPONSE_ACCEPT
- when Gdk::Keyval::GDK_Escape
- dialog.response Dialog::RESPONSE_REJECT
- end
- end
-
- # Returns the Gdk::Pixbuf of the icon named _name_ from the icon cache.
- def Editor.fetch_icon(name)
- @icon_cache ||= {}
- unless @icon_cache.key?(name)
- path = File.dirname(__FILE__)
- @icon_cache[name] = Gdk::Pixbuf.new(File.join(path, name + '.xpm'))
- end
- @icon_cache[name]
- end
-
- # Opens an error dialog on top of _window_ showing the error message
- # _text_.
- def Editor.error_dialog(window, text)
- dialog = MessageDialog.new(window, Dialog::MODAL,
- MessageDialog::ERROR,
- MessageDialog::BUTTONS_CLOSE, text)
- dialog.show_all
- dialog.run
- rescue TypeError
- dialog = MessageDialog.new(Editor.window, Dialog::MODAL,
- MessageDialog::ERROR,
- MessageDialog::BUTTONS_CLOSE, text)
- dialog.show_all
- dialog.run
- ensure
- dialog.destroy if dialog
- end
-
- # Opens a yes/no question dialog on top of _window_ showing the error
- # message _text_. If yes was answered _true_ is returned, otherwise
- # _false_.
- def Editor.question_dialog(window, text)
- dialog = MessageDialog.new(window, Dialog::MODAL,
- MessageDialog::QUESTION,
- MessageDialog::BUTTONS_YES_NO, text)
- dialog.show_all
- dialog.run do |response|
- return Gtk::Dialog::RESPONSE_YES === response
- end
- ensure
- dialog.destroy if dialog
- end
-
- # Convert the tree model starting from Gtk::TreeIter _iter_ into a Ruby
- # data structure and return it.
- def Editor.model2data(iter)
- return nil if iter.nil?
- case iter.type
- when 'Hash'
- hash = {}
- iter.each { |c| hash[c.content] = Editor.model2data(c.first_child) }
- hash
- when 'Array'
- array = Array.new(iter.n_children)
- iter.each_with_index { |c, i| array[i] = Editor.model2data(c) }
- array
- when 'Key'
- iter.content
- when 'String'
- iter.content
- when 'Numeric'
- content = iter.content
- if /\./.match(content)
- content.to_f
- else
- content.to_i
- end
- when 'TrueClass'
- true
- when 'FalseClass'
- false
- when 'NilClass'
- nil
- else
- fail "Unknown type found in model: #{iter.type}"
- end
- end
-
- # Convert the Ruby data structure _data_ into tree model data for Gtk and
- # returns the whole model. If the parameter _model_ wasn't given a new
- # Gtk::TreeStore is created as the model. The _parent_ parameter specifies
- # the parent node (iter, Gtk:TreeIter instance) to which the data is
- # appended, alternativeley the result of the yielded block is used as iter.
- def Editor.data2model(data, model = nil, parent = nil)
- model ||= TreeStore.new(Gdk::Pixbuf, String, String)
- iter = if block_given?
- yield model
- else
- model.append(parent)
- end
- case data
- when Hash
- iter.type = 'Hash'
- data.sort.each do |key, value|
- pair_iter = model.append(iter)
- pair_iter.type = 'Key'
- pair_iter.content = key.to_s
- Editor.data2model(value, model, pair_iter)
- end
- when Array
- iter.type = 'Array'
- data.each do |value|
- Editor.data2model(value, model, iter)
- end
- when Numeric
- iter.type = 'Numeric'
- iter.content = data.to_s
- when String, true, false, nil
- iter.type = data.class.name
- iter.content = data.nil? ? 'null' : data.to_s
- else
- iter.type = 'String'
- iter.content = data.to_s
- end
- model
- end
-
- # The Gtk::TreeIter class is reopened and some auxiliary methods are added.
- class Gtk::TreeIter
- include Enumerable
-
- # Traverse each of this Gtk::TreeIter instance's children
- # and yield to them.
- def each
- n_children.times { |i| yield nth_child(i) }
- end
-
- # Recursively traverse all nodes of this Gtk::TreeIter's subtree
- # (including self) and yield to them.
- def recursive_each(&block)
- yield self
- each do |i|
- i.recursive_each(&block)
- end
- end
-
- # Remove the subtree of this Gtk::TreeIter instance from the
- # model _model_.
- def remove_subtree(model)
- while current = first_child
- model.remove(current)
- end
- end
-
- # Returns the type of this node.
- def type
- self[TYPE_COL]
- end
-
- # Sets the type of this node to _value_. This implies setting
- # the respective icon accordingly.
- def type=(value)
- self[TYPE_COL] = value
- self[ICON_COL] = Editor.fetch_icon(value)
- end
-
- # Returns the content of this node.
- def content
- self[CONTENT_COL]
- end
-
- # Sets the content of this node to _value_.
- def content=(value)
- self[CONTENT_COL] = value
- end
- end
-
- # This module bundles some method, that can be used to create a menu. It
- # should be included into the class in question.
- module MenuExtension
- include Gtk
-
- # Creates a Menu, that includes MenuExtension. _treeview_ is the
- # Gtk::TreeView, on which it operates.
- def initialize(treeview)
- @treeview = treeview
- @menu = Menu.new
- end
-
- # Returns the Gtk::TreeView of this menu.
- attr_reader :treeview
-
- # Returns the menu.
- attr_reader :menu
-
- # Adds a Gtk::SeparatorMenuItem to this instance's #menu.
- def add_separator
- menu.append SeparatorMenuItem.new
- end
-
- # Adds a Gtk::MenuItem to this instance's #menu. _label_ is the label
- # string, _klass_ is the item type, and _callback_ is the procedure, that
- # is called if the _item_ is activated.
- def add_item(label, keyval = nil, klass = MenuItem, &callback)
- label = "#{label} (C-#{keyval.chr})" if keyval
- item = klass.new(label)
- item.signal_connect(:activate, &callback)
- if keyval
- self.signal_connect(:'key-press-event') do |item, event|
- if event.state & Gdk::Window::ModifierType::CONTROL_MASK != 0 and
- event.keyval == keyval
- callback.call item
- end
- end
- end
- menu.append item
- item
- end
-
- # This method should be implemented in subclasses to create the #menu of
- # this instance. It has to be called after an instance of this class is
- # created, to build the menu.
- def create
- raise NotImplementedError
- end
-
- def method_missing(*a, &b)
- treeview.__send__(*a, &b)
- end
- end
-
- # This class creates the popup menu, that opens when clicking onto the
- # treeview.
- class PopUpMenu
- include MenuExtension
-
- # Change the type or content of the selected node.
- def change_node(item)
- if current = selection.selected
- parent = current.parent
- old_type, old_content = current.type, current.content
- if ALL_TYPES.include?(old_type)
- @clipboard_data = Editor.model2data(current)
- type, content = ask_for_element(parent, current.type,
- current.content)
- if type
- current.type, current.content = type, content
- current.remove_subtree(model)
- toplevel.display_status("Changed a node in tree.")
- window.change
- end
- else
- toplevel.display_status(
- "Cannot change node of type #{old_type} in tree!")
- end
- end
- end
-
- # Cut the selected node and its subtree, and save it into the
- # clipboard.
- def cut_node(item)
- if current = selection.selected
- if current and current.type == 'Key'
- @clipboard_data = {
- current.content => Editor.model2data(current.first_child)
- }
- else
- @clipboard_data = Editor.model2data(current)
- end
- model.remove(current)
- window.change
- toplevel.display_status("Cut a node from tree.")
- end
- end
-
- # Copy the selected node and its subtree, and save it into the
- # clipboard.
- def copy_node(item)
- if current = selection.selected
- if current and current.type == 'Key'
- @clipboard_data = {
- current.content => Editor.model2data(current.first_child)
- }
- else
- @clipboard_data = Editor.model2data(current)
- end
- window.change
- toplevel.display_status("Copied a node from tree.")
- end
- end
-
- # Paste the data in the clipboard into the selected Array or Hash by
- # appending it.
- def paste_node_appending(item)
- if current = selection.selected
- if @clipboard_data
- case current.type
- when 'Array'
- Editor.data2model(@clipboard_data, model, current)
- expand_collapse(current)
- when 'Hash'
- if @clipboard_data.is_a? Hash
- parent = current.parent
- hash = Editor.model2data(current)
- model.remove(current)
- hash.update(@clipboard_data)
- Editor.data2model(hash, model, parent)
- if parent
- expand_collapse(parent)
- elsif @expanded
- expand_all
- end
- window.change
- else
- toplevel.display_status(
- "Cannot paste non-#{current.type} data into '#{current.type}'!")
- end
- else
- toplevel.display_status(
- "Cannot paste node below '#{current.type}'!")
- end
- else
- toplevel.display_status("Nothing to paste in clipboard!")
- end
- else
- toplevel.display_status("Append a node into the root first!")
- end
- end
-
- # Paste the data in the clipboard into the selected Array inserting it
- # before the selected element.
- def paste_node_inserting_before(item)
- if current = selection.selected
- if @clipboard_data
- parent = current.parent or return
- parent_type = parent.type
- if parent_type == 'Array'
- selected_index = parent.each_with_index do |c, i|
- break i if c == current
- end
- Editor.data2model(@clipboard_data, model, parent) do |m|
- m.insert_before(parent, current)
- end
- expand_collapse(current)
- toplevel.display_status("Inserted an element to " +
- "'#{parent_type}' before index #{selected_index}.")
- window.change
- else
- toplevel.display_status(
- "Cannot insert node below '#{parent_type}'!")
- end
- else
- toplevel.display_status("Nothing to paste in clipboard!")
- end
- else
- toplevel.display_status("Append a node into the root first!")
- end
- end
-
- # Append a new node to the selected Hash or Array.
- def append_new_node(item)
- if parent = selection.selected
- parent_type = parent.type
- case parent_type
- when 'Hash'
- key, type, content = ask_for_hash_pair(parent)
- key or return
- iter = create_node(parent, 'Key', key)
- iter = create_node(iter, type, content)
- toplevel.display_status(
- "Added a (key, value)-pair to '#{parent_type}'.")
- window.change
- when 'Array'
- type, content = ask_for_element(parent)
- type or return
- iter = create_node(parent, type, content)
- window.change
- toplevel.display_status("Appendend an element to '#{parent_type}'.")
- else
- toplevel.display_status("Cannot append to '#{parent_type}'!")
- end
- else
- type, content = ask_for_element
- type or return
- iter = create_node(nil, type, content)
- window.change
- end
- end
-
- # Insert a new node into an Array before the selected element.
- def insert_new_node(item)
- if current = selection.selected
- parent = current.parent or return
- parent_parent = parent.parent
- parent_type = parent.type
- if parent_type == 'Array'
- selected_index = parent.each_with_index do |c, i|
- break i if c == current
- end
- type, content = ask_for_element(parent)
- type or return
- iter = model.insert_before(parent, current)
- iter.type, iter.content = type, content
- toplevel.display_status("Inserted an element to " +
- "'#{parent_type}' before index #{selected_index}.")
- window.change
- else
- toplevel.display_status(
- "Cannot insert node below '#{parent_type}'!")
- end
- else
- toplevel.display_status("Append a node into the root first!")
- end
- end
-
- # Recursively collapse/expand a subtree starting from the selected node.
- def collapse_expand(item)
- if current = selection.selected
- if row_expanded?(current.path)
- collapse_row(current.path)
- else
- expand_row(current.path, true)
- end
- else
- toplevel.display_status("Append a node into the root first!")
- end
- end
-
- # Create the menu.
- def create
- add_item("Change node", ?n, &method(:change_node))
- add_separator
- add_item("Cut node", ?X, &method(:cut_node))
- add_item("Copy node", ?C, &method(:copy_node))
- add_item("Paste node (appending)", ?A, &method(:paste_node_appending))
- add_item("Paste node (inserting before)", ?I,
- &method(:paste_node_inserting_before))
- add_separator
- add_item("Append new node", ?a, &method(:append_new_node))
- add_item("Insert new node before", ?i, &method(:insert_new_node))
- add_separator
- add_item("Collapse/Expand node (recursively)", ?e,
- &method(:collapse_expand))
-
- menu.show_all
- signal_connect(:button_press_event) do |widget, event|
- if event.kind_of? Gdk::EventButton and event.button == 3
- menu.popup(nil, nil, event.button, event.time)
- end
- end
- signal_connect(:popup_menu) do
- menu.popup(nil, nil, 0, Gdk::Event::CURRENT_TIME)
- end
- end
- end
-
- # This class creates the File pulldown menu.
- class FileMenu
- include MenuExtension
-
- # Clear the model and filename, but ask to save the JSON document, if
- # unsaved changes have occured.
- def new(item)
- window.clear
- end
-
- # Open a file and load it into the editor. Ask to save the JSON document
- # first, if unsaved changes have occured.
- def open(item)
- window.file_open
- end
-
- def open_location(item)
- window.location_open
- end
-
- # Revert the current JSON document in the editor to the saved version.
- def revert(item)
- window.instance_eval do
- @filename and file_open(@filename)
- end
- end
-
- # Save the current JSON document.
- def save(item)
- window.file_save
- end
-
- # Save the current JSON document under the given filename.
- def save_as(item)
- window.file_save_as
- end
-
- # Quit the editor, after asking to save any unsaved changes first.
- def quit(item)
- window.quit
- end
-
- # Create the menu.
- def create
- title = MenuItem.new('File')
- title.submenu = menu
- add_item('New', &method(:new))
- add_item('Open', ?o, &method(:open))
- add_item('Open location', ?l, &method(:open_location))
- add_item('Revert', &method(:revert))
- add_separator
- add_item('Save', ?s, &method(:save))
- add_item('Save As', ?S, &method(:save_as))
- add_separator
- add_item('Quit', ?q, &method(:quit))
- title
- end
- end
-
- # This class creates the Edit pulldown menu.
- class EditMenu
- include MenuExtension
-
- # Copy data from model into primary clipboard.
- def copy(item)
- data = Editor.model2data(model.iter_first)
- json = JSON.pretty_generate(data, :max_nesting => false)
- c = Gtk::Clipboard.get(Gdk::Selection::PRIMARY)
- c.text = json
- end
-
- # Copy json text from primary clipboard into model.
- def paste(item)
- c = Gtk::Clipboard.get(Gdk::Selection::PRIMARY)
- if json = c.wait_for_text
- window.ask_save if @changed
- begin
- window.edit json
- rescue JSON::ParserError
- window.clear
- end
- end
- end
-
- # Find a string in all nodes' contents and select the found node in the
- # treeview.
- def find(item)
- @search = ask_for_find_term(@search) or return
- iter = model.get_iter('0') or return
- iter.recursive_each do |i|
- if @iter
- if @iter != i
- next
- else
- @iter = nil
- next
- end
- elsif @search.match(i[CONTENT_COL])
- set_cursor(i.path, nil, false)
- @iter = i
- break
- end
- end
- end
-
- # Repeat the last search given by #find.
- def find_again(item)
- @search or return
- iter = model.get_iter('0')
- iter.recursive_each do |i|
- if @iter
- if @iter != i
- next
- else
- @iter = nil
- next
- end
- elsif @search.match(i[CONTENT_COL])
- set_cursor(i.path, nil, false)
- @iter = i
- break
- end
- end
- end
-
- # Sort (Reverse sort) all elements of the selected array by the given
- # expression. _x_ is the element in question.
- def sort(item)
- if current = selection.selected
- if current.type == 'Array'
- parent = current.parent
- ary = Editor.model2data(current)
- order, reverse = ask_for_order
- order or return
- begin
- block = eval "lambda { |x| #{order} }"
- if reverse
- ary.sort! { |a,b| block[b] <=> block[a] }
- else
- ary.sort! { |a,b| block[a] <=> block[b] }
- end
- rescue => e
- Editor.error_dialog(self, "Failed to sort Array with #{order}: #{e}!")
- else
- Editor.data2model(ary, model, parent) do |m|
- m.insert_before(parent, current)
- end
- model.remove(current)
- expand_collapse(parent)
- window.change
- toplevel.display_status("Array has been sorted.")
- end
- else
- toplevel.display_status("Only Array nodes can be sorted!")
- end
- else
- toplevel.display_status("Select an Array to sort first!")
- end
- end
-
- # Create the menu.
- def create
- title = MenuItem.new('Edit')
- title.submenu = menu
- add_item('Copy', ?c, &method(:copy))
- add_item('Paste', ?v, &method(:paste))
- add_separator
- add_item('Find', ?f, &method(:find))
- add_item('Find Again', ?g, &method(:find_again))
- add_separator
- add_item('Sort', ?S, &method(:sort))
- title
- end
- end
-
- class OptionsMenu
- include MenuExtension
-
- # Collapse/Expand all nodes by default.
- def collapsed_nodes(item)
- if expanded
- self.expanded = false
- collapse_all
- else
- self.expanded = true
- expand_all
- end
- end
-
- # Toggle pretty saving mode on/off.
- def pretty_saving(item)
- @pretty_item.toggled
- window.change
- end
-
- attr_reader :pretty_item
-
- # Create the menu.
- def create
- title = MenuItem.new('Options')
- title.submenu = menu
- add_item('Collapsed nodes', nil, CheckMenuItem, &method(:collapsed_nodes))
- @pretty_item = add_item('Pretty saving', nil, CheckMenuItem,
- &method(:pretty_saving))
- @pretty_item.active = true
- window.unchange
- title
- end
- end
-
- # This class inherits from Gtk::TreeView, to configure it and to add a lot
- # of behaviour to it.
- class JSONTreeView < Gtk::TreeView
- include Gtk
-
- # Creates a JSONTreeView instance, the parameter _window_ is
- # a MainWindow instance and used for self delegation.
- def initialize(window)
- @window = window
- super(TreeStore.new(Gdk::Pixbuf, String, String))
- self.selection.mode = SELECTION_BROWSE
-
- @expanded = false
- self.headers_visible = false
- add_columns
- add_popup_menu
- end
-
- # Returns the MainWindow instance of this JSONTreeView.
- attr_reader :window
-
- # Returns true, if nodes are autoexpanding, false otherwise.
- attr_accessor :expanded
-
- private
-
- def add_columns
- cell = CellRendererPixbuf.new
- column = TreeViewColumn.new('Icon', cell,
- 'pixbuf' => ICON_COL
- )
- append_column(column)
-
- cell = CellRendererText.new
- column = TreeViewColumn.new('Type', cell,
- 'text' => TYPE_COL
- )
- append_column(column)
-
- cell = CellRendererText.new
- cell.editable = true
- column = TreeViewColumn.new('Content', cell,
- 'text' => CONTENT_COL
- )
- cell.signal_connect(:edited, &method(:cell_edited))
- append_column(column)
- end
-
- def unify_key(iter, key)
- return unless iter.type == 'Key'
- parent = iter.parent
- if parent.any? { |c| c != iter and c.content == key }
- old_key = key
- i = 0
- begin
- key = sprintf("%s.%d", old_key, i += 1)
- end while parent.any? { |c| c != iter and c.content == key }
- end
- iter.content = key
- end
-
- def cell_edited(cell, path, value)
- iter = model.get_iter(path)
- case iter.type
- when 'Key'
- unify_key(iter, value)
- toplevel.display_status('Key has been changed.')
- when 'FalseClass'
- value.downcase!
- if value == 'true'
- iter.type, iter.content = 'TrueClass', 'true'
- end
- when 'TrueClass'
- value.downcase!
- if value == 'false'
- iter.type, iter.content = 'FalseClass', 'false'
- end
- when 'Numeric'
- iter.content =
- if value == 'Infinity'
- value
- else
- (Integer(value) rescue Float(value) rescue 0).to_s
- end
- when 'String'
- iter.content = value
- when 'Hash', 'Array'
- return
- else
- fail "Unknown type found in model: #{iter.type}"
- end
- window.change
- end
-
- def configure_value(value, type)
- value.editable = false
- case type
- when 'Array', 'Hash'
- value.text = ''
- when 'TrueClass'
- value.text = 'true'
- when 'FalseClass'
- value.text = 'false'
- when 'NilClass'
- value.text = 'null'
- when 'Numeric', 'String'
- value.text ||= ''
- value.editable = true
- else
- raise ArgumentError, "unknown type '#{type}' encountered"
- end
- end
-
- def add_popup_menu
- menu = PopUpMenu.new(self)
- menu.create
- end
-
- public
-
- # Create a _type_ node with content _content_, and add it to _parent_
- # in the model. If _parent_ is nil, create a new model and put it into
- # the editor treeview.
- def create_node(parent, type, content)
- iter = if parent
- model.append(parent)
- else
- new_model = Editor.data2model(nil)
- toplevel.view_new_model(new_model)
- new_model.iter_first
- end
- iter.type, iter.content = type, content
- expand_collapse(parent) if parent
- iter
- end
-
- # Ask for a hash key, value pair to be added to the Hash node _parent_.
- def ask_for_hash_pair(parent)
- key_input = type_input = value_input = nil
-
- dialog = Dialog.new("New (key, value) pair for Hash", nil, nil,
- [ Stock::OK, Dialog::RESPONSE_ACCEPT ],
- [ Stock::CANCEL, Dialog::RESPONSE_REJECT ]
- )
- dialog.width_request = 640
-
- hbox = HBox.new(false, 5)
- hbox.pack_start(Label.new("Key:"), false)
- hbox.pack_start(key_input = Entry.new)
- key_input.text = @key || ''
- dialog.vbox.pack_start(hbox, false)
- key_input.signal_connect(:activate) do
- if parent.any? { |c| c.content == key_input.text }
- toplevel.display_status('Key already exists in Hash!')
- key_input.text = ''
- else
- toplevel.display_status('Key has been changed.')
- end
- end
-
- hbox = HBox.new(false, 5)
- hbox.pack_start(Label.new("Type:"), false)
- hbox.pack_start(type_input = ComboBox.new(true))
- ALL_TYPES.each { |t| type_input.append_text(t) }
- type_input.active = @type || 0
- dialog.vbox.pack_start(hbox, false)
-
- type_input.signal_connect(:changed) do
- value_input.editable = false
- case ALL_TYPES[type_input.active]
- when 'Array', 'Hash'
- value_input.text = ''
- when 'TrueClass'
- value_input.text = 'true'
- when 'FalseClass'
- value_input.text = 'false'
- when 'NilClass'
- value_input.text = 'null'
- else
- value_input.text = ''
- value_input.editable = true
- end
- end
-
- hbox = HBox.new(false, 5)
- hbox.pack_start(Label.new("Value:"), false)
- hbox.pack_start(value_input = Entry.new)
- value_input.width_chars = 60
- value_input.text = @value || ''
- dialog.vbox.pack_start(hbox, false)
-
- dialog.signal_connect(:'key-press-event', &DEFAULT_DIALOG_KEY_PRESS_HANDLER)
- dialog.show_all
- self.focus = dialog
- dialog.run do |response|
- if response == Dialog::RESPONSE_ACCEPT
- @key = key_input.text
- type = ALL_TYPES[@type = type_input.active]
- content = value_input.text
- return @key, type, content
- end
- end
- return
- ensure
- dialog.destroy
- end
-
- # Ask for an element to be appended _parent_.
- def ask_for_element(parent = nil, default_type = nil, value_text = @content)
- type_input = value_input = nil
-
- dialog = Dialog.new(
- "New element into #{parent ? parent.type : 'root'}",
- nil, nil,
- [ Stock::OK, Dialog::RESPONSE_ACCEPT ],
- [ Stock::CANCEL, Dialog::RESPONSE_REJECT ]
- )
- hbox = HBox.new(false, 5)
- hbox.pack_start(Label.new("Type:"), false)
- hbox.pack_start(type_input = ComboBox.new(true))
- default_active = 0
- types = parent ? ALL_TYPES : CONTAINER_TYPES
- types.each_with_index do |t, i|
- type_input.append_text(t)
- if t == default_type
- default_active = i
- end
- end
- type_input.active = default_active
- dialog.vbox.pack_start(hbox, false)
- type_input.signal_connect(:changed) do
- configure_value(value_input, types[type_input.active])
- end
-
- hbox = HBox.new(false, 5)
- hbox.pack_start(Label.new("Value:"), false)
- hbox.pack_start(value_input = Entry.new)
- value_input.width_chars = 60
- value_input.text = value_text if value_text
- configure_value(value_input, types[type_input.active])
-
- dialog.vbox.pack_start(hbox, false)
-
- dialog.signal_connect(:'key-press-event', &DEFAULT_DIALOG_KEY_PRESS_HANDLER)
- dialog.show_all
- self.focus = dialog
- dialog.run do |response|
- if response == Dialog::RESPONSE_ACCEPT
- type = types[type_input.active]
- @content = case type
- when 'Numeric'
- if (t = value_input.text) == 'Infinity'
- 1 / 0.0
- else
- Integer(t) rescue Float(t) rescue 0
- end
- else
- value_input.text
- end.to_s
- return type, @content
- end
- end
- return
- ensure
- dialog.destroy if dialog
- end
-
- # Ask for an order criteria for sorting, using _x_ for the element in
- # question. Returns the order criterium, and true/false for reverse
- # sorting.
- def ask_for_order
- dialog = Dialog.new(
- "Give an order criterium for 'x'.",
- nil, nil,
- [ Stock::OK, Dialog::RESPONSE_ACCEPT ],
- [ Stock::CANCEL, Dialog::RESPONSE_REJECT ]
- )
- hbox = HBox.new(false, 5)
-
- hbox.pack_start(Label.new("Order:"), false)
- hbox.pack_start(order_input = Entry.new)
- order_input.text = @order || 'x'
- order_input.width_chars = 60
-
- hbox.pack_start(reverse_checkbox = CheckButton.new('Reverse'), false)
-
- dialog.vbox.pack_start(hbox, false)
-
- dialog.signal_connect(:'key-press-event', &DEFAULT_DIALOG_KEY_PRESS_HANDLER)
- dialog.show_all
- self.focus = dialog
- dialog.run do |response|
- if response == Dialog::RESPONSE_ACCEPT
- return @order = order_input.text, reverse_checkbox.active?
- end
- end
- return
- ensure
- dialog.destroy if dialog
- end
-
- # Ask for a find term to search for in the tree. Returns the term as a
- # string.
- def ask_for_find_term(search = nil)
- dialog = Dialog.new(
- "Find a node matching regex in tree.",
- nil, nil,
- [ Stock::OK, Dialog::RESPONSE_ACCEPT ],
- [ Stock::CANCEL, Dialog::RESPONSE_REJECT ]
- )
- hbox = HBox.new(false, 5)
-
- hbox.pack_start(Label.new("Regex:"), false)
- hbox.pack_start(regex_input = Entry.new)
- hbox.pack_start(icase_checkbox = CheckButton.new('Icase'), false)
- regex_input.width_chars = 60
- if search
- regex_input.text = search.source
- icase_checkbox.active = search.casefold?
- end
-
- dialog.vbox.pack_start(hbox, false)
-
- dialog.signal_connect(:'key-press-event', &DEFAULT_DIALOG_KEY_PRESS_HANDLER)
- dialog.show_all
- self.focus = dialog
- dialog.run do |response|
- if response == Dialog::RESPONSE_ACCEPT
- begin
- return Regexp.new(regex_input.text, icase_checkbox.active? ? Regexp::IGNORECASE : 0)
- rescue => e
- Editor.error_dialog(self, "Evaluation of regex /#{regex_input.text}/ failed: #{e}!")
- return
- end
- end
- end
- return
- ensure
- dialog.destroy if dialog
- end
-
- # Expand or collapse row pointed to by _iter_ according
- # to the #expanded attribute.
- def expand_collapse(iter)
- if expanded
- expand_row(iter.path, true)
- else
- collapse_row(iter.path)
- end
- end
- end
-
- # The editor main window
- class MainWindow < Gtk::Window
- include Gtk
-
- def initialize(encoding)
- @changed = false
- @encoding = encoding
- super(TOPLEVEL)
- display_title
- set_default_size(800, 600)
- signal_connect(:delete_event) { quit }
-
- vbox = VBox.new(false, 0)
- add(vbox)
- #vbox.border_width = 0
-
- @treeview = JSONTreeView.new(self)
- @treeview.signal_connect(:'cursor-changed') do
- display_status('')
- end
-
- menu_bar = create_menu_bar
- vbox.pack_start(menu_bar, false, false, 0)
-
- sw = ScrolledWindow.new(nil, nil)
- sw.shadow_type = SHADOW_ETCHED_IN
- sw.set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC)
- vbox.pack_start(sw, true, true, 0)
- sw.add(@treeview)
-
- @status_bar = Statusbar.new
- vbox.pack_start(@status_bar, false, false, 0)
-
- @filename ||= nil
- if @filename
- data = read_data(@filename)
- view_new_model Editor.data2model(data)
- end
-
- signal_connect(:button_release_event) do |_,event|
- if event.button == 2
- c = Gtk::Clipboard.get(Gdk::Selection::PRIMARY)
- if url = c.wait_for_text
- location_open url
- end
- false
- else
- true
- end
- end
- end
-
- # Creates the menu bar with the pulldown menus and returns it.
- def create_menu_bar
- menu_bar = MenuBar.new
- @file_menu = FileMenu.new(@treeview)
- menu_bar.append @file_menu.create
- @edit_menu = EditMenu.new(@treeview)
- menu_bar.append @edit_menu.create
- @options_menu = OptionsMenu.new(@treeview)
- menu_bar.append @options_menu.create
- menu_bar
- end
-
- # Sets editor status to changed, to indicate that the edited data
- # containts unsaved changes.
- def change
- @changed = true
- display_title
- end
-
- # Sets editor status to unchanged, to indicate that the edited data
- # doesn't containt unsaved changes.
- def unchange
- @changed = false
- display_title
- end
-
- # Puts a new model _model_ into the Gtk::TreeView to be edited.
- def view_new_model(model)
- @treeview.model = model
- @treeview.expanded = true
- @treeview.expand_all
- unchange
- end
-
- # Displays _text_ in the status bar.
- def display_status(text)
- @cid ||= nil
- @status_bar.pop(@cid) if @cid
- @cid = @status_bar.get_context_id('dummy')
- @status_bar.push(@cid, text)
- end
-
- # Opens a dialog, asking, if changes should be saved to a file.
- def ask_save
- if Editor.question_dialog(self,
- "Unsaved changes to JSON model. Save?")
- if @filename
- file_save
- else
- file_save_as
- end
- end
- end
-
- # Quit this editor, that is, leave this editor's main loop.
- def quit
- ask_save if @changed
- if Gtk.main_level > 0
- destroy
- Gtk.main_quit
- end
- nil
- end
-
- # Display the new title according to the editor's current state.
- def display_title
- title = TITLE.dup
- title << ": #@filename" if @filename
- title << " *" if @changed
- self.title = title
- end
-
- # Clear the current model, after asking to save all unsaved changes.
- def clear
- ask_save if @changed
- @filename = nil
- self.view_new_model nil
- end
-
- def check_pretty_printed(json)
- pretty = !!((nl_index = json.index("\n")) && nl_index != json.size - 1)
- @options_menu.pretty_item.active = pretty
- end
- private :check_pretty_printed
-
- # Open the data at the location _uri_, if given. Otherwise open a dialog
- # to ask for the _uri_.
- def location_open(uri = nil)
- uri = ask_for_location unless uri
- uri or return
- ask_save if @changed
- data = load_location(uri) or return
- view_new_model Editor.data2model(data)
- end
-
- # Open the file _filename_ or call the #select_file method to ask for a
- # filename.
- def file_open(filename = nil)
- filename = select_file('Open as a JSON file') unless filename
- data = load_file(filename) or return
- view_new_model Editor.data2model(data)
- end
-
- # Edit the string _json_ in the editor.
- def edit(json)
- if json.respond_to? :read
- json = json.read
- end
- data = parse_json json
- view_new_model Editor.data2model(data)
- end
-
- # Save the current file.
- def file_save
- if @filename
- store_file(@filename)
- else
- file_save_as
- end
- end
-
- # Save the current file as the filename
- def file_save_as
- filename = select_file('Save as a JSON file')
- store_file(filename)
- end
-
- # Store the current JSON document to _path_.
- def store_file(path)
- if path
- data = Editor.model2data(@treeview.model.iter_first)
- File.open(path + '.tmp', 'wb') do |output|
- data or break
- if @options_menu.pretty_item.active?
- output.puts JSON.pretty_generate(data, :max_nesting => false)
- else
- output.write JSON.generate(data, :max_nesting => false)
- end
- end
- File.rename path + '.tmp', path
- @filename = path
- toplevel.display_status("Saved data to '#@filename'.")
- unchange
- end
- rescue SystemCallError => e
- Editor.error_dialog(self, "Failed to store JSON file: #{e}!")
- end
-
- # Load the file named _filename_ into the editor as a JSON document.
- def load_file(filename)
- if filename
- if File.directory?(filename)
- Editor.error_dialog(self, "Try to select a JSON file!")
- nil
- else
- @filename = filename
- if data = read_data(filename)
- toplevel.display_status("Loaded data from '#@filename'.")
- end
- display_title
- data
- end
- end
- end
-
- # Load the data at location _uri_ into the editor as a JSON document.
- def load_location(uri)
- data = read_data(uri) or return
- @filename = nil
- toplevel.display_status("Loaded data from '#{uri}'.")
- display_title
- data
- end
-
- def parse_json(json)
- check_pretty_printed(json)
- if @encoding && !/^utf8$/i.match(@encoding)
- json = JSON.iconv 'utf-8', @encoding, json
- end
- JSON::parse(json, :max_nesting => false, :create_additions => false)
- end
- private :parse_json
-
- # Read a JSON document from the file named _filename_, parse it into a
- # ruby data structure, and return the data.
- def read_data(filename)
- open(filename) do |f|
- json = f.read
- return parse_json(json)
- end
- rescue => e
- Editor.error_dialog(self, "Failed to parse JSON file: #{e}!")
- return
- end
-
- # Open a file selecton dialog, displaying _message_, and return the
- # selected filename or nil, if no file was selected.
- def select_file(message)
- filename = nil
- fs = FileSelection.new(message)
- fs.set_modal(true)
- @default_dir = File.join(Dir.pwd, '') unless @default_dir
- fs.set_filename(@default_dir)
- fs.set_transient_for(self)
- fs.signal_connect(:destroy) { Gtk.main_quit }
- fs.ok_button.signal_connect(:clicked) do
- filename = fs.filename
- @default_dir = File.join(File.dirname(filename), '')
- fs.destroy
- Gtk.main_quit
- end
- fs.cancel_button.signal_connect(:clicked) do
- fs.destroy
- Gtk.main_quit
- end
- fs.show_all
- Gtk.main
- filename
- end
-
- # Ask for location URI a to load data from. Returns the URI as a string.
- def ask_for_location
- dialog = Dialog.new(
- "Load data from location...",
- nil, nil,
- [ Stock::OK, Dialog::RESPONSE_ACCEPT ],
- [ Stock::CANCEL, Dialog::RESPONSE_REJECT ]
- )
- hbox = HBox.new(false, 5)
-
- hbox.pack_start(Label.new("Location:"), false)
- hbox.pack_start(location_input = Entry.new)
- location_input.width_chars = 60
- location_input.text = @location || ''
-
- dialog.vbox.pack_start(hbox, false)
-
- dialog.signal_connect(:'key-press-event', &DEFAULT_DIALOG_KEY_PRESS_HANDLER)
- dialog.show_all
- dialog.run do |response|
- if response == Dialog::RESPONSE_ACCEPT
- return @location = location_input.text
- end
- end
- return
- ensure
- dialog.destroy if dialog
- end
- end
-
- class << self
- # Starts a JSON Editor. If a block was given, it yields
- # to the JSON::Editor::MainWindow instance.
- def start(encoding = 'utf8') # :yield: window
- Gtk.init
- @window = Editor::MainWindow.new(encoding)
- @window.icon_list = [ Editor.fetch_icon('json') ]
- yield @window if block_given?
- @window.show_all
- Gtk.main
- end
-
- # Edit the string _json_ with encoding _encoding_ in the editor.
- def edit(json, encoding = 'utf8')
- start(encoding) do |window|
- window.edit json
- end
- end
-
- attr_reader :window
- end
- end
-end
diff --git a/vendor/gems/json-1.5.1/lib/json/ext.rb b/vendor/gems/json-1.5.1/lib/json/ext.rb
deleted file mode 100644
index 1fbc3fd7d..000000000
--- a/vendor/gems/json-1.5.1/lib/json/ext.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'json/common'
-
-module JSON
- # This module holds all the modules/classes that implement JSON's
- # functionality as C extensions.
- module Ext
- begin
- if defined?(RUBY_ENGINE) == 'constant' and RUBY_ENGINE == 'ruby' and RUBY_VERSION =~ /\A1\.9\./
- require 'json/ext/1.9/parser'
- require 'json/ext/1.9/generator'
- elsif !defined?(RUBY_ENGINE) && RUBY_VERSION =~ /\A1\.8\./
- require 'json/ext/1.8/parser'
- require 'json/ext/1.8/generator'
- else
- require 'json/ext/parser'
- require 'json/ext/generator'
- end
- rescue LoadError
- require 'json/ext/parser'
- require 'json/ext/generator'
- end
- $DEBUG and warn "Using Ext extension for JSON."
- JSON.parser = Parser
- JSON.generator = Generator
- end
-
- JSON_LOADED = true unless defined?(::JSON::JSON_LOADED)
-end
diff --git a/vendor/gems/json-1.5.1/lib/json/json.xpm b/vendor/gems/json-1.5.1/lib/json/json.xpm
deleted file mode 100644
index 2cb626bb0..000000000
--- a/vendor/gems/json-1.5.1/lib/json/json.xpm
+++ /dev/null
@@ -1,1499 +0,0 @@
-/* XPM */
-static char * json_xpm[] = {
-"64 64 1432 2",
-" c None",
-". c #641839",
-"+ c #CF163C",
-"@ c #D31C3B",
-"# c #E11A38",
-"$ c #5F242D",
-"% c #320C22",
-"& c #9B532D",
-"* c #F32E34",
-"= c #820F33",
-"- c #4B0F34",
-"; c #8E1237",
-"> c #944029",
-", c #961325",
-"' c #A00C24",
-") c #872C23",
-"! c #694021",
-"~ c #590D1F",
-"{ c #420528",
-"] c #D85A2D",
-"^ c #7E092B",
-"/ c #0E0925",
-"( c #0D081F",
-"_ c #0F081E",
-": c #12071F",
-"< c #360620",
-"[ c #682A21",
-"} c #673F21",
-"| c #780E21",
-"1 c #A82320",
-"2 c #8D1D1F",
-"3 c #970127",
-"4 c #0D0123",
-"5 c #0D0324",
-"6 c #3B1E28",
-"7 c #C28429",
-"8 c #0C0523",
-"9 c #0C041E",
-"0 c #0E031A",
-"a c #11031A",
-"b c #13031B",
-"c c #13031C",
-"d c #11031D",
-"e c #19051E",
-"f c #390E20",
-"g c #9C0C20",
-"h c #C00721",
-"i c #980320",
-"j c #14031E",
-"k c #CD9F32",
-"l c #C29F2E",
-"m c #0F0325",
-"n c #0D0321",
-"o c #0E0324",
-"p c #D08329",
-"q c #9D1B27",
-"r c #1C0320",
-"s c #0D011A",
-"t c #120117",
-"u c #130017",
-"v c #150018",
-"w c #160119",
-"x c #17021A",
-"y c #15021B",
-"z c #11021E",
-"A c #0F021F",
-"B c #8C1821",
-"C c #CF4522",
-"D c #831821",
-"E c #BA7033",
-"F c #EDB339",
-"G c #C89733",
-"H c #280727",
-"I c #0F051F",
-"J c #0E0420",
-"K c #591F27",
-"L c #E47129",
-"M c #612224",
-"N c #0C021D",
-"O c #120018",
-"P c #140017",
-"Q c #170017",
-"R c #190018",
-"S c #1B0019",
-"T c #1B011A",
-"U c #18011B",
-"V c #15011C",
-"W c #12031E",
-"X c #460A21",
-"Y c #A13823",
-"Z c #784323",
-"` c #5A0C21",
-" . c #BC4530",
-".. c #EB5B38",
-"+. c #CE4E3B",
-"@. c #DD9334",
-"#. c #751A27",
-"$. c #11071E",
-"%. c #0F041C",
-"&. c #1E0824",
-"*. c #955A28",
-"=. c #9A5027",
-"-. c #1E0321",
-";. c #11011A",
-">. c #140018",
-",. c #180018",
-"'. c #1F001A",
-"). c #20001B",
-"!. c #1E001A",
-"~. c #1B001A",
-"{. c #16021B",
-"]. c #16041E",
-"^. c #220622",
-"/. c #5F3525",
-"(. c #DE5724",
-"_. c #611021",
-":. c #0F0925",
-"<. c #D1892E",
-"[. c #F27036",
-"}. c #EC633B",
-"|. c #DA293C",
-"1. c #E64833",
-"2. c #912226",
-"3. c #11081C",
-"4. c #110419",
-"5. c #0F041E",
-"6. c #451425",
-"7. c #BF6F28",
-"8. c #332225",
-"9. c #0E021E",
-"0. c #13001B",
-"a. c #17001A",
-"b. c #1C001B",
-"c. c #21001C",
-"d. c #23001C",
-"e. c #21001B",
-"f. c #19021A",
-"g. c #17041E",
-"h. c #150721",
-"i. c #602424",
-"j. c #D51223",
-"k. c #540820",
-"l. c #D04D2D",
-"m. c #EA8933",
-"n. c #875637",
-"o. c #88543A",
-"p. c #E5923A",
-"q. c #891931",
-"r. c #130B25",
-"s. c #10051B",
-"t. c #110217",
-"u. c #12021A",
-"v. c #761826",
-"w. c #E2A728",
-"x. c #300224",
-"y. c #10011E",
-"z. c #16001B",
-"A. c #1B001B",
-"B. c #21001A",
-"C. c #1E0019",
-"D. c #1D0019",
-"E. c #1A011A",
-"F. c #17031C",
-"G. c #120720",
-"H. c #4E0822",
-"I. c #670721",
-"J. c #C07630",
-"K. c #F59734",
-"L. c #BE1B35",
-"M. c #0E1435",
-"N. c #522037",
-"O. c #DB8039",
-"P. c #D45933",
-"Q. c #420927",
-"R. c #0F041D",
-"S. c #140118",
-"T. c #13021D",
-"U. c #100423",
-"V. c #7B6227",
-"W. c #C04326",
-"X. c #0E0020",
-"Y. c #13001D",
-"Z. c #18001B",
-"`. c #1E001B",
-" + c #22001C",
-".+ c #22001B",
-"++ c #1B011B",
-"@+ c #16041D",
-"#+ c #130520",
-"$+ c #860521",
-"%+ c #710520",
-"&+ c #670A2A",
-"*+ c #A66431",
-"=+ c #E97536",
-"-+ c #F8833A",
-";+ c #F77A3A",
-">+ c #C45337",
-",+ c #0A1C35",
-"'+ c #993638",
-")+ c #F7863B",
-"!+ c #F49736",
-"~+ c #94462B",
-"{+ c #0E031F",
-"]+ c #130119",
-"^+ c #160018",
-"/+ c #16011B",
-"(+ c #15021F",
-"_+ c #120123",
-":+ c #A65C28",
-"<+ c #5C4D23",
-"[+ c #0F001F",
-"}+ c #14001D",
-"|+ c #1A001B",
-"1+ c #1F001B",
-"2+ c #24001D",
-"3+ c #25001D",
-"4+ c #24001C",
-"5+ c #1F001C",
-"6+ c #1A011C",
-"7+ c #16021E",
-"8+ c #3F0421",
-"9+ c #BC0522",
-"0+ c #1C041E",
-"a+ c #7F5531",
-"b+ c #E68A38",
-"c+ c #F8933E",
-"d+ c #FA7942",
-"e+ c #FB7543",
-"f+ c #FA6F41",
-"g+ c #F1793D",
-"h+ c #7D3B3A",
-"i+ c #28263B",
-"j+ c #D45441",
-"k+ c #F8A238",
-"l+ c #996B2D",
-"m+ c #0E0421",
-"n+ c #12011A",
-"o+ c #180019",
-"p+ c #17001C",
-"q+ c #12001F",
-"r+ c #4C2B2A",
-"s+ c #DB8130",
-"t+ c #540023",
-"u+ c #0F0120",
-"v+ c #16011C",
-"w+ c #22001D",
-"x+ c #25001F",
-"y+ c #26001F",
-"z+ c #25001E",
-"A+ c #24001E",
-"B+ c #1D001C",
-"C+ c #18011D",
-"D+ c #16031F",
-"E+ c #3C0522",
-"F+ c #9B0821",
-"G+ c #13041E",
-"H+ c #F6462E",
-"I+ c #E6AB37",
-"J+ c #E7A03E",
-"K+ c #FA9F44",
-"L+ c #FB8A48",
-"M+ c #FD7A4A",
-"N+ c #FD794A",
-"O+ c #FD7748",
-"P+ c #FD7E45",
-"Q+ c #FD8343",
-"R+ c #FB5D42",
-"S+ c #6E3A40",
-"T+ c #EE8A37",
-"U+ c #7E252B",
-"V+ c #100520",
-"W+ c #13011A",
-"X+ c #170019",
-"Y+ c #15001C",
-"Z+ c #0F0020",
-"`+ c #564427",
-" @ c #E0BA29",
-".@ c #5E2B25",
-"+@ c #10011F",
-"@@ c #17011C",
-"#@ c #1E001D",
-"$@ c #23001F",
-"%@ c #250020",
-"&@ c #24001F",
-"*@ c #23001E",
-"=@ c #21001E",
-"-@ c #1B001C",
-";@ c #17021D",
-">@ c #14041E",
-",@ c #AC0B25",
-"'@ c #5E1420",
-")@ c #F28635",
-"!@ c #C2733E",
-"~@ c #984C44",
-"{@ c #EA9148",
-"]@ c #FB844B",
-"^@ c #FD7E4C",
-"/@ c #FE7E4C",
-"(@ c #FE7E4B",
-"_@ c #FE7749",
-":@ c #FD7148",
-"<@ c #FB7D46",
-"[@ c #F89641",
-"}@ c #B95634",
-"|@ c #0D0927",
-"1@ c #11041D",
-"2@ c #150119",
-"3@ c #180017",
-"4@ c #16001A",
-"5@ c #13001E",
-"6@ c #110023",
-"7@ c #944C29",
-"8@ c #EE6229",
-"9@ c #3D0324",
-"0@ c #12021F",
-"a@ c #19011D",
-"b@ c #21001F",
-"c@ c #22001F",
-"d@ c #20001E",
-"e@ c #1F001D",
-"f@ c #1C001C",
-"g@ c #19011C",
-"h@ c #3D1621",
-"i@ c #B53622",
-"j@ c #31061F",
-"k@ c #841D34",
-"l@ c #F2703F",
-"m@ c #C14445",
-"n@ c #E67349",
-"o@ c #FB8E4B",
-"p@ c #FD834C",
-"q@ c #FE834D",
-"r@ c #FE834C",
-"s@ c #FE804C",
-"t@ c #FD814B",
-"u@ c #FB7D49",
-"v@ c #F79B43",
-"w@ c #AF1234",
-"x@ c #0D0625",
-"y@ c #13021C",
-"z@ c #1A0019",
-"A@ c #190019",
-"B@ c #410225",
-"C@ c #D39729",
-"D@ c #AA5927",
-"E@ c #0E0422",
-"F@ c #15021E",
-"G@ c #1A011D",
-"H@ c #1D001D",
-"I@ c #15031D",
-"J@ c #240820",
-"K@ c #A01023",
-"L@ c #670B21",
-"M@ c #3D0D33",
-"N@ c #E63C3E",
-"O@ c #EF7C45",
-"P@ c #F59048",
-"Q@ c #FB944A",
-"R@ c #FD904A",
-"S@ c #FE8E4B",
-"T@ c #FE854A",
-"U@ c #FE854B",
-"V@ c #FE884C",
-"W@ c #FC954B",
-"X@ c #F8AB45",
-"Y@ c #C37A35",
-"Z@ c #0D0425",
-"`@ c #13011B",
-" # c #170018",
-".# c #1A0018",
-"+# c #1C0019",
-"@# c #15001B",
-"## c #100120",
-"$# c #311F25",
-"%# c #E68E28",
-"&# c #7A1425",
-"*# c #130321",
-"=# c #17011E",
-"-# c #1A001D",
-";# c #19001B",
-"># c #16021C",
-",# c #130521",
-"'# c #6F3123",
-")# c #6D3022",
-"!# c #C89433",
-"~# c #EA7E3E",
-"{# c #DB2943",
-"]# c #EF7745",
-"^# c #FB8544",
-"/# c #FD9A43",
-"(# c #FE9941",
-"_# c #FE9D43",
-":# c #FEA548",
-"<# c #FEAE49",
-"[# c #FCB944",
-"}# c #CA9F35",
-"|# c #0E0225",
-"1# c #11001B",
-"2# c #160019",
-"3# c #12011B",
-"4# c #0F0220",
-"5# c #351D26",
-"6# c #D85B28",
-"7# c #6C0F26",
-"8# c #190121",
-"9# c #1B001E",
-"0# c #1A001C",
-"a# c #1D001B",
-"b# c #130220",
-"c# c #703A23",
-"d# c #713A23",
-"e# c #140327",
-"f# c #411B36",
-"g# c #C8713E",
-"h# c #7A3A3F",
-"i# c #CE2C3C",
-"j# c #E77338",
-"k# c #9C6535",
-"l# c #9C6233",
-"m# c #9C6332",
-"n# c #9C6A35",
-"o# c #C37D3C",
-"p# c #FEAC41",
-"q# c #FEC23E",
-"r# c #826330",
-"s# c #100122",
-"t# c #120019",
-"u# c #150017",
-"v# c #190017",
-"w# c #1B0018",
-"x# c #12001A",
-"y# c #10021F",
-"z# c #1A0326",
-"A# c #5F292A",
-"B# c #7B4E29",
-"C# c #3C0E25",
-"D# c #1A0020",
-"E# c #14021F",
-"F# c #723B23",
-"G# c #14001A",
-"H# c #58042A",
-"I# c #A28337",
-"J# c #C8813B",
-"K# c #B14B38",
-"L# c #761231",
-"M# c #5A132A",
-"N# c #0D0726",
-"O# c #0C0623",
-"P# c #0B0723",
-"Q# c #0B0A26",
-"R# c #321C2D",
-"S# c #C45B33",
-"T# c #FEBB33",
-"U# c #13052A",
-"V# c #13011F",
-"W# c #160017",
-"X# c #15001A",
-"Y# c #12001D",
-"Z# c #94062A",
-"`# c #630D2C",
-" $ c #85292B",
-".$ c #AA5E29",
-"+$ c #1F0123",
-"@$ c #19011F",
-"#$ c #1E001C",
-"$$ c #15031F",
-"%$ c #712122",
-"&$ c #712223",
-"*$ c #14011B",
-"=$ c #110321",
-"-$ c #AF0C2B",
-";$ c #E7D534",
-">$ c #EAC934",
-",$ c #84582D",
-"'$ c #1B0824",
-")$ c #11041E",
-"!$ c #10021B",
-"~$ c #100119",
-"{$ c #100218",
-"]$ c #0F041A",
-"^$ c #0E0720",
-"/$ c #2C1026",
-"($ c #D8A328",
-"_$ c #140322",
-":$ c #160016",
-"<$ c #14001F",
-"[$ c #120024",
-"}$ c #100128",
-"|$ c #3C032F",
-"1$ c #2C062E",
-"2$ c #29022B",
-"3$ c #A31D29",
-"4$ c #976A25",
-"5$ c #1A0321",
-"6$ c #17031E",
-"7$ c #1B021D",
-"8$ c #20001C",
-"9$ c #14041F",
-"0$ c #703422",
-"a$ c #6F3522",
-"b$ c #8D0328",
-"c$ c #920329",
-"d$ c #0F0326",
-"e$ c #100321",
-"f$ c #11021B",
-"g$ c #130117",
-"h$ c #140016",
-"i$ c #150015",
-"j$ c #140015",
-"k$ c #130116",
-"l$ c #120219",
-"m$ c #11031C",
-"n$ c #12031D",
-"o$ c #170016",
-"p$ c #160020",
-"q$ c #250029",
-"r$ c #670033",
-"s$ c #DCA238",
-"t$ c #F5C736",
-"u$ c #9A732E",
-"v$ c #110227",
-"w$ c #110324",
-"x$ c #811924",
-"y$ c #A04323",
-"z$ c #250721",
-"A$ c #1A041F",
-"B$ c #1E011D",
-"C$ c #1C011C",
-"D$ c #18031D",
-"E$ c #130721",
-"F$ c #6F3623",
-"G$ c #6B3622",
-"H$ c #1A001A",
-"I$ c #14011F",
-"J$ c #12011E",
-"K$ c #11011C",
-"L$ c #140117",
-"M$ c #170015",
-"N$ c #150016",
-"O$ c #120119",
-"P$ c #11011B",
-"Q$ c #11001A",
-"R$ c #130018",
-"S$ c #170118",
-"T$ c #170119",
-"U$ c #18021E",
-"V$ c #1A0126",
-"W$ c #6F2332",
-"X$ c #E5563B",
-"Y$ c #F1B83F",
-"Z$ c #F6CC38",
-"`$ c #9D7A2D",
-" % c #130123",
-".% c #130320",
-"+% c #2A0721",
-"@% c #B00E24",
-"#% c #7D0B23",
-"$% c #1F0522",
-"%% c #1E0220",
-"&% c #1D011E",
-"*% c #1A031E",
-"=% c #15051F",
-"-% c #241322",
-";% c #A32F23",
-">% c #670E21",
-",% c #1C001A",
-"'% c #19001A",
-")% c #180016",
-"!% c #160118",
-"~% c #140219",
-"{% c #11021C",
-"]% c #10021E",
-"^% c #0F011D",
-"/% c #170117",
-"(% c #160219",
-"_% c #17041D",
-":% c #190523",
-"<% c #8C042E",
-"[% c #B65838",
-"}% c #E9D73F",
-"|% c #EED43E",
-"1% c #D85538",
-"2% c #493129",
-"3% c #130120",
-"4% c #15021D",
-"5% c #330822",
-"6% c #8A0825",
-"7% c #3C0424",
-"8% c #1E0322",
-"9% c #1C0321",
-"0% c #180421",
-"a% c #130822",
-"b% c #AF2D24",
-"c% c #BC5623",
-"d% c #2F071F",
-"e% c #1A041C",
-"f% c #1C031C",
-"g% c #1D011C",
-"h% c #160117",
-"i% c #150419",
-"j% c #12081D",
-"k% c #0F0923",
-"l% c #A77027",
-"m% c #A60525",
-"n% c #11021A",
-"o% c #130218",
-"p% c #150319",
-"q% c #16061D",
-"r% c #180923",
-"s% c #9C1D2B",
-"t% c #A32636",
-"u% c #A66E3B",
-"v% c #4B2E3C",
-"w% c #412C36",
-"x% c #36012D",
-"y% c #140123",
-"z% c #17001E",
-"A% c #19011B",
-"B% c #1A0421",
-"C% c #340425",
-"D% c #9E0326",
-"E% c #1F0424",
-"F% c #1C0524",
-"G% c #180724",
-"H% c #A91024",
-"I% c #D55D24",
-"J% c #90071E",
-"K% c #3C051D",
-"L% c #1C021C",
-"M% c #1C011A",
-"N% c #1D001A",
-"O% c #160116",
-"P% c #150216",
-"Q% c #140217",
-"R% c #140618",
-"S% c #120D1D",
-"T% c #231925",
-"U% c #B16A2E",
-"V% c #FDAC34",
-"W% c #D58631",
-"X% c #280E2A",
-"Y% c #0D0A23",
-"Z% c #0F0920",
-"`% c #120C21",
-" & c #1F1026",
-".& c #A3352E",
-"+& c #EE9F36",
-"@& c #5D2A3C",
-"#& c #960D3C",
-"$& c #970638",
-"%& c #A00330",
-"&& c #4D0126",
-"*& c #1C001F",
-"=& c #280120",
-"-& c #290223",
-";& c #1F0425",
-">& c #260726",
-",& c #340A26",
-"'& c #850925",
-")& c #3A0823",
-"!& c #82071D",
-"~& c #5E071D",
-"{& c #18051C",
-"]& c #18021A",
-"^& c #190118",
-"/& c #160217",
-"(& c #150418",
-"_& c #130618",
-":& c #110718",
-"<& c #10081A",
-"[& c #110D1D",
-"}& c #291C24",
-"|& c #A73B2D",
-"1& c #FD6B36",
-"2& c #FD853C",
-"3& c #FD863B",
-"4& c #C24A35",
-"5& c #6B442F",
-"6& c #6D302D",
-"7& c #6E252E",
-"8& c #8E3B32",
-"9& c #DE7739",
-"0& c #F48E3F",
-"a& c #DD8D41",
-"b& c #854F3D",
-"c& c #7E2D35",
-"d& c #33082B",
-"e& c #1C0222",
-"f& c #20001F",
-"g& c #1F0222",
-"h& c #1A0524",
-"i& c #440C27",
-"j& c #BC1427",
-"k& c #20041B",
-"l& c #53061C",
-"m& c #25071B",
-"n& c #11061A",
-"o& c #130418",
-"p& c #140317",
-"q& c #150217",
-"r& c #160318",
-"s& c #12051B",
-"t& c #100C1D",
-"u& c #0E101E",
-"v& c #0C121F",
-"w& c #0C1321",
-"x& c #781725",
-"y& c #B25D2C",
-"z& c #FA6335",
-"A& c #FD633C",
-"B& c #FE6D42",
-"C& c #FE7C42",
-"D& c #FE813F",
-"E& c #FE873C",
-"F& c #FD743B",
-"G& c #FB683B",
-"H& c #FA7A3E",
-"I& c #F98242",
-"J& c #F97844",
-"K& c #F98943",
-"L& c #F79C3D",
-"M& c #A25133",
-"N& c #280B28",
-"O& c #1D021F",
-"P& c #1F011C",
-"Q& c #280321",
-"R& c #1C0724",
-"S& c #3F1C27",
-"T& c #D33C27",
-"U& c #0E061B",
-"V& c #0C091C",
-"W& c #0C0A1B",
-"X& c #0E091A",
-"Y& c #11081B",
-"Z& c #100A20",
-"`& c #0E0D23",
-" * c #551227",
-".* c #B21829",
-"+* c #C42329",
-"@* c #C62C29",
-"#* c #C55429",
-"$* c #E76F2B",
-"%* c #F14232",
-"&* c #F95E3A",
-"** c #FC6740",
-"=* c #FE6E45",
-"-* c #FE7246",
-";* c #FE7545",
-">* c #FE7744",
-",* c #FD7745",
-"'* c #FD7845",
-")* c #FD7847",
-"!* c #FD7948",
-"~* c #FD7B44",
-"{* c #FC7C3B",
-"]* c #6F3130",
-"^* c #140B24",
-"/* c #19031D",
-"(* c #1C011B",
-"_* c #5A011F",
-":* c #B70421",
-"<* c #380824",
-"[* c #3E2626",
-"}* c #9F5626",
-"|* c #13051E",
-"1* c #360A21",
-"2* c #361223",
-"3* c #371724",
-"4* c #381824",
-"5* c #3B1524",
-"6* c #3E1E26",
-"7* c #471A29",
-"8* c #DB252E",
-"9* c #ED2733",
-"0* c #EE5436",
-"a* c #F04237",
-"b* c #F33934",
-"c* c #F53D2F",
-"d* c #D7312B",
-"e* c #AF212B",
-"f* c #3A2C31",
-"g* c #F65F39",
-"h* c #FB6F41",
-"i* c #FD6D45",
-"j* c #FE7047",
-"k* c #FE7647",
-"l* c #FE7847",
-"m* c #FE7848",
-"n* c #FE7748",
-"o* c #FE7948",
-"p* c #FE7C48",
-"q* c #FE7C47",
-"r* c #FE7642",
-"s* c #FE7439",
-"t* c #6D332C",
-"u* c #100B21",
-"v* c #16031B",
-"w* c #2B001B",
-"x* c #22011F",
-"y* c #220521",
-"z* c #1B0A23",
-"A* c #421425",
-"B* c #951924",
-"C* c #381023",
-"D* c #E94028",
-"E* c #E7302B",
-"F* c #EF432D",
-"G* c #F4302E",
-"H* c #F32C30",
-"I* c #CB4432",
-"J* c #DD3235",
-"K* c #EF4B3A",
-"L* c #F0333E",
-"M* c #CC3D3F",
-"N* c #E4313C",
-"O* c #F34834",
-"P* c #D13E2C",
-"Q* c #431825",
-"R* c #0E1424",
-"S* c #3C202C",
-"T* c #F15537",
-"U* c #F97140",
-"V* c #FC6E45",
-"W* c #FE7547",
-"X* c #FE7947",
-"Y* c #FE7B48",
-"Z* c #FE7D48",
-"`* c #FE8047",
-" = c #FE7A42",
-".= c #FE7A38",
-"+= c #6D442B",
-"@= c #0F0B21",
-"#= c #15031A",
-"$= c #49001B",
-"%= c #2F001C",
-"&= c #21021E",
-"*= c #220620",
-"== c #1B0D23",
-"-= c #641625",
-";= c #951823",
-">= c #390F25",
-",= c #AC3A2A",
-"'= c #B6492E",
-")= c #ED7531",
-"!= c #F45A34",
-"~= c #F54C36",
-"{= c #C72D39",
-"]= c #DE283C",
-"^= c #F33B40",
-"/= c #F34142",
-"(= c #D0393F",
-"_= c #E72E39",
-":= c #DB3C2E",
-"<= c #461724",
-"[= c #0F0D1E",
-"}= c #140B1E",
-"|= c #341427",
-"1= c #CB4834",
-"2= c #F7743F",
-"3= c #FB7145",
-"4= c #FE7747",
-"5= c #FE7A47",
-"6= c #FF7B48",
-"7= c #FF7C48",
-"8= c #FE7F47",
-"9= c #FE8247",
-"0= c #FE8642",
-"a= c #FE8439",
-"b= c #6D442D",
-"c= c #0F0A21",
-"d= c #14031A",
-"e= c #20031D",
-"f= c #210821",
-"g= c #191024",
-"h= c #CC1C25",
-"i= c #961423",
-"j= c #2C162C",
-"k= c #BD242E",
-"l= c #EF2C31",
-"m= c #F54C34",
-"n= c #F34037",
-"o= c #F5353A",
-"p= c #F7413D",
-"q= c #F8423D",
-"r= c #F93A39",
-"s= c #F95731",
-"t= c #341425",
-"u= c #110A1D",
-"v= c #140619",
-"w= c #18051B",
-"x= c #200F26",
-"y= c #864833",
-"z= c #F8773F",
-"A= c #FC7445",
-"B= c #FF7E48",
-"C= c #FF7E49",
-"D= c #FF7D49",
-"E= c #FF7D48",
-"F= c #FE8347",
-"G= c #FE8743",
-"H= c #FE893B",
-"I= c #6E452F",
-"J= c #100E23",
-"K= c #14041A",
-"L= c #55041D",
-"M= c #540921",
-"N= c #161124",
-"O= c #CE6A25",
-"P= c #3F1129",
-"Q= c #170A29",
-"R= c #0F0F29",
-"S= c #15132B",
-"T= c #1E182D",
-"U= c #A82B3D",
-"V= c #CB6633",
-"W= c #CC6932",
-"X= c #CC3D2D",
-"Y= c #331225",
-"Z= c #0F091C",
-"`= c #120417",
-" - c #160216",
-".- c #190419",
-"+- c #210F26",
-"@- c #8C4934",
-"#- c #F97A40",
-"$- c #FC7545",
-"%- c #FF7B49",
-"&- c #FE7D46",
-"*- c #FE7E43",
-"=- c #FD7B3E",
-"-- c #FA6934",
-";- c #532328",
-">- c #130B1D",
-",- c #150519",
-"'- c #14041C",
-")- c #120920",
-"!- c #C43624",
-"~- c #A21E23",
-"{- c #F87C30",
-"]- c #C9302D",
-"^- c #300F2A",
-"/- c #591129",
-"(- c #171328",
-"_- c #171628",
-":- c #141829",
-"<- c #101A2B",
-"[- c #0F172B",
-"}- c #0F1226",
-"|- c #0E0C20",
-"1- c #100619",
-"2- c #140316",
-"3- c #19051B",
-"4- c #3C1428",
-"5- c #E04B36",
-"6- c #FA7B41",
-"7- c #FD7346",
-"8- c #FE7548",
-"9- c #FF7849",
-"0- c #FF7749",
-"a- c #FE7B47",
-"b- c #FE7945",
-"c- c #FC7740",
-"d- c #FA7E39",
-"e- c #C1432F",
-"f- c #131523",
-"g- c #130A1C",
-"h- c #420621",
-"i- c #D08423",
-"j- c #F87739",
-"k- c #C03D37",
-"l- c #962B34",
-"m- c #A14332",
-"n- c #E54B30",
-"o- c #9E3E2F",
-"p- c #7F262E",
-"q- c #922D2E",
-"r- c #9C4B2E",
-"s- c #65212C",
-"t- c #101628",
-"u- c #101022",
-"v- c #11091C",
-"w- c #130619",
-"x- c #160A1E",
-"y- c #43252C",
-"z- c #F66439",
-"A- c #FA6942",
-"B- c #FD6C47",
-"C- c #FE6E48",
-"D- c #FE6F48",
-"E- c #FE7049",
-"F- c #FE714A",
-"G- c #FE744A",
-"H- c #FE7846",
-"I- c #FD7243",
-"J- c #FC703E",
-"K- c #FA6C37",
-"L- c #81312B",
-"M- c #121123",
-"N- c #15071D",
-"O- c #16031A",
-"P- c #17021B",
-"Q- c #8F3D22",
-"R- c #F8393E",
-"S- c #E42A3D",
-"T- c #E7473B",
-"U- c #FB503B",
-"V- c #FB4F3A",
-"W- c #F95439",
-"X- c #ED4C38",
-"Y- c #F45938",
-"Z- c #FB6537",
-"`- c #EA5236",
-" ; c #CE6232",
-".; c #CD392C",
-"+; c #181425",
-"@; c #120F21",
-"#; c #130D20",
-"$; c #151225",
-"%; c #903431",
-"&; c #F8703D",
-"*; c #FB6344",
-"=; c #FD6748",
-"-; c #FE6849",
-";; c #FE6949",
-">; c #FE6A49",
-",; c #FE6C4A",
-"'; c #FE704A",
-"); c #FE734A",
-"!; c #FE7449",
-"~; c #FE7347",
-"{; c #FE7145",
-"]; c #FD6C42",
-"^; c #FD753D",
-"/; c #F36E35",
-"(; c #CB452C",
-"_; c #600D24",
-":; c #1C061F",
-"<; c #1E031F",
-"[; c #5B3821",
-"}; c #CE9822",
-"|; c #FA4341",
-"1; c #FB4341",
-"2; c #FC4541",
-"3; c #FC4542",
-"4; c #FC4143",
-"5; c #FC4D42",
-"6; c #FB5042",
-"7; c #FB5342",
-"8; c #FC5242",
-"9; c #FD4F40",
-"0; c #FD503E",
-"a; c #FB6339",
-"b; c #F45E33",
-"c; c #A12A2E",
-"d; c #401E2C",
-"e; c #452D2F",
-"f; c #F74F38",
-"g; c #FA5940",
-"h; c #FC6245",
-"i; c #FE6447",
-"j; c #FE6449",
-"k; c #FE6549",
-"l; c #FE6749",
-"m; c #FE6B49",
-"n; c #FE6D49",
-"o; c #FE6D48",
-"p; c #FE6D47",
-"q; c #FE6D45",
-"r; c #FE6C44",
-"s; c #FE6A42",
-"t; c #FE663C",
-"u; c #FC6233",
-"v; c #752129",
-"w; c #1F0922",
-"x; c #750520",
-"y; c #81061F",
-"z; c #FA3D42",
-"A; c #FB4142",
-"B; c #FD4543",
-"C; c #FD4844",
-"D; c #FD4A45",
-"E; c #FD4D45",
-"F; c #FD5045",
-"G; c #FD5345",
-"H; c #FE5346",
-"I; c #FE5445",
-"J; c #FD5444",
-"K; c #FC4F41",
-"L; c #FA513D",
-"M; c #F95339",
-"N; c #F63736",
-"O; c #F75737",
-"P; c #F95F3B",
-"Q; c #FB5840",
-"R; c #FD5F43",
-"S; c #FE6345",
-"T; c #FE6547",
-"U; c #FE6548",
-"V; c #FE6448",
-"W; c #FE6248",
-"X; c #FE6348",
-"Y; c #FE6748",
-"Z; c #FE6848",
-"`; c #FE6846",
-" > c #FE6A45",
-".> c #FE6D43",
-"+> c #FE703F",
-"@> c #FC6F36",
-"#> c #6F302B",
-"$> c #140A22",
-"%> c #FA3B42",
-"&> c #FC4243",
-"*> c #FD4744",
-"=> c #FE4A45",
-"-> c #FE4C47",
-";> c #FE4D47",
-">> c #FE5047",
-",> c #FE5347",
-"'> c #FE5447",
-")> c #FD5246",
-"!> c #FB503F",
-"~> c #FA543D",
-"{> c #9B3D3B",
-"]> c #A3433B",
-"^> c #F9683D",
-"/> c #FC6940",
-"(> c #FE6342",
-"_> c #FE6645",
-":> c #FE6646",
-"<> c #FE6147",
-"[> c #FE6048",
-"}> c #FE6148",
-"|> c #FE6746",
-"1> c #FE6A46",
-"2> c #FE6F45",
-"3> c #FE7441",
-"4> c #FC7D39",
-"5> c #6C422E",
-"6> c #0F0F23",
-"7> c #FA4142",
-"8> c #FC4643",
-"9> c #FE4D46",
-"0> c #FE4E47",
-"a> c #FE4F48",
-"b> c #FE5148",
-"c> c #FE5348",
-"d> c #FE5548",
-"e> c #FE5247",
-"f> c #FD5445",
-"g> c #FC5544",
-"h> c #F96041",
-"i> c #D33F3D",
-"j> c #392D39",
-"k> c #973C38",
-"l> c #F94E3A",
-"m> c #FD693E",
-"n> c #FE6C43",
-"o> c #FE6047",
-"p> c #FE5D47",
-"q> c #FE5E48",
-"r> c #FE6948",
-"s> c #FE6947",
-"t> c #FE6B47",
-"u> c #FE6E46",
-"v> c #FD6D43",
-"w> c #FB723D",
-"x> c #D54A33",
-"y> c #301C29",
-"z> c #FB4A42",
-"A> c #FD4B44",
-"B> c #FE4F47",
-"C> c #FE5048",
-"D> c #FE5648",
-"E> c #FE5848",
-"F> c #FE5747",
-"G> c #FE5547",
-"H> c #FC5945",
-"I> c #F95742",
-"J> c #F3543D",
-"K> c #A33336",
-"L> c #302032",
-"M> c #152433",
-"N> c #CD3E38",
-"O> c #FD5A3F",
-"P> c #FE6343",
-"Q> c #FE6446",
-"R> c #FE6247",
-"S> c #FE6A47",
-"T> c #FC6542",
-"U> c #FB6A3B",
-"V> c #FA6D34",
-"W> c #D73C2D",
-"X> c #442428",
-"Y> c #281323",
-"Z> c #FD4E42",
-"`> c #FD4D43",
-" , c #FE4D45",
-"., c #FE5248",
-"+, c #FE5947",
-"@, c #FE5C47",
-"#, c #FE5B47",
-"$, c #FE5A47",
-"%, c #FE5847",
-"&, c #FC5C45",
-"*, c #F95B43",
-"=, c #F3613F",
-"-, c #E74F37",
-";, c #8C2431",
-">, c #161E2F",
-",, c #CD4E33",
-"', c #FD503A",
-"), c #FE5D40",
-"!, c #FE6445",
-"~, c #FE6946",
-"{, c #FE6847",
-"], c #FE6747",
-"^, c #FD6644",
-"/, c #FD6241",
-"(, c #FD5B3D",
-"_, c #FE6739",
-":, c #FE6135",
-"<, c #AB4830",
-"[, c #733E2A",
-"}, c #161224",
-"|, c #FC4E42",
-"1, c #FE4D44",
-"2, c #FE4E46",
-"3, c #FE5147",
-"4, c #FE5E47",
-"5, c #FD5C46",
-"6, c #FA5B44",
-"7, c #F45441",
-"8, c #EB393A",
-"9, c #CC3433",
-"0, c #47212F",
-"a, c #59242F",
-"b, c #FC6734",
-"c, c #FC6F3A",
-"d, c #FC723E",
-"e, c #FD6540",
-"f, c #FE6442",
-"g, c #FE6643",
-"h, c #FE6944",
-"i, c #FE6546",
-"j, c #FE6444",
-"k, c #FE6143",
-"l, c #FE5E41",
-"m, c #FE613F",
-"n, c #FE683C",
-"o, c #FE7937",
-"p, c #A25030",
-"q, c #692629",
-"r, c #151122",
-"s, c #FA573F",
-"t, c #FB4D40",
-"u, c #FC4F43",
-"v, c #FE5246",
-"w, c #FF6347",
-"x, c #FE5F48",
-"y, c #F65942",
-"z, c #F0493D",
-"A, c #ED3736",
-"B, c #73262F",
-"C, c #10152C",
-"D, c #3B292F",
-"E, c #363034",
-"F, c #AC3938",
-"G, c #FC6B3B",
-"H, c #FD763C",
-"I, c #FE6D3F",
-"J, c #FE6341",
-"K, c #FE6642",
-"L, c #FE6745",
-"M, c #FE6245",
-"N, c #FE6244",
-"O, c #FE6841",
-"P, c #FF683B",
-"Q, c #EC7035",
-"R, c #D0412D",
-"S, c #3A1627",
-"T, c #CF3938",
-"U, c #F6543C",
-"V, c #FB5040",
-"W, c #FD5544",
-"X, c #FE5A48",
-"Y, c #FE5D48",
-"Z, c #FE5F47",
-"`, c #FF6147",
-" ' c #FD5C45",
-".' c #FB5B43",
-"+' c #FA5A42",
-"@' c #F76040",
-"#' c #F4623D",
-"$' c #F26D38",
-"%' c #EC4130",
-"&' c #380E2B",
-"*' c #13122C",
-"=' c #362D31",
-"-' c #353435",
-";' c #352E37",
-">' c #2D3337",
-",' c #CC5838",
-"'' c #CD6F3A",
-")' c #CE6E3D",
-"!' c #FE793F",
-"~' c #FD7541",
-"{' c #FD6243",
-"]' c #FE6545",
-"^' c #FF6543",
-"/' c #FF6240",
-"(' c #FE723B",
-"_' c #FE8034",
-":' c #442D2C",
-"<' c #311725",
-"[' c #222830",
-"}' c #B73B36",
-"|' c #F94C3D",
-"1' c #FD5543",
-"2' c #FE5B48",
-"3' c #FF5E47",
-"4' c #FE5C48",
-"5' c #FC5B44",
-"6' c #F95640",
-"7' c #C34E3D",
-"8' c #A45A3A",
-"9' c #F37438",
-"0' c #F28935",
-"a' c #AF422F",
-"b' c #240D2B",
-"c' c #88292F",
-"d' c #FA8E34",
-"e' c #FC7E38",
-"f' c #FC5939",
-"g' c #694A37",
-"h' c #693437",
-"i' c #382638",
-"j' c #142439",
-"k' c #9F483A",
-"l' c #C45E3C",
-"m' c #FD7240",
-"n' c #FF6645",
-"o' c #FF6245",
-"p' c #FF6045",
-"q' c #FF6146",
-"r' c #FF6246",
-"s' c #FF6446",
-"t' c #FF6545",
-"u' c #FE763F",
-"v' c #FE7237",
-"w' c #C65331",
-"x' c #3D272A",
-"y' c #0D1E2B",
-"z' c #683032",
-"A' c #F9453A",
-"B' c #FD5341",
-"C' c #FE5A46",
-"D' c #FF5A48",
-"E' c #FE5948",
-"F' c #FD5A47",
-"G' c #FC5D43",
-"H' c #F95B3D",
-"I' c #713F37",
-"J' c #1E2D32",
-"K' c #C44531",
-"L' c #EF7A2F",
-"M' c #6B2E2C",
-"N' c #0F0E2C",
-"O' c #F56633",
-"P' c #FA803A",
-"Q' c #FC673E",
-"R' c #FD673E",
-"S' c #FC6F3C",
-"T' c #FA6E3B",
-"U' c #C6633A",
-"V' c #A06739",
-"W' c #835638",
-"X' c #381F38",
-"Y' c #713B38",
-"Z' c #7B503C",
-"`' c #FE7741",
-" ) c #FE7344",
-".) c #FE6D46",
-"+) c #FF6946",
-"@) c #FF5E46",
-"#) c #FF5D46",
-"$) c #FF5D47",
-"%) c #FF5F48",
-"&) c #FF6248",
-"*) c #FE6941",
-"=) c #FC783C",
-"-) c #C46B35",
-";) c #892730",
-">) c #111629",
-",) c #1F2630",
-"') c #AD3939",
-")) c #FC5D41",
-"!) c #FE5946",
-"~) c #FF5848",
-"{) c #FE5549",
-"]) c #FC5E42",
-"^) c #FA673B",
-"/) c #DB7033",
-"() c #392E2B",
-"_) c #311A28",
-":) c #3C2127",
-"<) c #1D1027",
-"[) c #92102C",
-"}) c #F58336",
-"|) c #FA673E",
-"1) c #FD6642",
-"2) c #FD5A41",
-"3) c #FC6D41",
-"4) c #FC6D3F",
-"5) c #FD683E",
-"6) c #F38C39",
-"7) c #CE6535",
-"8) c #612E34",
-"9) c #1D2637",
-"0) c #71513E",
-"a) c #FF6847",
-"b) c #FF5F47",
-"c) c #FF5A46",
-"d) c #FF5847",
-"e) c #FF5748",
-"f) c #FF594A",
-"g) c #FF5E4B",
-"h) c #FE654C",
-"i) c #FE694B",
-"j) c #FE6B48",
-"k) c #FC6A43",
-"l) c #F7683E",
-"m) c #EC6E39",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" . + @ # $ % ",
-" & * = - ; > , ' ) ! ~ ",
-" { ] ^ / ( _ : < [ } | 1 2 ",
-" 3 4 5 6 7 8 9 0 a b c d e f g h i j ",
-" k l m n o p q r s t u v w x y z A B C D ",
-" E F G H I J K L M N O P Q R S T U V W X Y Z ` ",
-" ...+.@.#.$.%.&.*.=.-.;.>.,.S '.).!.~.{.].^./.(._. ",
-" :.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.!.S f.g.h.i.j.k. ",
-" l.m.n.o.p.q.r.s.t.u.J v.w.x.y.z.A.c.d.d.B.C.D.E.F.G.H.I. ",
-" J.K.L.M.N.O.P.Q.R.t S.T.U.V.W.X.Y.Z.`. +d.d..+B.'.++@+#+$+%+ ",
-" &+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+d.2+3+4+d.5+6+7+8+9+0+ ",
-" a+b+c+d+e+f+g+h+i+j+k+l+m+n+^+o+p+q+r+s+t+u+v+b.w+x+y+z+A+w+B+C+D+E+F+G+ ",
-" H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+Q ,.X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@#@-@;@>@,@'@ ",
-" )@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@R ,.4@5@6@7@8@9@0@a@#@b@c@=@d@e@f@g@>@h@i@j@ ",
-" k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@^+R S z@A@z.q+B@C@D@E@F@G@H@#@e@#@#@f@g@I@J@K@L@ ",
-" M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #.#+#+#S A@@###$#%#&#*#=#-#f@B+B+B+f@;#>#,#'#)# ",
-" !#~#{#]#^#/#(#(#_#:#<#[#}#|#1#^+.#S +#+#z@2#3#4#5#6#7#8#9#0#A.B+B+a#A.@@b#c#d# ",
-" e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#.#w#S R ^+x#y#z#A#B#C#D#-#A.a#`.`.b.g@E#d#F# ",
-" G#0@H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#>.W#3@v#R R X+X#Y#s#Z#`# $.$+$@$g@f@5+5+#$6+$$%$&$ ",
-" *$=$-$;$>$,$'$)$!$~${$]$^$/$($_$*$u#:$Q 3@,.X+z.<$[$}$|$1$2$3$4$5$6$7$e@8$#$G@9$0$a$ ",
-" ,.4@E#b$c$d$e$f$g$h$i$j$k$l$m$n$`@>.:$o$3@,. #a.p$q$r$s$t$u$v$w$x$y$z$A$B$#@C$D$E$F$G$ ",
-" R S H$v+I$J$K$n+L$:$o$o$M$N$L$O$P$Q$R$N$o$3@S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>% ",
-" E.,%~.'%Z.4@v W#o$)%)%)%Q !%~%{%]%^%Q$u u#/%(%_%:%<%[%}%|%1%2%3%4%=%5%6%7%8%9%0%a%b%c%d% ",
-" e%f%g%a#,%,%z@R 3@3@3@)%Q h%i%j%k%l%m%{+n%o%p%q%r%s%t%u%v%w%x%y%z%A%*%B%C%D%E%F%G%H%I% ",
-" J%K%L%M%N%D.S v#)%)%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&f@a##@=&-&;&>&,&'&)& ",
-" !&~&{&]&^&.#w#^&/%/&(&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&e@1+5+e@f&g&h&i&j& ",
-" k&l&m&n&o&p&q&r&i%s&3.t&u&v&w&x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&1+`.e@f&Q&R&S&T& ",
-" 0 U&V&W&X&<&Y&j%Z&`& *.*+*@*#*$*%*&***=*-*;*>*>*,*'*)*!*~*{*]*^*/*(*a#B+#@_*:*<*[*}* ",
-" |*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*E.w*d.e@x*y*z*A*B* ",
-" C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*l*X*o*o*Y*Z*`* =.=+=@=#='%$=%=e@&=*===-=;= ",
-" >=,='=)=!=~={=]=^=/=(=_=:=<=[=}=|=1=2=3=4=5=p*6=6=7=8=9=0=a=b=c=d=A@~.b.B+e=f=g=h=i= ",
-" j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z=A=5=Z*B=C=D=E=8=F=G=H=I=J=K=S$R z@'%L=M=N=O= ",
-" P=Q=R=S=T=U=V=W=X=Y=Z=`= -.-+-@-#-$-5=p*E=D=%-%-q*&-*-=---;->-,-/%3@^+'-)-!-~- ",
-" {-]-^-/-(-_-:-<-[-}-|-1-2- -3-4-5-6-7-8-n*m*9-0-9-o*a-b-c-d-e-f-g-(&h%w c h-i- ",
-" j-k-l-m-n-o-p-q-r-s-t-u-v-w-,-x-y-z-A-B-C-D-E-E-F-G-_@m*H-I-J-K-L-M-N-O-P-(+Q- ",
-" R-S-T-U-V-W-X-Y-Z-`- ;.;+;@;#;$;%;&;*;=;-;-;;;>;,;';);!;~;{;];^;/;(;_;:;<;[;}; ",
-" |;1;2;3;4;5;6;7;8;9;0;a;b;c;d;e;f;g;h;i;j;j;k;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y; ",
-" z;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;k;Y;Z;`; >r;.>+>@>#>$> ",
-" %>&>*>=>->;>>>,>'>,>)>F;8;!>~>{>]>^>/>(>_>:>i;<>[>X;}>i;|>1>q;2>3>4>5>6> ",
-" 7>8>=>9>0>a>b>c>d>,>e>e>f>g>h>i>j>k>l>m>n>:>i;o>p>q>W;r>s>t>p;u>v>w>x>y> ",
-" z>A>9>0>B>C>c>D>E>F>G>G>F>H>I>J>K>L>M>N>O>P>Q>R>o>R>T;s>S>S>S>t>1>T>U>V>W>X>Y> ",
-" Z>`> ,9>B>.,D>+,@,#,$,%,$,&,*,=,-,;,>,,,',),P>!,!,_>~,t>s>{,],{,],^,/,(,_,:,<,[,}, ",
-" |,`>1,2,3,G>+,4,o>o>4,@,@,5,6,7,8,9,0,a,b,c,d,e,f,g,h, >~,|>T;T;T;i,j,k,l,m,n,o,p,q,r, ",
-" s,t,u,v,G>%,@,o>w,R>x,p>@,5,6,y,z,A,B,C,D,E,F,G,H,I,J,K,L,L,i,i;i;i;Q>S;M,N,P>O,P,Q,R,S, ",
-" T,U,V,W,%,X,Y,Z,`,[>q>@, '.'+'@'#'$'%'&'*'='-';'>',''')'!'~'{'N,i,:>_>]'M,M,Q>_>^'/'('_':'<' ",
-" ['}'|'1'$,X,2'p>3'4'2'@,5'6'7'8'9'0'a'b'c'd'e'f'g'h'i'j'k'l'd,m'g, > >n'o'p'q'r's't'.>u'v'w'x' ",
-" y'z'A'B'C'X,X,2'D'E'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'`' ).)+)r'@)#)$)%)&)l;1>*)=)-);) ",
-" >),)')))!)X,E'X,~){)d>!)])^)/)()_):)<)[)})|)1)f,2)3)4)5)6)7)8)9)0)*--*a)b)c)d)e)f)g)h)i)j)k)l)m) ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/vendor/gems/json-1.5.1/lib/json/pure.rb b/vendor/gems/json-1.5.1/lib/json/pure.rb
deleted file mode 100644
index dbac93cf6..000000000
--- a/vendor/gems/json-1.5.1/lib/json/pure.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'json/common'
-require 'json/pure/parser'
-require 'json/pure/generator'
-
-module JSON
- # This module holds all the modules/classes that implement JSON's
- # functionality in pure ruby.
- module Pure
- $DEBUG and warn "Using Pure library for JSON."
- JSON.parser = Parser
- JSON.generator = Generator
- end
-
- JSON_LOADED = true unless defined?(::JSON::JSON_LOADED)
-end
diff --git a/vendor/gems/json-1.5.1/lib/json/pure/generator.rb b/vendor/gems/json-1.5.1/lib/json/pure/generator.rb
deleted file mode 100644
index 44cca605f..000000000
--- a/vendor/gems/json-1.5.1/lib/json/pure/generator.rb
+++ /dev/null
@@ -1,441 +0,0 @@
-module JSON
- MAP = {
- "\x0" => '\u0000',
- "\x1" => '\u0001',
- "\x2" => '\u0002',
- "\x3" => '\u0003',
- "\x4" => '\u0004',
- "\x5" => '\u0005',
- "\x6" => '\u0006',
- "\x7" => '\u0007',
- "\b" => '\b',
- "\t" => '\t',
- "\n" => '\n',
- "\xb" => '\u000b',
- "\f" => '\f',
- "\r" => '\r',
- "\xe" => '\u000e',
- "\xf" => '\u000f',
- "\x10" => '\u0010',
- "\x11" => '\u0011',
- "\x12" => '\u0012',
- "\x13" => '\u0013',
- "\x14" => '\u0014',
- "\x15" => '\u0015',
- "\x16" => '\u0016',
- "\x17" => '\u0017',
- "\x18" => '\u0018',
- "\x19" => '\u0019',
- "\x1a" => '\u001a',
- "\x1b" => '\u001b',
- "\x1c" => '\u001c',
- "\x1d" => '\u001d',
- "\x1e" => '\u001e',
- "\x1f" => '\u001f',
- '"' => '\"',
- '\\' => '\\\\',
- } # :nodoc:
-
- # Convert a UTF8 encoded Ruby string _string_ to a JSON string, encoded with
- # UTF16 big endian characters as \u????, and return it.
- if defined?(::Encoding)
- def utf8_to_json(string) # :nodoc:
- string = string.dup
- string << '' # XXX workaround: avoid buffer sharing
- string.force_encoding(::Encoding::ASCII_8BIT)
- string.gsub!(/["\\\x0-\x1f]/) { MAP[$&] }
- string.force_encoding(::Encoding::UTF_8)
- string
- end
-
- def utf8_to_json_ascii(string) # :nodoc:
- string = string.dup
- string << '' # XXX workaround: avoid buffer sharing
- string.force_encoding(::Encoding::ASCII_8BIT)
- string.gsub!(/["\\\x0-\x1f]/) { MAP[$&] }
- string.gsub!(/(
- (?:
- [\xc2-\xdf][\x80-\xbf] |
- [\xe0-\xef][\x80-\xbf]{2} |
- [\xf0-\xf4][\x80-\xbf]{3}
- )+ |
- [\x80-\xc1\xf5-\xff] # invalid
- )/nx) { |c|
- c.size == 1 and raise GeneratorError, "invalid utf8 byte: '#{c}'"
- s = JSON.iconv('utf-16be', 'utf-8', c).unpack('H*')[0]
- s.gsub!(/.{4}/n, '\\\\u\&')
- }
- string.force_encoding(::Encoding::UTF_8)
- string
- rescue => e
- raise GeneratorError, "Caught #{e.class}: #{e}"
- end
- else
- def utf8_to_json(string) # :nodoc:
- string.gsub(/["\\\x0-\x1f]/) { MAP[$&] }
- end
-
- def utf8_to_json_ascii(string) # :nodoc:
- string = string.gsub(/["\\\x0-\x1f]/) { MAP[$&] }
- string.gsub!(/(
- (?:
- [\xc2-\xdf][\x80-\xbf] |
- [\xe0-\xef][\x80-\xbf]{2} |
- [\xf0-\xf4][\x80-\xbf]{3}
- )+ |
- [\x80-\xc1\xf5-\xff] # invalid
- )/nx) { |c|
- c.size == 1 and raise GeneratorError, "invalid utf8 byte: '#{c}'"
- s = JSON.iconv('utf-16be', 'utf-8', c).unpack('H*')[0]
- s.gsub!(/.{4}/n, '\\\\u\&')
- }
- string
- rescue => e
- raise GeneratorError, "Caught #{e.class}: #{e}"
- end
- end
- module_function :utf8_to_json, :utf8_to_json_ascii
-
- module Pure
- module Generator
- # This class is used to create State instances, that are use to hold data
- # while generating a JSON text from a a Ruby data structure.
- class State
- # Creates a State object from _opts_, which ought to be Hash to create
- # a new State instance configured by _opts_, something else to create
- # an unconfigured instance. If _opts_ is a State object, it is just
- # returned.
- def self.from_state(opts)
- case
- when self === opts
- opts
- when opts.respond_to?(:to_hash)
- new(opts.to_hash)
- when opts.respond_to?(:to_h)
- new(opts.to_h)
- else
- SAFE_STATE_PROTOTYPE.dup
- end
- end
-
- # Instantiates a new State object, configured by _opts_.
- #
- # _opts_ can have the following keys:
- #
- # * *indent*: a string used to indent levels (default: ''),
- # * *space*: a string that is put after, a : or , delimiter (default: ''),
- # * *space_before*: a string that is put before a : pair delimiter (default: ''),
- # * *object_nl*: a string that is put at the end of a JSON object (default: ''),
- # * *array_nl*: a string that is put at the end of a JSON array (default: ''),
- # * *check_circular*: is deprecated now, use the :max_nesting option instead,
- # * *max_nesting*: sets the maximum level of data structure nesting in
- # the generated JSON, max_nesting = 0 if no maximum should be checked.
- # * *allow_nan*: true if NaN, Infinity, and -Infinity should be
- # generated, otherwise an exception is thrown, if these values are
- # encountered. This options defaults to false.
- def initialize(opts = {})
- @indent = ''
- @space = ''
- @space_before = ''
- @object_nl = ''
- @array_nl = ''
- @allow_nan = false
- @ascii_only = false
- configure opts
- end
-
- # This string is used to indent levels in the JSON text.
- attr_accessor :indent
-
- # This string is used to insert a space between the tokens in a JSON
- # string.
- attr_accessor :space
-
- # This string is used to insert a space before the ':' in JSON objects.
- attr_accessor :space_before
-
- # This string is put at the end of a line that holds a JSON object (or
- # Hash).
- attr_accessor :object_nl
-
- # This string is put at the end of a line that holds a JSON array.
- attr_accessor :array_nl
-
- # This integer returns the maximum level of data structure nesting in
- # the generated JSON, max_nesting = 0 if no maximum is checked.
- attr_accessor :max_nesting
-
- # This integer returns the current depth data structure nesting in the
- # generated JSON.
- attr_accessor :depth
-
- def check_max_nesting # :nodoc:
- return if @max_nesting.zero?
- current_nesting = depth + 1
- current_nesting > @max_nesting and
- raise NestingError, "nesting of #{current_nesting} is too deep"
- end
-
- # Returns true, if circular data structures are checked,
- # otherwise returns false.
- def check_circular?
- !@max_nesting.zero?
- end
-
- # Returns true if NaN, Infinity, and -Infinity should be considered as
- # valid JSON and output.
- def allow_nan?
- @allow_nan
- end
-
- def ascii_only?
- @ascii_only
- end
-
- # Configure this State instance with the Hash _opts_, and return
- # itself.
- def configure(opts)
- @indent = opts[:indent] if opts.key?(:indent)
- @space = opts[:space] if opts.key?(:space)
- @space_before = opts[:space_before] if opts.key?(:space_before)
- @object_nl = opts[:object_nl] if opts.key?(:object_nl)
- @array_nl = opts[:array_nl] if opts.key?(:array_nl)
- @allow_nan = !!opts[:allow_nan] if opts.key?(:allow_nan)
- @ascii_only = opts[:ascii_only] if opts.key?(:ascii_only)
- @depth = opts[:depth] || 0
- if !opts.key?(:max_nesting) # defaults to 19
- @max_nesting = 19
- elsif opts[:max_nesting]
- @max_nesting = opts[:max_nesting]
- else
- @max_nesting = 0
- end
- self
- end
-
- # Returns the configuration instance variables as a hash, that can be
- # passed to the configure method.
- def to_h
- result = {}
- for iv in %w[indent space space_before object_nl array_nl allow_nan max_nesting ascii_only depth]
- result[iv.intern] = instance_variable_get("@#{iv}")
- end
- result
- end
-
- # Generates a valid JSON document from object +obj+ and returns the
- # result. If no valid JSON document can be created this method raises a
- # GeneratorError exception.
- def generate(obj)
- result = obj.to_json(self)
- if result !~ /\A\s*(?:\[.*\]|\{.*\})\s*\Z/m
- raise GeneratorError, "only generation of JSON objects or arrays allowed"
- end
- result
- end
-
- # Return the value returned by method +name+.
- def [](name)
- __send__ name
- end
- end
-
- module GeneratorMethods
- module Object
- # Converts this object to a string (calling #to_s), converts
- # it to a JSON string, and returns the result. This is a fallback, if no
- # special method #to_json was defined for some object.
- def to_json(*) to_s.to_json end
- end
-
- module Hash
- # Returns a JSON string containing a JSON object, that is unparsed from
- # this Hash instance.
- # _state_ is a JSON::State object, that can also be used to configure the
- # produced JSON string output further.
- # _depth_ is used to find out nesting depth, to indent accordingly.
- def to_json(state = nil, *)
- state = State.from_state(state)
- state.check_max_nesting
- json_transform(state)
- end
-
- private
-
- def json_shift(state)
- state.object_nl.empty? or return ''
- state.indent * state.depth
- end
-
- def json_transform(state)
- delim = ','
- delim << state.object_nl
- result = '{'
- result << state.object_nl
- depth = state.depth += 1
- first = true
- indent = !state.object_nl.empty?
- each { |key,value|
- result << delim unless first
- result << state.indent * depth if indent
- result << key.to_s.to_json(state)
- result << state.space_before
- result << ':'
- result << state.space
- result << value.to_json(state)
- first = false
- }
- depth = state.depth -= 1
- result << state.object_nl
- result << state.indent * depth if indent if indent
- result << '}'
- result
- end
- end
-
- module Array
- # Returns a JSON string containing a JSON array, that is unparsed from
- # this Array instance.
- # _state_ is a JSON::State object, that can also be used to configure the
- # produced JSON string output further.
- def to_json(state = nil, *)
- state = State.from_state(state)
- state.check_max_nesting
- json_transform(state)
- end
-
- private
-
- def json_transform(state)
- delim = ','
- delim << state.array_nl
- result = '['
- result << state.array_nl
- depth = state.depth += 1
- first = true
- indent = !state.array_nl.empty?
- each { |value|
- result << delim unless first
- result << state.indent * depth if indent
- result << value.to_json(state)
- first = false
- }
- depth = state.depth -= 1
- result << state.array_nl
- result << state.indent * depth if indent
- result << ']'
- end
- end
-
- module Integer
- # Returns a JSON string representation for this Integer number.
- def to_json(*) to_s end
- end
-
- module Float
- # Returns a JSON string representation for this Float number.
- def to_json(state = nil, *)
- state = State.from_state(state)
- case
- when infinite?
- if state.allow_nan?
- to_s
- else
- raise GeneratorError, "#{self} not allowed in JSON"
- end
- when nan?
- if state.allow_nan?
- to_s
- else
- raise GeneratorError, "#{self} not allowed in JSON"
- end
- else
- to_s
- end
- end
- end
-
- module String
- if defined?(::Encoding)
- # This string should be encoded with UTF-8 A call to this method
- # returns a JSON string encoded with UTF16 big endian characters as
- # \u????.
- def to_json(state = nil, *args)
- state = State.from_state(state)
- if encoding == ::Encoding::UTF_8
- string = self
- else
- string = encode(::Encoding::UTF_8)
- end
- if state.ascii_only?
- '"' << JSON.utf8_to_json_ascii(string) << '"'
- else
- '"' << JSON.utf8_to_json(string) << '"'
- end
- end
- else
- # This string should be encoded with UTF-8 A call to this method
- # returns a JSON string encoded with UTF16 big endian characters as
- # \u????.
- def to_json(state = nil, *args)
- state = State.from_state(state)
- if state.ascii_only?
- '"' << JSON.utf8_to_json_ascii(self) << '"'
- else
- '"' << JSON.utf8_to_json(self) << '"'
- end
- end
- end
-
- # Module that holds the extinding methods if, the String module is
- # included.
- module Extend
- # Raw Strings are JSON Objects (the raw bytes are stored in an
- # array for the key "raw"). The Ruby String can be created by this
- # module method.
- def json_create(o)
- o['raw'].pack('C*')
- end
- end
-
- # Extends _modul_ with the String::Extend module.
- def self.included(modul)
- modul.extend Extend
- end
-
- # This method creates a raw object hash, that can be nested into
- # other data structures and will be unparsed as a raw string. This
- # method should be used, if you want to convert raw strings to JSON
- # instead of UTF-8 strings, e. g. binary data.
- def to_json_raw_object
- {
- JSON.create_id => self.class.name,
- 'raw' => self.unpack('C*'),
- }
- end
-
- # This method creates a JSON text from the result of
- # a call to to_json_raw_object of this String.
- def to_json_raw(*args)
- to_json_raw_object.to_json(*args)
- end
- end
-
- module TrueClass
- # Returns a JSON string for true: 'true'.
- def to_json(*) 'true' end
- end
-
- module FalseClass
- # Returns a JSON string for false: 'false'.
- def to_json(*) 'false' end
- end
-
- module NilClass
- # Returns a JSON string for nil: 'null'.
- def to_json(*) 'null' end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/json-1.5.1/lib/json/pure/parser.rb b/vendor/gems/json-1.5.1/lib/json/pure/parser.rb
deleted file mode 100644
index 8043e675a..000000000
--- a/vendor/gems/json-1.5.1/lib/json/pure/parser.rb
+++ /dev/null
@@ -1,320 +0,0 @@
-require 'strscan'
-
-module JSON
- module Pure
- # This class implements the JSON parser that is used to parse a JSON string
- # into a Ruby data structure.
- class Parser < StringScanner
- STRING = /" ((?:[^\x0-\x1f"\\] |
- # escaped special characters:
- \\["\\\/bfnrt] |
- \\u[0-9a-fA-F]{4} |
- # match all but escaped special characters:
- \\[\x20-\x21\x23-\x2e\x30-\x5b\x5d-\x61\x63-\x65\x67-\x6d\x6f-\x71\x73\x75-\xff])*)
- "/nx
- INTEGER = /(-?0|-?[1-9]\d*)/
- FLOAT = /(-?
- (?:0|[1-9]\d*)
- (?:
- \.\d+(?i:e[+-]?\d+) |
- \.\d+ |
- (?i:e[+-]?\d+)
- )
- )/x
- NAN = /NaN/
- INFINITY = /Infinity/
- MINUS_INFINITY = /-Infinity/
- OBJECT_OPEN = /\{/
- OBJECT_CLOSE = /\}/
- ARRAY_OPEN = /\[/
- ARRAY_CLOSE = /\]/
- PAIR_DELIMITER = /:/
- COLLECTION_DELIMITER = /,/
- TRUE = /true/
- FALSE = /false/
- NULL = /null/
- IGNORE = %r(
- (?:
- //[^\n\r]*[\n\r]| # line comments
- /\* # c-style comments
- (?:
- [^*/]| # normal chars
- /[^*]| # slashes that do not start a nested comment
- \*[^/]| # asterisks that do not end this comment
- /(?=\*/) # single slash before this comment's end
- )*
- \*/ # the End of this comment
- |[ \t\r\n]+ # whitespaces: space, horicontal tab, lf, cr
- )+
- )mx
-
- UNPARSED = Object.new
-
- # Creates a new JSON::Pure::Parser instance for the string _source_.
- #
- # It will be configured by the _opts_ hash. _opts_ can have the following
- # keys:
- # * *max_nesting*: The maximum depth of nesting allowed in the parsed data
- # structures. Disable depth checking with :max_nesting => false|nil|0,
- # it defaults to 19.
- # * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
- # defiance of RFC 4627 to be parsed by the Parser. This option defaults
- # to false.
- # * *symbolize_names*: If set to true, returns symbols for the names
- # (keys) in a JSON object. Otherwise strings are returned, which is also
- # the default.
- # * *create_additions*: If set to false, the Parser doesn't create
- # additions even if a matchin class and create_id was found. This option
- # defaults to true.
- # * *object_class*: Defaults to Hash
- # * *array_class*: Defaults to Array
- def initialize(source, opts = {})
- opts ||= {}
- if defined?(::Encoding)
- if source.encoding == ::Encoding::ASCII_8BIT
- b = source[0, 4].bytes.to_a
- source = case
- when b.size >= 4 && b[0] == 0 && b[1] == 0 && b[2] == 0
- source.dup.force_encoding(::Encoding::UTF_32BE).encode!(::Encoding::UTF_8)
- when b.size >= 4 && b[0] == 0 && b[2] == 0
- source.dup.force_encoding(::Encoding::UTF_16BE).encode!(::Encoding::UTF_8)
- when b.size >= 4 && b[1] == 0 && b[2] == 0 && b[3] == 0
- source.dup.force_encoding(::Encoding::UTF_32LE).encode!(::Encoding::UTF_8)
-
- when b.size >= 4 && b[1] == 0 && b[3] == 0
- source.dup.force_encoding(::Encoding::UTF_16LE).encode!(::Encoding::UTF_8)
- else
- source.dup
- end
- else
- source = source.encode(::Encoding::UTF_8)
- end
- source.force_encoding(::Encoding::ASCII_8BIT)
- else
- b = source
- source = case
- when b.size >= 4 && b[0] == 0 && b[1] == 0 && b[2] == 0
- JSON.iconv('utf-8', 'utf-32be', b)
- when b.size >= 4 && b[0] == 0 && b[2] == 0
- JSON.iconv('utf-8', 'utf-16be', b)
- when b.size >= 4 && b[1] == 0 && b[2] == 0 && b[3] == 0
- JSON.iconv('utf-8', 'utf-32le', b)
- when b.size >= 4 && b[1] == 0 && b[3] == 0
- JSON.iconv('utf-8', 'utf-16le', b)
- else
- b
- end
- end
- super source
- if !opts.key?(:max_nesting) # defaults to 19
- @max_nesting = 19
- elsif opts[:max_nesting]
- @max_nesting = opts[:max_nesting]
- else
- @max_nesting = 0
- end
- @allow_nan = !!opts[:allow_nan]
- @symbolize_names = !!opts[:symbolize_names]
- @create_additions = opts.key?(:create_additions) ? !!opts[:create_additions] : true
- @create_id = opts[:create_id] || JSON.create_id
- @object_class = opts[:object_class] || Hash
- @array_class = opts[:array_class] || Array
- @match_string = opts[:match_string]
- end
-
- alias source string
-
- # Parses the current JSON string _source_ and returns the complete data
- # structure as a result.
- def parse
- reset
- obj = nil
- until eos?
- case
- when scan(OBJECT_OPEN)
- obj and raise ParserError, "source '#{peek(20)}' not in JSON!"
- @current_nesting = 1
- obj = parse_object
- when scan(ARRAY_OPEN)
- obj and raise ParserError, "source '#{peek(20)}' not in JSON!"
- @current_nesting = 1
- obj = parse_array
- when skip(IGNORE)
- ;
- else
- raise ParserError, "source '#{peek(20)}' not in JSON!"
- end
- end
- obj or raise ParserError, "source did not contain any JSON!"
- obj
- end
-
- private
-
- # Unescape characters in strings.
- UNESCAPE_MAP = Hash.new { |h, k| h[k] = k.chr }
- UNESCAPE_MAP.update({
- ?" => '"',
- ?\\ => '\\',
- ?/ => '/',
- ?b => "\b",
- ?f => "\f",
- ?n => "\n",
- ?r => "\r",
- ?t => "\t",
- ?u => nil,
- })
-
- EMPTY_8BIT_STRING = ''
- if ::String.method_defined?(:encode)
- EMPTY_8BIT_STRING.force_encoding Encoding::ASCII_8BIT
- end
-
- def parse_string
- if scan(STRING)
- return '' if self[1].empty?
- string = self[1].gsub(%r((?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff]))n) do |c|
- if u = UNESCAPE_MAP[$&[1]]
- u
- else # \uXXXX
- bytes = EMPTY_8BIT_STRING.dup
- i = 0
- while c[6 * i] == ?\\ && c[6 * i + 1] == ?u
- bytes << c[6 * i + 2, 2].to_i(16) << c[6 * i + 4, 2].to_i(16)
- i += 1
- end
- JSON.iconv('utf-8', 'utf-16be', bytes)
- end
- end
- if string.respond_to?(:force_encoding)
- string.force_encoding(::Encoding::UTF_8)
- end
- if @create_additions and @match_string
- for (regexp, klass) in @match_string
- klass.json_creatable? or next
- string =~ regexp and return klass.json_create(string)
- end
- end
- string
- else
- UNPARSED
- end
- rescue => e
- raise ParserError, "Caught #{e.class} at '#{peek(20)}': #{e}"
- end
-
- def parse_value
- case
- when scan(FLOAT)
- Float(self[1])
- when scan(INTEGER)
- Integer(self[1])
- when scan(TRUE)
- true
- when scan(FALSE)
- false
- when scan(NULL)
- nil
- when (string = parse_string) != UNPARSED
- string
- when scan(ARRAY_OPEN)
- @current_nesting += 1
- ary = parse_array
- @current_nesting -= 1
- ary
- when scan(OBJECT_OPEN)
- @current_nesting += 1
- obj = parse_object
- @current_nesting -= 1
- obj
- when @allow_nan && scan(NAN)
- NaN
- when @allow_nan && scan(INFINITY)
- Infinity
- when @allow_nan && scan(MINUS_INFINITY)
- MinusInfinity
- else
- UNPARSED
- end
- end
-
- def parse_array
- raise NestingError, "nesting of #@current_nesting is too deep" if
- @max_nesting.nonzero? && @current_nesting > @max_nesting
- result = @array_class.new
- delim = false
- until eos?
- case
- when (value = parse_value) != UNPARSED
- delim = false
- result << value
- skip(IGNORE)
- if scan(COLLECTION_DELIMITER)
- delim = true
- elsif match?(ARRAY_CLOSE)
- ;
- else
- raise ParserError, "expected ',' or ']' in array at '#{peek(20)}'!"
- end
- when scan(ARRAY_CLOSE)
- if delim
- raise ParserError, "expected next element in array at '#{peek(20)}'!"
- end
- break
- when skip(IGNORE)
- ;
- else
- raise ParserError, "unexpected token in array at '#{peek(20)}'!"
- end
- end
- result
- end
-
- def parse_object
- raise NestingError, "nesting of #@current_nesting is too deep" if
- @max_nesting.nonzero? && @current_nesting > @max_nesting
- result = @object_class.new
- delim = false
- until eos?
- case
- when (string = parse_string) != UNPARSED
- skip(IGNORE)
- unless scan(PAIR_DELIMITER)
- raise ParserError, "expected ':' in object at '#{peek(20)}'!"
- end
- skip(IGNORE)
- unless (value = parse_value).equal? UNPARSED
- result[@symbolize_names ? string.to_sym : string] = value
- delim = false
- skip(IGNORE)
- if scan(COLLECTION_DELIMITER)
- delim = true
- elsif match?(OBJECT_CLOSE)
- ;
- else
- raise ParserError, "expected ',' or '}' in object at '#{peek(20)}'!"
- end
- else
- raise ParserError, "expected value in object at '#{peek(20)}'!"
- end
- when scan(OBJECT_CLOSE)
- if delim
- raise ParserError, "expected next name, value pair in object at '#{peek(20)}'!"
- end
- if @create_additions and klassname = result[@create_id]
- klass = JSON.deep_const_get klassname
- break unless klass and klass.json_creatable?
- result = klass.json_create(result)
- end
- break
- when skip(IGNORE)
- ;
- else
- raise ParserError, "unexpected token in object at '#{peek(20)}'!"
- end
- end
- result
- end
- end
- end
-end
diff --git a/vendor/gems/json-1.5.1/lib/json/version.rb b/vendor/gems/json-1.5.1/lib/json/version.rb
deleted file mode 100644
index 86a741a8d..000000000
--- a/vendor/gems/json-1.5.1/lib/json/version.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-module JSON
- # JSON version
- VERSION = '1.5.1'
- VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i } # :nodoc:
- VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
- VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
- VERSION_BUILD = VERSION_ARRAY[2] # :nodoc:
-end
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail1.json b/vendor/gems/json-1.5.1/tests/fixtures/fail1.json
deleted file mode 100644
index 6216b865f..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail1.json
+++ /dev/null
@@ -1 +0,0 @@
-"A JSON payload should be an object or array, not a string." \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail10.json b/vendor/gems/json-1.5.1/tests/fixtures/fail10.json
deleted file mode 100644
index 5d8c0047b..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail10.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Extra value after close": true} "misplaced quoted value" \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail11.json b/vendor/gems/json-1.5.1/tests/fixtures/fail11.json
deleted file mode 100644
index 76eb95b45..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail11.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Illegal expression": 1 + 2} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail12.json b/vendor/gems/json-1.5.1/tests/fixtures/fail12.json
deleted file mode 100644
index 77580a452..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail12.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Illegal invocation": alert()} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail13.json b/vendor/gems/json-1.5.1/tests/fixtures/fail13.json
deleted file mode 100644
index 379406b59..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail13.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Numbers cannot have leading zeroes": 013} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail14.json b/vendor/gems/json-1.5.1/tests/fixtures/fail14.json
deleted file mode 100644
index 0ed366b38..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail14.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Numbers cannot be hex": 0x14} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail18.json b/vendor/gems/json-1.5.1/tests/fixtures/fail18.json
deleted file mode 100644
index e2d130c6e..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail18.json
+++ /dev/null
@@ -1 +0,0 @@
-[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail19.json b/vendor/gems/json-1.5.1/tests/fixtures/fail19.json
deleted file mode 100644
index 3b9c46fa9..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail19.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Missing colon" null} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail2.json b/vendor/gems/json-1.5.1/tests/fixtures/fail2.json
deleted file mode 100644
index 6b7c11e5a..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail2.json
+++ /dev/null
@@ -1 +0,0 @@
-["Unclosed array" \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail20.json b/vendor/gems/json-1.5.1/tests/fixtures/fail20.json
deleted file mode 100644
index 27c1af3e7..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail20.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Double colon":: null} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail21.json b/vendor/gems/json-1.5.1/tests/fixtures/fail21.json
deleted file mode 100644
index 62474573b..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail21.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Comma instead of colon", null} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail22.json b/vendor/gems/json-1.5.1/tests/fixtures/fail22.json
deleted file mode 100644
index a7752581b..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail22.json
+++ /dev/null
@@ -1 +0,0 @@
-["Colon instead of comma": false] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail23.json b/vendor/gems/json-1.5.1/tests/fixtures/fail23.json
deleted file mode 100644
index 494add1ca..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail23.json
+++ /dev/null
@@ -1 +0,0 @@
-["Bad value", truth] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail24.json b/vendor/gems/json-1.5.1/tests/fixtures/fail24.json
deleted file mode 100644
index caff239bf..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail24.json
+++ /dev/null
@@ -1 +0,0 @@
-['single quote'] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail25.json b/vendor/gems/json-1.5.1/tests/fixtures/fail25.json
deleted file mode 100644
index 2dfbd259e..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail25.json
+++ /dev/null
@@ -1 +0,0 @@
-["tab character in string "]
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail27.json b/vendor/gems/json-1.5.1/tests/fixtures/fail27.json
deleted file mode 100644
index 6b01a2ca4..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail27.json
+++ /dev/null
@@ -1,2 +0,0 @@
-["line
-break"] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail28.json b/vendor/gems/json-1.5.1/tests/fixtures/fail28.json
deleted file mode 100644
index 621a0101c..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail28.json
+++ /dev/null
@@ -1,2 +0,0 @@
-["line\
-break"] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail3.json b/vendor/gems/json-1.5.1/tests/fixtures/fail3.json
deleted file mode 100644
index 168c81eb7..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail3.json
+++ /dev/null
@@ -1 +0,0 @@
-{unquoted_key: "keys must be quoted"} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail4.json b/vendor/gems/json-1.5.1/tests/fixtures/fail4.json
deleted file mode 100644
index 9de168bf3..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail4.json
+++ /dev/null
@@ -1 +0,0 @@
-["extra comma",] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail5.json b/vendor/gems/json-1.5.1/tests/fixtures/fail5.json
deleted file mode 100644
index ddf3ce3d2..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail5.json
+++ /dev/null
@@ -1 +0,0 @@
-["double extra comma",,] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail6.json b/vendor/gems/json-1.5.1/tests/fixtures/fail6.json
deleted file mode 100644
index ed91580e1..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail6.json
+++ /dev/null
@@ -1 +0,0 @@
-[ , "<-- missing value"] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail7.json b/vendor/gems/json-1.5.1/tests/fixtures/fail7.json
deleted file mode 100644
index 8a96af3e4..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail7.json
+++ /dev/null
@@ -1 +0,0 @@
-["Comma after the close"], \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail8.json b/vendor/gems/json-1.5.1/tests/fixtures/fail8.json
deleted file mode 100644
index b28479c6e..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail8.json
+++ /dev/null
@@ -1 +0,0 @@
-["Extra close"]] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/fail9.json b/vendor/gems/json-1.5.1/tests/fixtures/fail9.json
deleted file mode 100644
index 5815574f3..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/fail9.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Extra comma": true,} \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/pass1.json b/vendor/gems/json-1.5.1/tests/fixtures/pass1.json
deleted file mode 100644
index 7828fcc13..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/pass1.json
+++ /dev/null
@@ -1,56 +0,0 @@
-[
- "JSON Test Pattern pass1",
- {"object with 1 member":["array with 1 element"]},
- {},
- [],
- -42,
- true,
- false,
- null,
- {
- "integer": 1234567890,
- "real": -9876.543210,
- "e": 0.123456789e-12,
- "E": 1.234567890E+34,
- "": 23456789012E666,
- "zero": 0,
- "one": 1,
- "space": " ",
- "quote": "\"",
- "backslash": "\\",
- "controls": "\b\f\n\r\t",
- "slash": "/ & \/",
- "alpha": "abcdefghijklmnopqrstuvwyz",
- "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
- "digit": "0123456789",
- "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
- "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
- "true": true,
- "false": false,
- "null": null,
- "array":[ ],
- "object":{ },
- "address": "50 St. James Street",
- "url": "http://www.JSON.org/",
- "comment": "// /* <!-- --",
- "# -- --> */": " ",
- " s p a c e d " :[1,2 , 3
-
-,
-
-4 , 5 , 6 ,7 ],
- "compact": [1,2,3,4,5,6,7],
- "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
- "quotes": "&#34; \u0022 %22 0x22 034 &#x22;",
- "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
-: "A key can be any string"
- },
- 0.5 ,98.6
-,
-99.44
-,
-
-1066
-
-
-,"rosebud"] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/pass15.json b/vendor/gems/json-1.5.1/tests/fixtures/pass15.json
deleted file mode 100644
index fc8376b60..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/pass15.json
+++ /dev/null
@@ -1 +0,0 @@
-["Illegal backslash escape: \x15"] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/pass16.json b/vendor/gems/json-1.5.1/tests/fixtures/pass16.json
deleted file mode 100644
index c43ae3c28..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/pass16.json
+++ /dev/null
@@ -1 +0,0 @@
-["Illegal backslash escape: \'"] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/pass17.json b/vendor/gems/json-1.5.1/tests/fixtures/pass17.json
deleted file mode 100644
index 62b9214ae..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/pass17.json
+++ /dev/null
@@ -1 +0,0 @@
-["Illegal backslash escape: \017"] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/pass2.json b/vendor/gems/json-1.5.1/tests/fixtures/pass2.json
deleted file mode 100644
index d3c63c7ad..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/pass2.json
+++ /dev/null
@@ -1 +0,0 @@
-[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/pass26.json b/vendor/gems/json-1.5.1/tests/fixtures/pass26.json
deleted file mode 100644
index 845d26a6a..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/pass26.json
+++ /dev/null
@@ -1 +0,0 @@
-["tab\ character\ in\ string\ "] \ No newline at end of file
diff --git a/vendor/gems/json-1.5.1/tests/fixtures/pass3.json b/vendor/gems/json-1.5.1/tests/fixtures/pass3.json
deleted file mode 100644
index 4528d51f1..000000000
--- a/vendor/gems/json-1.5.1/tests/fixtures/pass3.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "JSON Test Pattern pass3": {
- "The outermost value": "must be an object or array.",
- "In this test": "It is an object."
- }
-}
diff --git a/vendor/gems/json-1.5.1/tests/setup_variant.rb b/vendor/gems/json-1.5.1/tests/setup_variant.rb
deleted file mode 100644
index 2dab184bc..000000000
--- a/vendor/gems/json-1.5.1/tests/setup_variant.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-case ENV['JSON']
-when 'pure'
- $:.unshift 'lib'
- require 'json/pure'
-when 'ext'
- $:.unshift 'ext', 'lib'
- require 'json/ext'
-else
- $:.unshift 'ext', 'lib'
- require 'json'
-end
diff --git a/vendor/gems/json-1.5.1/tests/test_json.rb b/vendor/gems/json-1.5.1/tests/test_json.rb
deleted file mode 100755
index 2fc3c099d..000000000
--- a/vendor/gems/json-1.5.1/tests/test_json.rb
+++ /dev/null
@@ -1,390 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
-
-require 'test/unit'
-require File.join(File.dirname(__FILE__), 'setup_variant')
-require 'stringio'
-
-unless Array.method_defined?(:permutation)
- begin
- require 'enumerator'
- require 'permutation'
- class Array
- def permutation
- Permutation.for(self).to_enum.map { |x| x.project }
- end
- end
- rescue LoadError
- warn "Skipping permutation tests."
- end
-end
-
-class TC_JSON < Test::Unit::TestCase
- include JSON
-
- def setup
- @ary = [1, "foo", 3.14, 4711.0, 2.718, nil, [1,-2,3], false, true].map do
- |x| [x]
- end
- @ary_to_parse = ["1", '"foo"', "3.14", "4711.0", "2.718", "null",
- "[1,-2,3]", "false", "true"].map do
- |x| "[#{x}]"
- end
- @hash = {
- 'a' => 2,
- 'b' => 3.141,
- 'c' => 'c',
- 'd' => [ 1, "b", 3.14 ],
- 'e' => { 'foo' => 'bar' },
- 'g' => "\"\0\037",
- 'h' => 1000.0,
- 'i' => 0.001
- }
- @json = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},'\
- '"g":"\\"\\u0000\\u001f","h":1.0E3,"i":1.0E-3}'
- end
-
- def test_construction
- parser = JSON::Parser.new('test')
- assert_equal 'test', parser.source
- end
-
- def assert_equal_float(expected, is)
- assert_in_delta(expected.first, is.first, 1e-2)
- end
-
- def test_parse_simple_arrays
- assert_equal([], parse('[]'))
- assert_equal([], parse(' [ ] '))
- assert_equal([nil], parse('[null]'))
- assert_equal([false], parse('[false]'))
- assert_equal([true], parse('[true]'))
- assert_equal([-23], parse('[-23]'))
- assert_equal([23], parse('[23]'))
- assert_equal([0.23], parse('[0.23]'))
- assert_equal([0.0], parse('[0e0]'))
- assert_raises(JSON::ParserError) { parse('[+23.2]') }
- assert_raises(JSON::ParserError) { parse('[+23]') }
- assert_raises(JSON::ParserError) { parse('[.23]') }
- assert_raises(JSON::ParserError) { parse('[023]') }
- assert_equal_float [3.141], parse('[3.141]')
- assert_equal_float [-3.141], parse('[-3.141]')
- assert_equal_float [3.141], parse('[3141e-3]')
- assert_equal_float [3.141], parse('[3141.1e-3]')
- assert_equal_float [3.141], parse('[3141E-3]')
- assert_equal_float [3.141], parse('[3141.0E-3]')
- assert_equal_float [-3.141], parse('[-3141.0e-3]')
- assert_equal_float [-3.141], parse('[-3141e-3]')
- assert_raises(ParserError) { parse('[NaN]') }
- assert parse('[NaN]', :allow_nan => true).first.nan?
- assert_raises(ParserError) { parse('[Infinity]') }
- assert_equal [1.0/0], parse('[Infinity]', :allow_nan => true)
- assert_raises(ParserError) { parse('[-Infinity]') }
- assert_equal [-1.0/0], parse('[-Infinity]', :allow_nan => true)
- assert_equal([""], parse('[""]'))
- assert_equal(["foobar"], parse('["foobar"]'))
- assert_equal([{}], parse('[{}]'))
- end
-
- def test_parse_simple_objects
- assert_equal({}, parse('{}'))
- assert_equal({}, parse(' { } '))
- assert_equal({ "a" => nil }, parse('{ "a" : null}'))
- assert_equal({ "a" => nil }, parse('{"a":null}'))
- assert_equal({ "a" => false }, parse('{ "a" : false } '))
- assert_equal({ "a" => false }, parse('{"a":false}'))
- assert_raises(JSON::ParserError) { parse('{false}') }
- assert_equal({ "a" => true }, parse('{"a":true}'))
- assert_equal({ "a" => true }, parse(' { "a" : true } '))
- assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
- assert_equal({ "a" => -23 }, parse(' { "a" : -23 } '))
- assert_equal({ "a" => 23 }, parse('{"a":23 } '))
- assert_equal({ "a" => 23 }, parse(' { "a" : 23 } '))
- assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } '))
- assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } '))
- end
-
- if Array.method_defined?(:permutation)
- def test_parse_more_complex_arrays
- a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }]
- a.permutation.each do |perm|
- json = pretty_generate(perm)
- assert_equal perm, parse(json)
- end
- end
-
- def test_parse_complex_objects
- a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }]
- a.permutation.each do |perm|
- s = "a"
- orig_obj = perm.inject({}) { |h, x| h[s.dup] = x; s = s.succ; h }
- json = pretty_generate(orig_obj)
- assert_equal orig_obj, parse(json)
- end
- end
- end
-
- def test_parse_arrays
- assert_equal([1,2,3], parse('[1,2,3]'))
- assert_equal([1.2,2,3], parse('[1.2,2,3]'))
- assert_equal([[],[[],[]]], parse('[[],[[],[]]]'))
- end
-
- def test_parse_values
- assert_equal([""], parse('[""]'))
- assert_equal(["\\"], parse('["\\\\"]'))
- assert_equal(['"'], parse('["\""]'))
- assert_equal(['\\"\\'], parse('["\\\\\\"\\\\"]'))
- assert_equal(["\"\b\n\r\t\0\037"],
- parse('["\"\b\n\r\t\u0000\u001f"]'))
- for i in 0 ... @ary.size
- assert_equal(@ary[i], parse(@ary_to_parse[i]))
- end
- end
-
- def test_parse_array
- assert_equal([], parse('[]'))
- assert_equal([], parse(' [ ] '))
- assert_equal([1], parse('[1]'))
- assert_equal([1], parse(' [ 1 ] '))
- assert_equal(@ary,
- parse('[[1],["foo"],[3.14],[47.11e+2],[2718.0E-3],[null],[[1,-2,3]]'\
- ',[false],[true]]'))
- assert_equal(@ary, parse(%Q{ [ [1] , ["foo"] , [3.14] \t , [47.11e+2]
- , [2718.0E-3 ],\r[ null] , [[1, -2, 3 ]], [false ],[ true]\n ] }))
- end
-
- class SubArray < Array; end
-
- class SubArray2 < Array
- def to_json(*a)
- {
- JSON.create_id => self.class.name,
- 'ary' => to_a,
- }.to_json(*a)
- end
-
- def self.json_create(o)
- o.delete JSON.create_id
- o['ary']
- end
- end
-
- def test_parse_array_custom_class
- res = parse('[]', :array_class => SubArray)
- assert_equal([], res)
- assert_equal(SubArray, res.class)
- end
-
- def test_parse_object
- assert_equal({}, parse('{}'))
- assert_equal({}, parse(' { } '))
- assert_equal({'foo'=>'bar'}, parse('{"foo":"bar"}'))
- assert_equal({'foo'=>'bar'}, parse(' { "foo" : "bar" } '))
- end
-
- class SubHash < Hash
- end
-
- class SubHash2 < Hash
- def to_json(*a)
- {
- JSON.create_id => self.class.name,
- }.merge(self).to_json(*a)
- end
-
- def self.json_create(o)
- o.delete JSON.create_id
- self[o]
- end
- end
-
- def test_parse_object_custom_class
- res = parse('{}', :object_class => SubHash2)
- assert_equal({}, res)
- assert_equal(SubHash2, res.class)
- end
-
- def test_generation_of_core_subclasses_with_new_to_json
- obj = SubHash2["foo" => SubHash2["bar" => true]]
- obj_json = JSON(obj)
- obj_again = JSON(obj_json)
- assert_kind_of SubHash2, obj_again
- assert_kind_of SubHash2, obj_again['foo']
- assert obj_again['foo']['bar']
- assert_equal obj, obj_again
- assert_equal ["foo"], JSON(JSON(SubArray2["foo"]))
- end
-
- def test_generation_of_core_subclasses_with_default_to_json
- assert_equal '{"foo":"bar"}', JSON(SubHash["foo" => "bar"])
- assert_equal '["foo"]', JSON(SubArray["foo"])
- end
-
- def test_generation_of_core_subclasses
- obj = SubHash["foo" => SubHash["bar" => true]]
- obj_json = JSON(obj)
- obj_again = JSON(obj_json)
- assert_kind_of Hash, obj_again
- assert_kind_of Hash, obj_again['foo']
- assert obj_again['foo']['bar']
- assert_equal obj, obj_again
- end
-
- def test_parser_reset
- parser = Parser.new(@json)
- assert_equal(@hash, parser.parse)
- assert_equal(@hash, parser.parse)
- end
-
- def test_comments
- json = <<EOT
-{
- "key1":"value1", // eol comment
- "key2":"value2" /* multi line
- * comment */,
- "key3":"value3" /* multi line
- // nested eol comment
- * comment */
-}
-EOT
- assert_equal(
- { "key1" => "value1", "key2" => "value2", "key3" => "value3" },
- parse(json))
- json = <<EOT
-{
- "key1":"value1" /* multi line
- // nested eol comment
- /* illegal nested multi line comment */
- * comment */
-}
-EOT
- assert_raises(ParserError) { parse(json) }
- json = <<EOT
-{
- "key1":"value1" /* multi line
- // nested eol comment
- closed multi comment */
- and again, throw an Error */
-}
-EOT
- assert_raises(ParserError) { parse(json) }
- json = <<EOT
-{
- "key1":"value1" /*/*/
-}
-EOT
- assert_equal({ "key1" => "value1" }, parse(json))
- end
-
- def test_backslash
- data = [ '\\.(?i:gif|jpe?g|png)$' ]
- json = '["\\\\.(?i:gif|jpe?g|png)$"]'
- assert_equal json, JSON.generate(data)
- assert_equal data, JSON.parse(json)
- #
- data = [ '\\"' ]
- json = '["\\\\\""]'
- assert_equal json, JSON.generate(data)
- assert_equal data, JSON.parse(json)
- #
- json = '["/"]'
- data = JSON.parse(json)
- assert_equal ['/'], data
- assert_equal json, JSON.generate(data)
- #
- json = '["\""]'
- data = JSON.parse(json)
- assert_equal ['"'], data
- assert_equal json, JSON.generate(data)
- json = '["\\\'"]'
- data = JSON.parse(json)
- assert_equal ["'"], data
- assert_equal '["\'"]', JSON.generate(data)
- end
-
- def test_wrong_inputs
- assert_raises(ParserError) { JSON.parse('"foo"') }
- assert_raises(ParserError) { JSON.parse('123') }
- assert_raises(ParserError) { JSON.parse('[] bla') }
- assert_raises(ParserError) { JSON.parse('[] 1') }
- assert_raises(ParserError) { JSON.parse('[] []') }
- assert_raises(ParserError) { JSON.parse('[] {}') }
- assert_raises(ParserError) { JSON.parse('{} []') }
- assert_raises(ParserError) { JSON.parse('{} {}') }
- assert_raises(ParserError) { JSON.parse('[NULL]') }
- assert_raises(ParserError) { JSON.parse('[FALSE]') }
- assert_raises(ParserError) { JSON.parse('[TRUE]') }
- assert_raises(ParserError) { JSON.parse('[07] ') }
- assert_raises(ParserError) { JSON.parse('[0a]') }
- assert_raises(ParserError) { JSON.parse('[1.]') }
- assert_raises(ParserError) { JSON.parse(' ') }
- end
-
- def test_nesting
- assert_raises(JSON::NestingError) { JSON.parse '[[]]', :max_nesting => 1 }
- assert_raises(JSON::NestingError) { JSON.parser.new('[[]]', :max_nesting => 1).parse }
- assert_equal [[]], JSON.parse('[[]]', :max_nesting => 2)
- too_deep = '[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]'
- too_deep_ary = eval too_deep
- assert_raises(JSON::NestingError) { JSON.parse too_deep }
- assert_raises(JSON::NestingError) { JSON.parser.new(too_deep).parse }
- assert_raises(JSON::NestingError) { JSON.parse too_deep, :max_nesting => 19 }
- ok = JSON.parse too_deep, :max_nesting => 20
- assert_equal too_deep_ary, ok
- ok = JSON.parse too_deep, :max_nesting => nil
- assert_equal too_deep_ary, ok
- ok = JSON.parse too_deep, :max_nesting => false
- assert_equal too_deep_ary, ok
- ok = JSON.parse too_deep, :max_nesting => 0
- assert_equal too_deep_ary, ok
- assert_raises(JSON::NestingError) { JSON.generate [[]], :max_nesting => 1 }
- assert_equal '[[]]', JSON.generate([[]], :max_nesting => 2)
- assert_raises(JSON::NestingError) { JSON.generate too_deep_ary }
- assert_raises(JSON::NestingError) { JSON.generate too_deep_ary, :max_nesting => 19 }
- ok = JSON.generate too_deep_ary, :max_nesting => 20
- assert_equal too_deep, ok
- ok = JSON.generate too_deep_ary, :max_nesting => nil
- assert_equal too_deep, ok
- ok = JSON.generate too_deep_ary, :max_nesting => false
- assert_equal too_deep, ok
- ok = JSON.generate too_deep_ary, :max_nesting => 0
- assert_equal too_deep, ok
- end
-
- def test_symbolize_names
- assert_equal({ "foo" => "bar", "baz" => "quux" },
- JSON.parse('{"foo":"bar", "baz":"quux"}'))
- assert_equal({ :foo => "bar", :baz => "quux" },
- JSON.parse('{"foo":"bar", "baz":"quux"}', :symbolize_names => true))
- end
-
- def test_load_dump
- too_deep = '[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]'
- assert_equal too_deep, JSON.dump(eval(too_deep))
- assert_kind_of String, Marshal.dump(eval(too_deep))
- assert_raises(ArgumentError) { JSON.dump(eval(too_deep), 19) }
- assert_raises(ArgumentError) { Marshal.dump(eval(too_deep), 19) }
- assert_equal too_deep, JSON.dump(eval(too_deep), 20)
- assert_kind_of String, Marshal.dump(eval(too_deep), 20)
- output = StringIO.new
- JSON.dump(eval(too_deep), output)
- assert_equal too_deep, output.string
- output = StringIO.new
- JSON.dump(eval(too_deep), output, 20)
- assert_equal too_deep, output.string
- end
-
- def test_big_integers
- json1 = JSON([orig = (1 << 31) - 1])
- assert_equal orig, JSON[json1][0]
- json2 = JSON([orig = 1 << 31])
- assert_equal orig, JSON[json2][0]
- json3 = JSON([orig = (1 << 62) - 1])
- assert_equal orig, JSON[json3][0]
- json4 = JSON([orig = 1 << 62])
- assert_equal orig, JSON[json4][0]
- json5 = JSON([orig = 1 << 64])
- assert_equal orig, JSON[json5][0]
- end
-end
diff --git a/vendor/gems/json-1.5.1/tests/test_json_addition.rb b/vendor/gems/json-1.5.1/tests/test_json_addition.rb
deleted file mode 100755
index c8bfb41b8..000000000
--- a/vendor/gems/json-1.5.1/tests/test_json_addition.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding:utf-8 -*-
-
-require 'test/unit'
-require File.join(File.dirname(__FILE__), 'setup_variant')
-load 'json/add/core.rb'
-require 'date'
-
-class TC_JSONAddition < Test::Unit::TestCase
- include JSON
-
- class A
- def initialize(a)
- @a = a
- end
-
- attr_reader :a
-
- def ==(other)
- a == other.a
- end
-
- def self.json_create(object)
- new(*object['args'])
- end
-
- def to_json(*args)
- {
- 'json_class' => self.class.name,
- 'args' => [ @a ],
- }.to_json(*args)
- end
- end
-
- class A2 < A
- def to_json(*args)
- {
- 'json_class' => self.class.name,
- 'args' => [ @a ],
- }.to_json(*args)
- end
- end
-
- class B
- def self.json_creatable?
- false
- end
-
- def to_json(*args)
- {
- 'json_class' => self.class.name,
- }.to_json(*args)
- end
- end
-
- class C
- def self.json_creatable?
- false
- end
-
- def to_json(*args)
- {
- 'json_class' => 'TC_JSONAddition::Nix',
- }.to_json(*args)
- end
- end
-
- def test_extended_json
- a = A.new(666)
- assert A.json_creatable?
- json = generate(a)
- a_again = JSON.parse(json)
- assert_kind_of a.class, a_again
- assert_equal a, a_again
- end
-
- def test_extended_json_disabled
- a = A.new(666)
- assert A.json_creatable?
- json = generate(a)
- a_again = JSON.parse(json, :create_additions => true)
- assert_kind_of a.class, a_again
- assert_equal a, a_again
- a_hash = JSON.parse(json, :create_additions => false)
- assert_kind_of Hash, a_hash
- assert_equal(
- {"args"=>[666], "json_class"=>"TC_JSONAddition::A"}.sort_by { |k,| k },
- a_hash.sort_by { |k,| k }
- )
- end
-
- def test_extended_json_fail1
- b = B.new
- assert !B.json_creatable?
- json = generate(b)
- assert_equal({ "json_class"=>"TC_JSONAddition::B" }, JSON.parse(json))
- end
-
- def test_extended_json_fail2
- c = C.new
- assert !C.json_creatable?
- json = generate(c)
- assert_raises(ArgumentError, NameError) { JSON.parse(json) }
- end
-
- def test_raw_strings
- raw = ''
- raw.respond_to?(:encode!) and raw.encode!(Encoding::ASCII_8BIT)
- raw_array = []
- for i in 0..255
- raw << i
- raw_array << i
- end
- json = raw.to_json_raw
- json_raw_object = raw.to_json_raw_object
- hash = { 'json_class' => 'String', 'raw'=> raw_array }
- assert_equal hash, json_raw_object
- assert_match(/\A\{.*\}\Z/, json)
- assert_match(/"json_class":"String"/, json)
- assert_match(/"raw":\[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255\]/, json)
- raw_again = JSON.parse(json)
- assert_equal raw, raw_again
- end
-
- MyJsonStruct = Struct.new 'MyJsonStruct', :foo, :bar
-
- def test_core
- t = Time.now
- assert_equal t.inspect, JSON(JSON(t)).inspect
- d = Date.today
- assert_equal d, JSON(JSON(d))
- d = DateTime.civil(2007, 6, 14, 14, 57, 10, Rational(1, 12), 2299161)
- assert_equal d, JSON(JSON(d))
- assert_equal 1..10, JSON(JSON(1..10))
- assert_equal 1...10, JSON(JSON(1...10))
- assert_equal "a".."c", JSON(JSON("a".."c"))
- assert_equal "a"..."c", JSON(JSON("a"..."c"))
- s = MyJsonStruct.new 4711, 'foot'
- assert_equal s, JSON(JSON(s))
- struct = Struct.new :foo, :bar
- s = struct.new 4711, 'foot'
- assert_raises(JSONError) { JSON(s) }
- begin
- raise TypeError, "test me"
- rescue TypeError => e
- e_json = JSON.generate e
- e_again = JSON e_json
- assert_kind_of TypeError, e_again
- assert_equal e.message, e_again.message
- assert_equal e.backtrace, e_again.backtrace
- end
- assert_equal(/foo/, JSON(JSON(/foo/)))
- assert_equal(/foo/i, JSON(JSON(/foo/i)))
- end
-
- def test_utc_datetime
- now = Time.now
- d = DateTime.parse(now.to_s) # usual case
- assert_equal d, JSON.parse(d.to_json)
- d = DateTime.parse(now.utc.to_s) # of = 0
- assert_equal d, JSON.parse(d.to_json)
- d = DateTime.civil(2008, 6, 17, 11, 48, 32, Rational(1,24))
- assert_equal d, JSON.parse(d.to_json)
- d = DateTime.civil(2008, 6, 17, 11, 48, 32, Rational(12,24))
- assert_equal d, JSON.parse(d.to_json)
- end
-end
diff --git a/vendor/gems/json-1.5.1/tests/test_json_encoding.rb b/vendor/gems/json-1.5.1/tests/test_json_encoding.rb
deleted file mode 100644
index 7af5e63a7..000000000
--- a/vendor/gems/json-1.5.1/tests/test_json_encoding.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
-
-require 'test/unit'
-require File.join(File.dirname(__FILE__), 'setup_variant')
-
-class TC_JSONEncoding < Test::Unit::TestCase
- include JSON
-
- def setup
- @utf_8 = '["© ≠ €!"]'
- @parsed = [ "© ≠ €!" ]
- @generated = '["\u00a9 \u2260 \u20ac!"]'
- if String.method_defined?(:encode)
- @utf_16_data = [@parsed.first.encode('utf-16be', 'utf-8')]
- @utf_8_ascii_8bit = @utf_8.dup.force_encoding(Encoding::ASCII_8BIT)
- @utf_16be = @utf_8.encode('utf-16be', 'utf-8')
- @utf_16be_ascii_8bit = @utf_16be.dup.force_encoding(Encoding::ASCII_8BIT)
- @utf_16le = @utf_8.encode('utf-16le', 'utf-8')
- @utf_16le_ascii_8bit = @utf_16le.dup.force_encoding(Encoding::ASCII_8BIT)
- @utf_32be = @utf_8.encode('utf-32be', 'utf-8')
- @utf_32be_ascii_8bit = @utf_32be.dup.force_encoding(Encoding::ASCII_8BIT)
- @utf_32le = @utf_8.encode('utf-32le', 'utf-8')
- @utf_32le_ascii_8bit = @utf_32le.dup.force_encoding(Encoding::ASCII_8BIT)
- else
- require 'iconv'
- @utf_16_data = Iconv.iconv('utf-16be', 'utf-8', @parsed.first)
- @utf_8_ascii_8bit = @utf_8.dup
- @utf_16be, = Iconv.iconv('utf-16be', 'utf-8', @utf_8)
- @utf_16be_ascii_8bit = @utf_16be.dup
- @utf_16le, = Iconv.iconv('utf-16le', 'utf-8', @utf_8)
- @utf_16le_ascii_8bit = @utf_16le.dup
- @utf_32be, = Iconv.iconv('utf-32be', 'utf-8', @utf_8)
- @utf_32be_ascii_8bit = @utf_32be.dup
- @utf_32le, = Iconv.iconv('utf-32le', 'utf-8', @utf_8)
- @utf_32le_ascii_8bit = @utf_32le.dup
- end
- end
-
- def test_parse
- assert_equal @parsed, JSON.parse(@utf_8)
- assert_equal @parsed, JSON.parse(@utf_16be)
- assert_equal @parsed, JSON.parse(@utf_16le)
- assert_equal @parsed, JSON.parse(@utf_32be)
- assert_equal @parsed, JSON.parse(@utf_32le)
- end
-
- def test_parse_ascii_8bit
- assert_equal @parsed, JSON.parse(@utf_8_ascii_8bit)
- assert_equal @parsed, JSON.parse(@utf_16be_ascii_8bit)
- assert_equal @parsed, JSON.parse(@utf_16le_ascii_8bit)
- assert_equal @parsed, JSON.parse(@utf_32be_ascii_8bit)
- assert_equal @parsed, JSON.parse(@utf_32le_ascii_8bit)
- end
-
- def test_generate
- assert_equal @generated, JSON.generate(@parsed, :ascii_only => true)
- if defined?(::Encoding)
- assert_equal @generated, JSON.generate(@utf_16_data, :ascii_only => true)
- else
- # XXX checking of correct utf8 data is not as strict (yet?) without :ascii_only
- assert_raises(JSON::GeneratorError) { JSON.generate(@utf_16_data, :ascii_only => true) }
- end
- end
-end
diff --git a/vendor/gems/json-1.5.1/tests/test_json_fixtures.rb b/vendor/gems/json-1.5.1/tests/test_json_fixtures.rb
deleted file mode 100755
index e9df8f5b1..000000000
--- a/vendor/gems/json-1.5.1/tests/test_json_fixtures.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
-
-require 'test/unit'
-require File.join(File.dirname(__FILE__), 'setup_variant')
-
-class TC_JSONFixtures < Test::Unit::TestCase
- def setup
- fixtures = File.join(File.dirname(__FILE__), 'fixtures/*.json')
- passed, failed = Dir[fixtures].partition { |f| f['pass'] }
- @passed = passed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort
- @failed = failed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort
- end
-
- def test_passing
- for name, source in @passed
- begin
- assert JSON.parse(source),
- "Did not pass for fixture '#{name}': #{source.inspect}"
- rescue => e
- warn "\nCaught #{e.class}(#{e}) for fixture '#{name}': #{source.inspect}\n#{e.backtrace * "\n"}"
- raise e
- end
- end
- end
-
- def test_failing
- for name, source in @failed
- assert_raises(JSON::ParserError, JSON::NestingError,
- "Did not fail for fixture '#{name}': #{source.inspect}") do
- JSON.parse(source)
- end
- end
- end
-end
diff --git a/vendor/gems/json-1.5.1/tests/test_json_generate.rb b/vendor/gems/json-1.5.1/tests/test_json_generate.rb
deleted file mode 100755
index e6219df0f..000000000
--- a/vendor/gems/json-1.5.1/tests/test_json_generate.rb
+++ /dev/null
@@ -1,179 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
-
-require 'test/unit'
-require File.join(File.dirname(__FILE__), 'setup_variant')
-
-class TC_JSONGenerate < Test::Unit::TestCase
- include JSON
-
- def setup
- @hash = {
- 'a' => 2,
- 'b' => 3.141,
- 'c' => 'c',
- 'd' => [ 1, "b", 3.14 ],
- 'e' => { 'foo' => 'bar' },
- 'g' => "\"\0\037",
- 'h' => 1000.0,
- 'i' => 0.001
- }
- @json2 = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},' +
- '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}'
- @json3 = <<'EOT'.chomp
-{
- "a": 2,
- "b": 3.141,
- "c": "c",
- "d": [
- 1,
- "b",
- 3.14
- ],
- "e": {
- "foo": "bar"
- },
- "g": "\"\u0000\u001f",
- "h": 1000.0,
- "i": 0.001
-}
-EOT
- end
-
- def test_generate
- json = generate(@hash)
- assert_equal(JSON.parse(@json2), JSON.parse(json))
- parsed_json = parse(json)
- assert_equal(@hash, parsed_json)
- json = generate({1=>2})
- assert_equal('{"1":2}', json)
- parsed_json = parse(json)
- assert_equal({"1"=>2}, parsed_json)
- assert_raise(GeneratorError) { generate(666) }
- end
-
- def test_generate_pretty
- json = pretty_generate(@hash)
- assert_equal(JSON.parse(@json3), JSON.parse(json))
- parsed_json = parse(json)
- assert_equal(@hash, parsed_json)
- json = pretty_generate({1=>2})
- assert_equal(<<'EOT'.chomp, json)
-{
- "1": 2
-}
-EOT
- parsed_json = parse(json)
- assert_equal({"1"=>2}, parsed_json)
- assert_raise(GeneratorError) { pretty_generate(666) }
- end
-
- def test_fast_generate
- json = fast_generate(@hash)
- assert_equal(JSON.parse(@json2), JSON.parse(json))
- parsed_json = parse(json)
- assert_equal(@hash, parsed_json)
- json = fast_generate({1=>2})
- assert_equal('{"1":2}', json)
- parsed_json = parse(json)
- assert_equal({"1"=>2}, parsed_json)
- assert_raise(GeneratorError) { fast_generate(666) }
- end
-
-
-
- def test_states
- json = generate({1=>2}, nil)
- assert_equal('{"1":2}', json)
- s = JSON.state.new
- assert s.check_circular?
- assert s[:check_circular?]
- h = { 1=>2 }
- h[3] = h
- assert_raises(JSON::NestingError) { generate(h) }
- assert_raises(JSON::NestingError) { generate(h, s) }
- s = JSON.state.new
- a = [ 1, 2 ]
- a << a
- assert_raises(JSON::NestingError) { generate(a, s) }
- assert s.check_circular?
- assert s[:check_circular?]
- end
-
- def test_pretty_state
- state = PRETTY_STATE_PROTOTYPE.dup
- assert_equal({
- :allow_nan => false,
- :array_nl => "\n",
- :ascii_only => false,
- :depth => 0,
- :indent => " ",
- :max_nesting => 19,
- :object_nl => "\n",
- :space => " ",
- :space_before => "",
- }.sort_by { |n,| n.to_s }, state.to_h.sort_by { |n,| n.to_s })
- end
-
- def test_safe_state
- state = SAFE_STATE_PROTOTYPE.dup
- assert_equal({
- :allow_nan => false,
- :array_nl => "",
- :ascii_only => false,
- :depth => 0,
- :indent => "",
- :max_nesting => 19,
- :object_nl => "",
- :space => "",
- :space_before => "",
- }.sort_by { |n,| n.to_s }, state.to_h.sort_by { |n,| n.to_s })
- end
-
- def test_fast_state
- state = FAST_STATE_PROTOTYPE.dup
- assert_equal({
- :allow_nan => false,
- :array_nl => "",
- :ascii_only => false,
- :depth => 0,
- :indent => "",
- :max_nesting => 0,
- :object_nl => "",
- :space => "",
- :space_before => "",
- }.sort_by { |n,| n.to_s }, state.to_h.sort_by { |n,| n.to_s })
- end
-
- def test_allow_nan
- assert_raises(GeneratorError) { generate([JSON::NaN]) }
- assert_equal '[NaN]', generate([JSON::NaN], :allow_nan => true)
- assert_raises(GeneratorError) { fast_generate([JSON::NaN]) }
- assert_raises(GeneratorError) { pretty_generate([JSON::NaN]) }
- assert_equal "[\n NaN\n]", pretty_generate([JSON::NaN], :allow_nan => true)
- assert_raises(GeneratorError) { generate([JSON::Infinity]) }
- assert_equal '[Infinity]', generate([JSON::Infinity], :allow_nan => true)
- assert_raises(GeneratorError) { fast_generate([JSON::Infinity]) }
- assert_raises(GeneratorError) { pretty_generate([JSON::Infinity]) }
- assert_equal "[\n Infinity\n]", pretty_generate([JSON::Infinity], :allow_nan => true)
- assert_raises(GeneratorError) { generate([JSON::MinusInfinity]) }
- assert_equal '[-Infinity]', generate([JSON::MinusInfinity], :allow_nan => true)
- assert_raises(GeneratorError) { fast_generate([JSON::MinusInfinity]) }
- assert_raises(GeneratorError) { pretty_generate([JSON::MinusInfinity]) }
- assert_equal "[\n -Infinity\n]", pretty_generate([JSON::MinusInfinity], :allow_nan => true)
- end
-
- def test_depth
- ary = []; ary << ary
- assert_equal 0, JSON::SAFE_STATE_PROTOTYPE.depth
- assert_raises(JSON::NestingError) { JSON.generate(ary) }
- assert_equal 0, JSON::SAFE_STATE_PROTOTYPE.depth
- assert_equal 0, JSON::PRETTY_STATE_PROTOTYPE.depth
- assert_raises(JSON::NestingError) { JSON.pretty_generate(ary) }
- assert_equal 0, JSON::PRETTY_STATE_PROTOTYPE.depth
- s = JSON.state.new
- assert_equal 0, s.depth
- assert_raises(JSON::NestingError) { ary.to_json(s) }
- assert_equal 19, s.depth
- end
-end
diff --git a/vendor/gems/json-1.5.1/tests/test_json_string_matching.rb b/vendor/gems/json-1.5.1/tests/test_json_string_matching.rb
deleted file mode 100644
index df26a68a4..000000000
--- a/vendor/gems/json-1.5.1/tests/test_json_string_matching.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
-
-require 'test/unit'
-require File.join(File.dirname(__FILE__), 'setup_variant')
-require 'stringio'
-require 'time'
-
-class TestJsonStringMatching < Test::Unit::TestCase
- include JSON
-
- class TestTime < ::Time
- def self.json_create(string)
- Time.parse(string)
- end
-
- def to_json(*)
- %{"#{strftime('%FT%T%z')}"}
- end
-
- def ==(other)
- to_i == other.to_i
- end
- end
-
- def test_match_date
- t = TestTime.new
- t_json = [ t ].to_json
- assert_equal [ t ],
- JSON.parse(t_json,
- :match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime })
- assert_equal [ t.strftime('%FT%T%z') ],
- JSON.parse(t_json,
- :match_string => { /\A\d{3}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime })
- assert_equal [ t.strftime('%FT%T%z') ],
- JSON.parse(t_json,
- :match_string => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime },
- :create_additions => false)
- end
-end
diff --git a/vendor/gems/json-1.5.1/tests/test_json_unicode.rb b/vendor/gems/json-1.5.1/tests/test_json_unicode.rb
deleted file mode 100755
index ace56cae3..000000000
--- a/vendor/gems/json-1.5.1/tests/test_json_unicode.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
-
-require 'test/unit'
-require File.join(File.dirname(__FILE__), 'setup_variant')
-
-class TC_JSONUnicode < Test::Unit::TestCase
- include JSON
-
- def test_unicode
- assert_equal '""', ''.to_json
- assert_equal '"\\b"', "\b".to_json
- assert_equal '"\u0001"', 0x1.chr.to_json
- assert_equal '"\u001f"', 0x1f.chr.to_json
- assert_equal '" "', ' '.to_json
- assert_equal "\"#{0x7f.chr}\"", 0x7f.chr.to_json
- utf8 = [ "© ≠ €! \01" ]
- json = '["© ≠ €! \u0001"]'
- assert_equal json, utf8.to_json(:ascii_only => false)
- assert_equal utf8, parse(json)
- json = '["\u00a9 \u2260 \u20ac! \u0001"]'
- assert_equal json, utf8.to_json(:ascii_only => true)
- assert_equal utf8, parse(json)
- utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"]
- json = "[\"\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212\"]"
- assert_equal utf8, parse(json)
- assert_equal json, utf8.to_json(:ascii_only => false)
- utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"]
- assert_equal utf8, parse(json)
- json = "[\"\\u3042\\u3044\\u3046\\u3048\\u304a\"]"
- assert_equal json, utf8.to_json(:ascii_only => true)
- assert_equal utf8, parse(json)
- utf8 = ['საქართველო']
- json = '["საქართველო"]'
- assert_equal json, utf8.to_json(:ascii_only => false)
- json = "[\"\\u10e1\\u10d0\\u10e5\\u10d0\\u10e0\\u10d7\\u10d5\\u10d4\\u10da\\u10dd\"]"
- assert_equal json, utf8.to_json(:ascii_only => true)
- assert_equal utf8, parse(json)
- assert_equal '["Ã"]', JSON.generate(["Ã"], :ascii_only => false)
- assert_equal '["\\u00c3"]', JSON.generate(["Ã"], :ascii_only => true)
- assert_equal ["€"], JSON.parse('["\u20ac"]')
- utf8 = ["\xf0\xa0\x80\x81"]
- json = "[\"\xf0\xa0\x80\x81\"]"
- assert_equal json, JSON.generate(utf8, :ascii_only => false)
- assert_equal utf8, JSON.parse(json)
- json = '["\ud840\udc01"]'
- assert_equal json, JSON.generate(utf8, :ascii_only => true)
- assert_equal utf8, JSON.parse(json)
- end
-
- def test_chars
- (0..0x7f).each do |i|
- json = '["\u%04x"]' % i
- if RUBY_VERSION >= "1.9."
- i = i.chr
- end
- assert_equal i, JSON.parse(json).first[0]
- if i == ?\b
- generated = JSON.generate(["" << i])
- assert '["\b"]' == generated || '["\10"]' == generated
- elsif [?\n, ?\r, ?\t, ?\f].include?(i)
- assert_equal '[' << ('' << i).dump << ']', JSON.generate(["" << i])
- elsif i.chr < 0x20.chr
- assert_equal json, JSON.generate(["" << i])
- end
- end
- assert_raise(JSON::GeneratorError) do
- JSON.generate(["\x80"], :ascii_only => true)
- end
- assert_equal "\302\200", JSON.parse('["\u0080"]').first
- end
-end
diff --git a/vendor/gems/json-1.5.1/tools/fuzz.rb b/vendor/gems/json-1.5.1/tools/fuzz.rb
deleted file mode 100755
index 4dacd9584..000000000
--- a/vendor/gems/json-1.5.1/tools/fuzz.rb
+++ /dev/null
@@ -1,139 +0,0 @@
-require 'json'
-
-require 'iconv'
-ISO_8859_1_TO_UTF8 = Iconv.new('utf-8', 'iso-8859-15')
-class ::String
- def to_utf8
- ISO_8859_1_TO_UTF8.iconv self
- end
-end
-
-class Fuzzer
- def initialize(n, freqs = {})
- sum = freqs.inject(0.0) { |s, x| s + x.last }
- freqs.each_key { |x| freqs[x] /= sum }
- s = 0.0
- freqs.each_key do |x|
- freqs[x] = s .. (s + t = freqs[x])
- s += t
- end
- @freqs = freqs
- @n = n
- @alpha = (0..0xff).to_a
- end
-
- def random_string
- s = ''
- 30.times { s << @alpha[rand(@alpha.size)] }
- s.to_utf8
- end
-
- def pick
- r = rand
- found = @freqs.find { |k, f| f.include? rand }
- found && found.first
- end
-
- def make_pick
- k = pick
- case
- when k == Hash, k == Array
- k.new
- when k == true, k == false, k == nil
- k
- when k == String
- random_string
- when k == Fixnum
- rand(2 ** 30) - 2 ** 29
- when k == Bignum
- rand(2 ** 70) - 2 ** 69
- end
- end
-
- def fuzz(current = nil)
- if @n > 0
- case current
- when nil
- @n -= 1
- current = fuzz [ Hash, Array ][rand(2)].new
- when Array
- while @n > 0
- @n -= 1
- current << case p = make_pick
- when Array, Hash
- fuzz(p)
- else
- p
- end
- end
- when Hash
- while @n > 0
- @n -= 1
- current[random_string] = case p = make_pick
- when Array, Hash
- fuzz(p)
- else
- p
- end
- end
- end
- end
- current
- end
-end
-
-class MyState < JSON.state
- WS = " \r\t\n"
-
- def initialize
- super(
- :indent => make_spaces,
- :space => make_spaces,
- :space_before => make_spaces,
- :object_nl => make_spaces,
- :array_nl => make_spaces,
- :max_nesting => false
- )
- end
-
- def make_spaces
- s = ''
- rand(1).times { s << WS[rand(WS.size)] }
- s
- end
-end
-
-n = (ARGV.shift || 500).to_i
-loop do
- fuzzer = Fuzzer.new(n,
- Hash => 25,
- Array => 25,
- String => 10,
- Fixnum => 10,
- Bignum => 10,
- nil => 5,
- true => 5,
- false => 5
- )
- o1 = fuzzer.fuzz
- json = JSON.generate o1, MyState.new
- if $DEBUG
- puts "-" * 80
- puts json, json.size
- else
- puts json.size
- end
- begin
- o2 = JSON.parse(json, :max_nesting => false)
- rescue JSON::ParserError => e
- puts "Caught #{e.class}: #{e.message}\n#{e.backtrace * "\n"}"
- puts "o1 = #{o1.inspect}", "json = #{json}", "json_str = #{json.inspect}"
- puts "locals = #{local_variables.inspect}"
- exit
- end
- if o1 != o2
- puts "mismatch", "o1 = #{o1.inspect}", "o2 = #{o2.inspect}",
- "json = #{json}", "json_str = #{json.inspect}"
- puts "locals = #{local_variables.inspect}"
- end
-end
diff --git a/vendor/gems/json-1.5.1/tools/server.rb b/vendor/gems/json-1.5.1/tools/server.rb
deleted file mode 100755
index 084377fa9..000000000
--- a/vendor/gems/json-1.5.1/tools/server.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'webrick'
-include WEBrick
-$:.unshift 'ext'
-$:.unshift 'lib'
-require 'json'
-
-class JSONServlet < HTTPServlet::AbstractServlet
- @@count = 1
-
- def do_GET(req, res)
- obj = {
- "TIME" => Time.now.strftime("%FT%T"),
- "foo" => "Bär",
- "bar" => "© ≠ €!",
- 'a' => 2,
- 'b' => 3.141,
- 'COUNT' => @@count += 1,
- 'c' => 'c',
- 'd' => [ 1, "b", 3.14 ],
- 'e' => { 'foo' => 'bar' },
- 'g' => "松本行弘",
- 'h' => 1000.0,
- 'i' => 0.001,
- 'j' => "\xf0\xa0\x80\x81",
- }
- res.body = JSON.generate obj
- res['Content-Type'] = "application/json"
- end
-end
-
-def create_server(err, dir, port)
- dir = File.expand_path(dir)
- err.puts "Surf to:", "http://#{Socket.gethostname}:#{port}"
-
- s = HTTPServer.new(
- :Port => port,
- :DocumentRoot => dir,
- :Logger => WEBrick::Log.new(err),
- :AccessLog => [
- [ err, WEBrick::AccessLog::COMMON_LOG_FORMAT ],
- [ err, WEBrick::AccessLog::REFERER_LOG_FORMAT ],
- [ err, WEBrick::AccessLog::AGENT_LOG_FORMAT ]
- ]
- )
- s.mount("/json", JSONServlet)
- s
-end
-
-default_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'data'))
-dir = ARGV.shift || default_dir
-port = (ARGV.shift || 6666).to_i
-s = create_server(STDERR, dir, 6666)
-t = Thread.new { s.start }
-trap(:INT) do
- s.shutdown
- t.join
- exit
-end
-sleep
diff --git a/vendor/gems/locale-2.0.5/.specification b/vendor/gems/locale-2.0.5/.specification
deleted file mode 100644
index 0150358f4..000000000
--- a/vendor/gems/locale-2.0.5/.specification
+++ /dev/null
@@ -1,112 +0,0 @@
---- !ruby/object:Gem::Specification
-name: locale
-version: !ruby/object:Gem::Version
- hash: 5
- prerelease:
- segments:
- - 2
- - 0
- - 5
- version: 2.0.5
-platform: ruby
-authors:
-- Masao Mutoh
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2009-11-13 00:00:00 +00:00
-default_executable:
-dependencies: []
-
-description: " Ruby-Locale is the pure ruby library which provides basic APIs for localization.\n"
-email: mutomasa at gmail.com
-executables: []
-
-extensions: []
-
-extra_rdoc_files: []
-
-files:
-- lib/locale.rb
-- lib/locale/tag/posix.rb
-- lib/locale/tag/irregular.rb
-- lib/locale/tag/rfc.rb
-- lib/locale/tag/simple.rb
-- lib/locale/tag/cldr.rb
-- lib/locale/tag/common.rb
-- lib/locale/taglist.rb
-- lib/locale/driver/posix.rb
-- lib/locale/driver/win32.rb
-- lib/locale/driver/win32_table.rb
-- lib/locale/driver/jruby.rb
-- lib/locale/driver/env.rb
-- lib/locale/driver/cgi.rb
-- lib/locale/util/memoizable.rb
-- lib/locale/data/regions.tab.gz
-- lib/locale/data/languages.tab.gz
-- lib/locale/info/region.rb
-- lib/locale/info/language.rb
-- lib/locale/version.rb
-- lib/locale/info.rb
-- lib/locale/tag.rb
-- setup.rb
-- test/test_tag.rb
-- test/test_memoizable.rb
-- test/test_driver_jruby.rb
-- test/test_info.rb
-- test/test_driver_win32.rb
-- test/test_detect_general.rb
-- test/test_taglist.rb
-- test/test_detect_cgi.rb
-- test/test_thread.rb
-- Rakefile
-- README.rdoc
-- ChangeLog
-- COPYING
-- samples/rack/hello_rack.ru
-- samples/rack/hello_rack.rb
-- samples/rack/README
-- samples/sample_info.rb
-- samples/cgi/http.rb
-- samples/cgi/locale.css
-- samples/cgi/index.cgi
-- samples/cgi/README
-- samples/cgi/cookie.cgi
-- samples/sample_1.rb
-has_rdoc: true
-homepage: http://locale.rubyforge.org/
-licenses: []
-
-post_install_message:
-rdoc_options: []
-
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: locale
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: Ruby-Locale is the pure ruby library which provides basic APIs for localization.
-test_files: []
-
diff --git a/vendor/gems/locale-2.0.5/COPYING b/vendor/gems/locale-2.0.5/COPYING
deleted file mode 100644
index 9043404a8..000000000
--- a/vendor/gems/locale-2.0.5/COPYING
+++ /dev/null
@@ -1,56 +0,0 @@
-Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
-You can redistribute it and/or modify it under either the terms of the GPL
-version 2 (see the file GPL), or the conditions below:
-
- 1. You may make and give away verbatim copies of the source form of the
- software without restriction, provided that you duplicate all of the
- original copyright notices and associated disclaimers.
-
- 2. You may modify your copy of the software in any way, provided that
- you do at least ONE of the following:
-
- a) place your modifications in the Public Domain or otherwise
- make them Freely Available, such as by posting said
- modifications to Usenet or an equivalent medium, or by allowing
- the author to include your modifications in the software.
-
- b) use the modified software only within your corporation or
- organization.
-
- c) give non-standard binaries non-standard names, with
- instructions on where to get the original software distribution.
-
- d) make other distribution arrangements with the author.
-
- 3. You may distribute the software in object code or binary form,
- provided that you do at least ONE of the following:
-
- a) distribute the binaries and library files of the software,
- together with instructions (in the manual page or equivalent)
- on where to get the original distribution.
-
- b) accompany the distribution with the machine-readable source of
- the software.
-
- c) give non-standard binaries non-standard names, with
- instructions on where to get the original software distribution.
-
- d) make other distribution arrangements with the author.
-
- 4. You may modify and include the part of the software into any other
- software (possibly commercial). But some files in the distribution
- are not written by the author, so that they are not under these terms.
-
- For the list of those files and their copying conditions, see the
- file LEGAL.
-
- 5. The scripts and library files supplied as input to or produced as
- output from the software do not automatically fall under the
- copyright of the software, but belong to whomever generated them,
- and may be sold commercially, and may be aggregated with this
- software.
-
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
diff --git a/vendor/gems/locale-2.0.5/ChangeLog b/vendor/gems/locale-2.0.5/ChangeLog
deleted file mode 100644
index 851da0ccc..000000000
--- a/vendor/gems/locale-2.0.5/ChangeLog
+++ /dev/null
@@ -1,157 +0,0 @@
-= locale-2.0.5 (2009-11-11)
- * Update license information(obiviously Ruby's and LGPL).
- [Pointed out by Masateru Yoshikawa]
-
-= locale-2.0.4 (2009-05-22)
- * Enhance Win32 support. [Reported by Dice]
- * Enhance JRuby support
- * Fixed a waring with ruby -d option.
- * Update version.
-
-= locale-2.0.3 (2009-05-09)
- * Update version.
-
-= locale-2.0.2 (2009-05-04)
- * Add Locale.set_app_language_tags to restrict the target locales whole the application. [Suggested by Vladimir Dobriakov]
- * locale/driver/cgi.rb: Add Locale.set_request.
- * sample/rack: Add a sample for rack.
- * Improve documents.
- * Fix bugs
- * Illegular -> Irregular [by Denis Defreyne]
- * test_thread.rb doesn't work under the environment where LC_ALL is set .
- [Reported by Hans de Graaff (Bug#24831)]
- * Fixed Locale::Drive::CGI.charset don't work when accept_charset is nil.
- [Reported by hallelujah (Bug#25583)]
- * Fixed Locale::Drive::Win32.charset don't work.
-
-Thanks to:
- Denis Defreyne, Hans de Graaff, hallelujah, Vladimir Dobriakov
-
-= locale-2.0.1 (2009-04-18)
- * Locale::Tag::Common#extensions are shown order by the keys.[reported by
- Dan Coutu]
- * Enhance to support ruby-1.9.x [by OZAWA Sakuro]
- * Reimplement memoize to be able to freeze or dup the object.
- * Improve Locale.candidates.
-
- Thanks to:
- Dan Coutu, OZAWA Sakuro
-
-= locale-2.0.0 (2009-03-21)
- * Support Rack.
- * move to github from svn.
-
-== Older format.
-2008-12-04 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/util/memoizable.rb: Modified.
-
-2008-12-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/tag/*.rb: Add attribute writer to subtags.
- * lib/locale/tag/*.rb: Remove tag attributes.
- * lib/locale/tag/common.rb: Variant accept 3 or later size because of RFC3066 compatibility.
- * test/test_tag.rb: Add tests.
-
-2008-12-01 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/driver/win32.rb: Work on Win32 again.
-
-2008-11-22 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale.rb: Rename Locale.current_language_tags to Locale.candidates.
- Locale.current_charset to Locale.charset.
-
-2008-11-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/tag/simple.rb: Add Locale::Tag::Simple#to_str.
- * lib/locale.rb: Remove set_current_charset. current_charset becomes read only.
-
-2008-11-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/driver/cgi.rb: Accept plural lang values(query string and
- cookies).
-
-2008-11-19 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale.rb: Locale.current_language_tags returns Locale::TagList.
- * lib/tag/*.rb: Add #candidates method.
-
-2008-11-12 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/util/meoizable.rb: Added.
-
-2008-11-03 Masao Mutoh <mutoh@highway.ne.jp>
-
- * README: Updated.
- * Rakefile: Add package tasks. Revise RDoc task.
- * lib/locale/driver/win32.rb, win32_table.rb, jruby.rb: Work on Windows.
-
-2008-10-29 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/cgi/*.rb: Added CGI sample (Based on Ruby-GetText sample).
-
-2008-10-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * samples/sample1.rb: Added.
-
-2008-10-07 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/*.rb: Support Ruby 1.9.
-
-2008-10-01 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/*.rb: Support JRuby. Tested on JRuby 1.1.4.
-
-2008-09-26 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/driver/*: Apply tags.
- * lib/locale/taglist.rb: Added. An array of tags. Also, it behaves
- as the first tag in the array.
- * test/test_detect_general.rb: Added.
-
-2008-09-25 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/tag.rb, lib/locale/tag/*: Added. Support rfc4646/posix/cldr
- language tags powerfully.
- * lib/locale/object.rb: Removed(Moved to tags).
- * test/test_tag.rb: Added.
-
-2008-09-21 Masao Mutoh <mutoh@highway.ne.jp>
-
- * test/*: Added.
-
-2008-09-02 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale.rb: Added Locale.current_language_tags which returns
- language tags strings as an Array order by priority.
-
-2008-08-20 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale/info/language.rb, region.rb: Move from
- lib/locale/language.rb, country.rb.
-
-2008-08-18 Masao Mutoh <mutoh@highway.ne.jp>
-
- * lib/locale.rb: Remove Locale.codeset, .charset, .current_charset.
- Use Locale.get.charset instead.
- Add Locale.current_preferable_locales, supported_locales,
- .set_supported_locales
-
-2008-08-10 Masao Mutoh <mutoh@highway.ne.jp>
-
- * Separates this locale library from Ruby-GetText-Package-1.92.0.
- * lib/locale/country.rb, language.rb: Merge locale-0.1 by Brian Pontarelli.
- Reimplement Locale::Language and Locale::Country. All APIs don't have
- backward compatibility from locale-0.1.
- * lib/locale/data/countries.tab.gz, languages.tab.gz: Merge from locale-0.1.
- * lib/locale/base.rb, win32.rb, win32_table.rb, posix.rb, jruby.rb, cgi.rb:
- Move to lib/locale/driver/.
- These classes detect the user/system locale (the language tag or
- the charset) from the environment variables or the system APIs
- (Win32/Java). Support POSIX, Win32, JRuby, CGI and ENV.
-
- * lib/locale.rb: Add Locale.init.
- * lib/locale/info.rb: Added.
- * lib/locale.rb: Locale.set_current becomes thread safe. Each thread has
- a current locale.
diff --git a/vendor/gems/locale-2.0.5/README.rdoc b/vendor/gems/locale-2.0.5/README.rdoc
deleted file mode 100644
index 381032f7e..000000000
--- a/vendor/gems/locale-2.0.5/README.rdoc
+++ /dev/null
@@ -1,111 +0,0 @@
-= Ruby-Locale
-
-Ruby-Locale is the pure ruby library which provides basic and general purpose
-APIs for localization.
-It aims to support all environments which ruby works and all kind of programs
-(GUI, WWW, library, etc), and becomes the hub of other i18n/l10n libs/apps to
-handle major locale ID standards.
-
-* Manage Locale ID(Language Tag)
- * Each thread has a Locale ID.
- * POSIX, CLDR, IETF(RFC4646, 3066(BCP47)), Win32 and Java language tags
- and convert the tag string to each other.
- * Auto detect Locale ID.
- POSIX(Unix/Linux/*BSD), Win32, JRuby, CGI.
-
-* Resources
- * ISO 639-3 languages
- * ISO 3166 region(countries).
-
-* Support Ruby 1.8.7, Ruby 1.9.1, JRuby 1.1.4. Tested on Win32 and Linux.
-
-== Website
-* http://www.yotabanana.com/hiki/ruby-locale.html
-* http://locale.rubyforge.org/
-
-== Requirements
-* Ruby-1.8.7 or later <http://www.ruby-lang.org/ja/>
-* JRuby-1.1.4 or later <http://jruby.codehaus.org/>
-
-== Install
-* gem:
- ($ su)
- # gem install locale
-
-* tar-ball:
- Download tar-ball from http://rubyforge.org/projects/locale/
- De-Compress archive and enter its top directory.
- Then type:
- ($ su)
- # ruby setup.rb
-
-== The simplest usage
-
- require 'rubygems'
- require 'locale'
-
- p Locale.candidates
-
-== APIs
-The most important APIs are defined in Locale module.
-
-* Locale.candidates - Returns the current locale candidates.
-* Locale.current= - Sets the current locale(in a thread).
-* Locale.default= - Sets the default locale(in the whole program).
-* Locale.set_app_language_tags - Sets the locale that is supported by the App.
-
-== License
-This program is licenced under the same licence as Ruby(See COPYING) or
-LGPL(Lesser General Public License: http://www.gnu.org/licenses/lgpl-3.0.txt).
-
-* locale/language.rb, locale/region.rb,
- locale/data/language.tab.gz, locale/data/region.tab.gz:
- * Copyright (C) 2006 Brian Pontarelli, Antonio Terceiro
- * Copyright (C) 2008,2009 Masao Mutoh <mutomasa at gmail.com>
-
-* setup.rb version 3.4.1
- * Copyright (C) 2000-2005 Minero Aoki <aamine at loveruby.net>
- * This file is released under LGPL. See the top of the setup.rb.
-
-* Others(Some files are separated from Ruby-GetText-Package-1.92.0)
- * Copyright (C) 2008,2009 Masao Mutoh <mutoh at highwhay.ne.jp>
-
-== References
-=== Other libraries
-* langtag-0.1.0
- * by Martin Dürst <http://rubyforge.org/projects/langtag/>
-
-* memoizable.rb
- * from ActiveSupport-2.2.0 <http://rubyforge.org/projects/activesupport/>
-
-* Ruby-GetText-Package-1.92.0
- * by Masao Mutoh <http://www.yotabanana.com/hiki/ruby-gettext.html>
-
-=== Documents
-* The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition
- Internationalization Variables
- <http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html>
-
-* GNU `gettext' utilities - Setting the Locale through Environment Variables
- <http://www.gnu.org/software/gettext/manual/gettext.html#Setting-the-POSIX-Locale>
-
-* BCP47 / RFC4646, RFC3066 - Tags for Identifying Languages (Keep RFC3066 compatibility)
- <http://www.ietf.org/rfc/rfc4646.txt>
- <http://www.ietf.org/rfc/rfc3066.txt>
-
-* Unicode Locale Data Markup Language (LDML) 1.6.1
- Unicode Language and Locale Identifiers
- <http://www.unicode.org/reports/tr35/tr35-11.html#Unicode_Language_and_Locale_Identifiers>
-
-* JDK 6 Documentation - Java Supported Locales
- <http://java.sun.com/javase/6/docs/technotes/guides/intl/locale.doc.html>
-
-* Microsoft Developer Network - Locales and Languages
- <http://msdn.microsoft.com/en-us/library/ms776264(VS.85).aspx>
-
-* ISO 639
-
-* ISO 3166
-
-== Maintainer
-Masao Mutoh <mutomasa at gmail.com>
diff --git a/vendor/gems/locale-2.0.5/Rakefile b/vendor/gems/locale-2.0.5/Rakefile
deleted file mode 100644
index 28fae03f1..000000000
--- a/vendor/gems/locale-2.0.5/Rakefile
+++ /dev/null
@@ -1,82 +0,0 @@
-$:.unshift "./lib"
-
-require 'rake'
-require 'rake/testtask'
-require 'rake/rdoctask'
-require 'rake/packagetask'
-require 'rake/gempackagetask'
-
-require 'locale/version'
-
-#desc "Default Task"
-#task :default => [ :test ]
-
-PKG_VERSION = Locale::VERSION
-
-# Run the unit tests
-task :test do
- Dir.glob("test/test_*.rb").each do |v|
- ruby "-Ilib #{v}"
- end
-end
-
-Rake::RDocTask.new { |rdoc|
- begin
- allison = `allison --path`.chop
- rescue Exception
- allison = ""
- end
- rdoc.rdoc_dir = 'doc'
- rdoc.title = "Ruby-Locale library"
- rdoc.options << "--line-numbers" << "--inline-source" <<
- "--accessor" << "cattr_accessor=object" << "--charset" << "utf-8"
- rdoc.rdoc_files.include('README.rdoc')
- rdoc.rdoc_files.include('ChangeLog')
- rdoc.rdoc_files.add('lib')
- rdoc.template = allison if allison.size > 0
-}
-
-desc "Create gem and tar.gz"
-spec = Gem::Specification.new do |s|
- s.name = 'locale'
- s.version = PKG_VERSION
- s.summary = 'Ruby-Locale is the pure ruby library which provides basic APIs for localization.'
- s.author = 'Masao Mutoh'
- s.email = 'mutomasa at gmail.com'
- s.homepage = 'http://locale.rubyforge.org/'
- s.rubyforge_project = "locale"
- s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
- s.require_path = 'lib'
- s.bindir = 'bin'
- s.has_rdoc = true
- s.description = <<-EOF
- Ruby-Locale is the pure ruby library which provides basic APIs for localization.
- EOF
-end
-
-unless RUBY_PLATFORM =~ /win32/
- Rake::PackageTask.new("ruby-locale", PKG_VERSION) do |o|
- o.package_files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
- o.need_tar_gz = true
- o.need_zip = false
- end
-end
-
-Rake::GemPackageTask.new(spec) do |p|
- p.gem_spec = spec
- p.need_tar_gz = false
- p.need_zip = false
-end
-
-desc "Publish the release files to RubyForge."
-task :release => [ :package ] do
- require 'rubyforge'
-
- rubyforge = RubyForge.new
- rubyforge.configure
- rubyforge.login
- rubyforge.add_release("locale", "locale",
- PKG_VERSION,
- "pkg/locale-#{PKG_VERSION}.gem",
- "pkg/ruby-locale-#{PKG_VERSION}.tar.gz")
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale.rb b/vendor/gems/locale-2.0.5/lib/locale.rb
deleted file mode 100644
index f56de3783..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale.rb
+++ /dev/null
@@ -1,329 +0,0 @@
-=begin
- locale.rb - Locale module
-
- Copyright (C) 2002-2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- Original: Ruby-GetText-Package-1.92.0.
-
- $Id: locale.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require 'locale/util/memoizable'
-require 'locale/tag'
-require 'locale/taglist'
-require 'locale/version'
-
-# Locale module manages the locale informations of the application.
-# These functions are the most important APIs in this library.
-# Almost of all i18n/l10n programs use this APIs only.
-module Locale
- @@default_tag = nil
- @@locale_driver_module = nil
-
- ROOT = File.dirname(__FILE__)
-
- include Locale::Util::Memoizable
-
- module_function
- def require_driver(name) #:nodoc:
- require File.join(ROOT, "locale/driver", name.to_s)
- end
-
- def create_language_tag(tag) #:nodoc:
- if tag
- if tag.kind_of? Locale::Tag::Simple
- tag
- else
- Locale::Tag.parse(tag)
- end
- else
- nil
- end
- end
-
- # Initialize Locale library.
- # Usually, you don't need to call this directly, because
- # this is called when Locale's methods are called.
- #
- # If you use this library with CGI or the kind of CGI.
- # You need to call Locale.init(:driver => :cgi).
- #
- # ==== For Framework designers/programers:
- # If your framework is for WWW, call this once like: Locale.init(:driver => :cgi).
- #
- # ==== To Application programers:
- # If your framework doesn't use ruby-locale and the application is for WWW,
- # call this once like: Locale.init(:driver => :cgi).
- #
- # ==== To Library authors:
- # Don't call this, even if your application is only for WWW.
- #
- # * opts: Options as a Hash.
- # * :driver - The driver. :cgi if you use Locale module with CGI,
- # nil if you use system locale.
- # (ex) Locale.init(:driver => :cgi)
- #
- def init(opts = {})
- if opts[:driver]
- require_driver opts[:driver]
- else
- if /cygwin|mingw|win32/ =~ RUBY_PLATFORM
- require_driver 'win32'
- elsif /java/ =~ RUBY_PLATFORM
- require_driver 'jruby'
- else
- require_driver 'posix'
- end
- end
- end
-
- # Gets the driver module.
- #
- # Usually you don't need to call this method.
- #
- # * Returns: the driver module.
- def driver_module
- unless @@locale_driver_module
- Locale.init
- end
- @@locale_driver_module
- end
-
- DEFAULT_LANGUAGE_TAG = Locale::Tag::Simple.new("en") #:nodoc:
-
- # Sets the default locale as the language tag
- # (Locale::Tag's class or String(such as "ja_JP")).
- #
- # * tag: the default language_tag
- # * Returns: self.
- def set_default(tag)
- Thread.list.each do |thread|
- thread[:current_languages] = nil
- thread[:candidates_caches] = nil
- end
- @@default_tag = create_language_tag(tag)
- self
- end
-
- # Same as Locale.set_default.
- #
- # * locale: the default locale (Locale::Tag's class) or a String such as "ja-JP".
- # * Returns: locale.
- def default=(tag)
- set_default(tag)
- @@default_tag
- end
-
- # Gets the default locale(language tag).
- #
- # If the default language tag is not set, this returns nil.
- #
- # * Returns: the default locale (Locale::Tag's class).
- def default
- @@default_tag || DEFAULT_LANGUAGE_TAG
- end
-
- # Sets the locales of the current thread order by the priority.
- # Each thread has a current locales.
- # The system locale/default locale is used if the thread doesn't have current locales.
- #
- # * tag: Locale::Language::Tag's class or the language tag as a String. nil if you need to
- # clear current locales.
- # * charset: the charset (override the charset even if the locale name has charset) or nil.
- # * Returns: self
- #
- # (e.g.)
- # Locale.set_current("ja_JP.eucJP")
- # Locale.set_current("ja-JP")
- # Locale.set_current("en_AU", "en_US", ...)
- # Locale.set_current(Locale::Tag::Simple.new("ja", "JP"), ...)
- def set_current(*tags)
- languages = nil
- if tags[0]
- languages = Locale::TagList.new
- tags.each do |tag|
- languages << create_language_tag(tag)
- end
- end
- Thread.current[:current_languages] = languages
- Thread.current[:candidates_caches] = nil
- self
- end
-
- # Sets a current locale. This is a single argument version of Locale.set_current.
- #
- # * tag: the language tag such as "ja-JP"
- # * Returns: an Array of the current locale (Locale::Tag's class).
- #
- # Locale.current = "ja-JP"
- # Locale.current = "ja_JP.eucJP"
- def current=(tag)
- set_current(tag)
- Thread.current[:current_languages]
- end
-
- # Gets the current locales (Locale::Tag's class).
- # If the current locale is not set, this returns system/default locale.
- #
- # This method returns the current language tags even if it isn't included in app_language_tags.
- #
- # Usually, the programs should use Locale.candidates to find the correct locale, not this method.
- #
- # * Returns: an Array of the current locales (Locale::Tag's class).
- def current
- unless Thread.current[:current_languages]
- loc = driver_module.locales
- Thread.current[:current_languages] = loc ? loc : Locale::TagList.new([default])
- end
- Thread.current[:current_languages]
- end
-
- # Deprecated.
- def get #:nodoc:
- current
- end
-
- # Deprecated.
- def set(tag) #:nodoc:
- set_current(tag)
- end
-
- # Returns the language tags which are variations of the current locales order by priority.
- #
- # For example, if the current locales are ["fr", "ja_JP", "en_US", "en-Latn-GB-VARIANT"],
- # then returns ["fr", "ja_JP", "en_US", "en-Latn-GB-VARIANT", "en_Latn_GB", "en_GB", "ja", "en"].
- # "en" is the default locale(You can change it using set_default).
- # The default locale is added at the end of the list even if it isn't exist.
- #
- # Usually, this method is used to find the locale data as the path(or a kind of IDs).
- # * options: options as a Hash or nil.
- # * :supported_language_tags -
- # An Array of the language tags order by the priority. This option
- # restricts the locales which are supported by the library/application.
- # Default is nil if you don't need to restrict the locales.
- # (e.g.1) ["fr_FR", "en_GB", "en_US", ...]
- # * :type -
- # The type of language tag. :common, :rfc, :cldr, :posix and
- # :simple are available. Default value is :common
- def candidates(options = {})
- opts = {:supported_language_tags => nil, :current => current,
- :type => :common}.merge(options)
-
- if Thread.current[:candidates_caches]
- cache = Thread.current[:candidates_caches][opts.hash]
- return cache if cache
- else
- Thread.current[:candidates_caches] = {}
- end
- Thread.current[:candidates_caches][opts.hash] =
- collect_candidates(opts[:type], opts[:current],
- opts[:supported_language_tags])
- end
-
- # collect tag candidates and memoize it.
- # The result is shared from all threads.
- def collect_candidates(type, tags, supported_tags) # :nodoc:
- candidate_tags = tags.collect{|v| v.send("to_#{type}").candidates}
- default_tags = default.send("to_#{type}").candidates
- if app_language_tags
- app_tags = app_language_tags.collect{|v| v.send("to_#{type}")}.flatten.uniq
- end
- if supported_tags
- supported_tags = supported_tags.collect{|v| Locale::Tag.parse(v).send("to_#{type}")}.flatten.uniq
- end
-
- tags = []
- (0...candidate_tags[0].size).each {|i|
- tags += candidate_tags.collect{|v| v[i]}
- }
- tags += default_tags
- tags.uniq!
-
- all_tags = nil
- if app_tags
- if supported_tags
- all_tags = app_tags & supported_tags
- else
- all_tags = app_tags
- end
- elsif supported_tags
- all_tags = supported_tags
- end
- if all_tags
- tags &= all_tags
- tags = default_tags.uniq if tags.size == 0
- end
-
- Locale::TagList.new(tags)
- end
- memoize :collect_candidates
-
- # Gets the current charset.
- #
- # This returns the current user/system charset. This value is
- # read only, so you can't set it by yourself.
- #
- # * Returns: the current charset.
- def charset
- driver_module.charset || "UTF-8"
- end
- memoize :charset
-
- # Clear current locale.
- # * Returns: self
- def clear
- Thread.current[:current_languages] = nil
- Thread.current[:candidates_caches] = nil
- self
- end
-
- # Clear all locales and charsets of all threads.
- # This doesn't clear the default and app_language_tags.
- # Use Locale.default = nil to unset the default locale.
- # * Returns: self
- def clear_all
- Thread.list.each do |thread|
- thread[:current_languages] = nil
- thread[:candidates_caches] = nil
- end
- memoize_clear
- self
- end
-
- @@app_language_tags = nil
- # Set the language tags which is supported by the Application.
- # This value is same with supported_language_tags in Locale.candidates
- # to restrict the result but is the global setting.
- # If you set a language tag, the application works as the single locale
- # application.
- #
- # If the current locale is not included in app_language_tags,
- # Locale.default value is used.
- # Use Locale.set_default() to set correct language
- # if "en" is not included in the language tags.
- #
- # Set nil if clear the value.
- #
- # Note that the libraries/plugins shouldn't set this value.
- #
- # (e.g.) Locale.set_app_language_tags("fr_FR", "en-GB", "en_US", ...)
- def set_app_language_tags(*tags)
- if tags[0]
- @@app_language_tags = tags.collect{|v| Locale::Tag.parse(v)}
- else
- @@app_language_tags = nil
- end
-
- clear_all
- self
- end
-
- # Returns the app_language_tags. Default is nil. See set_app_language_tags for more details.
- def app_language_tags
- @@app_language_tags
- end
-
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/data/languages.tab.gz b/vendor/gems/locale-2.0.5/lib/locale/data/languages.tab.gz
deleted file mode 100644
index 7658a03f0..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/data/languages.tab.gz
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/locale-2.0.5/lib/locale/data/regions.tab.gz b/vendor/gems/locale-2.0.5/lib/locale/data/regions.tab.gz
deleted file mode 100644
index b5ecbfbec..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/data/regions.tab.gz
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/locale-2.0.5/lib/locale/driver/cgi.rb b/vendor/gems/locale-2.0.5/lib/locale/driver/cgi.rb
deleted file mode 100644
index c1d1126dd..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/driver/cgi.rb
+++ /dev/null
@@ -1,136 +0,0 @@
-=begin
- locale/driver/cgi.rb
-
- Copyright (C) 2002-2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- Original: Ruby-GetText-Package-1.92.0.
-
- $Id: cgi.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-module Locale
- # Locale::Driver module for CGI.
- # Detect the user locales and the charset from CGI parameters.
- # This is a low-level class. Application shouldn't use this directly.
- module Driver
- module CGI
- $stderr.puts self.name + " is loaded." if $DEBUG
-
- module_function
- # Gets required locales from CGI parameters. (Based on RFC2616)
- #
- # Returns: An Array of Locale::Tag's subclasses
- # (QUERY_STRING "lang" > COOKIE "lang" > HTTP_ACCEPT_LANGUAGE > "en")
- #
- def locales
- req = Thread.current[:current_request]
- return nil unless req
-
- locales = []
-
- # QUERY_STRING "lang"
- if langs = req[:query_langs]
- langs.each do |lang|
- locales << Locale::Tag.parse(lang)
- end
- end
-
- unless locales.size > 0
- # COOKIE "lang"
- if langs = req[:cookie_langs]
- langs.each do |lang|
- locales << Locale::Tag.parse(lang) if lang.size > 0
- end
- end
- end
-
- unless locales.size > 0
- # HTTP_ACCEPT_LANGUAGE
- if lang = req[:accept_language] and lang.size > 0
- locales += lang.gsub(/\s/, "").split(/,/).map{|v| v.split(";q=")}.map{|j| [j[0], j[1] ? j[1].to_f : 1.0]}.sort{|a,b| -(a[1] <=> b[1])}.map{|v| Locale::Tag.parse(v[0])}
- end
- end
-
- locales.size > 0 ? Locale::TagList.new(locales.uniq) : nil
- end
-
- # Gets the charset from CGI parameters. (Based on RFC2616)
- # * Returns: the charset (HTTP_ACCEPT_CHARSET or nil).
- def charset
- req = Thread.current[:current_request]
- return nil unless req
-
- charsets = req[:accept_charset]
- if charsets and charsets.size > 0
- num = charsets.index(',')
- charset = num ? charsets[0, num] : charsets
- charset = nil if charset == "*"
- else
- charset = nil
- end
- charset
- end
-
- # Set a request.
- #
- # * query_langs: An Array of QUERY_STRING value "lang".
- # * cookie_langs: An Array of cookie value "lang".
- # * accept_language: The value of HTTP_ACCEPT_LANGUAGE
- # * accept_charset: The value of HTTP_ACCEPT_CHARSET
- def set_request(query_langs, cookie_langs, accept_language, accept_charset)
- Thread.current[:current_request] = {
- :query_langs => query_langs,
- :cookie_langs => cookie_langs,
- :accept_language => accept_language,
- :accept_charset => accept_charset
- }
- self
- end
-
- # Clear the current request.
- def clear_current_request
- Thread.current[:current_request] = nil
- end
- end
- end
-
- @@locale_driver_module = Driver::CGI
-
- module_function
- # Sets a request values for lang/charset.
- #
- # * query_langs: An Array of QUERY_STRING value "lang".
- # * cookie_langs: An Array of cookie value "lang".
- # * accept_language: The value of HTTP_ACCEPT_LANGUAGE
- # * accept_charset: The value of HTTP_ACCEPT_CHARSET
- def set_request(query_langs, cookie_langs, accept_language, accept_charset)
- @@locale_driver_module.set_request(query_langs, cookie_langs, accept_language, accept_charset)
- self
- end
-
- # Sets a CGI object. This is the convenient function of set_request().
- #
- # This method is appeared when Locale.init(:driver => :cgi) is called.
- #
- # * cgi: CGI object
- # * Returns: self
- def set_cgi(cgi)
- set_request(cgi.params["lang"], cgi.cookies["lang"],
- cgi.accept_language, cgi.accept_charset)
- self
- end
-
- # Sets a CGI object.This is the convenient function of set_request().
- #
- # This method is appeared when Locale.init(:driver => :cgi) is called.
- #
- # * cgi: CGI object
- # * Returns: cgi
- def cgi=(cgi)
- set_cgi(cgi)
- cgi
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/driver/env.rb b/vendor/gems/locale-2.0.5/lib/locale/driver/env.rb
deleted file mode 100644
index 9d0995fa2..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/driver/env.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-=begin
- locale/env.rb
-
- Copyright (C) 2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- Original: Ruby-GetText-Package-1.92.0.
-
- $Id: env.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require 'locale/tag'
-require 'locale/taglist'
-
-module Locale
- module Driver
- # Locale::Driver::Env module.
- # Detect the user locales and the charset.
- # All drivers(except CGI) refer environment variables first and use it
- # as the locale if it's defined.
- # This is a low-level module. Application shouldn't use this directly.
- module Env
- module_function
-
- # Gets the locale from environment variable. (LC_ALL > LC_MESSAGES > LANG)
- # Returns: the locale as Locale::Tag::Posix.
- def locale
- # At least one environment valiables should be set on *nix system.
- [ENV["LC_ALL"], ENV["LC_MESSAGES"], ENV["LANG"]].each do |loc|
- if loc != nil and loc.size > 0
- return Locale::Tag::Posix.parse(loc)
- end
- end
- nil
- end
-
- # Gets the locales from environment variables. (LANGUAGE > LC_ALL > LC_MESSAGES > LANG)
- # * Returns: an Array of the locale as Locale::Tag::Posix or nil.
- def locales
- if (locales = ENV["LANGUAGE"])
- Locale::TagList.new(locales.split(/:/).collect{|v| Locale::Tag::Posix.parse(v)})
- elsif (loc = locale)
- Locale::TagList.new([loc])
- else
- nil
- end
- end
-
- # Gets the charset from environment variable or return nil.
- # * Returns: the system charset.
- def charset # :nodoc:
- if loc = locale
- loc.charset
- else
- nil
- end
- end
-
- end
- end
-end
-
diff --git a/vendor/gems/locale-2.0.5/lib/locale/driver/jruby.rb b/vendor/gems/locale-2.0.5/lib/locale/driver/jruby.rb
deleted file mode 100644
index d30348dbe..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/driver/jruby.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-=begin
- locale/driver/jruby.rb
-
- Copyright (C) 2007,2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- Original: Ruby-GetText-Package-1.92.0.
-
- $Id: jruby.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require File.join(File.dirname(__FILE__), 'env')
-require 'java'
-
-module Locale
- module Driver
- # Locale::Driver::JRuby module for JRuby
- # Detect the user locales and the charset.
- # This is a low-level class. Application shouldn't use this directly.
- module JRuby
- $stderr.puts self.name + " is loaded." if $DEBUG
-
- module_function
- def locales #:nodoc:
- locales = ::Locale::Driver::Env.locales
- unless locales
- locale = java.util.Locale.getDefault
- variant = locale.getVariant
- variants = []
- if variant != nil and variant.size > 0
- variants = [variant]
- end
- locales = TagList.new([Locale::Tag::Common.new(locale.getLanguage, nil,
- locale.getCountry,
- variants)])
- end
- locales
- end
-
- def charset #:nodoc:
- charset = ::Locale::Driver::Env.charset
- unless charset
- charset = java.nio.charset.Charset.defaultCharset.name
- end
- charset
- end
- end
- end
- @@locale_driver_module = Driver::JRuby
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/driver/posix.rb b/vendor/gems/locale-2.0.5/lib/locale/driver/posix.rb
deleted file mode 100644
index cf918efbe..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/driver/posix.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-=begin
- locale/posix.rb
-
- Copyright (C) 2002-2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- Original: Ruby-GetText-Package-1.92.0.
-
- $Id: posix.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require File.join(File.dirname(__FILE__), 'env')
-
-module Locale
- # Locale::Driver::Posix module for Posix OS (Unix)
- # Detect the user locales and the charset.
- # This is a low-level class. Application shouldn't use this directly.
- module Driver
- module Posix
- $stderr.puts self.name + " is loaded." if $DEBUG
-
- module_function
- # Gets the locales from environment variables. (LANGUAGE > LC_ALL > LC_MESSAGES > LANG)
- # Only LANGUAGE accept plural languages such as "nl_BE;
- # * Returns: an Array of the locale as Locale::Tag::Posix or nil.
- def locales
- ::Locale::Driver::Env.locales
- end
-
- # Gets the charset from environment variable or the result of
- # "locale charmap" or nil.
- # * Returns: the system charset.
- def charset
- charset = ::Locale::Driver::Env.charset
- unless charset
- charset = `locale charmap`.strip
- unless $? && $?.success?
- charset = nil
- end
- end
- charset
- end
- end
- end
- @@locale_driver_module = Driver::Posix
-end
-
diff --git a/vendor/gems/locale-2.0.5/lib/locale/driver/win32.rb b/vendor/gems/locale-2.0.5/lib/locale/driver/win32.rb
deleted file mode 100644
index 2bb6fbc4c..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/driver/win32.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-=begin
- locale/win32.rb
-
- Copyright (C) 2002-2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- Original: Ruby-GetText-Package-1.92.0.
-
- $Id: win32.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require File.join(File.dirname(__FILE__), 'env')
-require File.join(File.dirname(__FILE__), 'win32_table')
-require 'dl/win32'
-
-
-module Locale
- # Locale::Driver::Win32 module for win32.
- # Detect the user locales and the charset.
- # This is a low-level class. Application shouldn't use this directly.
- module Driver
- module Win32
- include Win32Table
-
- $stderr.puts self.name + " is loaded." if $DEBUG
-
- @@win32 = nil
- @@current_locale_id = nil
-
- module_function
-
- # Gets the Win32 charset of the locale.
- def charset
- charset = ::Locale::Driver::Env.charset
- unless charset
- if locales
- tag = locales[0].to_rfc.to_s
- loc = LocaleTable.find{|v| v[1] == tag}
- loc = LocaleTable.find{|v| v[1] =~ /^#{locales[0].language}/} unless loc
- charset = loc ? loc[2] : nil
- else
- charset = "CP1252"
- end
- end
- charset
- end
-
- def thread_locale_id #:nodoc:
- if @@current_locale_id
- @@current_locale_id
- else
- @@win32 ||= Win32API.new("kernel32.dll", "GetThreadLocale", nil, "i")
- @@win32.call
- end
- end
-
- def set_thread_locale_id(lcid) #:nodoc:
- # for testing.
- @@current_locale_id = lcid
- end
-
- def locales #:nodoc:
- locales = ::Locale::Driver::Env.locales
- unless locales
- lang = LocaleTable.assoc(thread_locale_id)
- if lang
- ret = Locale::Tag::Common.parse(lang[1])
- locales = Locale::TagList.new([ret])
- else
- locales = nil
- end
- end
- locales
- end
- end
- end
- @@locale_driver_module = Driver::Win32
-end
-
diff --git a/vendor/gems/locale-2.0.5/lib/locale/driver/win32_table.rb b/vendor/gems/locale-2.0.5/lib/locale/driver/win32_table.rb
deleted file mode 100644
index e1fd68a1b..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/driver/win32_table.rb
+++ /dev/null
@@ -1,298 +0,0 @@
-=begin
- win32_table.rb - Locale table for win32
-
- Copyright (C) 2008 Masao Mutoh <mutomasa at gmail.com>
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- Original: Ruby-GetText-Package-1.92.0.
-
- $Id: win32_table.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-module Locale
- module Driver
- module Win32Table
-
- #http://msdn.microsoft.com/ja-jp/goglobal/bb896001(en-us).aspx
-
- #LangID, locale name, code page
- LocaleTable = [
- [0x0036,"af","CP1252"],
- [0x0436,"af-ZA","CP1252"],
- [0x001C,"sq","CP1250"],
- [0x041C,"sq-AL","CP1250"],
- [0x0484,"gsw-FR","CP1252"],
- [0x045E,"am-ET","UNICODE"],
- [0x0001,"ar","CP1256"],
- [0x1401,"ar-DZ","CP1256"],
- [0x3C01,"ar-BH","CP1256"],
- [0x0C01,"ar-EG","CP1256"],
- [0x0801,"ar-IQ","CP1256"],
- [0x2C01,"ar-JO","CP1256"],
- [0x3401,"ar-KW","CP1256"],
- [0x3001,"ar-LB","CP1256"],
- [0x1001,"ar-LY","CP1256"],
- [0x1801,"ar-MA","CP1256"],
- [0x2001,"ar-OM","CP1256"],
- [0x4001,"ar-QA","CP1256"],
- [0x0401,"ar-SA","CP1256"],
- [0x2801,"ar-SY","CP1256"],
- [0x1C01,"ar-TN","CP1256"],
- [0x3801,"ar-AE","CP1256"],
- [0x2401,"ar-YE","CP1256"],
- [0x002B,"hy","UNICODE"],
- [0x042B,"hy-AM","UNICODE"],
- [0x044D,"as-IN","UNICODE"],
- [0x002C,"az","CP1254"],
- [0x082C,"az-Cyrl-AZ","CP1251"],
- [0x042C,"az-Latn-AZ","CP1254"],
- [0x046D,"ba-RU","CP1251"],
- [0x002D,"eu","CP1252"],
- [0x042D,"eu-ES","CP1252"],
- [0x0023,"be","CP1251"],
- [0x0423,"be-BY","CP1251"],
- [0x0845,"bn-BD","UNICODE"],
- [0x0445,"bn-IN","UNICODE"],
- [0x201A,"bs-Cyrl-BA","CP1251"],
- [0x141A,"bs-Latn-BA","CP1250"],
- [0x047E,"br-FR","CP1252"],
- [0x0002,"bg","CP1251"],
- [0x0402,"bg-BG","CP1251"],
- [0x0003,"ca","CP1252"],
- [0x0403,"ca-ES","CP1252"],
- [0x0C04,"zh-HK","CP950"],
- [0x1404,"zh-MO","CP950"],
- [0x0804,"zh-CN","CP936"],
- [0x0004,"zh-Hans","CP936"],
- [0x1004,"zh-SG","CP936"],
- [0x0404,"zh-TW","CP950"],
- [0x7C04,"zh-Hant","CP950"],
- [0x0483,"co-FR","CP1252"],
- [0x001A,"hr","CP1250"],
- [0x041A,"hr-HR","CP1250"],
- [0x101A,"hr-BA","CP1250"],
- [0x0005,"cs","CP1250"],
- [0x0405,"cs-CZ","CP1250"],
- [0x0006,"da","CP1252"],
- [0x0406,"da-DK","CP1252"],
- [0x048C,"prs-AF","CP1256"],
- [0x0065,"div","UNICODE"],
- [0x0465,"div-MV","UNICODE"],
- [0x0013,"nl","CP1252"],
- [0x0813,"nl-BE","CP1252"],
- [0x0413,"nl-NL","CP1252"],
- [0x0009,"en","CP1252"],
- [0x0C09,"en-AU","CP1252"],
- [0x2809,"en-BZ","CP1252"],
- [0x1009,"en-CA","CP1252"],
- [0x2409,"en-029","CP1252"],
- [0x4009,"en-IN","CP1252"],
- [0x1809,"en-IE","CP1252"],
- [0x2009,"en-JM","CP1252"],
- [0x4409,"en-MY","CP1252"],
- [0x1409,"en-NZ","CP1252"],
- [0x3409,"en-PH","CP1252"],
- [0x4809,"en-SG","CP1252"],
- [0x1C09,"en-ZA","CP1252"],
- [0x2C09,"en-TT","CP1252"],
- [0x0809,"en-GB","CP1252"],
- [0x0409,"en-US","CP1252"],
- [0x3009,"en-ZW","CP1252"],
- [0x0025,"et","CP1257"],
- [0x0425,"et-EE","CP1257"],
- [0x0038,"fo","CP1252"],
- [0x0438,"fo-FO","CP1252"],
- [0x0464,"fil-PH","CP1252"],
- [0x000B,"fi","CP1252"],
- [0x040B,"fi-FI","CP1252"],
- [0x000C,"fr","CP1252"],
- [0x080C,"fr-BE","CP1252"],
- [0x0C0C,"fr-CA","CP1252"],
- [0x040C,"fr-FR","CP1252"],
- [0x140C,"fr-LU","CP1252"],
- [0x180C,"fr-MC","CP1252"],
- [0x100C,"fr-CH","CP1252"],
- [0x0462,"fy-NL","CP1252"],
- [0x0056,"gl","CP1252"],
- [0x0456,"gl-ES","CP1252"],
- [0x0037,"ka","UNICODE"],
- [0x0437,"ka-GE","UNICODE"],
- [0x0007,"de","CP1252"],
- [0x0C07,"de-AT","CP1252"],
- [0x0407,"de-DE","CP1252"],
- [0x1407,"de-LI","CP1252"],
- [0x1007,"de-LU","CP1252"],
- [0x0807,"de-CH","CP1252"],
- [0x0008,"el","CP1253"],
- [0x0408,"el-GR","CP1253"],
- [0x046F,"kl-GL","CP1252"],
- [0x0047,"gu","UNICODE"],
- [0x0447,"gu-IN","UNICODE"],
- [0x0468,"ha-Latn-NG","CP1252"],
- [0x000D,"he","CP1255"],
- [0x040D,"he-IL","CP1255"],
- [0x0039,"hi","UNICODE"],
- [0x0439,"hi-IN","UNICODE"],
- [0x000E,"hu","CP1250"],
- [0x040E,"hu-HU","CP1250"],
- [0x000F,"is","CP1252"],
- [0x040F,"is-IS","CP1252"],
- [0x0470,"ig-NG","CP1252"],
- [0x0021,"id","CP1252"],
- [0x0421,"id-ID","CP1252"],
- [0x085D,"iu-Latn-CA","CP1252"],
- [0x045D,"iu-Cans-CA","UNICODE"],
- [0x083C,"ga-IE","CP1252"],
- [0x0434,"xh-ZA","CP1252"],
- [0x0435,"zu-ZA","CP1252"],
- [0x0010,"it","CP1252"],
- [0x0410,"it-IT","CP1252"],
- [0x0810,"it-CH","CP1252"],
- [0x0011,"ja","CP932"],
- [0x0411,"ja-JP","CP932"],
- [0x004B,"kn","UNICODE"],
- [0x044B,"kn-IN","UNICODE"],
- [0x003F,"kk","CP1251"],
- [0x043F,"kk-KZ","CP1251"],
- [0x0453,"km-KH","UNICODE"],
- [0x0486,"qut-GT","CP1252"],
- [0x0487,"rw-RW","CP1252"],
- [0x0041,"sw","CP1252"],
- [0x0441,"sw-KE","CP1252"],
- [0x0057,"kok","UNICODE"],
- [0x0457,"kok-IN","UNICODE"],
- [0x0012,"ko","CP949"],
- [0x0412,"ko-KR","CP949"],
- [0x0040,"ky","CP1251"],
- [0x0440,"ky-KG","CP1251"],
- [0x0454,"lo-LA","UNICODE"],
- [0x0026,"lv","CP1257"],
- [0x0426,"lv-LV","CP1257"],
- [0x0027,"lt","CP1257"],
- [0x0427,"lt-LT","CP1257"],
- [0x082E,"wee-DE","CP1252"],
- [0x046E,"lb-LU","CP1252"],
- [0x002F,"mk","CP1251"],
- [0x042F,"mk-MK","CP1251"],
- [0x003E,"ms","CP1252"],
- [0x083E,"ms-BN","CP1252"],
- [0x043E,"ms-MY","CP1252"],
- [0x044C,"ml-IN","UNICODE"],
- [0x043A,"mt-MT","UNICODE"],
- [0x0481,"mi-NZ","UNICODE"],
- [0x047A,"arn-CL","CP1252"],
- [0x004E,"mr","UNICODE"],
- [0x044E,"mr-IN","UNICODE"],
- [0x047C,"moh-CA","CP1252"],
- [0x0050,"mn","CP1251"],
- [0x0450,"mn-MN","CP1251"],
- [0x0850,"mn-Mong-CN","UNICODE"],
- [0x0461,"ne-NP","UNICODE"],
- [0x0014,"no","CP1252"],
- [0x0414,"nb-NO","CP1252"],
- [0x0814,"nn-NO","CP1252"],
- [0x0482,"oc-FR","CP1252"],
- [0x0448,"or-IN","UNICODE"],
- [0x0463,"ps-AF","UNICODE"],
- [0x0029,"fa","CP1256"],
- [0x0429,"fa-IR","CP1256"],
- [0x0015,"pl","CP1250"],
- [0x0415,"pl-PL","CP1250"],
- [0x0016,"pt","CP1252"],
- [0x0416,"pt-BR","CP1252"],
- [0x0816,"pt-PT","CP1252"],
- [0x0046,"pa","UNICODE"],
- [0x0446,"pa-IN","UNICODE"],
- [0x046B,"quz-BO","CP1252"],
- [0x086B,"quz-EC","CP1252"],
- [0x0C6B,"quz-PE","CP1252"],
- [0x0018,"ro","CP1250"],
- [0x0418,"ro-RO","CP1250"],
- [0x0417,"rm-CH","CP1252"],
- [0x0019,"ru","CP1251"],
- [0x0419,"ru-RU","CP1251"],
- [0x243B,"smn-FI","CP1252"],
- [0x103B,"smj-NO","CP1252"],
- [0x143B,"smj-SE","CP1252"],
- [0x0C3B,"se-FI","CP1252"],
- [0x043B,"se-NO","CP1252"],
- [0x083B,"se-SE","CP1252"],
- [0x203B,"sms-FI","CP1252"],
- [0x183B,"sma-NO","CP1252"],
- [0x1C3B,"sma-SE","CP1252"],
- [0x004F,"sa","UNICODE"],
- [0x044F,"sa-IN","UNICODE"],
- [0x7C1A,"sr","CP1251"],
- [0x1C1A,"sr-Cyrl-BA","CP1251"],
- [0x0C1A,"sr-Cyrl-SP","CP1251"],
- [0x181A,"sr-Latn-BA","CP1250"],
- [0x081A,"sr-Latn-SP","CP1250"],
- [0x046C,"nso-ZA","CP1252"],
- [0x0432,"tn-ZA","CP1252"],
- [0x045B,"si-LK","UNICODE"],
- [0x001B,"sk","CP1250"],
- [0x041B,"sk-SK","CP1250"],
- [0x0024,"sl","CP1250"],
- [0x0424,"sl-SI","CP1250"],
- [0x000A,"es","CP1252"],
- [0x2C0A,"es-AR","CP1252"],
- [0x400A,"es-BO","CP1252"],
- [0x340A,"es-CL","CP1252"],
- [0x240A,"es-CO","CP1252"],
- [0x140A,"es-CR","CP1252"],
- [0x1C0A,"es-DO","CP1252"],
- [0x300A,"es-EC","CP1252"],
- [0x440A,"es-SV","CP1252"],
- [0x100A,"es-GT","CP1252"],
- [0x480A,"es-HN","CP1252"],
- [0x080A,"es-MX","CP1252"],
- [0x4C0A,"es-NI","CP1252"],
- [0x180A,"es-PA","CP1252"],
- [0x3C0A,"es-PY","CP1252"],
- [0x280A,"es-PE","CP1252"],
- [0x500A,"es-PR","CP1252"],
- [0x0C0A,"es-ES","CP1252"],
- [0x540A,"es-US","CP1252"],
- [0x380A,"es-UY","CP1252"],
- [0x200A,"es-VE","CP1252"],
- [0x001D,"sv","CP1252"],
- [0x081D,"sv-FI","CP1252"],
- [0x041D,"sv-SE","CP1252"],
- [0x005A,"syr","UNICODE"],
- [0x045A,"syr-SY","UNICODE"],
- [0x0428,"tg-Cyrl-TJ","CP1251"],
- [0x085F,"tmz-Latn-DZ","CP1252"],
- [0x0049,"ta","UNICODE"],
- [0x0449,"ta-IN","UNICODE"],
- [0x0044,"tt","CP1251"],
- [0x0444,"tt-RU","CP1251"],
- [0x004A,"te","UNICODE"],
- [0x044A,"te-IN","UNICODE"],
- [0x001E,"th","CP874"],
- [0x041E,"th-TH","CP874"],
- [0x0451,"bo-CN","UNICODE"],
- [0x001F,"tr","CP1254"],
- [0x041F,"tr-TR","CP1254"],
- [0x0442,"tk-TM","CP1250"],
- [0x0480,"ug-CN","CP1256"],
- [0x0022,"uk","CP1251"],
- [0x0422,"uk-UA","CP1251"],
- [0x042E,"wen-DE","CP1252"],
- [0x0020,"ur","CP1256"],
- [0x0420,"ur-PK","CP1256"],
- [0x0043,"uz","CP1254"],
- [0x0843,"uz-Cyrl-UZ","CP1251"],
- [0x0443,"uz-Latn-UZ","CP1254"],
- [0x002A,"vi","CP1258"],
- [0x042A,"vi-VN","CP1258"],
- [0x0452,"cy-GB","CP1252"],
- [0x0488,"wo-SN","CP1252"],
- [0x0485,"sah-RU","CP1251"],
- [0x0478,"ii-CN","UNICODE"],
- [0x046A,"yo-NG","CP1252"],
- ]
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/info.rb b/vendor/gems/locale-2.0.5/lib/locale/info.rb
deleted file mode 100644
index 1aac39115..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/info.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-=begin
-
- info.rb - Load Locale::Info::Language and Locale::Info::Region.
-
- Copyright (C) 2008 Masao Mutoh
-
- $Id: info.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require 'locale/info/language'
-require 'locale/info/region'
-
diff --git a/vendor/gems/locale-2.0.5/lib/locale/info/language.rb b/vendor/gems/locale-2.0.5/lib/locale/info/language.rb
deleted file mode 100644
index b14752354..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/info/language.rb
+++ /dev/null
@@ -1,135 +0,0 @@
-# encoding: UTF-8
-=begin
-
- language.rb - Locale::Info::Language class
-
- Copyright (C) 2008 Masao Mutoh
-
- Original Author:: Brian Pontarelli
-
- $Id: language.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require 'zlib'
-
-module Locale
-
- module Info
- # This class contains all the of the ISO information for the ISO 639-3
- # languages. This class is immutable once constructed.
- class Language
- attr_reader :two_code, :three_code, :scope, :type, :name
-
- #
- # Constructs a new Language instance.
- #
- # * code The 2 or 3 digit ISO 639-3 language code.
- # * scope A single character that defines the ISO scope of the language - <tt>(I)ndividual</tt>,
- # <tt>(M)acrolanguage</tt>, or <tt>(S)pecial</tt>.
- # * type A single character that defines the ISO type of the language - <tt>(A)ncient</tt>,
- # <tt>(C)onstructed</tt>, <tt>(E)xtinct</tt>, <tt>(H)istorical</tt>, <tt>(L)iving</tt>,
- # or <tt>(S)pecial</tt>.
- # * name The name of the language.
- #
- def initialize(two_code, three_code, scope, type, name)
- @two_code, @three_code, @scope, @type, @name = two_code, three_code, scope, type, name
-
- @individual = (scope == "I")
- @macro = (scope == "M")
- @special = (scope == "S")
- @constructed = (type == "C")
- @living = (type == "L")
- @extinct = (type == "E")
- @ancient = (type == "A")
- @historical = (type == "H")
- @special_type = (type == "S")
- end
-
- # Returns true if the language is an individual language according to the ISO 639-3 data.
- def individual?; @individual; end
-
- # Returns true if the language is a macro language according to the ISO 639-3 data.
- def macro?; @macro; end
-
- # Returns true if the language is a special language according to the ISO 639-3 data.
- def special?; @special; end
-
- # Returns true if the language is a constructed language according to the ISO 639-3 data.
- def constructed?; @constructed; end
-
- # Returns true if the language is a living language according to the ISO 639-3 data.
- def living?; @living; end
-
- # Returns true if the language is an extinct language according to the ISO 639-3 data.
- def extinct?; @extinct; end
-
- # Returns true if the language is an ancient language according to the ISO 639-3 data.
- def ancient?; @ancient; end
-
- # Returns true if the language is an historical language according to the ISO 639-3 data.
- def historical?; @historical; end
-
- # Returns true if the language is a special type language according to the ISO 639-3 data.
- def special_type?; @special_type; end
-
- # Returns the two or three code.
- def to_s
- two_code || tree_code
- end
-
- # Returns this object is valid as ISO 639 data.
- def iso_language?
- @@lang_two_codes[two_code] != nil || @@lang_three_codes[three_code] != nil
- end
- end
-
- @@lang_two_codes = Hash.new
- @@lang_three_codes = Hash.new
-
- Zlib::GzipReader.open(File.dirname(__FILE__) + "/../data/languages.tab.gz") do |gz|
- gz.readlines.each do |l|
- l.force_encoding('UTF-8') if l.respond_to?(:force_encoding)
- unless l =~ /^\s*$/
- parts = l.split(/\t/)
- lang = Language.new(parts[2], parts[0], parts[3], parts[4], parts[5].strip)
- @@lang_three_codes[parts[0]] = lang
- @@lang_two_codes[parts[2]] = lang if parts[2].length > 0
- end
- end
- end
-
- module_function
-
- # Returns a hash of all the ISO languages. The hash is {String, language} where
- # the string is the 3 digit language code from the ISO 639 data. This contains
- # all of the data from the ISO 639-3 data (7600 Languages).
- #
- # Need to require 'locale/info' or 'locale/language'.
- def three_languages
- @@lang_three_codes
- end
-
- # Returns a hash of all the ISO languages. The hash is {String, language} where
- # the string is the 2 digit language code from the ISO 639-1 data. This contains
- # all of the data from the ISO 639-1 data (186 Languages).
- #
- # Need to require 'locale/info' or 'locale/language'.
- def two_languages
- @@lang_two_codes
- end
-
- # Returns the language for the given 2 or 3 digit code.
- #
- # Need to require 'locale/info' or 'locale/language'.
- def get_language(code)
- @@lang_three_codes[code] || @@lang_two_codes[code]
- end
-
- # Returns the language code is valid.
- #
- # Need to require 'locale/info' or 'locale/language'.
- def language_code?(code)
- get_language(code) != nil
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/info/region.rb b/vendor/gems/locale-2.0.5/lib/locale/info/region.rb
deleted file mode 100644
index daf192410..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/info/region.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-# encoding: UTF-8
-=begin
-
- region.rb - Locale::Info::Region class
-
- Copyright (C) 2008 Masao Mutoh
-
- First Author:: Brian Pontarelli
-
- $Id: region.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require 'zlib'
-
-module Locale
-
- module Info
- # This class models out a region/country from the ISO 3166 standard for region codes.
- # In ISO3166, it's called "Country" but Ruby/Locale the word "Region" instead.
- class Region
- attr_reader :code, :name
-
- # code:: The 2 or 3 digit ISO 3166 region code.
- # name:: The name of the region.
- def initialize(code, name)
- @code = code
- @name = name
- end
-
- def iso_region?
- @@regions[code] != nil
- end
-
- def to_s
- "#{code}"
- end
- end
-
- @@regions = Hash.new
- Zlib::GzipReader.open(File.dirname(__FILE__) + "/../data/regions.tab.gz") do |gz|
- gz.readlines.each do |l|
- l.force_encoding('UTF-8') if l.respond_to?(:force_encoding)
- unless l =~ /^\s*$/
- parts = l.split(/\t/)
- region = Region.new(parts[0], parts[1].strip)
- @@regions[parts[0]] = region
- end
- end
- end
-
- module_function
-
- # Returns a hash of all the ISO regions. The hash is {String, Region} where
- # the string is the 2 digit region code from the ISO 3166 data.
- #
- # You need to require 'locale/info' or 'locale/region'.
- def regions
- @@regions
- end
-
- # Returns the region for the given code.
- #
- # You need to require 'locale/info' or 'locale/info/region'.
- def get_region(code)
- @@regions[code]
- end
-
- # Returns the region code is valid.
- #
- # You need to require 'locale/info' or 'locale/info/region'.
- def valid_region_code?(code)
- @@regions[code] != nil
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/tag.rb b/vendor/gems/locale-2.0.5/lib/locale/tag.rb
deleted file mode 100644
index f4be35ad3..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/tag.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-=begin
- tag.rb - Locale::Tag module
-
- Copyright (C) 2008,2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-require 'locale/tag/simple'
-require 'locale/tag/irregular'
-require 'locale/tag/common'
-require 'locale/tag/rfc'
-require 'locale/tag/cldr'
-require 'locale/tag/posix'
-require 'locale/util/memoizable'
-
-module Locale
-
- # Language tag / locale identifiers.
- module Tag
- include Util::Memoizable
- module_function
- # Parse a language tag/locale name and return Locale::Tag
- # object.
- # * tag: a tag as a String. e.g.) ja-Hira-JP
- # * Returns: a Locale::Tag subclass.
- def parse(tag)
- # Common is not used here.
- [Simple, Common, Rfc, Cldr, Posix].each do |parser|
- ret = parser.parse(tag)
- return ret if ret
- end
- Locale::Tag::Irregular.new(tag)
- end
- memoize :parse
- end
-end
-
diff --git a/vendor/gems/locale-2.0.5/lib/locale/tag/cldr.rb b/vendor/gems/locale-2.0.5/lib/locale/tag/cldr.rb
deleted file mode 100644
index 0a52d836d..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/tag/cldr.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-=begin
- locale/tag/cldr.rb - Locale::Tag::CLDR
-
- Copyright (C) 2008,2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-require 'locale/tag/common'
-
-module Locale
- module Tag
-
- # Unicode locale identifier class for CLDR-1.6.1.
- # (Unicode Common Locale Data Repository).
- class Cldr < Common
-
- VARIANT = "(#{ALPHANUM}{5,8}|#{DIGIT}#{ALPHANUM}{3})"
- EXTENSION = "#{ALPHANUM}+=[a-z0-9\-]+"
-
- TAG_RE = /\A#{LANGUAGE}(?:[-_]#{SCRIPT})?
- (?:[-_]#{REGION})?((?:[-_]#{VARIANT})*
- (?:@(#{EXTENSION};?)+)*)\Z/ix
-
- attr_reader :extensions
-
- class << self
- include Util::Memoizable
- # Parse the language tag and return the new Locale::Tag::CLDR.
- def parse(tag)
- if tag =~ /\APOSIX\Z/ # This is the special case of POSIX locale but match this regexp.
- nil
- elsif tag =~ TAG_RE
- lang, script, region, subtag = $1, $2, $3, $4
-
- extensions = {}
- subtag.scan(/#{EXTENSION}/i).each{|v|
- subtag.sub!(v, "")
- key, type = v.split("=")
- extensions[key] = type
- }
- variants = subtag.scan(/#{VARIANT}/i).collect{|v| v[0].upcase}
-
- ret = self.new(lang, script, region, variants, extensions)
- ret.tag = tag
- ret
- else
- nil
- end
- end
- memoize_dup :parse
- end
-
- # Create Locale::Tag::Cldr.
- #
- # variants should be upcase.
- def initialize(language, script = nil, region = nil,
- variants = [], extensions = {})
- @extensions = extensions
- super(language, script, region, variants.map{|v| v.upcase})
- end
-
- # Sets the extensions as an Hash.
- def extensions=(val)
- clear
- @extensions = val
- end
-
- private
- def convert_to(klass) # :nodoc:
- if klass == Cldr
- klass.new(language, script, region, variants, extensions)
- elsif klass == Rfc
- exts = []
- @extensions.to_a.sort.each do |k, v|
- exts << "k-#{k[0,8]}-#{v[0,8]}"
- end
-
- klass.new(language, script, region, variants, exts)
- else
- super
- end
- end
-
- # Returns the language tag.
- # (e.g.) "ja_Hira_JP_VARIANT1_VARIANT2@foo1=var1;foo2=var2"
- #
- # This is used in internal only. Use to_s instead.
- def to_string
- s = super
- if @extensions.size > 0
- s << "@" << @extensions.to_a.sort.map{|k, v| "#{k}=#{v}"}.join(";")
- end
- s
- end
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/tag/common.rb b/vendor/gems/locale-2.0.5/lib/locale/tag/common.rb
deleted file mode 100644
index ad85c18da..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/tag/common.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-=begin
- locale/tag/common.rb - Locale::Tag::Common
-
- Copyright (C) 2008,2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-require 'locale/tag/simple'
-
-module Locale
- module Tag
- # Common Language tag class for Ruby.
- # Java and MS Windows use this format.
- #
- # * ja (language: RFC4646)
- # * ja_JP (country: RFC4646(2 alpha or 3 digit))
- # * ja-JP
- # * ja_Hira_JP (script: 4 characters)
- # * ja-Hira-JP
- # * ja_Hira_JP_MOBILE (variants: more than 2 characters or 3 digit)
- # * ja_Hira_JP_MOBILE_IPHONE (2 variants example)
- #
- class Common < Simple
- LANGUAGE = "(#{ALPHA}{2,3}|#{ALPHA}{4}|#{ALPHA}{5,8})" #RFC4646 (ISO639/reserved/registered)
- SCRIPT = "(#{ALPHA}{4})"
- VARIANT = "(#{ALPHANUM}{3,}|#{DIGIT}#{ALPHANUM}{3})" #RFC3066 compatible
-
- TAG_RE = /\A#{LANGUAGE}(?:[-_]#{SCRIPT})?
- (?:[-_]#{REGION})?((?:[-_]#{VARIANT})*)\Z/ix
-
- attr_reader :script, :variants
-
- class << self
- include Util::Memoizable
- # Parse the language tag and return the new Locale::Tag::Common.
- def parse(tag)
- if tag =~ /\APOSIX\Z/ # This is the special case of POSIX locale but match this regexp.
- nil
- elsif tag =~ TAG_RE
- lang, script, region, subtag = $1, $2, $3, $4
- variants = subtag.scan(/(^|[-_])#{VARIANT}(?=([-_]|$))/i).collect{|v| v[1]}
-
- ret = self.new(lang, script, region, variants)
- ret.tag = tag
- ret
- else
- nil
- end
- end
- memoize_dup :parse
- end
-
- # Create a Locale::Tag::Common.
- def initialize(language, script = nil, region = nil, variants = [])
- @script, @variants = script, variants
- @script = @script.capitalize if @script
- super(language, region)
- end
-
- # Set the script (with capitalize)
- def script=(val)
- clear
- @script = val
- @script = @script.capitalize if @script
- @script
- end
-
- # Set the variants as an Array.
- def variants=(val)
- clear
- @variants = val
- end
-
- # Returns an Array of tag-candidates order by priority.
- # Use Locale.candidates instead of this method.
- #
- # Locale::Tag::Rfc, Cldr don't have their own candidates,
- # because it's meaningless to compare the extensions, privateuse, etc.
- def candidates
- [self.class.new(language, script, region, variants), #ja-Kana-JP-FOO
- self.class.new(language, script, region), #ja-Kana-JP
- self.class.new(language, nil, region, variants), #ja-JP-FOO
- self.class.new(language, nil, region), #ja-JP
- self.class.new(language, script, nil, variants), #ja-Kana-FOO
- self.class.new(language, script), #ja-Kana
- self.class.new(language, nil, nil, variants), #ja-FOO
- self.class.new(language)] #ja
- end
- memoize_dup :candidates
-
- private
- def convert_to(klass) #:nodoc:
- if klass == Simple
- super
- elsif klass == Posix
- if variants.size > 0
- var = variants.join("-")
- else
- var = nil
- end
- klass.new(language, region, nil, var)
- elsif klass == Cldr
- klass.new(language, script, region, variants.map{|v| v.upcase})
- else
- klass.new(language, script, region, variants)
- end
- end
-
- # Returns the common language tag with "_".
- # <language>_<Script>_<REGION>_VARIANTS1_VARIANTS2
- # (e.g.) "ja_Hira_JP_VARIANTS1_VARIANTS2"
- #
- # This is used in internal only. Use to_s instead.
- def to_string
- s = @language.dup
-
- s << "_" << @script if @script
- s << "_" << @region if @region
-
- @variants.each do |v|
- s << "_#{v}"
- end
- s
- end
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/tag/irregular.rb b/vendor/gems/locale-2.0.5/lib/locale/tag/irregular.rb
deleted file mode 100644
index ede85b600..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/tag/irregular.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-=begin
- locale/tag/irregular.rb - Locale::Tag::Irregular
-
- Copyright (C) 2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- $Id: irregular.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require 'locale/tag/simple'
-
-module Locale
-
- module Tag
- # Broken tag class.
- class Irregular < Simple
-
- def initialize(tag)
- tag = "en" if tag == nil or tag == ""
- super(tag.to_s)
- @tag = tag
- end
-
- # Returns an Array of tag-candidates order by priority.
- def candidates
- [Irregular.new(tag)]
- end
- memoize :candidates
-
- # Conver to the klass(the class of Language::Tag)
- private
- def convert_to(klass)
- klass.new(tag)
- end
- memoize :convert_to
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/tag/posix.rb b/vendor/gems/locale-2.0.5/lib/locale/tag/posix.rb
deleted file mode 100644
index b04aa54a1..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/tag/posix.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-=begin
- locale/tag/posix.rb - Locale::Tag::Posix
-
- Copyright (C) 2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- $Id: posix.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-module Locale
- module Tag
-
- # Locale tag class for POSIX locale
- # * ja
- # * ja_JP
- # * ja_JP.UTF-8
- # * ja_JP.UTF-8@Osaka
- # * C/POSIX (-> en_US)
- class Posix < Simple
- LANGUAGE = "([a-z]{2,})"
- TAG_RE = /\A#{LANGUAGE}(?:_#{REGION})?(?:\.([^@]+))?(?:@(.*))?\Z/i
-
- attr_reader :charset, :modifier
-
- def initialize(language, region = nil, charset = nil, modifier = nil)
- @charset, @modifier = charset, modifier
- super(language, region)
- end
-
- def self.parse(tag)
- if tag =~ /^(C|POSIX)$/
- ret = self.new("en", "US")
- ret.tag = tag
- ret
- elsif tag =~ TAG_RE
- ret = self.new($1, $2, $3, $4)
- ret.tag = tag
- ret
- else
- nil
- end
- end
-
- # Returns the language tag.
- # <language>_<COUNTRY>.<CHARSET>@<MODIFIER>
- # (e.g.) "ja_JP.EUC-JP@Modifier"
- def to_s
- s = @language.dup
- s << "_#{@region}" if @region
- s << ".#{@charset}" if @charset
- s << "@#{@modifier}" if @modifier
- s
- end
-
- # Set the charset.
- def charset=(val)
- clear
- @charset = val
- end
-
- # Set the modifier as a String
- def modifier=(val)
- clear
- @modifier = val
- end
-
- # Returns an Array of tag-candidates order by priority.
- # Use Locale.candidates instead of this method.
- def candidates
- [self.class.new(language, region, charset, modifier), #ja_JP.UTF-8@Modifier
- self.class.new(language, region, charset), #ja_JP.UTF-8
- self.class.new(language, region, nil, modifier), #ja_JP@Modifier
- self.class.new(language, region, nil, nil), #ja_JP@Modifier
- self.class.new(language, nil, charset, modifier), #ja.UTF-8@Modifier
- self.class.new(language, nil, charset), #ja.UTF-8
- self.class.new(language, nil, nil, modifier), #ja@Modifier
- self.class.new(language)] #ja
- end
-
- # A modifier is converted to a variant.
- # If the modifier is less than 5 characters, it is not canonical value.
- private
- def convert_to(klass)
- if klass == Simple
- super
- elsif klass == Posix
- klass.new(language, region, charset, modifier)
- else
- klass.new(language, nil, region, modifier ? [modifier] : [])
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/tag/rfc.rb b/vendor/gems/locale-2.0.5/lib/locale/tag/rfc.rb
deleted file mode 100644
index 5a230b6e0..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/tag/rfc.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-=begin
- locale/tag/rfc.rb - Locale::Tag::Rfc
-
- Copyright (C) 2008,2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-require 'locale/tag/common'
-
-module Locale
- module Tag
-
- # Language tag class for RFC4646(BCP47).
- class Rfc < Common
- SINGLETON = '[a-wyz0-9]'
- VARIANT = "(#{ALPHANUM}{5,8}|#{DIGIT}#{ALPHANUM}{3})"
- EXTENSION = "(#{SINGLETON}(?:-#{ALPHANUM}{2,8})+)"
- PRIVATEUSE = "(x(?:-#{ALPHANUM}{1,8})+)"
- GRANDFATHERED = "#{ALPHA}{1,3}(?:-#{ALPHANUM}{2,8}){1,2}"
-
- TAG_RE = /\A#{LANGUAGE}(?:-#{SCRIPT})?
- (?:-#{REGION})?((?:-#{VARIANT})*
- (?:-#{EXTENSION})*(?:-#{PRIVATEUSE})?)\Z/ix
-
- attr_reader :extensions, :privateuse
-
- class << self
- include Util::Memoizable
- # Parse the language tag and return the new Locale::Tag::Rfc.
- def parse(tag)
- if tag =~ /\APOSIX\Z/ # This is the special case of POSIX locale but match this regexp.
- nil
- elsif tag =~ TAG_RE
- lang, script, region, subtag = $1, $2, $3, $4
- extensions = []
- variants = []
- if subtag =~ /#{PRIVATEUSE}/
- subtag, privateuse = $`, $1
- # Private use for CLDR.
- if /x-ldml(.*)/ =~ privateuse
- p_subtag = $1
- extensions = p_subtag.scan(/(^|-)#{EXTENSION}/i).collect{|v| p_subtag.sub!(v[1], ""); v[1]}
- variants = p_subtag.scan(/(^|-)#{VARIANT}(?=(-|$))/i).collect{|v| v[1]}
- end
- end
- extensions += subtag.scan(/(^|-)#{EXTENSION}/i).collect{|v| subtag.sub!(v[1], ""); v[1]}
- variants += subtag.scan(/(^|-)#{VARIANT}(?=(-|$))/i).collect{|v| v[1]}
-
- ret = self.new(lang, script, region, variants, extensions, privateuse)
- ret.tag = tag
- ret
- else
- nil
- end
- end
- memoize_dup :parse
- end
-
- def initialize(language, script = nil, region = nil, variants = [],
- extensions = [], privateuse = nil)
- @extensions, @privateuse = extensions, privateuse
- super(language, script, region, variants)
- end
-
- # Sets the extensions as an Array.
- def extensions=(val)
- clear
- @extensions = val
- end
-
- # Sets the privateuse as a String
- def privateuse=(val)
- clear
- @privateuse = val
- end
-
- private
- def convert_to(klass)
- if klass == Rfc
- klass.new(language, script, region, variants, extensions, privateuse)
- elsif klass == Cldr
- exts = {}
- extensions.sort.each do |v|
- if v =~ /^k-(#{ALPHANUM}{2,})-(.*)$/i
- exts[$1] = $2
- end
- end
- klass.new(language, script, region, variants, exts)
- else
- super
- end
- end
-
- # Returns the language tag
- # <language>-<Script>-<REGION>-<variants>-<extensions>-<PRIVATEUSE>
- # (e.g.) "ja-Hira-JP-variant"
- #
- # This is used in internal only. Use to_s instead.
- def to_string
- s = super.gsub(/_/, "-")
- @extensions.sort.each do |v|
- s << "-#{v}"
- end
- s << "-#{@privateuse}" if @privateuse
- s
- end
-
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/tag/simple.rb b/vendor/gems/locale-2.0.5/lib/locale/tag/simple.rb
deleted file mode 100644
index bf3719b88..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/tag/simple.rb
+++ /dev/null
@@ -1,162 +0,0 @@
-=begin
- locale/tag/simple.rb - Locale::Tag::Simple
-
- Copyright (C) 2008,2009 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-require 'locale/util/memoizable'
-
-module Locale
- module Tag
- # Abstract language tag class.
- # This class has <language>, <region> which
- # all of language tag specifications have.
- #
- # * ja (language: ISO 639 (2 or 3 alpha))
- # * ja_JP (country: RFC4646 (ISO3166/UN M.49) (2 alpha or 3 digit)
- # * ja-JP
- # * ja-392
- class Simple
- include Util::Memoizable
-
- ALPHA = '[a-z]'
- DIGIT = '[0-9]'
- ALPHANUM = "[a-zA-Z0-9]"
-
- LANGUAGE = "(#{ALPHA}{2,3})" # ISO 639
- REGION = "(#{ALPHA}{2}|#{DIGIT}{3})" # RFC4646 (ISO3166/UN M.49)
-
- TAG_RE = /\A#{LANGUAGE}(?:[_-]#{REGION})?\Z/i
-
- include Util::Memoizable
-
- attr_reader :language, :region
-
- # tag is set when .parse method is called.
- # This value is used when the program want to know the original
- # String.
- attr_accessor :tag
-
- # call-seq:
- # to_common
- # to_posix
- # to_rfc
- # to_cldr
- #
- # Convert to each tag classes.
- [:simple, :common, :posix, :rfc, :cldr].each do |name|
- class_eval <<-EOS
- def to_#{name}
- convert_to(#{name.to_s.capitalize})
- end
- memoize_dup :to_#{name}
- EOS
- end
-
- class << self
- include Util::Memoizable
- # Parse the language tag and return the new Locale::Tag::Simple.
- def parse(tag)
- if tag =~ TAG_RE
- ret = self.new($1, $2)
- ret.tag = tag
- ret
- else
- nil
- end
- end
- memoize_dup :parse
- end
-
- # Create a Locale::Tag::Simple
- def initialize(language, region = nil)
- raise "language can't be nil." unless language
- @language, @region = language, region
- @language = @language.downcase if @language
- @region = @region.upcase if @region
- end
-
- # Returns the language tag as the String.
- # <language>_<REGION>
- # (e.g.) "ja_JP"
- def to_s
- to_string
- end
- memoize :to_s
-
- def to_str #:nodoc:
- to_s
- end
-
- def <=>(other)
- self.to_s <=> other.to_s
- end
-
- def ==(other) #:nodoc:
- other != nil and hash == other.hash
- end
-
- def eql?(other) #:nodoc:
- self.==(other)
- end
- memoize :eql?
-
- def hash #:nodoc:
- "#{self.class}:#{to_s}".hash
- end
- memoize :hash
-
- def inspect #:nodoc:
- %Q[#<#{self.class}: #{to_s}>]
- end
- memoize :inspect
-
- # For backward compatibility.
- def country; region end
-
- # Set the language (with downcase)
- def language=(val)
- clear
- @language = val
- @language = @language.downcase if @language
- @language
- end
-
- # Set the region (with upcase)
- def region=(val)
- clear
- @region = val
- @region = @region.upcase if @region
- @region
- end
-
- # Returns an Array of tag-candidates order by priority.
- # Use Locale.candidates instead of this method.
- def candidates
- [self.class.new(language, region), self.class.new(language)]
- end
- memoize_dup :candidates
-
- # Convert to the klass(the class of Language::Tag)
- private
- def convert_to(klass) #:nodoc:
- if klass == Simple || klass == Posix
- klass.new(language, region)
- else
- klass.new(language, nil, region)
- end
- end
-
- # Return simple language tag which format is"<lanuguage>_<REGION>".
- # This is to use internal only. Use to_s instead.
- def to_string
- s = @language.dup
- s << "_" << @region if @region
- s
- end
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/taglist.rb b/vendor/gems/locale-2.0.5/lib/locale/taglist.rb
deleted file mode 100644
index e5d879cc3..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/taglist.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-=begin
- taglist.rb - Locale module
-
- Copyright (C) 2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- $Id: taglist.rb 27 2008-12-03 15:06:50Z mutoh $
-=end
-
-require 'locale/util/memoizable'
-
-module Locale
- # This provides the subclass of Array which behaves like
- # the first(top priority) Locale::Tag object.
- # "Locale.current.language" is same with "Locale.current[0].language".
- #
- # Locale.current returns an Array of Tag(s) now.
- # But the old Locale.current(Ruby-GetText) and Locale.get
- # returns Locale::Object (similier with Locale::Tag::Posix).
- # This is the class for backward compatibility.
- #
- # It is recommanded to use Locale.current[0] or
- # Locale.candidates to find the current locale instead
- # of this function.
- #
- class TagList < Array
- include Util::Memoizable
-
- # Returns the top priority language. (simple)
- def language
- self[0].language
- end
- # Returns the top priority region/country. (simple)
- def country
- self[0].region
- end
- # Returns the top priority region/country. (simple)
- def region
- self[0].region
- end
- # Returns the top priority script. (common)
- def script
- self[0].script
- end
- # Returns the top priority charset. (posix)
- def charset
- if self[0].respond_to? :charset
- self[0].charset
- else
- ::Locale.driver_module.charset
- end
- end
- memoize :charset
-
- # Returns the top priority modifier. (posix)
- def modifier
- (self[0].respond_to? :modifier) ? self[0].modifier : nil
- end
- memoize :modifier
-
- # Returns the top priority variants.(common, rfc, cldr)
- def variants
- (self[0].respond_to? :variants) ? self[0].variants : nil
- end
- memoize :variants
-
- # Returns the top priority extensions.(common, rfc, cldr)
- def extensions
- (self[0].respond_to? :extensions) ? self[0].extensions : nil
- end
- memoize :extensions
-
- # Returns the top priority privateuse(rfc)
- def privateuse
- (self[0].respond_to? :privateuse) ? self[0].privateuse : nil
- end
- memoize :privateuse
-
- def to_str
- self[0].to_str
- end
-
- def to_s
- self[0].to_s
- end
-
- def to_common
- self[0].to_common
- end
-
- def to_simple
- self[0].to_simple
- end
-
- def to_rfc
- self[0].to_rfc
- end
-
- def to_cldr
- self[0].to_cldr
- end
-
- def to_posix
- self[0].to_posix
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/util/memoizable.rb b/vendor/gems/locale-2.0.5/lib/locale/util/memoizable.rb
deleted file mode 100644
index b26ffc86c..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/util/memoizable.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-# Refer from activesupport-2.2.0.
-#
-# * Remove the dependecies to activesupport.
-# * change the key to hash value of args.
-# * Not Thread safe
-# * Add the clear method.
-module Locale
- module Util
- module Memoizable
- MEMOIZED_IVAR = Proc.new do |symbol|
- "#{symbol.to_s.sub(/\?\Z/, '_query').sub(/!\Z/, '_bang')}".to_sym
- end
-
- def self.included(base)
- mod = self
- base.class_eval do
- extend mod
- end
- end
-
- alias :freeze_without_memoizable :freeze #:nodoc:
- def freeze #:nodoc:
- unless frozen?
- @_memoized_ivars = {}
- freeze_without_memoizable
- end
- end
-
- # Clear memoized values. Deprecated.
- def clear # :nodoc:
- @_memoized_ivars = {}
- end
-
- # Clear memoized values.
- def memoize_clear
- @_memoized_ivars = {}
- end
-
- # Cache the result of the methods.
- #
- # include Memoizable
- # def foo
- # ......
- # end
- # def bar(a, b)
- # ......
- # end
- # memoize :foo, :bar(a, b)
- #
- # To clear cache, #clear_foo, #clear_bar is also defined.
- #
- # (NOTE)
- # * Consider to use this with huge objects to avoid memory leaks.
- # * Can't use this with super.<method> because of infinity loop.
- def memoize(*symbols)
- memoize_impl(false, *symbols)
- end
-
- # memoize with dup. A copy object is returned.
- def memoize_dup(*symbols)
- memoize_impl(true, *symbols)
- end
-
- def memoize_impl(is_dup, *symbols) #:nodoc:
- symbols.each do |symbol|
- original_method = "_unmemoized_#{symbol}"
- memoized_ivar = MEMOIZED_IVAR.call(symbol)
- dup_meth = is_dup ? "_dup" : ""
-
- class_eval <<-EOS, __FILE__, __LINE__
- alias #{original_method} #{symbol}
- def #{symbol}(*args)
- _memoize#{dup_meth}(:#{memoized_ivar}, args.hash) do
- #{original_method}(*args)
- end
- end
- EOS
- end
- end
-
- def _memoize(ivar, key) #:nodoc:
- @_memoized_ivars ||= {}
- @_memoized_ivars[ivar] ||= {}
-
- ret = @_memoized_ivars[ivar][key]
- unless ret
- ret = yield
- ret.freeze
- @_memoized_ivars[ivar][key] = ret
- end
- ret
- end
-
- def _memoize_dup(ivar, key) #:nodoc:
- ret = _memoize(ivar, key) do; yield; end
- if ret
- if ret.kind_of? Array
- ret.map{|v| v.dup}.dup
- else
- ret.dup
- end
- else
- nil
- end
- end
- end
- end
-end
diff --git a/vendor/gems/locale-2.0.5/lib/locale/version.rb b/vendor/gems/locale-2.0.5/lib/locale/version.rb
deleted file mode 100644
index 63bb15b35..000000000
--- a/vendor/gems/locale-2.0.5/lib/locale/version.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-=begin
- version - version information of Ruby-Locale
-
- Copyright (C) 2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-module Locale
- VERSION = "2.0.5"
-end
-
diff --git a/vendor/gems/locale-2.0.5/samples/cgi/README b/vendor/gems/locale-2.0.5/samples/cgi/README
deleted file mode 100644
index e11819306..000000000
--- a/vendor/gems/locale-2.0.5/samples/cgi/README
+++ /dev/null
@@ -1,20 +0,0 @@
-Sample script for CGI/ERB and Ruby/Locale.
-
-Run the http server.
-$ ruby http.rb
-
-Access the http server from WWW browser:
-
-http://localhost:10080/
-
-or
-
-If you want to set locale(lang) forcely, then:
-
-http://localhost:10080/?lang=ja
- #ja is a target locale in this sample.
-
-http.rb - an http server for samples using WEBrick
-index.cgi - a sample menu (CGI sample)
-cookie.cgi - Set lang to cookie value.
-locale.css - CSS file.
diff --git a/vendor/gems/locale-2.0.5/samples/cgi/cookie.cgi b/vendor/gems/locale-2.0.5/samples/cgi/cookie.cgi
deleted file mode 100755
index 06adbc813..000000000
--- a/vendor/gems/locale-2.0.5/samples/cgi/cookie.cgi
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- cookie.cgi - Set a selected locale to the cookie of WWW Browser.
-
- Set UTF-8 forcely as output charset.
-
- Recommanded to set UTF-8 forcely because some web browser
- doesn't send HTTP_ACCEPT_CHARSET correctly.
-
- Copyright (C) 2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-
-$:<< "../../lib"
-
-require 'locale'
-require 'cgi'
-
-# Initialization of Locale library.
-Locale.init(:driver => :cgi)
-cgi = CGI.new
-Locale.set_cgi(cgi)
-
-# Get "lang" from the query string.
-lang = cgi["lang"] or ""
-
-#
-# CGI part
-#
-print "Set-Cookie:lang=#{lang}\n"
-print "Content-type:text/html; charset=UTF-8\n\n"
-
-puts %Q[
-<html>
-<head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <link rel="stylesheet" type="text/css" href="locale.css" media="all">
- <title>Sample script for CGI and Ruby/Locale</title>
-</head>
-<body>
-
-<div style="text-align:center; margin:5em;">
-]
-
-if lang.size > 0
- puts %Q!<p><div id="result">Set [#{lang}] as the cookie of your WWW browser.</div></p>!
-else
- puts %Q!<p><div id="result">Clear "lang" value from your WWW browser.</div></p>!
-end
-
-puts %Q!
-<p style="margin:2em;"><a href="/">Back</a></p>
-</div>
-<div style="text-align:right">
- <p>Copyright (C) 2008 Masao Mutoh</p>
-</div>
-</body>
-</html>
-!
-
diff --git a/vendor/gems/locale-2.0.5/samples/cgi/http.rb b/vendor/gems/locale-2.0.5/samples/cgi/http.rb
deleted file mode 100755
index 033d451f3..000000000
--- a/vendor/gems/locale-2.0.5/samples/cgi/http.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-#! /usr/bin/env ruby
-=begin
- http.rb - An WebServer for hello locale sample.
-
- Copyright (C) 2005-2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-
- Original: Ruby-GetText-Package 1.92.0
-
- $Id$
-=end
-
-require 'webrick'
-require 'cgi'
-require 'rbconfig'
-
-interpreter = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) +
- Config::CONFIG['EXEEXT']
-
-srv = WEBrick::HTTPServer.new({:BindAddress => '127.0.0.1',
- :Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
- # :CGIInterpreter => "ruby -d",
- :Port => 10080})
-
-['INT', 'TERM'].each { |signal|
- trap(signal){ srv.shutdown}
-}
-
-srv.mount("/", WEBrick::HTTPServlet::FileHandler, File.expand_path('.'))
-
-srv.mount_proc("/src/") do |req, res|
- res.header["Content-Type"] = "text/html; charset=UTF-8"
- if req.query_string
- file = File.open(req.query_string).read
- res.body = %Q[<html>
- <head>
- <title>View a source code</title>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <link rel="stylesheet" type="text/css" href="/gettext.css" media="all">
- </head>
- <body><h1>#{req.query_string}</h1>
- <pre>#{CGI.escapeHTML(file)}</pre>
- <p><a href="/">Back</a></p>
- </body>
- </html>
- ]
- end
-end
-
-srv.start
diff --git a/vendor/gems/locale-2.0.5/samples/cgi/index.cgi b/vendor/gems/locale-2.0.5/samples/cgi/index.cgi
deleted file mode 100755
index 47eb45237..000000000
--- a/vendor/gems/locale-2.0.5/samples/cgi/index.cgi
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env ruby
-=begin
- index.cgi - Sample script for CGI
-
- Copyright (C) 2008 Masao Mutoh
-
- You may redistribute it and/or modify it under the same
- license terms as Ruby.
-=end
-$:<< "../../lib"
-
-begin
- require 'rubygems'
-rescue LoadError
-end
-
-require 'locale'
-require 'cgi'
-
-# Initialize Locale library.
-Locale.init(:driver => :cgi)
-cgi = CGI.new
-Locale.set_cgi(cgi)
-
-
-url_base = "http://#{cgi.server_name}:#{cgi.server_port}/"
-
-sample_locales = ["en-US", "fr-FR", "ja-JP"]
-
-langs = Locale.candidates(:type => :common) #Try :rfc, :simple and others.
-
-
-#
-# CGI part
-#
-
-print "Content-type:text/html; charset=UTF-8\n\n"
-
-puts %Q[<html><head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <link rel="stylesheet" type="text/css" href="locale.css" media="all">
- <title>Sample script for CGI/ERB and Ruby/Locale</title>
-</head>
-<body>
-<h1>Ruby/Locale CGI sample scripts</h1>
-<p>Requested Locales order by the priority:</p>
-<div id="result">#{CGI.escapeHTML(langs.inspect)}</div>
-
-<h2>Auto-Detect the locale from the WWW browser</h2>
-<p><a href="./">#{url_base}</a></p>
-
-<h2>Set locale as the "lang" parameter</h2>
-<ol>
-]
-sample_locales.each do |lang|
- url = url_base + "?lang=" + lang
- puts %Q!<li> <a href="#{url}">#{CGI.escapeHTML(url)}</a> [#{lang}]</li>!
-end
-url = url_base + "?lang=zh_CN;lang=ko_KR"
-puts %Q!<li> <a href="#{url}">#{CGI.escapeHTML(url)}</a> [Plural locales]</li>!
-
-puts "</ol>"
-puts %Q[<h2>Set "lang" as the cookie value.</h2>
-<p>Click one of the link below, and then click "Auto-Detect the locale from the WWW browser".</p>
-<ol>]
-
-sample_locales.each do |lang|
- url = url_base + "cookie.cgi?lang=" + lang
- puts %Q!<li><a href="#{url}">#{CGI.escapeHTML(url)}</a> [#{lang}]</li>!
-end
-puts %Q!<li><a href="cookie.cgi">Clear the cookie value</a></li>!
-
-puts "</ol>"
-puts "<h2>Source codes</h2>"
-puts "<ol>"
-
-Dir.glob("*cgi\0*rb)").sort.each do |src|
- unless /http.rb|makemo.rb/ =~ src
- puts %Q[<li><a href="/src/?#{src}">#{src}</a></li>]
- end
-end
-puts %Q[</ol>
-<hr/>
- <div class="copyright">
- <p>Copyright (C) 2008 Masao Mutoh</p>
- </div>
-</body>
-</html>
-]
-
diff --git a/vendor/gems/locale-2.0.5/samples/cgi/locale.css b/vendor/gems/locale-2.0.5/samples/cgi/locale.css
deleted file mode 100644
index 6a7f9d8da..000000000
--- a/vendor/gems/locale-2.0.5/samples/cgi/locale.css
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- CSS for Ruby/Locale
- by Masao Mutoh.
-*/
-
-body {
- margin: 0px;
- padding: 0px;
- color: #000;
- background-color: #fff;
- font-size: 90%;
- font-family: Times, Sans-Serif;
- line-height: 1.5em;
-}
-
-h1 {
- color: #002288;
- text-align: left;
- clear: both;
- padding:0.4em;
- font-weight: bold;
- font-size: 1.8em;
- padding-left:0.5em;
- padding-right:10px;
- margin-top: 10px;
- margin-left: 20px;
- margin-bottom:1em;
- margin-right:5px;
- border: solid thin;
- border-left: solid;
- border-color: #9999ff;
- border-top-width: 0px;
- border-right-width: 0px;
- border-bottom-width: 1px;
- border-left-width: 15px;
-}
-h2 {
- margin: 0px;
- font-size: large;
- font-weight: bold;
- font-size: 1.4em;
- padding: 0.3em;
- padding-left:0.5em;
- padding-right:10px;
- margin-top: 1em;
- margin-left: 1.5em;
- margin-right: 10px;
- margin-bottom:0.8em;
- border: solid thin;
- border-left: solid;
- border-color: #9999ff;
- border-top-width: 0px;
- border-right-width: 0px;
- border-bottom-width: 1px;
- border-left-width: 15px;
-
-}
-
-h3 {
- margin:1em;
- margin-bottom: 0.5em;
- margin-top: 1.5em;
- margin-left: 2em;
- margin-right: 24px;
- padding: 0.1em;
- padding-top: 0;
- padding-left: 0.7em;
- font-size: 1.2em;
- border-style: dashed;
- border-width: 0px 0px 1px 1px;
- border-color: #ddddff;
-}
-
-p {
- padding-left: 1em;
- padding-right: 1em;
- margin-top: 0px;
- margin-left: 1.5em;
- margin-right: 1em;
- margin-bottom: 0.5em;
-}
-
-ol, ul {
- margin-top: 0.2em;
- margin-left: 3em;
- padding-left: 1.5em;
-}
-
-li {
- margin-top: 0.2em;
- margin-left: 0em;
- padding-left: 0em;
- line-height: 1.2em;
-}
-
-#result {
- color: red;
- font-weight: bold;
- padding-left: 3em;
- padding-right: 3em;
-}
-
-pre {
- margin: 2em;
- padding: 1em;
- border-style: solid;
- border-width: 1px 1px 1px 1px;
- border-color: #ddddff;
- background-color: #eeffee;
-}
-
-.copyright {
- text-align: right;
- padding: 2em;
-}
diff --git a/vendor/gems/locale-2.0.5/samples/rack/README b/vendor/gems/locale-2.0.5/samples/rack/README
deleted file mode 100644
index 9da49eeb4..000000000
--- a/vendor/gems/locale-2.0.5/samples/rack/README
+++ /dev/null
@@ -1,10 +0,0 @@
-= Install Rack:
-$ sudo gem install rack
-
-= Run rack server:
-$rackup hello_rack.ru
-
-= Access from WWW browser:
-http://localhost:9292/
-http://localhost:9292/?lang=ja
-
diff --git a/vendor/gems/locale-2.0.5/samples/rack/hello_rack.rb b/vendor/gems/locale-2.0.5/samples/rack/hello_rack.rb
deleted file mode 100644
index d6cb16013..000000000
--- a/vendor/gems/locale-2.0.5/samples/rack/hello_rack.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'rubygems'
-require 'rack'
-require 'locale'
-
-Locale.init(:driver => :cgi)
-
-class HelloRackApp
- def call(env)
- req = Rack::Request.new(env)
- Locale.set_request(req["lang"], req.cookies["lang"],
- env["HTTP_ACCEPT_LANGUAGE"], env["HTTP_ACCEPT_CHARSET"])
- str = "Language tag candidates of your request order by the priority:\n\n"
- str += Locale.candidates(:type => :rfc).map{|v| v.inspect + "\n"}.join
- [200, {"Content-Type" => "text/plain", "Content-Length" => str.length.to_s}, [str]]
- end
-end
-
diff --git a/vendor/gems/locale-2.0.5/samples/rack/hello_rack.ru b/vendor/gems/locale-2.0.5/samples/rack/hello_rack.ru
deleted file mode 100644
index a97748d05..000000000
--- a/vendor/gems/locale-2.0.5/samples/rack/hello_rack.ru
+++ /dev/null
@@ -1,5 +0,0 @@
-$LOAD_PATH.unshift "../../lib"
-
-require 'hello_rack'
-run HelloRackApp.new
-
diff --git a/vendor/gems/locale-2.0.5/samples/sample_1.rb b/vendor/gems/locale-2.0.5/samples/sample_1.rb
deleted file mode 100644
index 2be192fe4..000000000
--- a/vendor/gems/locale-2.0.5/samples/sample_1.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'rubygems'
-require 'locale'
-
-puts "Get the current locale."
-
-p Locale.current #=> Returns a language in a TagList.
-p Locale.charset
-p Locale.current.language
-p Locale.current[0].language #=> same result.
-
-ENV["LANGUAGE"] = "ja_JP.eucJP:fr_FR"
-puts "Set LANGUAGE." + ENV["LANGUAGE"]
-
-# Clear locale because the values are cached.
-Locale.clear
-
-p Locale.current #=> Return 2 languages in a TagList.
-p Locale.current[0].language
-p Locale.current[1].language
-p Locale.current.language #=> Same with Locale.current[0].language.
-p Locale.charset
-
-p "Locale.candidates"
-p Locale.current
-p Locale.candidates
diff --git a/vendor/gems/locale-2.0.5/samples/sample_info.rb b/vendor/gems/locale-2.0.5/samples/sample_info.rb
deleted file mode 100644
index 79681c58a..000000000
--- a/vendor/gems/locale-2.0.5/samples/sample_info.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-require 'rubygems'
-require 'locale/info'
-
-p Locale::Info.get_language("ja")
-p Locale::Info.get_region("JP")
-
diff --git a/vendor/gems/locale-2.0.5/setup.rb b/vendor/gems/locale-2.0.5/setup.rb
deleted file mode 100644
index 424a5f37c..000000000
--- a/vendor/gems/locale-2.0.5/setup.rb
+++ /dev/null
@@ -1,1585 +0,0 @@
-#
-# setup.rb
-#
-# Copyright (c) 2000-2005 Minero Aoki
-#
-# This program is free software.
-# You can distribute/modify this program under the terms of
-# the GNU LGPL, Lesser General Public License version 2.1.
-#
-
-unless Enumerable.method_defined?(:map) # Ruby 1.4.6
- module Enumerable
- alias map collect
- end
-end
-
-unless File.respond_to?(:read) # Ruby 1.6
- def File.read(fname)
- open(fname) {|f|
- return f.read
- }
- end
-end
-
-unless Errno.const_defined?(:ENOTEMPTY) # Windows?
- module Errno
- class ENOTEMPTY
- # We do not raise this exception, implementation is not needed.
- end
- end
-end
-
-def File.binread(fname)
- open(fname, 'rb') {|f|
- return f.read
- }
-end
-
-# for corrupted Windows' stat(2)
-def File.dir?(path)
- File.directory?((path[-1,1] == '/') ? path : path + '/')
-end
-
-
-class ConfigTable
-
- include Enumerable
-
- def initialize(rbconfig)
- @rbconfig = rbconfig
- @items = []
- @table = {}
- # options
- @install_prefix = nil
- @config_opt = nil
- @verbose = true
- @no_harm = false
- end
-
- attr_accessor :install_prefix
- attr_accessor :config_opt
-
- attr_writer :verbose
-
- def verbose?
- @verbose
- end
-
- attr_writer :no_harm
-
- def no_harm?
- @no_harm
- end
-
- def [](key)
- lookup(key).resolve(self)
- end
-
- def []=(key, val)
- lookup(key).set val
- end
-
- def names
- @items.map {|i| i.name }
- end
-
- def each(&block)
- @items.each(&block)
- end
-
- def key?(name)
- @table.key?(name)
- end
-
- def lookup(name)
- @table[name] or setup_rb_error "no such config item: #{name}"
- end
-
- def add(item)
- @items.push item
- @table[item.name] = item
- end
-
- def remove(name)
- item = lookup(name)
- @items.delete_if {|i| i.name == name }
- @table.delete_if {|name, i| i.name == name }
- item
- end
-
- def load_script(path, inst = nil)
- if File.file?(path)
- MetaConfigEnvironment.new(self, inst).instance_eval File.read(path), path
- end
- end
-
- def savefile
- '.config'
- end
-
- def load_savefile
- begin
- File.foreach(savefile()) do |line|
- k, v = *line.split(/=/, 2)
- self[k] = v.strip
- end
- rescue Errno::ENOENT
- setup_rb_error $!.message + "\n#{File.basename($0)} config first"
- end
- end
-
- def save
- @items.each {|i| i.value }
- File.open(savefile(), 'w') {|f|
- @items.each do |i|
- f.printf "%s=%s\n", i.name, i.value if i.value? and i.value
- end
- }
- end
-
- def load_standard_entries
- standard_entries(@rbconfig).each do |ent|
- add ent
- end
- end
-
- def standard_entries(rbconfig)
- c = rbconfig
-
- rubypath = File.join(c['bindir'], c['ruby_install_name'] + c['EXEEXT'])
-
- major = c['MAJOR'].to_i
- minor = c['MINOR'].to_i
- teeny = c['TEENY'].to_i
- version = "#{major}.#{minor}"
-
- # ruby ver. >= 1.4.4?
- newpath_p = ((major >= 2) or
- ((major == 1) and
- ((minor >= 5) or
- ((minor == 4) and (teeny >= 4)))))
-
- if c['rubylibdir']
- # V > 1.6.3
- libruby = "#{c['prefix']}/lib/ruby"
- librubyver = c['rubylibdir']
- librubyverarch = c['archdir']
- siteruby = c['sitedir']
- siterubyver = c['sitelibdir']
- siterubyverarch = c['sitearchdir']
- elsif newpath_p
- # 1.4.4 <= V <= 1.6.3
- libruby = "#{c['prefix']}/lib/ruby"
- librubyver = "#{c['prefix']}/lib/ruby/#{version}"
- librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
- siteruby = c['sitedir']
- siterubyver = "$siteruby/#{version}"
- siterubyverarch = "$siterubyver/#{c['arch']}"
- else
- # V < 1.4.4
- libruby = "#{c['prefix']}/lib/ruby"
- librubyver = "#{c['prefix']}/lib/ruby/#{version}"
- librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
- siteruby = "#{c['prefix']}/lib/ruby/#{version}/site_ruby"
- siterubyver = siteruby
- siterubyverarch = "$siterubyver/#{c['arch']}"
- end
- parameterize = lambda {|path|
- path.sub(/\A#{Regexp.quote(c['prefix'])}/, '$prefix')
- }
-
- if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg }
- makeprog = arg.sub(/'/, '').split(/=/, 2)[1]
- else
- makeprog = 'make'
- end
-
- [
- ExecItem.new('installdirs', 'std/site/home',
- 'std: install under libruby; site: install under site_ruby; home: install under $HOME')\
- {|val, table|
- case val
- when 'std'
- table['rbdir'] = '$librubyver'
- table['sodir'] = '$librubyverarch'
- when 'site'
- table['rbdir'] = '$siterubyver'
- table['sodir'] = '$siterubyverarch'
- when 'home'
- setup_rb_error '$HOME was not set' unless ENV['HOME']
- table['prefix'] = ENV['HOME']
- table['rbdir'] = '$libdir/ruby'
- table['sodir'] = '$libdir/ruby'
- end
- },
- PathItem.new('prefix', 'path', c['prefix'],
- 'path prefix of target environment'),
- PathItem.new('bindir', 'path', parameterize.call(c['bindir']),
- 'the directory for commands'),
- PathItem.new('libdir', 'path', parameterize.call(c['libdir']),
- 'the directory for libraries'),
- PathItem.new('datadir', 'path', parameterize.call(c['datadir']),
- 'the directory for shared data'),
- PathItem.new('mandir', 'path', parameterize.call(c['mandir']),
- 'the directory for man pages'),
- PathItem.new('sysconfdir', 'path', parameterize.call(c['sysconfdir']),
- 'the directory for system configuration files'),
- PathItem.new('localstatedir', 'path', parameterize.call(c['localstatedir']),
- 'the directory for local state data'),
- PathItem.new('libruby', 'path', libruby,
- 'the directory for ruby libraries'),
- PathItem.new('librubyver', 'path', librubyver,
- 'the directory for standard ruby libraries'),
- PathItem.new('librubyverarch', 'path', librubyverarch,
- 'the directory for standard ruby extensions'),
- PathItem.new('siteruby', 'path', siteruby,
- 'the directory for version-independent aux ruby libraries'),
- PathItem.new('siterubyver', 'path', siterubyver,
- 'the directory for aux ruby libraries'),
- PathItem.new('siterubyverarch', 'path', siterubyverarch,
- 'the directory for aux ruby binaries'),
- PathItem.new('rbdir', 'path', '$siterubyver',
- 'the directory for ruby scripts'),
- PathItem.new('sodir', 'path', '$siterubyverarch',
- 'the directory for ruby extentions'),
- PathItem.new('rubypath', 'path', rubypath,
- 'the path to set to #! line'),
- ProgramItem.new('rubyprog', 'name', rubypath,
- 'the ruby program using for installation'),
- ProgramItem.new('makeprog', 'name', makeprog,
- 'the make program to compile ruby extentions'),
- SelectItem.new('shebang', 'all/ruby/never', 'ruby',
- 'shebang line (#!) editing mode'),
- BoolItem.new('without-ext', 'yes/no', 'no',
- 'does not compile/install ruby extentions')
- ]
- end
- private :standard_entries
-
- def load_multipackage_entries
- multipackage_entries().each do |ent|
- add ent
- end
- end
-
- def multipackage_entries
- [
- PackageSelectionItem.new('with', 'name,name...', '', 'ALL',
- 'package names that you want to install'),
- PackageSelectionItem.new('without', 'name,name...', '', 'NONE',
- 'package names that you do not want to install')
- ]
- end
- private :multipackage_entries
-
- ALIASES = {
- 'std-ruby' => 'librubyver',
- 'stdruby' => 'librubyver',
- 'rubylibdir' => 'librubyver',
- 'archdir' => 'librubyverarch',
- 'site-ruby-common' => 'siteruby', # For backward compatibility
- 'site-ruby' => 'siterubyver', # For backward compatibility
- 'bin-dir' => 'bindir',
- 'bin-dir' => 'bindir',
- 'rb-dir' => 'rbdir',
- 'so-dir' => 'sodir',
- 'data-dir' => 'datadir',
- 'ruby-path' => 'rubypath',
- 'ruby-prog' => 'rubyprog',
- 'ruby' => 'rubyprog',
- 'make-prog' => 'makeprog',
- 'make' => 'makeprog'
- }
-
- def fixup
- ALIASES.each do |ali, name|
- @table[ali] = @table[name]
- end
- @items.freeze
- @table.freeze
- @options_re = /\A--(#{@table.keys.join('|')})(?:=(.*))?\z/
- end
-
- def parse_opt(opt)
- m = @options_re.match(opt) or setup_rb_error "config: unknown option #{opt}"
- m.to_a[1,2]
- end
-
- def dllext
- @rbconfig['DLEXT']
- end
-
- def value_config?(name)
- lookup(name).value?
- end
-
- class Item
- def initialize(name, template, default, desc)
- @name = name.freeze
- @template = template
- @value = default
- @default = default
- @description = desc
- end
-
- attr_reader :name
- attr_reader :description
-
- attr_accessor :default
- alias help_default default
-
- def help_opt
- "--#{@name}=#{@template}"
- end
-
- def value?
- true
- end
-
- def value
- @value
- end
-
- def resolve(table)
- @value.gsub(%r<\$([^/]+)>) { table[$1] }
- end
-
- def set(val)
- @value = check(val)
- end
-
- private
-
- def check(val)
- setup_rb_error "config: --#{name} requires argument" unless val
- val
- end
- end
-
- class BoolItem < Item
- def config_type
- 'bool'
- end
-
- def help_opt
- "--#{@name}"
- end
-
- private
-
- def check(val)
- return 'yes' unless val
- case val
- when /\Ay(es)?\z/i, /\At(rue)?\z/i then 'yes'
- when /\An(o)?\z/i, /\Af(alse)\z/i then 'no'
- else
- setup_rb_error "config: --#{@name} accepts only yes/no for argument"
- end
- end
- end
-
- class PathItem < Item
- def config_type
- 'path'
- end
-
- private
-
- def check(path)
- setup_rb_error "config: --#{@name} requires argument" unless path
- path[0,1] == '$' ? path : File.expand_path(path)
- end
- end
-
- class ProgramItem < Item
- def config_type
- 'program'
- end
- end
-
- class SelectItem < Item
- def initialize(name, selection, default, desc)
- super
- @ok = selection.split('/')
- end
-
- def config_type
- 'select'
- end
-
- private
-
- def check(val)
- unless @ok.include?(val.strip)
- setup_rb_error "config: use --#{@name}=#{@template} (#{val})"
- end
- val.strip
- end
- end
-
- class ExecItem < Item
- def initialize(name, selection, desc, &block)
- super name, selection, nil, desc
- @ok = selection.split('/')
- @action = block
- end
-
- def config_type
- 'exec'
- end
-
- def value?
- false
- end
-
- def resolve(table)
- setup_rb_error "$#{name()} wrongly used as option value"
- end
-
- undef set
-
- def evaluate(val, table)
- v = val.strip.downcase
- unless @ok.include?(v)
- setup_rb_error "invalid option --#{@name}=#{val} (use #{@template})"
- end
- @action.call v, table
- end
- end
-
- class PackageSelectionItem < Item
- def initialize(name, template, default, help_default, desc)
- super name, template, default, desc
- @help_default = help_default
- end
-
- attr_reader :help_default
-
- def config_type
- 'package'
- end
-
- private
-
- def check(val)
- unless File.dir?("packages/#{val}")
- setup_rb_error "config: no such package: #{val}"
- end
- val
- end
- end
-
- class MetaConfigEnvironment
- def initialize(config, installer)
- @config = config
- @installer = installer
- end
-
- def config_names
- @config.names
- end
-
- def config?(name)
- @config.key?(name)
- end
-
- def bool_config?(name)
- @config.lookup(name).config_type == 'bool'
- end
-
- def path_config?(name)
- @config.lookup(name).config_type == 'path'
- end
-
- def value_config?(name)
- @config.lookup(name).config_type != 'exec'
- end
-
- def add_config(item)
- @config.add item
- end
-
- def add_bool_config(name, default, desc)
- @config.add BoolItem.new(name, 'yes/no', default ? 'yes' : 'no', desc)
- end
-
- def add_path_config(name, default, desc)
- @config.add PathItem.new(name, 'path', default, desc)
- end
-
- def set_config_default(name, default)
- @config.lookup(name).default = default
- end
-
- def remove_config(name)
- @config.remove(name)
- end
-
- # For only multipackage
- def packages
- raise '[setup.rb fatal] multi-package metaconfig API packages() called for single-package; contact application package vendor' unless @installer
- @installer.packages
- end
-
- # For only multipackage
- def declare_packages(list)
- raise '[setup.rb fatal] multi-package metaconfig API declare_packages() called for single-package; contact application package vendor' unless @installer
- @installer.packages = list
- end
- end
-
-end # class ConfigTable
-
-
-# This module requires: #verbose?, #no_harm?
-module FileOperations
-
- def mkdir_p(dirname, prefix = nil)
- dirname = prefix + File.expand_path(dirname) if prefix
- $stderr.puts "mkdir -p #{dirname}" if verbose?
- return if no_harm?
-
- # Does not check '/', it's too abnormal.
- dirs = File.expand_path(dirname).split(%r<(?=/)>)
- if /\A[a-z]:\z/i =~ dirs[0]
- disk = dirs.shift
- dirs[0] = disk + dirs[0]
- end
- dirs.each_index do |idx|
- path = dirs[0..idx].join('')
- Dir.mkdir path unless File.dir?(path)
- end
- end
-
- def rm_f(path)
- $stderr.puts "rm -f #{path}" if verbose?
- return if no_harm?
- force_remove_file path
- end
-
- def rm_rf(path)
- $stderr.puts "rm -rf #{path}" if verbose?
- return if no_harm?
- remove_tree path
- end
-
- def remove_tree(path)
- if File.symlink?(path)
- remove_file path
- elsif File.dir?(path)
- remove_tree0 path
- else
- force_remove_file path
- end
- end
-
- def remove_tree0(path)
- Dir.foreach(path) do |ent|
- next if ent == '.'
- next if ent == '..'
- entpath = "#{path}/#{ent}"
- if File.symlink?(entpath)
- remove_file entpath
- elsif File.dir?(entpath)
- remove_tree0 entpath
- else
- force_remove_file entpath
- end
- end
- begin
- Dir.rmdir path
- rescue Errno::ENOTEMPTY
- # directory may not be empty
- end
- end
-
- def move_file(src, dest)
- force_remove_file dest
- begin
- File.rename src, dest
- rescue
- File.open(dest, 'wb') {|f|
- f.write File.binread(src)
- }
- File.chmod File.stat(src).mode, dest
- File.unlink src
- end
- end
-
- def force_remove_file(path)
- begin
- remove_file path
- rescue
- end
- end
-
- def remove_file(path)
- File.chmod 0777, path
- File.unlink path
- end
-
- def install(from, dest, mode, prefix = nil)
- $stderr.puts "install #{from} #{dest}" if verbose?
- return if no_harm?
-
- realdest = prefix ? prefix + File.expand_path(dest) : dest
- realdest = File.join(realdest, File.basename(from)) if File.dir?(realdest)
- str = File.binread(from)
- if diff?(str, realdest)
- verbose_off {
- rm_f realdest if File.exist?(realdest)
- }
- File.open(realdest, 'wb') {|f|
- f.write str
- }
- File.chmod mode, realdest
-
- File.open("#{objdir_root()}/InstalledFiles", 'a') {|f|
- if prefix
- f.puts realdest.sub(prefix, '')
- else
- f.puts realdest
- end
- }
- end
- end
-
- def diff?(new_content, path)
- return true unless File.exist?(path)
- new_content != File.binread(path)
- end
-
- def command(*args)
- $stderr.puts args.join(' ') if verbose?
- system(*args) or raise RuntimeError,
- "system(#{args.map{|a| a.inspect }.join(' ')}) failed"
- end
-
- def ruby(*args)
- command config('rubyprog'), *args
- end
-
- def make(task = nil)
- command(*[config('makeprog'), task].compact)
- end
-
- def extdir?(dir)
- File.exist?("#{dir}/MANIFEST") or File.exist?("#{dir}/extconf.rb")
- end
-
- def files_of(dir)
- Dir.open(dir) {|d|
- return d.select {|ent| File.file?("#{dir}/#{ent}") }
- }
- end
-
- DIR_REJECT = %w( . .. CVS SCCS RCS CVS.adm .svn )
-
- def directories_of(dir)
- Dir.open(dir) {|d|
- return d.select {|ent| File.dir?("#{dir}/#{ent}") } - DIR_REJECT
- }
- end
-
-end
-
-
-# This module requires: #srcdir_root, #objdir_root, #relpath
-module HookScriptAPI
-
- def get_config(key)
- @config[key]
- end
-
- alias config get_config
-
- # obsolete: use metaconfig to change configuration
- def set_config(key, val)
- @config[key] = val
- end
-
- #
- # srcdir/objdir (works only in the package directory)
- #
-
- def curr_srcdir
- "#{srcdir_root()}/#{relpath()}"
- end
-
- def curr_objdir
- "#{objdir_root()}/#{relpath()}"
- end
-
- def srcfile(path)
- "#{curr_srcdir()}/#{path}"
- end
-
- def srcexist?(path)
- File.exist?(srcfile(path))
- end
-
- def srcdirectory?(path)
- File.dir?(srcfile(path))
- end
-
- def srcfile?(path)
- File.file?(srcfile(path))
- end
-
- def srcentries(path = '.')
- Dir.open("#{curr_srcdir()}/#{path}") {|d|
- return d.to_a - %w(. ..)
- }
- end
-
- def srcfiles(path = '.')
- srcentries(path).select {|fname|
- File.file?(File.join(curr_srcdir(), path, fname))
- }
- end
-
- def srcdirectories(path = '.')
- srcentries(path).select {|fname|
- File.dir?(File.join(curr_srcdir(), path, fname))
- }
- end
-
-end
-
-
-class ToplevelInstaller
-
- Version = '3.4.1'
- Copyright = 'Copyright (c) 2000-2005 Minero Aoki'
-
- TASKS = [
- [ 'all', 'do config, setup, then install' ],
- [ 'config', 'saves your configurations' ],
- [ 'show', 'shows current configuration' ],
- [ 'setup', 'compiles ruby extentions and others' ],
- [ 'install', 'installs files' ],
- [ 'test', 'run all tests in test/' ],
- [ 'clean', "does `make clean' for each extention" ],
- [ 'distclean',"does `make distclean' for each extention" ]
- ]
-
- def ToplevelInstaller.invoke
- config = ConfigTable.new(load_rbconfig())
- config.load_standard_entries
- config.load_multipackage_entries if multipackage?
- config.fixup
- klass = (multipackage?() ? ToplevelInstallerMulti : ToplevelInstaller)
- klass.new(File.dirname($0), config).invoke
- end
-
- def ToplevelInstaller.multipackage?
- File.dir?(File.dirname($0) + '/packages')
- end
-
- def ToplevelInstaller.load_rbconfig
- if arg = ARGV.detect {|arg| /\A--rbconfig=/ =~ arg }
- ARGV.delete(arg)
- load File.expand_path(arg.split(/=/, 2)[1])
- $".push 'rbconfig.rb'
- else
- require 'rbconfig'
- end
- ::Config::CONFIG
- end
-
- def initialize(ardir_root, config)
- @ardir = File.expand_path(ardir_root)
- @config = config
- # cache
- @valid_task_re = nil
- end
-
- def config(key)
- @config[key]
- end
-
- def inspect
- "#<#{self.class} #{__id__()}>"
- end
-
- def invoke
- run_metaconfigs
- case task = parsearg_global()
- when nil, 'all'
- parsearg_config
- init_installers
- exec_config
- exec_setup
- exec_install
- else
- case task
- when 'config', 'test'
- ;
- when 'clean', 'distclean'
- @config.load_savefile if File.exist?(@config.savefile)
- else
- @config.load_savefile
- end
- __send__ "parsearg_#{task}"
- init_installers
- __send__ "exec_#{task}"
- end
- end
-
- def run_metaconfigs
- @config.load_script "#{@ardir}/metaconfig"
- end
-
- def init_installers
- @installer = Installer.new(@config, @ardir, File.expand_path('.'))
- end
-
- #
- # Hook Script API bases
- #
-
- def srcdir_root
- @ardir
- end
-
- def objdir_root
- '.'
- end
-
- def relpath
- '.'
- end
-
- #
- # Option Parsing
- #
-
- def parsearg_global
- while arg = ARGV.shift
- case arg
- when /\A\w+\z/
- setup_rb_error "invalid task: #{arg}" unless valid_task?(arg)
- return arg
- when '-q', '--quiet'
- @config.verbose = false
- when '--verbose'
- @config.verbose = true
- when '--help'
- print_usage $stdout
- exit 0
- when '--version'
- puts "#{File.basename($0)} version #{Version}"
- exit 0
- when '--copyright'
- puts Copyright
- exit 0
- else
- setup_rb_error "unknown global option '#{arg}'"
- end
- end
- nil
- end
-
- def valid_task?(t)
- valid_task_re() =~ t
- end
-
- def valid_task_re
- @valid_task_re ||= /\A(?:#{TASKS.map {|task,desc| task }.join('|')})\z/
- end
-
- def parsearg_no_options
- unless ARGV.empty?
- task = caller(0).first.slice(%r<`parsearg_(\w+)'>, 1)
- setup_rb_error "#{task}: unknown options: #{ARGV.join(' ')}"
- end
- end
-
- alias parsearg_show parsearg_no_options
- alias parsearg_setup parsearg_no_options
- alias parsearg_test parsearg_no_options
- alias parsearg_clean parsearg_no_options
- alias parsearg_distclean parsearg_no_options
-
- def parsearg_config
- evalopt = []
- set = []
- @config.config_opt = []
- while i = ARGV.shift
- if /\A--?\z/ =~ i
- @config.config_opt = ARGV.dup
- break
- end
- name, value = *@config.parse_opt(i)
- if @config.value_config?(name)
- @config[name] = value
- else
- evalopt.push [name, value]
- end
- set.push name
- end
- evalopt.each do |name, value|
- @config.lookup(name).evaluate value, @config
- end
- # Check if configuration is valid
- set.each do |n|
- @config[n] if @config.value_config?(n)
- end
- end
-
- def parsearg_install
- @config.no_harm = false
- @config.install_prefix = ''
- while a = ARGV.shift
- case a
- when '--no-harm'
- @config.no_harm = true
- when /\A--prefix=/
- path = a.split(/=/, 2)[1]
- path = File.expand_path(path) unless path[0,1] == '/'
- @config.install_prefix = path
- else
- setup_rb_error "install: unknown option #{a}"
- end
- end
- end
-
- def print_usage(out)
- out.puts 'Typical Installation Procedure:'
- out.puts " $ ruby #{File.basename $0} config"
- out.puts " $ ruby #{File.basename $0} setup"
- out.puts " # ruby #{File.basename $0} install (may require root privilege)"
- out.puts
- out.puts 'Detailed Usage:'
- out.puts " ruby #{File.basename $0} <global option>"
- out.puts " ruby #{File.basename $0} [<global options>] <task> [<task options>]"
-
- fmt = " %-24s %s\n"
- out.puts
- out.puts 'Global options:'
- out.printf fmt, '-q,--quiet', 'suppress message outputs'
- out.printf fmt, ' --verbose', 'output messages verbosely'
- out.printf fmt, ' --help', 'print this message'
- out.printf fmt, ' --version', 'print version and quit'
- out.printf fmt, ' --copyright', 'print copyright and quit'
- out.puts
- out.puts 'Tasks:'
- TASKS.each do |name, desc|
- out.printf fmt, name, desc
- end
-
- fmt = " %-24s %s [%s]\n"
- out.puts
- out.puts 'Options for CONFIG or ALL:'
- @config.each do |item|
- out.printf fmt, item.help_opt, item.description, item.help_default
- end
- out.printf fmt, '--rbconfig=path', 'rbconfig.rb to load',"running ruby's"
- out.puts
- out.puts 'Options for INSTALL:'
- out.printf fmt, '--no-harm', 'only display what to do if given', 'off'
- out.printf fmt, '--prefix=path', 'install path prefix', ''
- out.puts
- end
-
- #
- # Task Handlers
- #
-
- def exec_config
- @installer.exec_config
- @config.save # must be final
- end
-
- def exec_setup
- @installer.exec_setup
- end
-
- def exec_install
- @installer.exec_install
- end
-
- def exec_test
- @installer.exec_test
- end
-
- def exec_show
- @config.each do |i|
- printf "%-20s %s\n", i.name, i.value if i.value?
- end
- end
-
- def exec_clean
- @installer.exec_clean
- end
-
- def exec_distclean
- @installer.exec_distclean
- end
-
-end # class ToplevelInstaller
-
-
-class ToplevelInstallerMulti < ToplevelInstaller
-
- include FileOperations
-
- def initialize(ardir_root, config)
- super
- @packages = directories_of("#{@ardir}/packages")
- raise 'no package exists' if @packages.empty?
- @root_installer = Installer.new(@config, @ardir, File.expand_path('.'))
- end
-
- def run_metaconfigs
- @config.load_script "#{@ardir}/metaconfig", self
- @packages.each do |name|
- @config.load_script "#{@ardir}/packages/#{name}/metaconfig"
- end
- end
-
- attr_reader :packages
-
- def packages=(list)
- raise 'package list is empty' if list.empty?
- list.each do |name|
- raise "directory packages/#{name} does not exist"\
- unless File.dir?("#{@ardir}/packages/#{name}")
- end
- @packages = list
- end
-
- def init_installers
- @installers = {}
- @packages.each do |pack|
- @installers[pack] = Installer.new(@config,
- "#{@ardir}/packages/#{pack}",
- "packages/#{pack}")
- end
- with = extract_selection(config('with'))
- without = extract_selection(config('without'))
- @selected = @installers.keys.select {|name|
- (with.empty? or with.include?(name)) \
- and not without.include?(name)
- }
- end
-
- def extract_selection(list)
- a = list.split(/,/)
- a.each do |name|
- setup_rb_error "no such package: #{name}" unless @installers.key?(name)
- end
- a
- end
-
- def print_usage(f)
- super
- f.puts 'Inluded packages:'
- f.puts ' ' + @packages.sort.join(' ')
- f.puts
- end
-
- #
- # Task Handlers
- #
-
- def exec_config
- run_hook 'pre-config'
- each_selected_installers {|inst| inst.exec_config }
- run_hook 'post-config'
- @config.save # must be final
- end
-
- def exec_setup
- run_hook 'pre-setup'
- each_selected_installers {|inst| inst.exec_setup }
- run_hook 'post-setup'
- end
-
- def exec_install
- run_hook 'pre-install'
- each_selected_installers {|inst| inst.exec_install }
- run_hook 'post-install'
- end
-
- def exec_test
- run_hook 'pre-test'
- each_selected_installers {|inst| inst.exec_test }
- run_hook 'post-test'
- end
-
- def exec_clean
- rm_f @config.savefile
- run_hook 'pre-clean'
- each_selected_installers {|inst| inst.exec_clean }
- run_hook 'post-clean'
- end
-
- def exec_distclean
- rm_f @config.savefile
- run_hook 'pre-distclean'
- each_selected_installers {|inst| inst.exec_distclean }
- run_hook 'post-distclean'
- end
-
- #
- # lib
- #
-
- def each_selected_installers
- Dir.mkdir 'packages' unless File.dir?('packages')
- @selected.each do |pack|
- $stderr.puts "Processing the package `#{pack}' ..." if verbose?
- Dir.mkdir "packages/#{pack}" unless File.dir?("packages/#{pack}")
- Dir.chdir "packages/#{pack}"
- yield @installers[pack]
- Dir.chdir '../..'
- end
- end
-
- def run_hook(id)
- @root_installer.run_hook id
- end
-
- # module FileOperations requires this
- def verbose?
- @config.verbose?
- end
-
- # module FileOperations requires this
- def no_harm?
- @config.no_harm?
- end
-
-end # class ToplevelInstallerMulti
-
-
-class Installer
-
- FILETYPES = %w( bin lib ext data conf man )
-
- include FileOperations
- include HookScriptAPI
-
- def initialize(config, srcroot, objroot)
- @config = config
- @srcdir = File.expand_path(srcroot)
- @objdir = File.expand_path(objroot)
- @currdir = '.'
- end
-
- def inspect
- "#<#{self.class} #{File.basename(@srcdir)}>"
- end
-
- def noop(rel)
- end
-
- #
- # Hook Script API base methods
- #
-
- def srcdir_root
- @srcdir
- end
-
- def objdir_root
- @objdir
- end
-
- def relpath
- @currdir
- end
-
- #
- # Config Access
- #
-
- # module FileOperations requires this
- def verbose?
- @config.verbose?
- end
-
- # module FileOperations requires this
- def no_harm?
- @config.no_harm?
- end
-
- def verbose_off
- begin
- save, @config.verbose = @config.verbose?, false
- yield
- ensure
- @config.verbose = save
- end
- end
-
- #
- # TASK config
- #
-
- def exec_config
- exec_task_traverse 'config'
- end
-
- alias config_dir_bin noop
- alias config_dir_lib noop
-
- def config_dir_ext(rel)
- extconf if extdir?(curr_srcdir())
- end
-
- alias config_dir_data noop
- alias config_dir_conf noop
- alias config_dir_man noop
-
- def extconf
- ruby "#{curr_srcdir()}/extconf.rb", *@config.config_opt
- end
-
- #
- # TASK setup
- #
-
- def exec_setup
- exec_task_traverse 'setup'
- end
-
- def setup_dir_bin(rel)
- files_of(curr_srcdir()).each do |fname|
- update_shebang_line "#{curr_srcdir()}/#{fname}"
- end
- end
-
- alias setup_dir_lib noop
-
- def setup_dir_ext(rel)
- make if extdir?(curr_srcdir())
- end
-
- alias setup_dir_data noop
- alias setup_dir_conf noop
- alias setup_dir_man noop
-
- def update_shebang_line(path)
- return if no_harm?
- return if config('shebang') == 'never'
- old = Shebang.load(path)
- if old
- $stderr.puts "warning: #{path}: Shebang line includes too many args. It is not portable and your program may not work." if old.args.size > 1
- new = new_shebang(old)
- return if new.to_s == old.to_s
- else
- return unless config('shebang') == 'all'
- new = Shebang.new(config('rubypath'))
- end
- $stderr.puts "updating shebang: #{File.basename(path)}" if verbose?
- open_atomic_writer(path) {|output|
- File.open(path, 'rb') {|f|
- f.gets if old # discard
- output.puts new.to_s
- output.print f.read
- }
- }
- end
-
- def new_shebang(old)
- if /\Aruby/ =~ File.basename(old.cmd)
- Shebang.new(config('rubypath'), old.args)
- elsif File.basename(old.cmd) == 'env' and old.args.first == 'ruby'
- Shebang.new(config('rubypath'), old.args[1..-1])
- else
- return old unless config('shebang') == 'all'
- Shebang.new(config('rubypath'))
- end
- end
-
- def open_atomic_writer(path, &block)
- tmpfile = File.basename(path) + '.tmp'
- begin
- File.open(tmpfile, 'wb', &block)
- File.rename tmpfile, File.basename(path)
- ensure
- File.unlink tmpfile if File.exist?(tmpfile)
- end
- end
-
- class Shebang
- def Shebang.load(path)
- line = nil
- File.open(path) {|f|
- line = f.gets
- }
- return nil unless /\A#!/ =~ line
- parse(line)
- end
-
- def Shebang.parse(line)
- cmd, *args = *line.strip.sub(/\A\#!/, '').split(' ')
- new(cmd, args)
- end
-
- def initialize(cmd, args = [])
- @cmd = cmd
- @args = args
- end
-
- attr_reader :cmd
- attr_reader :args
-
- def to_s
- "#! #{@cmd}" + (@args.empty? ? '' : " #{@args.join(' ')}")
- end
- end
-
- #
- # TASK install
- #
-
- def exec_install
- rm_f 'InstalledFiles'
- exec_task_traverse 'install'
- end
-
- def install_dir_bin(rel)
- install_files targetfiles(), "#{config('bindir')}/#{rel}", 0755
- end
-
- def install_dir_lib(rel)
- install_files libfiles(), "#{config('rbdir')}/#{rel}", 0644
- end
-
- def install_dir_ext(rel)
- return unless extdir?(curr_srcdir())
- install_files rubyextentions('.'),
- "#{config('sodir')}/#{File.dirname(rel)}",
- 0555
- end
-
- def install_dir_data(rel)
- install_files targetfiles(), "#{config('datadir')}/#{rel}", 0644
- end
-
- def install_dir_conf(rel)
- # FIXME: should not remove current config files
- # (rename previous file to .old/.org)
- install_files targetfiles(), "#{config('sysconfdir')}/#{rel}", 0644
- end
-
- def install_dir_man(rel)
- install_files targetfiles(), "#{config('mandir')}/#{rel}", 0644
- end
-
- def install_files(list, dest, mode)
- mkdir_p dest, @config.install_prefix
- list.each do |fname|
- install fname, dest, mode, @config.install_prefix
- end
- end
-
- def libfiles
- glob_reject(%w(*.y *.output), targetfiles())
- end
-
- def rubyextentions(dir)
- ents = glob_select("*.#{@config.dllext}", targetfiles())
- if ents.empty?
- setup_rb_error "no ruby extention exists: 'ruby #{$0} setup' first"
- end
- ents
- end
-
- def targetfiles
- mapdir(existfiles() - hookfiles())
- end
-
- def mapdir(ents)
- ents.map {|ent|
- if File.exist?(ent)
- then ent # objdir
- else "#{curr_srcdir()}/#{ent}" # srcdir
- end
- }
- end
-
- # picked up many entries from cvs-1.11.1/src/ignore.c
- JUNK_FILES = %w(
- core RCSLOG tags TAGS .make.state
- .nse_depinfo #* .#* cvslog.* ,* .del-* *.olb
- *~ *.old *.bak *.BAK *.orig *.rej _$* *$
-
- *.org *.in .*
- )
-
- def existfiles
- glob_reject(JUNK_FILES, (files_of(curr_srcdir()) | files_of('.')))
- end
-
- def hookfiles
- %w( pre-%s post-%s pre-%s.rb post-%s.rb ).map {|fmt|
- %w( config setup install clean ).map {|t| sprintf(fmt, t) }
- }.flatten
- end
-
- def glob_select(pat, ents)
- re = globs2re([pat])
- ents.select {|ent| re =~ ent }
- end
-
- def glob_reject(pats, ents)
- re = globs2re(pats)
- ents.reject {|ent| re =~ ent }
- end
-
- GLOB2REGEX = {
- '.' => '\.',
- '$' => '\$',
- '#' => '\#',
- '*' => '.*'
- }
-
- def globs2re(pats)
- /\A(?:#{
- pats.map {|pat| pat.gsub(/[\.\$\#\*]/) {|ch| GLOB2REGEX[ch] } }.join('|')
- })\z/
- end
-
- #
- # TASK test
- #
-
- TESTDIR = 'test'
-
- def exec_test
- unless File.directory?('test')
- $stderr.puts 'no test in this package' if verbose?
- return
- end
- $stderr.puts 'Running tests...' if verbose?
- begin
- require 'test/unit'
- rescue LoadError
- setup_rb_error 'test/unit cannot loaded. You need Ruby 1.8 or later to invoke this task.'
- end
- runner = Test::Unit::AutoRunner.new(true)
- runner.to_run << TESTDIR
- runner.run
- end
-
- #
- # TASK clean
- #
-
- def exec_clean
- exec_task_traverse 'clean'
- rm_f @config.savefile
- rm_f 'InstalledFiles'
- end
-
- alias clean_dir_bin noop
- alias clean_dir_lib noop
- alias clean_dir_data noop
- alias clean_dir_conf noop
- alias clean_dir_man noop
-
- def clean_dir_ext(rel)
- return unless extdir?(curr_srcdir())
- make 'clean' if File.file?('Makefile')
- end
-
- #
- # TASK distclean
- #
-
- def exec_distclean
- exec_task_traverse 'distclean'
- rm_f @config.savefile
- rm_f 'InstalledFiles'
- end
-
- alias distclean_dir_bin noop
- alias distclean_dir_lib noop
-
- def distclean_dir_ext(rel)
- return unless extdir?(curr_srcdir())
- make 'distclean' if File.file?('Makefile')
- end
-
- alias distclean_dir_data noop
- alias distclean_dir_conf noop
- alias distclean_dir_man noop
-
- #
- # Traversing
- #
-
- def exec_task_traverse(task)
- run_hook "pre-#{task}"
- FILETYPES.each do |type|
- if type == 'ext' and config('without-ext') == 'yes'
- $stderr.puts 'skipping ext/* by user option' if verbose?
- next
- end
- traverse task, type, "#{task}_dir_#{type}"
- end
- run_hook "post-#{task}"
- end
-
- def traverse(task, rel, mid)
- dive_into(rel) {
- run_hook "pre-#{task}"
- __send__ mid, rel.sub(%r[\A.*?(?:/|\z)], '')
- directories_of(curr_srcdir()).each do |d|
- traverse task, "#{rel}/#{d}", mid
- end
- run_hook "post-#{task}"
- }
- end
-
- def dive_into(rel)
- return unless File.dir?("#{@srcdir}/#{rel}")
-
- dir = File.basename(rel)
- Dir.mkdir dir unless File.dir?(dir)
- prevdir = Dir.pwd
- Dir.chdir dir
- $stderr.puts '---> ' + rel if verbose?
- @currdir = rel
- yield
- Dir.chdir prevdir
- $stderr.puts '<--- ' + rel if verbose?
- @currdir = File.dirname(rel)
- end
-
- def run_hook(id)
- path = [ "#{curr_srcdir()}/#{id}",
- "#{curr_srcdir()}/#{id}.rb" ].detect {|cand| File.file?(cand) }
- return unless path
- begin
- instance_eval File.read(path), path, 1
- rescue
- raise if $DEBUG
- setup_rb_error "hook #{path} failed:\n" + $!.message
- end
- end
-
-end # class Installer
-
-
-class SetupError < StandardError; end
-
-def setup_rb_error(msg)
- raise SetupError, msg
-end
-
-if $0 == __FILE__
- begin
- ToplevelInstaller.invoke
- rescue SetupError
- raise if $DEBUG
- $stderr.puts $!.message
- $stderr.puts "Try 'ruby #{$0} --help' for detailed usage."
- exit 1
- end
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_detect_cgi.rb b/vendor/gems/locale-2.0.5/test/test_detect_cgi.rb
deleted file mode 100644
index e2adbfc62..000000000
--- a/vendor/gems/locale-2.0.5/test/test_detect_cgi.rb
+++ /dev/null
@@ -1,216 +0,0 @@
-require 'cgi'
-require 'locale'
-require 'test/unit'
-
-class CGI
- module QueryExtension
- # Override this method to avoid to put warning messages.
- module_function
- def readlines=(str)
- @@lines = [str]
- end
- def readlines
- @@lines
- end
- def read_from_cmdline
- require "shellwords"
- string = readlines.join(' ').gsub(/\n/n, '').gsub(/\\=/n, '%3D').gsub(/\\&/n, '%26')
-
- words = Shellwords.shellwords(string)
-
- if words.find{|x| /=/n.match(x) }
- words.join('&')
- else
- words.join('+')
- end
- end
- private :read_from_cmdline
- end
-end
-
-class TestDetectCGI < Test::Unit::TestCase
- def setup_cgi(str)
- CGI::QueryExtension.readlines = str
- Locale.init(:driver => :cgi)
- cgi = CGI.new
- Locale.cgi = cgi
- Locale.clear_all
- end
-
- def test_query_string
- #query string
- setup_cgi("lang=ja_JP")
- lang = Locale.current[0]
- assert_equal(Locale::Tag::Simple, lang.class)
- assert_equal("ja_JP", lang.to_s)
-
- setup_cgi("lang=ja-jp")
- lang = Locale.current[0]
- assert_equal(Locale::Tag::Simple, lang.class)
- assert_equal("ja_JP", lang.to_s)
- assert_equal("ja-JP", lang.to_rfc.to_s)
- setup_cgi("lang=ja-jp")
- assert_equal("ja_JP", lang.to_s)
- assert_equal("ja-JP", lang.to_rfc.to_s)
-
- end
-
- def test_cookie
- #cockie
- setup_cgi("Set-Cookie: lang=en-us")
- assert_equal("en_US", Locale.current.to_s)
- end
-
- def test_accept_language
- ENV["HTTP_ACCEPT_LANGUAGE"] = ""
- ENV["HTTP_ACCEPT_CHARSET"] = ""
- setup_cgi("")
- lang = Locale.current[0]
- assert_equal(Locale::Tag::Simple, lang.class)
- assert_equal("en", lang.to_s)
- assert_equal("en", lang.to_rfc.to_s)
-
- ENV["HTTP_ACCEPT_LANGUAGE"] = "ja,en-us;q=0.7,en;q=0.3"
- setup_cgi("")
- lang1, lang2, lang3 = Locale.current
- assert_equal("ja", lang1.to_rfc.to_s)
- assert_equal("en-US", lang2.to_rfc.to_s)
- assert_equal("en", lang3.to_rfc.to_s)
-
- ENV["HTTP_ACCEPT_LANGUAGE"] = "en-us,ja;q=0.7,en;q=0.3"
- setup_cgi("")
- lang1, lang2, lang3 = Locale.current
- assert_equal("en-US", lang1.to_rfc.to_s)
- assert_equal("ja", lang2.to_rfc.to_s)
- assert_equal("en", lang3.to_rfc.to_s)
-
- ENV["HTTP_ACCEPT_LANGUAGE"] = "en"
- setup_cgi("")
- lang = Locale.current[0]
- assert_equal("en", lang.to_rfc.to_s)
- end
-
- def test_accept_charset
- #accept charset
- ENV["HTTP_ACCEPT_CHARSET"] = "Shift_JIS"
- setup_cgi("")
- assert_equal("Shift_JIS", Locale.charset)
-
- ENV["HTTP_ACCEPT_CHARSET"] = "EUC-JP,*,utf-8"
- setup_cgi("")
- assert_equal("EUC-JP", Locale.charset)
-
- ENV["HTTP_ACCEPT_CHARSET"] = "*"
- setup_cgi("")
- assert_equal("UTF-8", Locale.charset)
-
- ENV["HTTP_ACCEPT_CHARSET"] = ""
- setup_cgi("")
- assert_equal("UTF-8", Locale.charset)
- end
-
- def test_default
- Locale.set_default(nil)
- Locale.set_default("ja-JP")
- ENV["HTTP_ACCEPT_LANGUAGE"] = ""
- ENV["HTTP_ACCEPT_CHARSET"] = ""
- setup_cgi("")
- assert_equal("ja-JP", Locale.default.to_rfc.to_s)
- assert_equal("ja-JP", Locale.current.to_rfc.to_s)
- Locale.set_default(nil)
- end
-
- def common(*ary)
- ary.map{|v| Locale::Tag::Common.parse(v)}
- end
-
- def rfc(*ary)
- ary.map{|v| Locale::Tag::Rfc.parse(v)}
- end
-
- def cldr(*ary)
- ary.map{|v| Locale::Tag::Cldr.parse(v)}
- end
-
- def simple(*ary)
- ary.map{|v| Locale::Tag::Simple.parse(v)}
- end
-
- def test_candidates
-
- ENV["HTTP_ACCEPT_LANGUAGE"] = "fr-fr,zh_CN;q=0.7,zh_TW;q=0.2,ja_JP;q=0.1"
- setup_cgi("")
-
- assert_equal common("fr-FR", "zh-CN", "zh-TW", "ja-JP",
- "fr", "zh", "ja", "en"), Locale.candidates
-
- assert_equal rfc("fr-FR", "zh-CN", "zh-TW", "ja-JP", "fr",
- "zh", "ja", "en"), Locale.candidates(:type => :rfc)
-
- assert_equal cldr("fr_FR", "zh_CN", "zh_TW", "ja_JP", "fr",
- "zh", "ja", "en"), Locale.candidates(:type => :cldr)
-
- assert_equal simple("fr-FR", "zh-CN", "zh-TW", "ja-JP",
- "fr", "zh", "ja", "en"), Locale.candidates(:type => :simple)
-
- taglist = Locale.candidates(:type => :rfc)
- assert_equal Locale::TagList, taglist.class
- assert_equal "fr", taglist.language
- assert_equal "FR", taglist.region
-
- end
-
- def test_candidates_with_supported_language_tags
- ENV["HTTP_ACCEPT_LANGUAGE"] = "fr-fr,zh_CN;q=0.7,zh_TW;q=0.2,ja_JP;q=0.1"
- setup_cgi("")
-
- assert_equal common("fr_FR", "zh", "ja"), Locale.candidates(:type => :common,
- :supported_language_tags => ["fr_FR", "ja", "zh"])
-
- assert_equal simple("fr-FR", "zh", "ja"), Locale.candidates(:type => :simple,
- :supported_language_tags => ["fr-FR", "ja", "zh"])
- #supported_language_tags includes "pt" as not in HTTP_ACCEPT_LANGUAGE
- assert_equal simple("fr-FR", "zh", "ja"),
- Locale.candidates(:type => :simple,
- :supported_language_tags => ["fr-FR", "ja", "zh", "pt"])
-
- end
-
- def test_candidates_with_default
- ENV["HTTP_ACCEPT_LANGUAGE"] = "fr-fr,zh_CN;q=0.7,zh_TW;q=0.2,ja_JP;q=0.1"
- setup_cgi("")
-
- Locale.default = "zh_TW"
- assert_equal simple("fr-FR", "zh", "ja"),
- Locale.candidates(:type => :simple,
- :supported_language_tags => ["fr-FR", "ja", "zh", "pt"])
-
- Locale.default = "pt"
- assert_equal simple("fr-FR", "zh", "ja", "pt"),
- Locale.candidates(:type => :simple,
- :supported_language_tags => ["fr-FR", "ja", "zh", "pt"])
-
- # default value is selected even if default is not in supported_language_tags.
- assert_equal simple("pt"), Locale.candidates(:type => :simple,
- :supported_language_tags => ["aa"])
- Locale.default = "en"
- end
-
-
- def test_candidates_with_app_language_tags
- Locale.set_app_language_tags("fr-FR", "ja")
-
- ENV["HTTP_ACCEPT_LANGUAGE"] = "fr-fr,zh_CN;q=0.7,zh_TW;q=0.2,ja_JP;q=0.1"
- setup_cgi("")
-
- assert_equal common("fr-FR", "ja"), Locale.candidates
-
- # default value is selected if default is not in app_language_tags.
- Locale.set_app_language_tags("no", "pt")
- Locale.default = "zh"
- assert_equal common("zh"), Locale.candidates
-
- Locale.default = "en"
- Locale.set_app_language_tags(nil)
- end
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_detect_general.rb b/vendor/gems/locale-2.0.5/test/test_detect_general.rb
deleted file mode 100644
index 08b912df1..000000000
--- a/vendor/gems/locale-2.0.5/test/test_detect_general.rb
+++ /dev/null
@@ -1,164 +0,0 @@
-require 'locale'
-require 'test/unit'
-
-class TestDetectGeneral < Test::Unit::TestCase
-
- def setup
- Locale.clear_all
- ENV["LC_ALL"] = nil
- ENV["LC_MESSAGES"] = nil
- ENV["LANG"] = nil
- ENV["LANGUAGE"] = nil
- end
-
- def test_lc_all
- ENV["LC_ALL"] = "ja_JP.eucJP"
- ENV["LC_MESSAGES"] = "zh_CN.UTF-8" #Ignored.
- ENV["LANG"] = "ko_KR.UTF-8" #Ignored.
- ENV["LANGUAGE"] = nil
-
- lang = Locale.current[0]
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "eucJP", lang.charset
- assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
-
- assert_equal "eucJP", Locale.charset
- end
-
- def test_lc_messages
- ENV["LC_ALL"] = nil
- ENV["LC_MESSAGES"] = "ja_JP.eucJP"
- ENV["LANG"] = "ko_KR.UTF-8" #Ignored.
- ENV["LANGUAGE"] = nil
-
- lang = Locale.current[0]
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "eucJP", lang.charset
- assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
-
- assert_equal "eucJP", Locale.charset
- end
-
- def test_lang
- ENV["LC_ALL"] = nil
- ENV["LC_MESSAGES"] = nil
- ENV["LANG"] = "ja_JP.eucJP"
- ENV["LANGUAGE"] = nil
-
- lang = Locale.current[0]
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "eucJP", lang.charset
- assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
-
- assert_equal "eucJP", Locale.charset
- end
-
- def test_lang_complex
- ENV["LC_ALL"] = "zh_CN.UTF-8" # Ignored.
- ENV["LC_MESSAGES"] = "ko_KR.UTF-8" #Ingored.
- ENV["LANG"] = "en_US.UTF-8" # Ignored.
- ENV["LANGUAGE"] ="ja_JP.eucJP:zh_CN.UTF-8"
-
- lang = Locale.current[0]
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "eucJP", lang.charset
- assert_equal Locale::Tag::Posix.new("ja", "JP", "eucJP"), lang
-
- # Use the LANG value (locale charmap don't use LANGUAGE)
- assert_equal "UTF-8", Locale.charset
- end
-
- def test_language
- ENV["LC_ALL"] = "ja_JP.Shift_JIS"
- ENV["LANGUAGE"] = "zh_CN.UTF-8:ja_JP"
-
- tags = Locale.current
- assert_equal Locale::Tag::Posix, tags[0].class
- assert_equal Locale::Tag::Posix, tags[1].class
-
- assert_equal "zh", tags.language
- assert_equal "CN", tags.region
- assert_equal "UTF-8", tags.charset
-
- assert_equal "zh", tags[0].language
- assert_equal "CN", tags[0].region
- assert_equal "UTF-8", tags[0].charset
-
- assert_equal "ja", tags[1].language
- assert_equal "JP", tags[1].region
- assert_equal nil, tags[1].charset
-
- assert_equal Locale::TagList.new([Locale::Tag::Posix.new("zh", "CN", "UTF-8"),
- Locale::Tag::Posix.new("ja", "JP")]), tags
-
- assert_equal "Shift_JIS", Locale.charset
- end
-
- def test_no_charset
- ENV["LC_ALL"] = "cs_CZ"
-
- lang = Locale.current[0]
- assert_equal Locale::Tag::Posix, lang.class
-
- assert_equal "cs", lang.language
- assert_equal "CZ", lang.region
- assert_equal nil, lang.charset
- assert_equal Locale::Tag::Posix.new("cs", "CZ"), lang
-
-=begin
- This test doesn't work any environment such as Ubuntu.
- Because this method gets the system locale via "locale -a" command.
- if /linux|bsd/ =~ RUBY_PLATFORM
- assert_equal "ISO-8859-2", Locale.charset
- end
-=end
- end
-
- def test_default
- return unless /linux|bsd/ =~ RUBY_PLATFORM
- Locale.set_default("yo_NG")
- assert_equal Locale::Tag.parse("yo_NG"), Locale.default
- assert_equal Locale::Tag.parse("yo_NG"), Locale.current[0]
- Locale.set_default(nil)
-
- Locale.default = "fr"
- assert_equal Locale::Tag.parse("fr"), Locale.default
- assert_equal Locale::Tag.parse("fr"), Locale.current[0]
- Locale.default = nil
- end
-
- def test_current
- Locale.set_current("yo_NG")
- assert_equal Locale::Tag.parse("yo_NG"), Locale.current[0]
-
- Locale.current = "fr"
- assert_equal Locale::Tag.parse("fr"), Locale.current[0]
-
- Locale.set_default("yo_NG")
- Locale.current = "fr"
- assert_equal Locale::Tag.parse("yo_NG"), Locale.default
- assert_equal Locale::Tag.parse("fr"), Locale.current[0]
- Locale.set_default(nil)
- end
-
- def test_clear
- ENV["LC_ALL"] = "ja_JP.Shift_JIS"
- ENV["LANGUAGE"] = nil
-
- assert_equal Locale::Tag.parse("ja_JP.Shift_JIS"), Locale.current[0]
- Locale.clear
- ENV["LANGUAGE"] = "zh_CN.UTF-8:ja_JP"
- assert_equal Locale::Tag::Posix.parse("zh_CN.UTF-8"), Locale.current[0]
- assert_equal Locale::Tag::Posix.parse("ja_JP"), Locale.current[1]
-
- end
-
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_driver_jruby.rb b/vendor/gems/locale-2.0.5/test/test_driver_jruby.rb
deleted file mode 100644
index 692d34029..000000000
--- a/vendor/gems/locale-2.0.5/test/test_driver_jruby.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-
-begin
- require 'locale/driver/jruby'
- require 'test/unit'
- class TestDiverJRuby < Test::Unit::TestCase
-
- def setup
- ENV["LC_ALL"] = nil
- ENV["LC_MESSAGES"] = nil
- ENV["LANG"] = nil
- ENV["LANGUAGE"] = nil
- end
-
- def set_locale(tag)
- java.util.Locale.setDefault(java.util.Locale.new(tag.language, tag.region, tag.variants.to_s))
- end
-
- def test_charset
- # Depends on system value when jvm is started.
- end
-
- def test_locales
- tag = Locale::Tag::Common.parse("ja-JP")
- set_locale(tag)
- assert_equal [tag], Locale::Driver::JRuby.locales
- end
-
- def test_locales_with_env
- ENV["LC_ALL"] = "ja_JP.EUC-JP"
- assert_equal Locale::Tag::Posix.parse("ja_JP.EUC-JP"), Locale::Driver::JRuby.locales[0]
- assert_equal "EUC-JP", Locale::Driver::JRuby.charset
-
- ENV["LC_ALL"] = "ja_JP"
- assert_equal Locale::Tag::Posix.parse("ja_JP"), Locale::Driver::JRuby.locales[0]
-
- ENV["LC_ALL"] = "C"
- assert_equal Locale::Tag::Posix.parse("C"), Locale::Driver::JRuby.locales[0]
- end
- end
-
-rescue LoadError
- puts "jruby test was skipped."
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_driver_win32.rb b/vendor/gems/locale-2.0.5/test/test_driver_win32.rb
deleted file mode 100644
index 604cd6efe..000000000
--- a/vendor/gems/locale-2.0.5/test/test_driver_win32.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-begin
- require 'locale/driver/win32'
- require 'test/unit'
-
- class TestDiverWin32 < Test::Unit::TestCase
-
- def setup
- ENV["LC_ALL"] = nil
- ENV["LC_MESSAGES"] = nil
- ENV["LANG"] = nil
- ENV["LANGUAGE"] = nil
- Locale::Driver::Win32.set_thread_locale_id(nil)
- end
-
- def test_charset
- Locale::Driver::Win32.set_thread_locale_id(0x0404)
- assert_equal "CP950", Locale::Driver::Win32.charset
-
- Locale::Driver::Win32.set_thread_locale_id(0x0411)
- assert_equal "CP932", Locale::Driver::Win32.charset
-
- Locale::Driver::Win32.set_thread_locale_id(0x201A)
- assert_equal "CP1251", Locale::Driver::Win32.charset
-
- Locale::Driver::Win32.set_thread_locale_id(0x0465)
- assert_equal "UNICODE", Locale::Driver::Win32.charset
-
- Locale::Driver::Win32.set_thread_locale_id(0x2222) # invalid
- assert_equal "CP1252", Locale::Driver::Win32.charset
- end
-
- def test_locales
- Locale::Driver::Win32.set_thread_locale_id(0x0404)
- assert_equal Locale::Tag::Common.parse("zh-TW"), Locale::Driver::Win32.locales[0]
-
- Locale::Driver::Win32.set_thread_locale_id(0x0411)
- assert_equal Locale::Tag::Common.parse("ja-JP"), Locale::Driver::Win32.locales[0]
-
- Locale::Driver::Win32.set_thread_locale_id(0x201A)
- assert_equal Locale::Tag::Common.parse("bs-Cyrl-BA"), Locale::Driver::Win32.locales[0]
-
- Locale::Driver::Win32.set_thread_locale_id(0x0465)
- assert_equal Locale::Tag::Common.parse("div-MV"), Locale::Driver::Win32.locales[0]
-
- Locale::Driver::Win32.set_thread_locale_id(0x2222) # invalid
- assert_equal nil, Locale::Driver::Win32.locales
- end
-
- def test_locales_with_env
- ENV["LC_ALL"] = "ja_JP.UTF-8"
- assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), Locale::Driver::Win32.locales[0]
- assert_equal "UTF-8", Locale::Driver::Win32.charset
-
- ENV["LC_ALL"] = "ja_JP"
- assert_equal Locale::Tag::Posix.parse("ja_JP"), Locale::Driver::Win32.locales[0]
- assert_equal "CP932", Locale::Driver::Win32.charset
-
- ENV["LC_ALL"] = "C"
- assert_equal Locale::Tag::Posix.parse("C"), Locale::Driver::Win32.locales[0]
- assert_equal "CP1252", Locale::Driver::Win32.charset
- end
- end
-rescue LoadError
- puts "win32 test was skipped."
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_info.rb b/vendor/gems/locale-2.0.5/test/test_info.rb
deleted file mode 100644
index d34efe8fa..000000000
--- a/vendor/gems/locale-2.0.5/test/test_info.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# encoding: UTF-8
-
-require 'locale/info'
-require 'test/unit'
-
-class TestLocaleInfo < Test::Unit::TestCase
- def test_languages
- langs = Locale::Info.three_languages
- assert_equal 7600, langs.length
- assert_equal "English", langs["eng"].name
- assert langs["eng"].living?
- assert langs["eng"].individual?
-
- langs = Locale::Info.two_languages
- assert_equal 185, langs.length
- assert_equal "English", langs["en"].name
- assert langs["en"].living?
- assert langs["en"].individual?
- end
-
- def test_regions
- regions = Locale::Info.regions
- assert_equal 243, regions.length
- assert_equal "United States", regions["US"].name
-
- assert_equal "ÅLand Islands", regions['AX'].name
- end
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_memoizable.rb b/vendor/gems/locale-2.0.5/test/test_memoizable.rb
deleted file mode 100644
index 6ce7092e4..000000000
--- a/vendor/gems/locale-2.0.5/test/test_memoizable.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-require 'locale/util/memoizable'
-require 'test/unit'
-
-class A
- include Locale::Util::Memoizable
- def initialize
- @count = 0
- @a = ""
- end
- def test1(a)
- @a += String(a)
- @count += 1
- end
- memoize :test1
- attr_reader :a
-end
-
-class B < A
-end
-
-class C < A
- def test1(a)
- @a = String(a) + @a
- @count += 1
- end
- memoize :test1
-end
-
-class D
- class << self
- include Locale::Util::Memoizable
- def init
- @@count = 0
- @@a = "a"
- end
- def test1(a)
- @@a = @@a + "b" * a
- @@count += 1
- end
- memoize :test1
- def a
- @@a
- end
- end
-end
-
-class E
- include Locale::Util::Memoizable
- def test2
- "aa"
- end
- memoize :test2
-
- def test2_dup
- "bb"
- end
- memoize_dup :test2_dup
-end
-
-class TestMemoizable < Test::Unit::TestCase
- def test_simple
- t = A.new
- assert_equal 1, t.test1(1)
- assert_equal "1", t.a
- assert_equal 1, t.test1(1)
- assert_equal "1", t.a
- assert_equal 2, t.test1(2)
- assert_equal "12", t.a
- assert_equal 2, t.test1(2)
- assert_equal "12", t.a
- assert_equal 1, t.test1(1)
- assert_equal "12", t.a
- end
-
- def test_simple_inherited
- t = B.new
- assert_equal 1, t.test1(1)
- assert_equal "1", t.a
- assert_equal 1, t.test1(1)
- assert_equal "1", t.a
- assert_equal 2, t.test1(2)
- assert_equal "12", t.a
- assert_equal 2, t.test1(2)
- assert_equal "12", t.a
- assert_equal 1, t.test1(1)
- assert_equal "12", t.a
- end
-
- def test_override
- t = C.new
- assert_equal 1, t.test1(1)
- assert_equal "1", t.a
- assert_equal 1, t.test1(1)
- assert_equal "1", t.a
- assert_equal 2, t.test1(2)
- assert_equal "21", t.a
- assert_equal 2, t.test1(2)
- assert_equal "21", t.a
- assert_equal 1, t.test1(1)
- assert_equal "21", t.a
- end
-
- def test_class_method
- D.init
- assert_equal 1, D.test1(1)
- assert_equal "ab", D.a
- assert_equal 1, D.test1(1)
- assert_equal "ab", D.a
- assert_equal 2, D.test1(2)
- assert_equal "abbb", D.a
- assert_equal 2, D.test1(2)
- assert_equal "abbb", D.a
- assert_equal 1, D.test1(1)
- assert_equal "abbb", D.a
- end
-
- def test_freeze_or_dup
- t = E.new
- assert_equal "aa", t.test2
- # When modification attempted on frozen objects,
- # ruby 1.9 raises RuntimeError instead of TypeError.
- # http://redmine.ruby-lang.org/issues/show/409
- # http://redmine.ruby-lang.org/repositories/diff/ruby-19/error.c?rev=7294
- if RUBY_VERSION < '1.9.0'
- assert_raise(TypeError){ t.test2 << "a" }
- else
- assert_raise(RuntimeError){ t.test2 << "a" }
- end
- assert_equal "bb", t.test2_dup
- assert_equal "bbb", t.test2_dup << "b"
- assert_equal "bb", t.test2_dup
- end
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_tag.rb b/vendor/gems/locale-2.0.5/test/test_tag.rb
deleted file mode 100644
index ded243995..000000000
--- a/vendor/gems/locale-2.0.5/test/test_tag.rb
+++ /dev/null
@@ -1,1233 +0,0 @@
-require 'locale/tag'
-require 'test/unit'
-
-class TagTest < Test::Unit::TestCase
-
- def test_simple_lang
- #ja-JP, ja-392
- lang = Locale::Tag.parse("ja")
- assert_equal Locale::Tag::Simple, lang.class
- assert_equal "ja", lang.language
- assert_equal nil, lang.region
- assert_equal [Locale::Tag::Simple.parse("ja"),
- Locale::Tag::Simple.parse("ja")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja"), lang.to_posix
-
- lang = Locale::Tag.parse("kok")
- assert_equal Locale::Tag::Simple, lang.class
- assert_equal "kok", lang.language
- assert_equal nil, lang.region
- assert_equal [Locale::Tag::Simple.parse("kok"),
- Locale::Tag::Simple.parse("kok")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("kok"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("kok"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("kok"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("kok"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("kok"), lang.to_posix
- end
-
- def test_simple_lang_region
- lang = Locale::Tag.parse("ja-JP")
- assert_equal Locale::Tag::Simple, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal [Locale::Tag::Simple.parse("ja_JP"),
- Locale::Tag::Simple.parse("ja")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja-JP"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
-
- lang = Locale::Tag.parse("ja_JP")
- assert_equal Locale::Tag::Simple, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal [Locale::Tag::Simple.parse("ja_JP"),
- Locale::Tag::Simple.parse("ja")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja-JP"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
- end
-
- def test_simple_unm49
- # UN_M.49(Country code)
- lang = Locale::Tag.parse("ja-392")
- assert_equal Locale::Tag::Simple, lang.class
- assert_equal "ja", lang.language
- assert_equal "392", lang.region
- assert_equal [Locale::Tag::Simple.parse("ja_392"),
- Locale::Tag::Simple.parse("ja")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja-392"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja-392"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-392"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja-392"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_392"), lang.to_posix
-
- lang = Locale::Tag.parse("jpn-392")
- assert_equal Locale::Tag::Simple, lang.class
- assert_equal "jpn", lang.language
- assert_equal "392", lang.region
- assert_equal [Locale::Tag::Simple.parse("jpn-392"),
- Locale::Tag::Simple.parse("jpn")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("jpn-392"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("jpn-392"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("jpn-392"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("jpn-392"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("jpn_392"), lang.to_posix
-
- lang = Locale::Tag.parse("es-419")
- assert_equal Locale::Tag::Simple, lang.class
- assert_equal "es", lang.language
- assert_equal "419", lang.region
- assert_equal [Locale::Tag::Simple.parse("es-419"),
- Locale::Tag::Simple.parse("es")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("es-419"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("es-419"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("es-419"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("es_419"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("es_419"), lang.to_posix
- end
-
- def test_simple_writer
- lang = Locale::Tag.parse("ja-JP")
- assert_equal Locale::Tag::Simple, lang.class
- assert_equal "ja_JP", lang.to_s
- assert_equal [Locale::Tag::Simple.parse("ja-JP"),
- Locale::Tag::Simple.parse("ja")], lang.candidates
- lang.language = "en"
- assert_equal "en", lang.language
- assert_equal "en_JP", lang.to_s
- assert_equal [Locale::Tag::Simple.parse("en-JP"),
- Locale::Tag::Simple.parse("en")], lang.candidates
-
- lang.region = "US"
- assert_equal "en", lang.language
- assert_equal "US", lang.region
- assert_equal "en_US", lang.to_s
- assert_equal [Locale::Tag::Simple.parse("en-US"),
- Locale::Tag::Simple.parse("en")], lang.candidates
-
- end
-
- #lang, region, script, variants
- def test_common_lang_script
- lang = Locale::Tag.parse("az_Arab")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "az", lang.language
- assert_equal nil, lang.region
- assert_equal "Arab", lang.script
- assert_equal [Locale::Tag::Common.parse("az_Arab"),
- Locale::Tag::Common.parse("az_Arab"),
- Locale::Tag::Common.parse("az"),
- Locale::Tag::Common.parse("az"),
- Locale::Tag::Common.parse("az_Arab"),
- Locale::Tag::Common.parse("az_Arab"),
- Locale::Tag::Common.parse("az"),
- Locale::Tag::Common.parse("az"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("az"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("az_Arab"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("az-Arab"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("az_Arab"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("az"), lang.to_posix
-
-
- lang = Locale::Tag.parse("uz-Cyrl")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "uz", lang.language
- assert_equal nil, lang.region
- assert_equal "Cyrl", lang.script
- assert_equal [Locale::Tag::Common.parse("uz-Cyrl"),
- Locale::Tag::Common.parse("uz-Cyrl"),
- Locale::Tag::Common.parse("uz"),
- Locale::Tag::Common.parse("uz"),
- Locale::Tag::Common.parse("uz-Cyrl"),
- Locale::Tag::Common.parse("uz-Cyrl"),
- Locale::Tag::Common.parse("uz"),
- Locale::Tag::Common.parse("uz"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("uz"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("uz_Cyrl"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("uz-Cyrl"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("uz_Cyrl"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("uz"), lang.to_posix
- end
-
- def test_common_lang_script_region
- lang = Locale::Tag.parse("ja-Kana-JP")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "Kana", lang.script
- assert_equal [Locale::Tag::Common.parse("ja-Kana-JP"),
- Locale::Tag::Common.parse("ja-Kana-JP"),
- Locale::Tag::Common.parse("ja-JP"),
- Locale::Tag::Common.parse("ja-JP"),
- Locale::Tag::Common.parse("ja-Kana"),
- Locale::Tag::Common.parse("ja-Kana"),
- Locale::Tag::Common.parse("ja"),
- Locale::Tag::Common.parse("ja")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_Kana_JP"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
-
- # 3 char language
- lang = Locale::Tag.parse("jpn-Hira-JP")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "jpn", lang.language
- assert_equal "JP", lang.region
- assert_equal "Hira", lang.script
- assert_equal [Locale::Tag::Common.parse("jpn-Hira-JP"),
- Locale::Tag::Common.parse("jpn-Hira-JP"),
- Locale::Tag::Common.parse("jpn-JP"),
- Locale::Tag::Common.parse("jpn-JP"),
- Locale::Tag::Common.parse("jpn-Hira"),
- Locale::Tag::Common.parse("jpn-Hira"),
- Locale::Tag::Common.parse("jpn"),
- Locale::Tag::Common.parse("jpn")], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("jpn_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("jpn_Hira_JP"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("jpn-Hira-JP"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("jpn_Hira_JP"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("jpn_JP"), lang.to_posix
- end
-
- def test_common_lang_script_unm49
- lang = Locale::Tag.parse("jpn-Hira-392")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "jpn", lang.language
- assert_equal "392", lang.region
- assert_equal "Hira", lang.script
- assert_equal [Locale::Tag::Common.parse("jpn_Hira_392"),
- Locale::Tag::Common.parse("jpn_Hira_392"),
- Locale::Tag::Common.parse("jpn_392"),
- Locale::Tag::Common.parse("jpn_392"),
- Locale::Tag::Common.parse("jpn_Hira"),
- Locale::Tag::Common.parse("jpn_Hira"),
- Locale::Tag::Common.parse("jpn"),
- Locale::Tag::Common.parse("jpn")], lang.candidates
-
-
- assert_equal Locale::Tag::Simple.parse("jpn_392"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("jpn_Hira_392"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("jpn-Hira-392"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("jpn_Hira_392"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("jpn_392"), lang.to_posix
- end
-
- def test_common_lang_script_region_variants
- lang = Locale::Tag.parse("en_Latn_US_NYNORSK")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "en", lang.language
- assert_equal "US", lang.region
- assert_equal ["NYNORSK"], lang.variants
- assert_equal [Locale::Tag::Common.parse("en_Latn_US_NYNORSK"),
- Locale::Tag::Common.parse("en_Latn_US"),
- Locale::Tag::Common.parse("en_US_NYNORSK"),
- Locale::Tag::Common.parse("en_US"),
- Locale::Tag::Common.parse("en_Latn_NYNORSK"),
- Locale::Tag::Common.parse("en_Latn"),
- Locale::Tag::Common.parse("en_NYNORSK"),
- Locale::Tag::Common.parse("en")], lang.candidates
-
-
- assert_equal Locale::Tag::Simple.parse("en-US"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en_Latn_US_NYNORSK"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en-Latn-US-NYNORSK"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en_Latn_US_NYNORSK"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en_US@NYNORSK"), lang.to_posix
- end
-
-
- def test_common_lang_variants
- lang = Locale::Tag.parse("ja-osaka")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal nil, lang.region
- assert_equal nil, lang.script
- assert_equal ["osaka"], lang.variants
-
- assert_equal [Locale::Tag::Common.parse("ja-osaka"),
- Locale::Tag::Common.parse("ja"),
- Locale::Tag::Common.parse("ja-osaka"),
- Locale::Tag::Common.parse("ja"),
- Locale::Tag::Common.parse("ja-osaka"),
- Locale::Tag::Common.parse("ja"),
- Locale::Tag::Common.parse("ja-osaka"),
- Locale::Tag::Common.parse("ja")
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja-osaka"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-osaka"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_OSAKA"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja@osaka"), lang.to_posix
- end
-
- def test_common_lang_region_variants
- lang = Locale::Tag.parse("ja-JP-osaka")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal nil, lang.script
- assert_equal ["osaka"], lang.variants
-
- assert_equal [Locale::Tag::Common.parse("ja_JP_osaka"),
- Locale::Tag::Common.parse("ja_JP"),
- Locale::Tag::Common.parse("ja_JP_osaka"),
- Locale::Tag::Common.parse("ja_JP"),
- Locale::Tag::Common.parse("ja_osaka"),
- Locale::Tag::Common.parse("ja"),
- Locale::Tag::Common.parse("ja_osaka"),
- Locale::Tag::Common.parse("ja")
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_JP_osaka"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-JP-osaka"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_JP_OSAKA"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP@osaka"), lang.to_posix
- end
-
- def test_common_lang_script_region_5length_variants
- lang = Locale::Tag.parse("ja-Kana-JP-osaka")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "Kana", lang.script
- assert_equal ["osaka"], lang.variants
-
- assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-osaka"),
- Locale::Tag::Common.parse("ja-Kana-JP"),
- Locale::Tag::Common.parse("ja-JP-osaka"),
- Locale::Tag::Common.parse("ja-JP"),
- Locale::Tag::Common.parse("ja-Kana-osaka"),
- Locale::Tag::Common.parse("ja-Kana"),
- Locale::Tag::Common.parse("ja-osaka"),
- Locale::Tag::Common.parse("ja")
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_Kana-JP_osaka"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-osaka"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_OSAKA"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP@osaka"), lang.to_posix
- end
-
- def test_common_lang_script_region_mid_length_variants
- #middle length
- lang = Locale::Tag.parse("ja-Kana-JP-aomori")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "Kana", lang.script
- assert_equal ["aomori"], lang.variants
-
- assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-aomori"),
- Locale::Tag::Common.parse("ja-Kana-JP"),
- Locale::Tag::Common.parse("ja-JP-aomori"),
- Locale::Tag::Common.parse("ja-JP"),
- Locale::Tag::Common.parse("ja-Kana-aomori"),
- Locale::Tag::Common.parse("ja-Kana"),
- Locale::Tag::Common.parse("ja-aomori"),
- Locale::Tag::Common.parse("ja")
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_Kana-JP_aomori"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-aomori"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_AOMORI"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP@aomori"), lang.to_posix
-
- end
-
- def test_common_lang_script_region_8length_variants
- #8 length
- lang = Locale::Tag.parse("ja-Kana-JP-hokuriku")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "Kana", lang.script
- assert_equal ["hokuriku"], lang.variants
-
- assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-hokuriku"),
- Locale::Tag::Common.parse("ja-Kana-JP"),
- Locale::Tag::Common.parse("ja-JP-hokuriku"),
- Locale::Tag::Common.parse("ja-JP"),
- Locale::Tag::Common.parse("ja-Kana-hokuriku"),
- Locale::Tag::Common.parse("ja-Kana"),
- Locale::Tag::Common.parse("ja-hokuriku"),
- Locale::Tag::Common.parse("ja")
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_Kana-JP_hokuriku"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-hokuriku"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_HOKURIKU"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP@hokuriku"), lang.to_posix
- end
-
- def test_common_lang_script_region_special_variants
- #1 digit and 3 alpha
- lang = Locale::Tag.parse("ja-Kana-JP-0abc")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "Kana", lang.script
- assert_equal ["0abc"], lang.variants
-
- assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-0abc"),
- Locale::Tag::Common.parse("ja-Kana-JP"),
- Locale::Tag::Common.parse("ja-JP-0abc"),
- Locale::Tag::Common.parse("ja-JP"),
- Locale::Tag::Common.parse("ja-Kana-0abc"),
- Locale::Tag::Common.parse("ja-Kana"),
- Locale::Tag::Common.parse("ja-0abc"),
- Locale::Tag::Common.parse("ja")
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_Kana-JP_0abc"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-0abc"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_0ABC"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
- end
-
- def test_common_lang_region_4digits_variants
- #4 digits
- lang = Locale::Tag.parse("de-CH-1996")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "de", lang.language
- assert_equal "CH", lang.region
- assert_equal nil, lang.script
- assert_equal ["1996"], lang.variants
- assert_equal [Locale::Tag::Common.parse("de_CH_1996"),
- Locale::Tag::Common.parse("de_CH"),
- Locale::Tag::Common.parse("de_CH_1996"),
- Locale::Tag::Common.parse("de_CH"),
- Locale::Tag::Common.parse("de_1996"),
- Locale::Tag::Common.parse("de"),
- Locale::Tag::Common.parse("de_1996"),
- Locale::Tag::Common.parse("de"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("de-CH"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("de-CH-1996"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("de-CH-1996"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("de_CH_1996"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("de_CH@1996"), lang.to_posix
- end
-
- def test_common_lang_region_plural_variants
- #Plural
- lang = Locale::Tag.parse("ja-Kana-JP-hokuriku-aomori")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "Kana", lang.script
- assert_equal ["hokuriku", "aomori"], lang.variants
-
- assert_equal [Locale::Tag::Common.parse("ja-Kana-JP-hokuriku-aomori"),
- Locale::Tag::Common.parse("ja-Kana-JP"),
- Locale::Tag::Common.parse("ja-JP-hokuriku-aomori"),
- Locale::Tag::Common.parse("ja-JP"),
- Locale::Tag::Common.parse("ja-Kana-hokuriku-aomori"),
- Locale::Tag::Common.parse("ja-Kana"),
- Locale::Tag::Common.parse("ja-hokuriku-aomori"),
- Locale::Tag::Common.parse("ja"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja-JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja-Kana-JP-hokuriku-aomori"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-hokuriku-aomori"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja-Kana-JP_HOKURIKU_AOMORI"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP@hokuriku-aomori"), lang.to_posix
- end
-
- def test_common_cases
- #cases
- lang = Locale::Tag.parse("mn-Cyrl-MN")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "mn", lang.language
- assert_equal "MN", lang.region
- assert_equal "Cyrl", lang.script
-
- assert_equal [Locale::Tag::Common.parse("mn-Cyrl-MN"),
- Locale::Tag::Common.parse("mn-Cyrl-MN"),
- Locale::Tag::Common.parse("mn-MN"),
- Locale::Tag::Common.parse("mn-MN"),
- Locale::Tag::Common.parse("mn-Cyrl"),
- Locale::Tag::Common.parse("mn-Cyrl"),
- Locale::Tag::Common.parse("mn"),
- Locale::Tag::Common.parse("mn"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("mn_MN"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("mn_Cyrl_MN"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("mn-Cyrl-MN"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("mn-Cyrl-MN"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("mn_MN"), lang.to_posix
-
- lang = Locale::Tag.parse("mN-cYrL-Mn")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "mn", lang.language
- assert_equal "MN", lang.region
- assert_equal "Cyrl", lang.script
-
- assert_equal Locale::Tag::Simple.parse("mn_MN"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("mn_Cyrl_MN"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("mn-Cyrl-MN"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("mn-Cyrl-MN"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("mn_MN"), lang.to_posix
-
- lang = Locale::Tag.parse("MN-cYRL-mn")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "mn", lang.language
- assert_equal "MN", lang.region
- assert_equal "Cyrl", lang.script
-
- assert_equal Locale::Tag::Simple.parse("mn_MN"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("mn_Cyrl_MN"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("mn-Cyrl-MN"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("mn-Cyrl-MN"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("mn_MN"), lang.to_posix
-
- lang = Locale::Tag.parse("zh-Latn-CN-variant1")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "zh", lang.language
- assert_equal "CN", lang.region
- assert_equal "Latn", lang.script
- assert_equal ["variant1"], lang.variants
-
- assert_equal [Locale::Tag::Common.parse("zh-Latn-CN-variant1"),
- Locale::Tag::Common.parse("zh-Latn-CN"),
- Locale::Tag::Common.parse("zh-CN-variant1"),
- Locale::Tag::Common.parse("zh-CN"),
- Locale::Tag::Common.parse("zh-Latn-variant1"),
- Locale::Tag::Common.parse("zh-Latn"),
- Locale::Tag::Common.parse("zh-variant1"),
- Locale::Tag::Common.parse("zh"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("zh_Latn_CN-variant1"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("zh-Latn-CN_VARIANT1"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
- end
-
- def test_common_lang_region_variants_rfc3066
- # RFC3066 compatible
- lang = Locale::Tag.parse("ja-jp-mac")
- assert_equal Locale::Tag::Common, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal ["mac"], lang.variants
- assert_equal nil, lang.script
- assert_equal [Locale::Tag::Common.parse("ja_JP_mac"),
- Locale::Tag::Common.parse("ja_JP"),
- Locale::Tag::Common.parse("ja_JP_mac"),
- Locale::Tag::Common.parse("ja_JP"),
- Locale::Tag::Common.parse("ja_mac"),
- Locale::Tag::Common.parse("ja"),
- Locale::Tag::Common.parse("ja_mac"),
- Locale::Tag::Common.parse("ja"),
- ], lang.candidates
-
- end
-
- def test_common_writer
- lang = Locale::Tag.parse("zh-Latn-CN-variant1")
- lang.language = "ja"
- assert_equal "ja_Latn_CN_variant1", lang.to_s
- lang.script = "Hira"
- assert_equal "ja_Hira_CN_variant1", lang.to_s
- lang.region = "JP"
- assert_equal "ja_Hira_JP_variant1", lang.to_s
- lang.variants = ["variant1", "variant2"]
- assert_equal "ja_Hira_JP_variant1_variant2", lang.to_s
-
- assert_equal [Locale::Tag::Common.parse("ja-Hira-JP-variant1-variant2"),
- Locale::Tag::Common.parse("ja-Hira-JP"),
- Locale::Tag::Common.parse("ja-JP-variant1-variant2"),
- Locale::Tag::Common.parse("ja-JP"),
- Locale::Tag::Common.parse("ja-Hira-variant1-variant2"),
- Locale::Tag::Common.parse("ja-Hira"),
- Locale::Tag::Common.parse("ja-variant1-variant2"),
- Locale::Tag::Common.parse("ja"),
- ], lang.candidates
-
- end
-
- def test_rfc_lang_script_region_variant_extension
- lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1")
- assert_equal Locale::Tag::Rfc, lang.class
- assert_equal "zh", lang.language
- assert_equal "CN", lang.region
- assert_equal "Latn", lang.script
- assert_equal ["variant1"], lang.variants
- assert_equal ["a-extend1"], lang.extensions
- assert_equal nil, lang.privateuse
-
- assert_equal [Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"),
- Locale::Tag::Rfc.parse("zh-Latn-CN"),
- Locale::Tag::Rfc.parse("zh-CN-variant1"),
- Locale::Tag::Rfc.parse("zh-CN"),
- Locale::Tag::Rfc.parse("zh-Latn-variant1"),
- Locale::Tag::Rfc.parse("zh-Latn"),
- Locale::Tag::Rfc.parse("zh-variant1"),
- Locale::Tag::Rfc.parse("zh"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("zh-Latn-CN_variant1"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
- end
-
- def test_rfc_lang_script_region_extensions
- lang = Locale::Tag.parse("ja-Kana-JP-0abc-y-aa-z-bbccdd-b-nnnnnnnn")
- assert_equal Locale::Tag::Rfc, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "Kana", lang.script
- assert_equal ["0abc"], lang.variants
- assert_equal ["y-aa", "z-bbccdd", "b-nnnnnnnn"], lang.extensions
-
- assert_equal [Locale::Tag::Rfc.parse("ja-Kana-JP-0abc"),
- Locale::Tag::Rfc.parse("ja-Kana-JP"),
- Locale::Tag::Rfc.parse("ja-JP-0abc"),
- Locale::Tag::Rfc.parse("ja-JP"),
- Locale::Tag::Rfc.parse("ja-Kana-0abc"),
- Locale::Tag::Rfc.parse("ja-Kana"),
- Locale::Tag::Rfc.parse("ja-0abc"),
- Locale::Tag::Rfc.parse("ja"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja-Kana-JP-0abc"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-0abc-y-aa-z-bbccdd-b-nnnnnnnn"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_0abc"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
- end
-
- def test_rfc_lang_region_variants_extensions
- lang = Locale::Tag.parse("ja-JP-0abc-y-aa-z-bbccdd-b-xxxnnnnn")
- assert_equal Locale::Tag::Rfc, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal nil, lang.script
- assert_equal ["0abc"], lang.variants
- assert_equal ["y-aa", "z-bbccdd", "b-xxxnnnnn"], lang.extensions
-
- assert_equal [Locale::Tag::Rfc.parse("ja-JP-0abc"),
- Locale::Tag::Rfc.parse("ja-JP"),
- Locale::Tag::Rfc.parse("ja-JP-0abc"),
- Locale::Tag::Rfc.parse("ja-JP"),
- Locale::Tag::Rfc.parse("ja-0abc"),
- Locale::Tag::Rfc.parse("ja"),
- Locale::Tag::Rfc.parse("ja-0abc"),
- Locale::Tag::Rfc.parse("ja"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja-JP-0abc"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-JP-0abc-y-aa-z-bbccdd-b-xxxnnnnn"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_JP_0abc"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
-
- end
-
- def test_rfc_lang_extensions
- lang = Locale::Tag.parse("ja-y-aa-z-bbccdd-b-xxnnnnn")
- assert_equal Locale::Tag::Rfc, lang.class
- assert_equal "ja", lang.language
- assert_equal nil, lang.region
- assert_equal nil, lang.script
- assert_equal [], lang.variants
- assert_equal ["y-aa", "z-bbccdd", "b-xxnnnnn"], lang.extensions
-
- assert_equal [Locale::Tag::Rfc.parse("ja"),
- Locale::Tag::Rfc.parse("ja"),
- Locale::Tag::Rfc.parse("ja"),
- Locale::Tag::Rfc.parse("ja"),
- Locale::Tag::Rfc.parse("ja"),
- Locale::Tag::Rfc.parse("ja"),
- Locale::Tag::Rfc.parse("ja"),
- Locale::Tag::Rfc.parse("ja"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-y-aa-z-bbccdd-b-xxnnnnn"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja"), lang.to_posix
- end
-
- def test_rfc_privateuse
- #Privateuse
- lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1")
- assert_equal Locale::Tag::Rfc, lang.class
- assert_equal "zh", lang.language
- assert_equal "CN", lang.region
- assert_equal "Latn", lang.script
- assert_equal ["variant1"], lang.variants
- assert_equal ["a-extend1"], lang.extensions
- assert_equal "x-wadegile-private1", lang.privateuse
-
- assert_equal [Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"),
- Locale::Tag::Rfc.parse("zh-Latn-CN"),
- Locale::Tag::Rfc.parse("zh-CN-variant1"),
- Locale::Tag::Rfc.parse("zh-CN"),
- Locale::Tag::Rfc.parse("zh-Latn-variant1"),
- Locale::Tag::Rfc.parse("zh-Latn"),
- Locale::Tag::Rfc.parse("zh-variant1"),
- Locale::Tag::Rfc.parse("zh"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("zh-Latn-CN_variant1"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
- end
-
- def test_rfc_cldr_conversion
- #Privateuse with x-ldml (CLDR conversion)
- lang = Locale::Tag.parse("en-US-x-ldml-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar")
- assert_equal Locale::Tag::Rfc, lang.class
- assert_equal "en", lang.language
- assert_equal "US", lang.region
- assert_equal ["POSIX"], lang.variants
- assert_equal ["k-calendar-islamic", "k-collatio-traditio", "k-colStren-secondar"], lang.extensions
- assert_equal "x-ldml-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar", lang.privateuse
-
- assert_equal [Locale::Tag::Rfc.parse("en-US-POSIX"),
- Locale::Tag::Rfc.parse("en-US"),
- Locale::Tag::Rfc.parse("en-US-POSIX"),
- Locale::Tag::Rfc.parse("en-US"),
- Locale::Tag::Rfc.parse("en-POSIX"),
- Locale::Tag::Rfc.parse("en"),
- Locale::Tag::Rfc.parse("en-POSIX"),
- Locale::Tag::Rfc.parse("en"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en-US_POSIX"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en-US-x-ldml-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en_US_POSIX@calendar=islamic;collatio=traditio;colStren=secondar"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en_US@POSIX"), lang.to_posix
-
- lang = Locale::Tag.parse("en-US-x-ldml-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar")
- assert_equal Locale::Tag::Rfc, lang.class
- assert_equal "en", lang.language
- assert_equal "US", lang.region
- assert_equal [], lang.variants
- assert_equal ["k-calendar-islamic", "k-collatio-traditio", "k-colStren-secondar"], lang.extensions
- assert_equal "x-ldml-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar", lang.privateuse
-
- assert_equal [Locale::Tag::Rfc.parse("en-US"),
- Locale::Tag::Rfc.parse("en-US"),
- Locale::Tag::Rfc.parse("en-US"),
- Locale::Tag::Rfc.parse("en-US"),
- Locale::Tag::Rfc.parse("en"),
- Locale::Tag::Rfc.parse("en"),
- Locale::Tag::Rfc.parse("en"),
- Locale::Tag::Rfc.parse("en"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en-US"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en-US-x-ldml-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en_US@calendar=islamic;collatio=traditio;colStren=secondar"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
- end
-
- def test_rfc_writer
- lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1")
- lang.language = "ja"
- assert_equal "ja-Latn-CN-variant1-a-extend1-x-wadegile-private1", lang.to_s
- lang.script = "Hira"
- assert_equal "ja-Hira-CN-variant1-a-extend1-x-wadegile-private1", lang.to_s
- lang.region = "JP"
- assert_equal "ja-Hira-JP-variant1-a-extend1-x-wadegile-private1", lang.to_s
- lang.variants = ["variant2"]
- assert_equal "ja-Hira-JP-variant2-a-extend1-x-wadegile-private1", lang.to_s
- lang.extensions = ["b-extend2"]
- assert_equal "ja-Hira-JP-variant2-b-extend2-x-wadegile-private1", lang.to_s
- lang.privateuse = "x-foooo"
- assert_equal "ja-Hira-JP-variant2-b-extend2-x-foooo", lang.to_s
-
- assert_equal [Locale::Tag::Rfc.parse("ja-Hira-JP-variant2"),
- Locale::Tag::Rfc.parse("ja-Hira-JP"),
- Locale::Tag::Rfc.parse("ja-JP-variant2"),
- Locale::Tag::Rfc.parse("ja-JP"),
- Locale::Tag::Rfc.parse("ja-Hira-variant2"),
- Locale::Tag::Rfc.parse("ja-Hira"),
- Locale::Tag::Rfc.parse("ja-variant2"),
- Locale::Tag::Rfc.parse("ja"),
- ], lang.candidates
- end
-
- def test_cldr_lang_extensions
- lang = Locale::Tag.parse("de@collation=phonebook")
- assert_equal Locale::Tag::Cldr, lang.class
- assert_equal "de", lang.language
- assert_equal nil, lang.region
- assert_equal "phonebook", lang.extensions["collation"]
-
- assert_equal [Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("de"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("de"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("de-k-collatio-phoneboo"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("de@collation=phonebook"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("de"), lang.to_posix
- end
-
- def test_cldr_lang_script_extension
- lang = Locale::Tag.parse("az_Arab@collation=phonebook")
- assert_equal Locale::Tag::Cldr, lang.class
- assert_equal "az", lang.language
- assert_equal nil, lang.region
- assert_equal "Arab", lang.script
- assert_equal "phonebook", lang.extensions["collation"]
-
- assert_equal [Locale::Tag::Cldr.parse("az_Arab"),
- Locale::Tag::Cldr.parse("az_Arab"),
- Locale::Tag::Cldr.parse("az"),
- Locale::Tag::Cldr.parse("az"),
- Locale::Tag::Cldr.parse("az_Arab"),
- Locale::Tag::Cldr.parse("az_Arab"),
- Locale::Tag::Cldr.parse("az"),
- Locale::Tag::Cldr.parse("az"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("az"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("az_Arab"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("az-Arab-k-collatio-phoneboo"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("az_Arab@collation=phonebook"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("az"), lang.to_posix
-
- end
-
- def test_cldr_lang_region_extensions
- lang = Locale::Tag.parse("de_DE@collation=phonebook;currency=DDM")
- assert_equal Locale::Tag::Cldr, lang.class
- assert_equal "de", lang.language
- assert_equal "DE", lang.region
- assert_equal "phonebook", lang.extensions["collation"]
- assert_equal "DDM", lang.extensions["currency"]
-
- assert_equal [Locale::Tag::Cldr.parse("de_DE"),
- Locale::Tag::Cldr.parse("de_DE"),
- Locale::Tag::Cldr.parse("de_DE"),
- Locale::Tag::Cldr.parse("de_DE"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- Locale::Tag::Cldr.parse("de"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("de_DE"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("de_DE"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("de-DE-k-collatio-phoneboo-k-currency-DDM"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("de_DE@collation=phonebook;currency=DDM"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("de_DE"), lang.to_posix
-
- lang = Locale::Tag.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary")
- assert_equal Locale::Tag::Cldr, lang.class
- assert_equal "en", lang.language
- assert_equal "US", lang.region
- assert_equal [], lang.variants
- assert_equal "islamic", lang.extensions["calendar"]
- assert_equal "traditional", lang.extensions["collation"]
- assert_equal "secondary", lang.extensions["colStrength"]
-
- assert_equal [Locale::Tag::Cldr.parse("en_US"),
- Locale::Tag::Cldr.parse("en_US"),
- Locale::Tag::Cldr.parse("en_US"),
- Locale::Tag::Cldr.parse("en_US"),
- Locale::Tag::Cldr.parse("en"),
- Locale::Tag::Cldr.parse("en"),
- Locale::Tag::Cldr.parse("en"),
- Locale::Tag::Cldr.parse("en"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en-US-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
-
- end
-
- def test_cldr_lang_region_variants_extensions
- lang = Locale::Tag.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary")
- assert_equal Locale::Tag::Cldr, lang.class
- assert_equal "en", lang.language
- assert_equal "US", lang.region
- assert_equal ["POSIX"], lang.variants
- assert_equal "islamic", lang.extensions["calendar"]
- assert_equal "traditional", lang.extensions["collation"]
- assert_equal "secondary", lang.extensions["colStrength"]
-
- assert_equal [Locale::Tag::Cldr.parse("en_US_POSIX"),
- Locale::Tag::Cldr.parse("en_US"),
- Locale::Tag::Cldr.parse("en_US_POSIX"),
- Locale::Tag::Cldr.parse("en_US"),
- Locale::Tag::Cldr.parse("en_POSIX"),
- Locale::Tag::Cldr.parse("en"),
- Locale::Tag::Cldr.parse("en_POSIX"),
- Locale::Tag::Cldr.parse("en"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en_US_POSIX"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en-US-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en_US@POSIX"), lang.to_posix
- end
-
- def test_cldr_writer
- lang = Locale::Tag.parse("en_US@calendar=islamic;colStrength=secondary")
- lang.language = "ja"
- assert_equal "ja_US@calendar=islamic;colStrength=secondary", lang.to_s
- lang.script = "Hira"
- assert_equal "ja_Hira_US@calendar=islamic;colStrength=secondary", lang.to_s
- lang.region = "JP"
- assert_equal "ja_Hira_JP@calendar=islamic;colStrength=secondary", lang.to_s
- lang.variants = ["POSIX"]
- assert_equal "ja_Hira_JP_POSIX@calendar=islamic;colStrength=secondary", lang.to_s
- lang.extensions = {:collation => "traditional"}
- assert_equal "ja_Hira_JP_POSIX@collation=traditional", lang.to_s
-
- assert_equal [Locale::Tag::Cldr.parse("ja_Hira_JP_POSIX"),
- Locale::Tag::Cldr.parse("ja_Hira_JP"),
- Locale::Tag::Cldr.parse("ja_JP_POSIX"),
- Locale::Tag::Cldr.parse("ja_JP"),
- Locale::Tag::Cldr.parse("ja_Hira_POSIX"),
- Locale::Tag::Cldr.parse("ja_Hira"),
- Locale::Tag::Cldr.parse("ja_POSIX"),
- Locale::Tag::Cldr.parse("ja"),
- ], lang.candidates
- end
-
- def test_posix_c_and_posix
- lang = Locale::Tag.parse("C")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "en", lang.language
- assert_equal "US", lang.region
- assert_equal "C", lang.tag
-
- assert_equal [Locale::Tag::Posix.parse("en_US"),
- Locale::Tag::Posix.parse("en_US"),
- Locale::Tag::Posix.parse("en_US"),
- Locale::Tag::Posix.parse("en_US"),
- Locale::Tag::Posix.parse("en"),
- Locale::Tag::Posix.parse("en"),
- Locale::Tag::Posix.parse("en"),
- Locale::Tag::Posix.parse("en"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en-US"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en_US"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
-
- lang = Locale::Tag.parse("POSIX")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "en", lang.language
- assert_equal "US", lang.region
- assert_equal "POSIX", lang.tag
-
- assert_equal [Locale::Tag::Posix.parse("en_US"),
- Locale::Tag::Posix.parse("en_US"),
- Locale::Tag::Posix.parse("en_US"),
- Locale::Tag::Posix.parse("en_US"),
- Locale::Tag::Posix.parse("en"),
- Locale::Tag::Posix.parse("en"),
- Locale::Tag::Posix.parse("en"),
- Locale::Tag::Posix.parse("en"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en-US"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en_US"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
- end
-
- def test_posix_irregular_format
- lang = Locale::Tag.parse("japanese.euc")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "japanese", lang.language
- assert_equal nil, lang.region
- assert_equal "euc", lang.charset
-
- assert_equal [Locale::Tag::Posix.parse("japanese.euc"),
- Locale::Tag::Posix.parse("japanese.euc"),
- Locale::Tag::Posix.parse("japanese"),
- Locale::Tag::Posix.parse("japanese"),
- Locale::Tag::Posix.parse("japanese.euc"),
- Locale::Tag::Posix.parse("japanese.euc"),
- Locale::Tag::Posix.parse("japanese"),
- Locale::Tag::Posix.parse("japanese"),
- ], lang.candidates
-
- lang = Locale::Tag.parse("univ.utf8")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "univ", lang.language
- assert_equal nil, lang.region
- assert_equal "utf8", lang.charset
-
- assert_equal [Locale::Tag::Posix.parse("univ.utf8"),
- Locale::Tag::Posix.parse("univ.utf8"),
- Locale::Tag::Posix.parse("univ"),
- Locale::Tag::Posix.parse("univ"),
- Locale::Tag::Posix.parse("univ.utf8"),
- Locale::Tag::Posix.parse("univ.utf8"),
- Locale::Tag::Posix.parse("univ"),
- Locale::Tag::Posix.parse("univ"),
- ], lang.candidates
- end
-
- def test_posix_lang_charset
- lang = Locale::Tag.parse("es.iso885915")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "es", lang.language
- assert_equal nil, lang.region
- assert_equal "iso885915", lang.charset
- assert_equal nil, lang.modifier
-
- assert_equal [Locale::Tag::Posix.parse("es.iso885915"),
- Locale::Tag::Posix.parse("es.iso885915"),
- Locale::Tag::Posix.parse("es"),
- Locale::Tag::Posix.parse("es"),
- Locale::Tag::Posix.parse("es.iso885915"),
- Locale::Tag::Posix.parse("es.iso885915"),
- Locale::Tag::Posix.parse("es"),
- Locale::Tag::Posix.parse("es"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("es"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("es"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("es"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("es"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("es.iso885915"), lang.to_posix
- end
-
- def test_posix_lang_region_charset
- lang = Locale::Tag.parse("es_ES.iso885915")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "es", lang.language
- assert_equal "ES", lang.region
- assert_equal "iso885915", lang.charset
- assert_equal nil, lang.modifier
-
- assert_equal [Locale::Tag::Posix.parse("es_ES.iso885915"),
- Locale::Tag::Posix.parse("es_ES.iso885915"),
- Locale::Tag::Posix.parse("es_ES"),
- Locale::Tag::Posix.parse("es_ES"),
- Locale::Tag::Posix.parse("es.iso885915"),
- Locale::Tag::Posix.parse("es.iso885915"),
- Locale::Tag::Posix.parse("es"),
- Locale::Tag::Posix.parse("es"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("es_ES"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("es_ES"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("es-ES"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("es_ES"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("es_ES.iso885915"), lang.to_posix
-
- lang = Locale::Tag.parse("ja_JP.UTF-8")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "ja", lang.language
- assert_equal "JP", lang.region
- assert_equal "UTF-8", lang.charset
-
- assert_equal [Locale::Tag::Posix.parse("ja_JP.UTF-8"),
- Locale::Tag::Posix.parse("ja_JP.UTF-8"),
- Locale::Tag::Posix.parse("ja_JP"),
- Locale::Tag::Posix.parse("ja_JP"),
- Locale::Tag::Posix.parse("ja.UTF-8"),
- Locale::Tag::Posix.parse("ja.UTF-8"),
- Locale::Tag::Posix.parse("ja"),
- Locale::Tag::Posix.parse("ja"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_JP"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), lang.to_posix
- end
-
- def test_posix_lang_modifier
- lang = Locale::Tag.parse("es@euro")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "es", lang.language
- assert_equal nil, lang.region
- assert_equal nil, lang.charset
- assert_equal "euro", lang.modifier
-
- assert_equal [Locale::Tag::Posix.parse("es@euro"),
- Locale::Tag::Posix.parse("es"),
- Locale::Tag::Posix.parse("es@euro"),
- Locale::Tag::Posix.parse("es"),
- Locale::Tag::Posix.parse("es@euro"),
- Locale::Tag::Posix.parse("es"),
- Locale::Tag::Posix.parse("es@euro"),
- Locale::Tag::Posix.parse("es"),
- ], lang.candidates
-
- # A modifier is converted to a variant.
- # If the modifier is less than 5 characters, it is not canonical value.
- assert_equal Locale::Tag::Simple.parse("es"), lang.to_simple
- assert_equal Locale::Tag::Common.new("es", nil, nil, ["euro"]), lang.to_common
- assert_equal Locale::Tag::Rfc.new("es", nil, nil, ["euro"]), lang.to_rfc
- assert_equal Locale::Tag::Cldr.new("es", nil, nil, ["euro"]), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("es@euro"), lang.to_posix
- end
-
- def test_posix_lang_region_modifier
- lang = Locale::Tag.parse("es_ES@euro")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "es", lang.language
- assert_equal "ES", lang.region
- assert_equal nil, lang.charset
- assert_equal "euro", lang.modifier
-
- assert_equal [Locale::Tag::Posix.parse("es_ES@euro"),
- Locale::Tag::Posix.parse("es_ES"),
- Locale::Tag::Posix.parse("es_ES@euro"),
- Locale::Tag::Posix.parse("es_ES"),
- Locale::Tag::Posix.parse("es@euro"),
- Locale::Tag::Posix.parse("es"),
- Locale::Tag::Posix.parse("es@euro"),
- Locale::Tag::Posix.parse("es"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("es_ES"), lang.to_simple
- assert_equal Locale::Tag::Common.new("es", nil, "ES", ["euro"]), lang.to_common
- assert_equal Locale::Tag::Rfc.new("es", nil, "ES", ["euro"]), lang.to_rfc
- assert_equal Locale::Tag::Cldr.new("es", nil, "ES", ["EURO"]), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("es_ES@euro"), lang.to_posix
-
- end
-
- def test_posix_lang_region_charset_modifier
- lang = Locale::Tag.parse("es_ES.iso885915@euro")
- assert_equal Locale::Tag::Posix, lang.class
- assert_equal "es", lang.language
- assert_equal "ES", lang.region
- assert_equal "iso885915", lang.charset
- assert_equal "euro", lang.modifier
-
- assert_equal [Locale::Tag::Posix.parse("es_ES.iso885915@euro"),
- Locale::Tag::Posix.parse("es_ES.iso885915"),
- Locale::Tag::Posix.parse("es_ES@euro"),
- Locale::Tag::Posix.parse("es_ES"),
- Locale::Tag::Posix.parse("es.iso885915@euro"),
- Locale::Tag::Posix.parse("es.iso885915"),
- Locale::Tag::Posix.parse("es@euro"),
- Locale::Tag::Posix.parse("es"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("es_ES"), lang.to_simple
- assert_equal Locale::Tag::Common.new("es", nil, "ES", ["euro"]), lang.to_common
- assert_equal Locale::Tag::Rfc.new("es", nil, "ES", ["euro"]), lang.to_rfc
- assert_equal Locale::Tag::Cldr.new("es", nil, "ES", ["EURO"]), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("es_ES.iso885915@euro"), lang.to_posix
-
- end
-
- def test_posix_writer
- lang = Locale::Tag.parse("es_ES.iso885915@euro")
- lang.language = "ja"
- assert_equal "ja_ES.iso885915@euro", lang.to_s
- lang.region = "JP"
- assert_equal "ja_JP.iso885915@euro", lang.to_s
- lang.charset = "EUC-JP"
- assert_equal "ja_JP.EUC-JP@euro", lang.to_s
- lang.modifier = "osaka"
- assert_equal "ja_JP.EUC-JP@osaka", lang.to_s
- assert_equal [Locale::Tag::Posix.parse("ja_JP.EUC-JP@osaka"),
- Locale::Tag::Posix.parse("ja_JP.EUC-JP"),
- Locale::Tag::Posix.parse("ja_JP@osaka"),
- Locale::Tag::Posix.parse("ja_JP"),
- Locale::Tag::Posix.parse("ja.EUC-JP@osaka"),
- Locale::Tag::Posix.parse("ja.EUC-JP"),
- Locale::Tag::Posix.parse("ja@osaka"),
- Locale::Tag::Posix.parse("ja"),
- ], lang.candidates
- end
-
- def test_invaild
- lang = Locale::Tag.parse("")
- assert_equal Locale::Tag::Irregular, lang.class
- assert_equal "en", lang.language
- assert_equal nil, lang.region
-
- assert_equal [Locale::Tag::Irregular.new("en"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("en"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en"), lang.to_posix
-
- lang = Locale::Tag.parse(nil)
- assert_equal Locale::Tag::Irregular, lang.class
- assert_equal "en", lang.language
- assert_equal nil, lang.region
-
- assert_equal [Locale::Tag::Irregular.new("en"),
- ], lang.candidates
-
- assert_equal Locale::Tag::Simple.parse("en"), lang.to_simple
- assert_equal Locale::Tag::Common.parse("en"), lang.to_common
- assert_equal Locale::Tag::Rfc.parse("en"), lang.to_rfc
- assert_equal Locale::Tag::Cldr.parse("en"), lang.to_cldr
- assert_equal Locale::Tag::Posix.parse("en"), lang.to_posix
- end
-
- def test_raise_error
- assert_raise(RuntimeError){
- Locale::Tag::Simple.new(nil)
- }
- end
-
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_taglist.rb b/vendor/gems/locale-2.0.5/test/test_taglist.rb
deleted file mode 100644
index 5a426a7d3..000000000
--- a/vendor/gems/locale-2.0.5/test/test_taglist.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# encoding: UTF-8
-
-require 'locale/tag'
-require 'locale/taglist'
-require 'test/unit'
-
-class TestTagList < Test::Unit::TestCase
- def test_taglist_posix
- list = Locale::TagList.new([Locale::Tag.parse("ja_JP.eucJP@mobile"),
- Locale::Tag.parse("en_US.iso8859-1")])
-
- assert_equal "ja", list.language
- assert_equal "JP", list.region
- assert_equal "eucJP", list.charset
- assert_equal "mobile", list.modifier
- assert_equal "ja_JP.eucJP@mobile", list.to_s
- assert_equal Locale::Tag::Common.parse("ja_JP_mobile"), list.to_common
- assert_equal Locale::Tag::Rfc.parse("ja-JP-mobile"), list.to_rfc
- assert_equal Locale::Tag::Cldr.parse("ja_JP_mobile"), list.to_cldr
- assert_equal Locale::Tag::Posix.parse("ja_JP.eucJP@mobile"), list.to_posix
- assert_equal Locale::Tag::Posix.parse("en_US.iso8859-1"), list[1]
- end
-
- def test_taglist_rfc
- list = Locale::TagList.new([Locale::Tag.parse("ja-Hira-JP-MOBILE-y-aaa-x-bbb"),
- Locale::Tag.parse("en-US-mobile")])
- assert_equal "ja", list.language
- assert_equal "Hira", list.script
- assert_equal "JP", list.region
- assert_equal ["MOBILE"], list.variants
- assert_equal ["y-aaa"], list.extensions
- assert_equal "x-bbb", list.privateuse
- end
-end
diff --git a/vendor/gems/locale-2.0.5/test/test_thread.rb b/vendor/gems/locale-2.0.5/test/test_thread.rb
deleted file mode 100644
index 43dba513e..000000000
--- a/vendor/gems/locale-2.0.5/test/test_thread.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'locale'
-require 'thread'
-require 'test/unit'
-
-class TestThread < Test::Unit::TestCase
-
- def setup
- Locale.init(:driver => :env)
- @mutex = Mutex.new
- end
-
- def invoke_thread(tag, sleep_time)
- Thread.start do
- @mutex.synchronize {
- ENV["LC_ALL"] = tag
- Locale.current
- }
- (1..10).each do |v|
-# puts "#{tag}: locale = #{Locale.current}"
- assert_equal tag, Locale.current.to_posix.to_s
- print "."
- $stdout.flush
- sleep sleep_time
- end
- Locale.clear # Clear this thread only.
- end
- end
-
- def test_thread
- th1 = invoke_thread("ja_JP.eucJP", 0.3)
- th2 = invoke_thread("zh_CN.UTF-8", 0.2)
- th3 = invoke_thread("en", 0.1)
- th1.join
- th2.join
- th3.join
- end
-end
diff --git a/vendor/gems/rack-1.1.0/.specification b/vendor/gems/rack-1.1.0/.specification
deleted file mode 100644
index b0c27ec96..000000000
--- a/vendor/gems/rack-1.1.0/.specification
+++ /dev/null
@@ -1,314 +0,0 @@
---- !ruby/object:Gem::Specification
-name: rack
-version: !ruby/object:Gem::Version
- hash: 19
- prerelease: false
- segments:
- - 1
- - 1
- - 0
- version: 1.1.0
-platform: ruby
-authors:
-- Christian Neukirchen
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2010-01-03 00:00:00 +00:00
-default_executable: rackup
-dependencies:
-- !ruby/object:Gem::Dependency
- name: test-spec
- prerelease: false
- requirement: &id001 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id001
-- !ruby/object:Gem::Dependency
- name: camping
- prerelease: false
- requirement: &id002 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id002
-- !ruby/object:Gem::Dependency
- name: fcgi
- prerelease: false
- requirement: &id003 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id003
-- !ruby/object:Gem::Dependency
- name: memcache-client
- prerelease: false
- requirement: &id004 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id004
-- !ruby/object:Gem::Dependency
- name: mongrel
- prerelease: false
- requirement: &id005 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id005
-- !ruby/object:Gem::Dependency
- name: thin
- prerelease: false
- requirement: &id006 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id006
-description: |
- Rack provides minimal, modular and adaptable interface for developing
- web applications in Ruby. By wrapping HTTP requests and responses in
- the simplest way possible, it unifies and distills the API for web
- servers, web frameworks, and software in between (the so-called
- middleware) into a single method call.
-
- Also see http://rack.rubyforge.org.
-
-email: chneukirchen@gmail.com
-executables:
-- rackup
-extensions: []
-
-extra_rdoc_files:
-- README
-- SPEC
-- KNOWN-ISSUES
-files:
-- bin/rackup
-- contrib/rack_logo.svg
-- example/lobster.ru
-- example/protectedlobster.rb
-- example/protectedlobster.ru
-- lib/rack/adapter/camping.rb
-- lib/rack/auth/abstract/handler.rb
-- lib/rack/auth/abstract/request.rb
-- lib/rack/auth/basic.rb
-- lib/rack/auth/digest/md5.rb
-- lib/rack/auth/digest/nonce.rb
-- lib/rack/auth/digest/params.rb
-- lib/rack/auth/digest/request.rb
-- lib/rack/builder.rb
-- lib/rack/cascade.rb
-- lib/rack/chunked.rb
-- lib/rack/commonlogger.rb
-- lib/rack/conditionalget.rb
-- lib/rack/config.rb
-- lib/rack/content_length.rb
-- lib/rack/content_type.rb
-- lib/rack/deflater.rb
-- lib/rack/directory.rb
-- lib/rack/etag.rb
-- lib/rack/file.rb
-- lib/rack/handler/cgi.rb
-- lib/rack/handler/evented_mongrel.rb
-- lib/rack/handler/fastcgi.rb
-- lib/rack/handler/lsws.rb
-- lib/rack/handler/mongrel.rb
-- lib/rack/handler/scgi.rb
-- lib/rack/handler/swiftiplied_mongrel.rb
-- lib/rack/handler/thin.rb
-- lib/rack/handler/webrick.rb
-- lib/rack/handler.rb
-- lib/rack/head.rb
-- lib/rack/lint.rb
-- lib/rack/lobster.rb
-- lib/rack/lock.rb
-- lib/rack/logger.rb
-- lib/rack/methodoverride.rb
-- lib/rack/mime.rb
-- lib/rack/mock.rb
-- lib/rack/nulllogger.rb
-- lib/rack/recursive.rb
-- lib/rack/reloader.rb
-- lib/rack/request.rb
-- lib/rack/response.rb
-- lib/rack/rewindable_input.rb
-- lib/rack/runtime.rb
-- lib/rack/sendfile.rb
-- lib/rack/server.rb
-- lib/rack/session/abstract/id.rb
-- lib/rack/session/cookie.rb
-- lib/rack/session/memcache.rb
-- lib/rack/session/pool.rb
-- lib/rack/showexceptions.rb
-- lib/rack/showstatus.rb
-- lib/rack/static.rb
-- lib/rack/urlmap.rb
-- lib/rack/utils.rb
-- lib/rack.rb
-- COPYING
-- KNOWN-ISSUES
-- rack.gemspec
-- RDOX
-- README
-- SPEC
-- test/spec_rack_auth_basic.rb
-- test/spec_rack_auth_digest.rb
-- test/spec_rack_builder.rb
-- test/spec_rack_camping.rb
-- test/spec_rack_cascade.rb
-- test/spec_rack_cgi.rb
-- test/spec_rack_chunked.rb
-- test/spec_rack_commonlogger.rb
-- test/spec_rack_conditionalget.rb
-- test/spec_rack_config.rb
-- test/spec_rack_content_length.rb
-- test/spec_rack_content_type.rb
-- test/spec_rack_deflater.rb
-- test/spec_rack_directory.rb
-- test/spec_rack_etag.rb
-- test/spec_rack_fastcgi.rb
-- test/spec_rack_file.rb
-- test/spec_rack_handler.rb
-- test/spec_rack_head.rb
-- test/spec_rack_lint.rb
-- test/spec_rack_lobster.rb
-- test/spec_rack_lock.rb
-- test/spec_rack_logger.rb
-- test/spec_rack_methodoverride.rb
-- test/spec_rack_mock.rb
-- test/spec_rack_mongrel.rb
-- test/spec_rack_nulllogger.rb
-- test/spec_rack_recursive.rb
-- test/spec_rack_request.rb
-- test/spec_rack_response.rb
-- test/spec_rack_rewindable_input.rb
-- test/spec_rack_runtime.rb
-- test/spec_rack_sendfile.rb
-- test/spec_rack_session_cookie.rb
-- test/spec_rack_session_memcache.rb
-- test/spec_rack_session_pool.rb
-- test/spec_rack_showexceptions.rb
-- test/spec_rack_showstatus.rb
-- test/spec_rack_static.rb
-- test/spec_rack_thin.rb
-- test/spec_rack_urlmap.rb
-- test/spec_rack_utils.rb
-- test/spec_rack_webrick.rb
-- test/spec_rackup.rb
-has_rdoc: true
-homepage: http://rack.rubyforge.org
-licenses: []
-
-post_install_message:
-rdoc_options: []
-
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: rack
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: a modular Ruby webserver interface
-test_files:
-- test/spec_rack_auth_basic.rb
-- test/spec_rack_auth_digest.rb
-- test/spec_rack_builder.rb
-- test/spec_rack_camping.rb
-- test/spec_rack_cascade.rb
-- test/spec_rack_cgi.rb
-- test/spec_rack_chunked.rb
-- test/spec_rack_commonlogger.rb
-- test/spec_rack_conditionalget.rb
-- test/spec_rack_config.rb
-- test/spec_rack_content_length.rb
-- test/spec_rack_content_type.rb
-- test/spec_rack_deflater.rb
-- test/spec_rack_directory.rb
-- test/spec_rack_etag.rb
-- test/spec_rack_fastcgi.rb
-- test/spec_rack_file.rb
-- test/spec_rack_handler.rb
-- test/spec_rack_head.rb
-- test/spec_rack_lint.rb
-- test/spec_rack_lobster.rb
-- test/spec_rack_lock.rb
-- test/spec_rack_logger.rb
-- test/spec_rack_methodoverride.rb
-- test/spec_rack_mock.rb
-- test/spec_rack_mongrel.rb
-- test/spec_rack_nulllogger.rb
-- test/spec_rack_recursive.rb
-- test/spec_rack_request.rb
-- test/spec_rack_response.rb
-- test/spec_rack_rewindable_input.rb
-- test/spec_rack_runtime.rb
-- test/spec_rack_sendfile.rb
-- test/spec_rack_session_cookie.rb
-- test/spec_rack_session_memcache.rb
-- test/spec_rack_session_pool.rb
-- test/spec_rack_showexceptions.rb
-- test/spec_rack_showstatus.rb
-- test/spec_rack_static.rb
-- test/spec_rack_thin.rb
-- test/spec_rack_urlmap.rb
-- test/spec_rack_utils.rb
-- test/spec_rack_webrick.rb
-- test/spec_rackup.rb
diff --git a/vendor/gems/rack-1.1.0/COPYING b/vendor/gems/rack-1.1.0/COPYING
deleted file mode 100644
index 83b390bcb..000000000
--- a/vendor/gems/rack-1.1.0/COPYING
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright (c) 2007, 2008, 2009, 2010 Christian Neukirchen <purl.org/net/chneukirchen>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/gems/rack-1.1.0/KNOWN-ISSUES b/vendor/gems/rack-1.1.0/KNOWN-ISSUES
deleted file mode 100644
index a1af5dc1e..000000000
--- a/vendor/gems/rack-1.1.0/KNOWN-ISSUES
+++ /dev/null
@@ -1,21 +0,0 @@
-= Known issues with Rack and Web servers
-
-* Lighttpd sets wrong SCRIPT_NAME and PATH_INFO if you mount your
- FastCGI app at "/". This can be fixed by using this middleware:
-
- class LighttpdScriptNameFix
- def initialize(app)
- @app = app
- end
-
- def call(env)
- env["PATH_INFO"] = env["SCRIPT_NAME"].to_s + env["PATH_INFO"].to_s
- env["SCRIPT_NAME"] = ""
- @app.call(env)
- end
- end
-
- Of course, use this only when your app runs at "/".
-
- Since lighttpd 1.4.23, you also can use the "fix-root-scriptname" flag
- in fastcgi.server.
diff --git a/vendor/gems/rack-1.1.0/RDOX b/vendor/gems/rack-1.1.0/RDOX
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rack-1.1.0/RDOX
+++ /dev/null
diff --git a/vendor/gems/rack-1.1.0/README b/vendor/gems/rack-1.1.0/README
deleted file mode 100644
index 777b12d36..000000000
--- a/vendor/gems/rack-1.1.0/README
+++ /dev/null
@@ -1,399 +0,0 @@
-= Rack, a modular Ruby webserver interface
-
-Rack provides a minimal, modular and adaptable interface for developing
-web applications in Ruby. By wrapping HTTP requests and responses in
-the simplest way possible, it unifies and distills the API for web
-servers, web frameworks, and software in between (the so-called
-middleware) into a single method call.
-
-The exact details of this are described in the Rack specification,
-which all Rack applications should conform to.
-
-== Specification changes in this release
-
-With Rack 1.1, the Rack specification (found in SPEC) changed in the
-following backward-incompatible ways.
-
-* Rack::VERSION has been pushed to [1,1].
-* rack.logger is now specified.
-* The SPEC now allows subclasses of the required types.
-* rack.input has to be opened in binary mode.
-
-== Supported web servers
-
-The included *handlers* connect all kinds of web servers to Rack:
-* Mongrel
-* EventedMongrel
-* SwiftipliedMongrel
-* WEBrick
-* FCGI
-* CGI
-* SCGI
-* LiteSpeed
-* Thin
-
-These web servers include Rack handlers in their distributions:
-* Ebb
-* Fuzed
-* Glassfish v3
-* Phusion Passenger (which is mod_rack for Apache and for nginx)
-* Rainbows!
-* Unicorn
-* Zbatery
-
-Any valid Rack app will run the same on all these handlers, without
-changing anything.
-
-== Supported web frameworks
-
-The included *adapters* connect Rack with existing Ruby web frameworks:
-* Camping
-
-These frameworks include Rack adapters in their distributions:
-* Camping
-* Coset
-* Halcyon
-* Mack
-* Maveric
-* Merb
-* Racktools::SimpleApplication
-* Ramaze
-* Ruby on Rails
-* Rum
-* Sinatra
-* Sin
-* Vintage
-* Waves
-* Wee
-* ... and many others.
-
-Current links to these projects can be found at
-http://wiki.ramaze.net/Home#other-frameworks
-
-== Available middleware
-
-Between the server and the framework, Rack can be customized to your
-applications needs using middleware, for example:
-* Rack::URLMap, to route to multiple applications inside the same process.
-* Rack::CommonLogger, for creating Apache-style logfiles.
-* Rack::ShowException, for catching unhandled exceptions and
- presenting them in a nice and helpful way with clickable backtrace.
-* Rack::File, for serving static files.
-* ...many others!
-
-All these components use the same interface, which is described in
-detail in the Rack specification. These optional components can be
-used in any way you wish.
-
-== Convenience
-
-If you want to develop outside of existing frameworks, implement your
-own ones, or develop middleware, Rack provides many helpers to create
-Rack applications quickly and without doing the same web stuff all
-over:
-* Rack::Request, which also provides query string parsing and
- multipart handling.
-* Rack::Response, for convenient generation of HTTP replies and
- cookie handling.
-* Rack::MockRequest and Rack::MockResponse for efficient and quick
- testing of Rack application without real HTTP round-trips.
-
-== rack-contrib
-
-The plethora of useful middleware created the need for a project that
-collects fresh Rack middleware. rack-contrib includes a variety of
-add-on components for Rack and it is easy to contribute new modules.
-
-* http://github.com/rack/rack-contrib
-
-== rackup
-
-rackup is a useful tool for running Rack applications, which uses the
-Rack::Builder DSL to configure middleware and build up applications
-easily.
-
-rackup automatically figures out the environment it is run in, and
-runs your application as FastCGI, CGI, or standalone with Mongrel or
-WEBrick---all from the same configuration.
-
-== Quick start
-
-Try the lobster!
-
-Either with the embedded WEBrick starter:
-
- ruby -Ilib lib/rack/lobster.rb
-
-Or with rackup:
-
- bin/rackup -Ilib example/lobster.ru
-
-By default, the lobster is found at http://localhost:9292.
-
-== Installing with RubyGems
-
-A Gem of Rack is available at gemcutter.org. You can install it with:
-
- gem install rack
-
-I also provide a local mirror of the gems (and development snapshots)
-at my site:
-
- gem install rack --source http://chneukirchen.org/releases/gems/
-
-== Running the tests
-
-Testing Rack requires the test/spec testing framework:
-
- gem install test-spec
-
-There are two rake-based test tasks:
-
- rake test tests all the fast tests (no Handlers or Adapters)
- rake fulltest runs all the tests
-
-The fast testsuite has no dependencies outside of the core Ruby
-installation and test-spec.
-
-To run the test suite completely, you need:
-
- * camping
- * fcgi
- * memcache-client
- * mongrel
- * thin
-
-The full set of tests test FCGI access with lighttpd (on port
-9203) so you will need lighttpd installed as well as the FCGI
-libraries and the fcgi gem:
-
-Download and install lighttpd:
-
- http://www.lighttpd.net/download
-
-Installing the FCGI libraries:
-
- curl -O http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
- tar xzvf fcgi-2.4.0.tar.gz
- cd fcgi-2.4.0
- ./configure --prefix=/usr/local
- make
- sudo make install
- cd ..
-
-Installing the Ruby fcgi gem:
-
- gem install fcgi
-
-Furthermore, to test Memcache sessions, you need memcached (will be
-run on port 11211) and memcache-client installed.
-
-== History
-
-* March 3rd, 2007: First public release 0.1.
-
-* May 16th, 2007: Second public release 0.2.
- * HTTP Basic authentication.
- * Cookie Sessions.
- * Static file handler.
- * Improved Rack::Request.
- * Improved Rack::Response.
- * Added Rack::ShowStatus, for better default error messages.
- * Bug fixes in the Camping adapter.
- * Removed Rails adapter, was too alpha.
-
-* February 26th, 2008: Third public release 0.3.
- * LiteSpeed handler, by Adrian Madrid.
- * SCGI handler, by Jeremy Evans.
- * Pool sessions, by blink.
- * OpenID authentication, by blink.
- * :Port and :File options for opening FastCGI sockets, by blink.
- * Last-Modified HTTP header for Rack::File, by blink.
- * Rack::Builder#use now accepts blocks, by Corey Jewett.
- (See example/protectedlobster.ru)
- * HTTP status 201 can contain a Content-Type and a body now.
- * Many bugfixes, especially related to Cookie handling.
-
-* August 21st, 2008: Fourth public release 0.4.
- * New middleware, Rack::Deflater, by Christoffer Sawicki.
- * OpenID authentication now needs ruby-openid 2.
- * New Memcache sessions, by blink.
- * Explicit EventedMongrel handler, by Joshua Peek <josh@joshpeek.com>
- * Rack::Reloader is not loaded in rackup development mode.
- * rackup can daemonize with -D.
- * Many bugfixes, especially for pool sessions, URLMap, thread safety
- and tempfile handling.
- * Improved tests.
- * Rack moved to Git.
-
-* January 6th, 2009: Fifth public release 0.9.
- * Rack is now managed by the Rack Core Team.
- * Rack::Lint is stricter and follows the HTTP RFCs more closely.
- * Added ConditionalGet middleware.
- * Added ContentLength middleware.
- * Added Deflater middleware.
- * Added Head middleware.
- * Added MethodOverride middleware.
- * Rack::Mime now provides popular MIME-types and their extension.
- * Mongrel Header now streams.
- * Added Thin handler.
- * Official support for swiftiplied Mongrel.
- * Secure cookies.
- * Made HeaderHash case-preserving.
- * Many bugfixes and small improvements.
-
-* January 9th, 2009: Sixth public release 0.9.1.
- * Fix directory traversal exploits in Rack::File and Rack::Directory.
-
-* April 25th, 2009: Seventh public release 1.0.0.
- * SPEC change: Rack::VERSION has been pushed to [1,0].
- * SPEC change: header values must be Strings now, split on "\n".
- * SPEC change: Content-Length can be missing, in this case chunked transfer
- encoding is used.
- * SPEC change: rack.input must be rewindable and support reading into
- a buffer, wrap with Rack::RewindableInput if it isn't.
- * SPEC change: rack.session is now specified.
- * SPEC change: Bodies can now additionally respond to #to_path with
- a filename to be served.
- * NOTE: String bodies break in 1.9, use an Array consisting of a
- single String instead.
- * New middleware Rack::Lock.
- * New middleware Rack::ContentType.
- * Rack::Reloader has been rewritten.
- * Major update to Rack::Auth::OpenID.
- * Support for nested parameter parsing in Rack::Response.
- * Support for redirects in Rack::Response.
- * HttpOnly cookie support in Rack::Response.
- * The Rakefile has been rewritten.
- * Many bugfixes and small improvements.
-
-* October 18th, 2009: Eighth public release 1.0.1.
- * Bump remainder of rack.versions.
- * Support the pure Ruby FCGI implementation.
- * Fix for form names containing "=": split first then unescape components
- * Fixes the handling of the filename parameter with semicolons in names.
- * Add anchor to nested params parsing regexp to prevent stack overflows
- * Use more compatible gzip write api instead of "<<".
- * Make sure that Reloader doesn't break when executed via ruby -e
- * Make sure WEBrick respects the :Host option
- * Many Ruby 1.9 fixes.
-
-* January 3rd, 2009: Ninth public release 1.1.0.
- * Moved Auth::OpenID to rack-contrib.
- * SPEC change that relaxes Lint slightly to allow subclasses of the
- required types
- * SPEC change to document rack.input binary mode in greator detail
- * SPEC define optional rack.logger specification
- * File servers support X-Cascade header
- * Imported Config middleware
- * Imported ETag middleware
- * Imported Runtime middleware
- * Imported Sendfile middleware
- * New Logger and NullLogger middlewares
- * Added mime type for .ogv and .manifest.
- * Don't squeeze PATH_INFO slashes
- * Use Content-Type to determine POST params parsing
- * Update Rack::Utils::HTTP_STATUS_CODES hash
- * Add status code lookup utility
- * Response should call #to_i on the status
- * Add Request#user_agent
- * Request#host knows about forwared host
- * Return an empty string for Request#host if HTTP_HOST and
- SERVER_NAME are both missing
- * Allow MockRequest to accept hash params
- * Optimizations to HeaderHash
- * Refactored rackup into Rack::Server
- * Added Utils.build_nested_query to complement Utils.parse_nested_query
- * Added Utils::Multipart.build_multipart to complement
- Utils::Multipart.parse_multipart
- * Extracted set and delete cookie helpers into Utils so they can be
- used outside Response
- * Extract parse_query and parse_multipart in Request so subclasses
- can change their behavior
- * Enforce binary encoding in RewindableInput
- * Set correct external_encoding for handlers that don't use RewindableInput
-
-== Contact
-
-Please post bugs, suggestions and patches to
-the bug tracker at <http://rack.lighthouseapp.com/>.
-
-Mailing list archives are available at
-<http://groups.google.com/group/rack-devel>.
-
-Git repository (send Git patches to the mailing list):
-* http://github.com/rack/rack
-* http://git.vuxu.org/cgi-bin/gitweb.cgi?p=rack.git
-
-You are also welcome to join the #rack channel on irc.freenode.net.
-
-== Thanks
-
-The Rack Core Team, consisting of
-
-* Christian Neukirchen (chneukirchen)
-* James Tucker (raggi)
-* Josh Peek (josh)
-* Michael Fellinger (manveru)
-* Ryan Tomayko (rtomayko)
-* Scytrin dai Kinthra (scytrin)
-
-would like to thank:
-
-* Adrian Madrid, for the LiteSpeed handler.
-* Christoffer Sawicki, for the first Rails adapter and Rack::Deflater.
-* Tim Fletcher, for the HTTP authentication code.
-* Luc Heinrich for the Cookie sessions, the static file handler and bugfixes.
-* Armin Ronacher, for the logo and racktools.
-* Aredridel, Ben Alpert, Dan Kubb, Daniel Roethlisberger, Matt Todd,
- Tom Robinson, Phil Hagelberg, S. Brent Faulkner, Bosko Milekic,
- Daniel Rodríguez Troitiño, Genki Takiuchi, Geoffrey Grosenbach,
- Julien Sanchez, Kamal Fariz Mahyuddin, Masayoshi Takahashi, Patrick
- Aljordm, Mig, and Kazuhiro Nishiyama for bug fixing and other
- improvements.
-* Eric Wong, Hongli Lai, Jeremy Kemper for their continuous support
- and API improvements.
-* Yehuda Katz and Carl Lerche for refactoring rackup.
-* Brian Candler, for Rack::ContentType.
-* Graham Batty, for improved handler loading.
-* Stephen Bannasch, for bug reports and documentation.
-* Gary Wright, for proposing a better Rack::Response interface.
-* Jonathan Buch, for improvements regarding Rack::Response.
-* Armin Röhrl, for tracking down bugs in the Cookie generator.
-* Alexander Kellett for testing the Gem and reviewing the announcement.
-* Marcus Rückert, for help with configuring and debugging lighttpd.
-* The WSGI team for the well-done and documented work they've done and
- Rack builds up on.
-* All bug reporters and patch contributers not mentioned above.
-
-== Copyright
-
-Copyright (C) 2007, 2008, 2009, 2010 Christian Neukirchen <http://purl.org/net/chneukirchen>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-== Links
-
-Rack:: <http://rack.rubyforge.org/>
-Rack's Rubyforge project:: <http://rubyforge.org/projects/rack>
-Official Rack repositories:: <http://github.com/rack>
-Rack Lighthouse Bug Tracking:: <http://rack.lighthouseapp.com/>
-rack-devel mailing list:: <http://groups.google.com/group/rack-devel>
-
-Christian Neukirchen:: <http://chneukirchen.org/>
-
diff --git a/vendor/gems/rack-1.1.0/SPEC b/vendor/gems/rack-1.1.0/SPEC
deleted file mode 100644
index d2260cbe7..000000000
--- a/vendor/gems/rack-1.1.0/SPEC
+++ /dev/null
@@ -1,171 +0,0 @@
-This specification aims to formalize the Rack protocol. You
-can (and should) use Rack::Lint to enforce it.
-When you develop middleware, be sure to add a Lint before and
-after to catch all mistakes.
-= Rack applications
-A Rack application is an Ruby object (not a class) that
-responds to +call+.
-It takes exactly one argument, the *environment*
-and returns an Array of exactly three values:
-The *status*,
-the *headers*,
-and the *body*.
-== The Environment
-The environment must be an true instance of Hash (no
-subclassing allowed) that includes CGI-like headers.
-The application is free to modify the environment.
-The environment is required to include these variables
-(adopted from PEP333), except when they'd be empty, but see
-below.
-<tt>REQUEST_METHOD</tt>:: The HTTP request method, such as
- "GET" or "POST". This cannot ever
- be an empty string, and so is
- always required.
-<tt>SCRIPT_NAME</tt>:: The initial portion of the request
- URL's "path" that corresponds to the
- application object, so that the
- application knows its virtual
- "location". This may be an empty
- string, if the application corresponds
- to the "root" of the server.
-<tt>PATH_INFO</tt>:: The remainder of the request URL's
- "path", designating the virtual
- "location" of the request's target
- within the application. This may be an
- empty string, if the request URL targets
- the application root and does not have a
- trailing slash. This value may be
- percent-encoded when I originating from
- a URL.
-<tt>QUERY_STRING</tt>:: The portion of the request URL that
- follows the <tt>?</tt>, if any. May be
- empty, but is always required!
-<tt>SERVER_NAME</tt>, <tt>SERVER_PORT</tt>:: When combined with <tt>SCRIPT_NAME</tt> and <tt>PATH_INFO</tt>, these variables can be used to complete the URL. Note, however, that <tt>HTTP_HOST</tt>, if present, should be used in preference to <tt>SERVER_NAME</tt> for reconstructing the request URL. <tt>SERVER_NAME</tt> and <tt>SERVER_PORT</tt> can never be empty strings, and so are always required.
-<tt>HTTP_</tt> Variables:: Variables corresponding to the
- client-supplied HTTP request
- headers (i.e., variables whose
- names begin with <tt>HTTP_</tt>). The
- presence or absence of these
- variables should correspond with
- the presence or absence of the
- appropriate HTTP header in the
- request.
-In addition to this, the Rack environment must include these
-Rack-specific variables:
-<tt>rack.version</tt>:: The Array [1,1], representing this version of Rack.
-<tt>rack.url_scheme</tt>:: +http+ or +https+, depending on the request URL.
-<tt>rack.input</tt>:: See below, the input stream.
-<tt>rack.errors</tt>:: See below, the error stream.
-<tt>rack.multithread</tt>:: true if the application object may be simultaneously invoked by another thread in the same process, false otherwise.
-<tt>rack.multiprocess</tt>:: true if an equivalent application object may be simultaneously invoked by another process, false otherwise.
-<tt>rack.run_once</tt>:: true if the server expects (but does not guarantee!) that the application will only be invoked this one time during the life of its containing process. Normally, this will only be true for a server based on CGI (or something similar).
-Additional environment specifications have approved to
-standardized middleware APIs. None of these are required to
-be implemented by the server.
-<tt>rack.session</tt>:: A hash like interface for storing request session data.
- The store must implement:
- store(key, value) (aliased as []=);
- fetch(key, default = nil) (aliased as []);
- delete(key);
- clear;
-<tt>rack.logger</tt>:: A common object interface for logging messages.
- The object must implement:
- info(message, &block)
- debug(message, &block)
- warn(message, &block)
- error(message, &block)
- fatal(message, &block)
-The server or the application can store their own data in the
-environment, too. The keys must contain at least one dot,
-and should be prefixed uniquely. The prefix <tt>rack.</tt>
-is reserved for use with the Rack core distribution and other
-accepted specifications and must not be used otherwise.
-The environment must not contain the keys
-<tt>HTTP_CONTENT_TYPE</tt> or <tt>HTTP_CONTENT_LENGTH</tt>
-(use the versions without <tt>HTTP_</tt>).
-The CGI keys (named without a period) must have String values.
-There are the following restrictions:
-* <tt>rack.version</tt> must be an array of Integers.
-* <tt>rack.url_scheme</tt> must either be +http+ or +https+.
-* There must be a valid input stream in <tt>rack.input</tt>.
-* There must be a valid error stream in <tt>rack.errors</tt>.
-* The <tt>REQUEST_METHOD</tt> must be a valid token.
-* The <tt>SCRIPT_NAME</tt>, if non-empty, must start with <tt>/</tt>
-* The <tt>PATH_INFO</tt>, if non-empty, must start with <tt>/</tt>
-* The <tt>CONTENT_LENGTH</tt>, if given, must consist of digits only.
-* One of <tt>SCRIPT_NAME</tt> or <tt>PATH_INFO</tt> must be
- set. <tt>PATH_INFO</tt> should be <tt>/</tt> if
- <tt>SCRIPT_NAME</tt> is empty.
- <tt>SCRIPT_NAME</tt> never should be <tt>/</tt>, but instead be empty.
-=== The Input Stream
-The input stream is an IO-like object which contains the raw HTTP
-POST data.
-When applicable, its external encoding must be "ASCII-8BIT" and it
-must be opened in binary mode, for Ruby 1.9 compatibility.
-The input stream must respond to +gets+, +each+, +read+ and +rewind+.
-* +gets+ must be called without arguments and return a string,
- or +nil+ on EOF.
-* +read+ behaves like IO#read. Its signature is <tt>read([length, [buffer]])</tt>.
- If given, +length+ must be an non-negative Integer (>= 0) or +nil+, and +buffer+ must
- be a String and may not be nil. If +length+ is given and not nil, then this method
- reads at most +length+ bytes from the input stream. If +length+ is not given or nil,
- then this method reads all data until EOF.
- When EOF is reached, this method returns nil if +length+ is given and not nil, or ""
- if +length+ is not given or is nil.
- If +buffer+ is given, then the read data will be placed into +buffer+ instead of a
- newly created String object.
-* +each+ must be called without arguments and only yield Strings.
-* +rewind+ must be called without arguments. It rewinds the input
- stream back to the beginning. It must not raise Errno::ESPIPE:
- that is, it may not be a pipe or a socket. Therefore, handler
- developers must buffer the input data into some rewindable object
- if the underlying input stream is not rewindable.
-* +close+ must never be called on the input stream.
-=== The Error Stream
-The error stream must respond to +puts+, +write+ and +flush+.
-* +puts+ must be called with a single argument that responds to +to_s+.
-* +write+ must be called with a single argument that is a String.
-* +flush+ must be called without arguments and must be called
- in order to make the error appear for sure.
-* +close+ must never be called on the error stream.
-== The Response
-=== The Status
-This is an HTTP status. When parsed as integer (+to_i+), it must be
-greater than or equal to 100.
-=== The Headers
-The header must respond to +each+, and yield values of key and value.
-The header keys must be Strings.
-The header must not contain a +Status+ key,
-contain keys with <tt>:</tt> or newlines in their name,
-contain keys names that end in <tt>-</tt> or <tt>_</tt>,
-but only contain keys that consist of
-letters, digits, <tt>_</tt> or <tt>-</tt> and start with a letter.
-The values of the header must be Strings,
-consisting of lines (for multiple header values, e.g. multiple
-<tt>Set-Cookie</tt> values) seperated by "\n".
-The lines must not contain characters below 037.
-=== The Content-Type
-There must be a <tt>Content-Type</tt>, except when the
-+Status+ is 1xx, 204 or 304, in which case there must be none
-given.
-=== The Content-Length
-There must not be a <tt>Content-Length</tt> header when the
-+Status+ is 1xx, 204 or 304.
-=== The Body
-The Body must respond to +each+
-and must only yield String values.
-The Body itself should not be an instance of String, as this will
-break in Ruby 1.9.
-If the Body responds to +close+, it will be called after iteration.
-If the Body responds to +to_path+, it must return a String
-identifying the location of a file whose contents are identical
-to that produced by calling +each+; this may be used by the
-server as an alternative, possibly more efficient way to
-transport the response.
-The Body commonly is an Array of Strings, the application
-instance itself, or a File-like object.
-== Thanks
-Some parts of this specification are adopted from PEP333: Python
-Web Server Gateway Interface
-v1.0 (http://www.python.org/dev/peps/pep-0333/). I'd like to thank
-everyone involved in that effort.
diff --git a/vendor/gems/rack-1.1.0/bin/rackup b/vendor/gems/rack-1.1.0/bin/rackup
deleted file mode 100755
index ad94af4be..000000000
--- a/vendor/gems/rack-1.1.0/bin/rackup
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-
-require "rack"
-Rack::Server.start
diff --git a/vendor/gems/rack-1.1.0/contrib/rack_logo.svg b/vendor/gems/rack-1.1.0/contrib/rack_logo.svg
deleted file mode 100644
index 905dcd32b..000000000
--- a/vendor/gems/rack-1.1.0/contrib/rack_logo.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/)
- by Armin Ronacher (mitsuhiko), MIT-licensed.
--->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="200"
- height="100"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- version="1.0"
- inkscape:export-filename="/home/blackbird/Desktop/rack_logo_final.png"
- inkscape:export-xdpi="360"
- inkscape:export-ydpi="360"
- sodipodi:docbase="/home/blackbird/Desktop"
- sodipodi:docname="rack_logo.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="3.959798"
- inkscape:cx="148.56163"
- inkscape:cy="67.007749"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="200px"
- height="100px"
- inkscape:window-width="1400"
- inkscape:window-height="975"
- inkscape:window-x="0"
- inkscape:window-y="24" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="font-size:33.17043304px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Frutiger"
- d="M 102.28876,57.97848 L 102.28876,64.972684 C 101.77662,64.784857 101.19214,64.690938 100.5353,64.690927 C 99.767107,64.690938 99.026757,64.873251 98.314248,65.237867 C 97.612848,65.591455 97.056197,66.050001 96.644288,66.613505 C 96.343688,67.022337 96.121018,67.541654 95.976308,68.171455 C 95.876091,68.558187 95.826008,69.094078 95.826016,69.779128 L 95.826016,75.861765 L 87.125504,75.861765 L 87.125504,58.144219 L 95.274924,58.144219 L 95.274924,62.105392 C 95.987422,60.569555 96.783437,59.481201 97.662958,58.840325 C 98.542463,58.188434 99.622368,57.86248 100.90268,57.862463 C 101.30345,57.86248 101.76548,57.901153 102.28876,57.97848 M 115.63175,75.861765 L 115.63175,73.342526 C 114.26238,75.364548 112.21945,76.375557 109.50299,76.375558 C 107.49902,76.375557 105.94039,75.86729 104.82709,74.850755 C 103.71379,73.834221 103.15714,72.552504 103.15714,71.0056 C 103.15714,69.867528 103.41875,68.867568 103.94202,68.005716 C 104.4764,67.13283 105.22231,66.431201 106.17978,65.900825 C 106.79207,65.558307 107.65489,65.276551 108.7682,65.055554 C 109.89264,64.82353 111.22861,64.707512 112.7761,64.707501 C 113.47749,64.707512 114.37371,64.735135 115.46475,64.790371 C 115.44246,63.994833 115.12518,63.353974 114.51288,62.867793 C 113.90056,62.381638 112.86517,62.138553 111.40674,62.13854 C 110.47156,62.138553 109.50298,62.254571 108.50101,62.486592 C 107.76623,62.663395 106.66962,63.05012 105.21119,63.646768 L 105.21119,58.740881 C 106.54715,58.365223 107.78292,58.10004 108.91851,57.945332 C 110.05407,57.79066 111.31211,57.713315 112.69263,57.713297 C 114.85243,57.713315 116.71722,57.912202 118.28699,58.309959 C 119.05515,58.497815 119.76766,58.79062 120.42454,59.188378 C 121.08138,59.586169 121.59907,60.02814 121.97762,60.514293 C 122.36724,60.989428 122.68454,61.591614 122.9295,62.320853 C 123.18553,63.05012 123.31357,64.055605 123.31358,65.33731 L 123.31358,75.861765 L 115.63175,75.861765 M 115.69855,67.972568 C 114.30691,67.961526 113.33832,68.011249 112.79282,68.121734 C 112.24727,68.232234 111.81866,68.469793 111.50693,68.834413 C 111.19522,69.199047 111.03934,69.613395 111.03935,70.077459 C 111.03934,70.574683 111.22861,71.005604 111.60714,71.370227 C 111.98566,71.723808 112.44768,71.900596 112.99322,71.900593 C 113.67231,71.900596 114.29577,71.607791 114.86358,71.022173 C 115.43134,70.436566 115.71525,69.596821 115.71525,68.502934 C 115.71525,68.381399 115.70968,68.20461 115.69855,67.972568 M 142.55155,58.376254 L 142.55155,63.646768 C 141.04855,63.03907 139.76826,62.735215 138.71063,62.735202 C 137.41918,62.735215 136.38381,63.110891 135.6045,63.86223 C 134.82518,64.613593 134.43552,65.59698 134.43553,66.812392 C 134.43552,68.171463 134.82518,69.248768 135.6045,70.044311 C 136.39494,70.828816 137.46928,71.221066 138.82753,71.221061 C 139.92968,71.221066 141.22114,70.867489 142.70184,70.160328 L 142.70184,75.46399 C 140.50862,76.071702 138.34322,76.375557 136.20569,76.375558 C 134.44665,76.375557 132.80452,76.115898 131.27929,75.596582 C 130.13258,75.209858 129.13618,74.646344 128.29007,73.90604 C 127.45508,73.15469 126.80936,72.325994 126.35291,71.419948 C 125.69606,70.116137 125.36763,68.646582 125.36763,67.011279 C 125.36763,63.89539 126.52547,61.459022 128.84117,59.70217 C 130.66698,58.309976 133.14964,57.613871 136.2892,57.613853 C 138.47127,57.613871 140.55871,57.868005 142.55155,58.376254 M 154.2413,65.221293 L 159.21776,58.144219 L 168.95366,58.144219 L 162.94178,66.000268 L 169.20414,75.861765 L 159.13426,75.861765 L 154.2413,67.259888 L 154.2413,75.861765 L 145.52407,75.861765 L 145.52407,50.255022 L 154.2413,50.255022 L 154.2413,65.221293"
- id="text2980" />
- <path
- style="font-size:9.72235012px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:black;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Frutiger45-Light"
- d="M 87.460353,88.057465 L 88.081744,88.057465 L 88.081744,85.211201 L 88.101471,85.211201 C 88.259282,85.530647 88.463124,85.770232 88.712998,85.929955 C 88.962867,86.083288 89.281782,86.159955 89.669743,86.159955 C 90.33387,86.159955 90.843476,85.923565 91.198561,85.450785 C 91.560211,84.971618 91.741039,84.355087 91.741044,83.601194 C 91.741039,82.815359 91.579938,82.202023 91.25774,81.761184 C 91.086772,81.531188 90.869779,81.355493 90.60676,81.234098 C 90.343734,81.106325 90.031395,81.042436 89.669743,81.042431 C 89.43302,81.042436 89.222602,81.077575 89.038488,81.147848 C 88.85437,81.211743 88.699845,81.294798 88.574911,81.397016 C 88.456549,81.499244 88.361203,81.601466 88.288874,81.703684 C 88.216541,81.799522 88.147498,81.901745 88.081744,82.010353 L 88.062018,82.048686 L 88.042291,82.048686 L 88.081744,81.157431 L 87.460353,81.157431 L 87.460353,88.057465 M 91.060474,83.601194 C 91.06047,83.863141 91.037455,84.112309 90.991431,84.348697 C 90.945397,84.585088 90.863203,84.802312 90.744847,85.000367 C 90.633058,85.192035 90.478533,85.348563 90.281269,85.469952 C 90.090575,85.584954 89.853854,85.642454 89.571109,85.642453 C 89.308084,85.642454 89.081227,85.581759 88.890538,85.460369 C 88.699845,85.33898 88.545319,85.179258 88.426961,84.9812 C 88.308599,84.776755 88.219829,84.556338 88.160651,84.319947 C 88.108045,84.077169 88.081743,83.837586 88.081744,83.601194 C 88.081743,83.364806 88.108045,83.128416 88.160651,82.892023 C 88.219829,82.649248 88.305311,82.42883 88.417097,82.23077 C 88.535456,82.026329 88.689981,81.863412 88.880675,81.742018 C 89.077939,81.620632 89.308084,81.559938 89.571109,81.559933 C 89.853854,81.559938 90.090575,81.620632 90.281269,81.742018 C 90.478533,81.857022 90.633058,82.01355 90.744847,82.211603 C 90.863203,82.403275 90.945397,82.617303 90.991431,82.853689 C 91.037455,83.090082 91.06047,83.33925 91.060474,83.601194 M 92.509615,83.601194 C 92.509614,83.939808 92.555643,84.265642 92.647702,84.578698 C 92.746334,84.885367 92.890996,85.156896 93.081688,85.393285 C 93.272378,85.629676 93.515674,85.818149 93.811576,85.958705 C 94.11405,86.092872 94.462554,86.159955 94.85709,86.159955 C 95.251621,86.159955 95.596838,86.092872 95.892741,85.958705 C 96.195213,85.818149 96.441797,85.629676 96.632492,85.393285 C 96.823179,85.150508 96.964554,84.875783 97.056616,84.569114 C 97.155245,84.262449 97.204561,83.939808 97.204567,83.601194 C 97.204561,83.262583 97.155245,82.939944 97.056616,82.633272 C 96.964554,82.320218 96.823179,82.045495 96.632492,81.809101 C 96.441797,81.572716 96.195213,81.387438 95.892741,81.253266 C 95.596838,81.112714 95.251621,81.042436 94.85709,81.042431 C 94.462554,81.042436 94.117338,81.112714 93.821439,81.253266 C 93.525538,81.387438 93.278954,81.575911 93.081688,81.818685 C 92.890996,82.055079 92.746334,82.326608 92.647702,82.633272 C 92.555643,82.939944 92.509614,83.262583 92.509615,83.601194 M 93.190185,83.601194 C 93.190184,83.013416 93.334846,82.527858 93.624172,82.144519 C 93.920071,81.7548 94.331043,81.559938 94.85709,81.559933 C 95.383132,81.559938 95.790816,81.7548 96.080145,82.144519 C 96.376041,82.527858 96.523991,83.013416 96.523995,83.601194 C 96.523991,84.188976 96.376041,84.677727 96.080145,85.06745 C 95.790816,85.450786 95.383132,85.642454 94.85709,85.642453 C 94.331043,85.642454 93.920071,85.450786 93.624172,85.06745 C 93.334846,84.677727 93.190184,84.188976 93.190185,83.601194 M 105.09447,81.157431 L 104.47308,81.157431 L 103.08235,85.383702 L 103.06262,85.383702 L 101.73107,81.157431 L 100.98146,81.157431 L 99.580861,85.383702 L 99.561135,85.383702 L 98.239447,81.157431 L 97.558876,81.157431 L 99.176464,86.044955 L 99.926079,86.044955 L 101.29708,81.818685 L 101.31681,81.818685 L 102.68781,86.044955 L 103.43743,86.044955 L 105.09447,81.157431 M 109.15539,85.278285 C 109.00415,85.374119 108.78387,85.460369 108.49455,85.537035 C 108.2118,85.607314 107.96192,85.642454 107.74493,85.642453 C 107.22547,85.642454 106.81778,85.466758 106.52188,85.115367 C 106.23255,84.763978 106.0879,84.316754 106.0879,83.773694 L 109.5302,83.773694 L 109.5302,83.467026 C 109.5302,83.128416 109.49075,82.815359 109.41184,82.527854 C 109.33293,82.233968 109.21128,81.975217 109.04689,81.751601 C 108.88908,81.527994 108.68195,81.355493 108.42551,81.234098 C 108.16905,81.106325 107.86987,81.042436 107.52794,81.042431 C 107.21889,81.042436 106.93285,81.106325 106.66983,81.234098 C 106.4068,81.355493 106.17995,81.531188 105.98927,81.761184 C 105.80514,81.99119 105.66049,82.262718 105.55527,82.575772 C 105.45664,82.888832 105.40733,83.230639 105.40733,83.601194 C 105.40733,83.978141 105.45007,84.323142 105.53555,84.636199 C 105.62103,84.942868 105.75254,85.211201 105.93008,85.441202 C 106.11419,85.671204 106.35091,85.850093 106.64024,85.977872 C 106.93614,86.09926 107.28793,86.159955 107.69562,86.159955 C 107.93891,86.159955 108.18879,86.1344 108.44523,86.083288 C 108.70825,86.038566 108.94498,85.974677 109.15539,85.89162 L 109.15539,85.278285 M 106.0879,83.256192 C 106.0879,83.051749 106.12078,82.850499 106.18652,82.652439 C 106.25886,82.447997 106.35749,82.262718 106.48242,82.096603 C 106.61393,81.930495 106.77175,81.799522 106.95587,81.703684 C 107.13998,81.607855 107.34383,81.559938 107.56739,81.559933 C 107.79096,81.559938 107.98494,81.607855 108.14933,81.703684 C 108.31372,81.793134 108.44523,81.917717 108.54386,82.077436 C 108.64908,82.237163 108.72469,82.419247 108.77073,82.623689 C 108.82333,82.821749 108.84962,83.032582 108.84963,83.256192 L 106.0879,83.256192 M 110.61748,86.044955 L 111.23887,86.044955 L 111.23887,83.629944 C 111.23887,83.387167 111.2586,83.153972 111.29805,82.930357 C 111.33751,82.700359 111.40654,82.492719 111.50518,82.307437 C 111.60381,82.115773 111.73204,81.96244 111.88985,81.847435 C 112.05424,81.732439 112.25479,81.674939 112.49151,81.674934 C 112.66905,81.674939 112.82029,81.694105 112.94523,81.732434 L 112.94523,81.099931 C 112.88604,81.08077 112.81372,81.067992 112.72824,81.061598 C 112.64933,81.048825 112.57699,81.042436 112.51124,81.042431 C 112.21533,81.042436 111.9556,81.141464 111.73204,81.339516 C 111.51504,81.537577 111.34408,81.789939 111.21914,82.096603 L 111.19941,82.096603 L 111.19941,81.157431 L 110.57803,81.157431 C 110.59775,81.323548 110.60761,81.473688 110.60761,81.607851 C 110.61419,81.735634 110.61748,81.949662 110.61748,82.249937 L 110.61748,86.044955 M 113.39078,85.929955 C 113.78531,86.083288 114.25546,86.159955 114.80123,86.159955 C 115.00507,86.159955 115.20892,86.1344 115.41276,86.083288 C 115.61661,86.032177 115.804,85.952315 115.97497,85.843704 C 116.15251,85.735092 116.29389,85.591342 116.3991,85.412452 C 116.5043,85.233563 116.55691,85.019535 116.55691,84.770365 C 116.55691,84.553144 116.51417,84.361476 116.42868,84.195362 C 116.3432,84.029253 116.22813,83.888696 116.08347,83.773694 C 115.94537,83.652307 115.79743,83.553278 115.63961,83.476609 C 115.48838,83.393556 115.2944,83.300917 115.05769,83.198691 C 114.72232,83.051749 114.47575,82.920776 114.31793,82.805773 C 114.16012,82.690776 114.08121,82.547025 114.08121,82.374521 C 114.08121,82.080635 114.17326,81.872995 114.35738,81.751601 C 114.54807,81.623827 114.81767,81.559938 115.16618,81.559933 C 115.33714,81.559938 115.52454,81.582299 115.72839,81.627018 C 115.9388,81.665355 116.12292,81.719661 116.28074,81.789935 L 116.33991,81.262849 C 116.13607,81.186186 115.91579,81.131881 115.67907,81.099931 C 115.44893,81.061603 115.25495,81.042436 115.09713,81.042431 C 114.88014,81.042436 114.67301,81.067992 114.47575,81.119098 C 114.28505,81.163826 114.1108,81.240493 113.95298,81.349099 C 113.80175,81.457716 113.6801,81.598272 113.58805,81.770768 C 113.50256,81.936884 113.45981,82.138135 113.45981,82.374521 C 113.45981,82.547025 113.49598,82.703554 113.56832,82.844106 C 113.64065,82.978277 113.73599,83.096472 113.85435,83.198691 C 113.97272,83.300917 114.09765,83.387167 114.22916,83.457442 C 114.36725,83.527723 114.54478,83.61078 114.76178,83.706611 C 115.13658,83.879113 115.41605,84.038836 115.60016,84.185779 C 115.78428,84.326337 115.87634,84.521199 115.87634,84.770365 C 115.87634,85.038701 115.76784,85.25273 115.55085,85.412452 C 115.33385,85.565786 115.07083,85.642454 114.76178,85.642453 C 114.30807,85.642454 113.87079,85.540231 113.44995,85.335785 L 113.39078,85.929955 M 127.11361,81.157431 L 126.49222,81.157431 L 125.10149,85.383702 L 125.08177,85.383702 L 123.75021,81.157431 L 123.0006,81.157431 L 121.60001,85.383702 L 121.58027,85.383702 L 120.25859,81.157431 L 119.57802,81.157431 L 121.19561,86.044955 L 121.94522,86.044955 L 123.31623,81.818685 L 123.33595,81.818685 L 124.70696,86.044955 L 125.45657,86.044955 L 127.11361,81.157431 M 131.17454,85.278285 C 131.0233,85.374119 130.80301,85.460369 130.51369,85.537035 C 130.23094,85.607314 129.98107,85.642454 129.76408,85.642453 C 129.2446,85.642454 128.83693,85.466758 128.54103,85.115367 C 128.2517,84.763978 128.10703,84.316754 128.10704,83.773694 L 131.54935,83.773694 L 131.54935,83.467026 C 131.54934,83.128416 131.50988,82.815359 131.43099,82.527854 C 131.35207,82.233968 131.23043,81.975217 131.06604,81.751601 C 130.90822,81.527994 130.70109,81.355493 130.44465,81.234098 C 130.1882,81.106325 129.88901,81.042436 129.54709,81.042431 C 129.23803,81.042436 128.95199,81.106325 128.68897,81.234098 C 128.42595,81.355493 128.1991,81.531188 128.0084,81.761184 C 127.82429,81.99119 127.67962,82.262718 127.57442,82.575772 C 127.47578,82.888832 127.42646,83.230639 127.42646,83.601194 C 127.42646,83.978141 127.4692,84.323142 127.55469,84.636199 C 127.64017,84.942868 127.77168,85.211201 127.94923,85.441202 C 128.13334,85.671204 128.37006,85.850093 128.65939,85.977872 C 128.95529,86.09926 129.30708,86.159955 129.71476,86.159955 C 129.95805,86.159955 130.20792,86.1344 130.46438,86.083288 C 130.7274,86.038566 130.96411,85.974677 131.17454,85.89162 L 131.17454,85.278285 M 128.10704,83.256192 C 128.10703,83.051749 128.13991,82.850499 128.20567,82.652439 C 128.278,82.447997 128.37664,82.262718 128.50157,82.096603 C 128.63308,81.930495 128.7909,81.799522 128.97501,81.703684 C 129.15912,81.607855 129.36297,81.559938 129.58654,81.559933 C 129.81011,81.559938 130.00408,81.607855 130.16848,81.703684 C 130.33286,81.793134 130.46437,81.917717 130.56301,82.077436 C 130.66821,82.237163 130.74383,82.419247 130.78986,82.623689 C 130.84246,82.821749 130.86877,83.032582 130.86877,83.256192 L 128.10704,83.256192 M 132.57745,86.044955 L 133.19884,86.044955 L 133.19884,85.268702 L 133.21856,85.268702 C 133.54077,85.862871 134.06352,86.159955 134.78684,86.159955 C 135.45096,86.159955 135.96057,85.923565 136.31565,85.450785 C 136.6773,84.971618 136.85813,84.355087 136.85814,83.601194 C 136.85813,82.815359 136.69703,82.202023 136.37483,81.761184 C 136.20386,81.531188 135.98687,81.355493 135.72385,81.234098 C 135.46082,81.106325 135.14849,81.042436 134.78684,81.042431 C 134.55669,81.042436 134.34627,81.077575 134.15558,81.147848 C 133.97146,81.218131 133.81365,81.304381 133.68214,81.4066 C 133.55063,81.508827 133.44542,81.611049 133.36651,81.713268 C 133.29418,81.815494 133.24487,81.904939 133.21856,81.981603 L 133.19884,81.981603 L 133.19884,78.85742 L 132.57745,78.85742 L 132.57745,86.044955 M 136.17757,83.601194 C 136.17756,83.863141 136.15455,84.112309 136.10852,84.348697 C 136.06249,84.585088 135.9803,84.802312 135.86194,85.000367 C 135.75015,85.192035 135.59563,85.348563 135.39836,85.469952 C 135.20766,85.584954 134.97095,85.642454 134.6882,85.642453 C 134.42518,85.642454 134.19832,85.581759 134.00763,85.460369 C 133.81693,85.33898 133.66241,85.179258 133.54405,84.9812 C 133.42569,84.776755 133.33692,84.556338 133.27775,84.319947 C 133.22513,84.077169 133.19884,83.837586 133.19884,83.601194 C 133.19884,83.358417 133.22513,83.118832 133.27775,82.882439 C 133.33035,82.646053 133.41254,82.42883 133.52433,82.23077 C 133.64268,82.026329 133.79721,81.863412 133.98791,81.742018 C 134.18517,81.620632 134.4186,81.559938 134.6882,81.559933 C 134.97095,81.559938 135.20766,81.620632 135.39836,81.742018 C 135.59563,81.857022 135.75015,82.01355 135.86194,82.211603 C 135.9803,82.403275 136.06249,82.617303 136.10852,82.853689 C 136.15455,83.090082 136.17756,83.33925 136.17757,83.601194 M 143.57908,86.044955 L 144.1906,86.044955 C 144.17087,85.891621 144.15772,85.744676 144.15115,85.60412 C 144.14457,85.463564 144.14129,85.268702 144.14129,85.019534 L 144.14129,82.863273 C 144.14129,82.224385 144.0032,81.761189 143.72703,81.473683 C 143.45085,81.186186 143.00043,81.042436 142.37575,81.042431 C 142.15876,81.042436 141.9056,81.077575 141.61627,81.147848 C 141.32695,81.211743 141.08694,81.288409 140.89625,81.377849 L 140.89625,81.962436 C 141.33023,81.694105 141.8234,81.559938 142.37575,81.559933 C 142.78344,81.559938 143.07605,81.662161 143.25359,81.866601 C 143.43113,82.071051 143.51989,82.387303 143.51989,82.815356 L 143.51989,83.064524 L 143.40154,83.064524 C 142.9807,83.064527 142.6026,83.080499 142.26726,83.112441 C 141.93848,83.144389 141.62285,83.214667 141.32037,83.323276 C 141.0179,83.43189 140.77131,83.60439 140.58062,83.840777 C 140.39651,84.077169 140.30445,84.390227 140.30445,84.779949 C 140.30445,84.914117 140.32417,85.057868 140.36363,85.211201 C 140.40965,85.364536 140.49185,85.514675 140.61021,85.66162 C 140.72857,85.802177 140.89954,85.920372 141.1231,86.016205 C 141.34667,86.112038 141.62613,86.159955 141.96149,86.159955 C 142.29027,86.159955 142.60589,86.080094 142.90837,85.920371 C 143.21085,85.760649 143.42784,85.540231 143.55935,85.259118 L 143.57908,85.259118 L 143.57908,86.044955 M 143.51989,83.879111 C 143.51989,84.077169 143.50675,84.265642 143.48044,84.444531 C 143.46072,84.623422 143.40153,84.805506 143.3029,84.990783 C 143.21085,85.176063 143.0596,85.332591 142.84919,85.460369 C 142.64534,85.581759 142.37246,85.642454 142.03053,85.642453 C 141.72148,85.642454 141.46832,85.572176 141.27106,85.431619 C 141.08036,85.284674 140.98502,85.061063 140.98502,84.760782 C 140.98502,84.505227 141.05077,84.297587 141.18229,84.137862 C 141.32037,83.978141 141.5012,83.859946 141.72477,83.783277 C 141.95491,83.700224 142.2015,83.645918 142.46452,83.62036 C 142.72754,83.594807 143.02015,83.582028 143.34236,83.582027 L 143.51989,83.582027 L 143.51989,83.879111 M 145.46529,88.057465 L 146.08668,88.057465 L 146.08668,85.211201 L 146.10641,85.211201 C 146.26422,85.530647 146.46806,85.770232 146.71794,85.929955 C 146.9678,86.083288 147.28672,86.159955 147.67468,86.159955 C 148.33881,86.159955 148.84841,85.923565 149.2035,85.450785 C 149.56515,84.971618 149.74597,84.355087 149.74598,83.601194 C 149.74597,82.815359 149.58487,82.202023 149.26268,81.761184 C 149.09171,81.531188 148.87472,81.355493 148.6117,81.234098 C 148.34867,81.106325 148.03634,81.042436 147.67468,81.042431 C 147.43795,81.042436 147.22753,81.077575 147.04342,81.147848 C 146.85931,81.211743 146.70478,81.294798 146.57985,81.397016 C 146.46148,81.499244 146.36614,81.601466 146.29381,81.703684 C 146.22148,81.799522 146.15244,81.901745 146.08668,82.010353 L 146.06695,82.048686 L 146.04723,82.048686 L 146.08668,81.157431 L 145.46529,81.157431 L 145.46529,88.057465 M 149.06541,83.601194 C 149.06541,83.863141 149.04239,84.112309 148.99637,84.348697 C 148.95033,84.585088 148.86814,84.802312 148.74978,85.000367 C 148.638,85.192035 148.48347,85.348563 148.28621,85.469952 C 148.09551,85.584954 147.85879,85.642454 147.57605,85.642453 C 147.31302,85.642454 147.08616,85.581759 146.89548,85.460369 C 146.70478,85.33898 146.55025,85.179258 146.4319,84.9812 C 146.31354,84.776755 146.22477,84.556338 146.16558,84.319947 C 146.11298,84.077169 146.08668,83.837586 146.08668,83.601194 C 146.08668,83.364806 146.11298,83.128416 146.16558,82.892023 C 146.22477,82.649248 146.31025,82.42883 146.42203,82.23077 C 146.54039,82.026329 146.69492,81.863412 146.88562,81.742018 C 147.08288,81.620632 147.31302,81.559938 147.57605,81.559933 C 147.85879,81.559938 148.09551,81.620632 148.28621,81.742018 C 148.48347,81.857022 148.638,82.01355 148.74978,82.211603 C 148.86814,82.403275 148.95033,82.617303 148.99637,82.853689 C 149.04239,83.090082 149.06541,83.33925 149.06541,83.601194 M 150.84004,88.057465 L 151.46144,88.057465 L 151.46144,85.211201 L 151.48116,85.211201 C 151.63897,85.530647 151.84281,85.770232 152.09269,85.929955 C 152.34255,86.083288 152.66147,86.159955 153.04943,86.159955 C 153.71356,86.159955 154.22316,85.923565 154.57825,85.450785 C 154.9399,84.971618 155.12072,84.355087 155.12073,83.601194 C 155.12072,82.815359 154.95962,82.202023 154.63743,81.761184 C 154.46646,81.531188 154.24947,81.355493 153.98645,81.234098 C 153.72342,81.106325 153.41109,81.042436 153.04943,81.042431 C 152.8127,81.042436 152.60228,81.077575 152.41817,81.147848 C 152.23406,81.211743 152.07953,81.294798 151.9546,81.397016 C 151.83623,81.499244 151.74089,81.601466 151.66856,81.703684 C 151.59623,81.799522 151.52719,81.901745 151.46144,82.010353 L 151.4417,82.048686 L 151.42198,82.048686 L 151.46144,81.157431 L 150.84004,81.157431 L 150.84004,88.057465 M 154.44016,83.601194 C 154.44016,83.863141 154.41715,84.112309 154.37112,84.348697 C 154.32508,84.585088 154.24289,84.802312 154.12453,85.000367 C 154.01275,85.192035 153.85822,85.348563 153.66096,85.469952 C 153.47026,85.584954 153.23354,85.642454 152.9508,85.642453 C 152.68777,85.642454 152.46091,85.581759 152.27023,85.460369 C 152.07953,85.33898 151.925,85.179258 151.80665,84.9812 C 151.68829,84.776755 151.59952,84.556338 151.54033,84.319947 C 151.48773,84.077169 151.46143,83.837586 151.46144,83.601194 C 151.46143,83.364806 151.48773,83.128416 151.54033,82.892023 C 151.59952,82.649248 151.685,82.42883 151.79679,82.23077 C 151.91514,82.026329 152.06967,81.863412 152.26037,81.742018 C 152.45763,81.620632 152.68777,81.559938 152.9508,81.559933 C 153.23354,81.559938 153.47026,81.620632 153.66096,81.742018 C 153.85822,81.857022 154.01275,82.01355 154.12453,82.211603 C 154.24289,82.403275 154.32508,82.617303 154.37112,82.853689 C 154.41715,83.090082 154.44016,83.33925 154.44016,83.601194 M 156.27397,86.044955 L 156.89536,86.044955 L 156.89536,78.85742 L 156.27397,78.85742 L 156.27397,86.044955 M 158.43157,86.044955 L 159.05296,86.044955 L 159.05296,81.157431 L 158.43157,81.157431 L 158.43157,86.044955 M 159.05296,79.049088 L 158.43157,79.049088 L 158.43157,79.854092 L 159.05296,79.854092 L 159.05296,79.049088 M 163.91314,81.234098 C 163.7619,81.182993 163.58435,81.13827 163.38052,81.099931 C 163.18325,81.061603 162.95638,81.042436 162.69995,81.042431 C 162.33171,81.042436 161.99307,81.106325 161.68401,81.234098 C 161.38154,81.355493 161.11852,81.531188 160.89496,81.761184 C 160.67795,81.9848 160.51028,82.25633 160.39192,82.575772 C 160.27356,82.888832 160.21438,83.230639 160.21438,83.601194 C 160.21438,83.946197 160.2637,84.275226 160.36233,84.588282 C 160.46754,84.89495 160.61878,85.166479 160.81605,85.402869 C 161.01989,85.639259 161.27305,85.824537 161.57552,85.958705 C 161.88457,86.092872 162.23307,86.159955 162.62104,86.159955 C 162.87749,86.159955 163.10762,86.147178 163.31147,86.121622 C 163.51531,86.102455 163.71586,86.057733 163.91314,85.987455 L 163.85395,85.422035 C 163.44627,85.568981 163.06817,85.642454 162.71967,85.642453 C 162.44349,85.642454 162.19033,85.591342 161.96019,85.489119 C 161.73663,85.380508 161.54593,85.233563 161.38812,85.048284 C 161.23031,84.856617 161.10866,84.639394 161.02318,84.396614 C 160.9377,84.147448 160.89496,83.882308 160.89496,83.601194 C 160.89496,82.994249 161.06263,82.502303 161.39799,82.125353 C 161.73333,81.748411 162.19691,81.559938 162.78872,81.559933 C 162.94652,81.559938 163.12077,81.582299 163.31147,81.627018 C 163.50215,81.671744 163.68628,81.732439 163.86381,81.809101 L 163.91314,81.234098 M 167.77509,86.044955 L 168.38662,86.044955 C 168.36688,85.891621 168.35374,85.744676 168.34716,85.60412 C 168.34059,85.463564 168.3373,85.268702 168.3373,85.019534 L 168.3373,82.863273 C 168.3373,82.224385 168.19921,81.761189 167.92304,81.473683 C 167.64686,81.186186 167.19644,81.042436 166.57176,81.042431 C 166.35477,81.042436 166.10161,81.077575 165.81229,81.147848 C 165.52296,81.211743 165.28295,81.288409 165.09226,81.377849 L 165.09226,81.962436 C 165.52625,81.694105 166.01942,81.559938 166.57176,81.559933 C 166.97945,81.559938 167.27205,81.662161 167.4496,81.866601 C 167.62714,82.071051 167.71591,82.387303 167.71591,82.815356 L 167.71591,83.064524 L 167.59756,83.064524 C 167.17671,83.064527 166.79862,83.080499 166.46327,83.112441 C 166.13448,83.144389 165.81886,83.214667 165.51639,83.323276 C 165.21391,83.43189 164.96733,83.60439 164.77663,83.840777 C 164.59252,84.077169 164.50047,84.390227 164.50047,84.779949 C 164.50047,84.914117 164.52019,85.057868 164.55964,85.211201 C 164.60567,85.364536 164.68786,85.514675 164.80623,85.66162 C 164.92459,85.802177 165.09555,85.920372 165.31912,86.016205 C 165.54268,86.112038 165.82215,86.159955 166.1575,86.159955 C 166.48628,86.159955 166.8019,86.080094 167.10439,85.920371 C 167.40686,85.760649 167.62385,85.540231 167.75536,85.259118 L 167.77509,85.259118 L 167.77509,86.044955 M 167.71591,83.879111 C 167.71591,84.077169 167.70276,84.265642 167.67645,84.444531 C 167.65673,84.623422 167.59755,84.805506 167.49892,84.990783 C 167.40686,85.176063 167.25562,85.332591 167.0452,85.460369 C 166.84136,85.581759 166.56848,85.642454 166.22655,85.642453 C 165.91749,85.642454 165.66433,85.572176 165.46707,85.431619 C 165.27638,85.284674 165.18103,85.061063 165.18103,84.760782 C 165.18103,84.505227 165.24678,84.297587 165.3783,84.137862 C 165.51639,83.978141 165.69721,83.859946 165.92079,83.783277 C 166.15093,83.700224 166.39751,83.645918 166.66053,83.62036 C 166.92355,83.594807 167.21617,83.582028 167.53837,83.582027 L 167.71591,83.582027 L 167.71591,83.879111 M 171.89041,81.157431 L 170.74627,81.157431 L 170.74627,79.767842 L 170.12487,79.978676 L 170.12487,81.157431 L 169.13855,81.157431 L 169.13855,81.674934 L 170.12487,81.674934 L 170.12487,84.530781 C 170.12487,84.805506 170.13474,85.032313 170.15447,85.211201 C 170.17419,85.390091 170.22022,85.553009 170.29255,85.699953 C 170.36489,85.84051 170.47996,85.952315 170.63778,86.035372 C 170.79558,86.118427 171.006,86.159955 171.26903,86.159955 C 171.40711,86.159955 171.5452,86.143983 171.68328,86.112038 C 171.82795,86.086483 171.94301,86.057733 172.02851,86.025788 L 171.98905,85.527452 C 171.89041,85.565786 171.79507,85.594537 171.70301,85.613703 C 171.61753,85.63287 171.52218,85.642454 171.41697,85.642453 C 171.18025,85.642454 171.00929,85.568981 170.90408,85.422035 C 170.79887,85.275091 170.74627,85.080229 170.74627,84.837449 L 170.74627,81.674934 L 171.89041,81.674934 L 171.89041,81.157431 M 172.93762,86.044955 L 173.55901,86.044955 L 173.55901,81.157431 L 172.93762,81.157431 L 172.93762,86.044955 M 173.55901,79.049088 L 172.93762,79.049088 L 172.93762,79.854092 L 173.55901,79.854092 L 173.55901,79.049088 M 174.71057,83.601194 C 174.71057,83.939808 174.75659,84.265642 174.84866,84.578698 C 174.94729,84.885367 175.09195,85.156896 175.28264,85.393285 C 175.47333,85.629676 175.71663,85.818149 176.01253,85.958705 C 176.315,86.092872 176.66351,86.159955 177.05804,86.159955 C 177.45257,86.159955 177.7978,86.092872 178.0937,85.958705 C 178.39617,85.818149 178.64275,85.629676 178.83345,85.393285 C 179.02414,85.150508 179.16551,84.875783 179.25757,84.569114 C 179.35619,84.262449 179.40552,83.939808 179.40552,83.601194 C 179.40552,83.262583 179.35619,82.939944 179.25757,82.633272 C 179.16551,82.320218 179.02414,82.045495 178.83345,81.809101 C 178.64275,81.572716 178.39617,81.387438 178.0937,81.253266 C 177.7978,81.112714 177.45257,81.042436 177.05804,81.042431 C 176.66351,81.042436 176.31829,81.112714 176.0224,81.253266 C 175.72649,81.387438 175.47991,81.575911 175.28264,81.818685 C 175.09195,82.055079 174.94729,82.326608 174.84866,82.633272 C 174.75659,82.939944 174.71057,83.262583 174.71057,83.601194 M 175.39114,83.601194 C 175.39113,83.013416 175.5358,82.527858 175.82513,82.144519 C 176.12103,81.7548 176.53199,81.559938 177.05804,81.559933 C 177.58408,81.559938 177.99177,81.7548 178.2811,82.144519 C 178.57699,82.527858 178.72495,83.013416 178.72495,83.601194 C 178.72495,84.188976 178.57699,84.677727 178.2811,85.06745 C 177.99177,85.450786 177.58408,85.642454 177.05804,85.642453 C 176.53199,85.642454 176.12103,85.450786 175.82513,85.06745 C 175.5358,84.677727 175.39113,84.188976 175.39114,83.601194 M 180.46998,86.044955 L 181.09138,86.044955 L 181.09138,83.342442 C 181.09138,83.125222 181.11768,82.914387 181.17029,82.709939 C 181.22289,82.499108 181.30508,82.307441 181.41687,82.134936 C 181.53523,81.95605 181.68975,81.815494 181.88045,81.713268 C 182.07772,81.611049 182.31114,81.559938 182.58075,81.559933 C 182.995,81.559938 183.29748,81.690911 183.48817,81.952852 C 183.67886,82.214802 183.77421,82.588553 183.77421,83.074107 L 183.77421,86.044955 L 184.3956,86.044955 L 184.3956,82.920774 C 184.3956,82.345775 184.25751,81.888967 183.98134,81.55035 C 183.70516,81.211743 183.27118,81.042436 182.67938,81.042431 C 182.43608,81.042436 182.21909,81.071186 182.0284,81.128681 C 181.84428,81.186186 181.68975,81.262854 181.56482,81.358683 C 181.44646,81.454521 181.34782,81.556744 181.26893,81.665351 C 181.19001,81.773967 181.11768,81.895356 181.05192,82.029519 L 181.0322,82.029519 L 181.0322,81.157431 L 180.43054,81.157431 C 180.45684,81.419382 180.46998,81.802717 180.46998,82.307437 L 180.46998,86.044955 M 185.42016,85.929955 C 185.81469,86.083288 186.28484,86.159955 186.83061,86.159955 C 187.03445,86.159955 187.2383,86.1344 187.44214,86.083288 C 187.64598,86.032177 187.83338,85.952315 188.00435,85.843704 C 188.18188,85.735092 188.32326,85.591342 188.42848,85.412452 C 188.53368,85.233563 188.58628,85.019535 188.58628,84.770365 C 188.58628,84.553144 188.54354,84.361476 188.45806,84.195362 C 188.37258,84.029253 188.2575,83.888696 188.11285,83.773694 C 187.97475,83.652307 187.82681,83.553278 187.66899,83.476609 C 187.51776,83.393556 187.32378,83.300917 187.08706,83.198691 C 186.7517,83.051749 186.50513,82.920776 186.34731,82.805773 C 186.18949,82.690776 186.11059,82.547025 186.11059,82.374521 C 186.11059,82.080635 186.20264,81.872995 186.38676,81.751601 C 186.57745,81.623827 186.84705,81.559938 187.19555,81.559933 C 187.36652,81.559938 187.55392,81.582299 187.75777,81.627018 C 187.96818,81.665355 188.1523,81.719661 188.31012,81.789935 L 188.36929,81.262849 C 188.16545,81.186186 187.94517,81.131881 187.70845,81.099931 C 187.47831,81.061603 187.28432,81.042436 187.12652,81.042431 C 186.90952,81.042436 186.70238,81.067992 186.50513,81.119098 C 186.31443,81.163826 186.14018,81.240493 185.98236,81.349099 C 185.83113,81.457716 185.70948,81.598272 185.61743,81.770768 C 185.53194,81.936884 185.48919,82.138135 185.4892,82.374521 C 185.48919,82.547025 185.52536,82.703554 185.59769,82.844106 C 185.67003,82.978277 185.76537,83.096472 185.88373,83.198691 C 186.00209,83.300917 186.12703,83.387167 186.25854,83.457442 C 186.39662,83.527723 186.57416,83.61078 186.79116,83.706611 C 187.16596,83.879113 187.44543,84.038836 187.62955,84.185779 C 187.81366,84.326337 187.90572,84.521199 187.90572,84.770365 C 187.90572,85.038701 187.79722,85.25273 187.58022,85.412452 C 187.36323,85.565786 187.10021,85.642454 186.79116,85.642453 C 186.33745,85.642454 185.90017,85.540231 185.47933,85.335785 L 185.42016,85.929955"
- id="text2985" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:2.95839429;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 12.925286,86.778391 L 13.286986,19.159668 L 58.155285,26.942569 L 57.772633,93.67717 L 12.925286,86.778391 z "
- id="path2990" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- d="M 13.488233,19.049404 L 37.172883,11.162464 L 77.786022,19.420245 L 57.107048,26.22552 L 13.488233,19.049404 z "
- id="path3877" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 57.997556,93.629361 L 77.486975,86.74764 L 77.759697,19.547174 L 58.5016,26.445081 L 57.997556,93.629361 z "
- id="path3879"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 14.330613,38.606641 L 36.912066,32.135194 L 76.635736,40.056811 L 58.346077,46.531185 L 14.330613,38.606641 z "
- id="path3881"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 14.150271,65.640082 L 36.731724,59.168636 L 77.314157,65.640929 L 57.787539,72.680481 L 14.150271,65.640082 z "
- id="path3883"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 13.820355,86.361841 L 35.130498,79.541609 L 76.834867,85.878963"
- id="path3887" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 34.866065,79.042658 L 35.146638,69.563169"
- id="path3889" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 36.154699,58.803397 L 36.535174,42.88001"
- id="path3891" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 36.776858,31.759485 L 36.855284,23.494878"
- id="path3893"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/vendor/gems/rack-1.1.0/example/lobster.ru b/vendor/gems/rack-1.1.0/example/lobster.ru
deleted file mode 100644
index cc7ffcae8..000000000
--- a/vendor/gems/rack-1.1.0/example/lobster.ru
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'rack/lobster'
-
-use Rack::ShowExceptions
-run Rack::Lobster.new
diff --git a/vendor/gems/rack-1.1.0/example/protectedlobster.rb b/vendor/gems/rack-1.1.0/example/protectedlobster.rb
deleted file mode 100644
index 108b9d05e..000000000
--- a/vendor/gems/rack-1.1.0/example/protectedlobster.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'rack'
-require 'rack/lobster'
-
-lobster = Rack::Lobster.new
-
-protected_lobster = Rack::Auth::Basic.new(lobster) do |username, password|
- 'secret' == password
-end
-
-protected_lobster.realm = 'Lobster 2.0'
-
-pretty_protected_lobster = Rack::ShowStatus.new(Rack::ShowExceptions.new(protected_lobster))
-
-Rack::Handler::WEBrick.run pretty_protected_lobster, :Port => 9292
diff --git a/vendor/gems/rack-1.1.0/example/protectedlobster.ru b/vendor/gems/rack-1.1.0/example/protectedlobster.ru
deleted file mode 100644
index b0da62f0c..000000000
--- a/vendor/gems/rack-1.1.0/example/protectedlobster.ru
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rack/lobster'
-
-use Rack::ShowExceptions
-use Rack::Auth::Basic, "Lobster 2.0" do |username, password|
- 'secret' == password
-end
-
-run Rack::Lobster.new
diff --git a/vendor/gems/rack-1.1.0/lib/rack.rb b/vendor/gems/rack-1.1.0/lib/rack.rb
deleted file mode 100644
index c118fc079..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright (C) 2007, 2008, 2009, 2010 Christian Neukirchen <purl.org/net/chneukirchen>
-#
-# Rack is freely distributable under the terms of an MIT-style license.
-# See COPYING or http://www.opensource.org/licenses/mit-license.php.
-
-# The Rack main module, serving as a namespace for all core Rack
-# modules and classes.
-#
-# All modules meant for use in your application are <tt>autoload</tt>ed here,
-# so it should be enough just to <tt>require rack.rb</tt> in your code.
-
-module Rack
- # The Rack protocol version number implemented.
- VERSION = [1,1]
-
- # Return the Rack protocol version as a dotted string.
- def self.version
- VERSION.join(".")
- end
-
- # Return the Rack release as a dotted string.
- def self.release
- "1.1"
- end
-
- autoload :Builder, "rack/builder"
- autoload :Cascade, "rack/cascade"
- autoload :Chunked, "rack/chunked"
- autoload :CommonLogger, "rack/commonlogger"
- autoload :ConditionalGet, "rack/conditionalget"
- autoload :Config, "rack/config"
- autoload :ContentLength, "rack/content_length"
- autoload :ContentType, "rack/content_type"
- autoload :ETag, "rack/etag"
- autoload :File, "rack/file"
- autoload :Deflater, "rack/deflater"
- autoload :Directory, "rack/directory"
- autoload :ForwardRequest, "rack/recursive"
- autoload :Handler, "rack/handler"
- autoload :Head, "rack/head"
- autoload :Lint, "rack/lint"
- autoload :Lock, "rack/lock"
- autoload :Logger, "rack/logger"
- autoload :MethodOverride, "rack/methodoverride"
- autoload :Mime, "rack/mime"
- autoload :NullLogger, "rack/nulllogger"
- autoload :Recursive, "rack/recursive"
- autoload :Reloader, "rack/reloader"
- autoload :Runtime, "rack/runtime"
- autoload :Sendfile, "rack/sendfile"
- autoload :Server, "rack/server"
- autoload :ShowExceptions, "rack/showexceptions"
- autoload :ShowStatus, "rack/showstatus"
- autoload :Static, "rack/static"
- autoload :URLMap, "rack/urlmap"
- autoload :Utils, "rack/utils"
-
- autoload :MockRequest, "rack/mock"
- autoload :MockResponse, "rack/mock"
-
- autoload :Request, "rack/request"
- autoload :Response, "rack/response"
-
- module Auth
- autoload :Basic, "rack/auth/basic"
- autoload :AbstractRequest, "rack/auth/abstract/request"
- autoload :AbstractHandler, "rack/auth/abstract/handler"
- module Digest
- autoload :MD5, "rack/auth/digest/md5"
- autoload :Nonce, "rack/auth/digest/nonce"
- autoload :Params, "rack/auth/digest/params"
- autoload :Request, "rack/auth/digest/request"
- end
- end
-
- module Session
- autoload :Cookie, "rack/session/cookie"
- autoload :Pool, "rack/session/pool"
- autoload :Memcache, "rack/session/memcache"
- end
-
- # *Adapters* connect Rack with third party web frameworks.
- #
- # Rack includes an adapter for Camping, see README for other
- # frameworks supporting Rack in their code bases.
- #
- # Refer to the submodules for framework-specific calling details.
-
- module Adapter
- autoload :Camping, "rack/adapter/camping"
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/adapter/camping.rb b/vendor/gems/rack-1.1.0/lib/rack/adapter/camping.rb
deleted file mode 100644
index 63bc787f5..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/adapter/camping.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-module Rack
- module Adapter
- class Camping
- def initialize(app)
- @app = app
- end
-
- def call(env)
- env["PATH_INFO"] ||= ""
- env["SCRIPT_NAME"] ||= ""
- controller = @app.run(env['rack.input'], env)
- h = controller.headers
- h.each_pair do |k,v|
- if v.kind_of? URI
- h[k] = v.to_s
- end
- end
- [controller.status, controller.headers, [controller.body.to_s]]
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/auth/abstract/handler.rb b/vendor/gems/rack-1.1.0/lib/rack/auth/abstract/handler.rb
deleted file mode 100644
index 214df6299..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/auth/abstract/handler.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module Rack
- module Auth
- # Rack::Auth::AbstractHandler implements common authentication functionality.
- #
- # +realm+ should be set for all handlers.
-
- class AbstractHandler
-
- attr_accessor :realm
-
- def initialize(app, realm=nil, &authenticator)
- @app, @realm, @authenticator = app, realm, authenticator
- end
-
-
- private
-
- def unauthorized(www_authenticate = challenge)
- return [ 401,
- { 'Content-Type' => 'text/plain',
- 'Content-Length' => '0',
- 'WWW-Authenticate' => www_authenticate.to_s },
- []
- ]
- end
-
- def bad_request
- return [ 400,
- { 'Content-Type' => 'text/plain',
- 'Content-Length' => '0' },
- []
- ]
- end
-
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/auth/abstract/request.rb b/vendor/gems/rack-1.1.0/lib/rack/auth/abstract/request.rb
deleted file mode 100644
index 1d9ccec68..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/auth/abstract/request.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module Rack
- module Auth
- class AbstractRequest
-
- def initialize(env)
- @env = env
- end
-
- def provided?
- !authorization_key.nil?
- end
-
- def parts
- @parts ||= @env[authorization_key].split(' ', 2)
- end
-
- def scheme
- @scheme ||= parts.first.downcase.to_sym
- end
-
- def params
- @params ||= parts.last
- end
-
-
- private
-
- AUTHORIZATION_KEYS = ['HTTP_AUTHORIZATION', 'X-HTTP_AUTHORIZATION', 'X_HTTP_AUTHORIZATION']
-
- def authorization_key
- @authorization_key ||= AUTHORIZATION_KEYS.detect { |key| @env.has_key?(key) }
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/auth/basic.rb b/vendor/gems/rack-1.1.0/lib/rack/auth/basic.rb
deleted file mode 100644
index 955722464..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/auth/basic.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-require 'rack/auth/abstract/handler'
-require 'rack/auth/abstract/request'
-
-module Rack
- module Auth
- # Rack::Auth::Basic implements HTTP Basic Authentication, as per RFC 2617.
- #
- # Initialize with the Rack application that you want protecting,
- # and a block that checks if a username and password pair are valid.
- #
- # See also: <tt>example/protectedlobster.rb</tt>
-
- class Basic < AbstractHandler
-
- def call(env)
- auth = Basic::Request.new(env)
-
- return unauthorized unless auth.provided?
-
- return bad_request unless auth.basic?
-
- if valid?(auth)
- env['REMOTE_USER'] = auth.username
-
- return @app.call(env)
- end
-
- unauthorized
- end
-
-
- private
-
- def challenge
- 'Basic realm="%s"' % realm
- end
-
- def valid?(auth)
- @authenticator.call(*auth.credentials)
- end
-
- class Request < Auth::AbstractRequest
- def basic?
- :basic == scheme
- end
-
- def credentials
- @credentials ||= params.unpack("m*").first.split(/:/, 2)
- end
-
- def username
- credentials.first
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/auth/digest/md5.rb b/vendor/gems/rack-1.1.0/lib/rack/auth/digest/md5.rb
deleted file mode 100644
index e579dc963..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/auth/digest/md5.rb
+++ /dev/null
@@ -1,124 +0,0 @@
-require 'rack/auth/abstract/handler'
-require 'rack/auth/digest/request'
-require 'rack/auth/digest/params'
-require 'rack/auth/digest/nonce'
-require 'digest/md5'
-
-module Rack
- module Auth
- module Digest
- # Rack::Auth::Digest::MD5 implements the MD5 algorithm version of
- # HTTP Digest Authentication, as per RFC 2617.
- #
- # Initialize with the [Rack] application that you want protecting,
- # and a block that looks up a plaintext password for a given username.
- #
- # +opaque+ needs to be set to a constant base64/hexadecimal string.
- #
- class MD5 < AbstractHandler
-
- attr_accessor :opaque
-
- attr_writer :passwords_hashed
-
- def initialize(*args)
- super
- @passwords_hashed = nil
- end
-
- def passwords_hashed?
- !!@passwords_hashed
- end
-
- def call(env)
- auth = Request.new(env)
-
- unless auth.provided?
- return unauthorized
- end
-
- if !auth.digest? || !auth.correct_uri? || !valid_qop?(auth)
- return bad_request
- end
-
- if valid?(auth)
- if auth.nonce.stale?
- return unauthorized(challenge(:stale => true))
- else
- env['REMOTE_USER'] = auth.username
-
- return @app.call(env)
- end
- end
-
- unauthorized
- end
-
-
- private
-
- QOP = 'auth'.freeze
-
- def params(hash = {})
- Params.new do |params|
- params['realm'] = realm
- params['nonce'] = Nonce.new.to_s
- params['opaque'] = H(opaque)
- params['qop'] = QOP
-
- hash.each { |k, v| params[k] = v }
- end
- end
-
- def challenge(hash = {})
- "Digest #{params(hash)}"
- end
-
- def valid?(auth)
- valid_opaque?(auth) && valid_nonce?(auth) && valid_digest?(auth)
- end
-
- def valid_qop?(auth)
- QOP == auth.qop
- end
-
- def valid_opaque?(auth)
- H(opaque) == auth.opaque
- end
-
- def valid_nonce?(auth)
- auth.nonce.valid?
- end
-
- def valid_digest?(auth)
- digest(auth, @authenticator.call(auth.username)) == auth.response
- end
-
- def md5(data)
- ::Digest::MD5.hexdigest(data)
- end
-
- alias :H :md5
-
- def KD(secret, data)
- H([secret, data] * ':')
- end
-
- def A1(auth, password)
- [ auth.username, auth.realm, password ] * ':'
- end
-
- def A2(auth)
- [ auth.method, auth.uri ] * ':'
- end
-
- def digest(auth, password)
- password_hash = passwords_hashed? ? password : H(A1(auth, password))
-
- KD(password_hash, [ auth.nonce, auth.nc, auth.cnonce, QOP, H(A2(auth)) ] * ':')
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/auth/digest/nonce.rb b/vendor/gems/rack-1.1.0/lib/rack/auth/digest/nonce.rb
deleted file mode 100644
index dbe109f29..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/auth/digest/nonce.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'digest/md5'
-
-module Rack
- module Auth
- module Digest
- # Rack::Auth::Digest::Nonce is the default nonce generator for the
- # Rack::Auth::Digest::MD5 authentication handler.
- #
- # +private_key+ needs to set to a constant string.
- #
- # +time_limit+ can be optionally set to an integer (number of seconds),
- # to limit the validity of the generated nonces.
-
- class Nonce
-
- class << self
- attr_accessor :private_key, :time_limit
- end
-
- def self.parse(string)
- new(*string.unpack("m*").first.split(' ', 2))
- end
-
- def initialize(timestamp = Time.now, given_digest = nil)
- @timestamp, @given_digest = timestamp.to_i, given_digest
- end
-
- def to_s
- [([ @timestamp, digest ] * ' ')].pack("m*").strip
- end
-
- def digest
- ::Digest::MD5.hexdigest([ @timestamp, self.class.private_key ] * ':')
- end
-
- def valid?
- digest == @given_digest
- end
-
- def stale?
- !self.class.time_limit.nil? && (@timestamp - Time.now.to_i) < self.class.time_limit
- end
-
- def fresh?
- !stale?
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/auth/digest/params.rb b/vendor/gems/rack-1.1.0/lib/rack/auth/digest/params.rb
deleted file mode 100644
index 730e2efdc..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/auth/digest/params.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-module Rack
- module Auth
- module Digest
- class Params < Hash
-
- def self.parse(str)
- split_header_value(str).inject(new) do |header, param|
- k, v = param.split('=', 2)
- header[k] = dequote(v)
- header
- end
- end
-
- def self.dequote(str) # From WEBrick::HTTPUtils
- ret = (/\A"(.*)"\Z/ =~ str) ? $1 : str.dup
- ret.gsub!(/\\(.)/, "\\1")
- ret
- end
-
- def self.split_header_value(str)
- str.scan( /(\w+\=(?:"[^\"]+"|[^,]+))/n ).collect{ |v| v[0] }
- end
-
- def initialize
- super
-
- yield self if block_given?
- end
-
- def [](k)
- super k.to_s
- end
-
- def []=(k, v)
- super k.to_s, v.to_s
- end
-
- UNQUOTED = ['qop', 'nc', 'stale']
-
- def to_s
- inject([]) do |parts, (k, v)|
- parts << "#{k}=" + (UNQUOTED.include?(k) ? v.to_s : quote(v))
- parts
- end.join(', ')
- end
-
- def quote(str) # From WEBrick::HTTPUtils
- '"' << str.gsub(/[\\\"]/o, "\\\1") << '"'
- end
-
- end
- end
- end
-end
-
diff --git a/vendor/gems/rack-1.1.0/lib/rack/auth/digest/request.rb b/vendor/gems/rack-1.1.0/lib/rack/auth/digest/request.rb
deleted file mode 100644
index a8aa3bf99..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/auth/digest/request.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'rack/auth/abstract/request'
-require 'rack/auth/digest/params'
-require 'rack/auth/digest/nonce'
-
-module Rack
- module Auth
- module Digest
- class Request < Auth::AbstractRequest
-
- def method
- @env['rack.methodoverride.original_method'] || @env['REQUEST_METHOD']
- end
-
- def digest?
- :digest == scheme
- end
-
- def correct_uri?
- (@env['SCRIPT_NAME'].to_s + @env['PATH_INFO'].to_s) == uri
- end
-
- def nonce
- @nonce ||= Nonce.parse(params['nonce'])
- end
-
- def params
- @params ||= Params.parse(parts.last)
- end
-
- def method_missing(sym)
- if params.has_key? key = sym.to_s
- return params[key]
- end
- super
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/builder.rb b/vendor/gems/rack-1.1.0/lib/rack/builder.rb
deleted file mode 100644
index 530f0aaf0..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/builder.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-module Rack
- # Rack::Builder implements a small DSL to iteratively construct Rack
- # applications.
- #
- # Example:
- #
- # app = Rack::Builder.new {
- # use Rack::CommonLogger
- # use Rack::ShowExceptions
- # map "/lobster" do
- # use Rack::Lint
- # run Rack::Lobster.new
- # end
- # }
- #
- # Or
- #
- # app = Rack::Builder.app do
- # use Rack::CommonLogger
- # lambda { |env| [200, {'Content-Type' => 'text/plain'}, 'OK'] }
- # end
- #
- # +use+ adds a middleware to the stack, +run+ dispatches to an application.
- # You can use +map+ to construct a Rack::URLMap in a convenient way.
-
- class Builder
- def self.parse_file(config, opts = Server::Options.new)
- options = {}
- if config =~ /\.ru$/
- cfgfile = ::File.read(config)
- if cfgfile[/^#\\(.*)/] && opts
- options = opts.parse! $1.split(/\s+/)
- end
- cfgfile.sub!(/^__END__\n.*/, '')
- app = eval "Rack::Builder.new {( " + cfgfile + "\n )}.to_app",
- TOPLEVEL_BINDING, config
- else
- require config
- app = Object.const_get(::File.basename(config, '.rb').capitalize)
- end
- return app, options
- end
-
- def initialize(&block)
- @ins = []
- instance_eval(&block) if block_given?
- end
-
- def self.app(&block)
- self.new(&block).to_app
- end
-
- def use(middleware, *args, &block)
- @ins << lambda { |app| middleware.new(app, *args, &block) }
- end
-
- def run(app)
- @ins << app #lambda { |nothing| app }
- end
-
- def map(path, &block)
- if @ins.last.kind_of? Hash
- @ins.last[path] = self.class.new(&block).to_app
- else
- @ins << {}
- map(path, &block)
- end
- end
-
- def to_app
- @ins[-1] = Rack::URLMap.new(@ins.last) if Hash === @ins.last
- inner_app = @ins.last
- @ins[0...-1].reverse.inject(inner_app) { |a, e| e.call(a) }
- end
-
- def call(env)
- to_app.call(env)
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/cascade.rb b/vendor/gems/rack-1.1.0/lib/rack/cascade.rb
deleted file mode 100644
index 14c3e54d3..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/cascade.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-module Rack
- # Rack::Cascade tries an request on several apps, and returns the
- # first response that is not 404 (or in a list of configurable
- # status codes).
-
- class Cascade
- NotFound = [404, {}, []]
-
- attr_reader :apps
-
- def initialize(apps, catch=404)
- @apps = []; @has_app = {}
- apps.each { |app| add app }
-
- @catch = {}
- [*catch].each { |status| @catch[status] = true }
- end
-
- def call(env)
- result = NotFound
-
- @apps.each do |app|
- result = app.call(env)
- break unless @catch.include?(result[0].to_i)
- end
-
- result
- end
-
- def add app
- @has_app[app] = true
- @apps << app
- end
-
- def include? app
- @has_app.include? app
- end
-
- alias_method :<<, :add
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/chunked.rb b/vendor/gems/rack-1.1.0/lib/rack/chunked.rb
deleted file mode 100644
index dddf9694c..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/chunked.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-require 'rack/utils'
-
-module Rack
-
- # Middleware that applies chunked transfer encoding to response bodies
- # when the response does not include a Content-Length header.
- class Chunked
- include Rack::Utils
-
- def initialize(app)
- @app = app
- end
-
- def call(env)
- status, headers, body = @app.call(env)
- headers = HeaderHash.new(headers)
-
- if env['HTTP_VERSION'] == 'HTTP/1.0' ||
- STATUS_WITH_NO_ENTITY_BODY.include?(status) ||
- headers['Content-Length'] ||
- headers['Transfer-Encoding']
- [status, headers, body]
- else
- dup.chunk(status, headers, body)
- end
- end
-
- def chunk(status, headers, body)
- @body = body
- headers.delete('Content-Length')
- headers['Transfer-Encoding'] = 'chunked'
- [status, headers, self]
- end
-
- def each
- term = "\r\n"
- @body.each do |chunk|
- size = bytesize(chunk)
- next if size == 0
- yield [size.to_s(16), term, chunk, term].join
- end
- yield ["0", term, "", term].join
- end
-
- def close
- @body.close if @body.respond_to?(:close)
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/commonlogger.rb b/vendor/gems/rack-1.1.0/lib/rack/commonlogger.rb
deleted file mode 100644
index 1edc9b836..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/commonlogger.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-module Rack
- # Rack::CommonLogger forwards every request to an +app+ given, and
- # logs a line in the Apache common log format to the +logger+, or
- # rack.errors by default.
- class CommonLogger
- # Common Log Format: http://httpd.apache.org/docs/1.3/logs.html#common
- # lilith.local - - [07/Aug/2006 23:58:02] "GET / HTTP/1.1" 500 -
- # %{%s - %s [%s] "%s %s%s %s" %d %s\n} %
- FORMAT = %{%s - %s [%s] "%s %s%s %s" %d %s %0.4f\n}
-
- def initialize(app, logger=nil)
- @app = app
- @logger = logger
- end
-
- def call(env)
- began_at = Time.now
- status, header, body = @app.call(env)
- header = Utils::HeaderHash.new(header)
- log(env, status, header, began_at)
- [status, header, body]
- end
-
- private
-
- def log(env, status, header, began_at)
- now = Time.now
- length = extract_content_length(header)
-
- logger = @logger || env['rack.errors']
- logger.write FORMAT % [
- env['HTTP_X_FORWARDED_FOR'] || env["REMOTE_ADDR"] || "-",
- env["REMOTE_USER"] || "-",
- now.strftime("%d/%b/%Y %H:%M:%S"),
- env["REQUEST_METHOD"],
- env["PATH_INFO"],
- env["QUERY_STRING"].empty? ? "" : "?"+env["QUERY_STRING"],
- env["HTTP_VERSION"],
- status.to_s[0..3],
- length,
- now - began_at ]
- end
-
- def extract_content_length(headers)
- value = headers['Content-Length'] or return '-'
- value.to_s == '0' ? '-' : value
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/conditionalget.rb b/vendor/gems/rack-1.1.0/lib/rack/conditionalget.rb
deleted file mode 100644
index 046ebdb00..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/conditionalget.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'rack/utils'
-
-module Rack
-
- # Middleware that enables conditional GET using If-None-Match and
- # If-Modified-Since. The application should set either or both of the
- # Last-Modified or Etag response headers according to RFC 2616. When
- # either of the conditions is met, the response body is set to be zero
- # length and the response status is set to 304 Not Modified.
- #
- # Applications that defer response body generation until the body's each
- # message is received will avoid response body generation completely when
- # a conditional GET matches.
- #
- # Adapted from Michael Klishin's Merb implementation:
- # http://github.com/wycats/merb-core/tree/master/lib/merb-core/rack/middleware/conditional_get.rb
- class ConditionalGet
- def initialize(app)
- @app = app
- end
-
- def call(env)
- return @app.call(env) unless %w[GET HEAD].include?(env['REQUEST_METHOD'])
-
- status, headers, body = @app.call(env)
- headers = Utils::HeaderHash.new(headers)
- if etag_matches?(env, headers) || modified_since?(env, headers)
- status = 304
- headers.delete('Content-Type')
- headers.delete('Content-Length')
- body = []
- end
- [status, headers, body]
- end
-
- private
- def etag_matches?(env, headers)
- etag = headers['Etag'] and etag == env['HTTP_IF_NONE_MATCH']
- end
-
- def modified_since?(env, headers)
- last_modified = headers['Last-Modified'] and
- last_modified == env['HTTP_IF_MODIFIED_SINCE']
- end
- end
-
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/config.rb b/vendor/gems/rack-1.1.0/lib/rack/config.rb
deleted file mode 100644
index c6d446c0c..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/config.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Rack
- # Rack::Config modifies the environment using the block given during
- # initialization.
- class Config
- def initialize(app, &block)
- @app = app
- @block = block
- end
-
- def call(env)
- @block.call(env)
- @app.call(env)
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/content_length.rb b/vendor/gems/rack-1.1.0/lib/rack/content_length.rb
deleted file mode 100644
index 1e56d4385..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/content_length.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'rack/utils'
-
-module Rack
- # Sets the Content-Length header on responses with fixed-length bodies.
- class ContentLength
- include Rack::Utils
-
- def initialize(app)
- @app = app
- end
-
- def call(env)
- status, headers, body = @app.call(env)
- headers = HeaderHash.new(headers)
-
- if !STATUS_WITH_NO_ENTITY_BODY.include?(status) &&
- !headers['Content-Length'] &&
- !headers['Transfer-Encoding'] &&
- (body.respond_to?(:to_ary) || body.respond_to?(:to_str))
-
- body = [body] if body.respond_to?(:to_str) # rack 0.4 compat
- length = body.to_ary.inject(0) { |len, part| len + bytesize(part) }
- headers['Content-Length'] = length.to_s
- end
-
- [status, headers, body]
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/content_type.rb b/vendor/gems/rack-1.1.0/lib/rack/content_type.rb
deleted file mode 100644
index 874c28cd7..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/content_type.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'rack/utils'
-
-module Rack
-
- # Sets the Content-Type header on responses which don't have one.
- #
- # Builder Usage:
- # use Rack::ContentType, "text/plain"
- #
- # When no content type argument is provided, "text/html" is assumed.
- class ContentType
- def initialize(app, content_type = "text/html")
- @app, @content_type = app, content_type
- end
-
- def call(env)
- status, headers, body = @app.call(env)
- headers = Utils::HeaderHash.new(headers)
- headers['Content-Type'] ||= @content_type
- [status, headers, body]
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/deflater.rb b/vendor/gems/rack-1.1.0/lib/rack/deflater.rb
deleted file mode 100644
index ad0f53161..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/deflater.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-require "zlib"
-require "stringio"
-require "time" # for Time.httpdate
-require 'rack/utils'
-
-module Rack
- class Deflater
- def initialize(app)
- @app = app
- end
-
- def call(env)
- status, headers, body = @app.call(env)
- headers = Utils::HeaderHash.new(headers)
-
- # Skip compressing empty entity body responses and responses with
- # no-transform set.
- if Utils::STATUS_WITH_NO_ENTITY_BODY.include?(status) ||
- headers['Cache-Control'].to_s =~ /\bno-transform\b/
- return [status, headers, body]
- end
-
- request = Request.new(env)
-
- encoding = Utils.select_best_encoding(%w(gzip deflate identity),
- request.accept_encoding)
-
- # Set the Vary HTTP header.
- vary = headers["Vary"].to_s.split(",").map { |v| v.strip }
- unless vary.include?("*") || vary.include?("Accept-Encoding")
- headers["Vary"] = vary.push("Accept-Encoding").join(",")
- end
-
- case encoding
- when "gzip"
- headers['Content-Encoding'] = "gzip"
- headers.delete('Content-Length')
- mtime = headers.key?("Last-Modified") ?
- Time.httpdate(headers["Last-Modified"]) : Time.now
- [status, headers, GzipStream.new(body, mtime)]
- when "deflate"
- headers['Content-Encoding'] = "deflate"
- headers.delete('Content-Length')
- [status, headers, DeflateStream.new(body)]
- when "identity"
- [status, headers, body]
- when nil
- message = "An acceptable encoding for the requested resource #{request.fullpath} could not be found."
- [406, {"Content-Type" => "text/plain", "Content-Length" => message.length.to_s}, [message]]
- end
- end
-
- class GzipStream
- def initialize(body, mtime)
- @body = body
- @mtime = mtime
- end
-
- def each(&block)
- @writer = block
- gzip =::Zlib::GzipWriter.new(self)
- gzip.mtime = @mtime
- @body.each { |part| gzip.write(part) }
- @body.close if @body.respond_to?(:close)
- gzip.close
- @writer = nil
- end
-
- def write(data)
- @writer.call(data)
- end
- end
-
- class DeflateStream
- DEFLATE_ARGS = [
- Zlib::DEFAULT_COMPRESSION,
- # drop the zlib header which causes both Safari and IE to choke
- -Zlib::MAX_WBITS,
- Zlib::DEF_MEM_LEVEL,
- Zlib::DEFAULT_STRATEGY
- ]
-
- def initialize(body)
- @body = body
- end
-
- def each
- deflater = ::Zlib::Deflate.new(*DEFLATE_ARGS)
- @body.each { |part| yield deflater.deflate(part) }
- @body.close if @body.respond_to?(:close)
- yield deflater.finish
- nil
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/directory.rb b/vendor/gems/rack-1.1.0/lib/rack/directory.rb
deleted file mode 100644
index 927ac0c9f..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/directory.rb
+++ /dev/null
@@ -1,157 +0,0 @@
-require 'time'
-require 'rack/utils'
-require 'rack/mime'
-
-module Rack
- # Rack::Directory serves entries below the +root+ given, according to the
- # path info of the Rack request. If a directory is found, the file's contents
- # will be presented in an html based index. If a file is found, the env will
- # be passed to the specified +app+.
- #
- # If +app+ is not specified, a Rack::File of the same +root+ will be used.
-
- class Directory
- DIR_FILE = "<tr><td class='name'><a href='%s'>%s</a></td><td class='size'>%s</td><td class='type'>%s</td><td class='mtime'>%s</td></tr>"
- DIR_PAGE = <<-PAGE
-<html><head>
- <title>%s</title>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <style type='text/css'>
-table { width:100%%; }
-.name { text-align:left; }
-.size, .mtime { text-align:right; }
-.type { width:11em; }
-.mtime { width:15em; }
- </style>
-</head><body>
-<h1>%s</h1>
-<hr />
-<table>
- <tr>
- <th class='name'>Name</th>
- <th class='size'>Size</th>
- <th class='type'>Type</th>
- <th class='mtime'>Last Modified</th>
- </tr>
-%s
-</table>
-<hr />
-</body></html>
- PAGE
-
- attr_reader :files
- attr_accessor :root, :path
-
- def initialize(root, app=nil)
- @root = F.expand_path(root)
- @app = app || Rack::File.new(@root)
- end
-
- def call(env)
- dup._call(env)
- end
-
- F = ::File
-
- def _call(env)
- @env = env
- @script_name = env['SCRIPT_NAME']
- @path_info = Utils.unescape(env['PATH_INFO'])
-
- if forbidden = check_forbidden
- forbidden
- else
- @path = F.join(@root, @path_info)
- list_path
- end
- end
-
- def check_forbidden
- return unless @path_info.include? ".."
-
- body = "Forbidden\n"
- size = Rack::Utils.bytesize(body)
- return [403, {"Content-Type" => "text/plain",
- "Content-Length" => size.to_s,
- "X-Cascade" => "pass"}, [body]]
- end
-
- def list_directory
- @files = [['../','Parent Directory','','','']]
- glob = F.join(@path, '*')
-
- Dir[glob].sort.each do |node|
- stat = stat(node)
- next unless stat
- basename = F.basename(node)
- ext = F.extname(node)
-
- url = F.join(@script_name, @path_info, basename)
- size = stat.size
- type = stat.directory? ? 'directory' : Mime.mime_type(ext)
- size = stat.directory? ? '-' : filesize_format(size)
- mtime = stat.mtime.httpdate
- url << '/' if stat.directory?
- basename << '/' if stat.directory?
-
- @files << [ url, basename, size, type, mtime ]
- end
-
- return [ 200, {'Content-Type'=>'text/html; charset=utf-8'}, self ]
- end
-
- def stat(node, max = 10)
- F.stat(node)
- rescue Errno::ENOENT, Errno::ELOOP
- return nil
- end
-
- # TODO: add correct response if not readable, not sure if 404 is the best
- # option
- def list_path
- @stat = F.stat(@path)
-
- if @stat.readable?
- return @app.call(@env) if @stat.file?
- return list_directory if @stat.directory?
- else
- raise Errno::ENOENT, 'No such file or directory'
- end
-
- rescue Errno::ENOENT, Errno::ELOOP
- return entity_not_found
- end
-
- def entity_not_found
- body = "Entity not found: #{@path_info}\n"
- size = Rack::Utils.bytesize(body)
- return [404, {"Content-Type" => "text/plain",
- "Content-Length" => size.to_s,
- "X-Cascade" => "pass"}, [body]]
- end
-
- def each
- show_path = @path.sub(/^#{@root}/,'')
- files = @files.map{|f| DIR_FILE % f }*"\n"
- page = DIR_PAGE % [ show_path, show_path , files ]
- page.each_line{|l| yield l }
- end
-
- # Stolen from Ramaze
-
- FILESIZE_FORMAT = [
- ['%.1fT', 1 << 40],
- ['%.1fG', 1 << 30],
- ['%.1fM', 1 << 20],
- ['%.1fK', 1 << 10],
- ]
-
- def filesize_format(int)
- FILESIZE_FORMAT.each do |format, size|
- return format % (int.to_f / size) if int >= size
- end
-
- int.to_s + 'B'
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/etag.rb b/vendor/gems/rack-1.1.0/lib/rack/etag.rb
deleted file mode 100644
index 06dbc6aa5..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/etag.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'digest/md5'
-
-module Rack
- # Automatically sets the ETag header on all String bodies
- class ETag
- def initialize(app)
- @app = app
- end
-
- def call(env)
- status, headers, body = @app.call(env)
-
- if !headers.has_key?('ETag')
- parts = []
- body.each { |part| parts << part.to_s }
- headers['ETag'] = %("#{Digest::MD5.hexdigest(parts.join(""))}")
- [status, headers, parts]
- else
- [status, headers, body]
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/file.rb b/vendor/gems/rack-1.1.0/lib/rack/file.rb
deleted file mode 100644
index 14af7b3bd..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/file.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-require 'time'
-require 'rack/utils'
-require 'rack/mime'
-
-module Rack
- # Rack::File serves files below the +root+ given, according to the
- # path info of the Rack request.
- #
- # Handlers can detect if bodies are a Rack::File, and use mechanisms
- # like sendfile on the +path+.
-
- class File
- attr_accessor :root
- attr_accessor :path
-
- alias :to_path :path
-
- def initialize(root)
- @root = root
- end
-
- def call(env)
- dup._call(env)
- end
-
- F = ::File
-
- def _call(env)
- @path_info = Utils.unescape(env["PATH_INFO"])
- return forbidden if @path_info.include? ".."
-
- @path = F.join(@root, @path_info)
-
- begin
- if F.file?(@path) && F.readable?(@path)
- serving
- else
- raise Errno::EPERM
- end
- rescue SystemCallError
- not_found
- end
- end
-
- def forbidden
- body = "Forbidden\n"
- [403, {"Content-Type" => "text/plain",
- "Content-Length" => body.size.to_s,
- "X-Cascade" => "pass"},
- [body]]
- end
-
- # NOTE:
- # We check via File::size? whether this file provides size info
- # via stat (e.g. /proc files often don't), otherwise we have to
- # figure it out by reading the whole file into memory. And while
- # we're at it we also use this as body then.
-
- def serving
- if size = F.size?(@path)
- body = self
- else
- body = [F.read(@path)]
- size = Utils.bytesize(body.first)
- end
-
- [200, {
- "Last-Modified" => F.mtime(@path).httpdate,
- "Content-Type" => Mime.mime_type(F.extname(@path), 'text/plain'),
- "Content-Length" => size.to_s
- }, body]
- end
-
- def not_found
- body = "File not found: #{@path_info}\n"
- [404, {"Content-Type" => "text/plain",
- "Content-Length" => body.size.to_s,
- "X-Cascade" => "pass"},
- [body]]
- end
-
- def each
- F.open(@path, "rb") { |file|
- while part = file.read(8192)
- yield part
- end
- }
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler.rb b/vendor/gems/rack-1.1.0/lib/rack/handler.rb
deleted file mode 100644
index 3c09883ed..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-module Rack
- # *Handlers* connect web servers with Rack.
- #
- # Rack includes Handlers for Mongrel, WEBrick, FastCGI, CGI, SCGI
- # and LiteSpeed.
- #
- # Handlers usually are activated by calling <tt>MyHandler.run(myapp)</tt>.
- # A second optional hash can be passed to include server-specific
- # configuration.
- module Handler
- def self.get(server)
- return unless server
- server = server.to_s
-
- if klass = @handlers[server]
- obj = Object
- klass.split("::").each { |x| obj = obj.const_get(x) }
- obj
- else
- try_require('rack/handler', server)
- const_get(server)
- end
- end
-
- def self.default(options = {})
- # Guess.
- if ENV.include?("PHP_FCGI_CHILDREN")
- # We already speak FastCGI
- options.delete :File
- options.delete :Port
-
- Rack::Handler::FastCGI
- elsif ENV.include?("REQUEST_METHOD")
- Rack::Handler::CGI
- else
- begin
- Rack::Handler::Mongrel
- rescue LoadError => e
- Rack::Handler::WEBrick
- end
- end
- end
-
- # Transforms server-name constants to their canonical form as filenames,
- # then tries to require them but silences the LoadError if not found
- #
- # Naming convention:
- #
- # Foo # => 'foo'
- # FooBar # => 'foo_bar.rb'
- # FooBAR # => 'foobar.rb'
- # FOObar # => 'foobar.rb'
- # FOOBAR # => 'foobar.rb'
- # FooBarBaz # => 'foo_bar_baz.rb'
- def self.try_require(prefix, const_name)
- file = const_name.gsub(/^[A-Z]+/) { |pre| pre.downcase }.
- gsub(/[A-Z]+[^A-Z]/, '_\&').downcase
-
- require(::File.join(prefix, file))
- rescue LoadError
- end
-
- def self.register(server, klass)
- @handlers ||= {}
- @handlers[server] = klass
- end
-
- autoload :CGI, "rack/handler/cgi"
- autoload :FastCGI, "rack/handler/fastcgi"
- autoload :Mongrel, "rack/handler/mongrel"
- autoload :EventedMongrel, "rack/handler/evented_mongrel"
- autoload :SwiftipliedMongrel, "rack/handler/swiftiplied_mongrel"
- autoload :WEBrick, "rack/handler/webrick"
- autoload :LSWS, "rack/handler/lsws"
- autoload :SCGI, "rack/handler/scgi"
- autoload :Thin, "rack/handler/thin"
-
- register 'cgi', 'Rack::Handler::CGI'
- register 'fastcgi', 'Rack::Handler::FastCGI'
- register 'mongrel', 'Rack::Handler::Mongrel'
- register 'emongrel', 'Rack::Handler::EventedMongrel'
- register 'smongrel', 'Rack::Handler::SwiftipliedMongrel'
- register 'webrick', 'Rack::Handler::WEBrick'
- register 'lsws', 'Rack::Handler::LSWS'
- register 'scgi', 'Rack::Handler::SCGI'
- register 'thin', 'Rack::Handler::Thin'
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/cgi.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/cgi.rb
deleted file mode 100644
index c6903f155..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/cgi.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'rack/content_length'
-
-module Rack
- module Handler
- class CGI
- def self.run(app, options=nil)
- serve app
- end
-
- def self.serve(app)
- app = ContentLength.new(app)
-
- env = ENV.to_hash
- env.delete "HTTP_CONTENT_LENGTH"
-
- env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
-
- env.update({"rack.version" => [1,1],
- "rack.input" => $stdin,
- "rack.errors" => $stderr,
-
- "rack.multithread" => false,
- "rack.multiprocess" => true,
- "rack.run_once" => true,
-
- "rack.url_scheme" => ["yes", "on", "1"].include?(ENV["HTTPS"]) ? "https" : "http"
- })
-
- env["QUERY_STRING"] ||= ""
- env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
- env["REQUEST_PATH"] ||= "/"
-
- status, headers, body = app.call(env)
- begin
- send_headers status, headers
- send_body body
- ensure
- body.close if body.respond_to? :close
- end
- end
-
- def self.send_headers(status, headers)
- STDOUT.print "Status: #{status}\r\n"
- headers.each { |k, vs|
- vs.split("\n").each { |v|
- STDOUT.print "#{k}: #{v}\r\n"
- }
- }
- STDOUT.print "\r\n"
- STDOUT.flush
- end
-
- def self.send_body(body)
- body.each { |part|
- STDOUT.print part
- STDOUT.flush
- }
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/evented_mongrel.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/evented_mongrel.rb
deleted file mode 100644
index 0f5cbf729..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/evented_mongrel.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'swiftcore/evented_mongrel'
-
-module Rack
- module Handler
- class EventedMongrel < Handler::Mongrel
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/fastcgi.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/fastcgi.rb
deleted file mode 100644
index b992a5f48..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/fastcgi.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-require 'fcgi'
-require 'socket'
-require 'rack/content_length'
-require 'rack/rewindable_input'
-
-if defined? FCGI::Stream
- class FCGI::Stream
- alias _rack_read_without_buffer read
-
- def read(n, buffer=nil)
- buf = _rack_read_without_buffer n
- buffer.replace(buf.to_s) if buffer
- buf
- end
- end
-end
-
-module Rack
- module Handler
- class FastCGI
- def self.run(app, options={})
- file = options[:File] and STDIN.reopen(UNIXServer.new(file))
- port = options[:Port] and STDIN.reopen(TCPServer.new(port))
- FCGI.each { |request|
- serve request, app
- }
- end
-
- def self.serve(request, app)
- app = Rack::ContentLength.new(app)
-
- env = request.env
- env.delete "HTTP_CONTENT_LENGTH"
-
- env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
-
- rack_input = RewindableInput.new(request.in)
-
- env.update({"rack.version" => [1,1],
- "rack.input" => rack_input,
- "rack.errors" => request.err,
-
- "rack.multithread" => false,
- "rack.multiprocess" => true,
- "rack.run_once" => false,
-
- "rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http"
- })
-
- env["QUERY_STRING"] ||= ""
- env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
- env["REQUEST_PATH"] ||= "/"
- env.delete "CONTENT_TYPE" if env["CONTENT_TYPE"] == ""
- env.delete "CONTENT_LENGTH" if env["CONTENT_LENGTH"] == ""
-
- begin
- status, headers, body = app.call(env)
- begin
- send_headers request.out, status, headers
- send_body request.out, body
- ensure
- body.close if body.respond_to? :close
- end
- ensure
- rack_input.close
- request.finish
- end
- end
-
- def self.send_headers(out, status, headers)
- out.print "Status: #{status}\r\n"
- headers.each { |k, vs|
- vs.split("\n").each { |v|
- out.print "#{k}: #{v}\r\n"
- }
- }
- out.print "\r\n"
- out.flush
- end
-
- def self.send_body(out, body)
- body.each { |part|
- out.print part
- out.flush
- }
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/lsws.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/lsws.rb
deleted file mode 100644
index eabc0bc9b..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/lsws.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require 'lsapi'
-require 'rack/content_length'
-require 'rack/rewindable_input'
-
-module Rack
- module Handler
- class LSWS
- def self.run(app, options=nil)
- while LSAPI.accept != nil
- serve app
- end
- end
- def self.serve(app)
- app = Rack::ContentLength.new(app)
-
- env = ENV.to_hash
- env.delete "HTTP_CONTENT_LENGTH"
- env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
-
- rack_input = RewindableInput.new($stdin.read.to_s)
-
- env.update(
- "rack.version" => [1,1],
- "rack.input" => rack_input,
- "rack.errors" => $stderr,
- "rack.multithread" => false,
- "rack.multiprocess" => true,
- "rack.run_once" => false,
- "rack.url_scheme" => ["yes", "on", "1"].include?(ENV["HTTPS"]) ? "https" : "http"
- )
-
- env["QUERY_STRING"] ||= ""
- env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
- env["REQUEST_PATH"] ||= "/"
- status, headers, body = app.call(env)
- begin
- send_headers status, headers
- send_body body
- ensure
- body.close if body.respond_to? :close
- end
- ensure
- rack_input.close
- end
- def self.send_headers(status, headers)
- print "Status: #{status}\r\n"
- headers.each { |k, vs|
- vs.split("\n").each { |v|
- print "#{k}: #{v}\r\n"
- }
- }
- print "\r\n"
- STDOUT.flush
- end
- def self.send_body(body)
- body.each { |part|
- print part
- STDOUT.flush
- }
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/mongrel.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/mongrel.rb
deleted file mode 100644
index b6b775ea8..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/mongrel.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-require 'mongrel'
-require 'stringio'
-require 'rack/content_length'
-require 'rack/chunked'
-
-module Rack
- module Handler
- class Mongrel < ::Mongrel::HttpHandler
- def self.run(app, options={})
- server = ::Mongrel::HttpServer.new(
- options[:Host] || '0.0.0.0',
- options[:Port] || 8080,
- options[:num_processors] || 950,
- options[:throttle] || 0,
- options[:timeout] || 60)
- # Acts like Rack::URLMap, utilizing Mongrel's own path finding methods.
- # Use is similar to #run, replacing the app argument with a hash of
- # { path=>app, ... } or an instance of Rack::URLMap.
- if options[:map]
- if app.is_a? Hash
- app.each do |path, appl|
- path = '/'+path unless path[0] == ?/
- server.register(path, Rack::Handler::Mongrel.new(appl))
- end
- elsif app.is_a? URLMap
- app.instance_variable_get(:@mapping).each do |(host, path, appl)|
- next if !host.nil? && !options[:Host].nil? && options[:Host] != host
- path = '/'+path unless path[0] == ?/
- server.register(path, Rack::Handler::Mongrel.new(appl))
- end
- else
- raise ArgumentError, "first argument should be a Hash or URLMap"
- end
- else
- server.register('/', Rack::Handler::Mongrel.new(app))
- end
- yield server if block_given?
- server.run.join
- end
-
- def initialize(app)
- @app = Rack::Chunked.new(Rack::ContentLength.new(app))
- end
-
- def process(request, response)
- env = {}.replace(request.params)
- env.delete "HTTP_CONTENT_TYPE"
- env.delete "HTTP_CONTENT_LENGTH"
-
- env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
-
- rack_input = request.body || StringIO.new('')
- rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
-
- env.update({"rack.version" => [1,1],
- "rack.input" => rack_input,
- "rack.errors" => $stderr,
-
- "rack.multithread" => true,
- "rack.multiprocess" => false, # ???
- "rack.run_once" => false,
-
- "rack.url_scheme" => "http",
- })
- env["QUERY_STRING"] ||= ""
-
- status, headers, body = @app.call(env)
-
- begin
- response.status = status.to_i
- response.send_status(nil)
-
- headers.each { |k, vs|
- vs.split("\n").each { |v|
- response.header[k] = v
- }
- }
- response.send_header
-
- body.each { |part|
- response.write part
- response.socket.flush
- }
- ensure
- body.close if body.respond_to? :close
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/scgi.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/scgi.rb
deleted file mode 100644
index 79a6b2bd1..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/scgi.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'scgi'
-require 'stringio'
-require 'rack/content_length'
-require 'rack/chunked'
-
-module Rack
- module Handler
- class SCGI < ::SCGI::Processor
- attr_accessor :app
-
- def self.run(app, options=nil)
- new(options.merge(:app=>app,
- :host=>options[:Host],
- :port=>options[:Port],
- :socket=>options[:Socket])).listen
- end
-
- def initialize(settings = {})
- @app = Rack::Chunked.new(Rack::ContentLength.new(settings[:app]))
- @log = Object.new
- def @log.info(*args); end
- def @log.error(*args); end
- super(settings)
- end
-
- def process_request(request, input_body, socket)
- env = {}.replace(request)
- env.delete "HTTP_CONTENT_TYPE"
- env.delete "HTTP_CONTENT_LENGTH"
- env["REQUEST_PATH"], env["QUERY_STRING"] = env["REQUEST_URI"].split('?', 2)
- env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
- env["PATH_INFO"] = env["REQUEST_PATH"]
- env["QUERY_STRING"] ||= ""
- env["SCRIPT_NAME"] = ""
-
- rack_input = StringIO.new(input_body)
- rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
-
- env.update({"rack.version" => [1,1],
- "rack.input" => rack_input,
- "rack.errors" => $stderr,
- "rack.multithread" => true,
- "rack.multiprocess" => true,
- "rack.run_once" => false,
-
- "rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http"
- })
- status, headers, body = app.call(env)
- begin
- socket.write("Status: #{status}\r\n")
- headers.each do |k, vs|
- vs.split("\n").each { |v| socket.write("#{k}: #{v}\r\n")}
- end
- socket.write("\r\n")
- body.each {|s| socket.write(s)}
- ensure
- body.close if body.respond_to? :close
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/swiftiplied_mongrel.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/swiftiplied_mongrel.rb
deleted file mode 100644
index 4bafd0b95..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/swiftiplied_mongrel.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'swiftcore/swiftiplied_mongrel'
-
-module Rack
- module Handler
- class SwiftipliedMongrel < Handler::Mongrel
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/thin.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/thin.rb
deleted file mode 100644
index 3d4fedff7..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/thin.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require "thin"
-require "rack/content_length"
-require "rack/chunked"
-
-module Rack
- module Handler
- class Thin
- def self.run(app, options={})
- app = Rack::Chunked.new(Rack::ContentLength.new(app))
- server = ::Thin::Server.new(options[:Host] || '0.0.0.0',
- options[:Port] || 8080,
- app)
- yield server if block_given?
- server.start
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/handler/webrick.rb b/vendor/gems/rack-1.1.0/lib/rack/handler/webrick.rb
deleted file mode 100644
index 8d7f5724a..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/handler/webrick.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-require 'webrick'
-require 'stringio'
-require 'rack/content_length'
-
-module Rack
- module Handler
- class WEBrick < ::WEBrick::HTTPServlet::AbstractServlet
- def self.run(app, options={})
- options[:BindAddress] = options.delete(:Host) if options[:Host]
- server = ::WEBrick::HTTPServer.new(options)
- server.mount "/", Rack::Handler::WEBrick, app
- trap(:INT) { server.shutdown }
- yield server if block_given?
- server.start
- end
-
- def initialize(server, app)
- super server
- @app = Rack::ContentLength.new(app)
- end
-
- def service(req, res)
- env = req.meta_vars
- env.delete_if { |k, v| v.nil? }
-
- rack_input = StringIO.new(req.body.to_s)
- rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
-
- env.update({"rack.version" => [1,1],
- "rack.input" => rack_input,
- "rack.errors" => $stderr,
-
- "rack.multithread" => true,
- "rack.multiprocess" => false,
- "rack.run_once" => false,
-
- "rack.url_scheme" => ["yes", "on", "1"].include?(ENV["HTTPS"]) ? "https" : "http"
- })
-
- env["HTTP_VERSION"] ||= env["SERVER_PROTOCOL"]
- env["QUERY_STRING"] ||= ""
- env["REQUEST_PATH"] ||= "/"
- unless env["PATH_INFO"] == ""
- path, n = req.request_uri.path, env["SCRIPT_NAME"].length
- env["PATH_INFO"] = path[n, path.length-n]
- end
-
- status, headers, body = @app.call(env)
- begin
- res.status = status.to_i
- headers.each { |k, vs|
- if k.downcase == "set-cookie"
- res.cookies.concat vs.split("\n")
- else
- vs.split("\n").each { |v|
- res[k] = v
- }
- end
- }
- body.each { |part|
- res.body << part
- }
- ensure
- body.close if body.respond_to? :close
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/head.rb b/vendor/gems/rack-1.1.0/lib/rack/head.rb
deleted file mode 100644
index deab822a9..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/head.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-module Rack
-
-class Head
- def initialize(app)
- @app = app
- end
-
- def call(env)
- status, headers, body = @app.call(env)
-
- if env["REQUEST_METHOD"] == "HEAD"
- [status, headers, []]
- else
- [status, headers, body]
- end
- end
-end
-
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/lint.rb b/vendor/gems/rack-1.1.0/lib/rack/lint.rb
deleted file mode 100644
index 534375b93..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/lint.rb
+++ /dev/null
@@ -1,575 +0,0 @@
-require 'rack/utils'
-
-module Rack
- # Rack::Lint validates your application and the requests and
- # responses according to the Rack spec.
-
- class Lint
- def initialize(app)
- @app = app
- end
-
- # :stopdoc:
-
- class LintError < RuntimeError; end
- module Assertion
- def assert(message, &block)
- unless block.call
- raise LintError, message
- end
- end
- end
- include Assertion
-
- ## This specification aims to formalize the Rack protocol. You
- ## can (and should) use Rack::Lint to enforce it.
- ##
- ## When you develop middleware, be sure to add a Lint before and
- ## after to catch all mistakes.
-
- ## = Rack applications
-
- ## A Rack application is an Ruby object (not a class) that
- ## responds to +call+.
- def call(env=nil)
- dup._call(env)
- end
-
- def _call(env)
- ## It takes exactly one argument, the *environment*
- assert("No env given") { env }
- check_env env
-
- env['rack.input'] = InputWrapper.new(env['rack.input'])
- env['rack.errors'] = ErrorWrapper.new(env['rack.errors'])
-
- ## and returns an Array of exactly three values:
- status, headers, @body = @app.call(env)
- ## The *status*,
- check_status status
- ## the *headers*,
- check_headers headers
- ## and the *body*.
- check_content_type status, headers
- check_content_length status, headers, env
- [status, headers, self]
- end
-
- ## == The Environment
- def check_env(env)
- ## The environment must be an true instance of Hash (no
- ## subclassing allowed) that includes CGI-like headers.
- ## The application is free to modify the environment.
- assert("env #{env.inspect} is not a Hash, but #{env.class}") {
- env.kind_of? Hash
- }
-
- ##
- ## The environment is required to include these variables
- ## (adopted from PEP333), except when they'd be empty, but see
- ## below.
-
- ## <tt>REQUEST_METHOD</tt>:: The HTTP request method, such as
- ## "GET" or "POST". This cannot ever
- ## be an empty string, and so is
- ## always required.
-
- ## <tt>SCRIPT_NAME</tt>:: The initial portion of the request
- ## URL's "path" that corresponds to the
- ## application object, so that the
- ## application knows its virtual
- ## "location". This may be an empty
- ## string, if the application corresponds
- ## to the "root" of the server.
-
- ## <tt>PATH_INFO</tt>:: The remainder of the request URL's
- ## "path", designating the virtual
- ## "location" of the request's target
- ## within the application. This may be an
- ## empty string, if the request URL targets
- ## the application root and does not have a
- ## trailing slash. This value may be
- ## percent-encoded when I originating from
- ## a URL.
-
- ## <tt>QUERY_STRING</tt>:: The portion of the request URL that
- ## follows the <tt>?</tt>, if any. May be
- ## empty, but is always required!
-
- ## <tt>SERVER_NAME</tt>, <tt>SERVER_PORT</tt>:: When combined with <tt>SCRIPT_NAME</tt> and <tt>PATH_INFO</tt>, these variables can be used to complete the URL. Note, however, that <tt>HTTP_HOST</tt>, if present, should be used in preference to <tt>SERVER_NAME</tt> for reconstructing the request URL. <tt>SERVER_NAME</tt> and <tt>SERVER_PORT</tt> can never be empty strings, and so are always required.
-
- ## <tt>HTTP_</tt> Variables:: Variables corresponding to the
- ## client-supplied HTTP request
- ## headers (i.e., variables whose
- ## names begin with <tt>HTTP_</tt>). The
- ## presence or absence of these
- ## variables should correspond with
- ## the presence or absence of the
- ## appropriate HTTP header in the
- ## request.
-
- ## In addition to this, the Rack environment must include these
- ## Rack-specific variables:
-
- ## <tt>rack.version</tt>:: The Array [1,1], representing this version of Rack.
- ## <tt>rack.url_scheme</tt>:: +http+ or +https+, depending on the request URL.
- ## <tt>rack.input</tt>:: See below, the input stream.
- ## <tt>rack.errors</tt>:: See below, the error stream.
- ## <tt>rack.multithread</tt>:: true if the application object may be simultaneously invoked by another thread in the same process, false otherwise.
- ## <tt>rack.multiprocess</tt>:: true if an equivalent application object may be simultaneously invoked by another process, false otherwise.
- ## <tt>rack.run_once</tt>:: true if the server expects (but does not guarantee!) that the application will only be invoked this one time during the life of its containing process. Normally, this will only be true for a server based on CGI (or something similar).
- ##
-
- ## Additional environment specifications have approved to
- ## standardized middleware APIs. None of these are required to
- ## be implemented by the server.
-
- ## <tt>rack.session</tt>:: A hash like interface for storing request session data.
- ## The store must implement:
- if session = env['rack.session']
- ## store(key, value) (aliased as []=);
- assert("session #{session.inspect} must respond to store and []=") {
- session.respond_to?(:store) && session.respond_to?(:[]=)
- }
-
- ## fetch(key, default = nil) (aliased as []);
- assert("session #{session.inspect} must respond to fetch and []") {
- session.respond_to?(:fetch) && session.respond_to?(:[])
- }
-
- ## delete(key);
- assert("session #{session.inspect} must respond to delete") {
- session.respond_to?(:delete)
- }
-
- ## clear;
- assert("session #{session.inspect} must respond to clear") {
- session.respond_to?(:clear)
- }
- end
-
- ## <tt>rack.logger</tt>:: A common object interface for logging messages.
- ## The object must implement:
- if logger = env['rack.logger']
- ## info(message, &block)
- assert("logger #{logger.inspect} must respond to info") {
- logger.respond_to?(:info)
- }
-
- ## debug(message, &block)
- assert("logger #{logger.inspect} must respond to debug") {
- logger.respond_to?(:debug)
- }
-
- ## warn(message, &block)
- assert("logger #{logger.inspect} must respond to warn") {
- logger.respond_to?(:warn)
- }
-
- ## error(message, &block)
- assert("logger #{logger.inspect} must respond to error") {
- logger.respond_to?(:error)
- }
-
- ## fatal(message, &block)
- assert("logger #{logger.inspect} must respond to fatal") {
- logger.respond_to?(:fatal)
- }
- end
-
- ## The server or the application can store their own data in the
- ## environment, too. The keys must contain at least one dot,
- ## and should be prefixed uniquely. The prefix <tt>rack.</tt>
- ## is reserved for use with the Rack core distribution and other
- ## accepted specifications and must not be used otherwise.
- ##
-
- %w[REQUEST_METHOD SERVER_NAME SERVER_PORT
- QUERY_STRING
- rack.version rack.input rack.errors
- rack.multithread rack.multiprocess rack.run_once].each { |header|
- assert("env missing required key #{header}") { env.include? header }
- }
-
- ## The environment must not contain the keys
- ## <tt>HTTP_CONTENT_TYPE</tt> or <tt>HTTP_CONTENT_LENGTH</tt>
- ## (use the versions without <tt>HTTP_</tt>).
- %w[HTTP_CONTENT_TYPE HTTP_CONTENT_LENGTH].each { |header|
- assert("env contains #{header}, must use #{header[5,-1]}") {
- not env.include? header
- }
- }
-
- ## The CGI keys (named without a period) must have String values.
- env.each { |key, value|
- next if key.include? "." # Skip extensions
- assert("env variable #{key} has non-string value #{value.inspect}") {
- value.kind_of? String
- }
- }
-
- ##
- ## There are the following restrictions:
-
- ## * <tt>rack.version</tt> must be an array of Integers.
- assert("rack.version must be an Array, was #{env["rack.version"].class}") {
- env["rack.version"].kind_of? Array
- }
- ## * <tt>rack.url_scheme</tt> must either be +http+ or +https+.
- assert("rack.url_scheme unknown: #{env["rack.url_scheme"].inspect}") {
- %w[http https].include? env["rack.url_scheme"]
- }
-
- ## * There must be a valid input stream in <tt>rack.input</tt>.
- check_input env["rack.input"]
- ## * There must be a valid error stream in <tt>rack.errors</tt>.
- check_error env["rack.errors"]
-
- ## * The <tt>REQUEST_METHOD</tt> must be a valid token.
- assert("REQUEST_METHOD unknown: #{env["REQUEST_METHOD"]}") {
- env["REQUEST_METHOD"] =~ /\A[0-9A-Za-z!\#$%&'*+.^_`|~-]+\z/
- }
-
- ## * The <tt>SCRIPT_NAME</tt>, if non-empty, must start with <tt>/</tt>
- assert("SCRIPT_NAME must start with /") {
- !env.include?("SCRIPT_NAME") ||
- env["SCRIPT_NAME"] == "" ||
- env["SCRIPT_NAME"] =~ /\A\//
- }
- ## * The <tt>PATH_INFO</tt>, if non-empty, must start with <tt>/</tt>
- assert("PATH_INFO must start with /") {
- !env.include?("PATH_INFO") ||
- env["PATH_INFO"] == "" ||
- env["PATH_INFO"] =~ /\A\//
- }
- ## * The <tt>CONTENT_LENGTH</tt>, if given, must consist of digits only.
- assert("Invalid CONTENT_LENGTH: #{env["CONTENT_LENGTH"]}") {
- !env.include?("CONTENT_LENGTH") || env["CONTENT_LENGTH"] =~ /\A\d+\z/
- }
-
- ## * One of <tt>SCRIPT_NAME</tt> or <tt>PATH_INFO</tt> must be
- ## set. <tt>PATH_INFO</tt> should be <tt>/</tt> if
- ## <tt>SCRIPT_NAME</tt> is empty.
- assert("One of SCRIPT_NAME or PATH_INFO must be set (make PATH_INFO '/' if SCRIPT_NAME is empty)") {
- env["SCRIPT_NAME"] || env["PATH_INFO"]
- }
- ## <tt>SCRIPT_NAME</tt> never should be <tt>/</tt>, but instead be empty.
- assert("SCRIPT_NAME cannot be '/', make it '' and PATH_INFO '/'") {
- env["SCRIPT_NAME"] != "/"
- }
- end
-
- ## === The Input Stream
- ##
- ## The input stream is an IO-like object which contains the raw HTTP
- ## POST data.
- def check_input(input)
- ## When applicable, its external encoding must be "ASCII-8BIT" and it
- ## must be opened in binary mode, for Ruby 1.9 compatibility.
- assert("rack.input #{input} does not have ASCII-8BIT as its external encoding") {
- input.external_encoding.name == "ASCII-8BIT"
- } if input.respond_to?(:external_encoding)
- assert("rack.input #{input} is not opened in binary mode") {
- input.binmode?
- } if input.respond_to?(:binmode?)
-
- ## The input stream must respond to +gets+, +each+, +read+ and +rewind+.
- [:gets, :each, :read, :rewind].each { |method|
- assert("rack.input #{input} does not respond to ##{method}") {
- input.respond_to? method
- }
- }
- end
-
- class InputWrapper
- include Assertion
-
- def initialize(input)
- @input = input
- end
-
- def size
- @input.size
- end
-
- ## * +gets+ must be called without arguments and return a string,
- ## or +nil+ on EOF.
- def gets(*args)
- assert("rack.input#gets called with arguments") { args.size == 0 }
- v = @input.gets
- assert("rack.input#gets didn't return a String") {
- v.nil? or v.kind_of? String
- }
- v
- end
-
- ## * +read+ behaves like IO#read. Its signature is <tt>read([length, [buffer]])</tt>.
- ## If given, +length+ must be an non-negative Integer (>= 0) or +nil+, and +buffer+ must
- ## be a String and may not be nil. If +length+ is given and not nil, then this method
- ## reads at most +length+ bytes from the input stream. If +length+ is not given or nil,
- ## then this method reads all data until EOF.
- ## When EOF is reached, this method returns nil if +length+ is given and not nil, or ""
- ## if +length+ is not given or is nil.
- ## If +buffer+ is given, then the read data will be placed into +buffer+ instead of a
- ## newly created String object.
- def read(*args)
- assert("rack.input#read called with too many arguments") {
- args.size <= 2
- }
- if args.size >= 1
- assert("rack.input#read called with non-integer and non-nil length") {
- args.first.kind_of?(Integer) || args.first.nil?
- }
- assert("rack.input#read called with a negative length") {
- args.first.nil? || args.first >= 0
- }
- end
- if args.size >= 2
- assert("rack.input#read called with non-String buffer") {
- args[1].kind_of?(String)
- }
- end
-
- v = @input.read(*args)
-
- assert("rack.input#read didn't return nil or a String") {
- v.nil? or v.kind_of? String
- }
- if args[0].nil?
- assert("rack.input#read(nil) returned nil on EOF") {
- !v.nil?
- }
- end
-
- v
- end
-
- ## * +each+ must be called without arguments and only yield Strings.
- def each(*args)
- assert("rack.input#each called with arguments") { args.size == 0 }
- @input.each { |line|
- assert("rack.input#each didn't yield a String") {
- line.kind_of? String
- }
- yield line
- }
- end
-
- ## * +rewind+ must be called without arguments. It rewinds the input
- ## stream back to the beginning. It must not raise Errno::ESPIPE:
- ## that is, it may not be a pipe or a socket. Therefore, handler
- ## developers must buffer the input data into some rewindable object
- ## if the underlying input stream is not rewindable.
- def rewind(*args)
- assert("rack.input#rewind called with arguments") { args.size == 0 }
- assert("rack.input#rewind raised Errno::ESPIPE") {
- begin
- @input.rewind
- true
- rescue Errno::ESPIPE
- false
- end
- }
- end
-
- ## * +close+ must never be called on the input stream.
- def close(*args)
- assert("rack.input#close must not be called") { false }
- end
- end
-
- ## === The Error Stream
- def check_error(error)
- ## The error stream must respond to +puts+, +write+ and +flush+.
- [:puts, :write, :flush].each { |method|
- assert("rack.error #{error} does not respond to ##{method}") {
- error.respond_to? method
- }
- }
- end
-
- class ErrorWrapper
- include Assertion
-
- def initialize(error)
- @error = error
- end
-
- ## * +puts+ must be called with a single argument that responds to +to_s+.
- def puts(str)
- @error.puts str
- end
-
- ## * +write+ must be called with a single argument that is a String.
- def write(str)
- assert("rack.errors#write not called with a String") { str.kind_of? String }
- @error.write str
- end
-
- ## * +flush+ must be called without arguments and must be called
- ## in order to make the error appear for sure.
- def flush
- @error.flush
- end
-
- ## * +close+ must never be called on the error stream.
- def close(*args)
- assert("rack.errors#close must not be called") { false }
- end
- end
-
- ## == The Response
-
- ## === The Status
- def check_status(status)
- ## This is an HTTP status. When parsed as integer (+to_i+), it must be
- ## greater than or equal to 100.
- assert("Status must be >=100 seen as integer") { status.to_i >= 100 }
- end
-
- ## === The Headers
- def check_headers(header)
- ## The header must respond to +each+, and yield values of key and value.
- assert("headers object should respond to #each, but doesn't (got #{header.class} as headers)") {
- header.respond_to? :each
- }
- header.each { |key, value|
- ## The header keys must be Strings.
- assert("header key must be a string, was #{key.class}") {
- key.kind_of? String
- }
- ## The header must not contain a +Status+ key,
- assert("header must not contain Status") { key.downcase != "status" }
- ## contain keys with <tt>:</tt> or newlines in their name,
- assert("header names must not contain : or \\n") { key !~ /[:\n]/ }
- ## contain keys names that end in <tt>-</tt> or <tt>_</tt>,
- assert("header names must not end in - or _") { key !~ /[-_]\z/ }
- ## but only contain keys that consist of
- ## letters, digits, <tt>_</tt> or <tt>-</tt> and start with a letter.
- assert("invalid header name: #{key}") { key =~ /\A[a-zA-Z][a-zA-Z0-9_-]*\z/ }
-
- ## The values of the header must be Strings,
- assert("a header value must be a String, but the value of " +
- "'#{key}' is a #{value.class}") { value.kind_of? String }
- ## consisting of lines (for multiple header values, e.g. multiple
- ## <tt>Set-Cookie</tt> values) seperated by "\n".
- value.split("\n").each { |item|
- ## The lines must not contain characters below 037.
- assert("invalid header value #{key}: #{item.inspect}") {
- item !~ /[\000-\037]/
- }
- }
- }
- end
-
- ## === The Content-Type
- def check_content_type(status, headers)
- headers.each { |key, value|
- ## There must be a <tt>Content-Type</tt>, except when the
- ## +Status+ is 1xx, 204 or 304, in which case there must be none
- ## given.
- if key.downcase == "content-type"
- assert("Content-Type header found in #{status} response, not allowed") {
- not Rack::Utils::STATUS_WITH_NO_ENTITY_BODY.include? status.to_i
- }
- return
- end
- }
- assert("No Content-Type header found") {
- Rack::Utils::STATUS_WITH_NO_ENTITY_BODY.include? status.to_i
- }
- end
-
- ## === The Content-Length
- def check_content_length(status, headers, env)
- headers.each { |key, value|
- if key.downcase == 'content-length'
- ## There must not be a <tt>Content-Length</tt> header when the
- ## +Status+ is 1xx, 204 or 304.
- assert("Content-Length header found in #{status} response, not allowed") {
- not Rack::Utils::STATUS_WITH_NO_ENTITY_BODY.include? status.to_i
- }
-
- bytes = 0
- string_body = true
-
- if @body.respond_to?(:to_ary)
- @body.each { |part|
- unless part.kind_of?(String)
- string_body = false
- break
- end
-
- bytes += Rack::Utils.bytesize(part)
- }
-
- if env["REQUEST_METHOD"] == "HEAD"
- assert("Response body was given for HEAD request, but should be empty") {
- bytes == 0
- }
- else
- if string_body
- assert("Content-Length header was #{value}, but should be #{bytes}") {
- value == bytes.to_s
- }
- end
- end
- end
-
- return
- end
- }
- end
-
- ## === The Body
- def each
- @closed = false
- ## The Body must respond to +each+
- @body.each { |part|
- ## and must only yield String values.
- assert("Body yielded non-string value #{part.inspect}") {
- part.kind_of? String
- }
- yield part
- }
- ##
- ## The Body itself should not be an instance of String, as this will
- ## break in Ruby 1.9.
- ##
- ## If the Body responds to +close+, it will be called after iteration.
- # XXX howto: assert("Body has not been closed") { @closed }
-
-
- ##
- ## If the Body responds to +to_path+, it must return a String
- ## identifying the location of a file whose contents are identical
- ## to that produced by calling +each+; this may be used by the
- ## server as an alternative, possibly more efficient way to
- ## transport the response.
-
- if @body.respond_to?(:to_path)
- assert("The file identified by body.to_path does not exist") {
- ::File.exist? @body.to_path
- }
- end
-
- ##
- ## The Body commonly is an Array of Strings, the application
- ## instance itself, or a File-like object.
- end
-
- def close
- @closed = true
- @body.close if @body.respond_to?(:close)
- end
-
- # :startdoc:
-
- end
-end
-
-## == Thanks
-## Some parts of this specification are adopted from PEP333: Python
-## Web Server Gateway Interface
-## v1.0 (http://www.python.org/dev/peps/pep-0333/). I'd like to thank
-## everyone involved in that effort.
diff --git a/vendor/gems/rack-1.1.0/lib/rack/lobster.rb b/vendor/gems/rack-1.1.0/lib/rack/lobster.rb
deleted file mode 100644
index f63f419a4..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/lobster.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require 'zlib'
-
-require 'rack/request'
-require 'rack/response'
-
-module Rack
- # Paste has a Pony, Rack has a Lobster!
- class Lobster
- LobsterString = Zlib::Inflate.inflate("eJx9kEEOwyAMBO99xd7MAcytUhPlJyj2
- P6jy9i4k9EQyGAnBarEXeCBqSkntNXsi/ZCvC48zGQoZKikGrFMZvgS5ZHd+aGWVuWwhVF0
- t1drVmiR42HcWNz5w3QanT+2gIvTVCiE1lm1Y0eU4JGmIIbaKwextKn8rvW+p5PIwFl8ZWJ
- I8jyiTlhTcYXkekJAzTyYN6E08A+dk8voBkAVTJQ==".delete("\n ").unpack("m*")[0])
-
- LambdaLobster = lambda { |env|
- if env["QUERY_STRING"].include?("flip")
- lobster = LobsterString.split("\n").
- map { |line| line.ljust(42).reverse }.
- join("\n")
- href = "?"
- else
- lobster = LobsterString
- href = "?flip"
- end
-
- content = ["<title>Lobstericious!</title>",
- "<pre>", lobster, "</pre>",
- "<a href='#{href}'>flip!</a>"]
- length = content.inject(0) { |a,e| a+e.size }.to_s
- [200, {"Content-Type" => "text/html", "Content-Length" => length}, content]
- }
-
- def call(env)
- req = Request.new(env)
- if req.GET["flip"] == "left"
- lobster = LobsterString.split("\n").
- map { |line| line.ljust(42).reverse }.
- join("\n")
- href = "?flip=right"
- elsif req.GET["flip"] == "crash"
- raise "Lobster crashed"
- else
- lobster = LobsterString
- href = "?flip=left"
- end
-
- res = Response.new
- res.write "<title>Lobstericious!</title>"
- res.write "<pre>"
- res.write lobster
- res.write "</pre>"
- res.write "<p><a href='#{href}'>flip!</a></p>"
- res.write "<p><a href='?flip=crash'>crash!</a></p>"
- res.finish
- end
-
- end
-end
-
-if $0 == __FILE__
- require 'rack'
- require 'rack/showexceptions'
- Rack::Handler::WEBrick.run \
- Rack::ShowExceptions.new(Rack::Lint.new(Rack::Lobster.new)),
- :Port => 9292
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/lock.rb b/vendor/gems/rack-1.1.0/lib/rack/lock.rb
deleted file mode 100644
index 93238528c..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/lock.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module Rack
- class Lock
- FLAG = 'rack.multithread'.freeze
-
- def initialize(app, lock = Mutex.new)
- @app, @lock = app, lock
- end
-
- def call(env)
- old, env[FLAG] = env[FLAG], false
- @lock.synchronize { @app.call(env) }
- ensure
- env[FLAG] = old
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/logger.rb b/vendor/gems/rack-1.1.0/lib/rack/logger.rb
deleted file mode 100644
index d67d8ce2d..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/logger.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'logger'
-
-module Rack
- # Sets up rack.logger to write to rack.errors stream
- class Logger
- def initialize(app, level = ::Logger::INFO)
- @app, @level = app, level
- end
-
- def call(env)
- logger = ::Logger.new(env['rack.errors'])
- logger.level = @level
-
- env['rack.logger'] = logger
- @app.call(env)
- ensure
- logger.close
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/methodoverride.rb b/vendor/gems/rack-1.1.0/lib/rack/methodoverride.rb
deleted file mode 100644
index 0eed29f47..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/methodoverride.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-module Rack
- class MethodOverride
- HTTP_METHODS = %w(GET HEAD PUT POST DELETE OPTIONS)
-
- METHOD_OVERRIDE_PARAM_KEY = "_method".freeze
- HTTP_METHOD_OVERRIDE_HEADER = "HTTP_X_HTTP_METHOD_OVERRIDE".freeze
-
- def initialize(app)
- @app = app
- end
-
- def call(env)
- if env["REQUEST_METHOD"] == "POST"
- req = Request.new(env)
- method = req.POST[METHOD_OVERRIDE_PARAM_KEY] ||
- env[HTTP_METHOD_OVERRIDE_HEADER]
- method = method.to_s.upcase
- if HTTP_METHODS.include?(method)
- env["rack.methodoverride.original_method"] = env["REQUEST_METHOD"]
- env["REQUEST_METHOD"] = method
- end
- end
-
- @app.call(env)
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/mime.rb b/vendor/gems/rack-1.1.0/lib/rack/mime.rb
deleted file mode 100644
index 1414d19a5..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/mime.rb
+++ /dev/null
@@ -1,206 +0,0 @@
-module Rack
- module Mime
- # Returns String with mime type if found, otherwise use +fallback+.
- # +ext+ should be filename extension in the '.ext' format that
- # File.extname(file) returns.
- # +fallback+ may be any object
- #
- # Also see the documentation for MIME_TYPES
- #
- # Usage:
- # Rack::Mime.mime_type('.foo')
- #
- # This is a shortcut for:
- # Rack::Mime::MIME_TYPES.fetch('.foo', 'application/octet-stream')
-
- def mime_type(ext, fallback='application/octet-stream')
- MIME_TYPES.fetch(ext.to_s.downcase, fallback)
- end
- module_function :mime_type
-
- # List of most common mime-types, selected various sources
- # according to their usefulness in a webserving scope for Ruby
- # users.
- #
- # To amend this list with your local mime.types list you can use:
- #
- # require 'webrick/httputils'
- # list = WEBrick::HTTPUtils.load_mime_types('/etc/mime.types')
- # Rack::Mime::MIME_TYPES.merge!(list)
- #
- # To add the list mongrel provides, use:
- #
- # require 'mongrel/handlers'
- # Rack::Mime::MIME_TYPES.merge!(Mongrel::DirHandler::MIME_TYPES)
-
- MIME_TYPES = {
- ".3gp" => "video/3gpp",
- ".a" => "application/octet-stream",
- ".ai" => "application/postscript",
- ".aif" => "audio/x-aiff",
- ".aiff" => "audio/x-aiff",
- ".asc" => "application/pgp-signature",
- ".asf" => "video/x-ms-asf",
- ".asm" => "text/x-asm",
- ".asx" => "video/x-ms-asf",
- ".atom" => "application/atom+xml",
- ".au" => "audio/basic",
- ".avi" => "video/x-msvideo",
- ".bat" => "application/x-msdownload",
- ".bin" => "application/octet-stream",
- ".bmp" => "image/bmp",
- ".bz2" => "application/x-bzip2",
- ".c" => "text/x-c",
- ".cab" => "application/vnd.ms-cab-compressed",
- ".cc" => "text/x-c",
- ".chm" => "application/vnd.ms-htmlhelp",
- ".class" => "application/octet-stream",
- ".com" => "application/x-msdownload",
- ".conf" => "text/plain",
- ".cpp" => "text/x-c",
- ".crt" => "application/x-x509-ca-cert",
- ".css" => "text/css",
- ".csv" => "text/csv",
- ".cxx" => "text/x-c",
- ".deb" => "application/x-debian-package",
- ".der" => "application/x-x509-ca-cert",
- ".diff" => "text/x-diff",
- ".djv" => "image/vnd.djvu",
- ".djvu" => "image/vnd.djvu",
- ".dll" => "application/x-msdownload",
- ".dmg" => "application/octet-stream",
- ".doc" => "application/msword",
- ".dot" => "application/msword",
- ".dtd" => "application/xml-dtd",
- ".dvi" => "application/x-dvi",
- ".ear" => "application/java-archive",
- ".eml" => "message/rfc822",
- ".eps" => "application/postscript",
- ".exe" => "application/x-msdownload",
- ".f" => "text/x-fortran",
- ".f77" => "text/x-fortran",
- ".f90" => "text/x-fortran",
- ".flv" => "video/x-flv",
- ".for" => "text/x-fortran",
- ".gem" => "application/octet-stream",
- ".gemspec" => "text/x-script.ruby",
- ".gif" => "image/gif",
- ".gz" => "application/x-gzip",
- ".h" => "text/x-c",
- ".hh" => "text/x-c",
- ".htm" => "text/html",
- ".html" => "text/html",
- ".ico" => "image/vnd.microsoft.icon",
- ".ics" => "text/calendar",
- ".ifb" => "text/calendar",
- ".iso" => "application/octet-stream",
- ".jar" => "application/java-archive",
- ".java" => "text/x-java-source",
- ".jnlp" => "application/x-java-jnlp-file",
- ".jpeg" => "image/jpeg",
- ".jpg" => "image/jpeg",
- ".js" => "application/javascript",
- ".json" => "application/json",
- ".log" => "text/plain",
- ".m3u" => "audio/x-mpegurl",
- ".m4v" => "video/mp4",
- ".man" => "text/troff",
- ".manifest"=> "text/cache-manifest",
- ".mathml" => "application/mathml+xml",
- ".mbox" => "application/mbox",
- ".mdoc" => "text/troff",
- ".me" => "text/troff",
- ".mid" => "audio/midi",
- ".midi" => "audio/midi",
- ".mime" => "message/rfc822",
- ".mml" => "application/mathml+xml",
- ".mng" => "video/x-mng",
- ".mov" => "video/quicktime",
- ".mp3" => "audio/mpeg",
- ".mp4" => "video/mp4",
- ".mp4v" => "video/mp4",
- ".mpeg" => "video/mpeg",
- ".mpg" => "video/mpeg",
- ".ms" => "text/troff",
- ".msi" => "application/x-msdownload",
- ".odp" => "application/vnd.oasis.opendocument.presentation",
- ".ods" => "application/vnd.oasis.opendocument.spreadsheet",
- ".odt" => "application/vnd.oasis.opendocument.text",
- ".ogg" => "application/ogg",
- ".ogv" => "video/ogg",
- ".p" => "text/x-pascal",
- ".pas" => "text/x-pascal",
- ".pbm" => "image/x-portable-bitmap",
- ".pdf" => "application/pdf",
- ".pem" => "application/x-x509-ca-cert",
- ".pgm" => "image/x-portable-graymap",
- ".pgp" => "application/pgp-encrypted",
- ".pkg" => "application/octet-stream",
- ".pl" => "text/x-script.perl",
- ".pm" => "text/x-script.perl-module",
- ".png" => "image/png",
- ".pnm" => "image/x-portable-anymap",
- ".ppm" => "image/x-portable-pixmap",
- ".pps" => "application/vnd.ms-powerpoint",
- ".ppt" => "application/vnd.ms-powerpoint",
- ".ps" => "application/postscript",
- ".psd" => "image/vnd.adobe.photoshop",
- ".py" => "text/x-script.python",
- ".qt" => "video/quicktime",
- ".ra" => "audio/x-pn-realaudio",
- ".rake" => "text/x-script.ruby",
- ".ram" => "audio/x-pn-realaudio",
- ".rar" => "application/x-rar-compressed",
- ".rb" => "text/x-script.ruby",
- ".rdf" => "application/rdf+xml",
- ".roff" => "text/troff",
- ".rpm" => "application/x-redhat-package-manager",
- ".rss" => "application/rss+xml",
- ".rtf" => "application/rtf",
- ".ru" => "text/x-script.ruby",
- ".s" => "text/x-asm",
- ".sgm" => "text/sgml",
- ".sgml" => "text/sgml",
- ".sh" => "application/x-sh",
- ".sig" => "application/pgp-signature",
- ".snd" => "audio/basic",
- ".so" => "application/octet-stream",
- ".svg" => "image/svg+xml",
- ".svgz" => "image/svg+xml",
- ".swf" => "application/x-shockwave-flash",
- ".t" => "text/troff",
- ".tar" => "application/x-tar",
- ".tbz" => "application/x-bzip-compressed-tar",
- ".tcl" => "application/x-tcl",
- ".tex" => "application/x-tex",
- ".texi" => "application/x-texinfo",
- ".texinfo" => "application/x-texinfo",
- ".text" => "text/plain",
- ".tif" => "image/tiff",
- ".tiff" => "image/tiff",
- ".torrent" => "application/x-bittorrent",
- ".tr" => "text/troff",
- ".txt" => "text/plain",
- ".vcf" => "text/x-vcard",
- ".vcs" => "text/x-vcalendar",
- ".vrml" => "model/vrml",
- ".war" => "application/java-archive",
- ".wav" => "audio/x-wav",
- ".wma" => "audio/x-ms-wma",
- ".wmv" => "video/x-ms-wmv",
- ".wmx" => "video/x-ms-wmx",
- ".wrl" => "model/vrml",
- ".wsdl" => "application/wsdl+xml",
- ".xbm" => "image/x-xbitmap",
- ".xhtml" => "application/xhtml+xml",
- ".xls" => "application/vnd.ms-excel",
- ".xml" => "application/xml",
- ".xpm" => "image/x-xpixmap",
- ".xsl" => "application/xml",
- ".xslt" => "application/xslt+xml",
- ".yaml" => "text/yaml",
- ".yml" => "text/yaml",
- ".zip" => "application/zip",
- }
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/mock.rb b/vendor/gems/rack-1.1.0/lib/rack/mock.rb
deleted file mode 100644
index 23ecba178..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/mock.rb
+++ /dev/null
@@ -1,189 +0,0 @@
-require 'uri'
-require 'stringio'
-require 'rack/lint'
-require 'rack/utils'
-require 'rack/response'
-
-module Rack
- # Rack::MockRequest helps testing your Rack application without
- # actually using HTTP.
- #
- # After performing a request on a URL with get/post/put/delete, it
- # returns a MockResponse with useful helper methods for effective
- # testing.
- #
- # You can pass a hash with additional configuration to the
- # get/post/put/delete.
- # <tt>:input</tt>:: A String or IO-like to be used as rack.input.
- # <tt>:fatal</tt>:: Raise a FatalWarning if the app writes to rack.errors.
- # <tt>:lint</tt>:: If true, wrap the application in a Rack::Lint.
-
- class MockRequest
- class FatalWarning < RuntimeError
- end
-
- class FatalWarner
- def puts(warning)
- raise FatalWarning, warning
- end
-
- def write(warning)
- raise FatalWarning, warning
- end
-
- def flush
- end
-
- def string
- ""
- end
- end
-
- DEFAULT_ENV = {
- "rack.version" => [1,1],
- "rack.input" => StringIO.new,
- "rack.errors" => StringIO.new,
- "rack.multithread" => true,
- "rack.multiprocess" => true,
- "rack.run_once" => false,
- }
-
- def initialize(app)
- @app = app
- end
-
- def get(uri, opts={}) request("GET", uri, opts) end
- def post(uri, opts={}) request("POST", uri, opts) end
- def put(uri, opts={}) request("PUT", uri, opts) end
- def delete(uri, opts={}) request("DELETE", uri, opts) end
-
- def request(method="GET", uri="", opts={})
- env = self.class.env_for(uri, opts.merge(:method => method))
-
- if opts[:lint]
- app = Rack::Lint.new(@app)
- else
- app = @app
- end
-
- errors = env["rack.errors"]
- MockResponse.new(*(app.call(env) + [errors]))
- end
-
- # Return the Rack environment used for a request to +uri+.
- def self.env_for(uri="", opts={})
- uri = URI(uri)
- uri.path = "/#{uri.path}" unless uri.path[0] == ?/
-
- env = DEFAULT_ENV.dup
-
- env["REQUEST_METHOD"] = opts[:method] ? opts[:method].to_s.upcase : "GET"
- env["SERVER_NAME"] = uri.host || "example.org"
- env["SERVER_PORT"] = uri.port ? uri.port.to_s : "80"
- env["QUERY_STRING"] = uri.query.to_s
- env["PATH_INFO"] = (!uri.path || uri.path.empty?) ? "/" : uri.path
- env["rack.url_scheme"] = uri.scheme || "http"
- env["HTTPS"] = env["rack.url_scheme"] == "https" ? "on" : "off"
-
- env["SCRIPT_NAME"] = opts[:script_name] || ""
-
- if opts[:fatal]
- env["rack.errors"] = FatalWarner.new
- else
- env["rack.errors"] = StringIO.new
- end
-
- if params = opts[:params]
- if env["REQUEST_METHOD"] == "GET"
- params = Utils.parse_nested_query(params) if params.is_a?(String)
- params.update(Utils.parse_nested_query(env["QUERY_STRING"]))
- env["QUERY_STRING"] = Utils.build_nested_query(params)
- elsif !opts.has_key?(:input)
- opts["CONTENT_TYPE"] = "application/x-www-form-urlencoded"
- if params.is_a?(Hash)
- if data = Utils::Multipart.build_multipart(params)
- opts[:input] = data
- opts["CONTENT_LENGTH"] ||= data.length.to_s
- opts["CONTENT_TYPE"] = "multipart/form-data; boundary=#{Utils::Multipart::MULTIPART_BOUNDARY}"
- else
- opts[:input] = Utils.build_nested_query(params)
- end
- else
- opts[:input] = params
- end
- end
- end
-
- empty_str = ""
- empty_str.force_encoding("ASCII-8BIT") if empty_str.respond_to? :force_encoding
- opts[:input] ||= empty_str
- if String === opts[:input]
- rack_input = StringIO.new(opts[:input])
- else
- rack_input = opts[:input]
- end
-
- rack_input.set_encoding(Encoding::BINARY) if rack_input.respond_to?(:set_encoding)
- env['rack.input'] = rack_input
-
- env["CONTENT_LENGTH"] ||= env["rack.input"].length.to_s
-
- opts.each { |field, value|
- env[field] = value if String === field
- }
-
- env
- end
- end
-
- # Rack::MockResponse provides useful helpers for testing your apps.
- # Usually, you don't create the MockResponse on your own, but use
- # MockRequest.
-
- class MockResponse
- def initialize(status, headers, body, errors=StringIO.new(""))
- @status = status.to_i
-
- @original_headers = headers
- @headers = Rack::Utils::HeaderHash.new
- headers.each { |field, values|
- @headers[field] = values
- @headers[field] = "" if values.empty?
- }
-
- @body = ""
- body.each { |part| @body << part }
-
- @errors = errors.string if errors.respond_to?(:string)
- end
-
- # Status
- attr_reader :status
-
- # Headers
- attr_reader :headers, :original_headers
-
- def [](field)
- headers[field]
- end
-
-
- # Body
- attr_reader :body
-
- def =~(other)
- @body =~ other
- end
-
- def match(other)
- @body.match other
- end
-
-
- # Errors
- attr_accessor :errors
-
-
- include Response::Helpers
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/nulllogger.rb b/vendor/gems/rack-1.1.0/lib/rack/nulllogger.rb
deleted file mode 100644
index 77fb637de..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/nulllogger.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module Rack
- class NullLogger
- def initialize(app)
- @app = app
- end
-
- def call(env)
- env['rack.logger'] = self
- @app.call(env)
- end
-
- def info(progname = nil, &block); end
- def debug(progname = nil, &block); end
- def warn(progname = nil, &block); end
- def error(progname = nil, &block); end
- def fatal(progname = nil, &block); end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/recursive.rb b/vendor/gems/rack-1.1.0/lib/rack/recursive.rb
deleted file mode 100644
index bf8b96592..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/recursive.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'uri'
-
-module Rack
- # Rack::ForwardRequest gets caught by Rack::Recursive and redirects
- # the current request to the app at +url+.
- #
- # raise ForwardRequest.new("/not-found")
- #
-
- class ForwardRequest < Exception
- attr_reader :url, :env
-
- def initialize(url, env={})
- @url = URI(url)
- @env = env
-
- @env["PATH_INFO"] = @url.path
- @env["QUERY_STRING"] = @url.query if @url.query
- @env["HTTP_HOST"] = @url.host if @url.host
- @env["HTTP_PORT"] = @url.port if @url.port
- @env["rack.url_scheme"] = @url.scheme if @url.scheme
-
- super "forwarding to #{url}"
- end
- end
-
- # Rack::Recursive allows applications called down the chain to
- # include data from other applications (by using
- # <tt>rack['rack.recursive.include'][...]</tt> or raise a
- # ForwardRequest to redirect internally.
-
- class Recursive
- def initialize(app)
- @app = app
- end
-
- def call(env)
- @script_name = env["SCRIPT_NAME"]
- @app.call(env.merge('rack.recursive.include' => method(:include)))
- rescue ForwardRequest => req
- call(env.merge(req.env))
- end
-
- def include(env, path)
- unless path.index(@script_name) == 0 && (path[@script_name.size] == ?/ ||
- path[@script_name.size].nil?)
- raise ArgumentError, "can only include below #{@script_name}, not #{path}"
- end
-
- env = env.merge("PATH_INFO" => path, "SCRIPT_NAME" => @script_name,
- "REQUEST_METHOD" => "GET",
- "CONTENT_LENGTH" => "0", "CONTENT_TYPE" => "",
- "rack.input" => StringIO.new(""))
- @app.call(env)
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/reloader.rb b/vendor/gems/rack-1.1.0/lib/rack/reloader.rb
deleted file mode 100644
index a06de23ab..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/reloader.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
-# Rack::Reloader is subject to the terms of an MIT-style license.
-# See COPYING or http://www.opensource.org/licenses/mit-license.php.
-
-require 'pathname'
-
-module Rack
-
- # High performant source reloader
- #
- # This class acts as Rack middleware.
- #
- # What makes it especially suited for use in a production environment is that
- # any file will only be checked once and there will only be made one system
- # call stat(2).
- #
- # Please note that this will not reload files in the background, it does so
- # only when actively called.
- #
- # It is performing a check/reload cycle at the start of every request, but
- # also respects a cool down time, during which nothing will be done.
- class Reloader
- def initialize(app, cooldown = 10, backend = Stat)
- @app = app
- @cooldown = cooldown
- @last = (Time.now - cooldown)
- @cache = {}
- @mtimes = {}
-
- extend backend
- end
-
- def call(env)
- if @cooldown and Time.now > @last + @cooldown
- if Thread.list.size > 1
- Thread.exclusive{ reload! }
- else
- reload!
- end
-
- @last = Time.now
- end
-
- @app.call(env)
- end
-
- def reload!(stderr = $stderr)
- rotation do |file, mtime|
- previous_mtime = @mtimes[file] ||= mtime
- safe_load(file, mtime, stderr) if mtime > previous_mtime
- end
- end
-
- # A safe Kernel::load, issuing the hooks depending on the results
- def safe_load(file, mtime, stderr = $stderr)
- load(file)
- stderr.puts "#{self.class}: reloaded `#{file}'"
- file
- rescue LoadError, SyntaxError => ex
- stderr.puts ex
- ensure
- @mtimes[file] = mtime
- end
-
- module Stat
- def rotation
- files = [$0, *$LOADED_FEATURES].uniq
- paths = ['./', *$LOAD_PATH].uniq
-
- files.map{|file|
- next if file =~ /\.(so|bundle)$/ # cannot reload compiled files
-
- found, stat = figure_path(file, paths)
- next unless found && stat && mtime = stat.mtime
-
- @cache[file] = found
-
- yield(found, mtime)
- }.compact
- end
-
- # Takes a relative or absolute +file+ name, a couple possible +paths+ that
- # the +file+ might reside in. Returns the full path and File::Stat for the
- # path.
- def figure_path(file, paths)
- found = @cache[file]
- found = file if !found and Pathname.new(file).absolute?
- found, stat = safe_stat(found)
- return found, stat if found
-
- paths.find do |possible_path|
- path = ::File.join(possible_path, file)
- found, stat = safe_stat(path)
- return ::File.expand_path(found), stat if found
- end
-
- return false, false
- end
-
- def safe_stat(file)
- return unless file
- stat = ::File.stat(file)
- return file, stat if stat.file?
- rescue Errno::ENOENT, Errno::ENOTDIR
- @cache.delete(file) and false
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/request.rb b/vendor/gems/rack-1.1.0/lib/rack/request.rb
deleted file mode 100644
index b3de1ce46..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/request.rb
+++ /dev/null
@@ -1,271 +0,0 @@
-require 'rack/utils'
-
-module Rack
- # Rack::Request provides a convenient interface to a Rack
- # environment. It is stateless, the environment +env+ passed to the
- # constructor will be directly modified.
- #
- # req = Rack::Request.new(env)
- # req.post?
- # req.params["data"]
- #
- # The environment hash passed will store a reference to the Request object
- # instantiated so that it will only instantiate if an instance of the Request
- # object doesn't already exist.
-
- class Request
- # The environment of the request.
- attr_reader :env
-
- def initialize(env)
- @env = env
- end
-
- def body; @env["rack.input"] end
- def scheme; @env["rack.url_scheme"] end
- def script_name; @env["SCRIPT_NAME"].to_s end
- def path_info; @env["PATH_INFO"].to_s end
- def port; @env["SERVER_PORT"].to_i end
- def request_method; @env["REQUEST_METHOD"] end
- def query_string; @env["QUERY_STRING"].to_s end
- def content_length; @env['CONTENT_LENGTH'] end
- def content_type; @env['CONTENT_TYPE'] end
- def session; @env['rack.session'] ||= {} end
- def session_options; @env['rack.session.options'] ||= {} end
- def logger; @env['rack.logger'] end
-
- # The media type (type/subtype) portion of the CONTENT_TYPE header
- # without any media type parameters. e.g., when CONTENT_TYPE is
- # "text/plain;charset=utf-8", the media-type is "text/plain".
- #
- # For more information on the use of media types in HTTP, see:
- # http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7
- def media_type
- content_type && content_type.split(/\s*[;,]\s*/, 2).first.downcase
- end
-
- # The media type parameters provided in CONTENT_TYPE as a Hash, or
- # an empty Hash if no CONTENT_TYPE or media-type parameters were
- # provided. e.g., when the CONTENT_TYPE is "text/plain;charset=utf-8",
- # this method responds with the following Hash:
- # { 'charset' => 'utf-8' }
- def media_type_params
- return {} if content_type.nil?
- content_type.split(/\s*[;,]\s*/)[1..-1].
- collect { |s| s.split('=', 2) }.
- inject({}) { |hash,(k,v)| hash[k.downcase] = v ; hash }
- end
-
- # The character set of the request body if a "charset" media type
- # parameter was given, or nil if no "charset" was specified. Note
- # that, per RFC2616, text/* media types that specify no explicit
- # charset are to be considered ISO-8859-1.
- def content_charset
- media_type_params['charset']
- end
-
- def host_with_port
- if forwarded = @env["HTTP_X_FORWARDED_HOST"]
- forwarded.split(/,\s?/).last
- else
- @env['HTTP_HOST'] || "#{@env['SERVER_NAME'] || @env['SERVER_ADDR']}:#{@env['SERVER_PORT']}"
- end
- end
-
- def host
- # Remove port number.
- host_with_port.to_s.gsub(/:\d+\z/, '')
- end
-
- def script_name=(s); @env["SCRIPT_NAME"] = s.to_s end
- def path_info=(s); @env["PATH_INFO"] = s.to_s end
-
- def get?; request_method == "GET" end
- def post?; request_method == "POST" end
- def put?; request_method == "PUT" end
- def delete?; request_method == "DELETE" end
- def head?; request_method == "HEAD" end
-
- # The set of form-data media-types. Requests that do not indicate
- # one of the media types presents in this list will not be eligible
- # for form-data / param parsing.
- FORM_DATA_MEDIA_TYPES = [
- 'application/x-www-form-urlencoded',
- 'multipart/form-data'
- ]
-
- # The set of media-types. Requests that do not indicate
- # one of the media types presents in this list will not be eligible
- # for param parsing like soap attachments or generic multiparts
- PARSEABLE_DATA_MEDIA_TYPES = [
- 'multipart/related',
- 'multipart/mixed'
- ]
-
- # Determine whether the request body contains form-data by checking
- # the request Content-Type for one of the media-types:
- # "application/x-www-form-urlencoded" or "multipart/form-data". The
- # list of form-data media types can be modified through the
- # +FORM_DATA_MEDIA_TYPES+ array.
- #
- # A request body is also assumed to contain form-data when no
- # Content-Type header is provided and the request_method is POST.
- def form_data?
- type = media_type
- meth = env["rack.methodoverride.original_method"] || env['REQUEST_METHOD']
- (meth == 'POST' && type.nil?) || FORM_DATA_MEDIA_TYPES.include?(type)
- end
-
- # Determine whether the request body contains data by checking
- # the request media_type against registered parse-data media-types
- def parseable_data?
- PARSEABLE_DATA_MEDIA_TYPES.include?(media_type)
- end
-
- # Returns the data recieved in the query string.
- def GET
- if @env["rack.request.query_string"] == query_string
- @env["rack.request.query_hash"]
- else
- @env["rack.request.query_string"] = query_string
- @env["rack.request.query_hash"] = parse_query(query_string)
- end
- end
-
- # Returns the data recieved in the request body.
- #
- # This method support both application/x-www-form-urlencoded and
- # multipart/form-data.
- def POST
- if @env["rack.input"].nil?
- raise "Missing rack.input"
- elsif @env["rack.request.form_input"].eql? @env["rack.input"]
- @env["rack.request.form_hash"]
- elsif form_data? || parseable_data?
- @env["rack.request.form_input"] = @env["rack.input"]
- unless @env["rack.request.form_hash"] = parse_multipart(env)
- form_vars = @env["rack.input"].read
-
- # Fix for Safari Ajax postings that always append \0
- form_vars.sub!(/\0\z/, '')
-
- @env["rack.request.form_vars"] = form_vars
- @env["rack.request.form_hash"] = parse_query(form_vars)
-
- @env["rack.input"].rewind
- end
- @env["rack.request.form_hash"]
- else
- {}
- end
- end
-
- # The union of GET and POST data.
- def params
- self.GET.update(self.POST)
- rescue EOFError => e
- self.GET
- end
-
- # shortcut for request.params[key]
- def [](key)
- params[key.to_s]
- end
-
- # shortcut for request.params[key] = value
- def []=(key, value)
- params[key.to_s] = value
- end
-
- # like Hash#values_at
- def values_at(*keys)
- keys.map{|key| params[key] }
- end
-
- # the referer of the client or '/'
- def referer
- @env['HTTP_REFERER'] || '/'
- end
- alias referrer referer
-
- def user_agent
- @env['HTTP_USER_AGENT']
- end
-
- def cookies
- return {} unless @env["HTTP_COOKIE"]
-
- if @env["rack.request.cookie_string"] == @env["HTTP_COOKIE"]
- @env["rack.request.cookie_hash"]
- else
- @env["rack.request.cookie_string"] = @env["HTTP_COOKIE"]
- # According to RFC 2109:
- # If multiple cookies satisfy the criteria above, they are ordered in
- # the Cookie header such that those with more specific Path attributes
- # precede those with less specific. Ordering with respect to other
- # attributes (e.g., Domain) is unspecified.
- @env["rack.request.cookie_hash"] =
- Utils.parse_query(@env["rack.request.cookie_string"], ';,').inject({}) {|h,(k,v)|
- h[k] = Array === v ? v.first : v
- h
- }
- end
- end
-
- def xhr?
- @env["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"
- end
-
- # Tries to return a remake of the original request URL as a string.
- def url
- url = scheme + "://"
- url << host
-
- if scheme == "https" && port != 443 ||
- scheme == "http" && port != 80
- url << ":#{port}"
- end
-
- url << fullpath
-
- url
- end
-
- def path
- script_name + path_info
- end
-
- def fullpath
- query_string.empty? ? path : "#{path}?#{query_string}"
- end
-
- def accept_encoding
- @env["HTTP_ACCEPT_ENCODING"].to_s.split(/,\s*/).map do |part|
- m = /^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$/.match(part) # From WEBrick
-
- if m
- [m[1], (m[2] || 1.0).to_f]
- else
- raise "Invalid value for Accept-Encoding: #{part.inspect}"
- end
- end
- end
-
- def ip
- if addr = @env['HTTP_X_FORWARDED_FOR']
- addr.split(',').last.strip
- else
- @env['REMOTE_ADDR']
- end
- end
-
- protected
- def parse_query(qs)
- Utils.parse_nested_query(qs)
- end
-
- def parse_multipart(env)
- Utils::Multipart.parse_multipart(env)
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/response.rb b/vendor/gems/rack-1.1.0/lib/rack/response.rb
deleted file mode 100644
index a7f9bf2b7..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/response.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-require 'rack/request'
-require 'rack/utils'
-
-module Rack
- # Rack::Response provides a convenient interface to create a Rack
- # response.
- #
- # It allows setting of headers and cookies, and provides useful
- # defaults (a OK response containing HTML).
- #
- # You can use Response#write to iteratively generate your response,
- # but note that this is buffered by Rack::Response until you call
- # +finish+. +finish+ however can take a block inside which calls to
- # +write+ are syncronous with the Rack response.
- #
- # Your application's +call+ should end returning Response#finish.
-
- class Response
- attr_accessor :length
-
- def initialize(body=[], status=200, header={}, &block)
- @status = status.to_i
- @header = Utils::HeaderHash.new({"Content-Type" => "text/html"}.
- merge(header))
-
- @writer = lambda { |x| @body << x }
- @block = nil
- @length = 0
-
- @body = []
-
- if body.respond_to? :to_str
- write body.to_str
- elsif body.respond_to?(:each)
- body.each { |part|
- write part.to_s
- }
- else
- raise TypeError, "stringable or iterable required"
- end
-
- yield self if block_given?
- end
-
- attr_reader :header
- attr_accessor :status, :body
-
- def [](key)
- header[key]
- end
-
- def []=(key, value)
- header[key] = value
- end
-
- def set_cookie(key, value)
- Utils.set_cookie_header!(header, key, value)
- end
-
- def delete_cookie(key, value={})
- Utils.delete_cookie_header!(header, key, value)
- end
-
- def redirect(target, status=302)
- self.status = status
- self["Location"] = target
- end
-
- def finish(&block)
- @block = block
-
- if [204, 304].include?(status.to_i)
- header.delete "Content-Type"
- [status.to_i, header, []]
- else
- [status.to_i, header, self]
- end
- end
- alias to_a finish # For *response
-
- def each(&callback)
- @body.each(&callback)
- @writer = callback
- @block.call(self) if @block
- end
-
- # Append to body and update Content-Length.
- #
- # NOTE: Do not mix #write and direct #body access!
- #
- def write(str)
- s = str.to_s
- @length += Rack::Utils.bytesize(s)
- @writer.call s
-
- header["Content-Length"] = @length.to_s
- str
- end
-
- def close
- body.close if body.respond_to?(:close)
- end
-
- def empty?
- @block == nil && @body.empty?
- end
-
- alias headers header
-
- module Helpers
- def invalid?; @status < 100 || @status >= 600; end
-
- def informational?; @status >= 100 && @status < 200; end
- def successful?; @status >= 200 && @status < 300; end
- def redirection?; @status >= 300 && @status < 400; end
- def client_error?; @status >= 400 && @status < 500; end
- def server_error?; @status >= 500 && @status < 600; end
-
- def ok?; @status == 200; end
- def forbidden?; @status == 403; end
- def not_found?; @status == 404; end
-
- def redirect?; [301, 302, 303, 307].include? @status; end
- def empty?; [201, 204, 304].include? @status; end
-
- # Headers
- attr_reader :headers, :original_headers
-
- def include?(header)
- !!headers[header]
- end
-
- def content_type
- headers["Content-Type"]
- end
-
- def content_length
- cl = headers["Content-Length"]
- cl ? cl.to_i : cl
- end
-
- def location
- headers["Location"]
- end
- end
-
- include Helpers
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/rewindable_input.rb b/vendor/gems/rack-1.1.0/lib/rack/rewindable_input.rb
deleted file mode 100644
index accd96bec..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/rewindable_input.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require 'tempfile'
-
-module Rack
- # Class which can make any IO object rewindable, including non-rewindable ones. It does
- # this by buffering the data into a tempfile, which is rewindable.
- #
- # rack.input is required to be rewindable, so if your input stream IO is non-rewindable
- # by nature (e.g. a pipe or a socket) then you can wrap it in an object of this class
- # to easily make it rewindable.
- #
- # Don't forget to call #close when you're done. This frees up temporary resources that
- # RewindableInput uses, though it does *not* close the original IO object.
- class RewindableInput
- def initialize(io)
- @io = io
- @rewindable_io = nil
- @unlinked = false
- end
-
- def gets
- make_rewindable unless @rewindable_io
- @rewindable_io.gets
- end
-
- def read(*args)
- make_rewindable unless @rewindable_io
- @rewindable_io.read(*args)
- end
-
- def each(&block)
- make_rewindable unless @rewindable_io
- @rewindable_io.each(&block)
- end
-
- def rewind
- make_rewindable unless @rewindable_io
- @rewindable_io.rewind
- end
-
- # Closes this RewindableInput object without closing the originally
- # wrapped IO oject. Cleans up any temporary resources that this RewindableInput
- # has created.
- #
- # This method may be called multiple times. It does nothing on subsequent calls.
- def close
- if @rewindable_io
- if @unlinked
- @rewindable_io.close
- else
- @rewindable_io.close!
- end
- @rewindable_io = nil
- end
- end
-
- private
-
- # Ruby's Tempfile class has a bug. Subclass it and fix it.
- class Tempfile < ::Tempfile
- def _close
- @tmpfile.close if @tmpfile
- @data[1] = nil if @data
- @tmpfile = nil
- end
- end
-
- def make_rewindable
- # Buffer all data into a tempfile. Since this tempfile is private to this
- # RewindableInput object, we chmod it so that nobody else can read or write
- # it. On POSIX filesystems we also unlink the file so that it doesn't
- # even have a file entry on the filesystem anymore, though we can still
- # access it because we have the file handle open.
- @rewindable_io = Tempfile.new('RackRewindableInput')
- @rewindable_io.chmod(0000)
- @rewindable_io.set_encoding(Encoding::BINARY) if @rewindable_io.respond_to?(:set_encoding)
- @rewindable_io.binmode
- if filesystem_has_posix_semantics?
- @rewindable_io.unlink
- @unlinked = true
- end
-
- buffer = ""
- while @io.read(1024 * 4, buffer)
- entire_buffer_written_out = false
- while !entire_buffer_written_out
- written = @rewindable_io.write(buffer)
- entire_buffer_written_out = written == buffer.size
- if !entire_buffer_written_out
- buffer.slice!(0 .. written - 1)
- end
- end
- end
- @rewindable_io.rewind
- end
-
- def filesystem_has_posix_semantics?
- RUBY_PLATFORM !~ /(mswin|mingw|cygwin|java)/
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/runtime.rb b/vendor/gems/rack-1.1.0/lib/rack/runtime.rb
deleted file mode 100644
index 1bd411fd1..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/runtime.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-module Rack
- # Sets an "X-Runtime" response header, indicating the response
- # time of the request, in seconds
- #
- # You can put it right before the application to see the processing
- # time, or before all the other middlewares to include time for them,
- # too.
- class Runtime
- def initialize(app, name = nil)
- @app = app
- @header_name = "X-Runtime"
- @header_name << "-#{name}" if name
- end
-
- def call(env)
- start_time = Time.now
- status, headers, body = @app.call(env)
- request_time = Time.now - start_time
-
- if !headers.has_key?(@header_name)
- headers[@header_name] = "%0.6f" % request_time
- end
-
- [status, headers, body]
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/sendfile.rb b/vendor/gems/rack-1.1.0/lib/rack/sendfile.rb
deleted file mode 100644
index 4fa829462..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/sendfile.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-require 'rack/file'
-
-module Rack
- class File #:nodoc:
- alias :to_path :path
- end
-
- # = Sendfile
- #
- # The Sendfile middleware intercepts responses whose body is being
- # served from a file and replaces it with a server specific X-Sendfile
- # header. The web server is then responsible for writing the file contents
- # to the client. This can dramatically reduce the amount of work required
- # by the Ruby backend and takes advantage of the web servers optimized file
- # delivery code.
- #
- # In order to take advantage of this middleware, the response body must
- # respond to +to_path+ and the request must include an X-Sendfile-Type
- # header. Rack::File and other components implement +to_path+ so there's
- # rarely anything you need to do in your application. The X-Sendfile-Type
- # header is typically set in your web servers configuration. The following
- # sections attempt to document
- #
- # === Nginx
- #
- # Nginx supports the X-Accel-Redirect header. This is similar to X-Sendfile
- # but requires parts of the filesystem to be mapped into a private URL
- # hierarachy.
- #
- # The following example shows the Nginx configuration required to create
- # a private "/files/" area, enable X-Accel-Redirect, and pass the special
- # X-Sendfile-Type and X-Accel-Mapping headers to the backend:
- #
- # location /files/ {
- # internal;
- # alias /var/www/;
- # }
- #
- # location / {
- # proxy_redirect false;
- #
- # proxy_set_header Host $host;
- # proxy_set_header X-Real-IP $remote_addr;
- # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- #
- # proxy_set_header X-Sendfile-Type X-Accel-Redirect
- # proxy_set_header X-Accel-Mapping /files/=/var/www/;
- #
- # proxy_pass http://127.0.0.1:8080/;
- # }
- #
- # Note that the X-Sendfile-Type header must be set exactly as shown above. The
- # X-Accel-Mapping header should specify the name of the private URL pattern,
- # followed by an equals sign (=), followed by the location on the file system
- # that it maps to. The middleware performs a simple substitution on the
- # resulting path.
- #
- # See Also: http://wiki.codemongers.com/NginxXSendfile
- #
- # === lighttpd
- #
- # Lighttpd has supported some variation of the X-Sendfile header for some
- # time, although only recent version support X-Sendfile in a reverse proxy
- # configuration.
- #
- # $HTTP["host"] == "example.com" {
- # proxy-core.protocol = "http"
- # proxy-core.balancer = "round-robin"
- # proxy-core.backends = (
- # "127.0.0.1:8000",
- # "127.0.0.1:8001",
- # ...
- # )
- #
- # proxy-core.allow-x-sendfile = "enable"
- # proxy-core.rewrite-request = (
- # "X-Sendfile-Type" => (".*" => "X-Sendfile")
- # )
- # }
- #
- # See Also: http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModProxyCore
- #
- # === Apache
- #
- # X-Sendfile is supported under Apache 2.x using a separate module:
- #
- # http://tn123.ath.cx/mod_xsendfile/
- #
- # Once the module is compiled and installed, you can enable it using
- # XSendFile config directive:
- #
- # RequestHeader Set X-Sendfile-Type X-Sendfile
- # ProxyPassReverse / http://localhost:8001/
- # XSendFile on
-
- class Sendfile
- F = ::File
-
- def initialize(app, variation=nil)
- @app = app
- @variation = variation
- end
-
- def call(env)
- status, headers, body = @app.call(env)
- if body.respond_to?(:to_path)
- case type = variation(env)
- when 'X-Accel-Redirect'
- path = F.expand_path(body.to_path)
- if url = map_accel_path(env, path)
- headers[type] = url
- body = []
- else
- env['rack.errors'] << "X-Accel-Mapping header missing"
- end
- when 'X-Sendfile', 'X-Lighttpd-Send-File'
- path = F.expand_path(body.to_path)
- headers[type] = path
- body = []
- when '', nil
- else
- env['rack.errors'] << "Unknown x-sendfile variation: '#{variation}'.\n"
- end
- end
- [status, headers, body]
- end
-
- private
- def variation(env)
- @variation ||
- env['sendfile.type'] ||
- env['HTTP_X_SENDFILE_TYPE']
- end
-
- def map_accel_path(env, file)
- if mapping = env['HTTP_X_ACCEL_MAPPING']
- internal, external = mapping.split('=', 2).map{ |p| p.strip }
- file.sub(/^#{internal}/i, external)
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/server.rb b/vendor/gems/rack-1.1.0/lib/rack/server.rb
deleted file mode 100644
index 2bb20aaea..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/server.rb
+++ /dev/null
@@ -1,212 +0,0 @@
-require 'optparse'
-
-module Rack
- class Server
- class Options
- def parse!(args)
- options = {}
- opt_parser = OptionParser.new("", 24, ' ') do |opts|
- opts.banner = "Usage: rackup [ruby options] [rack options] [rackup config]"
-
- opts.separator ""
- opts.separator "Ruby options:"
-
- lineno = 1
- opts.on("-e", "--eval LINE", "evaluate a LINE of code") { |line|
- eval line, TOPLEVEL_BINDING, "-e", lineno
- lineno += 1
- }
-
- opts.on("-d", "--debug", "set debugging flags (set $DEBUG to true)") {
- options[:debug] = true
- }
- opts.on("-w", "--warn", "turn warnings on for your script") {
- options[:warn] = true
- }
-
- opts.on("-I", "--include PATH",
- "specify $LOAD_PATH (may be used more than once)") { |path|
- options[:include] = path.split(":")
- }
-
- opts.on("-r", "--require LIBRARY",
- "require the library, before executing your script") { |library|
- options[:require] = library
- }
-
- opts.separator ""
- opts.separator "Rack options:"
- opts.on("-s", "--server SERVER", "serve using SERVER (webrick/mongrel)") { |s|
- options[:server] = s
- }
-
- opts.on("-o", "--host HOST", "listen on HOST (default: 0.0.0.0)") { |host|
- options[:Host] = host
- }
-
- opts.on("-p", "--port PORT", "use PORT (default: 9292)") { |port|
- options[:Port] = port
- }
-
- opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e|
- options[:environment] = e
- }
-
- opts.on("-D", "--daemonize", "run daemonized in the background") { |d|
- options[:daemonize] = d ? true : false
- }
-
- opts.on("-P", "--pid FILE", "file to store PID (default: rack.pid)") { |f|
- options[:pid] = f
- }
-
- opts.separator ""
- opts.separator "Common options:"
-
- opts.on_tail("-h", "--help", "Show this message") do
- puts opts
- exit
- end
-
- opts.on_tail("--version", "Show version") do
- puts "Rack #{Rack.version}"
- exit
- end
- end
- opt_parser.parse! args
- options[:config] = args.last if args.last
- options
- end
- end
-
- def self.start
- new.start
- end
-
- attr_accessor :options
-
- def initialize(options = nil)
- @options = options
- end
-
- def options
- @options ||= parse_options(ARGV)
- end
-
- def default_options
- {
- :environment => "development",
- :pid => nil,
- :Port => 9292,
- :Host => "0.0.0.0",
- :AccessLog => [],
- :config => "config.ru"
- }
- end
-
- def app
- @app ||= begin
- if !::File.exist? options[:config]
- abort "configuration #{options[:config]} not found"
- end
-
- app, options = Rack::Builder.parse_file(self.options[:config], opt_parser)
- self.options.merge! options
- app
- end
- end
-
- def self.middleware
- @middleware ||= begin
- m = Hash.new {|h,k| h[k] = []}
- m["deployment"].concat [lambda {|server| server.server =~ /CGI/ ? nil : [Rack::CommonLogger, $stderr] }]
- m["development"].concat m["deployment"] + [[Rack::ShowExceptions], [Rack::Lint]]
- m
- end
- end
-
- def middleware
- self.class.middleware
- end
-
- def start
- if options[:debug]
- $DEBUG = true
- require 'pp'
- p options[:server]
- pp wrapped_app
- pp app
- end
-
- if options[:warn]
- $-w = true
- end
-
- if includes = options[:include]
- $LOAD_PATH.unshift *includes
- end
-
- if library = options[:require]
- require library
- end
-
- daemonize_app if options[:daemonize]
- write_pid if options[:pid]
- server.run wrapped_app, options
- end
-
- def server
- @_server ||= Rack::Handler.get(options[:server]) || Rack::Handler.default
- end
-
- private
- def parse_options(args)
- options = default_options
-
- # Don't evaluate CGI ISINDEX parameters.
- # http://hoohoo.ncsa.uiuc.edu/cgi/cl.html
- args.clear if ENV.include?("REQUEST_METHOD")
-
- options.merge! opt_parser.parse! args
- options
- end
-
- def opt_parser
- Options.new
- end
-
- def build_app(app)
- middleware[options[:environment]].reverse_each do |middleware|
- middleware = middleware.call(self) if middleware.respond_to?(:call)
- next unless middleware
- klass = middleware.shift
- app = klass.new(app, *middleware)
- end
- app
- end
-
- def wrapped_app
- @wrapped_app ||= build_app app
- end
-
- def daemonize_app
- if RUBY_VERSION < "1.9"
- exit if fork
- Process.setsid
- exit if fork
- Dir.chdir "/"
- ::File.umask 0000
- STDIN.reopen "/dev/null"
- STDOUT.reopen "/dev/null", "a"
- STDERR.reopen "/dev/null", "a"
- else
- Process.daemon
- end
- end
-
- def write_pid
- ::File.open(options[:pid], 'w'){ |f| f.write("#{Process.pid}") }
- at_exit { ::File.delete(options[:pid]) if ::File.exist?(options[:pid]) }
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/session/abstract/id.rb b/vendor/gems/rack-1.1.0/lib/rack/session/abstract/id.rb
deleted file mode 100644
index 987467050..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/session/abstract/id.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-# AUTHOR: blink <blinketje@gmail.com>; blink#ruby-lang@irc.freenode.net
-# bugrep: Andreas Zehnder
-
-require 'time'
-require 'rack/request'
-require 'rack/response'
-
-module Rack
-
- module Session
-
- module Abstract
-
- # ID sets up a basic framework for implementing an id based sessioning
- # service. Cookies sent to the client for maintaining sessions will only
- # contain an id reference. Only #get_session and #set_session are
- # required to be overwritten.
- #
- # All parameters are optional.
- # * :key determines the name of the cookie, by default it is
- # 'rack.session'
- # * :path, :domain, :expire_after, :secure, and :httponly set the related
- # cookie options as by Rack::Response#add_cookie
- # * :defer will not set a cookie in the response.
- # * :renew (implementation dependent) will prompt the generation of a new
- # session id, and migration of data to be referenced at the new id. If
- # :defer is set, it will be overridden and the cookie will be set.
- # * :sidbits sets the number of bits in length that a generated session
- # id will be.
- #
- # These options can be set on a per request basis, at the location of
- # env['rack.session.options']. Additionally the id of the session can be
- # found within the options hash at the key :id. It is highly not
- # recommended to change its value.
- #
- # Is Rack::Utils::Context compatible.
-
- class ID
- DEFAULT_OPTIONS = {
- :path => '/',
- :domain => nil,
- :expire_after => nil,
- :secure => false,
- :httponly => true,
- :defer => false,
- :renew => false,
- :sidbits => 128
- }
-
- attr_reader :key, :default_options
- def initialize(app, options={})
- @app = app
- @key = options[:key] || "rack.session"
- @default_options = self.class::DEFAULT_OPTIONS.merge(options)
- end
-
- def call(env)
- context(env)
- end
-
- def context(env, app=@app)
- load_session(env)
- status, headers, body = app.call(env)
- commit_session(env, status, headers, body)
- end
-
- private
-
- # Generate a new session id using Ruby #rand. The size of the
- # session id is controlled by the :sidbits option.
- # Monkey patch this to use custom methods for session id generation.
-
- def generate_sid
- "%0#{@default_options[:sidbits] / 4}x" %
- rand(2**@default_options[:sidbits] - 1)
- end
-
- # Extracts the session id from provided cookies and passes it and the
- # environment to #get_session. It then sets the resulting session into
- # 'rack.session', and places options and session metadata into
- # 'rack.session.options'.
-
- def load_session(env)
- request = Rack::Request.new(env)
- session_id = request.cookies[@key]
-
- begin
- session_id, session = get_session(env, session_id)
- env['rack.session'] = session
- rescue
- env['rack.session'] = Hash.new
- end
-
- env['rack.session.options'] = @default_options.
- merge(:id => session_id)
- end
-
- # Acquires the session from the environment and the session id from
- # the session options and passes them to #set_session. If successful
- # and the :defer option is not true, a cookie will be added to the
- # response with the session's id.
-
- def commit_session(env, status, headers, body)
- session = env['rack.session']
- options = env['rack.session.options']
- session_id = options[:id]
-
- if not session_id = set_session(env, session_id, session, options)
- env["rack.errors"].puts("Warning! #{self.class.name} failed to save session. Content dropped.")
- elsif options[:defer] and not options[:renew]
- env["rack.errors"].puts("Defering cookie for #{session_id}") if $VERBOSE
- else
- cookie = Hash.new
- cookie[:value] = session_id
- cookie[:expires] = Time.now + options[:expire_after] unless options[:expire_after].nil?
- Utils.set_cookie_header!(headers, @key, cookie.merge(options))
- end
-
- [status, headers, body]
- end
-
- # All thread safety and session retrival proceedures should occur here.
- # Should return [session_id, session].
- # If nil is provided as the session id, generation of a new valid id
- # should occur within.
-
- def get_session(env, sid)
- raise '#get_session not implemented.'
- end
-
- # All thread safety and session storage proceedures should occur here.
- # Should return true or false dependant on whether or not the session
- # was saved or not.
- def set_session(env, sid, session, options)
- raise '#set_session not implemented.'
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/session/cookie.rb b/vendor/gems/rack-1.1.0/lib/rack/session/cookie.rb
deleted file mode 100644
index 240e6c8db..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/session/cookie.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-require 'openssl'
-require 'rack/request'
-require 'rack/response'
-
-module Rack
-
- module Session
-
- # Rack::Session::Cookie provides simple cookie based session management.
- # The session is a Ruby Hash stored as base64 encoded marshalled data
- # set to :key (default: rack.session).
- # When the secret key is set, cookie data is checked for data integrity.
- #
- # Example:
- #
- # use Rack::Session::Cookie, :key => 'rack.session',
- # :domain => 'foo.com',
- # :path => '/',
- # :expire_after => 2592000,
- # :secret => 'change_me'
- #
- # All parameters are optional.
-
- class Cookie
-
- def initialize(app, options={})
- @app = app
- @key = options[:key] || "rack.session"
- @secret = options[:secret]
- @default_options = {:domain => nil,
- :path => "/",
- :expire_after => nil}.merge(options)
- end
-
- def call(env)
- load_session(env)
- status, headers, body = @app.call(env)
- commit_session(env, status, headers, body)
- end
-
- private
-
- def load_session(env)
- request = Rack::Request.new(env)
- session_data = request.cookies[@key]
-
- if @secret && session_data
- session_data, digest = session_data.split("--")
- session_data = nil unless digest == generate_hmac(session_data)
- end
-
- begin
- session_data = session_data.unpack("m*").first
- session_data = Marshal.load(session_data)
- env["rack.session"] = session_data
- rescue
- env["rack.session"] = Hash.new
- end
-
- env["rack.session.options"] = @default_options.dup
- end
-
- def commit_session(env, status, headers, body)
- session_data = Marshal.dump(env["rack.session"])
- session_data = [session_data].pack("m*")
-
- if @secret
- session_data = "#{session_data}--#{generate_hmac(session_data)}"
- end
-
- if session_data.size > (4096 - @key.size)
- env["rack.errors"].puts("Warning! Rack::Session::Cookie data size exceeds 4K. Content dropped.")
- else
- options = env["rack.session.options"]
- cookie = Hash.new
- cookie[:value] = session_data
- cookie[:expires] = Time.now + options[:expire_after] unless options[:expire_after].nil?
- Utils.set_cookie_header!(headers, @key, cookie.merge(options))
- end
-
- [status, headers, body]
- end
-
- def generate_hmac(data)
- OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA1.new, @secret, data)
- end
-
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/session/memcache.rb b/vendor/gems/rack-1.1.0/lib/rack/session/memcache.rb
deleted file mode 100644
index 44629da35..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/session/memcache.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-# AUTHOR: blink <blinketje@gmail.com>; blink#ruby-lang@irc.freenode.net
-
-require 'rack/session/abstract/id'
-require 'memcache'
-
-module Rack
- module Session
- # Rack::Session::Memcache provides simple cookie based session management.
- # Session data is stored in memcached. The corresponding session key is
- # maintained in the cookie.
- # You may treat Session::Memcache as you would Session::Pool with the
- # following caveats.
- #
- # * Setting :expire_after to 0 would note to the Memcache server to hang
- # onto the session data until it would drop it according to it's own
- # specifications. However, the cookie sent to the client would expire
- # immediately.
- #
- # Note that memcache does drop data before it may be listed to expire. For
- # a full description of behaviour, please see memcache's documentation.
-
- class Memcache < Abstract::ID
- attr_reader :mutex, :pool
- DEFAULT_OPTIONS = Abstract::ID::DEFAULT_OPTIONS.merge \
- :namespace => 'rack:session',
- :memcache_server => 'localhost:11211'
-
- def initialize(app, options={})
- super
-
- @mutex = Mutex.new
- mserv = @default_options[:memcache_server]
- mopts = @default_options.
- reject{|k,v| MemCache::DEFAULT_OPTIONS.include? k }
- @pool = MemCache.new mserv, mopts
- unless @pool.active? and @pool.servers.any?{|c| c.alive? }
- raise 'No memcache servers'
- end
- end
-
- def generate_sid
- loop do
- sid = super
- break sid unless @pool.get(sid, true)
- end
- end
-
- def get_session(env, session_id)
- @mutex.lock if env['rack.multithread']
- unless session_id and session = @pool.get(session_id)
- session_id, session = generate_sid, {}
- unless /^STORED/ =~ @pool.add(session_id, session)
- raise "Session collision on '#{session_id.inspect}'"
- end
- end
- session.instance_variable_set '@old', @pool.get(session_id, true)
- return [session_id, session]
- rescue MemCache::MemCacheError, Errno::ECONNREFUSED
- # MemCache server cannot be contacted
- warn "#{self} is unable to find memcached server."
- warn $!.inspect
- return [ nil, {} ]
- ensure
- @mutex.unlock if @mutex.locked?
- end
-
- def set_session(env, session_id, new_session, options)
- expiry = options[:expire_after]
- expiry = expiry.nil? ? 0 : expiry + 1
-
- @mutex.lock if env['rack.multithread']
- if options[:renew] or options[:drop]
- @pool.delete session_id
- return false if options[:drop]
- session_id = generate_sid
- @pool.add session_id, {} # so we don't worry about cache miss on #set
- end
-
- session = @pool.get(session_id) || {}
- old_session = new_session.instance_variable_get '@old'
- old_session = old_session ? Marshal.load(old_session) : {}
-
- unless Hash === old_session and Hash === new_session
- env['rack.errors'].
- puts 'Bad old_session or new_session sessions provided.'
- else # merge sessions
- # alterations are either update or delete, making as few changes as
- # possible to prevent possible issues.
-
- # removed keys
- delete = old_session.keys - new_session.keys
- if $VERBOSE and not delete.empty?
- env['rack.errors'].
- puts "//@#{session_id}: delete #{delete*','}"
- end
- delete.each{|k| session.delete k }
-
- # added or altered keys
- update = new_session.keys.
- select{|k| new_session[k] != old_session[k] }
- if $VERBOSE and not update.empty?
- env['rack.errors'].puts "//@#{session_id}: update #{update*','}"
- end
- update.each{|k| session[k] = new_session[k] }
- end
-
- @pool.set session_id, session, expiry
- return session_id
- rescue MemCache::MemCacheError, Errno::ECONNREFUSED
- # MemCache server cannot be contacted
- warn "#{self} is unable to find memcached server."
- warn $!.inspect
- return false
- ensure
- @mutex.unlock if @mutex.locked?
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/session/pool.rb b/vendor/gems/rack-1.1.0/lib/rack/session/pool.rb
deleted file mode 100644
index b3f8bd726..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/session/pool.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-# AUTHOR: blink <blinketje@gmail.com>; blink#ruby-lang@irc.freenode.net
-# THANKS:
-# apeiros, for session id generation, expiry setup, and threadiness
-# sergio, threadiness and bugreps
-
-require 'rack/session/abstract/id'
-require 'thread'
-
-module Rack
- module Session
- # Rack::Session::Pool provides simple cookie based session management.
- # Session data is stored in a hash held by @pool.
- # In the context of a multithreaded environment, sessions being
- # committed to the pool is done in a merging manner.
- #
- # The :drop option is available in rack.session.options if you wish to
- # explicitly remove the session from the session cache.
- #
- # Example:
- # myapp = MyRackApp.new
- # sessioned = Rack::Session::Pool.new(myapp,
- # :domain => 'foo.com',
- # :expire_after => 2592000
- # )
- # Rack::Handler::WEBrick.run sessioned
-
- class Pool < Abstract::ID
- attr_reader :mutex, :pool
- DEFAULT_OPTIONS = Abstract::ID::DEFAULT_OPTIONS.merge :drop => false
-
- def initialize(app, options={})
- super
- @pool = Hash.new
- @mutex = Mutex.new
- end
-
- def generate_sid
- loop do
- sid = super
- break sid unless @pool.key? sid
- end
- end
-
- def get_session(env, sid)
- session = @pool[sid] if sid
- @mutex.lock if env['rack.multithread']
- unless sid and session
- env['rack.errors'].puts("Session '#{sid.inspect}' not found, initializing...") if $VERBOSE and not sid.nil?
- session = {}
- sid = generate_sid
- @pool.store sid, session
- end
- session.instance_variable_set('@old', {}.merge(session))
- return [sid, session]
- ensure
- @mutex.unlock if env['rack.multithread']
- end
-
- def set_session(env, session_id, new_session, options)
- @mutex.lock if env['rack.multithread']
- session = @pool[session_id]
- if options[:renew] or options[:drop]
- @pool.delete session_id
- return false if options[:drop]
- session_id = generate_sid
- @pool.store session_id, 0
- end
- old_session = new_session.instance_variable_get('@old') || {}
- session = merge_sessions session_id, old_session, new_session, session
- @pool.store session_id, session
- return session_id
- rescue
- warn "#{new_session.inspect} has been lost."
- warn $!.inspect
- ensure
- @mutex.unlock if env['rack.multithread']
- end
-
- private
-
- def merge_sessions sid, old, new, cur=nil
- cur ||= {}
- unless Hash === old and Hash === new
- warn 'Bad old or new sessions provided.'
- return cur
- end
-
- delete = old.keys - new.keys
- warn "//@#{sid}: dropping #{delete*','}" if $DEBUG and not delete.empty?
- delete.each{|k| cur.delete k }
-
- update = new.keys.select{|k| new[k] != old[k] }
- warn "//@#{sid}: updating #{update*','}" if $DEBUG and not update.empty?
- update.each{|k| cur[k] = new[k] }
-
- cur
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/showexceptions.rb b/vendor/gems/rack-1.1.0/lib/rack/showexceptions.rb
deleted file mode 100644
index 697bc41fd..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/showexceptions.rb
+++ /dev/null
@@ -1,349 +0,0 @@
-require 'ostruct'
-require 'erb'
-require 'rack/request'
-require 'rack/utils'
-
-module Rack
- # Rack::ShowExceptions catches all exceptions raised from the app it
- # wraps. It shows a useful backtrace with the sourcefile and
- # clickable context, the whole Rack environment and the request
- # data.
- #
- # Be careful when you use this on public-facing sites as it could
- # reveal information helpful to attackers.
-
- class ShowExceptions
- CONTEXT = 7
-
- def initialize(app)
- @app = app
- @template = ERB.new(TEMPLATE)
- end
-
- def call(env)
- @app.call(env)
- rescue StandardError, LoadError, SyntaxError => e
- backtrace = pretty(env, e)
- [500,
- {"Content-Type" => "text/html",
- "Content-Length" => backtrace.join.size.to_s},
- backtrace]
- end
-
- def pretty(env, exception)
- req = Rack::Request.new(env)
- path = (req.script_name + req.path_info).squeeze("/")
-
- frames = exception.backtrace.map { |line|
- frame = OpenStruct.new
- if line =~ /(.*?):(\d+)(:in `(.*)')?/
- frame.filename = $1
- frame.lineno = $2.to_i
- frame.function = $4
-
- begin
- lineno = frame.lineno-1
- lines = ::File.readlines(frame.filename)
- frame.pre_context_lineno = [lineno-CONTEXT, 0].max
- frame.pre_context = lines[frame.pre_context_lineno...lineno]
- frame.context_line = lines[lineno].chomp
- frame.post_context_lineno = [lineno+CONTEXT, lines.size].min
- frame.post_context = lines[lineno+1..frame.post_context_lineno]
- rescue
- end
-
- frame
- else
- nil
- end
- }.compact
-
- env["rack.errors"].puts "#{exception.class}: #{exception.message}"
- env["rack.errors"].puts exception.backtrace.map { |l| "\t" + l }
- env["rack.errors"].flush
-
- [@template.result(binding)]
- end
-
- def h(obj) # :nodoc:
- case obj
- when String
- Utils.escape_html(obj)
- else
- Utils.escape_html(obj.inspect)
- end
- end
-
- # :stopdoc:
-
-# adapted from Django <djangoproject.com>
-# Copyright (c) 2005, the Lawrence Journal-World
-# Used under the modified BSD license:
-# http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5
-TEMPLATE = <<'HTML'
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="robots" content="NONE,NOARCHIVE" />
- <title><%=h exception.class %> at <%=h path %></title>
- <style type="text/css">
- html * { padding:0; margin:0; }
- body * { padding:10px 20px; }
- body * * { padding:0; }
- body { font:small sans-serif; }
- body>div { border-bottom:1px solid #ddd; }
- h1 { font-weight:normal; }
- h2 { margin-bottom:.8em; }
- h2 span { font-size:80%; color:#666; font-weight:normal; }
- h3 { margin:1em 0 .5em 0; }
- h4 { margin:0 0 .5em 0; font-weight: normal; }
- table {
- border:1px solid #ccc; border-collapse: collapse; background:white; }
- tbody td, tbody th { vertical-align:top; padding:2px 3px; }
- thead th {
- padding:1px 6px 1px 3px; background:#fefefe; text-align:left;
- font-weight:normal; font-size:11px; border:1px solid #ddd; }
- tbody th { text-align:right; color:#666; padding-right:.5em; }
- table.vars { margin:5px 0 2px 40px; }
- table.vars td, table.req td { font-family:monospace; }
- table td.code { width:100%;}
- table td.code div { overflow:hidden; }
- table.source th { color:#666; }
- table.source td {
- font-family:monospace; white-space:pre; border-bottom:1px solid #eee; }
- ul.traceback { list-style-type:none; }
- ul.traceback li.frame { margin-bottom:1em; }
- div.context { margin: 10px 0; }
- div.context ol {
- padding-left:30px; margin:0 10px; list-style-position: inside; }
- div.context ol li {
- font-family:monospace; white-space:pre; color:#666; cursor:pointer; }
- div.context ol.context-line li { color:black; background-color:#ccc; }
- div.context ol.context-line li span { float: right; }
- div.commands { margin-left: 40px; }
- div.commands a { color:black; text-decoration:none; }
- #summary { background: #ffc; }
- #summary h2 { font-weight: normal; color: #666; }
- #summary ul#quicklinks { list-style-type: none; margin-bottom: 2em; }
- #summary ul#quicklinks li { float: left; padding: 0 1em; }
- #summary ul#quicklinks>li+li { border-left: 1px #666 solid; }
- #explanation { background:#eee; }
- #template, #template-not-exist { background:#f6f6f6; }
- #template-not-exist ul { margin: 0 0 0 20px; }
- #traceback { background:#eee; }
- #requestinfo { background:#f6f6f6; padding-left:120px; }
- #summary table { border:none; background:transparent; }
- #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; }
- #requestinfo h3 { margin-bottom:-1em; }
- .error { background: #ffc; }
- .specific { color:#cc3300; font-weight:bold; }
- </style>
- <script type="text/javascript">
- //<!--
- function getElementsByClassName(oElm, strTagName, strClassName){
- // Written by Jonathan Snook, http://www.snook.ca/jon;
- // Add-ons by Robert Nyman, http://www.robertnyman.com
- var arrElements = (strTagName == "*" && document.all)? document.all :
- oElm.getElementsByTagName(strTagName);
- var arrReturnElements = new Array();
- strClassName = strClassName.replace(/\-/g, "\\-");
- var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$$)");
- var oElement;
- for(var i=0; i<arrElements.length; i++){
- oElement = arrElements[i];
- if(oRegExp.test(oElement.className)){
- arrReturnElements.push(oElement);
- }
- }
- return (arrReturnElements)
- }
- function hideAll(elems) {
- for (var e = 0; e < elems.length; e++) {
- elems[e].style.display = 'none';
- }
- }
- window.onload = function() {
- hideAll(getElementsByClassName(document, 'table', 'vars'));
- hideAll(getElementsByClassName(document, 'ol', 'pre-context'));
- hideAll(getElementsByClassName(document, 'ol', 'post-context'));
- }
- function toggle() {
- for (var i = 0; i < arguments.length; i++) {
- var e = document.getElementById(arguments[i]);
- if (e) {
- e.style.display = e.style.display == 'none' ? 'block' : 'none';
- }
- }
- return false;
- }
- function varToggle(link, id) {
- toggle('v' + id);
- var s = link.getElementsByTagName('span')[0];
- var uarr = String.fromCharCode(0x25b6);
- var darr = String.fromCharCode(0x25bc);
- s.innerHTML = s.innerHTML == uarr ? darr : uarr;
- return false;
- }
- //-->
- </script>
-</head>
-<body>
-
-<div id="summary">
- <h1><%=h exception.class %> at <%=h path %></h1>
- <h2><%=h exception.message %></h2>
- <table><tr>
- <th>Ruby</th>
- <td><code><%=h frames.first.filename %></code>: in <code><%=h frames.first.function %></code>, line <%=h frames.first.lineno %></td>
- </tr><tr>
- <th>Web</th>
- <td><code><%=h req.request_method %> <%=h(req.host + path)%></code></td>
- </tr></table>
-
- <h3>Jump to:</h3>
- <ul id="quicklinks">
- <li><a href="#get-info">GET</a></li>
- <li><a href="#post-info">POST</a></li>
- <li><a href="#cookie-info">Cookies</a></li>
- <li><a href="#env-info">ENV</a></li>
- </ul>
-</div>
-
-<div id="traceback">
- <h2>Traceback <span>(innermost first)</span></h2>
- <ul class="traceback">
-<% frames.each { |frame| %>
- <li class="frame">
- <code><%=h frame.filename %></code>: in <code><%=h frame.function %></code>
-
- <% if frame.context_line %>
- <div class="context" id="c<%=h frame.object_id %>">
- <% if frame.pre_context %>
- <ol start="<%=h frame.pre_context_lineno+1 %>" class="pre-context" id="pre<%=h frame.object_id %>">
- <% frame.pre_context.each { |line| %>
- <li onclick="toggle('pre<%=h frame.object_id %>', 'post<%=h frame.object_id %>')"><%=h line %></li>
- <% } %>
- </ol>
- <% end %>
-
- <ol start="<%=h frame.lineno %>" class="context-line">
- <li onclick="toggle('pre<%=h frame.object_id %>', 'post<%=h frame.object_id %>')"><%=h frame.context_line %><span>...</span></li></ol>
-
- <% if frame.post_context %>
- <ol start='<%=h frame.lineno+1 %>' class="post-context" id="post<%=h frame.object_id %>">
- <% frame.post_context.each { |line| %>
- <li onclick="toggle('pre<%=h frame.object_id %>', 'post<%=h frame.object_id %>')"><%=h line %></li>
- <% } %>
- </ol>
- <% end %>
- </div>
- <% end %>
- </li>
-<% } %>
- </ul>
-</div>
-
-<div id="requestinfo">
- <h2>Request information</h2>
-
- <h3 id="get-info">GET</h3>
- <% unless req.GET.empty? %>
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <% req.GET.sort_by { |k, v| k.to_s }.each { |key, val| %>
- <tr>
- <td><%=h key %></td>
- <td class="code"><div><%=h val.inspect %></div></td>
- </tr>
- <% } %>
- </tbody>
- </table>
- <% else %>
- <p>No GET data.</p>
- <% end %>
-
- <h3 id="post-info">POST</h3>
- <% unless req.POST.empty? %>
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <% req.POST.sort_by { |k, v| k.to_s }.each { |key, val| %>
- <tr>
- <td><%=h key %></td>
- <td class="code"><div><%=h val.inspect %></div></td>
- </tr>
- <% } %>
- </tbody>
- </table>
- <% else %>
- <p>No POST data.</p>
- <% end %>
-
-
- <h3 id="cookie-info">COOKIES</h3>
- <% unless req.cookies.empty? %>
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <% req.cookies.each { |key, val| %>
- <tr>
- <td><%=h key %></td>
- <td class="code"><div><%=h val.inspect %></div></td>
- </tr>
- <% } %>
- </tbody>
- </table>
- <% else %>
- <p>No cookie data.</p>
- <% end %>
-
- <h3 id="env-info">Rack ENV</h3>
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- <% env.sort_by { |k, v| k.to_s }.each { |key, val| %>
- <tr>
- <td><%=h key %></td>
- <td class="code"><div><%=h val %></div></td>
- </tr>
- <% } %>
- </tbody>
- </table>
-
-</div>
-
-<div id="explanation">
- <p>
- You're seeing this error because you use <code>Rack::ShowExceptions</code>.
- </p>
-</div>
-
-</body>
-</html>
-HTML
-
- # :startdoc:
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/showstatus.rb b/vendor/gems/rack-1.1.0/lib/rack/showstatus.rb
deleted file mode 100644
index 28258c7c8..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/showstatus.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-require 'erb'
-require 'rack/request'
-require 'rack/utils'
-
-module Rack
- # Rack::ShowStatus catches all empty responses the app it wraps and
- # replaces them with a site explaining the error.
- #
- # Additional details can be put into <tt>rack.showstatus.detail</tt>
- # and will be shown as HTML. If such details exist, the error page
- # is always rendered, even if the reply was not empty.
-
- class ShowStatus
- def initialize(app)
- @app = app
- @template = ERB.new(TEMPLATE)
- end
-
- def call(env)
- status, headers, body = @app.call(env)
- headers = Utils::HeaderHash.new(headers)
- empty = headers['Content-Length'].to_i <= 0
-
- # client or server error, or explicit message
- if (status.to_i >= 400 && empty) || env["rack.showstatus.detail"]
- req = Rack::Request.new(env)
- message = Rack::Utils::HTTP_STATUS_CODES[status.to_i] || status.to_s
- detail = env["rack.showstatus.detail"] || message
- body = @template.result(binding)
- size = Rack::Utils.bytesize(body)
- [status, headers.merge("Content-Type" => "text/html", "Content-Length" => size.to_s), [body]]
- else
- [status, headers, body]
- end
- end
-
- def h(obj) # :nodoc:
- case obj
- when String
- Utils.escape_html(obj)
- else
- Utils.escape_html(obj.inspect)
- end
- end
-
- # :stopdoc:
-
-# adapted from Django <djangoproject.com>
-# Copyright (c) 2005, the Lawrence Journal-World
-# Used under the modified BSD license:
-# http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5
-TEMPLATE = <<'HTML'
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <title><%=h message %> at <%=h req.script_name + req.path_info %></title>
- <meta name="robots" content="NONE,NOARCHIVE" />
- <style type="text/css">
- html * { padding:0; margin:0; }
- body * { padding:10px 20px; }
- body * * { padding:0; }
- body { font:small sans-serif; background:#eee; }
- body>div { border-bottom:1px solid #ddd; }
- h1 { font-weight:normal; margin-bottom:.4em; }
- h1 span { font-size:60%; color:#666; font-weight:normal; }
- table { border:none; border-collapse: collapse; width:100%; }
- td, th { vertical-align:top; padding:2px 3px; }
- th { width:12em; text-align:right; color:#666; padding-right:.5em; }
- #info { background:#f6f6f6; }
- #info ol { margin: 0.5em 4em; }
- #info ol li { font-family: monospace; }
- #summary { background: #ffc; }
- #explanation { background:#eee; border-bottom: 0px none; }
- </style>
-</head>
-<body>
- <div id="summary">
- <h1><%=h message %> <span>(<%= status.to_i %>)</span></h1>
- <table class="meta">
- <tr>
- <th>Request Method:</th>
- <td><%=h req.request_method %></td>
- </tr>
- <tr>
- <th>Request URL:</th>
- <td><%=h req.url %></td>
- </tr>
- </table>
- </div>
- <div id="info">
- <p><%= detail %></p>
- </div>
-
- <div id="explanation">
- <p>
- You're seeing this error because you use <code>Rack::ShowStatus</code>.
- </p>
- </div>
-</body>
-</html>
-HTML
-
- # :startdoc:
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/static.rb b/vendor/gems/rack-1.1.0/lib/rack/static.rb
deleted file mode 100644
index 168e8f83b..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/static.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-module Rack
-
- # The Rack::Static middleware intercepts requests for static files
- # (javascript files, images, stylesheets, etc) based on the url prefixes
- # passed in the options, and serves them using a Rack::File object. This
- # allows a Rack stack to serve both static and dynamic content.
- #
- # Examples:
- # use Rack::Static, :urls => ["/media"]
- # will serve all requests beginning with /media from the "media" folder
- # located in the current directory (ie media/*).
- #
- # use Rack::Static, :urls => ["/css", "/images"], :root => "public"
- # will serve all requests beginning with /css or /images from the folder
- # "public" in the current directory (ie public/css/* and public/images/*)
-
- class Static
-
- def initialize(app, options={})
- @app = app
- @urls = options[:urls] || ["/favicon.ico"]
- root = options[:root] || Dir.pwd
- @file_server = Rack::File.new(root)
- end
-
- def call(env)
- path = env["PATH_INFO"]
- can_serve = @urls.any? { |url| path.index(url) == 0 }
-
- if can_serve
- @file_server.call(env)
- else
- @app.call(env)
- end
- end
-
- end
-end
diff --git a/vendor/gems/rack-1.1.0/lib/rack/urlmap.rb b/vendor/gems/rack-1.1.0/lib/rack/urlmap.rb
deleted file mode 100644
index b699d35b9..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/urlmap.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-module Rack
- # Rack::URLMap takes a hash mapping urls or paths to apps, and
- # dispatches accordingly. Support for HTTP/1.1 host names exists if
- # the URLs start with <tt>http://</tt> or <tt>https://</tt>.
- #
- # URLMap modifies the SCRIPT_NAME and PATH_INFO such that the part
- # relevant for dispatch is in the SCRIPT_NAME, and the rest in the
- # PATH_INFO. This should be taken care of when you need to
- # reconstruct the URL in order to create links.
- #
- # URLMap dispatches in such a way that the longest paths are tried
- # first, since they are most specific.
-
- class URLMap
- def initialize(map = {})
- remap(map)
- end
-
- def remap(map)
- @mapping = map.map { |location, app|
- if location =~ %r{\Ahttps?://(.*?)(/.*)}
- host, location = $1, $2
- else
- host = nil
- end
-
- unless location[0] == ?/
- raise ArgumentError, "paths need to start with /"
- end
- location = location.chomp('/')
- match = Regexp.new("^#{Regexp.quote(location).gsub('/', '/+')}(.*)", nil, 'n')
-
- [host, location, match, app]
- }.sort_by { |(h, l, m, a)| [h ? -h.size : (-1.0 / 0.0), -l.size] } # Longest path first
- end
-
- def call(env)
- path = env["PATH_INFO"].to_s
- script_name = env['SCRIPT_NAME']
- hHost, sName, sPort = env.values_at('HTTP_HOST','SERVER_NAME','SERVER_PORT')
- @mapping.each { |host, location, match, app|
- next unless (hHost == host || sName == host \
- || (host.nil? && (hHost == sName || hHost == sName+':'+sPort)))
- next unless path =~ match && rest = $1
- next unless rest.empty? || rest[0] == ?/
-
- return app.call(
- env.merge(
- 'SCRIPT_NAME' => (script_name + location),
- 'PATH_INFO' => rest))
- }
- [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found: #{path}"]]
- end
- end
-end
-
diff --git a/vendor/gems/rack-1.1.0/lib/rack/utils.rb b/vendor/gems/rack-1.1.0/lib/rack/utils.rb
deleted file mode 100644
index 68fd6acee..000000000
--- a/vendor/gems/rack-1.1.0/lib/rack/utils.rb
+++ /dev/null
@@ -1,620 +0,0 @@
-# -*- encoding: binary -*-
-
-require 'set'
-require 'tempfile'
-
-module Rack
- # Rack::Utils contains a grab-bag of useful methods for writing web
- # applications adopted from all kinds of Ruby libraries.
-
- module Utils
- # Performs URI escaping so that you can construct proper
- # query strings faster. Use this rather than the cgi.rb
- # version since it's faster. (Stolen from Camping).
- def escape(s)
- s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
- '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase
- }.tr(' ', '+')
- end
- module_function :escape
-
- # Unescapes a URI escaped string. (Stolen from Camping).
- def unescape(s)
- s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){
- [$1.delete('%')].pack('H*')
- }
- end
- module_function :unescape
-
- DEFAULT_SEP = /[&;] */n
-
- # Stolen from Mongrel, with some small modifications:
- # Parses a query string by breaking it up at the '&'
- # and ';' characters. You can also use this to parse
- # cookies by changing the characters used in the second
- # parameter (which defaults to '&;').
- def parse_query(qs, d = nil)
- params = {}
-
- (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
- k, v = p.split('=', 2).map { |x| unescape(x) }
- if v =~ /^("|')(.*)\1$/
- v = $2.gsub('\\'+$1, $1)
- end
- if cur = params[k]
- if cur.class == Array
- params[k] << v
- else
- params[k] = [cur, v]
- end
- else
- params[k] = v
- end
- end
-
- return params
- end
- module_function :parse_query
-
- def parse_nested_query(qs, d = nil)
- params = {}
-
- (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
- k, v = unescape(p).split('=', 2)
- normalize_params(params, k, v)
- end
-
- return params
- end
- module_function :parse_nested_query
-
- def normalize_params(params, name, v = nil)
- if v and v =~ /^("|')(.*)\1$/
- v = $2.gsub('\\'+$1, $1)
- end
- name =~ %r(\A[\[\]]*([^\[\]]+)\]*)
- k = $1 || ''
- after = $' || ''
-
- return if k.empty?
-
- if after == ""
- params[k] = v
- elsif after == "[]"
- params[k] ||= []
- raise TypeError, "expected Array (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Array)
- params[k] << v
- elsif after =~ %r(^\[\]\[([^\[\]]+)\]$) || after =~ %r(^\[\](.+)$)
- child_key = $1
- params[k] ||= []
- raise TypeError, "expected Array (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Array)
- if params[k].last.is_a?(Hash) && !params[k].last.key?(child_key)
- normalize_params(params[k].last, child_key, v)
- else
- params[k] << normalize_params({}, child_key, v)
- end
- else
- params[k] ||= {}
- raise TypeError, "expected Hash (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Hash)
- params[k] = normalize_params(params[k], after, v)
- end
-
- return params
- end
- module_function :normalize_params
-
- def build_query(params)
- params.map { |k, v|
- if v.class == Array
- build_query(v.map { |x| [k, x] })
- else
- "#{escape(k)}=#{escape(v)}"
- end
- }.join("&")
- end
- module_function :build_query
-
- def build_nested_query(value, prefix = nil)
- case value
- when Array
- value.map { |v|
- build_nested_query(v, "#{prefix}[]")
- }.join("&")
- when Hash
- value.map { |k, v|
- build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k))
- }.join("&")
- when String
- raise ArgumentError, "value must be a Hash" if prefix.nil?
- "#{prefix}=#{escape(value)}"
- else
- prefix
- end
- end
- module_function :build_nested_query
-
- # Escape ampersands, brackets and quotes to their HTML/XML entities.
- def escape_html(string)
- string.to_s.gsub("&", "&amp;").
- gsub("<", "&lt;").
- gsub(">", "&gt;").
- gsub("'", "&#39;").
- gsub('"', "&quot;")
- end
- module_function :escape_html
-
- def select_best_encoding(available_encodings, accept_encoding)
- # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
-
- expanded_accept_encoding =
- accept_encoding.map { |m, q|
- if m == "*"
- (available_encodings - accept_encoding.map { |m2, _| m2 }).map { |m2| [m2, q] }
- else
- [[m, q]]
- end
- }.inject([]) { |mem, list|
- mem + list
- }
-
- encoding_candidates = expanded_accept_encoding.sort_by { |_, q| -q }.map { |m, _| m }
-
- unless encoding_candidates.include?("identity")
- encoding_candidates.push("identity")
- end
-
- expanded_accept_encoding.find_all { |m, q|
- q == 0.0
- }.each { |m, _|
- encoding_candidates.delete(m)
- }
-
- return (encoding_candidates & available_encodings)[0]
- end
- module_function :select_best_encoding
-
- def set_cookie_header!(header, key, value)
- case value
- when Hash
- domain = "; domain=" + value[:domain] if value[:domain]
- path = "; path=" + value[:path] if value[:path]
- # According to RFC 2109, we need dashes here.
- # N.B.: cgi.rb uses spaces...
- expires = "; expires=" + value[:expires].clone.gmtime.
- strftime("%a, %d-%b-%Y %H:%M:%S GMT") if value[:expires]
- secure = "; secure" if value[:secure]
- httponly = "; HttpOnly" if value[:httponly]
- value = value[:value]
- end
- value = [value] unless Array === value
- cookie = escape(key) + "=" +
- value.map { |v| escape v }.join("&") +
- "#{domain}#{path}#{expires}#{secure}#{httponly}"
-
- case header["Set-Cookie"]
- when Array
- header["Set-Cookie"] << cookie
- when String
- header["Set-Cookie"] = [header["Set-Cookie"], cookie]
- when nil
- header["Set-Cookie"] = cookie
- end
-
- nil
- end
- module_function :set_cookie_header!
-
- def delete_cookie_header!(header, key, value = {})
- unless Array === header["Set-Cookie"]
- header["Set-Cookie"] = [header["Set-Cookie"]].compact
- end
-
- header["Set-Cookie"].reject! { |cookie|
- cookie =~ /\A#{escape(key)}=/
- }
-
- set_cookie_header!(header, key,
- {:value => '', :path => nil, :domain => nil,
- :expires => Time.at(0) }.merge(value))
-
- nil
- end
- module_function :delete_cookie_header!
-
- # Return the bytesize of String; uses String#length under Ruby 1.8 and
- # String#bytesize under 1.9.
- if ''.respond_to?(:bytesize)
- def bytesize(string)
- string.bytesize
- end
- else
- def bytesize(string)
- string.size
- end
- end
- module_function :bytesize
-
- # Context allows the use of a compatible middleware at different points
- # in a request handling stack. A compatible middleware must define
- # #context which should take the arguments env and app. The first of which
- # would be the request environment. The second of which would be the rack
- # application that the request would be forwarded to.
- class Context
- attr_reader :for, :app
-
- def initialize(app_f, app_r)
- raise 'running context does not respond to #context' unless app_f.respond_to? :context
- @for, @app = app_f, app_r
- end
-
- def call(env)
- @for.context(env, @app)
- end
-
- def recontext(app)
- self.class.new(@for, app)
- end
-
- def context(env, app=@app)
- recontext(app).call(env)
- end
- end
-
- # A case-insensitive Hash that preserves the original case of a
- # header when set.
- class HeaderHash < Hash
- def self.new(hash={})
- HeaderHash === hash ? hash : super(hash)
- end
-
- def initialize(hash={})
- super()
- @names = {}
- hash.each { |k, v| self[k] = v }
- end
-
- def each
- super do |k, v|
- yield(k, v.respond_to?(:to_ary) ? v.to_ary.join("\n") : v)
- end
- end
-
- def to_hash
- inject({}) do |hash, (k,v)|
- if v.respond_to? :to_ary
- hash[k] = v.to_ary.join("\n")
- else
- hash[k] = v
- end
- hash
- end
- end
-
- def [](k)
- super(@names[k] ||= @names[k.downcase])
- end
-
- def []=(k, v)
- delete k
- @names[k] = @names[k.downcase] = k
- super k, v
- end
-
- def delete(k)
- canonical = k.downcase
- result = super @names.delete(canonical)
- @names.delete_if { |name,| name.downcase == canonical }
- result
- end
-
- def include?(k)
- @names.include?(k) || @names.include?(k.downcase)
- end
-
- alias_method :has_key?, :include?
- alias_method :member?, :include?
- alias_method :key?, :include?
-
- def merge!(other)
- other.each { |k, v| self[k] = v }
- self
- end
-
- def merge(other)
- hash = dup
- hash.merge! other
- end
-
- def replace(other)
- clear
- other.each { |k, v| self[k] = v }
- self
- end
- end
-
- # Every standard HTTP code mapped to the appropriate message.
- # Generated with:
- # curl -s http://www.iana.org/assignments/http-status-codes | \
- # ruby -ane 'm = /^(\d{3}) +(\S[^\[(]+)/.match($_) and
- # puts " #{m[1]} => \x27#{m[2].strip}x27,"'
- HTTP_STATUS_CODES = {
- 100 => 'Continue',
- 101 => 'Switching Protocols',
- 102 => 'Processing',
- 200 => 'OK',
- 201 => 'Created',
- 202 => 'Accepted',
- 203 => 'Non-Authoritative Information',
- 204 => 'No Content',
- 205 => 'Reset Content',
- 206 => 'Partial Content',
- 207 => 'Multi-Status',
- 226 => 'IM Used',
- 300 => 'Multiple Choices',
- 301 => 'Moved Permanently',
- 302 => 'Found',
- 303 => 'See Other',
- 304 => 'Not Modified',
- 305 => 'Use Proxy',
- 306 => 'Reserved',
- 307 => 'Temporary Redirect',
- 400 => 'Bad Request',
- 401 => 'Unauthorized',
- 402 => 'Payment Required',
- 403 => 'Forbidden',
- 404 => 'Not Found',
- 405 => 'Method Not Allowed',
- 406 => 'Not Acceptable',
- 407 => 'Proxy Authentication Required',
- 408 => 'Request Timeout',
- 409 => 'Conflict',
- 410 => 'Gone',
- 411 => 'Length Required',
- 412 => 'Precondition Failed',
- 413 => 'Request Entity Too Large',
- 414 => 'Request-URI Too Long',
- 415 => 'Unsupported Media Type',
- 416 => 'Requested Range Not Satisfiable',
- 417 => 'Expectation Failed',
- 422 => 'Unprocessable Entity',
- 423 => 'Locked',
- 424 => 'Failed Dependency',
- 426 => 'Upgrade Required',
- 500 => 'Internal Server Error',
- 501 => 'Not Implemented',
- 502 => 'Bad Gateway',
- 503 => 'Service Unavailable',
- 504 => 'Gateway Timeout',
- 505 => 'HTTP Version Not Supported',
- 506 => 'Variant Also Negotiates',
- 507 => 'Insufficient Storage',
- 510 => 'Not Extended',
- }
-
- # Responses with HTTP status codes that should not have an entity body
- STATUS_WITH_NO_ENTITY_BODY = Set.new((100..199).to_a << 204 << 304)
-
- SYMBOL_TO_STATUS_CODE = HTTP_STATUS_CODES.inject({}) { |hash, (code, message)|
- hash[message.downcase.gsub(/\s|-/, '_').to_sym] = code
- hash
- }
-
- def status_code(status)
- if status.is_a?(Symbol)
- SYMBOL_TO_STATUS_CODE[status] || 500
- else
- status.to_i
- end
- end
- module_function :status_code
-
- # A multipart form data parser, adapted from IOWA.
- #
- # Usually, Rack::Request#POST takes care of calling this.
-
- module Multipart
- class UploadedFile
- # The filename, *not* including the path, of the "uploaded" file
- attr_reader :original_filename
-
- # The content type of the "uploaded" file
- attr_accessor :content_type
-
- def initialize(path, content_type = "text/plain", binary = false)
- raise "#{path} file does not exist" unless ::File.exist?(path)
- @content_type = content_type
- @original_filename = ::File.basename(path)
- @tempfile = Tempfile.new(@original_filename)
- @tempfile.set_encoding(Encoding::BINARY) if @tempfile.respond_to?(:set_encoding)
- @tempfile.binmode if binary
- FileUtils.copy_file(path, @tempfile.path)
- end
-
- def path
- @tempfile.path
- end
- alias_method :local_path, :path
-
- def method_missing(method_name, *args, &block) #:nodoc:
- @tempfile.__send__(method_name, *args, &block)
- end
- end
-
- EOL = "\r\n"
- MULTIPART_BOUNDARY = "AaB03x"
-
- def self.parse_multipart(env)
- unless env['CONTENT_TYPE'] =~
- %r|\Amultipart/.*boundary=\"?([^\";,]+)\"?|n
- nil
- else
- boundary = "--#{$1}"
-
- params = {}
- buf = ""
- content_length = env['CONTENT_LENGTH'].to_i
- input = env['rack.input']
- input.rewind
-
- boundary_size = Utils.bytesize(boundary) + EOL.size
- bufsize = 16384
-
- content_length -= boundary_size
-
- read_buffer = ''
-
- status = input.read(boundary_size, read_buffer)
- raise EOFError, "bad content body" unless status == boundary + EOL
-
- rx = /(?:#{EOL})?#{Regexp.quote boundary}(#{EOL}|--)/n
-
- loop {
- head = nil
- body = ''
- filename = content_type = name = nil
-
- until head && buf =~ rx
- if !head && i = buf.index(EOL+EOL)
- head = buf.slice!(0, i+2) # First \r\n
- buf.slice!(0, 2) # Second \r\n
-
- filename = head[/Content-Disposition:.* filename=(?:"((?:\\.|[^\"])*)"|([^;\s]*))/ni, 1]
- content_type = head[/Content-Type: (.*)#{EOL}/ni, 1]
- name = head[/Content-Disposition:.*\s+name="?([^\";]*)"?/ni, 1] || head[/Content-ID:\s*([^#{EOL}]*)/ni, 1]
-
- if content_type || filename
- body = Tempfile.new("RackMultipart")
- body.binmode if body.respond_to?(:binmode)
- end
-
- next
- end
-
- # Save the read body part.
- if head && (boundary_size+4 < buf.size)
- body << buf.slice!(0, buf.size - (boundary_size+4))
- end
-
- c = input.read(bufsize < content_length ? bufsize : content_length, read_buffer)
- raise EOFError, "bad content body" if c.nil? || c.empty?
- buf << c
- content_length -= c.size
- end
-
- # Save the rest.
- if i = buf.index(rx)
- body << buf.slice!(0, i)
- buf.slice!(0, boundary_size+2)
-
- content_length = -1 if $1 == "--"
- end
-
- if filename == ""
- # filename is blank which means no file has been selected
- data = nil
- elsif filename
- body.rewind
-
- # Take the basename of the upload's original filename.
- # This handles the full Windows paths given by Internet Explorer
- # (and perhaps other broken user agents) without affecting
- # those which give the lone filename.
- filename =~ /^(?:.*[:\\\/])?(.*)/m
- filename = $1
-
- data = {:filename => filename, :type => content_type,
- :name => name, :tempfile => body, :head => head}
- elsif !filename && content_type
- body.rewind
-
- # Generic multipart cases, not coming from a form
- data = {:type => content_type,
- :name => name, :tempfile => body, :head => head}
- else
- data = body
- end
-
- Utils.normalize_params(params, name, data) unless data.nil?
-
- # break if we're at the end of a buffer, but not if it is the end of a field
- break if (buf.empty? && $1 != EOL) || content_length == -1
- }
-
- input.rewind
-
- params
- end
- end
-
- def self.build_multipart(params, first = true)
- if first
- unless params.is_a?(Hash)
- raise ArgumentError, "value must be a Hash"
- end
-
- multipart = false
- query = lambda { |value|
- case value
- when Array
- value.each(&query)
- when Hash
- value.values.each(&query)
- when UploadedFile
- multipart = true
- end
- }
- params.values.each(&query)
- return nil unless multipart
- end
-
- flattened_params = Hash.new
-
- params.each do |key, value|
- k = first ? key.to_s : "[#{key}]"
-
- case value
- when Array
- value.map { |v|
- build_multipart(v, false).each { |subkey, subvalue|
- flattened_params["#{k}[]#{subkey}"] = subvalue
- }
- }
- when Hash
- build_multipart(value, false).each { |subkey, subvalue|
- flattened_params[k + subkey] = subvalue
- }
- else
- flattened_params[k] = value
- end
- end
-
- if first
- flattened_params.map { |name, file|
- if file.respond_to?(:original_filename)
- ::File.open(file.path, "rb") do |f|
- f.set_encoding(Encoding::BINARY) if f.respond_to?(:set_encoding)
-<<-EOF
---#{MULTIPART_BOUNDARY}\r
-Content-Disposition: form-data; name="#{name}"; filename="#{Utils.escape(file.original_filename)}"\r
-Content-Type: #{file.content_type}\r
-Content-Length: #{::File.stat(file.path).size}\r
-\r
-#{f.read}\r
-EOF
- end
- else
-<<-EOF
---#{MULTIPART_BOUNDARY}\r
-Content-Disposition: form-data; name="#{name}"\r
-\r
-#{file}\r
-EOF
- end
- }.join + "--#{MULTIPART_BOUNDARY}--\r"
- else
- flattened_params
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/rack.gemspec b/vendor/gems/rack-1.1.0/rack.gemspec
deleted file mode 100644
index e28b9bb20..000000000
--- a/vendor/gems/rack-1.1.0/rack.gemspec
+++ /dev/null
@@ -1,38 +0,0 @@
-Gem::Specification.new do |s|
- s.name = "rack"
- s.version = "1.1.0"
- s.platform = Gem::Platform::RUBY
- s.summary = "a modular Ruby webserver interface"
-
- s.description = <<-EOF
-Rack provides minimal, modular and adaptable interface for developing
-web applications in Ruby. By wrapping HTTP requests and responses in
-the simplest way possible, it unifies and distills the API for web
-servers, web frameworks, and software in between (the so-called
-middleware) into a single method call.
-
-Also see http://rack.rubyforge.org.
-EOF
-
- s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*}'] +
- %w(COPYING KNOWN-ISSUES rack.gemspec RDOX README SPEC)
- s.bindir = 'bin'
- s.executables << 'rackup'
- s.require_path = 'lib'
- s.has_rdoc = true
- s.extra_rdoc_files = ['README', 'SPEC', 'KNOWN-ISSUES']
- s.test_files = Dir['test/{test,spec}_*.rb']
-
- s.author = 'Christian Neukirchen'
- s.email = 'chneukirchen@gmail.com'
- s.homepage = 'http://rack.rubyforge.org'
- s.rubyforge_project = 'rack'
-
- s.add_development_dependency 'test-spec'
-
- s.add_development_dependency 'camping'
- s.add_development_dependency 'fcgi'
- s.add_development_dependency 'memcache-client'
- s.add_development_dependency 'mongrel'
- s.add_development_dependency 'thin'
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_auth_basic.rb b/vendor/gems/rack-1.1.0/test/spec_rack_auth_basic.rb
deleted file mode 100644
index 0176efc8b..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_auth_basic.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-require 'test/spec'
-
-require 'rack/auth/basic'
-require 'rack/mock'
-
-context 'Rack::Auth::Basic' do
-
- def realm
- 'WallysWorld'
- end
-
- def unprotected_app
- lambda { |env| [ 200, {'Content-Type' => 'text/plain'}, ["Hi #{env['REMOTE_USER']}"] ] }
- end
-
- def protected_app
- app = Rack::Auth::Basic.new(unprotected_app) { |username, password| 'Boss' == username }
- app.realm = realm
- app
- end
-
- setup do
- @request = Rack::MockRequest.new(protected_app)
- end
-
- def request_with_basic_auth(username, password, &block)
- request 'HTTP_AUTHORIZATION' => 'Basic ' + ["#{username}:#{password}"].pack("m*"), &block
- end
-
- def request(headers = {})
- yield @request.get('/', headers)
- end
-
- def assert_basic_auth_challenge(response)
- response.should.be.a.client_error
- response.status.should.equal 401
- response.should.include 'WWW-Authenticate'
- response.headers['WWW-Authenticate'].should =~ /Basic realm="#{Regexp.escape(realm)}"/
- response.body.should.be.empty
- end
-
- specify 'should challenge correctly when no credentials are specified' do
- request do |response|
- assert_basic_auth_challenge response
- end
- end
-
- specify 'should rechallenge if incorrect credentials are specified' do
- request_with_basic_auth 'joe', 'password' do |response|
- assert_basic_auth_challenge response
- end
- end
-
- specify 'should return application output if correct credentials are specified' do
- request_with_basic_auth 'Boss', 'password' do |response|
- response.status.should.equal 200
- response.body.to_s.should.equal 'Hi Boss'
- end
- end
-
- specify 'should return 400 Bad Request if different auth scheme used' do
- request 'HTTP_AUTHORIZATION' => 'Digest params' do |response|
- response.should.be.a.client_error
- response.status.should.equal 400
- response.should.not.include 'WWW-Authenticate'
- end
- end
-
- specify 'realm as optional constructor arg' do
- app = Rack::Auth::Basic.new(unprotected_app, realm) { true }
- assert_equal realm, app.realm
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_auth_digest.rb b/vendor/gems/rack-1.1.0/test/spec_rack_auth_digest.rb
deleted file mode 100644
index a980acc80..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_auth_digest.rb
+++ /dev/null
@@ -1,226 +0,0 @@
-require 'test/spec'
-
-require 'rack/auth/digest/md5'
-require 'rack/mock'
-
-context 'Rack::Auth::Digest::MD5' do
-
- def realm
- 'WallysWorld'
- end
-
- def unprotected_app
- lambda do |env|
- [ 200, {'Content-Type' => 'text/plain'}, ["Hi #{env['REMOTE_USER']}"] ]
- end
- end
-
- def protected_app
- app = Rack::Auth::Digest::MD5.new(unprotected_app) do |username|
- { 'Alice' => 'correct-password' }[username]
- end
- app.realm = realm
- app.opaque = 'this-should-be-secret'
- app
- end
-
- def protected_app_with_hashed_passwords
- app = Rack::Auth::Digest::MD5.new(unprotected_app) do |username|
- username == 'Alice' ? Digest::MD5.hexdigest("Alice:#{realm}:correct-password") : nil
- end
- app.realm = realm
- app.opaque = 'this-should-be-secret'
- app.passwords_hashed = true
- app
- end
-
- def partially_protected_app
- Rack::URLMap.new({
- '/' => unprotected_app,
- '/protected' => protected_app
- })
- end
-
- def protected_app_with_method_override
- Rack::MethodOverride.new(protected_app)
- end
-
- setup do
- @request = Rack::MockRequest.new(protected_app)
- end
-
- def request(method, path, headers = {}, &block)
- response = @request.request(method, path, headers)
- block.call(response) if block
- return response
- end
-
- class MockDigestRequest
- def initialize(params)
- @params = params
- end
- def method_missing(sym)
- if @params.has_key? k = sym.to_s
- return @params[k]
- end
- super
- end
- def method
- @params['method']
- end
- def response(password)
- Rack::Auth::Digest::MD5.new(nil).send :digest, self, password
- end
- end
-
- def request_with_digest_auth(method, path, username, password, options = {}, &block)
- request_options = {}
- request_options[:input] = options.delete(:input) if options.include? :input
-
- response = request(method, path, request_options)
-
- return response unless response.status == 401
-
- if wait = options.delete(:wait)
- sleep wait
- end
-
- challenge = response['WWW-Authenticate'].split(' ', 2).last
-
- params = Rack::Auth::Digest::Params.parse(challenge)
-
- params['username'] = username
- params['nc'] = '00000001'
- params['cnonce'] = 'nonsensenonce'
- params['uri'] = path
-
- params['method'] = method
-
- params.update options
-
- params['response'] = MockDigestRequest.new(params).response(password)
-
- request(method, path, request_options.merge('HTTP_AUTHORIZATION' => "Digest #{params}"), &block)
- end
-
- def assert_digest_auth_challenge(response)
- response.should.be.a.client_error
- response.status.should.equal 401
- response.should.include 'WWW-Authenticate'
- response.headers['WWW-Authenticate'].should =~ /^Digest /
- response.body.should.be.empty
- end
-
- def assert_bad_request(response)
- response.should.be.a.client_error
- response.status.should.equal 400
- response.should.not.include 'WWW-Authenticate'
- end
-
- specify 'should challenge when no credentials are specified' do
- request 'GET', '/' do |response|
- assert_digest_auth_challenge response
- end
- end
-
- specify 'should return application output if correct credentials given' do
- request_with_digest_auth 'GET', '/', 'Alice', 'correct-password' do |response|
- response.status.should.equal 200
- response.body.to_s.should.equal 'Hi Alice'
- end
- end
-
- specify 'should return application output if correct credentials given (hashed passwords)' do
- @request = Rack::MockRequest.new(protected_app_with_hashed_passwords)
-
- request_with_digest_auth 'GET', '/', 'Alice', 'correct-password' do |response|
- response.status.should.equal 200
- response.body.to_s.should.equal 'Hi Alice'
- end
- end
-
- specify 'should rechallenge if incorrect username given' do
- request_with_digest_auth 'GET', '/', 'Bob', 'correct-password' do |response|
- assert_digest_auth_challenge response
- end
- end
-
- specify 'should rechallenge if incorrect password given' do
- request_with_digest_auth 'GET', '/', 'Alice', 'wrong-password' do |response|
- assert_digest_auth_challenge response
- end
- end
-
- specify 'should rechallenge with stale parameter if nonce is stale' do
- begin
- Rack::Auth::Digest::Nonce.time_limit = 1
-
- request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', :wait => 2 do |response|
- assert_digest_auth_challenge response
- response.headers['WWW-Authenticate'].should =~ /\bstale=true\b/
- end
- ensure
- Rack::Auth::Digest::Nonce.time_limit = nil
- end
- end
-
- specify 'should return 400 Bad Request if incorrect qop given' do
- request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', 'qop' => 'auth-int' do |response|
- assert_bad_request response
- end
- end
-
- specify 'should return 400 Bad Request if incorrect uri given' do
- request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', 'uri' => '/foo' do |response|
- assert_bad_request response
- end
- end
-
- specify 'should return 400 Bad Request if different auth scheme used' do
- request 'GET', '/', 'HTTP_AUTHORIZATION' => 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' do |response|
- assert_bad_request response
- end
- end
-
- specify 'should not require credentials for unprotected path' do
- @request = Rack::MockRequest.new(partially_protected_app)
- request 'GET', '/' do |response|
- response.should.be.ok
- end
- end
-
- specify 'should challenge when no credentials are specified for protected path' do
- @request = Rack::MockRequest.new(partially_protected_app)
- request 'GET', '/protected' do |response|
- assert_digest_auth_challenge response
- end
- end
-
- specify 'should return application output if correct credentials given for protected path' do
- @request = Rack::MockRequest.new(partially_protected_app)
- request_with_digest_auth 'GET', '/protected', 'Alice', 'correct-password' do |response|
- response.status.should.equal 200
- response.body.to_s.should.equal 'Hi Alice'
- end
- end
-
- specify 'should return application output if correct credentials given for POST' do
- request_with_digest_auth 'POST', '/', 'Alice', 'correct-password' do |response|
- response.status.should.equal 200
- response.body.to_s.should.equal 'Hi Alice'
- end
- end
-
- specify 'should return application output if correct credentials given for PUT (using method override of POST)' do
- @request = Rack::MockRequest.new(protected_app_with_method_override)
- request_with_digest_auth 'POST', '/', 'Alice', 'correct-password', :input => "_method=put" do |response|
- response.status.should.equal 200
- response.body.to_s.should.equal 'Hi Alice'
- end
- end
-
- specify 'realm as optional constructor arg' do
- app = Rack::Auth::Digest::MD5.new(unprotected_app, realm) { true }
- assert_equal realm, app.realm
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_builder.rb b/vendor/gems/rack-1.1.0/test/spec_rack_builder.rb
deleted file mode 100644
index 3fad9810e..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_builder.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-require 'test/spec'
-
-require 'rack/builder'
-require 'rack/mock'
-require 'rack/showexceptions'
-require 'rack/auth/basic'
-
-context "Rack::Builder" do
- specify "chains apps by default" do
- app = Rack::Builder.new do
- use Rack::ShowExceptions
- run lambda { |env| raise "bzzzt" }
- end.to_app
-
- Rack::MockRequest.new(app).get("/").should.be.server_error
- Rack::MockRequest.new(app).get("/").should.be.server_error
- Rack::MockRequest.new(app).get("/").should.be.server_error
- end
-
- specify "has implicit #to_app" do
- app = Rack::Builder.new do
- use Rack::ShowExceptions
- run lambda { |env| raise "bzzzt" }
- end
-
- Rack::MockRequest.new(app).get("/").should.be.server_error
- Rack::MockRequest.new(app).get("/").should.be.server_error
- Rack::MockRequest.new(app).get("/").should.be.server_error
- end
-
- specify "supports blocks on use" do
- app = Rack::Builder.new do
- use Rack::ShowExceptions
- use Rack::Auth::Basic do |username, password|
- 'secret' == password
- end
-
- run lambda { |env| [200, {}, ['Hi Boss']] }
- end
-
- response = Rack::MockRequest.new(app).get("/")
- response.should.be.client_error
- response.status.should.equal 401
-
- # with auth...
- response = Rack::MockRequest.new(app).get("/",
- 'HTTP_AUTHORIZATION' => 'Basic ' + ["joe:secret"].pack("m*"))
- response.status.should.equal 200
- response.body.to_s.should.equal 'Hi Boss'
- end
-
- specify "has explicit #to_app" do
- app = Rack::Builder.app do
- use Rack::ShowExceptions
- run lambda { |env| raise "bzzzt" }
- end
-
- Rack::MockRequest.new(app).get("/").should.be.server_error
- Rack::MockRequest.new(app).get("/").should.be.server_error
- Rack::MockRequest.new(app).get("/").should.be.server_error
- end
-
- specify "apps are initialized once" do
- app = Rack::Builder.new do
- class AppClass
- def initialize
- @called = 0
- end
- def call(env)
- raise "bzzzt" if @called > 0
- @called += 1
- [200, {'Content-Type' => 'text/plain'}, ['OK']]
- end
- end
-
- use Rack::ShowExceptions
- run AppClass.new
- end
-
- Rack::MockRequest.new(app).get("/").status.should.equal 200
- Rack::MockRequest.new(app).get("/").should.be.server_error
- end
-
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_camping.rb b/vendor/gems/rack-1.1.0/test/spec_rack_camping.rb
deleted file mode 100644
index bed117108..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_camping.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'test/spec'
-require 'stringio'
-require 'uri'
-
-begin
- require 'rack/mock'
-
- $-w, w = nil, $-w # yuck
- require 'camping'
- require 'rack/adapter/camping'
-
- Camping.goes :CampApp
- module CampApp
- module Controllers
- class HW < R('/')
- def get
- @headers["X-Served-By"] = URI("http://rack.rubyforge.org")
- "Camping works!"
- end
-
- def post
- "Data: #{input.foo}"
- end
- end
- end
- end
- $-w = w
-
- context "Rack::Adapter::Camping" do
- specify "works with GET" do
- res = Rack::MockRequest.new(Rack::Adapter::Camping.new(CampApp)).
- get("/")
-
- res.should.be.ok
- res["Content-Type"].should.equal "text/html"
- res["X-Served-By"].should.equal "http://rack.rubyforge.org"
-
- res.body.should.equal "Camping works!"
- end
-
- specify "works with POST" do
- res = Rack::MockRequest.new(Rack::Adapter::Camping.new(CampApp)).
- post("/", :input => "foo=bar")
-
- res.should.be.ok
- res.body.should.equal "Data: bar"
- end
- end
-rescue LoadError
- $stderr.puts "Skipping Rack::Adapter::Camping tests (Camping is required). `gem install camping` and try again."
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_cascade.rb b/vendor/gems/rack-1.1.0/test/spec_rack_cascade.rb
deleted file mode 100644
index cf3c29b48..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_cascade.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require 'test/spec'
-
-require 'rack/cascade'
-require 'rack/mock'
-
-require 'rack/urlmap'
-require 'rack/file'
-
-context "Rack::Cascade" do
- docroot = File.expand_path(File.dirname(__FILE__))
- app1 = Rack::File.new(docroot)
-
- app2 = Rack::URLMap.new("/crash" => lambda { |env| raise "boom" })
-
- app3 = Rack::URLMap.new("/foo" => lambda { |env|
- [200, { "Content-Type" => "text/plain"}, [""]]})
-
- specify "should dispatch onward on 404 by default" do
- cascade = Rack::Cascade.new([app1, app2, app3])
- Rack::MockRequest.new(cascade).get("/cgi/test").should.be.ok
- Rack::MockRequest.new(cascade).get("/foo").should.be.ok
- Rack::MockRequest.new(cascade).get("/toobad").should.be.not_found
- Rack::MockRequest.new(cascade).get("/cgi/../bla").should.be.forbidden
- end
-
- specify "should dispatch onward on whatever is passed" do
- cascade = Rack::Cascade.new([app1, app2, app3], [404, 403])
- Rack::MockRequest.new(cascade).get("/cgi/../bla").should.be.not_found
- end
-
- specify "should return 404 if empty" do
- Rack::MockRequest.new(Rack::Cascade.new([])).get('/').should.be.not_found
- end
-
- specify "should append new app" do
- cascade = Rack::Cascade.new([], [404, 403])
- Rack::MockRequest.new(cascade).get('/').should.be.not_found
- cascade << app2
- Rack::MockRequest.new(cascade).get('/cgi/test').should.be.not_found
- Rack::MockRequest.new(cascade).get('/cgi/../bla').should.be.not_found
- cascade << app1
- Rack::MockRequest.new(cascade).get('/cgi/test').should.be.ok
- Rack::MockRequest.new(cascade).get('/cgi/../bla').should.be.forbidden
- Rack::MockRequest.new(cascade).get('/foo').should.be.not_found
- cascade << app3
- Rack::MockRequest.new(cascade).get('/foo').should.be.ok
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_cgi.rb b/vendor/gems/rack-1.1.0/test/spec_rack_cgi.rb
deleted file mode 100644
index 59500cd7b..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_cgi.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-require 'test/spec'
-require 'testrequest'
-
-context "Rack::Handler::CGI" do
- include TestRequest::Helpers
-
- setup do
- @host = '0.0.0.0'
- @port = 9203
- end
-
- # Keep this first.
- specify "startup" do
- $pid = fork {
- Dir.chdir(File.join(File.dirname(__FILE__), "..", "test", "cgi"))
- exec "lighttpd -D -f lighttpd.conf"
- }
- end
-
- specify "should respond" do
- sleep 1
- lambda {
- GET("/test")
- }.should.not.raise
- end
-
- specify "should be a lighttpd" do
- GET("/test")
- status.should.be 200
- response["SERVER_SOFTWARE"].should =~ /lighttpd/
- response["HTTP_VERSION"].should.equal "HTTP/1.1"
- response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
- response["SERVER_PORT"].should.equal @port.to_s
- response["SERVER_NAME"].should =~ @host
- end
-
- specify "should have rack headers" do
- GET("/test")
- response["rack.version"].should.equal [1,1]
- response["rack.multithread"].should.be false
- response["rack.multiprocess"].should.be true
- response["rack.run_once"].should.be true
- end
-
- specify "should have CGI headers on GET" do
- GET("/test")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/"
- response["PATH_INFO"].should.equal ""
- response["QUERY_STRING"].should.equal ""
- response["test.postdata"].should.equal ""
-
- GET("/test/foo?quux=1")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/"
- response["PATH_INFO"].should.equal "/foo"
- response["QUERY_STRING"].should.equal "quux=1"
- end
-
- specify "should have CGI headers on POST" do
- POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
- status.should.equal 200
- response["REQUEST_METHOD"].should.equal "POST"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/"
- response["QUERY_STRING"].should.equal ""
- response["HTTP_X_TEST_HEADER"].should.equal "42"
- response["test.postdata"].should.equal "rack-form-data=23"
- end
-
- specify "should support HTTP auth" do
- GET("/test", {:user => "ruth", :passwd => "secret"})
- response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
- end
-
- specify "should set status" do
- GET("/test?secret")
- status.should.equal 403
- response["rack.url_scheme"].should.equal "http"
- end
-
- # Keep this last.
- specify "shutdown" do
- Process.kill 15, $pid
- Process.wait($pid).should.equal $pid
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_chunked.rb b/vendor/gems/rack-1.1.0/test/spec_rack_chunked.rb
deleted file mode 100644
index 39eea4824..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_chunked.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'rack/mock'
-require 'rack/chunked'
-require 'rack/utils'
-
-context "Rack::Chunked" do
-
- before do
- @env = Rack::MockRequest.
- env_for('/', 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => 'GET')
- end
-
- specify 'chunks responses with no Content-Length' do
- app = lambda { |env| [200, {}, ['Hello', ' ', 'World!']] }
- response = Rack::MockResponse.new(*Rack::Chunked.new(app).call(@env))
- response.headers.should.not.include 'Content-Length'
- response.headers['Transfer-Encoding'].should.equal 'chunked'
- response.body.should.equal "5\r\nHello\r\n1\r\n \r\n6\r\nWorld!\r\n0\r\n\r\n"
- end
-
- specify 'chunks empty bodies properly' do
- app = lambda { |env| [200, {}, []] }
- response = Rack::MockResponse.new(*Rack::Chunked.new(app).call(@env))
- response.headers.should.not.include 'Content-Length'
- response.headers['Transfer-Encoding'].should.equal 'chunked'
- response.body.should.equal "0\r\n\r\n"
- end
-
- specify 'does not modify response when Content-Length header present' do
- app = lambda { |env| [200, {'Content-Length'=>'12'}, ['Hello', ' ', 'World!']] }
- status, headers, body = Rack::Chunked.new(app).call(@env)
- status.should.equal 200
- headers.should.not.include 'Transfer-Encoding'
- headers.should.include 'Content-Length'
- body.join.should.equal 'Hello World!'
- end
-
- specify 'does not modify response when client is HTTP/1.0' do
- app = lambda { |env| [200, {}, ['Hello', ' ', 'World!']] }
- @env['HTTP_VERSION'] = 'HTTP/1.0'
- status, headers, body = Rack::Chunked.new(app).call(@env)
- status.should.equal 200
- headers.should.not.include 'Transfer-Encoding'
- body.join.should.equal 'Hello World!'
- end
-
- specify 'does not modify response when Transfer-Encoding header already present' do
- app = lambda { |env| [200, {'Transfer-Encoding' => 'identity'}, ['Hello', ' ', 'World!']] }
- status, headers, body = Rack::Chunked.new(app).call(@env)
- status.should.equal 200
- headers['Transfer-Encoding'].should.equal 'identity'
- body.join.should.equal 'Hello World!'
- end
-
- [100, 204, 304].each do |status_code|
- specify "does not modify response when status code is #{status_code}" do
- app = lambda { |env| [status_code, {}, []] }
- status, headers, body = Rack::Chunked.new(app).call(@env)
- status.should.equal status_code
- headers.should.not.include 'Transfer-Encoding'
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_commonlogger.rb b/vendor/gems/rack-1.1.0/test/spec_rack_commonlogger.rb
deleted file mode 100644
index 46a72e86b..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_commonlogger.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'test/spec'
-require 'stringio'
-
-require 'rack/commonlogger'
-require 'rack/lobster'
-require 'rack/mock'
-
-context "Rack::CommonLogger" do
- app = lambda { |env|
- [200,
- {"Content-Type" => "text/html", "Content-Length" => length.to_s},
- [obj]]}
- app_without_length = lambda { |env|
- [200,
- {"Content-Type" => "text/html"},
- []]}
- app_with_zero_length = lambda { |env|
- [200,
- {"Content-Type" => "text/html", "Content-Length" => "0"},
- []]}
-
- specify "should log to rack.errors by default" do
- res = Rack::MockRequest.new(Rack::CommonLogger.new(app)).get("/")
-
- res.errors.should.not.be.empty
- res.errors.should =~ /"GET \/ " 200 #{length} /
- end
-
- specify "should log to anything with +write+" do
- log = StringIO.new
- res = Rack::MockRequest.new(Rack::CommonLogger.new(app, log)).get("/")
-
- log.string.should =~ /"GET \/ " 200 #{length} /
- end
-
- specify "should log - content length if header is missing" do
- res = Rack::MockRequest.new(Rack::CommonLogger.new(app_without_length)).get("/")
-
- res.errors.should.not.be.empty
- res.errors.should =~ /"GET \/ " 200 - /
- end
-
- specify "should log - content length if header is zero" do
- res = Rack::MockRequest.new(Rack::CommonLogger.new(app_with_zero_length)).get("/")
-
- res.errors.should.not.be.empty
- res.errors.should =~ /"GET \/ " 200 - /
- end
-
- def length
- self.class.length
- end
-
- def self.length
- 123
- end
-
- def self.obj
- "hello world"
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_conditionalget.rb b/vendor/gems/rack-1.1.0/test/spec_rack_conditionalget.rb
deleted file mode 100644
index ca34cc922..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_conditionalget.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require 'test/spec'
-require 'time'
-
-require 'rack/mock'
-require 'rack/conditionalget'
-
-context "Rack::ConditionalGet" do
- specify "should set a 304 status and truncate body when If-Modified-Since hits" do
- timestamp = Time.now.httpdate
- app = Rack::ConditionalGet.new(lambda { |env|
- [200, {'Last-Modified'=>timestamp}, ['TEST']] })
-
- response = Rack::MockRequest.new(app).
- get("/", 'HTTP_IF_MODIFIED_SINCE' => timestamp)
-
- response.status.should.equal 304
- response.body.should.be.empty
- end
-
- specify "should set a 304 status and truncate body when If-None-Match hits" do
- app = Rack::ConditionalGet.new(lambda { |env|
- [200, {'Etag'=>'1234'}, ['TEST']] })
-
- response = Rack::MockRequest.new(app).
- get("/", 'HTTP_IF_NONE_MATCH' => '1234')
-
- response.status.should.equal 304
- response.body.should.be.empty
- end
-
- specify "should not affect non-GET/HEAD requests" do
- app = Rack::ConditionalGet.new(lambda { |env|
- [200, {'Etag'=>'1234'}, ['TEST']] })
-
- response = Rack::MockRequest.new(app).
- post("/", 'HTTP_IF_NONE_MATCH' => '1234')
-
- response.status.should.equal 200
- response.body.should.equal 'TEST'
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_config.rb b/vendor/gems/rack-1.1.0/test/spec_rack_config.rb
deleted file mode 100644
index a508ea4be..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_config.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'test/spec'
-require 'rack/mock'
-require 'rack/builder'
-require 'rack/content_length'
-require 'rack/config'
-
-context "Rack::Config" do
-
- specify "should accept a block that modifies the environment" do
- app = Rack::Builder.new do
- use Rack::Lint
- use Rack::ContentLength
- use Rack::Config do |env|
- env['greeting'] = 'hello'
- end
- run lambda { |env|
- [200, {'Content-Type' => 'text/plain'}, [env['greeting'] || '']]
- }
- end
- response = Rack::MockRequest.new(app).get('/')
- response.body.should.equal('hello')
- end
-
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_content_length.rb b/vendor/gems/rack-1.1.0/test/spec_rack_content_length.rb
deleted file mode 100644
index 7db9345f8..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_content_length.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'rack/mock'
-require 'rack/content_length'
-
-context "Rack::ContentLength" do
- specify "sets Content-Length on String bodies if none is set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
- response = Rack::ContentLength.new(app).call({})
- response[1]['Content-Length'].should.equal '13'
- end
-
- specify "sets Content-Length on Array bodies if none is set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] }
- response = Rack::ContentLength.new(app).call({})
- response[1]['Content-Length'].should.equal '13'
- end
-
- specify "does not set Content-Length on variable length bodies" do
- body = lambda { "Hello World!" }
- def body.each ; yield call ; end
-
- app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, body] }
- response = Rack::ContentLength.new(app).call({})
- response[1]['Content-Length'].should.be.nil
- end
-
- specify "does not change Content-Length if it is already set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain', 'Content-Length' => '1'}, "Hello, World!"] }
- response = Rack::ContentLength.new(app).call({})
- response[1]['Content-Length'].should.equal '1'
- end
-
- specify "does not set Content-Length on 304 responses" do
- app = lambda { |env| [304, {'Content-Type' => 'text/plain'}, []] }
- response = Rack::ContentLength.new(app).call({})
- response[1]['Content-Length'].should.equal nil
- end
-
- specify "does not set Content-Length when Transfer-Encoding is chunked" do
- app = lambda { |env| [200, {'Transfer-Encoding' => 'chunked'}, []] }
- response = Rack::ContentLength.new(app).call({})
- response[1]['Content-Length'].should.equal nil
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_content_type.rb b/vendor/gems/rack-1.1.0/test/spec_rack_content_type.rb
deleted file mode 100644
index 9975b94d6..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_content_type.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'rack/mock'
-require 'rack/content_type'
-
-context "Rack::ContentType" do
- specify "sets Content-Type to default text/html if none is set" do
- app = lambda { |env| [200, {}, "Hello, World!"] }
- status, headers, body = Rack::ContentType.new(app).call({})
- headers['Content-Type'].should.equal 'text/html'
- end
-
- specify "sets Content-Type to chosen default if none is set" do
- app = lambda { |env| [200, {}, "Hello, World!"] }
- status, headers, body =
- Rack::ContentType.new(app, 'application/octet-stream').call({})
- headers['Content-Type'].should.equal 'application/octet-stream'
- end
-
- specify "does not change Content-Type if it is already set" do
- app = lambda { |env| [200, {'Content-Type' => 'foo/bar'}, "Hello, World!"] }
- status, headers, body = Rack::ContentType.new(app).call({})
- headers['Content-Type'].should.equal 'foo/bar'
- end
-
- specify "case insensitive detection of Content-Type" do
- app = lambda { |env| [200, {'CONTENT-Type' => 'foo/bar'}, "Hello, World!"] }
- status, headers, body = Rack::ContentType.new(app).call({})
- headers.to_a.select { |k,v| k.downcase == "content-type" }.
- should.equal [["CONTENT-Type","foo/bar"]]
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_deflater.rb b/vendor/gems/rack-1.1.0/test/spec_rack_deflater.rb
deleted file mode 100644
index c9bb31894..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_deflater.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-require 'test/spec'
-
-require 'rack/mock'
-require 'rack/deflater'
-require 'stringio'
-require 'time' # for Time#httpdate
-
-context "Rack::Deflater" do
- def build_response(status, body, accept_encoding, headers = {})
- body = [body] if body.respond_to? :to_str
- app = lambda { |env| [status, {}, body] }
- request = Rack::MockRequest.env_for("", headers.merge("HTTP_ACCEPT_ENCODING" => accept_encoding))
- response = Rack::Deflater.new(app).call(request)
-
- return response
- end
-
- specify "should be able to deflate bodies that respond to each" do
- body = Object.new
- class << body; def each; yield("foo"); yield("bar"); end; end
-
- response = build_response(200, body, "deflate")
-
- response[0].should.equal(200)
- response[1].should.equal({
- "Content-Encoding" => "deflate",
- "Vary" => "Accept-Encoding"
- })
- buf = ''
- response[2].each { |part| buf << part }
- buf.should.equal("K\313\317OJ,\002\000")
- end
-
- # TODO: This is really just a special case of the above...
- specify "should be able to deflate String bodies" do
- response = build_response(200, "Hello world!", "deflate")
-
- response[0].should.equal(200)
- response[1].should.equal({
- "Content-Encoding" => "deflate",
- "Vary" => "Accept-Encoding"
- })
- buf = ''
- response[2].each { |part| buf << part }
- buf.should.equal("\363H\315\311\311W(\317/\312IQ\004\000")
- end
-
- specify "should be able to gzip bodies that respond to each" do
- body = Object.new
- class << body; def each; yield("foo"); yield("bar"); end; end
-
- response = build_response(200, body, "gzip")
-
- response[0].should.equal(200)
- response[1].should.equal({
- "Content-Encoding" => "gzip",
- "Vary" => "Accept-Encoding",
- })
-
- buf = ''
- response[2].each { |part| buf << part }
- io = StringIO.new(buf)
- gz = Zlib::GzipReader.new(io)
- gz.read.should.equal("foobar")
- gz.close
- end
-
- specify "should be able to fallback to no deflation" do
- response = build_response(200, "Hello world!", "superzip")
-
- response[0].should.equal(200)
- response[1].should.equal({ "Vary" => "Accept-Encoding" })
- response[2].should.equal(["Hello world!"])
- end
-
- specify "should be able to skip when there is no response entity body" do
- response = build_response(304, [], "gzip")
-
- response[0].should.equal(304)
- response[1].should.equal({})
- response[2].should.equal([])
- end
-
- specify "should handle the lack of an acceptable encoding" do
- response1 = build_response(200, "Hello world!", "identity;q=0", "PATH_INFO" => "/")
- response1[0].should.equal(406)
- response1[1].should.equal({"Content-Type" => "text/plain", "Content-Length" => "71"})
- response1[2].should.equal(["An acceptable encoding for the requested resource / could not be found."])
-
- response2 = build_response(200, "Hello world!", "identity;q=0", "SCRIPT_NAME" => "/foo", "PATH_INFO" => "/bar")
- response2[0].should.equal(406)
- response2[1].should.equal({"Content-Type" => "text/plain", "Content-Length" => "78"})
- response2[2].should.equal(["An acceptable encoding for the requested resource /foo/bar could not be found."])
- end
-
- specify "should handle gzip response with Last-Modified header" do
- last_modified = Time.now.httpdate
-
- app = lambda { |env| [200, { "Last-Modified" => last_modified }, ["Hello World!"]] }
- request = Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => "gzip")
- response = Rack::Deflater.new(app).call(request)
-
- response[0].should.equal(200)
- response[1].should.equal({
- "Content-Encoding" => "gzip",
- "Vary" => "Accept-Encoding",
- "Last-Modified" => last_modified
- })
-
- buf = ''
- response[2].each { |part| buf << part }
- io = StringIO.new(buf)
- gz = Zlib::GzipReader.new(io)
- gz.read.should.equal("Hello World!")
- gz.close
- end
-
- specify "should do nothing when no-transform Cache-Control directive present" do
- app = lambda { |env| [200, {'Cache-Control' => 'no-transform'}, ['Hello World!']] }
- request = Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => "gzip")
- response = Rack::Deflater.new(app).call(request)
-
- response[0].should.equal(200)
- response[1].should.not.include "Content-Encoding"
- response[2].join.should.equal("Hello World!")
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_directory.rb b/vendor/gems/rack-1.1.0/test/spec_rack_directory.rb
deleted file mode 100644
index d255c91da..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_directory.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'test/spec'
-
-require 'rack/directory'
-require 'rack/lint'
-
-require 'rack/mock'
-
-context "Rack::Directory" do
- DOCROOT = File.expand_path(File.dirname(__FILE__)) unless defined? DOCROOT
- FILE_CATCH = proc{|env| [200, {'Content-Type'=>'text/plain', "Content-Length" => "7"}, ['passed!']] }
- app = Rack::Directory.new DOCROOT, FILE_CATCH
-
- specify "serves directory indices" do
- res = Rack::MockRequest.new(Rack::Lint.new(app)).
- get("/cgi/")
-
- res.should.be.ok
- res.should =~ /<html><head>/
- end
-
- specify "passes to app if file found" do
- res = Rack::MockRequest.new(Rack::Lint.new(app)).
- get("/cgi/test")
-
- res.should.be.ok
- res.should =~ /passed!/
- end
-
- specify "serves uri with URL encoded filenames" do
- res = Rack::MockRequest.new(Rack::Lint.new(app)).
- get("/%63%67%69/") # "/cgi/test"
-
- res.should.be.ok
- res.should =~ /<html><head>/
-
- res = Rack::MockRequest.new(Rack::Lint.new(app)).
- get("/cgi/%74%65%73%74") # "/cgi/test"
-
- res.should.be.ok
- res.should =~ /passed!/
- end
-
- specify "does not allow directory traversal" do
- res = Rack::MockRequest.new(Rack::Lint.new(app)).
- get("/cgi/../test")
-
- res.should.be.forbidden
-
- res = Rack::MockRequest.new(Rack::Lint.new(app)).
- get("/cgi/%2E%2E/test")
-
- res.should.be.forbidden
- end
-
- specify "404s if it can't find the file" do
- res = Rack::MockRequest.new(Rack::Lint.new(app)).
- get("/cgi/blubb")
-
- res.should.be.not_found
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_etag.rb b/vendor/gems/rack-1.1.0/test/spec_rack_etag.rb
deleted file mode 100644
index 73cd31ac0..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_etag.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'test/spec'
-require 'rack/mock'
-require 'rack/etag'
-
-context "Rack::ETag" do
- specify "sets ETag if none is set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] }
- response = Rack::ETag.new(app).call({})
- response[1]['ETag'].should.equal "\"65a8e27d8879283831b664bd8b7f0ad4\""
- end
-
- specify "does not change ETag if it is already set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain', 'ETag' => '"abc"'}, ["Hello, World!"]] }
- response = Rack::ETag.new(app).call({})
- response[1]['ETag'].should.equal "\"abc\""
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_fastcgi.rb b/vendor/gems/rack-1.1.0/test/spec_rack_fastcgi.rb
deleted file mode 100644
index 1ae55ace6..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_fastcgi.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-require 'test/spec'
-require 'testrequest'
-
-context "Rack::Handler::FastCGI" do
- include TestRequest::Helpers
-
- setup do
- @host = '0.0.0.0'
- @port = 9203
- end
-
- # Keep this first.
- specify "startup" do
- $pid = fork {
- Dir.chdir(File.join(File.dirname(__FILE__), "..", "test", "cgi"))
- exec "lighttpd -D -f lighttpd.conf"
- }
- end
-
- specify "should respond" do
- sleep 1
- lambda {
- GET("/test.fcgi")
- }.should.not.raise
- end
-
- specify "should be a lighttpd" do
- GET("/test.fcgi")
- status.should.be 200
- response["SERVER_SOFTWARE"].should =~ /lighttpd/
- response["HTTP_VERSION"].should.equal "HTTP/1.1"
- response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
- response["SERVER_PORT"].should.equal @port.to_s
- response["SERVER_NAME"].should =~ @host
- end
-
- specify "should have rack headers" do
- GET("/test.fcgi")
- response["rack.version"].should.equal [1,1]
- response["rack.multithread"].should.be false
- response["rack.multiprocess"].should.be true
- response["rack.run_once"].should.be false
- end
-
- specify "should have CGI headers on GET" do
- GET("/test.fcgi")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test.fcgi"
- response["REQUEST_PATH"].should.equal "/"
- response["PATH_INFO"].should.equal ""
- response["QUERY_STRING"].should.equal ""
- response["test.postdata"].should.equal ""
-
- GET("/test.fcgi/foo?quux=1")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test.fcgi"
- response["REQUEST_PATH"].should.equal "/"
- response["PATH_INFO"].should.equal "/foo"
- response["QUERY_STRING"].should.equal "quux=1"
- end
-
- specify "should have CGI headers on POST" do
- POST("/test.fcgi", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
- status.should.equal 200
- response["REQUEST_METHOD"].should.equal "POST"
- response["SCRIPT_NAME"].should.equal "/test.fcgi"
- response["REQUEST_PATH"].should.equal "/"
- response["QUERY_STRING"].should.equal ""
- response["HTTP_X_TEST_HEADER"].should.equal "42"
- response["test.postdata"].should.equal "rack-form-data=23"
- end
-
- specify "should support HTTP auth" do
- GET("/test.fcgi", {:user => "ruth", :passwd => "secret"})
- response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
- end
-
- specify "should set status" do
- GET("/test.fcgi?secret")
- status.should.equal 403
- response["rack.url_scheme"].should.equal "http"
- end
-
- # Keep this last.
- specify "shutdown" do
- Process.kill 15, $pid
- Process.wait($pid).should.equal $pid
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_file.rb b/vendor/gems/rack-1.1.0/test/spec_rack_file.rb
deleted file mode 100644
index 0a2f8ee81..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_file.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-require 'test/spec'
-
-require 'rack/file'
-require 'rack/lint'
-
-require 'rack/mock'
-
-context "Rack::File" do
- DOCROOT = File.expand_path(File.dirname(__FILE__)) unless defined? DOCROOT
-
- specify "serves files" do
- res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
- get("/cgi/test")
-
- res.should.be.ok
- res.should =~ /ruby/
- end
-
- specify "sets Last-Modified header" do
- res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
- get("/cgi/test")
-
- path = File.join(DOCROOT, "/cgi/test")
-
- res.should.be.ok
- res["Last-Modified"].should.equal File.mtime(path).httpdate
- end
-
- specify "serves files with URL encoded filenames" do
- res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
- get("/cgi/%74%65%73%74") # "/cgi/test"
-
- res.should.be.ok
- res.should =~ /ruby/
- end
-
- specify "does not allow directory traversal" do
- res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
- get("/cgi/../test")
-
- res.should.be.forbidden
- end
-
- specify "does not allow directory traversal with encoded periods" do
- res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
- get("/%2E%2E/README")
-
- res.should.be.forbidden
- end
-
- specify "404s if it can't find the file" do
- res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
- get("/cgi/blubb")
-
- res.should.be.not_found
- end
-
- specify "detects SystemCallErrors" do
- res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))).
- get("/cgi")
-
- res.should.be.not_found
- end
-
- specify "returns bodies that respond to #to_path" do
- env = Rack::MockRequest.env_for("/cgi/test")
- status, headers, body = Rack::File.new(DOCROOT).call(env)
-
- path = File.join(DOCROOT, "/cgi/test")
-
- status.should.equal 200
- body.should.respond_to :to_path
- body.to_path.should.equal path
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_handler.rb b/vendor/gems/rack-1.1.0/test/spec_rack_handler.rb
deleted file mode 100644
index fcf19b780..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_handler.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'test/spec'
-
-require 'rack/handler'
-
-class Rack::Handler::Lobster; end
-class RockLobster; end
-
-context "Rack::Handler" do
- specify "has registered default handlers" do
- Rack::Handler.get('cgi').should.equal Rack::Handler::CGI
- Rack::Handler.get('fastcgi').should.equal Rack::Handler::FastCGI
- Rack::Handler.get('mongrel').should.equal Rack::Handler::Mongrel
- Rack::Handler.get('webrick').should.equal Rack::Handler::WEBrick
- end
-
- specify "handler that doesn't exist should raise a NameError" do
- lambda {
- Rack::Handler.get('boom')
- }.should.raise(NameError)
- end
-
- specify "should get unregistered, but already required, handler by name" do
- Rack::Handler.get('Lobster').should.equal Rack::Handler::Lobster
- end
-
- specify "should register custom handler" do
- Rack::Handler.register('rock_lobster', 'RockLobster')
- Rack::Handler.get('rock_lobster').should.equal RockLobster
- end
-
- specify "should not need registration for properly coded handlers even if not already required" do
- begin
- $:.push "test/unregistered_handler"
- Rack::Handler.get('Unregistered').should.equal Rack::Handler::Unregistered
- lambda {
- Rack::Handler.get('UnRegistered')
- }.should.raise(NameError)
- Rack::Handler.get('UnregisteredLongOne').should.equal Rack::Handler::UnregisteredLongOne
- ensure
- $:.delete "test/unregistered_handler"
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_head.rb b/vendor/gems/rack-1.1.0/test/spec_rack_head.rb
deleted file mode 100644
index 48d3f81ff..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_head.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'rack/head'
-require 'rack/mock'
-
-context "Rack::Head" do
- def test_response(headers = {})
- app = lambda { |env| [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]] }
- request = Rack::MockRequest.env_for("/", headers)
- response = Rack::Head.new(app).call(request)
-
- return response
- end
-
- specify "passes GET, POST, PUT, DELETE, OPTIONS, TRACE requests" do
- %w[GET POST PUT DELETE OPTIONS TRACE].each do |type|
- resp = test_response("REQUEST_METHOD" => type)
-
- resp[0].should.equal(200)
- resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"})
- resp[2].should.equal(["foo"])
- end
- end
-
- specify "removes body from HEAD requests" do
- resp = test_response("REQUEST_METHOD" => "HEAD")
-
- resp[0].should.equal(200)
- resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"})
- resp[2].should.equal([])
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_lint.rb b/vendor/gems/rack-1.1.0/test/spec_rack_lint.rb
deleted file mode 100644
index bbf75c17a..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_lint.rb
+++ /dev/null
@@ -1,528 +0,0 @@
-require 'test/spec'
-require 'stringio'
-
-require 'rack/lint'
-require 'rack/mock'
-
-context "Rack::Lint" do
- def env(*args)
- Rack::MockRequest.env_for("/", *args)
- end
-
- specify "passes valid request" do
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]]
- }).call(env({}))
- }.should.not.raise
- end
-
- specify "notices fatal errors" do
- lambda { Rack::Lint.new(nil).call }.should.raise(Rack::Lint::LintError).
- message.should.match(/No env given/)
- end
-
- specify "notices environment errors" do
- lambda { Rack::Lint.new(nil).call 5 }.should.raise(Rack::Lint::LintError).
- message.should.match(/not a Hash/)
-
- lambda {
- e = env
- e.delete("REQUEST_METHOD")
- Rack::Lint.new(nil).call(e)
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/missing required key REQUEST_METHOD/)
-
- lambda {
- e = env
- e.delete("SERVER_NAME")
- Rack::Lint.new(nil).call(e)
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/missing required key SERVER_NAME/)
-
-
- lambda {
- Rack::Lint.new(nil).call(env("HTTP_CONTENT_TYPE" => "text/plain"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/contains HTTP_CONTENT_TYPE/)
-
- lambda {
- Rack::Lint.new(nil).call(env("HTTP_CONTENT_LENGTH" => "42"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/contains HTTP_CONTENT_LENGTH/)
-
- lambda {
- Rack::Lint.new(nil).call(env("FOO" => Object.new))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/non-string value/)
-
- lambda {
- Rack::Lint.new(nil).call(env("rack.version" => "0.2"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/must be an Array/)
-
- lambda {
- Rack::Lint.new(nil).call(env("rack.url_scheme" => "gopher"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/url_scheme unknown/)
-
- lambda {
- Rack::Lint.new(nil).call(env("rack.session" => []))
- }.should.raise(Rack::Lint::LintError).
- message.should.equal("session [] must respond to store and []=")
-
- lambda {
- Rack::Lint.new(nil).call(env("rack.logger" => []))
- }.should.raise(Rack::Lint::LintError).
- message.should.equal("logger [] must respond to info")
-
- lambda {
- Rack::Lint.new(nil).call(env("REQUEST_METHOD" => "FUCKUP?"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/REQUEST_METHOD/)
-
- lambda {
- Rack::Lint.new(nil).call(env("SCRIPT_NAME" => "howdy"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/must start with/)
-
- lambda {
- Rack::Lint.new(nil).call(env("PATH_INFO" => "../foo"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/must start with/)
-
- lambda {
- Rack::Lint.new(nil).call(env("CONTENT_LENGTH" => "xcii"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/Invalid CONTENT_LENGTH/)
-
- lambda {
- e = env
- e.delete("PATH_INFO")
- e.delete("SCRIPT_NAME")
- Rack::Lint.new(nil).call(e)
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/One of .* must be set/)
-
- lambda {
- Rack::Lint.new(nil).call(env("SCRIPT_NAME" => "/"))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/cannot be .* make it ''/)
- end
-
- specify "notices input errors" do
- lambda {
- Rack::Lint.new(nil).call(env("rack.input" => ""))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/does not respond to #gets/)
-
- lambda {
- input = Object.new
- def input.binmode?
- false
- end
- Rack::Lint.new(nil).call(env("rack.input" => input))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/is not opened in binary mode/)
-
- lambda {
- input = Object.new
- def input.external_encoding
- result = Object.new
- def result.name
- "US-ASCII"
- end
- result
- end
- Rack::Lint.new(nil).call(env("rack.input" => input))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/does not have ASCII-8BIT as its external encoding/)
- end
-
- specify "notices error errors" do
- lambda {
- Rack::Lint.new(nil).call(env("rack.errors" => ""))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/does not respond to #puts/)
- end
-
- specify "notices status errors" do
- lambda {
- Rack::Lint.new(lambda { |env|
- ["cc", {}, ""]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/must be >=100 seen as integer/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [42, {}, ""]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/must be >=100 seen as integer/)
- end
-
- specify "notices header errors" do
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, Object.new, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.equal("headers object should respond to #each, but doesn't (got Object as headers)")
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {true=>false}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.equal("header key must be a string, was TrueClass")
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Status" => "404"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/must not contain Status/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Content-Type:" => "text/plain"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/must not contain :/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Content-" => "text/plain"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/must not end/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"..%%quark%%.." => "text/plain"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.equal("invalid header name: ..%%quark%%..")
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Foo" => Object.new}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.equal("a header value must be a String, but the value of 'Foo' is a Object")
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Foo" => [1, 2, 3]}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.equal("a header value must be a String, but the value of 'Foo' is a Array")
-
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Foo-Bar" => "text\000plain"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/invalid header/)
-
- # line ends (010) should be allowed in header values.
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Foo-Bar" => "one\ntwo\nthree", "Content-Length" => "0", "Content-Type" => "text/plain" }, []]
- }).call(env({}))
- }.should.not.raise(Rack::Lint::LintError)
- end
-
- specify "notices content-type errors" do
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/No Content-Type/)
-
- [100, 101, 204, 304].each do |status|
- lambda {
- Rack::Lint.new(lambda { |env|
- [status, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/Content-Type header found/)
- end
- end
-
- specify "notices content-length errors" do
- [100, 101, 204, 304].each do |status|
- lambda {
- Rack::Lint.new(lambda { |env|
- [status, {"Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/Content-Length header found/)
- end
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Content-type" => "text/plain", "Content-Length" => "1"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/Content-Length header was 1, but should be 0/)
- end
-
- specify "notices body errors" do
- lambda {
- status, header, body = Rack::Lint.new(lambda { |env|
- [200, {"Content-type" => "text/plain","Content-length" => "3"}, [1,2,3]]
- }).call(env({}))
- body.each { |part| }
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/yielded non-string/)
- end
-
- specify "notices input handling errors" do
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].gets("\r\n")
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/gets called with arguments/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(1, 2, 3)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/read called with too many arguments/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read("foo")
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/read called with non-integer and non-nil length/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(-1)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/read called with a negative length/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(nil, nil)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/read called with non-String buffer/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(nil, 1)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/read called with non-String buffer/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].rewind(0)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/rewind called with arguments/)
-
- weirdio = Object.new
- class << weirdio
- def gets
- 42
- end
-
- def read
- 23
- end
-
- def each
- yield 23
- yield 42
- end
-
- def rewind
- raise Errno::ESPIPE, "Errno::ESPIPE"
- end
- end
-
- eof_weirdio = Object.new
- class << eof_weirdio
- def gets
- nil
- end
-
- def read(*args)
- nil
- end
-
- def each
- end
-
- def rewind
- end
- end
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].gets
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env("rack.input" => weirdio))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/gets didn't return a String/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].each { |x| }
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env("rack.input" => weirdio))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/each didn't yield a String/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env("rack.input" => weirdio))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/read didn't return nil or a String/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env("rack.input" => eof_weirdio))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/read\(nil\) returned nil on EOF/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].rewind
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env("rack.input" => weirdio))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/rewind raised Errno::ESPIPE/)
-
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].close
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/close must not be called/)
- end
-
- specify "notices error handling errors" do
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.errors"].write(42)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/write not called with a String/)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.errors"].close
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/close must not be called/)
- end
-
- specify "notices HEAD errors" do
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Content-type" => "test/plain", "Content-length" => "3"}, []]
- }).call(env({"REQUEST_METHOD" => "HEAD"}))
- }.should.not.raise
-
- lambda {
- Rack::Lint.new(lambda { |env|
- [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]]
- }).call(env({"REQUEST_METHOD" => "HEAD"}))
- }.should.raise(Rack::Lint::LintError).
- message.should.match(/body was given for HEAD/)
- end
-
- specify "passes valid read calls" do
- hello_str = "hello world"
- hello_str.force_encoding("ASCII-8BIT") if hello_str.respond_to? :force_encoding
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({"rack.input" => StringIO.new(hello_str)}))
- }.should.not.raise(Rack::Lint::LintError)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(0)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({"rack.input" => StringIO.new(hello_str)}))
- }.should.not.raise(Rack::Lint::LintError)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(1)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({"rack.input" => StringIO.new(hello_str)}))
- }.should.not.raise(Rack::Lint::LintError)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(nil)
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({"rack.input" => StringIO.new(hello_str)}))
- }.should.not.raise(Rack::Lint::LintError)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(nil, '')
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({"rack.input" => StringIO.new(hello_str)}))
- }.should.not.raise(Rack::Lint::LintError)
-
- lambda {
- Rack::Lint.new(lambda { |env|
- env["rack.input"].read(1, '')
- [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []]
- }).call(env({"rack.input" => StringIO.new(hello_str)}))
- }.should.not.raise(Rack::Lint::LintError)
- end
-end
-
-context "Rack::Lint::InputWrapper" do
- specify "delegates :size to underlying IO object" do
- class IOMock
- def size
- 101
- end
- end
-
- wrapper = Rack::Lint::InputWrapper.new(IOMock.new)
- wrapper.size.should == 101
- end
-
- specify "delegates :rewind to underlying IO object" do
- io = StringIO.new("123")
- wrapper = Rack::Lint::InputWrapper.new(io)
- wrapper.read.should.equal "123"
- wrapper.read.should.equal ""
- wrapper.rewind
- wrapper.read.should.equal "123"
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_lobster.rb b/vendor/gems/rack-1.1.0/test/spec_rack_lobster.rb
deleted file mode 100644
index 7be267a28..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_lobster.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require 'test/spec'
-
-require 'rack/lobster'
-require 'rack/mock'
-
-context "Rack::Lobster::LambdaLobster" do
- specify "should be a single lambda" do
- Rack::Lobster::LambdaLobster.should.be.kind_of Proc
- end
-
- specify "should look like a lobster" do
- res = Rack::MockRequest.new(Rack::Lobster::LambdaLobster).get("/")
- res.should.be.ok
- res.body.should.include "(,(,,(,,,("
- res.body.should.include "?flip"
- end
-
- specify "should be flippable" do
- res = Rack::MockRequest.new(Rack::Lobster::LambdaLobster).get("/?flip")
- res.should.be.ok
- res.body.should.include "(,,,(,,(,("
- end
-end
-
-context "Rack::Lobster" do
- specify "should look like a lobster" do
- res = Rack::MockRequest.new(Rack::Lobster.new).get("/")
- res.should.be.ok
- res.body.should.include "(,(,,(,,,("
- res.body.should.include "?flip"
- res.body.should.include "crash"
- end
-
- specify "should be flippable" do
- res = Rack::MockRequest.new(Rack::Lobster.new).get("/?flip=left")
- res.should.be.ok
- res.body.should.include "(,,,(,,(,("
- end
-
- specify "should provide crashing for testing purposes" do
- lambda {
- Rack::MockRequest.new(Rack::Lobster.new).get("/?flip=crash")
- }.should.raise
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_lock.rb b/vendor/gems/rack-1.1.0/test/spec_rack_lock.rb
deleted file mode 100644
index 18af2b234..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_lock.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-require 'test/spec'
-
-require 'rack/mock'
-require 'rack/lock'
-
-context "Rack::Lock" do
- class Lock
- attr_reader :synchronized
-
- def initialize
- @synchronized = false
- end
-
- def synchronize
- @synchronized = true
- yield
- end
- end
-
- specify "should call synchronize on lock" do
- lock = Lock.new
- env = Rack::MockRequest.env_for("/")
- app = Rack::Lock.new(lambda { |env| }, lock)
- lock.synchronized.should.equal false
- app.call(env)
- lock.synchronized.should.equal true
- end
-
- specify "should set multithread flag to false" do
- app = Rack::Lock.new(lambda { |env| env['rack.multithread'] })
- app.call(Rack::MockRequest.env_for("/")).should.equal false
- end
-
- specify "should reset original multithread flag when exiting lock" do
- app = Rack::Lock.new(lambda { |env| env })
- app.call(Rack::MockRequest.env_for("/"))['rack.multithread'].should.equal true
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_logger.rb b/vendor/gems/rack-1.1.0/test/spec_rack_logger.rb
deleted file mode 100644
index d55b9c777..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_logger.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'rack/logger'
-require 'rack/lint'
-require 'stringio'
-
-context "Rack::Logger" do
- specify "logs to rack.errors" do
- app = lambda { |env|
- log = env['rack.logger']
- log.debug("Created logger")
- log.info("Program started")
- log.warn("Nothing to do!")
-
- [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]]
- }
-
- errors = StringIO.new
- Rack::Logger.new(app).call({'rack.errors' => errors})
- errors.string.should.match "INFO -- : Program started"
- errors.string.should.match "WARN -- : Nothing to do"
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_methodoverride.rb b/vendor/gems/rack-1.1.0/test/spec_rack_methodoverride.rb
deleted file mode 100644
index 57452394c..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_methodoverride.rb
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'test/spec'
-
-require 'rack/mock'
-require 'rack/methodoverride'
-require 'stringio'
-
-context "Rack::MethodOverride" do
- specify "should not affect GET requests" do
- env = Rack::MockRequest.env_for("/?_method=delete", :method => "GET")
- app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
- req = app.call(env)
-
- req.env["REQUEST_METHOD"].should.equal "GET"
- end
-
- specify "_method parameter should modify REQUEST_METHOD for POST requests" do
- env = Rack::MockRequest.env_for("/", :method => "POST", :input => "_method=put")
- app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
- req = app.call(env)
-
- req.env["REQUEST_METHOD"].should.equal "PUT"
- end
-
- specify "X-HTTP-Method-Override header should modify REQUEST_METHOD for POST requests" do
- env = Rack::MockRequest.env_for("/",
- :method => "POST",
- "HTTP_X_HTTP_METHOD_OVERRIDE" => "PUT"
- )
- app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
- req = app.call(env)
-
- req.env["REQUEST_METHOD"].should.equal "PUT"
- end
-
- specify "should not modify REQUEST_METHOD if the method is unknown" do
- env = Rack::MockRequest.env_for("/", :method => "POST", :input => "_method=foo")
- app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
- req = app.call(env)
-
- req.env["REQUEST_METHOD"].should.equal "POST"
- end
-
- specify "should not modify REQUEST_METHOD when _method is nil" do
- env = Rack::MockRequest.env_for("/", :method => "POST", :input => "foo=bar")
- app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
- req = app.call(env)
-
- req.env["REQUEST_METHOD"].should.equal "POST"
- end
-
- specify "should store the original REQUEST_METHOD prior to overriding" do
- env = Rack::MockRequest.env_for("/",
- :method => "POST",
- :input => "_method=options")
- app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) })
- req = app.call(env)
-
- req.env["rack.methodoverride.original_method"].should.equal "POST"
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_mock.rb b/vendor/gems/rack-1.1.0/test/spec_rack_mock.rb
deleted file mode 100644
index a03bedc21..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_mock.rb
+++ /dev/null
@@ -1,243 +0,0 @@
-require 'yaml'
-require 'rack/mock'
-require 'rack/request'
-require 'rack/response'
-
-app = lambda { |env|
- req = Rack::Request.new(env)
-
- env["mock.postdata"] = env["rack.input"].read
- if req.GET["error"]
- env["rack.errors"].puts req.GET["error"]
- env["rack.errors"].flush
- end
-
- Rack::Response.new(env.to_yaml,
- req.GET["status"] || 200,
- "Content-Type" => "text/yaml").finish
-}
-
-context "Rack::MockRequest" do
- specify "should return a MockResponse" do
- res = Rack::MockRequest.new(app).get("")
- res.should.be.kind_of Rack::MockResponse
- end
-
- specify "should be able to only return the environment" do
- env = Rack::MockRequest.env_for("")
- env.should.be.kind_of Hash
- env.should.include "rack.version"
- end
-
- specify "should provide sensible defaults" do
- res = Rack::MockRequest.new(app).request
-
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "GET"
- env["SERVER_NAME"].should.equal "example.org"
- env["SERVER_PORT"].should.equal "80"
- env["QUERY_STRING"].should.equal ""
- env["PATH_INFO"].should.equal "/"
- env["SCRIPT_NAME"].should.equal ""
- env["rack.url_scheme"].should.equal "http"
- env["mock.postdata"].should.be.empty
- end
-
- specify "should allow GET/POST/PUT/DELETE" do
- res = Rack::MockRequest.new(app).get("", :input => "foo")
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "GET"
-
- res = Rack::MockRequest.new(app).post("", :input => "foo")
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "POST"
-
- res = Rack::MockRequest.new(app).put("", :input => "foo")
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "PUT"
-
- res = Rack::MockRequest.new(app).delete("", :input => "foo")
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "DELETE"
-
- Rack::MockRequest.env_for("/", :method => "OPTIONS")["REQUEST_METHOD"].
- should.equal "OPTIONS"
- end
-
- specify "should set content length" do
- env = Rack::MockRequest.env_for("/", :input => "foo")
- env["CONTENT_LENGTH"].should.equal "3"
- end
-
- specify "should allow posting" do
- res = Rack::MockRequest.new(app).get("", :input => "foo")
- env = YAML.load(res.body)
- env["mock.postdata"].should.equal "foo"
-
- res = Rack::MockRequest.new(app).post("", :input => StringIO.new("foo"))
- env = YAML.load(res.body)
- env["mock.postdata"].should.equal "foo"
- end
-
- specify "should use all parts of an URL" do
- res = Rack::MockRequest.new(app).
- get("https://bla.example.org:9292/meh/foo?bar")
- res.should.be.kind_of Rack::MockResponse
-
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "GET"
- env["SERVER_NAME"].should.equal "bla.example.org"
- env["SERVER_PORT"].should.equal "9292"
- env["QUERY_STRING"].should.equal "bar"
- env["PATH_INFO"].should.equal "/meh/foo"
- env["rack.url_scheme"].should.equal "https"
- end
-
- specify "should set SSL port and HTTP flag on when using https" do
- res = Rack::MockRequest.new(app).
- get("https://example.org/foo")
- res.should.be.kind_of Rack::MockResponse
-
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "GET"
- env["SERVER_NAME"].should.equal "example.org"
- env["SERVER_PORT"].should.equal "443"
- env["QUERY_STRING"].should.equal ""
- env["PATH_INFO"].should.equal "/foo"
- env["rack.url_scheme"].should.equal "https"
- env["HTTPS"].should.equal "on"
- end
-
- specify "should prepend slash to uri path" do
- res = Rack::MockRequest.new(app).
- get("foo")
- res.should.be.kind_of Rack::MockResponse
-
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "GET"
- env["SERVER_NAME"].should.equal "example.org"
- env["SERVER_PORT"].should.equal "80"
- env["QUERY_STRING"].should.equal ""
- env["PATH_INFO"].should.equal "/foo"
- env["rack.url_scheme"].should.equal "http"
- end
-
- specify "should properly convert method name to an uppercase string" do
- res = Rack::MockRequest.new(app).request(:get)
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "GET"
- end
-
- specify "should accept params and build query string for GET requests" do
- res = Rack::MockRequest.new(app).get("/foo?baz=2", :params => {:foo => {:bar => "1"}})
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "GET"
- env["QUERY_STRING"].should.match "baz=2"
- env["QUERY_STRING"].should.match "foo[bar]=1"
- env["PATH_INFO"].should.equal "/foo"
- env["mock.postdata"].should.equal ""
- end
-
- specify "should accept raw input in params for GET requests" do
- res = Rack::MockRequest.new(app).get("/foo?baz=2", :params => "foo[bar]=1")
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "GET"
- env["QUERY_STRING"].should.match "baz=2"
- env["QUERY_STRING"].should.match "foo[bar]=1"
- env["PATH_INFO"].should.equal "/foo"
- env["mock.postdata"].should.equal ""
- end
-
- specify "should accept params and build url encoded params for POST requests" do
- res = Rack::MockRequest.new(app).post("/foo", :params => {:foo => {:bar => "1"}})
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "POST"
- env["QUERY_STRING"].should.equal ""
- env["PATH_INFO"].should.equal "/foo"
- env["CONTENT_TYPE"].should.equal "application/x-www-form-urlencoded"
- env["mock.postdata"].should.equal "foo[bar]=1"
- end
-
- specify "should accept raw input in params for POST requests" do
- res = Rack::MockRequest.new(app).post("/foo", :params => "foo[bar]=1")
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "POST"
- env["QUERY_STRING"].should.equal ""
- env["PATH_INFO"].should.equal "/foo"
- env["CONTENT_TYPE"].should.equal "application/x-www-form-urlencoded"
- env["mock.postdata"].should.equal "foo[bar]=1"
- end
-
- specify "should accept params and build multipart encoded params for POST requests" do
- files = Rack::Utils::Multipart::UploadedFile.new(File.join(File.dirname(__FILE__), "multipart", "file1.txt"))
- res = Rack::MockRequest.new(app).post("/foo", :params => { "submit-name" => "Larry", "files" => files })
- env = YAML.load(res.body)
- env["REQUEST_METHOD"].should.equal "POST"
- env["QUERY_STRING"].should.equal ""
- env["PATH_INFO"].should.equal "/foo"
- env["CONTENT_TYPE"].should.equal "multipart/form-data; boundary=AaB03x"
- env["mock.postdata"].length.should.equal 206
- end
-
- specify "should behave valid according to the Rack spec" do
- lambda {
- res = Rack::MockRequest.new(app).
- get("https://bla.example.org:9292/meh/foo?bar", :lint => true)
- }.should.not.raise(Rack::Lint::LintError)
- end
-end
-
-context "Rack::MockResponse" do
- specify "should provide access to the HTTP status" do
- res = Rack::MockRequest.new(app).get("")
- res.should.be.successful
- res.should.be.ok
-
- res = Rack::MockRequest.new(app).get("/?status=404")
- res.should.not.be.successful
- res.should.be.client_error
- res.should.be.not_found
-
- res = Rack::MockRequest.new(app).get("/?status=501")
- res.should.not.be.successful
- res.should.be.server_error
-
- res = Rack::MockRequest.new(app).get("/?status=307")
- res.should.be.redirect
-
- res = Rack::MockRequest.new(app).get("/?status=201", :lint => true)
- res.should.be.empty
- end
-
- specify "should provide access to the HTTP headers" do
- res = Rack::MockRequest.new(app).get("")
- res.should.include "Content-Type"
- res.headers["Content-Type"].should.equal "text/yaml"
- res.original_headers["Content-Type"].should.equal "text/yaml"
- res["Content-Type"].should.equal "text/yaml"
- res.content_type.should.equal "text/yaml"
- res.content_length.should.be 414 # needs change often.
- res.location.should.be.nil
- end
-
- specify "should provide access to the HTTP body" do
- res = Rack::MockRequest.new(app).get("")
- res.body.should =~ /rack/
- res.should =~ /rack/
- res.should.match(/rack/)
- res.should.satisfy { |r| r.match(/rack/) }
- end
-
- specify "should provide access to the Rack errors" do
- res = Rack::MockRequest.new(app).get("/?error=foo", :lint => true)
- res.should.be.ok
- res.errors.should.not.be.empty
- res.errors.should.include "foo"
- end
-
- specify "should optionally make Rack errors fatal" do
- lambda {
- Rack::MockRequest.new(app).get("/?error=foo", :fatal => true)
- }.should.raise(Rack::MockRequest::FatalWarning)
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_mongrel.rb b/vendor/gems/rack-1.1.0/test/spec_rack_mongrel.rb
deleted file mode 100644
index 4b3868913..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_mongrel.rb
+++ /dev/null
@@ -1,189 +0,0 @@
-require 'test/spec'
-
-begin
-require 'rack/handler/mongrel'
-require 'rack/urlmap'
-require 'rack/lint'
-require 'testrequest'
-require 'timeout'
-
-Thread.abort_on_exception = true
-$tcp_defer_accept_opts = nil
-$tcp_cork_opts = nil
-
-context "Rack::Handler::Mongrel" do
- include TestRequest::Helpers
-
- setup do
- server = Mongrel::HttpServer.new(@host='0.0.0.0', @port=9201)
- server.register('/test',
- Rack::Handler::Mongrel.new(Rack::Lint.new(TestRequest.new)))
- server.register('/stream',
- Rack::Handler::Mongrel.new(Rack::Lint.new(StreamingRequest)))
- @acc = server.run
- end
-
- specify "should respond" do
- lambda {
- GET("/test")
- }.should.not.raise
- end
-
- specify "should be a Mongrel" do
- GET("/test")
- status.should.be 200
- response["SERVER_SOFTWARE"].should =~ /Mongrel/
- response["HTTP_VERSION"].should.equal "HTTP/1.1"
- response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
- response["SERVER_PORT"].should.equal "9201"
- response["SERVER_NAME"].should.equal "0.0.0.0"
- end
-
- specify "should have rack headers" do
- GET("/test")
- response["rack.version"].should.equal [1,1]
- response["rack.multithread"].should.be true
- response["rack.multiprocess"].should.be false
- response["rack.run_once"].should.be false
- end
-
- specify "should have CGI headers on GET" do
- GET("/test")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/test"
- response["PATH_INFO"].should.be.equal ""
- response["QUERY_STRING"].should.equal ""
- response["test.postdata"].should.equal ""
-
- GET("/test/foo?quux=1")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/test/foo"
- response["PATH_INFO"].should.equal "/foo"
- response["QUERY_STRING"].should.equal "quux=1"
- end
-
- specify "should have CGI headers on POST" do
- POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
- status.should.equal 200
- response["REQUEST_METHOD"].should.equal "POST"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/test"
- response["QUERY_STRING"].should.equal ""
- response["HTTP_X_TEST_HEADER"].should.equal "42"
- response["test.postdata"].should.equal "rack-form-data=23"
- end
-
- specify "should support HTTP auth" do
- GET("/test", {:user => "ruth", :passwd => "secret"})
- response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
- end
-
- specify "should set status" do
- GET("/test?secret")
- status.should.equal 403
- response["rack.url_scheme"].should.equal "http"
- end
-
- specify "should provide a .run" do
- block_ran = false
- Thread.new {
- Rack::Handler::Mongrel.run(lambda {}, {:Port => 9211}) { |server|
- server.should.be.kind_of Mongrel::HttpServer
- block_ran = true
- }
- }
- sleep 1
- block_ran.should.be true
- end
-
- specify "should provide a .run that maps a hash" do
- block_ran = false
- Thread.new {
- map = {'/'=>lambda{},'/foo'=>lambda{}}
- Rack::Handler::Mongrel.run(map, :map => true, :Port => 9221) { |server|
- server.should.be.kind_of Mongrel::HttpServer
- server.classifier.uris.size.should.be 2
- server.classifier.uris.should.not.include '/arf'
- server.classifier.uris.should.include '/'
- server.classifier.uris.should.include '/foo'
- block_ran = true
- }
- }
- sleep 1
- block_ran.should.be true
- end
-
- specify "should provide a .run that maps a urlmap" do
- block_ran = false
- Thread.new {
- map = Rack::URLMap.new({'/'=>lambda{},'/bar'=>lambda{}})
- Rack::Handler::Mongrel.run(map, {:map => true, :Port => 9231}) { |server|
- server.should.be.kind_of Mongrel::HttpServer
- server.classifier.uris.size.should.be 2
- server.classifier.uris.should.not.include '/arf'
- server.classifier.uris.should.include '/'
- server.classifier.uris.should.include '/bar'
- block_ran = true
- }
- }
- sleep 1
- block_ran.should.be true
- end
-
- specify "should provide a .run that maps a urlmap restricting by host" do
- block_ran = false
- Thread.new {
- map = Rack::URLMap.new({
- '/' => lambda{},
- '/foo' => lambda{},
- '/bar' => lambda{},
- 'http://localhost/' => lambda{},
- 'http://localhost/bar' => lambda{},
- 'http://falsehost/arf' => lambda{},
- 'http://falsehost/qux' => lambda{}
- })
- opt = {:map => true, :Port => 9241, :Host => 'localhost'}
- Rack::Handler::Mongrel.run(map, opt) { |server|
- server.should.be.kind_of Mongrel::HttpServer
- server.classifier.uris.should.include '/'
- server.classifier.handler_map['/'].size.should.be 2
- server.classifier.uris.should.include '/foo'
- server.classifier.handler_map['/foo'].size.should.be 1
- server.classifier.uris.should.include '/bar'
- server.classifier.handler_map['/bar'].size.should.be 2
- server.classifier.uris.should.not.include '/qux'
- server.classifier.uris.should.not.include '/arf'
- server.classifier.uris.size.should.be 3
- block_ran = true
- }
- }
- sleep 1
- block_ran.should.be true
- end
-
- specify "should stream #each part of the response" do
- body = ''
- begin
- Timeout.timeout(1) do
- Net::HTTP.start(@host, @port) do |http|
- get = Net::HTTP::Get.new('/stream')
- http.request(get) do |response|
- response.read_body { |part| body << part }
- end
- end
- end
- rescue Timeout::Error
- end
- body.should.not.be.empty
- end
-
- teardown do
- @acc.raise Mongrel::StopServer
- end
-end
-
-rescue LoadError
- $stderr.puts "Skipping Rack::Handler::Mongrel tests (Mongrel is required). `gem install mongrel` and try again."
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_nulllogger.rb b/vendor/gems/rack-1.1.0/test/spec_rack_nulllogger.rb
deleted file mode 100644
index b3c2bc9c6..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_nulllogger.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'rack/nulllogger'
-require 'rack/lint'
-require 'rack/mock'
-
-context "Rack::NullLogger" do
- specify "acks as a nop logger" do
- app = lambda { |env|
- env['rack.logger'].warn "b00m"
- [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]]
- }
- Rack::NullLogger.new(app).call({})
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_recursive.rb b/vendor/gems/rack-1.1.0/test/spec_rack_recursive.rb
deleted file mode 100644
index afc1a0d9a..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_recursive.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'test/spec'
-
-require 'rack/recursive'
-require 'rack/urlmap'
-require 'rack/response'
-require 'rack/mock'
-
-context "Rack::Recursive" do
- setup do
-
- @app1 = lambda { |env|
- res = Rack::Response.new
- res["X-Path-Info"] = env["PATH_INFO"]
- res["X-Query-String"] = env["QUERY_STRING"]
- res.finish do |res|
- res.write "App1"
- end
- }
-
- @app2 = lambda { |env|
- Rack::Response.new.finish do |res|
- res.write "App2"
- _, _, body = env['rack.recursive.include'].call(env, "/app1")
- body.each { |b|
- res.write b
- }
- end
- }
-
- @app3 = lambda { |env|
- raise Rack::ForwardRequest.new("/app1")
- }
-
- @app4 = lambda { |env|
- raise Rack::ForwardRequest.new("http://example.org/app1/quux?meh")
- }
-
- end
-
- specify "should allow for subrequests" do
- res = Rack::MockRequest.new(Rack::Recursive.new(
- Rack::URLMap.new("/app1" => @app1,
- "/app2" => @app2))).
- get("/app2")
-
- res.should.be.ok
- res.body.should.equal "App2App1"
- end
-
- specify "should raise error on requests not below the app" do
- app = Rack::URLMap.new("/app1" => @app1,
- "/app" => Rack::Recursive.new(
- Rack::URLMap.new("/1" => @app1,
- "/2" => @app2)))
-
- lambda {
- Rack::MockRequest.new(app).get("/app/2")
- }.should.raise(ArgumentError).
- message.should =~ /can only include below/
- end
-
- specify "should support forwarding" do
- app = Rack::Recursive.new(Rack::URLMap.new("/app1" => @app1,
- "/app3" => @app3,
- "/app4" => @app4))
-
- res = Rack::MockRequest.new(app).get("/app3")
- res.should.be.ok
- res.body.should.equal "App1"
-
- res = Rack::MockRequest.new(app).get("/app4")
- res.should.be.ok
- res.body.should.equal "App1"
- res["X-Path-Info"].should.equal "/quux"
- res["X-Query-String"].should.equal "meh"
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_request.rb b/vendor/gems/rack-1.1.0/test/spec_rack_request.rb
deleted file mode 100644
index fcdeb4844..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_request.rb
+++ /dev/null
@@ -1,545 +0,0 @@
-require 'test/spec'
-require 'stringio'
-
-require 'rack/request'
-require 'rack/mock'
-
-context "Rack::Request" do
- specify "wraps the rack variables" do
- req = Rack::Request.new(Rack::MockRequest.env_for("http://example.com:8080/"))
-
- req.body.should.respond_to? :gets
- req.scheme.should.equal "http"
- req.request_method.should.equal "GET"
-
- req.should.be.get
- req.should.not.be.post
- req.should.not.be.put
- req.should.not.be.delete
- req.should.not.be.head
-
- req.script_name.should.equal ""
- req.path_info.should.equal "/"
- req.query_string.should.equal ""
-
- req.host.should.equal "example.com"
- req.port.should.equal 8080
-
- req.content_length.should.equal "0"
- req.content_type.should.be.nil
- end
-
- specify "can figure out the correct host" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/", "HTTP_HOST" => "www2.example.org")
- req.host.should.equal "www2.example.org"
-
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/", "SERVER_NAME" => "example.org", "SERVER_PORT" => "9292")
- req.host.should.equal "example.org"
-
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/", "HTTP_HOST" => "localhost:81", "HTTP_X_FORWARDED_HOST" => "example.org:9292")
- req.host.should.equal "example.org"
-
- env = Rack::MockRequest.env_for("/", "SERVER_ADDR" => "192.168.1.1", "SERVER_PORT" => "9292")
- env.delete("SERVER_NAME")
- req = Rack::Request.new(env)
- req.host.should.equal "192.168.1.1"
-
- env = Rack::MockRequest.env_for("/")
- env.delete("SERVER_NAME")
- req = Rack::Request.new(env)
- req.host.should.equal ""
- end
-
- specify "can parse the query string" do
- req = Rack::Request.new(Rack::MockRequest.env_for("/?foo=bar&quux=bla"))
- req.query_string.should.equal "foo=bar&quux=bla"
- req.GET.should.equal "foo" => "bar", "quux" => "bla"
- req.POST.should.be.empty
- req.params.should.equal "foo" => "bar", "quux" => "bla"
- end
-
- specify "raises if rack.input is missing" do
- req = Rack::Request.new({})
- lambda { req.POST }.should.raise(RuntimeError)
- end
-
- specify "can parse POST data when method is POST and no Content-Type given" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/?foo=quux",
- "REQUEST_METHOD" => 'POST',
- :input => "foo=bar&quux=bla")
- req.content_type.should.be.nil
- req.media_type.should.be.nil
- req.query_string.should.equal "foo=quux"
- req.GET.should.equal "foo" => "quux"
- req.POST.should.equal "foo" => "bar", "quux" => "bla"
- req.params.should.equal "foo" => "bar", "quux" => "bla"
- end
-
- specify "can parse POST data with explicit content type regardless of method" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => 'application/x-www-form-urlencoded;foo=bar',
- :input => "foo=bar&quux=bla")
- req.content_type.should.equal 'application/x-www-form-urlencoded;foo=bar'
- req.media_type.should.equal 'application/x-www-form-urlencoded'
- req.media_type_params['foo'].should.equal 'bar'
- req.POST.should.equal "foo" => "bar", "quux" => "bla"
- req.params.should.equal "foo" => "bar", "quux" => "bla"
- end
-
- specify "does not parse POST data when media type is not form-data" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/?foo=quux",
- "REQUEST_METHOD" => 'POST',
- "CONTENT_TYPE" => 'text/plain;charset=utf-8',
- :input => "foo=bar&quux=bla")
- req.content_type.should.equal 'text/plain;charset=utf-8'
- req.media_type.should.equal 'text/plain'
- req.media_type_params['charset'].should.equal 'utf-8'
- req.POST.should.be.empty
- req.params.should.equal "foo" => "quux"
- req.body.read.should.equal "foo=bar&quux=bla"
- end
-
- specify "can parse POST data on PUT when media type is form-data" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/?foo=quux",
- "REQUEST_METHOD" => 'PUT',
- "CONTENT_TYPE" => 'application/x-www-form-urlencoded',
- :input => "foo=bar&quux=bla")
- req.POST.should.equal "foo" => "bar", "quux" => "bla"
- req.body.read.should.equal "foo=bar&quux=bla"
- end
-
- specify "rewinds input after parsing POST data" do
- input = StringIO.new("foo=bar&quux=bla")
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => 'application/x-www-form-urlencoded;foo=bar',
- :input => input)
- req.params.should.equal "foo" => "bar", "quux" => "bla"
- input.read.should.equal "foo=bar&quux=bla"
- end
-
- specify "cleans up Safari's ajax POST body" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/",
- 'REQUEST_METHOD' => 'POST', :input => "foo=bar&quux=bla\0")
- req.POST.should.equal "foo" => "bar", "quux" => "bla"
- end
-
- specify "can get value by key from params with #[]" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("?foo=quux")
- req['foo'].should.equal 'quux'
- req[:foo].should.equal 'quux'
- end
-
- specify "can set value to key on params with #[]=" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("?foo=duh")
- req['foo'].should.equal 'duh'
- req[:foo].should.equal 'duh'
- req.params.should.equal 'foo' => 'duh'
-
- req['foo'] = 'bar'
- req.params.should.equal 'foo' => 'bar'
- req['foo'].should.equal 'bar'
- req[:foo].should.equal 'bar'
-
- req[:foo] = 'jaz'
- req.params.should.equal 'foo' => 'jaz'
- req['foo'].should.equal 'jaz'
- req[:foo].should.equal 'jaz'
- end
-
- specify "values_at answers values by keys in order given" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("?foo=baz&wun=der&bar=ful")
- req.values_at('foo').should.equal ['baz']
- req.values_at('foo', 'wun').should.equal ['baz', 'der']
- req.values_at('bar', 'foo', 'wun').should.equal ['ful', 'baz', 'der']
- end
-
- specify "referrer should be extracted correct" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/", "HTTP_REFERER" => "/some/path")
- req.referer.should.equal "/some/path"
-
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/")
- req.referer.should.equal "/"
- end
-
- specify "user agent should be extracted correct" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/", "HTTP_USER_AGENT" => "Mozilla/4.0 (compatible)")
- req.user_agent.should.equal "Mozilla/4.0 (compatible)"
-
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/")
- req.user_agent.should.equal nil
- end
-
- specify "can cache, but invalidates the cache" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/?foo=quux",
- "CONTENT_TYPE" => "application/x-www-form-urlencoded",
- :input => "foo=bar&quux=bla")
- req.GET.should.equal "foo" => "quux"
- req.GET.should.equal "foo" => "quux"
- req.env["QUERY_STRING"] = "bla=foo"
- req.GET.should.equal "bla" => "foo"
- req.GET.should.equal "bla" => "foo"
-
- req.POST.should.equal "foo" => "bar", "quux" => "bla"
- req.POST.should.equal "foo" => "bar", "quux" => "bla"
- req.env["rack.input"] = StringIO.new("foo=bla&quux=bar")
- req.POST.should.equal "foo" => "bla", "quux" => "bar"
- req.POST.should.equal "foo" => "bla", "quux" => "bar"
- end
-
- specify "can figure out if called via XHR" do
- req = Rack::Request.new(Rack::MockRequest.env_for(""))
- req.should.not.be.xhr
-
- req = Rack::Request.new \
- Rack::MockRequest.env_for("", "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest")
- req.should.be.xhr
- end
-
- specify "can parse cookies" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("", "HTTP_COOKIE" => "foo=bar;quux=h&m")
- req.cookies.should.equal "foo" => "bar", "quux" => "h&m"
- req.cookies.should.equal "foo" => "bar", "quux" => "h&m"
- req.env.delete("HTTP_COOKIE")
- req.cookies.should.equal({})
- end
-
- specify "parses cookies according to RFC 2109" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for('', 'HTTP_COOKIE' => 'foo=bar;foo=car')
- req.cookies.should.equal 'foo' => 'bar'
- end
-
- specify "provides setters" do
- req = Rack::Request.new(e=Rack::MockRequest.env_for(""))
- req.script_name.should.equal ""
- req.script_name = "/foo"
- req.script_name.should.equal "/foo"
- e["SCRIPT_NAME"].should.equal "/foo"
-
- req.path_info.should.equal "/"
- req.path_info = "/foo"
- req.path_info.should.equal "/foo"
- e["PATH_INFO"].should.equal "/foo"
- end
-
- specify "provides the original env" do
- req = Rack::Request.new(e=Rack::MockRequest.env_for(""))
- req.env.should.be e
- end
-
- specify "can restore the URL" do
- Rack::Request.new(Rack::MockRequest.env_for("")).url.
- should.equal "http://example.org/"
- Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).url.
- should.equal "http://example.org/foo/"
- Rack::Request.new(Rack::MockRequest.env_for("/foo")).url.
- should.equal "http://example.org/foo"
- Rack::Request.new(Rack::MockRequest.env_for("?foo")).url.
- should.equal "http://example.org/?foo"
- Rack::Request.new(Rack::MockRequest.env_for("http://example.org:8080/")).url.
- should.equal "http://example.org:8080/"
- Rack::Request.new(Rack::MockRequest.env_for("https://example.org/")).url.
- should.equal "https://example.org/"
-
- Rack::Request.new(Rack::MockRequest.env_for("https://example.com:8080/foo?foo")).url.
- should.equal "https://example.com:8080/foo?foo"
- end
-
- specify "can restore the full path" do
- Rack::Request.new(Rack::MockRequest.env_for("")).fullpath.
- should.equal "/"
- Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).fullpath.
- should.equal "/foo/"
- Rack::Request.new(Rack::MockRequest.env_for("/foo")).fullpath.
- should.equal "/foo"
- Rack::Request.new(Rack::MockRequest.env_for("?foo")).fullpath.
- should.equal "/?foo"
- Rack::Request.new(Rack::MockRequest.env_for("http://example.org:8080/")).fullpath.
- should.equal "/"
- Rack::Request.new(Rack::MockRequest.env_for("https://example.org/")).fullpath.
- should.equal "/"
-
- Rack::Request.new(Rack::MockRequest.env_for("https://example.com:8080/foo?foo")).fullpath.
- should.equal "/foo?foo"
- end
-
- specify "can handle multiple media type parameters" do
- req = Rack::Request.new \
- Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => 'text/plain; foo=BAR,baz=bizzle dizzle;BLING=bam')
- req.should.not.be.form_data
- req.media_type_params.should.include 'foo'
- req.media_type_params['foo'].should.equal 'BAR'
- req.media_type_params.should.include 'baz'
- req.media_type_params['baz'].should.equal 'bizzle dizzle'
- req.media_type_params.should.not.include 'BLING'
- req.media_type_params.should.include 'bling'
- req.media_type_params['bling'].should.equal 'bam'
- end
-
- specify "can parse multipart form data" do
- # Adapted from RFC 1867.
- input = <<EOF
---AaB03x\r
-content-disposition: form-data; name="reply"\r
-\r
-yes\r
---AaB03x\r
-content-disposition: form-data; name="fileupload"; filename="dj.jpg"\r
-Content-Type: image/jpeg\r
-Content-Transfer-Encoding: base64\r
-\r
-/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg\r
---AaB03x--\r
-EOF
- req = Rack::Request.new Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=AaB03x",
- "CONTENT_LENGTH" => input.size,
- :input => input)
-
- req.POST.should.include "fileupload"
- req.POST.should.include "reply"
-
- req.should.be.form_data
- req.content_length.should.equal input.size
- req.media_type.should.equal 'multipart/form-data'
- req.media_type_params.should.include 'boundary'
- req.media_type_params['boundary'].should.equal 'AaB03x'
-
- req.POST["reply"].should.equal "yes"
-
- f = req.POST["fileupload"]
- f.should.be.kind_of Hash
- f[:type].should.equal "image/jpeg"
- f[:filename].should.equal "dj.jpg"
- f.should.include :tempfile
- f[:tempfile].size.should.equal 76
- end
-
- specify "can parse big multipart form data" do
- input = <<EOF
---AaB03x\r
-content-disposition: form-data; name="huge"; filename="huge"\r
-\r
-#{"x"*32768}\r
---AaB03x\r
-content-disposition: form-data; name="mean"; filename="mean"\r
-\r
---AaB03xha\r
---AaB03x--\r
-EOF
- req = Rack::Request.new Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=AaB03x",
- "CONTENT_LENGTH" => input.size,
- :input => input)
-
- req.POST["huge"][:tempfile].size.should.equal 32768
- req.POST["mean"][:tempfile].size.should.equal 10
- req.POST["mean"][:tempfile].read.should.equal "--AaB03xha"
- end
-
- specify "can detect invalid multipart form data" do
- input = <<EOF
---AaB03x\r
-content-disposition: form-data; name="huge"; filename="huge"\r
-EOF
- req = Rack::Request.new Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=AaB03x",
- "CONTENT_LENGTH" => input.size,
- :input => input)
-
- lambda { req.POST }.should.raise(EOFError)
-
- input = <<EOF
---AaB03x\r
-content-disposition: form-data; name="huge"; filename="huge"\r
-\r
-foo\r
-EOF
- req = Rack::Request.new Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=AaB03x",
- "CONTENT_LENGTH" => input.size,
- :input => input)
-
- lambda { req.POST }.should.raise(EOFError)
-
- input = <<EOF
---AaB03x\r
-content-disposition: form-data; name="huge"; filename="huge"\r
-\r
-foo\r
-EOF
- req = Rack::Request.new Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=AaB03x",
- "CONTENT_LENGTH" => input.size,
- :input => input)
-
- lambda { req.POST }.should.raise(EOFError)
- end
-
- specify "shouldn't try to interpret binary as utf8" do
- begin
- original_kcode = $KCODE
- $KCODE='UTF8'
-
- input = <<EOF
---AaB03x\r
-content-disposition: form-data; name="fileupload"; filename="junk.a"\r
-content-type: application/octet-stream\r
-\r
-#{[0x36,0xCF,0x0A,0xF8].pack('c*')}\r
---AaB03x--\r
-EOF
-
- req = Rack::Request.new Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=AaB03x",
- "CONTENT_LENGTH" => input.size,
- :input => input)
-
- lambda{req.POST}.should.not.raise(EOFError)
- req.POST["fileupload"][:tempfile].size.should.equal 4
- ensure
- $KCODE = original_kcode
- end
- end
-
-
- specify "should work around buggy 1.8.* Tempfile equality" do
- input = <<EOF
---AaB03x\r
-content-disposition: form-data; name="huge"; filename="huge"\r
-\r
-foo\r
---AaB03x--
-EOF
-
- rack_input = Tempfile.new("rackspec")
- rack_input.write(input)
- rack_input.rewind
-
- req = Rack::Request.new Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=AaB03x",
- "CONTENT_LENGTH" => input.size,
- :input => rack_input)
-
- lambda {req.POST}.should.not.raise
- lambda {req.POST}.should.blaming("input re-processed!").not.raise
- end
-
- specify "does conform to the Rack spec" do
- app = lambda { |env|
- content = Rack::Request.new(env).POST["file"].inspect
- size = content.respond_to?(:bytesize) ? content.bytesize : content.size
- [200, {"Content-Type" => "text/html", "Content-Length" => size.to_s}, [content]]
- }
-
- input = <<EOF
---AaB03x\r
-content-disposition: form-data; name="reply"\r
-\r
-yes\r
---AaB03x\r
-content-disposition: form-data; name="fileupload"; filename="dj.jpg"\r
-Content-Type: image/jpeg\r
-Content-Transfer-Encoding: base64\r
-\r
-/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg\r
---AaB03x--\r
-EOF
- input.force_encoding("ASCII-8BIT") if input.respond_to? :force_encoding
- res = Rack::MockRequest.new(Rack::Lint.new(app)).get "/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=AaB03x",
- "CONTENT_LENGTH" => input.size.to_s, "rack.input" => StringIO.new(input)
-
- res.should.be.ok
- end
-
- specify "should parse Accept-Encoding correctly" do
- parser = lambda do |x|
- Rack::Request.new(Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => x)).accept_encoding
- end
-
- parser.call(nil).should.equal([])
-
- parser.call("compress, gzip").should.equal([["compress", 1.0], ["gzip", 1.0]])
- parser.call("").should.equal([])
- parser.call("*").should.equal([["*", 1.0]])
- parser.call("compress;q=0.5, gzip;q=1.0").should.equal([["compress", 0.5], ["gzip", 1.0]])
- parser.call("gzip;q=1.0, identity; q=0.5, *;q=0").should.equal([["gzip", 1.0], ["identity", 0.5], ["*", 0] ])
-
- lambda { parser.call("gzip ; q=1.0") }.should.raise(RuntimeError)
- end
-
- specify 'should provide ip information' do
- app = lambda { |env|
- request = Rack::Request.new(env)
- response = Rack::Response.new
- response.write request.ip
- response.finish
- }
-
- mock = Rack::MockRequest.new(Rack::Lint.new(app))
- res = mock.get '/', 'REMOTE_ADDR' => '123.123.123.123'
- res.body.should.equal '123.123.123.123'
-
- res = mock.get '/',
- 'REMOTE_ADDR' => '123.123.123.123',
- 'HTTP_X_FORWARDED_FOR' => '234.234.234.234'
-
- res.body.should.equal '234.234.234.234'
-
- res = mock.get '/',
- 'REMOTE_ADDR' => '123.123.123.123',
- 'HTTP_X_FORWARDED_FOR' => '234.234.234.234,212.212.212.212'
-
- res.body.should.equal '212.212.212.212'
- end
-
- class MyRequest < Rack::Request
- def params
- {:foo => "bar"}
- end
- end
-
- specify "should allow subclass request to be instantiated after parent request" do
- env = Rack::MockRequest.env_for("/?foo=bar")
-
- req1 = Rack::Request.new(env)
- req1.GET.should.equal "foo" => "bar"
- req1.params.should.equal "foo" => "bar"
-
- req2 = MyRequest.new(env)
- req2.GET.should.equal "foo" => "bar"
- req2.params.should.equal :foo => "bar"
- end
-
- specify "should allow parent request to be instantiated after subclass request" do
- env = Rack::MockRequest.env_for("/?foo=bar")
-
- req1 = MyRequest.new(env)
- req1.GET.should.equal "foo" => "bar"
- req1.params.should.equal :foo => "bar"
-
- req2 = Rack::Request.new(env)
- req2.GET.should.equal "foo" => "bar"
- req2.params.should.equal "foo" => "bar"
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_response.rb b/vendor/gems/rack-1.1.0/test/spec_rack_response.rb
deleted file mode 100644
index 7989013da..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_response.rb
+++ /dev/null
@@ -1,221 +0,0 @@
-require 'test/spec'
-require 'set'
-
-require 'rack/response'
-
-context "Rack::Response" do
- specify "has sensible default values" do
- response = Rack::Response.new
- status, header, body = response.finish
- status.should.equal 200
- header.should.equal "Content-Type" => "text/html"
- body.each { |part|
- part.should.equal ""
- }
-
- response = Rack::Response.new
- status, header, body = *response
- status.should.equal 200
- header.should.equal "Content-Type" => "text/html"
- body.each { |part|
- part.should.equal ""
- }
- end
-
- specify "can be written to" do
- response = Rack::Response.new
-
- status, header, body = response.finish do
- response.write "foo"
- response.write "bar"
- response.write "baz"
- end
-
- parts = []
- body.each { |part| parts << part }
-
- parts.should.equal ["foo", "bar", "baz"]
- end
-
- specify "can set and read headers" do
- response = Rack::Response.new
- response["Content-Type"].should.equal "text/html"
- response["Content-Type"] = "text/plain"
- response["Content-Type"].should.equal "text/plain"
- end
-
- specify "can set cookies" do
- response = Rack::Response.new
-
- response.set_cookie "foo", "bar"
- response["Set-Cookie"].should.equal "foo=bar"
- response.set_cookie "foo2", "bar2"
- response["Set-Cookie"].should.equal ["foo=bar", "foo2=bar2"]
- response.set_cookie "foo3", "bar3"
- response["Set-Cookie"].should.equal ["foo=bar", "foo2=bar2", "foo3=bar3"]
- end
-
- specify "formats the Cookie expiration date accordingly to RFC 2109" do
- response = Rack::Response.new
-
- response.set_cookie "foo", {:value => "bar", :expires => Time.now+10}
- response["Set-Cookie"].should.match(
- /expires=..., \d\d-...-\d\d\d\d \d\d:\d\d:\d\d .../)
- end
-
- specify "can set secure cookies" do
- response = Rack::Response.new
- response.set_cookie "foo", {:value => "bar", :secure => true}
- response["Set-Cookie"].should.equal "foo=bar; secure"
- end
-
- specify "can set http only cookies" do
- response = Rack::Response.new
- response.set_cookie "foo", {:value => "bar", :httponly => true}
- response["Set-Cookie"].should.equal "foo=bar; HttpOnly"
- end
-
- specify "can delete cookies" do
- response = Rack::Response.new
- response.set_cookie "foo", "bar"
- response.set_cookie "foo2", "bar2"
- response.delete_cookie "foo"
- response["Set-Cookie"].should.equal ["foo2=bar2",
- "foo=; expires=Thu, 01-Jan-1970 00:00:00 GMT"]
- end
-
- specify "can do redirects" do
- response = Rack::Response.new
- response.redirect "/foo"
- status, header, body = response.finish
-
- status.should.equal 302
- header["Location"].should.equal "/foo"
-
- response = Rack::Response.new
- response.redirect "/foo", 307
- status, header, body = response.finish
-
- status.should.equal 307
- end
-
- specify "has a useful constructor" do
- r = Rack::Response.new("foo")
- status, header, body = r.finish
- str = ""; body.each { |part| str << part }
- str.should.equal "foo"
-
- r = Rack::Response.new(["foo", "bar"])
- status, header, body = r.finish
- str = ""; body.each { |part| str << part }
- str.should.equal "foobar"
-
- r = Rack::Response.new(["foo", "bar"].to_set)
- r.write "foo"
- status, header, body = r.finish
- str = ""; body.each { |part| str << part }
- str.should.equal "foobarfoo"
-
- r = Rack::Response.new([], 500)
- r.status.should.equal 500
-
- r = Rack::Response.new([], "200 OK")
- r.status.should.equal 200
- end
-
- specify "has a constructor that can take a block" do
- r = Rack::Response.new { |res|
- res.status = 404
- res.write "foo"
- }
- status, header, body = r.finish
- str = ""; body.each { |part| str << part }
- str.should.equal "foo"
- status.should.equal 404
- end
-
- specify "doesn't return invalid responses" do
- r = Rack::Response.new(["foo", "bar"], 204)
- status, header, body = r.finish
- str = ""; body.each { |part| str << part }
- str.should.be.empty
- header["Content-Type"].should.equal nil
-
- lambda {
- Rack::Response.new(Object.new)
- }.should.raise(TypeError).
- message.should =~ /stringable or iterable required/
- end
-
- specify "knows if it's empty" do
- r = Rack::Response.new
- r.should.be.empty
- r.write "foo"
- r.should.not.be.empty
-
- r = Rack::Response.new
- r.should.be.empty
- r.finish
- r.should.be.empty
-
- r = Rack::Response.new
- r.should.be.empty
- r.finish { }
- r.should.not.be.empty
- end
-
- specify "should provide access to the HTTP status" do
- res = Rack::Response.new
- res.status = 200
- res.should.be.successful
- res.should.be.ok
-
- res.status = 404
- res.should.not.be.successful
- res.should.be.client_error
- res.should.be.not_found
-
- res.status = 501
- res.should.not.be.successful
- res.should.be.server_error
-
- res.status = 307
- res.should.be.redirect
- end
-
- specify "should provide access to the HTTP headers" do
- res = Rack::Response.new
- res["Content-Type"] = "text/yaml"
-
- res.should.include "Content-Type"
- res.headers["Content-Type"].should.equal "text/yaml"
- res["Content-Type"].should.equal "text/yaml"
- res.content_type.should.equal "text/yaml"
- res.content_length.should.be.nil
- res.location.should.be.nil
- end
-
- specify "does not add or change Content-Length when #finish()ing" do
- res = Rack::Response.new
- res.status = 200
- res.finish
- res.headers["Content-Length"].should.be.nil
-
- res = Rack::Response.new
- res.status = 200
- res.headers["Content-Length"] = "10"
- res.finish
- res.headers["Content-Length"].should.equal "10"
- end
-
- specify "updates Content-Length when body appended to using #write" do
- res = Rack::Response.new
- res.status = 200
- res.headers["Content-Length"].should.be.nil
- res.write "Hi"
- res.headers["Content-Length"].should.equal "2"
- res.write " there"
- res.headers["Content-Length"].should.equal "8"
- end
-
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb b/vendor/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb
deleted file mode 100644
index 78bebfc90..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb
+++ /dev/null
@@ -1,118 +0,0 @@
-require 'test/spec'
-require 'stringio'
-require 'rack/rewindable_input'
-
-shared_context "a rewindable IO object" do
- setup do
- @rio = Rack::RewindableInput.new(@io)
- end
-
- teardown do
- @rio.close
- end
-
- specify "should be able to handle to read()" do
- @rio.read.should.equal "hello world"
- end
-
- specify "should be able to handle to read(nil)" do
- @rio.read(nil).should.equal "hello world"
- end
-
- specify "should be able to handle to read(length)" do
- @rio.read(1).should.equal "h"
- end
-
- specify "should be able to handle to read(length, buffer)" do
- buffer = ""
- result = @rio.read(1, buffer)
- result.should.equal "h"
- result.object_id.should.equal buffer.object_id
- end
-
- specify "should be able to handle to read(nil, buffer)" do
- buffer = ""
- result = @rio.read(nil, buffer)
- result.should.equal "hello world"
- result.object_id.should.equal buffer.object_id
- end
-
- specify "should rewind to the beginning when #rewind is called" do
- @rio.read(1)
- @rio.rewind
- @rio.read.should.equal "hello world"
- end
-
- specify "should be able to handle gets" do
- @rio.gets.should == "hello world"
- end
-
- specify "should be able to handle each" do
- array = []
- @rio.each do |data|
- array << data
- end
- array.should.equal(["hello world"])
- end
-
- specify "should not buffer into a Tempfile if no data has been read yet" do
- @rio.instance_variable_get(:@rewindable_io).should.be.nil
- end
-
- specify "should buffer into a Tempfile when data has been consumed for the first time" do
- @rio.read(1)
- tempfile = @rio.instance_variable_get(:@rewindable_io)
- tempfile.should.not.be.nil
- @rio.read(1)
- tempfile2 = @rio.instance_variable_get(:@rewindable_io)
- tempfile2.should.equal tempfile
- end
-
- specify "should close the underlying tempfile upon calling #close" do
- @rio.read(1)
- tempfile = @rio.instance_variable_get(:@rewindable_io)
- @rio.close
- tempfile.should.be.closed
- end
-
- specify "should be possibel to call #close when no data has been buffered yet" do
- @rio.close
- end
-
- specify "should be possible to call #close multiple times" do
- @rio.close
- @rio.close
- end
-end
-
-context "Rack::RewindableInput" do
- context "given an IO object that is already rewindable" do
- setup do
- @io = StringIO.new("hello world")
- end
-
- it_should_behave_like "a rewindable IO object"
- end
-
- context "given an IO object that is not rewindable" do
- setup do
- @io = StringIO.new("hello world")
- @io.instance_eval do
- undef :rewind
- end
- end
-
- it_should_behave_like "a rewindable IO object"
- end
-
- context "given an IO object whose rewind method raises Errno::ESPIPE" do
- setup do
- @io = StringIO.new("hello world")
- def @io.rewind
- raise Errno::ESPIPE, "You can't rewind this!"
- end
- end
-
- it_should_behave_like "a rewindable IO object"
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_runtime.rb b/vendor/gems/rack-1.1.0/test/spec_rack_runtime.rb
deleted file mode 100644
index 62d809564..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_runtime.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'test/spec'
-require 'rack/mock'
-require 'rack/runtime'
-
-context "Rack::Runtime" do
- specify "sets X-Runtime is none is set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
- response = Rack::Runtime.new(app).call({})
- response[1]['X-Runtime'].should =~ /[\d\.]+/
- end
-
- specify "does not set the X-Runtime if it is already set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain', "X-Runtime" => "foobar"}, "Hello, World!"] }
- response = Rack::Runtime.new(app).call({})
- response[1]['X-Runtime'].should == "foobar"
- end
-
- specify "should allow a suffix to be set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
- response = Rack::Runtime.new(app, "Test").call({})
- response[1]['X-Runtime-Test'].should =~ /[\d\.]+/
- end
-
- specify "should allow multiple timers to be set" do
- app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
- runtime1 = Rack::Runtime.new(app, "App")
- runtime2 = Rack::Runtime.new(runtime1, "All")
- response = runtime2.call({})
-
- response[1]['X-Runtime-App'].should =~ /[\d\.]+/
- response[1]['X-Runtime-All'].should =~ /[\d\.]+/
-
- Float(response[1]['X-Runtime-All']).should > Float(response[1]['X-Runtime-App'])
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_sendfile.rb b/vendor/gems/rack-1.1.0/test/spec_rack_sendfile.rb
deleted file mode 100644
index 8cfe2017b..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_sendfile.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-require 'test/spec'
-require 'rack/mock'
-require 'rack/sendfile'
-
-context "Rack::File" do
- specify "should respond to #to_path" do
- Rack::File.new(Dir.pwd).should.respond_to :to_path
- end
-end
-
-context "Rack::Sendfile" do
- def sendfile_body
- res = ['Hello World']
- def res.to_path ; "/tmp/hello.txt" ; end
- res
- end
-
- def simple_app(body=sendfile_body)
- lambda { |env| [200, {'Content-Type' => 'text/plain'}, body] }
- end
-
- def sendfile_app(body=sendfile_body)
- Rack::Sendfile.new(simple_app(body))
- end
-
- setup do
- @request = Rack::MockRequest.new(sendfile_app)
- end
-
- def request(headers={})
- yield @request.get('/', headers)
- end
-
- specify "does nothing when no X-Sendfile-Type header present" do
- request do |response|
- response.should.be.ok
- response.body.should.equal 'Hello World'
- response.headers.should.not.include 'X-Sendfile'
- end
- end
-
- specify "sets X-Sendfile response header and discards body" do
- request 'HTTP_X_SENDFILE_TYPE' => 'X-Sendfile' do |response|
- response.should.be.ok
- response.body.should.be.empty
- response.headers['X-Sendfile'].should.equal '/tmp/hello.txt'
- end
- end
-
- specify "sets X-Lighttpd-Send-File response header and discards body" do
- request 'HTTP_X_SENDFILE_TYPE' => 'X-Lighttpd-Send-File' do |response|
- response.should.be.ok
- response.body.should.be.empty
- response.headers['X-Lighttpd-Send-File'].should.equal '/tmp/hello.txt'
- end
- end
-
- specify "sets X-Accel-Redirect response header and discards body" do
- headers = {
- 'HTTP_X_SENDFILE_TYPE' => 'X-Accel-Redirect',
- 'HTTP_X_ACCEL_MAPPING' => '/tmp/=/foo/bar/'
- }
- request headers do |response|
- response.should.be.ok
- response.body.should.be.empty
- response.headers['X-Accel-Redirect'].should.equal '/foo/bar/hello.txt'
- end
- end
-
- specify 'writes to rack.error when no X-Accel-Mapping is specified' do
- request 'HTTP_X_SENDFILE_TYPE' => 'X-Accel-Redirect' do |response|
- response.should.be.ok
- response.body.should.equal 'Hello World'
- response.headers.should.not.include 'X-Accel-Redirect'
- response.errors.should.include 'X-Accel-Mapping'
- end
- end
-
- specify 'does nothing when body does not respond to #to_path' do
- @request = Rack::MockRequest.new(sendfile_app(['Not a file...']))
- request 'HTTP_X_SENDFILE_TYPE' => 'X-Sendfile' do |response|
- response.body.should.equal 'Not a file...'
- response.headers.should.not.include 'X-Sendfile'
- end
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_session_cookie.rb b/vendor/gems/rack-1.1.0/test/spec_rack_session_cookie.rb
deleted file mode 100644
index fba3f83bf..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_session_cookie.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-require 'test/spec'
-
-require 'rack/session/cookie'
-require 'rack/mock'
-require 'rack/response'
-
-context "Rack::Session::Cookie" do
- incrementor = lambda { |env|
- env["rack.session"]["counter"] ||= 0
- env["rack.session"]["counter"] += 1
- Rack::Response.new(env["rack.session"].inspect).to_a
- }
-
- specify "creates a new cookie" do
- res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/")
- res["Set-Cookie"].should.match("rack.session=")
- res.body.should.equal '{"counter"=>1}'
- end
-
- specify "loads from a cookie" do
- res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/")
- cookie = res["Set-Cookie"]
- res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).
- get("/", "HTTP_COOKIE" => cookie)
- res.body.should.equal '{"counter"=>2}'
- cookie = res["Set-Cookie"]
- res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).
- get("/", "HTTP_COOKIE" => cookie)
- res.body.should.equal '{"counter"=>3}'
- end
-
- specify "survives broken cookies" do
- res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).
- get("/", "HTTP_COOKIE" => "rack.session=blarghfasel")
- res.body.should.equal '{"counter"=>1}'
- end
-
- bigcookie = lambda { |env|
- env["rack.session"]["cookie"] = "big" * 3000
- Rack::Response.new(env["rack.session"].inspect).to_a
- }
-
- specify "barks on too big cookies" do
- lambda {
- Rack::MockRequest.new(Rack::Session::Cookie.new(bigcookie)).
- get("/", :fatal => true)
- }.should.raise(Rack::MockRequest::FatalWarning)
- end
-
- specify "loads from a cookie wih integrity hash" do
- res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).get("/")
- cookie = res["Set-Cookie"]
- res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).
- get("/", "HTTP_COOKIE" => cookie)
- res.body.should.equal '{"counter"=>2}'
- cookie = res["Set-Cookie"]
- res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).
- get("/", "HTTP_COOKIE" => cookie)
- res.body.should.equal '{"counter"=>3}'
- end
-
- specify "ignores tampered with session cookies" do
- app = Rack::Session::Cookie.new(incrementor, :secret => 'test')
- response1 = Rack::MockRequest.new(app).get("/")
- _, digest = response1["Set-Cookie"].split("--")
- tampered_with_cookie = "hackerman-was-here" + "--" + digest
- response2 = Rack::MockRequest.new(app).get("/", "HTTP_COOKIE" =>
- tampered_with_cookie)
-
- # The tampered-with cookie is ignored, so we get back an identical Set-Cookie
- response2["Set-Cookie"].should.equal(response1["Set-Cookie"])
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_session_memcache.rb b/vendor/gems/rack-1.1.0/test/spec_rack_session_memcache.rb
deleted file mode 100644
index faac796eb..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_session_memcache.rb
+++ /dev/null
@@ -1,273 +0,0 @@
-require 'test/spec'
-
-begin
- require 'rack/session/memcache'
- require 'rack/mock'
- require 'rack/response'
- require 'thread'
-
- context "Rack::Session::Memcache" do
- session_key = Rack::Session::Memcache::DEFAULT_OPTIONS[:key]
- session_match = /#{session_key}=([0-9a-fA-F]+);/
- incrementor = lambda do |env|
- env["rack.session"]["counter"] ||= 0
- env["rack.session"]["counter"] += 1
- Rack::Response.new(env["rack.session"].inspect).to_a
- end
- drop_session = proc do |env|
- env['rack.session.options'][:drop] = true
- incrementor.call(env)
- end
- renew_session = proc do |env|
- env['rack.session.options'][:renew] = true
- incrementor.call(env)
- end
- defer_session = proc do |env|
- env['rack.session.options'][:defer] = true
- incrementor.call(env)
- end
-
- specify "faults on no connection" do
- if RUBY_VERSION < "1.9"
- lambda do
- Rack::Session::Memcache.new incrementor, :memcache_server => 'nosuchserver'
- end.should.raise
- else
- lambda do
- Rack::Session::Memcache.new incrementor, :memcache_server => 'nosuchserver'
- end.should.raise ArgumentError
- end
- end
-
- specify "connect to existing server" do
- test_pool = MemCache.new incrementor, :namespace => 'test:rack:session'
- end
-
- specify "creates a new cookie" do
- pool = Rack::Session::Memcache.new(incrementor)
- res = Rack::MockRequest.new(pool).get("/")
- res["Set-Cookie"].should.match("#{session_key}=")
- res.body.should.equal '{"counter"=>1}'
- end
-
- specify "determines session from a cookie" do
- pool = Rack::Session::Memcache.new(incrementor)
- req = Rack::MockRequest.new(pool)
- res = req.get("/")
- cookie = res["Set-Cookie"]
- req.get("/", "HTTP_COOKIE" => cookie).
- body.should.equal '{"counter"=>2}'
- req.get("/", "HTTP_COOKIE" => cookie).
- body.should.equal '{"counter"=>3}'
- end
-
- specify "survives nonexistant cookies" do
- bad_cookie = "rack.session=blarghfasel"
- pool = Rack::Session::Memcache.new(incrementor)
- res = Rack::MockRequest.new(pool).
- get("/", "HTTP_COOKIE" => bad_cookie)
- res.body.should.equal '{"counter"=>1}'
- cookie = res["Set-Cookie"][session_match]
- cookie.should.not.match(/#{bad_cookie}/)
- end
-
- specify "maintains freshness" do
- pool = Rack::Session::Memcache.new(incrementor, :expire_after => 3)
- res = Rack::MockRequest.new(pool).get('/')
- res.body.should.include '"counter"=>1'
- cookie = res["Set-Cookie"]
- res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
- res["Set-Cookie"].should.equal cookie
- res.body.should.include '"counter"=>2'
- puts 'Sleeping to expire session' if $DEBUG
- sleep 4
- res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
- res["Set-Cookie"].should.not.equal cookie
- res.body.should.include '"counter"=>1'
- end
-
- specify "deletes cookies with :drop option" do
- pool = Rack::Session::Memcache.new(incrementor)
- req = Rack::MockRequest.new(pool)
- drop = Rack::Utils::Context.new(pool, drop_session)
- dreq = Rack::MockRequest.new(drop)
-
- res0 = req.get("/")
- session = (cookie = res0["Set-Cookie"])[session_match]
- res0.body.should.equal '{"counter"=>1}'
-
- res1 = req.get("/", "HTTP_COOKIE" => cookie)
- res1["Set-Cookie"][session_match].should.equal session
- res1.body.should.equal '{"counter"=>2}'
-
- res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
- res2["Set-Cookie"].should.equal nil
- res2.body.should.equal '{"counter"=>3}'
-
- res3 = req.get("/", "HTTP_COOKIE" => cookie)
- res3["Set-Cookie"][session_match].should.not.equal session
- res3.body.should.equal '{"counter"=>1}'
- end
-
- specify "provides new session id with :renew option" do
- pool = Rack::Session::Memcache.new(incrementor)
- req = Rack::MockRequest.new(pool)
- renew = Rack::Utils::Context.new(pool, renew_session)
- rreq = Rack::MockRequest.new(renew)
-
- res0 = req.get("/")
- session = (cookie = res0["Set-Cookie"])[session_match]
- res0.body.should.equal '{"counter"=>1}'
-
- res1 = req.get("/", "HTTP_COOKIE" => cookie)
- res1["Set-Cookie"][session_match].should.equal session
- res1.body.should.equal '{"counter"=>2}'
-
- res2 = rreq.get("/", "HTTP_COOKIE" => cookie)
- new_cookie = res2["Set-Cookie"]
- new_session = new_cookie[session_match]
- new_session.should.not.equal session
- res2.body.should.equal '{"counter"=>3}'
-
- res3 = req.get("/", "HTTP_COOKIE" => new_cookie)
- res3["Set-Cookie"][session_match].should.equal new_session
- res3.body.should.equal '{"counter"=>4}'
- end
-
- specify "omits cookie with :defer option" do
- pool = Rack::Session::Memcache.new(incrementor)
- req = Rack::MockRequest.new(pool)
- defer = Rack::Utils::Context.new(pool, defer_session)
- dreq = Rack::MockRequest.new(defer)
-
- res0 = req.get("/")
- session = (cookie = res0["Set-Cookie"])[session_match]
- res0.body.should.equal '{"counter"=>1}'
-
- res1 = req.get("/", "HTTP_COOKIE" => cookie)
- res1["Set-Cookie"][session_match].should.equal session
- res1.body.should.equal '{"counter"=>2}'
-
- res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
- res2["Set-Cookie"].should.equal nil
- res2.body.should.equal '{"counter"=>3}'
-
- res3 = req.get("/", "HTTP_COOKIE" => cookie)
- res3["Set-Cookie"][session_match].should.equal session
- res3.body.should.equal '{"counter"=>4}'
- end
-
- specify "deep hashes are correctly updated" do
- store = nil
- hash_check = proc do |env|
- session = env['rack.session']
- unless session.include? 'test'
- session.update :a => :b, :c => { :d => :e },
- :f => { :g => { :h => :i} }, 'test' => true
- else
- session[:f][:g][:h] = :j
- end
- [200, {}, session.inspect]
- end
- pool = Rack::Session::Memcache.new(hash_check)
- req = Rack::MockRequest.new(pool)
-
- res0 = req.get("/")
- session_id = (cookie = res0["Set-Cookie"])[session_match, 1]
- ses0 = pool.pool.get(session_id, true)
-
- res1 = req.get("/", "HTTP_COOKIE" => cookie)
- ses1 = pool.pool.get(session_id, true)
-
- ses1.should.not.equal ses0
- end
-
- # anyone know how to do this better?
- specify "multithread: should cleanly merge sessions" do
- next unless $DEBUG
- warn 'Running multithread test for Session::Memcache'
- pool = Rack::Session::Memcache.new(incrementor)
- req = Rack::MockRequest.new(pool)
-
- res = req.get('/')
- res.body.should.equal '{"counter"=>1}'
- cookie = res["Set-Cookie"]
- session_id = cookie[session_match, 1]
-
- delta_incrementor = lambda do |env|
- # emulate disconjoinment of threading
- env['rack.session'] = env['rack.session'].dup
- Thread.stop
- env['rack.session'][(Time.now.usec*rand).to_i] = true
- incrementor.call(env)
- end
- tses = Rack::Utils::Context.new pool, delta_incrementor
- treq = Rack::MockRequest.new(tses)
- tnum = rand(7).to_i+5
- r = Array.new(tnum) do
- Thread.new(treq) do |run|
- run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
- end
- end.reverse.map{|t| t.run.join.value }
- r.each do |request|
- request['Set-Cookie'].should.equal cookie
- request.body.should.include '"counter"=>2'
- end
-
- session = pool.pool.get(session_id)
- session.size.should.be tnum+1 # counter
- session['counter'].should.be 2 # meeeh
-
- tnum = rand(7).to_i+5
- r = Array.new(tnum) do |i|
- delta_time = proc do |env|
- env['rack.session'][i] = Time.now
- Thread.stop
- env['rack.session'] = env['rack.session'].dup
- env['rack.session'][i] -= Time.now
- incrementor.call(env)
- end
- app = Rack::Utils::Context.new pool, time_delta
- req = Rack::MockRequest.new app
- Thread.new(req) do |run|
- run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
- end
- end.reverse.map{|t| t.run.join.value }
- r.each do |request|
- request['Set-Cookie'].should.equal cookie
- request.body.should.include '"counter"=>3'
- end
-
- session = pool.pool.get(session_id)
- session.size.should.be tnum+1
- session['counter'].should.be 3
-
- drop_counter = proc do |env|
- env['rack.session'].delete 'counter'
- env['rack.session']['foo'] = 'bar'
- [200, {'Content-Type'=>'text/plain'}, env['rack.session'].inspect]
- end
- tses = Rack::Utils::Context.new pool, drop_counter
- treq = Rack::MockRequest.new(tses)
- tnum = rand(7).to_i+5
- r = Array.new(tnum) do
- Thread.new(treq) do |run|
- run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
- end
- end.reverse.map{|t| t.run.join.value }
- r.each do |request|
- request['Set-Cookie'].should.equal cookie
- request.body.should.include '"foo"=>"bar"'
- end
-
- session = pool.pool.get(session_id)
- session.size.should.be r.size+1
- session['counter'].should.be.nil?
- session['foo'].should.equal 'bar'
- end
- end
-rescue RuntimeError
- $stderr.puts "Skipping Rack::Session::Memcache tests. Start memcached and try again."
-rescue LoadError
- $stderr.puts "Skipping Rack::Session::Memcache tests (Memcache is required). `gem install memcache-client` and try again."
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_session_pool.rb b/vendor/gems/rack-1.1.0/test/spec_rack_session_pool.rb
deleted file mode 100644
index 6be382ec7..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_session_pool.rb
+++ /dev/null
@@ -1,172 +0,0 @@
-require 'test/spec'
-
-require 'rack/session/pool'
-require 'rack/mock'
-require 'rack/response'
-require 'thread'
-
-context "Rack::Session::Pool" do
- session_key = Rack::Session::Pool::DEFAULT_OPTIONS[:key]
- session_match = /#{session_key}=[0-9a-fA-F]+;/
- incrementor = lambda do |env|
- env["rack.session"]["counter"] ||= 0
- env["rack.session"]["counter"] += 1
- Rack::Response.new(env["rack.session"].inspect).to_a
- end
- drop_session = proc do |env|
- env['rack.session.options'][:drop] = true
- incrementor.call(env)
- end
- renew_session = proc do |env|
- env['rack.session.options'][:renew] = true
- incrementor.call(env)
- end
- defer_session = proc do |env|
- env['rack.session.options'][:defer] = true
- incrementor.call(env)
- end
-
- specify "creates a new cookie" do
- pool = Rack::Session::Pool.new(incrementor)
- res = Rack::MockRequest.new(pool).get("/")
- res["Set-Cookie"].should.match session_match
- res.body.should.equal '{"counter"=>1}'
- end
-
- specify "determines session from a cookie" do
- pool = Rack::Session::Pool.new(incrementor)
- req = Rack::MockRequest.new(pool)
- cookie = req.get("/")["Set-Cookie"]
- req.get("/", "HTTP_COOKIE" => cookie).
- body.should.equal '{"counter"=>2}'
- req.get("/", "HTTP_COOKIE" => cookie).
- body.should.equal '{"counter"=>3}'
- end
-
- specify "survives nonexistant cookies" do
- pool = Rack::Session::Pool.new(incrementor)
- res = Rack::MockRequest.new(pool).
- get("/", "HTTP_COOKIE" => "#{session_key}=blarghfasel")
- res.body.should.equal '{"counter"=>1}'
- end
-
- specify "deletes cookies with :drop option" do
- pool = Rack::Session::Pool.new(incrementor)
- req = Rack::MockRequest.new(pool)
- drop = Rack::Utils::Context.new(pool, drop_session)
- dreq = Rack::MockRequest.new(drop)
-
- res0 = req.get("/")
- session = (cookie = res0["Set-Cookie"])[session_match]
- res0.body.should.equal '{"counter"=>1}'
- pool.pool.size.should.be 1
-
- res1 = req.get("/", "HTTP_COOKIE" => cookie)
- res1["Set-Cookie"][session_match].should.equal session
- res1.body.should.equal '{"counter"=>2}'
- pool.pool.size.should.be 1
-
- res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
- res2["Set-Cookie"].should.equal nil
- res2.body.should.equal '{"counter"=>3}'
- pool.pool.size.should.be 0
-
- res3 = req.get("/", "HTTP_COOKIE" => cookie)
- res3["Set-Cookie"][session_match].should.not.equal session
- res3.body.should.equal '{"counter"=>1}'
- pool.pool.size.should.be 1
- end
-
- specify "provides new session id with :renew option" do
- pool = Rack::Session::Pool.new(incrementor)
- req = Rack::MockRequest.new(pool)
- renew = Rack::Utils::Context.new(pool, renew_session)
- rreq = Rack::MockRequest.new(renew)
-
- res0 = req.get("/")
- session = (cookie = res0["Set-Cookie"])[session_match]
- res0.body.should.equal '{"counter"=>1}'
- pool.pool.size.should.be 1
-
- res1 = req.get("/", "HTTP_COOKIE" => cookie)
- res1["Set-Cookie"][session_match].should.equal session
- res1.body.should.equal '{"counter"=>2}'
- pool.pool.size.should.be 1
-
- res2 = rreq.get("/", "HTTP_COOKIE" => cookie)
- new_cookie = res2["Set-Cookie"]
- new_session = new_cookie[session_match]
- new_session.should.not.equal session
- res2.body.should.equal '{"counter"=>3}'
- pool.pool.size.should.be 1
-
- res3 = req.get("/", "HTTP_COOKIE" => new_cookie)
- res3["Set-Cookie"][session_match].should.equal new_session
- res3.body.should.equal '{"counter"=>4}'
- pool.pool.size.should.be 1
- end
-
- specify "omits cookie with :defer option" do
- pool = Rack::Session::Pool.new(incrementor)
- req = Rack::MockRequest.new(pool)
- defer = Rack::Utils::Context.new(pool, defer_session)
- dreq = Rack::MockRequest.new(defer)
-
- res0 = req.get("/")
- session = (cookie = res0["Set-Cookie"])[session_match]
- res0.body.should.equal '{"counter"=>1}'
- pool.pool.size.should.be 1
-
- res1 = req.get("/", "HTTP_COOKIE" => cookie)
- res1["Set-Cookie"][session_match].should.equal session
- res1.body.should.equal '{"counter"=>2}'
- pool.pool.size.should.be 1
-
- res2 = dreq.get("/", "HTTP_COOKIE" => cookie)
- res2["Set-Cookie"].should.equal nil
- res2.body.should.equal '{"counter"=>3}'
- pool.pool.size.should.be 1
-
- res3 = req.get("/", "HTTP_COOKIE" => cookie)
- res3["Set-Cookie"][session_match].should.equal session
- res3.body.should.equal '{"counter"=>4}'
- pool.pool.size.should.be 1
- end
-
- # anyone know how to do this better?
- specify "multithread: should merge sessions" do
- next unless $DEBUG
- warn 'Running multithread tests for Session::Pool'
- pool = Rack::Session::Pool.new(incrementor)
- req = Rack::MockRequest.new(pool)
-
- res = req.get('/')
- res.body.should.equal '{"counter"=>1}'
- cookie = res["Set-Cookie"]
- sess_id = cookie[/#{pool.key}=([^,;]+)/,1]
-
- delta_incrementor = lambda do |env|
- # emulate disconjoinment of threading
- env['rack.session'] = env['rack.session'].dup
- Thread.stop
- env['rack.session'][(Time.now.usec*rand).to_i] = true
- incrementor.call(env)
- end
- tses = Rack::Utils::Context.new pool, delta_incrementor
- treq = Rack::MockRequest.new(tses)
- tnum = rand(7).to_i+5
- r = Array.new(tnum) do
- Thread.new(treq) do |run|
- run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true)
- end
- end.reverse.map{|t| t.run.join.value }
- r.each do |res|
- res['Set-Cookie'].should.equal cookie
- res.body.should.include '"counter"=>2'
- end
-
- session = pool.pool[sess_id]
- session.size.should.be tnum+1 # counter
- session['counter'].should.be 2 # meeeh
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_showexceptions.rb b/vendor/gems/rack-1.1.0/test/spec_rack_showexceptions.rb
deleted file mode 100644
index bdbc12013..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_showexceptions.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'test/spec'
-
-require 'rack/showexceptions'
-require 'rack/mock'
-
-context "Rack::ShowExceptions" do
- specify "catches exceptions" do
- res = nil
- req = Rack::MockRequest.new(Rack::ShowExceptions.new(lambda { |env|
- raise RuntimeError
- }))
- lambda {
- res = req.get("/")
- }.should.not.raise
- res.should.be.a.server_error
- res.status.should.equal 500
-
- res.should =~ /RuntimeError/
- res.should =~ /ShowExceptions/
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_showstatus.rb b/vendor/gems/rack-1.1.0/test/spec_rack_showstatus.rb
deleted file mode 100644
index 787001341..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_showstatus.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-require 'test/spec'
-
-require 'rack/showstatus'
-require 'rack/mock'
-
-context "Rack::ShowStatus" do
- specify "should provide a default status message" do
- req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env|
- [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []]
- }))
-
- res = req.get("/", :lint => true)
- res.should.be.not_found
- res.should.be.not.empty
-
- res["Content-Type"].should.equal("text/html")
- res.should =~ /404/
- res.should =~ /Not Found/
- end
-
- specify "should let the app provide additional information" do
- req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env|
- env["rack.showstatus.detail"] = "gone too meta."
- [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []]
- }))
-
- res = req.get("/", :lint => true)
- res.should.be.not_found
- res.should.be.not.empty
-
- res["Content-Type"].should.equal("text/html")
- res.should =~ /404/
- res.should =~ /Not Found/
- res.should =~ /too meta/
- end
-
- specify "should not replace existing messages" do
- req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env|
- [404, {"Content-Type" => "text/plain", "Content-Length" => "4"}, ["foo!"]]
- }))
- res = req.get("/", :lint => true)
- res.should.be.not_found
-
- res.body.should == "foo!"
- end
-
- specify "should pass on original headers" do
- headers = {"WWW-Authenticate" => "Basic blah"}
-
- req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| [401, headers, []] }))
- res = req.get("/", :lint => true)
-
- res["WWW-Authenticate"].should.equal("Basic blah")
- end
-
- specify "should replace existing messages if there is detail" do
- req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env|
- env["rack.showstatus.detail"] = "gone too meta."
- [404, {"Content-Type" => "text/plain", "Content-Length" => "4"}, ["foo!"]]
- }))
-
- res = req.get("/", :lint => true)
- res.should.be.not_found
- res.should.be.not.empty
-
- res["Content-Type"].should.equal("text/html")
- res["Content-Length"].should.not.equal("4")
- res.should =~ /404/
- res.should =~ /too meta/
- res.body.should.not =~ /foo/
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_static.rb b/vendor/gems/rack-1.1.0/test/spec_rack_static.rb
deleted file mode 100644
index 19d2ecb7e..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_static.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'test/spec'
-
-require 'rack/static'
-require 'rack/mock'
-
-class DummyApp
- def call(env)
- [200, {}, ["Hello World"]]
- end
-end
-
-context "Rack::Static" do
- root = File.expand_path(File.dirname(__FILE__))
- OPTIONS = {:urls => ["/cgi"], :root => root}
-
- setup do
- @request = Rack::MockRequest.new(Rack::Static.new(DummyApp.new, OPTIONS))
- end
-
- specify "serves files" do
- res = @request.get("/cgi/test")
- res.should.be.ok
- res.body.should =~ /ruby/
- end
-
- specify "404s if url root is known but it can't find the file" do
- res = @request.get("/cgi/foo")
- res.should.be.not_found
- end
-
- specify "calls down the chain if url root is not known" do
- res = @request.get("/something/else")
- res.should.be.ok
- res.body.should == "Hello World"
- end
-
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_thin.rb b/vendor/gems/rack-1.1.0/test/spec_rack_thin.rb
deleted file mode 100644
index 324f64986..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_thin.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require 'test/spec'
-
-begin
-require 'rack/handler/thin'
-require 'testrequest'
-require 'timeout'
-
-context "Rack::Handler::Thin" do
- include TestRequest::Helpers
-
- setup do
- @app = Rack::Lint.new(TestRequest.new)
- @server = nil
- Thin::Logging.silent = true
- @thread = Thread.new do
- Rack::Handler::Thin.run(@app, :Host => @host='0.0.0.0', :Port => @port=9204) do |server|
- @server = server
- end
- end
- Thread.pass until @server && @server.running?
- end
-
- specify "should respond" do
- lambda {
- GET("/")
- }.should.not.raise
- end
-
- specify "should be a Thin" do
- GET("/")
- status.should.be 200
- response["SERVER_SOFTWARE"].should =~ /thin/
- response["HTTP_VERSION"].should.equal "HTTP/1.1"
- response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
- response["SERVER_PORT"].should.equal "9204"
- response["SERVER_NAME"].should.equal "0.0.0.0"
- end
-
- specify "should have rack headers" do
- GET("/")
- response["rack.version"].should.equal [0,3]
- response["rack.multithread"].should.be false
- response["rack.multiprocess"].should.be false
- response["rack.run_once"].should.be false
- end
-
- specify "should have CGI headers on GET" do
- GET("/")
- response["REQUEST_METHOD"].should.equal "GET"
- response["REQUEST_PATH"].should.equal "/"
- response["PATH_INFO"].should.be.equal "/"
- response["QUERY_STRING"].should.equal ""
- response["test.postdata"].should.equal ""
-
- GET("/test/foo?quux=1")
- response["REQUEST_METHOD"].should.equal "GET"
- response["REQUEST_PATH"].should.equal "/test/foo"
- response["PATH_INFO"].should.equal "/test/foo"
- response["QUERY_STRING"].should.equal "quux=1"
- end
-
- specify "should have CGI headers on POST" do
- POST("/", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
- status.should.equal 200
- response["REQUEST_METHOD"].should.equal "POST"
- response["REQUEST_PATH"].should.equal "/"
- response["QUERY_STRING"].should.equal ""
- response["HTTP_X_TEST_HEADER"].should.equal "42"
- response["test.postdata"].should.equal "rack-form-data=23"
- end
-
- specify "should support HTTP auth" do
- GET("/test", {:user => "ruth", :passwd => "secret"})
- response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
- end
-
- specify "should set status" do
- GET("/test?secret")
- status.should.equal 403
- response["rack.url_scheme"].should.equal "http"
- end
-
- teardown do
- @server.stop!
- @thread.kill
- end
-end
-
-rescue LoadError
- $stderr.puts "Skipping Rack::Handler::Thin tests (Thin is required). `gem install thin` and try again."
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_urlmap.rb b/vendor/gems/rack-1.1.0/test/spec_rack_urlmap.rb
deleted file mode 100644
index 3d8fe6053..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_urlmap.rb
+++ /dev/null
@@ -1,215 +0,0 @@
-require 'test/spec'
-
-require 'rack/urlmap'
-require 'rack/mock'
-
-context "Rack::URLMap" do
- specify "dispatches paths correctly" do
- app = lambda { |env|
- [200, {
- 'X-ScriptName' => env['SCRIPT_NAME'],
- 'X-PathInfo' => env['PATH_INFO'],
- 'Content-Type' => 'text/plain'
- }, [""]]
- }
- map = Rack::URLMap.new({
- 'http://foo.org/bar' => app,
- '/foo' => app,
- '/foo/bar' => app
- })
-
- res = Rack::MockRequest.new(map).get("/")
- res.should.be.not_found
-
- res = Rack::MockRequest.new(map).get("/qux")
- res.should.be.not_found
-
- res = Rack::MockRequest.new(map).get("/foo")
- res.should.be.ok
- res["X-ScriptName"].should.equal "/foo"
- res["X-PathInfo"].should.equal ""
-
- res = Rack::MockRequest.new(map).get("/foo/")
- res.should.be.ok
- res["X-ScriptName"].should.equal "/foo"
- res["X-PathInfo"].should.equal "/"
-
- res = Rack::MockRequest.new(map).get("/foo/bar")
- res.should.be.ok
- res["X-ScriptName"].should.equal "/foo/bar"
- res["X-PathInfo"].should.equal ""
-
- res = Rack::MockRequest.new(map).get("/foo/bar/")
- res.should.be.ok
- res["X-ScriptName"].should.equal "/foo/bar"
- res["X-PathInfo"].should.equal "/"
-
- res = Rack::MockRequest.new(map).get("/foo///bar//quux")
- res.status.should.equal 200
- res.should.be.ok
- res["X-ScriptName"].should.equal "/foo/bar"
- res["X-PathInfo"].should.equal "//quux"
-
- res = Rack::MockRequest.new(map).get("/foo/quux", "SCRIPT_NAME" => "/bleh")
- res.should.be.ok
- res["X-ScriptName"].should.equal "/bleh/foo"
- res["X-PathInfo"].should.equal "/quux"
-
- res = Rack::MockRequest.new(map).get("/bar", 'HTTP_HOST' => 'foo.org')
- res.should.be.ok
- res["X-ScriptName"].should.equal "/bar"
- res["X-PathInfo"].should.be.empty
-
- res = Rack::MockRequest.new(map).get("/bar/", 'HTTP_HOST' => 'foo.org')
- res.should.be.ok
- res["X-ScriptName"].should.equal "/bar"
- res["X-PathInfo"].should.equal '/'
- end
-
-
- specify "dispatches hosts correctly" do
- map = Rack::URLMap.new("http://foo.org/" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "foo.org",
- "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"],
- }, [""]]},
- "http://subdomain.foo.org/" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "subdomain.foo.org",
- "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"],
- }, [""]]},
- "http://bar.org/" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "bar.org",
- "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"],
- }, [""]]},
- "/" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "default.org",
- "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"],
- }, [""]]}
- )
-
- res = Rack::MockRequest.new(map).get("/")
- res.should.be.ok
- res["X-Position"].should.equal "default.org"
-
- res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "bar.org")
- res.should.be.ok
- res["X-Position"].should.equal "bar.org"
-
- res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "foo.org")
- res.should.be.ok
- res["X-Position"].should.equal "foo.org"
-
- res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "subdomain.foo.org", "SERVER_NAME" => "foo.org")
- res.should.be.ok
- res["X-Position"].should.equal "subdomain.foo.org"
-
- res = Rack::MockRequest.new(map).get("http://foo.org/")
- res.should.be.ok
- res["X-Position"].should.equal "default.org"
-
- res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "example.org")
- res.should.be.ok
- res["X-Position"].should.equal "default.org"
-
- res = Rack::MockRequest.new(map).get("/",
- "HTTP_HOST" => "example.org:9292",
- "SERVER_PORT" => "9292")
- res.should.be.ok
- res["X-Position"].should.equal "default.org"
- end
-
- specify "should be nestable" do
- map = Rack::URLMap.new("/foo" =>
- Rack::URLMap.new("/bar" =>
- Rack::URLMap.new("/quux" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "/foo/bar/quux",
- "X-PathInfo" => env["PATH_INFO"],
- "X-ScriptName" => env["SCRIPT_NAME"],
- }, [""]]}
- )))
-
- res = Rack::MockRequest.new(map).get("/foo/bar")
- res.should.be.not_found
-
- res = Rack::MockRequest.new(map).get("/foo/bar/quux")
- res.should.be.ok
- res["X-Position"].should.equal "/foo/bar/quux"
- res["X-PathInfo"].should.equal ""
- res["X-ScriptName"].should.equal "/foo/bar/quux"
- end
-
- specify "should route root apps correctly" do
- map = Rack::URLMap.new("/" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "root",
- "X-PathInfo" => env["PATH_INFO"],
- "X-ScriptName" => env["SCRIPT_NAME"]
- }, [""]]},
- "/foo" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "foo",
- "X-PathInfo" => env["PATH_INFO"],
- "X-ScriptName" => env["SCRIPT_NAME"]
- }, [""]]}
- )
-
- res = Rack::MockRequest.new(map).get("/foo/bar")
- res.should.be.ok
- res["X-Position"].should.equal "foo"
- res["X-PathInfo"].should.equal "/bar"
- res["X-ScriptName"].should.equal "/foo"
-
- res = Rack::MockRequest.new(map).get("/foo")
- res.should.be.ok
- res["X-Position"].should.equal "foo"
- res["X-PathInfo"].should.equal ""
- res["X-ScriptName"].should.equal "/foo"
-
- res = Rack::MockRequest.new(map).get("/bar")
- res.should.be.ok
- res["X-Position"].should.equal "root"
- res["X-PathInfo"].should.equal "/bar"
- res["X-ScriptName"].should.equal ""
-
- res = Rack::MockRequest.new(map).get("")
- res.should.be.ok
- res["X-Position"].should.equal "root"
- res["X-PathInfo"].should.equal "/"
- res["X-ScriptName"].should.equal ""
- end
-
- specify "should not squeeze slashes" do
- map = Rack::URLMap.new("/" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "root",
- "X-PathInfo" => env["PATH_INFO"],
- "X-ScriptName" => env["SCRIPT_NAME"]
- }, [""]]},
- "/foo" => lambda { |env|
- [200,
- { "Content-Type" => "text/plain",
- "X-Position" => "foo",
- "X-PathInfo" => env["PATH_INFO"],
- "X-ScriptName" => env["SCRIPT_NAME"]
- }, [""]]}
- )
-
- res = Rack::MockRequest.new(map).get("/http://example.org/bar")
- res.should.be.ok
- res["X-Position"].should.equal "root"
- res["X-PathInfo"].should.equal "/http://example.org/bar"
- res["X-ScriptName"].should.equal ""
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_utils.rb b/vendor/gems/rack-1.1.0/test/spec_rack_utils.rb
deleted file mode 100644
index 269a52bdf..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_utils.rb
+++ /dev/null
@@ -1,552 +0,0 @@
-require 'test/spec'
-
-require 'rack/utils'
-require 'rack/lint'
-require 'rack/mock'
-
-context "Rack::Utils" do
- specify "should escape correctly" do
- Rack::Utils.escape("fo<o>bar").should.equal "fo%3Co%3Ebar"
- Rack::Utils.escape("a space").should.equal "a+space"
- Rack::Utils.escape("q1!2\"'w$5&7/z8)?\\").
- should.equal "q1%212%22%27w%245%267%2Fz8%29%3F%5C"
- end
-
- specify "should escape correctly for multibyte characters" do
- matz_name = "\xE3\x81\xBE\xE3\x81\xA4\xE3\x82\x82\xE3\x81\xA8".unpack("a*")[0] # Matsumoto
- matz_name.force_encoding("UTF-8") if matz_name.respond_to? :force_encoding
- Rack::Utils.escape(matz_name).should.equal '%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8'
- matz_name_sep = "\xE3\x81\xBE\xE3\x81\xA4 \xE3\x82\x82\xE3\x81\xA8".unpack("a*")[0] # Matsu moto
- matz_name_sep.force_encoding("UTF-8") if matz_name_sep.respond_to? :force_encoding
- Rack::Utils.escape(matz_name_sep).should.equal '%E3%81%BE%E3%81%A4+%E3%82%82%E3%81%A8'
- end
-
- specify "should unescape correctly" do
- Rack::Utils.unescape("fo%3Co%3Ebar").should.equal "fo<o>bar"
- Rack::Utils.unescape("a+space").should.equal "a space"
- Rack::Utils.unescape("a%20space").should.equal "a space"
- Rack::Utils.unescape("q1%212%22%27w%245%267%2Fz8%29%3F%5C").
- should.equal "q1!2\"'w$5&7/z8)?\\"
- end
-
- specify "should parse query strings correctly" do
- Rack::Utils.parse_query("foo=bar").
- should.equal "foo" => "bar"
- Rack::Utils.parse_query("foo=\"bar\"").
- should.equal "foo" => "bar"
- Rack::Utils.parse_query("foo=bar&foo=quux").
- should.equal "foo" => ["bar", "quux"]
- Rack::Utils.parse_query("foo=1&bar=2").
- should.equal "foo" => "1", "bar" => "2"
- Rack::Utils.parse_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F").
- should.equal "my weird field" => "q1!2\"'w$5&7/z8)?"
- Rack::Utils.parse_query("foo%3Dbaz=bar").should.equal "foo=baz" => "bar"
- end
-
- specify "should parse nested query strings correctly" do
- Rack::Utils.parse_nested_query("foo").
- should.equal "foo" => nil
- Rack::Utils.parse_nested_query("foo=").
- should.equal "foo" => ""
- Rack::Utils.parse_nested_query("foo=bar").
- should.equal "foo" => "bar"
- Rack::Utils.parse_nested_query("foo=\"bar\"").
- should.equal "foo" => "bar"
-
- Rack::Utils.parse_nested_query("foo=bar&foo=quux").
- should.equal "foo" => "quux"
- Rack::Utils.parse_nested_query("foo&foo=").
- should.equal "foo" => ""
- Rack::Utils.parse_nested_query("foo=1&bar=2").
- should.equal "foo" => "1", "bar" => "2"
- Rack::Utils.parse_nested_query("&foo=1&&bar=2").
- should.equal "foo" => "1", "bar" => "2"
- Rack::Utils.parse_nested_query("foo&bar=").
- should.equal "foo" => nil, "bar" => ""
- Rack::Utils.parse_nested_query("foo=bar&baz=").
- should.equal "foo" => "bar", "baz" => ""
- Rack::Utils.parse_nested_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F").
- should.equal "my weird field" => "q1!2\"'w$5&7/z8)?"
-
- Rack::Utils.parse_nested_query("foo[]").
- should.equal "foo" => [nil]
- Rack::Utils.parse_nested_query("foo[]=").
- should.equal "foo" => [""]
- Rack::Utils.parse_nested_query("foo[]=bar").
- should.equal "foo" => ["bar"]
-
- Rack::Utils.parse_nested_query("foo[]=1&foo[]=2").
- should.equal "foo" => ["1", "2"]
- Rack::Utils.parse_nested_query("foo=bar&baz[]=1&baz[]=2&baz[]=3").
- should.equal "foo" => "bar", "baz" => ["1", "2", "3"]
- Rack::Utils.parse_nested_query("foo[]=bar&baz[]=1&baz[]=2&baz[]=3").
- should.equal "foo" => ["bar"], "baz" => ["1", "2", "3"]
-
- Rack::Utils.parse_nested_query("x[y][z]=1").
- should.equal "x" => {"y" => {"z" => "1"}}
- Rack::Utils.parse_nested_query("x[y][z][]=1").
- should.equal "x" => {"y" => {"z" => ["1"]}}
- Rack::Utils.parse_nested_query("x[y][z]=1&x[y][z]=2").
- should.equal "x" => {"y" => {"z" => "2"}}
- Rack::Utils.parse_nested_query("x[y][z][]=1&x[y][z][]=2").
- should.equal "x" => {"y" => {"z" => ["1", "2"]}}
-
- Rack::Utils.parse_nested_query("x[y][][z]=1").
- should.equal "x" => {"y" => [{"z" => "1"}]}
- Rack::Utils.parse_nested_query("x[y][][z][]=1").
- should.equal "x" => {"y" => [{"z" => ["1"]}]}
- Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][w]=2").
- should.equal "x" => {"y" => [{"z" => "1", "w" => "2"}]}
-
- Rack::Utils.parse_nested_query("x[y][][v][w]=1").
- should.equal "x" => {"y" => [{"v" => {"w" => "1"}}]}
- Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][v][w]=2").
- should.equal "x" => {"y" => [{"z" => "1", "v" => {"w" => "2"}}]}
-
- Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][z]=2").
- should.equal "x" => {"y" => [{"z" => "1"}, {"z" => "2"}]}
- Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][w]=a&x[y][][z]=2&x[y][][w]=3").
- should.equal "x" => {"y" => [{"z" => "1", "w" => "a"}, {"z" => "2", "w" => "3"}]}
-
- lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y]z=2") }.
- should.raise(TypeError).
- message.should.equal "expected Hash (got String) for param `y'"
-
- lambda { Rack::Utils.parse_nested_query("x[y]=1&x[]=1") }.
- should.raise(TypeError).
- message.should.equal "expected Array (got Hash) for param `x'"
-
- lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y][][w]=2") }.
- should.raise(TypeError).
- message.should.equal "expected Array (got String) for param `y'"
- end
-
- specify "should build query strings correctly" do
- Rack::Utils.build_query("foo" => "bar").should.equal "foo=bar"
- Rack::Utils.build_query("foo" => ["bar", "quux"]).
- should.equal "foo=bar&foo=quux"
- Rack::Utils.build_query("foo" => "1", "bar" => "2").
- should.equal "foo=1&bar=2"
- Rack::Utils.build_query("my weird field" => "q1!2\"'w$5&7/z8)?").
- should.equal "my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F"
- end
-
- specify "should build nested query strings correctly" do
- Rack::Utils.build_nested_query("foo" => nil).should.equal "foo"
- Rack::Utils.build_nested_query("foo" => "").should.equal "foo="
- Rack::Utils.build_nested_query("foo" => "bar").should.equal "foo=bar"
-
- Rack::Utils.build_nested_query("foo" => "1", "bar" => "2").
- should.equal "foo=1&bar=2"
- Rack::Utils.build_nested_query("my weird field" => "q1!2\"'w$5&7/z8)?").
- should.equal "my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F"
-
- Rack::Utils.build_nested_query("foo" => [nil]).
- should.equal "foo[]"
- Rack::Utils.build_nested_query("foo" => [""]).
- should.equal "foo[]="
- Rack::Utils.build_nested_query("foo" => ["bar"]).
- should.equal "foo[]=bar"
-
- # The ordering of the output query string is unpredictable with 1.8's
- # unordered hash. Test that build_nested_query performs the inverse
- # function of parse_nested_query.
- [{"foo" => nil, "bar" => ""},
- {"foo" => "bar", "baz" => ""},
- {"foo" => ["1", "2"]},
- {"foo" => "bar", "baz" => ["1", "2", "3"]},
- {"foo" => ["bar"], "baz" => ["1", "2", "3"]},
- {"foo" => ["1", "2"]},
- {"foo" => "bar", "baz" => ["1", "2", "3"]},
- {"x" => {"y" => {"z" => "1"}}},
- {"x" => {"y" => {"z" => ["1"]}}},
- {"x" => {"y" => {"z" => ["1", "2"]}}},
- {"x" => {"y" => [{"z" => "1"}]}},
- {"x" => {"y" => [{"z" => ["1"]}]}},
- {"x" => {"y" => [{"z" => "1", "w" => "2"}]}},
- {"x" => {"y" => [{"v" => {"w" => "1"}}]}},
- {"x" => {"y" => [{"z" => "1", "v" => {"w" => "2"}}]}},
- {"x" => {"y" => [{"z" => "1"}, {"z" => "2"}]}},
- {"x" => {"y" => [{"z" => "1", "w" => "a"}, {"z" => "2", "w" => "3"}]}}
- ].each { |params|
- qs = Rack::Utils.build_nested_query(params)
- Rack::Utils.parse_nested_query(qs).should.equal params
- }
-
- lambda { Rack::Utils.build_nested_query("foo=bar") }.
- should.raise(ArgumentError).
- message.should.equal "value must be a Hash"
- end
-
- specify "should figure out which encodings are acceptable" do
- helper = lambda do |a, b|
- request = Rack::Request.new(Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => a))
- Rack::Utils.select_best_encoding(a, b)
- end
-
- helper.call(%w(), [["x", 1]]).should.equal(nil)
- helper.call(%w(identity), [["identity", 0.0]]).should.equal(nil)
- helper.call(%w(identity), [["*", 0.0]]).should.equal(nil)
-
- helper.call(%w(identity), [["compress", 1.0], ["gzip", 1.0]]).should.equal("identity")
-
- helper.call(%w(compress gzip identity), [["compress", 1.0], ["gzip", 1.0]]).should.equal("compress")
- helper.call(%w(compress gzip identity), [["compress", 0.5], ["gzip", 1.0]]).should.equal("gzip")
-
- helper.call(%w(foo bar identity), []).should.equal("identity")
- helper.call(%w(foo bar identity), [["*", 1.0]]).should.equal("foo")
- helper.call(%w(foo bar identity), [["*", 1.0], ["foo", 0.9]]).should.equal("bar")
-
- helper.call(%w(foo bar identity), [["foo", 0], ["bar", 0]]).should.equal("identity")
- helper.call(%w(foo bar baz identity), [["*", 0], ["identity", 0.1]]).should.equal("identity")
- end
-
- specify "should return the bytesize of String" do
- Rack::Utils.bytesize("FOO\xE2\x82\xAC").should.equal 6
- end
-
- specify "should return status code for integer" do
- Rack::Utils.status_code(200).should.equal 200
- end
-
- specify "should return status code for string" do
- Rack::Utils.status_code("200").should.equal 200
- end
-
- specify "should return status code for symbol" do
- Rack::Utils.status_code(:ok).should.equal 200
- end
-end
-
-context "Rack::Utils::HeaderHash" do
- specify "should retain header case" do
- h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...")
- h['ETag'] = 'Boo!'
- h.to_hash.should.equal "Content-MD5" => "d5ff4e2a0 ...", "ETag" => 'Boo!'
- end
-
- specify "should check existence of keys case insensitively" do
- h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...")
- h.should.include 'content-md5'
- h.should.not.include 'ETag'
- end
-
- specify "should merge case-insensitively" do
- h = Rack::Utils::HeaderHash.new("ETag" => 'HELLO', "content-length" => '123')
- merged = h.merge("Etag" => 'WORLD', 'Content-Length' => '321', "Foo" => 'BAR')
- merged.should.equal "Etag"=>'WORLD', "Content-Length"=>'321', "Foo"=>'BAR'
- end
-
- specify "should overwrite case insensitively and assume the new key's case" do
- h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz")
- h["foo-bar"] = "bizzle"
- h["FOO-BAR"].should.equal "bizzle"
- h.length.should.equal 1
- h.to_hash.should.equal "foo-bar" => "bizzle"
- end
-
- specify "should be converted to real Hash" do
- h = Rack::Utils::HeaderHash.new("foo" => "bar")
- h.to_hash.should.be.instance_of Hash
- end
-
- specify "should convert Array values to Strings when converting to Hash" do
- h = Rack::Utils::HeaderHash.new("foo" => ["bar", "baz"])
- h.to_hash.should.equal({ "foo" => "bar\nbaz" })
- end
-
- specify "should replace hashes correctly" do
- h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz")
- j = {"foo" => "bar"}
- h.replace(j)
- h["foo"].should.equal "bar"
- end
-
- specify "should be able to delete the given key case-sensitively" do
- h = Rack::Utils::HeaderHash.new("foo" => "bar")
- h.delete("foo")
- h["foo"].should.be.nil
- h["FOO"].should.be.nil
- end
-
- specify "should be able to delete the given key case-insensitively" do
- h = Rack::Utils::HeaderHash.new("foo" => "bar")
- h.delete("FOO")
- h["foo"].should.be.nil
- h["FOO"].should.be.nil
- end
-
- specify "should return the deleted value when #delete is called on an existing key" do
- h = Rack::Utils::HeaderHash.new("foo" => "bar")
- h.delete("Foo").should.equal("bar")
- end
-
- specify "should return nil when #delete is called on a non-existant key" do
- h = Rack::Utils::HeaderHash.new("foo" => "bar")
- h.delete("Hello").should.be.nil
- end
-
- specify "should avoid unnecessary object creation if possible" do
- a = Rack::Utils::HeaderHash.new("foo" => "bar")
- b = Rack::Utils::HeaderHash.new(a)
- b.object_id.should.equal(a.object_id)
- b.should.equal(a)
- end
-
- specify "should convert Array values to Strings when responding to #each" do
- h = Rack::Utils::HeaderHash.new("foo" => ["bar", "baz"])
- h.each do |k,v|
- k.should.equal("foo")
- v.should.equal("bar\nbaz")
- end
- end
-
-end
-
-context "Rack::Utils::Context" do
- class ContextTest
- attr_reader :app
- def initialize app; @app=app; end
- def call env; context env; end
- def context env, app=@app; app.call(env); end
- end
- test_target1 = proc{|e| e.to_s+' world' }
- test_target2 = proc{|e| e.to_i+2 }
- test_target3 = proc{|e| nil }
- test_target4 = proc{|e| [200,{'Content-Type'=>'text/plain', 'Content-Length'=>'0'},['']] }
- test_app = ContextTest.new test_target4
-
- specify "should set context correctly" do
- test_app.app.should.equal test_target4
- c1 = Rack::Utils::Context.new(test_app, test_target1)
- c1.for.should.equal test_app
- c1.app.should.equal test_target1
- c2 = Rack::Utils::Context.new(test_app, test_target2)
- c2.for.should.equal test_app
- c2.app.should.equal test_target2
- end
-
- specify "should alter app on recontexting" do
- c1 = Rack::Utils::Context.new(test_app, test_target1)
- c2 = c1.recontext(test_target2)
- c2.for.should.equal test_app
- c2.app.should.equal test_target2
- c3 = c2.recontext(test_target3)
- c3.for.should.equal test_app
- c3.app.should.equal test_target3
- end
-
- specify "should run different apps" do
- c1 = Rack::Utils::Context.new test_app, test_target1
- c2 = c1.recontext test_target2
- c3 = c2.recontext test_target3
- c4 = c3.recontext test_target4
- a4 = Rack::Lint.new c4
- a5 = Rack::Lint.new test_app
- r1 = c1.call('hello')
- r1.should.equal 'hello world'
- r2 = c2.call(2)
- r2.should.equal 4
- r3 = c3.call(:misc_symbol)
- r3.should.be.nil
- r4 = Rack::MockRequest.new(a4).get('/')
- r4.status.should.be 200
- r5 = Rack::MockRequest.new(a5).get('/')
- r5.status.should.be 200
- r4.body.should.equal r5.body
- end
-end
-
-context "Rack::Utils::Multipart" do
- specify "should return nil if content type is not multipart" do
- env = Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => 'application/x-www-form-urlencoded')
- Rack::Utils::Multipart.parse_multipart(env).should.equal nil
- end
-
- specify "should parse multipart upload with text file" do
- env = Rack::MockRequest.env_for("/", multipart_fixture(:text))
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["submit-name"].should.equal "Larry"
- params["files"][:type].should.equal "text/plain"
- params["files"][:filename].should.equal "file1.txt"
- params["files"][:head].should.equal "Content-Disposition: form-data; " +
- "name=\"files\"; filename=\"file1.txt\"\r\n" +
- "Content-Type: text/plain\r\n"
- params["files"][:name].should.equal "files"
- params["files"][:tempfile].read.should.equal "contents"
- end
-
- specify "should parse multipart upload with nested parameters" do
- env = Rack::MockRequest.env_for("/", multipart_fixture(:nested))
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["foo"]["submit-name"].should.equal "Larry"
- params["foo"]["files"][:type].should.equal "text/plain"
- params["foo"]["files"][:filename].should.equal "file1.txt"
- params["foo"]["files"][:head].should.equal "Content-Disposition: form-data; " +
- "name=\"foo[files]\"; filename=\"file1.txt\"\r\n" +
- "Content-Type: text/plain\r\n"
- params["foo"]["files"][:name].should.equal "foo[files]"
- params["foo"]["files"][:tempfile].read.should.equal "contents"
- end
-
- specify "should parse multipart upload with binary file" do
- env = Rack::MockRequest.env_for("/", multipart_fixture(:binary))
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["submit-name"].should.equal "Larry"
- params["files"][:type].should.equal "image/png"
- params["files"][:filename].should.equal "rack-logo.png"
- params["files"][:head].should.equal "Content-Disposition: form-data; " +
- "name=\"files\"; filename=\"rack-logo.png\"\r\n" +
- "Content-Type: image/png\r\n"
- params["files"][:name].should.equal "files"
- params["files"][:tempfile].read.length.should.equal 26473
- end
-
- specify "should parse multipart upload with empty file" do
- env = Rack::MockRequest.env_for("/", multipart_fixture(:empty))
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["submit-name"].should.equal "Larry"
- params["files"][:type].should.equal "text/plain"
- params["files"][:filename].should.equal "file1.txt"
- params["files"][:head].should.equal "Content-Disposition: form-data; " +
- "name=\"files\"; filename=\"file1.txt\"\r\n" +
- "Content-Type: text/plain\r\n"
- params["files"][:name].should.equal "files"
- params["files"][:tempfile].read.should.equal ""
- end
-
- specify "should parse multipart upload with filename with semicolons" do
- env = Rack::MockRequest.env_for("/", multipart_fixture(:semicolon))
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["files"][:type].should.equal "text/plain"
- params["files"][:filename].should.equal "fi;le1.txt"
- params["files"][:head].should.equal "Content-Disposition: form-data; " +
- "name=\"files\"; filename=\"fi;le1.txt\"\r\n" +
- "Content-Type: text/plain\r\n"
- params["files"][:name].should.equal "files"
- params["files"][:tempfile].read.should.equal "contents"
- end
-
- specify "should not include file params if no file was selected" do
- env = Rack::MockRequest.env_for("/", multipart_fixture(:none))
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["submit-name"].should.equal "Larry"
- params["files"].should.equal nil
- params.keys.should.not.include "files"
- end
-
- specify "should parse IE multipart upload and clean up filename" do
- env = Rack::MockRequest.env_for("/", multipart_fixture(:ie))
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["files"][:type].should.equal "text/plain"
- params["files"][:filename].should.equal "file1.txt"
- params["files"][:head].should.equal "Content-Disposition: form-data; " +
- "name=\"files\"; " +
- 'filename="C:\Documents and Settings\Administrator\Desktop\file1.txt"' +
- "\r\nContent-Type: text/plain\r\n"
- params["files"][:name].should.equal "files"
- params["files"][:tempfile].read.should.equal "contents"
- end
-
- specify "rewinds input after parsing upload" do
- options = multipart_fixture(:text)
- input = options[:input]
- env = Rack::MockRequest.env_for("/", options)
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["submit-name"].should.equal "Larry"
- params["files"][:filename].should.equal "file1.txt"
- input.read.length.should.equal 197
- end
-
- specify "builds multipart body" do
- files = Rack::Utils::Multipart::UploadedFile.new(multipart_file("file1.txt"))
- data = Rack::Utils::Multipart.build_multipart("submit-name" => "Larry", "files" => files)
-
- options = {
- "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x",
- "CONTENT_LENGTH" => data.length.to_s,
- :input => StringIO.new(data)
- }
- env = Rack::MockRequest.env_for("/", options)
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["submit-name"].should.equal "Larry"
- params["files"][:filename].should.equal "file1.txt"
- params["files"][:tempfile].read.should.equal "contents"
- end
-
- specify "builds nested multipart body" do
- files = Rack::Utils::Multipart::UploadedFile.new(multipart_file("file1.txt"))
- data = Rack::Utils::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => files}])
-
- options = {
- "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x",
- "CONTENT_LENGTH" => data.length.to_s,
- :input => StringIO.new(data)
- }
- env = Rack::MockRequest.env_for("/", options)
- params = Rack::Utils::Multipart.parse_multipart(env)
- params["people"][0]["submit-name"].should.equal "Larry"
- params["people"][0]["files"][:filename].should.equal "file1.txt"
- params["people"][0]["files"][:tempfile].read.should.equal "contents"
- end
-
- specify "can parse fields that end at the end of the buffer" do
- input = File.read(multipart_file("bad_robots"))
-
- req = Rack::Request.new Rack::MockRequest.env_for("/",
- "CONTENT_TYPE" => "multipart/form-data, boundary=1yy3laWhgX31qpiHinh67wJXqKalukEUTvqTzmon",
- "CONTENT_LENGTH" => input.size,
- :input => input)
-
- req.POST['file.path'].should.equal "/var/tmp/uploads/4/0001728414"
- req.POST['addresses'].should.not.equal nil
- end
-
- specify "builds complete params with the chunk size of 16384 slicing exactly on boundary" do
- data = File.open(multipart_file("fail_16384_nofile")) { |f| f.read }.gsub(/\n/, "\r\n")
- options = {
- "CONTENT_TYPE" => "multipart/form-data; boundary=----WebKitFormBoundaryWsY0GnpbI5U7ztzo",
- "CONTENT_LENGTH" => data.length.to_s,
- :input => StringIO.new(data)
- }
- env = Rack::MockRequest.env_for("/", options)
- params = Rack::Utils::Multipart.parse_multipart(env)
-
- params.should.not.equal nil
- params.keys.should.include "AAAAAAAAAAAAAAAAAAA"
- params["AAAAAAAAAAAAAAAAAAA"].keys.should.include "PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"
- params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"].keys.should.include "new"
- params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"].keys.should.include "-2"
- params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"]["-2"].keys.should.include "ba_unit_id"
- params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"]["-2"]["ba_unit_id"].should.equal "1017"
- end
-
- specify "should return nil if no UploadedFiles were used" do
- data = Rack::Utils::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => "contents"}])
- data.should.equal nil
- end
-
- specify "should raise ArgumentError if params is not a Hash" do
- lambda { Rack::Utils::Multipart.build_multipart("foo=bar") }.
- should.raise(ArgumentError).
- message.should.equal "value must be a Hash"
- end
-
- private
- def multipart_fixture(name)
- file = multipart_file(name)
- data = File.open(file, 'rb') { |io| io.read }
-
- type = "multipart/form-data; boundary=AaB03x"
- length = data.respond_to?(:bytesize) ? data.bytesize : data.size
-
- { "CONTENT_TYPE" => type,
- "CONTENT_LENGTH" => length.to_s,
- :input => StringIO.new(data) }
- end
-
- def multipart_file(name)
- File.join(File.dirname(__FILE__), "multipart", name.to_s)
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rack_webrick.rb b/vendor/gems/rack-1.1.0/test/spec_rack_webrick.rb
deleted file mode 100644
index 599425c4f..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rack_webrick.rb
+++ /dev/null
@@ -1,130 +0,0 @@
-require 'test/spec'
-
-require 'rack/handler/webrick'
-require 'rack/lint'
-require 'rack/response'
-require 'testrequest'
-
-Thread.abort_on_exception = true
-
-context "Rack::Handler::WEBrick" do
- include TestRequest::Helpers
-
- setup do
- @server = WEBrick::HTTPServer.new(:Host => @host='0.0.0.0',
- :Port => @port=9202,
- :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
- :AccessLog => [])
- @server.mount "/test", Rack::Handler::WEBrick,
- Rack::Lint.new(TestRequest.new)
- Thread.new { @server.start }
- trap(:INT) { @server.shutdown }
- end
-
- specify "should respond" do
- lambda {
- GET("/test")
- }.should.not.raise
- end
-
- specify "should be a WEBrick" do
- GET("/test")
- status.should.be 200
- response["SERVER_SOFTWARE"].should =~ /WEBrick/
- response["HTTP_VERSION"].should.equal "HTTP/1.1"
- response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
- response["SERVER_PORT"].should.equal "9202"
- response["SERVER_NAME"].should.equal "0.0.0.0"
- end
-
- specify "should have rack headers" do
- GET("/test")
- response["rack.version"].should.equal [1,1]
- response["rack.multithread"].should.be true
- response["rack.multiprocess"].should.be false
- response["rack.run_once"].should.be false
- end
-
- specify "should have CGI headers on GET" do
- GET("/test")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/"
- response["PATH_INFO"].should.be.equal ""
- response["QUERY_STRING"].should.equal ""
- response["test.postdata"].should.equal ""
-
- GET("/test/foo?quux=1")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/"
- response["PATH_INFO"].should.equal "/foo"
- response["QUERY_STRING"].should.equal "quux=1"
-
- GET("/test/foo%25encoding?quux=1")
- response["REQUEST_METHOD"].should.equal "GET"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/"
- response["PATH_INFO"].should.equal "/foo%25encoding"
- response["QUERY_STRING"].should.equal "quux=1"
- end
-
- specify "should have CGI headers on POST" do
- POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
- status.should.equal 200
- response["REQUEST_METHOD"].should.equal "POST"
- response["SCRIPT_NAME"].should.equal "/test"
- response["REQUEST_PATH"].should.equal "/"
- response["QUERY_STRING"].should.equal ""
- response["HTTP_X_TEST_HEADER"].should.equal "42"
- response["test.postdata"].should.equal "rack-form-data=23"
- end
-
- specify "should support HTTP auth" do
- GET("/test", {:user => "ruth", :passwd => "secret"})
- response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
- end
-
- specify "should set status" do
- GET("/test?secret")
- status.should.equal 403
- response["rack.url_scheme"].should.equal "http"
- end
-
- specify "should correctly set cookies" do
- @server.mount "/cookie-test", Rack::Handler::WEBrick,
- Rack::Lint.new(lambda { |req|
- res = Rack::Response.new
- res.set_cookie "one", "1"
- res.set_cookie "two", "2"
- res.finish
- })
-
- Net::HTTP.start(@host, @port) { |http|
- res = http.get("/cookie-test")
- res.code.to_i.should.equal 200
- res.get_fields("set-cookie").should.equal ["one=1", "two=2"]
- }
- end
-
- specify "should provide a .run" do
- block_ran = false
- catch(:done) {
- Rack::Handler::WEBrick.run(lambda {},
- {:Port => 9210,
- :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
- :AccessLog => []}) { |server|
- block_ran = true
- server.should.be.kind_of WEBrick::HTTPServer
- @s = server
- throw :done
- }
- }
- block_ran.should.be true
- @s.shutdown
- end
-
- teardown do
- @server.shutdown
- end
-end
diff --git a/vendor/gems/rack-1.1.0/test/spec_rackup.rb b/vendor/gems/rack-1.1.0/test/spec_rackup.rb
deleted file mode 100644
index d9926fda0..000000000
--- a/vendor/gems/rack-1.1.0/test/spec_rackup.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require 'test/spec'
-require 'testrequest'
-require 'rack/server'
-require 'open3'
-
-begin
-require "mongrel"
-
-context "rackup" do
- include TestRequest::Helpers
-
- def run_rackup(*args)
- options = args.last.is_a?(Hash) ? args.pop : {}
- flags = args.first
- @host = options[:host] || "0.0.0.0"
- @port = options[:port] || 9292
-
- Dir.chdir("#{root}/test/rackup") do
- @in, @rackup, @err = Open3.popen3("#{Gem.ruby} -S #{rackup} #{flags}")
- end
-
- return if options[:port] == false
-
- # Wait until the server is available
- begin
- GET("/")
- rescue
- sleep 0.05
- retry
- end
- end
-
- def output
- @rackup.read
- end
-
- after do
- # This doesn't actually return a response, so we rescue
- GET "/die" rescue nil
-
- Dir["#{root}/**/*.pid"].each do |file|
- File.delete(file)
- end
-
- File.delete("#{root}/log_output") if File.exist?("#{root}/log_output")
- end
-
- specify "rackup" do
- run_rackup
- response["PATH_INFO"].should.equal '/'
- response["test.$DEBUG"].should.be false
- response["test.$EVAL"].should.be nil
- response["test.$VERBOSE"].should.be false
- response["test.Ping"].should.be nil
- response["SERVER_SOFTWARE"].should.not =~ /webrick/
- end
-
- specify "rackup --help" do
- run_rackup "--help", :port => false
- output.should.match /--port/
- end
-
- specify "rackup --port" do
- run_rackup "--port 9000", :port => 9000
- response["SERVER_PORT"].should.equal "9000"
- end
-
- specify "rackup --debug" do
- run_rackup "--debug"
- response["test.$DEBUG"].should.be true
- end
-
- specify "rackup --eval" do
- run_rackup %{--eval "BUKKIT = 'BUKKIT'"}
- response["test.$EVAL"].should.equal "BUKKIT"
- end
-
- specify "rackup --warn" do
- run_rackup %{--warn}
- response["test.$VERBOSE"].should.be true
- end
-
- specify "rackup --include" do
- run_rackup %{--include /foo/bar}
- response["test.$LOAD_PATH"].should.include "/foo/bar"
- end
-
- specify "rackup --require" do
- run_rackup %{--require ping}
- response["test.Ping"].should.equal "constant"
- end
-
- specify "rackup --server" do
- run_rackup %{--server webrick}
- response["SERVER_SOFTWARE"].should =~ /webrick/i
- end
-
- specify "rackup --host" do
- run_rackup %{--host 127.0.0.1}, :host => "127.0.0.1"
- response["REMOTE_ADDR"].should.equal "127.0.0.1"
- end
-
- specify "rackup --daemonize --pid" do
- run_rackup %{--daemonize --pid testing.pid}
- status.should.be 200
- @rackup.should.be.eof?
- Dir["#{root}/**/testing.pid"].should.not.be.empty?
- end
-
- specify "rackup --pid" do
- run_rackup %{--pid testing.pid}
- status.should.be 200
- Dir["#{root}/**/testing.pid"].should.not.be.empty?
- end
-
- specify "rackup --version" do
- run_rackup %{--version}, :port => false
- output.should =~ /1.0/
- end
-
- specify "rackup --env development includes lint" do
- run_rackup
- GET("/broken_lint")
- status.should.be 500
- end
-
- specify "rackup --env deployment does not include lint" do
- run_rackup %{--env deployment}
- GET("/broken_lint")
- status.should.be 200
- end
-
- specify "rackup --env none does not include lint" do
- run_rackup %{--env none}
- GET("/broken_lint")
- status.should.be 200
- end
-
- specify "rackup --env deployment does log" do
- run_rackup %{--env deployment}
- log = File.read(response["test.stderr"])
- log.should.be.empty?
- end
-
- specify "rackup --env none does not log" do
- run_rackup %{--env none}
- GET("/")
- log = File.read(response["test.stderr"])
- log.should.be.empty?
- end
-end
-rescue LoadError
- $stderr.puts "Skipping rackup --server tests (mongrel is required). `gem install thin` and try again."
-end \ No newline at end of file
diff --git a/vendor/gems/rdoc-2.4.3/.document b/vendor/gems/rdoc-2.4.3/.document
deleted file mode 100644
index 1c483f467..000000000
--- a/vendor/gems/rdoc-2.4.3/.document
+++ /dev/null
@@ -1,4 +0,0 @@
-History.txt
-README.txt
-RI.txt
-lib
diff --git a/vendor/gems/rdoc-2.4.3/.specification b/vendor/gems/rdoc-2.4.3/.specification
deleted file mode 100644
index 7686b6c1b..000000000
--- a/vendor/gems/rdoc-2.4.3/.specification
+++ /dev/null
@@ -1,57 +0,0 @@
---- !ruby/object:Gem::Specification
-name: rdoc
-version: !ruby/object:Gem::Version
- version: 2.4.3
-platform: ruby
-authors: []
-
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2011-08-24 00:00:00 +01:00
-default_executable:
-dependencies: []
-
-description:
-email:
-executables: []
-
-extensions: []
-
-extra_rdoc_files: []
-
-files:
-- lib
-- lib/rdoc
-- lib/rdoc.rb
-has_rdoc: false
-homepage:
-post_install_message:
-rdoc_options: []
-
-require_paths:
-- bin
-- bin
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- version: "0"
- version:
-required_rubygems_version: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- version: "0"
- version:
-requirements: []
-
-rubyforge_project:
-rubygems_version: 1.2.0
-signing_key:
-specification_version: 2
-summary:
-test_files: []
-
diff --git a/vendor/gems/rdoc-2.4.3/History.txt b/vendor/gems/rdoc-2.4.3/History.txt
deleted file mode 100644
index be15d1420..000000000
--- a/vendor/gems/rdoc-2.4.3/History.txt
+++ /dev/null
@@ -1,260 +0,0 @@
-=== 2.4.3 / 2009-04-01
-
-* 2 Bug Fixes
- * Corrected patch for file links
- * Corrected display of file popup
-
-=== 2.4.2 / 2009-03-25
-
-* 2 Minor Enhancements
- * Added --pipe for turning RDoc on stdin into HTML
- * Added rdoc/task.rb containing a replacement for rake/rdoctask.rb. Use
- RDoc::Task now instead of Rake::RDocTask.
-
-* 10 Bug Fixes
- * Writing the ri cache file to the proper directory. Bug #24459 by Lars
- Christensen.
- * Possible fix for Dir::[] and Pathname interaction on 1.9. Bug #24650 by
- tiburon.
- * Fixed scanning constants for if/end, etc. pairs. Bug #24609 by Ryan
- Davis.
- * Fixed private methods in the C parser. Bug #24599 by Aaron Patterson.
- * Fixed display of markup on RDoc main page. Bug #24168 by rhubarb.
- * Fixed display of \\ character in documentation proceeding words.
- Bug #22112 by James Gray. See RDoc for details.
- * Fixed parsing and display of arg params for some corner cases. Bug #21113
- by Csiszár Attila.
- * Fixed links in Files box. Patch #24403 by Eric Wong.
- * Toplevel methods now appear in Object. Bug #22677 by Ryan Davis.
- * Added back --promiscuous which didn't do anything you cared about. Why
- did you enable it? Nobody looked at that page! Oh, it warns, too.
-
-=== 2.4.1 / 2009-02-26
-
-* 1 Minor Enhancements
- * Added :attr:, :attr_reader:, :attr_writer:, :attr_accessor: directives.
- Replaces --accessor. See RDoc::Parser::Ruby for details.
-
-* 3 Bug Fixes
- * Don't complain when exiting normally. Bug by Matt Neuburg.
- * Restore --inline-source that warns
- * Fixed links to files in Darkfish output
-
-=== 2.4.0 / 2009-02-24
-
-* 9 Minor Enhancements
- * `ri -f html` is now XHTML-happy
- * Clarified RDoc::Markup link syntax. Bug #23517 by Eric Armstrong.
- * Number of threads to parse with is now configurable
- * Darkfish can now use alternate templates from $LOAD_PATH via -T
- * Removed F95 parser in favor of the rdoc-f95 gem
- * Moved HTML and XML generators to unmaintained
- * No gem will be provided as it's too difficult to make them work
- * Removed options --one-file, --style=, --inline-source, --promiscuous,
- --op-name
- * Removed support for --accessor, use regular documentation or
- the method directive instead. See RDoc::Parser::Ruby
- * Removed --ri-system as it is unused by Ruby's makefiles
- * Added method list to index.html
-
-* 6 Bug Fixes
- * nodoc'd classes no longer appear in the index. Bug #23751 by Clifford
- Heath.
- * Fix 1.9 compatibility issues. Bug #23815 by paddor.
- * Darkfish now respects --charset
- * RDoc no longer attempts to be lazy when building HTML. This is a
- workaround. Bug #23893 by Stefano Crocco.
- * RDoc doesn't crash with def (blah).foo() end
- * RDoc doesn't crash with #define functions
-
-=== 2.3.0 / 2009-01-28
-
-* 3 Major Enhancements
- * Michael Granger's Darkfish generator is now the default for HTML output
- * Various rdoc generation speedups by Hongli Lai. Patches #22555, #22556,
- #22557, #22562, #22565.
- * rdoc/discover.rb files are loaded automatically from installed gems
-
-* 8 Minor Enhancements
- * Added a space after the commas in ri class method lists. RubyForge
- enhancement #22182.
- * Improved ri --interactive
- * Generators can now override generated file locations
- * Moved unmaintained CHM generator to it's own package
- * Moved unmaintained extra HTML templates to their own package
- * Removed experimental texinfo generator
- * Converted to minitest
- * Known classes and modules list outputs once per line now for grep
-
-* 11 Bug Fixes
- * Fix missing superclass in ri output
- * Fix an RDoc crash when told to parse an empty file
- * Ignore nonexistent files instead of crashing
- * .txt and .rdoc files are always considered text. Patch #22897 by Aaron
- Patterson.
- * When merging ri data with a nonexistant directory, RDoc no longer crashes
- * Fix visibility of methods in XML output. Issue by Yehuda Katz.
- * Fixed relative link generation
- * Fix crash, RDoc now ignores comments above local variable assignments in
- modules
- * RDoc now only accepts adjacent comments for rb_define_module and
- rb_define_class
- * C file RDoc is no longer included in token stream
- * Scan all gem paths to match gem name for ri output
-
-=== 2.2.1 / 2008-09-24
-This version provides some minor fixes and enhancements to 2.2.0 intended
-to polish RDoc for Ruby 1.9.1.
-
-* 3 Minor Enhancements
- * Support for parsing RDoc from SWIG. Ruby patch #10742 by Gonzalo
- Garramuno, #13993 by Steven Jenkins.
- * Simple support for Perl POD documentation. Patch by Hugh Sasse.
- * Changed the default character set of RDoc's output from iso-8859-1 to
- utf-8.
-
-* 9 Bug Fixes
- * Explicitly set the html template's text color, so that the generated
- documentation will display correctly on browsers with custom text and
- background color settings (patch by Luther Thompson).
- * Ensure that RDoc correctly will associate an alias and a method, even
- if it encounters the alias first because the alias lives in a different
- file.
- * Fix the parsing of multiline constants (patch by Chris Alfeld and
- Joel VanderWerf)
- * Make --exclude usuable. Ruby patch #11671 by Trans.
- * Detect inline C functions. Ruby Bug #11993 by Florian Frank.
- * Fix an issue in which RDoc might not document a class'
- superclass correctly if the class was defined in multiple files and
- depending on the order in which RDoc processed the files. This should
- ensure that the child class -> parent class relationship is correct in
- ri documentation, allowing ri to lookup inherited methods (i.e., File.read).
- * Stop ri from crashing when it looks for a completely bogus method (i.e.,
- File#reada). Now, ri exits with a helpful error message.
- * Fixed missing display of constant values in ri.
- * Fixed display of constants in ri's html output.
-
-=== 2.2.0 / 2008-09-19
-This version includes some significant enhancements to ri. See RI.txt for
-documentation about ri.
-
-* 5 Major Enhancements
- * More extensive unit tests (special thanks to Chris Lowis for contributing
- a test).
- * Made ri twice as fast for the most common use case of displaying
- information for a class or a fully-qualified method
- (i.e., ri Array#flatten, after ri has created a cache the first time that
- it runs).
- * Made ri many times faster when searching for an unqualified method (i.e.,
- ri read, again after the first such search has populated ri's cache)
- * Changed ri to do regular expression searches for unqualified methods;
- now, a regular expression for a method can be passed to ri on the
- command-line.
- * Added an interactive mode to ri (patch by Daniel Choi). Now, when ri
- is given a -i argument, it will allow the user to disambiguate
- unqualified methods if more than one is present and also will allow a
- user to get information for a class' method.
-
-* 8 Minor Enhancements
- * RDoc now adds the package title to the web pages that it generates
- for files and classes/modules, which helps them appear better in
- search engine results.
- * RDoc now automatically generates cross-reference links for classes and
- methods specified relative to the global namespace (i.e., ::A::B::C#method).
- * All built-in templates now output valid, strict XHTML.
- * The documentation is slightly better organized (the markup details were
- merged into the RDoc module's documentation).
- * Improved rdoc's HTML generation speed by about 20% (on Windows, the
- boost seems larger).
- * Provided an ri command-line option to control its caching behavior.
- * Improved RDoc's documentation. Added RI.txt to document ri.
- * Allow HTML templates distributed as gems to be loaded with the -T option,
- just like the standard templates in rdoc/generator/html (so an HTML
- template lib/new_template.rb in a gem can be used with rdoc -T new_template)
-
-* 25 Bug fixes:
- * Fixed prototype detection in C parser. Can process ruby 1.8 C files
- again.
- * Fixed the main page for frameless template. Patch by Marcin Raczkowski.
- * Fixed the main page for frame templates. Now, if no main page is
- specified, RDoc will default to the README.
- * Fixed missing stylesheet in generated chm. Patch by Gordon Thiesfeld.
- * Fixed the parsing of module names starting with '::'. Patch by
- Giuseppe Bilotta.
- * Fixed a case where RDoc first would encounter Foo::Bar and then would
- encounter class Foo. Previously, RDoc erroneously would have considered
- that both a Foo class and a Foo module existed.
- * Fix a clase where RDoc would not generate correct cross-reference links
- to a class contained within a module of the same name (i.e. RDoc::RDoc)
- * Prevented RDoc from trying to parse binary files, which would produce
- garbage output.
- * RDoc now correctly converts ' characters to apostrophes, opening single
- quotes, and closing single quotes in most cases (smart single quotes).
- * RDoc now correctly converts " characters to opening double quotes and
- and closing double quotes in most cases (smart double quotes).
- * (c) correctly is converted into the copyright symbol.
- * '&' characters in text now correctly are translated to HTML character codes.
- * Fixed missing stylesheet in generated chm. Patch by Gordon Thiesfeld.
- * Fixed broken method links in the built-in templates.
- * RDoc properly links to files and classes in the one page HTML template.
- * The kilmer and hefss templates properly syntax highlight when inlining
- source code.
- * The kilmer and hefss template class pages properly display methods again.
- * Fixed broken class, file, and method links in the frameless template.
- * Fixed the clipping of source code in the html and frameless templates when
- the source code cannot fit into the window; a scrollbar now will allow
- all of the source code to be viewed.
- * Fixed the missing constant descriptions in the html and frameless
- templates.
- * Fixed the ri command-line options that customize the directories to be
- searched for documentation.
- * Fixed the XML generator. Patch by Anthony Durity.
- * Stopped the XML template from generating invalid XML due to malformed
- embedded ruby.
- * Adding missing information about a class' constants to the XML template.
- * Fixed the horizontal rule markup (---) so that it correctly adds a
- horizontal rule rather than suppressing all text that follows.
-
-=== 2.1.0 / 2008-07-20
-
-* 3 Major Enhancements:
- * RDoc now knows about meta-programmed methods, see RDoc::Parser::Ruby
- * Reorganized parsers under RDoc::Parser base class
- * ri now walks the ancestors of a class looking for a method e.g. ri
- File#read displays documentation for IO#read (may require regeneration of
- ri data)
-* 5 Minor Enhancements:
- * Allow links to files
- * Default options now taken from RDOCOPT environment variable
- * Class method documentation can be found at toplevel now (def X.foo)
- * Allow HTML templates distributed as gems to be loaded with the -T option,
- just like the standard templates in rdoc/generator/html (so an HTML
- template lib/new_template.rb in a gem can be used with rdoc -T new_template)
- * `rdoc -v` prints out files, classes, modules and methods as it goes
-* 11 Bug Fixes:
- * `ri Foo.bar` now looks for class methods also
- * Sections work in the default template again
- * Doesn't warn about :foo:: list item being an unrecognized directive
- * RDoc no longer converts characters inside tt tags
- * Fixed "unitialized constant RDoc::Markup::ToHtml::HTML"
- * Fixed generation of relative links
- * Fixed various diagram generation issues
- * Fixed templates broken by switch to erb
- * Fixed issue with <!-- --> style comments
- * Lowercase words are no longer rdoc'd as methods without leading #, as
- described in the documentation
- * RDoc now correctly sets superclasses if they were originally unknown
-
-=== 2.0.0 / 2008-04-10
-
-* 3 Major Enhancements:
- * Renamespaced everything RDoc under the RDoc module.
- * New `ri` implementation.
- * Reads from a cache in ~/.ri/ for enhanced speed.
- * RubyGems aware, only searches latest gem versions.
- * Now up to over 100 tests and 200 assertions.
-* 4 Minor Enhancements:
- * Switched to an ERb-based TemplatePage, see RDoc::TemplatePage.
- * Class/module ri now displays attribute and constant comments.
- * Cross-references can be disabled with a leading \.
- * Relaxed parsing for some RDoc inline markup.
diff --git a/vendor/gems/rdoc-2.4.3/Manifest.txt b/vendor/gems/rdoc-2.4.3/Manifest.txt
deleted file mode 100644
index bccf64e52..000000000
--- a/vendor/gems/rdoc-2.4.3/Manifest.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-.autotest
-.document
-History.txt
-Manifest.txt
-README.txt
-RI.txt
-Rakefile
-bin/rdoc
-bin/ri
-lib/rdoc.rb
-lib/rdoc/alias.rb
-lib/rdoc/anon_class.rb
-lib/rdoc/any_method.rb
-lib/rdoc/attr.rb
-lib/rdoc/cache.rb
-lib/rdoc/class_module.rb
-lib/rdoc/code_object.rb
-lib/rdoc/code_objects.rb
-lib/rdoc/constant.rb
-lib/rdoc/context.rb
-lib/rdoc/diagram.rb
-lib/rdoc/dot.rb
-lib/rdoc/generator.rb
-lib/rdoc/generator/darkfish.rb
-lib/rdoc/generator/markup.rb
-lib/rdoc/generator/ri.rb
-lib/rdoc/generator/template/darkfish/.document
-lib/rdoc/generator/template/darkfish/classpage.rhtml
-lib/rdoc/generator/template/darkfish/filepage.rhtml
-lib/rdoc/generator/template/darkfish/images/brick.png
-lib/rdoc/generator/template/darkfish/images/brick_link.png
-lib/rdoc/generator/template/darkfish/images/bug.png
-lib/rdoc/generator/template/darkfish/images/bullet_black.png
-lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png
-lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png
-lib/rdoc/generator/template/darkfish/images/date.png
-lib/rdoc/generator/template/darkfish/images/find.png
-lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif
-lib/rdoc/generator/template/darkfish/images/macFFBgHack.png
-lib/rdoc/generator/template/darkfish/images/package.png
-lib/rdoc/generator/template/darkfish/images/page_green.png
-lib/rdoc/generator/template/darkfish/images/page_white_text.png
-lib/rdoc/generator/template/darkfish/images/page_white_width.png
-lib/rdoc/generator/template/darkfish/images/plugin.png
-lib/rdoc/generator/template/darkfish/images/ruby.png
-lib/rdoc/generator/template/darkfish/images/tag_green.png
-lib/rdoc/generator/template/darkfish/images/wrench.png
-lib/rdoc/generator/template/darkfish/images/wrench_orange.png
-lib/rdoc/generator/template/darkfish/images/zoom.png
-lib/rdoc/generator/template/darkfish/index.rhtml
-lib/rdoc/generator/template/darkfish/js/darkfish.js
-lib/rdoc/generator/template/darkfish/js/jquery.js
-lib/rdoc/generator/template/darkfish/js/quicksearch.js
-lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js
-lib/rdoc/generator/template/darkfish/rdoc.css
-lib/rdoc/ghost_method.rb
-lib/rdoc/include.rb
-lib/rdoc/known_classes.rb
-lib/rdoc/markup.rb
-lib/rdoc/markup/attribute_manager.rb
-lib/rdoc/markup/formatter.rb
-lib/rdoc/markup/fragments.rb
-lib/rdoc/markup/inline.rb
-lib/rdoc/markup/lines.rb
-lib/rdoc/markup/preprocess.rb
-lib/rdoc/markup/to_flow.rb
-lib/rdoc/markup/to_html.rb
-lib/rdoc/markup/to_html_crossref.rb
-lib/rdoc/markup/to_latex.rb
-lib/rdoc/markup/to_test.rb
-lib/rdoc/markup/to_texinfo.rb
-lib/rdoc/meta_method.rb
-lib/rdoc/normal_class.rb
-lib/rdoc/normal_module.rb
-lib/rdoc/options.rb
-lib/rdoc/parser.rb
-lib/rdoc/parser/c.rb
-lib/rdoc/parser/perl.rb
-lib/rdoc/parser/ruby.rb
-lib/rdoc/parser/simple.rb
-lib/rdoc/rdoc.rb
-lib/rdoc/require.rb
-lib/rdoc/ri.rb
-lib/rdoc/ri/cache.rb
-lib/rdoc/ri/descriptions.rb
-lib/rdoc/ri/display.rb
-lib/rdoc/ri/driver.rb
-lib/rdoc/ri/formatter.rb
-lib/rdoc/ri/paths.rb
-lib/rdoc/ri/reader.rb
-lib/rdoc/ri/util.rb
-lib/rdoc/ri/writer.rb
-lib/rdoc/single_class.rb
-lib/rdoc/stats.rb
-lib/rdoc/task.rb
-lib/rdoc/tokenstream.rb
-lib/rdoc/top_level.rb
-test/binary.dat
-test/test.ja.rdoc
-test/test.ja.txt
-test/test_attribute_manager.rb
-test/test_rdoc_any_method.rb
-test/test_rdoc_code_object.rb
-test/test_rdoc_constant.rb
-test/test_rdoc_context.rb
-test/test_rdoc_include.rb
-test/test_rdoc_markup.rb
-test/test_rdoc_markup_attribute_manager.rb
-test/test_rdoc_markup_to_html.rb
-test/test_rdoc_markup_to_html_crossref.rb
-test/test_rdoc_normal_module.rb
-test/test_rdoc_parser.rb
-test/test_rdoc_parser_c.rb
-test/test_rdoc_parser_perl.rb
-test/test_rdoc_parser_ruby.rb
-test/test_rdoc_require.rb
-test/test_rdoc_ri_attribute_formatter.rb
-test/test_rdoc_ri_default_display.rb
-test/test_rdoc_ri_driver.rb
-test/test_rdoc_ri_formatter.rb
-test/test_rdoc_ri_html_formatter.rb
-test/test_rdoc_ri_overstrike_formatter.rb
-test/test_rdoc_task.rb
-test/test_rdoc_top_level.rb
-test/xref_data.rb
-test/xref_test_case.rb
diff --git a/vendor/gems/rdoc-2.4.3/README.txt b/vendor/gems/rdoc-2.4.3/README.txt
deleted file mode 100644
index 14a5c3134..000000000
--- a/vendor/gems/rdoc-2.4.3/README.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-= \RDoc
-
-* {RDoc Project Page}[http://rubyforge.org/projects/rdoc/]
-* {RDoc Documentation}[http://rdoc.rubyforge.org/]
-* {RDoc Bug Tracker}[http://rubyforge.org/tracker/?atid=2472&group_id=627&func=browse]
-
-== DESCRIPTION:
-
-RDoc is an application that produces documentation for one or more Ruby source
-files. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying
-online documentation.
-
-At this point in time, RDoc 2.x is a work in progress and may incur further
-API changes beyond what has been made to RDoc 1.0.1. Command-line tools are
-largely unaffected, but internal APIs may shift rapidly.
-
-See RDoc for a description of RDoc's markup and basic use.
-
-== SYNOPSIS:
-
- gem 'rdoc'
- require 'rdoc/rdoc'
- # ... see RDoc
-
-== BUGS:
-
-The markup engine has lots of little bugs. In particular:
-* Escaping does not work for all markup.
-* Typesetting is not always correct.
-* Some output formats (ri, for example) do not correctly handle all of the
- markup.
-
-RDoc has some subtle bugs processing classes that are split across multiple
-files (bugs that may or may not manifest depending on the order in which
-the files are encountered). This issue can be tracked here[http://rubyforge.org/tracker/index.php?func=detail&aid=22135&group_id=627&atid=2475].
-
-If you find a bug, please report it at the RDoc project's
-tracker[http://rubyforge.org/tracker/?group_id=627] on RubyForge:
-
-== LICENSE:
-
-RDoc is Copyright (c) 2001-2003 Dave Thomas, The Pragmatic Programmers.
-Portions (c) 2007-2009 Eric Hodel. Portions copyright others, see individual
-files for details.
-
-It is free software, and may be redistributed under the terms specified in the
-README file of the Ruby distribution.
diff --git a/vendor/gems/rdoc-2.4.3/RI.txt b/vendor/gems/rdoc-2.4.3/RI.txt
deleted file mode 100644
index 27f9e2be7..000000000
--- a/vendor/gems/rdoc-2.4.3/RI.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-= RI
-== Background
-+ri+ is a tool that allows Ruby documentation to be viewed on the command-line.
-It is part of RDoc and is expected to work on any platform supported by Ruby.
-
-+ri+ will be a bit slow the first time that it runs (or any time that the
-underlying documentation changes) because it builds a cache in the +.ri+
-directory within the user's home directory in order to make future accesses
-faster.
-
-== Usage
-To see information for a class, do:
- ri class_name
-
-For example, for the +Array+ class, do
- ri Array
-
-To see information for an instance method, do:
- ri class_name#method_name
-
-For example, for Array's +join+ method, do:
- ri Array#join
-
-To see information for a class method, do:
- ri class_name.method_name
-
-For example, for Module's +private+ method, do:
- ri Module.private
-
-To search for all methods containing +read+, do:
- ri read
-
-To search for all methods starting with +read+, do:
- ri '^read'
-
-To search for all +read+ methods, do:
- ri '^read$'
-
-== Options
-+ri+ supports a variety of options, all of which can be viewed via +--help+.
-Of particular interest, are:
-[-d directory]
- List of directories from which to source documentation in addition to
- the standard directories. May be repeated. This can be used to specify
- the location of site-specific documentation (which can be generated with
- RDoc).
-[-i]
- This makes +ri+ go into interactive mode. When +ri+ is in interactive mode,
- it will allow the user to disambiguate lists of methods in case multiple
- methods match against a method search string. It also will allow the user
- to enter in a method name (with auto-completion, if readline is supported)
- when viewing a class.
-[-T]
- Send output to stdout, rather than to a pager.
-
-All options also can be specified through the +RI+ environment variable.
-Command-line options always override those specified in the +RI+ environment
-variable.
diff --git a/vendor/gems/rdoc-2.4.3/Rakefile b/vendor/gems/rdoc-2.4.3/Rakefile
deleted file mode 100644
index efe2e5635..000000000
--- a/vendor/gems/rdoc-2.4.3/Rakefile
+++ /dev/null
@@ -1,71 +0,0 @@
-require 'hoe'
-
-$rdoc_rakefile = true
-
-$:.unshift 'lib'
-require 'rdoc'
-
-Hoe.new "rdoc", RDoc::VERSION do |rdoc|
- rdoc.developer 'Eric Hodel', 'drbrain@segment7.net'
- rdoc.developer 'Dave Thomas', ''
- rdoc.developer 'Phil Hagelberg', 'technomancy@gmail.com'
- rdoc.developer 'Tony Strauss', 'tony.strauss@designingpatterns.com'
- rdoc.remote_rdoc_dir = ''
- rdoc.testlib = :minitest
-
- rdoc.extra_dev_deps << ['minitest', '~> 1.3']
- rdoc.spec_extras['required_rubygems_version'] = '>= 1.3'
- rdoc.spec_extras['homepage'] = 'http://rdoc.rubyforge.org'
-end
-
-# These tasks expect to have the following directory structure:
-#
-# git/git.rubini.us/code # Rubinius git HEAD checkout
-# svn/ruby/trunk # ruby subversion HEAD checkout
-# svn/rdoc/trunk # RDoc subversion HEAD checkout
-#
-# If you don't have this directory structure, set RUBY_PATH and/or
-# RUBINIUS_PATH.
-
-diff_options = "-urpN --exclude '*svn*' --exclude '*swp' --exclude '*rbc'"
-rsync_options = "-avP --exclude '*svn*' --exclude '*swp' --exclude '*rbc' --exclude '*.rej' --exclude '*.orig'"
-
-rubinius_dir = ENV['RUBINIUS_PATH'] || '../../../git/git.rubini.us/code'
-ruby_dir = ENV['RUBY_PATH'] || '../../ruby/trunk'
-
-desc "Updates Ruby HEAD with the currently checked-out copy of RDoc."
-task :update_ruby do
- sh "rsync #{rsync_options} bin/rdoc #{ruby_dir}/bin/rdoc"
- sh "rsync #{rsync_options} bin/ri #{ruby_dir}/bin/ri"
- sh "rsync #{rsync_options} lib/ #{ruby_dir}/lib"
- sh "rsync #{rsync_options} test/ #{ruby_dir}/test/rdoc"
-end
-
-desc "Diffs Ruby HEAD with the currently checked-out copy of RDoc."
-task :diff_ruby do
- options = "-urpN --exclude '*svn*' --exclude '*swp' --exclude '*rbc'"
-
- sh "diff #{diff_options} bin/rdoc #{ruby_dir}/bin/rdoc; true"
- sh "diff #{diff_options} bin/ri #{ruby_dir}/bin/ri; true"
- sh "diff #{diff_options} lib/rdoc.rb #{ruby_dir}/lib/rdoc.rb; true"
- sh "diff #{diff_options} lib/rdoc #{ruby_dir}/lib/rdoc; true"
- sh "diff #{diff_options} test #{ruby_dir}/test/rdoc; true"
-end
-
-desc "Updates Rubinius HEAD with the currently checked-out copy of RDoc."
-task :update_rubinius do
- sh "rsync #{rsync_options} bin/rdoc #{rubinius_dir}/lib/bin/rdoc.rb"
- sh "rsync #{rsync_options} bin/ri #{rubinius_dir}/lib/bin/ri.rb"
- sh "rsync #{rsync_options} lib/ #{rubinius_dir}/lib"
- sh "rsync #{rsync_options} test/ #{rubinius_dir}/test/rdoc"
-end
-
-desc "Diffs Rubinius HEAD with the currently checked-out copy of RDoc."
-task :diff_rubinius do
- sh "diff #{diff_options} bin/rdoc #{rubinius_dir}/lib/bin/rdoc.rb; true"
- sh "diff #{diff_options} bin/ri #{rubinius_dir}/lib/bin/ri.rb; true"
- sh "diff #{diff_options} lib/rdoc.rb #{rubinius_dir}/lib/rdoc.rb; true"
- sh "diff #{diff_options} lib/rdoc #{rubinius_dir}/lib/rdoc; true"
- sh "diff #{diff_options} test #{rubinius_dir}/test/rdoc; true"
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/bin/rdoc b/vendor/gems/rdoc-2.4.3/bin/rdoc
deleted file mode 100755
index a94f4232e..000000000
--- a/vendor/gems/rdoc-2.4.3/bin/rdoc
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env ruby
-#
-# RDoc: Documentation tool for source code
-# (see lib/rdoc/rdoc.rb for more information)
-#
-# Copyright (c) 2003 Dave Thomas
-# Released under the same terms as Ruby
-#
-# $Revision: 15033 $
-
-require 'rdoc/rdoc'
-
-begin
- r = RDoc::RDoc.new
- r.document ARGV
-rescue Interrupt
- $stderr.puts
- $stderr.puts "Interrupted"
- exit 1
-rescue SystemExit
- raise
-rescue Exception => e
- if $DEBUG_RDOC then
- $stderr.puts e.message
- $stderr.puts "#{e.backtrace.join "\n\t"}"
- $stderr.puts
- else
- $stderr.puts "uh-oh! RDoc had a problem:"
- $stderr.puts e.message
- $stderr.puts
- $stderr.puts "run with --debug for full backtrace"
- end
- exit 1
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/bin/ri b/vendor/gems/rdoc-2.4.3/bin/ri
deleted file mode 100755
index 243557403..000000000
--- a/vendor/gems/rdoc-2.4.3/bin/ri
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'rdoc/ri/driver'
-
-RDoc::RI::Driver.run ARGV
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc.rb
deleted file mode 100644
index bb085ec15..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc.rb
+++ /dev/null
@@ -1,398 +0,0 @@
-$DEBUG_RDOC = nil
-
-# :main: README.txt
-
-##
-# = \RDoc - Ruby Documentation System
-#
-# This package contains RDoc and RDoc::Markup. RDoc is an application that
-# produces documentation for one or more Ruby source files. It works similarly
-# to JavaDoc, parsing the source, and extracting the definition for classes,
-# modules, and methods (along with includes and requires). It associates with
-# these optional documentation contained in the immediately preceding comment
-# block, and then renders the result using a pluggable output formatter.
-# RDoc::Markup is a library that converts plain text into various output
-# formats. The markup library is used to interpret the comment blocks that
-# RDoc uses to document methods, classes, and so on.
-#
-# == Roadmap
-#
-# * If you want to use RDoc to create documentation for your Ruby source files,
-# read on.
-# * If you want to include extensions written in C, see RDoc::Parser::C
-# * If you want to drive RDoc programmatically, see RDoc::RDoc.
-# * If you want to use the library to format text blocks into HTML, have a look
-# at RDoc::Markup.
-# * If you want to try writing your own HTML output template, see
-# RDoc::Generator::HTML
-#
-# == Summary
-#
-# Once installed, you can create documentation using the +rdoc+ command
-#
-# % rdoc [options] [names...]
-#
-# For an up-to-date option summary, type
-# % rdoc --help
-#
-# A typical use might be to generate documentation for a package of Ruby
-# source (such as RDoc itself).
-#
-# % rdoc
-#
-# This command generates documentation for all the Ruby and C source
-# files in and below the current directory. These will be stored in a
-# documentation tree starting in the subdirectory +doc+.
-#
-# You can make this slightly more useful for your readers by having the
-# index page contain the documentation for the primary file. In our
-# case, we could type
-#
-# % rdoc --main rdoc.rb
-#
-# You'll find information on the various formatting tricks you can use
-# in comment blocks in the documentation this generates.
-#
-# RDoc uses file extensions to determine how to process each file. File names
-# ending +.rb+ and +.rbw+ are assumed to be Ruby source. Files
-# ending +.c+ are parsed as C files. All other files are assumed to
-# contain just Markup-style markup (with or without leading '#' comment
-# markers). If directory names are passed to RDoc, they are scanned
-# recursively for C and Ruby source files only.
-#
-# == \Options
-#
-# rdoc can be passed a variety of command-line options. In addition,
-# options can be specified via the +RDOCOPT+ environment variable, which
-# functions similarly to the +RUBYOPT+ environment variable.
-#
-# % export RDOCOPT="-S"
-#
-# will make rdoc default to inline method source code. Command-line options
-# always will override those in +RDOCOPT+.
-#
-# Run:
-#
-# rdoc --help
-#
-# for full details on rdoc's options.
-#
-# == Documenting Source Code
-#
-# Comment blocks can be written fairly naturally, either using <tt>#</tt> on
-# successive lines of the comment, or by including the comment in
-# a =begin/=end block. If you use the latter form, the =begin line must be
-# flagged with an RDoc tag:
-#
-# =begin rdoc
-# Documentation to be processed by RDoc.
-#
-# ...
-# =end
-#
-# RDoc stops processing comments if it finds a comment line containing
-# a <tt>--</tt>. This can be used to separate external from internal
-# comments, or to stop a comment being associated with a method, class, or
-# module. Commenting can be turned back on with a line that starts with a
-# <tt>++</tt>.
-#
-# ##
-# # Extract the age and calculate the date-of-birth.
-# #--
-# # FIXME: fails if the birthday falls on February 29th
-# #++
-# # The DOB is returned as a Time object.
-#
-# def get_dob(person)
-# # ...
-# end
-#
-# Names of classes, files, and any method names containing an
-# underscore or preceded by a hash character are automatically hyperlinked
-# from comment text to their description.
-#
-# Method parameter lists are extracted and displayed with the method
-# description. If a method calls +yield+, then the parameters passed to yield
-# will also be displayed:
-#
-# def fred
-# ...
-# yield line, address
-#
-# This will get documented as:
-#
-# fred() { |line, address| ... }
-#
-# You can override this using a comment containing ':yields: ...' immediately
-# after the method definition
-#
-# def fred # :yields: index, position
-# # ...
-#
-# yield line, address
-#
-# which will get documented as
-#
-# fred() { |index, position| ... }
-#
-# +:yields:+ is an example of a documentation directive. These appear
-# immediately after the start of the document element they are modifying.
-#
-# RDoc automatically cross-references words with underscores or camel-case.
-# To suppress cross-references, prefix the word with a \\ character. To
-# include special characters like "\\n", you'll need to use two \\
-# characters like "\\\\\\n".
-#
-# == \Markup
-#
-# * The markup engine looks for a document's natural left margin. This is
-# used as the initial margin for the document.
-#
-# * Consecutive lines starting at this margin are considered to be a
-# paragraph.
-#
-# * If a paragraph starts with a "*", "-", or with "<digit>.", then it is
-# taken to be the start of a list. The margin in increased to be the first
-# non-space following the list start flag. Subsequent lines should be
-# indented to this new margin until the list ends. For example:
-#
-# * this is a list with three paragraphs in
-# the first item. This is the first paragraph.
-#
-# And this is the second paragraph.
-#
-# 1. This is an indented, numbered list.
-# 2. This is the second item in that list
-#
-# This is the third conventional paragraph in the
-# first list item.
-#
-# * This is the second item in the original list
-#
-# * You can also construct labeled lists, sometimes called description
-# or definition lists. Do this by putting the label in square brackets
-# and indenting the list body:
-#
-# [cat] a small furry mammal
-# that seems to sleep a lot
-#
-# [ant] a little insect that is known
-# to enjoy picnics
-#
-# A minor variation on labeled lists uses two colons to separate the
-# label from the list body:
-#
-# cat:: a small furry mammal
-# that seems to sleep a lot
-#
-# ant:: a little insect that is known
-# to enjoy picnics
-#
-# This latter style guarantees that the list bodies' left margins are
-# aligned: think of them as a two column table.
-#
-# * Any line that starts to the right of the current margin is treated
-# as verbatim text. This is useful for code listings. The example of a
-# list above is also verbatim text.
-#
-# * A line starting with an equals sign (=) is treated as a
-# heading. Level one headings have one equals sign, level two headings
-# have two,and so on.
-#
-# * A line starting with three or more hyphens (at the current indent)
-# generates a horizontal rule. The more hyphens, the thicker the rule
-# (within reason, and if supported by the output device)
-#
-# * You can use markup within text (except verbatim) to change the
-# appearance of parts of that text. Out of the box, RDoc::Markup
-# supports word-based and general markup.
-#
-# Word-based markup uses flag characters around individual words:
-#
-# [<tt>\*word*</tt>] displays word in a *bold* font
-# [<tt>\_word_</tt>] displays word in an _emphasized_ font
-# [<tt>\+word+</tt>] displays word in a +code+ font
-#
-# General markup affects text between a start delimiter and and end
-# delimiter. Not surprisingly, these delimiters look like HTML markup.
-#
-# [<tt>\<b>text...</b></tt>] displays word in a *bold* font
-# [<tt>\<em>text...</em></tt>] displays word in an _emphasized_ font
-# [<tt>\<i>text...</i></tt>] displays word in an <i>italicized</i> font
-# [<tt>\<tt>text...\</tt></tt>] displays word in a +code+ font
-#
-# Unlike conventional Wiki markup, general markup can cross line
-# boundaries. You can turn off the interpretation of markup by
-# preceding the first character with a backslash. This only works for
-# simple markup, not HTML-style markup.
-#
-# * Hyperlinks to the web starting http:, mailto:, ftp:, or www. are
-# recognized. An HTTP url that references an external image file is
-# converted into an inline \<IMG..>. Hyperlinks starting 'link:' are
-# assumed to refer to local files whose path is relative to the --op
-# directory.
-#
-# Hyperlinks can also be of the form <tt>label</tt>[url], in which
-# case the label is used in the displayed text, and +url+ is
-# used as the target. If +label+ contains multiple words,
-# put it in braces: <em>{multi word label}[</em>url<em>]</em>.
-#
-# Example hyperlinks:
-#
-# link:RDoc.html
-# http://rdoc.rubyforge.org
-# mailto:user@example.com
-# {RDoc Documentation}[http://rdoc.rubyforge.org]
-# {RDoc Markup}[link:RDoc/Markup.html]
-#
-# == Directives
-#
-# [+:nodoc:+ / +:nodoc:+ all]
-# This directive prevents documentation for the element from
-# being generated. For classes and modules, the methods, aliases,
-# constants, and attributes directly within the affected class or
-# module also will be omitted. By default, though, modules and
-# classes within that class of module _will_ be documented. This is
-# turned off by adding the +all+ modifier.
-#
-# module MyModule # :nodoc:
-# class Input
-# end
-# end
-#
-# module OtherModule # :nodoc: all
-# class Output
-# end
-# end
-#
-# In the above code, only class <tt>MyModule::Input</tt> will be documented.
-# The +:nodoc:+ directive is global across all files for the class or module
-# to which it applies, so use +:stopdoc:+/+:startdoc:+ to suppress
-# documentation only for a particular set of methods, etc.
-#
-# [+:doc:+]
-# Forces a method or attribute to be documented even if it wouldn't be
-# otherwise. Useful if, for example, you want to include documentation of a
-# particular private method.
-#
-# [+:notnew:+]
-# Only applicable to the +initialize+ instance method. Normally RDoc
-# assumes that the documentation and parameters for +initialize+ are
-# actually for the +new+ method, and so fakes out a +new+ for the class.
-# The +:notnew:+ modifier stops this. Remember that +initialize+ is private,
-# so you won't see the documentation unless you use the +-a+ command line
-# option.
-#
-# Comment blocks can contain other directives:
-#
-# [<tt>:section: title</tt>]
-# Starts a new section in the output. The title following +:section:+ is
-# used as the section heading, and the remainder of the comment containing
-# the section is used as introductory text. Subsequent methods, aliases,
-# attributes, and classes will be documented in this section. A :section:
-# comment block may have one or more lines before the :section: directive.
-# These will be removed, and any identical lines at the end of the block are
-# also removed. This allows you to add visual cues such as:
-#
-# # ----------------------------------------
-# # :section: My Section
-# # This is the section that I wrote.
-# # See it glisten in the noon-day sun.
-# # ----------------------------------------
-#
-# [+:call-seq:+]
-# Lines up to the next blank line in the comment are treated as the method's
-# calling sequence, overriding the default parsing of method parameters and
-# yield arguments.
-#
-# [+:include:+ _filename_]
-# \Include the contents of the named file at this point. The file will be
-# searched for in the directories listed by the +--include+ option, or in
-# the current directory by default. The contents of the file will be
-# shifted to have the same indentation as the ':' at the start of
-# the :include: directive.
-#
-# [+:title:+ _text_]
-# Sets the title for the document. Equivalent to the <tt>--title</tt>
-# command line parameter. (The command line parameter overrides any :title:
-# directive in the source).
-#
-# [+:enddoc:+]
-# Document nothing further at the current level.
-#
-# [+:main:+ _name_]
-# Equivalent to the <tt>--main</tt> command line parameter.
-#
-# [+:stopdoc:+ / +:startdoc:+]
-# Stop and start adding new documentation elements to the current container.
-# For example, if a class has a number of constants that you don't want to
-# document, put a +:stopdoc:+ before the first, and a +:startdoc:+ after the
-# last. If you don't specify a +:startdoc:+ by the end of the container,
-# disables documentation for the entire class or module.
-#
-# == Other stuff
-#
-# RDoc is currently being maintained by Eric Hodel <drbrain@segment7.net>
-#
-# Dave Thomas <dave@pragmaticprogrammer.com> is the original author of RDoc.
-#
-# == Credits
-#
-# * The Ruby parser in rdoc/parse.rb is based heavily on the outstanding
-# work of Keiju ISHITSUKA of Nippon Rational Inc, who produced the Ruby
-# parser for irb and the rtags package.
-#
-# * Code to diagram classes and modules was written by Sergey A Yanovitsky
-# (Jah) of Enticla.
-#
-# * Charset patch from MoonWolf.
-#
-# * Rich Kilmer wrote the kilmer.rb output template.
-#
-# * Dan Brickley led the design of the RDF format.
-#
-# == License
-#
-# RDoc is Copyright (c) 2001-2003 Dave Thomas, The Pragmatic Programmers. It
-# is free software, and may be redistributed under the terms specified
-# in the README file of the Ruby distribution.
-#
-# == Warranty
-#
-# This software is provided "as is" and without any express or implied
-# warranties, including, without limitation, the implied warranties of
-# merchantibility and fitness for a particular purpose.
-
-module RDoc
-
- ##
- # Exception thrown by any rdoc error.
-
- class Error < RuntimeError; end
-
- RDocError = Error # :nodoc:
-
- ##
- # RDoc version you are using
-
- VERSION = '2.4.3'
-
- ##
- # Name of the dotfile that contains the description of files to be processed
- # in the current directory
-
- DOT_DOC_FILENAME = ".document"
-
- GENERAL_MODIFIERS = %w[nodoc].freeze
-
- CLASS_MODIFIERS = GENERAL_MODIFIERS
-
- ATTR_MODIFIERS = GENERAL_MODIFIERS
-
- CONSTANT_MODIFIERS = GENERAL_MODIFIERS
-
- METHOD_MODIFIERS = GENERAL_MODIFIERS +
- %w[arg args yield yields notnew not-new not_new doc]
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/alias.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/alias.rb
deleted file mode 100644
index 74a8d4e7c..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/alias.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'rdoc/code_object'
-
-##
-# Represent an alias, which is an old_name/new_name pair associated with a
-# particular context
-
-class RDoc::Alias < RDoc::CodeObject
-
- ##
- # Allow comments to be overridden
-
- attr_writer :comment
-
- ##
- # Aliased name
-
- attr_accessor :new_name
-
- ##
- # Aliasee's name
-
- attr_accessor :old_name
-
- ##
- # Source file token stream
-
- attr_accessor :text
-
- ##
- # Creates a new Alias with a token stream of +text+ that aliases +old_name+
- # to +new_name+ and has +comment+
-
- def initialize(text, old_name, new_name, comment)
- super()
- @text = text
- @old_name = old_name
- @new_name = new_name
- self.comment = comment
- end
-
- def inspect # :nodoc:
- "#<%s:0x%x %s.alias_method %s, %s>" % [
- self.class, object_id,
- parent.name, @old_name, @new_name,
- ]
- end
-
- def to_s # :nodoc:
- "alias: #{self.old_name} -> #{self.new_name}\n#{self.comment}"
- end
-
-end
-
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/anon_class.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/anon_class.rb
deleted file mode 100644
index 0a684f2df..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/anon_class.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'rdoc/class_module'
-
-##
-# An anonymous class like:
-#
-# c = Class.new do end
-
-class RDoc::AnonClass < RDoc::ClassModule
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/any_method.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/any_method.rb
deleted file mode 100644
index b65fd9ab9..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/any_method.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-require 'rdoc/code_object'
-require 'rdoc/tokenstream'
-
-##
-# AnyMethod is the base class for objects representing methods
-
-class RDoc::AnyMethod < RDoc::CodeObject
-
- ##
- # Method name
-
- attr_writer :name
-
- ##
- # public, protected, private
-
- attr_accessor :visibility
-
- ##
- # Parameters yielded by the called block
-
- attr_accessor :block_params
-
- ##
- # Don't rename \#initialize to \::new
-
- attr_accessor :dont_rename_initialize
-
- ##
- # Is this a singleton method?
-
- attr_accessor :singleton
-
- ##
- # Source file token stream
-
- attr_reader :text
-
- ##
- # Array of other names for this method
-
- attr_reader :aliases
-
- ##
- # Fragment reference for this method
-
- attr_reader :aref
-
- ##
- # The method we're aliasing
-
- attr_accessor :is_alias_for
-
- ##
- # Parameters for this method
-
- attr_overridable :params, :param, :parameters, :parameter
-
- ##
- # Different ways to call this method
-
- attr_accessor :call_seq
-
- include RDoc::TokenStream
-
- ##
- # Resets method fragment reference counter
-
- def self.reset
- @@aref = 'M000000'
- end
-
- reset
-
- def initialize(text, name)
- super()
- @text = text
- @name = name
- @token_stream = nil
- @visibility = :public
- @dont_rename_initialize = false
- @block_params = nil
- @aliases = []
- @is_alias_for = nil
- @call_seq = nil
-
- @aref = @@aref
- @@aref = @@aref.succ
- end
-
- ##
- # Order by #singleton then #name
-
- def <=>(other)
- [@singleton ? 0 : 1, @name] <=> [other.singleton ? 0 : 1, other.name]
- end
-
- ##
- # Adds +method+ as an alias for this method
-
- def add_alias(method)
- @aliases << method
- end
-
- ##
- # HTML id-friendly method name
-
- def html_name
- @name.gsub(/[^a-z]+/, '-')
- end
-
- def inspect # :nodoc:
- alias_for = @is_alias_for ? " (alias for #{@is_alias_for.name})" : nil
- "#<%s:0x%x %s%s%s (%s)%s>" % [
- self.class, object_id,
- parent_name,
- singleton ? '::' : '#',
- name,
- visibility,
- alias_for,
- ]
- end
-
- ##
- # Full method name including namespace
-
- def full_name
- "#{@parent.full_name}#{pretty_name}"
- end
-
- ##
- # Method name
-
- def name
- return @name if @name
-
- @name = @call_seq[/^.*?\.(\w+)/, 1] || @call_seq
- end
-
- ##
- # Pretty parameter list for this method
-
- def param_seq
- params = params.gsub(/\s*\#.*/, '')
- params = params.tr("\n", " ").squeeze(" ")
- params = "(#{params})" unless p[0] == ?(
-
- if block = block_params then # yes, =
- # If this method has explicit block parameters, remove any explicit
- # &block
- params.sub!(/,?\s*&\w+/)
-
- block.gsub!(/\s*\#.*/, '')
- block = block.tr("\n", " ").squeeze(" ")
- if block[0] == ?(
- block.sub!(/^\(/, '').sub!(/\)/, '')
- end
- params << " { |#{block}| ... }"
- end
-
- params
- end
-
- ##
- # Path to this method
-
- def path
- "#{@parent.path}##{@aref}"
- end
-
- ##
- # Method name with class/instance indicator
-
- def pretty_name
- "#{singleton ? '::' : '#'}#{@name}"
- end
-
- def to_s # :nodoc:
- "#{self.class.name}: #{full_name} (#{@text})\n#{@comment}"
- end
-
- ##
- # Type of method (class or instance)
-
- def type
- singleton ? 'class' : 'instance'
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/attr.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/attr.rb
deleted file mode 100644
index 235a5ab23..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/attr.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require 'rdoc/code_object'
-
-##
-# An attribute created by \#attr, \#attr_reader, \#attr_writer or
-# \#attr_accessor
-
-class RDoc::Attr < RDoc::CodeObject
-
- ##
- # Name of the attribute
-
- attr_accessor :name
-
- ##
- # Is the attribute readable, writable or both?
-
- attr_accessor :rw
-
- ##
- # Source file token stream
-
- attr_accessor :text
-
- ##
- # public, protected, private
-
- attr_accessor :visibility
-
- def initialize(text, name, rw, comment)
- super()
- @text = text
- @name = name
- @rw = rw
- @visibility = :public
- self.comment = comment
- end
-
- ##
- # Attributes are ordered by name
-
- def <=>(other)
- self.name <=> other.name
- end
-
- ##
- # An HTML id-friendly representation of #name
-
- def html_name
- @name.gsub(/[^a-z]+/, '-')
- end
-
- def inspect # :nodoc:
- attr = case rw
- when 'RW' then :attr_accessor
- when 'R' then :attr_reader
- when 'W' then :attr_writer
- else
- " (#{rw})"
- end
-
- "#<%s:0x%x %s.%s :%s>" % [
- self.class, object_id,
- parent_name, attr, @name,
- ]
- end
-
- ##
- # URL path for this attribute
-
- def path
- "#{@parent.path}##{@name}"
- end
-
- def to_s # :nodoc:
- "attr: #{self.name} #{self.rw}\n#{self.comment}"
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/cache.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/cache.rb
deleted file mode 100644
index bdd830a13..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/cache.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require 'thread'
-require 'singleton'
-
-##
-# A generic, thread-safe in-memory cache. It's used for caching
-# RDoc::TemplatePage objects when generating RDoc output.
-
-class RDoc::Cache
-
- include Singleton
-
- ##
- # Creates a new, empty cache
-
- def initialize
- @contents = {}
- @lock = Mutex.new
- end
-
- ##
- # Checks whether there's a value in the cache with key +key+. If so, then
- # that value will be returned. Otherwise, the given block will be run, and
- # its return value will be put into the cache, and returned.
-
- def cache(key)
- @lock.synchronize do
- @contents[key] ||= yield
- end
- end
-
- ##
- # Clears the contents of the cache
-
- def clear
- @lock.synchronize do
- @contents.clear
- end
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/class_module.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/class_module.rb
deleted file mode 100644
index dc8874f9f..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/class_module.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-require 'rdoc/context'
-
-##
-# ClassModule is the base class for objects representing either a class or a
-# module.
-
-class RDoc::ClassModule < RDoc::Context
-
- attr_accessor :diagram
-
- ##
- # Creates a new ClassModule with +name+ with optional +superclass+
-
- def initialize(name, superclass = 'Object')
- @diagram = nil
- @full_name = nil
- @name = name
- @superclass = superclass
- super()
- end
-
- ##
- # Finds a class or module with +name+ in this namespace or its descendents
-
- def find_class_named(name)
- return self if full_name == name
- @classes.each_value {|c| return c if c.find_class_named(name) }
- nil
- end
-
- ##
- # Return the fully qualified name of this class or module
-
- def full_name
- @full_name ||= if RDoc::ClassModule === @parent then
- "#{@parent.full_name}::#{@name}"
- else
- @name
- end
- end
-
- ##
- # 'module' or 'class'
-
- def type
- module? ? 'module' : 'class'
- end
-
- ##
- # Does this object represent a module?
-
- def module?
- false
- end
-
- ##
- # Path to this class or module
-
- def path
- http_url RDoc::RDoc.current.generator.class_dir
- end
-
- ##
- # Get the superclass of this class. Attempts to retrieve the superclass
- # object, returns the name if it is not known.
-
- def superclass
- raise NoMethodError, "#{full_name} is a module" if module?
-
- RDoc::TopLevel.find_class_named(@superclass) || @superclass
- end
-
- ##
- # Set the superclass of this class to +superclass+
-
- def superclass=(superclass)
- raise NoMethodError, "#{full_name} is a module" if module?
-
- @superclass = superclass if @superclass.nil? or @superclass == 'Object'
- end
-
- def to_s # :nodoc:
- "#{self.class}: #{full_name} #{@comment} #{super}"
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/code_object.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/code_object.rb
deleted file mode 100644
index 2b7d9cded..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/code_object.rb
+++ /dev/null
@@ -1,152 +0,0 @@
-require 'rdoc'
-
-##
-# We contain the common stuff for contexts (which are containers) and other
-# elements (methods, attributes and so on)
-
-class RDoc::CodeObject
-
- ##
- # Our comment
-
- attr_reader :comment
-
- ##
- # Do we document our children?
-
- attr_reader :document_children
-
- ##
- # Do we document ourselves?
-
- attr_reader :document_self
-
- ##
- # Are we done documenting (ie, did we come across a :enddoc:)?
-
- attr_accessor :done_documenting
-
- ##
- # Force documentation of this CodeObject
-
- attr_accessor :force_documentation
-
- ##
- # Our parent CodeObject
-
- attr_accessor :parent
-
- ##
- # Which section are we in
-
- attr_accessor :section
-
- ##
- # We are the model of the code, but we know that at some point we will be
- # worked on by viewers. By implementing the Viewable protocol, viewers can
- # associated themselves with these objects.
-
- attr_accessor :viewer
-
- ##
- # There's a wee trick we pull. Comment blocks can have directives that
- # override the stuff we extract during the parse. So, we have a special
- # class method, attr_overridable, that lets code objects list those
- # directives. When a comment is assigned, we then extract out any matching
- # directives and update our object
-
- def self.attr_overridable(name, *aliases)
- @overridables ||= {}
-
- attr_accessor name
-
- aliases.unshift name
-
- aliases.each do |directive_name|
- @overridables[directive_name.to_s] = name
- end
- end
-
- ##
- # Creates a new CodeObject that will document itself and its children
-
- def initialize
- @comment = nil
- @document_children = true
- @document_self = true
- @done_documenting = false
- @force_documentation = false
- @parent = nil
- end
-
- ##
- # Replaces our comment with +comment+, unless it is empty.
-
- def comment=(comment)
- @comment = comment unless comment.empty?
- end
-
- ##
- # Enables or disables documentation of this CodeObject's children. Calls
- # remove_classes_and_modules when disabling.
-
- def document_children=(document_children)
- @document_children = document_children
- remove_classes_and_modules unless document_children
- end
-
- ##
- # Enables or disables documentation of this CodeObject. Calls
- # remove_methods_etc when disabling.
-
- def document_self=(document_self)
- @document_self = document_self
- remove_methods_etc unless document_self
- end
-
- ##
- # File name of our parent
-
- def parent_file_name
- @parent ? @parent.base_name : '(unknown)'
- end
-
- ##
- # Name of our parent
-
- def parent_name
- @parent ? @parent.full_name : '(unknown)'
- end
-
- ##
- # Callback called upon disabling documentation of children. See
- # #document_children=
-
- def remove_classes_and_modules
- end
-
- ##
- # Callback called upon disabling documentation of ourself. See
- # #document_self=
-
- def remove_methods_etc
- end
-
- ##
- # Enable capture of documentation
-
- def start_doc
- @document_self = true
- @document_children = true
- end
-
- ##
- # Disable capture of documentation
-
- def stop_doc
- @document_self = false
- @document_children = false
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/code_objects.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/code_objects.rb
deleted file mode 100644
index c60dad92d..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/code_objects.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# We represent the various high-level code constructs that appear in Ruby
-# programs: classes, modules, methods, and so on.
-
-require 'rdoc/code_object'
-require 'rdoc/context'
-require 'rdoc/top_level'
-
-require 'rdoc/class_module'
-require 'rdoc/normal_class'
-require 'rdoc/normal_module'
-require 'rdoc/anon_class'
-require 'rdoc/single_class'
-
-require 'rdoc/any_method'
-require 'rdoc/alias'
-require 'rdoc/ghost_method'
-require 'rdoc/meta_method'
-
-require 'rdoc/attr'
-require 'rdoc/constant'
-require 'rdoc/require'
-require 'rdoc/include'
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/constant.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/constant.rb
deleted file mode 100644
index 56566da8c..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/constant.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'rdoc/code_object'
-
-##
-# A constant
-
-class RDoc::Constant < RDoc::CodeObject
-
- ##
- # The constant's name
-
- attr_accessor :name
-
- ##
- # The constant's value
-
- attr_accessor :value
-
- ##
- # Creates a new constant with +name+, +value+ and +comment+
-
- def initialize(name, value, comment)
- super()
- @name = name
- @value = value
- self.comment = comment
- end
-
- ##
- # Path to this constant
-
- def path
- "#{@parent.path}##{@name}"
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/context.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/context.rb
deleted file mode 100644
index b6763991d..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/context.rb
+++ /dev/null
@@ -1,712 +0,0 @@
-require 'thread'
-require 'rdoc/code_object'
-
-##
-# A Context is something that can hold modules, classes, methods, attributes,
-# aliases, requires, and includes. Classes, modules, and files are all
-# Contexts.
-
-class RDoc::Context < RDoc::CodeObject
-
- ##
- # Types of methods
-
- TYPES = %w[class instance]
-
- ##
- # Method visibilities
-
- VISIBILITIES = [:public, :protected, :private]
-
- ##
- # Aliased methods
-
- attr_reader :aliases
-
- ##
- # attr* methods
-
- attr_reader :attributes
-
- ##
- # Constants defined
-
- attr_reader :constants
-
- ##
- # Current section of documentation
-
- attr_reader :current_section
-
- ##
- # Files this context is found in
-
- attr_reader :in_files
-
- ##
- # Modules this context includes
-
- attr_reader :includes
-
- ##
- # Methods defined in this context
-
- attr_reader :method_list
-
- ##
- # Name of this class excluding namespace. See also full_name
-
- attr_reader :name
-
- ##
- # Files this context requires
-
- attr_reader :requires
-
- ##
- # Sections in this context
-
- attr_reader :sections
-
- ##
- # Aliases that haven't been resolved to a method
-
- attr_accessor :unmatched_alias_lists
-
- ##
- # Current visibility of this context
-
- attr_reader :visibility
-
- ##
- # A per-comment section of documentation like:
- #
- # # :SECTION: The title
- # # The body
-
- class Section
-
- ##
- # Section comment
-
- attr_reader :comment
-
- ##
- # Context this Section lives in
-
- attr_reader :parent
-
- ##
- # Section sequence number (for linking)
-
- attr_reader :sequence
-
- ##
- # Section title
-
- attr_reader :title
-
- @@sequence = "SEC00000"
- @@sequence_lock = Mutex.new
-
- ##
- # Creates a new section with +title+ and +comment+
-
- def initialize(parent, title, comment)
- @parent = parent
- @title = title
-
- @@sequence_lock.synchronize do
- @@sequence.succ!
- @sequence = @@sequence.dup
- end
-
- set_comment comment
- end
-
- ##
- # Sections are equal when they have the same #sequence
-
- def ==(other)
- self.class === other and @sequence == other.sequence
- end
-
- def inspect # :nodoc:
- "#<%s:0x%x %s %p>" % [
- self.class, object_id,
- @sequence, title
- ]
- end
-
- ##
- # Set the comment for this section from the original comment block If
- # the first line contains :section:, strip it and use the rest.
- # Otherwise remove lines up to the line containing :section:, and look
- # for those lines again at the end and remove them. This lets us write
- #
- # # blah blah blah
- # #
- # # :SECTION: The title
- # # The body
-
- def set_comment(comment)
- return unless comment
-
- if comment =~ /^#[ \t]*:section:.*\n/ then
- start = $`
- rest = $'
-
- if start.empty?
- @comment = rest
- else
- @comment = rest.sub(/#{start.chomp}\Z/, '')
- end
- else
- @comment = comment
- end
-
- @comment = nil if @comment.empty?
- end
-
- end
-
- ##
- # Creates an unnamed empty context with public visibility
-
- def initialize
- super
-
- @in_files = []
-
- @name ||= "unknown"
- @comment ||= ""
- @parent = nil
- @visibility = :public
-
- @current_section = Section.new self, nil, nil
- @sections = [@current_section]
-
- initialize_methods_etc
- initialize_classes_and_modules
- end
-
- ##
- # Sets the defaults for classes and modules
-
- def initialize_classes_and_modules
- @classes = {}
- @modules = {}
- end
-
- ##
- # Sets the defaults for methods and so-forth
-
- def initialize_methods_etc
- @method_list = []
- @attributes = []
- @aliases = []
- @requires = []
- @includes = []
- @constants = []
-
- # This Hash maps a method name to a list of unmatched aliases (aliases of
- # a method not yet encountered).
- @unmatched_alias_lists = {}
- end
-
- ##
- # Contexts are sorted by full_name
-
- def <=>(other)
- full_name <=> other.full_name
- end
-
- ##
- # Adds +an_alias+ that is automatically resolved
-
- def add_alias(an_alias)
- meth = find_instance_method_named(an_alias.old_name)
-
- if meth then
- add_alias_impl an_alias, meth
- else
- add_to @aliases, an_alias
- unmatched_alias_list = @unmatched_alias_lists[an_alias.old_name] ||= []
- unmatched_alias_list.push an_alias
- end
-
- an_alias
- end
-
- ##
- # Adds +an_alias+ pointing to +meth+
-
- def add_alias_impl(an_alias, meth)
- new_meth = RDoc::AnyMethod.new an_alias.text, an_alias.new_name
- new_meth.is_alias_for = meth
- new_meth.singleton = meth.singleton
- new_meth.params = meth.params
- new_meth.comment = "Alias for \##{meth.name}"
- meth.add_alias new_meth
- add_method new_meth
- end
-
- ##
- # Adds +attribute+
-
- def add_attribute(attribute)
- add_to @attributes, attribute
- end
-
- ##
- # Adds a class named +name+ with +superclass+.
- #
- # Given <tt>class Container::Item</tt> RDoc assumes +Container+ is a module
- # unless it later sees <tt>class Container</tt>. add_class automatically
- # upgrades +name+ to a class in this case.
-
- def add_class(class_type, name, superclass = 'Object')
- klass = add_class_or_module @classes, class_type, name, superclass
-
- # If the parser encounters Container::Item before encountering
- # Container, then it assumes that Container is a module. This may not
- # be the case, so remove Container from the module list if present and
- # transfer any contained classes and modules to the new class.
-
- RDoc::TopLevel.lock.synchronize do
- mod = RDoc::TopLevel.modules_hash.delete klass.full_name
-
- if mod then
- klass.classes_hash.update mod.classes_hash
- klass.modules_hash.update mod.modules_hash
- klass.method_list.concat mod.method_list
-
- @modules.delete klass.name
- end
-
- RDoc::TopLevel.classes_hash[klass.full_name] = klass
- end
-
- klass
- end
-
- ##
- # Instantiates a +class_type+ named +name+ and adds it the modules or
- # classes Hash +collection+.
-
- def add_class_or_module(collection, class_type, name, superclass = nil)
- full_name = if RDoc::TopLevel === self then # HACK
- name
- else
- "#{self.full_name}::#{name}"
- end
- mod = collection[name]
-
- if mod then
- mod.superclass = superclass unless mod.module?
- else
- all = nil
-
- RDoc::TopLevel.lock.synchronize do
- all = if class_type == RDoc::NormalModule then
- RDoc::TopLevel.modules_hash
- else
- RDoc::TopLevel.classes_hash
- end
-
- mod = all[full_name]
- end
-
- unless mod then
- mod = class_type.new name, superclass
- else
- # If the class has been encountered already, check that its
- # superclass has been set (it may not have been, depending on the
- # context in which it was encountered).
- if class_type == RDoc::NormalClass then
- mod.superclass = superclass unless mod.superclass
- end
- end
-
- unless @done_documenting then
- RDoc::TopLevel.lock.synchronize do
- all[full_name] = mod
- end
- collection[name] = mod
- end
-
- mod.section = @current_section
- mod.parent = self
- end
-
- mod
- end
-
- ##
- # Adds +constant+
-
- def add_constant(constant)
- add_to @constants, constant
- end
-
- ##
- # Adds included module +include+
-
- def add_include(include)
- add_to @includes, include
- end
-
- ##
- # Adds +method+
-
- def add_method(method)
- method.visibility = @visibility
- add_to @method_list, method
-
- unmatched_alias_list = @unmatched_alias_lists[method.name]
- if unmatched_alias_list then
- unmatched_alias_list.each do |unmatched_alias|
- add_alias_impl unmatched_alias, method
- @aliases.delete unmatched_alias
- end
-
- @unmatched_alias_lists.delete method.name
- end
- end
-
- ##
- # Adds a module named +name+. If RDoc already knows +name+ is a class then
- # that class is returned instead. See also #add_class
-
- def add_module(class_type, name)
- return @classes[name] if @classes.key? name
-
- add_class_or_module @modules, class_type, name, nil
- end
-
- ##
- # Adds +require+ to this context's top level
-
- def add_require(require)
- if RDoc::TopLevel === self then
- add_to @requires, require
- else
- parent.add_require require
- end
- end
-
- ##
- # Adds +thing+ to the collection +array+
-
- def add_to(array, thing)
- array << thing if @document_self and not @done_documenting
- thing.parent = self
- thing.section = @current_section
- end
-
- ##
- # Array of classes in this context
-
- def classes
- @classes.values
- end
-
- ##
- # All classes and modules in this namespace
-
- def classes_and_modules
- classes + modules
- end
-
- ##
- # Hash of classes keyed by class name
-
- def classes_hash
- @classes
- end
-
- ##
- # Is part of this thing was defined in +file+?
-
- def defined_in?(file)
- @in_files.include?(file)
- end
-
- ##
- # Iterator for attributes
-
- def each_attribute # :yields: attribute
- @attributes.each {|a| yield a}
- end
-
- ##
- # Iterator for classes and modules
-
- def each_classmodule(&block) # :yields: module
- classes_and_modules.sort.each(&block)
- end
-
- ##
- # Iterator for constants
-
- def each_constant # :yields: constant
- @constants.each {|c| yield c}
- end
-
- ##
- # Iterator for included modules
-
- def each_include # :yields: include
- @includes.each do |i| yield i end
- end
-
- ##
- # Iterator for methods
-
- def each_method # :yields: method
- @method_list.sort.each {|m| yield m}
- end
-
- ##
- # Finds an attribute with +name+ in this context
-
- def find_attribute_named(name)
- @attributes.find { |m| m.name == name }
- end
-
- ##
- # Finds a constant with +name+ in this context
-
- def find_constant_named(name)
- @constants.find {|m| m.name == name}
- end
-
- ##
- # Find a module at a higher scope
-
- def find_enclosing_module_named(name)
- parent && parent.find_module_named(name)
- end
-
- ##
- # Finds a file with +name+ in this context
-
- def find_file_named(name)
- top_level.class.find_file_named(name)
- end
-
- ##
- # Finds an instance method with +name+ in this context
-
- def find_instance_method_named(name)
- @method_list.find { |meth| meth.name == name && !meth.singleton }
- end
-
- ##
- # Finds a method, constant, attribute, module or files named +symbol+ in
- # this context
-
- def find_local_symbol(symbol)
- find_method_named(symbol) or
- find_constant_named(symbol) or
- find_attribute_named(symbol) or
- find_module_named(symbol) or
- find_file_named(symbol)
- end
-
- ##
- # Finds a instance or module method with +name+ in this context
-
- def find_method_named(name)
- @method_list.find { |meth| meth.name == name }
- end
-
- ##
- # Find a module with +name+ using ruby's scoping rules
-
- def find_module_named(name)
- res = @modules[name] || @classes[name]
- return res if res
- return self if self.name == name
- find_enclosing_module_named name
- end
-
- ##
- # Look up +symbol+. If +method+ is non-nil, then we assume the symbol
- # references a module that contains that method.
-
- def find_symbol(symbol, method = nil)
- result = nil
-
- case symbol
- when /^::(.*)/ then
- result = top_level.find_symbol($1)
- when /::/ then
- modules = symbol.split(/::/)
-
- unless modules.empty? then
- module_name = modules.shift
- result = find_module_named(module_name)
-
- if result then
- modules.each do |name|
- result = result.find_module_named name
- break unless result
- end
- end
- end
-
- else
- # if a method is specified, then we're definitely looking for
- # a module, otherwise it could be any symbol
- if method then
- result = find_module_named symbol
- else
- result = find_local_symbol symbol
- if result.nil? then
- if symbol =~ /^[A-Z]/ then
- result = parent
- while result && result.name != symbol do
- result = result.parent
- end
- end
- end
- end
- end
-
- if result and method then
- fail unless result.respond_to? :find_local_symbol
- result = result.find_local_symbol(method)
- end
-
- result
- end
-
- ##
- # URL for this with a +prefix+
-
- def http_url(prefix)
- path = full_name
- path = path.gsub(/<<\s*(\w*)/, 'from-\1') if path =~ /<</
- path = [prefix] + path.split('::')
-
- File.join(*path.compact) + '.html'
- end
-
- ##
- # Breaks method_list into a nested hash by type (class or instance) and
- # visibility (public, protected private)
-
- def methods_by_type
- methods = {}
-
- TYPES.each do |type|
- visibilities = {}
- VISIBILITIES.each do |vis|
- visibilities[vis] = []
- end
-
- methods[type] = visibilities
- end
-
- each_method do |method|
- methods[method.type][method.visibility] << method
- end
-
- methods
- end
-
- ##
- # Yields Method and Attr entries matching the list of names in +methods+.
- # Attributes are only returned when +singleton+ is false.
-
- def methods_matching(methods, singleton = false)
- count = 0
-
- @method_list.each do |m|
- if methods.include? m.name and m.singleton == singleton then
- yield m
- count += 1
- end
- end
-
- return if count == methods.size || singleton
-
- @attributes.each do |a|
- yield a if methods.include? a.name
- end
- end
-
- ##
- # Array of modules in this context
-
- def modules
- @modules.values
- end
-
- ##
- # Hash of modules keyed by module name
-
- def modules_hash
- @modules
- end
-
- ##
- # Changes the visibility for new methods to +visibility+
-
- def ongoing_visibility=(visibility)
- @visibility = visibility
- end
-
- ##
- # Record which file +top_level+ is in
-
- def record_location(top_level)
- @in_files << top_level unless @in_files.include?(top_level)
- end
-
- ##
- # If a class's documentation is turned off after we've started collecting
- # methods etc., we need to remove the ones we have
-
- def remove_methods_etc
- initialize_methods_etc
- end
-
- ##
- # Given an array +methods+ of method names, set the visibility of each to
- # +visibility+
-
- def set_visibility_for(methods, visibility, singleton = false)
- methods_matching methods, singleton do |m|
- m.visibility = visibility
- end
- end
-
- ##
- # Removes classes and modules when we see a :nodoc: all
-
- def remove_classes_and_modules
- initialize_classes_and_modules
- end
-
- ##
- # Creates a new section with +title+ and +comment+
-
- def set_current_section(title, comment)
- @current_section = Section.new self, title, comment
- @sections << @current_section
- end
-
- ##
- # Return the TopLevel that owns us
-
- def top_level
- return @top_level if defined? @top_level
- @top_level = self
- @top_level = @top_level.parent until RDoc::TopLevel === @top_level
- @top_level
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/diagram.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/diagram.rb
deleted file mode 100644
index 9cddd5b39..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/diagram.rb
+++ /dev/null
@@ -1,340 +0,0 @@
-# A wonderful hack by to draw package diagrams using the dot package.
-# Originally written by Jah, team Enticla.
-#
-# You must have the V1.7 or later in your path
-# http://www.research.att.com/sw/tools/graphviz/
-
-require 'rdoc/dot'
-
-module RDoc
-
- ##
- # Draw a set of diagrams representing the modules and classes in the
- # system. We draw one diagram for each file, and one for each top-level
- # class or module. This means there will be overlap. However, it also
- # means that you'll get better context for objects.
- #
- # To use, simply
- #
- # d = Diagram.new(info) # pass in collection of top level infos
- # d.draw
- #
- # The results will be written to the +dot+ subdirectory. The process
- # also sets the +diagram+ attribute in each object it graphs to
- # the name of the file containing the image. This can be used
- # by output generators to insert images.
-
- class Diagram
-
- FONT = "Arial"
-
- DOT_PATH = "dot"
-
- ##
- # Pass in the set of top level objects. The method also creates the
- # subdirectory to hold the images
-
- def initialize(info, options)
- @info = info
- @options = options
- @counter = 0
- FileUtils.mkdir_p(DOT_PATH)
- @diagram_cache = {}
- end
-
- ##
- # Draw the diagrams. We traverse the files, drawing a diagram for each. We
- # also traverse each top-level class and module in that file drawing a
- # diagram for these too.
-
- def draw
- unless @options.quiet
- $stderr.print "Diagrams: "
- $stderr.flush
- end
-
- @info.each_with_index do |i, file_count|
- @done_modules = {}
- @local_names = find_names(i)
- @global_names = []
- @global_graph = graph = DOT::Digraph.new('name' => 'TopLevel',
- 'fontname' => FONT,
- 'fontsize' => '8',
- 'bgcolor' => 'lightcyan1',
- 'compound' => 'true')
-
- # it's a little hack %) i'm too lazy to create a separate class
- # for default node
- graph << DOT::Node.new('name' => 'node',
- 'fontname' => FONT,
- 'color' => 'black',
- 'fontsize' => 8)
-
- i.modules.each do |mod|
- draw_module(mod, graph, true, i.relative_name)
- end
- add_classes(i, graph, i.relative_name)
-
- i.diagram = convert_to_png("f_#{file_count}", graph)
-
- # now go through and document each top level class and
- # module independently
- i.modules.each_with_index do |mod, count|
- @done_modules = {}
- @local_names = find_names(mod)
- @global_names = []
-
- @global_graph = graph = DOT::Digraph.new('name' => 'TopLevel',
- 'fontname' => FONT,
- 'fontsize' => '8',
- 'bgcolor' => 'lightcyan1',
- 'compound' => 'true')
-
- graph << DOT::Node.new('name' => 'node',
- 'fontname' => FONT,
- 'color' => 'black',
- 'fontsize' => 8)
- draw_module(mod, graph, true)
- mod.diagram = convert_to_png("m_#{file_count}_#{count}",
- graph)
- end
- end
- $stderr.puts unless @options.quiet
- end
-
- private
-
- def find_names(mod)
- return [mod.full_name] + mod.classes.collect{|cl| cl.full_name} +
- mod.modules.collect{|m| find_names(m)}.flatten
- end
-
- def find_full_name(name, mod)
- full_name = name.dup
- return full_name if @local_names.include?(full_name)
- mod_path = mod.full_name.split('::')[0..-2]
- unless mod_path.nil?
- until mod_path.empty?
- full_name = mod_path.pop + '::' + full_name
- return full_name if @local_names.include?(full_name)
- end
- end
- return name
- end
-
- def draw_module(mod, graph, top_level = false, file = nil)
- return if @done_modules[mod.full_name] and not top_level
-
- @counter += 1
- url = mod.http_url("classes")
- m = DOT::Subgraph.new('name' => "cluster_#{mod.full_name.gsub( /:/,'_' )}",
- 'label' => mod.name,
- 'fontname' => FONT,
- 'color' => 'blue',
- 'style' => 'filled',
- 'URL' => %{"#{url}"},
- 'fillcolor' => top_level ? 'palegreen1' : 'palegreen3')
-
- @done_modules[mod.full_name] = m
- add_classes(mod, m, file)
- graph << m
-
- unless mod.includes.empty?
- mod.includes.each do |inc|
- m_full_name = find_full_name(inc.name, mod)
- if @local_names.include?(m_full_name)
- @global_graph << DOT::Edge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
- 'to' => "#{mod.full_name.gsub( /:/,'_' )}",
- 'ltail' => "cluster_#{m_full_name.gsub( /:/,'_' )}",
- 'lhead' => "cluster_#{mod.full_name.gsub( /:/,'_' )}")
- else
- unless @global_names.include?(m_full_name)
- path = m_full_name.split("::")
- url = File.join('classes', *path) + ".html"
- @global_graph << DOT::Node.new('name' => "#{m_full_name.gsub( /:/,'_' )}",
- 'shape' => 'box',
- 'label' => "#{m_full_name}",
- 'URL' => %{"#{url}"})
- @global_names << m_full_name
- end
- @global_graph << DOT::Edge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
- 'to' => "#{mod.full_name.gsub( /:/,'_' )}",
- 'lhead' => "cluster_#{mod.full_name.gsub( /:/,'_' )}")
- end
- end
- end
- end
-
- def add_classes(container, graph, file = nil )
-
- use_fileboxes = @options.fileboxes
-
- files = {}
-
- # create dummy node (needed if empty and for module includes)
- if container.full_name
- graph << DOT::Node.new('name' => "#{container.full_name.gsub( /:/,'_' )}",
- 'label' => "",
- 'width' => (container.classes.empty? and
- container.modules.empty?) ?
- '0.75' : '0.01',
- 'height' => '0.01',
- 'shape' => 'plaintext')
- end
-
- container.classes.each_with_index do |cl, cl_index|
- last_file = cl.in_files[-1].relative_name
-
- if use_fileboxes && !files.include?(last_file)
- @counter += 1
- files[last_file] =
- DOT::Subgraph.new('name' => "cluster_#{@counter}",
- 'label' => "#{last_file}",
- 'fontname' => FONT,
- 'color'=>
- last_file == file ? 'red' : 'black')
- end
-
- next if cl.name == 'Object' || cl.name[0,2] == "<<"
-
- url = cl.http_url("classes")
-
- label = cl.name.dup
- if use_fileboxes && cl.in_files.length > 1
- label << '\n[' +
- cl.in_files.collect {|i|
- i.relative_name
- }.sort.join( '\n' ) +
- ']'
- end
-
- attrs = {
- 'name' => "#{cl.full_name.gsub( /:/, '_' )}",
- 'fontcolor' => 'black',
- 'style'=>'filled',
- 'color'=>'palegoldenrod',
- 'label' => label,
- 'shape' => 'ellipse',
- 'URL' => %{"#{url}"}
- }
-
- c = DOT::Node.new(attrs)
-
- if use_fileboxes
- files[last_file].push c
- else
- graph << c
- end
- end
-
- if use_fileboxes
- files.each_value do |val|
- graph << val
- end
- end
-
- unless container.classes.empty?
- container.classes.each_with_index do |cl, cl_index|
- cl.includes.each do |m|
- m_full_name = find_full_name(m.name, cl)
- if @local_names.include?(m_full_name)
- @global_graph << DOT::Edge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
- 'to' => "#{cl.full_name.gsub( /:/,'_' )}",
- 'ltail' => "cluster_#{m_full_name.gsub( /:/,'_' )}")
- else
- unless @global_names.include?(m_full_name)
- path = m_full_name.split("::")
- url = File.join('classes', *path) + ".html"
- @global_graph << DOT::Node.new('name' => "#{m_full_name.gsub( /:/,'_' )}",
- 'shape' => 'box',
- 'label' => "#{m_full_name}",
- 'URL' => %{"#{url}"})
- @global_names << m_full_name
- end
- @global_graph << DOT::Edge.new('from' => "#{m_full_name.gsub( /:/,'_' )}",
- 'to' => "#{cl.full_name.gsub( /:/, '_')}")
- end
- end
-
- sclass = cl.superclass
- next if sclass.nil? || sclass == 'Object'
- sclass_full_name = find_full_name(sclass,cl)
- unless @local_names.include?(sclass_full_name) or @global_names.include?(sclass_full_name)
- path = sclass_full_name.split("::")
- url = File.join('classes', *path) + ".html"
- @global_graph << DOT::Node.new('name' => "#{sclass_full_name.gsub( /:/, '_' )}",
- 'label' => sclass_full_name,
- 'URL' => %{"#{url}"})
- @global_names << sclass_full_name
- end
- @global_graph << DOT::Edge.new('from' => "#{sclass_full_name.gsub( /:/,'_' )}",
- 'to' => "#{cl.full_name.gsub( /:/, '_')}")
- end
- end
-
- container.modules.each do |submod|
- draw_module(submod, graph)
- end
-
- end
-
- def convert_to_png(file_base, graph)
- str = graph.to_s
- return @diagram_cache[str] if @diagram_cache[str]
- op_type = @options.image_format
- dotfile = File.join(DOT_PATH, file_base)
- src = dotfile + ".dot"
- dot = dotfile + "." + op_type
-
- unless @options.quiet
- $stderr.print "."
- $stderr.flush
- end
-
- File.open(src, 'w+' ) do |f|
- f << str << "\n"
- end
-
- system "dot", "-T#{op_type}", src, "-o", dot
-
- # Now construct the imagemap wrapper around
- # that png
-
- ret = wrap_in_image_map(src, dot)
- @diagram_cache[str] = ret
- return ret
- end
-
- ##
- # Extract the client-side image map from dot, and use it to generate the
- # imagemap proper. Return the whole <map>..<img> combination, suitable for
- # inclusion on the page
-
- def wrap_in_image_map(src, dot)
- res = ""
- dot_map = `dot -Tismap #{src}`
-
- if(!dot_map.empty?)
- res << %{<map id="map" name="map">\n}
- dot_map.split($/).each do |area|
- unless area =~ /^rectangle \((\d+),(\d+)\) \((\d+),(\d+)\) ([\/\w.]+)\s*(.*)/
- $stderr.puts "Unexpected output from dot:\n#{area}"
- return nil
- end
-
- xs, ys = [$1.to_i, $3.to_i], [$2.to_i, $4.to_i]
- url, area_name = $5, $6
-
- res << %{ <area shape="rect" coords="#{xs.min},#{ys.min},#{xs.max},#{ys.max}" }
- res << %{ href="#{url}" alt="#{area_name}" />\n}
- end
- res << "</map>\n"
- end
-
- res << %{<img src="#{dot}" usemap="#map" alt="#{dot}" />}
- return res
- end
-
- end
-
-end
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/dot.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/dot.rb
deleted file mode 100644
index fbd2cfba0..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/dot.rb
+++ /dev/null
@@ -1,249 +0,0 @@
-module RDoc; end
-
-module RDoc::DOT
-
- TAB = ' '
- TAB2 = TAB * 2
-
- # options for node declaration
- NODE_OPTS = [
- 'bgcolor',
- 'color',
- 'fontcolor',
- 'fontname',
- 'fontsize',
- 'height',
- 'width',
- 'label',
- 'layer',
- 'rank',
- 'shape',
- 'shapefile',
- 'style',
- 'URL',
- ]
-
- # options for edge declaration
- EDGE_OPTS = [
- 'color',
- 'decorate',
- 'dir',
- 'fontcolor',
- 'fontname',
- 'fontsize',
- 'id',
- 'label',
- 'layer',
- 'lhead',
- 'ltail',
- 'minlen',
- 'style',
- 'weight'
- ]
-
- # options for graph declaration
- GRAPH_OPTS = [
- 'bgcolor',
- 'center',
- 'clusterrank',
- 'color',
- 'compound',
- 'concentrate',
- 'fillcolor',
- 'fontcolor',
- 'fontname',
- 'fontsize',
- 'label',
- 'layerseq',
- 'margin',
- 'mclimit',
- 'nodesep',
- 'nslimit',
- 'ordering',
- 'orientation',
- 'page',
- 'rank',
- 'rankdir',
- 'ranksep',
- 'ratio',
- 'size',
- 'style',
- 'URL'
- ]
-
- # a root class for any element in dot notation
- class SimpleElement
- attr_accessor :name
-
- def initialize( params = {} )
- @label = params['name'] ? params['name'] : ''
- end
-
- def to_s
- @name
- end
- end
-
- # an element that has options ( node, edge or graph )
- class Element < SimpleElement
- #attr_reader :parent
- attr_accessor :name, :options
-
- def initialize( params = {}, option_list = [] )
- super( params )
- @name = params['name'] ? params['name'] : nil
- @parent = params['parent'] ? params['parent'] : nil
- @options = {}
- option_list.each{ |i|
- @options[i] = params[i] if params[i]
- }
- @options['label'] ||= @name if @name != 'node'
- end
-
- def each_option
- @options.each{ |i| yield i }
- end
-
- def each_option_pair
- @options.each_pair{ |key, val| yield key, val }
- end
-
- #def parent=( thing )
- # @parent.delete( self ) if defined?( @parent ) and @parent
- # @parent = thing
- #end
- end
-
-
- # this is used when we build nodes that have shape=record
- # ports don't have options :)
- class Port < SimpleElement
- attr_accessor :label
-
- def initialize( params = {} )
- super( params )
- @name = params['label'] ? params['label'] : ''
- end
- def to_s
- ( @name && @name != "" ? "<#{@name}>" : "" ) + "#{@label}"
- end
- end
-
- # node element
- class Node < Element
-
- def initialize( params = {}, option_list = NODE_OPTS )
- super( params, option_list )
- @ports = params['ports'] ? params['ports'] : []
- end
-
- def each_port
- @ports.each{ |i| yield i }
- end
-
- def << ( thing )
- @ports << thing
- end
-
- def push ( thing )
- @ports.push( thing )
- end
-
- def pop
- @ports.pop
- end
-
- def to_s( t = '' )
-
- label = @options['shape'] != 'record' && @ports.length == 0 ?
- @options['label'] ?
- t + TAB + "label = \"#{@options['label']}\"\n" :
- '' :
- t + TAB + 'label = "' + " \\\n" +
- t + TAB2 + "#{@options['label']}| \\\n" +
- @ports.collect{ |i|
- t + TAB2 + i.to_s
- }.join( "| \\\n" ) + " \\\n" +
- t + TAB + '"' + "\n"
-
- t + "#{@name} [\n" +
- @options.to_a.collect{ |i|
- i[1] && i[0] != 'label' ?
- t + TAB + "#{i[0]} = #{i[1]}" : nil
- }.compact.join( ",\n" ) + ( label != '' ? ",\n" : "\n" ) +
- label +
- t + "]\n"
- end
- end
-
- # subgraph element is the same to graph, but has another header in dot
- # notation
- class Subgraph < Element
-
- def initialize( params = {}, option_list = GRAPH_OPTS )
- super( params, option_list )
- @nodes = params['nodes'] ? params['nodes'] : []
- @dot_string = 'subgraph'
- end
-
- def each_node
- @nodes.each{ |i| yield i }
- end
-
- def << ( thing )
- @nodes << thing
- end
-
- def push( thing )
- @nodes.push( thing )
- end
-
- def pop
- @nodes.pop
- end
-
- def to_s( t = '' )
- hdr = t + "#{@dot_string} #{@name} {\n"
-
- options = @options.to_a.collect{ |name, val|
- val && name != 'label' ?
- t + TAB + "#{name} = #{val}" :
- name ? t + TAB + "#{name} = \"#{val}\"" : nil
- }.compact.join( "\n" ) + "\n"
-
- nodes = @nodes.collect{ |i|
- i.to_s( t + TAB )
- }.join( "\n" ) + "\n"
- hdr + options + nodes + t + "}\n"
- end
- end
-
- # this is graph
- class Digraph < Subgraph
- def initialize( params = {}, option_list = GRAPH_OPTS )
- super( params, option_list )
- @dot_string = 'digraph'
- end
- end
-
- # this is edge
- class Edge < Element
- attr_accessor :from, :to
- def initialize( params = {}, option_list = EDGE_OPTS )
- super( params, option_list )
- @from = params['from'] ? params['from'] : nil
- @to = params['to'] ? params['to'] : nil
- end
-
- def to_s( t = '' )
- t + "#{@from} -> #{to} [\n" +
- @options.to_a.collect{ |i|
- i[1] && i[0] != 'label' ?
- t + TAB + "#{i[0]} = #{i[1]}" :
- i[1] ? t + TAB + "#{i[0]} = \"#{i[1]}\"" : nil
- }.compact.join( "\n" ) + "\n" + t + "]\n"
- end
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator.rb
deleted file mode 100644
index b65002977..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rdoc'
-
-##
-# Namespace for generators
-
-module RDoc::Generator
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/darkfish.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/darkfish.rb
deleted file mode 100644
index 4e5791cd3..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/darkfish.rb
+++ /dev/null
@@ -1,455 +0,0 @@
-#!ruby
-# vim: noet ts=2 sts=8 sw=2
-
-require 'rubygems'
-gem 'rdoc', '>= 2.4' unless defined? $rdoc_rakefile
-
-require 'pp'
-require 'pathname'
-require 'fileutils'
-require 'erb'
-require 'yaml'
-
-require 'rdoc/rdoc'
-require 'rdoc/generator'
-require 'rdoc/generator/markup'
-
-#
-# Darkfish RDoc HTML Generator
-#
-# $Id: darkfish.rb 52 2009-01-07 02:08:11Z deveiant $
-#
-# == Author/s
-# * Michael Granger (ged@FaerieMUD.org)
-#
-# == Contributors
-# * Mahlon E. Smith (mahlon@martini.nu)
-# * Eric Hodel (drbrain@segment7.net)
-#
-# == License
-#
-# Copyright (c) 2007, 2008, Michael Granger. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-#
-# * Neither the name of the author/s, nor the names of the project's
-# contributors may be used to endorse or promote products derived from this
-# software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-class RDoc::Generator::Darkfish
-
- RDoc::RDoc.add_generator( self )
-
- include ERB::Util
-
- # Subversion rev
- SVNRev = %$Rev: 52 $
-
- # Subversion ID
- SVNId = %$Id: darkfish.rb 52 2009-01-07 02:08:11Z deveiant $
-
- # Path to this file's parent directory. Used to find templates and other
- # resources.
- GENERATOR_DIR = File.join 'rdoc', 'generator'
-
- # Release Version
- VERSION = '1.1.6'
-
- # Directory where generated classes live relative to the root
- CLASS_DIR = nil
-
- # Directory where generated files live relative to the root
- FILE_DIR = nil
-
-
- #################################################################
- ### C L A S S M E T H O D S
- #################################################################
-
- ### Standard generator factory method
- def self::for( options )
- new( options )
- end
-
-
- #################################################################
- ### I N S T A N C E M E T H O D S
- #################################################################
-
- ### Initialize a few instance variables before we start
- def initialize( options )
- @options = options
- @options.diagram = false
-
- template = @options.template || 'darkfish'
-
- template_dir = $LOAD_PATH.map do |path|
- File.join path, GENERATOR_DIR, 'template', template
- end.find do |dir|
- File.directory? dir
- end
-
- raise RDoc::Error, "could not find template #{template.inspect}" unless
- template_dir
-
- @template_dir = Pathname.new File.expand_path(template_dir)
-
- @files = nil
- @classes = nil
-
- @basedir = Pathname.pwd.expand_path
- end
-
- ######
- public
- ######
-
- # The output directory
- attr_reader :outputdir
-
-
- ### Output progress information if debugging is enabled
- def debug_msg( *msg )
- return unless $DEBUG_RDOC
- $stderr.puts( *msg )
- end
-
- def class_dir
- CLASS_DIR
- end
-
- def file_dir
- FILE_DIR
- end
-
- ### Create the directories the generated docs will live in if
- ### they don't already exist.
- def gen_sub_directories
- @outputdir.mkpath
- end
-
- ### Copy over the stylesheet into the appropriate place in the output
- ### directory.
- def write_style_sheet
- debug_msg "Copying static files"
- options = { :verbose => $DEBUG_RDOC, :noop => $dryrun }
-
- FileUtils.cp @template_dir + 'rdoc.css', '.', options
-
- Dir[(@template_dir + "{js,images}/**/*").to_s].each do |path|
- next if File.directory? path
- next if path =~ /#{File::SEPARATOR}\./
-
- dst = Pathname.new(path).relative_path_from @template_dir
-
- # I suck at glob
- dst_dir = dst.dirname
- FileUtils.mkdir_p dst_dir, options unless File.exist? dst_dir
-
- FileUtils.cp @template_dir + path, dst, options
- end
- end
-
- ### Build the initial indices and output objects
- ### based on an array of TopLevel objects containing
- ### the extracted information.
- def generate( top_levels )
- @outputdir = Pathname.new( @options.op_dir ).expand_path( @basedir )
-
- @files = top_levels.sort
- @classes = RDoc::TopLevel.all_classes_and_modules.sort
- @methods = @classes.map { |m| m.method_list }.flatten.sort
- @modsort = get_sorted_module_list( @classes )
-
- # Now actually write the output
- write_style_sheet
- generate_index
- generate_class_files
- generate_file_files
-
- rescue StandardError => err
- debug_msg "%s: %s\n %s" % [ err.class.name, err.message, err.backtrace.join("\n ") ]
- raise
- end
-
- #########
- protected
- #########
-
- ### Return a list of the documented modules sorted by salience first, then
- ### by name.
- def get_sorted_module_list( classes )
- nscounts = classes.inject({}) do |counthash, klass|
- top_level = klass.full_name.gsub( /::.*/, '' )
- counthash[top_level] ||= 0
- counthash[top_level] += 1
-
- counthash
- end
-
- # Sort based on how often the top level namespace occurs, and then on the
- # name of the module -- this works for projects that put their stuff into
- # a namespace, of course, but doesn't hurt if they don't.
- classes.sort_by do |klass|
- top_level = klass.full_name.gsub( /::.*/, '' )
- [
- nscounts[ top_level ] * -1,
- klass.full_name
- ]
- end.select do |klass|
- klass.document_self
- end
- end
-
- ### Generate an index page which lists all the classes which
- ### are documented.
- def generate_index
- debug_msg "Rendering the index page..."
-
- templatefile = @template_dir + 'index.rhtml'
- template_src = templatefile.read
- template = ERB.new( template_src, nil, '<>' )
- template.filename = templatefile.to_s
- context = binding()
-
- output = nil
-
- begin
- output = template.result( context )
- rescue NoMethodError => err
- raise RDoc::Error, "Error while evaluating %s: %s (at %p)" % [
- templatefile,
- err.message,
- eval( "_erbout[-50,50]", context )
- ], err.backtrace
- end
-
- outfile = @basedir + @options.op_dir + 'index.html'
- unless $dryrun
- debug_msg "Outputting to %s" % [outfile.expand_path]
- outfile.open( 'w', 0644 ) do |fh|
- fh.print( output )
- end
- else
- debug_msg "Would have output to %s" % [outfile.expand_path]
- end
- end
-
- ### Generate a documentation file for each class
- def generate_class_files
- debug_msg "Generating class documentation in #@outputdir"
- templatefile = @template_dir + 'classpage.rhtml'
-
- @classes.each do |klass|
- debug_msg " working on %s (%s)" % [ klass.full_name, klass.path ]
- outfile = @outputdir + klass.path
- rel_prefix = @outputdir.relative_path_from( outfile.dirname )
- svninfo = self.get_svninfo( klass )
-
- debug_msg " rendering #{outfile}"
- self.render_template( templatefile, binding(), outfile )
- end
- end
-
- ### Generate a documentation file for each file
- def generate_file_files
- debug_msg "Generating file documentation in #@outputdir"
- templatefile = @template_dir + 'filepage.rhtml'
-
- @files.each do |file|
- outfile = @outputdir + file.path
- debug_msg " working on %s (%s)" % [ file.full_name, outfile ]
- rel_prefix = @outputdir.relative_path_from( outfile.dirname )
- context = binding()
-
- debug_msg " rendering #{outfile}"
- self.render_template( templatefile, binding(), outfile )
- end
- end
-
-
- ### Return a string describing the amount of time in the given number of
- ### seconds in terms a human can understand easily.
- def time_delta_string( seconds )
- return 'less than a minute' if seconds < 1.minute
- return (seconds / 1.minute).to_s + ' minute' + (seconds/60 == 1 ? '' : 's') if seconds < 50.minutes
- return 'about one hour' if seconds < 90.minutes
- return (seconds / 1.hour).to_s + ' hours' if seconds < 18.hours
- return 'one day' if seconds < 1.day
- return 'about one day' if seconds < 2.days
- return (seconds / 1.day).to_s + ' days' if seconds < 1.week
- return 'about one week' if seconds < 2.week
- return (seconds / 1.week).to_s + ' weeks' if seconds < 3.months
- return (seconds / 1.month).to_s + ' months' if seconds < 1.year
- return (seconds / 1.year).to_s + ' years'
- end
-
-
- # %q$Id: darkfish.rb 52 2009-01-07 02:08:11Z deveiant $"
- SVNID_PATTERN = /
- \$Id:\s
- (\S+)\s # filename
- (\d+)\s # rev
- (\d{4}-\d{2}-\d{2})\s # Date (YYYY-MM-DD)
- (\d{2}:\d{2}:\d{2}Z)\s # Time (HH:MM:SSZ)
- (\w+)\s # committer
- \$$
- /x
-
- ### Try to extract Subversion information out of the first constant whose value looks like
- ### a subversion Id tag. If no matching constant is found, and empty hash is returned.
- def get_svninfo( klass )
- constants = klass.constants or return {}
-
- constants.find {|c| c.value =~ SVNID_PATTERN } or return {}
-
- filename, rev, date, time, committer = $~.captures
- commitdate = Time.parse( date + ' ' + time )
-
- return {
- :filename => filename,
- :rev => Integer( rev ),
- :commitdate => commitdate,
- :commitdelta => time_delta_string( Time.now.to_i - commitdate.to_i ),
- :committer => committer,
- }
- end
-
-
- ### Load and render the erb template in the given +templatefile+ within the
- ### specified +context+ (a Binding object) and write it out to +outfile+.
- ### Both +templatefile+ and +outfile+ should be Pathname-like objects.
-
- def render_template( templatefile, context, outfile )
- template_src = templatefile.read
- template = ERB.new( template_src, nil, '<>' )
- template.filename = templatefile.to_s
-
- output = begin
- template.result( context )
- rescue NoMethodError => err
- raise RDoc::Error, "Error while evaluating %s: %s (at %p)" % [
- templatefile.to_s,
- err.message,
- eval( "_erbout[-50,50]", context )
- ], err.backtrace
- end
-
- unless $dryrun
- outfile.dirname.mkpath
- outfile.open( 'w', 0644 ) do |ofh|
- ofh.print( output )
- end
- else
- debug_msg " would have written %d bytes to %s" %
- [ output.length, outfile ]
- end
- end
-
-end # Roc::Generator::Darkfish
-
-# :stopdoc:
-
-### Time constants
-module TimeConstantMethods # :nodoc:
-
- ### Number of seconds (returns receiver unmodified)
- def seconds
- return self
- end
- alias_method :second, :seconds
-
- ### Returns number of seconds in <receiver> minutes
- def minutes
- return self * 60
- end
- alias_method :minute, :minutes
-
- ### Returns the number of seconds in <receiver> hours
- def hours
- return self * 60.minutes
- end
- alias_method :hour, :hours
-
- ### Returns the number of seconds in <receiver> days
- def days
- return self * 24.hours
- end
- alias_method :day, :days
-
- ### Return the number of seconds in <receiver> weeks
- def weeks
- return self * 7.days
- end
- alias_method :week, :weeks
-
- ### Returns the number of seconds in <receiver> fortnights
- def fortnights
- return self * 2.weeks
- end
- alias_method :fortnight, :fortnights
-
- ### Returns the number of seconds in <receiver> months (approximate)
- def months
- return self * 30.days
- end
- alias_method :month, :months
-
- ### Returns the number of seconds in <receiver> years (approximate)
- def years
- return (self * 365.25.days).to_i
- end
- alias_method :year, :years
-
-
- ### Returns the Time <receiver> number of seconds before the
- ### specified +time+. E.g., 2.hours.before( header.expiration )
- def before( time )
- return time - self
- end
-
-
- ### Returns the Time <receiver> number of seconds ago. (e.g.,
- ### expiration > 2.hours.ago )
- def ago
- return self.before( ::Time.now )
- end
-
-
- ### Returns the Time <receiver> number of seconds after the given +time+.
- ### E.g., 10.minutes.after( header.expiration )
- def after( time )
- return time + self
- end
-
- # Reads best without arguments: 10.minutes.from_now
- def from_now
- return self.after( ::Time.now )
- end
-end # module TimeConstantMethods
-
-
-# Extend Numeric with time constants
-class Numeric # :nodoc:
- include TimeConstantMethods
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/markup.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/markup.rb
deleted file mode 100644
index c492483b3..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/markup.rb
+++ /dev/null
@@ -1,194 +0,0 @@
-require 'rdoc/code_objects'
-require 'rdoc/generator'
-require 'rdoc/markup/to_html_crossref'
-
-##
-# Handle common HTML markup tasks for various CodeObjects
-
-module RDoc::Generator::Markup
-
- ##
- # Generates a relative URL from this object's path to +target_path+
-
- def aref_to(target_path)
- RDoc::Markup::ToHtml.gen_relative_url path, target_path
- end
-
- ##
- # Generates a relative URL from +from_path+ to this object's path
-
- def as_href(from_path)
- RDoc::Markup::ToHtml.gen_relative_url from_path, path
- end
-
- ##
- # Handy wrapper for marking up this object's comment
-
- def description
- markup @comment
- end
-
- ##
- # RDoc::Markup formatter object
-
- def formatter
- return @formatter if defined? @formatter
-
- show_hash = RDoc::RDoc.current.options.show_hash
- this = RDoc::Context === self ? self : @parent
- @formatter = RDoc::Markup::ToHtmlCrossref.new this.path, this, show_hash
- end
-
- ##
- # Convert a string in markup format into HTML.
-
- def markup(str, remove_para = false)
- return '' unless str
-
- # Convert leading comment markers to spaces, but only if all non-blank
- # lines have them
- if str =~ /^(?>\s*)[^\#]/ then
- content = str
- else
- content = str.gsub(/^\s*(#+)/) { $1.tr '#', ' ' }
- end
-
- res = formatter.convert content
-
- if remove_para then
- res.sub!(/^<p>/, '')
- res.sub!(/<\/p>$/, '')
- end
-
- res
- end
-
- ##
- # Build a webcvs URL starting for the given +url+ with +full_path+ appended
- # as the destination path. If +url+ contains '%s' +full_path+ will be
- # sprintf'd into +url+ instead.
-
- def cvs_url(url, full_path)
- if /%s/ =~ url then
- sprintf url, full_path
- else
- url + full_path
- end
- end
-
-end
-
-class RDoc::AnyMethod
-
- include RDoc::Generator::Markup
-
- ##
- # Prepend +src+ with line numbers. Relies on the first line of a source
- # code listing having:
- #
- # # File xxxxx, line dddd
-
- def add_line_numbers(src)
- if src =~ /\A.*, line (\d+)/ then
- first = $1.to_i - 1
- last = first + src.count("\n")
- size = last.to_s.length
-
- line = first
- src.gsub!(/^/) do
- res = if line == first then
- " " * (size + 2)
- else
- "%#{size}d: " % line
- end
-
- line += 1
- res
- end
- end
- end
-
- ##
- # Turns the method's token stream into HTML
-
- def markup_code
- return '' unless @token_stream
-
- src = ""
-
- @token_stream.each do |t|
- next unless t
- # style = STYLE_MAP[t.class]
- style = case t
- when RDoc::RubyToken::TkCONSTANT then "ruby-constant"
- when RDoc::RubyToken::TkKW then "ruby-keyword kw"
- when RDoc::RubyToken::TkIVAR then "ruby-ivar"
- when RDoc::RubyToken::TkOp then "ruby-operator"
- when RDoc::RubyToken::TkId then "ruby-identifier"
- when RDoc::RubyToken::TkNode then "ruby-node"
- when RDoc::RubyToken::TkCOMMENT then "ruby-comment cmt"
- when RDoc::RubyToken::TkREGEXP then "ruby-regexp re"
- when RDoc::RubyToken::TkSTRING then "ruby-value str"
- when RDoc::RubyToken::TkVal then "ruby-value"
- else
- nil
- end
-
- text = CGI.escapeHTML(t.text)
-
- if style
- src << "<span class=\"#{style}\">#{text}</span>"
- else
- src << text
- end
- end
-
- add_line_numbers src if RDoc::RDoc.current.options.include_line_numbers
-
- src
- end
-
-end
-
-class RDoc::Attr
-
- include RDoc::Generator::Markup
-
-end
-
-class RDoc::Constant
-
- include RDoc::Generator::Markup
-
-end
-
-class RDoc::Context
-
- include RDoc::Generator::Markup
-
-end
-
-class RDoc::Context::Section
-
- include RDoc::Generator::Markup
-
-end
-
-class RDoc::TopLevel
-
- ##
- # Returns a URL for this source file on some web repository. Use the -W
- # command line option to set.
-
- def cvs_url
- url = RDoc::RDoc.current.options.webcvs
-
- if /%s/ =~ url then
- url % @absolute_name
- else
- url + @absolute_name
- end
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb
deleted file mode 100644
index 44fc97d72..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/ri.rb
+++ /dev/null
@@ -1,230 +0,0 @@
-require 'rdoc/generator'
-require 'rdoc/markup/to_flow'
-
-require 'rdoc/ri/cache'
-require 'rdoc/ri/reader'
-require 'rdoc/ri/writer'
-require 'rdoc/ri/descriptions'
-
-class RDoc::Generator::RI
-
- RDoc::RDoc.add_generator self
-
- ##
- # Generator may need to return specific subclasses depending on the
- # options they are passed. Because of this we create them using a factory
-
- def self.for(options)
- new(options)
- end
-
- ##
- # Set up a new ri generator
-
- def initialize(options) #:not-new:
- @options = options
- @ri_writer = RDoc::RI::Writer.new "."
- @markup = RDoc::Markup.new
- @to_flow = RDoc::Markup::ToFlow.new
-
- @generated = {}
- end
-
- ##
- # Build the initial indices and output objects based on an array of
- # TopLevel objects containing the extracted information.
-
- def generate(top_levels)
- RDoc::TopLevel.all_classes_and_modules.each do |cls|
- process_class cls
- end
- end
-
- def process_class(from_class)
- generate_class_info(from_class)
-
- # now recurse into this class' constituent classes
- from_class.each_classmodule do |mod|
- process_class(mod)
- end
- end
-
- def generate_class_info(cls)
- case cls
- when RDoc::NormalModule then
- cls_desc = RDoc::RI::ModuleDescription.new
- else
- cls_desc = RDoc::RI::ClassDescription.new
- superclass = cls.superclass
- superclass = superclass.full_name unless String === superclass
- cls_desc.superclass = superclass
- end
-
- cls_desc.name = cls.name
- cls_desc.full_name = cls.full_name
- cls_desc.comment = markup(cls.comment)
-
- cls_desc.attributes = cls.attributes.sort.map do |a|
- RDoc::RI::Attribute.new(a.name, a.rw, markup(a.comment))
- end
-
- cls_desc.constants = cls.constants.map do |c|
- RDoc::RI::Constant.new(c.name, c.value, markup(c.comment))
- end
-
- cls_desc.includes = cls.includes.map do |i|
- RDoc::RI::IncludedModule.new(i.name)
- end
-
- class_methods, instance_methods = method_list(cls)
-
- cls_desc.class_methods = class_methods.map do |m|
- RDoc::RI::MethodSummary.new(m.name)
- end
-
- cls_desc.instance_methods = instance_methods.map do |m|
- RDoc::RI::MethodSummary.new(m.name)
- end
-
- update_or_replace(cls_desc)
-
- class_methods.each do |m|
- generate_method_info(cls_desc, m)
- end
-
- instance_methods.each do |m|
- generate_method_info(cls_desc, m)
- end
- end
-
- def generate_method_info(cls_desc, method)
- meth_desc = RDoc::RI::MethodDescription.new
- meth_desc.name = method.name
- meth_desc.full_name = cls_desc.full_name
- if method.singleton
- meth_desc.full_name += "::"
- else
- meth_desc.full_name += "#"
- end
- meth_desc.full_name << method.name
-
- meth_desc.comment = markup(method.comment)
- meth_desc.params = params_of(method)
- meth_desc.visibility = method.visibility.to_s
- meth_desc.is_singleton = method.singleton
- meth_desc.block_params = method.block_params
-
- meth_desc.aliases = method.aliases.map do |a|
- RDoc::RI::AliasName.new(a.name)
- end
-
- @ri_writer.add_method(cls_desc, meth_desc)
- end
-
- private
-
- ##
- # Returns a list of class and instance methods that we'll be documenting
-
- def method_list(cls)
- list = cls.method_list
- unless @options.show_all
- list = list.find_all do |m|
- m.visibility == :public || m.visibility == :protected || m.force_documentation
- end
- end
-
- c = []
- i = []
- list.sort.each do |m|
- if m.singleton
- c << m
- else
- i << m
- end
- end
- return c,i
- end
-
- def params_of(method)
- if method.call_seq
- method.call_seq
- else
- params = method.params || ""
-
- p = params.gsub(/\s*\#.*/, '')
- p = p.tr("\n", " ").squeeze(" ")
- p = "(" + p + ")" unless p[0] == ?(
-
- if (block = method.block_params)
- block.gsub!(/\s*\#.*/, '')
- block = block.tr("\n", " ").squeeze(" ")
- if block[0] == ?(
- block.sub!(/^\(/, '').sub!(/\)/, '')
- end
- p << " {|#{block.strip}| ...}"
- end
- p
- end
- end
-
- def markup(comment)
- return nil if !comment || comment.empty?
-
- # Convert leading comment markers to spaces, but only
- # if all non-blank lines have them
-
- if comment =~ /^(?>\s*)[^\#]/
- content = comment
- else
- content = comment.gsub(/^\s*(#+)/) { $1.tr('#',' ') }
- end
- @markup.convert(content, @to_flow)
- end
-
- ##
- # By default we replace existing classes with the same name. If the
- # --merge option was given, we instead merge this definition into an
- # existing class. We add our methods, aliases, etc to that class, but do
- # not change the class's description.
-
- def update_or_replace(cls_desc)
- old_cls = nil
-
- if @options.merge
- rdr = RDoc::RI::Reader.new RDoc::RI::Cache.new(@options.op_dir)
-
- namespace = rdr.top_level_namespace
- namespace = rdr.lookup_namespace_in(cls_desc.name, namespace)
- if namespace.empty?
- $stderr.puts "You asked me to merge this source into existing "
- $stderr.puts "documentation. This file references a class or "
- $stderr.puts "module called #{cls_desc.name} which I don't"
- $stderr.puts "have existing documentation for."
- $stderr.puts
- $stderr.puts "Perhaps you need to generate its documentation first"
- exit 1
- else
- old_cls = namespace[0]
- end
- end
-
- prev_cls = @generated[cls_desc.full_name]
-
- if old_cls and not prev_cls then
- old_desc = rdr.get_class old_cls
- cls_desc.merge_in old_desc
- end
-
- if prev_cls then
- cls_desc.merge_in prev_cls
- end
-
- @generated[cls_desc.full_name] = cls_desc
-
- @ri_writer.remove_class cls_desc
- @ri_writer.add_class cls_desc
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/.document b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/.document
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/.document
+++ /dev/null
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/classpage.rhtml b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/classpage.rhtml
deleted file mode 100644
index 921fcef71..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/classpage.rhtml
+++ /dev/null
@@ -1,281 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta content="text/html; charset=<%= @options.charset %>" http-equiv="Content-Type" />
-
- <title><%= klass.type.capitalize %>: <%= klass.full_name %></title>
-
- <link rel="stylesheet" href="<%= rel_prefix %>/rdoc.css" type="text/css" media="screen" />
-
- <script src="<%= rel_prefix %>/js/jquery.js" type="text/javascript"
- charset="utf-8"></script>
- <script src="<%= rel_prefix %>/js/thickbox-compressed.js" type="text/javascript"
- charset="utf-8"></script>
- <script src="<%= rel_prefix %>/js/quicksearch.js" type="text/javascript"
- charset="utf-8"></script>
- <script src="<%= rel_prefix %>/js/darkfish.js" type="text/javascript"
- charset="utf-8"></script>
-
-</head>
-<body class="<%= klass.type %>">
-
- <div id="metadata">
- <div id="file-metadata">
- <div id="file-list-section" class="section">
- <h3 class="section-header">In Files</h3>
- <div class="section-body">
- <ul>
- <% klass.in_files.each do |tl| %>
- <li><a href="<%= rel_prefix %>/<%= h tl.path %>?TB_iframe=true&amp;height=550&amp;width=785"
- class="thickbox" title="<%= h tl.absolute_name %>"><%= h tl.absolute_name %></a></li>
- <% end %>
- </ul>
- </div>
- </div>
-
- <% if !svninfo.empty? %>
- <div id="file-svninfo-section" class="section">
- <h3 class="section-header">Subversion Info</h3>
- <div class="section-body">
- <dl class="svninfo">
- <dt>Rev</dt>
- <dd><%= svninfo[:rev] %></dd>
-
- <dt>Last Checked In</dt>
- <dd><%= svninfo[:commitdate].strftime('%Y-%m-%d %H:%M:%S') %>
- (<%= svninfo[:commitdelta] %> ago)</dd>
-
- <dt>Checked in by</dt>
- <dd><%= svninfo[:committer] %></dd>
- </dl>
- </div>
- </div>
- <% end %>
- </div>
-
- <div id="class-metadata">
-
- <!-- Parent Class -->
- <% if klass.type == 'class' %>
- <div id="parent-class-section" class="section">
- <h3 class="section-header">Parent</h3>
- <% unless String === klass.superclass %>
- <p class="link"><a href="<%= klass.aref_to klass.superclass.path %>"><%= klass.superclass.full_name %></a></p>
- <% else %>
- <p class="link"><%= klass.superclass %></p>
- <% end %>
- </div>
- <% end %>
-
- <!-- Namespace Contents -->
- <% unless klass.classes_and_modules.empty? %>
- <div id="namespace-list-section" class="section">
- <h3 class="section-header">Namespace</h3>
- <ul class="link-list">
- <% (klass.modules.sort + klass.classes.sort).each do |mod| %>
- <li><span class="type"><%= mod.type.upcase %></span> <a href="<%= klass.aref_to mod.path %>"><%= mod.full_name %></a></li>
- <% end %>
- </ul>
- </div>
- <% end %>
-
- <!-- Method Quickref -->
- <% unless klass.method_list.empty? %>
- <div id="method-list-section" class="section">
- <h3 class="section-header">Methods</h3>
- <ul class="link-list">
- <% klass.each_method do |meth| %>
- <li><a href="#<%= meth.aref %>"><%= meth.singleton ? '::' : '#' %><%= meth.name %></a></li>
- <% end %>
- </ul>
- </div>
- <% end %>
-
- <!-- Included Modules -->
- <% unless klass.includes.empty? %>
- <div id="includes-section" class="section">
- <h3 class="section-header">Included Modules</h3>
- <ul class="link-list">
- <% klass.each_include do |inc| %>
- <% unless String === inc.module %>
- <li><a class="include" href="<%= klass.aref_to inc.module.path %>"><%= inc.module.full_name %></a></li>
- <% else %>
- <li><span class="include"><%= inc.name %></span></li>
- <% end %>
- <% end %>
- </ul>
- </div>
- <% end %>
- </div>
-
- <div id="project-metadata">
- <% simple_files = @files.select {|tl| tl.parser == RDoc::Parser::Simple } %>
- <% unless simple_files.empty? then %>
- <div id="fileindex-section" class="section project-section">
- <h3 class="section-header">Files</h3>
- <ul>
- <% simple_files.each do |file| %>
- <li class="file"><a href="<%= rel_prefix %>/<%= file.path %>"><%= h file.base_name %></a></li>
- <% end %>
- </ul>
- </div>
- <% end %>
-
- <div id="classindex-section" class="section project-section">
- <h3 class="section-header">Class Index
- <span class="search-toggle"><img src="<%= rel_prefix %>/images/find.png"
- height="16" width="16" alt="[+]"
- title="show/hide quicksearch" /></span></h3>
- <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
- <fieldset>
- <legend>Quicksearch</legend>
- <input type="text" name="quicksearch" value=""
- class="quicksearch-field" />
- </fieldset>
- </form>
-
- <ul class="link-list">
- <% @modsort.each do |index_klass| %>
- <li><a href="<%= rel_prefix %>/<%= index_klass.path %>"><%= index_klass.full_name %></a></li>
- <% end %>
- </ul>
- <div id="no-class-search-results" style="display: none;">No matching classes.</div>
- </div>
-
- <% if $DEBUG_RDOC %>
- <div id="debugging-toggle"><img src="<%= rel_prefix %>/images/bug.png"
- alt="toggle debugging" height="16" width="16" /></div>
- <% end %>
- </div>
- </div>
-
- <div id="documentation">
- <h1 class="<%= klass.type %>"><%= klass.full_name %></h1>
-
- <div id="description">
- <%= klass.description %>
- </div>
-
- <!-- Constants -->
- <% unless klass.constants.empty? %>
- <div id="constants-list" class="section">
- <h3 class="section-header">Constants</h3>
- <dl>
- <% klass.each_constant do |const| %>
- <dt><a name="<%= const.name %>"><%= const.name %></a></dt>
- <% if const.comment %>
- <dd class="description"><%= const.description.strip %></dd>
- <% else %>
- <dd class="description missing-docs">(Not documented)</dd>
- <% end %>
- <% end %>
- </dl>
- </div>
- <% end %>
-
- <!-- Attributes -->
- <% unless klass.attributes.empty? %>
- <div id="attribute-method-details" class="method-section section">
- <h3 class="section-header">Attributes</h3>
-
- <% klass.each_attribute do |attrib| %>
- <div id="<%= attrib.html_name %>-attribute-method" class="method-detail">
- <a name="<%= h attrib.name %>"></a>
- <% if attrib.rw =~ /w/i %>
- <a name="<%= h attrib.name %>="></a>
- <% end %>
- <div class="method-heading attribute-method-heading">
- <span class="method-name"><%= h attrib.name %></span><span
- class="attribute-access-type">[<%= attrib.rw %>]</span>
- </div>
-
- <div class="method-description">
- <% if attrib.comment %>
- <%= attrib.description.strip %>
- <% else %>
- <p class="missing-docs">(Not documented)</p>
- <% end %>
- </div>
- </div>
- <% end %>
- </div>
- <% end %>
-
- <!-- Methods -->
- <% klass.methods_by_type.each do |type, visibilities|
- next if visibilities.empty?
- visibilities.each do |visibility, methods|
- next if methods.empty? %>
- <div id="<%= visibility %>-<%= type %>-method-details" class="method-section section">
- <h3 class="section-header"><%= visibility.to_s.capitalize %> <%= type.capitalize %> Methods</h3>
-
- <% methods.each do |method| %>
- <div id="<%= method.html_name %>-method" class="method-detail <%= method.is_alias_for ? "method-alias" : '' %>">
- <a name="<%= h method.aref %>"></a>
-
- <div class="method-heading">
- <% if method.call_seq %>
- <span class="method-callseq"><%= method.call_seq.strip.gsub(/->/, '&rarr;').gsub( /^\w.*?\./m, '') %></span>
- <span class="method-click-advice">click to toggle source</span>
- <% else %>
- <span class="method-name"><%= h method.name %></span><span
- class="method-args"><%= method.params %></span>
- <span class="method-click-advice">click to toggle source</span>
- <% end %>
- </div>
-
- <div class="method-description">
- <% if method.comment %>
- <%= method.description.strip %>
- <% else %>
- <p class="missing-docs">(Not documented)</p>
- <% end %>
-
- <% if method.token_stream %>
- <div class="method-source-code"
- id="<%= method.html_name %>-source">
-<pre>
-<%= method.markup_code %>
-</pre>
- </div>
- <% end %>
- </div>
-
- <% unless method.aliases.empty? %>
- <div class="aliases">
- Also aliased as: <%= method.aliases.map do |aka|
- %{<a href="#{ klass.aref_to aka.path}">#{h aka.name}</a>}
- end.join(", ") %>
- </div>
- <% end %>
- </div>
-
- <% end %>
- </div>
- <% end
- end %>
-
- </div>
-
-
- <div id="rdoc-debugging-section-dump" class="debugging-section">
- <% if $DEBUG_RDOC
- require 'pp' %>
-<pre><%= h PP.pp(klass, _erbout) %></pre>
- </div>
- <% else %>
- <p>Disabled; run with --debug to generate this.</p>
- <% end %>
- </div>
-
- <div id="validator-badges">
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
- Rdoc Generator</a> <%= RDoc::Generator::Darkfish::VERSION %></small>.</p>
- </div>
-
-</body>
-</html>
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/filepage.rhtml b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/filepage.rhtml
deleted file mode 100644
index 2627e8966..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/filepage.rhtml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta content="text/html; charset=<%= @options.charset %>" http-equiv="Content-Type" />
-
- <title>File: <%= file.base_name %> [<%= @options.title %>]</title>
-
- <link type="text/css" media="screen" href="<%= rel_prefix %>/rdoc.css" rel="stylesheet" />
-
- <script src="<%= rel_prefix %>/js/jquery.js" type="text/javascript"
- charset="utf-8"></script>
- <script src="<%= rel_prefix %>/js/thickbox-compressed.js" type="text/javascript"
- charset="utf-8"></script>
- <script src="<%= rel_prefix %>/js/quicksearch.js" type="text/javascript"
- charset="utf-8"></script>
- <script src="<%= rel_prefix %>/js/darkfish.js" type="text/javascript"
- charset="utf-8"></script>
-</head>
-
-<% if file.parser == RDoc::Parser::Simple %>
-<body class="file">
- <div id="metadata">
- <div id="project-metadata">
- <% simple_files = @files.select { |f| f.parser == RDoc::Parser::Simple } %>
- <% unless simple_files.empty? then %>
- <div id="fileindex-section" class="section project-section">
- <h3 class="section-header">Files</h3>
- <ul>
- <% simple_files.each do |f| %>
- <li class="file"><a href="<%= rel_prefix %>/<%= f.path %>"><%= h f.base_name %></a></li>
- <% end %>
- </ul>
- </div>
- <% end %>
-
- <div id="classindex-section" class="section project-section">
- <h3 class="section-header">Class Index
- <span class="search-toggle"><img src="<%= rel_prefix %>/images/find.png"
- height="16" width="16" alt="[+]"
- title="show/hide quicksearch" /></span></h3>
- <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
- <fieldset>
- <legend>Quicksearch</legend>
- <input type="text" name="quicksearch" value=""
- class="quicksearch-field" />
- </fieldset>
- </form>
-
- <ul class="link-list">
- <% @modsort.each do |index_klass| %>
- <li><a href="<%= rel_prefix %>/<%= index_klass.path %>"><%= index_klass.full_name %></a></li>
- <% end %>
- </ul>
- <div id="no-class-search-results" style="display: none;">No matching classes.</div>
- </div>
-
- <% if $DEBUG_RDOC %>
- <div id="debugging-toggle"><img src="<%= rel_prefix %>/images/bug.png"
- alt="toggle debugging" height="16" width="16" /></div>
- <% end %>
- </div>
- </div>
-
- <div id="documentation">
- <%= file.description %>
- </div>
-
- <div id="validator-badges">
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
- Rdoc Generator</a> <%= RDoc::Generator::Darkfish::VERSION %></small>.</p>
- </div>
-</body>
-<% else %>
-<body class="file file-popup">
- <div id="metadata">
- <dl>
- <dt class="modified-date">Last Modified</dt>
- <dd class="modified-date"><%= file.last_modified %></dd>
-
- <% if file.requires %>
- <dt class="requires">Requires</dt>
- <dd class="requires">
- <ul>
- <% file.requires.each do |require| %>
- <li><%= require.name %></li>
- <% end %>
- </ul>
- </dd>
- <% end %>
-
- <% if @options.webcvs %>
- <dt class="scs-url">Trac URL</dt>
- <dd class="scs-url"><a target="_top"
- href="<%= file.cvs_url %>"><%= file.cvs_url %></a></dd>
- <% end %>
- </dl>
- </div>
-
- <div id="documentation">
- <% if file.comment %>
- <div class="description">
- <h2>Description</h2>
- <%= file.description %>
- </div>
- <% end %>
- </div>
-</body>
-<% end %>
-</html>
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/brick.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/brick.png
deleted file mode 100755
index 7851cf34c..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/brick.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/brick_link.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/brick_link.png
deleted file mode 100755
index 9ebf013a2..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/brick_link.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bug.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bug.png
deleted file mode 100644
index 2d5fb90ec..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bug.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_black.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_black.png
deleted file mode 100755
index 57619706d..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_black.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png
deleted file mode 100755
index b47ce55f6..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png
deleted file mode 100755
index 9ab4a8966..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/date.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/date.png
deleted file mode 100755
index 783c83357..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/date.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/find.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/find.png
deleted file mode 100755
index 154747964..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/find.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif
deleted file mode 100644
index 82290f483..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/macFFBgHack.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/macFFBgHack.png
deleted file mode 100644
index c6473b324..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/macFFBgHack.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/package.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/package.png
deleted file mode 100755
index da3c2a2d7..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/package.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_green.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_green.png
deleted file mode 100755
index de8e003f9..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_green.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_white_text.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_white_text.png
deleted file mode 100755
index 813f712f7..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_white_text.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_white_width.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_white_width.png
deleted file mode 100755
index 1eb880947..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/page_white_width.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/plugin.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/plugin.png
deleted file mode 100755
index 6187b15ae..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/plugin.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/ruby.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/ruby.png
deleted file mode 100755
index f763a1688..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/ruby.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/tag_green.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/tag_green.png
deleted file mode 100755
index 83ec984bd..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/tag_green.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/wrench.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/wrench.png
deleted file mode 100755
index 5c8213fef..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/wrench.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/wrench_orange.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/wrench_orange.png
deleted file mode 100755
index 565a9330e..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/wrench_orange.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/zoom.png b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/zoom.png
deleted file mode 100755
index 908612e39..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/images/zoom.png
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/index.rhtml b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/index.rhtml
deleted file mode 100644
index 21c067606..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/index.rhtml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
- <meta content="text/html; charset=<%= @options.charset %>" http-equiv="Content-Type" />
-
- <title><%= h @options.title %></title>
-
- <link type="text/css" media="screen" href="rdoc.css" rel="stylesheet" />
-
- <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
- <script src="js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
- <script src="js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
- <script src="js/darkfish.js" type="text/javascript" charset="utf-8"></script>
-
-</head>
-<body class="indexpage">
-
- <% $stderr.sync = true %>
- <h1><%= h @options.title %></h1>
-
- <% if @options.main_page && main_page = @files.find { |f| f.full_name == @options.main_page } %>
- <div id="main">
- <%= main_page.description.sub(%r{^\s*<h1.*?/h1>}i, '') %>
- </div>
- <% else %>
- <p>This is the API documentation for '<%= @options.title %>'.</p>
- <% end %>
-
- <% simple_files = @files.select {|tl| tl.parser == RDoc::Parser::Simple } %>
- <% unless simple_files.empty? then %>
- <h2>Files</h2>
- <ul>
- <% simple_files.sort.each do |file| %>
- <li class="file"><a href="<%= file.path %>"><%= h file.base_name %></a></li>
- <% end %>
- </ul>
- <% end %>
-
- <h2>Classes/Modules</h2>
- <ul>
- <% @modsort.each do |klass| %>
- <li class="<%= klass.type %>"><a href="<%= klass.path %>"><%= klass.full_name %></a></li>
- <% end %>
- </ul>
-
- <h2>Methods</h2>
- <ul>
- <% RDoc::TopLevel.all_classes_and_modules.map do |mod|
- mod.method_list
- end.flatten.sort.each do |method| %>
- <li><a href="<%= method.path %>"><%= method.pretty_name %> &mdash; <%= method.parent.full_name %></a></li>
- <% end %>
- </ul>
-
- <div id="validator-badges">
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
- Rdoc Generator</a> <%= RDoc::Generator::Darkfish::VERSION %></small>.</p>
- </div>
-</body>
-</html>
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/darkfish.js b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/darkfish.js
deleted file mode 100644
index 43528fdde..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/darkfish.js
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- *
- * Darkfish Page Functions
- * $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $
- *
- * Author: Michael Granger <mgranger@laika.com>
- *
- */
-
-/* Provide console simulation for firebug-less environments */
-if (!("console" in window) || !("firebug" in console)) {
- var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
- "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
-
- window.console = {};
- for (var i = 0; i < names.length; ++i)
- window.console[names[i]] = function() {};
-};
-
-
-/**
- * Unwrap the first element that matches the given @expr@ from the targets and return them.
- */
-$.fn.unwrap = function( expr ) {
- return this.each( function() {
- $(this).parents( expr ).eq( 0 ).after( this ).remove();
- });
-};
-
-
-function showSource( e ) {
- var target = e.target;
- var codeSections = $(target).
- parents('.method-detail').
- find('.method-source-code');
-
- $(target).
- parents('.method-detail').
- find('.method-source-code').
- slideToggle();
-};
-
-function hookSourceViews() {
- $('.method-description,.method-heading').click( showSource );
-};
-
-function toggleDebuggingSection() {
- $('.debugging-section').slideToggle();
-};
-
-function hookDebuggingToggle() {
- $('#debugging-toggle img').click( toggleDebuggingSection );
-};
-
-function hookQuickSearch() {
- $('.quicksearch-field').each( function() {
- var searchElems = $(this).parents('.section').find( 'li' );
- var toggle = $(this).parents('.section').find('h3 .search-toggle');
- // console.debug( "Toggle is: %o", toggle );
- var qsbox = $(this).parents('form').get( 0 );
-
- $(this).quicksearch( this, searchElems, {
- noSearchResultsIndicator: 'no-class-search-results',
- focusOnLoad: false
- });
- $(toggle).click( function() {
- // console.debug( "Toggling qsbox: %o", qsbox );
- $(qsbox).toggle();
- });
- });
-};
-
-function highlightTarget( anchor ) {
- console.debug( "Highlighting target '%s'.", anchor );
-
- $("a[name=" + anchor + "]").each( function() {
- if ( !$(this).parent().parent().hasClass('target-section') ) {
- console.debug( "Wrapping the target-section" );
- $('div.method-detail').unwrap( 'div.target-section' );
- $(this).parent().wrap( '<div class="target-section"></div>' );
- } else {
- console.debug( "Already wrapped." );
- }
- });
-};
-
-function highlightLocationTarget() {
- console.debug( "Location hash: %s", window.location.hash );
- if ( ! window.location.hash || window.location.hash.length == 0 ) return;
-
- var anchor = window.location.hash.substring(1);
- console.debug( "Found anchor: %s; matching %s", anchor, "a[name=" + anchor + "]" );
-
- highlightTarget( anchor );
-};
-
-function highlightClickTarget( event ) {
- console.debug( "Highlighting click target for event %o", event.target );
- try {
- var anchor = $(event.target).attr( 'href' ).substring(1);
- console.debug( "Found target anchor: %s", anchor );
- highlightTarget( anchor );
- } catch ( err ) {
- console.error( "Exception while highlighting: %o", err );
- };
-};
-
-
-$(document).ready( function() {
- hookSourceViews();
- hookDebuggingToggle();
- hookQuickSearch();
- highlightLocationTarget();
-
- $('ul.link-list a').bind( "click", highlightClickTarget );
-});
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/jquery.js b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/jquery.js
deleted file mode 100644
index afe9e74c9..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/jquery.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * jQuery 1.2.6 - New Wave Javascript
- *
- * Copyright (c) 2008 John Resig (jquery.com)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * $Date: 2008-09-25 09:50:52 -0700 (Thu, 25 Sep 2008) $
- * $Rev: 38 $
- */
-(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
-return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
-return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
-selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
-return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
-this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
-return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
-jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
-script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
-for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
-for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
-jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
-ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
-while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
-while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
-for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
-jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
-xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
-jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
-for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
-s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
-e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/quicksearch.js b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/quicksearch.js
deleted file mode 100644
index 332772ac7..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/quicksearch.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- *
- * JQuery QuickSearch - Hook up a form field to hide non-matching elements.
- * $Id: quicksearch.js 53 2009-01-07 02:52:03Z deveiant $
- *
- * Author: Michael Granger <mgranger@laika.com>
- *
- */
-jQuery.fn.quicksearch = function( target, searchElems, options ) {
- // console.debug( "Quicksearch fn" );
-
- var settings = {
- delay: 250,
- clearButton: false,
- highlightMatches: false,
- focusOnLoad: false,
- noSearchResultsIndicator: null
- };
- if ( options ) $.extend( settings, options );
-
- return jQuery(this).each( function() {
- // console.debug( "Creating a new quicksearch on %o for %o", this, searchElems );
- new jQuery.quicksearch( this, searchElems, settings );
- });
-};
-
-
-jQuery.quicksearch = function( searchBox, searchElems, settings ) {
- var timeout;
- var boxdiv = $(searchBox).parents('div').eq(0);
-
- function init() {
- setupKeyEventHandlers();
- focusOnLoad();
- };
-
- function setupKeyEventHandlers() {
- // console.debug( "Hooking up the 'keypress' event to %o", searchBox );
- $(searchBox).
- unbind( 'keyup' ).
- keyup( function(e) { return onSearchKey( e.keyCode ); });
- $(searchBox).
- unbind( 'keypress' ).
- keypress( function(e) {
- switch( e.which ) {
- // Execute the search on Enter, Tab, or Newline
- case 9:
- case 13:
- case 10:
- clearTimeout( timeout );
- e.preventDefault();
- doQuickSearch();
- break;
-
- // Allow backspace
- case 8:
- return true;
- break;
-
- // Only allow valid search characters
- default:
- return validQSChar( e.charCode );
- }
- });
- };
-
- function focusOnLoad() {
- if ( !settings.focusOnLoad ) return false;
- $(searchBox).focus();
- };
-
- function onSearchKey ( code ) {
- clearTimeout( timeout );
- // console.debug( "...scheduling search." );
- timeout = setTimeout( doQuickSearch, settings.delay );
- };
-
- function validQSChar( code ) {
- var c = String.fromCharCode( code );
- return (
- (c == ':') ||
- (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z')
- );
- };
-
- function doQuickSearch() {
- var searchText = searchBox.value;
- var pat = new RegExp( searchText, "im" );
- var shownCount = 0;
-
- if ( settings.noSearchResultsIndicator ) {
- $('#' + settings.noSearchResultsIndicator).hide();
- }
-
- // All elements start out hidden
- $(searchElems).each( function(index) {
- var str = $(this).text();
-
- if ( pat.test(str) ) {
- shownCount += 1;
- $(this).fadeIn();
- } else {
- $(this).hide();
- }
- });
-
- if ( shownCount == 0 && settings.noSearchResultsIndicator ) {
- $('#' + settings.noSearchResultsIndicator).slideDown();
- }
- };
-
- init();
-};
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js
deleted file mode 100644
index 3a3fdae1f..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * Thickbox 3 - One Box To Rule Them All.
- * By Cody Lindley (http://www.codylindley.com)
- * Copyright (c) 2007 cody lindley
- * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
-*/
-
-var tb_pathToImage = "../images/loadingAnimation.gif";
-
-eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('$(o).2S(9(){1u(\'a.18, 3n.18, 3i.18\');1w=1p 1t();1w.L=2H});9 1u(b){$(b).s(9(){6 t=X.Q||X.1v||M;6 a=X.u||X.23;6 g=X.1N||P;19(t,a,g);X.2E();H P})}9 19(d,f,g){3m{3(2t o.v.J.2i==="2g"){$("v","11").r({A:"28%",z:"28%"});$("11").r("22","2Z");3(o.1Y("1F")===M){$("v").q("<U 5=\'1F\'></U><4 5=\'B\'></4><4 5=\'8\'></4>");$("#B").s(G)}}n{3(o.1Y("B")===M){$("v").q("<4 5=\'B\'></4><4 5=\'8\'></4>");$("#B").s(G)}}3(1K()){$("#B").1J("2B")}n{$("#B").1J("2z")}3(d===M){d=""}$("v").q("<4 5=\'K\'><1I L=\'"+1w.L+"\' /></4>");$(\'#K\').2y();6 h;3(f.O("?")!==-1){h=f.3l(0,f.O("?"))}n{h=f}6 i=/\\.2s$|\\.2q$|\\.2m$|\\.2l$|\\.2k$/;6 j=h.1C().2h(i);3(j==\'.2s\'||j==\'.2q\'||j==\'.2m\'||j==\'.2l\'||j==\'.2k\'){1D="";1G="";14="";1z="";1x="";R="";1n="";1r=P;3(g){E=$("a[@1N="+g+"]").36();25(D=0;((D<E.1c)&&(R===""));D++){6 k=E[D].u.1C().2h(i);3(!(E[D].u==f)){3(1r){1z=E[D].Q;1x=E[D].u;R="<1e 5=\'1X\'>&1d;&1d;<a u=\'#\'>2T &2R;</a></1e>"}n{1D=E[D].Q;1G=E[D].u;14="<1e 5=\'1U\'>&1d;&1d;<a u=\'#\'>&2O; 2N</a></1e>"}}n{1r=1b;1n="1t "+(D+1)+" 2L "+(E.1c)}}}S=1p 1t();S.1g=9(){S.1g=M;6 a=2x();6 x=a[0]-1M;6 y=a[1]-1M;6 b=S.z;6 c=S.A;3(b>x){c=c*(x/b);b=x;3(c>y){b=b*(y/c);c=y}}n 3(c>y){b=b*(y/c);c=y;3(b>x){c=c*(x/b);b=x}}13=b+30;1a=c+2G;$("#8").q("<a u=\'\' 5=\'1L\' Q=\'1o\'><1I 5=\'2F\' L=\'"+f+"\' z=\'"+b+"\' A=\'"+c+"\' 23=\'"+d+"\'/></a>"+"<4 5=\'2D\'>"+d+"<4 5=\'2C\'>"+1n+14+R+"</4></4><4 5=\'2A\'><a u=\'#\' 5=\'Z\' Q=\'1o\'>1l</a> 1k 1j 1s</4>");$("#Z").s(G);3(!(14==="")){9 12(){3($(o).N("s",12)){$(o).N("s",12)}$("#8").C();$("v").q("<4 5=\'8\'></4>");19(1D,1G,g);H P}$("#1U").s(12)}3(!(R==="")){9 1i(){$("#8").C();$("v").q("<4 5=\'8\'></4>");19(1z,1x,g);H P}$("#1X").s(1i)}o.1h=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}n 3(I==3k){3(!(R=="")){o.1h="";1i()}}n 3(I==3j){3(!(14=="")){o.1h="";12()}}};16();$("#K").C();$("#1L").s(G);$("#8").r({Y:"T"})};S.L=f}n{6 l=f.2r(/^[^\\?]+\\??/,\'\');6 m=2p(l);13=(m[\'z\']*1)+30||3h;1a=(m[\'A\']*1)+3g||3f;W=13-30;V=1a-3e;3(f.O(\'2j\')!=-1){1E=f.1B(\'3d\');$("#15").C();3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"</4><4 5=\'2e\'><a u=\'#\' 5=\'Z\' Q=\'1o\'>1l</a> 1k 1j 1s</4></4><U 1W=\'0\' 2d=\'0\' L=\'"+1E[0]+"\' 5=\'15\' 1v=\'15"+1f.2c(1f.1y()*2b)+"\' 1g=\'1m()\' J=\'z:"+(W+29)+"p;A:"+(V+17)+"p;\' > </U>")}n{$("#B").N();$("#8").q("<U 1W=\'0\' 2d=\'0\' L=\'"+1E[0]+"\' 5=\'15\' 1v=\'15"+1f.2c(1f.1y()*2b)+"\' 1g=\'1m()\' J=\'z:"+(W+29)+"p;A:"+(V+17)+"p;\'> </U>")}}n{3($("#8").r("Y")!="T"){3(m[\'1A\']!="1b"){$("#8").q("<4 5=\'2f\'><4 5=\'1H\'>"+d+"</4><4 5=\'2e\'><a u=\'#\' 5=\'Z\'>1l</a> 1k 1j 1s</4></4><4 5=\'F\' J=\'z:"+W+"p;A:"+V+"p\'></4>")}n{$("#B").N();$("#8").q("<4 5=\'F\' 3c=\'3b\' J=\'z:"+W+"p;A:"+V+"p;\'></4>")}}n{$("#F")[0].J.z=W+"p";$("#F")[0].J.A=V+"p";$("#F")[0].3a=0;$("#1H").11(d)}}$("#Z").s(G);3(f.O(\'37\')!=-1){$("#F").q($(\'#\'+m[\'26\']).1T());$("#8").24(9(){$(\'#\'+m[\'26\']).q($("#F").1T())});16();$("#K").C();$("#8").r({Y:"T"})}n 3(f.O(\'2j\')!=-1){16();3($.1q.35){$("#K").C();$("#8").r({Y:"T"})}}n{$("#F").34(f+="&1y="+(1p 33().32()),9(){16();$("#K").C();1u("#F a.18");$("#8").r({Y:"T"})})}}3(!m[\'1A\']){o.21=9(e){3(e==M){I=2w.2v}n{I=e.2u}3(I==27){G()}}}}31(e){}}9 1m(){$("#K").C();$("#8").r({Y:"T"})}9 G(){$("#2Y").N("s");$("#Z").N("s");$("#8").2X("2W",9(){$(\'#8,#B,#1F\').2V("24").N().C()});$("#K").C();3(2t o.v.J.2i=="2g"){$("v","11").r({A:"1Z",z:"1Z"});$("11").r("22","")}o.1h="";o.21="";H P}9 16(){$("#8").r({2U:\'-\'+20((13/2),10)+\'p\',z:13+\'p\'});3(!(1V.1q.2Q&&1V.1q.2P<7)){$("#8").r({38:\'-\'+20((1a/2),10)+\'p\'})}}9 2p(a){6 b={};3(!a){H b}6 c=a.1B(/[;&]/);25(6 i=0;i<c.1c;i++){6 d=c[i].1B(\'=\');3(!d||d.1c!=2){39}6 e=2a(d[0]);6 f=2a(d[1]);f=f.2r(/\\+/g,\' \');b[e]=f}H b}9 2x(){6 a=o.2M;6 w=1S.2o||1R.2o||(a&&a.1Q)||o.v.1Q;6 h=1S.1P||1R.1P||(a&&a.2n)||o.v.2n;1O=[w,h];H 1O}9 1K(){6 a=2K.2J.1C();3(a.O(\'2I\')!=-1&&a.O(\'3o\')!=-1){H 1b}}',62,211,'|||if|div|id|var||TB_window|function||||||||||||||else|document|px|append|css|click||href|body||||width|height|TB_overlay|remove|TB_Counter|TB_TempArray|TB_ajaxContent|tb_remove|return|keycode|style|TB_load|src|null|unbind|indexOf|false|title|TB_NextHTML|imgPreloader|block|iframe|ajaxContentH|ajaxContentW|this|display|TB_closeWindowButton||html|goPrev|TB_WIDTH|TB_PrevHTML|TB_iframeContent|tb_position||thickbox|tb_show|TB_HEIGHT|true|length|nbsp|span|Math|onload|onkeydown|goNext|Esc|or|close|tb_showIframe|TB_imageCount|Close|new|browser|TB_FoundURL|Key|Image|tb_init|name|imgLoader|TB_NextURL|random|TB_NextCaption|modal|split|toLowerCase|TB_PrevCaption|urlNoQuery|TB_HideSelect|TB_PrevURL|TB_ajaxWindowTitle|img|addClass|tb_detectMacXFF|TB_ImageOff|150|rel|arrayPageSize|innerHeight|clientWidth|self|window|children|TB_prev|jQuery|frameborder|TB_next|getElementById|auto|parseInt|onkeyup|overflow|alt|unload|for|inlineId||100||unescape|1000|round|hspace|TB_closeAjaxWindow|TB_title|undefined|match|maxHeight|TB_iframe|bmp|gif|png|clientHeight|innerWidth|tb_parseQuery|jpeg|replace|jpg|typeof|which|keyCode|event|tb_getPageSize|show|TB_overlayBG|TB_closeWindow|TB_overlayMacFFBGHack|TB_secondLine|TB_caption|blur|TB_Image|60|tb_pathToImage|mac|userAgent|navigator|of|documentElement|Prev|lt|version|msie|gt|ready|Next|marginLeft|trigger|fast|fadeOut|TB_imageOff|hidden||catch|getTime|Date|load|safari|get|TB_inline|marginTop|continue|scrollTop|TB_modal|class|TB_|45|440|40|630|input|188|190|substr|try|area|firefox'.split('|'),0,{})) \ No newline at end of file
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/rdoc.css b/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/rdoc.css
deleted file mode 100644
index bca0a021c..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/generator/template/darkfish/rdoc.css
+++ /dev/null
@@ -1,696 +0,0 @@
-/*
- * "Darkfish" Rdoc CSS
- * $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $
- *
- * Author: Michael Granger <ged@FaerieMUD.org>
- *
- */
-
-/* Base Green is: #6C8C22 */
-
-*{ padding: 0; margin: 0; }
-
-body {
- background: #efefef;
- font: 14px "Helvetica Neue", Helvetica, Tahoma, sans-serif;
-}
-body.class, body.module, body.file {
- margin-left: 40px;
-}
-body.file-popup {
- font-size: 90%;
- margin-left: 0;
-}
-
-h1 {
- font-size: 300%;
- text-shadow: rgba(135,145,135,0.65) 2px 2px 3px;
- color: #6C8C22;
-}
-h2,h3,h4 { margin-top: 1.5em; }
-
-a {
- color: #6C8C22;
- text-decoration: none;
-}
-a:hover {
- border-bottom: 1px dotted #6C8C22;
-}
-
-pre {
- background: #ddd;
- padding: 0.5em 0;
-}
-
-
-/* @group Generic Classes */
-
-.initially-hidden {
- display: none;
-}
-
-.quicksearch-field {
- width: 98%;
- background: #ddd;
- border: 1px solid #aaa;
- height: 1.5em;
- -webkit-border-radius: 4px;
-}
-.quicksearch-field:focus {
- background: #f1edba;
-}
-
-.missing-docs {
- font-size: 120%;
- background: white url(images/wrench_orange.png) no-repeat 4px center;
- color: #ccc;
- line-height: 2em;
- border: 1px solid #d00;
- opacity: 1;
- padding-left: 20px;
- text-indent: 24px;
- letter-spacing: 3px;
- font-weight: bold;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-
-.target-section {
- border: 2px solid #dcce90;
- border-left-width: 8px;
- padding: 0 1em;
- background: #fff3c2;
-}
-
-/* @end */
-
-
-/* @group Index Page, Standalone file pages */
-body.indexpage {
- margin: 1em 3em;
-}
-body.indexpage p,
-body.indexpage div,
-body.file p {
- margin: 1em 0;
-}
-
-.indexpage ul,
-.file #documentation ul {
- line-height: 160%;
- list-style: none;
-}
-.indexpage ul a,
-.file #documentation ul a {
- font-size: 16px;
-}
-
-.indexpage li,
-.file #documentation li {
- padding-left: 20px;
- background: url(images/bullet_black.png) no-repeat left 4px;
-}
-.indexpage li.module {
- background: url(images/package.png) no-repeat left 4px;
-}
-.indexpage li.class {
- background: url(images/ruby.png) no-repeat left 4px;
-}
-.indexpage li.file {
- background: url(images/page_white_text.png) no-repeat left 4px;
-}
-
-/* @end */
-
-/* @group Top-Level Structure */
-
-.class #metadata,
-.file #metadata,
-.module #metadata {
- float: left;
- width: 260px;
-}
-
-.class #documentation,
-.file #documentation,
-.module #documentation {
- margin: 2em 1em 5em 300px;
- min-width: 340px;
-}
-
-.file #metadata {
- margin: 0.8em;
-}
-
-#validator-badges {
- clear: both;
- margin: 1em 1em 2em;
-}
-
-/* @end */
-
-/* @group Metadata Section */
-#metadata .section {
- background-color: #dedede;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
- border: 1px solid #aaa;
- margin: 0 8px 16px;
- font-size: 90%;
- overflow: hidden;
-}
-#metadata h3.section-header {
- margin: 0;
- padding: 2px 8px;
- background: #ccc;
- color: #666;
- -moz-border-radius-topleft: 4px;
- -moz-border-radius-topright: 4px;
- -webkit-border-top-left-radius: 4px;
- -webkit-border-top-right-radius: 4px;
- border-bottom: 1px solid #aaa;
-}
-#metadata ul,
-#metadata dl,
-#metadata p {
- padding: 8px;
- list-style: none;
-}
-
-#file-metadata ul {
- padding-left: 28px;
- list-style-image: url(images/page_green.png);
-}
-
-dl.svninfo {
- color: #666;
- margin: 0;
-}
-dl.svninfo dt {
- font-weight: bold;
-}
-
-ul.link-list li {
- white-space: nowrap;
-}
-ul.link-list .type {
- font-size: 8px;
- text-transform: uppercase;
- color: white;
- background: #969696;
- padding: 2px 4px;
- -webkit-border-radius: 5px;
-}
-
-/* @end */
-
-
-/* @group Project Metadata Section */
-#project-metadata {
- margin-top: 3em;
-}
-
-.file #project-metadata {
- margin-top: 0em;
-}
-
-#project-metadata .section {
- border: 1px solid #aaa;
-}
-#project-metadata h3.section-header {
- border-bottom: 1px solid #aaa;
- position: relative;
-}
-#project-metadata h3.section-header .search-toggle {
- position: absolute;
- right: 5px;
-}
-
-
-#project-metadata form {
- color: #777;
- background: #ccc;
- padding: 8px 8px 16px;
- border-bottom: 1px solid #bbb;
-}
-#project-metadata fieldset {
- border: 0;
-}
-
-#no-class-search-results {
- margin: 0 auto 1em;
- text-align: center;
- font-size: 14px;
- font-weight: bold;
- color: #aaa;
-}
-
-/* @end */
-
-
-/* @group Documentation Section */
-#description {
- font-size: 100%;
- color: #333;
-}
-
-#description p {
- margin: 1em 0.4em;
-}
-
-#description ul {
- margin-left: 2em;
-}
-#description ul li {
- line-height: 1.4em;
-}
-
-#description dl,
-#documentation dl {
- margin: 8px 1.5em;
- border: 1px solid #ccc;
-}
-#description dl {
- font-size: 14px;
-}
-
-#description dt,
-#documentation dt {
- padding: 2px 4px;
- font-weight: bold;
- background: #ddd;
-}
-#description dd,
-#documentation dd {
- padding: 2px 12px;
-}
-#description dd + dt,
-#documentation dd + dt {
- margin-top: 0.7em;
-}
-
-#documentation .section {
- font-size: 90%;
-}
-#documentation h3.section-header {
- margin-top: 2em;
- padding: 0.75em 0.5em;
- background-color: #dedede;
- color: #333;
- font-size: 150%;
- border: 1px solid #bbb;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
-}
-
-#constants-list > dl,
-#attributes-list > dl {
- margin: 1em 0 2em;
- border: 0;
-}
-#constants-list > dl dt,
-#attributes-list > dl dt {
- padding-left: 0;
- font-weight: bold;
- font-family: Monaco, "Andale Mono";
- background: inherit;
-}
-#constants-list > dl dt a,
-#attributes-list > dl dt a {
- color: inherit;
-}
-#constants-list > dl dd,
-#attributes-list > dl dd {
- margin: 0 0 1em 0;
- padding: 0;
- color: #666;
-}
-
-/* @group Method Details */
-
-#documentation .method-source-code {
- display: none;
-}
-
-#documentation .method-detail {
- margin: 0.5em 0;
- padding: 0.5em 0;
- cursor: pointer;
-}
-#documentation .method-detail:hover {
- background-color: #f1edba;
-}
-#documentation .method-alias {
- font-style: oblique;
-}
-#documentation .method-heading {
- position: relative;
- padding: 2px 4px 0 20px;
- font-size: 125%;
- font-weight: bold;
- color: #333;
- background: url(images/brick.png) no-repeat left bottom;
-}
-#documentation .method-heading a {
- color: inherit;
-}
-#documentation .method-click-advice {
- position: absolute;
- top: 2px;
- right: 5px;
- font-size: 10px;
- color: #9b9877;
- visibility: hidden;
- padding-right: 20px;
- line-height: 20px;
- background: url(images/zoom.png) no-repeat right top;
-}
-#documentation .method-detail:hover .method-click-advice {
- visibility: visible;
-}
-
-#documentation .method-alias .method-heading {
- color: #666;
- background: url(images/brick_link.png) no-repeat left bottom;
-}
-
-#documentation .method-description,
-#documentation .aliases {
- margin: 0 20px;
- line-height: 1.2em;
- color: #666;
-}
-#documentation .aliases {
- padding-top: 4px;
- font-style: italic;
- cursor: default;
-}
-#documentation .method-description p {
- padding: 0;
-}
-#documentation .method-description p + p {
- margin-bottom: 0.5em;
-}
-
-#documentation .attribute-method-heading {
- background: url(images/tag_green.png) no-repeat left bottom;
-}
-#documentation #attribute-method-details .method-detail:hover {
- background-color: transparent;
- cursor: default;
-}
-#documentation .attribute-access-type {
- font-size: 60%;
- text-transform: uppercase;
- vertical-align: super;
- padding: 0 2px;
-}
-/* @end */
-
-/* @end */
-
-
-
-/* @group Source Code */
-
-a.source-toggle {
- font-size: 90%;
-}
-a.source-toggle img {
-
-}
-
-div.method-source-code {
- background: #262626;
- color: #efefef;
- margin: 1em;
- padding: 0.5em;
- border: 1px dashed #999;
- overflow: hidden;
-}
-
-div.method-source-code pre {
- background: inherit;
- padding: 0;
- color: white;
- overflow: hidden;
-}
-
-/* @group Ruby keyword styles */
-
-.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
-
-.ruby-constant { color: #7fffd4; background: transparent; }
-.ruby-keyword { color: #00ffff; background: transparent; }
-.ruby-ivar { color: #eedd82; background: transparent; }
-.ruby-operator { color: #00ffee; background: transparent; }
-.ruby-identifier { color: #ffdead; background: transparent; }
-.ruby-node { color: #ffa07a; background: transparent; }
-.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
-.ruby-regexp { color: #ffa07a; background: transparent; }
-.ruby-value { color: #7fffd4; background: transparent; }
-
-/* @end */
-/* @end */
-
-
-/* @group File Popup Contents */
-
-.file #metadata,
-.file-popup #metadata {
-}
-
-.file-popup dl {
- font-size: 80%;
- padding: 0.75em;
- background-color: #dedede;
- color: #333;
- border: 1px solid #bbb;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
-}
-.file dt {
- font-weight: bold;
- padding-left: 22px;
- line-height: 20px;
- background: url(images/page_white_width.png) no-repeat left top;
-}
-.file dt.modified-date {
- background: url(images/date.png) no-repeat left top;
-}
-.file dt.requires {
- background: url(images/plugin.png) no-repeat left top;
-}
-.file dt.scs-url {
- background: url(images/wrench.png) no-repeat left top;
-}
-
-.file dl dd {
- margin: 0 0 1em 0;
-}
-.file #metadata dl dd ul {
- list-style: circle;
- margin-left: 20px;
- padding-top: 0;
-}
-.file #metadata dl dd ul li {
-}
-
-
-.file h2 {
- margin-top: 2em;
- padding: 0.75em 0.5em;
- background-color: #dedede;
- color: #333;
- font-size: 120%;
- border: 1px solid #bbb;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
-}
-
-/* @end */
-
-
-
-
-/* @group ThickBox Styles */
-#TB_window {
- font: 12px Arial, Helvetica, sans-serif;
- color: #333333;
-}
-
-#TB_secondLine {
- font: 10px Arial, Helvetica, sans-serif;
- color:#666666;
-}
-
-#TB_window a:link {color: #666666;}
-#TB_window a:visited {color: #666666;}
-#TB_window a:hover {color: #000;}
-#TB_window a:active {color: #666666;}
-#TB_window a:focus{color: #666666;}
-
-#TB_overlay {
- position: fixed;
- z-index:100;
- top: 0px;
- left: 0px;
- height:100%;
- width:100%;
-}
-
-.TB_overlayMacFFBGHack {background: url(images/macFFBgHack.png) repeat;}
-.TB_overlayBG {
- background-color:#000;
- filter:alpha(opacity=75);
- -moz-opacity: 0.75;
- opacity: 0.75;
-}
-
-* html #TB_overlay { /* ie6 hack */
- position: absolute;
- height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
-}
-
-#TB_window {
- position: fixed;
- background: #ffffff;
- z-index: 102;
- color:#000000;
- display:none;
- border: 4px solid #525252;
- text-align:left;
- top:50%;
- left:50%;
-}
-
-* html #TB_window { /* ie6 hack */
-position: absolute;
-margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
-}
-
-#TB_window img#TB_Image {
- display:block;
- margin: 15px 0 0 15px;
- border-right: 1px solid #ccc;
- border-bottom: 1px solid #ccc;
- border-top: 1px solid #666;
- border-left: 1px solid #666;
-}
-
-#TB_caption{
- height:25px;
- padding:7px 30px 10px 25px;
- float:left;
-}
-
-#TB_closeWindow{
- height:25px;
- padding:11px 25px 10px 0;
- float:right;
-}
-
-#TB_closeAjaxWindow{
- padding:7px 10px 5px 0;
- margin-bottom:1px;
- text-align:right;
- float:right;
-}
-
-#TB_ajaxWindowTitle{
- float:left;
- padding:7px 0 5px 10px;
- margin-bottom:1px;
- font-size: 22px;
-}
-
-#TB_title{
- background-color: #6C8C22;
- color: #dedede;
- height:40px;
-}
-#TB_title a {
- color: white !important;
- border-bottom: 1px dotted #dedede;
-}
-
-#TB_ajaxContent{
- clear:both;
- padding:2px 15px 15px 15px;
- overflow:auto;
- text-align:left;
- line-height:1.4em;
-}
-
-#TB_ajaxContent.TB_modal{
- padding:15px;
-}
-
-#TB_ajaxContent p{
- padding:5px 0px 5px 0px;
-}
-
-#TB_load{
- position: fixed;
- display:none;
- height:13px;
- width:208px;
- z-index:103;
- top: 50%;
- left: 50%;
- margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */
-}
-
-* html #TB_load { /* ie6 hack */
-position: absolute;
-margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px');
-}
-
-#TB_HideSelect{
- z-index:99;
- position:fixed;
- top: 0;
- left: 0;
- background-color:#fff;
- border:none;
- filter:alpha(opacity=0);
- -moz-opacity: 0;
- opacity: 0;
- height:100%;
- width:100%;
-}
-
-* html #TB_HideSelect { /* ie6 hack */
- position: absolute;
- height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px');
-}
-
-#TB_iframeContent{
- clear:both;
- border:none;
- margin-bottom:-1px;
- margin-top:1px;
- _margin-bottom:1px;
-}
-
-/* @end */
-
-/* @group Debugging Section */
-
-#debugging-toggle {
- text-align: center;
-}
-#debugging-toggle img {
- cursor: pointer;
-}
-
-#rdoc-debugging-section-dump {
- display: none;
- margin: 0 2em 2em;
- background: #ccc;
- border: 1px solid #999;
-}
-
-
-
-/* @end */
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ghost_method.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ghost_method.rb
deleted file mode 100644
index 192b46f51..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ghost_method.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rdoc/any_method'
-
-##
-# GhostMethod represents a method referenced only by a comment
-
-class RDoc::GhostMethod < RDoc::AnyMethod
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/include.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/include.rb
deleted file mode 100644
index 9be906158..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/include.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'rdoc/code_object'
-
-##
-# A Module include in a class with \#include
-
-class RDoc::Include < RDoc::CodeObject
-
- ##
- # Name of included module
-
- attr_accessor :name
-
- ##
- # Creates a new Include for +name+ with +comment+
-
- def initialize(name, comment)
- super()
- @name = name
- self.comment = comment
- end
-
- def inspect # :nodoc:
- "#<%s:0x%x %s.include %s>" % [
- self.class,
- object_id,
- parent_name, @name,
- ]
- end
-
- ##
- # Attempts to locate the included module object. Returns the name if not
- # known.
-
- def module
- RDoc::TopLevel.find_module_named(@name) || @name
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/known_classes.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/known_classes.rb
deleted file mode 100644
index dbb1802f5..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/known_classes.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-module RDoc
-
- ##
- # Ruby's built-in classes, modules and exceptions
-
- KNOWN_CLASSES = {
- "rb_cArray" => "Array",
- "rb_cBignum" => "Bignum",
- "rb_cClass" => "Class",
- "rb_cData" => "Data",
- "rb_cDir" => "Dir",
- "rb_cFalseClass" => "FalseClass",
- "rb_cFile" => "File",
- "rb_cFixnum" => "Fixnum",
- "rb_cFloat" => "Float",
- "rb_cHash" => "Hash",
- "rb_cIO" => "IO",
- "rb_cInteger" => "Integer",
- "rb_cModule" => "Module",
- "rb_cNilClass" => "NilClass",
- "rb_cNumeric" => "Numeric",
- "rb_cObject" => "Object",
- "rb_cProc" => "Proc",
- "rb_cRange" => "Range",
- "rb_cRegexp" => "Regexp",
- "rb_cRubyVM" => "RubyVM",
- "rb_cString" => "String",
- "rb_cStruct" => "Struct",
- "rb_cSymbol" => "Symbol",
- "rb_cThread" => "Thread",
- "rb_cTime" => "Time",
- "rb_cTrueClass" => "TrueClass",
-
- "rb_eArgError" => "ArgError",
- "rb_eEOFError" => "EOFError",
- "rb_eException" => "Exception",
- "rb_eFatal" => "Fatal",
- "rb_eFloatDomainError" => "FloatDomainError",
- "rb_eIOError" => "IOError",
- "rb_eIndexError" => "IndexError",
- "rb_eInterrupt" => "Interrupt",
- "rb_eLoadError" => "LoadError",
- "rb_eNameError" => "NameError",
- "rb_eNoMemError" => "NoMemError",
- "rb_eNotImpError" => "NotImpError",
- "rb_eRangeError" => "RangeError",
- "rb_eRuntimeError" => "RuntimeError",
- "rb_eScriptError" => "ScriptError",
- "rb_eSecurityError" => "SecurityError",
- "rb_eSignal" => "Signal",
- "rb_eStandardError" => "StandardError",
- "rb_eSyntaxError" => "SyntaxError",
- "rb_eSystemCallError" => "SystemCallError",
- "rb_eSystemExit" => "SystemExit",
- "rb_eTypeError" => "TypeError",
- "rb_eZeroDivError" => "ZeroDivError",
-
- "rb_mComparable" => "Comparable",
- "rb_mEnumerable" => "Enumerable",
- "rb_mErrno" => "Errno",
- "rb_mFileTest" => "FileTest",
- "rb_mGC" => "GC",
- "rb_mKernel" => "Kernel",
- "rb_mMath" => "Math",
- "rb_mProcess" => "Process"
- }
-
-end
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup.rb
deleted file mode 100644
index 9d22b3894..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup.rb
+++ /dev/null
@@ -1,378 +0,0 @@
-require 'rdoc'
-
-##
-# RDoc::Markup parses plain text documents and attempts to decompose them into
-# their constituent parts. Some of these parts are high-level: paragraphs,
-# chunks of verbatim text, list entries and the like. Other parts happen at
-# the character level: a piece of bold text, a word in code font. This markup
-# is similar in spirit to that used on WikiWiki webs, where folks create web
-# pages using a simple set of formatting rules.
-#
-# RDoc::Markup itself does no output formatting: this is left to a different
-# set of classes.
-#
-# RDoc::Markup is extendable at runtime: you can add \new markup elements to
-# be recognised in the documents that RDoc::Markup parses.
-#
-# RDoc::Markup is intended to be the basis for a family of tools which share
-# the common requirement that simple, plain-text should be rendered in a
-# variety of different output formats and media. It is envisaged that
-# RDoc::Markup could be the basis for formatting RDoc style comment blocks,
-# Wiki entries, and online FAQs.
-#
-# == Synopsis
-#
-# This code converts +input_string+ to HTML. The conversion takes place in
-# the +convert+ method, so you can use the same RDoc::Markup converter to
-# convert multiple input strings.
-#
-# require 'rdoc/markup/to_html'
-#
-# h = RDoc::Markup::ToHtml.new
-#
-# puts h.convert(input_string)
-#
-# You can extend the RDoc::Markup parser to recognise new markup
-# sequences, and to add special processing for text that matches a
-# regular expression. Here we make WikiWords significant to the parser,
-# and also make the sequences {word} and \<no>text...</no> signify
-# strike-through text. When then subclass the HTML output class to deal
-# with these:
-#
-# require 'rdoc/markup'
-# require 'rdoc/markup/to_html'
-#
-# class WikiHtml < RDoc::Markup::ToHtml
-# def handle_special_WIKIWORD(special)
-# "<font color=red>" + special.text + "</font>"
-# end
-# end
-#
-# m = RDoc::Markup.new
-# m.add_word_pair("{", "}", :STRIKE)
-# m.add_html("no", :STRIKE)
-#
-# m.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
-#
-# wh = WikiHtml.new
-# wh.add_tag(:STRIKE, "<strike>", "</strike>")
-#
-# puts "<body>#{wh.convert ARGF.read}</body>"
-#
-#--
-# Author:: Dave Thomas, dave@pragmaticprogrammer.com
-# License:: Ruby license
-
-class RDoc::Markup
-
- SPACE = ?\s
-
- # List entries look like:
- # * text
- # 1. text
- # [label] text
- # label:: text
- #
- # Flag it as a list entry, and work out the indent for subsequent lines
-
- SIMPLE_LIST_RE = /^(
- ( \* (?# bullet)
- |- (?# bullet)
- |\d+\. (?# numbered )
- |[A-Za-z]\. (?# alphabetically numbered )
- )
- \s+
- )\S/x
-
- LABEL_LIST_RE = /^(
- ( \[.*?\] (?# labeled )
- |\S.*:: (?# note )
- )(?:\s+|$)
- )/x
-
- ##
- # Take a block of text and use various heuristics to determine it's
- # structure (paragraphs, lists, and so on). Invoke an event handler as we
- # identify significant chunks.
-
- def initialize
- @am = RDoc::Markup::AttributeManager.new
- @output = nil
- end
-
- ##
- # Add to the sequences used to add formatting to an individual word (such
- # as *bold*). Matching entries will generate attributes that the output
- # formatters can recognize by their +name+.
-
- def add_word_pair(start, stop, name)
- @am.add_word_pair(start, stop, name)
- end
-
- ##
- # Add to the sequences recognized as general markup.
-
- def add_html(tag, name)
- @am.add_html(tag, name)
- end
-
- ##
- # Add to other inline sequences. For example, we could add WikiWords using
- # something like:
- #
- # parser.add_special(/\b([A-Z][a-z]+[A-Z]\w+)/, :WIKIWORD)
- #
- # Each wiki word will be presented to the output formatter via the
- # accept_special method.
-
- def add_special(pattern, name)
- @am.add_special(pattern, name)
- end
-
- ##
- # We take a string, split it into lines, work out the type of each line,
- # and from there deduce groups of lines (for example all lines in a
- # paragraph). We then invoke the output formatter using a Visitor to
- # display the result.
-
- def convert(str, op)
- lines = str.split(/\r?\n/).map { |line| Line.new line }
- @lines = Lines.new lines
-
- return "" if @lines.empty?
- @lines.normalize
- assign_types_to_lines
- group = group_lines
- # call the output formatter to handle the result
- #group.each { |line| p line }
- group.accept @am, op
- end
-
- private
-
- ##
- # Look through the text at line indentation. We flag each line as being
- # Blank, a paragraph, a list element, or verbatim text.
-
- def assign_types_to_lines(margin = 0, level = 0)
- while line = @lines.next
- if line.blank? then
- line.stamp :BLANK, level
- next
- end
-
- # if a line contains non-blanks before the margin, then it must belong
- # to an outer level
-
- text = line.text
-
- for i in 0...margin
- if text[i] != SPACE
- @lines.unget
- return
- end
- end
-
- active_line = text[margin..-1]
-
- # Rules (horizontal lines) look like
- #
- # --- (three or more hyphens)
- #
- # The more hyphens, the thicker the rule
- #
-
- if /^(---+)\s*$/ =~ active_line
- line.stamp :RULE, level, $1.length-2
- next
- end
-
- # Then look for list entries. First the ones that have to have
- # text following them (* xxx, - xxx, and dd. xxx)
-
- if SIMPLE_LIST_RE =~ active_line
- offset = margin + $1.length
- prefix = $2
- prefix_length = prefix.length
-
- flag = case prefix
- when "*","-" then :BULLET
- when /^\d/ then :NUMBER
- when /^[A-Z]/ then :UPPERALPHA
- when /^[a-z]/ then :LOWERALPHA
- else raise "Invalid List Type: #{self.inspect}"
- end
-
- line.stamp :LIST, level+1, prefix, flag
- text[margin, prefix_length] = " " * prefix_length
- assign_types_to_lines(offset, level + 1)
- next
- end
-
- if LABEL_LIST_RE =~ active_line
- offset = margin + $1.length
- prefix = $2
- prefix_length = prefix.length
-
- next if handled_labeled_list(line, level, margin, offset, prefix)
- end
-
- # Headings look like
- # = Main heading
- # == Second level
- # === Third
- #
- # Headings reset the level to 0
-
- if active_line[0] == ?= and active_line =~ /^(=+)\s*(.*)/
- prefix_length = $1.length
- prefix_length = 6 if prefix_length > 6
- line.stamp :HEADING, 0, prefix_length
- line.strip_leading(margin + prefix_length)
- next
- end
-
- # If the character's a space, then we have verbatim text,
- # otherwise
-
- if active_line[0] == SPACE
- line.strip_leading(margin) if margin > 0
- line.stamp :VERBATIM, level
- else
- line.stamp :PARAGRAPH, level
- end
- end
- end
-
- ##
- # Handle labeled list entries, We have a special case to deal with.
- # Because the labels can be long, they force the remaining block of text
- # over the to right:
- #
- # this is a long label that I wrote:: and here is the
- # block of text with
- # a silly margin
- #
- # So we allow the special case. If the label is followed by nothing, and
- # if the following line is indented, then we take the indent of that line
- # as the new margin.
- #
- # this is a long label that I wrote::
- # here is a more reasonably indented block which
- # will be attached to the label.
- #
-
- def handled_labeled_list(line, level, margin, offset, prefix)
- prefix_length = prefix.length
- text = line.text
- flag = nil
-
- case prefix
- when /^\[/ then
- flag = :LABELED
- prefix = prefix[1, prefix.length-2]
- when /:$/ then
- flag = :NOTE
- prefix.chop!
- else
- raise "Invalid List Type: #{self.inspect}"
- end
-
- # body is on the next line
- if text.length <= offset then
- original_line = line
- line = @lines.next
- return false unless line
- text = line.text
-
- for i in 0..margin
- if text[i] != SPACE
- @lines.unget
- return false
- end
- end
-
- i = margin
- i += 1 while text[i] == SPACE
-
- if i >= text.length then
- @lines.unget
- return false
- else
- offset = i
- prefix_length = 0
-
- if text[offset..-1] =~ SIMPLE_LIST_RE then
- @lines.unget
- line = original_line
- line.text = ''
- else
- @lines.delete original_line
- end
- end
- end
-
- line.stamp :LIST, level+1, prefix, flag
- text[margin, prefix_length] = " " * prefix_length
- assign_types_to_lines(offset, level + 1)
- return true
- end
-
- ##
- # Return a block consisting of fragments which are paragraphs, list
- # entries or verbatim text. We merge consecutive lines of the same type
- # and level together. We are also slightly tricky with lists: the lines
- # following a list introduction look like paragraph lines at the next
- # level, and we remap them into list entries instead.
-
- def group_lines
- @lines.rewind
-
- in_list = false
- wanted_type = wanted_level = nil
-
- block = LineCollection.new
- group = nil
-
- while line = @lines.next
- if line.level == wanted_level and line.type == wanted_type
- group.add_text(line.text)
- else
- group = block.fragment_for(line)
- block.add(group)
-
- if line.type == :LIST
- wanted_type = :PARAGRAPH
- else
- wanted_type = line.type
- end
-
- wanted_level = line.type == :HEADING ? line.param : line.level
- end
- end
-
- block.normalize
- block
- end
-
- ##
- # For debugging, we allow access to our line contents as text.
-
- def content
- @lines.as_text
- end
- public :content
-
- ##
- # For debugging, return the list of line types.
-
- def get_line_types
- @lines.line_types
- end
- public :get_line_types
-
-end
-
-require 'rdoc/markup/fragments'
-require 'rdoc/markup/inline'
-require 'rdoc/markup/lines'
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/attribute_manager.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/attribute_manager.rb
deleted file mode 100644
index 5c253b10c..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/attribute_manager.rb
+++ /dev/null
@@ -1,311 +0,0 @@
-require 'rdoc/markup/inline'
-
-##
-# Manages changes of attributes in a block of text
-
-class RDoc::Markup::AttributeManager
-
- ##
- # The NUL character
-
- NULL = "\000".freeze
-
- ##
- # We work by substituting non-printing characters in to the text. For now
- # I'm assuming that I can substitute a character in the range 0..8 for a 7
- # bit character without damaging the encoded string, but this might be
- # optimistic
-
- A_PROTECT = 004
- PROTECT_ATTR = A_PROTECT.chr
-
- ##
- # This maps delimiters that occur around words (such as *bold* or +tt+)
- # where the start and end delimiters and the same. This lets us optimize
- # the regexp
-
- MATCHING_WORD_PAIRS = {}
-
- ##
- # And this is used when the delimiters aren't the same. In this case the
- # hash maps a pattern to the attribute character
-
- WORD_PAIR_MAP = {}
-
- ##
- # This maps HTML tags to the corresponding attribute char
-
- HTML_TAGS = {}
-
- ##
- # And this maps _special_ sequences to a name. A special sequence is
- # something like a WikiWord
-
- SPECIAL = {}
-
- ##
- # Return an attribute object with the given turn_on and turn_off bits set
-
- def attribute(turn_on, turn_off)
- RDoc::Markup::AttrChanger.new turn_on, turn_off
- end
-
- def change_attribute(current, new)
- diff = current ^ new
- attribute(new & diff, current & diff)
- end
-
- def changed_attribute_by_name(current_set, new_set)
- current = new = 0
- current_set.each do |name|
- current |= RDoc::Markup::Attribute.bitmap_for(name)
- end
-
- new_set.each do |name|
- new |= RDoc::Markup::Attribute.bitmap_for(name)
- end
-
- change_attribute(current, new)
- end
-
- def copy_string(start_pos, end_pos)
- res = @str[start_pos...end_pos]
- res.gsub!(/\000/, '')
- res
- end
-
- ##
- # Map attributes like <b>text</b>to the sequence
- # \001\002<char>\001\003<char>, where <char> is a per-attribute specific
- # character
-
- def convert_attrs(str, attrs)
- # first do matching ones
- tags = MATCHING_WORD_PAIRS.keys.join("")
-
- re = /(^|\W)([#{tags}])([#:\\]?[\w.\/-]+?\S?)\2(\W|$)/
-
- 1 while str.gsub!(re) do
- attr = MATCHING_WORD_PAIRS[$2]
- attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr)
- $1 + NULL * $2.length + $3 + NULL * $2.length + $4
- end
-
- # then non-matching
- unless WORD_PAIR_MAP.empty? then
- WORD_PAIR_MAP.each do |regexp, attr|
- str.gsub!(regexp) {
- attrs.set_attrs($`.length + $1.length, $2.length, attr)
- NULL * $1.length + $2 + NULL * $3.length
- }
- end
- end
- end
-
- ##
- # Converts HTML tags to RDoc attributes
-
- def convert_html(str, attrs)
- tags = HTML_TAGS.keys.join '|'
-
- 1 while str.gsub!(/<(#{tags})>(.*?)<\/\1>/i) {
- attr = HTML_TAGS[$1.downcase]
- html_length = $1.length + 2
- seq = NULL * html_length
- attrs.set_attrs($`.length + html_length, $2.length, attr)
- seq + $2 + seq + NULL
- }
- end
-
- ##
- # Converts special sequences to RDoc attributes
-
- def convert_specials(str, attrs)
- unless SPECIAL.empty?
- SPECIAL.each do |regexp, attr|
- str.scan(regexp) do
- attrs.set_attrs($`.length, $&.length,
- attr | RDoc::Markup::Attribute::SPECIAL)
- end
- end
- end
- end
-
- ##
- # A \ in front of a character that would normally be processed turns off
- # processing. We do this by turning \< into <#{PROTECT}
-
- PROTECTABLE = %w[<\\]
-
- ##
- # Escapes special sequences of text to prevent conversion to RDoc
-
- def mask_protected_sequences
- protect_pattern = Regexp.new("\\\\([#{Regexp.escape(PROTECTABLE.join(''))}])")
- @str.gsub!(protect_pattern, "\\1#{PROTECT_ATTR}")
- end
-
- ##
- # Unescapes special sequences of text
-
- def unmask_protected_sequences
- @str.gsub!(/(.)#{PROTECT_ATTR}/, "\\1\000")
- end
-
- ##
- # Creates a new attribute manager that understands bold, emphasized and
- # teletype text.
-
- def initialize
- add_word_pair("*", "*", :BOLD)
- add_word_pair("_", "_", :EM)
- add_word_pair("+", "+", :TT)
-
- add_html("em", :EM)
- add_html("i", :EM)
- add_html("b", :BOLD)
- add_html("tt", :TT)
- add_html("code", :TT)
- end
-
- ##
- # Adds a markup class with +name+ for words wrapped in the +start+ and
- # +stop+ character. To make words wrapped with "*" bold:
- #
- # am.add_word_pair '*', '*', :BOLD
-
- def add_word_pair(start, stop, name)
- raise ArgumentError, "Word flags may not start with '<'" if
- start[0,1] == '<'
-
- bitmap = RDoc::Markup::Attribute.bitmap_for name
-
- if start == stop then
- MATCHING_WORD_PAIRS[start] = bitmap
- else
- pattern = /(#{Regexp.escape start})(\S+)(#{Regexp.escape stop})/
- WORD_PAIR_MAP[pattern] = bitmap
- end
-
- PROTECTABLE << start[0,1]
- PROTECTABLE.uniq!
- end
-
- ##
- # Adds a markup class with +name+ for words surrounded by HTML tag +tag+.
- # To process emphasis tags:
- #
- # am.add_html 'em', :EM
-
- def add_html(tag, name)
- HTML_TAGS[tag.downcase] = RDoc::Markup::Attribute.bitmap_for name
- end
-
- ##
- # Adds a special handler for +pattern+ with +name+. A simple URL handler
- # would be:
- #
- # @am.add_special(/((https?:)\S+\w)/, :HYPERLINK)
-
- def add_special(pattern, name)
- SPECIAL[pattern] = RDoc::Markup::Attribute.bitmap_for name
- end
-
- ##
- # Processes +str+ converting attributes, HTML and specials
-
- def flow(str)
- @str = str
-
- mask_protected_sequences
-
- @attrs = RDoc::Markup::AttrSpan.new @str.length
-
- convert_attrs(@str, @attrs)
- convert_html(@str, @attrs)
- convert_specials(str, @attrs)
-
- unmask_protected_sequences
-
- split_into_flow
- end
-
- ##
- # Debug method that prints a string along with its attributes
-
- def display_attributes
- puts
- puts @str.tr(NULL, "!")
- bit = 1
- 16.times do |bno|
- line = ""
- @str.length.times do |i|
- if (@attrs[i] & bit) == 0
- line << " "
- else
- if bno.zero?
- line << "S"
- else
- line << ("%d" % (bno+1))
- end
- end
- end
- puts(line) unless line =~ /^ *$/
- bit <<= 1
- end
- end
-
- def split_into_flow
- res = []
- current_attr = 0
- str = ""
-
- str_len = @str.length
-
- # skip leading invisible text
- i = 0
- i += 1 while i < str_len and @str[i].chr == "\0"
- start_pos = i
-
- # then scan the string, chunking it on attribute changes
- while i < str_len
- new_attr = @attrs[i]
- if new_attr != current_attr
- if i > start_pos
- res << copy_string(start_pos, i)
- start_pos = i
- end
-
- res << change_attribute(current_attr, new_attr)
- current_attr = new_attr
-
- if (current_attr & RDoc::Markup::Attribute::SPECIAL) != 0 then
- i += 1 while
- i < str_len and (@attrs[i] & RDoc::Markup::Attribute::SPECIAL) != 0
-
- res << RDoc::Markup::Special.new(current_attr,
- copy_string(start_pos, i))
- start_pos = i
- next
- end
- end
-
- # move on, skipping any invisible characters
- begin
- i += 1
- end while i < str_len and @str[i].chr == "\0"
- end
-
- # tidy up trailing text
- if start_pos < str_len
- res << copy_string(start_pos, str_len)
- end
-
- # and reset to all attributes off
- res << change_attribute(current_attr, 0) if current_attr != 0
-
- res
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/formatter.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/formatter.rb
deleted file mode 100644
index a499d12ea..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/formatter.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'rdoc/markup'
-
-##
-# Base class for RDoc markup formatters
-#
-# Formatters use a visitor pattern to convert content into output.
-
-class RDoc::Markup::Formatter
-
- ##
- # Creates a new Formatter
-
- def initialize
- @markup = RDoc::Markup.new
- end
-
- ##
- # Marks up +content+
-
- def convert(content)
- @markup.convert content, self
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/fragments.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/fragments.rb
deleted file mode 100644
index bbe0bced0..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/fragments.rb
+++ /dev/null
@@ -1,377 +0,0 @@
-require 'rdoc/markup'
-require 'rdoc/markup/lines'
-
-class RDoc::Markup
-
- ##
- # A Fragment is a chunk of text, subclassed as a paragraph, a list
- # entry, or verbatim text.
-
- class Fragment
- attr_reader :level, :param, :txt
- attr_accessor :type
-
- ##
- # This is a simple factory system that lets us associate fragement
- # types (a string) with a subclass of fragment
-
- TYPE_MAP = {}
-
- def self.type_name(name)
- TYPE_MAP[name] = self
- end
-
- def self.for(line)
- klass = TYPE_MAP[line.type] ||
- raise("Unknown line type: '#{line.type.inspect}:' '#{line.text}'")
- return klass.new(line.level, line.param, line.flag, line.text)
- end
-
- def initialize(level, param, type, txt)
- @level = level
- @param = param
- @type = type
- @txt = ""
- add_text(txt) if txt
- end
-
- def add_text(txt)
- @txt << " " if @txt.length > 0
- @txt << txt.tr_s("\n ", " ").strip
- end
-
- def to_s
- "L#@level: #{self.class.name.split('::')[-1]}\n#@txt"
- end
-
- end
-
- ##
- # A paragraph is a fragment which gets wrapped to fit. We remove all
- # newlines when we're created, and have them put back on output.
-
- class Paragraph < Fragment
- type_name :PARAGRAPH
- end
-
- ##
- # An empty line
-
- class BlankLine < Paragraph
- type_name :BLANK
- end
-
- ##
- # A heading
-
- class Heading < Paragraph
- type_name :HEADING
-
- ##
- # Level of heading, smaller is more important
-
- def head_level
- @param.to_i
- end
-
- end
-
- ##
- # A List is a fragment with some kind of label
-
- class ListBase < Paragraph
- LIST_TYPES = [
- :BULLET,
- :NUMBER,
- :UPPERALPHA,
- :LOWERALPHA,
- :LABELED,
- :NOTE,
- ]
- end
-
- ##
- # An item in a list
-
- class ListItem < ListBase
- type_name :LIST
-
- def to_s # :nodoc:
- text = if [:NOTE, :LABELED].include? type then
- "#{@param}: #{@txt}"
- else
- @txt
- end
-
- "L#@level: #{type} #{self.class.name.split('::')[-1]}\n#{text}"
- end
-
- end
-
- ##
- # Start of a list
-
- class ListStart < ListBase
-
- ##
- # Creates a ListStart with nesting +level+
-
- def initialize(level, param, type)
- super(level, param, type, nil)
- end
- end
-
- ##
- # End of a list
-
- class ListEnd < ListBase
-
- ##
- # Creates a ListEnd with nesting +level+
-
- def initialize(level, type)
- super(level, "", type, nil)
- end
- end
-
- ##
- # Verbatim code contains lines that don't get wrapped.
-
- class Verbatim < Fragment
- type_name :VERBATIM
-
- ##
- # Adds +txt+ to this verbatim
-
- def add_text(txt)
- @txt << txt.chomp << "\n"
- end
-
- end
-
- ##
- # A horizontal rule
-
- class Rule < Fragment
- type_name :RULE
- end
-
- ##
- # Collect groups of lines together. Each group will end up containing a flow
- # of text.
-
- class LineCollection
-
- ##
- # Creates a new collection of lines
-
- def initialize
- @fragments = []
- end
-
- ##
- # Adds +fragment+ to the collection
-
- def add(fragment)
- @fragments << fragment
- end
-
- ##
- # Iterates over the lines in the collection
-
- def each(&b)
- @fragments.each(&b)
- end
-
- def to_a # :nodoc:
- @fragments.map {|fragment| fragment.to_s}
- end
-
- ##
- # Factory for different fragment types
-
- def fragment_for(*args)
- Fragment.for(*args)
- end
-
- ##
- # Tidy up at the end
-
- def normalize
- change_verbatim_blank_lines
- add_list_start_and_ends
- add_list_breaks
- tidy_blank_lines
- end
-
- def to_s # :nodoc:
- @fragments.join("\n----\n")
- end
-
- def accept(am, visitor)
- visitor.start_accepting
-
- @fragments.each do |fragment|
- case fragment
- when Verbatim
- visitor.accept_verbatim(am, fragment)
- when Rule
- visitor.accept_rule(am, fragment)
- when ListStart
- visitor.accept_list_start(am, fragment)
- when ListEnd
- visitor.accept_list_end(am, fragment)
- when ListItem
- visitor.accept_list_item(am, fragment)
- when BlankLine
- visitor.accept_blank_line(am, fragment)
- when Heading
- visitor.accept_heading(am, fragment)
- when Paragraph
- visitor.accept_paragraph(am, fragment)
- end
- end
-
- visitor.end_accepting
- end
-
- private
-
- ##
- # If you have:
- #
- # normal paragraph text.
- #
- # this is code
- #
- # and more code
- #
- # You'll end up with the fragments Paragraph, BlankLine, Verbatim,
- # BlankLine, Verbatim, BlankLine, etc.
- #
- # The BlankLine in the middle of the verbatim chunk needs to be changed to
- # a real verbatim newline, and the two verbatim blocks merged
-
- def change_verbatim_blank_lines
- frag_block = nil
- blank_count = 0
- @fragments.each_with_index do |frag, i|
- if frag_block.nil?
- frag_block = frag if Verbatim === frag
- else
- case frag
- when Verbatim
- blank_count.times { frag_block.add_text("\n") }
- blank_count = 0
- frag_block.add_text(frag.txt)
- @fragments[i] = nil # remove out current fragment
- when BlankLine
- if frag_block
- blank_count += 1
- @fragments[i] = nil
- end
- else
- frag_block = nil
- blank_count = 0
- end
- end
- end
- @fragments.compact!
- end
-
- ##
- # List nesting is implicit given the level of indentation. Make it
- # explicit, just to make life a tad easier for the output processors
-
- def add_list_start_and_ends
- level = 0
- res = []
- type_stack = []
-
- @fragments.each do |fragment|
- # $stderr.puts "#{level} : #{fragment.class.name} : #{fragment.level}"
- new_level = fragment.level
- while (level < new_level)
- level += 1
- type = fragment.type
- res << ListStart.new(level, fragment.param, type) if type
- type_stack.push type
- # $stderr.puts "Start: #{level}"
- end
-
- while level > new_level
- type = type_stack.pop
- res << ListEnd.new(level, type) if type
- level -= 1
- # $stderr.puts "End: #{level}, #{type}"
- end
-
- res << fragment
- level = fragment.level
- end
- level.downto(1) do |i|
- type = type_stack.pop
- res << ListEnd.new(i, type) if type
- end
-
- @fragments = res
- end
-
- ##
- # Inserts start/ends between list entries at the same level that have
- # different element types
-
- def add_list_breaks
- res = @fragments
-
- @fragments = []
- list_stack = []
-
- res.each do |fragment|
- case fragment
- when ListStart
- list_stack.push fragment
- when ListEnd
- start = list_stack.pop
- fragment.type = start.type
- when ListItem
- l = list_stack.last
- if fragment.type != l.type
- @fragments << ListEnd.new(l.level, l.type)
- start = ListStart.new(l.level, fragment.param, fragment.type)
- @fragments << start
- list_stack.pop
- list_stack.push start
- end
- else
- ;
- end
- @fragments << fragment
- end
- end
-
- ##
- # Tidy up the blank lines:
- # * change Blank/ListEnd into ListEnd/Blank
- # * remove blank lines at the front
-
- def tidy_blank_lines
- (@fragments.size - 1).times do |i|
- if BlankLine === @fragments[i] and ListEnd === @fragments[i+1] then
- @fragments[i], @fragments[i+1] = @fragments[i+1], @fragments[i]
- end
- end
-
- # remove leading blanks
- @fragments.each_with_index do |f, i|
- break unless f.kind_of? BlankLine
- @fragments[i] = nil
- end
-
- @fragments.compact!
- end
-
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/inline.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/inline.rb
deleted file mode 100644
index ce091aabc..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/inline.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-require 'rdoc/markup'
-
-class RDoc::Markup
-
- ##
- # We manage a set of attributes. Each attribute has a symbol name and a bit
- # value.
-
- class Attribute
- SPECIAL = 1
-
- @@name_to_bitmap = { :_SPECIAL_ => SPECIAL }
- @@next_bitmap = 2
-
- def self.bitmap_for(name)
- bitmap = @@name_to_bitmap[name]
- unless bitmap then
- bitmap = @@next_bitmap
- @@next_bitmap <<= 1
- @@name_to_bitmap[name] = bitmap
- end
- bitmap
- end
-
- def self.as_string(bitmap)
- return "none" if bitmap.zero?
- res = []
- @@name_to_bitmap.each do |name, bit|
- res << name if (bitmap & bit) != 0
- end
- res.join(",")
- end
-
- def self.each_name_of(bitmap)
- @@name_to_bitmap.each do |name, bit|
- next if bit == SPECIAL
- yield name.to_s if (bitmap & bit) != 0
- end
- end
-
- end
-
- AttrChanger = Struct.new :turn_on, :turn_off
-
- ##
- # An AttrChanger records a change in attributes. It contains a bitmap of the
- # attributes to turn on, and a bitmap of those to turn off.
-
- class AttrChanger
- def to_s # :nodoc:
- "Attr: +#{Attribute.as_string(turn_on)}/-#{Attribute.as_string(turn_on)}"
- end
- end
-
- ##
- # An array of attributes which parallels the characters in a string.
-
- class AttrSpan
-
- ##
- # Creates a new AttrSpan for +length+ characters
-
- def initialize(length)
- @attrs = Array.new(length, 0)
- end
-
- ##
- # Toggles +bits+ from +start+ to +length+
- def set_attrs(start, length, bits)
- for i in start ... (start+length)
- @attrs[i] |= bits
- end
- end
-
- ##
- # Acccesses flags for character +n+
-
- def [](n)
- @attrs[n]
- end
-
- end
-
- ##
- # Hold details of a special sequence
-
- class Special
-
- ##
- # Special type
-
- attr_reader :type
-
- ##
- # Special text
-
- attr_accessor :text
-
- ##
- # Creates a new special sequence of +type+ with +text+
-
- def initialize(type, text)
- @type, @text = type, text
- end
-
- ##
- # Specials are equal when the have the same text and type
-
- def ==(o)
- self.text == o.text && self.type == o.type
- end
-
- def inspect # :nodoc:
- "#<RDoc::Markup::Special:0x%x @type=%p, name=%p @text=%p>" % [
- object_id, @type, RDoc::Markup::Attribute.as_string(type), text.dump]
- end
-
- def to_s # :nodoc:
- "Special: type=#{type}, name=#{RDoc::Markup::Attribute.as_string type}, text=#{text.dump}"
- end
-
- end
-
-end
-
-require 'rdoc/markup/attribute_manager'
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/lines.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/lines.rb
deleted file mode 100644
index 6ec8e0937..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/lines.rb
+++ /dev/null
@@ -1,156 +0,0 @@
-class RDoc::Markup
-
- ##
- # We store the lines we're working on as objects of class Line. These
- # contain the text of the line, along with a flag indicating the line type,
- # and an indentation level.
-
- class Line
-
- ##
- # Not really
-
- INFINITY = 9999
-
- LINE_TYPES = [
- :BLANK,
- :HEADING,
- :LIST,
- :PARAGRAPH,
- :RULE,
- :VERBATIM,
- ]
-
- # line type
- attr_accessor :type
-
- # The indentation nesting level
- attr_accessor :level
-
- # The contents
- attr_accessor :text
-
- # A prefix or parameter. For LIST lines, this is
- # the text that introduced the list item (the label)
- attr_accessor :param
-
- # A flag. For list lines, this is the type of the list
- attr_accessor :flag
-
- # the number of leading spaces
- attr_accessor :leading_spaces
-
- # true if this line has been deleted from the list of lines
- attr_accessor :deleted
-
- def initialize(text)
- @text = text.dup
- @deleted = false
-
- # expand tabs
- 1 while @text.gsub!(/\t+/) { ' ' * (8*$&.length - $`.length % 8)} && $~ #`
-
- # Strip trailing whitespace
- @text.sub!(/\s+$/, '')
-
- # and look for leading whitespace
- if @text.length > 0
- @text =~ /^(\s*)/
- @leading_spaces = $1.length
- else
- @leading_spaces = INFINITY
- end
- end
-
- # Return true if this line is blank
- def blank?
- @text.empty?
- end
-
- # stamp a line with a type, a level, a prefix, and a flag
- def stamp(type, level, param="", flag=nil)
- @type, @level, @param, @flag = type, level, param, flag
- end
-
- ##
- # Strip off the leading margin
-
- def strip_leading(size)
- if @text.size > size
- @text[0,size] = ""
- else
- @text = ""
- end
- end
-
- def to_s
- "#@type#@level: #@text"
- end
- end
-
- ##
- # A container for all the lines.
-
- class Lines
-
- include Enumerable
-
- attr_reader :lines # :nodoc:
-
- def initialize(lines)
- @lines = lines
- rewind
- end
-
- def empty?
- @lines.size.zero?
- end
-
- def each
- @lines.each do |line|
- yield line unless line.deleted
- end
- end
-
-# def [](index)
-# @lines[index]
-# end
-
- def rewind
- @nextline = 0
- end
-
- def next
- begin
- res = @lines[@nextline]
- @nextline += 1 if @nextline < @lines.size
- end while res and res.deleted and @nextline < @lines.size
- res
- end
-
- def unget
- @nextline -= 1
- end
-
- def delete(a_line)
- a_line.deleted = true
- end
-
- def normalize
- margin = @lines.collect{|l| l.leading_spaces}.min
- margin = 0 if margin == :INFINITY
- @lines.each {|line| line.strip_leading(margin) } if margin > 0
- end
-
- def as_text
- @lines.map {|l| l.text}.join("\n")
- end
-
- def line_types
- @lines.map {|l| l.type }
- end
-
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/preprocess.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/preprocess.rb
deleted file mode 100644
index a175d179c..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/preprocess.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require 'rdoc/markup'
-
-##
-# Handle common directives that can occur in a block of text:
-#
-# : include : filename
-
-class RDoc::Markup::PreProcess
-
- ##
- # Creates a new pre-processor for +input_file_name+ that will look for
- # included files in +include_path+
-
- def initialize(input_file_name, include_path)
- @input_file_name = input_file_name
- @include_path = include_path
- end
-
- ##
- # Look for common options in a chunk of text. Options that we don't handle
- # are yielded to the caller.
-
- def handle(text)
- text.gsub!(/^([ \t]*#?[ \t]*):(\w+):([ \t]*)(.+)?\n/) do
- next $& if $3.empty? and $4 and $4[0, 1] == ':'
-
- prefix = $1
- directive = $2.downcase
- param = $4
-
- case directive
- when 'include' then
- filename = param.split[0]
- include_file filename, prefix
-
- else
- result = yield directive, param
- result = "#{prefix}:#{directive}: #{param}\n" unless result
- result
- end
- end
- end
-
- private
-
- ##
- # Include a file, indenting it correctly.
-
- def include_file(name, indent)
- if full_name = find_include_file(name) then
- content = File.read full_name
-
- # strip leading '#'s, but only if all lines start with them
- if content =~ /^[^#]/ then
- content.gsub(/^/, indent)
- else
- content.gsub(/^#?/, indent)
- end
- else
- $stderr.puts "Couldn't find file to include '#{name}' from #{@input_file_name}"
- ''
- end
- end
-
- ##
- # Look for the given file in the directory containing the current file,
- # and then in each of the directories specified in the RDOC_INCLUDE path
-
- def find_include_file(name)
- to_search = [ File.dirname(@input_file_name) ].concat @include_path
- to_search.each do |dir|
- full_name = File.join(dir, name)
- stat = File.stat(full_name) rescue next
- return full_name if stat.readable?
- end
- nil
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_flow.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_flow.rb
deleted file mode 100644
index 3556a4fa0..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_flow.rb
+++ /dev/null
@@ -1,211 +0,0 @@
-require 'rdoc/markup/formatter'
-require 'rdoc/markup/fragments'
-require 'rdoc/markup/inline'
-require 'cgi'
-
-class RDoc::Markup
-
- module Flow
-
- ##
- # Paragraph
-
- P = Struct.new(:body)
-
- ##
- # Verbatim
-
- VERB = Struct.new(:body)
-
- ##
- # Horizontal rule
-
- RULE = Struct.new(:width)
-
- ##
- # List
-
- class LIST
- attr_reader :type, :contents
- def initialize(type)
- @type = type
- @contents = []
- end
- def <<(stuff)
- @contents << stuff
- end
- end
-
- ##
- # List item
-
- LI = Struct.new(:label, :body)
-
- ##
- # Heading
-
- H = Struct.new(:level, :text)
-
- end
-
- class ToFlow < RDoc::Markup::Formatter
-
- LIST_TYPE_TO_HTML = {
- :BULLET => [ "<ul>", "</ul>" ],
- :NUMBER => [ "<ol>", "</ol>" ],
- :UPPERALPHA => [ "<ol>", "</ol>" ],
- :LOWERALPHA => [ "<ol>", "</ol>" ],
- :LABELED => [ "<dl>", "</dl>" ],
- :NOTE => [ "<table>", "</table>" ],
- }
-
- InlineTag = Struct.new(:bit, :on, :off)
-
- def initialize
- super
-
- init_tags
- end
-
- ##
- # Set up the standard mapping of attributes to HTML tags
-
- def init_tags
- @attr_tags = [
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:BOLD), "<b>", "</b>"),
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:TT), "<tt>", "</tt>"),
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:EM), "<em>", "</em>"),
- ]
- end
-
- ##
- # Add a new set of HTML tags for an attribute. We allow separate start and
- # end tags for flexibility
-
- def add_tag(name, start, stop)
- @attr_tags << InlineTag.new(RDoc::Markup::Attribute.bitmap_for(name), start, stop)
- end
-
- ##
- # Given an HTML tag, decorate it with class information and the like if
- # required. This is a no-op in the base class, but is overridden in HTML
- # output classes that implement style sheets
-
- def annotate(tag)
- tag
- end
-
- ##
- # :section: Visitor
-
- def start_accepting
- @res = []
- @list_stack = []
- end
-
- def end_accepting
- @res
- end
-
- def accept_paragraph(am, fragment)
- @res << Flow::P.new((convert_flow(am.flow(fragment.txt))))
- end
-
- def accept_verbatim(am, fragment)
- @res << Flow::VERB.new((convert_flow(am.flow(fragment.txt))))
- end
-
- def accept_rule(am, fragment)
- size = fragment.param
- size = 10 if size > 10
- @res << Flow::RULE.new(size)
- end
-
- def accept_list_start(am, fragment)
- @list_stack.push(@res)
- list = Flow::LIST.new(fragment.type)
- @res << list
- @res = list
- end
-
- def accept_list_end(am, fragment)
- @res = @list_stack.pop
- end
-
- def accept_list_item(am, fragment)
- @res << Flow::LI.new(fragment.param, convert_flow(am.flow(fragment.txt)))
- end
-
- def accept_blank_line(am, fragment)
- # @res << annotate("<p />") << "\n"
- end
-
- def accept_heading(am, fragment)
- @res << Flow::H.new(fragment.head_level, convert_flow(am.flow(fragment.txt)))
- end
-
- private
-
- def on_tags(res, item)
- attr_mask = item.turn_on
- return if attr_mask.zero?
-
- @attr_tags.each do |tag|
- if attr_mask & tag.bit != 0
- res << annotate(tag.on)
- end
- end
- end
-
- def off_tags(res, item)
- attr_mask = item.turn_off
- return if attr_mask.zero?
-
- @attr_tags.reverse_each do |tag|
- if attr_mask & tag.bit != 0
- res << annotate(tag.off)
- end
- end
- end
-
- def convert_flow(flow)
- res = ""
- flow.each do |item|
- case item
- when String
- res << convert_string(item)
- when AttrChanger
- off_tags(res, item)
- on_tags(res, item)
- when Special
- res << convert_special(item)
- else
- raise "Unknown flow element: #{item.inspect}"
- end
- end
- res
- end
-
- def convert_string(item)
- CGI.escapeHTML(item)
- end
-
- def convert_special(special)
- handled = false
- Attribute.each_name_of(special.type) do |name|
- method_name = "handle_special_#{name}"
- if self.respond_to? method_name
- special.text = send(method_name, special)
- handled = true
- end
- end
-
- raise "Unhandled special: #{special}" unless handled
-
- special.text
- end
-
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_html.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_html.rb
deleted file mode 100644
index 9e431502c..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_html.rb
+++ /dev/null
@@ -1,406 +0,0 @@
-require 'rdoc/markup/formatter'
-require 'rdoc/markup/fragments'
-require 'rdoc/markup/inline'
-
-require 'cgi'
-
-class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
-
- LIST_TYPE_TO_HTML = {
- :BULLET => %w[<ul> </ul>],
- :NUMBER => %w[<ol> </ol>],
- :UPPERALPHA => %w[<ol> </ol>],
- :LOWERALPHA => %w[<ol> </ol>],
- :LABELED => %w[<dl> </dl>],
- :NOTE => %w[<table> </table>],
- }
-
- InlineTag = Struct.new(:bit, :on, :off)
-
- def initialize
- super
-
- # @in_tt - tt nested levels count
- # @tt_bit - cache
- @in_tt = 0
- @tt_bit = RDoc::Markup::Attribute.bitmap_for :TT
-
- # external hyperlinks
- @markup.add_special(/((link:|https?:|mailto:|ftp:|www\.)\S+\w)/, :HYPERLINK)
-
- # and links of the form <text>[<url>]
- @markup.add_special(/(((\{.*?\})|\b\S+?)\[\S+?\.\S+?\])/, :TIDYLINK)
-
- init_tags
- end
-
- ##
- # Converts a target url to one that is relative to a given path
-
- def self.gen_relative_url(path, target)
- from = File.dirname path
- to, to_file = File.split target
-
- from = from.split "/"
- to = to.split "/"
-
- from.delete '.'
- to.delete '.'
-
- while from.size > 0 and to.size > 0 and from[0] == to[0] do
- from.shift
- to.shift
- end
-
- from.fill ".."
- from.concat to
- from << to_file
- File.join(*from)
- end
-
- ##
- # Generate a hyperlink for url, labeled with text. Handle the
- # special cases for img: and link: described under handle_special_HYPERLINK
-
- def gen_url(url, text)
- if url =~ /([A-Za-z]+):(.*)/ then
- type = $1
- path = $2
- else
- type = "http"
- path = url
- url = "http://#{url}"
- end
-
- if type == "link" then
- url = if path[0, 1] == '#' then # is this meaningful?
- path
- else
- self.class.gen_relative_url @from_path, path
- end
- end
-
- if (type == "http" or type == "link") and
- url =~ /\.(gif|png|jpg|jpeg|bmp)$/ then
- "<img src=\"#{url}\" />"
- else
- "<a href=\"#{url}\">#{text.sub(%r{^#{type}:/*}, '')}</a>"
- end
- end
-
- ##
- # And we're invoked with a potential external hyperlink mailto:
- # just gets inserted. http: links are checked to see if they
- # reference an image. If so, that image gets inserted using an
- # <img> tag. Otherwise a conventional <a href> is used. We also
- # support a special type of hyperlink, link:, which is a reference
- # to a local file whose path is relative to the --op directory.
-
- def handle_special_HYPERLINK(special)
- url = special.text
- gen_url url, url
- end
-
- ##
- # Here's a hypedlink where the label is different to the URL
- # <label>[url] or {long label}[url]
-
- def handle_special_TIDYLINK(special)
- text = special.text
-
- return text unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/
-
- label = $1
- url = $2
- gen_url url, label
- end
-
- ##
- # are we currently inside tt tags?
-
- def in_tt?
- @in_tt > 0
- end
-
- ##
- # is +tag+ a tt tag?
-
- def tt?(tag)
- tag.bit == @tt_bit
- end
-
- ##
- # Set up the standard mapping of attributes to HTML tags
-
- def init_tags
- @attr_tags = [
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:BOLD), "<b>", "</b>"),
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:TT), "<tt>", "</tt>"),
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:EM), "<em>", "</em>"),
- ]
- end
-
- ##
- # Add a new set of HTML tags for an attribute. We allow separate start and
- # end tags for flexibility.
-
- def add_tag(name, start, stop)
- @attr_tags << InlineTag.new(RDoc::Markup::Attribute.bitmap_for(name), start, stop)
- end
-
- ##
- # Given an HTML tag, decorate it with class information and the like if
- # required. This is a no-op in the base class, but is overridden in HTML
- # output classes that implement style sheets.
-
- def annotate(tag)
- tag
- end
-
- ##
- # This is a higher speed (if messier) version of wrap
-
- def wrap(txt, line_len = 76)
- res = ""
- sp = 0
- ep = txt.length
- while sp < ep
- # scan back for a space
- p = sp + line_len - 1
- if p >= ep
- p = ep
- else
- while p > sp and txt[p] != ?\s
- p -= 1
- end
- if p <= sp
- p = sp + line_len
- while p < ep and txt[p] != ?\s
- p += 1
- end
- end
- end
- res << txt[sp...p] << "\n"
- sp = p
- sp += 1 while sp < ep and txt[sp] == ?\s
- end
- res
- end
-
- ##
- # :section: Visitor
-
- def start_accepting
- @res = ""
- @in_list_entry = []
- end
-
- def end_accepting
- @res
- end
-
- def accept_paragraph(am, fragment)
- @res << annotate("<p>") + "\n"
- @res << wrap(convert_flow(am.flow(fragment.txt)))
- @res << annotate("</p>") + "\n"
- end
-
- def accept_verbatim(am, fragment)
- @res << annotate("<pre>") + "\n"
- @res << CGI.escapeHTML(fragment.txt)
- @res << annotate("</pre>") << "\n"
- end
-
- def accept_rule(am, fragment)
- size = fragment.param
- size = 10 if size > 10
- @res << "<hr size=\"#{size}\"></hr>"
- end
-
- def accept_list_start(am, fragment)
- @res << html_list_name(fragment.type, true) << "\n"
- @in_list_entry.push false
- end
-
- def accept_list_end(am, fragment)
- if tag = @in_list_entry.pop
- @res << annotate(tag) << "\n"
- end
- @res << html_list_name(fragment.type, false) << "\n"
- end
-
- def accept_list_item(am, fragment)
- if tag = @in_list_entry.last
- @res << annotate(tag) << "\n"
- end
-
- @res << list_item_start(am, fragment)
-
- @res << wrap(convert_flow(am.flow(fragment.txt))) << "\n"
-
- @in_list_entry[-1] = list_end_for(fragment.type)
- end
-
- def accept_blank_line(am, fragment)
- # @res << annotate("<p />") << "\n"
- end
-
- def accept_heading(am, fragment)
- @res << convert_heading(fragment.head_level, am.flow(fragment.txt))
- end
-
- private
-
- def on_tags(res, item)
- attr_mask = item.turn_on
- return if attr_mask.zero?
-
- @attr_tags.each do |tag|
- if attr_mask & tag.bit != 0
- res << annotate(tag.on)
- @in_tt += 1 if tt?(tag)
- end
- end
- end
-
- def off_tags(res, item)
- attr_mask = item.turn_off
- return if attr_mask.zero?
-
- @attr_tags.reverse_each do |tag|
- if attr_mask & tag.bit != 0
- @in_tt -= 1 if tt?(tag)
- res << annotate(tag.off)
- end
- end
- end
-
- def convert_flow(flow)
- res = ""
-
- flow.each do |item|
- case item
- when String
- res << convert_string(item)
- when RDoc::Markup::AttrChanger
- off_tags(res, item)
- on_tags(res, item)
- when RDoc::Markup::Special
- res << convert_special(item)
- else
- raise "Unknown flow element: #{item.inspect}"
- end
- end
-
- res
- end
-
- def convert_string(item)
- in_tt? ? convert_string_simple(item) : convert_string_fancy(item)
- end
-
- def convert_string_simple(item)
- CGI.escapeHTML item
- end
-
- ##
- # some of these patterns are taken from SmartyPants...
-
- def convert_string_fancy(item)
- # convert ampersand before doing anything else
- item.gsub(/&/, '&amp;').
-
- # convert -- to em-dash, (-- to en-dash)
- gsub(/---?/, '&#8212;'). #gsub(/--/, '&#8211;').
-
- # convert ... to elipsis (and make sure .... becomes .<elipsis>)
- gsub(/\.\.\.\./, '.&#8230;').gsub(/\.\.\./, '&#8230;').
-
- # convert single closing quote
- gsub(%r{([^ \t\r\n\[\{\(])\'}, '\1&#8217;'). # }
- gsub(%r{\'(?=\W|s\b)}, '&#8217;').
-
- # convert single opening quote
- gsub(/'/, '&#8216;').
-
- # convert double closing quote
- gsub(%r{([^ \t\r\n\[\{\(])\"(?=\W)}, '\1&#8221;'). # }
-
- # convert double opening quote
- gsub(/"/, '&#8220;').
-
- # convert copyright
- gsub(/\(c\)/, '&#169;').
-
- # convert registered trademark
- gsub(/\(r\)/, '&#174;')
- end
-
- def convert_special(special)
- handled = false
- RDoc::Markup::Attribute.each_name_of(special.type) do |name|
- method_name = "handle_special_#{name}"
- if self.respond_to? method_name
- special.text = send(method_name, special)
- handled = true
- end
- end
- raise "Unhandled special: #{special}" unless handled
- special.text
- end
-
- def convert_heading(level, flow)
- res =
- annotate("<h#{level}>") +
- convert_flow(flow) +
- annotate("</h#{level}>\n")
- end
-
- def html_list_name(list_type, is_open_tag)
- tags = LIST_TYPE_TO_HTML[list_type] || raise("Invalid list type: #{list_type.inspect}")
- annotate(tags[ is_open_tag ? 0 : 1])
- end
-
- def list_item_start(am, fragment)
- case fragment.type
- when :BULLET, :NUMBER then
- annotate("<li>")
-
- when :UPPERALPHA then
- annotate("<li type=\"A\">")
-
- when :LOWERALPHA then
- annotate("<li type=\"a\">")
-
- when :LABELED then
- annotate("<dt>") +
- convert_flow(am.flow(fragment.param)) +
- annotate("</dt>") +
- annotate("<dd>")
-
- when :NOTE then
- annotate("<tr>") +
- annotate("<td valign=\"top\">") +
- convert_flow(am.flow(fragment.param)) +
- annotate("</td>") +
- annotate("<td>")
- else
- raise "Invalid list type"
- end
- end
-
- def list_end_for(fragment_type)
- case fragment_type
- when :BULLET, :NUMBER, :UPPERALPHA, :LOWERALPHA then
- "</li>"
- when :LABELED then
- "</dd>"
- when :NOTE then
- "</td></tr>"
- else
- raise "Invalid list type"
- end
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_html_crossref.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_html_crossref.rb
deleted file mode 100644
index e6c6f6a77..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_html_crossref.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-require 'rdoc/markup/to_html'
-
-##
-# Subclass of the RDoc::Markup::ToHtml class that supports looking up words
-# from a context. Those that are found will be hyperlinked.
-
-class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
-
- ##
- # Regular expressions to match class and method references.
- #
- # 1) There can be a '\' in front of text to suppress any cross-references
- # 2) There can be a '::' in front of class names to reference from the
- # top-level namespace.
- # 3) The method can be followed by parenthesis which may
-
- CLASS_REGEXP_STR = '\\\\?((?:\:{2})?[A-Z]\w*(?:\:\:\w+)*)'
- METHOD_REGEXP_STR = '(\w+[!?=]?)(?:\([\.\w+\*\/\+\-\=\<\>]*\))?'
-
- ##
- # Regular expressions matching text that should potentially have
- # cross-reference links generated are passed to add_special. Note that
- # these expressions are meant to pick up text for which cross-references
- # have been suppressed, since the suppression characters are removed by the
- # code that is triggered.
-
- CROSSREF_REGEXP = /(
- # A::B::C.meth
- #{CLASS_REGEXP_STR}[\.\#]#{METHOD_REGEXP_STR}
-
- # Stand-alone method (proceeded by a #)
- | \\?\##{METHOD_REGEXP_STR}
-
- # A::B::C
- # The stuff after CLASS_REGEXP_STR is a
- # nasty hack. CLASS_REGEXP_STR unfortunately matches
- # words like dog and cat (these are legal "class"
- # names in Fortran 95). When a word is flagged as a
- # potential cross-reference, limitations in the markup
- # engine suppress other processing, such as typesetting.
- # This is particularly noticeable for contractions.
- # In order that words like "can't" not
- # be flagged as potential cross-references, only
- # flag potential class cross-references if the character
- # after the cross-referece is a space or sentence
- # punctuation.
- | #{CLASS_REGEXP_STR}(?=[\s\)\.\?\!\,\;]|\z)
-
- # Things that look like filenames
- # The key thing is that there must be at least
- # one special character (period, slash, or
- # underscore).
- | [\/\w]+[_\/\.][\w\/\.]+
-
- # Things that have markup suppressed
- | \\[^\s]
- )/x
-
- ##
- # RDoc::CodeObject for generating references
-
- attr_accessor :context
-
- ##
- # Creates a new crossref resolver that generates links relative to +context+
- # which lives at +from_path+ in the generated files. '#' characters on
- # references are removed unless +show_hash+ is true.
-
- def initialize(from_path, context, show_hash)
- raise ArgumentError, 'from_path cannot be nil' if from_path.nil?
- super()
-
- @markup.add_special(CROSSREF_REGEXP, :CROSSREF)
-
- @from_path = from_path
- @context = context
- @show_hash = show_hash
-
- @seen = {}
- end
-
- ##
- # We're invoked when any text matches the CROSSREF pattern (defined in
- # MarkUp). If we find the corresponding reference, generate a hyperlink.
- # If the name we're looking for contains no punctuation, we look for it up
- # the module/class chain. For example, HyperlinkHtml is found, even without
- # the Generator:: prefix, because we look for it in module Generator first.
-
- def handle_special_CROSSREF(special)
- name = special.text
-
- # This ensures that words entirely consisting of lowercase letters will
- # not have cross-references generated (to suppress lots of erroneous
- # cross-references to "new" in text, for instance)
- return name if name =~ /\A[a-z]*\z/
-
- return @seen[name] if @seen.include? name
-
- if name[0, 1] == '#' then
- lookup = name[1..-1]
- name = lookup unless @show_hash
- else
- lookup = name
- end
-
- # Find class, module, or method in class or module.
- #
- # Do not, however, use an if/elsif/else chain to do so. Instead, test
- # each possible pattern until one matches. The reason for this is that a
- # string like "YAML.txt" could be the txt() class method of class YAML (in
- # which case it would match the first pattern, which splits the string
- # into container and method components and looks up both) or a filename
- # (in which case it would match the last pattern, which just checks
- # whether the string as a whole is a known symbol).
-
- if /#{CLASS_REGEXP_STR}[\.\#]#{METHOD_REGEXP_STR}/ =~ lookup then
- container = $1
- method = $2
- ref = @context.find_symbol container, method
- end
-
- ref = @context.find_symbol lookup unless ref
-
- out = if lookup == '\\' then
- lookup
- elsif lookup =~ /^\\/ then
- $'
- elsif ref and ref.document_self then
- "<a href=\"#{ref.as_href(@from_path)}\">#{name}</a>"
- else
- name
- end
-
- @seen[name] = out
-
- out
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_latex.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_latex.rb
deleted file mode 100644
index aac5c495e..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_latex.rb
+++ /dev/null
@@ -1,328 +0,0 @@
-require 'rdoc/markup/formatter'
-require 'rdoc/markup/fragments'
-require 'rdoc/markup/inline'
-
-require 'cgi'
-
-##
-# Convert SimpleMarkup to basic LaTeX report format.
-
-class RDoc::Markup::ToLaTeX < RDoc::Markup::Formatter
-
- BS = "\020" # \
- OB = "\021" # {
- CB = "\022" # }
- DL = "\023" # Dollar
-
- BACKSLASH = "#{BS}symbol#{OB}92#{CB}"
- HAT = "#{BS}symbol#{OB}94#{CB}"
- BACKQUOTE = "#{BS}symbol#{OB}0#{CB}"
- TILDE = "#{DL}#{BS}sim#{DL}"
- LESSTHAN = "#{DL}<#{DL}"
- GREATERTHAN = "#{DL}>#{DL}"
-
- def self.l(str)
- str.tr('\\', BS).tr('{', OB).tr('}', CB).tr('$', DL)
- end
-
- def l(arg)
- RDoc::Markup::ToLaTeX.l(arg)
- end
-
- LIST_TYPE_TO_LATEX = {
- :BULLET => [ l("\\begin{itemize}"), l("\\end{itemize}") ],
- :NUMBER => [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\arabic" ],
- :UPPERALPHA => [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\Alph" ],
- :LOWERALPHA => [ l("\\begin{enumerate}"), l("\\end{enumerate}"), "\\alph" ],
- :LABELED => [ l("\\begin{description}"), l("\\end{description}") ],
- :NOTE => [
- l("\\begin{tabularx}{\\linewidth}{@{} l X @{}}"),
- l("\\end{tabularx}") ],
- }
-
- InlineTag = Struct.new(:bit, :on, :off)
-
- def initialize
- init_tags
- @list_depth = 0
- @prev_list_types = []
- end
-
- ##
- # Set up the standard mapping of attributes to LaTeX
-
- def init_tags
- @attr_tags = [
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:BOLD), l("\\textbf{"), l("}")),
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:TT), l("\\texttt{"), l("}")),
- InlineTag.new(RDoc::Markup::Attribute.bitmap_for(:EM), l("\\emph{"), l("}")),
- ]
- end
-
- ##
- # Escape a LaTeX string
-
- def escape(str)
- $stderr.print "FE: ", str if $DEBUG_RDOC
- s = str.
- sub(/\s+$/, '').
- gsub(/([_\${}&%#])/, "#{BS}\\1").
- gsub(/\\/, BACKSLASH).
- gsub(/\^/, HAT).
- gsub(/~/, TILDE).
- gsub(/</, LESSTHAN).
- gsub(/>/, GREATERTHAN).
- gsub(/,,/, ",{},").
- gsub(/\`/, BACKQUOTE)
- $stderr.print "-> ", s, "\n" if $DEBUG_RDOC
- s
- end
-
- ##
- # Add a new set of LaTeX tags for an attribute. We allow
- # separate start and end tags for flexibility
-
- def add_tag(name, start, stop)
- @attr_tags << InlineTag.new(RDoc::Markup::Attribute.bitmap_for(name), start, stop)
- end
-
- ##
- # This is a higher speed (if messier) version of wrap
-
- def wrap(txt, line_len = 76)
- res = ""
- sp = 0
- ep = txt.length
- while sp < ep
- # scan back for a space
- p = sp + line_len - 1
- if p >= ep
- p = ep
- else
- while p > sp and txt[p] != ?\s
- p -= 1
- end
- if p <= sp
- p = sp + line_len
- while p < ep and txt[p] != ?\s
- p += 1
- end
- end
- end
- res << txt[sp...p] << "\n"
- sp = p
- sp += 1 while sp < ep and txt[sp] == ?\s
- end
- res
- end
-
- ##
- # :section: Visitor
-
- def start_accepting
- @res = ""
- @in_list_entry = []
- end
-
- def end_accepting
- @res.tr(BS, '\\').tr(OB, '{').tr(CB, '}').tr(DL, '$')
- end
-
- def accept_paragraph(am, fragment)
- @res << wrap(convert_flow(am.flow(fragment.txt)))
- @res << "\n"
- end
-
- def accept_verbatim(am, fragment)
- @res << "\n\\begin{code}\n"
- @res << fragment.txt.sub(/[\n\s]+\Z/, '')
- @res << "\n\\end{code}\n\n"
- end
-
- def accept_rule(am, fragment)
- size = fragment.param
- size = 10 if size > 10
- @res << "\n\n\\rule{\\linewidth}{#{size}pt}\n\n"
- end
-
- def accept_list_start(am, fragment)
- @res << list_name(fragment.type, true) << "\n"
- @in_list_entry.push false
- end
-
- def accept_list_end(am, fragment)
- if tag = @in_list_entry.pop
- @res << tag << "\n"
- end
- @res << list_name(fragment.type, false) << "\n"
- end
-
- def accept_list_item(am, fragment)
- if tag = @in_list_entry.last
- @res << tag << "\n"
- end
- @res << list_item_start(am, fragment)
- @res << wrap(convert_flow(am.flow(fragment.txt))) << "\n"
- @in_list_entry[-1] = list_end_for(fragment.type)
- end
-
- def accept_blank_line(am, fragment)
- # @res << "\n"
- end
-
- def accept_heading(am, fragment)
- @res << convert_heading(fragment.head_level, am.flow(fragment.txt))
- end
-
- private
-
- def on_tags(res, item)
- attr_mask = item.turn_on
- return if attr_mask.zero?
-
- @attr_tags.each do |tag|
- if attr_mask & tag.bit != 0
- res << tag.on
- end
- end
- end
-
- def off_tags(res, item)
- attr_mask = item.turn_off
- return if attr_mask.zero?
-
- @attr_tags.reverse_each do |tag|
- if attr_mask & tag.bit != 0
- res << tag.off
- end
- end
- end
-
- def convert_flow(flow)
- res = ""
- flow.each do |item|
- case item
- when String
- $stderr.puts "Converting '#{item}'" if $DEBUG_RDOC
- res << convert_string(item)
- when AttrChanger
- off_tags(res, item)
- on_tags(res, item)
- when Special
- res << convert_special(item)
- else
- raise "Unknown flow element: #{item.inspect}"
- end
- end
- res
- end
-
- ##
- # some of these patterns are taken from SmartyPants...
-
- def convert_string(item)
- escape(item).
-
- # convert ... to elipsis (and make sure .... becomes .<elipsis>)
- gsub(/\.\.\.\./, '.\ldots{}').gsub(/\.\.\./, '\ldots{}').
-
- # convert single closing quote
- gsub(%r{([^ \t\r\n\[\{\(])\'}, '\1\'').
- gsub(%r{\'(?=\W|s\b)}, "'" ).
-
- # convert single opening quote
- gsub(/'/, '`').
-
- # convert double closing quote
- gsub(%r{([^ \t\r\n\[\{\(])\"(?=\W)}, "\\1''").
-
- # convert double opening quote
- gsub(/"/, "``").
-
- # convert copyright
- gsub(/\(c\)/, '\copyright{}')
-
- end
-
- def convert_special(special)
- handled = false
- Attribute.each_name_of(special.type) do |name|
- method_name = "handle_special_#{name}"
- if self.respond_to? method_name
- special.text = send(method_name, special)
- handled = true
- end
- end
- raise "Unhandled special: #{special}" unless handled
- special.text
- end
-
- def convert_heading(level, flow)
- res =
- case level
- when 1 then "\\chapter{"
- when 2 then "\\section{"
- when 3 then "\\subsection{"
- when 4 then "\\subsubsection{"
- else "\\paragraph{"
- end +
- convert_flow(flow) +
- "}\n"
- end
-
- def list_name(list_type, is_open_tag)
- tags = LIST_TYPE_TO_LATEX[list_type] || raise("Invalid list type: #{list_type.inspect}")
- if tags[2] # enumerate
- if is_open_tag
- @list_depth += 1
- if @prev_list_types[@list_depth] != tags[2]
- case @list_depth
- when 1
- roman = "i"
- when 2
- roman = "ii"
- when 3
- roman = "iii"
- when 4
- roman = "iv"
- else
- raise("Too deep list: level #{@list_depth}")
- end
- @prev_list_types[@list_depth] = tags[2]
- return l("\\renewcommand{\\labelenum#{roman}}{#{tags[2]}{enum#{roman}}}") + "\n" + tags[0]
- end
- else
- @list_depth -= 1
- end
- end
- tags[ is_open_tag ? 0 : 1]
- end
-
- def list_item_start(am, fragment)
- case fragment.type
- when :BULLET, :NUMBER, :UPPERALPHA, :LOWERALPHA then
- "\\item "
-
- when :LABELED then
- "\\item[" + convert_flow(am.flow(fragment.param)) + "] "
-
- when :NOTE then
- convert_flow(am.flow(fragment.param)) + " & "
- else
- raise "Invalid list type"
- end
- end
-
- def list_end_for(fragment_type)
- case fragment_type
- when :BULLET, :NUMBER, :UPPERALPHA, :LOWERALPHA, :LABELED then
- ""
- when :NOTE
- "\\\\\n"
- else
- raise "Invalid list type"
- end
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_test.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_test.rb
deleted file mode 100644
index b55a0ccef..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_test.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'rdoc/markup'
-require 'rdoc/markup/formatter'
-
-##
-# This Markup outputter is used for testing purposes.
-
-class RDoc::Markup::ToTest < RDoc::Markup::Formatter
-
- ##
- # :section: Visitor
-
- def start_accepting
- @res = []
- end
-
- def end_accepting
- @res
- end
-
- def accept_paragraph(am, fragment)
- @res << fragment.to_s
- end
-
- def accept_verbatim(am, fragment)
- @res << fragment.to_s
- end
-
- def accept_list_start(am, fragment)
- @res << fragment.to_s
- end
-
- def accept_list_end(am, fragment)
- @res << fragment.to_s
- end
-
- def accept_list_item(am, fragment)
- @res << fragment.to_s
- end
-
- def accept_blank_line(am, fragment)
- @res << fragment.to_s
- end
-
- def accept_heading(am, fragment)
- @res << fragment.to_s
- end
-
- def accept_rule(am, fragment)
- @res << fragment.to_s
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_texinfo.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_texinfo.rb
deleted file mode 100644
index 2b75e00b2..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/markup/to_texinfo.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-require 'rdoc/markup/formatter'
-require 'rdoc/markup/fragments'
-require 'rdoc/markup/inline'
-
-require 'rdoc/markup'
-require 'rdoc/markup/formatter'
-
-##
-# Convert SimpleMarkup to basic TexInfo format
-#
-# TODO: WTF is AttributeManager for?
-
-class RDoc::Markup::ToTexInfo < RDoc::Markup::Formatter
-
- def format(text)
- text.txt.
- gsub(/@/, "@@").
- gsub(/\{/, "@{").
- gsub(/\}/, "@}").
- # gsub(/,/, "@,"). # technically only required in cross-refs
- gsub(/\+([\w]+)\+/, "@code{\\1}").
- gsub(/\<tt\>([^<]+)\<\/tt\>/, "@code{\\1}").
- gsub(/\*([\w]+)\*/, "@strong{\\1}").
- gsub(/\<b\>([^<]+)\<\/b\>/, "@strong{\\1}").
- gsub(/_([\w]+)_/, "@emph{\\1}").
- gsub(/\<em\>([^<]+)\<\/em\>/, "@emph{\\1}")
- end
-
- # :section: Visitor
-
- def start_accepting
- @text = []
- end
-
- def end_accepting
- @text.join("\n")
- end
-
- def accept_paragraph(attributes, text)
- @text << format(text)
- end
-
- def accept_verbatim(attributes, text)
- @text << "@verb{|#{format(text)}|}"
- end
-
- def accept_heading(attributes, text)
- heading = ['@majorheading', '@chapheading'][text.head_level - 1] || '@heading'
- @text << "#{heading} #{format(text)}"
- end
-
- def accept_list_start(attributes, text)
- @text << '@itemize @bullet'
- end
-
- def accept_list_end(attributes, text)
- @text << '@end itemize'
- end
-
- def accept_list_item(attributes, text)
- @text << "@item\n#{format(text)}"
- end
-
- def accept_blank_line(attributes, text)
- @text << "\n"
- end
-
- def accept_rule(attributes, text)
- @text << '-----'
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/meta_method.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/meta_method.rb
deleted file mode 100644
index e0c065c2b..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/meta_method.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rdoc/any_method'
-
-##
-# MetaMethod represents a meta-programmed method
-
-class RDoc::MetaMethod < RDoc::AnyMethod
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/normal_class.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/normal_class.rb
deleted file mode 100644
index 9a5c5e33a..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/normal_class.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'rdoc/class_module'
-
-##
-# A normal class, neither singleton nor anonymous
-
-class RDoc::NormalClass < RDoc::ClassModule
-
- def inspect # :nodoc:
- superclass = @superclass ? " < #{@superclass}" : nil
- "<%s:0x%x class %s%s includes: %p attributes: %p methods: %p aliases: %p>" % [
- self.class, object_id,
- full_name, superclass, @includes, @attributes, @method_list, @aliases
- ]
- end
-
-end
-
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/normal_module.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/normal_module.rb
deleted file mode 100644
index 6f561c7b6..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/normal_module.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-require 'rdoc/class_module'
-
-##
-# A normal module, like NormalClass
-
-class RDoc::NormalModule < RDoc::ClassModule
-
- ##
- # Appends +comment+ to the current comment, but separated by a rule
-
- def comment=(comment)
- return if comment.empty?
- comment = @comment << "\n# ---\n" << comment unless @comment.empty?
-
- super
- end
-
- def inspect # :nodoc:
- "#<%s:0x%x module %s includes: %p attributes: %p methods: %p aliases: %p>" % [
- self.class, object_id,
- full_name, @includes, @attributes, @method_list, @aliases
- ]
- end
-
- ##
- # This is a module, returns true
-
- def module?
- true
- end
-
-end
-
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/options.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/options.rb
deleted file mode 100644
index 40f1bfccd..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/options.rb
+++ /dev/null
@@ -1,542 +0,0 @@
-require 'optparse'
-
-require 'rdoc/ri/paths'
-
-##
-# RDoc::Options handles the parsing and storage of options
-
-class RDoc::Options
-
- ##
- # Character-set
-
- attr_reader :charset
-
- ##
- # Should diagrams be drawn?
-
- attr_accessor :diagram
-
- ##
- # Files matching this pattern will be excluded
-
- attr_accessor :exclude
-
- ##
- # Should we draw fileboxes in diagrams?
-
- attr_reader :fileboxes
-
- ##
- # The list of files to be processed
-
- attr_accessor :files
-
- ##
- # Scan newer sources than the flag file if true.
-
- attr_reader :force_update
-
- ##
- # Description of the output generator (set with the <tt>-fmt</tt> option)
-
- attr_accessor :generator
-
- ##
- # Formatter to mark up text with
-
- attr_accessor :formatter
-
- ##
- # Image format for diagrams
-
- attr_reader :image_format
-
- ##
- # Include line numbers in the source listings?
-
- attr_reader :include_line_numbers
-
- ##
- # Name of the file, class or module to display in the initial index page (if
- # not specified the first file we encounter is used)
-
- attr_accessor :main_page
-
- ##
- # Merge into classes of the same name when generating ri
-
- attr_reader :merge
-
- ##
- # The name of the output directory
-
- attr_accessor :op_dir
-
- ##
- # Is RDoc in pipe mode?
-
- attr_accessor :pipe
-
- ##
- # Array of directories to search for files to satisfy an :include:
-
- attr_reader :rdoc_include
-
- ##
- # Include private and protected methods in the output?
-
- attr_accessor :show_all
-
- ##
- # Include the '#' at the front of hyperlinked instance method names
-
- attr_reader :show_hash
-
- ##
- # The number of columns in a tab
-
- attr_reader :tab_width
-
- ##
- # Template to be used when generating output
-
- attr_reader :template
-
- ##
- # Number of threads to parse with
-
- attr_accessor :threads
-
- ##
- # Documentation title
-
- attr_reader :title
-
- ##
- # Verbosity, zero means quiet
-
- attr_accessor :verbosity
-
- ##
- # URL of web cvs frontend
-
- attr_reader :webcvs
-
- def initialize # :nodoc:
- require 'rdoc/rdoc'
- @op_dir = 'doc'
- @show_all = false
- @main_page = nil
- @merge = false
- @exclude = []
- @generators = RDoc::RDoc::GENERATORS
- @generator = RDoc::Generator::Darkfish
- @generator_name = nil
- @rdoc_include = []
- @title = nil
- @template = nil
- @threads = if RUBY_PLATFORM == 'java' then
- Java::java::lang::Runtime.getRuntime.availableProcessors * 2
- else
- 2
- end
- @diagram = false
- @fileboxes = false
- @show_hash = false
- @image_format = 'png'
- @tab_width = 8
- @include_line_numbers = false
- @force_update = true
- @verbosity = 1
- @pipe = false
-
- @webcvs = nil
-
- @charset = 'utf-8'
- end
-
- ##
- # Parse command line options.
-
- def parse(argv)
- opts = OptionParser.new do |opt|
- opt.program_name = File.basename $0
- opt.version = RDoc::VERSION
- opt.release = nil
- opt.summary_indent = ' ' * 4
- opt.banner = <<-EOF
-Usage: #{opt.program_name} [options] [names...]
-
- Files are parsed, and the information they contain collected, before any
- output is produced. This allows cross references between all files to be
- resolved. If a name is a directory, it is traversed. If no names are
- specified, all Ruby files in the current directory (and subdirectories) are
- processed.
-
- How RDoc generates output depends on the output formatter being used, and on
- the options you give.
-
- - Darkfish creates frameless HTML output by Michael Granger.
-
- - ri creates ri data files
- EOF
-
- opt.separator nil
- opt.separator "Parsing Options:"
- opt.separator nil
-
- opt.on("--all", "-a",
- "Include all methods (not just public) in",
- "the output.") do |value|
- @show_all = value
- end
-
- opt.separator nil
-
- opt.on("--exclude=PATTERN", "-x", Regexp,
- "Do not process files or directories",
- "matching PATTERN.") do |value|
- @exclude << value
- end
-
- opt.separator nil
-
- opt.on("--extension=NEW=OLD", "-E",
- "Treat files ending with .new as if they",
- "ended with .old. Using '-E cgi=rb' will",
- "cause xxx.cgi to be parsed as a Ruby file.") do |value|
- new, old = value.split(/=/, 2)
-
- unless new and old then
- raise OptionParser::InvalidArgument, "Invalid parameter to '-E'"
- end
-
- unless RDoc::ParserFactory.alias_extension old, new then
- raise OptionParser::InvalidArgument, "Unknown extension .#{old} to -E"
- end
- end
-
- opt.separator nil
-
- opt.on("--force-update", "-U",
- "Forces rdoc to scan all sources even if",
- "newer than the flag file.") do |value|
- @force_update = value
- end
-
- opt.separator nil
-
- opt.on("--pipe",
- "Convert RDoc on stdin to HTML") do
- @pipe = true
- end
-
- opt.separator nil
-
- opt.on("--threads=THREADS", Integer,
- "Number of threads to parse with.") do |threads|
- @threads = threads
- end
-
- opt.separator nil
- opt.separator "Generator Options:"
- opt.separator nil
-
- opt.on("--charset=CHARSET", "-c",
- "Specifies the output HTML character-set.") do |value|
- @charset = value
- end
-
- opt.separator nil
-
- generator_text = @generators.keys.map { |name| " #{name}" }.sort
-
- opt.on("--fmt=FORMAT", "--format=FORMAT", "-f", @generators.keys,
- "Set the output formatter. One of:", *generator_text) do |value|
- @generator_name = value.downcase
- setup_generator
- end
-
- opt.separator nil
-
- opt.on("--include=DIRECTORIES", "-i", Array,
- "Set (or add to) the list of directories to",
- "be searched when satisfying :include:",
- "requests. Can be used more than once.") do |value|
- @rdoc_include.concat value.map { |dir| dir.strip }
- end
-
- opt.separator nil
-
- opt.on("--line-numbers", "-N",
- "Include line numbers in the source code.") do |value|
- @include_line_numbers = value
- end
-
- opt.separator nil
-
- opt.on("--main=NAME", "-m",
- "NAME will be the initial page displayed.") do |value|
- @main_page = value
- end
-
- opt.separator nil
-
- opt.on("--output=DIR", "--op", "-o",
- "Set the output directory.") do |value|
- @op_dir = value
- end
-
- opt.separator nil
-
- opt.on("--show-hash", "-H",
- "A name of the form #name in a comment is a",
- "possible hyperlink to an instance method",
- "name. When displayed, the '#' is removed",
- "unless this option is specified.") do |value|
- @show_hash = value
- end
-
- opt.separator nil
-
- opt.on("--tab-width=WIDTH", "-w", OptionParser::DecimalInteger,
- "Set the width of tab characters.") do |value|
- @tab_width = value
- end
-
- opt.separator nil
-
- opt.on("--template=NAME", "-T",
- "Set the template used when generating",
- "output.") do |value|
- @template = value
- end
-
- opt.separator nil
-
- opt.on("--title=TITLE", "-t",
- "Set TITLE as the title for HTML output.") do |value|
- @title = value
- end
-
- opt.separator nil
-
- opt.on("--webcvs=URL", "-W",
- "Specify a URL for linking to a web frontend",
- "to CVS. If the URL contains a '\%s', the",
- "name of the current file will be",
- "substituted; if the URL doesn't contain a",
- "'\%s', the filename will be appended to it.") do |value|
- @webcvs = value
- end
-
- opt.separator nil
- opt.separator "Diagram Options:"
- opt.separator nil
-
- image_formats = %w[gif png jpg jpeg]
- opt.on("--image-format=FORMAT", "-I", image_formats,
- "Sets output image format for diagrams. Can",
- "be #{image_formats.join ', '}. If this option",
- "is omitted, png is used. Requires",
- "diagrams.") do |value|
- @image_format = value
- end
-
- opt.separator nil
-
- opt.on("--diagram", "-d",
- "Generate diagrams showing modules and",
- "classes. You need dot V1.8.6 or later to",
- "use the --diagram option correctly. Dot is",
- "available from http://graphviz.org") do |value|
- check_diagram
- @diagram = true
- end
-
- opt.separator nil
-
- opt.on("--fileboxes", "-F",
- "Classes are put in boxes which represents",
- "files, where these classes reside. Classes",
- "shared between more than one file are",
- "shown with list of files that are sharing",
- "them. Silently discarded if --diagram is",
- "not given.") do |value|
- @fileboxes = value
- end
-
- opt.separator nil
- opt.separator "ri Generator Options:"
- opt.separator nil
-
- opt.on("--ri", "-r",
- "Generate output for use by `ri`. The files",
- "are stored in the '.rdoc' directory under",
- "your home directory unless overridden by a",
- "subsequent --op parameter, so no special",
- "privileges are needed.") do |value|
- @generator_name = "ri"
- @op_dir = RDoc::RI::Paths::HOMEDIR
- setup_generator
- end
-
- opt.separator nil
-
- opt.on("--ri-site", "-R",
- "Generate output for use by `ri`. The files",
- "are stored in a site-wide directory,",
- "making them accessible to others, so",
- "special privileges are needed.") do |value|
- @generator_name = "ri"
- @op_dir = RDoc::RI::Paths::SITEDIR
- setup_generator
- end
-
- opt.separator nil
-
- opt.on("--merge", "-M",
- "When creating ri output, merge previously",
- "processed classes into previously",
- "documented classes of the same name.") do |value|
- @merge = value
- end
-
- opt.separator nil
- opt.separator "Generic Options:"
- opt.separator nil
-
- opt.on("--debug", "-D",
- "Displays lots on internal stuff.") do |value|
- $DEBUG_RDOC = value
- end
-
- opt.on("--quiet", "-q",
- "Don't show progress as we parse.") do |value|
- @verbosity = 0
- end
-
- opt.on("--verbose", "-v",
- "Display extra progress as we parse.") do |value|
- @verbosity = 2
- end
-
- opt.separator nil
- opt.separator 'Deprecated options - these warn when set'
- opt.separator nil
-
- opt.on("--inline-source", "-S") do |value|
- warn "--inline-source will be removed from RDoc on or after August 2009"
- end
-
- opt.on("--promiscuous", "-p") do |value|
- warn "--promiscuous will be removed from RDoc on or after August 2009"
- end
-
- opt.separator nil
- end
-
- argv.insert(0, *ENV['RDOCOPT'].split) if ENV['RDOCOPT']
-
- opts.parse! argv
-
- @files = argv.dup
-
- @rdoc_include << "." if @rdoc_include.empty?
-
- if @exclude.empty? then
- @exclude = nil
- else
- @exclude = Regexp.new(@exclude.join("|"))
- end
-
- check_files
-
- # If no template was specified, use the default template for the output
- # formatter
-
- @template ||= @generator_name
-
- rescue OptionParser::InvalidArgument, OptionParser::InvalidOption => e
- puts opts
- puts
- puts e
- exit 1
- end
-
- ##
- # Set the title, but only if not already set. This means that a title set
- # from the command line trumps one set in a source file
-
- def title=(string)
- @title ||= string
- end
-
- ##
- # Don't display progress as we process the files
-
- def quiet
- @verbosity.zero?
- end
-
- def quiet=(bool)
- @verbosity = bool ? 0 : 1
- end
-
- private
-
- ##
- # Set up an output generator for the format in @generator_name
-
- def setup_generator
- @generator = @generators[@generator_name]
-
- unless @generator then
- raise OptionParser::InvalidArgument, "Invalid output formatter"
- end
- end
-
- # Check that the right version of 'dot' is available. Unfortunately this
- # doesn't work correctly under Windows NT, so we'll bypass the test under
- # Windows.
-
- def check_diagram
- return if RUBY_PLATFORM =~ /mswin|cygwin|mingw|bccwin/
-
- ok = false
- ver = nil
-
- IO.popen "dot -V 2>&1" do |io|
- ver = io.read
- if ver =~ /dot.+version(?:\s+gviz)?\s+(\d+)\.(\d+)/ then
- ok = ($1.to_i > 1) || ($1.to_i == 1 && $2.to_i >= 8)
- end
- end
-
- unless ok then
- if ver =~ /^dot.+version/ then
- $stderr.puts "Warning: You may need dot V1.8.6 or later to use\n",
- "the --diagram option correctly. You have:\n\n ",
- ver,
- "\nDiagrams might have strange background colors.\n\n"
- else
- $stderr.puts "You need the 'dot' program to produce diagrams.",
- "(see http://www.research.att.com/sw/tools/graphviz/)\n\n"
- exit
- end
- end
- end
-
- ##
- # Check that the files on the command line exist
-
- def check_files
- @files.each do |f|
- stat = File.stat f rescue next
- raise RDoc::Error, "file '#{f}' not readable" unless stat.readable?
- end
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/parser.rb
deleted file mode 100644
index df3becd0a..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser.rb
+++ /dev/null
@@ -1,138 +0,0 @@
-require 'rdoc'
-require 'rdoc/code_objects'
-require 'rdoc/markup/preprocess'
-require 'rdoc/stats'
-
-##
-# A parser is simple a class that implements
-#
-# #initialize(file_name, body, options)
-#
-# and
-#
-# #scan
-#
-# The initialize method takes a file name to be used, the body of the file,
-# and an RDoc::Options object. The scan method is then called to return an
-# appropriately parsed TopLevel code object.
-#
-# The ParseFactory is used to redirect to the correct parser given a
-# filename extension. This magic works because individual parsers have to
-# register themselves with us as they are loaded in. The do this using the
-# following incantation
-#
-# require "rdoc/parser"
-#
-# class RDoc::Parser::Xyz < RDoc::Parser
-# parse_files_matching /\.xyz$/ # <<<<
-#
-# def initialize(file_name, body, options)
-# ...
-# end
-#
-# def scan
-# ...
-# end
-# end
-#
-# Just to make life interesting, if we suspect a plain text file, we also
-# look for a shebang line just in case it's a potential shell script
-
-class RDoc::Parser
-
- @parsers = []
-
- class << self
- attr_reader :parsers
- end
-
- ##
- # Alias an extension to another extension. After this call, files ending
- # "new_ext" will be parsed using the same parser as "old_ext"
-
- def self.alias_extension(old_ext, new_ext)
- old_ext = old_ext.sub(/^\.(.*)/, '\1')
- new_ext = new_ext.sub(/^\.(.*)/, '\1')
-
- parser = can_parse "xxx.#{old_ext}"
- return false unless parser
-
- RDoc::Parser.parsers.unshift [/\.#{new_ext}$/, parser]
-
- true
- end
-
- ##
- # Shamelessly stolen from the ptools gem (since RDoc cannot depend on
- # the gem).
-
- def self.binary?(file)
- s = (File.read(file, File.stat(file).blksize) || "").split(//)
-
- if s.size > 0 then
- ((s.size - s.grep(" ".."~").size) / s.size.to_f) > 0.30
- else
- false
- end
- end
- private_class_method :binary?
-
- ##
- # Return a parser that can handle a particular extension
-
- def self.can_parse(file_name)
- parser = RDoc::Parser.parsers.find { |regexp,| regexp =~ file_name }.last
-
- #
- # The default parser should *NOT* parse binary files.
- #
- if parser == RDoc::Parser::Simple && file_name !~ /\.(txt|rdoc)$/ then
- if binary? file_name then
- return nil
- end
- end
-
- return parser
- end
-
- ##
- # Find the correct parser for a particular file name. Return a SimpleParser
- # for ones that we don't know
-
- def self.for(top_level, file_name, body, options, stats)
- # If no extension, look for shebang
- if file_name !~ /\.\w+$/ && body =~ %r{\A#!(.+)} then
- shebang = $1
- case shebang
- when %r{env\s+ruby}, %r{/ruby}
- file_name = "dummy.rb"
- end
- end
-
- parser = can_parse file_name
-
- # This method must return a parser.
- parser ||= RDoc::Parser::Simple
-
- parser.new top_level, file_name, body, options, stats
- end
-
- ##
- # Record which file types this parser can understand.
-
- def self.parse_files_matching(regexp)
- RDoc::Parser.parsers.unshift [regexp, self]
- end
-
- def initialize(top_level, file_name, content, options, stats)
- @top_level = top_level
- @file_name = file_name
- @content = content
- @options = options
- @stats = stats
- end
-
-end
-
-require 'rdoc/parser/simple'
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/c.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/c.rb
deleted file mode 100644
index 5a11889b3..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/c.rb
+++ /dev/null
@@ -1,678 +0,0 @@
-require 'rdoc/parser'
-require 'rdoc/parser/ruby'
-require 'rdoc/known_classes'
-
-##
-# We attempt to parse C extension files. Basically we look for
-# the standard patterns that you find in extensions: <tt>rb_define_class,
-# rb_define_method</tt> and so on. We also try to find the corresponding
-# C source for the methods and extract comments, but if we fail
-# we don't worry too much.
-#
-# The comments associated with a Ruby method are extracted from the C
-# comment block associated with the routine that _implements_ that
-# method, that is to say the method whose name is given in the
-# <tt>rb_define_method</tt> call. For example, you might write:
-#
-# /*
-# * Returns a new array that is a one-dimensional flattening of this
-# * array (recursively). That is, for every element that is an array,
-# * extract its elements into the new array.
-# *
-# * s = [ 1, 2, 3 ] #=> [1, 2, 3]
-# * t = [ 4, 5, 6, [7, 8] ] #=> [4, 5, 6, [7, 8]]
-# * a = [ s, t, 9, 10 ] #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
-# * a.flatten #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-# */
-# static VALUE
-# rb_ary_flatten(ary)
-# VALUE ary;
-# {
-# ary = rb_obj_dup(ary);
-# rb_ary_flatten_bang(ary);
-# return ary;
-# }
-#
-# ...
-#
-# void
-# Init_Array()
-# {
-# ...
-# rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
-#
-# Here RDoc will determine from the rb_define_method line that there's a
-# method called "flatten" in class Array, and will look for the implementation
-# in the method rb_ary_flatten. It will then use the comment from that
-# method in the HTML output. This method must be in the same source file
-# as the rb_define_method.
-#
-# C classes can be diagrammed (see /tc/dl/ruby/ruby/error.c), and RDoc
-# integrates C and Ruby source into one tree
-#
-# The comment blocks may include special directives:
-#
-# [Document-class: <i>name</i>]
-# This comment block is documentation for the given class. Use this
-# when the <tt>Init_xxx</tt> method is not named after the class.
-#
-# [Document-method: <i>name</i>]
-# This comment documents the named method. Use when RDoc cannot
-# automatically find the method from it's declaration
-#
-# [call-seq: <i>text up to an empty line</i>]
-# Because C source doesn't give descripive names to Ruby-level parameters,
-# you need to document the calling sequence explicitly
-#
-# In addition, RDoc assumes by default that the C method implementing a
-# Ruby function is in the same source file as the rb_define_method call.
-# If this isn't the case, add the comment:
-#
-# rb_define_method(....); // in: filename
-#
-# As an example, we might have an extension that defines multiple classes
-# in its Init_xxx method. We could document them using
-#
-# /*
-# * Document-class: MyClass
-# *
-# * Encapsulate the writing and reading of the configuration
-# * file. ...
-# */
-#
-# /*
-# * Document-method: read_value
-# *
-# * call-seq:
-# * cfg.read_value(key) -> value
-# * cfg.read_value(key} { |key| } -> value
-# *
-# * Return the value corresponding to +key+ from the configuration.
-# * In the second form, if the key isn't found, invoke the
-# * block and return its value.
-# */
-
-class RDoc::Parser::C < RDoc::Parser
-
- parse_files_matching(/\.(?:([CcHh])\1?|c([+xp])\2|y)\z/)
-
- ##
- # C file the parser is parsing
-
- attr_accessor :content
-
- ##
- # Resets cross-file state. Call when parsing different projects that need
- # separate documentation.
-
- def self.reset
- @@enclosure_classes = {}
- @@known_bodies = {}
- end
-
- reset
-
- ##
- # Prepare to parse a C file
-
- def initialize(top_level, file_name, content, options, stats)
- super
-
- @known_classes = RDoc::KNOWN_CLASSES.dup
- @content = handle_tab_width handle_ifdefs_in(@content)
- @classes = Hash.new
- @file_dir = File.dirname(@file_name)
- end
-
- def do_aliases
- @content.scan(%r{rb_define_alias\s*\(\s*(\w+),\s*"([^"]+)",\s*"([^"]+)"\s*\)}m) do
- |var_name, new_name, old_name|
- class_name = @known_classes[var_name] || var_name
- class_obj = find_class(var_name, class_name)
-
- as = class_obj.add_alias RDoc::Alias.new("", old_name, new_name, "")
-
- @stats.add_alias as
- end
- end
-
- def do_classes
- @content.scan(/(\w+)\s* = \s*rb_define_module\s*\(\s*"(\w+)"\s*\)/mx) do
- |var_name, class_name|
- handle_class_module(var_name, "module", class_name, nil, nil)
- end
-
- # The '.' lets us handle SWIG-generated files
- @content.scan(/([\w\.]+)\s* = \s*rb_define_class\s*
- \(
- \s*"(\w+)",
- \s*(\w+)\s*
- \)/mx) do |var_name, class_name, parent|
- handle_class_module(var_name, "class", class_name, parent, nil)
- end
-
- @content.scan(/(\w+)\s*=\s*boot_defclass\s*\(\s*"(\w+?)",\s*(\w+?)\s*\)/) do
- |var_name, class_name, parent|
- parent = nil if parent == "0"
- handle_class_module(var_name, "class", class_name, parent, nil)
- end
-
- @content.scan(/(\w+)\s* = \s*rb_define_module_under\s*
- \(
- \s*(\w+),
- \s*"(\w+)"
- \s*\)/mx) do |var_name, in_module, class_name|
- handle_class_module(var_name, "module", class_name, nil, in_module)
- end
-
- @content.scan(/([\w\.]+)\s* = \s*rb_define_class_under\s*
- \(
- \s*(\w+),
- \s*"(\w+)",
- \s*([\w\*\s\(\)\.\->]+)\s* # for SWIG
- \s*\)/mx) do |var_name, in_module, class_name, parent|
- handle_class_module(var_name, "class", class_name, parent, in_module)
- end
- end
-
- def do_constants
- @content.scan(%r{\Wrb_define_
- (
- variable |
- readonly_variable |
- const |
- global_const |
- )
- \s*\(
- (?:\s*(\w+),)?
- \s*"(\w+)",
- \s*(.*?)\s*\)\s*;
- }xm) do |type, var_name, const_name, definition|
- var_name = "rb_cObject" if !var_name or var_name == "rb_mKernel"
- handle_constants(type, var_name, const_name, definition)
- end
- end
-
- ##
- # Look for includes of the form:
- #
- # rb_include_module(rb_cArray, rb_mEnumerable);
-
- def do_includes
- @content.scan(/rb_include_module\s*\(\s*(\w+?),\s*(\w+?)\s*\)/) do |c,m|
- if cls = @classes[c]
- m = @known_classes[m] || m
- cls.add_include RDoc::Include.new(m, "")
- end
- end
- end
-
- def do_methods
- @content.scan(%r{rb_define_
- (
- singleton_method |
- method |
- module_function |
- private_method
- )
- \s*\(\s*([\w\.]+),
- \s*"([^"]+)",
- \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
- \s*(-?\w+)\s*\)
- (?:;\s*/[*/]\s+in\s+(\w+?\.[cy]))?
- }xm) do
- |type, var_name, meth_name, meth_body, param_count, source_file|
-
- # Ignore top-object and weird struct.c dynamic stuff
- next if var_name == "ruby_top_self"
- next if var_name == "nstr"
- next if var_name == "envtbl"
- next if var_name == "argf" # it'd be nice to handle this one
-
- var_name = "rb_cObject" if var_name == "rb_mKernel"
- handle_method(type, var_name, meth_name,
- meth_body, param_count, source_file)
- end
-
- @content.scan(%r{rb_define_attr\(
- \s*([\w\.]+),
- \s*"([^"]+)",
- \s*(\d+),
- \s*(\d+)\s*\);
- }xm) do |var_name, attr_name, attr_reader, attr_writer|
- #var_name = "rb_cObject" if var_name == "rb_mKernel"
- handle_attr(var_name, attr_name,
- attr_reader.to_i != 0,
- attr_writer.to_i != 0)
- end
-
- @content.scan(%r{rb_define_global_function\s*\(
- \s*"([^"]+)",
- \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
- \s*(-?\w+)\s*\)
- (?:;\s*/[*/]\s+in\s+(\w+?\.[cy]))?
- }xm) do |meth_name, meth_body, param_count, source_file|
- handle_method("method", "rb_mKernel", meth_name,
- meth_body, param_count, source_file)
- end
-
- @content.scan(/define_filetest_function\s*\(
- \s*"([^"]+)",
- \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
- \s*(-?\w+)\s*\)/xm) do
- |meth_name, meth_body, param_count|
-
- handle_method("method", "rb_mFileTest", meth_name, meth_body, param_count)
- handle_method("singleton_method", "rb_cFile", meth_name, meth_body, param_count)
- end
- end
-
- def find_attr_comment(attr_name)
- if @content =~ %r{((?>/\*.*?\*/\s+))
- rb_define_attr\((?:\s*(\w+),)?\s*"#{attr_name}"\s*,.*?\)\s*;}xmi
- $1
- elsif @content =~ %r{Document-attr:\s#{attr_name}\s*?\n((?>.*?\*/))}m
- $1
- else
- ''
- end
- end
-
- ##
- # Find the C code corresponding to a Ruby method
-
- def find_body(class_name, meth_name, meth_obj, body, quiet = false)
- case body
- when %r"((?>/\*.*?\*/\s*))((?:(?:static|SWIGINTERN)\s+)?(?:intern\s+)?VALUE\s+#{meth_name}
- \s*(\([^)]*\))([^;]|$))"xm
- comment = $1
- body_text = $2
- params = $3
-
- remove_private_comments comment if comment
-
- # see if we can find the whole body
-
- re = Regexp.escape(body_text) + '[^(]*^\{.*?^\}'
- body_text = $& if /#{re}/m =~ body
-
- # The comment block may have been overridden with a 'Document-method'
- # block. This happens in the interpreter when multiple methods are
- # vectored through to the same C method but those methods are logically
- # distinct (for example Kernel.hash and Kernel.object_id share the same
- # implementation
-
- override_comment = find_override_comment class_name, meth_obj.name
- comment = override_comment if override_comment
-
- find_modifiers comment, meth_obj if comment
-
-# meth_obj.params = params
- meth_obj.start_collecting_tokens
- meth_obj.add_token RDoc::RubyToken::Token.new(1,1).set_text(body_text)
- meth_obj.comment = mangle_comment comment
- when %r{((?>/\*.*?\*/\s*))^\s*(\#\s*define\s+#{meth_name}\s+(\w+))}m
- comment = $1
- body_text = $2
- find_body class_name, $3, meth_obj, body, true
- find_modifiers comment, meth_obj
-
- meth_obj.start_collecting_tokens
- meth_obj.add_token RDoc::RubyToken::Token.new(1,1).set_text(body_text)
- meth_obj.comment = mangle_comment(comment) + meth_obj.comment.to_s
- when %r{^\s*\#\s*define\s+#{meth_name}\s+(\w+)}m
- unless find_body(class_name, $1, meth_obj, body, true)
- warn "No definition for #{meth_name}" unless @options.quiet
- return false
- end
- else
- # No body, but might still have an override comment
- comment = find_override_comment(class_name, meth_obj.name)
-
- if comment
- find_modifiers(comment, meth_obj)
- meth_obj.comment = mangle_comment(comment)
- else
- warn "No definition for #{meth_name}" unless @options.quiet
- return false
- end
- end
- true
- end
-
- def find_class(raw_name, name)
- unless @classes[raw_name]
- if raw_name =~ /^rb_m/
- container = @top_level.add_module RDoc::NormalModule, name
- else
- container = @top_level.add_class RDoc::NormalClass, name
- end
-
- container.record_location @top_level
- @classes[raw_name] = container
- end
- @classes[raw_name]
- end
-
- ##
- # Look for class or module documentation above Init_+class_name+(void),
- # in a Document-class +class_name+ (or module) comment or above an
- # rb_define_class (or module). If a comment is supplied above a matching
- # Init_ and a rb_define_class the Init_ comment is used.
- #
- # /*
- # * This is a comment for Foo
- # */
- # Init_Foo(void) {
- # VALUE cFoo = rb_define_class("Foo", rb_cObject);
- # }
- #
- # /*
- # * Document-class: Foo
- # * This is a comment for Foo
- # */
- # Init_foo(void) {
- # VALUE cFoo = rb_define_class("Foo", rb_cObject);
- # }
- #
- # /*
- # * This is a comment for Foo
- # */
- # VALUE cFoo = rb_define_class("Foo", rb_cObject);
-
- def find_class_comment(class_name, class_meth)
- comment = nil
-
- if @content =~ %r{((?>/\*.*?\*/\s+))
- (static\s+)?void\s+Init_#{class_name}\s*(?:_\(\s*)?\(\s*(?:void\s*)\)}xmi then
- comment = $1
- elsif @content =~ %r{Document-(?:class|module):\s+#{class_name}\s*?(?:<\s+[:,\w]+)?\n((?>.*?\*/))}m then
- comment = $1
- elsif @content =~ %r{((?>/\*.*?\*/\s+))
- ([\w\.\s]+\s* = \s+)?rb_define_(class|module).*?"(#{class_name})"}xm then
- comment = $1
- end
-
- class_meth.comment = mangle_comment comment if comment
- end
-
- ##
- # Finds a comment matching +type+ and +const_name+ either above the
- # comment or in the matching Document- section.
-
- def find_const_comment(type, const_name)
- if @content =~ %r{((?>^\s*/\*.*?\*/\s+))
- rb_define_#{type}\((?:\s*(\w+),)?\s*"#{const_name}"\s*,.*?\)\s*;}xmi
- $1
- elsif @content =~ %r{Document-(?:const|global|variable):\s#{const_name}\s*?\n((?>.*?\*/))}m
- $1
- else
- ''
- end
- end
-
- ##
- # If the comment block contains a section that looks like:
- #
- # call-seq:
- # Array.new
- # Array.new(10)
- #
- # use it for the parameters.
-
- def find_modifiers(comment, meth_obj)
- if comment.sub!(/:nodoc:\s*^\s*\*?\s*$/m, '') or
- comment.sub!(/\A\/\*\s*:nodoc:\s*\*\/\Z/, '')
- meth_obj.document_self = false
- end
- if comment.sub!(/call-seq:(.*?)^\s*\*?\s*$/m, '') or
- comment.sub!(/\A\/\*\s*call-seq:(.*?)\*\/\Z/, '')
- seq = $1
- seq.gsub!(/^\s*\*\s*/, '')
- meth_obj.call_seq = seq
- end
- end
-
- def find_override_comment(class_name, meth_name)
- name = Regexp.escape(meth_name)
- if @content =~ %r{Document-method:\s+#{class_name}(?:\.|::|#)#{name}\s*?\n((?>.*?\*/))}m then
- $1
- elsif @content =~ %r{Document-method:\s#{name}\s*?\n((?>.*?\*/))}m then
- $1
- end
- end
-
- def handle_attr(var_name, attr_name, reader, writer)
- rw = ''
- if reader
- #@stats.num_methods += 1
- rw << 'R'
- end
- if writer
- #@stats.num_methods += 1
- rw << 'W'
- end
-
- class_name = @known_classes[var_name]
-
- return unless class_name
-
- class_obj = find_class(var_name, class_name)
-
- if class_obj
- comment = find_attr_comment(attr_name)
- unless comment.empty?
- comment = mangle_comment(comment)
- end
- att = RDoc::Attr.new '', attr_name, rw, comment
- class_obj.add_attribute(att)
- end
- end
-
- def handle_class_module(var_name, class_mod, class_name, parent, in_module)
- parent_name = @known_classes[parent] || parent
-
- if in_module
- enclosure = @classes[in_module] || @@enclosure_classes[in_module]
- unless enclosure
- if enclosure = @known_classes[in_module]
- handle_class_module(in_module, (/^rb_m/ =~ in_module ? "module" : "class"),
- enclosure, nil, nil)
- enclosure = @classes[in_module]
- end
- end
- unless enclosure
- warn("Enclosing class/module '#{in_module}' for " +
- "#{class_mod} #{class_name} not known")
- return
- end
- else
- enclosure = @top_level
- end
-
- if class_mod == "class" then
- full_name = if RDoc::ClassModule === enclosure then
- enclosure.full_name + "::#{class_name}"
- else
- class_name
- end
-
- if @content =~ %r{Document-class:\s+#{full_name}\s*<\s+([:,\w]+)} then
- parent_name = $1
- end
- cm = enclosure.add_class RDoc::NormalClass, class_name, parent_name
- @stats.add_class cm
- else
- cm = enclosure.add_module RDoc::NormalModule, class_name
- @stats.add_module cm
- end
-
- cm.record_location enclosure.top_level
-
- find_class_comment cm.full_name, cm
-
- @classes[var_name] = cm
- @@enclosure_classes[var_name] = cm
- @known_classes[var_name] = cm.full_name
- end
-
- ##
- # Adds constant comments. By providing some_value: at the start ofthe
- # comment you can override the C value of the comment to give a friendly
- # definition.
- #
- # /* 300: The perfect score in bowling */
- # rb_define_const(cFoo, "PERFECT", INT2FIX(300);
- #
- # Will override +INT2FIX(300)+ with the value +300+ in the output RDoc.
- # Values may include quotes and escaped colons (\:).
-
- def handle_constants(type, var_name, const_name, definition)
- #@stats.num_constants += 1
- class_name = @known_classes[var_name]
-
- return unless class_name
-
- class_obj = find_class(var_name, class_name)
-
- unless class_obj
- warn("Enclosing class/module '#{const_name}' for not known")
- return
- end
-
- comment = find_const_comment(type, const_name)
-
- # In the case of rb_define_const, the definition and comment are in
- # "/* definition: comment */" form. The literal ':' and '\' characters
- # can be escaped with a backslash.
- if type.downcase == 'const' then
- elements = mangle_comment(comment).split(':')
- if elements.nil? or elements.empty? then
- con = RDoc::Constant.new(const_name, definition,
- mangle_comment(comment))
- else
- new_definition = elements[0..-2].join(':')
- if new_definition.empty? then # Default to literal C definition
- new_definition = definition
- else
- new_definition.gsub!("\:", ":")
- new_definition.gsub!("\\", '\\')
- end
- new_definition.sub!(/\A(\s+)/, '')
- new_comment = $1.nil? ? elements.last : "#{$1}#{elements.last.lstrip}"
- con = RDoc::Constant.new(const_name, new_definition,
- mangle_comment(new_comment))
- end
- else
- con = RDoc::Constant.new const_name, definition, mangle_comment(comment)
- end
-
- class_obj.add_constant(con)
- end
-
- ##
- # Removes #ifdefs that would otherwise confuse us
-
- def handle_ifdefs_in(body)
- body.gsub(/^#ifdef HAVE_PROTOTYPES.*?#else.*?\n(.*?)#endif.*?\n/m, '\1')
- end
-
- def handle_method(type, var_name, meth_name, meth_body, param_count,
- source_file = nil)
- class_name = @known_classes[var_name]
-
- return unless class_name
-
- class_obj = find_class var_name, class_name
-
- if class_obj then
- if meth_name == "initialize" then
- meth_name = "new"
- type = "singleton_method"
- end
-
- meth_obj = RDoc::AnyMethod.new '', meth_name
- meth_obj.singleton = %w[singleton_method module_function].include? type
-
- p_count = (Integer(param_count) rescue -1)
-
- if p_count < 0
- meth_obj.params = "(...)"
- elsif p_count == 0
- meth_obj.params = "()"
- else
- meth_obj.params = "(" + (1..p_count).map{|i| "p#{i}"}.join(", ") + ")"
- end
-
- if source_file then
- file_name = File.join(@file_dir, source_file)
- body = (@@known_bodies[source_file] ||= File.read(file_name))
- else
- body = @content
- end
-
- if find_body(class_name, meth_body, meth_obj, body) and meth_obj.document_self then
- class_obj.add_method meth_obj
- @stats.add_method meth_obj
- meth_obj.visibility = :private if 'private_method' == type
- end
- end
- end
-
- def handle_tab_width(body)
- if /\t/ =~ body
- tab_width = @options.tab_width
- body.split(/\n/).map do |line|
- 1 while line.gsub!(/\t+/) { ' ' * (tab_width*$&.length - $`.length % tab_width)} && $~ #`
- line
- end .join("\n")
- else
- body
- end
- end
-
- ##
- # Remove the /*'s and leading asterisks from C comments
-
- def mangle_comment(comment)
- comment.sub!(%r{/\*+}) { " " * $&.length }
- comment.sub!(%r{\*+/}) { " " * $&.length }
- comment.gsub!(/^[ \t]*\*/m) { " " * $&.length }
- comment
- end
-
- ##
- # Removes lines that are commented out that might otherwise get picked up
- # when scanning for classes and methods
-
- def remove_commented_out_lines
- @content.gsub!(%r{//.*rb_define_}, '//')
- end
-
- def remove_private_comments(comment)
- comment.gsub!(/\/?\*--\n(.*?)\/?\*\+\+/m, '')
- comment.sub!(/\/?\*--\n.*/m, '')
- end
-
- ##
- # Extract the classes/modules and methods from a C file and return the
- # corresponding top-level object
-
- def scan
- remove_commented_out_lines
- do_classes
- do_constants
- do_methods
- do_includes
- do_aliases
- @top_level
- end
-
- def warn(msg)
- $stderr.puts
- $stderr.puts msg
- $stderr.flush
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/perl.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/perl.rb
deleted file mode 100644
index 43d1e9ff6..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/perl.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-require 'rdoc/parser'
-
-##
-#
-# This is an attamept to write a basic parser for Perl's
-# POD (Plain old Documentation) format. Ruby code must
-# co-exist with Perl, and some tasks are easier in Perl
-# than Ruby because of existing libraries.
-#
-# One difficult is that Perl POD has no means of identifying
-# the classes (packages) and methods (subs) with which it
-# is associated, it is more like literate programming in so
-# far as it just happens to be in the same place as the code,
-# but need not be.
-#
-# We would like to support all the markup the POD provides
-# so that it will convert happily to HTML. At the moment
-# I don't think I can do that: time constraints.
-#
-
-class RDoc::Parser::PerlPOD < RDoc::Parser
-
- parse_files_matching(/.p[lm]$/)
-
- ##
- # Prepare to parse a perl file
-
- def initialize(top_level, file_name, content, options, stats)
- super
-
- preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include
-
- preprocess.handle @content do |directive, param|
- warn "Unrecognized directive '#{directive}' in #{@file_name}"
- end
- end
-
- ##
- # Extract the Pod(-like) comments from the code.
- # At its most basic there will ne no need to distinguish
- # between the different types of header, etc.
- #
- # This uses a simple finite state machine, in a very
- # procedural pattern. I could "replace case with polymorphism"
- # but I think it would obscure the intent, scatter the
- # code all over tha place. This machine is necessary
- # because POD requires that directives be preceded by
- # blank lines, so reading line by line is necessary,
- # and preserving state about what is seen is necesary.
-
- def scan
-
- @top_level.comment ||= ""
- state=:code_blank
- line_number = 0
- line = nil
-
- # This started out as a really long nested case statement,
- # which also led to repetitive code. I'd like to avoid that
- # so I'm using a "table" instead.
-
- # Firstly we need some procs to do the transition and processing
- # work. Because these are procs they are closures, and they can
- # use variables in the local scope.
- #
- # First, the "nothing to see here" stuff.
- code_noop = lambda do
- if line =~ /^\s+$/
- state = :code_blank
- end
- end
-
- pod_noop = lambda do
- if line =~ /^\s+$/
- state = :pod_blank
- end
- @top_level.comment += filter(line)
- end
-
- begin_noop = lambda do
- if line =~ /^\s+$/
- state = :begin_blank
- end
- @top_level.comment += filter(line)
- end
-
- # Now for the blocks that process code and comments...
-
- transit_to_pod = lambda do
- case line
- when /^=(?:pod|head\d+)/
- state = :pod_no_blank
- @top_level.comment += filter(line)
- when /^=over/
- state = :over_no_blank
- @top_level.comment += filter(line)
- when /^=(?:begin|for)/
- state = :begin_no_blank
- end
- end
-
- process_pod = lambda do
- case line
- when /^\s*$/
- state = :pod_blank
- @top_level.comment += filter(line)
- when /^=cut/
- state = :code_no_blank
- when /^=end/
- $stderr.puts "'=end' unexpected at #{line_number} in #{@file_name}"
- else
- @top_level.comment += filter(line)
- end
- end
-
-
- process_begin = lambda do
- case line
- when /^\s*$/
- state = :begin_blank
- @top_level.comment += filter(line)
- when /^=end/
- state = :code_no_blank
- when /^=cut/
- $stderr.puts "'=cut' unexpected at #{line_number} in #{@file_name}"
- else
- @top_level.comment += filter(line)
- end
-
- end
-
-
- transitions = { :code_no_blank => code_noop,
- :code_blank => transit_to_pod,
- :pod_no_blank => pod_noop,
- :pod_blank => process_pod,
- :begin_no_blank => begin_noop,
- :begin_blank => process_begin}
- @content.each_line do |l|
- line = l
- line_number += 1
- transitions[state].call
- end # each line
-
- @top_level
- end
-
- # Filter the perl markup that does the same as the rdoc
- # filtering. Only basic for now. Will probably need a
- # proper parser to cope with C<<...>> etc
- def filter(comment)
- return '' if comment =~ /^=pod\s*$/
- comment.gsub!(/^=pod/, '==')
- comment.gsub!(/^=head(\d+)/) do
- "=" * $1.to_i
- end
- comment.gsub!(/=item/, '');
- comment.gsub!(/C<(.*?)>/, '<tt>\1</tt>');
- comment.gsub!(/I<(.*?)>/, '<i>\1</i>');
- comment.gsub!(/B<(.*?)>/, '<b>\1</b>');
- comment
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/ruby.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/ruby.rb
deleted file mode 100644
index 84e292d47..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/ruby.rb
+++ /dev/null
@@ -1,2904 +0,0 @@
-##
-# This file contains stuff stolen outright from:
-#
-# rtags.rb -
-# ruby-lex.rb - ruby lexcal analyzer
-# ruby-token.rb - ruby tokens
-# by Keiju ISHITSUKA (Nippon Rational Inc.)
-#
-
-require 'e2mmap'
-require 'irb/slex'
-
-require 'rdoc/code_objects'
-require 'rdoc/tokenstream'
-require 'rdoc/markup/preprocess'
-require 'rdoc/parser'
-
-$TOKEN_DEBUG ||= nil
-#$TOKEN_DEBUG = $DEBUG_RDOC
-
-##
-# Definitions of all tokens involved in the lexical analysis
-
-module RDoc::RubyToken
-
- EXPR_BEG = :EXPR_BEG
- EXPR_MID = :EXPR_MID
- EXPR_END = :EXPR_END
- EXPR_ARG = :EXPR_ARG
- EXPR_FNAME = :EXPR_FNAME
- EXPR_DOT = :EXPR_DOT
- EXPR_CLASS = :EXPR_CLASS
-
- class Token
- NO_TEXT = "??".freeze
-
- attr_accessor :text
- attr_reader :line_no
- attr_reader :char_no
-
- def initialize(line_no, char_no)
- @line_no = line_no
- @char_no = char_no
- @text = NO_TEXT
- end
-
- def ==(other)
- self.class == other.class and
- other.line_no == @line_no and
- other.char_no == @char_no and
- other.text == @text
- end
-
- ##
- # Because we're used in contexts that expect to return a token, we set the
- # text string and then return ourselves
-
- def set_text(text)
- @text = text
- self
- end
-
- end
-
- class TkNode < Token
- attr :node
- end
-
- class TkId < Token
- def initialize(line_no, char_no, name)
- super(line_no, char_no)
- @name = name
- end
- attr :name
- end
-
- class TkKW < TkId
- end
-
- class TkVal < Token
- def initialize(line_no, char_no, value = nil)
- super(line_no, char_no)
- set_text(value)
- end
- end
-
- class TkOp < Token
- def name
- self.class.op_name
- end
- end
-
- class TkOPASGN < TkOp
- def initialize(line_no, char_no, op)
- super(line_no, char_no)
- op = TkReading2Token[op] unless Symbol === op
- @op = op
- end
- attr :op
- end
-
- class TkUnknownChar < Token
- def initialize(line_no, char_no, id)
- super(line_no, char_no)
- @name = char_no.chr
- end
- attr :name
- end
-
- class TkError < Token
- end
-
- def set_token_position(line, char)
- @prev_line_no = line
- @prev_char_no = char
- end
-
- def Token(token, value = nil)
- tk = nil
- case token
- when String, Symbol
- source = String === token ? TkReading2Token : TkSymbol2Token
- raise TkReading2TokenNoKey, token if (tk = source[token]).nil?
- tk = Token(tk[0], value)
- else
- tk = if (token.ancestors & [TkId, TkVal, TkOPASGN, TkUnknownChar]).empty?
- token.new(@prev_line_no, @prev_char_no)
- else
- token.new(@prev_line_no, @prev_char_no, value)
- end
- end
- tk
- end
-
- TokenDefinitions = [
- [:TkCLASS, TkKW, "class", EXPR_CLASS],
- [:TkMODULE, TkKW, "module", EXPR_CLASS],
- [:TkDEF, TkKW, "def", EXPR_FNAME],
- [:TkUNDEF, TkKW, "undef", EXPR_FNAME],
- [:TkBEGIN, TkKW, "begin", EXPR_BEG],
- [:TkRESCUE, TkKW, "rescue", EXPR_MID],
- [:TkENSURE, TkKW, "ensure", EXPR_BEG],
- [:TkEND, TkKW, "end", EXPR_END],
- [:TkIF, TkKW, "if", EXPR_BEG, :TkIF_MOD],
- [:TkUNLESS, TkKW, "unless", EXPR_BEG, :TkUNLESS_MOD],
- [:TkTHEN, TkKW, "then", EXPR_BEG],
- [:TkELSIF, TkKW, "elsif", EXPR_BEG],
- [:TkELSE, TkKW, "else", EXPR_BEG],
- [:TkCASE, TkKW, "case", EXPR_BEG],
- [:TkWHEN, TkKW, "when", EXPR_BEG],
- [:TkWHILE, TkKW, "while", EXPR_BEG, :TkWHILE_MOD],
- [:TkUNTIL, TkKW, "until", EXPR_BEG, :TkUNTIL_MOD],
- [:TkFOR, TkKW, "for", EXPR_BEG],
- [:TkBREAK, TkKW, "break", EXPR_END],
- [:TkNEXT, TkKW, "next", EXPR_END],
- [:TkREDO, TkKW, "redo", EXPR_END],
- [:TkRETRY, TkKW, "retry", EXPR_END],
- [:TkIN, TkKW, "in", EXPR_BEG],
- [:TkDO, TkKW, "do", EXPR_BEG],
- [:TkRETURN, TkKW, "return", EXPR_MID],
- [:TkYIELD, TkKW, "yield", EXPR_END],
- [:TkSUPER, TkKW, "super", EXPR_END],
- [:TkSELF, TkKW, "self", EXPR_END],
- [:TkNIL, TkKW, "nil", EXPR_END],
- [:TkTRUE, TkKW, "true", EXPR_END],
- [:TkFALSE, TkKW, "false", EXPR_END],
- [:TkAND, TkKW, "and", EXPR_BEG],
- [:TkOR, TkKW, "or", EXPR_BEG],
- [:TkNOT, TkKW, "not", EXPR_BEG],
- [:TkIF_MOD, TkKW],
- [:TkUNLESS_MOD, TkKW],
- [:TkWHILE_MOD, TkKW],
- [:TkUNTIL_MOD, TkKW],
- [:TkALIAS, TkKW, "alias", EXPR_FNAME],
- [:TkDEFINED, TkKW, "defined?", EXPR_END],
- [:TklBEGIN, TkKW, "BEGIN", EXPR_END],
- [:TklEND, TkKW, "END", EXPR_END],
- [:Tk__LINE__, TkKW, "__LINE__", EXPR_END],
- [:Tk__FILE__, TkKW, "__FILE__", EXPR_END],
-
- [:TkIDENTIFIER, TkId],
- [:TkFID, TkId],
- [:TkGVAR, TkId],
- [:TkIVAR, TkId],
- [:TkCONSTANT, TkId],
-
- [:TkINTEGER, TkVal],
- [:TkFLOAT, TkVal],
- [:TkSTRING, TkVal],
- [:TkXSTRING, TkVal],
- [:TkREGEXP, TkVal],
- [:TkCOMMENT, TkVal],
-
- [:TkDSTRING, TkNode],
- [:TkDXSTRING, TkNode],
- [:TkDREGEXP, TkNode],
- [:TkNTH_REF, TkId],
- [:TkBACK_REF, TkId],
-
- [:TkUPLUS, TkOp, "+@"],
- [:TkUMINUS, TkOp, "-@"],
- [:TkPOW, TkOp, "**"],
- [:TkCMP, TkOp, "<=>"],
- [:TkEQ, TkOp, "=="],
- [:TkEQQ, TkOp, "==="],
- [:TkNEQ, TkOp, "!="],
- [:TkGEQ, TkOp, ">="],
- [:TkLEQ, TkOp, "<="],
- [:TkANDOP, TkOp, "&&"],
- [:TkOROP, TkOp, "||"],
- [:TkMATCH, TkOp, "=~"],
- [:TkNMATCH, TkOp, "!~"],
- [:TkDOT2, TkOp, ".."],
- [:TkDOT3, TkOp, "..."],
- [:TkAREF, TkOp, "[]"],
- [:TkASET, TkOp, "[]="],
- [:TkLSHFT, TkOp, "<<"],
- [:TkRSHFT, TkOp, ">>"],
- [:TkCOLON2, TkOp],
- [:TkCOLON3, TkOp],
-# [:OPASGN, TkOp], # +=, -= etc. #
- [:TkASSOC, TkOp, "=>"],
- [:TkQUESTION, TkOp, "?"], #?
- [:TkCOLON, TkOp, ":"], #:
-
- [:TkfLPAREN], # func( #
- [:TkfLBRACK], # func[ #
- [:TkfLBRACE], # func{ #
- [:TkSTAR], # *arg
- [:TkAMPER], # &arg #
- [:TkSYMBOL, TkId], # :SYMBOL
- [:TkSYMBEG, TkId],
- [:TkGT, TkOp, ">"],
- [:TkLT, TkOp, "<"],
- [:TkPLUS, TkOp, "+"],
- [:TkMINUS, TkOp, "-"],
- [:TkMULT, TkOp, "*"],
- [:TkDIV, TkOp, "/"],
- [:TkMOD, TkOp, "%"],
- [:TkBITOR, TkOp, "|"],
- [:TkBITXOR, TkOp, "^"],
- [:TkBITAND, TkOp, "&"],
- [:TkBITNOT, TkOp, "~"],
- [:TkNOTOP, TkOp, "!"],
-
- [:TkBACKQUOTE, TkOp, "`"],
-
- [:TkASSIGN, Token, "="],
- [:TkDOT, Token, "."],
- [:TkLPAREN, Token, "("], #(exp)
- [:TkLBRACK, Token, "["], #[arry]
- [:TkLBRACE, Token, "{"], #{hash}
- [:TkRPAREN, Token, ")"],
- [:TkRBRACK, Token, "]"],
- [:TkRBRACE, Token, "}"],
- [:TkCOMMA, Token, ","],
- [:TkSEMICOLON, Token, ";"],
-
- [:TkRD_COMMENT],
- [:TkSPACE],
- [:TkNL],
- [:TkEND_OF_SCRIPT],
-
- [:TkBACKSLASH, TkUnknownChar, "\\"],
- [:TkAT, TkUnknownChar, "@"],
- [:TkDOLLAR, TkUnknownChar, "\$"], #"
- ]
-
- # {reading => token_class}
- # {reading => [token_class, *opt]}
- TkReading2Token = {}
- TkSymbol2Token = {}
-
- def self.def_token(token_n, super_token = Token, reading = nil, *opts)
- token_n = token_n.id2name unless String === token_n
-
- fail AlreadyDefinedToken, token_n if const_defined?(token_n)
-
- token_c = Class.new super_token
- const_set token_n, token_c
-# token_c.inspect
-
- if reading
- if TkReading2Token[reading]
- fail TkReading2TokenDuplicateError, token_n, reading
- end
- if opts.empty?
- TkReading2Token[reading] = [token_c]
- else
- TkReading2Token[reading] = [token_c].concat(opts)
- end
- end
- TkSymbol2Token[token_n.intern] = token_c
-
- if token_c <= TkOp
- token_c.class_eval %{
- def self.op_name; "#{reading}"; end
- }
- end
- end
-
- for defs in TokenDefinitions
- def_token(*defs)
- end
-
- NEWLINE_TOKEN = TkNL.new(0,0)
- NEWLINE_TOKEN.set_text("\n")
-
-end
-
-##
-# Lexical analyzer for Ruby source
-
-class RDoc::RubyLex
-
- ##
- # Read an input stream character by character. We allow for unlimited
- # ungetting of characters just read.
- #
- # We simplify the implementation greatly by reading the entire input
- # into a buffer initially, and then simply traversing it using
- # pointers.
- #
- # We also have to allow for the <i>here document diversion</i>. This
- # little gem comes about when the lexer encounters a here
- # document. At this point we effectively need to split the input
- # stream into two parts: one to read the body of the here document,
- # the other to read the rest of the input line where the here
- # document was initially encountered. For example, we might have
- #
- # do_something(<<-A, <<-B)
- # stuff
- # for
- # A
- # stuff
- # for
- # B
- #
- # When the lexer encounters the <<A, it reads until the end of the
- # line, and keeps it around for later. It then reads the body of the
- # here document. Once complete, it needs to read the rest of the
- # original line, but then skip the here document body.
- #
-
- class BufferedReader
-
- attr_reader :line_num
-
- def initialize(content, options)
- @options = options
-
- if /\t/ =~ content
- tab_width = @options.tab_width
- content = content.split(/\n/).map do |line|
- 1 while line.gsub!(/\t+/) { ' ' * (tab_width*$&.length - $`.length % tab_width)} && $~ #`
- line
- end .join("\n")
- end
- @content = content
- @content << "\n" unless @content[-1,1] == "\n"
- @size = @content.size
- @offset = 0
- @hwm = 0
- @line_num = 1
- @read_back_offset = 0
- @last_newline = 0
- @newline_pending = false
- end
-
- def column
- @offset - @last_newline
- end
-
- def getc
- return nil if @offset >= @size
- ch = @content[@offset, 1]
-
- @offset += 1
- @hwm = @offset if @hwm < @offset
-
- if @newline_pending
- @line_num += 1
- @last_newline = @offset - 1
- @newline_pending = false
- end
-
- if ch == "\n"
- @newline_pending = true
- end
- ch
- end
-
- def getc_already_read
- getc
- end
-
- def ungetc(ch)
- raise "unget past beginning of file" if @offset <= 0
- @offset -= 1
- if @content[@offset] == ?\n
- @newline_pending = false
- end
- end
-
- def get_read
- res = @content[@read_back_offset...@offset]
- @read_back_offset = @offset
- res
- end
-
- def peek(at)
- pos = @offset + at
- if pos >= @size
- nil
- else
- @content[pos, 1]
- end
- end
-
- def peek_equal(str)
- @content[@offset, str.length] == str
- end
-
- def divert_read_from(reserve)
- @content[@offset, 0] = reserve
- @size = @content.size
- end
- end
-
- # end of nested class BufferedReader
-
- extend Exception2MessageMapper
- def_exception(:AlreadyDefinedToken, "Already defined token(%s)")
- def_exception(:TkReading2TokenNoKey, "key nothing(key='%s')")
- def_exception(:TkSymbol2TokenNoKey, "key nothing(key='%s')")
- def_exception(:TkReading2TokenDuplicateError,
- "key duplicate(token_n='%s', key='%s')")
- def_exception(:SyntaxError, "%s")
-
- include RDoc::RubyToken
- include IRB
-
- attr_reader :continue
- attr_reader :lex_state
-
- def self.debug?
- false
- end
-
- def initialize(content, options)
- lex_init
-
- @options = options
-
- @reader = BufferedReader.new content, @options
-
- @exp_line_no = @line_no = 1
- @base_char_no = 0
- @indent = 0
-
- @ltype = nil
- @quoted = nil
- @lex_state = EXPR_BEG
- @space_seen = false
-
- @continue = false
- @line = ""
-
- @skip_space = false
- @read_auto_clean_up = false
- @exception_on_syntax_error = true
- end
-
- attr_accessor :skip_space
- attr_accessor :read_auto_clean_up
- attr_accessor :exception_on_syntax_error
- attr_reader :indent
-
- # io functions
- def line_no
- @reader.line_num
- end
-
- def char_no
- @reader.column
- end
-
- def get_read
- @reader.get_read
- end
-
- def getc
- @reader.getc
- end
-
- def getc_of_rests
- @reader.getc_already_read
- end
-
- def gets
- c = getc or return
- l = ""
- begin
- l.concat c unless c == "\r"
- break if c == "\n"
- end while c = getc
- l
- end
-
-
- def ungetc(c = nil)
- @reader.ungetc(c)
- end
-
- def peek_equal?(str)
- @reader.peek_equal(str)
- end
-
- def peek(i = 0)
- @reader.peek(i)
- end
-
- def lex
- until (TkNL === (tk = token) or TkEND_OF_SCRIPT === tk) and
- not @continue or tk.nil?
- end
-
- line = get_read
-
- if line == "" and TkEND_OF_SCRIPT === tk or tk.nil? then
- nil
- else
- line
- end
- end
-
- def token
- set_token_position(line_no, char_no)
- begin
- begin
- tk = @OP.match(self)
- @space_seen = TkSPACE === tk
- rescue SyntaxError => e
- raise RDoc::Error, "syntax error: #{e.message}" if
- @exception_on_syntax_error
-
- tk = TkError.new(line_no, char_no)
- end
- end while @skip_space and TkSPACE === tk
- if @read_auto_clean_up
- get_read
- end
-# throw :eof unless tk
- tk
- end
-
- ENINDENT_CLAUSE = [
- "case", "class", "def", "do", "for", "if",
- "module", "unless", "until", "while", "begin" #, "when"
- ]
- DEINDENT_CLAUSE = ["end" #, "when"
- ]
-
- PERCENT_LTYPE = {
- "q" => "\'",
- "Q" => "\"",
- "x" => "\`",
- "r" => "/",
- "w" => "]"
- }
-
- PERCENT_PAREN = {
- "{" => "}",
- "[" => "]",
- "<" => ">",
- "(" => ")"
- }
-
- Ltype2Token = {
- "\'" => TkSTRING,
- "\"" => TkSTRING,
- "\`" => TkXSTRING,
- "/" => TkREGEXP,
- "]" => TkDSTRING
- }
- Ltype2Token.default = TkSTRING
-
- DLtype2Token = {
- "\"" => TkDSTRING,
- "\`" => TkDXSTRING,
- "/" => TkDREGEXP,
- }
-
- def lex_init()
- @OP = IRB::SLex.new
- @OP.def_rules("\0", "\004", "\032") do |chars, io|
- Token(TkEND_OF_SCRIPT).set_text(chars)
- end
-
- @OP.def_rules(" ", "\t", "\f", "\r", "\13") do |chars, io|
- @space_seen = TRUE
- while (ch = getc) =~ /[ \t\f\r\13]/
- chars << ch
- end
- ungetc
- Token(TkSPACE).set_text(chars)
- end
-
- @OP.def_rule("#") do
- |op, io|
- identify_comment
- end
-
- @OP.def_rule("=begin", proc{@prev_char_no == 0 && peek(0) =~ /\s/}) do
- |op, io|
- str = op
- @ltype = "="
-
-
- begin
- line = ""
- begin
- ch = getc
- line << ch
- end until ch == "\n"
- str << line
- end until line =~ /^=end/
-
- ungetc
-
- @ltype = nil
-
- if str =~ /\A=begin\s+rdoc/i
- str.sub!(/\A=begin.*\n/, '')
- str.sub!(/^=end.*/m, '')
- Token(TkCOMMENT).set_text(str)
- else
- Token(TkRD_COMMENT)#.set_text(str)
- end
- end
-
- @OP.def_rule("\n") do
- print "\\n\n" if RDoc::RubyLex.debug?
- case @lex_state
- when EXPR_BEG, EXPR_FNAME, EXPR_DOT
- @continue = TRUE
- else
- @continue = FALSE
- @lex_state = EXPR_BEG
- end
- Token(TkNL).set_text("\n")
- end
-
- @OP.def_rules("*", "**",
- "!", "!=", "!~",
- "=", "==", "===",
- "=~", "<=>",
- "<", "<=",
- ">", ">=", ">>") do
- |op, io|
- @lex_state = EXPR_BEG
- Token(op).set_text(op)
- end
-
- @OP.def_rules("<<") do
- |op, io|
- tk = nil
- if @lex_state != EXPR_END && @lex_state != EXPR_CLASS &&
- (@lex_state != EXPR_ARG || @space_seen)
- c = peek(0)
- if /[-\w_\"\'\`]/ =~ c
- tk = identify_here_document
- end
- end
- if !tk
- @lex_state = EXPR_BEG
- tk = Token(op).set_text(op)
- end
- tk
- end
-
- @OP.def_rules("'", '"') do
- |op, io|
- identify_string(op)
- end
-
- @OP.def_rules("`") do
- |op, io|
- if @lex_state == EXPR_FNAME
- Token(op).set_text(op)
- else
- identify_string(op)
- end
- end
-
- @OP.def_rules('?') do
- |op, io|
- if @lex_state == EXPR_END
- @lex_state = EXPR_BEG
- Token(TkQUESTION).set_text(op)
- else
- ch = getc
- if @lex_state == EXPR_ARG && ch !~ /\s/
- ungetc
- @lex_state = EXPR_BEG
- Token(TkQUESTION).set_text(op)
- else
- str = op
- str << ch
- if (ch == '\\') #'
- str << read_escape
- end
- @lex_state = EXPR_END
- Token(TkINTEGER).set_text(str)
- end
- end
- end
-
- @OP.def_rules("&", "&&", "|", "||") do
- |op, io|
- @lex_state = EXPR_BEG
- Token(op).set_text(op)
- end
-
- @OP.def_rules("+=", "-=", "*=", "**=",
- "&=", "|=", "^=", "<<=", ">>=", "||=", "&&=") do
- |op, io|
- @lex_state = EXPR_BEG
- op =~ /^(.*)=$/
- Token(TkOPASGN, $1).set_text(op)
- end
-
- @OP.def_rule("+@", proc{@lex_state == EXPR_FNAME}) do |op, io|
- Token(TkUPLUS).set_text(op)
- end
-
- @OP.def_rule("-@", proc{@lex_state == EXPR_FNAME}) do |op, io|
- Token(TkUMINUS).set_text(op)
- end
-
- @OP.def_rules("+", "-") do
- |op, io|
- catch(:RET) do
- if @lex_state == EXPR_ARG
- if @space_seen and peek(0) =~ /[0-9]/
- throw :RET, identify_number(op)
- else
- @lex_state = EXPR_BEG
- end
- elsif @lex_state != EXPR_END and peek(0) =~ /[0-9]/
- throw :RET, identify_number(op)
- else
- @lex_state = EXPR_BEG
- end
- Token(op).set_text(op)
- end
- end
-
- @OP.def_rule(".") do
- @lex_state = EXPR_BEG
- if peek(0) =~ /[0-9]/
- ungetc
- identify_number("")
- else
- # for obj.if
- @lex_state = EXPR_DOT
- Token(TkDOT).set_text(".")
- end
- end
-
- @OP.def_rules("..", "...") do
- |op, io|
- @lex_state = EXPR_BEG
- Token(op).set_text(op)
- end
-
- lex_int2
- end
-
- def lex_int2
- @OP.def_rules("]", "}", ")") do
- |op, io|
- @lex_state = EXPR_END
- @indent -= 1
- Token(op).set_text(op)
- end
-
- @OP.def_rule(":") do
- if @lex_state == EXPR_END || peek(0) =~ /\s/
- @lex_state = EXPR_BEG
- tk = Token(TkCOLON)
- else
- @lex_state = EXPR_FNAME
- tk = Token(TkSYMBEG)
- end
- tk.set_text(":")
- end
-
- @OP.def_rule("::") do
- if @lex_state == EXPR_BEG or @lex_state == EXPR_ARG && @space_seen
- @lex_state = EXPR_BEG
- tk = Token(TkCOLON3)
- else
- @lex_state = EXPR_DOT
- tk = Token(TkCOLON2)
- end
- tk.set_text("::")
- end
-
- @OP.def_rule("/") do
- |op, io|
- if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
- identify_string(op)
- elsif peek(0) == '='
- getc
- @lex_state = EXPR_BEG
- Token(TkOPASGN, :/).set_text("/=") #")
- elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
- identify_string(op)
- else
- @lex_state = EXPR_BEG
- Token("/").set_text(op)
- end
- end
-
- @OP.def_rules("^") do
- @lex_state = EXPR_BEG
- Token("^").set_text("^")
- end
-
- @OP.def_rules(",", ";") do
- |op, io|
- @lex_state = EXPR_BEG
- Token(op).set_text(op)
- end
-
- @OP.def_rule("~") do
- @lex_state = EXPR_BEG
- Token("~").set_text("~")
- end
-
- @OP.def_rule("~@", proc{@lex_state = EXPR_FNAME}) do
- @lex_state = EXPR_BEG
- Token("~").set_text("~@")
- end
-
- @OP.def_rule("(") do
- @indent += 1
- if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
- @lex_state = EXPR_BEG
- tk = Token(TkfLPAREN)
- else
- @lex_state = EXPR_BEG
- tk = Token(TkLPAREN)
- end
- tk.set_text("(")
- end
-
- @OP.def_rule("[]", proc{@lex_state == EXPR_FNAME}) do
- Token("[]").set_text("[]")
- end
-
- @OP.def_rule("[]=", proc{@lex_state == EXPR_FNAME}) do
- Token("[]=").set_text("[]=")
- end
-
- @OP.def_rule("[") do
- @indent += 1
- if @lex_state == EXPR_FNAME
- t = Token(TkfLBRACK)
- else
- if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
- t = Token(TkLBRACK)
- elsif @lex_state == EXPR_ARG && @space_seen
- t = Token(TkLBRACK)
- else
- t = Token(TkfLBRACK)
- end
- @lex_state = EXPR_BEG
- end
- t.set_text("[")
- end
-
- @OP.def_rule("{") do
- @indent += 1
- if @lex_state != EXPR_END && @lex_state != EXPR_ARG
- t = Token(TkLBRACE)
- else
- t = Token(TkfLBRACE)
- end
- @lex_state = EXPR_BEG
- t.set_text("{")
- end
-
- @OP.def_rule('\\') do #'
- if getc == "\n"
- @space_seen = true
- @continue = true
- Token(TkSPACE).set_text("\\\n")
- else
- ungetc
- Token("\\").set_text("\\") #"
- end
- end
-
- @OP.def_rule('%') do
- |op, io|
- if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
- identify_quotation('%')
- elsif peek(0) == '='
- getc
- Token(TkOPASGN, "%").set_text("%=")
- elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
- identify_quotation('%')
- else
- @lex_state = EXPR_BEG
- Token("%").set_text("%")
- end
- end
-
- @OP.def_rule('$') do #'
- identify_gvar
- end
-
- @OP.def_rule('@') do
- if peek(0) =~ /[@\w_]/
- ungetc
- identify_identifier
- else
- Token("@").set_text("@")
- end
- end
-
- @OP.def_rule("__END__", proc{@prev_char_no == 0 && peek(0) =~ /[\r\n]/}) do
- throw :eof
- end
-
- @OP.def_rule("") do
- |op, io|
- printf "MATCH: start %s: %s\n", op, io.inspect if RDoc::RubyLex.debug?
- if peek(0) =~ /[0-9]/
- t = identify_number("")
- elsif peek(0) =~ /[\w_]/
- t = identify_identifier
- end
- printf "MATCH: end %s: %s\n", op, io.inspect if RDoc::RubyLex.debug?
- t
- end
- end
-
- def identify_gvar
- @lex_state = EXPR_END
- str = "$"
-
- tk = case ch = getc
- when /[~_*$?!@\/\\;,=:<>".]/ #"
- str << ch
- Token(TkGVAR, str)
-
- when "-"
- str << "-" << getc
- Token(TkGVAR, str)
-
- when "&", "`", "'", "+"
- str << ch
- Token(TkBACK_REF, str)
-
- when /[1-9]/
- str << ch
- while (ch = getc) =~ /[0-9]/
- str << ch
- end
- ungetc
- Token(TkNTH_REF)
- when /\w/
- ungetc
- ungetc
- return identify_identifier
- else
- ungetc
- Token("$")
- end
- tk.set_text(str)
- end
-
- def identify_identifier
- token = ""
- token.concat getc if peek(0) =~ /[$@]/
- token.concat getc if peek(0) == "@"
-
- while (ch = getc) =~ /\w|_/
- print ":", ch, ":" if RDoc::RubyLex.debug?
- token.concat ch
- end
- ungetc
-
- if ch == "!" or ch == "?"
- token.concat getc
- end
- # fix token
-
- # $stderr.puts "identifier - #{token}, state = #@lex_state"
-
- case token
- when /^\$/
- return Token(TkGVAR, token).set_text(token)
- when /^\@/
- @lex_state = EXPR_END
- return Token(TkIVAR, token).set_text(token)
- end
-
- if @lex_state != EXPR_DOT
- print token, "\n" if RDoc::RubyLex.debug?
-
- token_c, *trans = TkReading2Token[token]
- if token_c
- # reserved word?
-
- if (@lex_state != EXPR_BEG &&
- @lex_state != EXPR_FNAME &&
- trans[1])
- # modifiers
- token_c = TkSymbol2Token[trans[1]]
- @lex_state = trans[0]
- else
- if @lex_state != EXPR_FNAME
- if ENINDENT_CLAUSE.include?(token)
- @indent += 1
- elsif DEINDENT_CLAUSE.include?(token)
- @indent -= 1
- end
- @lex_state = trans[0]
- else
- @lex_state = EXPR_END
- end
- end
- return Token(token_c, token).set_text(token)
- end
- end
-
- if @lex_state == EXPR_FNAME
- @lex_state = EXPR_END
- if peek(0) == '='
- token.concat getc
- end
- elsif @lex_state == EXPR_BEG || @lex_state == EXPR_DOT
- @lex_state = EXPR_ARG
- else
- @lex_state = EXPR_END
- end
-
- if token[0, 1] =~ /[A-Z]/
- return Token(TkCONSTANT, token).set_text(token)
- elsif token[token.size - 1, 1] =~ /[!?]/
- return Token(TkFID, token).set_text(token)
- else
- return Token(TkIDENTIFIER, token).set_text(token)
- end
- end
-
- def identify_here_document
- ch = getc
- if ch == "-"
- ch = getc
- indent = true
- end
- if /['"`]/ =~ ch # '
- lt = ch
- quoted = ""
- while (c = getc) && c != lt
- quoted.concat c
- end
- else
- lt = '"'
- quoted = ch.dup
- while (c = getc) && c =~ /\w/
- quoted.concat c
- end
- ungetc
- end
-
- ltback, @ltype = @ltype, lt
- reserve = ""
-
- while ch = getc
- reserve << ch
- if ch == "\\" #"
- ch = getc
- reserve << ch
- elsif ch == "\n"
- break
- end
- end
-
- str = ""
- while (l = gets)
- l.chomp!
- l.strip! if indent
- break if l == quoted
- str << l.chomp << "\n"
- end
-
- @reader.divert_read_from(reserve)
-
- @ltype = ltback
- @lex_state = EXPR_END
- Token(Ltype2Token[lt], str).set_text(str.dump)
- end
-
- def identify_quotation(initial_char)
- ch = getc
- if lt = PERCENT_LTYPE[ch]
- initial_char += ch
- ch = getc
- elsif ch =~ /\W/
- lt = "\""
- else
- fail SyntaxError, "unknown type of %string ('#{ch}')"
- end
-# if ch !~ /\W/
-# ungetc
-# next
-# end
- #@ltype = lt
- @quoted = ch unless @quoted = PERCENT_PAREN[ch]
- identify_string(lt, @quoted, ch, initial_char)
- end
-
- def identify_number(start)
- str = start.dup
-
- if start == "+" or start == "-" or start == ""
- start = getc
- str << start
- end
-
- @lex_state = EXPR_END
-
- if start == "0"
- if peek(0) == "x"
- ch = getc
- str << ch
- match = /[0-9a-f_]/
- else
- match = /[0-7_]/
- end
- while ch = getc
- if ch !~ match
- ungetc
- break
- else
- str << ch
- end
- end
- return Token(TkINTEGER).set_text(str)
- end
-
- type = TkINTEGER
- allow_point = TRUE
- allow_e = TRUE
- while ch = getc
- case ch
- when /[0-9_]/
- str << ch
-
- when allow_point && "."
- type = TkFLOAT
- if peek(0) !~ /[0-9]/
- ungetc
- break
- end
- str << ch
- allow_point = false
-
- when allow_e && "e", allow_e && "E"
- str << ch
- type = TkFLOAT
- if peek(0) =~ /[+-]/
- str << getc
- end
- allow_e = false
- allow_point = false
- else
- ungetc
- break
- end
- end
- Token(type).set_text(str)
- end
-
- def identify_string(ltype, quoted = ltype, opener=nil, initial_char = nil)
- @ltype = ltype
- @quoted = quoted
- subtype = nil
-
- str = ""
- str << initial_char if initial_char
- str << (opener||quoted)
-
- nest = 0
- begin
- while ch = getc
- str << ch
- if @quoted == ch
- if nest == 0
- break
- else
- nest -= 1
- end
- elsif opener == ch
- nest += 1
- elsif @ltype != "'" && @ltype != "]" and ch == "#"
- ch = getc
- if ch == "{"
- subtype = true
- str << ch << skip_inner_expression
- else
- ungetc(ch)
- end
- elsif ch == '\\' #'
- str << read_escape
- end
- end
- if @ltype == "/"
- if peek(0) =~ /i|o|n|e|s/
- str << getc
- end
- end
- if subtype
- Token(DLtype2Token[ltype], str)
- else
- Token(Ltype2Token[ltype], str)
- end.set_text(str)
- ensure
- @ltype = nil
- @quoted = nil
- @lex_state = EXPR_END
- end
- end
-
- def skip_inner_expression
- res = ""
- nest = 0
- while (ch = getc)
- res << ch
- if ch == '}'
- break if nest.zero?
- nest -= 1
- elsif ch == '{'
- nest += 1
- end
- end
- res
- end
-
- def identify_comment
- @ltype = "#"
- comment = "#"
- while ch = getc
- if ch == "\\"
- ch = getc
- if ch == "\n"
- ch = " "
- else
- comment << "\\"
- end
- else
- if ch == "\n"
- @ltype = nil
- ungetc
- break
- end
- end
- comment << ch
- end
- return Token(TkCOMMENT).set_text(comment)
- end
-
- def read_escape
- res = ""
- case ch = getc
- when /[0-7]/
- ungetc ch
- 3.times do
- case ch = getc
- when /[0-7]/
- when nil
- break
- else
- ungetc
- break
- end
- res << ch
- end
-
- when "x"
- res << ch
- 2.times do
- case ch = getc
- when /[0-9a-fA-F]/
- when nil
- break
- else
- ungetc
- break
- end
- res << ch
- end
-
- when "M"
- res << ch
- if (ch = getc) != '-'
- ungetc
- else
- res << ch
- if (ch = getc) == "\\" #"
- res << ch
- res << read_escape
- else
- res << ch
- end
- end
-
- when "C", "c" #, "^"
- res << ch
- if ch == "C" and (ch = getc) != "-"
- ungetc
- else
- res << ch
- if (ch = getc) == "\\" #"
- res << ch
- res << read_escape
- else
- res << ch
- end
- end
- else
- res << ch
- end
- res
- end
-end
-
-##
-# Extracts code elements from a source file returning a TopLevel object
-# containing the constituent file elements.
-#
-# This file is based on rtags
-#
-# RubyParser understands how to document:
-# * classes
-# * modules
-# * methods
-# * constants
-# * aliases
-# * private, public, protected
-# * private_class_function, public_class_function
-# * module_function
-# * attr, attr_reader, attr_writer, attr_accessor
-# * extra accessors given on the command line
-# * metaprogrammed methods
-# * require
-# * include
-#
-# == Method Arguments
-#
-#--
-# NOTE: I don't think this works, needs tests, remove the paragraph following
-# this block when known to work
-#
-# The parser extracts the arguments from the method definition. You can
-# override this with a custom argument definition using the :args: directive:
-#
-# ##
-# # This method tries over and over until it is tired
-#
-# def go_go_go(thing_to_try, tries = 10) # :args: thing_to_try
-# puts thing_to_try
-# go_go_go thing_to_try, tries - 1
-# end
-#
-# If you have a more-complex set of overrides you can use the :call-seq:
-# directive:
-#++
-#
-# The parser extracts the arguments from the method definition. You can
-# override this with a custom argument definition using the :call-seq:
-# directive:
-#
-# ##
-# # This method can be called with a range or an offset and length
-# #
-# # :call-seq:
-# # my_method(Range)
-# # my_method(offset, length)
-#
-# def my_method(*args)
-# end
-#
-# The parser extracts +yield+ expressions from method bodies to gather the
-# yielded argument names. If your method manually calls a block instead of
-# yielding or you want to override the discovered argument names use
-# the :yields: directive:
-#
-# ##
-# # My method is awesome
-#
-# def my_method(&block) # :yields: happy, times
-# block.call 1, 2
-# end
-#
-# == Metaprogrammed Methods
-#
-# To pick up a metaprogrammed method, the parser looks for a comment starting
-# with '##' before an identifier:
-#
-# ##
-# # This is a meta-programmed method!
-#
-# add_my_method :meta_method, :arg1, :arg2
-#
-# The parser looks at the token after the identifier to determine the name, in
-# this example, :meta_method. If a name cannot be found, a warning is printed
-# and 'unknown is used.
-#
-# You can force the name of a method using the :method: directive:
-#
-# ##
-# # :method: woo_hoo!
-#
-# By default, meta-methods are instance methods. To indicate that a method is
-# a singleton method instead use the :singleton-method: directive:
-#
-# ##
-# # :singleton-method:
-#
-# You can also use the :singleton-method: directive with a name:
-#
-# ##
-# # :singleton-method: woo_hoo!
-#
-# Additionally you can mark a method as an attribute by
-# using :attr:, :attr_reader:, :attr_writer: or :attr_accessor:. Just like
-# for :method:, the name is optional.
-#
-# ##
-# # :attr_reader: my_attr_name
-#
-# == Hidden methods and attributes
-#
-# You can provide documentation for methods that don't appear using
-# the :method:, :singleton-method: and :attr: directives:
-#
-# ##
-# # :attr_writer: ghost_writer
-# # There is an attribute here, but you can't see it!
-#
-# ##
-# # :method: ghost_method
-# # There is a method here, but you can't see it!
-#
-# ##
-# # this is a comment for a regular method
-#
-# def regular_method() end
-#
-# Note that by default, the :method: directive will be ignored if there is a
-# standard rdocable item following it.
-
-class RDoc::Parser::Ruby < RDoc::Parser
-
- parse_files_matching(/\.rbw?$/)
-
- include RDoc::RubyToken
- include RDoc::TokenStream
-
- NORMAL = "::"
- SINGLE = "<<"
-
- def initialize(top_level, file_name, content, options, stats)
- super
-
- @size = 0
- @token_listeners = nil
- @scanner = RDoc::RubyLex.new content, @options
- @scanner.exception_on_syntax_error = false
-
- reset
- end
-
- def add_token_listener(obj)
- @token_listeners ||= []
- @token_listeners << obj
- end
-
- ##
- # Look for the first comment in a file that isn't a shebang line.
-
- def collect_first_comment
- skip_tkspace
- res = ''
- first_line = true
-
- tk = get_tk
-
- while TkCOMMENT === tk
- if first_line and tk.text =~ /\A#!/ then
- skip_tkspace
- tk = get_tk
- elsif first_line and tk.text =~ /\A#\s*-\*-/ then
- first_line = false
- skip_tkspace
- tk = get_tk
- else
- first_line = false
- res << tk.text << "\n"
- tk = get_tk
-
- if TkNL === tk then
- skip_tkspace false
- tk = get_tk
- end
- end
- end
-
- unget_tk tk
-
- res
- end
-
- def error(msg)
- msg = make_message msg
- $stderr.puts msg
- exit(1)
- end
-
- ##
- # Look for a 'call-seq' in the comment, and override the normal parameter
- # stuff
-
- def extract_call_seq(comment, meth)
- if comment.sub!(/:?call-seq:(.*?)^\s*\#?\s*$/m, '') then
- seq = $1
- seq.gsub!(/^\s*\#\s*/, '')
- meth.call_seq = seq
- end
-
- meth
- end
-
- def get_bool
- skip_tkspace
- tk = get_tk
- case tk
- when TkTRUE
- true
- when TkFALSE, TkNIL
- false
- else
- unget_tk tk
- true
- end
- end
-
- ##
- # Look for the name of a class of module (optionally with a leading :: or
- # with :: separated named) and return the ultimate name and container
-
- def get_class_or_module(container)
- skip_tkspace
- name_t = get_tk
-
- # class ::A -> A is in the top level
- if TkCOLON2 === name_t then
- name_t = get_tk
- container = @top_level
- end
-
- skip_tkspace(false)
-
- while TkCOLON2 === peek_tk do
- prev_container = container
- container = container.find_module_named(name_t.name)
- if !container
-# warn("Couldn't find module #{name_t.name}")
- container = prev_container.add_module RDoc::NormalModule, name_t.name
- end
- get_tk
- name_t = get_tk
- end
- skip_tkspace(false)
- return [container, name_t]
- end
-
- ##
- # Return a superclass, which can be either a constant of an expression
-
- def get_class_specification
- tk = get_tk
- return "self" if TkSELF === tk
-
- res = ""
- while TkCOLON2 === tk or TkCOLON3 === tk or TkCONSTANT === tk do
- res += tk.text
- tk = get_tk
- end
-
- unget_tk(tk)
- skip_tkspace(false)
-
- get_tkread # empty out read buffer
-
- tk = get_tk
-
- case tk
- when TkNL, TkCOMMENT, TkSEMICOLON then
- unget_tk(tk)
- return res
- end
-
- res += parse_call_parameters(tk)
- res
- end
-
- ##
- # Parse a constant, which might be qualified by one or more class or module
- # names
-
- def get_constant
- res = ""
- skip_tkspace(false)
- tk = get_tk
-
- while TkCOLON2 === tk or TkCOLON3 === tk or TkCONSTANT === tk do
- res += tk.text
- tk = get_tk
- end
-
-# if res.empty?
-# warn("Unexpected token #{tk} in constant")
-# end
- unget_tk(tk)
- res
- end
-
- ##
- # Get a constant that may be surrounded by parens
-
- def get_constant_with_optional_parens
- skip_tkspace(false)
- nest = 0
- while TkLPAREN === (tk = peek_tk) or TkfLPAREN === tk do
- get_tk
- skip_tkspace(true)
- nest += 1
- end
-
- name = get_constant
-
- while nest > 0
- skip_tkspace(true)
- tk = get_tk
- nest -= 1 if TkRPAREN === tk
- end
- name
- end
-
- def get_symbol_or_name
- tk = get_tk
- case tk
- when TkSYMBOL
- tk.text.sub(/^:/, '')
- when TkId, TkOp
- tk.name
- when TkSTRING
- tk.text
- else
- raise "Name or symbol expected (got #{tk})"
- end
- end
-
- def get_tk
- tk = nil
- if @tokens.empty?
- tk = @scanner.token
- @read.push @scanner.get_read
- puts "get_tk1 => #{tk.inspect}" if $TOKEN_DEBUG
- else
- @read.push @unget_read.shift
- tk = @tokens.shift
- puts "get_tk2 => #{tk.inspect}" if $TOKEN_DEBUG
- end
-
- if TkSYMBEG === tk then
- set_token_position(tk.line_no, tk.char_no)
- tk1 = get_tk
- if TkId === tk1 or TkOp === tk1 or TkSTRING === tk1 or TkDSTRING === tk1 then
- if tk1.respond_to?(:name)
- tk = Token(TkSYMBOL).set_text(":" + tk1.name)
- else
- tk = Token(TkSYMBOL).set_text(":" + tk1.text)
- end
- # remove the identifier we just read (we're about to
- # replace it with a symbol)
- @token_listeners.each do |obj|
- obj.pop_token
- end if @token_listeners
- else
- warn("':' not followed by identifier or operator")
- tk = tk1
- end
- end
-
- # inform any listeners of our shiny new token
- @token_listeners.each do |obj|
- obj.add_token(tk)
- end if @token_listeners
-
- tk
- end
-
- def get_tkread
- read = @read.join("")
- @read = []
- read
- end
-
- ##
- # Look for directives in a normal comment block:
- #
- # #-- - don't display comment from this point forward
- #
- # This routine modifies it's parameter
-
- def look_for_directives_in(context, comment)
- preprocess = RDoc::Markup::PreProcess.new(@file_name,
- @options.rdoc_include)
-
- preprocess.handle(comment) do |directive, param|
- case directive
- when 'enddoc' then
- throw :enddoc
- when 'main' then
- @options.main_page = param
- ''
- when 'method', 'singleton-method' then
- false # ignore
- when 'section' then
- context.set_current_section(param, comment)
- comment.replace ''
- break
- when 'startdoc' then
- context.start_doc
- context.force_documentation = true
- ''
- when 'stopdoc' then
- context.stop_doc
- ''
- when 'title' then
- @options.title = param
- ''
- else
- warn "Unrecognized directive '#{directive}'"
- false
- end
- end
-
- remove_private_comments(comment)
- end
-
- def make_message(msg)
- prefix = "\n" + @file_name + ":"
- if @scanner
- prefix << "#{@scanner.line_no}:#{@scanner.char_no}: "
- end
- return prefix + msg
- end
-
- ##
- # Creates an RDoc::Attr for the name following +tk+, setting the comment to
- # +comment+.
-
- def parse_attr(context, single, tk, comment)
- args = parse_symbol_arg 1
- if args.size > 0
- name = args[0]
- rw = "R"
- skip_tkspace(false)
- tk = get_tk
- if TkCOMMA === tk then
- rw = "RW" if get_bool
- else
- unget_tk tk
- end
- att = RDoc::Attr.new get_tkread, name, rw, comment
- read_documentation_modifiers att, RDoc::ATTR_MODIFIERS
- if att.document_self
- context.add_attribute(att)
- end
- else
- warn("'attr' ignored - looks like a variable")
- end
- end
-
- ##
- # Creates an RDoc::Attr for each attribute listed after +tk+, setting the
- # comment for each to +comment+.
-
- def parse_attr_accessor(context, single, tk, comment)
- args = parse_symbol_arg
- read = get_tkread
- rw = "?"
-
- # TODO If nodoc is given, don't document any of them
-
- tmp = RDoc::CodeObject.new
- read_documentation_modifiers tmp, RDoc::ATTR_MODIFIERS
- return unless tmp.document_self
-
- case tk.name
- when "attr_reader" then rw = "R"
- when "attr_writer" then rw = "W"
- when "attr_accessor" then rw = "RW"
- else
- rw = '?'
- end
-
- for name in args
- att = RDoc::Attr.new get_tkread, name, rw, comment
- context.add_attribute att
- end
- end
-
- def parse_alias(context, single, tk, comment)
- skip_tkspace
- if TkLPAREN === peek_tk then
- get_tk
- skip_tkspace
- end
- new_name = get_symbol_or_name
- @scanner.instance_eval{@lex_state = EXPR_FNAME}
- skip_tkspace
- if TkCOMMA === peek_tk then
- get_tk
- skip_tkspace
- end
- old_name = get_symbol_or_name
-
- al = RDoc::Alias.new get_tkread, old_name, new_name, comment
- read_documentation_modifiers al, RDoc::ATTR_MODIFIERS
- if al.document_self
- context.add_alias(al)
- end
- end
-
- def parse_call_parameters(tk)
- end_token = case tk
- when TkLPAREN, TkfLPAREN
- TkRPAREN
- when TkRPAREN
- return ""
- else
- TkNL
- end
- nest = 0
-
- loop do
- case tk
- when TkSEMICOLON
- break
- when TkLPAREN, TkfLPAREN
- nest += 1
- when end_token
- if end_token == TkRPAREN
- nest -= 1
- break if @scanner.lex_state == EXPR_END and nest <= 0
- else
- break unless @scanner.continue
- end
- when TkCOMMENT
- unget_tk(tk)
- break
- end
- tk = get_tk
- end
- res = get_tkread.tr("\n", " ").strip
- res = "" if res == ";"
- res
- end
-
- def parse_class(container, single, tk, comment)
- container, name_t = get_class_or_module container
-
- case name_t
- when TkCONSTANT
- name = name_t.name
- superclass = "Object"
-
- if TkLT === peek_tk then
- get_tk
- skip_tkspace(true)
- superclass = get_class_specification
- superclass = "<unknown>" if superclass.empty?
- end
-
- cls_type = single == SINGLE ? RDoc::SingleClass : RDoc::NormalClass
- cls = container.add_class cls_type, name, superclass
-
- @stats.add_class cls
-
- read_documentation_modifiers cls, RDoc::CLASS_MODIFIERS
- cls.record_location @top_level
-
- parse_statements cls
- cls.comment = comment
-
- when TkLSHFT
- case name = get_class_specification
- when "self", container.name
- parse_statements(container, SINGLE)
- else
- other = RDoc::TopLevel.find_class_named(name)
- unless other
-# other = @top_level.add_class(NormalClass, name, nil)
-# other.record_location(@top_level)
-# other.comment = comment
- other = RDoc::NormalClass.new "Dummy", nil
- end
-
- @stats.add_class other
-
- read_documentation_modifiers other, RDoc::CLASS_MODIFIERS
- parse_statements(other, SINGLE)
- end
-
- else
- warn("Expected class name or '<<'. Got #{name_t.class}: #{name_t.text.inspect}")
- end
- end
-
- def parse_constant(container, single, tk, comment)
- name = tk.name
- skip_tkspace(false)
- eq_tk = get_tk
-
- unless TkASSIGN === eq_tk then
- unget_tk(eq_tk)
- return
- end
-
- nest = 0
- get_tkread
-
- tk = get_tk
- if TkGT === tk then
- unget_tk(tk)
- unget_tk(eq_tk)
- return
- end
-
- loop do
- case tk
- when TkSEMICOLON then
- break
- when TkLPAREN, TkfLPAREN, TkLBRACE, TkLBRACK, TkDO, TkIF, TkUNLESS,
- TkCASE then
- nest += 1
- when TkRPAREN, TkRBRACE, TkRBRACK, TkEND then
- nest -= 1
- when TkCOMMENT then
- if nest <= 0 && @scanner.lex_state == EXPR_END
- unget_tk tk
- break
- end
- when TkNL then
- if nest <= 0 &&
- (@scanner.lex_state == EXPR_END || !@scanner.continue) then
- unget_tk tk
- break
- end
- end
- tk = get_tk
- end
-
- res = get_tkread.tr("\n", " ").strip
- res = "" if res == ";"
-
- con = RDoc::Constant.new name, res, comment
- read_documentation_modifiers con, RDoc::CONSTANT_MODIFIERS
-
- container.add_constant con if con.document_self
- end
-
- ##
- # Generates an RDoc::Method or RDoc::Attr from +comment+ by looking for
- # :method: or :attr: directives in +comment+.
-
- def parse_comment(container, tk, comment)
- line_no = tk.line_no
- column = tk.char_no
-
- singleton = !!comment.sub!(/(^# +:?)(singleton-)(method:)/, '\1\3')
-
- # REFACTOR
- if comment.sub!(/^# +:?method: *(\S*).*?\n/i, '') then
- name = $1 unless $1.empty?
-
- meth = RDoc::GhostMethod.new get_tkread, name
- meth.singleton = singleton
-
- @stats.add_method meth
-
- meth.start_collecting_tokens
- indent = TkSPACE.new 1, 1
- indent.set_text " " * column
-
- position_comment = TkCOMMENT.new(line_no, 1, "# File #{@top_level.absolute_name}, line #{line_no}")
- meth.add_tokens [position_comment, NEWLINE_TOKEN, indent]
-
- meth.params = ''
-
- extract_call_seq comment, meth
-
- container.add_method meth if meth.document_self
-
- meth.comment = comment
- elsif comment.sub!(/# +:?(attr(_reader|_writer|_accessor)?:) *(\S*).*?\n/i, '') then
- rw = case $1
- when 'attr_reader' then 'R'
- when 'attr_writer' then 'W'
- else 'RW'
- end
-
- name = $3 unless $3.empty?
-
- att = RDoc::Attr.new get_tkread, name, rw, comment
- container.add_attribute att
- end
- end
-
- def parse_include(context, comment)
- loop do
- skip_tkspace_comment
-
- name = get_constant_with_optional_parens
- context.add_include RDoc::Include.new(name, comment) unless name.empty?
-
- return unless TkCOMMA === peek_tk
- get_tk
- end
- end
-
- def parse_meta_attr(context, single, tk, comment)
- args = parse_symbol_arg
- read = get_tkread
- rw = "?"
-
- # If nodoc is given, don't document any of them
-
- tmp = RDoc::CodeObject.new
- read_documentation_modifiers tmp, RDoc::ATTR_MODIFIERS
- return unless tmp.document_self
-
- if comment.sub!(/^# +:?(attr(_reader|_writer|_accessor)?): *(\S*).*?\n/i, '') then
- rw = case $1
- when 'attr_reader' then 'R'
- when 'attr_writer' then 'W'
- else 'RW'
- end
- name = $3 unless $3.empty?
- end
-
- for name in args
- att = RDoc::Attr.new get_tkread, name, rw, comment
- context.add_attribute att
- end
- end
-
- ##
- # Parses a meta-programmed method
-
- def parse_meta_method(container, single, tk, comment)
- line_no = tk.line_no
- column = tk.char_no
-
- start_collecting_tokens
- add_token tk
- add_token_listener self
-
- skip_tkspace false
-
- singleton = !!comment.sub!(/(^# +:?)(singleton-)(method:)/, '\1\3')
-
- if comment.sub!(/^# +:?method: *(\S*).*?\n/i, '') then
- name = $1 unless $1.empty?
- end
-
- if name.nil? then
- name_t = get_tk
- case name_t
- when TkSYMBOL then
- name = name_t.text[1..-1]
- when TkSTRING then
- name = name_t.text[1..-2]
- when TkASSIGN then # ignore
- remove_token_listener self
- return
- else
- warn "unknown name token #{name_t.inspect} for meta-method '#{tk.name}'"
- name = 'unknown'
- end
- end
-
- meth = RDoc::MetaMethod.new get_tkread, name
- meth.singleton = singleton
-
- @stats.add_method meth
-
- remove_token_listener self
-
- meth.start_collecting_tokens
- indent = TkSPACE.new 1, 1
- indent.set_text " " * column
-
- position_comment = TkCOMMENT.new(line_no, 1, "# File #{@top_level.absolute_name}, line #{line_no}")
- meth.add_tokens [position_comment, NEWLINE_TOKEN, indent]
- meth.add_tokens @token_stream
-
- add_token_listener meth
-
- meth.params = ''
-
- extract_call_seq comment, meth
-
- container.add_method meth if meth.document_self
-
- last_tk = tk
-
- while tk = get_tk do
- case tk
- when TkSEMICOLON then
- break
- when TkNL then
- break unless last_tk and TkCOMMA === last_tk
- when TkSPACE then
- # expression continues
- else
- last_tk = tk
- end
- end
-
- remove_token_listener meth
-
- meth.comment = comment
- end
-
- ##
- # Parses a method
-
- def parse_method(container, single, tk, comment)
- line_no = tk.line_no
- column = tk.char_no
-
- start_collecting_tokens
- add_token(tk)
- add_token_listener(self)
-
- @scanner.instance_eval do @lex_state = EXPR_FNAME end
-
- skip_tkspace(false)
- name_t = get_tk
- back_tk = skip_tkspace
- meth = nil
- added_container = false
-
- dot = get_tk
- if TkDOT === dot or TkCOLON2 === dot then
- @scanner.instance_eval do @lex_state = EXPR_FNAME end
- skip_tkspace
- name_t2 = get_tk
-
- case name_t
- when TkSELF then
- name = name_t2.name
- when TkCONSTANT then
- name = name_t2.name
- prev_container = container
- container = container.find_module_named(name_t.name)
- unless container then
- added_container = true
- obj = name_t.name.split("::").inject(Object) do |state, item|
- state.const_get(item)
- end rescue nil
-
- type = obj.class == Class ? RDoc::NormalClass : RDoc::NormalModule
-
- unless [Class, Module].include?(obj.class) then
- warn("Couldn't find #{name_t.name}. Assuming it's a module")
- end
-
- if type == RDoc::NormalClass then
- container = prev_container.add_class(type, name_t.name, obj.superclass.name)
- else
- container = prev_container.add_module(type, name_t.name)
- end
-
- container.record_location @top_level
- end
- else
- warn "unexpected method name token #{name_t2.inspect}"
- # break
- skip_method(container)
- return
- end
-
- meth = RDoc::AnyMethod.new(get_tkread, name)
- meth.singleton = true
- else
- unget_tk dot
- back_tk.reverse_each do |token|
- unget_tk token
- end
-
- unless name_t.respond_to? :name then
- warn "unexpected method name token #{name_t.inspect}"
- skip_method container
- return
- end
-
- name = name_t.name
-
- meth = RDoc::AnyMethod.new get_tkread, name
- meth.singleton = (single == SINGLE)
- end
-
- @stats.add_method meth
-
- remove_token_listener self
-
- meth.start_collecting_tokens
- indent = TkSPACE.new 1, 1
- indent.set_text " " * column
-
- token = TkCOMMENT.new(line_no, 1, "# File #{@top_level.absolute_name}, line #{line_no}")
- meth.add_tokens [token, NEWLINE_TOKEN, indent]
- meth.add_tokens @token_stream
-
- add_token_listener meth
-
- @scanner.instance_eval do @continue = false end
- parse_method_parameters meth
-
- if meth.document_self then
- container.add_method meth
- elsif added_container then
- container.document_self = false
- end
-
- # Having now read the method parameters and documentation modifiers, we
- # now know whether we have to rename #initialize to ::new
-
- if name == "initialize" && !meth.singleton then
- if meth.dont_rename_initialize then
- meth.visibility = :protected
- else
- meth.singleton = true
- meth.name = "new"
- meth.visibility = :public
- end
- end
-
- parse_statements(container, single, meth)
-
- remove_token_listener(meth)
-
- extract_call_seq comment, meth
-
- meth.comment = comment
- end
-
- def parse_method_or_yield_parameters(method = nil,
- modifiers = RDoc::METHOD_MODIFIERS)
- skip_tkspace(false)
- tk = get_tk
-
- # Little hack going on here. In the statement
- # f = 2*(1+yield)
- # We see the RPAREN as the next token, so we need
- # to exit early. This still won't catch all cases
- # (such as "a = yield + 1"
- end_token = case tk
- when TkLPAREN, TkfLPAREN
- TkRPAREN
- when TkRPAREN
- return ""
- else
- TkNL
- end
- nest = 0
-
- loop do
- case tk
- when TkSEMICOLON then
- break
- when TkLBRACE then
- nest += 1
- when TkRBRACE then
- # we might have a.each {|i| yield i }
- unget_tk(tk) if nest.zero?
- nest -= 1
- break if nest <= 0
- when TkLPAREN, TkfLPAREN then
- nest += 1
- when end_token then
- if end_token == TkRPAREN
- nest -= 1
- break if @scanner.lex_state == EXPR_END and nest <= 0
- else
- break unless @scanner.continue
- end
- when method && method.block_params.nil? && TkCOMMENT then
- unget_tk tk
- read_documentation_modifiers method, modifiers
- @read.pop
- when TkCOMMENT then
- @read.pop
- end
- tk = get_tk
- end
-
- res = get_tkread.gsub(/\s+/, ' ').strip
- res = '' if res == ';'
- res
- end
-
- ##
- # Capture the method's parameters. Along the way, look for a comment
- # containing:
- #
- # # yields: ....
- #
- # and add this as the block_params for the method
-
- def parse_method_parameters(method)
- res = parse_method_or_yield_parameters method
-
- res = "(#{res})" unless res =~ /\A\(/
- method.params = res unless method.params
-
- if method.block_params.nil? then
- skip_tkspace(false)
- read_documentation_modifiers method, RDoc::METHOD_MODIFIERS
- end
- end
-
- def parse_module(container, single, tk, comment)
- container, name_t = get_class_or_module(container)
-
- name = name_t.name
-
- mod = container.add_module RDoc::NormalModule, name
- mod.record_location @top_level
-
- @stats.add_module mod
-
- read_documentation_modifiers mod, RDoc::CLASS_MODIFIERS
- parse_statements(mod)
- mod.comment = comment
- end
-
- def parse_require(context, comment)
- skip_tkspace_comment
- tk = get_tk
- if TkLPAREN === tk then
- skip_tkspace_comment
- tk = get_tk
- end
-
- name = nil
- case tk
- when TkSTRING
- name = tk.text
- # when TkCONSTANT, TkIDENTIFIER, TkIVAR, TkGVAR
- # name = tk.name
- when TkDSTRING
- warn "Skipping require of dynamic string: #{tk.text}"
- # else
- # warn "'require' used as variable"
- end
- if name
- context.add_require RDoc::Require.new(name, comment)
- else
- unget_tk(tk)
- end
- end
-
- def parse_statements(container, single = NORMAL, current_method = nil,
- comment = '')
- nest = 1
- save_visibility = container.visibility
-
- non_comment_seen = true
-
- while tk = get_tk do
- keep_comment = false
-
- non_comment_seen = true unless TkCOMMENT === tk
-
- case tk
- when TkNL then
- skip_tkspace true # Skip blanks and newlines
- tk = get_tk
-
- if TkCOMMENT === tk then
- if non_comment_seen then
- # Look for RDoc in a comment about to be thrown away
- parse_comment container, tk, comment unless comment.empty?
-
- comment = ''
- non_comment_seen = false
- end
-
- while TkCOMMENT === tk do
- comment << tk.text << "\n"
- tk = get_tk # this is the newline
- skip_tkspace(false) # leading spaces
- tk = get_tk
- end
-
- unless comment.empty? then
- look_for_directives_in container, comment
-
- if container.done_documenting then
- container.ongoing_visibility = save_visibility
- end
- end
-
- keep_comment = true
- else
- non_comment_seen = true
- end
-
- unget_tk tk
- keep_comment = true
-
- when TkCLASS then
- if container.document_children then
- parse_class container, single, tk, comment
- else
- nest += 1
- end
-
- when TkMODULE then
- if container.document_children then
- parse_module container, single, tk, comment
- else
- nest += 1
- end
-
- when TkDEF then
- if container.document_self then
- parse_method container, single, tk, comment
- else
- nest += 1
- end
-
- when TkCONSTANT then
- if container.document_self then
- parse_constant container, single, tk, comment
- end
-
- when TkALIAS then
- if container.document_self then
- parse_alias container, single, tk, comment
- end
-
- when TkYIELD then
- if current_method.nil? then
- warn "Warning: yield outside of method" if container.document_self
- else
- parse_yield container, single, tk, current_method
- end
-
- # Until and While can have a 'do', which shouldn't increase the nesting.
- # We can't solve the general case, but we can handle most occurrences by
- # ignoring a do at the end of a line.
-
- when TkUNTIL, TkWHILE then
- nest += 1
- skip_optional_do_after_expression
-
- # 'for' is trickier
- when TkFOR then
- nest += 1
- skip_for_variable
- skip_optional_do_after_expression
-
- when TkCASE, TkDO, TkIF, TkUNLESS, TkBEGIN then
- nest += 1
-
- when TkIDENTIFIER then
- if nest == 1 and current_method.nil? then
- case tk.name
- when 'private', 'protected', 'public', 'private_class_method',
- 'public_class_method', 'module_function' then
- parse_visibility container, single, tk
- keep_comment = true
- when 'attr' then
- parse_attr container, single, tk, comment
- when /^attr_(reader|writer|accessor)$/ then
- parse_attr_accessor container, single, tk, comment
- when 'alias_method' then
- if container.document_self then
- parse_alias container, single, tk, comment
- end
- else
- if container.document_self and comment =~ /\A#\#$/ then
- parse_meta_method container, single, tk, comment
- end
- end
- end
-
- case tk.name
- when "require" then
- parse_require container, comment
- when "include" then
- parse_include container, comment
- end
-
- when TkEND then
- nest -= 1
- if nest == 0 then
- read_documentation_modifiers container, RDoc::CLASS_MODIFIERS
- container.ongoing_visibility = save_visibility
- return
- end
-
- end
-
- comment = '' unless keep_comment
-
- begin
- get_tkread
- skip_tkspace(false)
- end while peek_tk == TkNL
- end
- end
-
- def parse_symbol_arg(no = nil)
- args = []
- skip_tkspace_comment
- case tk = get_tk
- when TkLPAREN
- loop do
- skip_tkspace_comment
- if tk1 = parse_symbol_in_arg
- args.push tk1
- break if no and args.size >= no
- end
-
- skip_tkspace_comment
- case tk2 = get_tk
- when TkRPAREN
- break
- when TkCOMMA
- else
- warn("unexpected token: '#{tk2.inspect}'") if $DEBUG_RDOC
- break
- end
- end
- else
- unget_tk tk
- if tk = parse_symbol_in_arg
- args.push tk
- return args if no and args.size >= no
- end
-
- loop do
- skip_tkspace(false)
-
- tk1 = get_tk
- unless TkCOMMA === tk1 then
- unget_tk tk1
- break
- end
-
- skip_tkspace_comment
- if tk = parse_symbol_in_arg
- args.push tk
- break if no and args.size >= no
- end
- end
- end
- args
- end
-
- def parse_symbol_in_arg
- case tk = get_tk
- when TkSYMBOL
- tk.text.sub(/^:/, '')
- when TkSTRING
- eval @read[-1]
- else
- warn("Expected symbol or string, got #{tk.inspect}") if $DEBUG_RDOC
- nil
- end
- end
-
- def parse_top_level_statements(container)
- comment = collect_first_comment
- look_for_directives_in(container, comment)
- container.comment = comment unless comment.empty?
- parse_statements container, NORMAL, nil, comment
- end
-
- def parse_visibility(container, single, tk)
- singleton = (single == SINGLE)
-
- vis_type = tk.name
-
- vis = case vis_type
- when 'private' then :private
- when 'protected' then :protected
- when 'public' then :public
- when 'private_class_method' then
- singleton = true
- :private
- when 'public_class_method' then
- singleton = true
- :public
- when 'module_function' then
- singleton = true
- :public
- else
- raise "Invalid visibility: #{tk.name}"
- end
-
- skip_tkspace_comment false
-
- case peek_tk
- # Ryan Davis suggested the extension to ignore modifiers, because he
- # often writes
- #
- # protected unless $TESTING
- #
- when TkNL, TkUNLESS_MOD, TkIF_MOD, TkSEMICOLON then
- container.ongoing_visibility = vis
- else
- if vis_type == 'module_function' then
- args = parse_symbol_arg
- container.set_visibility_for args, :private, false
-
- module_functions = []
-
- container.methods_matching args do |m|
- s_m = m.dup
- s_m.singleton = true if RDoc::AnyMethod === s_m
- s_m.visibility = :public
- module_functions << s_m
- end
-
- module_functions.each do |s_m|
- case s_m
- when RDoc::AnyMethod then
- container.add_method s_m
- when RDoc::Attr then
- container.add_attribute s_m
- end
- end
- else
- args = parse_symbol_arg
- container.set_visibility_for args, vis, singleton
- end
- end
- end
-
- def parse_yield_parameters
- parse_method_or_yield_parameters
- end
-
- def parse_yield(context, single, tk, method)
- if method.block_params.nil?
- get_tkread
- @scanner.instance_eval{@continue = false}
- method.block_params = parse_yield_parameters
- end
- end
-
- def peek_read
- @read.join('')
- end
-
- ##
- # Peek at the next token, but don't remove it from the stream
-
- def peek_tk
- unget_tk(tk = get_tk)
- tk
- end
-
- ##
- # Directives are modifier comments that can appear after class, module, or
- # method names. For example:
- #
- # def fred # :yields: a, b
- #
- # or:
- #
- # class MyClass # :nodoc:
- #
- # We return the directive name and any parameters as a two element array
-
- def read_directive(allowed)
- tk = get_tk
- result = nil
-
- if TkCOMMENT === tk then
- if tk.text =~ /\s*:?(\w+):\s*(.*)/ then
- directive = $1.downcase
- if allowed.include? directive then
- result = [directive, $2]
- end
- end
- else
- unget_tk tk
- end
-
- result
- end
-
- def read_documentation_modifiers(context, allow)
- dir = read_directive(allow)
-
- case dir[0]
- when "notnew", "not_new", "not-new" then
- context.dont_rename_initialize = true
-
- when "nodoc" then
- context.document_self = false
- if dir[1].downcase == "all"
- context.document_children = false
- end
-
- when "doc" then
- context.document_self = true
- context.force_documentation = true
-
- when "yield", "yields" then
- unless context.params.nil?
- context.params.sub!(/(,|)\s*&\w+/,'') # remove parameter &proc
- end
-
- context.block_params = dir[1]
-
- when "arg", "args" then
- context.params = dir[1]
- end if dir
- end
-
- def remove_private_comments(comment)
- comment.gsub!(/^#--\n.*?^#\+\+/m, '')
- comment.sub!(/^#--\n.*/m, '')
- end
-
- def remove_token_listener(obj)
- @token_listeners.delete(obj)
- end
-
- def reset
- @tokens = []
- @unget_read = []
- @read = []
- end
-
- def scan
- reset
-
- catch(:eof) do
- catch(:enddoc) do
- begin
- parse_top_level_statements(@top_level)
- rescue Exception => e
- $stderr.puts <<-EOF
-
-
-RDoc failure in #{@file_name} at or around line #{@scanner.line_no} column
-#{@scanner.char_no}
-
-Before reporting this, could you check that the file you're documenting
-compiles cleanly--RDoc is not a full Ruby parser, and gets confused easily if
-fed invalid programs.
-
-The internal error was:
-
- EOF
-
- e.set_backtrace(e.backtrace[0,4])
- raise
- end
- end
- end
-
- @top_level
- end
-
- ##
- # while, until, and for have an optional do
-
- def skip_optional_do_after_expression
- skip_tkspace(false)
- tk = get_tk
- case tk
- when TkLPAREN, TkfLPAREN
- end_token = TkRPAREN
- else
- end_token = TkNL
- end
-
- nest = 0
- @scanner.instance_eval{@continue = false}
-
- loop do
- case tk
- when TkSEMICOLON
- break
- when TkLPAREN, TkfLPAREN
- nest += 1
- when TkDO
- break if nest.zero?
- when end_token
- if end_token == TkRPAREN
- nest -= 1
- break if @scanner.lex_state == EXPR_END and nest.zero?
- else
- break unless @scanner.continue
- end
- end
- tk = get_tk
- end
- skip_tkspace(false)
-
- get_tk if TkDO === peek_tk
- end
-
- ##
- # skip the var [in] part of a 'for' statement
-
- def skip_for_variable
- skip_tkspace(false)
- tk = get_tk
- skip_tkspace(false)
- tk = get_tk
- unget_tk(tk) unless TkIN === tk
- end
-
- def skip_method(container)
- meth = RDoc::AnyMethod.new "", "anon"
- parse_method_parameters(meth)
- parse_statements(container, false, meth)
- end
-
- ##
- # Skip spaces
-
- def skip_tkspace(skip_nl = true)
- tokens = []
-
- while TkSPACE === (tk = get_tk) or (skip_nl and TkNL === tk) do
- tokens.push tk
- end
-
- unget_tk(tk)
- tokens
- end
-
- ##
- # Skip spaces until a comment is found
-
- def skip_tkspace_comment(skip_nl = true)
- loop do
- skip_tkspace(skip_nl)
- return unless TkCOMMENT === peek_tk
- get_tk
- end
- end
-
- def unget_tk(tk)
- @tokens.unshift tk
- @unget_read.unshift @read.pop
-
- # Remove this token from any listeners
- @token_listeners.each do |obj|
- obj.pop_token
- end if @token_listeners
- end
-
- def warn(msg)
- return if @options.quiet
- msg = make_message msg
- $stderr.puts msg
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/simple.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/simple.rb
deleted file mode 100644
index e34ce70e5..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/parser/simple.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'rdoc/parser'
-
-##
-# Parse a non-source file. We basically take the whole thing as one big
-# comment. If the first character in the file is '#', we strip leading pound
-# signs.
-
-class RDoc::Parser::Simple < RDoc::Parser
-
- parse_files_matching(//)
-
- ##
- # Prepare to parse a plain file
-
- def initialize(top_level, file_name, content, options, stats)
- super
-
- preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include
-
- preprocess.handle @content do |directive, param|
- warn "Unrecognized directive '#{directive}' in #{@file_name}"
- end
- end
-
- ##
- # Extract the file contents and attach them to the TopLevel as a comment
-
- def scan
- @top_level.comment = remove_private_comments(@content)
- @top_level.parser = self.class
- @top_level
- end
-
- def remove_private_comments(comment)
- comment.gsub(/^--\n.*?^\+\+/m, '').sub(/^--\n.*/m, '')
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/rdoc.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/rdoc.rb
deleted file mode 100644
index b854988ac..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/rdoc.rb
+++ /dev/null
@@ -1,375 +0,0 @@
-require 'rdoc'
-
-require 'rdoc/parser'
-
-# Simple must come first
-require 'rdoc/parser/simple'
-require 'rdoc/parser/ruby'
-require 'rdoc/parser/c'
-require 'rdoc/parser/perl'
-
-require 'rdoc/stats'
-require 'rdoc/options'
-
-require 'rdoc/diagram'
-
-require 'find'
-require 'fileutils'
-require 'time'
-require 'thread'
-
-##
-# Encapsulate the production of rdoc documentation. Basically you can use this
-# as you would invoke rdoc from the command line:
-#
-# rdoc = RDoc::RDoc.new
-# rdoc.document(args)
-#
-# Where +args+ is an array of strings, each corresponding to an argument you'd
-# give rdoc on the command line. See rdoc/rdoc.rb for details.
-
-class RDoc::RDoc
-
- ##
- # Generator instance used for creating output
-
- attr_accessor :generator
-
- ##
- # RDoc options
-
- attr_reader :options
-
- ##
- # Accessor for statistics. Available after each call to parse_files
-
- attr_reader :stats
-
- ##
- # This is the list of supported output generators
-
- GENERATORS = {}
-
- ##
- # Add +klass+ that can generate output after parsing
-
- def self.add_generator(klass)
- name = klass.name.sub(/^RDoc::Generator::/, '').downcase
- GENERATORS[name] = klass
- end
-
- ##
- # Active RDoc::RDoc instance
-
- def self.current
- @current
- end
-
- ##
- # Sets the active RDoc::RDoc instance
-
- def self.current=(rdoc)
- @current = rdoc
- end
-
- def initialize
- @generator = nil
- @options = nil
- @stats = nil
- end
-
- ##
- # Report an error message and exit
-
- def error(msg)
- raise RDoc::Error, msg
- end
-
- ##
- # Turns RDoc from stdin into HTML
-
- def handle_pipe
- @html = RDoc::Markup::ToHtml.new
-
- out = @html.convert $stdin.read
-
- $stdout.write out
- end
-
- ##
- # Create an output dir if it doesn't exist. If it does exist, but doesn't
- # contain the flag file <tt>created.rid</tt> then we refuse to use it, as
- # we may clobber some manually generated documentation
-
- def setup_output_dir(op_dir, force)
- flag_file = output_flag_file op_dir
-
- if File.exist? op_dir then
- unless File.directory? op_dir then
- error "'#{op_dir}' exists, and is not a directory"
- end
- begin
- created = File.read(flag_file)
- rescue SystemCallError
- error "\nDirectory #{op_dir} already exists, but it looks like it\n" +
- "isn't an RDoc directory. Because RDoc doesn't want to risk\n" +
- "destroying any of your existing files, you'll need to\n" +
- "specify a different output directory name (using the\n" +
- "--op <dir> option).\n\n"
- else
- last = (Time.parse(created) unless force rescue nil)
- end
- else
- FileUtils.mkdir_p(op_dir)
- end
- last
- end
-
- ##
- # Update the flag file in an output directory.
-
- def update_output_dir(op_dir, time)
- File.open(output_flag_file(op_dir), "w") { |f| f.puts time.rfc2822 }
- end
-
- ##
- # Return the path name of the flag file in an output directory.
-
- def output_flag_file(op_dir)
- File.join op_dir, "created.rid"
- end
-
- ##
- # The .document file contains a list of file and directory name patterns,
- # representing candidates for documentation. It may also contain comments
- # (starting with '#')
-
- def parse_dot_doc_file(in_dir, filename, options)
- # read and strip comments
- patterns = File.read(filename).gsub(/#.*/, '')
-
- result = []
-
- patterns.split.each do |patt|
- candidates = Dir.glob(File.join(in_dir, patt))
- result.concat(normalized_file_list(options, candidates))
- end
-
- result
- end
-
- ##
- # Given a list of files and directories, create a list of all the Ruby
- # files they contain.
- #
- # If +force_doc+ is true we always add the given files, if false, only
- # add files that we guarantee we can parse. It is true when looking at
- # files given on the command line, false when recursing through
- # subdirectories.
- #
- # The effect of this is that if you want a file with a non-standard
- # extension parsed, you must name it explicitly.
-
- def normalized_file_list(options, relative_files, force_doc = false,
- exclude_pattern = nil)
- file_list = []
-
- relative_files.each do |rel_file_name|
- next if exclude_pattern && exclude_pattern =~ rel_file_name
- stat = File.stat rel_file_name rescue next
-
- case type = stat.ftype
- when "file"
- next if @last_created and stat.mtime < @last_created
-
- if force_doc or RDoc::Parser.can_parse(rel_file_name) then
- file_list << rel_file_name.sub(/^\.\//, '')
- end
- when "directory"
- next if rel_file_name == "CVS" || rel_file_name == ".svn"
- dot_doc = File.join(rel_file_name, RDoc::DOT_DOC_FILENAME)
- if File.file?(dot_doc)
- file_list.concat(parse_dot_doc_file(rel_file_name, dot_doc, options))
- else
- file_list.concat(list_files_in_directory(rel_file_name, options))
- end
- else
- raise RDoc::Error, "I can't deal with a #{type} #{rel_file_name}"
- end
- end
-
- file_list
- end
-
- ##
- # Return a list of the files to be processed in a directory. We know that
- # this directory doesn't have a .document file, so we're looking for real
- # files. However we may well contain subdirectories which must be tested
- # for .document files.
-
- def list_files_in_directory(dir, options)
- files = Dir.glob File.join(dir, "*")
-
- normalized_file_list options, files, false, options.exclude
- end
-
- ##
- # Parse each file on the command line, recursively entering directories.
-
- def parse_files(options)
- files = options.files
- files = ["."] if files.empty?
-
- file_list = normalized_file_list(options, files, true, options.exclude)
-
- return [] if file_list.empty?
-
- jobs = SizedQueue.new(@options.threads * 3)
- workers = []
- file_info = []
- file_info_lock = Mutex.new
-
- Thread.abort_on_exception = true
- @stats = RDoc::Stats.new(file_list.size, options.verbosity)
- @stats.begin_adding @options.threads
-
- # Create worker threads.
- @options.threads.times do
- thread = Thread.new do
- while (filename = jobs.pop)
- @stats.add_file(filename)
- content = read_file_contents(filename)
- top_level = RDoc::TopLevel.new filename
-
- parser = RDoc::Parser.for(top_level, filename, content, options,
- @stats)
- result = parser.scan
-
- file_info_lock.synchronize do
- file_info << result
- end
- end
- end
- workers << thread
- end
-
- # Feed filenames to the parser worker threads...
- file_list.each do |filename|
- jobs << filename
- end
- workers.size.times do
- jobs << nil
- end
-
- # ...and wait until they're done.
- workers.each do |thread|
- thread.join
- end
-
- @stats.done_adding
-
- file_info
- end
-
- ##
- # Format up one or more files according to the given arguments.
- #
- # For simplicity, _argv_ is an array of strings, equivalent to the strings
- # that would be passed on the command line. (This isn't a coincidence, as
- # we _do_ pass in ARGV when running interactively). For a list of options,
- # see rdoc/rdoc.rb. By default, output will be stored in a directory
- # called +doc+ below the current directory, so make sure you're somewhere
- # writable before invoking.
- #
- # Throws: RDoc::Error on error
-
- def document(argv)
- RDoc::TopLevel.reset
-
- @options = RDoc::Options.new
- @options.parse argv
-
- if @options.pipe then
- handle_pipe
- exit
- end
-
- @last_created = setup_output_dir @options.op_dir, @options.force_update
-
- start_time = Time.now
-
- file_info = parse_files @options
-
- @options.title = "RDoc Documentation"
-
- if file_info.empty?
- $stderr.puts "\nNo newer files." unless @options.quiet
- else
- gen_klass = @options.generator
-
- unless @options.quiet then
- $stderr.puts "\nGenerating #{gen_klass.name.sub(/^.*::/, '')}..."
- end
-
- @generator = gen_klass.for @options
-
- pwd = Dir.pwd
-
- Dir.chdir @options.op_dir
-
- begin
- self.class.current = self
-
- RDoc::Diagram.new(file_info, @options).draw if @options.diagram
- @generator.generate file_info
- update_output_dir ".", start_time
- ensure
- self.class.current = nil
- Dir.chdir pwd
- end
- end
-
- unless @options.quiet or not @stats then
- puts
- @stats.print
- end
- end
-
- private
-
- def read_file_contents(filename)
- content = if RUBY_VERSION >= '1.9' then
- File.open(filename, "r:ascii-8bit") { |f| f.read }
- else
- File.read filename
- end
-
- if defined? Encoding then
- if /coding:\s*(\S+)/ =~ content[/\A(?:.*\n){0,2}/]
- if enc = ::Encoding.find($1)
- content.force_encoding(enc)
- end
- end
- end
-
- content
- end
-
-end
-
-if Gem.respond_to? :find_files then
- rdoc_extensions = Gem.find_files 'rdoc/discover'
-
- rdoc_extensions.each do |extension|
- begin
- load extension
- rescue => e
- warn "error loading #{extension.inspect}: #{e.message} (#{e.class})"
- end
- end
-end
-
-# require built-in generators after discovery in case they've been replaced
-require 'rdoc/generator/darkfish'
-require 'rdoc/generator/ri'
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/require.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/require.rb
deleted file mode 100644
index 407b55af3..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/require.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'rdoc/code_object'
-
-##
-# A file loaded by \#require
-
-class RDoc::Require < RDoc::CodeObject
-
- ##
- # Name of the required file
-
- attr_accessor :name
-
- ##
- # Creates a new Require that loads +name+ with +comment+
-
- def initialize(name, comment)
- super()
- @name = name.gsub(/'|"/, "") #'
- self.comment = comment
- end
-
- def inspect # :nodoc:
- "#<%s:0x%x require '%s' in %s>" % [
- self.class,
- object_id,
- @name,
- parent_file_name,
- ]
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri.rb
deleted file mode 100644
index a3a858e67..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rdoc'
-
-module RDoc::RI
-
- class Error < RDoc::Error; end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/cache.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/cache.rb
deleted file mode 100644
index 15935abb1..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/cache.rb
+++ /dev/null
@@ -1,187 +0,0 @@
-require 'rdoc/ri'
-
-class RDoc::RI::ClassEntry
-
- attr_reader :name
- attr_reader :path_names
-
- def initialize(path_name, name, in_class)
- @path_names = [ path_name ]
- @name = name
- @in_class = in_class
- @class_methods = []
- @instance_methods = []
- @inferior_classes = []
- end
-
- # We found this class in more than one place, so add
- # in the name from there.
- def add_path(path)
- @path_names << path
- end
-
- ##
- # read in our methods and any classes and modules in our namespace. Methods
- # are stored in files called name-c|i.yaml, where the 'name' portion is the
- # external form of the method name and the c|i is a class|instance flag
-
- def load_from(dir)
- return unless File.exist? dir
-
- Dir.foreach(dir) do |name|
- next if name =~ /^\./
-
- # convert from external to internal form, and
- # extract the instance/class flag
-
- if name =~ /^(.*?)-(c|i).yaml$/
- external_name = $1
- is_class_method = $2 == "c"
- internal_name = RDoc::RI::Writer.external_to_internal(external_name)
- list = is_class_method ? @class_methods : @instance_methods
- path = File.join(dir, name)
- list << RDoc::RI::MethodEntry.new(path, internal_name, is_class_method, self)
- else
- full_name = File.join(dir, name)
- if File.directory?(full_name)
- inf_class = @inferior_classes.find {|c| c.name == name }
- if inf_class
- inf_class.add_path(full_name)
- else
- inf_class = RDoc::RI::ClassEntry.new(full_name, name, self)
- @inferior_classes << inf_class
- end
- inf_class.load_from(full_name)
- end
- end
- end
- end
-
- # Return a list of any classes or modules that we contain
- # that match a given string
-
- def contained_modules_matching(name)
- @inferior_classes.find_all {|c| c.name[name]}
- end
-
- def classes_and_modules
- @inferior_classes
- end
-
- # Return an exact match to a particular name
- def contained_class_named(name)
- @inferior_classes.find {|c| c.name == name}
- end
-
- # return the list of local methods matching name
- # We're split into two because we need distinct behavior
- # when called from the _toplevel_
- def methods_matching(name, is_class_method)
- local_methods_matching(name, is_class_method)
- end
-
- # Find methods matching 'name' in ourselves and in
- # any classes we contain
- def recursively_find_methods_matching(name, is_class_method)
- res = local_methods_matching(name, is_class_method)
- @inferior_classes.each do |c|
- res.concat(c.recursively_find_methods_matching(name, is_class_method))
- end
- res
- end
-
-
- # Return our full name
- def full_name
- res = @in_class.full_name
- res << "::" unless res.empty?
- res << @name
- end
-
- # Return a list of all out method names
- def all_method_names
- res = @class_methods.map {|m| m.full_name }
- @instance_methods.each {|m| res << m.full_name}
- res
- end
-
- private
-
- # Return a list of all our methods matching a given string.
- # Is +is_class_methods+ if 'nil', we don't care if the method
- # is a class method or not, otherwise we only return
- # those methods that match
- def local_methods_matching(name, is_class_method)
-
- list = case is_class_method
- when nil then @class_methods + @instance_methods
- when true then @class_methods
- when false then @instance_methods
- else fail "Unknown is_class_method: #{is_class_method.inspect}"
- end
-
- list.find_all {|m| m.name; m.name[name]}
- end
-end
-
-##
-# A TopLevelEntry is like a class entry, but when asked to search for methods
-# searches all classes, not just itself
-
-class RDoc::RI::TopLevelEntry < RDoc::RI::ClassEntry
- def methods_matching(name, is_class_method)
- res = recursively_find_methods_matching(name, is_class_method)
- end
-
- def full_name
- ""
- end
-
- def module_named(name)
-
- end
-
-end
-
-class RDoc::RI::MethodEntry
- attr_reader :name
- attr_reader :path_name
-
- def initialize(path_name, name, is_class_method, in_class)
- @path_name = path_name
- @name = name
- @is_class_method = is_class_method
- @in_class = in_class
- end
-
- def full_name
- res = @in_class.full_name
- unless res.empty?
- if @is_class_method
- res << "::"
- else
- res << "#"
- end
- end
- res << @name
- end
-end
-
-##
-# We represent everything known about all 'ri' files accessible to this program
-
-class RDoc::RI::Cache
-
- attr_reader :toplevel
-
- def initialize(dirs)
- # At the top level we have a dummy module holding the
- # overall namespace
- @toplevel = RDoc::RI::TopLevelEntry.new('', '::', nil)
-
- dirs.each do |dir|
- @toplevel.load_from(dir)
- end
- end
-
-end
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/descriptions.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/descriptions.rb
deleted file mode 100644
index 99a7cb11f..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/descriptions.rb
+++ /dev/null
@@ -1,156 +0,0 @@
-require 'yaml'
-require 'rdoc/markup/fragments'
-require 'rdoc/ri'
-
-##
-# Descriptions are created by RDoc (in ri_generator) and written out in
-# serialized form into the documentation tree. ri then reads these to generate
-# the documentation
-
-class RDoc::RI::NamedThing
- attr_reader :name
- def initialize(name)
- @name = name
- end
-
- def <=>(other)
- @name <=> other.name
- end
-
- def hash
- @name.hash
- end
-
- def eql?(other)
- @name.eql?(other)
- end
-end
-
-class RDoc::RI::AliasName < RDoc::RI::NamedThing; end
-
-class RDoc::RI::Attribute < RDoc::RI::NamedThing
- attr_reader :rw, :comment
-
- def initialize(name, rw, comment)
- super(name)
- @rw = rw
- @comment = comment
- end
-end
-
-class RDoc::RI::Constant < RDoc::RI::NamedThing
- attr_reader :value, :comment
-
- def initialize(name, value, comment)
- super(name)
- @value = value
- @comment = comment
- end
-end
-
-class RDoc::RI::IncludedModule < RDoc::RI::NamedThing; end
-
-class RDoc::RI::MethodSummary < RDoc::RI::NamedThing
- def initialize(name="")
- super
- end
-end
-
-class RDoc::RI::Description
- attr_accessor :name
- attr_accessor :full_name
- attr_accessor :comment
-
- def serialize
- self.to_yaml
- end
-
- def self.deserialize(from)
- YAML.load(from)
- end
-
- def <=>(other)
- @name <=> other.name
- end
-end
-
-class RDoc::RI::ModuleDescription < RDoc::RI::Description
-
- attr_accessor :class_methods
- attr_accessor :class_method_extensions
- attr_accessor :instance_methods
- attr_accessor :instance_method_extensions
- attr_accessor :attributes
- attr_accessor :constants
- attr_accessor :includes
-
- # merge in another class description into this one
- def merge_in(old)
- merge(@class_methods, old.class_methods)
- merge(@instance_methods, old.instance_methods)
- merge(@attributes, old.attributes)
- merge(@constants, old.constants)
- merge(@includes, old.includes)
- if @comment.nil? || @comment.empty?
- @comment = old.comment
- else
- unless old.comment.nil? or old.comment.empty? then
- if @comment.nil? or @comment.empty? then
- @comment = old.comment
- else
- @comment << RDoc::Markup::Flow::RULE.new
- @comment.concat old.comment
- end
- end
- end
- end
-
- def display_name
- "Module"
- end
-
- # the 'ClassDescription' subclass overrides this
- # to format up the name of a parent
- def superclass_string
- nil
- end
-
- private
-
- def merge(into, from)
- names = {}
- into.each {|i| names[i.name] = i }
- from.each {|i| names[i.name] = i }
- into.replace(names.keys.sort.map {|n| names[n]})
- end
-end
-
-class RDoc::RI::ClassDescription < RDoc::RI::ModuleDescription
- attr_accessor :superclass
-
- def display_name
- "Class"
- end
-
- def superclass_string
- if @superclass && @superclass != "Object"
- @superclass
- else
- nil
- end
- end
-end
-
-class RDoc::RI::MethodDescription < RDoc::RI::Description
-
- attr_accessor :is_class_method
- attr_accessor :visibility
- attr_accessor :block_params
- attr_accessor :is_singleton
- attr_accessor :aliases
- attr_accessor :is_alias_for
- attr_accessor :params
- attr_accessor :source_path
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/display.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/display.rb
deleted file mode 100644
index 173995943..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/display.rb
+++ /dev/null
@@ -1,340 +0,0 @@
-require 'rdoc/ri'
-
-##
-# This is a kind of 'flag' module. If you want to write your own 'ri' display
-# module (perhaps because you're writing an IDE), you write a class which
-# implements the various 'display' methods in RDoc::RI::DefaultDisplay, and
-# include the RDoc::RI::Display module in that class.
-#
-# To access your class from the command line, you can do
-#
-# ruby -r <your source file> ../ri ....
-
-module RDoc::RI::Display
-
- @@display_class = nil
-
- def self.append_features(display_class)
- @@display_class = display_class
- end
-
- def self.new(*args)
- @@display_class.new(*args)
- end
-
-end
-
-##
-# A paging display module. Uses the RDoc::RI::Formatter class to do the actual
-# presentation.
-
-class RDoc::RI::DefaultDisplay
-
- include RDoc::RI::Display
-
- attr_reader :formatter
-
- def initialize(formatter, width, use_stdout, output = $stdout)
- @use_stdout = use_stdout
- @formatter = formatter.new output, width, " "
- end
-
- ##
- # Display information about +klass+. Fetches additional information from
- # +ri_reader+ as necessary.
-
- def display_class_info(klass)
- page do
- superclass = klass.superclass
-
- if superclass
- superclass = " < " + superclass
- else
- superclass = ""
- end
-
- @formatter.draw_line(klass.display_name + ": " +
- klass.full_name + superclass)
-
- display_flow(klass.comment)
- @formatter.draw_line
-
- unless klass.includes.empty?
- @formatter.blankline
- @formatter.display_heading("Includes:", 2, "")
- incs = []
-
- klass.includes.each do |inc|
- incs << inc.name
- end
-
- @formatter.wrap(incs.sort.join(', '))
- end
-
- unless klass.constants.empty?
- @formatter.blankline
- @formatter.display_heading("Constants:", 2, "")
-
- constants = klass.constants.sort_by { |constant| constant.name }
-
- constants.each do |constant|
- @formatter.wrap "#{constant.name} = #{constant.value}"
- if constant.comment then
- @formatter.indent do
- @formatter.display_flow constant.comment
- end
- else
- @formatter.break_to_newline
- end
- end
- end
-
- unless klass.attributes.empty? then
- @formatter.blankline
- @formatter.display_heading 'Attributes:', 2, ''
-
- attributes = klass.attributes.sort_by { |attribute| attribute.name }
-
- attributes.each do |attribute|
- if attribute.comment then
- @formatter.wrap "#{attribute.name} (#{attribute.rw}):"
- @formatter.indent do
- @formatter.display_flow attribute.comment
- end
- else
- @formatter.wrap "#{attribute.name} (#{attribute.rw})"
- @formatter.break_to_newline
- end
- end
- end
-
- return display_class_method_list(klass)
- end
- end
-
- ##
- # Given a Hash mapping a class' methods to method types (returned by
- # display_class_method_list), this method allows the user to choose one of
- # the methods.
-
- def get_class_method_choice(method_map)
- end
-
- ##
- # Display methods on +klass+. Returns a hash mapping method name to method
- # contents
-
- def display_class_method_list(klass)
- method_map = {}
-
- class_data = [
- :class_methods,
- :class_method_extensions,
- :instance_methods,
- :instance_method_extensions,
- ]
-
- class_data.each do |data_type|
- data = klass.send data_type
-
- unless data.nil? or data.empty? then
- @formatter.blankline
-
- heading = data_type.to_s.split('_').join(' ').capitalize << ':'
- @formatter.display_heading heading, 2, ''
-
- method_names = []
- data.each do |item|
- method_names << item.name
-
- if(data_type == :class_methods ||
- data_type == :class_method_extensions) then
- method_map["::#{item.name}"] = :class
- method_map[item.name] = :class
- else
- #
- # Since we iterate over instance methods after class methods,
- # an instance method always will overwrite the unqualified
- # class method entry for a class method of the same name.
- #
- method_map["##{item.name}"] = :instance
- method_map[item.name] = :instance
- end
- end
- method_names.sort!
-
- @formatter.wrap method_names.join(', ')
- end
- end
-
- method_map
- end
- private :display_class_method_list
-
- ##
- # Display an Array of RDoc::Markup::Flow objects, +flow+.
-
- def display_flow(flow)
- if flow and not flow.empty? then
- @formatter.display_flow flow
- else
- @formatter.wrap '[no description]'
- end
- end
-
- ##
- # Display information about +method+.
-
- def display_method_info(method)
- page do
- @formatter.draw_line(method.full_name)
- display_params(method)
-
- @formatter.draw_line
- display_flow(method.comment)
-
- if method.aliases and not method.aliases.empty? then
- @formatter.blankline
- aka = "(also known as #{method.aliases.map { |a| a.name }.join(', ')})"
- @formatter.wrap aka
- end
- end
- end
-
- ##
- # Display the list of +methods+.
-
- def display_method_list(methods)
- page do
- @formatter.wrap "More than one method matched your request. You can refine your search by asking for information on one of:"
- @formatter.blankline
-
- methods.each do |method|
- @formatter.raw_print_line "#{method.full_name} [#{method.source_path}]\n"
- end
- end
- end
-
- ##
- # Display a list of +methods+ and allow the user to select one of them.
-
- def display_method_list_choice(methods)
- page do
- @formatter.wrap "More than one method matched your request. Please choose one of the possible matches."
- @formatter.blankline
-
- methods.each_with_index do |method, index|
- @formatter.raw_print_line "%3d %s [%s]\n" % [index + 1, method.full_name, method.source_path]
- end
-
- @formatter.raw_print_line ">> "
-
- choice = $stdin.gets.strip!
-
- if(choice == '')
- return
- end
-
- choice = choice.to_i
-
- if ((choice == 0) || (choice > methods.size)) then
- @formatter.raw_print_line "Invalid choice!\n"
- else
- method = methods[choice - 1]
- display_method_info(method)
- end
- end
- end
-
- ##
- # Display the params for +method+.
-
- def display_params(method)
- params = method.params
-
- if params[0,1] == "(" then
- if method.is_singleton
- params = method.full_name + params
- else
- params = method.name + params
- end
- end
-
- params.split(/\n/).each do |param|
- @formatter.wrap param
- @formatter.break_to_newline
- end
-
- @formatter.blankline
- @formatter.wrap("From #{method.source_path}")
- end
-
- ##
- # List the classes in +classes+.
-
- def list_known_classes(classes)
- if classes.empty? then
- warn_no_database
- else
- page do
- @formatter.draw_line "Known classes and modules"
- @formatter.blankline
-
- classes.sort.each do |klass|
- @formatter.wrap klass
- end
- end
- end
- end
-
- ##
- # Paginates output through a pager program.
-
- def page
- if pager = setup_pager then
- begin
- orig_output = @formatter.output
- @formatter.output = pager
- yield
- ensure
- @formatter.output = orig_output
- pager.close
- end
- else
- yield
- end
- rescue Errno::EPIPE
- end
-
- ##
- # Sets up a pager program to pass output through.
-
- def setup_pager
- unless @use_stdout then
- for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq
- return IO.popen(pager, "w") rescue nil
- end
- @use_stdout = true
- nil
- end
- end
-
- ##
- # Displays a message that describes how to build RI data.
-
- def warn_no_database
- output = @formatter.output
-
- output.puts "No ri data found"
- output.puts
- output.puts "If you've installed Ruby yourself, you need to generate documentation using:"
- output.puts
- output.puts " make install-doc"
- output.puts
- output.puts "from the same place you ran `make` to build ruby."
- output.puts
- output.puts "If you installed Ruby from a packaging system, then you may need to"
- output.puts "install an additional package, or ask the packager to enable ri generation."
- end
-
-end
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/driver.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/driver.rb
deleted file mode 100644
index 310ff8487..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/driver.rb
+++ /dev/null
@@ -1,828 +0,0 @@
-require 'abbrev'
-require 'optparse'
-require 'yaml'
-
-begin
- require 'readline'
-rescue LoadError
-end
-
-require 'rdoc/ri'
-require 'rdoc/ri/paths'
-require 'rdoc/ri/formatter'
-require 'rdoc/ri/display'
-require 'fileutils'
-require 'rdoc/markup'
-require 'rdoc/markup/to_flow'
-
-class RDoc::RI::Driver
-
- ##
- # This class offers both Hash and OpenStruct functionality. We convert from
- # the Core Hash to this before calling any of the display methods, in order
- # to give the display methods a cleaner API for accessing the data.
-
- class OpenStructHash < Hash
-
- ##
- # This method converts from a Hash to an OpenStructHash.
-
- def self.convert(object)
- case object
- when Hash then
- new_hash = new # Convert Hash -> OpenStructHash
-
- object.each do |key, value|
- new_hash[key] = convert value
- end
-
- new_hash
- when Array then
- object.map do |element|
- convert element
- end
- else
- object
- end
- end
-
- def merge_enums(other)
- other.each do |k, v|
- if self[k] then
- case v
- when Array then
- # HACK dunno
- if String === self[k] and self[k].empty? then
- self[k] = v
- else
- self[k] += v
- end
- when Hash then
- self[k].update v
- else
- # do nothing
- end
- else
- self[k] = v
- end
- end
- end
-
- def method_missing method, *args
- self[method.to_s]
- end
- end
-
- class Error < RDoc::RI::Error; end
-
- class NotFoundError < Error
- def message
- "Nothing known about #{super}"
- end
- end
-
- attr_accessor :homepath # :nodoc:
-
- ##
- # Default options for ri
-
- def self.default_options
- options = {}
- options[:use_stdout] = !$stdout.tty?
- options[:width] = 72
- options[:formatter] = RDoc::RI::Formatter.for 'plain'
- options[:interactive] = false
- options[:use_cache] = true
-
- # By default all standard paths are used.
- options[:use_system] = true
- options[:use_site] = true
- options[:use_home] = true
- options[:use_gems] = true
- options[:extra_doc_dirs] = []
-
- return options
- end
-
- ##
- # Parses +argv+ and returns a Hash of options
-
- def self.process_args(argv)
- options = default_options
-
- opts = OptionParser.new do |opt|
- opt.program_name = File.basename $0
- opt.version = RDoc::VERSION
- opt.release = nil
- opt.summary_indent = ' ' * 4
-
- directories = [
- RDoc::RI::Paths::SYSDIR,
- RDoc::RI::Paths::SITEDIR,
- RDoc::RI::Paths::HOMEDIR
- ]
-
- if RDoc::RI::Paths::GEMDIRS then
- Gem.path.each do |dir|
- directories << "#{dir}/doc/*/ri"
- end
- end
-
- opt.banner = <<-EOT
-Usage: #{opt.program_name} [options] [names...]
-
-Where name can be:
-
- Class | Class::method | Class#method | Class.method | method
-
-All class names may be abbreviated to their minimum unambiguous form. If a name
-is ambiguous, all valid options will be listed.
-
-The form '.' method matches either class or instance methods, while #method
-matches only instance and ::method matches only class methods.
-
-For example:
-
- #{opt.program_name} Fil
- #{opt.program_name} File
- #{opt.program_name} File.new
- #{opt.program_name} zip
-
-Note that shell quoting may be required for method names containing
-punctuation:
-
- #{opt.program_name} 'Array.[]'
- #{opt.program_name} compact\\!
-
-By default ri searches for documentation in the following directories:
-
- #{directories.join "\n "}
-
-Specifying the --system, --site, --home, --gems or --doc-dir options will
-limit ri to searching only the specified directories.
-
-Options may also be set in the 'RI' environment variable.
- EOT
-
- opt.separator nil
- opt.separator "Options:"
- opt.separator nil
-
- opt.on("--fmt=FORMAT", "--format=FORMAT", "-f",
- RDoc::RI::Formatter::FORMATTERS.keys,
- "Format to use when displaying output:",
- " #{RDoc::RI::Formatter.list}",
- "Use 'bs' (backspace) with most pager",
- "programs. To use ANSI, either disable the",
- "pager or tell the pager to allow control",
- "characters.") do |value|
- options[:formatter] = RDoc::RI::Formatter.for value
- end
-
- opt.separator nil
-
- opt.on("--doc-dir=DIRNAME", "-d", Array,
- "List of directories from which to source",
- "documentation in addition to the standard",
- "directories. May be repeated.") do |value|
- value.each do |dir|
- unless File.directory? dir then
- raise OptionParser::InvalidArgument, "#{dir} is not a directory"
- end
-
- options[:extra_doc_dirs] << File.expand_path(dir)
- end
- end
-
- opt.separator nil
-
- opt.on("--[no-]use-cache",
- "Whether or not to use ri's cache.",
- "True by default.") do |value|
- options[:use_cache] = value
- end
-
- opt.separator nil
-
- opt.on("--no-standard-docs",
- "Do not include documentation from",
- "the Ruby standard library, site_lib,",
- "installed gems, or ~/.rdoc.",
- "Equivalent to specifying",
- "the options --no-system, --no-site, --no-gems,",
- "and --no-home") do
- options[:use_system] = false
- options[:use_site] = false
- options[:use_gems] = false
- options[:use_home] = false
- end
-
- opt.separator nil
-
- opt.on("--[no-]system",
- "Include documentation from Ruby's standard",
- "library. Defaults to true.") do |value|
- options[:use_system] = value
- end
-
- opt.separator nil
-
- opt.on("--[no-]site",
- "Include documentation from libraries",
- "installed in site_lib.",
- "Defaults to true.") do |value|
- options[:use_site] = value
- end
-
- opt.separator nil
-
- opt.on("--[no-]gems",
- "Include documentation from RubyGems.",
- "Defaults to true.") do |value|
- options[:use_gems] = value
- end
-
- opt.separator nil
-
- opt.on("--[no-]home",
- "Include documentation stored in ~/.rdoc.",
- "Defaults to true.") do |value|
- options[:use_home] = value
- end
-
- opt.separator nil
-
- opt.on("--list-doc-dirs",
- "List the directories from which ri will",
- "source documentation on stdout and exit.") do
- options[:list_doc_dirs] = true
- end
-
- opt.separator nil
-
- opt.on("--no-pager", "-T",
- "Send output directly to stdout,",
- "rather than to a pager.") do
- options[:use_stdout] = true
- end
-
- opt.on("--interactive", "-i",
- "This makes ri go into interactive mode.",
- "When ri is in interactive mode it will",
- "allow the user to disambiguate lists of",
- "methods in case multiple methods match",
- "against a method search string. It also",
- "will allow the user to enter in a method",
- "name (with auto-completion, if readline",
- "is supported) when viewing a class.") do
- options[:interactive] = true
- end
-
- opt.separator nil
-
- opt.on("--width=WIDTH", "-w", OptionParser::DecimalInteger,
- "Set the width of the output.") do |value|
- options[:width] = value
- end
- end
-
- argv = ENV['RI'].to_s.split.concat argv
-
- opts.parse! argv
-
- options[:names] = argv
-
- options[:formatter] ||= RDoc::RI::Formatter.for('plain')
- options[:use_stdout] ||= !$stdout.tty?
- options[:use_stdout] ||= options[:interactive]
- options[:width] ||= 72
-
- options
-
- rescue OptionParser::InvalidArgument, OptionParser::InvalidOption => e
- puts opts
- puts
- puts e
- exit 1
- end
-
- ##
- # Runs the ri command line executable using +argv+
-
- def self.run(argv = ARGV)
- options = process_args argv
- ri = new options
- ri.run
- end
-
- def initialize(initial_options={})
- options = self.class.default_options.update(initial_options)
-
- @names = options[:names]
- @class_cache_name = 'classes'
-
- @doc_dirs = RDoc::RI::Paths.path(options[:use_system],
- options[:use_site],
- options[:use_home],
- options[:use_gems],
- options[:extra_doc_dirs])
-
- @homepath = RDoc::RI::Paths.raw_path(false, false, true, false).first
- @homepath = @homepath.sub(/\.rdoc/, '.ri')
- @sys_dir = RDoc::RI::Paths.raw_path(true, false, false, false).first
- @list_doc_dirs = options[:list_doc_dirs]
-
- FileUtils.mkdir_p cache_file_path unless File.directory? cache_file_path
- @cache_doc_dirs_path = File.join cache_file_path, ".doc_dirs"
-
- @use_cache = options[:use_cache]
- @class_cache = nil
-
- @interactive = options[:interactive]
- @display = RDoc::RI::DefaultDisplay.new(options[:formatter],
- options[:width],
- options[:use_stdout])
- end
-
- ##
- # Cache of classes ri knows about
-
- def class_cache
- return @class_cache if @class_cache
-
- # Get the documentation directories used to make the cache in order to see
- # whether the cache is valid for the current ri instantiation.
- if(File.readable?(@cache_doc_dirs_path))
- cache_doc_dirs = IO.read(@cache_doc_dirs_path).split("\n")
- else
- cache_doc_dirs = []
- end
-
- newest = map_dirs('created.rid') do |f|
- File.mtime f if test ?f, f
- end.max
-
- # An up to date cache file must have been created more recently than
- # the last modification of any of the documentation directories. It also
- # must have been created with the same documentation directories
- # as those from which ri currently is sourcing documentation.
- up_to_date = (File.exist?(class_cache_file_path) and
- newest and newest < File.mtime(class_cache_file_path) and
- (cache_doc_dirs == @doc_dirs))
-
- if up_to_date and @use_cache then
- open class_cache_file_path, 'rb' do |fp|
- begin
- @class_cache = Marshal.load fp.read
- rescue
- #
- # This shouldn't be necessary, since the up_to_date logic above
- # should force the cache to be recreated when a new version of
- # rdoc is installed. This seems like a worthwhile enhancement
- # to ri's robustness, however.
- #
- $stderr.puts "Error reading the class cache; recreating the class cache!"
- @class_cache = create_class_cache
- end
- end
- else
- @class_cache = create_class_cache
- end
-
- @class_cache
- end
-
- ##
- # Creates the class cache if it is empty
-
- def create_class_cache
- class_cache = OpenStructHash.new
-
- if(@use_cache)
- # Dump the documentation directories to a file in the cache, so that
- # we only will use the cache for future instantiations with identical
- # documentation directories.
- File.open @cache_doc_dirs_path, "wb" do |fp|
- fp << @doc_dirs.join("\n")
- end
- end
-
- classes = map_dirs('**/cdesc*.yaml') { |f| Dir[f] }
- warn "Updating ri class cache with #{classes.size} classes..."
- populate_class_cache class_cache, classes
-
- write_cache class_cache, class_cache_file_path
-
- class_cache
- end
-
- ##
- # Populates +class_cache+ with +classes+, adding +extension+ data for found
- # methods when asked
-
- def populate_class_cache(class_cache, classes, extension = false)
- classes.each do |cdesc|
- desc = read_yaml cdesc
- klassname = desc["full_name"]
-
- unless class_cache.has_key? klassname then
- desc["display_name"] = "Class"
- desc["sources"] = [cdesc]
- desc["instance_method_extensions"] = []
- desc["class_method_extensions"] = []
- class_cache[klassname] = desc
- else
- klass = class_cache[klassname]
-
- if extension then
- desc["instance_method_extensions"] = desc.delete "instance_methods"
- desc["class_method_extensions"] = desc.delete "class_methods"
- end
-
- klass.merge_enums desc
- klass["sources"] << cdesc
- end
- end
- end
-
- ##
- # Path to the class_cache
-
- def class_cache_file_path
- File.join cache_file_path, @class_cache_name
- end
-
- ##
- # Path to the cache file for +klassname+
-
- def cache_file_for(klassname)
- File.join cache_file_path, klassname.gsub(/:+/, "-")
- end
-
- ##
- # Directory where cache files live
-
- def cache_file_path
- File.join @homepath, 'cache'
- end
-
- ##
- # Displays the module, class or method +name+. For methods, locates the
- # method in the ancestors list if it isn't in the named module.
-
- def display_name(name)
- if class_cache.key? name then
- method_map = display_class name
- elsif name =~ /::|\#|\./ then
- method = nil
- klass, = parse_name name
-
- klass = expand_klass klass unless class_cache.key? klass
-
- orig_klass = klass
- orig_name = name
-
- loop do
- method = lookup_method name, klass
-
- break if method
-
- ancestor = lookup_ancestor klass, orig_klass
-
- break unless ancestor
-
- name = name.sub klass, ancestor
- klass = ancestor
- end
-
- raise NotFoundError, orig_name unless method
-
- display_method method
- else
- methods = select_methods(/#{name}/)
-
- if methods.size == 0
- raise NotFoundError, name
- elsif methods.size == 1
- display_method methods[0]
- else
- @display.display_method_list methods
- end
- end
- end
-
- ##
- # Displays info for class or module +name+
-
- def display_class(name)
- klass = class_cache[name]
- @display.display_class_info klass
- end
-
- ##
- # Displays info for method +method+
-
- def display_method(method)
- @display.display_method_info method
- end
-
- ##
- # Runs ri interactively using Readline if it is available.
-
- def interactive
- formatter = @display.formatter
-
- if defined? Readline then
- # prepare abbreviations for tab completion
- klasses = class_cache.keys
-
- Readline.completion_proc = proc do |name|
- case name
- when /(#|\.|::)([^A-Z]|$)/ then
- methods = []
- method_type = $1 == '.' ? '#|::' : $1
-
- klass, method = if $2.empty? then
- [$`, '']
- else
- parse_name name
- end
-
- cache = load_cache_for klass
-
- methods += cache.keys.select do |method_name|
- method_name =~ /^#{klass}#{method_type}#{method}/
- end
-
- # TODO ancestor lookup
-
- if method_type == '::' and method.empty? then
- methods += klasses.grep(/^#{klass}::/)
- end
-
- methods
- when /^[A-Z]\w*/ then
- klasses.grep(/^#{name}/)
- else
- []
- end
- end
- end
-
- formatter.raw_print_line "\nEnter the method name you want to look up.\n"
-
- if defined? Readline then
- formatter.raw_print_line "You can use tab to autocomplete.\n"
- end
-
- formatter.raw_print_line "Enter a blank line to exit.\n\n"
-
- loop do
- name = if defined? Readline then
- Readline.readline ">> "
- else
- formatter.raw_print_line ">> "
- $stdin.gets
- end
-
- return if name.nil? or name.empty?
-
- name = name.strip
-
- begin
- display_name name
- rescue NotFoundError => e
- formatter.raw_print_line "#{e.message}\n"
- end
- end
-
- rescue Interrupt
- exit
- end
-
- ##
- # Expands abbreviated klass +klass+ into a fully-qualified klass. "Zl::Da"
- # will be expanded to Zlib::DataError.
-
- def expand_klass(klass)
- klass.split('::').inject '' do |expanded, klass_part|
- expanded << '::' unless expanded.empty?
- short = expanded << klass_part
-
- subset = class_cache.keys.select do |klass_name|
- klass =~ /^#{expanded}[^:]*$/
- end
-
- abbrevs = Abbrev.abbrev subset
-
- expanded = abbrevs[short]
-
- raise NotFoundError, short unless expanded
-
- expanded.dup
- end
- end
-
- ##
- # Loads the cache for +klassname+
-
- def load_cache_for(klassname)
- path = cache_file_for klassname
-
- cache = nil
-
- if File.exist? path and
- File.mtime(path) >= File.mtime(class_cache_file_path) and
- @use_cache then
- open path, 'rb' do |fp|
- begin
- cache = Marshal.load fp.read
- rescue
- #
- # The cache somehow is bad. Recreate the cache.
- #
- $stderr.puts "Error reading the cache for #{klassname}; recreating the cache!"
- cache = create_cache_for klassname, path
- end
- end
- else
- cache = create_cache_for klassname, path
- end
-
- cache
- end
-
- ##
- # Writes a cache file for +klassname+ to +path+
-
- def create_cache_for(klassname, path)
- klass = class_cache[klassname]
- return nil unless klass
-
- method_files = klass["sources"]
- cache = OpenStructHash.new
-
- method_files.each do |f|
- system_file = f.index(@sys_dir) == 0
- Dir[File.join(File.dirname(f), "*")].each do |yaml|
- next unless yaml =~ /yaml$/
- next if yaml =~ /cdesc-[^\/]+yaml$/
-
- method = read_yaml yaml
-
- if system_file then
- method["source_path"] = "Ruby #{RDoc::RI::Paths::VERSION}"
- else
- gem = Gem.path.any? do |gem_path|
- pattern = File.join Regexp.escape(gem_path), 'doc', '(.*?)', ''
-
- f =~ /^#{pattern}/
- end
-
- method["source_path"] = if gem then
- "gem #{$1}"
- else
- f
- end
- end
-
- name = method["full_name"]
- cache[name] = method
- end
- end
-
- write_cache cache, path
- end
-
- ##
- # Finds the next ancestor of +orig_klass+ after +klass+.
-
- def lookup_ancestor(klass, orig_klass)
- # This is a bit hacky, but ri will go into an infinite loop otherwise,
- # since Object has an Object ancestor for some reason. Depending on the
- # documentation state, I've seen Kernel as an ancestor of Object and not
- # as an ancestor of Object.
- if orig_klass == "Object" && (klass == "Kernel" || klass == "Object") then
- return nil
- end
-
- cache = class_cache[orig_klass]
-
- return nil unless cache
-
- ancestors = [orig_klass]
- ancestors.push(*cache.includes.map { |inc| inc['name'] })
- ancestors << cache.superclass
-
- ancestor_index = ancestors.index klass
-
- if ancestor_index
- ancestor = ancestors[ancestors.index(klass) + 1]
- return ancestor if ancestor
- end
-
- lookup_ancestor klass, cache.superclass
- end
-
- ##
- # Finds the method
-
- def lookup_method(name, klass)
- cache = load_cache_for klass
- return nil unless cache
-
- method = cache[name.gsub('.', '#')]
- method = cache[name.gsub('.', '::')] unless method
- method
- end
-
- def map_dirs(file_name)
- @doc_dirs.map { |dir| yield File.join(dir, file_name) }.flatten.compact
- end
-
- ##
- # Extract the class and method name parts from +name+ like Foo::Bar#baz
-
- def parse_name(name)
- parts = name.split(/(::|\#|\.)/)
-
- if parts[-2] != '::' or parts.last !~ /^[A-Z]/ then
- meth = parts.pop
- parts.pop
- end
-
- klass = parts.join
-
- [klass, meth]
- end
-
- ##
- # Reads ri YAML data from +path+, converting RDoc 1.x classes to RDoc 2.x
- # classes
-
- def read_yaml(path)
- data = File.read path
-
- # Necessary to be backward-compatible with documentation generated
- # by earliar RDoc versions.
- data = data.gsub(/ \!ruby\/(object|struct):(RDoc::RI|RI).*/, '')
- data = data.gsub(/ \!ruby\/(object|struct):SM::(\S+)/,
- ' !ruby/\1:RDoc::Markup::\2')
-
- OpenStructHash.convert YAML.load(data)
- end
-
- ##
- # Looks up and displays ri data according to the options given.
-
- def run
- if @list_doc_dirs then
- puts @doc_dirs
- elsif @interactive then
- interactive
- elsif @names.empty? then
- @display.list_known_classes class_cache.keys.sort
- else
- @names.each do |name|
- display_name name
- end
- end
- rescue NotFoundError => e
- abort e.message
- end
-
- ##
- # Selects methods matching +pattern+ from all modules
-
- def select_methods(pattern)
- methods = []
- class_cache.keys.sort.each do |klass|
- class_cache[klass]["instance_methods"].map{|h|h["name"]}.grep(pattern) do |name|
- method = load_cache_for(klass)[klass+'#'+name]
- methods << method if method
- end
- class_cache[klass]["class_methods"].map{|h|h["name"]}.grep(pattern) do |name|
- method = load_cache_for(klass)[klass+'::'+name]
- methods << method if method
- end
- end
- methods
- end
-
- ##
- # Writes +cache+ to +path+
-
- def write_cache(cache, path)
- if @use_cache then
- File.open path, "wb" do |cache_file|
- Marshal.dump cache, cache_file
- end
- end
-
- cache
- rescue Errno::EISDIR # HACK toplevel, replace with main
- cache
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/formatter.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/formatter.rb
deleted file mode 100644
index b2c9d07b3..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/formatter.rb
+++ /dev/null
@@ -1,654 +0,0 @@
-require 'rdoc/ri'
-require 'rdoc/markup'
-
-class RDoc::RI::Formatter
-
- attr_writer :indent
- attr_accessor :output
-
- FORMATTERS = { }
-
- def self.for(name)
- FORMATTERS[name.downcase]
- end
-
- def self.list
- FORMATTERS.keys.sort.join ", "
- end
-
- def initialize(output, width, indent)
- @output = output
- @width = width
- @indent = indent
- @original_indent = indent.dup
- end
-
- def draw_line(label=nil)
- len = @width
- len -= (label.size + 1) if label
-
- if len > 0 then
- @output.print '-' * len
- if label
- @output.print ' '
- bold_print label
- end
-
- @output.puts
- else
- @output.print '-' * @width
- @output.puts
-
- @output.puts label
- end
- end
-
- def indent
- return @indent unless block_given?
-
- begin
- indent = @indent.dup
- @indent += @original_indent
- yield
- ensure
- @indent = indent
- end
- end
-
- def wrap(txt, prefix=@indent, linelen=@width)
- return unless txt && !txt.empty?
-
- work = conv_markup(txt)
- textLen = linelen - prefix.length
- patt = Regexp.new("^(.{0,#{textLen}})[ \n]")
- next_prefix = prefix.tr("^ ", " ")
-
- res = []
-
- while work.length > textLen
- if work =~ patt
- res << $1
- work.slice!(0, $&.length)
- else
- res << work.slice!(0, textLen)
- end
- end
- res << work if work.length.nonzero?
- @output.puts(prefix + res.join("\n" + next_prefix))
- end
-
- def blankline
- @output.puts
- end
-
- ##
- # Called when we want to ensure a new 'wrap' starts on a newline. Only
- # needed for HtmlFormatter, because the rest do their own line breaking.
-
- def break_to_newline
- end
-
- def bold_print(txt)
- @output.print txt
- end
-
- def raw_print_line(txt)
- @output.print txt
- end
-
- ##
- # Convert HTML entities back to ASCII
-
- def conv_html(txt)
- txt = txt.gsub(/&gt;/, '>')
- txt.gsub!(/&lt;/, '<')
- txt.gsub!(/&quot;/, '"')
- txt.gsub!(/&amp;/, '&')
- txt
- end
-
- ##
- # Convert markup into display form
-
- def conv_markup(txt)
- txt = txt.gsub(%r{<tt>(.*?)</tt>}, '+\1+')
- txt.gsub!(%r{<code>(.*?)</code>}, '+\1+')
- txt.gsub!(%r{<b>(.*?)</b>}, '*\1*')
- txt.gsub!(%r{<em>(.*?)</em>}, '_\1_')
- txt
- end
-
- def display_list(list)
- case list.type
- when :BULLET
- prefixer = proc { |ignored| @indent + "* " }
-
- when :NUMBER, :UPPERALPHA, :LOWERALPHA then
- start = case list.type
- when :NUMBER then 1
- when :UPPERALPHA then 'A'
- when :LOWERALPHA then 'a'
- end
-
- prefixer = proc do |ignored|
- res = @indent + "#{start}.".ljust(4)
- start = start.succ
- res
- end
-
- when :LABELED, :NOTE then
- longest = 0
-
- list.contents.each do |item|
- if RDoc::Markup::Flow::LI === item and item.label.length > longest then
- longest = item.label.length
- end
- end
-
- longest += 1
-
- prefixer = proc { |li| @indent + li.label.ljust(longest) }
-
- else
- raise ArgumentError, "unknown list type #{list.type}"
- end
-
- list.contents.each do |item|
- if RDoc::Markup::Flow::LI === item then
- prefix = prefixer.call item
- display_flow_item item, prefix
- else
- display_flow_item item
- end
- end
- end
-
- def display_flow_item(item, prefix = @indent)
- case item
- when RDoc::Markup::Flow::P, RDoc::Markup::Flow::LI
- wrap(conv_html(item.body), prefix)
- blankline
-
- when RDoc::Markup::Flow::LIST
- display_list(item)
-
- when RDoc::Markup::Flow::VERB
- display_verbatim_flow_item(item, @indent)
-
- when RDoc::Markup::Flow::H
- display_heading(conv_html(item.text), item.level, @indent)
-
- when RDoc::Markup::Flow::RULE
- draw_line
-
- else
- raise RDoc::Error, "Unknown flow element: #{item.class}"
- end
- end
-
- def display_verbatim_flow_item(item, prefix=@indent)
- item.body.split(/\n/).each do |line|
- @output.print @indent, conv_html(line), "\n"
- end
- blankline
- end
-
- def display_heading(text, level, indent)
- text = strip_attributes text
-
- case level
- when 1 then
- ul = "=" * text.length
- @output.puts
- @output.puts text.upcase
- @output.puts ul
-
- when 2 then
- ul = "-" * text.length
- @output.puts
- @output.puts text
- @output.puts ul
- else
- @output.print indent, text, "\n"
- end
-
- @output.puts
- end
-
- def display_flow(flow)
- flow.each do |f|
- display_flow_item(f)
- end
- end
-
- def strip_attributes(text)
- text.gsub(/(<\/?(?:b|code|em|i|tt)>)/, '')
- end
-
-end
-
-##
-# Handle text with attributes. We're a base class: there are different
-# presentation classes (one, for example, uses overstrikes to handle bold and
-# underlining, while another using ANSI escape sequences.
-
-class RDoc::RI::AttributeFormatter < RDoc::RI::Formatter
-
- BOLD = 1
- ITALIC = 2
- CODE = 4
-
- ATTR_MAP = {
- "b" => BOLD,
- "code" => CODE,
- "em" => ITALIC,
- "i" => ITALIC,
- "tt" => CODE
- }
-
- AttrChar = Struct.new :char, :attr
-
- class AttributeString
- attr_reader :txt
-
- def initialize
- @txt = []
- @optr = 0
- end
-
- def <<(char)
- @txt << char
- end
-
- def empty?
- @optr >= @txt.length
- end
-
- # accept non space, then all following spaces
- def next_word
- start = @optr
- len = @txt.length
-
- while @optr < len && @txt[@optr].char != " "
- @optr += 1
- end
-
- while @optr < len && @txt[@optr].char == " "
- @optr += 1
- end
-
- @txt[start...@optr]
- end
- end
-
- ##
- # Overrides base class. Looks for <tt>...</tt> etc sequences and generates
- # an array of AttrChars. This array is then used as the basis for the
- # split.
-
- def wrap(txt, prefix=@indent, linelen=@width)
- return unless txt && !txt.empty?
-
- txt = add_attributes_to(txt)
- next_prefix = prefix.tr("^ ", " ")
- linelen -= prefix.size
-
- line = []
-
- until txt.empty?
- word = txt.next_word
- if word.size + line.size > linelen
- write_attribute_text(prefix, line)
- prefix = next_prefix
- line = []
- end
- line.concat(word)
- end
-
- write_attribute_text(prefix, line) if line.length > 0
- end
-
- protected
-
- def write_attribute_text(prefix, line)
- @output.print prefix
- line.each do |achar|
- @output.print achar.char
- end
- @output.puts
- end
-
- def bold_print(txt)
- @output.print txt
- end
-
- private
-
- def add_attributes_to(txt)
- tokens = txt.split(%r{(</?(?:b|code|em|i|tt)>)})
- text = AttributeString.new
- attributes = 0
- tokens.each do |tok|
- case tok
- when %r{^</(\w+)>$} then attributes &= ~(ATTR_MAP[$1]||0)
- when %r{^<(\w+)>$} then attributes |= (ATTR_MAP[$1]||0)
- else
- tok.split(//).each {|ch| text << AttrChar.new(ch, attributes)}
- end
- end
- text
- end
-
-end
-
-##
-# This formatter generates overstrike-style formatting, which works with
-# pagers such as man and less.
-
-class RDoc::RI::OverstrikeFormatter < RDoc::RI::AttributeFormatter
-
- BS = "\C-h"
-
- def write_attribute_text(prefix, line)
- @output.print prefix
-
- line.each do |achar|
- attr = achar.attr
- @output.print "_", BS if (attr & (ITALIC + CODE)) != 0
- @output.print achar.char, BS if (attr & BOLD) != 0
- @output.print achar.char
- end
-
- @output.puts
- end
-
- ##
- # Draw a string in bold
-
- def bold_print(text)
- text.split(//).each do |ch|
- @output.print ch, BS, ch
- end
- end
-
-end
-
-##
-# This formatter uses ANSI escape sequences to colorize stuff works with
-# pagers such as man and less.
-
-class RDoc::RI::AnsiFormatter < RDoc::RI::AttributeFormatter
-
- def initialize(*args)
- super
- @output.print "\033[0m"
- end
-
- def write_attribute_text(prefix, line)
- @output.print prefix
- curr_attr = 0
- line.each do |achar|
- attr = achar.attr
- if achar.attr != curr_attr
- update_attributes(achar.attr)
- curr_attr = achar.attr
- end
- @output.print achar.char
- end
- update_attributes(0) unless curr_attr.zero?
- @output.puts
- end
-
- def bold_print(txt)
- @output.print "\033[1m#{txt}\033[m"
- end
-
- HEADINGS = {
- 1 => ["\033[1;32m", "\033[m"],
- 2 => ["\033[4;32m", "\033[m"],
- 3 => ["\033[32m", "\033[m"],
- }
-
- def display_heading(text, level, indent)
- level = 3 if level > 3
- heading = HEADINGS[level]
- @output.print indent
- @output.print heading[0]
- @output.print strip_attributes(text)
- @output.puts heading[1]
- end
-
- private
-
- ATTR_MAP = {
- BOLD => "1",
- ITALIC => "33",
- CODE => "36"
- }
-
- def update_attributes(attr)
- str = "\033["
- for quality in [ BOLD, ITALIC, CODE]
- unless (attr & quality).zero?
- str << ATTR_MAP[quality]
- end
- end
- @output.print str, "m"
- end
-
-end
-
-##
-# This formatter uses HTML.
-
-class RDoc::RI::HtmlFormatter < RDoc::RI::AttributeFormatter
-
- ##
- # We depend on HTML4-conforming user agents to ignore an empty p element
-
- def blankline
- @output.puts '<p />'
- end
-
- ##
- # Emboldens +text+
-
- def bold_print(text)
- tag("b") { text }
- end
-
- ##
- # Outputs a forced line break element
-
- def break_to_newline
- @output.puts '<br />'
- end
-
- ##
- # Outputs heading elements for +text+ with +level+ up to 4. Ignores
- # +indent+.
-
- def display_heading(text, level, indent)
- level = 4 if level > 4
- tag("h#{level}") { text }
- @output.puts
- end
-
- ##
- # Outputs +list+ which is displayed as follows:
- #
- # BULLET:: unordered list
- # NUMBER:: ordered list
- # LABELED:: definition list
- # NOTE:: table
-
- def display_list(list)
- case list.type
- when :BULLET then
- list_type = "ul"
- prefixer = proc { |ignored| '<li>' }
- suffix = '</li>'
-
- when :NUMBER, :UPPERALPHA, :LOWERALPHA then
- list_type = "ol"
- prefixer = proc { |ignored| '<li>' }
- suffix = '</li>'
-
- when :LABELED then
- list_type = "dl"
- prefixer = proc do |li|
- "<dt><b>#{escape li.label}</b></dt><dd>"
- end
- suffix = '</dd>'
-
- when :NOTE then
- list_type = "table"
- prefixer = proc do |li|
- %{<tr valign="top"><td>#{li.label.gsub(/ /, '&nbsp;')}</td><td>}
- end
- suffix = '</td></tr>'
- else
- fail "unknown list type"
- end
-
- @output.print "<#{list_type}>"
-
- list.contents.each do |item|
- if item.kind_of? RDoc::Markup::Flow::LI
- prefix = prefixer.call item
- @output.print prefix
- display_flow_item item, prefix
- @output.print suffix
- else
- display_flow_item item
- end
- end
-
- @output.print "</#{list_type}>"
- end
-
- ##
- # Outputs a preformatted section for +item+. +prefix+ is ignored.
-
- def display_verbatim_flow_item(item, prefix=@indent)
- @output.print '<pre>'
-
- item.body.split(/\n/).each do |line|
- @output.puts escape(line)
- end
-
- @output.puts '</pre>'
- end
-
- ##
- # Outputs a horizontal rule element, optionally labeled above with +label+ in
- # bold.
-
- def draw_line(label = nil)
- bold_print label if label
-
- @output.puts "<hr />"
- end
-
- def write_attribute_text(prefix, line)
- curr_attr = 0
-
- line.each do |achar|
- attr = achar.attr
- if achar.attr != curr_attr then
- update_attributes curr_attr, achar.attr
- curr_attr = achar.attr
- end
- @output.print escape(achar.char)
- end
-
- update_attributes curr_attr, 0 unless curr_attr.zero?
- end
-
- private
-
- ATTR_MAP = {
- BOLD => "b>",
- ITALIC => "i>",
- CODE => "tt>"
- }
-
- def update_attributes(current, wanted)
- str = ""
- # first turn off unwanted ones
- off = current & ~wanted
- for quality in [ BOLD, ITALIC, CODE]
- if (off & quality) > 0
- str << "</" + ATTR_MAP[quality]
- end
- end
-
- # now turn on wanted
- for quality in [ BOLD, ITALIC, CODE]
- unless (wanted & quality).zero?
- str << "<" << ATTR_MAP[quality]
- end
- end
- @output.print str
- end
-
- def tag(code)
- @output.print("<#{code}>")
- @output.print(yield)
- @output.print("</#{code}>")
- end
-
- def escape(str)
- str = str.gsub(/&/n, '&amp;')
- str.gsub!(/\"/n, '&quot;')
- str.gsub!(/>/n, '&gt;')
- str.gsub!(/</n, '&lt;')
- str
- end
-
-end
-
-##
-# This formatter reduces extra lines for a simpler output. It improves way
-# output looks for tools like IRC bots.
-
-class RDoc::RI::SimpleFormatter < RDoc::RI::Formatter
-
- ##
- # No extra blank lines
-
- def blankline
- end
-
- ##
- # Display labels only, no lines
-
- def draw_line(label=nil)
- unless label.nil? then
- bold_print(label)
- @output.puts
- end
- end
-
- ##
- # Place heading level indicators inline with heading.
-
- def display_heading(text, level, indent)
- text = strip_attributes(text)
- case level
- when 1
- @output.puts "= " + text.upcase
- when 2
- @output.puts "-- " + text
- else
- @output.print indent, text, "\n"
- end
- end
-
-end
-
-RDoc::RI::Formatter::FORMATTERS['plain'] = RDoc::RI::Formatter
-RDoc::RI::Formatter::FORMATTERS['simple'] = RDoc::RI::SimpleFormatter
-RDoc::RI::Formatter::FORMATTERS['bs'] = RDoc::RI::OverstrikeFormatter
-RDoc::RI::Formatter::FORMATTERS['ansi'] = RDoc::RI::AnsiFormatter
-RDoc::RI::Formatter::FORMATTERS['html'] = RDoc::RI::HtmlFormatter
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/paths.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/paths.rb
deleted file mode 100644
index 2f72b9dfd..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/paths.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-require 'rdoc/ri'
-
-##
-# Encapsulate all the strangeness to do with finding out where to find RDoc
-# files
-#
-# We basically deal with three directories:
-#
-# 1. The 'system' documentation directory, which holds the documentation
-# distributed with Ruby, and which is managed by the Ruby install process
-# 2. The 'site' directory, which contains site-wide documentation added
-# locally.
-# 3. The 'user' documentation directory, stored under the user's own home
-# directory.
-#
-# There's contention about all this, but for now:
-#
-# system:: $datadir/ri/<ver>/system/...
-# site:: $datadir/ri/<ver>/site/...
-# user:: ~/.rdoc
-
-module RDoc::RI::Paths
-
- #:stopdoc:
- require 'rbconfig'
-
- DOC_DIR = "doc/rdoc"
-
- VERSION = RbConfig::CONFIG['ruby_version']
-
- base = File.join(RbConfig::CONFIG['datadir'], "ri", VERSION)
- SYSDIR = File.join(base, "system")
- SITEDIR = File.join(base, "site")
- homedir = ENV['HOME'] || ENV['USERPROFILE'] || ENV['HOMEPATH']
-
- if homedir then
- HOMEDIR = File.join(homedir, ".rdoc")
- else
- HOMEDIR = nil
- end
-
- begin
- require 'rubygems' unless defined?(Gem) and defined?(Gem::Enable) and
- Gem::Enable
-
- # HACK dup'd from Gem.latest_partials and friends
- all_paths = []
-
- all_paths = Gem.path.map do |dir|
- Dir[File.join(dir, 'doc', '*', 'ri')]
- end.flatten
-
- ri_paths = {}
-
- all_paths.each do |dir|
- base = File.basename File.dirname(dir)
- if base =~ /(.*)-((\d+\.)*\d+)/ then
- name, version = $1, $2
- ver = Gem::Version.new version
- if ri_paths[name].nil? or ver > ri_paths[name][0] then
- ri_paths[name] = [ver, dir]
- end
- end
- end
-
- GEMDIRS = ri_paths.map { |k,v| v.last }.sort
- rescue LoadError
- GEMDIRS = []
- end
-
- # Returns the selected documentation directories as an Array, or PATH if no
- # overriding directories were given.
-
- def self.path(use_system, use_site, use_home, use_gems, *extra_dirs)
- path = raw_path(use_system, use_site, use_home, use_gems, *extra_dirs)
- return path.select { |directory| File.directory? directory }
- end
-
- # Returns the selected documentation directories including nonexistent
- # directories. Used to print out what paths were searched if no ri was
- # found.
-
- def self.raw_path(use_system, use_site, use_home, use_gems, *extra_dirs)
- path = []
- path << extra_dirs unless extra_dirs.empty?
- path << SYSDIR if use_system
- path << SITEDIR if use_site
- path << HOMEDIR if use_home
- path << GEMDIRS if use_gems
-
- return path.flatten.compact
- end
-end
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/reader.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/reader.rb
deleted file mode 100644
index de3c8d9af..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/reader.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-require 'rdoc/ri'
-require 'rdoc/ri/descriptions'
-require 'rdoc/ri/writer'
-require 'rdoc/markup/to_flow'
-
-class RDoc::RI::Reader
-
- def initialize(ri_cache)
- @cache = ri_cache
- end
-
- def top_level_namespace
- [ @cache.toplevel ]
- end
-
- def lookup_namespace_in(target, namespaces)
- result = []
- for n in namespaces
- result.concat(n.contained_modules_matching(target))
- end
- result
- end
-
- def find_class_by_name(full_name)
- names = full_name.split(/::/)
- ns = @cache.toplevel
- for name in names
- ns = ns.contained_class_named(name)
- return nil if ns.nil?
- end
- get_class(ns)
- end
-
- def find_methods(name, is_class_method, namespaces)
- result = []
- namespaces.each do |ns|
- result.concat ns.methods_matching(name, is_class_method)
- end
- result
- end
-
- ##
- # Return the MethodDescription for a given MethodEntry by deserializing the
- # YAML
-
- def get_method(method_entry)
- path = method_entry.path_name
- File.open(path) { |f| RDoc::RI::Description.deserialize(f) }
- end
-
- ##
- # Return a class description
-
- def get_class(class_entry)
- result = nil
- for path in class_entry.path_names
- path = RDoc::RI::Writer.class_desc_path(path, class_entry)
- desc = File.open(path) {|f| RDoc::RI::Description.deserialize(f) }
- if result
- result.merge_in(desc)
- else
- result = desc
- end
- end
- result
- end
-
- ##
- # Return the names of all classes and modules
-
- def full_class_names
- res = []
- find_classes_in(res, @cache.toplevel)
- end
-
- ##
- # Return a list of all classes, modules, and methods
-
- def all_names
- res = []
- find_names_in(res, @cache.toplevel)
- end
-
- private
-
- def find_classes_in(res, klass)
- classes = klass.classes_and_modules
- for c in classes
- res << c.full_name
- find_classes_in(res, c)
- end
- res
- end
-
- def find_names_in(res, klass)
- classes = klass.classes_and_modules
- for c in classes
- res << c.full_name
- res.concat c.all_method_names
- find_names_in(res, c)
- end
- res
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/util.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/util.rb
deleted file mode 100644
index 4e91eb978..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/util.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require 'rdoc/ri'
-
-##
-# Break argument into its constituent class or module names, an
-# optional method type, and a method name
-
-class RDoc::RI::NameDescriptor
-
- attr_reader :class_names
- attr_reader :method_name
-
- ##
- # true and false have the obvious meaning. nil means we don't care
-
- attr_reader :is_class_method
-
- ##
- # +arg+ may be
- #
- # 1. A class or module name (optionally qualified with other class or module
- # names (Kernel, File::Stat etc)
- # 2. A method name
- # 3. A method name qualified by a optionally fully qualified class or module
- # name
- #
- # We're fairly casual about delimiters: folks can say Kernel::puts,
- # Kernel.puts, or Kernel\#puts for example. There's one exception: if you
- # say IO::read, we look for a class method, but if you say IO.read, we look
- # for an instance method
-
- def initialize(arg)
- @class_names = []
- separator = nil
-
- tokens = arg.split(/(\.|::|#)/)
-
- # Skip leading '::', '#' or '.', but remember it might
- # be a method name qualifier
- separator = tokens.shift if tokens[0] =~ /^(\.|::|#)/
-
- # Skip leading '::', but remember we potentially have an inst
-
- # leading stuff must be class names
-
- while tokens[0] =~ /^[A-Z]/
- @class_names << tokens.shift
- unless tokens.empty?
- separator = tokens.shift
- break unless separator == "::"
- end
- end
-
- # Now must have a single token, the method name, or an empty array
- unless tokens.empty?
- @method_name = tokens.shift
- # We may now have a trailing !, ?, or = to roll into
- # the method name
- if !tokens.empty? && tokens[0] =~ /^[!?=]$/
- @method_name << tokens.shift
- end
-
- if @method_name =~ /::|\.|#/ or !tokens.empty?
- raise RDoc::RI::Error.new("Bad argument: #{arg}")
- end
- if separator && separator != '.'
- @is_class_method = separator == "::"
- end
- end
- end
-
- # Return the full class name (with '::' between the components) or "" if
- # there's no class name
-
- def full_class_name
- @class_names.join("::")
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb
deleted file mode 100644
index 92aaa1c2d..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/ri/writer.rb
+++ /dev/null
@@ -1,68 +0,0 @@
-require 'fileutils'
-require 'rdoc/ri'
-
-class RDoc::RI::Writer
-
- def self.class_desc_path(dir, class_desc)
- File.join(dir, "cdesc-" + class_desc.name + ".yaml")
- end
-
- ##
- # Convert a name from internal form (containing punctuation) to an external
- # form (where punctuation is replaced by %xx)
-
- def self.internal_to_external(name)
- if ''.respond_to? :ord then
- name.gsub(/\W/) { "%%%02x" % $&[0].ord }
- else
- name.gsub(/\W/) { "%%%02x" % $&[0] }
- end
- end
-
- ##
- # And the reverse operation
-
- def self.external_to_internal(name)
- name.gsub(/%([0-9a-f]{2,2})/) { $1.to_i(16).chr }
- end
-
- def initialize(base_dir)
- @base_dir = base_dir
- end
-
- def remove_class(class_desc)
- FileUtils.rm_rf(path_to_dir(class_desc.full_name))
- end
-
- def add_class(class_desc)
- dir = path_to_dir(class_desc.full_name)
- FileUtils.mkdir_p(dir)
- class_file_name = self.class.class_desc_path(dir, class_desc)
- File.open(class_file_name, "w") do |f|
- f.write(class_desc.serialize)
- end
- end
-
- def add_method(class_desc, method_desc)
- dir = path_to_dir(class_desc.full_name)
- file_name = self.class.internal_to_external(method_desc.name)
- meth_file_name = File.join(dir, file_name)
- if method_desc.is_singleton
- meth_file_name += "-c.yaml"
- else
- meth_file_name += "-i.yaml"
- end
-
- File.open(meth_file_name, "w") do |f|
- f.write(method_desc.serialize)
- end
- end
-
- private
-
- def path_to_dir(class_name)
- File.join(@base_dir, *class_name.split('::'))
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/single_class.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/single_class.rb
deleted file mode 100644
index de96a6a36..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/single_class.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'rdoc/class_module'
-
-##
-# A singleton class
-
-class RDoc::SingleClass < RDoc::ClassModule
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/stats.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/stats.rb
deleted file mode 100644
index ff5255f9c..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/stats.rb
+++ /dev/null
@@ -1,178 +0,0 @@
-require 'rdoc'
-require 'thread'
-
-##
-# Simple stats collector
-
-class RDoc::Stats
-
- attr_reader :num_classes
- attr_reader :num_files
- attr_reader :num_methods
- attr_reader :num_modules
- attr_reader :total_files
-
- def initialize(total_files, verbosity = 1)
- @lock = Mutex.new
-
- @num_classes = 0
- @num_files = 0
- @num_methods = 0
- @num_modules = 0
- @total_files = total_files
-
- @start = Time.now
-
- @display = case verbosity
- when 0 then Quiet.new
- when 1 then Normal.new(total_files)
- else Verbose.new
- end
- end
-
- def begin_adding(number_of_workers)
- @display.begin_adding(number_of_workers)
- end
-
- def add_alias(as)
- @lock.synchronize do
- @display.print_alias as
- @num_methods += 1
- end
- end
-
- def add_class(klass)
- @lock.synchronize do
- @display.print_class klass
- @num_classes += 1
- end
- end
-
- def add_file(file)
- @lock.synchronize do
- @display.print_file @num_files, file
- @num_files += 1
- end
- end
-
- def add_method(method)
- @lock.synchronize do
- @display.print_method method
- @num_methods += 1
- end
- end
-
- def add_module(mod)
- @lock.synchronize do
- @display.print_module mod
- @num_modules += 1
- end
- end
-
- def done_adding
- @lock.synchronize do
- @display.done_adding
- end
- end
-
- def print
- puts "Files: #@num_files"
- puts "Classes: #@num_classes"
- puts "Modules: #@num_modules"
- puts "Methods: #@num_methods"
- puts "Elapsed: " + sprintf("%0.1fs", Time.now - @start)
- end
-
- class Quiet
- def begin_adding(*) end
- def print_alias(*) end
- def print_class(*) end
- def print_file(*) end
- def print_method(*) end
- def print_module(*) end
- def done_adding(*) end
- end
-
- class Normal
- def initialize(total_files)
- @total_files = total_files
- end
-
- def begin_adding(number_of_workers)
- puts "Parsing sources with #{number_of_workers} thread(s)..."
- end
-
- def print_file(files_so_far, filename)
- progress_bar = sprintf("%3d%% [%2d/%2d] ",
- 100 * (files_so_far + 1) / @total_files,
- files_so_far + 1,
- @total_files)
-
- if $stdout.tty?
- # Print a progress bar, but make sure it fits on a single line. Filename
- # will be truncated if necessary.
- terminal_width = (ENV['COLUMNS'] || 80).to_i
- max_filename_size = terminal_width - progress_bar.size
- if filename.size > max_filename_size
- # Turn "some_long_filename.rb" to "...ong_filename.rb"
- filename = filename[(filename.size - max_filename_size) .. -1]
- filename[0..2] = "..."
- end
-
- # Pad the line with whitespaces so that leftover output from the
- # previous line doesn't show up.
- line = "#{progress_bar}#{filename}"
- padding = terminal_width - line.size
- if padding > 0
- line << (" " * padding)
- end
-
- $stdout.print("#{line}\r")
- $stdout.flush
- else
- puts "#{progress_bar} #{filename}"
- end
- end
-
- def done_adding
- puts "\n"
- end
-
- def print_alias(*) end
- def print_class(*) end
- def print_method(*) end
- def print_module(*) end
- end
-
- class Verbose
- def begin_adding(number_of_workers)
- puts "Parsing sources with #{number_of_workers} thread(s)..."
- end
-
- def print_alias(as)
- puts "\t\talias #{as.new_name} #{as.old_name}"
- end
-
- def print_class(klass)
- puts "\tclass #{klass.full_name}"
- end
-
- def print_file(files_so_far, file)
- puts file
- end
-
- def print_method(method)
- puts "\t\t#{method.singleton ? '::' : '#'}#{method.name}"
- end
-
- def print_module(mod)
- puts "\tmodule #{mod.full_name}"
- end
-
- def done_adding
- end
- end
-
-end
-
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/task.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/task.rb
deleted file mode 100644
index 67657be77..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/task.rb
+++ /dev/null
@@ -1,276 +0,0 @@
-# Copyright (c) 2003, 2004 Jim Weirich, 2009 Eric Hodel
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-require 'rubygems'
-begin
- gem 'rdoc'
-rescue Gem::LoadError
-end
-
-begin
- gem 'rake'
-rescue Gem::LoadError
-end
-
-require 'rdoc'
-require 'rake'
-require 'rake/tasklib'
-
-##
-# Create a documentation task that will generate the RDoc files for a project.
-#
-# The RDoc::Task will create the following targets:
-#
-# [<b><em>rdoc</em></b>]
-# Main task for this RDoc task.
-#
-# [<b>:clobber_<em>rdoc</em></b>]
-# Delete all the rdoc files. This target is automatically added to the main
-# clobber target.
-#
-# [<b>:re<em>rdoc</em></b>]
-# Rebuild the rdoc files from scratch, even if they are not out of date.
-#
-# Simple Example:
-#
-# RDoc::Task.new do |rd|
-# rd.main = "README.rdoc"
-# rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
-# end
-#
-# The +rd+ object passed to the block is an RDoc::Task object. See the
-# attributes list for the RDoc::Task class for available customization options.
-#
-# == Specifying different task names
-#
-# You may wish to give the task a different name, such as if you are
-# generating two sets of documentation. For instance, if you want to have a
-# development set of documentation including private methods:
-#
-# RDoc::Task.new :rdoc_dev do |rd|
-# rd.main = "README.doc"
-# rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
-# rd.options << "--all"
-# end
-#
-# The tasks would then be named :<em>rdoc_dev</em>,
-# :clobber_<em>rdoc_dev</em>, and :re<em>rdoc_dev</em>.
-#
-# If you wish to have completely different task names, then pass a Hash as
-# first argument. With the <tt>:rdoc</tt>, <tt>:clobber_rdoc</tt> and
-# <tt>:rerdoc</tt> options, you can customize the task names to your liking.
-#
-# For example:
-#
-# RDoc::Task.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean",
-# :rerdoc => "rdoc:force")
-#
-# This will create the tasks <tt>:rdoc</tt>, <tt>:rdoc_clean</tt> and
-# <tt>:rdoc:force</tt>.
-
-class RDoc::Task < Rake::TaskLib
-
- ##
- # Name of the main, top level task. (default is :rdoc)
-
- attr_accessor :name
-
- ##
- # Name of directory to receive the html output files. (default is "html")
-
- attr_accessor :rdoc_dir
-
- ##
- # Title of RDoc documentation. (defaults to rdoc's default)
-
- attr_accessor :title
-
- ##
- # Name of file to be used as the main, top level file of the RDoc. (default
- # is none)
-
- attr_accessor :main
-
- ##
- # Name of template to be used by rdoc. (defaults to rdoc's default)
-
- attr_accessor :template
-
- ##
- # List of files to be included in the rdoc generation. (default is [])
-
- attr_accessor :rdoc_files
-
- ##
- # Additional list of options to be passed rdoc. (default is [])
-
- attr_accessor :options
-
- ##
- # Whether to run the rdoc process as an external shell (default is false)
-
- attr_accessor :external
-
- ##
- # Create an RDoc task with the given name. See the RDoc::Task class overview
- # for documentation.
-
- def initialize(name = :rdoc) # :yield: self
- if name.is_a? Hash then
- invalid_options = name.keys.map { |k| k.to_sym } -
- [:rdoc, :clobber_rdoc, :rerdoc]
-
- unless invalid_options.empty? then
- raise ArgumentError, "invalid options: #{invalid_options.join(", ")}"
- end
- end
-
- @name = name
- @rdoc_files = Rake::FileList.new
- @rdoc_dir = 'html'
- @main = nil
- @title = nil
- @template = nil
- @external = false
- @options = []
- yield self if block_given?
- define
- end
-
- ##
- # Create the tasks defined by this task lib.
-
- def define
- if rdoc_task_name != "rdoc" then
- desc "Build the RDoc HTML Files"
- else
- desc "Build the #{rdoc_task_name} HTML Files"
- end
- task rdoc_task_name
-
- desc "Force a rebuild of the RDoc files"
- task rerdoc_task_name => [clobber_task_name, rdoc_task_name]
-
- desc "Remove RDoc products"
- task clobber_task_name do
- rm_r rdoc_dir rescue nil
- end
-
- task :clobber => [clobber_task_name]
-
- directory @rdoc_dir
- task rdoc_task_name => [rdoc_target]
- file rdoc_target => @rdoc_files + [Rake.application.rakefile] do
- rm_r @rdoc_dir rescue nil
- @before_running_rdoc.call if @before_running_rdoc
- args = option_list + @rdoc_files
-
- if @external then
- argstring = args.join(' ')
- sh %{ruby -Ivendor vendor/rd #{argstring}}
- else
- if Rake.application.options.trace then
- $stderr.puts "rdoc #{args.join ' '}"
- end
- require 'rdoc/rdoc'
- RDoc::RDoc.new.document(args)
- end
- end
-
- self
- end
-
- def option_list
- result = @options.dup
- result << "-o" << @rdoc_dir
- result << "--main" << quote(main) if main
- result << "--title" << quote(title) if title
- result << "-T" << quote(template) if template
- result
- end
-
- def quote(str)
- if @external
- "'#{str}'"
- else
- str
- end
- end
-
- def option_string
- option_list.join(' ')
- end
-
- ##
- # The block passed to this method will be called just before running the
- # RDoc generator. It is allowed to modify RDoc::Task attributes inside the
- # block.
-
- def before_running_rdoc(&block)
- @before_running_rdoc = block
- end
-
- private
-
- def rdoc_target
- "#{rdoc_dir}/index.html"
- end
-
- def rdoc_task_name
- case name
- when Hash
- (name[:rdoc] || "rdoc").to_s
- else
- name.to_s
- end
- end
-
- def clobber_task_name
- case name
- when Hash
- (name[:clobber_rdoc] || "clobber_rdoc").to_s
- else
- "clobber_#{name}"
- end
- end
-
- def rerdoc_task_name
- case name
- when Hash
- (name[:rerdoc] || "rerdoc").to_s
- else
- "re#{name}"
- end
- end
-
-end
-
-# :stopdoc:
-module Rake
-
- ##
- # For backwards compatibility
-
- RDocTask = RDoc::Task
-
-end
-# :startdoc:
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/tokenstream.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/tokenstream.rb
deleted file mode 100644
index 0a1eb9130..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/tokenstream.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-module RDoc; end
-
-##
-# A TokenStream is a list of tokens, gathered during the parse of some entity
-# (say a method). Entities populate these streams by being registered with the
-# lexer. Any class can collect tokens by including TokenStream. From the
-# outside, you use such an object by calling the start_collecting_tokens
-# method, followed by calls to add_token and pop_token.
-
-module RDoc::TokenStream
-
- def token_stream
- @token_stream
- end
-
- def start_collecting_tokens
- @token_stream = []
- end
-
- def add_token(tk)
- @token_stream << tk
- end
-
- def add_tokens(tks)
- tks.each {|tk| add_token(tk)}
- end
-
- def pop_token
- @token_stream.pop
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/lib/rdoc/top_level.rb b/vendor/gems/rdoc-2.4.3/lib/rdoc/top_level.rb
deleted file mode 100644
index 5db404cc2..000000000
--- a/vendor/gems/rdoc-2.4.3/lib/rdoc/top_level.rb
+++ /dev/null
@@ -1,242 +0,0 @@
-require 'thread'
-require 'rdoc/context'
-
-##
-# A TopLevel context is a representation of the contents of a single file
-
-class RDoc::TopLevel < RDoc::Context
-
- ##
- # This TopLevel's File::Stat struct
-
- attr_accessor :file_stat
-
- ##
- # Relative name of this file
-
- attr_accessor :relative_name
-
- ##
- # Absolute name of this file
-
- attr_accessor :absolute_name
-
- attr_accessor :diagram
-
- ##
- # The parser that processed this file
-
- attr_accessor :parser
-
- ##
- # Returns all classes and modules discovered by RDoc
-
- def self.all_classes_and_modules
- classes_hash.values + modules_hash.values
- end
-
- ##
- # Returns all classes discovered by RDoc
-
- def self.classes
- classes_hash.values
- end
-
- ##
- # Hash of all classes known to RDoc
-
- def self.classes_hash
- @all_classes
- end
-
- ##
- # All TopLevels known to RDoc
-
- def self.files
- @all_files.values
- end
-
- ##
- # Hash of all files known to RDoc
-
- def self.files_hash
- @all_files
- end
-
- ##
- # Finds the class with +name+ in all discovered classes
-
- def self.find_class_named(name)
- @lock.synchronize do
- classes_hash.values.find do |c|
- c.find_class_named name
- end
- end
- end
-
- ##
- # Finds the file with +name+ in all discovered files
-
- def self.find_file_named(name)
- @lock.synchronize do
- @all_files[name]
- end
- end
-
- ##
- # Finds the module with +name+ in all discovered modules
-
- def self.find_module_named(name)
- @lock.synchronize do
- modules_hash.values.find do |c|
- c.find_module_named name
- end
- end
- end
-
- @lock = Mutex.new
-
- ##
- # Lock for global class, module and file stores
-
- def self.lock
- @lock
- end
-
- ##
- # Returns all modules discovered by RDoc
-
- def self.modules
- modules_hash.values
- end
-
- ##
- # Hash of all modules known to RDoc
-
- def self.modules_hash
- @all_modules
- end
-
- ##
- # Empties RDoc of stored class, module and file information
-
- def self.reset
- @lock.synchronize do
- @all_classes = {}
- @all_modules = {}
- @all_files = {}
- end
- end
-
- reset
-
- ##
- # Creates a new TopLevel for +file_name+
-
- def initialize(file_name)
- super()
- @name = nil
- @relative_name = file_name
- @absolute_name = file_name
- @file_stat = File.stat(file_name) rescue nil # HACK for testing
- @diagram = nil
- @parser = nil
-
- RDoc::TopLevel.lock.synchronize do
- RDoc::TopLevel.files_hash[file_name] = self
- end
- end
-
- ##
- # Adds +method+ to Object instead of RDoc::TopLevel
-
- def add_method(method)
- object = self.class.find_class_named 'Object'
- object = add_class RDoc::NormalClass, 'Object' unless object
-
- object.add_method method
- end
-
- ##
- # Base name of this file
-
- def base_name
- File.basename @absolute_name
- end
-
- ##
- # Find class or module named +symbol+ in all discovered classes and
- # modules
-
- def find_class_or_module_named(symbol)
- RDoc::TopLevel.classes_hash.each_value do |c|
- return c if c.full_name == symbol
- end
-
- RDoc::TopLevel.modules_hash.each_value do |m|
- return m if m.full_name == symbol
- end
-
- nil
- end
-
- ##
- # Finds a class or module named +symbol+
-
- def find_local_symbol(symbol)
- find_class_or_module_named(symbol) || super
- end
-
- ##
- # Finds a module or class with +name+
-
- def find_module_named(name)
- find_class_or_module_named(name) || find_enclosing_module_named(name)
- end
-
- ##
- # The name of this file
-
- def full_name
- @relative_name
- end
-
- ##
- # URL for this with a +prefix+
-
- def http_url(prefix)
- path = [prefix, @relative_name.tr('.', '_')]
-
- File.join(*path.compact) + '.html'
- end
-
- def inspect # :nodoc:
- "#<%s:0x%x %p modules: %p classes: %p>" % [
- self.class, object_id,
- base_name,
- @modules.map { |n,m| m },
- @classes.map { |n,c| c }
- ]
- end
-
- ##
- # Date this file was last modified, if known
-
- def last_modified
- @file_stat ? file_stat.mtime.to_s : 'Unknown'
- end
-
- ##
- # Base name of this file
-
- alias name base_name
-
- ##
- # Path to this file
-
- def path
- http_url RDoc::RDoc.current.generator.file_dir
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/binary.dat b/vendor/gems/rdoc-2.4.3/test/binary.dat
deleted file mode 100644
index 371950efe..000000000
--- a/vendor/gems/rdoc-2.4.3/test/binary.dat
+++ /dev/null
Binary files differ
diff --git a/vendor/gems/rdoc-2.4.3/test/test.ja.rdoc b/vendor/gems/rdoc-2.4.3/test/test.ja.rdoc
deleted file mode 100644
index 96e1db93d..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test.ja.rdoc
+++ /dev/null
@@ -1,8 +0,0 @@
-こんにちは!
-
-初めまして。アーロンと申します。
-
-どんな食べ物が好きですか?私はフランスの料理が大好きです。
-日本の料理も大好きです。
-
-食べ物を食べるのが大好きだけど、お皿を洗うのが大嫌いです。
diff --git a/vendor/gems/rdoc-2.4.3/test/test.ja.txt b/vendor/gems/rdoc-2.4.3/test/test.ja.txt
deleted file mode 100644
index 96e1db93d..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test.ja.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-こんにちは!
-
-初めまして。アーロンと申します。
-
-どんな食べ物が好きですか?私はフランスの料理が大好きです。
-日本の料理も大好きです。
-
-食べ物を食べるのが大好きだけど、お皿を洗うのが大嫌いです。
diff --git a/vendor/gems/rdoc-2.4.3/test/test_attribute_manager.rb b/vendor/gems/rdoc-2.4.3/test/test_attribute_manager.rb
deleted file mode 100644
index ee45c0596..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_attribute_manager.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/markup/attribute_manager'
-
-class TestAttributeManager < MiniTest::Unit::TestCase
-
- def setup
- @am = RDoc::Markup::AttributeManager.new
- @klass = RDoc::Markup::AttributeManager
- end
-
- def teardown
- silently do
- @klass.const_set(:MATCHING_WORD_PAIRS, {})
- @klass.const_set(:WORD_PAIR_MAP, {})
- @klass.const_set(:HTML_TAGS, {})
- end
- end
-
- def test_initial_word_pairs
- word_pairs = @klass::MATCHING_WORD_PAIRS
- assert word_pairs.is_a?(Hash)
- assert_equal(3, word_pairs.size)
- end
-
- def test_initial_html
- html_tags = @klass::HTML_TAGS
- assert html_tags.is_a?(Hash)
- assert_equal(5, html_tags.size)
- end
-
- def test_add_matching_word_pair
- @am.add_word_pair("x","x", :TEST)
- word_pairs = @klass::MATCHING_WORD_PAIRS
- assert_equal(4,word_pairs.size)
- assert(word_pairs.has_key?("x"))
- end
-
- def test_add_invalid_word_pair
- assert_raises ArgumentError do
- @am.add_word_pair("<", "<", :TEST)
- end
- end
-
- def test_add_word_pair_map
- @am.add_word_pair("x", "y", :TEST)
- word_pair_map = @klass::WORD_PAIR_MAP
- assert_equal(1,word_pair_map.size)
- assert_equal(word_pair_map. keys.first.source, "(x)(\\S+)(y)")
- end
-
- def test_add_html_tag
- @am.add_html("Test", :TEST)
- tags = @klass::HTML_TAGS
- assert_equal(6, tags.size)
- assert(tags.has_key?("test"))
- end
-
- def test_add_special
- @am.add_special("WikiWord", :WIKIWORD)
- specials = @klass::SPECIAL
- assert_equal(1,specials.size)
- assert(specials.has_key?("WikiWord"))
- end
-
- def silently(&block)
- warn_level = $VERBOSE
- $VERBOSE = nil
- result = block.call
- $VERBOSE = warn_level
- result
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_any_method.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_any_method.rb
deleted file mode 100644
index a4e30c42b..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_any_method.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'test/xref_test_case'
-
-class RDocAnyMethodTest < XrefTestCase
-
- def test_full_name
- assert_equal 'C1::m', @c1.method_list.first.full_name
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_code_object.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_code_object.rb
deleted file mode 100644
index 282ca1ecc..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_code_object.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'test/xref_test_case'
-require 'rdoc/code_object'
-
-class TestRDocCodeObject < XrefTestCase
-
- def setup
- super
-
- @co = RDoc::CodeObject.new
- end
-
- def test_initialize
- assert @co.document_self, 'document_self'
- assert @co.document_children, 'document_children'
- refute @co.force_documentation, 'force_documentation'
- refute @co.done_documenting, 'done_documenting'
- assert_equal nil, @co.comment, 'comment is nil'
- end
-
- def test_comment_equals
- @co.comment = ''
-
- assert_equal nil, @co.comment
-
- @co.comment = 'I am a comment'
-
- assert_equal 'I am a comment', @co.comment
- end
-
- def test_document_children_equals
- @co.document_children = false
- refute @co.document_children
-
- @c2.document_children = false
- assert_empty @c2.classes
- end
-
- def test_document_self_equals
- @co.document_self = false
- refute @co.document_self
-
- @c1.document_self = false
- assert_empty @c1.method_list
- end
-
- def test_parent_file_name
- assert_equal '(unknown)', @co.parent_file_name
- assert_equal 'xref_data.rb', @c1.parent_file_name
- end
-
- def test_parent_name
- assert_equal '(unknown)', @co.parent_name
- assert_equal 'xref_data.rb', @c1.parent_name
- assert_equal 'C2', @c2_c3.parent_name
- end
-
- def test_start_doc
- @co.document_self = false
- @co.document_children = false
-
- @co.start_doc
-
- assert @co.document_self
- assert @co.document_children
- end
-
- def test_stop_doc
- @co.document_self = true
- @co.document_children = true
-
- @co.stop_doc
-
- refute @co.document_self
- refute @co.document_children
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_constant.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_constant.rb
deleted file mode 100644
index 9ec697224..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_constant.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'test/xref_test_case'
-
-class TestRDocConstant < XrefTestCase
-
- def setup
- super
-
- @const = @c1.constants.first
- end
-
- def test_path
- assert_equal 'C1.html#CONST', @const.path
- end
-
-end
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_context.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_context.rb
deleted file mode 100644
index 6360c5837..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_context.rb
+++ /dev/null
@@ -1,250 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'test/xref_test_case'
-
-class TestRDocContext < XrefTestCase
-
- def setup
- super
-
- @context = RDoc::Context.new
- end
-
- def test_initialize
- assert_empty @context.in_files
- assert_equal 'unknown', @context.name
- assert_equal '', @context.comment
- assert_equal nil, @context.parent
- assert_equal :public, @context.visibility
- assert_equal 1, @context.sections.length
-
- assert_empty @context.classes_hash
- assert_empty @context.modules_hash
-
- assert_empty @context.method_list
- assert_empty @context.attributes
- assert_empty @context.aliases
- assert_empty @context.requires
- assert_empty @context.includes
- assert_empty @context.constants
- end
-
- def test_add_alias
- as = RDoc::Alias.new nil, 'old_name', 'new_name', 'comment'
-
- @context.add_alias as
-
- assert_equal [as], @context.aliases
- assert_equal [as], @context.unmatched_alias_lists['old_name']
- end
-
- def test_add_alias_method
- meth = RDoc::AnyMethod.new nil, 'old_name'
- as = RDoc::Alias.new nil, 'old_name', 'new_name', 'comment'
- as.parent = @context
-
- @context.add_method meth
- @context.add_alias as
-
- assert_empty @context.aliases
- assert_empty @context.unmatched_alias_lists
- assert_equal %w[old_name new_name], @context.method_list.map { |m| m.name }
- end
-
- def test_add_class
- @c1.add_class RDoc::NormalClass, 'Klass', 'Object'
-
- assert_includes @c1.classes.map { |k| k.full_name }, 'C1::Klass'
- assert_includes RDoc::TopLevel.classes.map { |k| k.full_name }, 'C1::Klass'
- end
-
- def test_add_class_upgrade
- @c1.add_module RDoc::NormalModule, 'Klass'
- @c1.add_class RDoc::NormalClass, 'Klass', nil
-
- assert_includes @c1.classes.map { |k| k.full_name }, 'C1::Klass',
- 'c1 classes'
- refute_includes @c1.modules.map { |k| k.full_name }, 'C1::Klass',
- 'c1 modules'
-
- assert_includes RDoc::TopLevel.classes.map { |k| k.full_name }, 'C1::Klass',
- 'TopLevel classes'
- refute_includes RDoc::TopLevel.modules.map { |k| k.full_name }, 'C1::Klass',
- 'TopLevel modules'
- end
-
- def test_add_constant
- const = RDoc::Constant.new 'NAME', 'value', 'comment'
- @context.add_constant const
-
- assert_equal [const], @context.constants
- end
-
- def test_add_include
- incl = RDoc::Include.new 'Name', 'comment'
- @context.add_include incl
-
- assert_equal [incl], @context.includes
- end
-
- def test_add_method
- meth = RDoc::AnyMethod.new nil, 'old_name'
- meth.visibility = nil
-
- @context.add_method meth
-
- assert_equal [meth], @context.method_list
- assert_equal :public, meth.visibility
- end
-
- def test_add_method_alias
- as = RDoc::Alias.new nil, 'old_name', 'new_name', 'comment'
- meth = RDoc::AnyMethod.new nil, 'old_name'
-
- @context.add_alias as
- refute_empty @context.aliases
-
- @context.add_method meth
-
- assert_empty @context.aliases
- assert_empty @context.unmatched_alias_lists
- assert_equal %w[old_name new_name], @context.method_list.map { |m| m.name }
- end
-
- def test_add_module
- @c1.add_module RDoc::NormalModule, 'Mod'
-
- assert_includes @c1.modules.map { |m| m.full_name }, 'C1::Mod'
- end
-
- def test_add_module_class
- k = @c1.add_class RDoc::NormalClass, 'Klass', nil
- m = @c1.add_module RDoc::NormalModule, 'Klass'
-
- assert_equal k, m, 'returns class'
- assert_empty @c1.modules
- end
-
- def test_add_require
- req = RDoc::Require.new 'require', 'comment'
- @c1.add_require req
-
- assert_empty @c1.requires
- assert_includes @c1.top_level.requires, req
- end
-
- def test_add_to
- incl = RDoc::Include.new 'Name', 'comment'
- arr = []
- @context.add_to arr, incl
-
- assert_includes arr, incl
- assert_equal @context, incl.parent
- assert_equal @context.current_section, incl.section
- end
-
- def test_add_to_no_document_self
- incl = RDoc::Include.new 'Name', 'comment'
- arr = []
- @context.document_self = false
- @context.add_to arr, incl
-
- refute_includes arr, incl
- end
-
- def test_add_to_done_documenting
- incl = RDoc::Include.new 'Name', 'comment'
- arr = []
- @context.done_documenting = true
- @context.add_to arr, incl
-
- refute_includes arr, incl
- end
-
- def test_classes
- assert_equal %w[C2::C3], @c2.classes.map { |k| k.full_name }
- assert_equal %w[C3::H1 C3::H2], @c3.classes.map { |k| k.full_name }
- end
-
- def test_defined_in_eh
- assert @c1.defined_in?(@c1.top_level)
-
- refute @c1.defined_in?(RDoc::TopLevel.new('name.rb'))
- end
-
- def test_equals2
- assert_equal @c3, @c3
- refute_equal @c2, @c3
- refute_equal @c2_c3, @c3
- end
-
- def test_find_attribute_named
- assert_equal nil, @c1.find_attribute_named('none')
- assert_equal 'R', @c1.find_attribute_named('attr').rw
- assert_equal 'R', @c1.find_attribute_named('attr_reader').rw
- assert_equal 'W', @c1.find_attribute_named('attr_writer').rw
- assert_equal 'RW', @c1.find_attribute_named('attr_accessor').rw
- end
-
- def test_find_constant_named
- assert_equal nil, @c1.find_constant_named('NONE')
- assert_equal ':const', @c1.find_constant_named('CONST').value
- end
-
- def test_find_enclosing_module_named
- assert_equal nil, @c2_c3.find_enclosing_module_named('NONE')
- assert_equal @c1, @c2_c3.find_enclosing_module_named('C1')
- assert_equal @c2, @c2_c3.find_enclosing_module_named('C2')
- end
-
- def test_find_file_named
- assert_equal nil, @c1.find_file_named('nonexistent.rb')
- assert_equal @xref_data, @c1.find_file_named(@file_name)
- end
-
- def test_find_instance_method_named
- assert_equal nil, @c1.find_instance_method_named('none')
-
- m = @c1.find_instance_method_named('m')
- assert_instance_of RDoc::AnyMethod, m
- assert_equal false, m.singleton
- end
-
- def test_find_local_symbol
- assert_equal true, @c1.find_local_symbol('m').singleton
- assert_equal ':const', @c1.find_local_symbol('CONST').value
- assert_equal 'R', @c1.find_local_symbol('attr').rw
- assert_equal @xref_data, @c1.find_local_symbol(@file_name)
- assert_equal @c2_c3, @c2.find_local_symbol('C3')
- end
-
- def test_find_method_named
- assert_equal true, @c1.find_method_named('m').singleton
- end
-
- def test_find_module_named
- assert_equal @c2_c3, @c2.find_module_named('C3')
- assert_equal @c2, @c2.find_module_named('C2')
- assert_equal @c1, @c2.find_module_named('C1')
-
- assert_equal 'C2::C3', @c2.find_module_named('C3').full_name
- end
-
- def test_find_symbol
- c3 = @xref_data.find_module_named('C3')
- assert_equal c3, @xref_data.find_symbol('C3')
- assert_equal c3, @c2.find_symbol('::C3')
- assert_equal @c2_c3, @c2.find_symbol('C3')
- end
-
- def test_spaceship
- assert_equal(-1, @c2.<=>(@c3))
- assert_equal 0, @c2.<=>(@c2)
- assert_equal 1, @c3.<=>(@c2)
-
- assert_equal 1, @c2_c3.<=>(@c2)
- assert_equal(-1, @c2_c3.<=>(@c3))
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_include.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_include.rb
deleted file mode 100644
index 6e305dd13..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_include.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'test/xref_test_case'
-
-class TestRDocInclude < XrefTestCase
-
- def setup
- super
-
- @inc = RDoc::Include.new 'M1', 'comment'
- end
-
- def test_module
- assert_equal @m1, @inc.module
- assert_equal 'Unknown', RDoc::Include.new('Unknown', 'comment').module
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup.rb
deleted file mode 100644
index ce962a2c5..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup.rb
+++ /dev/null
@@ -1,626 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/markup'
-require 'rdoc/markup/to_test'
-
-class TestRDocMarkup < MiniTest::Unit::TestCase
-
- def basic_conv(str)
- sm = RDoc::Markup.new
- mock = RDoc::Markup::ToTest.new
- sm.convert(str, mock)
- sm.content
- end
-
- def line_groups(str, expected)
- m = RDoc::Markup.new
- mock = RDoc::Markup::ToTest.new
-
- block = m.convert(str, mock)
-
- unless block == expected then
- rows = (0...([expected.size, block.size].max)).collect{|i|
- [expected[i]||"nil", block[i]||"nil"]
- }
- printf "\n\n%35s %35s\n", "Expected", "Got"
- rows.each { |e,g| printf "%35s %35s\n", e.dump, g.dump }
- end
-
- assert_equal(expected, block)
- end
-
- def line_types(str, expected)
- m = RDoc::Markup.new
- mock = RDoc::Markup::ToTest.new
- m.convert(str, mock)
- assert_equal(expected, m.get_line_types.map{|type| type.to_s[0,1]}.join(''))
- end
-
- def test_groups
- str = "now is the time"
- line_groups(str, ["L0: Paragraph\nnow is the time"] )
-
- str = "now is the time\nfor all good men"
- line_groups(str, ["L0: Paragraph\nnow is the time for all good men"] )
-
- str = %{\
- now is the time
- code _line_ here
- for all good men}
-
- line_groups(str,
- [ "L0: Paragraph\nnow is the time",
- "L0: Verbatim\n code _line_ here\n",
- "L0: Paragraph\nfor all good men"
- ] )
-
- str = "now is the time\n code\n more code\nfor all good men"
- line_groups(str,
- [ "L0: Paragraph\nnow is the time",
- "L0: Verbatim\n code\n more code\n",
- "L0: Paragraph\nfor all good men"
- ] )
-
- str = %{\
- now is
- * l1
- * l2
- the time}
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L1: ListStart\n",
- "L1: BULLET ListItem\nl1",
- "L1: BULLET ListItem\nl2",
- "L1: ListEnd\n",
- "L0: Paragraph\nthe time"
- ])
-
- str = %{\
- now is
- * l1
- l1+
- * l2
- the time}
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L1: ListStart\n",
- "L1: BULLET ListItem\nl1 l1+",
- "L1: BULLET ListItem\nl2",
- "L1: ListEnd\n",
- "L0: Paragraph\nthe time"
- ])
-
- str = %{\
- now is
- * l1
- * l1.1
- * l2
- the time}
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L1: ListStart\n",
- "L1: BULLET ListItem\nl1",
- "L2: ListStart\n",
- "L2: BULLET ListItem\nl1.1",
- "L2: ListEnd\n",
- "L1: BULLET ListItem\nl2",
- "L1: ListEnd\n",
- "L0: Paragraph\nthe time"
- ])
-
-
- str = %{\
- now is
- * l1
- * l1.1
- text
- code
- code
-
- text
- * l2
- the time}
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L1: ListStart\n",
- "L1: BULLET ListItem\nl1",
- "L2: ListStart\n",
- "L2: BULLET ListItem\nl1.1 text",
- "L2: Verbatim\n code\n code\n",
- "L2: Paragraph\ntext",
- "L2: ListEnd\n",
- "L1: BULLET ListItem\nl2",
- "L1: ListEnd\n",
- "L0: Paragraph\nthe time"
- ])
-
-
- str = %{\
- now is
- 1. l1
- * l1.1
- 2. l2
- the time}
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L1: ListStart\n",
- "L1: NUMBER ListItem\nl1",
- "L2: ListStart\n",
- "L2: BULLET ListItem\nl1.1",
- "L2: ListEnd\n",
- "L1: NUMBER ListItem\nl2",
- "L1: ListEnd\n",
- "L0: Paragraph\nthe time"
- ])
-
- str = %{\
- now is
- [cat] l1
- * l1.1
- [dog] l2
- the time}
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L1: ListStart\n",
- "L1: LABELED ListItem\ncat: l1",
- "L2: ListStart\n",
- "L2: BULLET ListItem\nl1.1",
- "L2: ListEnd\n",
- "L1: LABELED ListItem\ndog: l2",
- "L1: ListEnd\n",
- "L0: Paragraph\nthe time"
- ])
-
- str = %{\
- now is
- [cat] l1
- continuation
- [dog] l2
- the time}
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L1: ListStart\n",
- "L1: LABELED ListItem\ncat: l1 continuation",
- "L1: LABELED ListItem\ndog: l2",
- "L1: ListEnd\n",
- "L0: Paragraph\nthe time"
- ])
- end
-
- def test_headings
- str = "= heading one"
- line_groups(str,
- [ "L0: Heading\nheading one"
- ])
-
- str = "=== heading three"
- line_groups(str,
- [ "L0: Heading\nheading three"
- ])
-
- str = "text\n === heading three"
- line_groups(str,
- [ "L0: Paragraph\ntext",
- "L0: Verbatim\n === heading three\n"
- ])
-
- str = "text\n code\n === heading three"
- line_groups(str,
- [ "L0: Paragraph\ntext",
- "L0: Verbatim\n code\n === heading three\n"
- ])
-
- str = "text\n code\n=== heading three"
- line_groups(str,
- [ "L0: Paragraph\ntext",
- "L0: Verbatim\n code\n",
- "L0: Heading\nheading three"
- ])
-
- end
-
- def test_list_alpha
- str = "a. alpha\nb. baker\nB. ALPHA\nA. BAKER"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: LOWERALPHA ListItem\nalpha",
- "L1: LOWERALPHA ListItem\nbaker",
- "L1: ListEnd\n",
- "L1: ListStart\n",
- "L1: UPPERALPHA ListItem\nALPHA",
- "L1: UPPERALPHA ListItem\nBAKER",
- "L1: ListEnd\n" ])
- end
-
- def test_list_bullet_dash
- str = "- one\n- two\n"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: BULLET ListItem\none",
- "L1: BULLET ListItem\ntwo",
- "L1: ListEnd\n" ])
- end
-
- def test_list_bullet_star
- str = "* one\n* two\n"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: BULLET ListItem\none",
- "L1: BULLET ListItem\ntwo",
- "L1: ListEnd\n" ])
- end
-
- def test_list_labeled_bracket
- str = "[one] item one\n[two] item two"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: LABELED ListItem\none: item one",
- "L1: LABELED ListItem\ntwo: item two",
- "L1: ListEnd\n" ])
- end
-
- def test_list_labeled_bracket_continued
- str = "[one]\n item one\n[two]\n item two"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: LABELED ListItem\none: item one",
- "L1: LABELED ListItem\ntwo: item two",
- "L1: ListEnd\n" ])
- end
-
- def test_list_labeled_colon
- str = "one:: item one\ntwo:: item two"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: NOTE ListItem\none:: item one",
- "L1: NOTE ListItem\ntwo:: item two",
- "L1: ListEnd\n" ])
- end
-
- def test_list_labeled_colon_continued
- str = "one::\n item one\ntwo::\n item two"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: NOTE ListItem\none:: item one",
- "L1: NOTE ListItem\ntwo:: item two",
- "L1: ListEnd\n" ])
- end
-
- def test_list_nested_bullet_bullet
- str = "* one\n* two\n * cat\n * dog"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: BULLET ListItem\none",
- "L1: BULLET ListItem\ntwo",
- "L2: ListStart\n",
- "L2: BULLET ListItem\ncat",
- "L2: BULLET ListItem\ndog",
- "L2: ListEnd\n",
- "L1: ListEnd\n" ])
- end
-
- def test_list_nested_labeled_bullet
- str = "[one]\n * cat\n * dog"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: LABELED ListItem\none: ",
- "L2: ListStart\n",
- "L2: BULLET ListItem\ncat",
- "L2: BULLET ListItem\ndog",
- "L2: ListEnd\n",
- "L1: ListEnd\n" ])
- end
-
- def test_list_nested_labeled_bullet_bullet
- str = "[one]\n * cat\n * dog"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: LABELED ListItem\none: ",
- "L2: ListStart\n",
- "L2: BULLET ListItem\ncat",
- "L3: ListStart\n",
- "L3: BULLET ListItem\ndog",
- "L3: ListEnd\n",
- "L2: ListEnd\n",
- "L1: ListEnd\n" ])
- end
-
- def test_list_nested_number_number
- str = "1. one\n1. two\n 1. cat\n 1. dog"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: NUMBER ListItem\none",
- "L1: NUMBER ListItem\ntwo",
- "L2: ListStart\n",
- "L2: NUMBER ListItem\ncat",
- "L2: NUMBER ListItem\ndog",
- "L2: ListEnd\n",
- "L1: ListEnd\n" ])
- end
-
- def test_list_number
- str = "1. one\n2. two\n1. three"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: NUMBER ListItem\none",
- "L1: NUMBER ListItem\ntwo",
- "L1: NUMBER ListItem\nthree",
- "L1: ListEnd\n" ])
- end
-
- def test_list_split
- str = %{\
- now is
- * l1
- 1. n1
- 2. n2
- * l2
- the time}
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L1: ListStart\n",
- "L1: BULLET ListItem\nl1",
- "L1: ListEnd\n",
- "L1: ListStart\n",
- "L1: NUMBER ListItem\nn1",
- "L1: NUMBER ListItem\nn2",
- "L1: ListEnd\n",
- "L1: ListStart\n",
- "L1: BULLET ListItem\nl2",
- "L1: ListEnd\n",
- "L0: Paragraph\nthe time"
- ])
-
- end
-
- def test_list_verbatim
- str = "* one\n verb1\n verb2\n* two\n"
-
- line_groups(str,
- [ "L1: ListStart\n",
- "L1: BULLET ListItem\none",
- "L1: Verbatim\n verb1\n verb2\n",
- "L1: BULLET ListItem\ntwo",
- "L1: ListEnd\n" ])
- end
-
- def test_paragraph
- str = "paragraph\n\n*bold* paragraph\n"
-
- line_groups str, [
- "L0: Paragraph\nparagraph",
- "L0: BlankLine\n",
- "L0: Paragraph\n*bold* paragraph"
- ]
- end
-
- def test_tabs
- str = "hello\n dave"
- assert_equal(str, basic_conv(str))
- str = "hello\n\tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = "hello\n \tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = "hello\n \tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = "hello\n \tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = "hello\n \tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = "hello\n \tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = "hello\n \tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = "hello\n \tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = "hello\n \tdave"
- assert_equal("hello\n dave", basic_conv(str))
- str = ".\t\t."
- assert_equal(". .", basic_conv(str))
- end
-
- def test_types
- str = "now is the time"
- line_types(str, 'P')
-
- str = "now is the time\nfor all good men"
- line_types(str, 'PP')
-
- str = "now is the time\n code\nfor all good men"
- line_types(str, 'PVP')
-
- str = "now is the time\n code\n more code\nfor all good men"
- line_types(str, 'PVVP')
-
- str = "now is\n---\nthe time"
- line_types(str, 'PRP')
-
- str = %{\
- now is
- * l1
- * l2
- the time}
- line_types(str, 'PLLP')
-
- str = %{\
- now is
- * l1
- l1+
- * l2
- the time}
- line_types(str, 'PLPLP')
-
- str = %{\
- now is
- * l1
- * l1.1
- * l2
- the time}
- line_types(str, 'PLLLP')
-
- str = %{\
- now is
- * l1
- * l1.1
- text
- code
- code
-
- text
- * l2
- the time}
- line_types(str, 'PLLPVVBPLP')
-
- str = %{\
- now is
- 1. l1
- * l1.1
- 2. l2
- the time}
- line_types(str, 'PLLLP')
-
- str = %{\
- now is
- [cat] l1
- * l1.1
- [dog] l2
- the time}
- line_types(str, 'PLLLP')
-
- str = %{\
- now is
- [cat] l1
- continuation
- [dog] l2
- the time}
- line_types(str, 'PLPLP')
- end
-
- def test_verbatim
- str = "paragraph\n *bold* verbatim\n"
-
- line_groups str, [
- "L0: Paragraph\nparagraph",
- "L0: Verbatim\n *bold* verbatim\n"
- ]
- end
-
- def test_verbatim_merge
- str = %{\
- now is
- code
- the time}
-
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L0: Verbatim\n code\n",
- "L0: Paragraph\nthe time"
- ])
-
-
- str = %{\
- now is
- code
- code1
- the time}
-
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L0: Verbatim\n code\n code1\n",
- "L0: Paragraph\nthe time"
- ])
-
-
- str = %{\
- now is
- code
-
- code1
- the time}
-
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L0: Verbatim\n code\n\n code1\n",
- "L0: Paragraph\nthe time"
- ])
-
-
- str = %{\
- now is
- code
-
- code1
-
- the time}
-
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L0: Verbatim\n code\n\n code1\n",
- "L0: Paragraph\nthe time"
- ])
-
-
- str = %{\
- now is
- code
-
- code1
-
- code2
- the time}
-
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L0: Verbatim\n code\n\n code1\n\n code2\n",
- "L0: Paragraph\nthe time"
- ])
-
-
- # Folds multiple blank lines
- str = %{\
- now is
- code
-
-
- code1
-
- the time}
-
- line_groups(str,
- [ "L0: Paragraph\nnow is",
- "L0: Verbatim\n code\n\n code1\n",
- "L0: Paragraph\nthe time"
- ])
-
-
- end
-
- def test_whitespace
- assert_equal("hello", basic_conv("hello"))
- assert_equal("hello", basic_conv(" hello "))
- assert_equal("hello", basic_conv(" \t \t hello\t\t"))
-
- assert_equal("1\n 2\n 3", basic_conv("1\n 2\n 3"))
- assert_equal("1\n 2\n 3", basic_conv(" 1\n 2\n 3"))
-
- assert_equal("1\n 2\n 3\n1\n 2", basic_conv("1\n 2\n 3\n1\n 2"))
- assert_equal("1\n 2\n 3\n1\n 2", basic_conv(" 1\n 2\n 3\n 1\n 2"))
-
- assert_equal("1\n 2\n\n 3", basic_conv(" 1\n 2\n\n 3"))
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_attribute_manager.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_attribute_manager.rb
deleted file mode 100644
index 0864523a0..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_attribute_manager.rb
+++ /dev/null
@@ -1,243 +0,0 @@
-require "rubygems"
-require "minitest/unit"
-require "rdoc/markup/inline"
-require "rdoc/markup/to_html_crossref"
-
-class TestRDocMarkupAttributeManager < MiniTest::Unit::TestCase
-
- def setup
- @orig_special = RDoc::Markup::AttributeManager::SPECIAL
- RDoc::Markup::AttributeManager::SPECIAL.replace Hash.new
-
- @am = RDoc::Markup::AttributeManager.new
-
- @bold_on = @am.changed_attribute_by_name([], [:BOLD])
- @bold_off = @am.changed_attribute_by_name([:BOLD], [])
-
- @tt_on = @am.changed_attribute_by_name([], [:TT])
- @tt_off = @am.changed_attribute_by_name([:TT], [])
-
- @em_on = @am.changed_attribute_by_name([], [:EM])
- @em_off = @am.changed_attribute_by_name([:EM], [])
-
- @bold_em_on = @am.changed_attribute_by_name([], [:BOLD] | [:EM])
- @bold_em_off = @am.changed_attribute_by_name([:BOLD] | [:EM], [])
-
- @em_then_bold = @am.changed_attribute_by_name([:EM], [:EM] | [:BOLD])
-
- @em_to_bold = @am.changed_attribute_by_name([:EM], [:BOLD])
-
- @am.add_word_pair("{", "}", :WOMBAT)
- @wombat_on = @am.changed_attribute_by_name([], [:WOMBAT])
- @wombat_off = @am.changed_attribute_by_name([:WOMBAT], [])
- end
-
- def teardown
- RDoc::Markup::AttributeManager::SPECIAL.replace @orig_special
- end
-
- def crossref(text)
- crossref_bitmap = RDoc::Markup::Attribute.bitmap_for(:_SPECIAL_) |
- RDoc::Markup::Attribute.bitmap_for(:CROSSREF)
-
- [ @am.changed_attribute_by_name([], [:CROSSREF, :_SPECIAL_]),
- RDoc::Markup::Special.new(crossref_bitmap, text),
- @am.changed_attribute_by_name([:CROSSREF, :_SPECIAL_], [])
- ]
- end
-
- def test_adding
- assert_equal(["cat ", @wombat_on, "and", @wombat_off, " dog" ],
- @am.flow("cat {and} dog"))
- #assert_equal(["cat {and} dog" ], @am.flow("cat \\{and} dog"))
- end
-
- def test_add_word_pair
- @am.add_word_pair '%', '&', 'percent and'
-
- assert RDoc::Markup::AttributeManager::WORD_PAIR_MAP.include?(/(%)(\S+)(&)/)
- assert RDoc::Markup::AttributeManager::PROTECTABLE.include?('%')
- assert !RDoc::Markup::AttributeManager::PROTECTABLE.include?('&')
- end
-
- def test_add_word_pair_angle
- e = assert_raises ArgumentError do
- @am.add_word_pair '<', '>', 'angles'
- end
-
- assert_equal "Word flags may not start with '<'", e.message
- end
-
- def test_add_word_pair_matching
- @am.add_word_pair '^', '^', 'caret'
-
- assert RDoc::Markup::AttributeManager::MATCHING_WORD_PAIRS.include?('^')
- assert RDoc::Markup::AttributeManager::PROTECTABLE.include?('^')
- end
-
- def test_basic
- assert_equal(["cat"], @am.flow("cat"))
-
- assert_equal(["cat ", @bold_on, "and", @bold_off, " dog"],
- @am.flow("cat *and* dog"))
-
- assert_equal(["cat ", @bold_on, "AND", @bold_off, " dog"],
- @am.flow("cat *AND* dog"))
-
- assert_equal(["cat ", @em_on, "And", @em_off, " dog"],
- @am.flow("cat _And_ dog"))
-
- assert_equal(["cat *and dog*"], @am.flow("cat *and dog*"))
-
- assert_equal(["*cat and* dog"], @am.flow("*cat and* dog"))
-
- assert_equal(["cat *and ", @bold_on, "dog", @bold_off],
- @am.flow("cat *and *dog*"))
-
- assert_equal(["cat ", @em_on, "and", @em_off, " dog"],
- @am.flow("cat _and_ dog"))
-
- assert_equal(["cat_and_dog"],
- @am.flow("cat_and_dog"))
-
- assert_equal(["cat ", @tt_on, "and", @tt_off, " dog"],
- @am.flow("cat +and+ dog"))
-
- assert_equal(["cat ", @bold_on, "a_b_c", @bold_off, " dog"],
- @am.flow("cat *a_b_c* dog"))
-
- assert_equal(["cat __ dog"],
- @am.flow("cat __ dog"))
-
- assert_equal(["cat ", @em_on, "_", @em_off, " dog"],
- @am.flow("cat ___ dog"))
- end
-
- def test_bold
- assert_equal [@bold_on, 'bold', @bold_off],
- @am.flow("*bold*")
-
- assert_equal [@bold_on, 'Bold:', @bold_off],
- @am.flow("*Bold:*")
-
- assert_equal [@bold_on, '\\bold', @bold_off],
- @am.flow("*\\bold*")
- end
-
- def test_bold_html_escaped
- assert_equal ['cat <b>dog</b>'], @am.flow('cat \<b>dog</b>')
- end
-
- def test_combined
- assert_equal(["cat ", @em_on, "and", @em_off, " ", @bold_on, "dog", @bold_off],
- @am.flow("cat _and_ *dog*"))
-
- assert_equal(["cat ", @em_on, "a__nd", @em_off, " ", @bold_on, "dog", @bold_off],
- @am.flow("cat _a__nd_ *dog*"))
- end
-
- def test_convert_attrs
- str = '+foo+'
- attrs = RDoc::Markup::AttrSpan.new str.length
-
- @am.convert_attrs str, attrs
-
- assert_equal "\000foo\000", str
-
- str = '+:foo:+'
- attrs = RDoc::Markup::AttrSpan.new str.length
-
- @am.convert_attrs str, attrs
-
- assert_equal "\000:foo:\000", str
-
- str = '+x-y+'
- attrs = RDoc::Markup::AttrSpan.new str.length
-
- @am.convert_attrs str, attrs
-
- assert_equal "\000x-y\000", str
- end
-
- def test_html_like_em_bold
- assert_equal ["cat ", @em_on, "and ", @em_to_bold, "dog", @bold_off],
- @am.flow("cat <i>and </i><b>dog</b>")
- end
-
- def test_html_like_em_bold_SGML
- assert_equal ["cat ", @em_on, "and ", @em_to_bold, "dog", @bold_off],
- @am.flow("cat <i>and <b></i>dog</b>")
- end
-
- def test_html_like_em_bold_nested_1
- assert_equal(["cat ", @bold_em_on, "and", @bold_em_off, " dog"],
- @am.flow("cat <i><b>and</b></i> dog"))
- end
-
- def test_html_like_em_bold_nested_2
- assert_equal ["cat ", @em_on, "and ", @em_then_bold, "dog", @bold_em_off],
- @am.flow("cat <i>and <b>dog</b></i>")
- end
-
- def test_html_like_em_bold_nested_mixed_case
- assert_equal ["cat ", @em_on, "and ", @em_then_bold, "dog", @bold_em_off],
- @am.flow("cat <i>and <B>dog</B></I>")
- end
-
- def test_html_like_em_bold_mixed_case
- assert_equal ["cat ", @em_on, "and", @em_off, " ", @bold_on, "dog", @bold_off],
- @am.flow("cat <i>and</i> <B>dog</b>")
- end
-
- def test_html_like_teletype
- assert_equal ["cat ", @tt_on, "dog", @tt_off],
- @am.flow("cat <tt>dog</Tt>")
- end
-
- def test_html_like_teletype_em_bold_SGML
- assert_equal [@tt_on, "cat", @tt_off, " ", @em_on, "and ", @em_to_bold, "dog", @bold_off],
- @am.flow("<tt>cat</tt> <i>and <b></i>dog</b>")
- end
-
- def test_protect
- assert_equal(['cat \\ dog'], @am.flow('cat \\ dog'))
-
- assert_equal(["cat <tt>dog</Tt>"], @am.flow("cat \\<tt>dog</Tt>"))
-
- assert_equal(["cat ", @em_on, "and", @em_off, " <B>dog</b>"],
- @am.flow("cat <i>and</i> \\<B>dog</b>"))
-
- assert_equal(["*word* or <b>text</b>"], @am.flow("\\*word* or \\<b>text</b>"))
-
- assert_equal(["_cat_", @em_on, "dog", @em_off],
- @am.flow("\\_cat_<i>dog</i>"))
- end
-
- def test_special
- @am.add_special(RDoc::Markup::ToHtmlCrossref::CROSSREF_REGEXP, :CROSSREF)
-
- #
- # The apostrophes in "cats'" and "dogs'" suppress the flagging of these
- # words as potential cross-references, which is necessary for the unit
- # tests. Unfortunately, the markup engine right now does not actually
- # check whether a cross-reference is valid before flagging it.
- #
- assert_equal(["cats'"], @am.flow("cats'"))
-
- assert_equal(["cats' ", crossref("#fred"), " dogs'"].flatten,
- @am.flow("cats' #fred dogs'"))
-
- assert_equal([crossref("#fred"), " dogs'"].flatten,
- @am.flow("#fred dogs'"))
-
- assert_equal(["cats' ", crossref("#fred")].flatten, @am.flow("cats' #fred"))
- end
-
- def test_tt_html
- assert_equal [@tt_on, '"\n"', @tt_off],
- @am.flow('<tt>"\n"</tt>')
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html.rb
deleted file mode 100644
index 5b8c09ccf..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/markup'
-require 'rdoc/markup/to_html'
-
-class TestRDocMarkupToHtml < MiniTest::Unit::TestCase
-
- def setup
- @m = RDoc::Markup.new
- @am = RDoc::Markup::AttributeManager.new
- @th = RDoc::Markup::ToHtml.new
- end
-
- def test_class_gen_relative_url
- def gen(from, to)
- RDoc::Markup::ToHtml.gen_relative_url from, to
- end
-
- assert_equal 'a.html', gen('a.html', 'a.html')
- assert_equal 'b.html', gen('a.html', 'b.html')
-
- assert_equal 'd.html', gen('a/c.html', 'a/d.html')
- assert_equal '../a.html', gen('a/c.html', 'a.html')
- assert_equal 'a/c.html', gen('a.html', 'a/c.html')
- end
-
- def test_list_verbatim
- str = "* one\n verb1\n verb2\n* two\n"
-
- expected = <<-EXPECTED
-<ul>
-<li>one
-
-<pre>
- verb1
- verb2
-</pre>
-</li>
-<li>two
-
-</li>
-</ul>
- EXPECTED
-
- assert_equal expected, @m.convert(str, @th)
- end
-
- def test_tt_formatting
- assert_equal "<p>\n<tt>--</tt> &#8212; <tt>cats'</tt> cats&#8217;\n</p>\n",
- util_format("<tt>--</tt> -- <tt>cats'</tt> cats'")
-
- assert_equal "<p>\n<b>&#8212;</b>\n</p>\n", util_format("<b>--</b>")
- end
-
- def test_convert_string_fancy
- #
- # The HTML typesetting is broken in a number of ways, but I have fixed
- # the most glaring issues for single and double quotes. Note that
- # "strange" symbols (periods or dashes) need to be at the end of the
- # test case strings in order to suppress cross-references.
- #
- assert_equal "<p>\n&#8220;cats&#8221;.\n</p>\n", util_format("\"cats\".")
- assert_equal "<p>\n&#8216;cats&#8217;.\n</p>\n", util_format("\'cats\'.")
- assert_equal "<p>\ncat&#8217;s-\n</p>\n", util_format("cat\'s-")
- end
-
- def util_fragment(text)
- RDoc::Markup::Fragment.new 0, nil, nil, text
- end
-
- def util_format(text)
- fragment = util_fragment text
-
- @th.start_accepting
- @th.accept_paragraph @am, fragment
- @th.end_accepting
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html_crossref.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html_crossref.rb
deleted file mode 100644
index 9e77c4bdc..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html_crossref.rb
+++ /dev/null
@@ -1,161 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/rdoc'
-require 'rdoc/code_objects'
-require 'rdoc/markup/to_html_crossref'
-require 'test/xref_test_case'
-
-class TestRDocMarkupToHtmlCrossref < XrefTestCase
-
- def setup
- super
-
- @xref = RDoc::Markup::ToHtmlCrossref.new 'index.html', @c1, true
- end
-
- def assert_ref(path, ref)
- assert_equal "<p>\n<a href=\"#{path}\">#{ref}</a>\n</p>\n",
- @xref.convert(ref)
- end
-
- def refute_ref(body, ref)
- assert_equal "<p>\n#{body}\n</p>\n", @xref.convert(ref)
- end
-
- def test_handle_special_CROSSREF_C2
- @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C2.html', @c2, true
-
- refute_ref '#m', '#m'
-
- assert_ref '../C2/C3.html', 'C2::C3'
- assert_ref '../C2/C3.html#M000002', 'C2::C3#m'
- assert_ref '../C2/C3/H1.html', 'C3::H1'
- assert_ref '../C4.html', 'C4'
-
- # TODO there is a C3::H2 in the top-level namespace and RDoc should follow
- # constant scoping rules
- refute_ref 'C3::H2', 'C3::H2'
- refute_ref 'H1', 'H1'
- end
-
- def test_handle_special_CROSSREF_C2_C3
- @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C2/C3.html', @c2_c3, true
-
- assert_ref '../../C2/C3.html#M000002', '#m'
-
- assert_ref '../../C2/C3.html', 'C3'
- assert_ref '../../C2/C3.html#M000002', 'C3#m'
-
- assert_ref '../../C2/C3/H1.html', 'H1'
- assert_ref '../../C2/C3/H1.html', 'C3::H1'
-
- assert_ref '../../C4.html', 'C4'
-
- refute_ref 'C3::H2', 'C3::H2'
- end
-
- def test_handle_special_CROSSREF_C3
- @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C3.html', @c3, true
-
- assert_ref '../C3.html', 'C3'
-
- refute_ref '#m', '#m'
- refute_ref 'C3#m', 'C3#m'
-
- assert_ref '../C3/H1.html', 'H1'
-
- assert_ref '../C3/H1.html', 'C3::H1'
- assert_ref '../C3/H2.html', 'C3::H2'
-
- assert_ref '../C4.html', 'C4'
- end
-
- def test_handle_special_CROSSREF_C4
- @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C4.html', @c4, true
-
- # C4 ref inside a C4 containing a C4 should resolve to the contained class
- assert_ref '../C4/C4.html', 'C4'
- end
-
- def test_handle_special_CROSSREF_C4_C4
- @xref = RDoc::Markup::ToHtmlCrossref.new 'classes/C4/C4.html', @c4_c4, true
-
- # A C4 reference inside a C4 class contained within a C4 class should
- # resolve to the inner C4 class.
- assert_ref '../../C4/C4.html', 'C4'
- end
-
- def test_handle_special_CROSSREF_class
- assert_ref 'C1.html', 'C1'
- refute_ref 'H1', 'H1'
-
- assert_ref 'C2.html', 'C2'
- assert_ref 'C2/C3.html', 'C2::C3'
- assert_ref 'C2/C3/H1.html', 'C2::C3::H1'
-
- assert_ref 'C3.html', '::C3'
- assert_ref 'C3/H1.html', '::C3::H1'
-
- assert_ref 'C4/C4.html', 'C4::C4'
- end
-
- def test_handle_special_CROSSREF_file
- assert_ref 'xref_data_rb.html', 'xref_data.rb'
- end
-
- def test_handle_special_CROSSREF_method
- refute_ref 'm', 'm'
- assert_ref 'C1.html#M000000', '#m'
-
- assert_ref 'C1.html#M000000', 'C1#m'
- assert_ref 'C1.html#M000000', 'C1#m()'
- assert_ref 'C1.html#M000000', 'C1#m(*)'
-
- assert_ref 'C1.html#M000000', 'C1.m'
- assert_ref 'C1.html#M000000', 'C1.m()'
- assert_ref 'C1.html#M000000', 'C1.m(*)'
-
- # HACK should this work
- #assert_ref 'classes/C1.html#M000001', 'C1::m'
- #assert_ref 'classes/C1.html#M000001', 'C1::m()'
- #assert_ref 'classes/C1.html#M000001', 'C1::m(*)'
-
- assert_ref 'C2/C3.html#M000002', 'C2::C3#m'
-
- assert_ref 'C2/C3.html#M000002', 'C2::C3.m'
-
- assert_ref 'C2/C3/H1.html#M000003', 'C2::C3::H1#m?'
-
- assert_ref 'C2/C3.html#M000002', '::C2::C3#m'
- assert_ref 'C2/C3.html#M000002', '::C2::C3#m()'
- assert_ref 'C2/C3.html#M000002', '::C2::C3#m(*)'
- end
-
- def test_handle_special_CROSSREF_no_ref
- assert_equal '', @xref.convert('')
-
- refute_ref 'bogus', 'bogus'
- refute_ref 'bogus', '\bogus'
- refute_ref '\bogus', '\\\bogus'
-
- refute_ref '#n', '\#n'
- refute_ref '#n()', '\#n()'
- refute_ref '#n(*)', '\#n(*)'
-
- refute_ref 'C1', '\C1'
- refute_ref '::C3', '\::C3'
-
- refute_ref '::C3::H1#n', '::C3::H1#n'
- refute_ref '::C3::H1#n(*)', '::C3::H1#n(*)'
- refute_ref '::C3::H1#n', '\::C3::H1#n'
- end
-
- def test_handle_special_CROSSREF_special
- assert_equal "<p>\n<a href=\"C2/C3.html\">C2::C3</a>;method(*)\n</p>\n",
- @xref.convert('C2::C3;method(*)')
- end
-
-end
-
-MiniTest::Unit.autorun
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_normal_module.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_normal_module.rb
deleted file mode 100644
index 9bd681954..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_normal_module.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'test/xref_test_case'
-
-class TestRDocNormalModule < XrefTestCase
-
- def setup
- super
-
- @mod = RDoc::NormalModule.new 'Mod'
- end
-
- def test_comment_equals
- @mod.comment = '# comment 1'
-
- assert_equal '# comment 1', @mod.comment
-
- @mod.comment = '# comment 2'
-
- assert_equal "# comment 1\n# ---\n# comment 2", @mod.comment
- end
-
- def test_module_eh
- assert @mod.module?
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser.rb
deleted file mode 100644
index ae4801c42..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/parser'
-require 'rdoc/parser/ruby'
-
-class TestRDocParser < MiniTest::Unit::TestCase
- def test_can_parse
- assert_equal(RDoc::Parser.can_parse(__FILE__), RDoc::Parser::Ruby)
-
- readme_file_name = File.join(File.dirname(__FILE__), "..", "README.txt")
-
- unless File.exist? readme_file_name then # HACK for tests in trunk :/
- readme_file_name = File.join File.dirname(__FILE__), '..', '..', 'README'
- end
-
- assert_equal(RDoc::Parser.can_parse(readme_file_name), RDoc::Parser::Simple)
-
- binary_file_name = File.join(File.dirname(__FILE__), "binary.dat")
- assert_equal(RDoc::Parser.can_parse(binary_file_name), nil)
-
- jtest_file_name = File.join(File.dirname(__FILE__), "test.ja.txt")
- assert_equal(RDoc::Parser::Simple, RDoc::Parser.can_parse(jtest_file_name))
-
- jtest_rdoc_file_name = File.join(File.dirname(__FILE__), "test.ja.rdoc")
- assert_equal(RDoc::Parser::Simple, RDoc::Parser.can_parse(jtest_rdoc_file_name))
- end
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_c.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_c.rb
deleted file mode 100644
index 6d129cebe..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_c.rb
+++ /dev/null
@@ -1,401 +0,0 @@
-require 'stringio'
-require 'tempfile'
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/options'
-require 'rdoc/parser/c'
-
-class RDoc::Parser::C
- attr_accessor :classes
-
- public :do_classes, :do_constants
-end
-
-class TestRDocParserC < MiniTest::Unit::TestCase
-
- def setup
- @tempfile = Tempfile.new self.class.name
- filename = @tempfile.path
-
- @top_level = RDoc::TopLevel.new filename
- @fn = filename
- @options = RDoc::Options.new
- @stats = RDoc::Stats.new 0
-
- RDoc::Parser::C.reset
- RDoc::TopLevel.reset
- end
-
- def teardown
- @tempfile.close
- end
-
- def test_do_classes_boot_class
- content = <<-EOF
-/* Document-class: Foo
- * this is the Foo boot class
- */
-VALUE cFoo = boot_defclass("Foo", 0);
- EOF
-
- klass = util_get_class content, 'cFoo'
- assert_equal " this is the Foo boot class\n ", klass.comment
- end
-
- def test_do_classes_class
- content = <<-EOF
-/* Document-class: Foo
- * this is the Foo class
- */
-VALUE cFoo = rb_define_class("Foo", rb_cObject);
- EOF
-
- klass = util_get_class content, 'cFoo'
- assert_equal " this is the Foo class\n ", klass.comment
- end
-
- def test_do_classes_class_under
- content = <<-EOF
-/* Document-class: Kernel::Foo
- * this is the Foo class under Kernel
- */
-VALUE cFoo = rb_define_class_under(rb_mKernel, "Foo", rb_cObject);
- EOF
-
- klass = util_get_class content, 'cFoo'
- assert_equal " this is the Foo class under Kernel\n ", klass.comment
- end
-
- def test_do_classes_module
- content = <<-EOF
-/* Document-module: Foo
- * this is the Foo module
- */
-VALUE mFoo = rb_define_module("Foo");
- EOF
-
- klass = util_get_class content, 'mFoo'
- assert_equal " this is the Foo module\n ", klass.comment
- end
-
- def test_do_classes_module_under
- content = <<-EOF
-/* Document-module: Kernel::Foo
- * this is the Foo module under Kernel
- */
-VALUE mFoo = rb_define_module_under(rb_mKernel, "Foo");
- EOF
-
- klass = util_get_class content, 'mFoo'
- assert_equal " this is the Foo module under Kernel\n ", klass.comment
- end
-
- def test_do_constants
- content = <<-EOF
-#include <ruby.h>
-
-void Init_foo(){
- VALUE cFoo = rb_define_class("Foo", rb_cObject);
-
- /* 300: The highest possible score in bowling */
- rb_define_const(cFoo, "PERFECT", INT2FIX(300));
-
- /* Huzzah!: What you cheer when you roll a perfect game */
- rb_define_const(cFoo, "CHEER", rb_str_new2("Huzzah!"));
-
- /* TEST\:TEST: Checking to see if escaped semicolon works */
- rb_define_const(cFoo, "TEST", rb_str_new2("TEST:TEST"));
-
- /* \\: The file separator on MS Windows */
- rb_define_const(cFoo, "MSEPARATOR", rb_str_new2("\\"));
-
- /* /: The file separator on Unix */
- rb_define_const(cFoo, "SEPARATOR", rb_str_new2("/"));
-
- /* C:\\Program Files\\Stuff: A directory on MS Windows */
- rb_define_const(cFoo, "STUFF", rb_str_new2("C:\\Program Files\\Stuff"));
-
- /* Default definition */
- rb_define_const(cFoo, "NOSEMI", INT2FIX(99));
-
- rb_define_const(cFoo, "NOCOMMENT", rb_str_new2("No comment"));
-
- /*
- * Multiline comment goes here because this comment spans multiple lines.
- * Multiline comment goes here because this comment spans multiple lines.
- */
- rb_define_const(cFoo, "MULTILINE", INT2FIX(1));
-
- /*
- * 1: Multiline comment goes here because this comment spans multiple lines.
- * Multiline comment goes here because this comment spans multiple lines.
- */
- rb_define_const(cFoo, "MULTILINE_VALUE", INT2FIX(1));
-
- /* Multiline comment goes here because this comment spans multiple lines.
- * Multiline comment goes here because this comment spans multiple lines.
- */
- rb_define_const(cFoo, "MULTILINE_NOT_EMPTY", INT2FIX(1));
-
-}
- EOF
-
- @parser = util_parser content
-
- @parser.do_classes
- @parser.do_constants
-
- klass = @parser.classes['cFoo']
- assert klass
-
- constants = klass.constants
- assert !klass.constants.empty?
-
- constants = constants.map { |c| [c.name, c.value, c.comment] }
-
- assert_equal ['PERFECT', '300',
- "\n The highest possible score in bowling \n "],
- constants.shift
- assert_equal ['CHEER', 'Huzzah!',
- "\n What you cheer when you roll a perfect game \n "],
- constants.shift
- assert_equal ['TEST', 'TEST:TEST',
- "\n Checking to see if escaped semicolon works \n "],
- constants.shift
- assert_equal ['MSEPARATOR', '\\',
- "\n The file separator on MS Windows \n "],
- constants.shift
- assert_equal ['SEPARATOR', '/',
- "\n The file separator on Unix \n "],
- constants.shift
- assert_equal ['STUFF', 'C:\\Program Files\\Stuff',
- "\n A directory on MS Windows \n "],
- constants.shift
- assert_equal ['NOSEMI', 'INT2FIX(99)',
- "\n Default definition \n "],
- constants.shift
- assert_equal ['NOCOMMENT', 'rb_str_new2("No comment")', nil],
- constants.shift
-
- comment = <<-EOF.chomp
-
-
- Multiline comment goes here because this comment spans multiple lines.
- Multiline comment goes here because this comment spans multiple lines.
-
-
- EOF
- assert_equal ['MULTILINE', 'INT2FIX(1)', comment], constants.shift
- assert_equal ['MULTILINE_VALUE', '1', comment], constants.shift
-
- comment = <<-EOF.chomp
-
- Multiline comment goes here because this comment spans multiple lines.
- Multiline comment goes here because this comment spans multiple lines.
-
-
- EOF
- assert_equal ['MULTILINE_NOT_EMPTY', 'INT2FIX(1)', comment], constants.shift
-
- assert constants.empty?, constants.inspect
- end
-
- def test_find_class_comment_init
- content = <<-EOF
-/*
- * a comment for class Foo
- */
-void
-Init_Foo(void) {
- VALUE foo = rb_define_class("Foo", rb_cObject);
-}
- EOF
-
- klass = util_get_class content, 'foo'
-
- assert_equal " \n a comment for class Foo\n \n", klass.comment
- end
-
- def test_find_class_comment_define_class
- content = <<-EOF
-/*
- * a comment for class Foo
- */
-VALUE foo = rb_define_class("Foo", rb_cObject);
- EOF
-
- klass = util_get_class content, 'foo'
-
- assert_equal " \n a comment for class Foo\n \n", klass.comment
- end
-
- def test_find_class_comment_define_class_Init_Foo
- content = <<-EOF
-/*
- * a comment for class Foo on Init
- */
-void
-Init_Foo(void) {
- /*
- * a comment for class Foo on rb_define_class
- */
- VALUE foo = rb_define_class("Foo", rb_cObject);
-}
- EOF
-
- klass = util_get_class content, 'foo'
-
- assert_equal " \n a comment for class Foo on Init\n \n", klass.comment
- end
-
- def test_find_class_comment_define_class_bogus_comment
- content = <<-EOF
-/*
- * a comment for other_function
- */
-void
-other_function() {
-}
-
-void
-Init_Foo(void) {
- VALUE foo = rb_define_class("Foo", rb_cObject);
-}
- EOF
-
- klass = util_get_class content, 'foo'
-
- assert_equal '', klass.comment
- end
-
- def test_find_body
- content = <<-EOF
-/*
- * a comment for other_function
- */
-VALUE
-other_function() {
-}
-
-void
-Init_Foo(void) {
- VALUE foo = rb_define_class("Foo", rb_cObject);
-
- rb_define_method(foo, "my_method", other_function, 0);
-}
- EOF
-
- klass = util_get_class content, 'foo'
- other_function = klass.method_list.first
-
- assert_equal 'my_method', other_function.name
- assert_equal " \n a comment for other_function\n \n",
- other_function.comment
- assert_equal '()', other_function.params
-
- code = other_function.token_stream.first.text
-
- assert_equal "VALUE\nother_function() ", code
- end
-
- def test_find_body_define
- content = <<-EOF
-/*
- * a comment for other_function
- */
-#define other_function rb_other_function
-
-/* */
-VALUE
-rb_other_function() {
-}
-
-void
-Init_Foo(void) {
- VALUE foo = rb_define_class("Foo", rb_cObject);
-
- rb_define_method(foo, "my_method", other_function, 0);
-}
- EOF
-
- klass = util_get_class content, 'foo'
- other_function = klass.method_list.first
-
- assert_equal 'my_method', other_function.name
- assert_equal " \n a comment for other_function\n \n \n",
- other_function.comment
- assert_equal '()', other_function.params
-
- code = other_function.token_stream.first.text
-
- assert_equal "#define other_function rb_other_function", code
- end
-
- def test_define_method
- content = <<-EOF
-/*Method Comment! */
-static VALUE
-rb_io_s_read(argc, argv, io)
- int argc;
- VALUE *argv;
- VALUE io;
-{
-}
-
-void
-Init_IO(void) {
- /*
- * a comment for class Foo on rb_define_class
- */
- VALUE rb_cIO = rb_define_class("IO", rb_cObject);
- rb_define_singleton_method(rb_cIO, "read", rb_io_s_read, -1);
-}
- EOF
-
- klass = util_get_class content, 'rb_cIO'
- read_method = klass.method_list.first
- assert_equal "read", read_method.name
- assert_equal " Method Comment! \n", read_method.comment
- end
-
- def test_define_method_private
- content = <<-EOF
-/*Method Comment! */
-static VALUE
-rb_io_s_read(argc, argv, io)
- int argc;
- VALUE *argv;
- VALUE io;
-{
-}
-
-void
-Init_IO(void) {
- /*
- * a comment for class Foo on rb_define_class
- */
- VALUE rb_cIO = rb_define_class("IO", rb_cObject);
- rb_define_private_method(rb_cIO, "read", rb_io_s_read, -1);
-}
- EOF
-
- klass = util_get_class content, 'rb_cIO'
- read_method = klass.method_list.first
- assert_equal 'IO#read', read_method.full_name
- assert_equal :private, read_method.visibility
- assert_equal " Method Comment! \n", read_method.comment
- end
-
- def util_get_class(content, name)
- @parser = util_parser content
- @parser.scan
- @parser.classes[name]
- end
-
- def util_parser(content)
- RDoc::Parser::C.new @top_level, @fn, content, @options, @stats
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_perl.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_perl.rb
deleted file mode 100644
index 165cadaa5..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_perl.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-require 'stringio'
-require 'tempfile'
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/options'
-require 'rdoc/parser/perl'
-
-class TestRdocParserPerlPOD < MiniTest::Unit::TestCase
-
- def setup
- @tempfile = Tempfile.new self.class.name
- filename = @tempfile.path
-
- @top_level = RDoc::TopLevel.new filename
- @fn = filename
- @options = RDoc::Options.new
- @stats = RDoc::Stats.new 0
- end
-
- def teardown
- @tempfile.close
- end
-
- def test_uncommented_perl
- content = <<-EOF
-while (<>) {
- tr/a-z/A-Z;
- print
-}
- EOF
-
- comment = util_get_comment content
- assert_equal "", comment
- end
-
- def test_perl_without_pod
- content = <<-EOF
-#!/usr/local/bin/perl
-#
-#This is a pointless perl program because it does -p.
-#
-while(<>) {print;}:
- EOF
-
- comment = util_get_comment content
- assert_equal "", comment
- end
-
- def test_simple_pod_no_structure
- content = <<-EOF
-=begin pod
-
-This just contains plain old documentation
-
-=end
- EOF
- comment = util_get_comment content
- assert_equal "\nThis just contains plain old documentation\n\n", comment
- end
-
- # Get the comment of the @top_level when it has processed the input.
- def util_get_comment(content)
- parser = util_parser content
- parser.scan.comment
- end
-
- # create a new parser with the supplied content.
- def util_parser(content)
- RDoc::Parser::PerlPOD.new @top_level, @fn, content, @options, @stats
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_ruby.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_ruby.rb
deleted file mode 100644
index 5fb880cb3..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_parser_ruby.rb
+++ /dev/null
@@ -1,1040 +0,0 @@
-require 'stringio'
-require 'tempfile'
-require 'rubygems'
-require 'minitest/autorun'
-
-require 'rdoc/options'
-require 'rdoc/parser/ruby'
-require 'rdoc/stats'
-
-class TestRDocParserRuby < MiniTest::Unit::TestCase
-
- def setup
- @tempfile = Tempfile.new self.class.name
- @filename = @tempfile.path
-
- # Some tests need two paths.
- @tempfile2 = Tempfile.new self.class.name
- @filename2 = @tempfile2.path
-
- util_top_level
- @options = RDoc::Options.new
- @options.quiet = true
- @stats = RDoc::Stats.new 0
- end
-
- def teardown
- @tempfile.close
- @tempfile2.close
- end
-
- def test_look_for_directives_in_attr
- util_parser ""
-
- comment = "# :attr: my_attr\n"
-
- @parser.look_for_directives_in @top_level, comment
-
- assert_equal "# :attr: my_attr\n", comment
-
- comment = "# :attr_reader: my_method\n"
-
- @parser.look_for_directives_in @top_level, comment
-
- assert_equal "# :attr_reader: my_method\n", comment
-
- comment = "# :attr_writer: my_method\n"
-
- @parser.look_for_directives_in @top_level, comment
-
- assert_equal "# :attr_writer: my_method\n", comment
- end
-
- def test_look_for_directives_in_commented
- util_parser ""
-
- comment = "# how to make a section:\n# # :section: new section\n"
-
- @parser.look_for_directives_in @top_level, comment
-
- section = @top_level.current_section
- assert_equal nil, section.title
- assert_equal nil, section.comment
-
- assert_equal "# how to make a section:\n# # :section: new section\n",
- comment
- end
-
- def test_look_for_directives_in_enddoc
- util_parser ""
-
- assert_throws :enddoc do
- @parser.look_for_directives_in @top_level, "# :enddoc:\n"
- end
- end
-
- def test_look_for_directives_in_main
- util_parser ""
-
- @parser.look_for_directives_in @top_level, "# :main: new main page\n"
-
- assert_equal 'new main page', @options.main_page
- end
-
- def test_look_for_directives_in_method
- util_parser ""
-
- comment = "# :method: my_method\n"
-
- @parser.look_for_directives_in @top_level, comment
-
- assert_equal "# :method: my_method\n", comment
-
- comment = "# :singleton-method: my_method\n"
-
- @parser.look_for_directives_in @top_level, comment
-
- assert_equal "# :singleton-method: my_method\n", comment
- end
-
- def test_look_for_directives_in_startdoc
- util_parser ""
-
- @top_level.stop_doc
- assert !@top_level.document_self
- assert !@top_level.document_children
- assert !@top_level.force_documentation
-
- @parser.look_for_directives_in @top_level, "# :startdoc:\n"
-
- assert @top_level.document_self
- assert @top_level.document_children
- assert @top_level.force_documentation
- end
-
- def test_look_for_directives_in_stopdoc
- util_parser ""
-
- assert @top_level.document_self
- assert @top_level.document_children
-
- @parser.look_for_directives_in @top_level, "# :stopdoc:\n"
-
- assert !@top_level.document_self
- assert !@top_level.document_children
- end
-
- def test_look_for_directives_in_section
- util_parser ""
-
- comment = "# :section: new section\n# woo stuff\n"
-
- @parser.look_for_directives_in @top_level, comment
-
- section = @top_level.current_section
- assert_equal 'new section', section.title
- assert_equal "# woo stuff\n", section.comment
-
- assert_equal '', comment
- end
-
- def test_look_for_directives_in_title
- util_parser ""
-
- @parser.look_for_directives_in @top_level, "# :title: new title\n"
-
- assert_equal 'new title', @options.title
- end
-
- def test_look_for_directives_in_unhandled
- util_parser ""
-
- comment = "# :unhandled: \n# :title: hi\n"
-
- @parser.look_for_directives_in @top_level, comment
-
- assert_equal "# :unhandled: \n", comment
-
- assert_equal 'hi', @options.title
- end
-
- def test_parse_attr
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my attr\n"
-
- util_parser "attr :foo, :bar"
-
- tk = @parser.get_tk
-
- @parser.parse_attr klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- assert_equal 1, klass.attributes.length
-
- foo = klass.attributes.first
- assert_equal 'foo', foo.name
- assert_equal "##\n# my attr\n", foo.comment
- end
-
- def test_parse_attr_accessor
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my attr\n"
-
- util_parser "attr_accessor :foo, :bar"
-
- tk = @parser.get_tk
-
- @parser.parse_attr_accessor klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- assert_equal 2, klass.attributes.length
-
- foo = klass.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'RW', foo.rw
- assert_equal "##\n# my attr\n", foo.comment
-
- bar = klass.attributes.last
- assert_equal 'bar', bar.name
- assert_equal 'RW', bar.rw
- assert_equal "##\n# my attr\n", bar.comment
- end
-
- def test_parse_attr_accessor_writer
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my attr\n"
-
- util_parser "attr_writer :foo, :bar"
-
- tk = @parser.get_tk
-
- @parser.parse_attr_accessor klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- assert_equal 2, klass.attributes.length
-
- foo = klass.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'W', foo.rw
- assert_equal "##\n# my attr\n", foo.comment
-
- bar = klass.attributes.last
- assert_equal 'bar', bar.name
- assert_equal 'W', bar.rw
- assert_equal "##\n# my attr\n", bar.comment
- end
-
- def test_parse_meta_attr
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :attr: \n# my method\n"
-
- util_parser "add_my_method :foo, :bar"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_attr klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'RW', foo.rw
- assert_equal "##\n# my method\n", foo.comment
- end
-
- def test_parse_meta_attr_accessor
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :attr_accessor: \n# my method\n"
-
- util_parser "add_my_method :foo, :bar"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_attr klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'RW', foo.rw
- assert_equal "##\n# my method\n", foo.comment
- end
-
- def test_parse_meta_attr_reader
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :attr_reader: \n# my method\n"
-
- util_parser "add_my_method :foo, :bar"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_attr klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'R', foo.rw
- assert_equal "##\n# my method\n", foo.comment
- end
-
- def test_parse_meta_attr_writer
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :attr_writer: \n# my method\n"
-
- util_parser "add_my_method :foo, :bar"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_attr klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'W', foo.rw
- assert_equal "##\n# my method\n", foo.comment
- end
-
- def test_parse_class
- comment = "##\n# my method\n"
-
- util_parser 'class Foo; end'
-
- tk = @parser.get_tk
-
- @parser.parse_class @top_level, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = @top_level.classes.first
- assert_equal 'Foo', foo.full_name
- assert_equal comment, foo.comment
- end
-
- def test_parse_class_nested_superclass
- foo = RDoc::NormalModule.new 'Foo'
- foo.parent = @top_level
-
- util_parser "class Bar < Super\nend"
-
- tk = @parser.get_tk
-
- @parser.parse_class foo, RDoc::Parser::Ruby::NORMAL, tk, ''
-
- bar = foo.classes.first
- assert_equal 'Super', bar.superclass
- end
-
- def test_parse_module
- comment = "##\n# my module\n"
-
- util_parser 'module Foo; end'
-
- tk = @parser.get_tk
-
- @parser.parse_module @top_level, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = @top_level.modules.first
- assert_equal 'Foo', foo.full_name
- assert_equal comment, foo.comment
- end
-
- def test_parse_class_mistaken_for_module
- # The code below is not strictly legal Ruby (Foo must have been defined
- # before Foo::Bar is encountered), but RDoc might encounter Foo::Bar
- # before Foo if they live in different files.
-
- code = <<-EOF
-class Foo::Bar
-end
-
-module Foo::Baz
-end
-
-class Foo
-end
- EOF
-
- util_parser code
-
- @parser.scan
-
- assert_equal %w[Foo::Baz], RDoc::TopLevel.modules_hash.keys
- assert_empty @top_level.modules
-
- foo = @top_level.classes.first
- assert_equal 'Foo', foo.full_name
-
- bar = foo.classes.first
- assert_equal 'Foo::Bar', bar.full_name
-
- baz = foo.modules.first
- assert_equal 'Foo::Baz', baz.full_name
- end
-
- def test_parse_class_definition_encountered_after_class_reference
- # The code below is not strictly legal Ruby (Foo must have been defined
- # before Foo.bar is encountered), but RDoc might encounter Foo.bar before
- # Foo if they live in different files.
-
- code = <<-EOF
-def Foo.bar
-end
-
-class Foo < IO
-end
- EOF
-
- util_parser code
-
- @parser.scan
-
- assert_empty RDoc::TopLevel.modules_hash
- # HACK why does it fail?
- #assert_empty @top_level.modules
-
- foo = @top_level.classes.first
- assert_equal 'Foo', foo.full_name
- assert_equal 'IO', foo.superclass
-
- bar = foo.method_list.first
- assert_equal 'bar', bar.name
- end
-
- def test_parse_module_relative_to_top_level_namespace
- comment = <<-EOF
-#
-# Weirdly named module
-#
-EOF
-
- code = comment + <<-EOF
-module ::Foo
- class Helper
- end
-end
-EOF
-
- util_parser code
- @parser.scan()
-
- foo = @top_level.modules.first
- assert_equal 'Foo', foo.full_name
- assert_equal comment, foo.comment
-
- helper = foo.classes.first
- assert_equal 'Foo::Helper', helper.full_name
- end
-
- def test_parse_comment_attr
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :attr: foo\n# my attr\n"
-
- util_parser "\n"
-
- tk = @parser.get_tk
-
- @parser.parse_comment klass, tk, comment
-
- foo = klass.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'RW', foo.rw
- assert_equal comment, foo.comment
-
- assert_equal nil, foo.viewer
- assert_equal true, foo.document_children
- assert_equal true, foo.document_self
- assert_equal false, foo.done_documenting
- assert_equal false, foo.force_documentation
- assert_equal klass, foo.parent
- assert_equal :public, foo.visibility
- assert_equal "\n", foo.text
- assert_equal klass.current_section, foo.section
- end
-
- def test_parse_comment_method
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :method: foo\n# my method\n"
-
- util_parser "\n"
-
- tk = @parser.get_tk
-
- @parser.parse_comment klass, tk, comment
-
- foo = klass.method_list.first
- assert_equal 'foo', foo.name
- assert_equal comment, foo.comment
-
- assert_equal [], foo.aliases
- assert_equal nil, foo.block_params
- assert_equal nil, foo.call_seq
- assert_equal nil, foo.is_alias_for
- assert_equal nil, foo.viewer
- assert_equal true, foo.document_children
- assert_equal true, foo.document_self
- assert_equal '', foo.params
- assert_equal false, foo.done_documenting
- assert_equal false, foo.dont_rename_initialize
- assert_equal false, foo.force_documentation
- assert_equal klass, foo.parent
- assert_equal false, foo.singleton
- assert_equal :public, foo.visibility
- assert_equal "\n", foo.text
- assert_equal klass.current_section, foo.section
-
- stream = [
- tk(:COMMENT, 1, 1, nil, "# File #{@top_level.absolute_name}, line 1"),
- RDoc::Parser::Ruby::NEWLINE_TOKEN,
- tk(:SPACE, 1, 1, nil, ''),
- ]
-
- assert_equal stream, foo.token_stream
- end
-
- def test_parse_meta_method
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my method\n"
-
- util_parser "add_my_method :foo, :bar\nadd_my_method :baz"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal 'foo', foo.name
- assert_equal comment, foo.comment
-
- assert_equal [], foo.aliases
- assert_equal nil, foo.block_params
- assert_equal nil, foo.call_seq
- assert_equal true, foo.document_children
- assert_equal true, foo.document_self
- assert_equal false, foo.done_documenting
- assert_equal false, foo.dont_rename_initialize
- assert_equal false, foo.force_documentation
- assert_equal nil, foo.is_alias_for
- assert_equal '', foo.params
- assert_equal klass, foo.parent
- assert_equal false, foo.singleton
- assert_equal 'add_my_method :foo', foo.text
- assert_equal nil, foo.viewer
- assert_equal :public, foo.visibility
- assert_equal klass.current_section, foo.section
-
- stream = [
- tk(:COMMENT, 1, 1, nil, "# File #{@top_level.absolute_name}, line 1"),
- RDoc::Parser::Ruby::NEWLINE_TOKEN,
- tk(:SPACE, 1, 1, nil, ''),
- tk(:IDENTIFIER, 1, 0, 'add_my_method', 'add_my_method'),
- tk(:SPACE, 1, 13, nil, ' '),
- tk(:SYMBOL, 1, 14, nil, ':foo'),
- tk(:COMMA, 1, 18, nil, ','),
- tk(:SPACE, 1, 19, nil, ' '),
- tk(:SYMBOL, 1, 20, nil, ':bar'),
- tk(:NL, 1, 24, nil, "\n"),
- ]
-
- assert_equal stream, foo.token_stream
- end
-
- def test_parse_meta_method_name
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :method: woo_hoo!\n# my method\n"
-
- util_parser "add_my_method :foo, :bar\nadd_my_method :baz"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal 'woo_hoo!', foo.name
- assert_equal "##\n# my method\n", foo.comment
- end
-
- def test_parse_meta_method_singleton
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :singleton-method:\n# my method\n"
-
- util_parser "add_my_method :foo, :bar\nadd_my_method :baz"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal 'foo', foo.name
- assert_equal true, foo.singleton, 'singleton method'
- assert_equal "##\n# my method\n", foo.comment
- end
-
- def test_parse_meta_method_singleton_name
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# :singleton-method: woo_hoo!\n# my method\n"
-
- util_parser "add_my_method :foo, :bar\nadd_my_method :baz"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal 'woo_hoo!', foo.name
- assert_equal true, foo.singleton, 'singleton method'
- assert_equal "##\n# my method\n", foo.comment
- end
-
- def test_parse_meta_method_string_name
- klass = RDoc::NormalClass.new 'Foo'
- comment = "##\n# my method\n"
-
- util_parser "add_my_method 'foo'"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal 'foo', foo.name
- assert_equal comment, foo.comment
- end
-
- def test_parse_meta_method_unknown
- klass = RDoc::NormalClass.new 'Foo'
- comment = "##\n# my method\n"
-
- util_parser "add_my_method ('foo')"
-
- tk = @parser.get_tk
-
- @parser.parse_meta_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal 'unknown', foo.name
- assert_equal comment, foo.comment
- end
-
- def test_parse_method
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my method\n"
-
- util_parser "def foo() :bar end"
-
- tk = @parser.get_tk
-
- @parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal 'foo', foo.name
- assert_equal comment, foo.comment
-
- assert_equal [], foo.aliases
- assert_equal nil, foo.block_params
- assert_equal nil, foo.call_seq
- assert_equal nil, foo.is_alias_for
- assert_equal nil, foo.viewer
- assert_equal true, foo.document_children
- assert_equal true, foo.document_self
- assert_equal '()', foo.params
- assert_equal false, foo.done_documenting
- assert_equal false, foo.dont_rename_initialize
- assert_equal false, foo.force_documentation
- assert_equal klass, foo.parent
- assert_equal false, foo.singleton
- assert_equal :public, foo.visibility
- assert_equal 'def foo', foo.text
- assert_equal klass.current_section, foo.section
-
- stream = [
- tk(:COMMENT, 1, 1, nil, "# File #{@top_level.absolute_name}, line 1"),
- RDoc::Parser::Ruby::NEWLINE_TOKEN,
- tk(:SPACE, 1, 1, nil, ''),
- tk(:DEF, 1, 0, 'def', 'def'),
- tk(:SPACE, 1, 3, nil, ' '),
- tk(:IDENTIFIER, 1, 4, 'foo', 'foo'),
- tk(:LPAREN, 1, 7, nil, '('),
- tk(:RPAREN, 1, 8, nil, ')'),
- tk(:SPACE, 1, 9, nil, ' '),
- tk(:COLON, 1, 10, nil, ':'),
- tk(:IDENTIFIER, 1, 11, 'bar', 'bar'),
- tk(:SPACE, 1, 14, nil, ' '),
- tk(:END, 1, 15, 'end', 'end'),
- ]
-
- assert_equal stream, foo.token_stream
- end
-
- def test_parse_method_funky
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my method\n"
-
- util_parser "def (blah).foo() :bar end"
-
- tk = @parser.get_tk
-
- @parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- assert klass.method_list.empty?
- end
-
- def test_parse_method_no_parens
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my method\n"
-
- util_parser "def foo arg1, arg2\nend"
-
- tk = @parser.get_tk
-
- @parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal '(arg1, arg2)', foo.params
- end
-
- def test_parse_method_parameters_comment
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my method\n"
-
- util_parser "def foo arg1, arg2 # some useful comment\nend"
-
- tk = @parser.get_tk
-
- @parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal '(arg1, arg2)', foo.params
- end
-
- def test_parse_method_parameters_comment_continue
- klass = RDoc::NormalClass.new 'Foo'
- klass.parent = @top_level
-
- comment = "##\n# my method\n"
-
- util_parser "def foo arg1, arg2, # some useful comment\narg3\nend"
-
- tk = @parser.get_tk
-
- @parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- foo = klass.method_list.first
- assert_equal '(arg1, arg2, arg3)', foo.params
- end
-
- def test_parse_method_toplevel
- klass = @top_level
-
- comment = "##\n# my method\n"
-
- util_parser "def foo arg1, arg2\nend"
-
- tk = @parser.get_tk
-
- @parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
-
- object = RDoc::TopLevel.find_class_named 'Object'
-
- foo = object.method_list.first
- assert_equal 'Object#foo', foo.full_name
- end
-
- def test_parse_statements_class_if
- comment = "##\n# my method\n"
-
- util_parser <<-CODE
-module Foo
- X = if TRUE then
- ''
- end
-
- def blah
- end
-end
- CODE
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.modules.first
- assert_equal 'Foo', foo.full_name, 'module Foo'
-
- methods = foo.method_list
- assert_equal 1, methods.length
- assert_equal 'Foo#blah', methods.first.full_name
- end
-
- def test_parse_statements_class_nested
- comment = "##\n# my method\n"
-
- util_parser "module Foo\n#{comment}class Bar\nend\nend"
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.modules.first
- assert_equal 'Foo', foo.full_name, 'module Foo'
-
- bar = foo.classes.first
- assert_equal 'Foo::Bar', bar.full_name, 'class Foo::Bar'
- assert_equal comment, bar.comment
- end
-
- def test_parse_statements_identifier_meta_method
- content = <<-EOF
-class Foo
- ##
- # this is my method
- add_my_method :foo
-end
- EOF
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.classes.first.method_list.first
- assert_equal 'foo', foo.name
- end
-
- def test_parse_statements_identifier_alias_method
- content = "class Foo def foo() end; alias_method :foo2, :foo end"
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.classes.first.method_list[0]
- assert_equal 'foo', foo.name
-
- foo2 = @top_level.classes.first.method_list.last
- assert_equal 'foo2', foo2.name
- assert_equal 'foo', foo2.is_alias_for.name
- assert @top_level.classes.first.aliases.empty?
- end
-
- def test_parse_statements_identifier_alias_method_before_original_method
- # This is not strictly legal Ruby code, but it simulates finding an alias
- # for a method before finding the original method, which might happen
- # to rdoc if the alias is in a different file than the original method
- # and rdoc processes the alias' file first.
- content = <<-EOF
-class Foo
- alias_method :foo2, :foo
-
- alias_method :foo3, :foo
-
- def foo()
- end
-
- alias_method :foo4, :foo
-
- alias_method :foo5, :unknown
-end
-EOF
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.classes.first.method_list[0]
- assert_equal 'foo', foo.name
-
- foo2 = @top_level.classes.first.method_list[1]
- assert_equal 'foo2', foo2.name
- assert_equal 'foo', foo2.is_alias_for.name
-
- foo3 = @top_level.classes.first.method_list[2]
- assert_equal 'foo3', foo3.name
- assert_equal 'foo', foo3.is_alias_for.name
-
- foo4 = @top_level.classes.first.method_list.last
- assert_equal 'foo4', foo4.name
- assert_equal 'foo', foo4.is_alias_for.name
-
- assert_equal 'unknown', @top_level.classes.first.aliases[0].old_name
- end
-
- def test_parse_statements_identifier_constant
- content = <<-EOF
-class Foo
- FIRST_CONSTANT = 5
-
- SECOND_CONSTANT = [
- 1,
- 2,
- 3
- ]
-
- THIRD_CONSTANT = {
- :foo => 'bar',
- :x => 'y'
- }
-
- FOURTH_CONSTANT = SECOND_CONSTANT.map do |element|
- element + 1
- element + 2
- end
-
- FIFTH_CONSTANT = SECOND_CONSTANT.map { |element| element + 1 }
-end
-EOF
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- constants = @top_level.classes.first.constants
-
- constant = constants[0]
- assert_equal 'FIRST_CONSTANT', constant.name
- assert_equal '5', constant.value
-
- constant = constants[1]
- assert_equal 'SECOND_CONSTANT', constant.name
- assert_equal '[ 1, 2, 3 ]', constant.value
-
- constant = constants[2]
- assert_equal 'THIRD_CONSTANT', constant.name
- assert_equal "{ :foo => 'bar', :x => 'y' }", constant.value
-
- constant = constants[3]
- assert_equal 'FOURTH_CONSTANT', constant.name
- assert_equal 'SECOND_CONSTANT.map do |element| element + 1 element + 2 end', constant.value
-
- constant = constants.last
- assert_equal 'FIFTH_CONSTANT', constant.name
- assert_equal 'SECOND_CONSTANT.map { |element| element + 1 }', constant.value
- end
-
- def test_parse_statements_identifier_attr
- content = "class Foo; attr :foo; end"
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.classes.first.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'R', foo.rw
- end
-
- def test_parse_statements_identifier_attr_accessor
- content = "class Foo; attr_accessor :foo; end"
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.classes.first.attributes.first
- assert_equal 'foo', foo.name
- assert_equal 'RW', foo.rw
- end
-
- def test_parse_statements_identifier_include
- content = "class Foo; include Bar; end"
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.classes.first
- assert_equal 'Foo', foo.name
- assert_equal 1, foo.includes.length
- end
-
- def test_parse_statements_identifier_module_function
- content = "module Foo def foo() end; module_function :foo; end"
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo, s_foo = @top_level.modules.first.method_list
- assert_equal 'foo', foo.name, 'instance method name'
- assert_equal :private, foo.visibility, 'instance method visibility'
- assert_equal false, foo.singleton, 'instance method singleton'
-
- assert_equal 'foo', s_foo.name, 'module function name'
- assert_equal :public, s_foo.visibility, 'module function visibility'
- assert_equal true, s_foo.singleton, 'module function singleton'
- end
-
- def test_parse_statements_identifier_private
- content = "class Foo private; def foo() end end"
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- foo = @top_level.classes.first.method_list.first
- assert_equal 'foo', foo.name
- assert_equal :private, foo.visibility
- end
-
- def test_parse_statements_identifier_require
- content = "require 'bar'"
-
- util_parser content
-
- @parser.parse_statements @top_level, RDoc::Parser::Ruby::NORMAL, nil, ''
-
- assert_equal 1, @top_level.requires.length
- end
-
- def tk(klass, line, char, name, text)
- klass = RDoc::RubyToken.const_get "Tk#{klass.to_s.upcase}"
-
- token = if klass.instance_method(:initialize).arity == 2 then
- raise ArgumentError, "name not used for #{klass}" unless name.nil?
- klass.new line, char
- else
- klass.new line, char, name
- end
-
- token.set_text text
-
- token
- end
-
- def util_parser(content)
- @parser = RDoc::Parser::Ruby.new @top_level, @filename, content, @options,
- @stats
- end
-
- def util_two_parsers(first_file_content, second_file_content)
- util_parser first_file_content
-
- @parser2 = RDoc::Parser::Ruby.new @top_level2, @filename,
- second_file_content, @options, @stats
- end
-
- def util_top_level
- RDoc::TopLevel.reset
- @top_level = RDoc::TopLevel.new @filename
- @top_level2 = RDoc::TopLevel.new @filename2
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_require.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_require.rb
deleted file mode 100644
index d5850bd16..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_require.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'test/xref_test_case'
-
-class TestRDocRequire < XrefTestCase
-
- def setup
- super
-
- @req = RDoc::Require.new 'foo', 'comment'
- end
-
- def test_initialize
- assert_equal 'foo', @req.name
-
- req = RDoc::Require.new '"foo"', ''
- assert_equal 'foo', @req.name
-
- req = RDoc::Require.new '\'foo\'', ''
- assert_equal 'foo', @req.name
-
- req = RDoc::Require.new '|foo|', ''
- assert_equal 'foo', @req.name, 'for fortran?'
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_attribute_formatter.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_attribute_formatter.rb
deleted file mode 100644
index a86312618..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_attribute_formatter.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require 'stringio'
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/ri/formatter'
-
-class TestRDocRIAttributeFormatter < MiniTest::Unit::TestCase
-
- def setup
- @output = StringIO.new
- @width = 78
- @indent = ' '
-
- @f = RDoc::RI::AttributeFormatter.new @output, @width, @indent
- end
-
- def test_wrap_empty
- @f.wrap ''
- assert_equal '', @output.string
- end
-
- def test_wrap_long
- @f.wrap 'a ' * (@width / 2)
- assert_equal " a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \n a \n",
- @output.string
- end
-
- def test_wrap_markup
- @f.wrap 'a <tt>b</tt> c'
- assert_equal " a b c\n", @output.string
- end
-
- def test_wrap_nil
- @f.wrap nil
- assert_equal '', @output.string
- end
-
- def test_wrap_short
- @f.wrap 'a b c'
- assert_equal " a b c\n", @output.string
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_default_display.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_default_display.rb
deleted file mode 100644
index 54b900642..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_default_display.rb
+++ /dev/null
@@ -1,302 +0,0 @@
-require 'stringio'
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/ri/formatter'
-require 'rdoc/ri/display'
-require 'rdoc/ri/driver'
-
-class TestRDocRiDefaultDisplay < MiniTest::Unit::TestCase
-
- def setup
- @output = StringIO.new
- @width = 78
- @indent = ' '
-
- @dd = RDoc::RI::DefaultDisplay.new RDoc::RI::Formatter, @width, true,
- @output
-
- @some_method = h \
- 'aliases' => [{'name' => 'some_method_alias'}],
- 'block_params' => 'block_param',
- 'comment' => [RDoc::Markup::Flow::P.new('some comment')],
- 'full_name' => 'SomeClass#some_method',
- 'is_singleton' => false,
- 'name' => 'some_method',
- 'params' => '(arg1, arg2) {|block_param| ...}',
- 'source_path' => '/nonexistent',
- 'visibility' => 'public'
- end
-
- def test_display_class_info
- klass = h \
- 'attributes' => [
- { 'name' => 'attribute', 'rw' => 'RW',
- 'comment' => [RDoc::Markup::Flow::P.new('attribute comment')] },
- { 'name' => 'attribute_no_comment', 'rw' => 'RW',
- 'comment' => nil },
- ],
- 'class_methods' => [
- { 'name' => 'class_method' },
- ],
- 'class_method_extensions' => [
- { 'name' => 'class_method_extension' },
- ],
- 'comment' => [RDoc::Markup::Flow::P.new('SomeClass comment')],
- 'constants' => [
- { 'name' => 'CONSTANT', 'value' => '"value1"',
- 'comment' => [RDoc::Markup::Flow::P.new('CONSTANT value')] },
- { 'name' => 'CONSTANT_NOCOMMENT', 'value' => '"value2"',
- 'comment' => nil },
- ],
- 'display_name' => 'Class',
- 'full_name' => 'SomeClass',
- 'includes' => [],
- 'instance_methods' => [
- { 'name' => 'instance_method' },
- { 'name' => 'instance_method2' },
- ],
- 'instance_method_extensions' => [
- { 'name' => 'instance_method_extension' },
- ],
- 'superclass' => 'Object'
-
- @dd.display_class_info klass
-
- expected = <<-EOF
----------------------------------------------------- Class: SomeClass < Object
- SomeClass comment
-
-------------------------------------------------------------------------------
-
-
-Constants:
-----------
-
- CONSTANT = "value1"
- CONSTANT value
-
- CONSTANT_NOCOMMENT = "value2"
-
-
-Attributes:
------------
-
- attribute (RW):
- attribute comment
-
- attribute_no_comment (RW)
-
-
-Class methods:
---------------
-
- class_method
-
-
-Class method extensions:
-------------------------
-
- class_method_extension
-
-
-Instance methods:
------------------
-
- instance_method, instance_method2
-
-
-Instance method extensions:
----------------------------
-
- instance_method_extension
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_flow
- flow = [RDoc::Markup::Flow::P.new('flow')]
-
- @dd.display_flow flow
-
- assert_equal " flow\n\n", @output.string
- end
-
- def test_display_flow_empty
- @dd.display_flow []
-
- assert_equal " [no description]\n", @output.string
- end
-
- def test_display_flow_nil
- @dd.display_flow nil
-
- assert_equal " [no description]\n", @output.string
- end
-
- def test_display_method_info
- @dd.display_method_info @some_method
-
- expected = <<-EOF
--------------------------------------------------------- SomeClass#some_method
- some_method(arg1, arg2) {|block_param| ...}
-
- From /nonexistent
-------------------------------------------------------------------------------
- some comment
-
-
- (also known as some_method_alias)
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_method_info_singleton
- method = RDoc::RI::Driver::OpenStructHash.new.update \
- 'aliases' => [],
- 'block_params' => nil,
- 'comment' => nil,
- 'full_name' => 'SomeClass::some_method',
- 'is_singleton' => true,
- 'name' => 'some_method',
- 'params' => '(arg1, arg2)',
- 'visibility' => 'public'
-
- @dd.display_method_info method
-
- expected = <<-EOF
-------------------------------------------------------- SomeClass::some_method
- SomeClass::some_method(arg1, arg2)
-
- From
-------------------------------------------------------------------------------
- [no description]
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_method_list
- methods = [
- RDoc::RI::Driver::OpenStructHash.new.update(
- "aliases" => [],
- "block_params" => nil,
- "comment" => nil,
- "full_name" => "SomeClass#some_method",
- "is_singleton" => false,
- "name" => "some_method",
- "params" => "()",
- "visibility" => "public"
- ),
- RDoc::RI::Driver::OpenStructHash.new.update(
- "aliases" => [],
- "block_params" => nil,
- "comment" => nil,
- "full_name" => "SomeClass#some_other_method",
- "is_singleton" => false,
- "name" => "some_other_method",
- "params" => "()",
- "visibility" => "public"
- ),
- ]
-
- @dd.display_method_list methods
-
- expected = <<-EOF
- More than one method matched your request. You can refine your search by
- asking for information on one of:
-
-SomeClass#some_method []
-SomeClass#some_other_method []
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_params
- @dd.display_params @some_method
-
- expected = <<-EOF
- some_method(arg1, arg2) {|block_param| ...}
-
- From /nonexistent
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_params_multiple
- @some_method['params'] = <<-EOF
-some_method(index)
-some_method(start, length)
- EOF
-
- @dd.display_params @some_method
-
- expected = <<-EOF
- some_method(index)
- some_method(start, length)
-
- From /nonexistent
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_params_singleton
- @some_method['is_singleton'] = true
- @some_method['full_name'] = 'SomeClass::some_method'
-
- @dd.display_params @some_method
-
- expected = <<-EOF
- SomeClass::some_method(arg1, arg2) {|block_param| ...}
-
- From /nonexistent
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_list_known_classes
- klasses = %w[SomeClass SomeModule]
-
- @dd.list_known_classes klasses
-
- expected = <<-EOF
----------------------------------------------------- Known classes and modules
-
- SomeClass
- SomeModule
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_list_known_classes_empty
- @dd.list_known_classes []
-
- expected = <<-EOF
-No ri data found
-
-If you've installed Ruby yourself, you need to generate documentation using:
-
- make install-doc
-
-from the same place you ran `make` to build ruby.
-
-If you installed Ruby from a packaging system, then you may need to
-install an additional package, or ask the packager to enable ri generation.
- EOF
-
- assert_equal expected, @output.string
- end
-
- def h(hash)
- RDoc::RI::Driver::OpenStructHash.convert hash
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_driver.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_driver.rb
deleted file mode 100644
index f16049205..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_driver.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'tmpdir'
-require 'rdoc/ri/driver'
-
-class TestRDocRIDriver < MiniTest::Unit::TestCase
-
- def setup
- @tmpdir = File.join Dir.tmpdir, "test_rdoc_ri_driver_#{$$}"
- @home_ri = File.join @tmpdir, 'dot_ri'
- @cache_dir = File.join @home_ri, 'cache'
- @class_cache = File.join @cache_dir, 'classes'
-
- FileUtils.mkdir_p @tmpdir
- FileUtils.mkdir_p @home_ri
- FileUtils.mkdir_p @cache_dir
-
- @driver = RDoc::RI::Driver.new(RDoc::RI::Driver.process_args([]))
- @driver.homepath = @home_ri
- end
-
- def teardown
- FileUtils.rm_rf @tmpdir
- end
-
- def test_lookup_method
- def @driver.load_cache_for(klassname)
- { 'Foo#bar' => :found }
- end
-
- assert @driver.lookup_method('Foo#bar', 'Foo')
- end
-
- def test_lookup_method_class_method
- def @driver.load_cache_for(klassname)
- { 'Foo::Bar' => :found }
- end
-
- assert @driver.lookup_method('Foo::Bar', 'Foo::Bar')
- end
-
- def test_lookup_method_class_missing
- def @driver.load_cache_for(klassname) end
-
- assert_nil @driver.lookup_method('Foo#bar', 'Foo')
- end
-
- def test_lookup_method_dot_instance
- def @driver.load_cache_for(klassname)
- { 'Foo#bar' => :instance, 'Foo::bar' => :klass }
- end
-
- assert_equal :instance, @driver.lookup_method('Foo.bar', 'Foo')
- end
-
- def test_lookup_method_dot_class
- def @driver.load_cache_for(klassname)
- { 'Foo::bar' => :found }
- end
-
- assert @driver.lookup_method('Foo.bar', 'Foo')
- end
-
- def test_lookup_method_method_missing
- def @driver.load_cache_for(klassname) {} end
-
- assert_nil @driver.lookup_method('Foo#bar', 'Foo')
- end
-
- def test_parse_name
- klass, meth = @driver.parse_name 'Foo::Bar'
-
- assert_equal 'Foo::Bar', klass, 'Foo::Bar class'
- assert_equal nil, meth, 'Foo::Bar method'
-
- klass, meth = @driver.parse_name 'Foo#Bar'
-
- assert_equal 'Foo', klass, 'Foo#Bar class'
- assert_equal 'Bar', meth, 'Foo#Bar method'
-
- klass, meth = @driver.parse_name 'Foo.Bar'
-
- assert_equal 'Foo', klass, 'Foo#Bar class'
- assert_equal 'Bar', meth, 'Foo#Bar method'
-
- klass, meth = @driver.parse_name 'Foo::bar'
-
- assert_equal 'Foo', klass, 'Foo::bar class'
- assert_equal 'bar', meth, 'Foo::bar method'
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_formatter.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_formatter.rb
deleted file mode 100644
index a70f9dcba..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_formatter.rb
+++ /dev/null
@@ -1,320 +0,0 @@
-require 'stringio'
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/ri/formatter'
-require 'rdoc/markup/to_flow'
-
-class TestRDocRIFormatter < MiniTest::Unit::TestCase
-
- def setup
- @output = StringIO.new
- @width = 78
- @indent = ' '
-
- @f = RDoc::RI::Formatter.new @output, @width, @indent
- @markup = RDoc::Markup.new
- @flow = RDoc::Markup::ToFlow.new
- end
-
- def test_blankline
- @f.blankline
-
- assert_equal "\n", @output.string
- end
-
- def test_bold_print
- @f.bold_print 'a b c'
-
- assert_equal 'a b c', @output.string
- end
-
- def test_break_to_newline
- @f.break_to_newline
-
- assert_equal '', @output.string
- end
-
- def test_conv_html
- assert_equal '> < " &', @f.conv_html('&gt; &lt; &quot; &amp;')
- end
-
- def test_conv_markup
- text = '<tt>a</tt> <code>b</code> <b>c</b> <em>d</em>'
-
- expected = '+a+ +b+ *c* _d_'
-
- assert_equal expected, @f.conv_markup(text)
- end
-
- def test_display_flow
- flow = [
- RDoc::Markup::Flow::H.new(1, 'heading'),
- RDoc::Markup::Flow::P.new('paragraph'),
- ]
-
- @f.display_flow flow
-
- assert_equal "\nHEADING\n=======\n\n paragraph\n\n", @output.string
- end
-
- def test_display_flow_item_h
- item = RDoc::Markup::Flow::H.new 1, 'heading'
-
- @f.display_flow_item item
-
- assert_equal "\nHEADING\n=======\n\n", @output.string
- end
-
- def test_display_flow_item_li
- item = RDoc::Markup::Flow::LI.new nil, 'paragraph'
-
- @f.display_flow_item item
-
- assert_equal " paragraph\n\n", @output.string
- end
-
- def test_display_flow_item_list
- item = RDoc::Markup::Flow::LIST.new :NUMBER
-
- @f.display_flow_item item
-
- assert_equal "", @output.string
- end
-
- def test_display_flow_item_p
- item = RDoc::Markup::Flow::P.new 'paragraph'
-
- @f.display_flow_item item
-
- assert_equal " paragraph\n\n", @output.string
- end
-
- def test_display_flow_item_rule
- item = RDoc::Markup::Flow::RULE.new 1
-
- @f.display_flow_item item
-
- assert_equal "#{'-' * 78}\n", @output.string
- end
-
- def test_display_flow_item_unknown
- e = assert_raises RDoc::Error do
- @f.display_flow_item Object.new
- end
-
- assert_equal "Unknown flow element: Object", e.message
- end
-
- def test_display_flow_item_verb
- item = RDoc::Markup::Flow::VERB.new 'a b c'
-
- @f.display_flow_item item
-
- assert_equal " a b c\n\n", @output.string
- end
-
- def test_display_heading_1
- @f.display_heading 'heading', 1, ' '
-
- assert_equal "\nHEADING\n=======\n\n", @output.string
- end
-
- def test_display_heading_2
- @f.display_heading 'heading', 2, ' '
-
- assert_equal "\nheading\n-------\n\n", @output.string
- end
-
- def test_display_heading_3
- @f.display_heading 'heading', 3, ' '
-
- assert_equal " heading\n\n", @output.string
- end
-
- def test_display_list
- list = RDoc::Markup::Flow::LIST.new :NUMBER
- list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
- list << RDoc::Markup::Flow::LI.new(nil, 'd e f')
-
- @f.display_list list
-
- assert_equal " 1. a b c\n\n 2. d e f\n\n", @output.string
- end
-
- def test_display_list_bullet
- list = RDoc::Markup::Flow::LIST.new :BULLET
- list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
-
- @f.display_list list
-
- assert_equal " * a b c\n\n", @output.string
- end
-
- def test_display_list_labeled
- list = RDoc::Markup::Flow::LIST.new :LABELED
- list << RDoc::Markup::Flow::LI.new('label', 'a b c')
-
- @f.display_list list
-
- assert_equal " label a b c\n\n", @output.string
- end
-
- def test_display_list_lower_alpha
- list = RDoc::Markup::Flow::LIST.new :LOWERALPHA
- list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
-
- @f.display_list list
-
- assert_equal " a. a b c\n\n", @output.string
- end
-
- def test_display_list_note
- list = RDoc::Markup::Flow::LIST.new :NOTE
- list << RDoc::Markup::Flow::LI.new('note:', 'a b c')
-
- @f.display_list list
-
- assert_equal " note: a b c\n\n", @output.string
- end
-
- def test_display_list_number
- list = RDoc::Markup::Flow::LIST.new :NUMBER
- list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
-
- @f.display_list list
-
- assert_equal " 1. a b c\n\n", @output.string
- end
-
- def test_display_list_unknown
- list = RDoc::Markup::Flow::LIST.new :UNKNOWN
- list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
-
- e = assert_raises ArgumentError do
- @f.display_list list
- end
-
- assert_equal 'unknown list type UNKNOWN', e.message
- end
-
- def test_display_list_upper_alpha
- list = RDoc::Markup::Flow::LIST.new :UPPERALPHA
- list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
-
- @f.display_list list
-
- assert_equal " A. a b c\n\n", @output.string
- end
-
- def test_display_verbatim_flow_item
- verbatim = RDoc::Markup::Flow::VERB.new "a b c\nd e f"
-
- @f.display_verbatim_flow_item verbatim
-
- assert_equal " a b c\n d e f\n\n", @output.string
- end
-
- def test_display_verbatim_flow_item_bold
- verbatim = RDoc::Markup::Flow::VERB.new "*a* b c"
-
- @f.display_verbatim_flow_item verbatim
-
- assert_equal " *a* b c\n\n", @output.string
- end
-
- def test_draw_line
- @f.draw_line
-
- expected = '-' * @width + "\n"
- assert_equal expected, @output.string
- end
-
- def test_draw_line_label
- @f.draw_line 'label'
-
- expected = '-' * (@width - 6) + " label\n"
- assert_equal expected, @output.string
- end
-
- def test_draw_line_label_long
- @f.draw_line 'a' * @width
-
- expected = '-' * @width + "\n" + ('a' * @width) + "\n"
- assert_equal expected, @output.string
- end
-
- def test_raw_print_line
- @f.raw_print_line 'a b c'
-
- assert_equal "a b c", @output.string
- end
-
- def test_strip_attributes_b
- text = @f.strip_attributes 'hello <b>world</b>'
-
- expected = 'hello world'
-
- assert_equal expected, text
- end
-
- def test_strip_attributes_code
- text = @f.strip_attributes 'hello <code>world</code>'
-
- expected = 'hello world'
-
- assert_equal expected, text
- end
-
- def test_strip_attributes_em
- text = @f.strip_attributes 'hello <em>world</em>'
-
- expected = 'hello world'
-
- assert_equal expected, text
- end
-
- def test_strip_attributes_i
- text = @f.strip_attributes 'hello <i>world</i>'
-
- expected = 'hello world'
-
- assert_equal expected, text
- end
-
- def test_strip_attributes_tt
- text = @f.strip_attributes 'hello <tt>world</tt>'
-
- expected = 'hello world'
-
- assert_equal expected, text
- end
-
- def test_wrap_empty
- @f.wrap ''
- assert_equal '', @output.string
- end
-
- def test_wrap_long
- @f.wrap 'a ' * (@width / 2)
- assert_equal " a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a\n a \n",
- @output.string
- end
-
- def test_wrap_markup
- @f.wrap 'a <tt>b</tt> c'
- assert_equal " a +b+ c\n", @output.string
- end
-
- def test_wrap_nil
- @f.wrap nil
- assert_equal '', @output.string
- end
-
- def test_wrap_short
- @f.wrap 'a b c'
- assert_equal " a b c\n", @output.string
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_html_formatter.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_html_formatter.rb
deleted file mode 100644
index 2206cd631..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_html_formatter.rb
+++ /dev/null
@@ -1,141 +0,0 @@
-require 'stringio'
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/ri/formatter'
-require 'rdoc/markup/fragments'
-require 'rdoc/markup/to_flow'
-
-class TestRDocRIHtmlFormatter < MiniTest::Unit::TestCase
-
- def setup
- @output = StringIO.new
- @width = 78
- @indent = ' '
-
- @f = RDoc::RI::HtmlFormatter.new @output, @width, @indent
- @markup = RDoc::Markup.new
- @flow = RDoc::Markup::ToFlow.new
- @af = RDoc::RI::AttributeFormatter
- end
-
- def test_blankline
- @f.blankline
-
- assert_equal "<p />\n", @output.string
- end
-
- def test_bold_print
- @f.bold_print 'text'
-
- assert_equal '<b>text</b>', @output.string
- end
-
- def test_break_to_newline
- @f.break_to_newline
-
- assert_equal "<br />\n", @output.string
- end
-
- def test_display_heading
- @f.display_heading 'text', 1, ' '
-
- assert_equal "<h1>text</h1>\n", @output.string
- end
-
- def test_display_heading_level_4
- @f.display_heading 'text', 4, ' '
-
- assert_equal "<h4>text</h4>\n", @output.string
- end
-
- def test_display_heading_level_5
- @f.display_heading 'text', 5, ' '
-
- assert_equal "<h4>text</h4>\n", @output.string
- end
-
- def test_display_list_bullet
- list = RDoc::Markup::Flow::LIST.new :BULLET
- list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
- list << RDoc::Markup::Flow::LI.new(nil, 'd e f')
-
- @f.display_list list
-
- expected = <<-EOF.strip
-<ul><li>a b c<p />
-</li><li>d e f<p />
-</li></ul>
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_list_number
- list = RDoc::Markup::Flow::LIST.new :NUMBER
- list << RDoc::Markup::Flow::LI.new(nil, 'a b c')
- list << RDoc::Markup::Flow::LI.new(nil, 'd e f')
-
- @f.display_list list
-
- expected = <<-EOF.strip
-<ol><li>a b c<p />
-</li><li>d e f<p />
-</li></ol>
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_list_labeled
- list = RDoc::Markup::Flow::LIST.new :LABELED
- list << RDoc::Markup::Flow::LI.new('label', 'a b c')
- list << RDoc::Markup::Flow::LI.new('label 2', 'd e f')
-
- @f.display_list list
-
- expected = <<-EOF.strip
-<dl><dt><b>label</b></dt><dd>a b c<p />
-</dd><dt><b>label 2</b></dt><dd>d e f<p />
-</dd></dl>
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_list_note
- list = RDoc::Markup::Flow::LIST.new :NOTE
- list << RDoc::Markup::Flow::LI.new('note:', 'a b c')
- list << RDoc::Markup::Flow::LI.new('note 2:', 'd e f')
-
- @f.display_list list
-
- expected = <<-EOF.strip
-<table><tr valign="top"><td>note:</td><td>a b c<p />
-</td></tr><tr valign="top"><td>note&nbsp;2:</td><td>d e f<p />
-</td></tr></table>
- EOF
-
- assert_equal expected, @output.string
- end
-
- def test_display_verbatim_flow_item
- verbatim = RDoc::Markup::Flow::VERB.new '*a* > b &gt; c'
- @f.display_verbatim_flow_item verbatim
-
- assert_equal "<pre>*a* &gt; b &amp;gt; c\n</pre>\n", @output.string
- end
-
- def test_draw_line
- @f.draw_line
-
- assert_equal "<hr />\n", @output.string
- end
-
- def test_draw_line_label
- @f.draw_line 'label'
-
- assert_equal "<b>label</b><hr />\n", @output.string
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_overstrike_formatter.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_overstrike_formatter.rb
deleted file mode 100644
index 38b95414d..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_ri_overstrike_formatter.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-require 'stringio'
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/ri/formatter'
-require 'rdoc/markup/fragments'
-require 'rdoc/markup/to_flow'
-
-class TestRDocRIOverstrikeFormatter < MiniTest::Unit::TestCase
-
- def setup
- @output = StringIO.new
- @width = 78
- @indent = ' '
-
- @f = RDoc::RI::OverstrikeFormatter.new @output, @width, @indent
- @markup = RDoc::Markup.new
- @flow = RDoc::Markup::ToFlow.new
-
- @af = RDoc::RI::AttributeFormatter
- end
-
- def test_display_verbatim_flow_item_bold
- verbatim = RDoc::Markup::Flow::VERB.new "*a* b c"
-
- @f.display_verbatim_flow_item verbatim
-
- assert_equal " *a* b c\n\n", @output.string
- end
-
- def test_write_attribute_text_bold
- line = [RDoc::RI::AttributeFormatter::AttrChar.new('b', @af::BOLD)]
-
- @f.write_attribute_text ' ', line
-
- assert_equal " b\bb\n", @output.string
- end
-
- def test_write_attribute_text_bold_italic
- attr = @af::BOLD | @af::ITALIC
- line = [RDoc::RI::AttributeFormatter::AttrChar.new('d', attr)]
-
- @f.write_attribute_text ' ', line
-
- assert_equal " _\bd\bd\n", @output.string
- end
-
- def test_write_attribute_text_code
- line = [RDoc::RI::AttributeFormatter::AttrChar.new('c', @af::CODE)]
-
- @f.write_attribute_text ' ', line
-
- assert_equal " _\bc\n", @output.string
- end
-
- def test_write_attribute_text_italic
- line = [RDoc::RI::AttributeFormatter::AttrChar.new('a', @af::ITALIC)]
-
- @f.write_attribute_text ' ', line
-
- assert_equal " _\ba\n", @output.string
- end
-
- def test_bold_print
- @f.bold_print 'a b c'
-
- assert_equal "a\ba \b b\bb \b c\bc", @output.string
- end
-
-end
-
-MiniTest::Unit.autorun
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_task.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_task.rb
deleted file mode 100644
index dd3114fb5..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_task.rb
+++ /dev/null
@@ -1,64 +0,0 @@
-require 'rubygems'
-require 'minitest/autorun'
-require 'rdoc/task'
-
-class TestRDocTask < MiniTest::Unit::TestCase
-
- def setup
- Rake::Task.clear
- end
-
- def test_tasks_creation
- RDoc::Task.new
- assert Rake::Task[:rdoc]
- assert Rake::Task[:clobber_rdoc]
- assert Rake::Task[:rerdoc]
- end
-
- def test_tasks_creation_with_custom_name_symbol
- rd = RDoc::Task.new(:rdoc_dev)
- assert Rake::Task[:rdoc_dev]
- assert Rake::Task[:clobber_rdoc_dev]
- assert Rake::Task[:rerdoc_dev]
- assert_equal :rdoc_dev, rd.name
- end
-
- def test_tasks_creation_with_custom_name_string
- rd = RDoc::Task.new("rdoc_dev")
- assert Rake::Task[:rdoc_dev]
- assert Rake::Task[:clobber_rdoc_dev]
- assert Rake::Task[:rerdoc_dev]
- assert_equal "rdoc_dev", rd.name
- end
-
- def test_tasks_creation_with_custom_name_hash
- options = { :rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force" }
- rd = RDoc::Task.new(options)
- assert Rake::Task[:"rdoc"]
- assert Rake::Task[:"rdoc:clean"]
- assert Rake::Task[:"rdoc:force"]
- assert_raises(RuntimeError) { Rake::Task[:clobber_rdoc] }
- assert_equal options, rd.name
- end
-
- def test_tasks_creation_with_custom_name_hash_will_use_default_if_an_option_isnt_given
- rd = RDoc::Task.new(:clobber_rdoc => "rdoc:clean")
- assert Rake::Task[:rdoc]
- assert Rake::Task[:"rdoc:clean"]
- assert Rake::Task[:rerdoc]
- end
-
- def test_tasks_creation_with_custom_name_hash_raises_exception_if_invalid_option_given
- assert_raises(ArgumentError) do
- RDoc::Task.new(:foo => "bar")
- end
-
- begin
- RDoc::Task.new(:foo => "bar")
- rescue ArgumentError => e
- assert_match(/foo/, e.message)
- end
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/test_rdoc_top_level.rb b/vendor/gems/rdoc-2.4.3/test/test_rdoc_top_level.rb
deleted file mode 100644
index 3287eacfa..000000000
--- a/vendor/gems/rdoc-2.4.3/test/test_rdoc_top_level.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'test/xref_test_case'
-
-class TestRDocTopLevel < XrefTestCase
-
- def setup
- super
-
- @top_level = RDoc::TopLevel.new 'path/top_level.rb'
- end
-
- def test_class_all_classes_and_modules
- assert_equal %w[C1 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4 M1],
- RDoc::TopLevel.all_classes_and_modules.map { |m| m.full_name }.sort
- end
-
- def test_class_classes
- assert_equal %w[C1 C2 C2::C3 C2::C3::H1 C3 C3::H1 C3::H2 C4 C4::C4],
- RDoc::TopLevel.classes.map { |m| m.full_name }.sort
- end
-
- def test_class_files
- assert_equal %w[path/top_level.rb xref_data.rb],
- RDoc::TopLevel.files.map { |m| m.full_name }.sort
- end
-
- def test_class_find_class_named
- assert_equal @c1, RDoc::TopLevel.find_class_named('C1')
- end
-
- def test_class_find_file_named
- assert_equal @xref_data, RDoc::TopLevel.find_file_named(@file_name)
- end
-
- def test_class_find_module_named
- assert_equal @m1, RDoc::TopLevel.find_module_named('M1')
- end
-
- def test_class_modules
- assert_equal %w[M1],
- RDoc::TopLevel.modules.map { |m| m.full_name }.sort
- end
-
- def test_class_reset
- RDoc::TopLevel.reset
-
- assert_empty RDoc::TopLevel.classes
- assert_empty RDoc::TopLevel.modules
- assert_empty RDoc::TopLevel.files
- end
-
- def test_base_name
- assert_equal 'top_level.rb', @top_level.base_name
- end
-
- def test_find_class_or_module_named
- assert_equal @c1, @xref_data.find_class_or_module_named('C1')
- assert_equal @c4, @xref_data.find_class_or_module_named('C4')
- end
-
- def test_full_name
- assert_equal 'path/top_level.rb', @top_level.full_name
- end
-
- def test_http_url
- assert_equal 'prefix/path/top_level_rb.html', @top_level.http_url('prefix')
- end
-
- def test_last_modified
- assert_equal 'Unknown', @top_level.last_modified
-
- stat = Object.new
- def stat.mtime() 0 end
- @top_level.file_stat = stat
-
- assert_equal '0', @top_level.last_modified
- end
-
- def test_name
- assert_equal 'top_level.rb', @top_level.name
- end
-
-end
-
diff --git a/vendor/gems/rdoc-2.4.3/test/xref_data.rb b/vendor/gems/rdoc-2.4.3/test/xref_data.rb
deleted file mode 100644
index 5d7e42bc2..000000000
--- a/vendor/gems/rdoc-2.4.3/test/xref_data.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-XREF_DATA = <<-XREF_DATA
-class C1
-
- attr :attr
- attr_reader :attr_reader
- attr_writer :attr_writer
- attr_accessor :attr_accessor
-
- CONST = :const
-
- def self.m
- end
-
- def m
- end
-end
-
-class C2
- class C3
- def m
- end
-
- class H1
- def m?
- end
- end
- end
-end
-
-class C3
- class H1
- end
-
- class H2
- end
-end
-
-class C4
- class C4
- end
-end
-
-module M1
-end
-XREF_DATA
-
diff --git a/vendor/gems/rdoc-2.4.3/test/xref_test_case.rb b/vendor/gems/rdoc-2.4.3/test/xref_test_case.rb
deleted file mode 100644
index 9c8b4748d..000000000
--- a/vendor/gems/rdoc-2.4.3/test/xref_test_case.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require 'rubygems'
-require 'minitest/unit'
-require 'rdoc/stats'
-require 'rdoc/options'
-require 'rdoc/code_objects'
-require 'rdoc/parser/ruby'
-require 'test/xref_data'
-
-class XrefTestCase < MiniTest::Unit::TestCase
-
- def setup
- RDoc::TopLevel.reset
- RDoc::AnyMethod.reset
-
- @file_name = 'xref_data.rb'
- @xref_data = RDoc::TopLevel.new @file_name
-
- @options = RDoc::Options.new
- @options.quiet = true
-
- stats = RDoc::Stats.new 0
-
- parser = RDoc::Parser::Ruby.new @xref_data, @file_name, XREF_DATA, @options,
- stats
- @top_levels = []
- @top_levels.push parser.scan
-
- generator = Object.new
- def generator.class_dir() nil end
- def generator.file_dir() nil end
- rdoc = RDoc::RDoc.new
- RDoc::RDoc.current = rdoc
- rdoc.generator = generator
-
- @c1 = @xref_data.find_module_named 'C1'
- @c2 = @xref_data.find_module_named 'C2'
- @c2_c3 = @xref_data.find_module_named 'C2::C3'
- @c3 = @xref_data.find_module_named 'C3'
- @c4 = @xref_data.find_module_named 'C4'
- @c4_c4 = @xref_data.find_module_named 'C4::C4'
-
- @m1 = @xref_data.find_module_named 'M1'
- end
-
-end
-
-MiniTest::Unit.autorun
-
diff --git a/vendor/gems/recaptcha-0.3.1/.specification b/vendor/gems/recaptcha-0.3.1/.specification
deleted file mode 100644
index d021eabbb..000000000
--- a/vendor/gems/recaptcha-0.3.1/.specification
+++ /dev/null
@@ -1,111 +0,0 @@
---- !ruby/object:Gem::Specification
-name: recaptcha
-version: !ruby/object:Gem::Version
- hash: 17
- prerelease: false
- segments:
- - 0
- - 3
- - 1
- version: 0.3.1
-platform: ruby
-authors:
-- Jason L. Perry
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2010-12-20 00:00:00 +00:00
-default_executable:
-dependencies:
-- !ruby/object:Gem::Dependency
- name: mocha
- prerelease: false
- requirement: &id001 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id001
-- !ruby/object:Gem::Dependency
- name: activesupport
- prerelease: false
- requirement: &id002 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id002
-description: "This plugin adds helpers for the reCAPTCHA API "
-email: jasper@ambethia.com
-executables: []
-
-extensions: []
-
-extra_rdoc_files:
-- LICENSE
-- README.rdoc
-files:
-- CHANGELOG
-- LICENSE
-- README.rdoc
-- Rakefile
-- VERSION
-- init.rb
-- lib/recaptcha.rb
-- lib/recaptcha/client_helper.rb
-- lib/recaptcha/configuration.rb
-- lib/recaptcha/merb.rb
-- lib/recaptcha/rails.rb
-- lib/recaptcha/verify.rb
-- recaptcha.gemspec
-- tasks/recaptcha_tasks.rake
-- test/recaptcha_test.rb
-- test/verify_recaptcha_test.rb
-has_rdoc: true
-homepage: http://ambethia.com/recaptcha
-licenses: []
-
-post_install_message:
-rdoc_options: []
-
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project:
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: Helpers for the reCAPTCHA API
-test_files:
-- test/recaptcha_test.rb
-- test/verify_recaptcha_test.rb
diff --git a/vendor/gems/recaptcha-0.3.1/CHANGELOG b/vendor/gems/recaptcha-0.3.1/CHANGELOG
deleted file mode 100644
index 92a63fd8e..000000000
--- a/vendor/gems/recaptcha-0.3.1/CHANGELOG
+++ /dev/null
@@ -1,23 +0,0 @@
-== 0.2.2 / 2009-09-14
-
-* Add a timeout to the validator
-* Give the documentation some love
-
-== 0.2.1 / 2009-09-14
-
-* Removed Ambethia namespace, and restructured classes a bit
-* Added an example rails app in the example-rails branch
-
-== 0.2.0 / 2009-09-12
-
-* RecaptchaOptions AJAX API Fix
-* Added 'cucumber' as a test environment to skip
-* Ruby 1.9 compat fixes
-* Added option :message => 'Custom error message' to verify_recaptcha
-* Removed dependency on ActiveRecord constant
-* Add I18n
-
-== 0.1.0 / 2008-2-8
-
-* 1 major enhancement
- * Initial Gem Release \ No newline at end of file
diff --git a/vendor/gems/recaptcha-0.3.1/LICENSE b/vendor/gems/recaptcha-0.3.1/LICENSE
deleted file mode 100644
index dc9c67e75..000000000
--- a/vendor/gems/recaptcha-0.3.1/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2007 Jason L Perry
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE. \ No newline at end of file
diff --git a/vendor/gems/recaptcha-0.3.1/README.rdoc b/vendor/gems/recaptcha-0.3.1/README.rdoc
deleted file mode 100644
index e91fb1d52..000000000
--- a/vendor/gems/recaptcha-0.3.1/README.rdoc
+++ /dev/null
@@ -1,123 +0,0 @@
-= reCAPTCHA
-
-Author:: Jason L Perry (http://ambethia.com)
-Copyright:: Copyright (c) 2007 Jason L Perry
-License:: {MIT}[http://creativecommons.org/licenses/MIT/]
-Info:: http://ambethia.com/recaptcha
-Git:: http://github.com/ambethia/recaptcha/tree/master
-Bugs:: http://github.com/ambethia/recaptcha/issues
-
-This plugin adds helpers for the {reCAPTCHA API}[http://recaptcha.net]. In your
-views you can use the +recaptcha_tags+ method to embed the needed javascript,
-and you can validate in your controllers with +verify_recaptcha+.
-
-Beforehand you need to configure Recaptcha with your custom private and public
-key. You may find detailed examples below. Exceptions will be raised if you
-call these methods and the keys can't be found.
-
-== About this fork
-
-This fork tries to introduces a more convenient way to configure recaptcha's
-settings. The API will be inspired by {Thoughtbot's
-Hoptoad}[http://robots.thoughtbot.com/post/344833329/mygem-configure-block].
-
-== Rails Installation
-
-reCAPTCHA for Rails can be installed as a gem:
-
- config.gem "recaptcha", :lib => "recaptcha/rails"
-
-Or, as a standard rails plugin:
-
- script/plugin install git://github.com/ambethia/recaptcha.git
-
-== Merb Installation
-
-reCAPTCHA can also be used in a Merb application when installed as a gem:
-
- dependency "alm-recaptcha", ">=0.2.2.1", :require_as => "recaptcha/merb"
-
-Initial Merb compatability funded by ALM Labs.
-
-== Setting up your API Keys
-
-There are multiple ways to setup your reCAPTCHA API key once you
-{obtain}[http://recaptcha.net/whyrecaptcha.html] a pair.
-
-=== Recaptcha.configure
-
-You may use the block style configuration. The following code could be placed
-into a +config/initializers/recaptcha.rb+ when used in a Rails project.
-
- Recaptcha.configure do |config|
- config.public_key = '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
- config.private_key = '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
- end
-
-This way, you may also set additional options to fit recaptcha into your
-deployment environment.
-
-=== Shell environment
-
-Or, you can keep your keys out of your code base by exporting the following
-environment variables. You might do this in the .profile/rc, or equivalent for
-the user running your application:
-
- export RECAPTCHA_PUBLIC_KEY = '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
- export RECAPTCHA_PRIVATE_KEY = '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
-
-=== Per call
-
-You can also pass in your keys as options at runtime, for example:
-
- recaptcha_tags :public_key => '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
-
-and later,
-
- verify_recaptcha :private_key => '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
-
-This option might be useful, if the same code base is used for multiple
-reCAPTCHA setups.
-
-== +recaptcha_tags+
-
-Some of the options available:
-
-<tt>:ssl</tt>:: Uses secure http for captcha widget (default +false+)
-<tt>:noscript</tt>:: Include <noscript> content (default +true+)
-<tt>:display</tt>:: Takes a hash containing the +theme+ and +tabindex+ options per the API. (default +nil+)
-<tt>:ajax</tt>:: Render the dynamic AJAX captcha per the API. (default +false+)
-<tt>:public_key</tt>:: Your public API key, takes precedence over the ENV variable (default +nil+)
-<tt>:error</tt>:: Override the error code returned from the reCAPTCHA API (default +nil+)
-
-You can also override the html attributes for the sizes of the generated +textarea+ and +iframe+
-elements, if CSS isn't your thing. Inspect the source of +recaptcha_tags+ to see these options.
-
-== +verify_recaptcha+
-
-This method returns +true+ or +false+ after processing the parameters from the reCAPTCHA widget. Why
-isn't this a model validation? Because that violates MVC. Use can use it like this, or how ever you
-like. Passing in the ActiveRecord object is optional, if you do--and the captcha fails to verify--an
-error will be added to the object for you to use.
-
-Some of the options available:
-
-<tt>:model</tt>:: Model to set errors
-<tt>:attribute</tt>:: Model attribute to receive errors (default :base)
-<tt>:message</tt>:: Custom error message
-<tt>:private_key</tt>:: Your private API key, takes precedence over the ENV variable (default +nil+).
-<tt>:timeout</tt>:: The number of seconds to wait for reCAPTCHA servers before give up. (default +3+)
-
- respond_to do |format|
- if verify_recaptcha(:model => @post, :message => "Oh! It's error with reCAPTCHA!") && @post.save
- # ...
- else
- # ...
- end
- end
-
-== TODO
-* Remove Rails/ActionController dependencies
-* Framework agnostic
-* Add some helpers to use in before_filter and what not
-* Better documentation
diff --git a/vendor/gems/recaptcha-0.3.1/Rakefile b/vendor/gems/recaptcha-0.3.1/Rakefile
deleted file mode 100644
index a56b58d1d..000000000
--- a/vendor/gems/recaptcha-0.3.1/Rakefile
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'rake'
-
-begin
- require 'jeweler'
- Jeweler::Tasks.new do |gem|
- gem.name = "recaptcha"
- gem.description = "This plugin adds helpers for the reCAPTCHA API "
- gem.summary = "Helpers for the reCAPTCHA API"
- gem.homepage = "http://ambethia.com/recaptcha"
- gem.authors = ["Jason L. Perry"]
- gem.email = "jasper@ambethia.com"
- gem.files.reject! { |fn| fn.include? ".gitignore" }
- gem.add_development_dependency "mocha"
- gem.add_development_dependency "activesupport"
- end
- Jeweler::GemcutterTasks.new
-rescue LoadError
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
-end
-
-require 'rake/rdoctask'
-Rake::RDocTask.new do |rd|
- if File.exist?('VERSION.yml')
- config = YAML.load(File.read('VERSION.yml'))
- version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
- else
- version = ""
- end
-
- rd.main = "README.rdoc"
- rd.rdoc_files.include "README.rdoc", "LICENSE", "lib/**/*.rb"
- rd.rdoc_dir = 'rdoc'
- rd.options << '-N' # line numbers
- rd.options << '-S' # inline source
-end
-
-require 'rake/testtask'
-Rake::TestTask.new(:test) do |test|
- test.libs << 'test'
- test.pattern = 'test/**/*_test.rb'
- # test.verbose = true
-end
-
-begin
- require 'rcov/rcovtask'
- Rcov::RcovTask.new do |test|
- test.libs << 'test'
- test.pattern = 'test/**/*_test.rb'
- test.verbose = true
- end
-rescue LoadError
- task :rcov do
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
- end
-end
-
-task :default => :test
-
-
-
diff --git a/vendor/gems/recaptcha-0.3.1/VERSION b/vendor/gems/recaptcha-0.3.1/VERSION
deleted file mode 100644
index a2268e2de..000000000
--- a/vendor/gems/recaptcha-0.3.1/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-0.3.1 \ No newline at end of file
diff --git a/vendor/gems/recaptcha-0.3.1/init.rb b/vendor/gems/recaptcha-0.3.1/init.rb
deleted file mode 100644
index 2e9a27ac8..000000000
--- a/vendor/gems/recaptcha-0.3.1/init.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# Rails plugin initialization.
-# You can also install it as a gem:
-# config.gem "ambethia-recaptcha", :lib => "recaptcha/rails", :source => "http://gems.github.com"
-
-require 'net/http'
-require 'recaptcha/rails' \ No newline at end of file
diff --git a/vendor/gems/recaptcha-0.3.1/lib/recaptcha.rb b/vendor/gems/recaptcha-0.3.1/lib/recaptcha.rb
deleted file mode 100644
index cb6f039a4..000000000
--- a/vendor/gems/recaptcha-0.3.1/lib/recaptcha.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'recaptcha/configuration'
-require 'recaptcha/client_helper'
-require 'recaptcha/verify'
-
-module Recaptcha
- module VERSION #:nodoc:
- MAJOR = 0
- MINOR = 2
- TINY = 2
- PATCH = 1
-
- STRING = [MAJOR, MINOR, TINY, PATCH].join('.')
- end
-
-
- RECAPTCHA_API_SERVER_URL = 'http://www.google.com/recaptcha/api'
- RECAPTCHA_API_SECURE_SERVER_URL = 'https://www.google.com/recaptcha/api'
- RECAPTCHA_VERIFY_URL = 'http://www.google.com/recaptcha/api/verify'
-
- SKIP_VERIFY_ENV = ['test', 'cucumber']
-
- # Gives access to the current Configuration.
- def self.configuration
- @configuration ||= Configuration.new
- end
-
- # Allows easy setting of multiple configuration options. See Configuration
- # for all available options.
- #--
- # The temp assignment is only used to get a nicer rdoc. Feel free to remove
- # this hack.
- #++
- def self.configure
- config = configuration
- yield(config)
- end
-
- class RecaptchaError < StandardError
- end
-end
diff --git a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/client_helper.rb b/vendor/gems/recaptcha-0.3.1/lib/recaptcha/client_helper.rb
deleted file mode 100644
index 2d54178e1..000000000
--- a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/client_helper.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-module Recaptcha
- module ClientHelper
- # Your public API can be specified in the +options+ hash or preferably
- # using the Configuration.
- def recaptcha_tags(options = {})
- # Default options
- key = options[:public_key] ||= Recaptcha.configuration.public_key
- raise RecaptchaError, "No public key specified." unless key
- error = options[:error] ||= (defined? flash ? flash[:recaptcha_error] : "")
- uri = Recaptcha.configuration.api_server_url(options[:ssl])
- html = ""
- if options[:display]
- html << %{<script type="text/javascript">\n}
- html << %{ var RecaptchaOptions = #{options[:display].to_json};\n}
- html << %{</script>\n}
- end
- if options[:ajax]
- html << %{<div id="dynamic_recaptcha"></div>}
- html << %{<script type="text/javascript" src="#{uri}/js/recaptcha_ajax.js"></script>\n}
- html << %{<script type="text/javascript">\n}
- html << %{ Recaptcha.create('#{key}', document.getElementById('dynamic_recaptcha')#{options[:display] ? ',RecaptchaOptions' : ''});}
- html << %{</script>\n}
- else
- html << %{<script type="text/javascript" src="#{uri}/challenge?k=#{key}}
- html << %{#{error ? "&amp;error=#{CGI::escape(error)}" : ""}"></script>\n}
- unless options[:noscript] == false
- html << %{<noscript>\n }
- html << %{<iframe src="#{uri}/noscript?k=#{key}" }
- html << %{height="#{options[:iframe_height] ||= 300}" }
- html << %{width="#{options[:iframe_width] ||= 500}" }
- html << %{style="border:none;"></iframe><br/>\n }
- html << %{<textarea name="recaptcha_challenge_field" }
- html << %{rows="#{options[:textarea_rows] ||= 3}" }
- html << %{cols="#{options[:textarea_cols] ||= 40}"></textarea>\n }
- html << %{<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>}
- html << %{</noscript>\n}
- end
- end
- return html.html_safe
- end # recaptcha_tags
- end # ClientHelper
-end # Recaptcha
diff --git a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/configuration.rb b/vendor/gems/recaptcha-0.3.1/lib/recaptcha/configuration.rb
deleted file mode 100644
index 210470a5b..000000000
--- a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/configuration.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-module Recaptcha
- # This class enables detailed configuration of the recaptcha services.
- #
- # By calling
- #
- # Recaptcha.configuration # => instance of Recaptcha::Configuration
- #
- # or
- # Recaptcha.configure do |config|
- # config # => instance of Recaptcha::Configuration
- # end
- #
- # you are able to perform configuration updates.
- #
- # Your are able to customize all attributes listed below. All values have
- # sensitive default and will very likely not need to be changed.
- #
- # Please note that the public and private key for the reCAPTCHA API Access
- # have no useful default value. The keys may be set via the Shell enviroment
- # or using this configuration. Settings within this configuration always take
- # precedence.
- #
- # Setting the keys with this Configuration
- #
- # Recaptcha.configure do |config|
- # config.public_key = '6Lc6BAAAAAAAAChqRbQZcn_yyyyyyyyyyyyyyyyy'
- # config.private_key = '6Lc6BAAAAAAAAKN3DRm6VA_xxxxxxxxxxxxxxxxx'
- # end
- #
- class Configuration
- attr_accessor :nonssl_api_server_url,
- :ssl_api_server_url,
- :verify_url,
- :skip_verify_env,
- :private_key,
- :public_key
-
- def initialize #:nodoc:
- @nonssl_api_server_url = RECAPTCHA_API_SERVER_URL
- @ssl_api_server_url = RECAPTCHA_API_SECURE_SERVER_URL
- @verify_url = RECAPTCHA_VERIFY_URL
- @skip_verify_env = SKIP_VERIFY_ENV
-
- @private_key = ENV['RECAPTCHA_PRIVATE_KEY']
- @public_key = ENV['RECAPTCHA_PUBLIC_KEY']
- end
-
- def api_server_url(ssl = false) #:nodoc:
- ssl ? ssl_api_server_url : nonssl_api_server_url
- end
- end
-end
diff --git a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/merb.rb b/vendor/gems/recaptcha-0.3.1/lib/recaptcha/merb.rb
deleted file mode 100644
index ed7b1928f..000000000
--- a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/merb.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'recaptcha'
-
-Merb::GlobalHelpers.send(:include, Recaptcha::ClientHelper)
-Merb::Controller.send(:include, Recaptcha::Verify)
diff --git a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/rails.rb b/vendor/gems/recaptcha-0.3.1/lib/recaptcha/rails.rb
deleted file mode 100644
index 08741cfd2..000000000
--- a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/rails.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'recaptcha'
-
-ActionView::Base.send(:include, Recaptcha::ClientHelper)
-ActionController::Base.send(:include, Recaptcha::Verify) \ No newline at end of file
diff --git a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/verify.rb b/vendor/gems/recaptcha-0.3.1/lib/recaptcha/verify.rb
deleted file mode 100644
index 733ce31be..000000000
--- a/vendor/gems/recaptcha-0.3.1/lib/recaptcha/verify.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-module Recaptcha
- module Verify
- # Your private API can be specified in the +options+ hash or preferably
- # using the Configuration.
- def verify_recaptcha(options = {})
- if !options.is_a? Hash
- options = {:model => options}
- end
-
- env = options[:env] || ENV['RAILS_ENV']
- return true if Recaptcha.configuration.skip_verify_env.include? env
- model = options[:model]
- attribute = options[:attribute] || :base
- private_key = options[:private_key] || Recaptcha.configuration.private_key
- raise RecaptchaError, "No private key specified." unless private_key
-
- begin
- recaptcha = nil
- Timeout::timeout(options[:timeout] || 3) do
- recaptcha = Net::HTTP.post_form URI.parse(Recaptcha.configuration.verify_url), {
- "privatekey" => private_key,
- "remoteip" => request.remote_ip,
- "challenge" => params[:recaptcha_challenge_field],
- "response" => params[:recaptcha_response_field]
- }
- end
- answer, error = recaptcha.body.split.map { |s| s.chomp }
- unless answer == 'true'
- flash[:recaptcha_error] = error
- if model
- model.valid?
- model.errors.add attribute, options[:message] || "Word verification response is incorrect, please try again."
- end
- return false
- else
- flash[:recaptcha_error] = nil
- return true
- end
- rescue Timeout::Error
- flash[:recaptcha_error] = "recaptcha-not-reachable"
- if model
- model.valid?
- model.errors.add attribute, options[:message] || "Oops, we failed to validate your word verification response. Please try again."
- end
- return false
- rescue Exception => e
- raise RecaptchaError, e.message, e.backtrace
- end
- end # verify_recaptcha
- end # Verify
-end # Recaptcha
diff --git a/vendor/gems/recaptcha-0.3.1/recaptcha.gemspec b/vendor/gems/recaptcha-0.3.1/recaptcha.gemspec
deleted file mode 100644
index 6456b8a0c..000000000
--- a/vendor/gems/recaptcha-0.3.1/recaptcha.gemspec
+++ /dev/null
@@ -1,62 +0,0 @@
-# Generated by jeweler
-# DO NOT EDIT THIS FILE DIRECTLY
-# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
- s.name = %q{recaptcha}
- s.version = "0.3.1"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
- s.authors = ["Jason L. Perry"]
- s.date = %q{2010-12-20}
- s.description = %q{This plugin adds helpers for the reCAPTCHA API }
- s.email = %q{jasper@ambethia.com}
- s.extra_rdoc_files = [
- "LICENSE",
- "README.rdoc"
- ]
- s.files = [
- "CHANGELOG",
- "LICENSE",
- "README.rdoc",
- "Rakefile",
- "VERSION",
- "init.rb",
- "lib/recaptcha.rb",
- "lib/recaptcha/client_helper.rb",
- "lib/recaptcha/configuration.rb",
- "lib/recaptcha/merb.rb",
- "lib/recaptcha/rails.rb",
- "lib/recaptcha/verify.rb",
- "recaptcha.gemspec",
- "tasks/recaptcha_tasks.rake",
- "test/recaptcha_test.rb",
- "test/verify_recaptcha_test.rb"
- ]
- s.homepage = %q{http://ambethia.com/recaptcha}
- s.require_paths = ["lib"]
- s.rubygems_version = %q{1.3.7}
- s.summary = %q{Helpers for the reCAPTCHA API}
- s.test_files = [
- "test/recaptcha_test.rb",
- "test/verify_recaptcha_test.rb"
- ]
-
- if s.respond_to? :specification_version then
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
- s.specification_version = 3
-
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
- s.add_development_dependency(%q<mocha>, [">= 0"])
- s.add_development_dependency(%q<activesupport>, [">= 0"])
- else
- s.add_dependency(%q<mocha>, [">= 0"])
- s.add_dependency(%q<activesupport>, [">= 0"])
- end
- else
- s.add_dependency(%q<mocha>, [">= 0"])
- s.add_dependency(%q<activesupport>, [">= 0"])
- end
-end
-
diff --git a/vendor/gems/recaptcha-0.3.1/tasks/recaptcha_tasks.rake b/vendor/gems/recaptcha-0.3.1/tasks/recaptcha_tasks.rake
deleted file mode 100644
index a0cf1ad13..000000000
--- a/vendor/gems/recaptcha-0.3.1/tasks/recaptcha_tasks.rake
+++ /dev/null
@@ -1,4 +0,0 @@
-# desc "Explaining what the task does"
-# task :recaptcha do
-# # Task goes here
-# end \ No newline at end of file
diff --git a/vendor/gems/recaptcha-0.3.1/test/recaptcha_test.rb b/vendor/gems/recaptcha-0.3.1/test/recaptcha_test.rb
deleted file mode 100644
index 82845a9cc..000000000
--- a/vendor/gems/recaptcha-0.3.1/test/recaptcha_test.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'test/unit'
-require 'cgi'
-require File.dirname(File.expand_path(__FILE__)) + '/../lib/recaptcha'
-
-class RecaptchaClientHelperTest < Test::Unit::TestCase
- include Recaptcha
- include Recaptcha::ClientHelper
- include Recaptcha::Verify
-
- attr_accessor :session
-
- def setup
- @session = {}
- Recaptcha.configure do |config|
- config.public_key = '0000000000000000000000000000000000000000'
- config.private_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
- end
- end
-
- def test_recaptcha_tags
- # Might as well match something...
- assert_match /http:\/\/www.google.com\/recaptcha\/api\/challenge/, recaptcha_tags
- end
-
- def test_recaptcha_tags_with_ssl
- assert_match /https:\/\/www.google.com\/recaptcha\/api\/challenge/, recaptcha_tags(:ssl => true)
- end
-
- def test_recaptcha_tags_without_noscript
- assert_no_match /noscript/, recaptcha_tags(:noscript => false)
- end
-
- def test_should_raise_exception_without_public_key
- assert_raise RecaptchaError do
- Recaptcha.configuration.public_key = nil
- recaptcha_tags
- end
- end
-end
diff --git a/vendor/gems/recaptcha-0.3.1/test/verify_recaptcha_test.rb b/vendor/gems/recaptcha-0.3.1/test/verify_recaptcha_test.rb
deleted file mode 100644
index 0e9afc8bb..000000000
--- a/vendor/gems/recaptcha-0.3.1/test/verify_recaptcha_test.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-require 'test/unit'
-require 'active_support/core_ext/string'
-require 'rubygems'
-require 'mocha'
-require 'net/http'
-require File.dirname(File.expand_path(__FILE__)) + '/../lib/recaptcha'
-
-class RecaptchaVerifyTest < Test::Unit::TestCase
- def setup
- Recaptcha.configuration.private_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
- @controller = TestController.new
- @controller.request = stub(:remote_ip => "1.1.1.1")
- @controller.params = {:recaptcha_challenge_field => "challenge", :recaptcha_response_field => "response"}
-
- @expected_post_data = {}
- @expected_post_data["privatekey"] = Recaptcha.configuration.private_key
- @expected_post_data["remoteip"] = @controller.request.remote_ip
- @expected_post_data["challenge"] = "challenge"
- @expected_post_data["response"] = "response"
-
- @expected_uri = URI.parse(Recaptcha.configuration.verify_url)
- end
-
- def test_should_raise_exception_without_private_key
- assert_raise Recaptcha::RecaptchaError do
- Recaptcha.configuration.private_key = nil
- @controller.verify_recaptcha
- end
- end
-
- def test_should_return_false_when_key_is_invalid
- expect_http_post(response_with_body("false\ninvalid-site-private-key"))
-
- assert !@controller.verify_recaptcha
- assert_equal "invalid-site-private-key", @controller.flash[:recaptcha_error]
- end
-
- def test_returns_true_on_success
- @controller.flash[:recaptcha_error] = "previous error that should be cleared"
- expect_http_post(response_with_body("true\n"))
-
- assert @controller.verify_recaptcha
- assert_nil @controller.flash[:recaptcha_error]
- end
-
- def test_errors_should_be_added_to_model
- expect_http_post(response_with_body("false\nbad-news"))
-
- errors = mock
- errors.expects(:add).with(:base, "Word verification response is incorrect, please try again.")
- model = mock(:valid? => false, :errors => errors)
-
- assert !@controller.verify_recaptcha(:model => model)
- assert_equal "bad-news", @controller.flash[:recaptcha_error]
- end
-
- def test_returns_true_on_success_with_optional_key
- @controller.flash[:recaptcha_error] = "previous error that should be cleared"
- # reset private key
- @expected_post_data["privatekey"] = 'ADIFFERENTPRIVATEKEYXXXXXXXXXXXXXX'
- expect_http_post(response_with_body("true\n"))
-
- assert @controller.verify_recaptcha(:private_key => 'ADIFFERENTPRIVATEKEYXXXXXXXXXXXXXX')
- assert_nil @controller.flash[:recaptcha_error]
- end
-
- def test_timeout
- expect_http_post(Timeout::Error, :exception => true)
- assert !@controller.verify_recaptcha()
- assert_equal "recaptcha-not-reachable", @controller.flash[:recaptcha_error]
- end
-
- private
-
- class TestController
- include Recaptcha::Verify
- attr_accessor :request, :params, :flash
-
- def initialize
- @flash = {}
- end
- end
-
- def expect_http_post(response, options = {})
- unless options[:exception]
- Net::HTTP.expects(:post_form).with(@expected_uri, @expected_post_data).returns(response)
- else
- Net::HTTP.expects(:post_form).raises response
- end
- end
-
- def response_with_body(body)
- stub(:body => body)
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/.specification b/vendor/gems/routing-filter-0.2.3/.specification
deleted file mode 100644
index 081da6e32..000000000
--- a/vendor/gems/routing-filter-0.2.3/.specification
+++ /dev/null
@@ -1,151 +0,0 @@
---- !ruby/object:Gem::Specification
-name: routing-filter
-version: !ruby/object:Gem::Version
- hash: 17
- prerelease:
- segments:
- - 0
- - 2
- - 3
- version: 0.2.3
-platform: ruby
-authors:
-- Sven Fuchs
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2011-01-24 00:00:00 +00:00
-default_executable:
-dependencies:
-- !ruby/object:Gem::Dependency
- name: actionpack
- prerelease: false
- requirement: &id001 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :runtime
- version_requirements: *id001
-- !ruby/object:Gem::Dependency
- name: i18n
- prerelease: false
- requirement: &id002 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id002
-- !ruby/object:Gem::Dependency
- name: rails
- prerelease: false
- requirement: &id003 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id003
-- !ruby/object:Gem::Dependency
- name: test_declarative
- prerelease: false
- requirement: &id004 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id004
-description: Routing filters wraps around the complex beast that the Rails routing system is, allowing for unseen flexibility and power in Rails URL recognition and generation.
-email: svenfuchs@artweb-design.de
-executables: []
-
-extensions: []
-
-extra_rdoc_files: []
-
-files:
-- lib/routing-filter.rb
-- lib/routing_filter/adapters/rails_2.rb
-- lib/routing_filter/adapters/rails_3.rb
-- lib/routing_filter/chain.rb
-- lib/routing_filter/filter.rb
-- lib/routing_filter/filters/extension.rb
-- lib/routing_filter/filters/locale.rb
-- lib/routing_filter/filters/pagination.rb
-- lib/routing_filter/filters/uuid.rb
-- lib/routing_filter/version.rb
-- lib/routing_filter.rb
-- test/all.rb
-- test/blocks.rb
-- test/filters/all_filters/generation.rb
-- test/filters/all_filters/recognition.rb
-- test/filters/all_filters_test.rb
-- test/filters/extension_test.rb
-- test/filters/locale_test.rb
-- test/filters/pagination_test.rb
-- test/filters/uuid_test.rb
-- test/rails_test.rb
-- test/routes_test.rb
-- test/routing_filter_test.rb
-- test/test_adapters/rails_2.rb
-- test/test_adapters/rails_3.rb
-- test/test_helper.rb
-- Gemfile
-- Gemfile.lock
-- MIT-LICENSE
-- README.markdown
-has_rdoc: true
-homepage: http://github.com/svenfuchs/routing-filter
-licenses: []
-
-post_install_message:
-rdoc_options: []
-
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: "[none]"
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: Routing filters wraps around the complex beast that the Rails routing system is, allowing for unseen flexibility and power in Rails URL recognition and generation
-test_files: []
-
diff --git a/vendor/gems/routing-filter-0.2.3/Gemfile b/vendor/gems/routing-filter-0.2.3/Gemfile
deleted file mode 100644
index 2837fde79..000000000
--- a/vendor/gems/routing-filter-0.2.3/Gemfile
+++ /dev/null
@@ -1,8 +0,0 @@
-source :rubygems
-
-group :test do
- gem 'rails', '~> 3.0'
- gem 'i18n'
- gem 'test_declarative'
- gem 'ruby-debug'
-end
diff --git a/vendor/gems/routing-filter-0.2.3/Gemfile.lock b/vendor/gems/routing-filter-0.2.3/Gemfile.lock
deleted file mode 100644
index e80776164..000000000
--- a/vendor/gems/routing-filter-0.2.3/Gemfile.lock
+++ /dev/null
@@ -1,82 +0,0 @@
-GEM
- remote: http://rubygems.org/
- specs:
- abstract (1.0.0)
- actionmailer (3.0.3)
- actionpack (= 3.0.3)
- mail (~> 2.2.9)
- actionpack (3.0.3)
- activemodel (= 3.0.3)
- activesupport (= 3.0.3)
- builder (~> 2.1.2)
- erubis (~> 2.6.6)
- i18n (~> 0.4)
- rack (~> 1.2.1)
- rack-mount (~> 0.6.13)
- rack-test (~> 0.5.6)
- tzinfo (~> 0.3.23)
- activemodel (3.0.3)
- activesupport (= 3.0.3)
- builder (~> 2.1.2)
- i18n (~> 0.4)
- activerecord (3.0.3)
- activemodel (= 3.0.3)
- activesupport (= 3.0.3)
- arel (~> 2.0.2)
- tzinfo (~> 0.3.23)
- activeresource (3.0.3)
- activemodel (= 3.0.3)
- activesupport (= 3.0.3)
- activesupport (3.0.3)
- arel (2.0.6)
- builder (2.1.2)
- columnize (0.3.2)
- erubis (2.6.6)
- abstract (>= 1.0.0)
- i18n (0.5.0)
- linecache (0.43)
- mail (2.2.12)
- activesupport (>= 2.3.6)
- i18n (>= 0.4.0)
- mime-types (~> 1.16)
- treetop (~> 1.4.8)
- mime-types (1.16)
- polyglot (0.3.1)
- rack (1.2.1)
- rack-mount (0.6.13)
- rack (>= 1.0.0)
- rack-test (0.5.6)
- rack (>= 1.0)
- rails (3.0.3)
- actionmailer (= 3.0.3)
- actionpack (= 3.0.3)
- activerecord (= 3.0.3)
- activeresource (= 3.0.3)
- activesupport (= 3.0.3)
- bundler (~> 1.0)
- railties (= 3.0.3)
- railties (3.0.3)
- actionpack (= 3.0.3)
- activesupport (= 3.0.3)
- rake (>= 0.8.7)
- thor (~> 0.14.4)
- rake (0.8.7)
- ruby-debug (0.10.4)
- columnize (>= 0.1)
- ruby-debug-base (~> 0.10.4.0)
- ruby-debug-base (0.10.4)
- linecache (>= 0.3)
- test_declarative (0.0.5)
- thor (0.14.6)
- treetop (1.4.9)
- polyglot (>= 0.3.1)
- tzinfo (0.3.23)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- i18n
- rails (~> 3.0)
- ruby-debug
- test_declarative
diff --git a/vendor/gems/routing-filter-0.2.3/MIT-LICENSE b/vendor/gems/routing-filter-0.2.3/MIT-LICENSE
deleted file mode 100644
index ac93a5835..000000000
--- a/vendor/gems/routing-filter-0.2.3/MIT-LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2008 Sven Fuchs
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/README.markdown b/vendor/gems/routing-filter-0.2.3/README.markdown
deleted file mode 100644
index f59d5ce5b..000000000
--- a/vendor/gems/routing-filter-0.2.3/README.markdown
+++ /dev/null
@@ -1,204 +0,0 @@
-# Routing Filter
-
-Routing filters wrap around the complex beast that the Rails routing system is
-to allow for unseen flexibility and power in Rails URL recognition and
-generation.
-
-As powerful and awesome the Rails' routes are, when you need to design your
-URLs in a manner that only slightly leaves the paved cowpaths of Rails
-conventions, you're usually unable to use all the goodness of helpers and
-convenience that Rails ships with.
-
-This library comes with four more or less reusable filters and it is easy to
-implement custom ones. Maybe the most popular one is the Locale routing filter:
-
-* `Locale` - prepends the page's :locale (e.g. /de/products)
-* `Pagination` - appends page/:num (e.g. /products/page/2)
-* `Uuid` - prepends a uuid for authentication or other purposes (e.g. /d00fbbd1-82b6-4c1a-a57d-098d529d6854/products/1)
-* `Extension` - appends an extension (e.g. /products.html)
-
-Please note that Rails 3's routing system is much more powerful and flexible
-than Rails 2 was. There are many usecases that now can be covered with just
-Rails 3 default routing features that weren't doable in Rails 2. For an example
-of a quite complex and flexible route see this [gist by Andrew White](http://gist.github.com/653543)
-
-## Requirements
-
-routing-filter currently only works with Rails. It should not be all too hard
-to get it working with plain Rack::Mount but I haven't had that usecase, yet.
-
-## Installation
-
-Just install the Gem:
-
- $ gem install routing-filter
-
-The Gem should work out of the box for Rails 3 after specifying it in your
-application's Gemfile.
-
- # Gemfile
- gem 'routing-filter'
-
-In order to use it with Rails 2.x you could specify it in your environment.rb
-
- # config/environment.rb
- gem 'routing-filter'
-
-## Usage
-
-Once the Gem has loaded you can setup the filters in your routes file like this:
-
- # in config/routes.rb
- Rails.application.routes.draw do
- filter :pagination, :uuid
- end
-
-Filters can also accept options:
-
- Rails.application.routes.draw do
- filter :extension, :exclude => %r(^admin/)
- end
-
-## Running the tests
-
-There are two Gemfiles in the `ci` directory in order to run the tests against different dependencies. The Rails 3 Gemfile is symlinked to the root folder, so it will be used by default.
-
-Running the tests with Rails 3.x:
-
- $ bundle install
- $ ruby -Itest -Ilib test/all.rb
-
-Running the tests with Rails 2.3.x:
-
- $ BUNDLE_GEMFILE=ci/Gemfile.rails-2.3.x bundle install
- $ BUNDLE_GEMFILE=ci/Gemfile.rails-2.3.x ruby -Itest -Ilib test/all.rb
-
-## Filter order
-
-You can picture the way routing-filter wraps filters around your application as a russian puppet pattern. Your application sits in the center and is wrapped by a number of filters. An incoming request's path will be past through these layers of filters from the outside in until it is passed to the regular application routes set. When you generate URLs on the other hand then the filters will be run from the inside out.
-
-Filter order might be confusing at first. The reason for that is that the way rack/mount (which is used by Rails as a core routing engine) is confusing in this respect and Rails tries to make the best of it.
-
-Suppose you have a filter :custom in your application routes.rb file and an engine that adds a :common filter. Then Rails makes it so that your application's routes file will be loaded first (basically route.rb files are loaded in reverse engine load order).
-
-Thus routing-filter will make your :custom filter the *inner-most* filter, wrapping the application *first*. The :common filter from your engine will be wrapped *around* that onion and will be made the *outer-most* filter.
-
-This way common base filters (such as the locale filter) can run first and do not need to know about the specifics of other (more specialized, custom) filters. Custom filters on the other hand can easily take into account that common filters might already have run and adjust accordingly.
-
-
-## Implementing your own filters
-
-For example implementations have a look at the existing filters in
-[lib/routing_filter/filters](http://github.com/svenfuchs/routing-filter/tree/master/lib/routing_filter/filters)
-
-The following would be a sceleton of an empty filter:
-
- module RoutingFilter
- class Awesomeness < Filter
- def around_recognize(path, env, &block)
- # Alter the path here before it gets recognized.
- # Make sure to yield (calls the next around filter if present and
- # eventually `recognize_path` on the routeset):
- yield.tap do |params|
- # You can additionally modify the params here before they get passed
- # to the controller.
- end
- end
-
- def around_generate(params, &block)
- # Alter arguments here before they are passed to `url_for`.
- # Make sure to yield (calls the next around filter if present and
- # eventually `url_for` on the controller):
- yield.tap do |result|
- # You can change the generated url_or_path here. Make sure to use
- # one of the "in-place" modifying String methods though (like sub!
- # and friends).
- end
- end
- end
- end
-
-You can specify the filter explicitely in your routes.rb:
-
- Rails.application.routes.draw do
- filter :awesomeness
- end
-
-(I am not sure if it makes sense to provide more technical information than
-this because the usage of this plugin definitely requires some advanced
-knowledge about Rails internals and especially its routing system. So, I
-figure, anyone who could use this should also be able to read the code and
-figure out what it's doing much better then from any lengthy documentation.
-
-If I'm mistaken on this please drop me an email with your suggestions.)
-
-
-## Rationale: Two example usecases
-
-### Conditionally prepending the locale
-
-An early usecase from which this originated was the need to define a locale
-at the beginning of an URL in a way so that
-
-* the locale can be omitted when it is the default locale
-* all the url\_helpers that are generated by named routes as well as url_for continue to work in
-a concise manner (i.e. without specifying all parameters again and again)
-* ideally also plays nicely with default route helpers in tests/specs
-
-You can read about this struggle and two possible, yet unsatisfying solutions
-[here](http://www.artweb-design.de/2007/5/13/concise-localized-rails-url-helpers-solved-twice).
-The conclusion so far is that Rails itself does not provide the tools to solve
-this problem in a clean and dry way.
-
-### Expanding /sections/:id to nested tree segments
-
-Another usecase that eventually spawned the implementation of this plugin was
-the need to map an arbitrary count of path segments to a certain model
-instance. In an application that I've been working on recently I needed to
-map URL paths to a nested tree of models like so:
-
- root
- + docs
- + api
- + wiki
-
-E.g. the docs section should map to the path `/docs`, the api section to
-the path `/docs/api` and so on. Furthermore, after these paths there need to be
-more things to be specified. E.g. the wiki needs to define a whole Rails
-resource with URLs like `/docs/wiki/pages/1/edit`.
-
-The only way to solve this problem with Rails' routing toolkit is to map
-a big, bold `/*everything` catch-all ("globbing") route and process the whole
-path in a custom dispatcher.
-
-This, of course, is a really unsatisfying solution because one has to
-reimplement everything that Rails routes are here to help with: regarding both
-URL recognition (like parameter mappings, resources, ...) and generation
-(url\_helpers).
-
-## Solution
-
-This plugin offers a solution that takes exactly the opposite route.
-
-Instead of trying to change things *between* the URL recognition and
-generation stages to achieve the desired result it *wraps around* the whole
-routing system and allows to pre- and post-filter both what goes into it
-(URL recognition) and what comes out of it (URL generation).
-
-This way we can leave *everything* else completely untouched.
-
-* We can tinker with the URLs that we receive from the server and feed URLs to
-Rails that perfectly match the best breed of Rails' conventions.
-* Inside of the application we can use all the nice helper goodness and
-conveniences that rely on these conventions being followed.
-* Finally we can accept URLs that have been generated by the url\_helpers and,
-again, mutate them in the way that matches our requirements.
-
-So, even though the plugin itself is a blatant monkey-patch to one of the
-most complex area of Rails internals, this solution seems to be effectively
-less intrusive and pricey than others are.
-
-## Etc
-
-Authors: [Sven Fuchs](http://www.artweb-design.de) <svenfuchs at artweb-design dot de>
-License: MIT
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing-filter.rb b/vendor/gems/routing-filter-0.2.3/lib/routing-filter.rb
deleted file mode 100644
index 1189921d8..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing-filter.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'routing_filter' \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter.rb
deleted file mode 100644
index 49dca2e79..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'action_pack'
-require 'active_support/core_ext/string/inflections'
-
-module RoutingFilter
- autoload :Filter, 'routing_filter/filter'
- autoload :Chain, 'routing_filter/chain'
- autoload :Extension, 'routing_filter/filters/extension'
- autoload :Locale, 'routing_filter/filters/locale'
- autoload :Pagination, 'routing_filter/filters/pagination'
- autoload :Uuid, 'routing_filter/filters/uuid'
-
- class << self
- def build(name, options)
- const_get(name.to_s.camelize).new(options)
- end
-
- def active=(active)
- @@active = active
- end
-
- def active?
- defined?(@@active) ? @@active : @@active = true
- end
- end
-end
-
-require "routing_filter/adapters/rails_#{ActionPack::VERSION::MAJOR}" \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/adapters/rails_2.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/adapters/rails_2.rb
deleted file mode 100644
index 9463ede19..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/adapters/rails_2.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-require 'action_controller'
-
-# allows to install a filter to the route set by calling: map.filter 'locale'
-ActionController::Routing::RouteSet::Mapper.class_eval do
- def filter(*args)
- @set.add_filters(*args)
- end
-end
-
-# same here for the optimized url generation in named routes
-ActionController::Routing::RouteSet::NamedRouteCollection.class_eval do
- # gosh. monkey engineering optimization code
- def generate_optimisation_block_with_filtering(*args)
- code = generate_optimisation_block_without_filtering(*args)
- if match = code.match(%r(^return (.*) if (.*)))
- # returned string must not contain newlines, or we'll spill out of inline code comments in
- # ActionController::Routing::RouteSet::NamedRouteCollection#define_url_helper
- "#{match[1]}.tap { |result|" +
- " ActionController::Routing::Routes.filters.run(:around_generate, *args, &lambda{ result }) " +
- "} if #{match[2]}"
- end
- end
- alias_method_chain :generate_optimisation_block, :filtering
-end
-
-ActionController::Routing::RouteSet.class_eval do
- attr_writer :filters
-
- def filters
- @filters ||= RoutingFilter::Chain.new
- end
-
- def add_filters(*names)
- options = names.extract_options!
- names.each { |name| filters.unshift(RoutingFilter.build(name, options)) }
- end
-
- def recognize_path_with_filtering(path, env = {})
- path = ::URI.unescape(path.dup) # string is frozen due to memoize
- filters.run(:around_recognize, path, env, &lambda{ recognize_path_without_filtering(path, env) })
- end
- alias_method_chain :recognize_path, :filtering
-
- def generate_with_filtering(*args)
- filters.run(:around_generate, args.first, &lambda{ generate_without_filtering(*args) })
- end
- alias_method_chain :generate, :filtering
-
- def clear_with_filtering!
- @filters.clear if @filters
- clear_without_filtering!
- end
- alias_method_chain :clear!, :filtering
-
- # add some useful information to the request environment
- # right, this is from jamis buck's excellent article about routes internals
- # http://weblog.jamisbuck.org/2006/10/26/monkey-patching-rails-extending-routes-2
- # TODO move this ... where?
- alias_method :extract_request_environment_without_host, :extract_request_environment unless method_defined? :extract_request_environment_without_host
- def extract_request_environment(request)
- extract_request_environment_without_host(request).tap do |env|
- env.merge! :host => request.host,
- :port => request.port,
- :host_with_port => request.host_with_port,
- :domain => request.domain,
- :subdomain => request.subdomains.first
- end
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/adapters/rails_3.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/adapters/rails_3.rb
deleted file mode 100644
index 9c8a9fe9d..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/adapters/rails_3.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'action_dispatch'
-require 'active_support/core_ext/module/aliasing'
-require 'active_support/core_ext/hash/reverse_merge'
-
-mappers = [ActionDispatch::Routing::Mapper]
-mappers << ActionDispatch::Routing::DeprecatedMapper if defined?(ActionDispatch::Routing::DeprecatedMapper)
-mappers.each do |mapper|
- mapper.class_eval do
- def filter(*args)
- @set.add_filters(*args)
- end
- end
-end
-
-ActionDispatch::Routing::RouteSet.class_eval do
- def filters
- @set.filters if @set
- end
-
- def add_filters(*names)
- options = names.extract_options!
- names.each { |name| filters.unshift(RoutingFilter.build(name, options)) }
- end
-
- # def recognize_path_with_filtering(path, env = {})
- # @set.filters.run(:around_recognize, path.dup, env, &lambda{ recognize_path_without_filtering(path.dup, env) })
- # end
- # alias_method_chain :recognize_path, :filtering
-
- def generate_with_filtering(options, recall = {}, extras = false)
- filters.run(:around_generate, options, &lambda{ generate_without_filtering(options, recall, extras) })
- end
- alias_method_chain :generate, :filtering
-
- def clear_with_filtering!
- filters.clear if filters
- clear_without_filtering!
- end
- alias_method_chain :clear!, :filtering
-end
-
-require 'rack/mount/route_set'
-require 'rack/mount/code_generation'
-
-Rack::Mount::RouteSet.class_eval do
- def filters
- @filters || RoutingFilter::Chain.new.tap { |f| @filters = f unless frozen? }
- end
-end
-
-# gah. so who's hoped monkeypatching optimized code wouldn't be necessary with rails 3 anymore?
-Rack::Mount::CodeGeneration.class_eval do
- def optimize_recognize_with_filtering!
- optimize_recognize_without_filtering!
- (class << self; self; end).class_eval do
- alias_method_chain :recognize, :filtering
- end
- end
- alias :optimize_recognize_without_filtering! :optimize_recognize!
- alias :optimize_recognize! :optimize_recognize_with_filtering!
-
- # note: if you overly and unnecessarily use blocks in your lowlevel libraries you make it fricking
- # hard for your users to hook in anywhere
- def recognize_with_filtering(request, &block)
- path, route, matches, params = request.env['PATH_INFO'], nil, nil, nil
- original_path = path.dup
-
- filters.run(:around_recognize, path, request.env) do
- route, matches, params = recognize_without_filtering(request)
- params || {}
- end
-
- request.env['PATH_INFO'] = original_path # hmm ...
- block.call(route, matches, params) if route
- end
-end
-
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/chain.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/chain.rb
deleted file mode 100644
index 3dde98857..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/chain.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-module RoutingFilter
- class Chain < Array
- def <<(filter)
- filter.previous, last.next = last, filter if last
- super
- end
- alias push <<
-
- def unshift(filter)
- filter.next, first.previous = first, filter if first
- super
- end
-
- def run(method, *args, &final)
- active? ? first.run(method, *args, &final) : final.call
- end
-
- def active?
- RoutingFilter.active? && !empty?
- end
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filter.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filter.rb
deleted file mode 100644
index 4fbdad9ec..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filter.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module RoutingFilter
- class Filter
- attr_accessor :next, :previous, :options
-
- def initialize(options = {})
- @options = options
- end
-
- def run(method, *args, &block)
- _next = self.next ? proc {|path, env| self.next.run(method, *args, &block) } : block
- RoutingFilter.active? ? send(method, *args, &_next) : _next.call(*args)
- end
-
- def run_reverse(method, *args, &block)
- _prev = previous ? lambda { previous.run_reverse(method, *args, &block) } : block
- RoutingFilter.active? ? send(method, *args, &_prev) : _prev.call(*args)
- end
-
- protected
-
- def extract_segment!(pattern, path)
- path.sub!(pattern) { $2 || '' }
- path.replace('/') if path.empty?
- $1
- end
-
- def prepend_segment!(result, segment)
- url = result.is_a?(Array) ? result.first : result
- url.sub!(%r(^(http.?://[^/]*)?(.*))) { "#{$1}/#{segment}#{$2 == '/' ? '' : $2}" }
- end
-
- def append_segment!(result, segment)
- url = result.is_a?(Array) ? result.first : result
- url.sub!(%r(/?($|\?))) { "/#{segment}#{$1}" }
- end
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/extension.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/extension.rb
deleted file mode 100644
index 3d30c667e..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/extension.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-# The Extension filter chops a file extension off from the end of the
-# recognized path. When a path is generated the filter re-adds the extension
-# to the path accordingly.
-#
-# incoming url: /de/products/page/1
-# filtered url: /de/products
-# params: params[:locale] = 'de'
-#
-# You can install the filter like this:
-#
-# # in config/routes.rb
-# Rails.application.routes.draw do
-# filter :locale
-# end
-#
-# To make your named_route helpers or url_for add the pagination segments you
-# can use:
-#
-# products_path(:locale => 'de')
-# url_for(:products, :locale => 'de'))
-
-module RoutingFilter
- class Extension < Filter
- attr_reader :extension, :exclude
-
- def initialize(*args)
- super
- @exclude = options[:exclude]
- @extension = options[:extension] || 'html'
- end
-
- def around_recognize(path, env, &block)
- extract_extension!(path) unless excluded?(path)
- yield(path, env)
- end
-
- def around_generate(params, &block)
- yield.tap do |result|
- url = result.is_a?(Array) ? result.first : result
- append_extension!(url) if append_extension?(url)
- end
- end
-
- protected
-
- def extract_extension!(path)
- path.sub!(/\.#{extension}$/, '')
- $1
- end
-
- def append_extension?(url)
- !(blank?(url) || excluded?(url) || mime_extension?(url))
- end
-
- def append_extension!(url)
- url.replace url.sub(/(\?|$)/, ".#{extension}\\1")
- end
-
- def blank?(url)
- url.blank? || !!url.match(%r(^/(\?|$)))
- end
-
- def excluded?(url)
- case exclude
- when Regexp
- url =~ exclude
- when Proc
- exclude.call(url)
- end
- end
-
- def mime_extension?(url)
- url =~ /\.#{Mime::EXTENSION_LOOKUP.keys.join('|')}(\?|$)/
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/locale.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/locale.rb
deleted file mode 100644
index 4016a09f4..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/locale.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-# The Locale filter extracts segments matching /:locale from the beginning of
-# the recognized path and exposes the page parameter as params[:page]. When a
-# path is generated the filter adds the segments to the path accordingly if
-# the page parameter is passed to the url helper.
-#
-# incoming url: /de/products/page/1
-# filtered url: /de/products
-# params: params[:locale] = 'de'
-#
-# You can install the filter like this:
-#
-# # in config/routes.rb
-# Rails.application.routes.draw do
-# filter :locale
-# end
-#
-# To make your named_route helpers or url_for add the pagination segments you
-# can use:
-#
-# products_path(:locale => 'de')
-# url_for(:products, :locale => 'de'))
-
-require 'i18n'
-
-module RoutingFilter
- class Locale < Filter
- @@include_default_locale = true
- cattr_writer :include_default_locale
-
- class << self
- def include_default_locale?
- @@include_default_locale
- end
-
- def locales
- @@locales ||= I18n.available_locales.map(&:to_sym)
- end
-
- def locales=(locales)
- @@locales = locales.map(&:to_sym)
- end
-
- def locales_pattern
- @@locales_pattern ||= %r(^/(#{self.locales.map { |l| Regexp.escape(l.to_s) }.join('|')})(?=/|$))
- end
- end
-
- def around_recognize(path, env, &block)
- locale = extract_segment!(self.class.locales_pattern, path) # remove the locale from the beginning of the path
- yield.tap do |params| # invoke the given block (calls more filters and finally routing)
- params[:locale] = locale if locale # set recognized locale to the resulting params hash
- end
- end
-
- def around_generate(*args, &block)
- params = args.extract_options! # this is because we might get a call like forum_topics_path(forum, topic, :locale => :en)
-
- locale = params.delete(:locale) # extract the tpassed :locale option
- locale = I18n.locale if locale.nil? # default to I18n.locale when locale is nil (could also be false)
- locale = nil unless valid_locale?(locale) # reset to no locale when locale is not valid
-
- args << params
- yield.tap do |result|
- prepend_segment!(result, locale) if prepend_locale?(locale)
- end
- end
-
- protected
-
- def valid_locale?(locale)
- locale && self.class.locales.include?(locale.to_sym)
- end
-
- def default_locale?(locale)
- locale && locale.to_sym == I18n.default_locale.to_sym
- end
-
- def prepend_locale?(locale)
- locale && (self.class.include_default_locale? || !default_locale?(locale))
- end
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/pagination.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/pagination.rb
deleted file mode 100644
index 0decb8b20..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/pagination.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-# The Pagination filter extracts segments matching /page/:page from the end of
-# the recognized url and exposes the page parameter as params[:page]. When a
-# url is generated the filter adds the segments to the url accordingly if the
-# page parameter is passed to the url helper.
-#
-# incoming url: /products/page/1
-# filtered url: /products
-# params: params[:page] = 1
-#
-# You can install the filter like this:
-#
-# # in config/routes.rb
-# Rails.application.routes.draw do
-# filter :pagination
-# end
-#
-# To make your named_route helpers or url_for add the pagination segments you
-# can use:
-#
-# products_path(:page => 1)
-# url_for(:products, :page => 1)
-
-module RoutingFilter
- class Pagination < Filter
- PAGINATION_SEGMENT = %r(/page/([\d]+)/?$)
-
- def around_recognize(path, env, &block)
- page = extract_segment!(PAGINATION_SEGMENT, path)
- yield(path, env).tap do |params|
- params[:page] = page.to_i if page
- end
- end
-
- def around_generate(params, &block)
- page = params.delete(:page)
- yield.tap do |result|
- append_segment!(result, "page/#{page}") if append_page?(page)
- end
- end
-
- protected
-
- def append_page?(page)
- page && page.to_i != 1
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/uuid.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/uuid.rb
deleted file mode 100644
index 8f62e69bb..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/filters/uuid.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-# The Uuid filter extracts an UUID segment from the beginning of the recognized
-# path and exposes the page parameter as params[:page]. When a path is generated
-# the filter adds the segments to the path accordingly if the page parameter is
-# passed to the url helper.
-#
-# incoming url: /d00fbbd1-82b6-4c1a-a57d-098d529d6854/product/1
-# filtered url: /product/1
-# params: params[:uuid] = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
-#
-# You can install the filter like this:
-#
-# # in config/routes.rb
-# Rails.application.routes.draw do
-# filter :uuid
-# end
-#
-# To make your named_route helpers or url_for add the uuid segment you can use:
-#
-# product_path(:uuid => uuid)
-# url_for(product, :uuid => uuid)
-
-module RoutingFilter
- class Uuid < Filter
- UUID_SEGMENT = %r(^/?([a-z\d]{8}\-[a-z\d]{4}\-[a-z\d]{4}\-[a-z\d]{4}\-[a-z\d]{12})(/)?)
-
- def around_recognize(path, env, &block)
- uuid = extract_segment!(UUID_SEGMENT, path)
- yield.tap do |params|
- params[:uuid] = uuid if uuid
- end
- end
-
- def around_generate(params, &block)
- uuid = params.delete(:uuid)
- yield.tap do |result|
- prepend_segment!(result, uuid) if uuid
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/version.rb b/vendor/gems/routing-filter-0.2.3/lib/routing_filter/version.rb
deleted file mode 100644
index 567bb92b8..000000000
--- a/vendor/gems/routing-filter-0.2.3/lib/routing_filter/version.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-module RoutingFilter
- VERSION = '0.2.3'
-end \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/test/all.rb b/vendor/gems/routing-filter-0.2.3/test/all.rb
deleted file mode 100644
index 5faf13e5b..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/all.rb
+++ /dev/null
@@ -1 +0,0 @@
-Dir[File.expand_path('../**/*_test.rb', __FILE__)].each { |file| require file } \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/test/blocks.rb b/vendor/gems/routing-filter-0.2.3/test/blocks.rb
deleted file mode 100644
index abe601a5b..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/blocks.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# def foo
-# f = Proc.new { return "return from foo from inside proc" }
-# f.call # control leaves foo here
-# return "return from foo"
-# end
-#
-# def bar
-# f = lambda { return "return from lambda" }
-# f.call # control does not leave bar here
-# return "return from bar"
-# end
-#
-# puts foo # prints "return from foo from inside proc"
-# puts bar # prints "return from bar"
-
-
-class RouteSet
- def call
- recognize &Proc.new { return 'return from recognize block' }
- p "KEKSE"
- # recognize do
- # return 'return from recognize block'
- # end
- end
-
- def recognize
- yield
- p "KEKSE"
- end
-end
-
-
-puts RouteSet.new.call
diff --git a/vendor/gems/routing-filter-0.2.3/test/filters/all_filters/generation.rb b/vendor/gems/routing-filter-0.2.3/test/filters/all_filters/generation.rb
deleted file mode 100644
index f30130261..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/filters/all_filters/generation.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-module Generation
- test 'generates the path /some.html (extension)' do
- params = self.params
- assert_equal '/some.html', routes.generate(params)
- end
-
- # extension with any
-
- test 'generates the path /de/some (extension, locale)' do
- params = self.params.merge(:locale => 'de')
- assert_equal '/de/some.html', routes.generate(params)
- end
-
- test 'generates the path /some/page/2 (extension, pagination)' do
- params = self.params.merge(:page => 2)
- assert_equal '/some/page/2.html', routes.generate(params)
- end
-
- test 'generates the path /:uuid/some (extension, uuid)' do
- params = self.params.merge(:uuid => uuid)
- assert_equal "/#{uuid}/some.html", routes.generate(params)
- end
-
- # extension, locale with any
-
- test 'generates the path /de/some/page/2 (extension, locale, pagination)' do
- params = self.params.merge(:locale => 'de', :page => 2)
- assert_equal '/de/some/page/2.html', routes.generate(params)
- end
-
- test 'generates the path /de/:uuid/some (extension, locale, uuid)' do
- params = self.params.merge(:locale => 'de', :uuid => uuid)
- assert_equal "/de/#{uuid}/some.html", routes.generate(params)
- end
-
- # all
-
- test 'generates the path /de/some/page/2 (extension, pagination, uuid)' do
- params = self.params.merge(:locale => 'de', :page => 2, :uuid => uuid)
- assert_equal "/de/#{uuid}/some/page/2.html", routes.generate(params)
- end
-end \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/test/filters/all_filters/recognition.rb b/vendor/gems/routing-filter-0.2.3/test/filters/all_filters/recognition.rb
deleted file mode 100644
index b02b13491..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/filters/all_filters/recognition.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-module Recognition
- # 1 filter
-
- test 'recognizes the path /some.html (extension)' do
- params = self.params
- assert_equal params, routes.recognize_path('/some.html')
- end
-
- test 'recognizes the path /de/some (locale)' do
- params = self.params.merge(:locale => 'de')
- assert_equal params, routes.recognize_path('/de/some')
- end
-
- test 'recognizes the path /some/page/2 (pagination)' do
- params = self.params.merge(:page => 2)
- assert_equal params, routes.recognize_path('/some/page/2')
- end
-
- test 'recognizes the path /:uuid/some (uuid)' do
- params = self.params.merge(:uuid => uuid)
- assert_equal params, routes.recognize_path("/#{uuid}/some")
- end
-
- # extension with any
-
- test 'recognizes the path /de/some.html (extension, locale)' do
- params = self.params.merge(:locale => 'de')
- assert_equal params, routes.recognize_path('/de/some.html')
- end
-
- test 'recognizes the path /some/page/2.html (extension, pagination)' do
- params = self.params.merge(:page => 2)
- assert_equal params, routes.recognize_path('/some/page/2.html')
- end
-
- test 'recognizes the path /:uuid/some.html (extension, uuid)' do
- params = self.params.merge(:uuid => uuid)
- assert_equal params, routes.recognize_path("/#{uuid}/some.html")
- end
-
- # locale with any
-
- test 'recognizes the path /de/some/page/2 (locale, pagination)' do
- params = self.params.merge(:locale => 'de', :page => 2)
- assert_equal params, routes.recognize_path('/de/some/page/2')
- end
-
- test 'recognizes the path /de/:uuid/some (locale, uuid)' do
- params = self.params.merge(:locale => 'de', :uuid => uuid)
- assert_equal params, routes.recognize_path("/de/#{uuid}/some")
- end
-
- # pagination with any
-
- test 'recognizes the path /:uuid/some/page/2 (pagination, uuid)' do
- params = self.params.merge(:page => 2, :uuid => uuid)
- assert_equal params, routes.recognize_path("/#{uuid}/some/page/2")
- end
-
- # extension, locale with any
-
- test 'recognizes the path /de/some/page/2.html (extension, locale, pagination)' do
- params = self.params.merge(:locale => 'de', :page => 2)
- assert_equal params, routes.recognize_path("/de/some/page/2.html")
- end
-
- test 'recognizes the path /de/:uuid/some.html (extension, locale, uuid)' do
- params = self.params.merge(:locale => 'de', :uuid => uuid)
- assert_equal params, routes.recognize_path("/de/#{uuid}/some.html")
- end
-
- # extension, pagination with any
-
- test 'recognizes the path /some/page/2.html (extension, pagination, uuid)' do
- params = self.params.merge(:page => 2, :uuid => uuid)
- assert_equal params, routes.recognize_path("/#{uuid}/some/page/2.html")
- end
-
- # locale, pagination with any
-
- test 'recognizes the path /de/some/page/2 (locale, pagination, uuid)' do
- params = self.params.merge(:locale => 'de', :page => 2, :uuid => uuid)
- assert_equal params, routes.recognize_path("/de/#{uuid}/some/page/2")
- end
-
- # all
-
- test 'recognizes the path /de/:uuid/some/page/2.html (extension, locale, pagination, uuid)' do
- params = self.params.merge(:locale => 'de', :page => 2, :uuid => uuid)
- assert_equal params, routes.recognize_path("/de/#{uuid}/some/page/2.html")
- end
-end \ No newline at end of file
diff --git a/vendor/gems/routing-filter-0.2.3/test/filters/all_filters_test.rb b/vendor/gems/routing-filter-0.2.3/test/filters/all_filters_test.rb
deleted file mode 100644
index 2ec825e79..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/filters/all_filters_test.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'test_helper'
-require 'filters/all_filters/generation'
-require 'filters/all_filters/recognition'
-
-class AllFiltersTest < Test::Unit::TestCase
- attr_reader :routes, :params, :uuid
-
- def setup
- I18n.locale = nil
- I18n.default_locale = :en
- I18n.available_locales = %w(de en)
-
- RoutingFilter::Locale.include_default_locale = false
-
- @params = { :controller => 'some', :action => 'index' }
- @uuid = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
-
- @routes = draw_routes do
- filter :uuid, :pagination ,:locale, :extension
- match 'some', :to => 'some#index'
- end
- end
-
- include Recognition, Generation
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/filters/extension_test.rb b/vendor/gems/routing-filter-0.2.3/test/filters/extension_test.rb
deleted file mode 100644
index 865463c17..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/filters/extension_test.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'test_helper'
-
-class ForceExtensionTest < Test::Unit::TestCase
- attr_reader :routes, :params
-
- def setup
- @routes = draw_routes do
- filter :extension, :exclude => %r(^/(admin|$))
- match '/', :to => 'some#index'
- match 'some/:id(.:format)', :to => 'some#show'
- match '/admin/some/new', :to => 'some#new'
- end
- @params = { :controller => 'some', :action => 'show', :id => '1' }
- end
-
- test 'recognizes the path some/1.html and strips the extension' do
- assert_nil routes.recognize_path('/some/1.html')[:format]
- end
-
- test 'recognizes the path some/1.xml but does not strip the extension' do
- assert 'xml', routes.recognize_path('/some/1.xml')[:format]
- end
-
- test 'appends the extension .html to the generated path' do
- assert_equal '/some/1.html', routes.generate(params)
- end
-
- test 'does not touch existing extensions in generated paths' do
- assert_equal '/some/1.xml', routes.generate(params.merge(:format => 'xml'))
- end
-
- test 'does not touch url query params in generated paths' do
- assert_equal '/some/1.html?foo=bar', routes.generate(params.merge(:foo => 'bar'))
- end
-
- test 'excludes / by default' do
- assert_equal '/', routes.generate(:controller => 'some', :action => 'index')
- end
-
- test 'excludes / by default (with url query params)' do
- assert_equal '/?foo=bar', routes.generate(:controller => 'some', :action => 'index', :foo => 'bar')
- end
-
- test 'excludes with custom regexp' do
- assert_equal '/admin/some/new', routes.generate(:controller => 'some', :action => 'new')
- end
-
- # TODO - why would anyone want to have this?
- #
- # test 'does not exclude / when :exclude => false was passed' do
- # routes.filters.first.instance_variable_set(:@exclude, false)
- # assert_equal '/.html', routes.generate(:controller => 'some', :action => 'index')
- # end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/filters/locale_test.rb b/vendor/gems/routing-filter-0.2.3/test/filters/locale_test.rb
deleted file mode 100644
index 874872330..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/filters/locale_test.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-require 'test_helper'
-
-class LocaleTest < Test::Unit::TestCase
- attr_reader :routes, :show_params, :index_params
-
- def setup
- I18n.locale = nil
- I18n.default_locale = :en
- I18n.available_locales = %w(de en)
-
- RoutingFilter::Locale.include_default_locale = true
-
- @index_params = { :controller => 'some', :action => 'index' }
- @show_params = { :controller => 'some', :action => 'show', :id => '1' }
-
- @routes = draw_routes do
- filter :locale
- match 'products/:id', :to => 'some#show'
- match '/', :to => 'some#index'
- end
- end
-
- test 'recognizes the path /en' do
- assert_equal index_params.merge(:locale => 'en'), routes.recognize_path('/en')
- end
-
- test 'recognizes the path /en/' do
- assert_equal index_params.merge(:locale => 'en'), routes.recognize_path('/en/')
- end
-
- test 'recognizes the path /en/products/1' do
- assert_equal show_params.merge(:locale => 'en'), routes.recognize_path('/en/products/1')
- end
-
- test 'recognizes the path /de/products/1' do
- assert_equal show_params.merge(:locale => 'de'), routes.recognize_path('/de/products/1')
- end
-
-
- test 'prepends the segments /:locale to the generated path / if the current locale is not the default locale' do
- I18n.locale = 'de'
- assert_equal '/de', routes.generate(index_params)
- end
-
- test 'prepends the segments /:locale to the generated path /products/1 if the current locale is not the default locale' do
- I18n.locale = 'de'
- assert_equal '/de/products/1', routes.generate(show_params)
- end
-
- test 'prepends the segments /:locale to the generated path if it was passed as a param' do
- assert_equal '/de/products/1', routes.generate(show_params.merge(:locale => 'de'))
- end
-
- test 'prepends the segments /:locale if the given locale is the default_locale and include_default_locale is true' do
- assert RoutingFilter::Locale.include_default_locale?
- assert_equal '/en/products/1', routes.generate(show_params.merge(:locale => 'en'))
- end
-
- test 'does not prepend the segments /:locale if the current locale is the default_locale and include_default_locale is false' do
- I18n.locale = 'en'
- RoutingFilter::Locale.include_default_locale = false
- assert_equal '/products/1', routes.generate(show_params)
- end
-
- test 'does not prepend the segments /:locale if the given locale is the default_locale and include_default_locale is false' do
- RoutingFilter::Locale.include_default_locale = false
- assert_equal '/products/1', routes.generate(show_params.merge(:locale => I18n.default_locale))
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/filters/pagination_test.rb b/vendor/gems/routing-filter-0.2.3/test/filters/pagination_test.rb
deleted file mode 100644
index bafd8ed5c..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/filters/pagination_test.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'test_helper'
-
-class PaginationTest < Test::Unit::TestCase
- attr_reader :routes, :params
-
- def setup
- @routes = draw_routes do
- filter :pagination
- match 'some', :to => 'some#index'
- end
- @params = { :controller => 'some', :action => 'index', :page => 2 }
- end
-
- test 'recognizes the path some/page/2' do
- assert_equal params, routes.recognize_path('/some/page/2')
- end
-
- test 'appends the segments /page/:page to the generated path if the passed :page param does not equal 1' do
- assert_equal '/some/page/2', routes.generate(params)
- end
-
- test 'does not append anything to the generated path if the passed :page param equals 1' do
- assert_equal '/some', routes.generate(params.merge(:page => 1))
- end
-
- test 'appends the segments /page/:page to the generated path but respects url query params' do
- assert_equal '/some/page/2?foo=bar', routes.generate(params.merge(:foo => 'bar'))
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/filters/uuid_test.rb b/vendor/gems/routing-filter-0.2.3/test/filters/uuid_test.rb
deleted file mode 100644
index 28e67d44e..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/filters/uuid_test.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'test_helper'
-
-class UuidTest < Test::Unit::TestCase
- attr_reader :routes, :uuid, :params
-
- def setup
- @routes = draw_routes do
- filter :uuid
- match 'some/:id', :to => 'some#show'
- end
- @uuid = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
- @params = { :controller => 'some', :action => 'show', :id => '1', :uuid => uuid }
- end
-
- test 'recognizes the path :uuid/product/1' do
- assert_equal params, routes.recognize_path("/#{uuid}/some/1")
- end
-
- test 'prepends the :uuid segment to the generated path if passed as a param' do
- assert_equal "/#{uuid}/some/1", routes.generate(params)
- end
-
- test 'matches uuid segments' do
- pattern = Uuid::UUID_SEGMENT
- uuids = %w(
- d00fbbd1-82b6-4c1a-a57d-098d529d6854 cdb33760-94da-11df-981c-0800200c9a66
- 0c65a6ec-6491-4316-a137-0021cf4e6471 cbbd44c3-c195-48e5-be04-3cc8a6578f51
- )
- uuids.each { |uuid| assert pattern.match("/#{uuid}/"), "does not match /#{uuid}/ but should" }
- end
-
- test 'does not match non-uuid segments' do
- pattern = Uuid::UUID_SEGMENT
- uuids = %w(
- !aaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa aaaa-aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa
- aaaaaaaa_aaaa_aaaa_aaaa_aaaaaaaaaaaa aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa
- )
- uuids.each { |uuid| assert !pattern.match("/#{uuid}/"), "matches /#{uuid}/ but shouldn't" }
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/rails_test.rb b/vendor/gems/routing-filter-0.2.3/test/rails_test.rb
deleted file mode 100644
index 9d04e511a..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/rails_test.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-require 'test_helper'
-require "test_adapters/rails_#{ActionPack::VERSION::MAJOR}"
-
-class RailsTest < Test::Unit::TestCase
- include TestRailsAdapter
-
- I18n.available_locales = [:en, :de]
-
- class TestsController < ActionController::Base
- include Rails.application.routes.url_helpers if defined?(Rails)
-
- def index
- url = url_for(params.merge(:only_path => true))
- render :text => params.merge(:url => url).inspect
- end
-
- def show
- url = foo_path(params)
- render :text => params.merge(:url => url).inspect
- end
- end
-
- def params
- response.status.to_s.include?('200') ? eval(response.body).symbolize_keys : {}
- end
-
- test "get to /" do
- get '/'
- assert_nil params[:locale]
- assert_nil params[:page]
- assert_nil params[:uuid]
- assert_equal '/en.html', params[:url]
- end
-
- test "get to /foo/1" do
- get '/foo/1'
- assert_nil params[:locale]
- assert_nil params[:page]
- assert_nil params[:uuid]
- assert_equal '/en/foo/1.html', params[:url]
- end
-
- test "get to /de" do
- get '/de'
- assert_equal 'de', params[:locale]
- assert_nil params[:page]
- assert_nil params[:uuid]
- assert_equal '/de.html', params[:url]
- end
-
- test "get to /de/foo/1" do
- get '/de/foo/1'
- assert_equal 'de', params[:locale]
- assert_nil params[:page]
- assert_nil params[:uuid]
- assert_equal '/de/foo/1.html', params[:url]
- end
-
- test "get to /page/2" do
- get '/page/2'
- assert_nil params[:locale]
- assert_equal 2, params[:page]
- assert_nil params[:uuid]
- assert_equal '/en/page/2.html', params[:url]
- end
-
- test "get to /foo/1/page/2" do
- get '/foo/1/page/2'
- assert_nil params[:locale]
- assert_equal 2, params[:page]
- assert_nil params[:uuid]
- assert_equal '/en/foo/1/page/2.html', params[:url]
- end
-
- test "get to /:uuid" do
- uuid = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
- get "/#{uuid}"
- assert_nil params[:locale]
- assert_nil params[:page]
- assert_equal uuid, params[:uuid]
- assert_equal "/en/#{uuid}.html", params[:url]
- end
-
- test "get to /foo/1/:uuid" do
- uuid = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
- get "/#{uuid}/foo/1"
- assert_nil params[:locale]
- assert_nil params[:page]
- assert_equal uuid, params[:uuid]
- assert_equal "/en/#{uuid}/foo/1.html", params[:url]
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/routes_test.rb b/vendor/gems/routing-filter-0.2.3/test/routes_test.rb
deleted file mode 100644
index 8c803dbfe..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/routes_test.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'test_helper'
-
-class RoutesTest < Test::Unit::TestCase
- class RoutingFilter::Test < Filter
- def around_recognize(path, env, &block)
- 'recognized'
- end
-
- def around_generate(*args, &block)
- 'generated'
- end
- end
-
- attr_reader :routes
-
- def setup
- @routes = draw_routes { |set| set.filter :test }
- end
-
- test "routes.filter instantiates and registers a filter" do
- assert routes.filters.first.is_a?(RoutingFilter::Test)
- end
-
- # test "filter.around_recognize is being called" do
- # assert_equal 'recognized', routes.recognize_path('/')
- # end
-
- test "filter.around_generate is being called" do
- assert_equal 'generated', routes.generate({})
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/routing_filter_test.rb b/vendor/gems/routing-filter-0.2.3/test/routing_filter_test.rb
deleted file mode 100644
index 41b1b70b4..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/routing_filter_test.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'test_helper'
-
-include RoutingFilter
-
-class RoutingFilterTest < Test::Unit::TestCase
- class FooFilter < Filter
- attr_reader :name
-
- def initialize(name)
- @name = name
- end
-
- def foo(log, &block)
- log << name
- yield
- end
- end
-
- attr_reader :chain
-
- def setup
- @chain = Chain.new
- @chain.unshift FooFilter.new('custom filter')
- @chain.unshift FooFilter.new('common filter')
- end
-
- test "filter.previous is nil for the first filter in the chain" do
- assert_nil chain.first.previous
- end
-
- test "filter.previous returns the previous filter in the chain" do
- assert_equal chain.first, chain.last.previous
- end
-
- test "filter.next is nil for the last filter in the chain" do
- assert_nil chain.last.next
- end
-
- test "filter.next returns the next filter in the chain" do
- assert_equal chain.last, chain.first.next
- end
-
- test "chain.run calls the given method on registered filters in reverse order" do
- log = []
- assert_equal 'common filter, custom filter, finalizer', chain.run(:foo, log, &lambda { log << 'finalizer' }).join(', ')
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/test_adapters/rails_2.rb b/vendor/gems/routing-filter-0.2.3/test/test_adapters/rails_2.rb
deleted file mode 100644
index 6e8b5fd32..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/test_adapters/rails_2.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'test_helper'
-
-module TestRailsAdapter
- routes = ActionController::Routing::Routes = ActionController::Routing::RouteSet.new
- routes.draw do |map|
- map.connect '/', :controller => 'rails_test/tests', :action => 'index'
- map.foo '/foo/:id', :controller => 'rails_test/tests', :action => 'show'
- map.filter :uuid, :pagination ,:locale, :extension
- end
-
- attr_reader :session
- delegate :get, :response, :to => :session
-
- def setup
- @session = ActionController::Integration::Session.new(lambda { |env| ActionController::Routing::Routes.call(env) })
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/test_adapters/rails_3.rb b/vendor/gems/routing-filter-0.2.3/test/test_adapters/rails_3.rb
deleted file mode 100644
index 05cafaa47..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/test_adapters/rails_3.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'test_helper'
-
-require "rails"
-require 'rack/test'
-
-module TestRailsAdapter
- include ::Rack::Test::Methods
-
- APP = Class.new(Rails::Application).tap do |app|
- app.config.secret_token = "3b7cd727ee24e8444053437c36cc66c4"
- app.config.session_store :cookie_store, :key => "_myapp_session"
- app.config.active_support.deprecation = :log
- app.routes.draw do
- match "/" => "rails_test/tests#index"
- match "/foo/:id" => "rails_test/tests#show", :as => 'foo'
- filter :uuid, :pagination ,:locale, :extension
- end
- app.initialize!
- end
-
- def app
- APP
- end
-
- def response
- last_response
- end
-end
diff --git a/vendor/gems/routing-filter-0.2.3/test/test_helper.rb b/vendor/gems/routing-filter-0.2.3/test/test_helper.rb
deleted file mode 100644
index 2a0d9f71a..000000000
--- a/vendor/gems/routing-filter-0.2.3/test/test_helper.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-ENV['RAILS_ENV'] = 'test'
-
-require 'rubygems'
-require 'test/unit'
-require 'bundler/setup'
-
-require 'i18n'
-require 'action_pack'
-require 'active_support'
-require 'action_controller'
-require 'active_support/core_ext/enumerable.rb'
-require 'test_declarative'
-require 'routing_filter'
-
-include RoutingFilter
-
-class SomeController < ActionController::Base
-end
-
-class Test::Unit::TestCase
- def draw_routes(&block)
- normalized_block = rails_2? ? lambda { |set| set.instance_eval(&block) } : block
- klass = rails_2? ? ActionController::Routing::RouteSet : ActionDispatch::Routing::RouteSet
- klass.new.tap { |set| set.draw(&normalized_block) }
- end
-
- def rails_2?
- ActionPack::VERSION::MAJOR == 2
- end
-end
-
-if ActionPack::VERSION::MAJOR == 2
- ActionController::Routing::RouteSet::Mapper.class_eval do
- def match(pattern, options)
- pattern.gsub!('(.:format)', '.:format')
- controller, action = options.delete(:to).split('#')
- options.merge!(:controller => controller, :action => action)
- connect(pattern, options)
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/.document b/vendor/gems/rspec-1.3.1/.document
deleted file mode 100644
index c845fd37d..000000000
--- a/vendor/gems/rspec-1.3.1/.document
+++ /dev/null
@@ -1,7 +0,0 @@
-features/**/*.feature
-lib/**/*.rb
-History.rdoc
-License.txt
-README.rdoc
-Ruby1.9.rdoc
-Upgrade.rdoc
diff --git a/vendor/gems/rspec-1.3.1/.specification b/vendor/gems/rspec-1.3.1/.specification
deleted file mode 100644
index 3022d067d..000000000
--- a/vendor/gems/rspec-1.3.1/.specification
+++ /dev/null
@@ -1,574 +0,0 @@
---- !ruby/object:Gem::Specification
-name: rspec
-version: !ruby/object:Gem::Version
- hash: 25
- prerelease: false
- segments:
- - 1
- - 3
- - 1
- version: 1.3.1
-platform: ruby
-authors:
-- RSpec Development Team
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2010-10-09 00:00:00 +01:00
-default_executable:
-dependencies:
-- !ruby/object:Gem::Dependency
- name: rubyforge
- prerelease: false
- requirement: &id001 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 7
- segments:
- - 2
- - 0
- - 4
- version: 2.0.4
- type: :development
- version_requirements: *id001
-- !ruby/object:Gem::Dependency
- name: cucumber
- prerelease: false
- requirement: &id002 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 13
- segments:
- - 0
- - 3
- version: "0.3"
- type: :development
- version_requirements: *id002
-- !ruby/object:Gem::Dependency
- name: fakefs
- prerelease: false
- requirement: &id003 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 21
- segments:
- - 0
- - 2
- - 1
- version: 0.2.1
- type: :development
- version_requirements: *id003
-- !ruby/object:Gem::Dependency
- name: syntax
- prerelease: false
- requirement: &id004 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 15
- segments:
- - 1
- - 0
- version: "1.0"
- type: :development
- version_requirements: *id004
-- !ruby/object:Gem::Dependency
- name: diff-lcs
- prerelease: false
- requirement: &id005 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 23
- segments:
- - 1
- - 1
- - 2
- version: 1.1.2
- type: :development
- version_requirements: *id005
-- !ruby/object:Gem::Dependency
- name: heckle
- prerelease: false
- requirement: &id006 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 1
- segments:
- - 1
- - 4
- - 3
- version: 1.4.3
- type: :development
- version_requirements: *id006
-- !ruby/object:Gem::Dependency
- name: hoe
- prerelease: false
- requirement: &id007 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 19
- segments:
- - 2
- - 6
- - 2
- version: 2.6.2
- type: :development
- version_requirements: *id007
-description: Behaviour Driven Development for Ruby.
-email:
-- rspec-devel@rubyforge.org
-executables:
-- autospec
-- spec
-extensions: []
-
-extra_rdoc_files:
-- License.txt
-- Manifest.txt
-- TODO.txt
-- examples/failing/README.txt
-files:
-- .document
-- History.rdoc
-- License.txt
-- Manifest.txt
-- README.rdoc
-- Rakefile
-- Ruby1.9.rdoc
-- TODO.txt
-- Upgrade.rdoc
-- bin/autospec
-- bin/spec
-- cucumber.yml
-- examples/failing/README.txt
-- examples/failing/diffing_spec.rb
-- examples/failing/failing_implicit_docstrings_example.rb
-- examples/failing/failure_in_after.rb
-- examples/failing/failure_in_before.rb
-- examples/failing/mocking_example.rb
-- examples/failing/mocking_with_flexmock.rb
-- examples/failing/mocking_with_mocha.rb
-- examples/failing/mocking_with_rr.rb
-- examples/failing/partial_mock_example.rb
-- examples/failing/pending_example.rb
-- examples/failing/predicate_example.rb
-- examples/failing/raising_example.rb
-- examples/failing/syntax_error_example.rb
-- examples/failing/team_spec.rb
-- examples/failing/timeout_behaviour.rb
-- examples/passing/custom_formatter.rb
-- examples/passing/custom_matchers.rb
-- examples/passing/dynamic_spec.rb
-- examples/passing/file_accessor.rb
-- examples/passing/file_accessor_spec.rb
-- examples/passing/filtered_formatter.rb
-- examples/passing/filtered_formatter_example.rb
-- examples/passing/greeter_spec.rb
-- examples/passing/helper_method_example.rb
-- examples/passing/implicit_docstrings_example.rb
-- examples/passing/io_processor.rb
-- examples/passing/io_processor_spec.rb
-- examples/passing/mocking_example.rb
-- examples/passing/multi_threaded_example_group_runner.rb
-- examples/passing/nested_classes_example.rb
-- examples/passing/options_example.rb
-- examples/passing/options_formatter.rb
-- examples/passing/partial_mock_example.rb
-- examples/passing/pending_example.rb
-- examples/passing/predicate_example.rb
-- examples/passing/shared_example_group_example.rb
-- examples/passing/shared_stack_examples.rb
-- examples/passing/simple_matcher_example.rb
-- examples/passing/stack.rb
-- examples/passing/stack_spec.rb
-- examples/passing/stack_spec_with_nested_example_groups.rb
-- examples/passing/stubbing_example.rb
-- examples/passing/yielding_example.rb
-- examples/ruby1.9.compatibility/access_to_constants_spec.rb
-- features/before_and_after_blocks/before_and_after_blocks.feature
-- features/command_line/line_number_option.feature
-- features/command_line/line_number_option_with_example_with_no_name.feature
-- features/example_groups/define_example_attribute.feature
-- features/example_groups/example_group_with_should_methods.feature
-- features/example_groups/implicit_docstrings.feature
-- features/example_groups/nested_groups.feature
-- features/expectations/customized_message.feature
-- features/expectations/expect_change.feature
-- features/expectations/expect_error.feature
-- features/extensions/custom_example_group.feature
-- features/formatters/custom_formatter.feature
-- features/formatters/nested_formatter.feature
-- features/interop/cucumber_stubs_dont_leak.feature
-- features/interop/examples_and_tests_together.feature
-- features/interop/rspec_output.feature
-- features/interop/test_but_not_test_unit.feature
-- features/interop/test_case_with_should_methods.feature
-- features/load_paths/add_lib_to_load_path.feature
-- features/load_paths/add_spec_to_load_path.feature
-- features/matchers/define_diffable_matcher.feature
-- features/matchers/define_matcher.feature
-- features/matchers/define_matcher_outside_rspec.feature
-- features/matchers/define_matcher_with_fluent_interface.feature
-- features/matchers/define_wrapped_matcher.feature
-- features/matchers/match_unless_raises.feature
-- features/matchers/match_unless_raises_unexpected_error.feature
-- features/mock_framework_integration/use_flexmock.feature
-- features/mock_framework_integration/use_mocha.feature
-- features/mock_framework_integration/use_rr.feature
-- features/mocks/block_local_expectations.feature
-- features/mocks/mix_stubs_and_mocks.feature
-- features/mocks/stub_implementation.feature
-- features/pending/pending_examples.feature
-- features/runner/specify_line_number.feature
-- features/spec_helper/spec_helper.feature
-- features/step_definitions/running_rspec_steps.rb
-- features/step_definitions/stubbing_steps.rb
-- features/subject/explicit_subject.feature
-- features/subject/implicit_subject.feature
-- features/support/env.rb
-- features/support/matchers/smart_match.rb
-- geminstaller.yml
-- init.rb
-- lib/autotest/discover.rb
-- lib/autotest/rspec.rb
-- lib/spec.rb
-- lib/spec/adapters/mock_frameworks/flexmock.rb
-- lib/spec/adapters/mock_frameworks/mocha.rb
-- lib/spec/adapters/mock_frameworks/rr.rb
-- lib/spec/adapters/mock_frameworks/rspec.rb
-- lib/spec/autorun.rb
-- lib/spec/deprecation.rb
-- lib/spec/dsl.rb
-- lib/spec/dsl/main.rb
-- lib/spec/example.rb
-- lib/spec/example/args_and_options.rb
-- lib/spec/example/before_and_after_hooks.rb
-- lib/spec/example/errors.rb
-- lib/spec/example/example_group.rb
-- lib/spec/example/example_group_factory.rb
-- lib/spec/example/example_group_hierarchy.rb
-- lib/spec/example/example_group_methods.rb
-- lib/spec/example/example_group_proxy.rb
-- lib/spec/example/example_matcher.rb
-- lib/spec/example/example_methods.rb
-- lib/spec/example/example_proxy.rb
-- lib/spec/example/module_reopening_fix.rb
-- lib/spec/example/pending.rb
-- lib/spec/example/predicate_matchers.rb
-- lib/spec/example/shared_example_group.rb
-- lib/spec/example/subject.rb
-- lib/spec/expectations.rb
-- lib/spec/expectations/errors.rb
-- lib/spec/expectations/extensions.rb
-- lib/spec/expectations/extensions/kernel.rb
-- lib/spec/expectations/fail_with.rb
-- lib/spec/expectations/handler.rb
-- lib/spec/extensions/instance_exec.rb
-- lib/spec/interop/test.rb
-- lib/spec/interop/test/unit/autorunner.rb
-- lib/spec/interop/test/unit/testcase.rb
-- lib/spec/interop/test/unit/testresult.rb
-- lib/spec/interop/test/unit/testsuite_adapter.rb
-- lib/spec/interop/test/unit/ui/console/testrunner.rb
-- lib/spec/matchers.rb
-- lib/spec/matchers/be.rb
-- lib/spec/matchers/be_close.rb
-- lib/spec/matchers/be_instance_of.rb
-- lib/spec/matchers/be_kind_of.rb
-- lib/spec/matchers/change.rb
-- lib/spec/matchers/compatibility.rb
-- lib/spec/matchers/dsl.rb
-- lib/spec/matchers/eql.rb
-- lib/spec/matchers/equal.rb
-- lib/spec/matchers/errors.rb
-- lib/spec/matchers/exist.rb
-- lib/spec/matchers/generated_descriptions.rb
-- lib/spec/matchers/has.rb
-- lib/spec/matchers/have.rb
-- lib/spec/matchers/include.rb
-- lib/spec/matchers/match.rb
-- lib/spec/matchers/match_array.rb
-- lib/spec/matchers/matcher.rb
-- lib/spec/matchers/method_missing.rb
-- lib/spec/matchers/operator_matcher.rb
-- lib/spec/matchers/pretty.rb
-- lib/spec/matchers/raise_exception.rb
-- lib/spec/matchers/respond_to.rb
-- lib/spec/matchers/satisfy.rb
-- lib/spec/matchers/simple_matcher.rb
-- lib/spec/matchers/throw_symbol.rb
-- lib/spec/matchers/wrap_expectation.rb
-- lib/spec/mocks.rb
-- lib/spec/mocks/argument_expectation.rb
-- lib/spec/mocks/argument_matchers.rb
-- lib/spec/mocks/error_generator.rb
-- lib/spec/mocks/errors.rb
-- lib/spec/mocks/example_methods.rb
-- lib/spec/mocks/extensions.rb
-- lib/spec/mocks/extensions/object.rb
-- lib/spec/mocks/framework.rb
-- lib/spec/mocks/message_expectation.rb
-- lib/spec/mocks/methods.rb
-- lib/spec/mocks/mock.rb
-- lib/spec/mocks/order_group.rb
-- lib/spec/mocks/proxy.rb
-- lib/spec/mocks/space.rb
-- lib/spec/rake/spectask.rb
-- lib/spec/rake/verify_rcov.rb
-- lib/spec/ruby.rb
-- lib/spec/runner.rb
-- lib/spec/runner/backtrace_tweaker.rb
-- lib/spec/runner/class_and_arguments_parser.rb
-- lib/spec/runner/command_line.rb
-- lib/spec/runner/configuration.rb
-- lib/spec/runner/differs/default.rb
-- lib/spec/runner/differs/load-diff-lcs.rb
-- lib/spec/runner/drb_command_line.rb
-- lib/spec/runner/example_group_runner.rb
-- lib/spec/runner/extensions/kernel.rb
-- lib/spec/runner/formatter/base_formatter.rb
-- lib/spec/runner/formatter/base_text_formatter.rb
-- lib/spec/runner/formatter/failing_example_groups_formatter.rb
-- lib/spec/runner/formatter/failing_examples_formatter.rb
-- lib/spec/runner/formatter/html_formatter.rb
-- lib/spec/runner/formatter/nested_text_formatter.rb
-- lib/spec/runner/formatter/no_op_method_missing.rb
-- lib/spec/runner/formatter/profile_formatter.rb
-- lib/spec/runner/formatter/progress_bar_formatter.rb
-- lib/spec/runner/formatter/silent_formatter.rb
-- lib/spec/runner/formatter/snippet_extractor.rb
-- lib/spec/runner/formatter/specdoc_formatter.rb
-- lib/spec/runner/formatter/text_mate_formatter.rb
-- lib/spec/runner/heckle_runner.rb
-- lib/spec/runner/heckle_runner_unsupported.rb
-- lib/spec/runner/line_number_query.rb
-- lib/spec/runner/option_parser.rb
-- lib/spec/runner/options.rb
-- lib/spec/runner/reporter.rb
-- lib/spec/stubs/cucumber.rb
-- lib/spec/test/unit.rb
-- lib/spec/version.rb
-- resources/helpers/cmdline.rb
-- resources/rake/examples.rake
-- resources/rake/examples_with_rcov.rake
-- resources/rake/failing_examples_with_html.rake
-- resources/rake/verify_rcov.rake
-- spec/README.jruby
-- spec/autotest/autotest_helper.rb
-- spec/autotest/autotest_matchers.rb
-- spec/autotest/discover_spec.rb
-- spec/autotest/failed_results_re_spec.rb
-- spec/autotest/rspec_spec.rb
-- spec/ruby_forker.rb
-- spec/spec.opts
-- spec/spec/dsl/main_spec.rb
-- spec/spec/example/example_group_class_definition_spec.rb
-- spec/spec/example/example_group_factory_spec.rb
-- spec/spec/example/example_group_methods_spec.rb
-- spec/spec/example/example_group_proxy_spec.rb
-- spec/spec/example/example_group_spec.rb
-- spec/spec/example/example_matcher_spec.rb
-- spec/spec/example/example_methods_spec.rb
-- spec/spec/example/example_proxy_spec.rb
-- spec/spec/example/helper_method_spec.rb
-- spec/spec/example/nested_example_group_spec.rb
-- spec/spec/example/pending_module_spec.rb
-- spec/spec/example/predicate_matcher_spec.rb
-- spec/spec/example/shared_example_group_spec.rb
-- spec/spec/example/subclassing_example_group_spec.rb
-- spec/spec/example/subject_spec.rb
-- spec/spec/expectations/differs/default_spec.rb
-- spec/spec/expectations/extensions/kernel_spec.rb
-- spec/spec/expectations/fail_with_spec.rb
-- spec/spec/expectations/handler_spec.rb
-- spec/spec/expectations/wrap_expectation_spec.rb
-- spec/spec/interop/test/unit/resources/spec_that_fails.rb
-- spec/spec/interop/test/unit/resources/spec_that_passes.rb
-- spec/spec/interop/test/unit/resources/spec_with_errors.rb
-- spec/spec/interop/test/unit/resources/spec_with_options_hash.rb
-- spec/spec/interop/test/unit/resources/test_case_that_fails.rb
-- spec/spec/interop/test/unit/resources/test_case_that_passes.rb
-- spec/spec/interop/test/unit/resources/test_case_with_errors.rb
-- spec/spec/interop/test/unit/resources/test_case_with_various_names.rb
-- spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb
-- spec/spec/interop/test/unit/spec_spec.rb
-- spec/spec/interop/test/unit/test_unit_spec_helper.rb
-- spec/spec/interop/test/unit/testcase_spec.rb
-- spec/spec/interop/test/unit/testsuite_adapter_spec.rb
-- spec/spec/matchers/be_close_spec.rb
-- spec/spec/matchers/be_instance_of_spec.rb
-- spec/spec/matchers/be_kind_of_spec.rb
-- spec/spec/matchers/be_spec.rb
-- spec/spec/matchers/change_spec.rb
-- spec/spec/matchers/compatibility_spec.rb
-- spec/spec/matchers/description_generation_spec.rb
-- spec/spec/matchers/dsl_spec.rb
-- spec/spec/matchers/eql_spec.rb
-- spec/spec/matchers/equal_spec.rb
-- spec/spec/matchers/exist_spec.rb
-- spec/spec/matchers/has_spec.rb
-- spec/spec/matchers/have_spec.rb
-- spec/spec/matchers/include_spec.rb
-- spec/spec/matchers/match_array_spec.rb
-- spec/spec/matchers/match_spec.rb
-- spec/spec/matchers/matcher_spec.rb
-- spec/spec/matchers/matchers_spec.rb
-- spec/spec/matchers/operator_matcher_spec.rb
-- spec/spec/matchers/raise_exception_spec.rb
-- spec/spec/matchers/respond_to_spec.rb
-- spec/spec/matchers/satisfy_spec.rb
-- spec/spec/matchers/simple_matcher_spec.rb
-- spec/spec/matchers/throw_symbol_spec.rb
-- spec/spec/mocks/and_yield_spec.rb
-- spec/spec/mocks/any_number_of_times_spec.rb
-- spec/spec/mocks/argument_expectation_spec.rb
-- spec/spec/mocks/argument_matchers_spec.rb
-- spec/spec/mocks/at_least_spec.rb
-- spec/spec/mocks/at_most_spec.rb
-- spec/spec/mocks/bug_report_10260_spec.rb
-- spec/spec/mocks/bug_report_10263_spec.rb
-- spec/spec/mocks/bug_report_11545_spec.rb
-- spec/spec/mocks/bug_report_15719_spec.rb
-- spec/spec/mocks/bug_report_496_spec.rb
-- spec/spec/mocks/bug_report_600_spec.rb
-- spec/spec/mocks/bug_report_7611_spec.rb
-- spec/spec/mocks/bug_report_7805_spec.rb
-- spec/spec/mocks/bug_report_8165_spec.rb
-- spec/spec/mocks/bug_report_8302_spec.rb
-- spec/spec/mocks/bug_report_830_spec.rb
-- spec/spec/mocks/double_spec.rb
-- spec/spec/mocks/failing_argument_matchers_spec.rb
-- spec/spec/mocks/hash_including_matcher_spec.rb
-- spec/spec/mocks/hash_not_including_matcher_spec.rb
-- spec/spec/mocks/mock_ordering_spec.rb
-- spec/spec/mocks/mock_space_spec.rb
-- spec/spec/mocks/mock_spec.rb
-- spec/spec/mocks/multiple_return_value_spec.rb
-- spec/spec/mocks/nil_expectation_warning_spec.rb
-- spec/spec/mocks/null_object_mock_spec.rb
-- spec/spec/mocks/once_counts_spec.rb
-- spec/spec/mocks/options_hash_spec.rb
-- spec/spec/mocks/partial_mock_spec.rb
-- spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb
-- spec/spec/mocks/passing_argument_matchers_spec.rb
-- spec/spec/mocks/precise_counts_spec.rb
-- spec/spec/mocks/record_messages_spec.rb
-- spec/spec/mocks/stub_chain_spec.rb
-- spec/spec/mocks/stub_implementation_spec.rb
-- spec/spec/mocks/stub_spec.rb
-- spec/spec/mocks/stubbed_message_expectations_spec.rb
-- spec/spec/mocks/twice_counts_spec.rb
-- spec/spec/mocks/unstub_spec.rb
-- spec/spec/package/bin_spec_spec.rb
-- spec/spec/rake/spectask_spec.rb
-- spec/spec/runner/class_and_argument_parser_spec.rb
-- spec/spec/runner/command_line_spec.rb
-- spec/spec/runner/configuration_spec.rb
-- spec/spec/runner/drb_command_line_spec.rb
-- spec/spec/runner/empty_file.txt
-- spec/spec/runner/example_group_runner_spec.rb
-- spec/spec/runner/examples.txt
-- spec/spec/runner/failed.txt
-- spec/spec/runner/formatter/base_formatter_spec.rb
-- spec/spec/runner/formatter/base_text_formatter_spec.rb
-- spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb
-- spec/spec/runner/formatter/failing_examples_formatter_spec.rb
-- spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html
-- spec/spec/runner/formatter/html_formatted-1.8.6.html
-- spec/spec/runner/formatter/html_formatted-1.8.7.html
-- spec/spec/runner/formatter/html_formatted-1.9.1.html
-- spec/spec/runner/formatter/html_formatter_spec.rb
-- spec/spec/runner/formatter/nested_text_formatter_spec.rb
-- spec/spec/runner/formatter/profile_formatter_spec.rb
-- spec/spec/runner/formatter/progress_bar_formatter_spec.rb
-- spec/spec/runner/formatter/snippet_extractor_spec.rb
-- spec/spec/runner/formatter/specdoc_formatter_spec.rb
-- spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html
-- spec/spec/runner/formatter/text_mate_formatted-1.8.6.html
-- spec/spec/runner/formatter/text_mate_formatted-1.8.7.html
-- spec/spec/runner/formatter/text_mate_formatted-1.9.1.html
-- spec/spec/runner/formatter/text_mate_formatter_spec.rb
-- spec/spec/runner/heckle_runner_spec.rb
-- spec/spec/runner/heckler_spec.rb
-- spec/spec/runner/line_number_query/line_number_query_fixture.rb
-- spec/spec/runner/line_number_query_spec.rb
-- spec/spec/runner/noisy_backtrace_tweaker_spec.rb
-- spec/spec/runner/option_parser_spec.rb
-- spec/spec/runner/options_spec.rb
-- spec/spec/runner/output_one_time_fixture.rb
-- spec/spec/runner/output_one_time_fixture_runner.rb
-- spec/spec/runner/output_one_time_spec.rb
-- spec/spec/runner/quiet_backtrace_tweaker_spec.rb
-- spec/spec/runner/reporter_spec.rb
-- spec/spec/runner/resources/a_bar.rb
-- spec/spec/runner/resources/a_foo.rb
-- spec/spec/runner/resources/a_spec.rb
-- spec/spec/runner/resources/custom_example_group_runner.rb
-- spec/spec/runner/resources/utf8_encoded.rb
-- spec/spec/runner/spec.opts
-- spec/spec/runner/spec_drb.opts
-- spec/spec/runner/spec_spaced.opts
-- spec/spec/runner_spec.rb
-- spec/spec_helper.rb
-- spec/support/macros.rb
-- spec/support/spec_classes.rb
-has_rdoc: true
-homepage: http://rspec.info
-licenses: []
-
-post_install_message: |
- **************************************************
-
- Thank you for installing rspec-1.3.1
-
- Please be sure to read History.rdoc and Upgrade.rdoc
- for useful information about this release.
-
- **************************************************
-
-rdoc_options:
-- --main
-- README.rdoc
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: rspec
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: rspec 1.3.1
-test_files: []
-
diff --git a/vendor/gems/rspec-1.3.1/History.rdoc b/vendor/gems/rspec-1.3.1/History.rdoc
deleted file mode 100644
index 380ac7f18..000000000
--- a/vendor/gems/rspec-1.3.1/History.rdoc
+++ /dev/null
@@ -1,1546 +0,0 @@
-=== Version 1.3.1 / 2010-10-09
-
-* enhancements
- * Array =~ matcher works with subclasses of Array (Matthew Peychich & Pat Maddox)
- * config.suppress_deprecation_warnings!
-
-* bug fixes
- * QuitBacktraceTweaker no longer eats all paths with 'lib'
- (Tim Harper - #912)
- * Fix delegation of stubbed values on superclass class-level methods.
- (Scott Taylor - #496 - #957)
- * Fix pending to work with ruby-1.9
-
-* deprecations
- * share_as (will be removed from rspec-core-2.0)
- * simple_matcher (will be removed from rspec-core-2.0)
-
-=== Version 1.3.0 / 2010-01-11
-
-* enhancements
- * capture ExpectationNotMet error by default in matcher DSL
- * supports wrapping other expectations
- * added match_unless_raises to matcher DSL
- * supports easy wrapping of t/u assertions in matchers
- * thanks to Chad Fowler and Glenn Vanderburg for the name
- * add chain to matcher DSL (Joe Ferris - #935)
- * see rdoc for Spec::Matchers
- * and_yield provides configurable eval_context
- * Eric Meyer & David Chelimsky
- * CTRL-C actually stops execution! (Bryan Helmkamp - #911)
- * make drb port configurable (Chris Flipse - #875)
- * changed raise_error to raise_exception (#933)
- * kept raise_error aliased, so this is completely
- backwards compatible
-
-* bug fixes
- * don't define top-level context() method when running in IRB (#899)
- * remove Ruby warning for uninitialized ivar (Bryan Helmkamp - #892)
- * fully qualify reference to Default (Alex Sharp - #895)
- * use runtime version of Test::Unit::VERSION in incompatibility message
- (Ryan Bigg - #916)
- * quote paths in RSpec's own specs so people running in paths with
- spaces in them can achieve green too (Ryan Bigg - #917)
- * ensure drb specs run when EADDRNOTAVAIL (Michael Klett - #881)
- * throw_symbol matcher correctly bubbles errors up (#918)
- * make Rakefile work without Cucumber installed (#919 - devrandom)
- * escape . in regexp (#925)
- * align be_true and be_false with Ruby's conditional semantics (#931)
- * print duplicate nested descriptions (when appropriate) (#936)
-
-=== Version 1.2.9 / 2009-10-05
-
-* enhancements
- * manage backtrace-ignore patterns with Spec::Runner.configure (Martin
- Emde). Closes #870.
- * friendly mock argument expectation failure message (Tim Harper). Closes
- #868.
- * added double() as alias for stub() and mock()
- * failure messages for doubles, mocks and stubs use the right name
- * add let() method to assign memoized attributes (suggestion from Stuart
- Halloway). Closes #857.
- * add its method so you can say:
- describe Array do
- its(:length) { should == 0 }
- (Stephen Touset). Closes #833
- * spec command automatically uses spec/spec.opts if it is present
- (suggestion from Yehuda Katz)
- * rspec now adds PROJECT_ROOT/lib and PROJECT_ROOT/spec to the load path
- * determines PROJECT_ROOT by recursing up until it finds a directory
- that has a ./spec directory (thanks to Scott Taylor)
- * supports require 'spec_helper'
- * supports running specs from the PROJECT_ROOT or any directory
- below it
- * closes #733
- * better handling of determining test names in test/unit/interop mode
- * Joe Ferris
- * closes #854
-
-* bug fixes
-
- * Fixed problem with colorized output when writing to a file
- * Corey Ehmke
- * closes #777
-
-* not really a bug fix or enhancement
- * temporarily moved heckle feature to features-pending (waiting to see what
- happens with
- http://rubyforge.org/tracker/index.php?func=detail&aid=26786&group_id=1513&atid=5921)
-
-=== Version 1.2.8 / 2009-07-16
-
-* enhancements
- * better messages for should[_not] be_nil (Chad Humphries and Rob Sanheim)
- * should and should_not accept optional custom message
- (suggestion from Rob Sanheim)
- * result.should be_nil, "expected result to be nil"
- * added 'spec/stubs/cucumber' to plug RSpec's stubbing framework into
- Cucumber scenarios.
- * added unstub method to remove a stub mid-example (Scott Taylor). Closes
- #853.
- * add more readable diff when expected and actual are hashes (Ryan Bigg).
- Closes #848.
-
-* bug fixes
- * fixed --line option for ruby 1.9.1
- * fix stub_chain conflict between two chains starting with the same message
- (Mike Rohland). Closes #846.
-
-=== Version 1.2.7 / 2009-06-22
-
-* enhancments
- * added support for fakes using obj.stub(:method) { # implementation }
- * allow subject { self } (Jarmo Pertman). Closes #816.
- * friendly error message when a matcher returns nil on a failure message
- * add ruby_cmd option to SpecTask (Rick DeNatale). Closes #823.
- * also added missing specs for SpecTask - thanks Rick!
- * add support for generating matchers with fluent interfaces with the
- Matcher DSL
-
-* bug fixes
- * NegativeOperatorMatcher now returns false (Wesley Beary). Closes #812.
- * derive MockExpectationError from Exception rather than StandardError
- (Kerry Buckley). Closes #830.
- * fix bug where multi-line failure messages weren't getting picked up by
- autotest (Jarmo Pertman). Closes #832.
- * --line_number now works for it { should xxx } format (assist from Fred
- Lee)
- * warn instead of raise when there is no description supplied for an
- example. Closes #840.
-
-=== Version 1.2.6 / 2009-04-30
-
-* bug fixes
- * gem actually built with spec executable
-
-=== Version 1.2.5 / 2009-04-29
-
-* enhancements
-
- * name argument to mock/stub is now optional (closes #782)
- * you can do mock(:foo => "woo", :bar => "car")
- * expect { this_block }.to change{this.expression}.from(old_value).to(new_value)
- * expect { this_block }.to raise_error
- * better failiure messages for equal matcher (James Byrne). Closes #804.
- * add stub_chain method
- * also alias_method :stub, :stub!, so you can stub with less bang
- * added options to example_group_proxy
-
-* bug fixes
-
- * ensure correct handling of ordered message expectations with duplicate
- expectations (NigelThorne). Closes #793.
- * get matcher backwards compat working w/ ruby 19
- * don't define instance_exec unless it is not defined
- * was doing a version check, but turns out that didn't cover alternative
- implementations like JRuby
- * fix bug where in some circumstances, loading lib/spec/interop/test.rb
- raised an error (tsechingho). Closes #803.
- * make sure specs only run against spec server when using drb (patch from Chuck Grindel). Closes #797.
- * remove deprecation warning in example_pending when using FailingExamplesFormatter. Closes #794.
- * Access explicit subject from nested groups of arbitrary depth. Closes #756.
-
-=== Version 1.2.4 / 2009-04-13
-
-* bug fix
-
- * just one - update the manifest
-
-=== Version 1.2.3 / 2009-04-13
-
-* deprecations
-
- * BaseFormatter#add_example_group (use #example_group_started instead)
- * ExampleGroupProxy#backtrace (use #location instead)
- * ExampleProxy#backtrace (use #location instead)
- * BaseFormatter#example_pending now expects two arguments. The third
- argument is deprecated.
- * ExampleGroupProxy#filtered_description. This was only used in one place
- internally, and was a confusing solution to the problem. If you've got a
- custom formatter that uses it, you can just use
- ExampleGroupProxy#description and modify it directly.
- * predicate_matchers (use the new Matcher DSL instead)
- * Spec::Matchers.create (use Spec::Matchers.define instead)
-
-* enhancements
-
- * support for specifying single examples with colon syntax. Closes #712.
- (Ben Mabey)
- * you can now say "spec some_spec.rb:12" in addition to "spec some_spec.rb
- --line 12"
- * run specs locally with --drb if no drb server is running. Closes #780.
- * still prints "No server running" to stderr
-
-* bug fixes
-
- * support expectations on DelegateClass (Clifford T. Matthews). Closes #48.
- * Fixed match_array blows up if elements can't be sorted (Jeff Dean). Closes #779.
-
-=== Version 1.2.2 / 2009-03-22
-
-Bug-fix release (fixes regression introduced in 1.2.1)
-
-* bug fixes
-
- * fixed bug in which spec_parser raised an error for custom example group
- base classes
-
-=== Version 1.2.1 / 2009-03-22
-
-This is a bug-fix release, recommended for anybody who has already upgraded to
-rspec-1.2.0.
-
-See Upgrade.rdoc for information about upgrading to rspec-1.2.1
-
-* enhancements
-
- * matchers, including the new DSL, easily added to your test/unit tests
- * added support for 0 to n args in matcher DSL
- * restored loading rubygems when necessary
- * if you really don't want to use rubygems, you
- can set an NO_RUBYGEMS environment
- variable, and RSpec won't force it on you.
- * added -u/--debugger option (Rick DeNatale) #262.
- * just add "debugger" anywhere in your code and run spec path/to/code --debugger
- * rename ExampleDescription to ExampleProxy
- * pass ExampleProxy to example_started(). Closes #738, #743
- * thanks to Tobias Grimm (Eclipse) fort the patch and Roman Chernyatchik
- (JetBrains, RubyMine) for the assist
-
-* bug fixes
-
- * subject (implicit or explicit) is now properly inherited by nested groups. Closes #744.
-
-=== Version 1.2.0 / 2009-03-15
-
-* warnings:
-
- * If you use the ruby command to run specs instead of the spec command, you'll
- need to require 'spec/autorun' or they won't run. This won't affect you if
- you use the spec command or the Spec::Rake::SpecTask that ships with RSpec.
-
- * require 'spec/test/unit' to invoke test/unit interop if you're using
- RSpec's core (this is handled implicitly with spec-rails)
-
- * setup and teardown are gone - use before and after instead
-
- * you can still use setup and teardown if you're using
- Test::Unit::TestCase as the base ExampleGroup class (which is implicit
- in rspec-rails)
-
- * The matcher protocol has been improved. The old protocol is still
- supported, so as long as you're not monkey patching rspec's built-in
- matchers, or using extension libraries that do, this should not affect
- you. If you run into trouble, you'll just need to change:
-
- failure_message => failure_message_for_should
- negative_failure_message => failure_message_for_should_not
-
- * All references to rubygems have been removed from within rspec's code.
-
- * NOTE that they have been restored in 1.2.1, above
-
- * See http://gist.github.com/54177 for rationale and suggestions on
- alternative approaches to loading rubygems
-
-* deprecations
-
- * BaseTextFormatter#colourize - use colorize_failure instead.
- * BaseTextFormatter#magenta - use red instead.
-
-* enhancements
-
- * cleaner integration with with heckle-1.4.2
- * allow registering example groups with a path-like key (Pat Maddox)
- * start DRb service at "druby://localhost:0" (Hongli Lai) - See http://redmine.ruby-lang.org/issues/show/496
- * consistent reporting of errors as failures
- * added spec/test/unit as more intuitive path to loading test/unit interop lib
- * added explicit autorun feature for running specs with ruby command
- * added handling for does_not_match? for matchers that want to know the context in which they were called
- * lots of ruby 1.9.1 compatibility fixes from Chad Humprhies
- * improved feedback from be_kind_of/be_a_kind_of/be_instance_of/be_an_instance_of (Jakub Šťastný)
- * added --format silent (l) option, which is now the default when running --heckle (Bob Aman)
- * sexy new custom matcher creation (Corey Haines & David Chelimsky - initial concept by Yehuda Katz)
- * improved matcher protocol - old one is still supported, but new one is cleaner and prefered
-
-* bug fixes
-
- * support delegating operator matchers to subject with should_not
- * all arguments are included if --drb is specified in spec.opts (Neil Buckley). Closes #671.
- * added --autospec option hack (used internally) to get --color to work when using --drb and autospec.
- * Fixed mock framework failure message bug in which similar calls were excluded from the output
- * cryptic error message on change.rb when the from value is wrong (Michael Murray). Closes #706.
-
-=== Version 1.1.12 / 2009-01-11
-
-WARNING: there was a stub/mock bug in 1.1.11 that allowed a structure that was
-not intended:
-
- obj.stub!(:msg)
- obj.msg
- obj.should_receive(:msg)
-
-That would pass in 1.1.11, but should not have been allowed to, since the
-message is received before the expectation is set. This was reported (#637)
-and fixed for release 1.1.12, but may cause unexpected failures if you had
-examples set up as above.
-
-WARNING: mock.should_receive(:msg).with(an_instance_of(klass)) now correctly uses instance_of? instead of kind_of?. This may break some existing code examples, but the fix is to just use kind_of instead of an_instance_of
-
-* 3 deprecations
-
- * deprecated ExampleMethods#implementation_backtrace - use ExampleMethods#backtrace instead
- * deprecated ExampleGroupMethods#example_group_backtrace - use ExampleGroupMethods#backtrace instead
- * deprecated Spec::Example::BehaviourRunner class (likely that nobody is using this)
-
-* 6 major enhancements
-
- * it { should matcher } - support for implicit receiver of #should (Joe Ferris of thoughtbot)
- * subject { ... } - works in conjunction with implicit receiver of #should
- * wrap_expectation (for wrapping multiple expectations and/or t/u assertions)
- * added array.should =~ [1,2,3] # passes if array contains exactly the same elements in any order (Jeff Dean and Pat Maddox)
- * hash_including mock argument matcher can now accept just keys, key/value pairs, or both (David Krmpotic)
- * added hash_not_including mock argument matcher (David Krmpotic). Closes #634.
-
-* 9 minor enhancements
-
- * should throw_symbol accepts an optional argument: should throw_symbol(:sym, arg)
- * fixed --line for jruby (Zach Moazeni)
- * assorted small changes to support Ruby 1.9 (got a way to go)
- * removed all instances of class << self - I do know who I am
- * SpecParser can't handle backtrace paths with colons (John-Mason P. Shackelford). Closes #505.
- * html formatter (and subsequently the textmate formatter) header fills in completely when running a single example
- * config.include now accepts an array of types (config.include(Helpers, :type => [:view, :controller]))
- * added be_a and be_an expectation matchers
- * added instance_of and kind_of mock argument matchers
-
-* 9 bug fixes
-
- * fixed bug where {:a => 1, :b => 2}.should include(:a, :b) failed (Yossef Mendelssohn)
- * only try to load Test::Unit if Test::Unit is defined (not just Test)
- * Allow stubs on parent and child classes simultaneously (Jim Lindley). Fixes #600.
- * BaseTextFormatter will now create the directory in a WHERE string (Adam Anderson). Fixes #616.
- * Removed incorrect -S flag on autospec commands. Added explicit spec command for ruby to run, guarantee running rspec (raggi). Closes #507.
- * Check whether test/unit has really been loaded before calling a method it defines (Brian Donovan). Closes #503.
- * Fix spec_path for shared groups (Zach Dennis). Closes #615.
- * stubbed message expectation not verified if it has been called *before* the expectation (Matthias Hennemeyer). Closes #637.
- * stubs calculate return value by executing block passed to #and_return (hint from Aisha Fenton). Closes #642.
-
-=== Version 1.1.11 / 2008-10-24
-
-* 1 major enhancement
-
- * eliminate ALL gem dependencies (as they were causing trouble for people on different platforms/environments)
-
-=== Version 1.1.10 / 2008-10-24
-
-* 1 minor enhancement
-
- * hash.should include(:key => 'value') #when you don't care about the whole hash
-
-* 2 bug fixes
-
- * fix --help output (had inaccurate info about 'nested' formatter)
- * eliminate spicycode-rcov dev dependency for rubygems < 1.3
-
-=== Version 1.1.9 / 2008-10-20
-
-WARNING: This release removes implicit inclusion of modules in example groups.
-This means that if you have 'describe MyModule do', MyModule will not be
-included in the group.
-
-* 2 major enhancements
-
- * Add extend to configuration (thanks to advice from Chad Fowler)
- * Modules are no longer implicitly included in example groups
-
-* 4 minor enhancements
-
- * mingw indicates windows too (thanks to Luis Lavena for the tip)
- * improved output for partial mock expecation failures
- * it_should_behave_like now accepts n names of shared groups
- * eliminated redundant inclusion/extension of ExampleGroupMethods
-
-* 6 bug fixes
-
- * spec command with no arguments prints help
- * fixed typo in help. Fixes #73.
- * fixed bug where should_receive..and_yield after similar stub added the args_to_yield to the stub's original args_to_yield (Pat Maddox)
- * fixed bug where rspec-autotest (autospec) was loading non-spec files in spec directory. Fixes #559.
- * fixed bug where should_not_receive was reporting twice
- * fixed bug where rspec tries to run examples just because it is required (even if there are no examples loaded). Fixes #575.
-
-=== Version 1.1.8 / 2008-10-03
-
-* 2 bug fixes
-
- * restore colorized output in linux and windows w/ autotest (Tim Pope). Fixes #413.
- * autospec no longer hangs on windows. Fixes #554.
-
-=== Version 1.1.7 / 2008-10-02
-
-* no changes since 1.1.6, but releasing rspec-1.1.7 to align versions with rspec-rails-1.1.7
-
-=== Version 1.1.6 / 2008-10-02
-
-* 2 bug fixes
-
- * fixed bug where negative message expectations following stubs resulted in false (negative) positives (Mathias Meyer). Closes #548.
- * fixed bug where Not Yet Implemented examples report incorrect caller (Scott Taylor). Closes #547.
-
-* 1 minor enhancement
-
- * removed deprecated mock argument constraint symbols
-
-=== Version 1.1.5 / 2008-09-28
-
-IMPORTANT: use the new 'autospec' command instead of 'autotest'. We changed
-the way autotest discovers rspec so the autotest executable won't
-automatically load rspec anymore. This allows rspec to live side by side other
-spec frameworks without always co-opting autotest through autotest's discovery
-mechanism.
-
-ALSO IMPORTANT: $rspec_options is gone. If you were using this for anything
-(like your own runners), use Spec::Runner.options instead.
-
-ADDITIONALLY IMPORTANT: If you have any custom formatters, you'll need to
-modify #example_pending to accept three arguments instead of just two. See the
-rdoc for Spec::Runner::Formatter::BaseFormatter#example_pending for more
-information.
-
-* Consider MinGW as valid RUBY_PLATFORM for --colour option. (patch from Luis Lavena). Closes #406.
-* Added additional characters to be escaped in step strings (patch from Jake Cahoon). Closes #417.
-* Disable color codes on STDOUT when STDOUT.tty? is false (patch from Tim Pope). Closes #413.
-* mock(:null_object=>true) plays nice with HTML (patch from Gerrit Kaiser). Closes #230.
-* a step definition with no block is treated as pending
-* make sure consolidate_failures only grabs _spec files. Closes #369
-* Simplifying ExampleGroupMethods#registration_backtrace. (From Wilson Bilkovich - http://metaclass.org/2008/6/7/calling-in-the-dark)
-* Use 127.0.0.1 instead of localhost for drb (thanks Ola Bini)
-* html story formatter correctly colors story/scenario red if step fails (Patch from Joseph Wilk). Closes #300
-* plain text story formatter correctly colors story/scenario red if step fails (Patch from Joseph Wilk). Closes #439
-* quiet deprecation warning on inflector - patch from RSL. Closes #430
-* added autospec executable
-* added configurable messages to simple_matcher
-* should and should_not return true on success
-* use hoe for build/release
-* bye, bye translator
-* autotest/rspec uses ruby command instead of spec command (no need for spec command unless loading directories)
-* Avoid 'invalid option -O' in autotest (patch from Jonathan del Strother). Closes #486.
-* Fix: Unimplemented step with new line throws error (patch from Ben Mabey). Closes #494.
-* Only use color codes on tty; override for autospec (patch from Tim Pope). Closes #413.
-* Warn when setting mock expectations on nil (patch from Ben Mabey). Closes #521.
-* Support argument constraints as values in the hash_including contstraint. Thanks to Pirkka Hartikainen for failing code examples and the fix. Buttons up #501.
-* mock(:null_object=>true) plays nice with HTML (patch from Gerrit Kaiser)
-* Consider MinGW as valid RUBY_PLATFORM for --colour option. (patch from Luis Lavena). Closes #406.
-* Add 2nd arg to respond_to? to align w/ core Ruby rdoc: http://www.ruby-doc.org/core/classes/Object.html#M000604
-* quiet backtrace tweaker filters individual lines out of multiline (ala Rails) error messages (Pat Maddox)
-* added ability to stub multiple methods in one stub! call (Pat Maddox)
-* story progress bar formatter and more colourful summaries from the plain text story formatter (Joseph Wilk)
-* Avoid ruby invocation errors when autotesting (Jonathan del Strother)
-* added mock('foo').as_null_object
-* add file and line number to pending_example for formatters (Scott Taylor)
-* return last stubbed value for mock expectation with no explicit return (Pat Maddox)
-* Fixed bug when should_receive(:foo).any_number_of_times is called after similar stub (Pat Maddox)
-* Warning messages now issued when expectations are set on nil (Ben Mabey)
-
-=== Version 1.1.4
-
-Maintenance release.
-
-Note: we've removed the metaclass method from Object. There were some
-generated specs that used it, and they will now break. Just replace the
-metaclass call with (class << self; self; end) and all will be well.
-
-* added hash_including mock argument matcher. Closes #332 (patch from Rick DeNatale)
-* pending steps print out yellow in stories (patch from Kyle Hargraves)
-* Deprecation warnings for specs that assume auto-inclusion of modules. Closes #326 (patch from Scott Taylor)
-* mock.should_not_receive(:anything) fails fast (once again)
-* Patch from Antti Tarvainen to stop files from being loaded repeatedly when running heckle. Closes #333.
-* Fixed bug in which session object in example was not the same instance used in the controller. Closes #331.
-* Applied patch from Antti Tarvainen to fix bug where heckle runs rspec runs heckle runs rspec etc. Closes #280.
-* Applied patch from Zach Dennis to merge :steps functionality to :steps_for. Closes #324.
-* Applied patch from Ryan Davis to add eval of block passed to raise_error matcher. Closes #321.
-* alias :context :describe in example_group_methods. Closes #312.
-* Applied patch from Ben Mabey to make the Story runner exit with a non-0 exit code on failing stories. Closes #228.
-* Applied patch from Coda Hale to get the :red hook called in autotest. Closes #279.
-* Applied patch from Patrick Ritchie to support --drb in spec.opts. Closes #274, #293.
-* Moved metaclass method from Object to an internal module which gets included where it is needed.
-* Applied patch from Dayo Esho: and_yield clobbers return value from block. Closes #217.
-* Applied patch from Bob Cotton: ExampleGroupFactory.default resets previously registered types. Closes #222.
-* Applied patch from Mike Williams to support the lib directory in rails apps with the Textmate Alternate File command. Closes #276.
-* ExampleGroupMethods#xspecify aliases #xit
-* A SharedExampleGroup can be created within another ExampleGroup.
-* Applied patch from Bob Cotton: Nested ExampleGroups do not have a spec_path. Closes #224.
-* Add before_suite and after_suite callbacks to ExampleGroupMethods and Options. Closes #210.
-* The after(:suite) callback lambda is passed a boolean representing whether the suite passed or failed
-* Added NestedTextFormatter. Closes #366.
-* decoupled mock framework from global extensions used by rspec - supports use of flexmock or mocha w/ rails
-* Applied patch from Roman Chernyatchik to allow the user to pass in the ruby version into spectask. Closes #325, #370
-
-=== Version 1.1.3
-
-Maintenance release.
-Notice to autotest users: you must also upgrade to ZenTest-3.9.0.
-
-* Tightened up exceptions list in autotest/rails_spec. Closes #264.
-* Applied patch from Ryan Davis for ZenTest-3.9.0 compatibility
-* Applied patch from Kero to add step_upcoming to story listeners. Closes #253.
-* Fixed bug where the wrong named error was not always caught by "should raise_error"
-* Applied patch from Luis Lavena: No coloured output on Windows due missing RUBYOPT. Closes #244.
-* Applied patch from Craig Demyanovich to add support for "should_not render_template" to rspec_on_rails. Closes #241.
-* Added --pattern (-p for short) option to control what files get loaded. Defaults to '**/*_spec.rb'
-* Exit with non-0 exit code if examples *or tests* (in test/unit interop mode) fail. Closes #203.
-* Moved at_exit hook to a method in Spec::Runner which only runs if specs get loaded. Closes #242.
-* Applied patch from kakutani ensuring that base_view_path gets cleared after each view example. Closes #235.
-* More tweaks to regexp step names
-* Fixed focused specs in nested ExampleGroups. Closes #225.
-
-=== Version 1.1.2
-
-Minor bug fixes/enhancements.
-Notice to autotest users: you must also upgrade to ZenTest-3.8.0.
-
-* RSpec's Autotest subclasses compatible with ZenTest-3.8.0 (thanks to Ryan Davis for making it easier on Autotest subs).
-* Applied patch from idl to add spec/lib to rake stats. Closes #226.
-* calling setup_fixtures and teardown_fixtures for Rails >= r8570. Closes #219.
-* Applied patch from Josh Knowles using ActiveSupport's Inflector (when available) to make 'should have' read a bit better. Closes #197.
-* Fixed regression in 1.1 that caused failing examples to fail to generate their own names. Closes #209.
-* Applied doc patch from Jens Krämer for capturing content_for
-* Applied patch from Alexander Lang to clean up story steps after each story. Closes #198.
-* Applied patch from Josh Knowles to support 'string_or_response.should have_text(...)'. Closes #193.
-* Applied patch from Ian Dees to quiet the Story Runner backtrace. Closes #183.
-* Complete support for defining steps with regexp 'names'.
-
-=== Version 1.1.1
-
-Bug fix release.
-
-* Fix regression in 1.1.0 that caused transactions to not get rolled back between examples.
-* Applied patch from Bob Cotton to reintroduce ExampleGroup.description_options. Closes LH[#186]
-
-=== Version 1.1.0
-
-The "tell me a story and go nest yourself" release.
-
-* Applied patch from Mike Vincent to handle generators rails > 2.0.1. Closes LH[#181]
-* Formatter.pending signature changed so it gets passed an ExampleGroup instance instead of the name ( LH[#180])
-* Fixed LH[#180] Spec::Rails::Example::ModelExampleGroup and friends show up in rspec/rails output
-* Spec::Rails no longer loads ActiveRecord extensions if it's disabled in config/boot.rb
-* Applied LH[#178] small annoyances running specs with warnings enabled (Patch from Mikko Lehtonen)
-* Tighter integration with Rails fixtures. Take advantage of fixture caching to get performance improvements (Thanks to Pat Maddox, Nick Kallen, Jonathan Barnes, and Curtis)
-
-=== Version 1.1.0-RC1
-
-Textmate Bundle users - this release adds a new RSpec bundle that highlights describe, it, before and after and
-provides navigation to descriptions and examples (rather than classes and methods). When you first install this,
-it is going to try to hijack all of your .rb files. All you need to do is open a .rb file that does not end with
-'spec.rb' and change the bundle selection from RSpec to Ruby. TextMate will do the right thing from then on.
-
-Shortcuts for tab-activated snippets all follow the TextMate convention of 2 or 3 letters of the first word, followed by the first letter of each subsequent word. So "should have_at_least" would be triggered by shhal.
-
-We reduced the scope for running spec directories, files, a single file or individual spec in TextMate to source.ruby.rspec. This allowed us to restore the standard Ruby shortcuts:
-
-CMD-R runs all the specs in one file
-CMD-SHIFT-R runs an individual spec
-CMD-OPT-R runs any files or directories selected in the TextMate drawer
-
-rspec_on_rails users - don't forget to run script/generate rspec
-
-* Added shared_examples_for method, which you can (should) use instead of describe Foo, :shared => true
-* Applied LH[#168] Fix describe Object, "description contains a # in it" (Patch from Martin Emde)
-* Applied LH[#15] Reverse loading of ActionView::Base helper modules (Patch from Mark Van Holstyn)
-* Applied LH[#149] Update contribute page to point towards lighthouse (Patch from Josh Knowles)
-* Applied LH[#142] verify_rcov fails with latest rcov (Patch from Kyle Hargraves)
-* Applied LH[#10] Allow stubs to yield and return values (Patch from Pat Maddox)
-* Fixed LH[#139] version.rb in trunk missing svn last changed number
-* Applied LH[#14] Adding support for by_at_least/by_at_most in Change matcher (Patch from Saimon Moore)
-* Applied LH[#12] Fix for TM when switching to alternate file (Patch from Trevor Squires)
-* Applied LH[#133] ExampleMatcher should match against before(:all) (Patch from Bob Cotton)
-* Applied LH[#134] Only load spec inside spec_helper.rb (Patch from Mark Van Holstyn)
-* RSpec now bails immediately if there are examples with identical names.
-* Applied LH[#132] Plain Text stories should support Given and Given: (Patch from Jarkko Laine)
-* Applied patch from Pat Maddox: Story Mediator - the glue that binds the plain text story parser with the rest of the system
-* Applied LH[#16] Have SimpleMatchers expose their description for specdocs (Patch from Bryan Helmkamp)
-* Stories now support --colour
-* Changed the DSL modules to Example (i.e. Spec::Example instead of Spec::DSL)
-* Applied [#15608] Story problem if parenthesis used in Given, When, Then or And (Patch from Sinclair Bain)
-* Applied [#15659] GivenScenario fails when it is a RailsStory (Patch from Nathan Sutton)
-* Fixed [#15639] rcov exclusion configuration. (Spec::Rails projects can configure rcov with spec/rcov.opts)
-* The rdoc formatter (--format rdoc) is gone. It was buggy and noone was using it.
-* Changed Spec::DSL::Behaviour to Spec::DSL::ExampleGroup
-* Changed Spec::DSL::SharedBehaviour to Spec::DSL::SharedExampleGroup
-* Applied [#14023] Small optimization for heavily proxied objects. (Patch from Ian Leitch)
-* Applied [#13943] ProfileFormatter (Top 10 slowest examples) (Patch from Ian Leitch)
-* Fixed [#15232] heckle is not working correctly in trunk (as of r2801)
-* Applied [#14399] Show pending reasons in HTML report (Patch from Bryan Helmkamp)
-* Discovered fixed: [#10263] mock "leak" when setting an expectation in a block passed to mock#should_receive
-* Fixed [#14671] Spec::DSL::ExampleRunner gives "NO NAME because of --dry-run" for every example for 'rake spec:doc'
-* Fixed [#14543] rspec_scaffold broken with Rails 2.0
-* Removed Patch [#10577] Rails with Oracle breaks 0.9.2 - was no longer necessary since we moved describe to the Main object (instead of Object)
-* Fixed [#14527] specs run twice on rails 1.2.4 and rspec/rspec_on_rails trunk
-* Applied [#14043] Change output ordering to show pending before errors (Patch from Mike Mangino)
-* Applied [#14095] Don't have ./script/generate rspec create previous_failures.txt (Patch from Bryan Helmkamp)
-* Applied [#14254] Improved error handling for Object#should and Object#should_not (Patch from Antti Tarvainen)
-* Applied [#14186] Remove dead code from message_expecation.rb (Patch from Antti Tarvainen)
-* Applied [#14183] Tiny improvement on mock_spec.rb (Patch from Antti Tarvainen)
-* Applied [#14208] Fix to Mock#method_missing raising NameErrors instead of MockExpectationErrors (Patch from Antti Tarvainen)
-* Applied [#14255] Fixed examples in mock_spec.rb and shared_behaviour_spec.rb (Patch from Antti Tarvainen)
-* Applied [#14362] partially mocking objects that define == can blow up (Patch from Pat Maddox)
-* test_ methods with an arity of 0 defined in a describe block or Example object will be run as an Example, providing a seamless transition from Test::Unit
-* Removed BehaviourRunner
-* Fixed [#13969] Spec Failures on Trunk w/ Autotest
-* Applied [#14156] False positives with should_not (Patch from Antti Tarvainen)
-* Applied [#14170] route_for and params_from internal specs fixed (Patch from Antti Tarvainen)
-* Fixed [#14166] Cannot build trunk
-* Applied [#14142] Fix for bug #11602: Nested #have_tag specifications fails on the wrong line number (Patch from Antti Tarvainen)
-* Removed warn_if_no_files argument and feature
-* Steps (Given/When/Then) with no blocks are treated as pending
-* Applied [#13913] Scenario should treat no code block as pending (Patch from Evan Light)
-* Fixed [#13370] Weird mock expectation error (Patch from Mike Mangino)
-* Applied [#13952] Fix for performance regression introduced in r2096 (Patch from Ian Leitch)
-* Applied [#13881] Dynamically include Helpers that are included on ActionView::Base (Patch from Brandon Keepers)
-* Applied [#13833] ActionView::Helpers::JavaScriptMacrosHelper removed after 1.2.3 (Patch from Yurii Rashkovskii)
-* Applied [#13814] RSpec on Rails w/ fixture-scenarios (Patch from Shintaro Kakutani)
-* Add ability to define Example subclass instead of using describe
-* Applied Patch from James Edward Gray II to improve syntax highlighting in TextMate
-* Fixed [#13579] NoMethodError not raised for missing helper methods
-* Fixed [#13713] form helper method 'select' can not be called when calling custom helper methods from specs
-* Example subclasses Test::Unit::TestCase
-* Added stub_everything method to create a stub that will return itself for any message it doesn't understand
-* Added stories directory with stories/all.rb and stories/helper.rb when you script/generate rspec
-* Applied [#13554] Add "And" so you can say Given... And... When... Then... And...
-* Applied [#11254] RSpec syntax coloring and function pop-up integration in TextMate (Patch from Wincent Colaiuta)
-* Applied [#13143] ActionView::Helpers::RecordIdentificationHelper should be included if present (Patch from Jay Levitt)
-* Applied [#13567] patch to allow stubs to yield consecutive values (Patch from Rupert Voelcker)
-* Applied [#13559] reverse version of route_for (Patch from Rupert Voelcker)
-* Added [#13532] /lib specs should get base EvalContext
-* Applied [#13451] Add a null_object option to mock_model (Patch from James Deville)
-* Applied [#11919] Making non-implemented specs easy in textmate (Patch from Scott Taylor)
-* Applied [#13274] ThrowSymbol recognized a NameError triggered by Kernel#method_missing as a thrown Symbol
-* Applied [#12722] the alternate file command does not work in rails views due to scope (Patch from Carl Porth)
-* Behaviour is now a Module that is used by Example class methods and SharedBehaviour
-* Added ExampleDefinition
-* Added story runner framework based on rbehave [#12628]
-* Applied [#13336] Helper directory incorrect for rake stats in statsetup task (Patch from Curtis Miller)
-* Applied [#13339] Add the ability for spec_parser to parse describes with :behaviour_type set (Patch from Will Leinweber and Dav Yaginuma)
-* Fixed [#13271] incorrect behaviour with expect_render and stub_render
-* Applied [#13129] Fix failing specs in spec_distributed (Patch from Bob Cotton)
-* Applied [#13118] Rinda support for Spec::Distributed (Patch from Bob Cotton)
-* Removed BehaviourEval
-* Removed Behaviour#inherit
-* Moved implementation of install_dependencies to example_rails_app
-* Renamed RSPEC_DEPS to VENDOR_DEPS
-* Added Example#not_implemented?
-* You can now stub!(:msg).with(specific args)
-* describe("A", Hash, "with one element") will generate description "A Hash with one element" (Tip from Ola Bini)
-* Applied [#13016] [DOC] Point out that view specs render, well, a view (Patch from Jay Levitt)
-* Applied [#13078] Develop rspec with autotest (Patch from Scott Taylor)
-* Fixed [#13065] Named routes throw a NoMethodError in Helper specs (Patches from James Deville and Mike Mangino)
-* Added (back) the verbose attribute in Spec::Rake::SpecTask
-* Changed documentation to point at the new http svn URL, which is more accessible.
-
-=== Version 1.0.8
-
-Another bugfix release - this time to resolve the version mismatch
-
-=== Version 1.0.7
-
-Quick bugfix release to ensure that you don't have to have the rspec gem installed
-in order to use autotest with rspec_on_rails.
-
-* Fixed [#13015] autotest gives failure in 'spec_command' after upgrade 1.0.5 to 1.0.6
-
-=== Version 1.0.6
-
-The "holy cow, batman, it's been a long time since we released and there are a ton of bug
-fixes, patches and even new features" release.
-
-Warning: Spec::Rails users: In fixing 11508, we've removed the raise_controller_errors method. As long as you
-follow the upgrade instructions and run 'script/generate rspec' you'll be fine, but if you skip this
-step you need to manually go into spec_helper.rb and remove the call to that method (if present - it
-might not be if you haven't upgraded in a while).
-
-Warning: Implementors of custom formatters. Formatters will now be sent an Example object instead of just a
-String for #example_started, #example_passed and #example_failed. In certain scenarios
-(Spec::Ui with Spec::Distributed), the formatter must ask the Example for its sequence number instead of
-keeping track of a sequence number internal to the formatter. Most of you shouldn't need to upgrade
-your formatters though - the Example#to_s method returns the example name/description, so you should be
-able to use the passed Example instance as if it were a String.
-
-* Applied [#12986] Autotest Specs + Refactoring (Patch from Scott Tayler)
-* Added a #close method to formatters, which allows them to gracefully close streams.
-* Applied [#12935] Remove requirement that mocha must be installed as a gem when used as mocking framework. (Patch from Ryan Kinderman).
-* Fixed [#12893] RSpec's Autotest should work with rspec's trunk
-* Fixed [#12865] Partial mock error when object has an @options instance var
-* Applied [#12701] Allow checking of content captured with content_for in view specs (Patch from Jens Kr�mer)
-* Applied [#12817] Cannot include same shared behaviour when required with absolute paths (Patch from Ian Leitch)
-* Applied [#12719] rspec_on_rails should not include pagination helper (Patch from Matthijs Langenberg)
-* Fixed [#12714] helper spec not finding rails core helpers
-* Applied [#12611] should_not redirect_to implementation (Patch from Yurii Rashkovskii)
-* Applied [#12682] Not correctly aliasing original 'stub!' and 'should_receive' methods for ApplicationController (Patch from Matthijs Langenberg)
-* Disabled controller.should_receive(:render) and controller.stub!(:render). Use expect_render or stub_render instead.
-* Applied [#12484] Allow a Behaviour's Description to flow through to the Formatter (Patch from Bob Cotton)
-* Fixed [#12448] The spec:plugins rake task from rspec_on_rails should ignore specs from the rspec_on_rails plugin
-* Applied [#12300] rr integration (patch from Kyle Hargraves)
-* Implemented [#12284] mock_with :rr (integration with RR mock framework: http://rubyforge.org/projects/pivotalrb/)
-* Applied [#12237] (tiny) added full path to mate in switch_command (Patch from Carl Porth)
-* Formatters will now be sent an Example object instead of just a String for certain methods
-* All Spec::Rake::SpecTask attributes can now be procs, which allows for lazy evaluation.
-* Changed the Spec::Ui interfaces slightly. See examples.
-* Applied [#12174] mishandling of paths with spaces in spec_mate switch_command (Patch from Carl Porth)
-* Implemented [#8315] File "Go to..." functionality
-* Applied [#11917] Cleaner Spec::Ui error for failed Selenium connection (Patch from Ian Dees)
-* Applied [#11888] rspec_on_rails spews out warnings when assert_select is used with an XML response (Patch from Ian Leitch)
-* Applied [#12010] Nicer failure message formatting (Patch from Wincent Colaiuta)
-* Applied [#12156] smooth open mate patch (Patch from Ienaga Eiji)
-* Applied [#10577] Rails with Oracle breaks 0.9.2. (Patch from Sinclair Bain)
-* Fixed [#12079] auto-generated example name incomplete: should have 1 error on ....]
-* Applied [#12066] Docfix for mocks/mocks.page (Patch from Kyle Hargraves)
-* Fixed [#11891] script/generate rspec_controller fails to create appropriate views (from templates) on edge rails
-* Applied [#11921] Adds the correct controller_name from derived_controller_name() to the ViewExampleGroupController (Patch from Eloy Duran)
-* Fixed [#11903] config.include with behaviour_type 'hash' does not work
-* Examples without blocks and pending is now reported with a P instead of a *
-* Pending blocks that now pass are rendered blue
-* New behaviour for after: If an after block raises an error, the other ones will still run instead of bailing at the first.
-* Made it possible to run spec from RSpec.tmbundle with --drb against a Rails spec_server.
-* Applied [#11868] Add ability for pending to optionally hold a failing block and to fail when it passes (Patch from Bob Cotton)
-* Fixed [#11843] watir_behaviour missing from spec_ui gem
-* Added 'switch between source and spec file' command in Spec::Mate (based on code from Ruy Asan)
-* Applied [#11509] Documentation - RSpec requires hpricot
-* Applied [#11807] Daemonize spec_server and rake tasks to manage them. (patch from Kyosuke MOROHASHI)
-* Added pending(message) method
-* Fixed [#11777] should render_template doesn't check paths correctly
-* Fixed [#11749] Use of 'rescue => e' does not catch all exceptions
-* Fixed [#11793] should raise_error('with a message') does not work correctly
-* Fixed [#11774] Mocks should respond to :kind_of? in the same way they respond to :is_a?
-* Fixed [#11508] Exceptions are not raised for Controller Specs (removed experimental raise_controller_errors)
-* Applied [#11615] Partial mock methods give ambiguous failures when given a method name as a String (Patch from Jay Phillips)
-* Fixed [#11545] Rspec doesn't handle should_receive on ActiveRecord associations (Patch from Ian White)
-* Fixed [#11514] configuration.use_transactional_fixtures is ALWAYS true, regardless of assignment
-* Improved generated RESTful controller examples to cover both successful and unsuccessful POST and PUT
-* Changed TextMate snippets for controllers to pass controller class names to #describe rather than controller_name.
-* Changed TextMate snippets for mocks to use no_args() and any_args() instead of the deprecated Symbols.
-* Applied [#11500] Documentation: no rails integration specs in 1.0
-* Renamed SpecMate's shortcuts for running all examples and focused examples to avoid conflicts (CMD-d and CMD-i)
-* Added a TextMate snippet for custom matchers, lifted from Geoffrey Grosenbach's RSpec peepcode show.
-* The translator translates mock constraints to the new matchers that were introduced in 1.0.4
-* Documented environment variables for Spec::Rake::SpecTask. Renamed SPECOPTS and RCOVOPTS to SPEC_OPTS and RCOV_OPTS.
-* Fixed [#10534] Windows: undefined method 'controller_name'
-
-=== Version 1.0.5
-Bug fixes. Autotest plugin tweaks.
-
-* Fixed [#11378] fix to 10814 broke drb (re-opened #10814)
-* Fixed [#11223] Unable to access flash from rails helper specs
-* Fixed [#11337] autotest runs specs redundantly
-* Fixed [#11258] windows: autotest won't run
-* Applied [#11253] Tweaks to autotest file mappings (Patch from Wincent Colaiuta)
-* Applied [#11252] Should be able to re-load file containing shared behaviours without raising an exception (Patch from Wincent Colaiuta)
-* Fixed [#11247] standalone autotest doesn't work because of unneeded autotest.rb
-* Applied [#11221] Autotest support does not work w/o Rails Gem installed (Patch from Josh Knowles)
-
-=== Version 1.0.4
-The getting ready for JRuby release.
-
-* Fixed [#11181] behaviour_type scoping of config.before(:each) is not working
-* added mock argument constraint matchers (anything(), boolean(), an_instance_of(Type)) which work with rspec or mocha
-* added mock argument constraint matchers (any_args(), no_args()) which only work with rspec
-* deprecated rspec's symbol mock argument constraint matchers (:any_args, :no_args, :anything, :boolean, :numeric, :string)
-* Added tarball of rspec_on_rails to the release build to support folks working behind a firewall that blocks svn access.
-* Fixed [#11137] rspec incorrectly handles flash after resetting the session
-* Fixed [#11143] Views code for ActionController::Base#render broke between 1.0.0 and 1.0.3 on Rails Edge r6731
-* Added raise_controller_errors for controller examples in Spec::Rails
-
-=== Version 1.0.3
-Bug fixes.
-
-* Fixed [#11104] Website uses old specify notation
-* Applied [#11101] StringHelpers.starts_with?(prefix) assumes a string parameter for _prefix_
-* Removed 'rescue nil' which was hiding errors in controller examples.
-* Fixed [#11075] controller specs fail when using mocha without integrated_views
-* Fixed problem with redirect_to failing incorrectly against edge rails.
-* Fixed [#11082] RspecResourceGenerator should be RspecScaffoldGenerator
-* Fixed [#10959] Focused Examples do not work for Behaviour defined with constant with modules
-
-=== Version 1.0.2
-This is just to align the version numbers in rspec and rspec_on_rails.
-
-=== Version 1.0.1
-This is a maintenance release with mostly cleaning up, and one minor enhancement -
-Modules are automatically included when described directly.
-
-* Renamed Spec::Rails' rspec_resource generator to rspec_scaffold.
-* Removed Spec::Rails' be_feed matcher since it's based on assert_select_feed which is not part of Rails (despite that docs for assert_select_encoded says it is).
-* describe(SomeModule) will include that module in the examples. Like for Spec::Rails helpers, but now also in core.
-* Header in HTML report will be yellow instead of red if there is one failed example
-* Applied [#10951] Odd instance variable name in rspec_model template (patch from Kyle Hargraves)
-* Improved integration with autotest (Patches from Ryan Davis and David Goodland)
-* Some small fixes to make all specs run on JRuby.
-
-=== Version 1.0.0
-The stake in the ground release. This represents a commitment to the API as it is. No significant
-backwards compatibility changes in the API are expected after this release.
-
-* Fixed [#10923] have_text matcher does not support should_not
-* Fixed [#10673] should > and should >= broken
-* Applied [#10921] Allow verify_rcov to accept greater than threshold coverage %'s via configuration
-* Applied [#10920] Added support for not implemented examples (Patch from Chad Humphries and Ken Barker)
-* Patch to allow not implemented examples. This works by not providing a block to the example. (Patch from Chad Humphries, Ken Barker)
-* Yanked support for Rails 1.1.6 in Spec::Rails
-* RSpec.tmbundle uses CMD-SHIFT-R to run focused examples now.
-* Spec::Rails now bundles a spec:rcov task by default (suggestion from Kurt Schrader)
-* Fixed [#10814] Runner loads shared code, test cases require them again
-* Fixed [#10753] Global before and after
-* Fixed [#10774] Allow before and after to be specified in config II
-* Refactored Spec::Ui examples to use new global before and after blocks.
-* Added instructions about how to get Selenium working with Spec::Ui (spec_ui/examples/selenium/README.txt)
-* Fixed [#10805] selenium.rb missing from gem?
-* Added rdocs explaining how to deal with errors in Rails' controller actions
-* Applied [#10770] Finer grained includes.
-* Fixed [#10747] Helper methods defined in shared specs are not visible when shared spec is used
-* Fixed [#10748] Shared descriptions in separate files causes 'already exists' error
-* Applied [#10698] Running with --drb executes specs twice (patch from Ruy Asan)
-* Fixed [#10871] 0.9.4 - Focussed spec runner fails to run specs in descriptions with type and string when there is no leading space in the string
-
-=== Version 0.9.4
-This release introduces massive improvements to Spec::Ui - the user interface functional testing
-extension to RSpec. There are also some minor bug fixes to the RSpec core.
-
-* Massive improvements to Spec::Ui. Complete support for all Watir's ie.xxx(how, what) methods. Inline screenshots and HTML.
-* Reactivated --timeout, which had mysteriously been deactivated in a recent release.
-* Fixed [#10669] Kernel#describe override does not cover Kernel#context
-* Applied [#10636] Added spec for OptionParser in Runner (Patch from Scott Taylor)
-* Added [#10516] should_include should be able to accept multiple items
-* Applied [#10631] redirect_to matcher doesn't respect request.host (Patch from Tim Lucas)
-* Each formatter now flushes their own IO. This is to avoid buffering of output.
-* Fixed [#10670] IVarProxy#delete raises exception when instance variable does not exist
-
-=== Version 0.9.3
-This is a bugfix release.
-
-* Fixed [#10594] Failing Custom Matcher show NAME NOT GENERATED description
-* describe(SomeType, "#message") will not add a space: "SomeType#message" (likewise for '.')
-* describe(SomeType, "message") will have a decription with a space: "SomeType message"
-* Applied [#10566] prepend_before and prepend_after callbacks
-* Applied [#10567] Call setup and teardown using before and after callbacks
-
-=== Version 0.9.2
-This is a quick maintenance release.
-
-* Added some website love
-* Fixed [#10542] reverse predicate matcher syntax
-* Added a spec:translate Rake task to make 0.9 translation easier with Spec:Rails
-* Better translation of should_redirect_to
-* Fixed --colour support for Windows. This is a regression that was introduced in 0.9.1
-* Applied [#10460] Make SpecRunner easier to instantiate without using commandline args
-
-=== Version 0.9.1
-
-This release introduces #describe and #it (aliased as #context and #specify for
-backwards compatibility). This allows you to express specs like this:
-
- describe SomeClass do # Creates a Behaviour
- it "should do something" do # Creates an Example
- end
- end
-
-The command line features four new options that give you more control over what specs
-are being run and in what order. This can be used to verify that your specs are
-independent (by running in opposite order with --reverse). It can also be used to cut
-down feedback time by running the most recently modified specs first (--loadby mtime --reverse).
-
-Further, --example replaces the old --spec option, and it can now take a file name of
-spec names as an alternative to just a spec name. The --format failing_examples:file.txt
-option allows you to output an --example compatible file, which makes it possible to only
-rerun the specs that failed in the last run. Spec::Rails uses all of these four options
-by default to optimise your RSpec experience.
-
-There is now a simple configuration model. For Spec::Rails, you do something like this:
-
- Spec::Runner.configure do |config|
- config.use_transactional_fixtures = true
- config.use_instantiated_fixtures = false
- config.fixture_path = RAILS_ROOT + '/spec/fixtures'
- end
-
-You can now use mocha or flexmock with RSpec if you prefer either to
-RSpec's own mock framework. Just put this:
-
- Spec::Runner.configure do |config|
- config.mock_with :mocha
- end
-
-or this:
-
- Spec::Runner.configure do |config|
- config.mock_with :flexmock
- end
-
-in a file that is loaded before your specs. You can also
-configure included modules and predicate_matchers:
-
- Spec::Runner.configure do |config|
- config.include SomeModule
- config.predicate_matchers[:does_something?] = :do_something
- end
-
-See Spec::DSL::Behaviour for more on predicate_matchers
-
-* Sugar FREE!
-* Added [10434 ] Please Make -s synonymous with -e for autotest compat. This is temporary until autotest uses -e instead of -s.
-* Fixed [#10133] custom predicate matchers
-* Applied [#10473] Add should exist (new matcher) - Patch from Bret Pettichord
-* Added another formatter: failing_behaviours. Writes the names of the failing behaviours for use with --example.
-* Applied [#10315] Patch to fix pre_commit bug 10313 - pre_commit_rails: doesn't always build correctly (Patch from Antii Tarvainen)
-* Applied [#10245] Patch to HTML escape the behavior name when using HTML Formatter (Patch from Josh Knowles)
-* Applied [#10410] redirect_to does not behave consistently with regards to query string parameter ordering (Patch from Nicholas Evans)
-* Applied [#9605] Patch for ER 9472, shared behaviour (Patch by Bob Cotton)
-* The '--format rdoc' option no longer causes a dry-run by default. --dry-run must be used explicitly.
-* It's possible to specify the output file in the --format option (See explanation in --help)
-* Several --format options may be specified to output several formats in one run.
-* The --out option is gone. Use --format html:path/to/my.html instead (or similar).
-* Spec::Runner::Formatter::BaseTextFormatter#initialize only takes one argument - an IO. dry_run and color are setters.
-* Made Spec::Ui *much* easier to install. It will be released separately. Check out trunk/spec_ui/examples
-* HTML reports now include a syntax highlighted snippet of the source code where the spec failed (needs the syntax gem)
-* Added [#10262] Better Helper testing of Erb evaluation block helpers
-* Added [#9735] support flexmock (thanks to Jim Weirich for his modifications to flexmock to support this)
-* Spec::Rails controller specs will no longer let mock exception ripple through to the response.
-* Fixed [#9260] IvarProxy does not act like a hash.
-* Applied [#9458] The rspec_scaffold generator does not take into account class nesting (Patch from Steve Tendon)
-* Applied [#9132] Rakefile spec:doc can fail without preparing database (Patch from Steve Ross)
-* Applied [#9678] Custom runner command line switch, and multi-threaded runner (Patch from Bob Cotton)
-* Applied [#9926] Rakefile - RSPEC_DEPS constant as an Array of Hashes instead of an Array of Arrays (Patch from Scott Taylor)
-* Applied [#9925] Changed ".rhtml" to "template" in REST spec generator (Patch from Scott Taylor)
-* Applied [#9852] Patch for RSpec's Website using Webgen 0.4.2 (Patch from Scott Taylor)
-* Fixed [#6523] Run rspec on rails without a db
-* Fixed [#9295] rake spec should run anything in the spec directory (not just rspec's standard dirs)
-* Added [#9786] infer controller and helper names from the described type
-* Fixed [#7795] form_tag renders action='/view_spec' in view specs
-* Fixed [#9767] rspec_on_rails should not define rescue_action on controllers
-* Fixed [#9421] --line doesn't work with behaviours that use class names
-* Fixed [#9760] rspec generators incompatible with changes to edge rails
-* Added [#9786] infer controller and helper names from the described type
-* Applied a simplified version of [#9282] Change to allow running specs from textmate with rspec installed as a rails plugin (and no rspec gem installed)
-* Applied [#9700] Make Spec::DSL::Example#name public / Add a --timeout switch. A great way to prevent specs from getting slow.
-* In Rails, script/generate rspec will generate a spec.opts file that optimises faster/more efficient running of specs.
-* Added [#9522] support using rspec's expectations with test/unit
-* Moved rspec_on_rails up to the project root, simplifying the download url
-* Fixed [#8103] RSpec not installing spec script correctly.
-* The --spec option is replaced by the --example option.
-* The --loadby option no longer supports a file argument. Use --example file_name instead.
-* The --example option can now take a file name as an argument. The file should contain example names.
-* Internal classes are named Behaviour/Example (rather than Context/Specification).
-* You can now use mocha by saying config.mock_with :mocha in a spec_helper
-* before_context_eval is replaced by before_eval.
-* Applied [#9509] allow spaced options in spec.opts
-* Applied [#9510] Added File for Ruby 1.8.6
-* Applied [#9511] Clarification to README file in spec/
-* Moved all of the Spec::Rails specs down to the plugins directory - now you can run the specs after you install.
-* Updated RSpec.tmbundle to the 0.9 syntax and replaced context/specify with describe/it.
-* Applied [#9232] ActionController::Base#render is sometimes protected (patch from Dan Manges)
-* Added --reverse option, allowing contexts/specs to be run in reverse order.
-* Added --loadby option, allowing better control over load order for spec files. mtime and file.txt supported.
-* Implemented [#8696] --order option (see --reverse and --loadby)
-* Added describe/it as aliases for context/specify - suggestion from Dan North.
-* Applied [#7637] [PATCH] add skip-migration option to rspec_scaffold generator
-* Added [#9167] string.should have_tag
-* Changed script/rails_spec_server to script/spec_server and added script/spec (w/ path to vendor/plugins/rspec)
-* Fixed [#8897] Error when mixing controller spec with/without integrated views and using template system other than rhtml
-* Updated sample app specs to 0.9 syntax
-* Updated generated specs to 0.9 syntax
-* Applied [#8994] trunk: generated names for be_ specs (Multiple patches from Yurii Rashkovskii)
-* Applied [#9983]: Allow before and after to be called in BehaviourEval. This is useful for shared examples.
-
-=== Version 0.8.2
-
-Replaced assert_select fork with an assert_select wrapper for have_tag. This means that "should have_rjs" no longer supports :hide or :effect, but you can still use should_have_rjs for those.
-
-=== Version 0.8.1
-
-Quick "in house" bug-fix
-
-=== Version 0.8.0
-
-This release introduces a new approach to handling expectations using Expression Matchers.
-
-See Upgrade[http://rspec.rubyforge.org/upgrade.html], Spec::Expectations, Spec::Matchers and RELEASE-PLAN for more info.
-
-This release also improves the spec command line by adding DRb support and making it possible to
-store command line options in a file. This means a more flexible RSpec experience with Rails,
-Rake and editor plugins like TextMate.
-
-It also sports myriad new features, bug fixes, patches and general goodness:
-
-* Fixed [#8928] rspec_on_rails 0.8.0-RC1 controller tests make double call to setup_with_fixtures
-* Fixed [#8925] Documentation bug in 0.8.0RC1 rspec website
-* Applied [#8132] [PATCH] RSpec breaks "rake db:sessions:create" in a rails project that has the rspec_on_rails plugin (Patch from Erik Kastner)
-* Fixed [#8789] --line and --spec not working when the context has parenhesis in the name
-* Added [#8783] auto generate spec names from last expectation
-* --heckle now fails if the heckled class or module is not found.
-* Fixed [#8771] Spec::Mocks::BaseExpectation#with converts hash params to array of arrays with #collect
-* Fixed [#8750] should[_not]_include backwards compatibility between 0.8.0-RC1 and 0.7.5.1 broken
-* Fixed [#8646] Context Runner does not report on Non standard exceptions and return a 0 return code
-* RSpec on Rails' spec_helper.rb will only force RAILS_ENV to test if it was not specified on the command line.
-* Fixed [#5485] proc#should_raise and proc#should_not_raise output
-* Added [#8484] should_receive with blocks
-* Applied [#8218] heckle_runner.rb doesn't work with heckle >= 1.2.0 (Patch from Michal Kwiatkowski)
-* Fixed [#8240] Cryptic error message when no controller_name
-* Applied [#7461] [PATCH] Contexts don't call Module::included when they include a module
-* Removed unintended block of test/unit assertions in rspec_on_rails - they should all, in theory, now be accessible
-* Added mock_model method to RSpec on Rails, which stubs common methods. Based on http://metaclass.org/2006/12/22/making-a-mockery-of-activerecord
-* Fixed [#8165] Partial Mock Errors when respond_to? is true but the method is not in the object
-* Fixed [#7611] Partial Mocks override Subclass methods
-* Fixed [#8302] Strange side effect when mocking a class method
-* Applied [#8316] to_param should return a stringified key in resource generator's controller spec (Patch from Chris Anderson)
-* Applied [#8216] shortcut for creating object stub
-* Applied [#8008] Correct generated specs for view when calling resource generator (Patch from Jonathan Tron)
-* Fixed [#7754] Command-R fails to run spec in TextMate (added instruction from Luke Redpath to the website)
-* Fixed [#7826] RSpect.tmbundle web page out of date.
-* RSpec on Rails specs are now running against RoR 1.2.1 and 1.2.2
-* rspec_scaffold now generates specs for views
-* In a Rails app, RSpec core is only loaded when RAILS_ENV==test (init.rb)
-* Added support for target.should arbitrary_expectation_handler and target.should_not arbitrary_expectation_handler
-* Fixed [#7533] Spec suite fails and the process exits with a code 0
-* Fixed [#7565] Subsequent stub! calls for method fail to override the first call to method
-* Applied [#7524] Incorrect Documentation for 'pattern' in Rake task (patch from Stephen Duncan)
-* Fixed [#7409] default fixtures do not appear to run.
-* Fixed [#7507] "render..and return" doesn't return
-* Fixed [#7509] rcov/rspec incorrectly includes boot.rb (Patch from Courtenay)
-* Fixed [#7506] unnecessary complex output on failure of response.should be_redirect
-* Applied [#6098] Make scaffold_resource generator. Based on code from Pat Maddox.
-* The drbspec command is gone. Use spec --drb instead.
-* The drb option is gone from the Rake task. Pass --drb to spec_opts instead.
-* New -X/--drb option for running specs against a server like spec/rails' script/rails_spec_server
-* New -O/--options and -G/--generate flags for file-based options (handy for spec/rails)
-* Applied [#7339] Turn off caching in HTML reports
-* Applied [#7419] "c option for colorizing output does not work with rails_spec" (Patch from Shintaro Kakutani)
-* Applied [#7406] [PATCH] 0.7.5 rspec_on_rails loads fixtures into development database (Patch from Wilson Bilkovich)
-* Applied [#7387] Allow stubs to return consecutive values (Patch from Pat Maddox)
-* Applied [#7393] Fix for rake task (Patch from Pat Maddox)
-* Reinstated support for response.should_render (in addition to controller.should_render)
-
-=== Version 0.7.5.1
-
-Bug fix release to allow downloads of rspec gem using rubygems 0.9.1.
-
-=== Version 0.7.5
-This release adds support for Heckle - Seattle'rb's code mutation tool.
-There are also several bug fixes to the RSpec core and the RSpec on Rails plugin.
-
-* Removed svn:externals on rails versions and plugins
-* Applied [#7345] Adding context_setup and context_teardown, with specs and 100% rcov
-* Applied [#7320] [PATCH] Allow XHR requests in controller specs to render RJS templates
-* Applied [#7319] Migration code uses drop_column when it should use remove_column (patch from Pat Maddox)
-* Added support for Heckle
-* Applied [#7282] dump results even if spec is interrupted (patch from Kouhei Sutou)
-* Applied [#7277] model.should_have(n).errors_on(:attribute) (patch from Wilson Bilkovich)
-* Applied [#7270] RSpec render_partial colliding with simply_helpful (patch from David Goodlad)
-* Added [#7250] stubs should support throwing
-* Added [#7249] stubs should support yielding
-* Fixed [#6760] fatal error when accessing nested finders in rspec
-* Fixed [#7179] script/generate rspec_scaffold generates incorrect helper name
-* Added preliminary support for assert_select (response.should_have)
-* Fixed [#6971] and_yield does not work when the arity is -1
-* Fixed [#6898] Can we separate rspec from the plugins?
-* Added [#7025] should_change should accept a block
-* Applied [#6989] partials with locals (patch from Micah Martin)
-* Applied [#7023] Typo in team.page
-
-=== Version 0.7.4
-
-This release features a complete redesign of the reports generated with --format html.
-As usual there are many bug fixes - mostly related to spec/rails.
-
-* Applied [#7010] Fixes :spacer_template does not work w/ view spec (patch from Shintaro Kakutani)
-* Applied [#6798] ensure two ':' in the first backtrace line for Emacs's 'next-error' command (patch from Kouhei Sutou)
-* Added Much nicer reports to generated website
-* Much nicer reports with --format --html (patch from Luke Redpath)
-* Applied [#6959] Calls to render and redirect in controllers should return true
-* Fixed [#6981] helper method is not available in partial template.
-* Added [#6978] mock should tell you the expected and actual args when receiving the right message with the wrong args
-* Added the possibility to tweak the output of the HtmlFormatter (by overriding extra_failure_content).
-* Fixed [#6936] View specs don't include ApplicationHelper by default
-* Fixed [#6903] Rendering a partial in a view makes the view spec blow up
-* Added callback library from Brian Takita
-* Added [#6925] support controller.should_render :action_name
-* Fixed [#6884] intermittent errors related to method binding
-* Fixed [#6870] rspec on edge rails spec:controller fixture loading fails
-* Using obj.inspect for all messages
-* Improved performance by getting rid of instance_exec (instance_eval is good enough because we never need to pass it args)
-
-=== Version 0.7.3
-
-Almost normal bug fix/new feature release.
-
-A couple of things you need to change in your rails specs:
-# spec_helper.rb is a little different (see http://rspec.rubyforge.org/upgrade.html)
-# use controller.should_render before OR after the action (controller.should_have_rendered is deprecated)
-
-* Applied [#6577] messy mock backtrace when frozen to edge rails (patch from Jay Levitt)
-* Fixed [#6674] rspec_on_rails fails on @session deprecation warning
-* Fixed [#6780] routing() was failing...fix included - works for 1.1.6 and edge (1.2)
-* Fixed [#6835] bad message with arbitrary predicate
-* Added [#6731] Partial templates rendered
-* Fixed [#6713] helper methods not rendered in view tests?
-* Fixed [#6707] cannot run controller / helper tests via rails_spec or spec only works with rake
-* Applied [#6417] lambda {...}.should_change(receiver, :message) (patch from Wilson Bilkovich)
-* Eliminated dependency on ZenTest
-* Fixed [#6650] Reserved characters in the TextMate bundle break svn on Win32
-* Fixed [#6643] script/generate rspec_controller: invalid symbol generation for 'controller_name' for *modularized* controllers
-* The script/rails_spec command has been moved to bin/drbspec in RSpec core (installed by the gem)
-
-=== Version 0.7.2
-
-This release introduces a brand new RSpec bundle for TextMate, plus some small bugfixes.
-
-* Packaged RSpec.tmbundle.tgz as part of the distro
-* Fixed [#6593] Add moving progress bar to HtmlFormatter using Javascript
-* Applied [#6265] should_raise should accept an Exception object
-* Fixed [#6616] Can't run Rails specs with RSpec.tmbundle
-* Fixed [#6411] Can't run Rails specs with ruby
-* Added [#6589] New -l --line option. This is useful for IDE/editor runners/extensions.
-* Fixed [#6615] controller.should_render_rjs should support :partial => 'path/to/template'
-
-=== Version 0.7.1
-
-Bug fixes and a couple o' new features.
-
-* Fixed [#6575] Parse error in aliasing the partial mock original method (patch by Brian Takita)
-* Fixed [#6277] debris left by stubbing (trunk) [submitted by dastels] (fixed by fix to [#6575])
-* Fixed [#6575] Parse error in aliasing the partial mock original method
-* Fixed [#6555] should_have_tag does not match documentation
-* Fixed [#6567] SyntaxError should not stop entire run
-* Fixed [#6558] integrated views look for template even when redirected
-* Fixed [#6547] response.should be_redirect broken in 0.7.0
-* Applied [#6471] Easy way to spec routes
-* Applied [#6587] Rspec on Rails displays "Spec::Rails::ContextFactory" as context name
-* Applied [#6514] Document has trivial typos.
-* Added [#6560] controller.session should be available before the action
-* Added support for should_have_rjs :visual_effect
-* Different printing and colours for unmet expectations (red) and other exceptions (magenta)
-* Simplified method_missing on mock_methods to make it less invasive on partial mocks.
-
-=== Version 0.7.0
-
-This is the "Grow up and eat your own dog food release". RSpec is now used on itself and
-we're no longer using Test::Unit to test it. Although, we are still extending Test::Unit
-for the rails plugin (indirectly - through ZenTest)
-
-IMPORTANT NOTE: THIS RELEASE IS NOT 100% BACKWARDS COMPATIBLE TO 0.6.x
-
-There are a few changes that will require that you change your existing specs.
-
-RSpec now handles equality exactly like ruby does:
-
-# actual.should_equal(expected) will pass if actual.equal?(expected) returns true
-# actual.should eql(expected) will pass if actual.eql?(expected) returns true
-# actual.should == expected will pass if actual == expected) returns true
-
-At the high level, eql? implies equivalence, while equal? implies object identity. For more
-information on how ruby deals w/ equality, you should do this:
-
-ri equal?
-
-or look at this:
-
-http://www.ruby-doc.org/core/classes/Object.html#M001057
-
-Also, we left in should_be as a synonym for should_equal, so the only specs that should break are the
-ones using should_equal (which used to use <code>==</code> instead of <code>.equal?</code>).
-
-Lastly, should_be used to handle true and false differently from any other values. We've removed
-this special handling, so now actual.should_be true will fail for any value other than true (it
-used to pass for any non-nil, non-false value), and actual.should_be false will fail for any
-value other than false (it used to pass for nil or false).
-
-Here's what you'll need to do to update your specs:
-# search for "should_equal" and replace with "should_eql"
-# run specs
-
-If any specs still fail, they are probably related to should be_true or should_be_false using
-non-boolean values. Those you'll just have to inspect manually and adjust appropriately (sorry!).
-
---------------------------------------------------
-Specifying multiple return values in mocks now works like this:
-
-mock.should_receive(:message).and_return(1,2,3)
-
-It used to work like this:
-
-mock.should_receive(:message).and_return([1,2,3])
-
-but we decided that was counter intuitive and otherwise lame.
-
-Here's what you'll need to do to update your specs:
-# search for "and_return(["
-# get rid of the "[" and "]"
-
---------------------------------------------------
-RSpec on Rails now supports the following (thanks to ZenTest upon which it is built):
-
-# Separate specs for models, views, controllers and helpers
-# Controller specs are completely decoupled from the views by default (though you can tell them to couple themselves if you prefer)
-# View specs are completely decoupled from app-specific controllers
-
-See http://rspec.rubyforge.org/documentation/rails/index.html for more information
---------------------------------------------------
-As usual, there are also other new features and bug fixes:
-
-* Added lots of documentation on mocks/stubs and the rails plugin.
-* Added support for assigns[key] syntax for controller specs (to align w/ pre-existing syntax for view specs)
-* Added support for controller.should_redirect_to
-* RSpec on Rails automatically checks whether it's compatible with the installed RSpec
-* Applied [#6393] rspec_on_rails uses deprecated '@response' instead of the accessor
-* RSpec now has 100% spec coverage(!)
-* Added support for stubbing and partial mocking
-* Progress (....F..F.) is now coloured. Tweaked patch from KAKUTANI Shintaro.
-* Backtrace now excludes the rcov runner (/usr/local/bin/rcov)
-* Fixed [#5539] predicates do not work w/ rails
-* Added [#6091] support for Regexp matching messages sent to should_raise
-* Added [#6333] support for Regexp matching in mock arguments
-* Applied [#6283] refactoring of diff support to allow selectable formats and custom differs
-* Fixed [#5564] "ruby spec_file.rb" doesn't work the same way as "spec spec_file.rb"
-* Fixed [#6056] Multiple output of failing-spec notice
-* Fixed [#6233] Colours in specdoc
-* Applied [#6207] Allows --diff option to diff target and expected's #inspect output (Patch by Lachie Cox)
-* Fixed [#6203] Failure messages are misleading - consider using inspect.
-* Added [#6334] subject.should_have_xyz will try to call subject.has_xyz? - use this for hash.should_have_key(key)
-* Fixed [#6017] Rake task should ignore empty or non-existent spec-dirs
-
-=== Version 0.6.4
-
-In addition to a number of bug fixes and patches, this release begins to formalize the support for
-RSpec on Rails.
-
-* Added Christopher Petrilli's TextMate bundle to vendor/textmate/RSpec.tmbundle
-* Fixed [#5909], once again supporting multi_word_predicates
-* Applied [#5873] - response.should_have_rjs (initial patch from Jake Howerton, based on ARTS by Kevin Clark)
-* Added generation of view specs for rspec_on_rails
-* Applied [#5815] active_record_subclass.should_have(3).records
-* Added support in "rake stats" for view specs (in spec/views)
-* Applied [#5801] QuickRef.pdf should say RSpec, not rSpec
-* Applied [#5728] rails_spec_runner fails on Windows (Patch from Lindsay Evans).
-* Applied [#5708] RSpec Rails plugin rspec_controller generator makes specs that do not parse.
-* Cleaned up RSpec on Rails so it doesn't pollute as much during bootstrapping.
-* Added support for response.should_have_tag and response.should_not_have_tag (works just like assert_tag in rails)
-* Added new -c, --colour, --color option for colourful (red/green) output. Inspired from Pat Eyler's Redgreen gem.
-* Added examples for Watir and Selenium under the gem's vendor directory.
-* Renamed rails_spec_runner to rails_spec_server (as referred to in the docs)
-* Added support for trying a plural for arbitrary predicates. E.g. Album.should_exist(:name => "Hey Jude") will call Album.exists?(:name => "Hey Jude")
-* Added support for should_have to work with methods taking args returning a collection. E.g. @dave.should_have(3).albums_i_have_that_this_guy_doesnt(@aslak)
-* Added [#5570] should_not_receive(:msg).with(:specific, "args")
-* Applied [#5065] to support using define_method rather than method_missing to capture expected messages on mocks. Thanks to Eero Saynatkari for the tip that made it work.
-* Restructured directories and Modules in order to separate rspec into three distinct Modules: Spec::Expectations, Spec::Runner and Spec::Mocks. This will allow us to more easily integrate other mock frameworks and/or allow test/unit users to take advantage of the expectation API.
-* Applied [#5620] support any boolean method and arbitrary comparisons (5.should_be < 6) (Patch from Mike Williams)
-
-=== Version 0.6.3
-
-This release fixes some minor bugs related to RSpec on Rails
-Note that if you upgrade a rails app with this version of the rspec_on_rails plugin
-you should remove your lib/tasks/rspec.rake if it exists.
-
-* Backtraces from drb (and other standard ruby libraries) are now stripped from backtraces.
-* Applied [#5557] Put rspec.rake into the task directory of the RSpec on Rails plugin (Patch from Daniel Siemssen)
-* Applied [#5556] rails_spec_server loads environment.rb twice (Patch from Daniel Siemssen)
-
-=== Version 0.6.2
-This release fixes a couple of regressions with the rake task that were introduced in the previous version (0.6.1)
-
-* Fixed [#5518] ruby -w: warnings in 0.6.1
-* Applied [#5525] fix rake task path to spec tool for gem-installed rspec (patch from Riley Lynch)
-* Fixed a teensey regression with the rake task - introduced in 0.6.1. The spec command is now quoted so it works on windows.
-
-=== Version 0.6.1
-This is the "fix the most annoying bugs release" of RSpec. There are 9 bugfixes this time.
-Things that may break backwards compatibility:
-1) Spec::Rake::SpecTask no longer has the options attribute. Use ruby_opts, spec_opts and rcov_opts instead.
-
-* Fixed [#4891] RCOV task failing on windows
-* Fixed [#4896] Shouldn't modify user's $LOAD_PATH (Tip from Gavin Sinclair)
-* Fixed [#5369] ruby -w: warnings in RSpec 0.5.16 (Tip from Suraj Kurapati)
-* Applied [#5141] ExampleMatcher doesn't escape strings before matching (Patch from Nikolai Weibull).
-* Fixed [#5224] Move 'require diff-lcs' from test_helper.rb to diff_test.rb (Tip from Chris Roos)
-* Applied [#5449] Rake stats for specs (Patch from Nick Sieger)
-* Applied [#5468, #5058] Fix spec runner to correctly run controller specs (Patch from Daniel Siemssen)
-* Applied fixes to rails_spec_server to improve its ability to run several times. (Patch from Daniel Siemssen)
-* Changed RCov::VerifyTask to fail if the coverage is above the threshold. This is to ensure it gets bumped when coverage improves.
-
-=== Version 0.6.0
-This release makes an official commitment to underscore_syntax (with no more support for dot.syntax)
-
-* Fixed bug (5292) that caused mock argument matching to fail
-* Converted ALL tests to use underscore syntax
-* Fixed all remaining problems with underscores revealed by converting all the tests to underscores
-* Enhanced sugar to support combinations of methods (i.e. once.and_return)
-* Simplified helper structure taking advantage of dot/underscore combos (i.e. should.be.an_instance_of, which can be expressed as should be_an_instance_of)
-* Added support for at_most in mocks
-* Added support for should_not_receive(:msg) (will be removing should_receive(:msg).never some time soon)
-* Added support for should_have_exactly(5).items_in_collection
-
-=== Version 0.5.16
-This release improves Rails support and test2spec translation.
-
-* Fixed underscore problems that occurred when RSpec was used in Rails
-* Simplified the Rails support by packaging it as a plugin instead of a generator gem.
-* Fixed [#5063] 'rspec_on_rails' require line in spec_helper.rb
-* Added pre_commit rake task to reduce risk of regressions. Useful for RSpec developers and patchers.
-* Added failure_message to RSpec Rake task
-* test2spec now defines converted helper methods outside of the setup block (bug #5057).
-
-=== Version 0.5.15
-This release removes a prematurely added feature that shouldn't have been added.
-
-* Removed support for differences that was added in 0.5.14. The functionality is not aligned with RSpec's vision.
-
-=== Version 0.5.14
-This release introduces better ways to extend specs, improves some of the core API and
-a experimental support for faster rails specs.
-
-* Added proc methods for specifying differences (increments and decrements). See difference_test.rb
-* Methods can now be defined alongside specs. This obsoletes the need for defining methods in setup. (Patch #5002 from Brian Takita)
-* Sugar (underscores) now works correctly with should be_a_kind_of and should be_an_instance_of
-* Added support for include and inherit in contexts. (Patch #4971 from Brian Takita)
-* Added rails_spec and rails_spec_server for faster specs on rails (still buggy - help needed)
-* Fixed bug that caused should_render to break if given a :symbol (in Rails)
-* Added support for comparing exception message in should_raise and should_not_raise
-
-=== Version 0.5.13
-This release fixes some subtle bugs in the mock API.
-
-* Use fully-qualified class name of Exceptions in failure message. Easier to debug that way.
-* Fixed a bug that caused mocks to yield a one-element array (rather than the element) when one yield arg specified.
-* Mocks not raise AmbiguousReturnError if an explicit return is used at the same time as an expectation block.
-* Blocks passed to yielding mocks can now raise without causing mock verification to fail.
-
-=== Version 0.5.12
-This release adds diff support for failure messages, a HTML formatter plus some other
-minor enhancements.
-
-* Added HTML formatter.
-* Added fail_on_error option to spectask.
-* Added support for diffing, using the diff-lcs Rubygem (#2648).
-* Remove RSpec on Rails files from backtrace (#4694).
-* All of RSpec's own tests run successfully after translation with test2spec.
-* Added --verbose mode for test2spec - useful for debugging when classes fail to translate.
-* Output of various formatters is now flushed - to get more continuous output.
-
-=== Version 0.5.11
-This release makes test2spec usable with Rails (with some manual steps).
-See http://rspec.rubyforge.org/tools/rails.html for more details
-
-* test2spec now correctly translates bodies of helper methods (non- test_*, setup and teardown ones).
-* Added more documentation about how to get test2spec to work with Rails.
-
-=== Version 0.5.10
-This version features a second rewrite of test2spec - hopefully better than the previous one.
-
-* Improved test2spec's internals. It now transforms the syntax tree before writing out the code.
-
-=== Version 0.5.9
-This release improves test2spec by allowing more control over the output
-
-* Added --template option to test2spec, which allows for custom output driven by ERB
-* Added --quiet option to test2spec
-* Removed unnecessary dependency on RubyToC
-
-=== Version 0.5.8
-This release features a new Test::Unit to RSpec translation tool.
-Also note that the RubyGem of the previous release (0.5.7) was corrupt.
-We're close to being able to translate all of RSpec's own Test::Unit
-tests and have them run successfully!
-
-* Updated test2spec documentation.
-* Replaced old test2rspec with a new test2spec, which is based on ParseTree and RubyInline.
-
-=== Version 0.5.7
-This release changes examples and documentation to recommend underscores rather than dots,
-and addresses some bugfixes and changes to the spec commandline.
-
-* spec DIR now works correctly, recursing down and slurping all *.rb files
-* All documentation and examples are now using '_' instead of '.'
-* Custom external formatters can now be specified via --require and --format.
-
-=== Version 0.5.6
-This release fixes a bug in the Rails controller generator
-
-* The controller generator did not write correct source code (missing 'do'). Fixed.
-
-=== Version 0.5.5
-This release adds initial support for Ruby on Rails in the rspec_generator gem.
-
-* [Rails] Reorganised Lachie's original code to be a generator packaged as a gem rather than a plugin.
-* [Rails] Imported code from http://lachie.info/svn/projects/rails_plugins/rspec_on_rails (Written by Lachie Cox)
-* Remove stack trace lines from TextMate's Ruby bundle
-* Better error message from spectask when no spec files are found.
-
-=== Version 0.5.4
-The "the tutorial is ahead of the gem" release
-
-* Support for running a single spec with --spec
-* Exitcode is now 1 unless all specs pass, in which case it's 0.
-* -v, --version now both mean the same thing
-* For what was verbose output (-v), use --format specdoc or -f s
-* --format rdoc always runs in dry-run mode
-* Removed --doc and added --format and --dry-run
-* Refactored towards more pluggable formatters
-* Use webgen's execute tag when generating website (more accurate)
-* Fixed incorrect quoting of spec_opts in SpecTask
-* Added patch to enable underscored shoulds like 1.should_equal(1) - patch from Rich Kilmer
-* Removed most inherited instance method from Mock, making more methods mockable.
-* Made the RCovVerify task part of the standard toolset.
-* Documented Rake task and how to use it with Rcov
-* Implemented <ruby></ruby> tags for website (hooking into ERB, RedCloth and syntax)
-* RSpec Rake task now takes spec_opts and out params so it can be used for doc generation
-* RCov integration for RSpec Rake task (#4058)
-* Group all results instead of printing them several times (#4057)
-* Mocks can now yield
-* Various improvements to error reporting (including #4191)
-* backtrace excludes rspec code - use -b to include it
-* split examples into examples (passing) and failing_examples
-
-=== Version 0.5.3
-The "hurry up, CoR is in two days" release.
-
-* Don't run rcov by default
-* Make separate task for running tests with RCov
-* Added Rake task to fail build if coverage drops below a certain threshold
-* Even more failure output cleanup (simplification)
-* Added duck_type constraint for mocks
-
-=== Version 0.5.2
-This release has minor improvements to the commandline and fixes some gem warnings
-
-* Readded README to avoid RDoc warnings
-* Added --version switch to commandline
-* More changes to the mock API
-
-=== Version 0.5.1
-This release is the first release of RSpec with a new website. It will look better soon.
-
-* Added initial documentation for API
-* Added website based on webgen
-* Modified test task to use rcov
-* Deleted unused code (thanks, rcov!)
-* Various changes to the mock API,
-* Various improvements to failure reporting
-
-=== Version 0.5.0
-This release introduces a new API and obsolesces previous versions.
-
-* Moved source code to separate subfolders
-* Added new DSL runner based on instance_exec
-* Added spike for testdox/rdoc generation
-* merge Astels' and Chelimsky's work on ShouldHelper
-* this would be 0.5.0 if I updated the documentation
-* it breaks all of your existing specifications. We're not sorry.
-
-=== Version 0.3.2
-
-The "srbaker is an idiot" release.
-
-* also forgot to update the path to the actual Subversion repository
-* this should be it
-
-=== Version 0.3.1
-
-This is just 0.3.0, but with the TUTORIAL added to the documentation list.
-
-* forgot to include TUTORIAL in the documentation
-
-=== Version 0.3.0
-
-It's been a while since last release, lots of new stuff is available. For instance:
-
-* improvements to the runners
-* addition of should_raise expectation (thanks to Brian Takita)
-* some documentation improvements
-* RSpec usable as a DSL
-
-=== Version 0.2.0
-
-This release provides a tutorial for new users wishing to get started with
-RSpec, and many improvements.
-
-* improved reporting in the spec runner output
-* update the examples to the new mock api
-* added TUTORIAL, a getting started document for new users of RSpec
-
-=== Version 0.1.7
-
-This release improves installation and documentation, mock integration and error reporting.
-
-* Comparison errors now print the class name too.
-* Mocks now take an optional +options+ parameter to specify behaviour.
-* Removed __expects in favour of should_receive
-* Added line number reporting in mock error messages for unreceived message expectations.
-* Added should_match and should_not_match.
-* Added a +mock+ method to Spec::Context which will create mocks that autoverify (no need to call __verify).
-* Mocks now require names in the constructor to ensure sensible error messages.
-* Made 'spec' executable and updated usage instructions in README accordingly.
-* Made more parts of the Spec::Context API private to avoid accidental usage.
-* Added more RDoc to Spec::Context.
-
-=== Version 0.1.6
-
-More should methods.
-
-* Added should_match and should_not_match.
-
-=== Version 0.1.5
-
-Included examples and tests in gem.
-
-=== Version 0.1.4
-
-More tests on block based Mock expectations.
-
-=== Version 0.1.3
-
-Improved mocking:
-
-* block based Mock expectations.
-
-=== Version 0.1.2
-
-This release adds some improvements to the mock API and minor syntax improvements
-
-* Added Mock.should_expect for a more consistent DSL.
-* Added MockExpectation.and_returns for a better DSL.
-* Made Mock behave as a null object after a call to Mock.ignore_missing
-* Internal syntax improvements.
-* Improved exception trace by adding exception class name to error message.
-* Renamed some tests for better consistency.
-
-=== Version 0.1.1
-
-This release adds some shoulds and improves error reporting
-
-* Added should be_same_as and should_not be_same_as.
-* Improved error reporting for comparison expectations.
-
-=== Version 0.1.0
-
-This is the first preview release of RSpec, a Behaviour-Driven Development library for Ruby
-
-* Added Rake script with tasks for gems, rdoc etc.
-* Added an XForge task to make release go easier.
diff --git a/vendor/gems/rspec-1.3.1/License.txt b/vendor/gems/rspec-1.3.1/License.txt
deleted file mode 100644
index 1a9ac4cb0..000000000
--- a/vendor/gems/rspec-1.3.1/License.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-(The MIT License)
-
-Copyright (c) 2005-2010 The RSpec Development Team
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/gems/rspec-1.3.1/Manifest.txt b/vendor/gems/rspec-1.3.1/Manifest.txt
deleted file mode 100644
index 3cb225e1a..000000000
--- a/vendor/gems/rspec-1.3.1/Manifest.txt
+++ /dev/null
@@ -1,384 +0,0 @@
-.document
-History.rdoc
-License.txt
-Manifest.txt
-README.rdoc
-Rakefile
-Ruby1.9.rdoc
-TODO.txt
-Upgrade.rdoc
-bin/autospec
-bin/spec
-cucumber.yml
-examples/failing/README.txt
-examples/failing/diffing_spec.rb
-examples/failing/failing_implicit_docstrings_example.rb
-examples/failing/failure_in_after.rb
-examples/failing/failure_in_before.rb
-examples/failing/mocking_example.rb
-examples/failing/mocking_with_flexmock.rb
-examples/failing/mocking_with_mocha.rb
-examples/failing/mocking_with_rr.rb
-examples/failing/partial_mock_example.rb
-examples/failing/pending_example.rb
-examples/failing/predicate_example.rb
-examples/failing/raising_example.rb
-examples/failing/syntax_error_example.rb
-examples/failing/team_spec.rb
-examples/failing/timeout_behaviour.rb
-examples/passing/custom_formatter.rb
-examples/passing/custom_matchers.rb
-examples/passing/dynamic_spec.rb
-examples/passing/file_accessor.rb
-examples/passing/file_accessor_spec.rb
-examples/passing/filtered_formatter.rb
-examples/passing/filtered_formatter_example.rb
-examples/passing/greeter_spec.rb
-examples/passing/helper_method_example.rb
-examples/passing/implicit_docstrings_example.rb
-examples/passing/io_processor.rb
-examples/passing/io_processor_spec.rb
-examples/passing/mocking_example.rb
-examples/passing/multi_threaded_example_group_runner.rb
-examples/passing/nested_classes_example.rb
-examples/passing/options_example.rb
-examples/passing/options_formatter.rb
-examples/passing/partial_mock_example.rb
-examples/passing/pending_example.rb
-examples/passing/predicate_example.rb
-examples/passing/shared_example_group_example.rb
-examples/passing/shared_stack_examples.rb
-examples/passing/simple_matcher_example.rb
-examples/passing/stack.rb
-examples/passing/stack_spec.rb
-examples/passing/stack_spec_with_nested_example_groups.rb
-examples/passing/stubbing_example.rb
-examples/passing/yielding_example.rb
-examples/ruby1.9.compatibility/access_to_constants_spec.rb
-features/before_and_after_blocks/before_and_after_blocks.feature
-features/command_line/line_number_option.feature
-features/command_line/line_number_option_with_example_with_no_name.feature
-features/example_groups/define_example_attribute.feature
-features/example_groups/example_group_with_should_methods.feature
-features/example_groups/implicit_docstrings.feature
-features/example_groups/nested_groups.feature
-features/expectations/customized_message.feature
-features/expectations/expect_change.feature
-features/expectations/expect_error.feature
-features/extensions/custom_example_group.feature
-features/formatters/custom_formatter.feature
-features/formatters/nested_formatter.feature
-features/interop/cucumber_stubs_dont_leak.feature
-features/interop/examples_and_tests_together.feature
-features/interop/rspec_output.feature
-features/interop/test_but_not_test_unit.feature
-features/interop/test_case_with_should_methods.feature
-features/load_paths/add_lib_to_load_path.feature
-features/load_paths/add_spec_to_load_path.feature
-features/matchers/define_diffable_matcher.feature
-features/matchers/define_matcher.feature
-features/matchers/define_matcher_outside_rspec.feature
-features/matchers/define_matcher_with_fluent_interface.feature
-features/matchers/define_wrapped_matcher.feature
-features/matchers/match_unless_raises.feature
-features/matchers/match_unless_raises_unexpected_error.feature
-features/mock_framework_integration/use_flexmock.feature
-features/mock_framework_integration/use_mocha.feature
-features/mock_framework_integration/use_rr.feature
-features/mocks/block_local_expectations.feature
-features/mocks/mix_stubs_and_mocks.feature
-features/mocks/stub_implementation.feature
-features/pending/pending_examples.feature
-features/runner/specify_line_number.feature
-features/spec_helper/spec_helper.feature
-features/step_definitions/running_rspec_steps.rb
-features/step_definitions/stubbing_steps.rb
-features/subject/explicit_subject.feature
-features/subject/implicit_subject.feature
-features/support/env.rb
-features/support/matchers/smart_match.rb
-geminstaller.yml
-init.rb
-lib/autotest/discover.rb
-lib/autotest/rspec.rb
-lib/spec.rb
-lib/spec/adapters/mock_frameworks/flexmock.rb
-lib/spec/adapters/mock_frameworks/mocha.rb
-lib/spec/adapters/mock_frameworks/rr.rb
-lib/spec/adapters/mock_frameworks/rspec.rb
-lib/spec/autorun.rb
-lib/spec/deprecation.rb
-lib/spec/dsl.rb
-lib/spec/dsl/main.rb
-lib/spec/example.rb
-lib/spec/example/args_and_options.rb
-lib/spec/example/before_and_after_hooks.rb
-lib/spec/example/errors.rb
-lib/spec/example/example_group.rb
-lib/spec/example/example_group_factory.rb
-lib/spec/example/example_group_hierarchy.rb
-lib/spec/example/example_group_methods.rb
-lib/spec/example/example_group_proxy.rb
-lib/spec/example/example_matcher.rb
-lib/spec/example/example_methods.rb
-lib/spec/example/example_proxy.rb
-lib/spec/example/module_reopening_fix.rb
-lib/spec/example/pending.rb
-lib/spec/example/predicate_matchers.rb
-lib/spec/example/shared_example_group.rb
-lib/spec/example/subject.rb
-lib/spec/expectations.rb
-lib/spec/expectations/errors.rb
-lib/spec/expectations/extensions.rb
-lib/spec/expectations/extensions/kernel.rb
-lib/spec/expectations/fail_with.rb
-lib/spec/expectations/handler.rb
-lib/spec/extensions/instance_exec.rb
-lib/spec/interop/test.rb
-lib/spec/interop/test/unit/autorunner.rb
-lib/spec/interop/test/unit/testcase.rb
-lib/spec/interop/test/unit/testresult.rb
-lib/spec/interop/test/unit/testsuite_adapter.rb
-lib/spec/interop/test/unit/ui/console/testrunner.rb
-lib/spec/matchers.rb
-lib/spec/matchers/be.rb
-lib/spec/matchers/be_close.rb
-lib/spec/matchers/be_instance_of.rb
-lib/spec/matchers/be_kind_of.rb
-lib/spec/matchers/change.rb
-lib/spec/matchers/compatibility.rb
-lib/spec/matchers/dsl.rb
-lib/spec/matchers/eql.rb
-lib/spec/matchers/equal.rb
-lib/spec/matchers/errors.rb
-lib/spec/matchers/exist.rb
-lib/spec/matchers/generated_descriptions.rb
-lib/spec/matchers/has.rb
-lib/spec/matchers/have.rb
-lib/spec/matchers/include.rb
-lib/spec/matchers/match.rb
-lib/spec/matchers/match_array.rb
-lib/spec/matchers/matcher.rb
-lib/spec/matchers/method_missing.rb
-lib/spec/matchers/operator_matcher.rb
-lib/spec/matchers/pretty.rb
-lib/spec/matchers/raise_exception.rb
-lib/spec/matchers/respond_to.rb
-lib/spec/matchers/satisfy.rb
-lib/spec/matchers/simple_matcher.rb
-lib/spec/matchers/throw_symbol.rb
-lib/spec/matchers/wrap_expectation.rb
-lib/spec/mocks.rb
-lib/spec/mocks/argument_expectation.rb
-lib/spec/mocks/argument_matchers.rb
-lib/spec/mocks/error_generator.rb
-lib/spec/mocks/errors.rb
-lib/spec/mocks/example_methods.rb
-lib/spec/mocks/extensions.rb
-lib/spec/mocks/extensions/object.rb
-lib/spec/mocks/framework.rb
-lib/spec/mocks/message_expectation.rb
-lib/spec/mocks/methods.rb
-lib/spec/mocks/mock.rb
-lib/spec/mocks/order_group.rb
-lib/spec/mocks/proxy.rb
-lib/spec/mocks/space.rb
-lib/spec/rake/spectask.rb
-lib/spec/rake/verify_rcov.rb
-lib/spec/ruby.rb
-lib/spec/runner.rb
-lib/spec/runner/backtrace_tweaker.rb
-lib/spec/runner/class_and_arguments_parser.rb
-lib/spec/runner/command_line.rb
-lib/spec/runner/configuration.rb
-lib/spec/runner/differs/default.rb
-lib/spec/runner/differs/load-diff-lcs.rb
-lib/spec/runner/drb_command_line.rb
-lib/spec/runner/example_group_runner.rb
-lib/spec/runner/extensions/kernel.rb
-lib/spec/runner/formatter/base_formatter.rb
-lib/spec/runner/formatter/base_text_formatter.rb
-lib/spec/runner/formatter/failing_example_groups_formatter.rb
-lib/spec/runner/formatter/failing_examples_formatter.rb
-lib/spec/runner/formatter/html_formatter.rb
-lib/spec/runner/formatter/nested_text_formatter.rb
-lib/spec/runner/formatter/no_op_method_missing.rb
-lib/spec/runner/formatter/profile_formatter.rb
-lib/spec/runner/formatter/progress_bar_formatter.rb
-lib/spec/runner/formatter/silent_formatter.rb
-lib/spec/runner/formatter/snippet_extractor.rb
-lib/spec/runner/formatter/specdoc_formatter.rb
-lib/spec/runner/formatter/text_mate_formatter.rb
-lib/spec/runner/heckle_runner.rb
-lib/spec/runner/heckle_runner_unsupported.rb
-lib/spec/runner/line_number_query.rb
-lib/spec/runner/option_parser.rb
-lib/spec/runner/options.rb
-lib/spec/runner/reporter.rb
-lib/spec/stubs/cucumber.rb
-lib/spec/test/unit.rb
-lib/spec/version.rb
-resources/helpers/cmdline.rb
-resources/rake/examples.rake
-resources/rake/examples_with_rcov.rake
-resources/rake/failing_examples_with_html.rake
-resources/rake/verify_rcov.rake
-spec/README.jruby
-spec/autotest/autotest_helper.rb
-spec/autotest/autotest_matchers.rb
-spec/autotest/discover_spec.rb
-spec/autotest/failed_results_re_spec.rb
-spec/autotest/rspec_spec.rb
-spec/ruby_forker.rb
-spec/spec.opts
-spec/spec/dsl/main_spec.rb
-spec/spec/example/example_group_class_definition_spec.rb
-spec/spec/example/example_group_factory_spec.rb
-spec/spec/example/example_group_methods_spec.rb
-spec/spec/example/example_group_proxy_spec.rb
-spec/spec/example/example_group_spec.rb
-spec/spec/example/example_matcher_spec.rb
-spec/spec/example/example_methods_spec.rb
-spec/spec/example/example_proxy_spec.rb
-spec/spec/example/helper_method_spec.rb
-spec/spec/example/nested_example_group_spec.rb
-spec/spec/example/pending_module_spec.rb
-spec/spec/example/predicate_matcher_spec.rb
-spec/spec/example/shared_example_group_spec.rb
-spec/spec/example/subclassing_example_group_spec.rb
-spec/spec/example/subject_spec.rb
-spec/spec/expectations/differs/default_spec.rb
-spec/spec/expectations/extensions/kernel_spec.rb
-spec/spec/expectations/fail_with_spec.rb
-spec/spec/expectations/handler_spec.rb
-spec/spec/expectations/wrap_expectation_spec.rb
-spec/spec/interop/test/unit/resources/spec_that_fails.rb
-spec/spec/interop/test/unit/resources/spec_that_passes.rb
-spec/spec/interop/test/unit/resources/spec_with_errors.rb
-spec/spec/interop/test/unit/resources/spec_with_options_hash.rb
-spec/spec/interop/test/unit/resources/test_case_that_fails.rb
-spec/spec/interop/test/unit/resources/test_case_that_passes.rb
-spec/spec/interop/test/unit/resources/test_case_with_errors.rb
-spec/spec/interop/test/unit/resources/test_case_with_various_names.rb
-spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb
-spec/spec/interop/test/unit/spec_spec.rb
-spec/spec/interop/test/unit/test_unit_spec_helper.rb
-spec/spec/interop/test/unit/testcase_spec.rb
-spec/spec/interop/test/unit/testsuite_adapter_spec.rb
-spec/spec/matchers/be_close_spec.rb
-spec/spec/matchers/be_instance_of_spec.rb
-spec/spec/matchers/be_kind_of_spec.rb
-spec/spec/matchers/be_spec.rb
-spec/spec/matchers/change_spec.rb
-spec/spec/matchers/compatibility_spec.rb
-spec/spec/matchers/description_generation_spec.rb
-spec/spec/matchers/dsl_spec.rb
-spec/spec/matchers/eql_spec.rb
-spec/spec/matchers/equal_spec.rb
-spec/spec/matchers/exist_spec.rb
-spec/spec/matchers/has_spec.rb
-spec/spec/matchers/have_spec.rb
-spec/spec/matchers/include_spec.rb
-spec/spec/matchers/match_array_spec.rb
-spec/spec/matchers/match_spec.rb
-spec/spec/matchers/matcher_spec.rb
-spec/spec/matchers/matchers_spec.rb
-spec/spec/matchers/operator_matcher_spec.rb
-spec/spec/matchers/raise_exception_spec.rb
-spec/spec/matchers/respond_to_spec.rb
-spec/spec/matchers/satisfy_spec.rb
-spec/spec/matchers/simple_matcher_spec.rb
-spec/spec/matchers/throw_symbol_spec.rb
-spec/spec/mocks/and_yield_spec.rb
-spec/spec/mocks/any_number_of_times_spec.rb
-spec/spec/mocks/argument_expectation_spec.rb
-spec/spec/mocks/argument_matchers_spec.rb
-spec/spec/mocks/at_least_spec.rb
-spec/spec/mocks/at_most_spec.rb
-spec/spec/mocks/bug_report_10260_spec.rb
-spec/spec/mocks/bug_report_10263_spec.rb
-spec/spec/mocks/bug_report_11545_spec.rb
-spec/spec/mocks/bug_report_15719_spec.rb
-spec/spec/mocks/bug_report_496_spec.rb
-spec/spec/mocks/bug_report_600_spec.rb
-spec/spec/mocks/bug_report_7611_spec.rb
-spec/spec/mocks/bug_report_7805_spec.rb
-spec/spec/mocks/bug_report_8165_spec.rb
-spec/spec/mocks/bug_report_8302_spec.rb
-spec/spec/mocks/bug_report_830_spec.rb
-spec/spec/mocks/double_spec.rb
-spec/spec/mocks/failing_argument_matchers_spec.rb
-spec/spec/mocks/hash_including_matcher_spec.rb
-spec/spec/mocks/hash_not_including_matcher_spec.rb
-spec/spec/mocks/mock_ordering_spec.rb
-spec/spec/mocks/mock_space_spec.rb
-spec/spec/mocks/mock_spec.rb
-spec/spec/mocks/multiple_return_value_spec.rb
-spec/spec/mocks/nil_expectation_warning_spec.rb
-spec/spec/mocks/null_object_mock_spec.rb
-spec/spec/mocks/once_counts_spec.rb
-spec/spec/mocks/options_hash_spec.rb
-spec/spec/mocks/partial_mock_spec.rb
-spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb
-spec/spec/mocks/passing_argument_matchers_spec.rb
-spec/spec/mocks/precise_counts_spec.rb
-spec/spec/mocks/record_messages_spec.rb
-spec/spec/mocks/stub_chain_spec.rb
-spec/spec/mocks/stub_implementation_spec.rb
-spec/spec/mocks/stub_spec.rb
-spec/spec/mocks/stubbed_message_expectations_spec.rb
-spec/spec/mocks/twice_counts_spec.rb
-spec/spec/mocks/unstub_spec.rb
-spec/spec/package/bin_spec_spec.rb
-spec/spec/rake/spectask_spec.rb
-spec/spec/runner/class_and_argument_parser_spec.rb
-spec/spec/runner/command_line_spec.rb
-spec/spec/runner/configuration_spec.rb
-spec/spec/runner/drb_command_line_spec.rb
-spec/spec/runner/empty_file.txt
-spec/spec/runner/example_group_runner_spec.rb
-spec/spec/runner/examples.txt
-spec/spec/runner/failed.txt
-spec/spec/runner/formatter/base_formatter_spec.rb
-spec/spec/runner/formatter/base_text_formatter_spec.rb
-spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb
-spec/spec/runner/formatter/failing_examples_formatter_spec.rb
-spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html
-spec/spec/runner/formatter/html_formatted-1.8.6.html
-spec/spec/runner/formatter/html_formatted-1.8.7.html
-spec/spec/runner/formatter/html_formatted-1.9.1.html
-spec/spec/runner/formatter/html_formatter_spec.rb
-spec/spec/runner/formatter/nested_text_formatter_spec.rb
-spec/spec/runner/formatter/profile_formatter_spec.rb
-spec/spec/runner/formatter/progress_bar_formatter_spec.rb
-spec/spec/runner/formatter/snippet_extractor_spec.rb
-spec/spec/runner/formatter/specdoc_formatter_spec.rb
-spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html
-spec/spec/runner/formatter/text_mate_formatted-1.8.6.html
-spec/spec/runner/formatter/text_mate_formatted-1.8.7.html
-spec/spec/runner/formatter/text_mate_formatted-1.9.1.html
-spec/spec/runner/formatter/text_mate_formatter_spec.rb
-spec/spec/runner/heckle_runner_spec.rb
-spec/spec/runner/heckler_spec.rb
-spec/spec/runner/line_number_query/line_number_query_fixture.rb
-spec/spec/runner/line_number_query_spec.rb
-spec/spec/runner/noisy_backtrace_tweaker_spec.rb
-spec/spec/runner/option_parser_spec.rb
-spec/spec/runner/options_spec.rb
-spec/spec/runner/output_one_time_fixture.rb
-spec/spec/runner/output_one_time_fixture_runner.rb
-spec/spec/runner/output_one_time_spec.rb
-spec/spec/runner/quiet_backtrace_tweaker_spec.rb
-spec/spec/runner/reporter_spec.rb
-spec/spec/runner/resources/a_bar.rb
-spec/spec/runner/resources/a_foo.rb
-spec/spec/runner/resources/a_spec.rb
-spec/spec/runner/resources/custom_example_group_runner.rb
-spec/spec/runner/resources/utf8_encoded.rb
-spec/spec/runner/spec.opts
-spec/spec/runner/spec_drb.opts
-spec/spec/runner/spec_spaced.opts
-spec/spec/runner_spec.rb
-spec/spec_helper.rb
-spec/support/macros.rb
-spec/support/spec_classes.rb
diff --git a/vendor/gems/rspec-1.3.1/README.rdoc b/vendor/gems/rspec-1.3.1/README.rdoc
deleted file mode 100644
index 523fa6af1..000000000
--- a/vendor/gems/rspec-1.3.1/README.rdoc
+++ /dev/null
@@ -1,41 +0,0 @@
-== RSpec
-
-http://rspec.info
-
-Behaviour Driven Development for Ruby
-
-This is the repository for rspec-1.x. If you're looking
-for rspec-2 (and if you're not, what are you waiting for?),
-see http://github.com/rspec/rspec
-
-== Install
-
- gem install rspec
-
-== Synopsis
-
- describe Account do
- context "transfering money" do
- it "deposits transfer amount to the other account" do
- source = Account.new(50, :USD)
- target = mock('target account')
- target.should_receive(:deposit).with(Money.new(5, :USD))
- source.transfer(5, :USD).to(target)
- end
-
- it "reduces its balance by the transfer amount" do
- source = Account.new(50, :USD)
- target = stub('target account')
- source.transfer(5, :USD).to(target)
- source.balance.should == Money.new(45, :USD)
- end
- end
- end
-
- $ spec ./spec/account_spec.rb --format nested
- Account
- transfering money
- deposits transfer amount to the other account
- reduces its balance by the transfer amount
-
- 2 examples, 0 failures
diff --git a/vendor/gems/rspec-1.3.1/Rakefile b/vendor/gems/rspec-1.3.1/Rakefile
deleted file mode 100644
index ffdcf210f..000000000
--- a/vendor/gems/rspec-1.3.1/Rakefile
+++ /dev/null
@@ -1,149 +0,0 @@
-# -*- ruby -*-
-gem 'hoe', '>=2.0.0'
-require 'hoe'
-
-$:.unshift 'lib'
-
-require 'spec/version'
-require 'spec/rake/spectask'
-require 'spec/ruby'
-
-Hoe.spec 'rspec' do
- self.version = Spec::VERSION::STRING
- self.summary = Spec::VERSION::SUMMARY
- self.description = "Behaviour Driven Development for Ruby."
- self.rubyforge_name = 'rspec'
- self.developer('RSpec Development Team', 'rspec-devel@rubyforge.org')
- self.extra_dev_deps << ["cucumber",">=0.3"] << ["fakefs",">=0.2.1"] << ["syntax",">=1.0"] << ["diff-lcs",">=1.1.2"]
- self.extra_dev_deps << ["heckle",">=1.4.3"] unless Spec::Ruby.version >= "1.9"
- self.remote_rdoc_dir = "rspec/#{Spec::VERSION::STRING}"
- self.rspec_options = ['--options', 'spec/spec.opts']
- self.history_file = 'History.rdoc'
- self.readme_file = 'README.rdoc'
- self.post_install_message = <<-POST_INSTALL_MESSAGE
-#{'*'*50}
-
- Thank you for installing rspec-#{Spec::VERSION::STRING}
-
- Please be sure to read History.rdoc and Upgrade.rdoc
- for useful information about this release.
-
-#{'*'*50}
-POST_INSTALL_MESSAGE
-end
-
-['audit','test','test_deps','default','post_blog'].each do |task|
- Rake.application.instance_variable_get('@tasks').delete(task)
-end
-
-task :post_blog do
- # no-op
-end
-
-# Some of the tasks are in separate files since they are also part of the website documentation
-load 'resources/rake/examples.rake'
-load 'resources/rake/examples_with_rcov.rake'
-load 'resources/rake/failing_examples_with_html.rake'
-load 'resources/rake/verify_rcov.rake'
-
-task :cleanup_rcov_files do
- rm_rf 'coverage.data'
-end
-
-
-if RUBY_VERSION =~ /^1.8/
- task :default => [:cleanup_rcov_files, :features, :verify_rcov]
-else
- task :default => [:spec, :features]
-end
-
-namespace :spec do
-
- desc "Run all specs with rcov"
- Spec::Rake::SpecTask.new(:rcov) do |t|
- t.spec_files = FileList['spec/**/*_spec.rb']
- t.spec_opts = ['--options', 'spec/spec.opts']
- t.rcov = true
- t.rcov_dir = 'coverage'
- t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
- t.rcov_opts << '--sort coverage --text-summary --aggregate coverage.data'
- end
-
- desc "Run files listed in spec/spec_files.txt"
- Spec::Rake::SpecTask.new(:focus) do |t|
- if File.exists?('spec/spec_files.txt')
- t.spec_files = File.readlines('spec/spec_files.txt').collect{|f| f.chomp}
- end
- end
-end
-
-begin
- require 'cucumber/rake/task'
- desc "Run Cucumber features"
- if RUBY_VERSION =~ /^1.8/
- Cucumber::Rake::Task.new :features do |t|
- t.rcov = true
- t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
- t.rcov_opts << '--no-html --aggregate coverage.data'
- t.cucumber_opts = %w{--format progress}
- end
- else
- task :features do
- sh 'cucumber --profile no_heckle'
- end
- end
-rescue LoadError
- puts "You need cucumber installed to run cucumber tasks"
-end
-
-desc "Run failing examples (see failure output)"
-Spec::Rake::SpecTask.new('failing_examples') do |t|
- t.spec_files = FileList['failing_examples/**/*_spec.rb']
- t.spec_opts = ['--options', 'spec/spec.opts']
-end
-
-def egrep(pattern)
- Dir['**/*.rb'].each do |fn|
- count = 0
- open(fn) do |f|
- while line = f.gets
- count += 1
- if line =~ pattern
- puts "#{fn}:#{count}:#{line}"
- end
- end
- end
- end
-end
-
-desc "Look for TODO and FIXME tags in the code"
-task :todo do
- egrep /(FIXME|TODO|TBD)/
-end
-
-desc "verify_committed, verify_rcov, post_news, release"
-task :complete_release => [:verify_committed, :verify_rcov, :post_news, :release]
-
-desc "Verifies that there is no uncommitted code"
-task :verify_committed do
- IO.popen('git status') do |io|
- io.each_line do |line|
- raise "\n!!! Do a git commit first !!!\n\n" if line =~ /^#\s*modified:/
- end
- end
-end
-
-namespace :update do
- desc "update the manifest"
- task :manifest do
- system %q[touch Manifest.txt; rake check_manifest | grep -v "(in " | patch]
- end
-end
-
-task :clobber => :clobber_tmp
-
-task :clobber_tmp do
- cmd = %q[rm -r tmp]
- puts cmd
- system cmd if test ?d, 'tmp'
-end
diff --git a/vendor/gems/rspec-1.3.1/Ruby1.9.rdoc b/vendor/gems/rspec-1.3.1/Ruby1.9.rdoc
deleted file mode 100644
index e42cc85e4..000000000
--- a/vendor/gems/rspec-1.3.1/Ruby1.9.rdoc
+++ /dev/null
@@ -1,31 +0,0 @@
-= RSpec and Ruby 1.9
-
-RSpec runs on Ruby 1.9.1 with the following caveats.
-
-== Test::Unit
-
-RSpec/Test::Unit interop will run with the test-unit-1.2.3 gem, but you must install it.
-
-== Class Variables
-
-Due to changes in scoping rules, class variables within example groups are not
-supported in Ruby 1.9.
-
- describe "a class variable" do
- @@class_variable = "a class variable"
-
- it "can access class variables in examples in Ruby 1.8" do
- with_ruby 1.8 do
- @@class_variable.should == "a class variable"
- end
- end
-
- it "can NOT access class variables in examples in Ruby 1.9" do
- with_ruby 1.9 do
- lambda do
- @@class_variable.should == "a class variable"
- end.should raise_error(NameError)
- end
- end
- end
-
diff --git a/vendor/gems/rspec-1.3.1/TODO.txt b/vendor/gems/rspec-1.3.1/TODO.txt
deleted file mode 100644
index fc59a25bb..000000000
--- a/vendor/gems/rspec-1.3.1/TODO.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-== Refactoring
-
-** global predictate matchers should be stored in run_options
-* eliminate dependency on global options and configuration
-** the only place they should exist is in the Runner, which should manage them
-
-== Future
-
-* do SOMETHING with the website
-* separate the underlying framework from the DSL
- * be able to do everything with classes and methods
-* tweak raise_error rdoc to show only one arg
-
-== rspec-2.0
-
-* rename top level namespace to Rspec and commands to 'rspec' and 'autorspec'
- * continue to support Spec 'spec' and 'autospec' as aliases for a reasonable time
diff --git a/vendor/gems/rspec-1.3.1/Upgrade.rdoc b/vendor/gems/rspec-1.3.1/Upgrade.rdoc
deleted file mode 100644
index 86c792aec..000000000
--- a/vendor/gems/rspec-1.3.1/Upgrade.rdoc
+++ /dev/null
@@ -1,260 +0,0 @@
-= Upgrade to 1.3.0
-
-== What's changed
-
-=== +be_true+ and +be_false+
-
-These methods now align with Ruby's conditional semantics:
-
-* +be_false+ passes for +false+ and +nil+
-* +be_true+ passes for everything else
-
-This is a change from the previous behaviour (which wasn't working correctly
-anyway), which was supposed to treat +be_true+ as <tt>equal(true)</tt>, and +be_false+ as
-<tt>equal(false)</tt>.
-
-If the actual values +true+ and +false+ are meaningful to your examples, you'll
-want to change the to use <tt>equal(true)</tt> and <tt>equal(false)</tt> (or
-<tt>==(true)</tt> and <tt>==(false)</tt>).
-
-=== +raise_exception+
-
-We changed the +raise_error+ matcher to +raise_exception+, and aliased it with
-+raise_error+. This maintains backward compatibility, and also gives you the
-option of being more precise in specs about what is expected.
-
-=== Matcher DSL
-
-==== +match+ rescues from +ExpectationNotMetErrror+ by default
-
-This allows you to wrap other expectations in the +match+ method. Consider
-this matcher:
-
- Spec::Matchers.define :teach do |subject|
- match do |teacher|
- teacher.subjects.should include(subject)
- end
- end
-
-The block passed to +match+ is called internally by Rspec, and is expected to
-return a boolean value. In this case, if <tt>should include(subject)</tt>
-fails, it raises an +ExpectationNotMetError+.
-
-Beginning with rspec-1.3.0, when the match block raises an
-+ExpectationNotMetError+, it is captured and the block returns +false+.
-Otherwise it returns +true+, so it works like any other matcher.
-
-==== match_unless_raises
-
-The new +match_unless_raises+ method allows you to wrap <tt>Test::Unit</tt>
-assertions by capturing +AssertionFailedError+ and returning false, just as the
-+match+ method now does with +ExpectationNotMetError+.
-
- Spec::Matchers.define :teach do |subject|
- match_unless_raises Test::Unit::AssertionFailedError do |teacher|
- assert teacher.subjects.include?(subject)
- end
- end
-
-= Upgrade to rspec-1.2.9
-
-== What's new
-
-=== spec/spec.opts
-
-If you have a spec/spec.opts file, the spec command will now use that
-automatically as long as you don't include any options on the command line.
-
-=== let()
-
-Writing specs tends to follow a regular pattern of using local variables,
-discovering duplication, and then having to convert to local variables to
-instance variables by adding an "@" symbol. The let() method assigns the result
-of a lazy eval'd block as the return value of an instance method using the same
-name. This way you can go from this:
-
- describe Subscription do
- it "does something" do
- subscription = Subscription.create :limit => 1
- subscription...
- end
-
- it "does something else" do
- subscription = Subscription.create :limit => 1
- subscription...
- end
- end
-
-to this:
-
- describe Subscription do
- let(:subscription) { Subscription.create :limit => 1 }
-
- it "does something" do
- subscription...
- end
-
- it "does something else" do
- subscription...
- end
- end
-
-=== its()
-
-If you're in the habit of writing one-liners using implicit subject, this new
-its() feature is for you. Here's the basic idea:
-
- describe Array do
- its(:length) { should == 0 }
- end
-
-= Upgrade to rspec-1.2.3-1.2.7
-
-== What's Changed
-
-=== Matcher DSL
-
-Use Spec::Matchers.define instead of Spec::Matchers.create (which is now
-deprecated).
-
-=== Explicit Predicate Matchers are deprecated
-
-With the addition of the new Matcher DSL the old, confusing, and
-almost-nobody-uses-it explicit predicate matcher functionality's days are now
-numbered.
-
-If you're not familiar with this feature, don't worry about it. If you have anything
-that looks like this:
-
- predicate_matchers[:swim] = :can_swim?
-
-Or this
-
- config.predicate_matchers[:swim] = :can_swim?
-
-Change it to this:
-
- Spec::Matchers.define :swim do
- match do |potential_swimmer|
- potential_swimmer.can_swim?
- end
- end
-
-== Custom Formatters
-
-If you have an custom formatter, the <tt>add_example_group</tt> method has
-been changed to <tt>example_group_started</tt>, and kept as an alias so your
-formatters will still work. Though not yet, <tt>add_example_group</tt> will be
-deprecated in a future minor release, and removed in a future major release,
-so we recommend you make this change now.
-
-= Upgrade to rspec-1.2.2
-
-== What's Changed
-
-=== <tt>require 'rubygems' unless ENV['NO_RUBYGEMS']</tt>
-
-After minor public outcry and confusion, we restored necessary references to
-rubygems in rspec. If you use a different mechanism for managing gems, just
-set a <tt>NO_RUBYGEMS</tt> environment variable (to any non-nil value).
-
-=== Proxies and locations
-
-This is probably only interesting to you if you use custom formatters.
-
-Formatters now receive Spec::Example::ExampleGroupProxy and
-Spec::Example::ExampleGroup objects with cohesive APIs for reporting. See the
-RDoc for those classes and Spec::Runner::Formatter::BaseFormatter for more
-information.
-
-== What's new
-
-=== The new matcher DSL works with test/unit (without the rest of rspec)
-
-We'll be separating this out to its own gem for rspec 2.0, but for now, just install
-rspec >= 1.2.1 and add the following to your <tt>test_helper</tt> file:
-
- require 'spec/expectations'
- class Test::Unit::TestCase
- include Spec::Matchers
- end
-
-This will add <tt>should()</tt> and <tt>should_not()</tt> to your objects, make all of
-rspec's built-in matchers available to your tests, INCLUDING rspec's DSL for
-creating matchers (see below, under Upgrade to rspec-1.2.0)
-
-=== debugger
-
-If you have ruby-debug installed, you can set a breakpoint by adding <tt>debugger()</tt>
-in your code:
-
- # some code .....
- debugger
- # some more code ....
-
-... and using the <tt>--debugger</tt> or <tt>-u</tt> command line option.
-
- spec path/to/file.rb --debugger
-
-= Upgrade to rspec-1.2.0
-
-== What's Changed
-
-=== WARNINGS
-
-* If you use the ruby command to run specs instead of the spec command, you'll
- need to require 'spec/autorun' or they won't run. This won't affect you if
- you use the spec command or the Spec::Rake::SpecTask that ships with RSpec.
-
-* require 'spec/test/unit' to invoke test/unit interop if you're using
- RSpec's core (this is handled implicitly with spec-rails)
-
-* setup and teardown are gone - use before and after instead
-
- * you can still use setup and teardown if you're using
- Test::Unit::TestCase as the base ExampleGroup class (which is implicit
- in rspec-rails)
-
-* The matcher protocol has been improved. The old protocol is still supported,
- but we added support for two new methods that speak a bit more clearly:
-
- failure_message => failure_message_for_should
- negative_failure_message => failure_message_for_should_not
-
-* All references to rubygems have been removed from within rspec's code.
-
- * See http://gist.github.com/54177 for rationale and suggestions on
- alternative approaches to loading rubygems
-
-== What's New
-
-=== Ruby 1.9
-
-RSpec now works with Ruby 1.9.1. See http://wiki.github.com/dchelimsky/rspec/ruby-191
-for useful information.
-
-=== Improved heckle integration
-
-RSpec works with heckle again! Gotta use heckle >= 1.4.2 for this to work
-though, and it only works with ruby-1.8.6 and 1.8.7 (heckle doesn't support
-1.9.1 yet).
-
- [sudo] gem install heckle --version ">=1.4.2"
- spec spec/game/mastermind.rb --heckle Game::Mastermind
-
-=== New Matcher DSL
-
-We've added a new DSL for generating custom matchers very simply and cleanly.
-We'll still support the simple_matcher method, so never fear if you're using
-that, but we recommend that you start developing your new matchers with this
-new syntax.
-
- Spec::Matchers.create :be_a_multiple_of do |smaller|
- match do |bigger|
- bigger % smaller == 0
- end
- end
-
- 9.should be_a_multiple_of(3)
-
-See <tt>features/matchers/define_matcher.feature</tt> for more examples
diff --git a/vendor/gems/rspec-1.3.1/bin/autospec b/vendor/gems/rspec-1.3.1/bin/autospec
deleted file mode 100755
index 82a314f15..000000000
--- a/vendor/gems/rspec-1.3.1/bin/autospec
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-ENV['RSPEC'] = 'true' # allows autotest to discover rspec
-ENV['AUTOTEST'] = 'true' # allows autotest to run w/ color on linux
-system (RUBY_PLATFORM =~ /mswin|mingw/ ? 'autotest.bat' : 'autotest'), *ARGV \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/bin/spec b/vendor/gems/rspec-1.3.1/bin/spec
deleted file mode 100755
index d3dd2430f..000000000
--- a/vendor/gems/rspec-1.3.1/bin/spec
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env ruby
-rspec_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
-$LOAD_PATH.unshift(rspec_dir) unless $LOAD_PATH.include?(rspec_dir)
-require 'spec/autorun'
-exit ::Spec::Runner::CommandLine.run
diff --git a/vendor/gems/rspec-1.3.1/cucumber.yml b/vendor/gems/rspec-1.3.1/cucumber.yml
deleted file mode 100644
index 31733b5d8..000000000
--- a/vendor/gems/rspec-1.3.1/cucumber.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-default: --require features features -t ~@wip
-pending: --require features features-pending
-no_heckle: --require features features --exclude heckle
-focus: --require features features -t focus
-wip: --require features features -t @wip
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/README.txt b/vendor/gems/rspec-1.3.1/examples/failing/README.txt
deleted file mode 100644
index 7e9f49236..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/README.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-"Why have failing examples?", you might ask.
-
-They allow us to see failure messages. RSpec wants to provide meaningful and
-helpful failure messages. The failures in this directory not only provide you
-a way of seeing the failure messages, but they provide RSpec's own specs a way
-of describing what they should look like and ensuring they stay correct.
-
-To see the types of messages you can expect, stand in the root directory and
-run:
-
-bin/spec examples/failing/*.rb \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/diffing_spec.rb b/vendor/gems/rspec-1.3.1/examples/failing/diffing_spec.rb
deleted file mode 100644
index 85e13e8c0..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/diffing_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-describe "Running specs with --diff" do
- it "should print diff of different strings" do
- uk = <<-EOF
-RSpec is a
-behaviour driven development
-framework for Ruby
-EOF
- usa = <<-EOF
-RSpec is a
-behavior driven development
-framework for Ruby
-EOF
- usa.should == uk
- end
-
- class Animal
- def initialize(name,species)
- @name,@species = name,species
- end
-
- def inspect
- <<-EOA
-<Animal
-name=#{@name},
-species=#{@species}
->
- EOA
- end
- end
-
- it "should print diff of different objects' pretty representation" do
- expected = Animal.new "bob", "giraffe"
- actual = Animal.new "bob", "tortoise"
- expected.should eql(actual)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/failing_implicit_docstrings_example.rb b/vendor/gems/rspec-1.3.1/examples/failing/failing_implicit_docstrings_example.rb
deleted file mode 100644
index 7b0b86614..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/failing_implicit_docstrings_example.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# Run spec w/ -fs to see the output of this file
-
-describe "Failing examples with no descriptions" do
-
- # description is auto-generated as "should equal(5)" based on the last #should
- it do
- 3.should equal(2)
- 5.should equal(5)
- end
-
- it { 3.should be > 5 }
-
- it { ["a"].should include("b") }
-
- it { [1,2,3].should_not respond_to(:size) }
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/failure_in_after.rb b/vendor/gems/rspec-1.3.1/examples/failing/failure_in_after.rb
deleted file mode 100644
index a47338aee..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/failure_in_after.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-describe "This example" do
-
- it "should be listed as failing in after" do
- end
-
- after(:each) do
- NonExistentClass.new
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/failure_in_before.rb b/vendor/gems/rspec-1.3.1/examples/failing/failure_in_before.rb
deleted file mode 100644
index b0826604e..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/failure_in_before.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-describe "This example" do
-
- before(:each) do
- NonExistentClass.new
- end
-
- it "should be listed as failing in each" do
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/mocking_example.rb b/vendor/gems/rspec-1.3.1/examples/failing/mocking_example.rb
deleted file mode 100644
index 9c735e00b..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/mocking_example.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-describe "Mocker" do
-
- it "should be able to call mock()" do
- mock = mock("poke me")
- mock.should_receive(:poke)
- mock.poke
- end
-
- it "should fail when expected message not received" do
- mock = mock("poke me")
- mock.should_receive(:poke)
- end
-
- it "should fail when messages are received out of order" do
- mock = mock("one two three")
- mock.should_receive(:one).ordered
- mock.should_receive(:two).ordered
- mock.should_receive(:three).ordered
- mock.one
- mock.three
- mock.two
- end
-
- it "should get yelled at when sending unexpected messages" do
- mock = mock("don't talk to me")
- mock.should_not_receive(:any_message_at_all)
- mock.any_message_at_all
- end
-
- it "has a bug we need to fix" do
- pending "here is the bug" do
- # Actually, no. It's fixed. This will fail because it passes :-)
- mock = mock("Bug")
- mock.should_receive(:hello)
- mock.hello
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_flexmock.rb b/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_flexmock.rb
deleted file mode 100644
index 6e79ece0e..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_flexmock.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-# stub frameworks like to gum up Object, so this is deliberately
-# set NOT to run so that you don't accidentally run it when you
-# run this dir.
-
-# To run it, stand in this directory and say:
-#
-# RUN_FLEXMOCK_EXAMPLE=true ruby ../bin/spec mocking_with_flexmock.rb
-
-if ENV['RUN_FLEXMOCK_EXAMPLE']
- Spec::Runner.configure do |config|
- config.mock_with :flexmock
- end
-
- describe "Flexmocks" do
- it "should fail when the expected message is received with wrong arguments" do
- m = flexmock("now flex!")
- m.should_receive(:msg).with("arg").once
- m.msg("other arg")
- end
-
- it "should fail when the expected message is not received at all" do
- m = flexmock("now flex!")
- m.should_receive(:msg).with("arg").once
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_mocha.rb b/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_mocha.rb
deleted file mode 100644
index f14a1a3e5..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_mocha.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# stub frameworks like to gum up Object, so this is deliberately
-# set NOT to run so that you don't accidentally run it when you
-# run this dir.
-
-# To run it, stand in this directory and say:
-#
-# RUN_MOCHA_EXAMPLE=true ruby ../bin/spec mocking_with_mocha.rb
-
-if ENV['RUN_MOCHA_EXAMPLE']
- Spec::Runner.configure do |config|
- config.mock_with :mocha
- end
- describe "Mocha framework" do
- it "should should be made available by saying config.mock_with :mocha" do
- m = mock()
- m.expects(:msg).with("arg")
- m.msg
- end
- it "should should be made available by saying config.mock_with :mocha" do
- o = Object.new
- o.expects(:msg).with("arg")
- o.msg
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_rr.rb b/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_rr.rb
deleted file mode 100644
index 0d2b4fe04..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/mocking_with_rr.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-# stub frameworks like to gum up Object, so this is deliberately
-# set NOT to run so that you don't accidentally run it when you
-# run this dir.
-
-# To run it, stand in this directory and say:
-#
-# RUN_RR_EXAMPLE=true ruby ../bin/spec mocking_with_rr.rb
-
-if ENV['RUN_RR_EXAMPLE']
- Spec::Runner.configure do |config|
- config.mock_with :rr
- end
- describe "RR framework" do
- it "should should be made available by saying config.mock_with :rr" do
- o = Object.new
- mock(o).msg("arg")
- o.msg
- end
- it "should should be made available by saying config.mock_with :rr" do
- o = Object.new
- mock(o) do |m|
- m.msg("arg")
- end
- o.msg
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/partial_mock_example.rb b/vendor/gems/rspec-1.3.1/examples/failing/partial_mock_example.rb
deleted file mode 100644
index 7f8d081b1..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/partial_mock_example.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class MockableClass
- def self.find id
- return :original_return
- end
-end
-
-describe "A partial mock" do
-
- it "should work at the class level (but fail here due to the type mismatch)" do
- MockableClass.should_receive(:find).with(1).and_return {:stub_return}
- MockableClass.find("1").should equal(:stub_return)
- end
-
- it "should revert to the original after each spec" do
- MockableClass.find(1).should equal(:original_return)
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/pending_example.rb b/vendor/gems/rspec-1.3.1/examples/failing/pending_example.rb
deleted file mode 100644
index 825af2ed1..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/pending_example.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-describe "pending example (which is fixed)" do
- it %Q|reports "FIXED ... Expected ... to fail. No Error was raised."| do
- pending("for some reason") do
- # success
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/predicate_example.rb b/vendor/gems/rspec-1.3.1/examples/failing/predicate_example.rb
deleted file mode 100644
index aed8b14bd..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/predicate_example.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-class BddFramework
- def intuitive?
- true
- end
-
- def adopted_quickly?
- #this will cause failures because it reallly SHOULD be adopted quickly
- false
- end
-end
-
-describe "BDD framework" do
-
- before(:each) do
- @bdd_framework = BddFramework.new
- end
-
- it "should be adopted quickly" do
- #this will fail because it reallly SHOULD be adopted quickly
- @bdd_framework.should be_adopted_quickly
- end
-
- it "should be intuitive" do
- @bdd_framework.should be_intuitive
- end
-
- it "should not respond to test" do
- #this will fail
- @bdd_framework.test
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/raising_example.rb b/vendor/gems/rspec-1.3.1/examples/failing/raising_example.rb
deleted file mode 100644
index e40b51ec8..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/raising_example.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-describe "This example" do
-
- it "should show that a NoMethodError is raised but an Exception was expected" do
- proc { ''.nonexistent_method }.should raise_error
- end
-
- it "should pass" do
- proc { ''.nonexistent_method }.should raise_error(NoMethodError)
- end
-
- it "should show that a NoMethodError is raised but a SyntaxError was expected" do
- proc { ''.nonexistent_method }.should raise_error(SyntaxError)
- end
-
- it "should show that nothing is raised when SyntaxError was expected" do
- proc { }.should raise_error(SyntaxError)
- end
-
- it "should show that a NoMethodError is raised but a Exception was expected" do
- proc { ''.nonexistent_method }.should_not raise_error
- end
-
- it "should show that a NoMethodError is raised" do
- proc { ''.nonexistent_method }.should_not raise_error(NoMethodError)
- end
-
- it "should also pass" do
- proc { ''.nonexistent_method }.should_not raise_error(SyntaxError)
- end
-
- it "should show that a NoMethodError is raised when nothing expected" do
- proc { ''.nonexistent_method }.should_not raise_error(Exception)
- end
-
- it "should show that the wrong message was received" do
- proc { raise StandardError.new("what is an enterprise?") }.should raise_error(StandardError, "not this")
- end
-
- it "should show that the unexpected error/message was thrown" do
- proc { raise StandardError.new("abc") }.should_not raise_error(StandardError, "abc")
- end
-
- it "should pass too" do
- proc { raise StandardError.new("abc") }.should_not raise_error(StandardError, "xyz")
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/syntax_error_example.rb b/vendor/gems/rspec-1.3.1/examples/failing/syntax_error_example.rb
deleted file mode 100644
index c9bb90774..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/syntax_error_example.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-describe "when passing a block to a matcher" do
- it "you should use {} instead of do/end" do
- Object.new.should satisfy do
- "this block is being passed to #should instead of #satisfy - use {} instead"
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/team_spec.rb b/vendor/gems/rspec-1.3.1/examples/failing/team_spec.rb
deleted file mode 100644
index ab35b5274..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/team_spec.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-class Team
- attr_reader :players
- def initialize
- @players = Players.new
- end
-end
-
-class Players
- def initialize
- @players = []
- end
- def size
- @players.size
- end
- def include? player
- raise "player must be a string" unless player.is_a?(String)
- @players.include? player
- end
-end
-
-describe "A new team" do
-
- before(:each) do
- @team = Team.new
- end
-
- it "should have 3 players (failing example)" do
- @team.should have(3).players
- end
-
- it "should include some player (failing example)" do
- @team.players.should include("Some Player")
- end
-
- it "should include 5 (failing example)" do
- @team.players.should include(5)
- end
-
- it "should have no players"
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/failing/timeout_behaviour.rb b/vendor/gems/rspec-1.3.1/examples/failing/timeout_behaviour.rb
deleted file mode 100644
index 1a3615ff0..000000000
--- a/vendor/gems/rspec-1.3.1/examples/failing/timeout_behaviour.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-describe "Something really slow" do
- it "should be failed by RSpec when it takes longer than --timeout" do
- sleep(2)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/custom_formatter.rb b/vendor/gems/rspec-1.3.1/examples/passing/custom_formatter.rb
deleted file mode 100644
index 4c7482190..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/custom_formatter.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'spec/runner/formatter/progress_bar_formatter'
-
-# Example of a formatter with custom bactrace printing. Run me with:
-# ruby bin/spec examples/failing -r examples/passing/custom_formatter.rb -f CustomFormatter
-class CustomFormatter < Spec::Runner::Formatter::ProgressBarFormatter
- def backtrace_line(line)
- line.gsub(/([^:]*\.rb):(\d*)/) do
- "<a href=\"file://#{File.expand_path($1)}\">#{$1}:#{$2}</a> "
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/custom_matchers.rb b/vendor/gems/rspec-1.3.1/examples/passing/custom_matchers.rb
deleted file mode 100644
index 075bb542d..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/custom_matchers.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-module AnimalSpecHelper
- class Eat
- def initialize(food)
- @food = food
- end
-
- def matches?(animal)
- @animal = animal
- @animal.eats?(@food)
- end
-
- def failure_message
- "expected #{@animal} to eat #{@food}, but it does not"
- end
-
- def negative_failure_message
- "expected #{@animal} not to eat #{@food}, but it does"
- end
- end
-
- def eat(food)
- Eat.new(food)
- end
-end
-
-module Animals
- class Animal
- def eats?(food)
- return foods_i_eat.include?(food)
- end
- end
-
- class Mouse < Animal
- def foods_i_eat
- [:cheese]
- end
- end
-
- describe Mouse do
- include AnimalSpecHelper
- before(:each) do
- @mouse = Animals::Mouse.new
- end
-
- it "should eat cheese" do
- @mouse.should eat(:cheese)
- end
-
- it "should not eat cat" do
- @mouse.should_not eat(:cat)
- end
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/dynamic_spec.rb b/vendor/gems/rspec-1.3.1/examples/passing/dynamic_spec.rb
deleted file mode 100644
index 7c0372631..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/dynamic_spec.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-describe "The square root" do
- (1..10).each do |n|
- it "of #{n*n} should be #{n}" do
- Math.sqrt(n*n).should == n
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/file_accessor.rb b/vendor/gems/rspec-1.3.1/examples/passing/file_accessor.rb
deleted file mode 100644
index e67f44735..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/file_accessor.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class FileAccessor
- def open_and_handle_with(pathname, processor)
- pathname.open do |io|
- processor.process(io)
- end
- end
-end
-
-if __FILE__ == $0
- require 'examples/passing/io_processor'
- require 'pathname'
-
- accessor = FileAccessor.new
- io_processor = IoProcessor.new
- file = Pathname.new ARGV[0]
-
- accessor.open_and_handle_with(file, io_processor)
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/file_accessor_spec.rb b/vendor/gems/rspec-1.3.1/examples/passing/file_accessor_spec.rb
deleted file mode 100644
index 84428b6fc..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/file_accessor_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'examples/passing/file_accessor'
-require 'stringio'
-
-describe "A FileAccessor" do
- # This sequence diagram illustrates what this spec specifies.
- #
- # +--------------+ +----------+ +-------------+
- # | FileAccessor | | Pathname | | IoProcessor |
- # +--------------+ +----------+ +-------------+
- # | | |
- # open_and_handle_with | | |
- # -------------------->| | open | |
- # | |--------------->| | |
- # | | io | | |
- # | |<...............| | |
- # | | | process(io) |
- # | |---------------------------------->| |
- # | | | | |
- # | |<..................................| |
- # | | |
- #
- it "should open a file and pass it to the processor's process method" do
- # This is the primary actor
- accessor = FileAccessor.new
-
- # These are the primary actor's neighbours, which we mock.
- file = mock "Pathname"
- io_processor = mock "IoProcessor"
-
- io = StringIO.new "whatever"
- file.should_receive(:open).and_yield io
- io_processor.should_receive(:process).with(io)
-
- accessor.open_and_handle_with(file, io_processor)
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/filtered_formatter.rb b/vendor/gems/rspec-1.3.1/examples/passing/filtered_formatter.rb
deleted file mode 100644
index eaeabbcfa..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/filtered_formatter.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'spec/runner/formatter/nested_text_formatter'
-
-class FilteredFormatter < Spec::Runner::Formatter::NestedTextFormatter
- def add_example_group(example_group)
- if example_group.options[:show] == false
- @showing = false
- else
- @showing = true
- puts example_group.description
- end
- end
-
- def example_passed(example)
- puts " " << example.description if @showing unless example.options[:show] == false
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/filtered_formatter_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/filtered_formatter_example.rb
deleted file mode 100644
index 3c9d067f1..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/filtered_formatter_example.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-# This demonstrates how you can write custom formatters to handle arbitrary
-# options passed to the +describe+ and +it+ methods. To see it in action, stand
-# in the project root and say:
-#
-# bin/spec -r examples/passing/filtered_formatter.rb examples/passing/filtered_formatter_example.rb -f FilteredFormatter
-#
-# You should only see the examples and groups below that are not explicitly
-# marked :show => false
-#
-# group 1
-# example 1 a
-# group 3
-# example 3
-
-
-describe "group 1", :show => true do
- it "example 1 a", :show => true do
- end
- it "example 1 b", :show => false do
- end
-end
-
-describe "group 2", :show => false do
- it "example 2" do
- end
-end
-
-describe "group 3" do
- it "example 3" do
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/greeter_spec.rb b/vendor/gems/rspec-1.3.1/examples/passing/greeter_spec.rb
deleted file mode 100644
index 7d67e3187..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/greeter_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# greeter.rb
-#
-# Based on http://glu.ttono.us/articles/2006/12/19/tormenting-your-tests-with-heckle
-#
-# Run with:
-#
-# spec greeter_spec.rb --heckle Greeter
-#
-class Greeter
- def initialize(person = nil)
- @person = person
- end
-
- def greet
- @person.nil? ? "Hi there!" : "Hi #{@person}!"
- end
-end
-
-describe "Greeter" do
- it "should say Hi to person" do
- greeter = Greeter.new("Kevin")
- greeter.greet.should == "Hi Kevin!"
- end
-
- it "should say Hi to nobody" do
- greeter = Greeter.new
- # Uncomment the next line to make Heckle happy
- #greeter.greet.should == "Hi there!"
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/helper_method_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/helper_method_example.rb
deleted file mode 100644
index eb3dca92f..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/helper_method_example.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-module HelperMethodExample
- describe "an example group with helper a method" do
- def helper_method
- "received call"
- end
-
- it "should make that method available to specs" do
- helper_method.should == "received call"
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/implicit_docstrings_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/implicit_docstrings_example.rb
deleted file mode 100644
index 889cef425..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/implicit_docstrings_example.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# Run "spec implicit_docstrings_example.rb --format specdoc" to see the output of this file
-
-describe "Examples with no docstrings generate their own:" do
-
- specify { 3.should be < 5 }
-
- specify { ["a"].should include("a") }
-
- specify { [1,2,3].should respond_to(:size) }
-
-end
-
-describe 1 do
- it { should == 1 }
- it { should be < 2}
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/io_processor.rb b/vendor/gems/rspec-1.3.1/examples/passing/io_processor.rb
deleted file mode 100644
index 6b15147b6..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/io_processor.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class DataTooShort < StandardError; end
-
-class IoProcessor
- # Does some fancy stuff unless the length of +io+ is shorter than 32
- def process(io)
- raise DataTooShort if io.read.length < 32
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/io_processor_spec.rb b/vendor/gems/rspec-1.3.1/examples/passing/io_processor_spec.rb
deleted file mode 100644
index 1f5020e76..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/io_processor_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'examples/passing/io_processor'
-require 'stringio'
-
-describe "An IoProcessor" do
- before(:each) do
- @processor = IoProcessor.new
- end
-
- it "should raise nothing when the file is exactly 32 bytes" do
- lambda {
- @processor.process(StringIO.new("z"*32))
- }.should_not raise_error
- end
-
- it "should raise an exception when the file length is less than 32 bytes" do
- lambda {
- @processor.process(StringIO.new("z"*31))
- }.should raise_error(DataTooShort)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/mocking_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/mocking_example.rb
deleted file mode 100644
index 1d342c735..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/mocking_example.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-describe "A consumer of a mock" do
- it "should be able to send messages to the mock" do
- mock = mock("poke me")
- mock.should_receive(:poke)
- mock.poke
- end
-end
-
-describe "a mock" do
- it "should be able to mock the same message twice w/ different args" do
- mock = mock("mock")
- mock.should_receive(:msg).with(:arg1).and_return(:val1)
- mock.should_receive(:msg).with(:arg2).and_return(:val2)
- mock.msg(:arg1).should eql(:val1)
- mock.msg(:arg2).should eql(:val2)
- end
-
- it "should be able to mock the same message twice w/ different args in reverse order" do
- mock = mock("mock")
- mock.should_receive(:msg).with(:arg1).and_return(:val1)
- mock.should_receive(:msg).with(:arg2).and_return(:val2)
- mock.msg(:arg2).should eql(:val2)
- mock.msg(:arg1).should eql(:val1)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/multi_threaded_example_group_runner.rb b/vendor/gems/rspec-1.3.1/examples/passing/multi_threaded_example_group_runner.rb
deleted file mode 100644
index d5458ddf8..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/multi_threaded_example_group_runner.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-class MultiThreadedExampleGroupRunner < Spec::Runner::ExampleGroupRunner
- def initialize(options, arg)
- super(options)
- # configure these
- @thread_count = 4
- @thread_wait = 0
- end
-
- def run
- @threads = []
- q = Queue.new
- example_groups.each { |b| q << b}
- success = true
- @thread_count.times do
- @threads << Thread.new(q) do |queue|
- while not queue.empty?
- example_group = queue.pop
- success &= example_group.suite.run(nil)
- end
- end
- sleep @thread_wait
- end
- @threads.each {|t| t.join}
- success
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/nested_classes_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/nested_classes_example.rb
deleted file mode 100644
index ce5499591..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/nested_classes_example.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'examples/passing/stack'
-
-class StackExamples < Spec::ExampleGroup
- describe(Stack)
- before(:each) do
- @stack = Stack.new
- end
-end
-
-class EmptyStackExamples < StackExamples
- describe("when empty")
- it "should be empty" do
- @stack.should be_empty
- end
-end
-
-class AlmostFullStackExamples < StackExamples
- describe("when almost full")
- before(:each) do
- (1..9).each {|n| @stack.push n}
- end
- it "should be full" do
- @stack.should_not be_full
- end
-end
-
-class FullStackExamples < StackExamples
- describe("when full")
- before(:each) do
- (1..10).each {|n| @stack.push n}
- end
- it "should be full" do
- @stack.should be_full
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/options_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/options_example.rb
deleted file mode 100644
index bed3077eb..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/options_example.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# This demonstrates the use of the options hash to support custom reporting.
-# To see the result, run this command from the project root:
-#
-# bin/spec --require examples/passing/options_formatter.rb examples/passing/options_example.rb \
-# --format OptionsFormatter
-
-describe "this group will be reported", :report => true do
- it "this example will be reported", :report => true do
- # no-op
- end
-
- it "this example will not be reported", :report => false do
- # no-op
- end
-
- it "this example will also not be reported", :foo => 'bar' do
- # no-op
- end
-
- it "this example will also also not be reported" do
- # no-op
- end
-end
-
-describe "this group will not be reported", :report => false do
- it "though this example will", :report => true do
- # no-op
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/options_formatter.rb b/vendor/gems/rspec-1.3.1/examples/passing/options_formatter.rb
deleted file mode 100644
index b88bebbc5..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/options_formatter.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# This is an example of how you can use a custom formatter to do custom
-# reporting. This formatter will only report example groups and examples that
-# have :report => true (or anything truthy) in the declaration. See
-# options_example.rb in this directory.
-
-require 'spec/runner/formatter/base_text_formatter'
-
-class OptionsFormatter < Spec::Runner::Formatter::BaseTextFormatter
- def example_started(proxy)
- if proxy.options[:report]
- puts proxy.description
- end
- end
-
- def example_group_started(proxy)
- if proxy.options[:report]
- puts proxy.description
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/partial_mock_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/partial_mock_example.rb
deleted file mode 100644
index 38aafa149..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/partial_mock_example.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-class MockableClass
- def self.find id
- return :original_return
- end
-end
-
-describe "A partial mock" do
-
- it "should work at the class level" do
- MockableClass.should_receive(:find).with(1).and_return {:stub_return}
- MockableClass.find(1).should equal(:stub_return)
- end
-
- it "should revert to the original after each spec" do
- MockableClass.find(1).should equal(:original_return)
- end
-
- it "can be mocked w/ ordering" do
- MockableClass.should_receive(:msg_1).ordered
- MockableClass.should_receive(:msg_2).ordered
- MockableClass.should_receive(:msg_3).ordered
- MockableClass.msg_1
- MockableClass.msg_2
- MockableClass.msg_3
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/pending_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/pending_example.rb
deleted file mode 100644
index 7ce382742..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/pending_example.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-describe "pending example (using pending method)" do
- it %Q|should be reported as "PENDING: for some reason"| do
- pending("for some reason")
- end
-end
-
-describe "pending example (with no block)" do
- it %Q|should be reported as "PENDING: Not Yet Implemented"|
-end
-
-describe "pending example (with block for pending)" do
- it %Q|should have a failing block, passed to pending, reported as "PENDING: for some reason"| do
- pending("for some reason") do
- raise "some reason"
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/predicate_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/predicate_example.rb
deleted file mode 100644
index f10c386f3..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/predicate_example.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-class BddFramework
- def intuitive?
- true
- end
-
- def adopted_quickly?
- true
- end
-end
-
-describe "BDD framework" do
-
- before(:each) do
- @bdd_framework = BddFramework.new
- end
-
- it "should be adopted quickly" do
- @bdd_framework.should be_adopted_quickly
- end
-
- it "should be intuitive" do
- @bdd_framework.should be_intuitive
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/shared_example_group_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/shared_example_group_example.rb
deleted file mode 100644
index 39fecf612..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/shared_example_group_example.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-module SharedExampleGroupExample
- class OneThing
- def what_things_do
- "stuff"
- end
- end
-
- class AnotherThing
- def what_things_do
- "stuff"
- end
- end
-
- class YetAnotherThing
- def what_things_do
- "stuff"
- end
- end
-
- # A SharedExampleGroup is an example group that doesn't get run.
- # You can create one like this:
- share_examples_for "most things" do
- def helper_method
- "helper method"
- end
-
- it "should do what things do" do
- @thing.what_things_do.should == "stuff"
- end
- end
-
- describe OneThing do
- # Now you can include the shared example group like this, which
- # feels more like what you might say ...
- it_should_behave_like "most things"
-
- before(:each) { @thing = OneThing.new }
-
- it "should have access to helper methods defined in the shared example group" do
- helper_method.should == "helper method"
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/shared_stack_examples.rb b/vendor/gems/rspec-1.3.1/examples/passing/shared_stack_examples.rb
deleted file mode 100644
index e14fd146d..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/shared_stack_examples.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-shared_examples_for "non-empty Stack" do
-
- it { @stack.should_not be_empty }
-
- it "should return the top item when sent #peek" do
- @stack.peek.should == @last_item_added
- end
-
- it "should NOT remove the top item when sent #peek" do
- @stack.peek.should == @last_item_added
- @stack.peek.should == @last_item_added
- end
-
- it "should return the top item when sent #pop" do
- @stack.pop.should == @last_item_added
- end
-
- it "should remove the top item when sent #pop" do
- @stack.pop.should == @last_item_added
- unless @stack.empty?
- @stack.pop.should_not == @last_item_added
- end
- end
-
-end
-
-shared_examples_for "non-full Stack" do
-
- it { @stack.should_not be_full }
-
- it "should add to the top when sent #push" do
- @stack.push "newly added top item"
- @stack.peek.should == "newly added top item"
- end
-
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/simple_matcher_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/simple_matcher_example.rb
deleted file mode 100644
index 9bf7ce0a7..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/simple_matcher_example.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-describe "arrays" do
- Spec::Matchers.define :contain_same_elements_as do |expected|
- match do |actual|
- if actual.size == expected.size
- a, e = actual.dup, expected.dup
- until e.empty? do
- if i = a.index(e.pop) then a.delete_at(i) end
- end
- a.empty?
- else
- false
- end
- end
- end
-
- describe "can be matched by their contents disregarding order" do
- subject { [1,2,2,3] }
- it { should contain_same_elements_as([1,2,2,3]) }
- it { should contain_same_elements_as([2,3,2,1]) }
- it { should_not contain_same_elements_as([3,3,2,1]) }
- end
-
- describe "fail the match with different contents" do
- subject { [1,2,3] }
- it { should_not contain_same_elements_as([2,3,4])}
- it { should_not contain_same_elements_as([1,2,2,3])}
- it { should_not contain_same_elements_as([1,2])}
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/stack.rb b/vendor/gems/rspec-1.3.1/examples/passing/stack.rb
deleted file mode 100644
index 407173f7b..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/stack.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-class StackUnderflowError < RuntimeError
-end
-
-class StackOverflowError < RuntimeError
-end
-
-class Stack
-
- def initialize
- @items = []
- end
-
- def push object
- raise StackOverflowError if @items.length == 10
- @items.push object
- end
-
- def pop
- raise StackUnderflowError if @items.empty?
- @items.delete @items.last
- end
-
- def peek
- raise StackUnderflowError if @items.empty?
- @items.last
- end
-
- def empty?
- @items.empty?
- end
-
- def full?
- @items.length == 10
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/stack_spec.rb b/vendor/gems/rspec-1.3.1/examples/passing/stack_spec.rb
deleted file mode 100644
index 6d0d06366..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/stack_spec.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require 'examples/passing/stack'
-require 'examples/passing/shared_stack_examples'
-
-describe Stack, " (empty)" do
- before(:each) do
- @stack = Stack.new
- end
-
- # This uses @stack (because the described class is Stack) auto-generates the
- # description "should be empty"
- it { should be_empty }
-
- it_should_behave_like "non-full Stack"
-
- it "should complain when sent #peek" do
- lambda { @stack.peek }.should raise_error(StackUnderflowError)
- end
-
- it "should complain when sent #pop" do
- lambda { @stack.pop }.should raise_error(StackUnderflowError)
- end
-end
-
-describe Stack, " (with one item)" do
- before(:each) do
- @stack = Stack.new
- @stack.push 3
- @last_item_added = 3
- end
-
- it_should_behave_like "non-empty Stack"
- it_should_behave_like "non-full Stack"
-
-end
-
-describe Stack, " (with one item less than capacity)" do
- before(:each) do
- @stack = Stack.new
- (1..9).each { |i| @stack.push i }
- @last_item_added = 9
- end
-
- it_should_behave_like "non-empty Stack"
- it_should_behave_like "non-full Stack"
-end
-
-describe Stack, " (full)" do
- before(:each) do
- @stack = Stack.new
- (1..10).each { |i| @stack.push i }
- @last_item_added = 10
- end
-
- # NOTE that this one auto-generates the description "should be full"
- it { @stack.should be_full }
-
- it_should_behave_like "non-empty Stack"
-
- it "should complain on #push" do
- lambda { @stack.push Object.new }.should raise_error(StackOverflowError)
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/stack_spec_with_nested_example_groups.rb b/vendor/gems/rspec-1.3.1/examples/passing/stack_spec_with_nested_example_groups.rb
deleted file mode 100644
index 6e36df789..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/stack_spec_with_nested_example_groups.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'examples/passing/stack'
-require 'examples/passing/shared_stack_examples'
-
-describe Stack do
-
- before(:each) do
- @stack = Stack.new
- end
-
- describe "(empty)" do
-
- it { @stack.should be_empty }
-
- it_should_behave_like "non-full Stack"
-
- it "should complain when sent #peek" do
- lambda { @stack.peek }.should raise_error(StackUnderflowError)
- end
-
- it "should complain when sent #pop" do
- lambda { @stack.pop }.should raise_error(StackUnderflowError)
- end
-
- end
-
- describe "(with one item)" do
-
- before(:each) do
- @stack.push 3
- @last_item_added = 3
- end
-
- it_should_behave_like "non-empty Stack"
- it_should_behave_like "non-full Stack"
-
- end
-
- describe "(with one item less than capacity)" do
-
- before(:each) do
- (1..9).each { |i| @stack.push i }
- @last_item_added = 9
- end
-
- it_should_behave_like "non-empty Stack"
- it_should_behave_like "non-full Stack"
- end
-
- describe "(full)" do
-
- before(:each) do
- (1..10).each { |i| @stack.push i }
- @last_item_added = 10
- end
-
- it { @stack.should be_full }
-
- it_should_behave_like "non-empty Stack"
-
- it "should complain on #push" do
- lambda { @stack.push Object.new }.should raise_error(StackOverflowError)
- end
-
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/stubbing_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/stubbing_example.rb
deleted file mode 100644
index dab8982ee..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/stubbing_example.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-describe "A consumer of a stub" do
- it "should be able to stub methods on any Object" do
- obj = Object.new
- obj.stub!(:foobar).and_return {:return_value}
- obj.foobar.should equal(:return_value)
- end
-end
-
-class StubbableClass
- def self.find id
- return :original_return
- end
-end
-
-describe "A stubbed method on a class" do
- it "should return the stubbed value" do
- StubbableClass.stub!(:find).and_return(:stub_return)
- StubbableClass.find(1).should equal(:stub_return)
- end
-
- it "should revert to the original method after each spec" do
- StubbableClass.find(1).should equal(:original_return)
- end
-
- it "can stub! and mock the same message" do
- StubbableClass.stub!(:msg).and_return(:stub_value)
- StubbableClass.should_receive(:msg).with(:arg).and_return(:mock_value)
-
- StubbableClass.msg.should equal(:stub_value)
- StubbableClass.msg(:other_arg).should equal(:stub_value)
- StubbableClass.msg(:arg).should equal(:mock_value)
- StubbableClass.msg(:another_arg).should equal(:stub_value)
- StubbableClass.msg(:yet_another_arg).should equal(:stub_value)
- StubbableClass.msg.should equal(:stub_value)
- end
-end
-
-describe "A mock" do
- it "can stub!" do
- mock = mock("stubbing mock")
- mock.stub!(:msg).and_return(:value)
- (1..10).each {mock.msg.should equal(:value)}
- end
-
- it "can stub! and mock" do
- mock = mock("stubbing mock")
- mock.stub!(:stub_message).and_return(:stub_value)
- mock.should_receive(:mock_message).once.and_return(:mock_value)
- (1..10).each {mock.stub_message.should equal(:stub_value)}
- mock.mock_message.should equal(:mock_value)
- (1..10).each {mock.stub_message.should equal(:stub_value)}
- end
-
- it "can stub! and mock the same message" do
- mock = mock("stubbing mock")
- mock.stub!(:msg).and_return(:stub_value)
- mock.should_receive(:msg).with(:arg).and_return(:mock_value)
- mock.msg.should equal(:stub_value)
- mock.msg(:other_arg).should equal(:stub_value)
- mock.msg(:arg).should equal(:mock_value)
- mock.msg(:another_arg).should equal(:stub_value)
- mock.msg(:yet_another_arg).should equal(:stub_value)
- mock.msg.should equal(:stub_value)
- end
-end
-
-
diff --git a/vendor/gems/rspec-1.3.1/examples/passing/yielding_example.rb b/vendor/gems/rspec-1.3.1/examples/passing/yielding_example.rb
deleted file mode 100644
index e7b43fffa..000000000
--- a/vendor/gems/rspec-1.3.1/examples/passing/yielding_example.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-class MessageAppender
-
- def initialize(appendage)
- @appendage = appendage
- end
-
- def append_to(message)
- if_told_to_yield do
- message << @appendage
- end
- end
-
-end
-
-describe "a message expectation yielding to a block" do
- it "should yield if told to" do
- appender = MessageAppender.new("appended to")
- appender.should_receive(:if_told_to_yield).and_yield
- message = ""
- appender.append_to(message)
- message.should == "appended to"
- end
-
- it "should not yield if not told to" do
- appender = MessageAppender.new("appended to")
- appender.should_receive(:if_told_to_yield)
- message = ""
- appender.append_to(message)
- message.should == ""
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/examples/ruby1.9.compatibility/access_to_constants_spec.rb b/vendor/gems/rspec-1.3.1/examples/ruby1.9.compatibility/access_to_constants_spec.rb
deleted file mode 100644
index b34b8ba6d..000000000
--- a/vendor/gems/rspec-1.3.1/examples/ruby1.9.compatibility/access_to_constants_spec.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-# courtesy of Matthias Hennemeyer
-#
-# The following should pass against ruby 1.8 and 1.9. It currently only passes
-# 1.8 (as of 1/2/2009)
-#
-# Once cucumber supports ruby 1.9, this should be moved to cucumber scenarios instead.
-module Foo
- module Bar
-
- module ModuleInEnclosingModule;end
- class ClassInEnclosingModule;end
- def method_in_enclosing_module;end
- CONSTANT_IN_ENCLOSING_MODULE = 0
-
- describe "Examples trying to access constants defined in an enclosing module" do
-
- it "can access Modules" do
- ModuleInEnclosingModule
- end
- it "can access Classes" do
- ClassInEnclosingModule.new
- end
- it "can access CONSTANTS" do
- CONSTANT_IN_ENCLOSING_MODULE
- end
- it "can NOT access methods" do
- lambda {method_in_enclosing_module}.should raise_error(/undefined/)
- end
-
- describe "from a nested example group" do
-
- it "can access Modules" do
- ModuleInEnclosingModule
- end
- it "can access Classes" do
- ClassInEnclosingModule.new
- end
- it "can access CONSTANTS" do
- CONSTANT_IN_ENCLOSING_MODULE
- end
- it "can NOT access methods" do
- lambda {method_in_enclosing_module}.should raise_error(/undefined/)
- end
-
- end
-
- end
-
- describe "Examples trying to access constants defined in the example group" do
-
- module ModuleDefinedInGroup;end
- class ClassDefinedInGroup; end
- def method_defined_in_group; end
- CONSTANT_DEFINED_IN_GROUP = 0
-
- it "can access Modules" do
- ModuleDefinedInGroup
- end
- it "can access Classes" do
- ClassDefinedInGroup.new
- end
- it "can access CONSTANTS" do
- CONSTANT_DEFINED_IN_GROUP
- end
- it "can access methods" do
- method_defined_in_group
- end
-
- describe "that live inside a nested group" do
- it "can access Modules" do
- ModuleDefinedInGroup
- end
- it "can access Classes" do
- ClassDefinedInGroup.new
- end
- it "can access CONSTANTS" do
- CONSTANT_DEFINED_IN_GROUP
- end
- it "can access methods" do
- method_defined_in_group
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/features/before_and_after_blocks/before_and_after_blocks.feature b/vendor/gems/rspec-1.3.1/features/before_and_after_blocks/before_and_after_blocks.feature
deleted file mode 100644
index c1446bbb5..000000000
--- a/vendor/gems/rspec-1.3.1/features/before_and_after_blocks/before_and_after_blocks.feature
+++ /dev/null
@@ -1,167 +0,0 @@
-Feature: before and after blocks
-
- As a developer using RSpec
- I want to execute arbitrary code before and after each example
- So that I can control the environment in which it is run
-
- This is supported by the before and after methods which each take a symbol
- indicating the scope, and a block of code to execute.
-
- before(:each) blocks are run before each example
- before(:all) blocks are run once before all of the examples in a group
- before(:suite) blocks are run once before the entire suite
-
- after(:each) blocks are run after each example
- after(:all) blocks are run once after all of the examples in a group
- after(:suite) blocks are run once after the entire suite
-
- Before and after blocks are called in the following order:
- before suite
- before all
- before each
- after each
- after all
- after suite
-
- Before and after blocks can be defined in the example groups to which they
- apply or in a configuration. When defined in a configuration, they can be
- applied to all groups or subsets of all groups defined by example group
- types.
-
- Scenario: define before(:each) block in example group
- Given a file named "before_each_in_example_group_spec.rb" with:
- """
- class Thing
- def widgets
- @widgets ||= []
- end
- end
-
- describe Thing do
- before(:each) do
- @thing = Thing.new
- end
-
- context "initialized in before(:each)" do
- it "has 0 widgets" do
- @thing.should have(0).widgets
- end
-
- it "can get accept new widgets" do
- @thing.widgets << Object.new
- end
-
- it "does not share state across examples" do
- @thing.should have(0).widgets
- end
- end
- end
- """
- When I run "spec before_each_in_example_group_spec.rb"
- Then the stdout should include "3 examples, 0 failures"
-
- Scenario: define before(:all) block in example group
- Given a file named "before_all_in_example_group_spec.rb" with:
- """
- class Thing
- def widgets
- @widgets ||= []
- end
- end
-
- describe Thing do
- before(:all) do
- @thing = Thing.new
- end
-
- context "initialized in before(:all)" do
- it "has 0 widgets" do
- @thing.should have(0).widgets
- end
-
- it "can get accept new widgets" do
- @thing.widgets << Object.new
- end
-
- it "shares state across examples" do
- @thing.should have(1).widgets
- end
- end
- end
- """
- When I run "spec before_all_in_example_group_spec.rb"
- Then the stdout should include "3 examples, 0 failures"
-
- Scenario: define before and after blocks in configuration
- Given a file named "befores_in_configuration_spec.rb" with:
- """
- Spec::Runner.configure do |config|
- config.before(:suite) do
- $before_suite = "before suite"
- end
- config.before(:each) do
- @before_each = "before each"
- end
- config.before(:all) do
- @before_all = "before all"
- end
- end
-
- describe "stuff in before blocks" do
- describe "with :suite" do
- it "should be available in the example" do
- $before_suite.should == "before suite"
- end
- end
- describe "with :all" do
- it "should be available in the example" do
- @before_all.should == "before all"
- end
- end
- describe "with :each" do
- it "should be available in the example" do
- @before_each.should == "before each"
- end
- end
- end
- """
- When I run "spec befores_in_configuration_spec.rb"
- Then the stdout should include "3 examples, 0 failures"
-
- Scenario: before/after blocks are run in order
- Given a file named "ensure_block_order_spec.rb" with:
- """
- Spec::Runner.configure do |config|
- config.before(:suite) do
- puts "before suite"
- end
- config.after(:suite) do
- puts "after suite"
- end
- end
-
- describe "before and after callbacks" do
- before(:all) do
- puts "before all"
- end
-
- before(:each) do
- puts "before each"
- end
-
- after(:each) do
- puts "after each"
- end
-
- after(:all) do
- puts "after all"
- end
-
- it "gets run in order" do
-
- end
- end
- """
- When I run "spec ensure_block_order_spec.rb"
- Then the stdout should include /before suite\nbefore all\nbefore each\nafter each\n\.after all\n.*after suite/m
-
diff --git a/vendor/gems/rspec-1.3.1/features/command_line/line_number_option.feature b/vendor/gems/rspec-1.3.1/features/command_line/line_number_option.feature
deleted file mode 100644
index 7fc6fc50d..000000000
--- a/vendor/gems/rspec-1.3.1/features/command_line/line_number_option.feature
+++ /dev/null
@@ -1,56 +0,0 @@
-Feature: Spec and test together
-
- As an RSpec user
- I want to run one example identified by the line number
-
- Background:
- Given a file named "example.rb" with:
- """
- describe "a group" do
-
- it "has a first example" do
-
- end
-
- it "has a second example" do
-
- end
-
- end
- """
-
- Scenario: two examples - first example on declaration line
- When I run "spec example.rb:3 --format nested"
- Then the stdout should include "1 example, 0 failures"
- And the stdout should include "has a first example"
- But the stdout should not match "has a second example"
-
- Scenario: two examples - first example from line inside declaration
- When I run "spec example.rb:4 --format nested"
- Then the stdout should include "1 example, 0 failures"
- And the stdout should include "has a first example"
- But the stdout should not match "has a second example"
-
- Scenario: two examples - first example from line below declaration
- When I run "spec example.rb:6 --format nested"
- Then the stdout should include "1 example, 0 failures"
- And the stdout should include "has a first example"
- But the stdout should not match "has a second example"
-
- Scenario: two examples - second example from line below declaration
- When I run "spec example.rb:7 --format nested"
- Then the stdout should include "1 example, 0 failures"
- And the stdout should include "has a second example"
- But the stdout should not match "has a first example"
-
- Scenario: two examples - both examples from the group declaration
- When I run "spec example.rb:1 --format nested"
- Then the stdout should include "2 examples, 0 failures"
- And the stdout should include "has a second example"
- And the stdout should include "has a first example"
-
- Scenario: two examples - both examples from above the first example declaration
- When I run "spec example.rb:2 --format nested"
- Then the stdout should include "2 examples, 0 failures"
- And the stdout should include "has a second example"
- And the stdout should include "has a first example"
diff --git a/vendor/gems/rspec-1.3.1/features/command_line/line_number_option_with_example_with_no_name.feature b/vendor/gems/rspec-1.3.1/features/command_line/line_number_option_with_example_with_no_name.feature
deleted file mode 100644
index 244db51fb..000000000
--- a/vendor/gems/rspec-1.3.1/features/command_line/line_number_option_with_example_with_no_name.feature
+++ /dev/null
@@ -1,22 +0,0 @@
-Feature: Spec and test together
-
- As an RSpec user
- I want to run one example identified by the line number
-
- Background:
- Given a file named "example.rb" with:
- """
- describe 9 do
-
- it { should be > 8 }
-
- it { should be < 10 }
-
- end
- """
-
- Scenario: two examples - first example on declaration line
- When I run "spec example.rb:3 --format nested"
- Then the stdout should include "1 example, 0 failures"
- Then the stdout should include "should be > 8"
- But the stdout should not match "should be < 10"
diff --git a/vendor/gems/rspec-1.3.1/features/example_groups/define_example_attribute.feature b/vendor/gems/rspec-1.3.1/features/example_groups/define_example_attribute.feature
deleted file mode 100644
index 9fc72ac64..000000000
--- a/vendor/gems/rspec-1.3.1/features/example_groups/define_example_attribute.feature
+++ /dev/null
@@ -1,41 +0,0 @@
-Feature: Define example attribute
-
- In order to streamline process
- As an RSpec user
- I want to easily define helper methods that act as a variable assignment
-
- It is fairly common to start with a local variable in one example, use the same
- local variable in the next, and then extract the declaration of that variable
- to before(:each). This requires converting the locals to instance variables.
-
- This feature streamlines the process by defining a helper method so you can extract
- the duplication without having to change other references to the same variables
- to @instance_variables.
-
- Scenario:
- Given a file named "counter_spec.rb" with:
- """
- require 'spec/autorun'
-
- class Counter
- def initialize
- @count = 0
- end
- def count
- @count += 1
- end
- end
-
- describe Counter do
- let(:counter) { Counter.new }
- it "returns 1 the first time" do
- counter.count.should == 1
- end
- it "returns 2 the second time because the counter itself is cached by the 'assign' method" do
- counter.count
- counter.count.should == 2
- end
- end
- """
- When I run "spec counter_spec.rb"
- Then the stdout should include "2 examples, 0 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/example_groups/example_group_with_should_methods.feature b/vendor/gems/rspec-1.3.1/features/example_groups/example_group_with_should_methods.feature
deleted file mode 100644
index b5f76bf8a..000000000
--- a/vendor/gems/rspec-1.3.1/features/example_groups/example_group_with_should_methods.feature
+++ /dev/null
@@ -1,29 +0,0 @@
-Feature: Spec::ExampleGroup with should methods
-
- As an RSpec adopter accustomed to classes and methods
- I want to use should_* methods in an ExampleGroup
- So that I use RSpec with classes and methods that look more like RSpec examples
-
- Scenario Outline: Example Group class with should methods
- Given a file named "example_group_with_should_methods.rb" with:
- """
- require 'spec/autorun'
-
- class MySpec < Spec::ExampleGroup
- def should_pass_with_should
- 1.should == 1
- end
-
- def should_fail_with_should
- 1.should == 2
- end
- end
- """
- When I run "<Command> example_group_with_should_methods.rb"
- Then the exit code should be 256
- And the stdout should include "2 examples, 1 failure"
-
- Scenarios: Run with ruby and spec
- | Command |
- | ruby |
- | spec |
diff --git a/vendor/gems/rspec-1.3.1/features/example_groups/implicit_docstrings.feature b/vendor/gems/rspec-1.3.1/features/example_groups/implicit_docstrings.feature
deleted file mode 100644
index b83a3470c..000000000
--- a/vendor/gems/rspec-1.3.1/features/example_groups/implicit_docstrings.feature
+++ /dev/null
@@ -1,59 +0,0 @@
-Feature: implicit docstrings
-
- As an RSpec user
- I want examples to generate their own names
- So that I can reduce duplication between example names and example code
-
- Scenario Outline: run passing examples
- Given a file named "implicit_docstrings_example.rb" with:
- """
- require 'spec/autorun'
- describe "Examples with no docstrings generate their own:" do
-
- specify { 3.should be < 5 }
-
- specify { ["a"].should include("a") }
-
- specify { [1,2,3].should respond_to(:size) }
-
- end
- """
-
- When I run "<Command> implicit_docstrings_example.rb -fs"
-
- Then the stdout should include /should be < 5/
- And the stdout should include /should include "a"/
- And the stdout should include /should respond to #size/
-
- Scenarios: Run with ruby and spec
- | Command |
- | ruby |
- | spec |
-
- Scenario Outline: run failing examples
- Given a file named "failing_implicit_docstrings_example.rb" with:
- """
- require 'spec/autorun'
- describe "Failing examples with no descriptions" do
-
- # description is auto-generated as "should equal(5)" based on the last #should
- it do
- 3.should equal(2)
- 5.should equal(5)
- end
-
- it { 3.should be > 5 }
-
- it { ["a"].should include("b") }
-
- it { [1,2,3].should_not respond_to(:size) }
-
- end
- """
-
- When I run "<Command> failing_implicit_docstrings_example.rb -fs"
-
- Then the stdout should include /should equal 2/
- And the stdout should include /should be > 5/
- And the stdout should include /should include "b"/
- And the stdout should include /should not respond to #size/
diff --git a/vendor/gems/rspec-1.3.1/features/example_groups/nested_groups.feature b/vendor/gems/rspec-1.3.1/features/example_groups/nested_groups.feature
deleted file mode 100644
index 6d8c7aadf..000000000
--- a/vendor/gems/rspec-1.3.1/features/example_groups/nested_groups.feature
+++ /dev/null
@@ -1,32 +0,0 @@
-Feature: Nested example groups
-
- As an RSpec user
- I want to nest examples groups
- So that I can better organize my examples
-
- Scenario Outline: Nested example groups
- Given a file named "nested_example_groups.rb" with:
- """
- require 'spec/autorun'
-
- describe "Some Object" do
- describe "with some more context" do
- it "should do this" do
- true.should be_true
- end
- end
- describe "with some other context" do
- it "should do that" do
- false.should be_false
- end
- end
- end
- """
- When I run "<Command> nested_example_groups.rb -fs"
- Then the stdout should include /Some Object with some more context/
- And the stdout should include /Some Object with some other context/
-
- Scenarios: Run with ruby and spec
- | Command |
- | ruby |
- | spec |
diff --git a/vendor/gems/rspec-1.3.1/features/expectations/customized_message.feature b/vendor/gems/rspec-1.3.1/features/expectations/customized_message.feature
deleted file mode 100644
index c19490c7a..000000000
--- a/vendor/gems/rspec-1.3.1/features/expectations/customized_message.feature
+++ /dev/null
@@ -1,54 +0,0 @@
-Feature: customized message
-
- In order to get the feedback I want
- As an RSpec user
- I want to customize the failure message per example
-
- Scenario: one additional method
- Given a file named "node_spec.rb.rb" with:
- """
- class Node
- def initialize(state=:waiting)
- @state = state
- end
- def state
- @state
- end
- def waiting?
- @state == :waiting
- end
- def started?
- @state == :started
- end
- def start
- @state = :started
- end
- end
-
- describe "a new Node" do
- it "should be waiting" do
- node = Node.new(:started) #start w/ started to trigger failure
- node.should be_waiting, "node.state: #{node.state} (first example)"
- end
-
- it "should not be started" do
- node = Node.new(:started) #start w/ started to trigger failure
- node.should_not be_started, "node.state: #{node.state} (second example)"
- end
- end
-
- describe "node.start" do
- it "should change the state" do
- node = Node.new(:started) #start w/ started to trigger failure
- lambda {node.start}.should change{node.state}, "expected a change"
- end
- end
-
- """
- When I run "spec node_spec.rb.rb --format specdoc"
- Then the stdout should include "3 examples, 3 failures"
- And the stdout should not match "to return true, got false"
- And the stdout should not match "to return false, got true"
- And the stdout should include "node.state: started (first example)"
- And the stdout should include "node.state: started (second example)"
- And the stdout should include "expected a change"
diff --git a/vendor/gems/rspec-1.3.1/features/expectations/expect_change.feature b/vendor/gems/rspec-1.3.1/features/expectations/expect_change.feature
deleted file mode 100644
index f644b52e7..000000000
--- a/vendor/gems/rspec-1.3.1/features/expectations/expect_change.feature
+++ /dev/null
@@ -1,65 +0,0 @@
-Feature: expect change
-
- Expect some code (wrapped in a proc) to change the state of some object.
-
- Scenario: expecting change
- Given a file named "expect_change.rb" with:
- """
- class Counter
- class << self
- def increment
- @count ||= 0
- @count += 1
- end
-
- def count
- @count ||= 0
- end
- end
- end
-
- describe Counter, "#increment" do
- it "should increment the count" do
- expect{Counter.increment}.to change{Counter.count}.from(0).to(1)
- end
-
- # deliberate failure
- it "should increment the count by 2" do
- expect{Counter.increment}.to change{Counter.count}.by(2)
- end
- end
- """
- When I run "spec expect_change.rb"
- Then the stdout should include "2 examples, 1 failure"
- Then the stdout should include "should have been changed by 2, but was changed by 1"
-
- Scenario: expecting no change
- Given a file named "expect_no_change.rb" with:
- """
- class Counter
- class << self
- def increment
- @count ||= 0
- @count += 1
- end
-
- def count
- @count ||= 0
- end
- end
- end
-
- describe Counter, "#increment" do
- it "should not increment the count by 2" do
- expect{Counter.increment}.to_not change{Counter.count}.from(0).to(2)
- end
-
- # deliberate failure
- it "should not increment the count by 1" do
- expect{Counter.increment}.to_not change{Counter.count}.by(1)
- end
- end
- """
- When I run "spec expect_no_change.rb"
- Then the stdout should include "2 examples, 1 failure"
- Then the stdout should include "should not have changed, but did change from 1 to 2"
diff --git a/vendor/gems/rspec-1.3.1/features/expectations/expect_error.feature b/vendor/gems/rspec-1.3.1/features/expectations/expect_error.feature
deleted file mode 100644
index 7c48e7cef..000000000
--- a/vendor/gems/rspec-1.3.1/features/expectations/expect_error.feature
+++ /dev/null
@@ -1,44 +0,0 @@
-Feature: expect error
-
- Expect a proc to change the state of some object.
-
- Scenario: expect error
- Given a file named "expect_error.rb" with:
- """
- describe Object, "#non_existent_message" do
- it "should raise" do
- expect{Object.non_existent_message}.to raise_error(NameError)
- end
- end
-
- #deliberate failure
- describe Object, "#public_instance_methods" do
- it "should raise" do
- expect{Object.public_instance_methods}.to raise_error(NameError)
- end
- end
- """
- When I run "spec expect_error.rb"
- Then the stdout should include "2 examples, 1 failure"
- Then the stdout should include "expected NameError but nothing was raised"
-
- Scenario: expect no error
- Given a file named "expect_no_error.rb" with:
- """
- describe Object, "#public_instance_methods" do
- it "should not raise" do
- expect{Object.public_instance_methods}.to_not raise_error(NameError)
- end
- end
-
- #deliberate failure
- describe Object, "#non_existent_message" do
- it "should not raise" do
- expect{Object.non_existent_message}.to_not raise_error(NameError)
- end
- end
- """
- When I run "spec expect_no_error.rb"
- Then the stdout should include "2 examples, 1 failure"
- Then the stdout should include "undefined method `non_existent_message'"
-
diff --git a/vendor/gems/rspec-1.3.1/features/extensions/custom_example_group.feature b/vendor/gems/rspec-1.3.1/features/extensions/custom_example_group.feature
deleted file mode 100644
index 70974dba7..000000000
--- a/vendor/gems/rspec-1.3.1/features/extensions/custom_example_group.feature
+++ /dev/null
@@ -1,19 +0,0 @@
-Feature: custom example group
-
- Scenario: simple custom example group
- Given a file named "custom_example_group_spec.rb" with:
- """
- class CustomGroup < Spec::ExampleGroup
- end
-
- Spec::Example::ExampleGroupFactory.default(CustomGroup)
-
- describe "a custom group set as the default" do
- it "becomes the default base class for example groups" do
- CustomGroup.should === self
- end
- end
- """
- When I run "spec custom_example_group_spec.rb"
- Then the stdout should include "1 example, 0 failures"
-
diff --git a/vendor/gems/rspec-1.3.1/features/formatters/custom_formatter.feature b/vendor/gems/rspec-1.3.1/features/formatters/custom_formatter.feature
deleted file mode 100644
index 191ac369b..000000000
--- a/vendor/gems/rspec-1.3.1/features/formatters/custom_formatter.feature
+++ /dev/null
@@ -1,30 +0,0 @@
-Feature: custom formatters
-
- In order to format output/reporting to my particular needs
- As an RSpec user
- I want to create my own custom output formatters
-
- Scenario: specdoc format
- Given a file named "custom_formatter.rb" with:
- """
- require 'spec/runner/formatter/base_formatter'
- class CustomFormatter < Spec::Runner::Formatter::BaseFormatter
- def initialize(options, output)
- @output = output
- end
- def example_started(proxy)
- @output << "example: " << proxy.description
- end
- end
- """
- And a file named "simple_example_spec.rb" with:
- """
- describe "my group" do
- specify "my example" do
- end
- end
- """
-
- When I run "spec simple_example_spec.rb --require custom_formatter.rb --format CustomFormatter"
- Then the exit code should be 0
- And the stdout should include "example: my example"
diff --git a/vendor/gems/rspec-1.3.1/features/formatters/nested_formatter.feature b/vendor/gems/rspec-1.3.1/features/formatters/nested_formatter.feature
deleted file mode 100644
index abfe14ab8..000000000
--- a/vendor/gems/rspec-1.3.1/features/formatters/nested_formatter.feature
+++ /dev/null
@@ -1,32 +0,0 @@
-Feature: nested formatter
-
- The nested formatter follows the nesting in each spec.
-
- Scenario: parallel contexts
- Given a file named "simple_example_spec.rb" with:
- """
- describe "first group" do
- context "with context" do
- specify "does something" do
- end
- end
- end
- describe "second group" do
- context "with context" do
- specify "does something" do
- end
- end
- end
- """
-
- When I run "spec simple_example_spec.rb --format nested"
- Then the exit code should be 0
- And the stdout should include
- """
- first group
- with context
- does something
- second group
- with context
- does something
- """
diff --git a/vendor/gems/rspec-1.3.1/features/interop/cucumber_stubs_dont_leak.feature b/vendor/gems/rspec-1.3.1/features/interop/cucumber_stubs_dont_leak.feature
deleted file mode 100644
index 123ace2a7..000000000
--- a/vendor/gems/rspec-1.3.1/features/interop/cucumber_stubs_dont_leak.feature
+++ /dev/null
@@ -1,11 +0,0 @@
-Feature: Cucumber Stubs Don't Leak
- In order to not explode from frustration
- a developer
- does not want rspec stubs to leak between cucumber scenarios
-
- Scenario: Create a stub
- When I stub "nap" on "Time" to "When I Get Cranky"
- Then calling "nap" on "Time" should return "When I Get Cranky"
-
- Scenario: Check to see if the stub leaked
- Then "nap" should not be defined on "Time"
diff --git a/vendor/gems/rspec-1.3.1/features/interop/examples_and_tests_together.feature b/vendor/gems/rspec-1.3.1/features/interop/examples_and_tests_together.feature
deleted file mode 100644
index dda11af2f..000000000
--- a/vendor/gems/rspec-1.3.1/features/interop/examples_and_tests_together.feature
+++ /dev/null
@@ -1,84 +0,0 @@
-Feature: Spec and test together
-
- As an RSpec adopter with existing Test::Unit tests
- I want to run a few specs alongside my existing Test::Unit tests
- So that I can experience a smooth, gradual migration path
-
- Scenario Outline: Run specs and tests together
- Given a file named "spec_and_test_together.rb" with:
- """
- require 'spec/autorun'
- require 'spec/test/unit'
-
- describe "An Example" do
- it "should pass with assert" do
- assert true
- end
-
- it "should fail with assert" do
- assert false
- end
-
- it "should pass with should" do
- 1.should == 1
- end
-
- it "should fail with should" do
- 1.should == 2
- end
- end
-
- class ATest < Test::Unit::TestCase
- def test_should_pass_with_assert
- assert true
- end
-
- def test_should_fail_with_assert
- assert false
- end
-
- def test_should_pass_with_should
- 1.should == 1
- end
-
- def test_should_fail_with_should
- 1.should == 2
- end
-
- def setup
- @from_setup ||= 3
- @from_setup += 1
- end
-
- def test_should_fail_with_setup_method_variable
- @from_setup.should == 40
- end
-
- before do
- @from_before = @from_setup + 1
- end
-
- def test_should_fail_with_before_block_variable
- @from_before.should == 50
- end
-
- define_method :"test: should run with strange name" do
- assert true
- end
- end
- """
-
- When I run "<Command> spec_and_test_together.rb -fs"
-
- Then the exit code should be 256
- And the stdout should include "ATest"
- And the stdout should include "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
- And the stdout should include "'An Example should fail with should' FAILED"
- And the stdout should include "11 examples, 6 failures"
- And the stdout should include /expected: 40,\s*got: 4/m
- And the stdout should include /expected: 50,\s*got: 5/m
-
- Scenarios: run with ruby and spec
- | Command |
- | ruby |
- | spec |
diff --git a/vendor/gems/rspec-1.3.1/features/interop/rspec_output.feature b/vendor/gems/rspec-1.3.1/features/interop/rspec_output.feature
deleted file mode 100644
index 3a34d21f7..000000000
--- a/vendor/gems/rspec-1.3.1/features/interop/rspec_output.feature
+++ /dev/null
@@ -1,25 +0,0 @@
-Feature: spec output
-
- When running in interop mode with test/unit, RSpec will output
- the RSpec summary, but not the test/unit summary.
-
- Scenario Outline: Interop mode with test/unit
- Given a file named "simple_spec.rb" with:
- """
- require 'spec/autorun'
-
- describe "Running an Example" do
- it "should not output twice" do
- true.should be_true
- end
- end
- """
- When I run "<Command> simple_spec.rb"
- Then the exit code should be 0
- And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
- And the stdout should include "1 example, 0 failures"
-
- Scenarios: Run with ruby and CommandLine object
- | Command |
- | ruby |
- | cmdline.rb |
diff --git a/vendor/gems/rspec-1.3.1/features/interop/test_but_not_test_unit.feature b/vendor/gems/rspec-1.3.1/features/interop/test_but_not_test_unit.feature
deleted file mode 100644
index fc87bed2f..000000000
--- a/vendor/gems/rspec-1.3.1/features/interop/test_but_not_test_unit.feature
+++ /dev/null
@@ -1,26 +0,0 @@
-Feature: Test is defined, but not Test::Unit
-
- As an RSpec user who has my own library named Test (but not Test::Unit)
- I want to run examples without getting Test::Unit NameErrors
-
- Scenario Outline: Spec including Test const but not Test::Unit
- Given a file named "spec_including_test_but_not_unit.rb" with:
- """
- require 'spec/autorun'
-
- module Test
- end
-
- describe "description" do
- it "should description" do
- 1.should == 1
- end
- end
- """
- When I run "<Command> spec_including_test_but_not_unit.rb"
- Then the stderr should not match "Test::Unit"
-
- Scenarios: Run with ruby and spec
- | Command |
- | ruby |
- | spec |
diff --git a/vendor/gems/rspec-1.3.1/features/interop/test_case_with_should_methods.feature b/vendor/gems/rspec-1.3.1/features/interop/test_case_with_should_methods.feature
deleted file mode 100644
index db6a4abf1..000000000
--- a/vendor/gems/rspec-1.3.1/features/interop/test_case_with_should_methods.feature
+++ /dev/null
@@ -1,46 +0,0 @@
-Feature: Test::Unit::TestCase extended by rspec with should methods
-
- As an RSpec adopter with existing Test::Unit tests
- I want to use should_* methods in a Test::Unit::TestCase
- So that I use RSpec with classes and methods that look more like RSpec examples
-
- Scenario Outline: TestCase with should methods
- Given a file named "test_case_with_should_methods.rb" with:
- """
- require 'spec/autorun'
- require 'spec/test/unit'
-
- class MyTest < Test::Unit::TestCase
- def should_pass_with_should
- 1.should == 1
- end
-
- def should_fail_with_should
- 1.should == 2
- end
-
- def should_pass_with_assert
- assert true
- end
-
- def should_fail_with_assert
- assert false
- end
-
- def test
- raise "This is not a real test"
- end
-
- def test_ify
- raise "This is a real test"
- end
- end
- """
- When I run "<Command> test_case_with_should_methods.rb"
- Then the exit code should be 256
- And the stdout should include "5 examples, 3 failures"
-
- Scenarios: Run with ruby and spec
- | Command |
- | ruby |
- | spec |
diff --git a/vendor/gems/rspec-1.3.1/features/load_paths/add_lib_to_load_path.feature b/vendor/gems/rspec-1.3.1/features/load_paths/add_lib_to_load_path.feature
deleted file mode 100644
index 81513ec75..000000000
--- a/vendor/gems/rspec-1.3.1/features/load_paths/add_lib_to_load_path.feature
+++ /dev/null
@@ -1,20 +0,0 @@
-Feature: add ./lib to load path
- In order to ...
- As a spec author
- I want rspec to add ./lib to the load path
-
- Scenario: spec helper
- Given a directory named "spec"
- And a file named "example.rb" with:
- """
- describe $LOAD_PATH do
- it "begins with 'lib' in the current directory in the load path" do
- libdir = File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
- $LOAD_PATH.should include(libdir)
- end
- end
- """
- When I run "spec example.rb"
- Then the stdout should include "1 example, 0 failures"
- And the exit code should be 0
-
diff --git a/vendor/gems/rspec-1.3.1/features/load_paths/add_spec_to_load_path.feature b/vendor/gems/rspec-1.3.1/features/load_paths/add_spec_to_load_path.feature
deleted file mode 100644
index b216ebedd..000000000
--- a/vendor/gems/rspec-1.3.1/features/load_paths/add_spec_to_load_path.feature
+++ /dev/null
@@ -1,20 +0,0 @@
-Feature: add 'spec' to load path
- In order to ...
- As a spec author
- I want rspec to add 'spec to the load path
-
- Scenario: add 'spec' to load path
- Given a directory named "spec"
- And a file named "example.rb" with:
- """
- describe $LOAD_PATH do
- it "includes with 'spec' in the current directory in the load path" do
- specdir = File.expand_path(File.join(File.dirname(__FILE__), 'spec'))
- $LOAD_PATH.should include(specdir)
- end
- end
- """
- When I run "spec example.rb"
- Then the stdout should include "1 example, 0 failures"
- And the exit code should be 0
-
diff --git a/vendor/gems/rspec-1.3.1/features/matchers/define_diffable_matcher.feature b/vendor/gems/rspec-1.3.1/features/matchers/define_diffable_matcher.feature
deleted file mode 100644
index 8715641ec..000000000
--- a/vendor/gems/rspec-1.3.1/features/matchers/define_diffable_matcher.feature
+++ /dev/null
@@ -1,26 +0,0 @@
-Feature: define diffable matcher
-
- When a matcher is defined as diffable, and the --diff
- flag is set, the output will include a diff of the submitted
- objects.
-
- Scenario: define a diffable matcher
- Given a file named "diffable_matcher_spec.rb" with:
- """
- Spec::Matchers.define :be_just_like do |expected|
- match do |actual|
- actual == expected
- end
-
- diffable
- end
-
- describe "this" do
- it {should be_just_like("that")}
- end
- """
- When I run "spec diffable_matcher_spec.rb --diff"
- Then the exit code should be 256
-
- And the stdout should include "should be just like \"that\""
- And the stdout should include "Diff:\n@@ -1,2 +1,2 @@\n-that\n+this"
diff --git a/vendor/gems/rspec-1.3.1/features/matchers/define_matcher.feature b/vendor/gems/rspec-1.3.1/features/matchers/define_matcher.feature
deleted file mode 100644
index 79edae73f..000000000
--- a/vendor/gems/rspec-1.3.1/features/matchers/define_matcher.feature
+++ /dev/null
@@ -1,179 +0,0 @@
-Feature: define matcher
-
- In order to express my domain clearly in my code examples
- As an RSpec user
- I want a shortcut to define custom matchers
-
- Scenario: define a matcher with default messages
- Given a file named "matcher_with_default_message_spec.rb" with:
- """
- Spec::Matchers.define :be_a_multiple_of do |expected|
- match do |actual|
- actual % expected == 0
- end
- end
-
- describe 9 do
- it {should be_a_multiple_of(3)}
- end
-
- describe 9 do
- it {should_not be_a_multiple_of(4)}
- end
-
- # fail intentionally to generate expected output
- describe 9 do
- it {should be_a_multiple_of(4)}
- end
-
- # fail intentionally to generate expected output
- describe 9 do
- it {should_not be_a_multiple_of(3)}
- end
-
- """
- When I run "spec matcher_with_default_message_spec.rb --format specdoc"
- Then the exit code should be 256
-
- And the stdout should include "should be a multiple of 3"
- And the stdout should include "should not be a multiple of 4"
- And the stdout should include "should be a multiple of 4 (FAILED - 1)"
- And the stdout should include "should not be a multiple of 3 (FAILED - 2)"
-
- And the stdout should include "4 examples, 2 failures"
- And the stdout should include "expected 9 to be a multiple of 4"
- And the stdout should include "expected 9 not to be a multiple of 3"
-
- Scenario: overriding the failure_message_for_should
- Given a file named "matcher_with_failure_message_spec.rb" with:
- """
- Spec::Matchers.define :be_a_multiple_of do |expected|
- match do |actual|
- actual % expected == 0
- end
- failure_message_for_should do |actual|
- "expected that #{actual} would be a multiple of #{expected}"
- end
- end
-
- # fail intentionally to generate expected output
- describe 9 do
- it {should be_a_multiple_of(4)}
- end
- """
- When I run "spec matcher_with_failure_message_spec.rb"
- Then the exit code should be 256
- And the stdout should include "1 example, 1 failure"
- And the stdout should include "expected that 9 would be a multiple of 4"
-
- Scenario: overriding the failure_message_for_should_not
- Given a file named "matcher_with_failure_for_message_spec.rb" with:
- """
- Spec::Matchers.define :be_a_multiple_of do |expected|
- match do |actual|
- actual % expected == 0
- end
- failure_message_for_should_not do |actual|
- "expected that #{actual} would not be a multiple of #{expected}"
- end
- end
-
- # fail intentionally to generate expected output
- describe 9 do
- it {should_not be_a_multiple_of(3)}
- end
- """
- When I run "spec matcher_with_failure_for_message_spec.rb"
- Then the exit code should be 256
- And the stdout should include "1 example, 1 failure"
- And the stdout should include "expected that 9 would not be a multiple of 3"
-
- Scenario: overriding the description
- Given a file named "matcher_overriding_description_spec.rb" with:
- """
- Spec::Matchers.define :be_a_multiple_of do |expected|
- match do |actual|
- actual % expected == 0
- end
- description do
- "be multiple of #{expected}"
- end
- end
-
- describe 9 do
- it {should be_a_multiple_of(3)}
- end
-
- describe 9 do
- it {should_not be_a_multiple_of(4)}
- end
- """
- When I run "spec matcher_overriding_description_spec.rb --format specdoc"
- Then the exit code should be 0
- And the stdout should include "2 examples, 0 failures"
- And the stdout should include "should be multiple of 3"
- And the stdout should include "should not be multiple of 4"
-
- Scenario: with no args
- Given a file named "matcher_with_no_args_spec.rb" with:
- """
- Spec::Matchers.define :have_7_fingers do
- match do |thing|
- thing.fingers.length == 7
- end
- end
-
- class Thing
- def fingers; (1..7).collect {"finger"}; end
- end
-
- describe Thing do
- it {should have_7_fingers}
- end
- """
- When I run "spec matcher_with_no_args_spec.rb --format specdoc"
- Then the exit code should be 0
- And the stdout should include "1 example, 0 failures"
- And the stdout should include "should have 7 fingers"
-
- Scenario: with multiple args
- Given a file named "matcher_with_multiple_args_spec.rb" with:
- """
- Spec::Matchers.define :be_the_sum_of do |a,b,c,d|
- match do |sum|
- a + b + c + d == sum
- end
- end
-
- describe 10 do
- it {should be_the_sum_of(1,2,3,4)}
- end
- """
- When I run "spec matcher_with_multiple_args_spec.rb --format specdoc"
- Then the exit code should be 0
- And the stdout should include "1 example, 0 failures"
- And the stdout should include "should be the sum of 1, 2, 3, and 4"
-
- Scenario: with helper methods
- Given a file named "matcher_with_internal_helper_spec.rb" with:
- """
- Spec::Matchers.define :have_same_elements_as do |sample|
- match do |actual|
- similar?(sample, actual)
- end
-
- def similar?(a, b)
- a.sort == b.sort
- end
- end
-
- describe "these two arrays" do
- specify "should be similar" do
- [1,2,3].should have_same_elements_as([2,3,1])
- end
- end
- """
- When I run "spec matcher_with_internal_helper_spec.rb"
- Then the exit code should be 0
- And the stdout should include "1 example, 0 failures"
-
diff --git a/vendor/gems/rspec-1.3.1/features/matchers/define_matcher_outside_rspec.feature b/vendor/gems/rspec-1.3.1/features/matchers/define_matcher_outside_rspec.feature
deleted file mode 100644
index 5e7d705c2..000000000
--- a/vendor/gems/rspec-1.3.1/features/matchers/define_matcher_outside_rspec.feature
+++ /dev/null
@@ -1,38 +0,0 @@
-Feature: define matcher outside rspec
-
- In order to express my domain clearly in my code examples
- As a non-rspec user
- I want a shortcut to define custom matchers
-
- Scenario: define a matcher with default messages
- Given a file named "test_multiples.rb" with:
- """
- require 'test/unit'
- require 'spec/expectations'
-
- Spec::Matchers.define :be_a_multiple_of do |expected|
- match do |actual|
- actual % expected == 0
- end
- end
-
- class Test::Unit::TestCase
- include Spec::Matchers
- end
-
- class TestMultiples < Test::Unit::TestCase
-
- def test_9_should_be_a_multiple_of_3
- 9.should be_a_multiple_of(3)
- end
-
- def test_9_should_be_a_multiple_of_4
- 9.should be_a_multiple_of(4)
- end
-
- end
- """
- When I run "ruby test_multiples.rb"
- Then the exit code should be 256
- And the stdout should include "expected 9 to be a multiple of 4"
- And the stdout should include "2 tests, 0 assertions, 1 failures, 0 errors"
diff --git a/vendor/gems/rspec-1.3.1/features/matchers/define_matcher_with_fluent_interface.feature b/vendor/gems/rspec-1.3.1/features/matchers/define_matcher_with_fluent_interface.feature
deleted file mode 100644
index 9042484e5..000000000
--- a/vendor/gems/rspec-1.3.1/features/matchers/define_matcher_with_fluent_interface.feature
+++ /dev/null
@@ -1,48 +0,0 @@
-Feature: define matcher
-
- In order to express my domain clearly in my code examples
- As an RSpec user
- I want to define matchers with fluent interfaces
-
- Scenario: one additional method
- Given a file named "between_spec.rb" with:
- """
- Spec::Matchers.define :be_bigger_than do |first|
- def but_smaller_than(second)
- @second = second
- self
- end
-
- match do |actual|
- (actual > first) && (actual < @second)
- end
- end
-
- describe 5 do
- it { should be_bigger_than(4).but_smaller_than(6) }
- end
- """
- When I run "spec between_spec.rb --format specdoc"
- Then the stdout should include "1 example, 0 failures"
- And the stdout should include "should be bigger than 4"
-
- Scenario: generate method using dsl
- Given a file named "between_spec.rb" with:
- """
- Spec::Matchers.define :be_bigger_than do |first|
- chain :but_smaller_than do |limit|
- @limit = limit
- end
-
- match do |actual|
- (actual > first) && (actual < @limit)
- end
- end
-
- describe 5 do
- it { should be_bigger_than(4).but_smaller_than(6) }
- end
- """
- When I run "spec between_spec.rb --format specdoc"
- Then the stdout should include "1 example, 0 failures"
- And the stdout should include "should be bigger than 4"
diff --git a/vendor/gems/rspec-1.3.1/features/matchers/define_wrapped_matcher.feature b/vendor/gems/rspec-1.3.1/features/matchers/define_wrapped_matcher.feature
deleted file mode 100644
index ab2fef09f..000000000
--- a/vendor/gems/rspec-1.3.1/features/matchers/define_wrapped_matcher.feature
+++ /dev/null
@@ -1,56 +0,0 @@
-Feature: define wrapped matcher
-
- In order to reuse existing matchers
- As an RSpec user
- I want to define matchers that wrap other matchers
-
- When the wrapped matcher passes, the wrapping matcher returns true.
- When the wrapped matcher fails, the wrapping matcher returns false.
-
- Scenario: wrap a matcher using should
- Given a file named "new_model_spec.rb" with:
- """
- Spec::Matchers.define :have_tag do |tag|
- match do |markup|
- markup =~ /<#{tag}>.*<\/#{tag}>/
- end
- end
-
- Spec::Matchers.define :have_button do
- match do |markup|
- markup.should have_tag('button')
- end
- end
-
- describe "some markup" do
- it "has a button" do
- "<button>Label</button>".should have_button
- end
- end
- """
- When I run "spec new_model_spec.rb --format specdoc"
- Then the stdout should include "1 example, 0 failures"
-
- Scenario: wrap a matcher using should_not
- Given a file named "new_model_spec.rb" with:
- """
- Spec::Matchers.define :have_tag do |tag|
- match do |markup|
- markup =~ /<#{tag}>.*<\/#{tag}>/
- end
- end
-
- Spec::Matchers.define :have_button do
- match do |markup|
- markup.should have_tag('button')
- end
- end
-
- describe "some markup" do
- it "has no buttons" do
- "<p>Label</p>".should_not have_button
- end
- end
- """
- When I run "spec new_model_spec.rb --format specdoc"
- Then the stdout should include "1 example, 0 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/matchers/match_unless_raises.feature b/vendor/gems/rspec-1.3.1/features/matchers/match_unless_raises.feature
deleted file mode 100644
index 451f5f840..000000000
--- a/vendor/gems/rspec-1.3.1/features/matchers/match_unless_raises.feature
+++ /dev/null
@@ -1,60 +0,0 @@
-Feature: match unless raises
-
- In order, primarily, to reuse existing test/unit assertions
- As an RSpec user
- I want to define matchers that wrap a statement that raises an error on failure
-
- Background:
- Given a file named "example.rb" with:
- """
- require 'test/unit/assertions'
-
- Spec::Matchers.define :be_the_same_as do |expected|
- extend Test::Unit::Assertions
- match_unless_raises Test::Unit::AssertionFailedError do |actual|
- assert_equal expected, actual
- end
- end
- """
-
- Scenario: passing examples
- Given a file named "match_unless_raises_spec.rb" with:
- """
- require 'example.rb'
-
- describe 4 do
- it "is 4" do
- 4.should be_the_same_as(4)
- end
- end
-
- describe 5 do
- it "is not 4" do
- 5.should_not be_the_same_as(4)
- end
- end
- """
- When I run "spec match_unless_raises_spec.rb"
- Then the stdout should include "2 examples, 0 failures"
-
- Scenario: failing examples
- Given a file named "match_unless_raises_spec.rb" with:
- """
- require 'example.rb'
-
- describe 4 do
- it "is 4" do
- # intentionally fail
- 4.should_not be_the_same_as(4)
- end
- end
-
- describe 5 do
- it "is not 4" do
- # intentionally fail
- 5.should be_the_same_as(4)
- end
- end
- """
- When I run "spec match_unless_raises_spec.rb"
- Then the stdout should include "2 examples, 2 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/matchers/match_unless_raises_unexpected_error.feature b/vendor/gems/rspec-1.3.1/features/matchers/match_unless_raises_unexpected_error.feature
deleted file mode 100644
index 64524bd1f..000000000
--- a/vendor/gems/rspec-1.3.1/features/matchers/match_unless_raises_unexpected_error.feature
+++ /dev/null
@@ -1,39 +0,0 @@
-Feature: match unless raises with an unexpected error
-
- In order to know when a match_unless_raises block raises an unexpected error
- As an RSpec user
- I want the error to bubble up
-
- Background:
- Given a file named "example.rb" with:
- """
- Spec::Matchers.define :be_the_same_as do |expected|
- match_unless_raises SyntaxError do |actual|
- raise "unexpected error"
- end
- end
- """
-
- Scenario: failing examples
- Given a file named "match_unless_raises_spec.rb" with:
- """
- require 'example.rb'
-
- describe 4 do
- it "is 4" do
- # intentionally fail
- 4.should_not be_the_same_as(4)
- end
- end
-
- describe 5 do
- it "is not 4" do
- # intentionally fail
- 5.should be_the_same_as(4)
- end
- end
- """
- When I run "spec match_unless_raises_spec.rb"
- Then the stdout should include "2 examples, 2 failures"
- Then the stdout should include "unexpected error"
- \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_flexmock.feature b/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_flexmock.feature
deleted file mode 100644
index 0a204dfc6..000000000
--- a/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_flexmock.feature
+++ /dev/null
@@ -1,27 +0,0 @@
-Feature: mock with flexmock
-
- As an RSpec user who prefers flexmock
- I want to be able to use flexmock without rspec mocks interfering
-
- Scenario: Mock with flexmock
- Given a file named "flexmock_example_spec.rb" with:
- """
- Spec::Runner.configure do |config|
- config.mock_with :flexmock
- end
-
- describe "plugging in flexmock" do
- it "allows flexmock to be used" do
- target = Object.new
- flexmock(target).should_receive(:foo).once
- target.foo
- end
-
- it "does not include rspec mocks" do
- Spec.const_defined?(:Mocks).should be_false
- end
- end
- """
- When I run "spec flexmock_example_spec.rb"
- Then the exit code should be 0
- And the stdout should include "2 examples, 0 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_mocha.feature b/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_mocha.feature
deleted file mode 100644
index d53b967cd..000000000
--- a/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_mocha.feature
+++ /dev/null
@@ -1,27 +0,0 @@
-Feature: mock with mocha
-
- As an RSpec user who prefers mocha
- I want to be able to use mocha without rspec mocks interfering
-
- Scenario: Mock with mocha
- Given a file named "mocha_example_spec.rb" with:
- """
- Spec::Runner.configure do |config|
- config.mock_with :mocha
- end
-
- describe "plugging in mocha" do
- it "allows mocha to be used" do
- target = Object.new
- target.expects(:foo).once
- target.foo
- end
-
- it "does not include rspec mocks" do
- Spec.const_defined?(:Mocks).should be_false
- end
- end
- """
- When I run "spec mocha_example_spec.rb"
- Then the exit code should be 0
- And the stdout should include "2 examples, 0 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_rr.feature b/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_rr.feature
deleted file mode 100644
index aa30882aa..000000000
--- a/vendor/gems/rspec-1.3.1/features/mock_framework_integration/use_rr.feature
+++ /dev/null
@@ -1,27 +0,0 @@
-Feature: mock with rr
-
- As an RSpec user who prefers rr
- I want to be able to use rr without rspec mocks interfering
-
- Scenario: Mock with rr
- Given a file named "rr_example_spec.rb" with:
- """
- Spec::Runner.configure do |config|
- config.mock_with :rr
- end
-
- describe "plugging in rr" do
- it "allows rr to be used" do
- target = Object.new
- mock(target).foo
- target.foo
- end
-
- it "does not include rspec mocks" do
- Spec.const_defined?(:Mocks).should be_false
- end
- end
- """
- When I run "spec rr_example_spec.rb"
- Then the exit code should be 0
- And the stdout should include "2 examples, 0 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/mocks/block_local_expectations.feature b/vendor/gems/rspec-1.3.1/features/mocks/block_local_expectations.feature
deleted file mode 100644
index f0155d429..000000000
--- a/vendor/gems/rspec-1.3.1/features/mocks/block_local_expectations.feature
+++ /dev/null
@@ -1,62 +0,0 @@
-Feature: block local expectations
-
- In order to set message expectations on ...
- As an RSpec user
- I want to configure the evaluation context
-
- Background:
- Given a file named "account.rb" with:
- """
- class Account
- def self.create
- yield new
- end
-
- def opening_balance(amount, currency)
- end
- end
- """
-
- Scenario: passing example
- Given a file named "account_dsl.rb" with:
- """
- require 'spec_helper'
- require 'account'
-
- describe "account DSL" do
- it " .... " do
- account = Account.new
- Account.should_receive(:create).and_yield do |account|
- account.should_receive(:opening_balance).with(100, :USD)
- end
- Account.create do
- opening_balance 100, :USD
- end
- end
- end
- """
- When I run "spec account_dsl.rb"
- Then the stdout should include "1 example, 0 failures"
-
- Scenario: failing example
-
- Given a file named "account_dsl.rb" with:
- """
- require 'spec_helper'
- require 'account'
-
- describe "account DSL" do
- it " .... " do
- account = Account.new
- Account.should_receive(:create).and_yield do |account|
- account.should_receive(:opening_balance).with(100, :USD)
- end
- Account.create do
- # opening_balance is not called here
- end
- end
- end
- """
-
- When I run "spec account_dsl.rb"
- Then the stdout should include "1 example, 1 failure"
diff --git a/vendor/gems/rspec-1.3.1/features/mocks/mix_stubs_and_mocks.feature b/vendor/gems/rspec-1.3.1/features/mocks/mix_stubs_and_mocks.feature
deleted file mode 100644
index deaf84ecf..000000000
--- a/vendor/gems/rspec-1.3.1/features/mocks/mix_stubs_and_mocks.feature
+++ /dev/null
@@ -1,22 +0,0 @@
-Feature: stub and mock together
-
- As an RSpec user
- I want to use stubs and mocks together
-
- Scenario: stub in before
- Given a file named "stub_and_mocks_spec.rb" with:
- """
- describe "a stub in before" do
- before(:each) do
- @messenger = mock('messenger').as_null_object
- end
-
- it "a" do
- @messenger.should_receive(:foo).with('first')
- @messenger.foo('second')
- @messenger.foo('third')
- end
- end
- """
- When I run "spec stub_and_mocks_spec.rb --format nested"
- Then the stdout should include "received :foo with unexpected arguments\n expected: (\"first\")\n got: ([\"second\"], [\"third\"])"
diff --git a/vendor/gems/rspec-1.3.1/features/mocks/stub_implementation.feature b/vendor/gems/rspec-1.3.1/features/mocks/stub_implementation.feature
deleted file mode 100644
index 269de4742..000000000
--- a/vendor/gems/rspec-1.3.1/features/mocks/stub_implementation.feature
+++ /dev/null
@@ -1,26 +0,0 @@
-Feature: stub implementation
-
- As an rspec user, I want to stub a complete implementation, not just a
- return value.
-
- Scenario: stub implementation
- Given a file named "stub_implementation.rb" with:
- """
- describe "a stubbed implementation" do
- it "works" do
- object = Object.new
- object.stub(:foo) do |arg|
- if arg == :this
- "got this"
- elsif arg == :that
- "got that"
- end
- end
-
- object.foo(:this).should == "got this"
- object.foo(:that).should == "got that"
- end
- end
- """
- When I run "spec stub_implementation.rb"
- Then the stdout should include "1 example, 0 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/pending/pending_examples.feature b/vendor/gems/rspec-1.3.1/features/pending/pending_examples.feature
deleted file mode 100644
index 582739563..000000000
--- a/vendor/gems/rspec-1.3.1/features/pending/pending_examples.feature
+++ /dev/null
@@ -1,81 +0,0 @@
-Feature: pending examples
-
- RSpec offers three ways to indicate that an example is disabled pending
- some action.
-
- Scenario: pending implementation
- Given a file named "example_without_block_spec.rb" with:
- """
- describe "an example" do
- it "has not yet been implemented"
- end
- """
- When I run "spec example_without_block_spec.rb"
- Then the exit code should be 0
- And the stdout should include "1 example, 0 failures, 1 pending"
- And the stdout should include "Not Yet Implemented"
- And the stdout should include "example_without_block_spec.rb:2"
-
- Scenario: pending implementation with spec/test/unit
- Given a file named "example_without_block_spec.rb" with:
- """
- require 'spec/test/unit'
- describe "an example" do
- it "has not yet been implemented"
- end
- """
- When I run "spec example_without_block_spec.rb"
- Then the exit code should be 0
- And the stdout should include "1 example, 0 failures, 1 pending"
- And the stdout should include "Not Yet Implemented"
- And the stdout should include "example_without_block_spec.rb:3"
-
- Scenario: pending any arbitary reason, with no block
- Given a file named "pending_without_block_spec.rb" with:
- """
- describe "an example" do
- it "is implemented but waiting" do
- pending("something else getting finished")
- end
- end
- """
- When I run "spec pending_without_block_spec.rb"
- Then the exit code should be 0
- And the stdout should include "1 example, 0 failures, 1 pending"
- And the stdout should include "(something else getting finished)"
- And the stdout should include "pending_without_block_spec.rb:2"
-
- Scenario: pending any arbitary reason, with a block that fails
- Given a file named "pending_with_failing_block_spec.rb" with:
- """
- describe "an example" do
- it "is implemented but waiting" do
- pending("something else getting finished") do
- raise "this is the failure"
- end
- end
- end
- """
- When I run "spec pending_with_failing_block_spec.rb"
- Then the exit code should be 0
- And the stdout should include "1 example, 0 failures, 1 pending"
- And the stdout should include "(something else getting finished)"
- And the stdout should include "pending_with_failing_block_spec.rb:2"
-
- Scenario: pending any arbitary reason, with a block that passes
- Given a file named "pending_with_passing_block_spec.rb" with:
- """
- describe "an example" do
- it "is implemented but waiting" do
- pending("something else getting finished") do
- true.should be(true)
- end
- end
- end
- """
- When I run "spec pending_with_passing_block_spec.rb"
- Then the exit code should be 256
- And the stdout should include "1 example, 1 failure"
- And the stdout should include "FIXED"
- And the stdout should include "Expected pending 'something else getting finished' to fail. No Error was raised."
- And the stdout should include "pending_with_passing_block_spec.rb:3"
diff --git a/vendor/gems/rspec-1.3.1/features/runner/specify_line_number.feature b/vendor/gems/rspec-1.3.1/features/runner/specify_line_number.feature
deleted file mode 100644
index bf44f2c09..000000000
--- a/vendor/gems/rspec-1.3.1/features/runner/specify_line_number.feature
+++ /dev/null
@@ -1,32 +0,0 @@
-Feature: run specific examples by line number
-
- In order to run a single example from command line
- RSpec allows you to specify the line number of the example(s) to run
-
- Scenario: --line syntax on single example
- Given a file named "example_spec.rb" with:
- """
- describe "an example" do
- it "has not yet been implemented"
- it "has been implemented" do
- true
- end
- end
- """
- When I run "spec example_spec.rb --line 2"
- Then the stdout should include "1 example, 0 failures, 1 pending"
- And the stdout should include "example_spec.rb:2"
-
- Scenario: colon line syntax on single example
- Given a file named "example_spec.rb" with:
- """
- describe "an example" do
- it "has not yet been implemented"
- it "has been implemented" do
- true
- end
- end
- """
- When I run "spec example_spec.rb:2"
- Then the stdout should include "1 example, 0 failures, 1 pending"
- And the stdout should include "example_spec.rb:2"
diff --git a/vendor/gems/rspec-1.3.1/features/spec_helper/spec_helper.feature b/vendor/gems/rspec-1.3.1/features/spec_helper/spec_helper.feature
deleted file mode 100644
index 2711e1a58..000000000
--- a/vendor/gems/rspec-1.3.1/features/spec_helper/spec_helper.feature
+++ /dev/null
@@ -1,25 +0,0 @@
-Feature: spec helper
- In order to centralize code needed across most specs
- As a spec author
- I want to require 'spec_helper'
-
- Because rspec adds the PROJECT_ROOT/spec directory to the load path, we can
- just require 'spec_helper' and it will be found.
-
- Scenario: spec helper
- Given a directory named "spec"
- And a file named "spec/spec_helper.rb" with:
- """
- SOME_CONSTANT = 'some value'
- """
- And a file named "example.rb" with:
- """
- require 'spec_helper'
- describe SOME_CONSTANT do
- it { should == 'some value' }
- end
- """
- When I run "spec example.rb"
- And the stdout should include "1 example, 0 failures"
- And the exit code should be 0
-
diff --git a/vendor/gems/rspec-1.3.1/features/step_definitions/running_rspec_steps.rb b/vendor/gems/rspec-1.3.1/features/step_definitions/running_rspec_steps.rb
deleted file mode 100644
index 746e8793b..000000000
--- a/vendor/gems/rspec-1.3.1/features/step_definitions/running_rspec_steps.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-Given %r{^a file named "([^"]+)" with:$} do |file_name, code|
- create_file(file_name, code)
-end
-
-Given /^a directory named "([^\"]*)"$/ do |dirname|
- create_directory(dirname)
-end
-
-When %r{^I run "spec ([^"]+)"$} do |file_and_args|
- spec(file_and_args)
-end
-
-When %r{^I run "ruby ([^"]+)"$} do |file_and_args|
- ruby(file_and_args)
-end
-
-When %r{^I run "cmdline.rb ([^"]+)"$} do |file_and_args|
- cmdline(file_and_args)
-end
-
-Then /^the (.*) should include (.*)$/ do |stream, string_or_regex|
- written = case(stream)
- when 'stdout' then last_stdout
- when 'stderr' then last_stderr
- else raise "Unknown stream: #{stream}"
- end
- written.should smart_match(string_or_regex)
-end
-
-Then /^the (.*) should include$/ do |stream, string_or_regex|
- written = case(stream)
- when 'stdout' then last_stdout
- when 'stderr' then last_stderr
- else raise "Unknown stream: #{stream}"
- end
- written.should smart_match(string_or_regex)
-end
-
-Then /^the (.*) should not match (.*)$/ do |stream, string_or_regex|
- written = case(stream)
- when 'stdout' then last_stdout
- when 'stderr' then last_stderr
- else raise "Unknown stream: #{stream}"
- end
- written.should_not smart_match(string_or_regex)
-end
-
-Then /^the exit code should be (\d+)$/ do |exit_code|
- if last_exit_code != exit_code.to_i
- raise "Did not exit with #{exit_code}, but with #{last_exit_code}. Standard error:\n#{last_stderr}"
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/features/step_definitions/stubbing_steps.rb b/vendor/gems/rspec-1.3.1/features/step_definitions/stubbing_steps.rb
deleted file mode 100644
index cc194f31c..000000000
--- a/vendor/gems/rspec-1.3.1/features/step_definitions/stubbing_steps.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-When /^I stub "([^\"]*)" on "([^\"]*)" to "([^\"]*)"$/ do |method_name, const_name, value|
- const = Object.const_get(const_name)
- const.stub!(method_name.to_sym).and_return(value)
-end
-
-Then /^calling "([^\"]*)" on "([^\"]*)" should return "([^\"]*)"$/ do |method_name, const_name, value|
- const = Object.const_get(const_name)
- const.send(method_name.to_sym).should == value
-end
-
-Then /^"([^\"]*)" should not be defined on "([^\"]*)"$/ do |method_name, const_name|
- const = Object.const_get(const_name)
- lambda {
- const.send(method_name.to_sym)
- }.should raise_error(NameError, /#{method_name}/)
-end
diff --git a/vendor/gems/rspec-1.3.1/features/subject/explicit_subject.feature b/vendor/gems/rspec-1.3.1/features/subject/explicit_subject.feature
deleted file mode 100644
index 9fb68ad43..000000000
--- a/vendor/gems/rspec-1.3.1/features/subject/explicit_subject.feature
+++ /dev/null
@@ -1,31 +0,0 @@
-Feature: explicit subject
-
- You can override the implicit subject using the subject() method.
-
- Scenario: subject in top level group
- Given a file named "top_level_subject_spec.rb" with:
- """
- describe Array, "with some elements" do
- subject { [1,2,3] }
- it "should have the prescribed elements" do
- subject.should == [1,2,3]
- end
- end
- """
- When I run "spec top_level_subject_spec.rb"
- Then the stdout should include "1 example, 0 failures"
-
- Scenario: subject in a nested group
- Given a file named "nested_subject_spec.rb" with:
- """
- describe Array do
- subject { [1,2,3] }
- describe "with some elements" do
- it "should have the prescribed elements" do
- subject.should == [1,2,3]
- end
- end
- end
- """
- When I run "spec nested_subject_spec.rb"
- Then the stdout should include "1 example, 0 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/subject/implicit_subject.feature b/vendor/gems/rspec-1.3.1/features/subject/implicit_subject.feature
deleted file mode 100644
index bc57d2ba4..000000000
--- a/vendor/gems/rspec-1.3.1/features/subject/implicit_subject.feature
+++ /dev/null
@@ -1,43 +0,0 @@
-Feature: implicit subject
-
- The first argument to the outermost example group block is
- made available to each example as an implicit subject of
- that example.
-
- Scenario: subject in top level group
- Given a file named "top_level_subject_spec.rb" with:
- """
- describe Array, "when first created" do
- it "should be empty" do
- subject.should == []
- end
- end
- """
- When I run "spec top_level_subject_spec.rb"
- Then the stdout should include "1 example, 0 failures"
-
- Scenario: subject in a nested group
- Given a file named "nested_subject_spec.rb" with:
- """
- describe Array do
- describe "when first created" do
- it "should be empty" do
- subject.should == []
- end
- end
- end
- """
- When I run "spec nested_subject_spec.rb"
- Then the stdout should include "1 example, 0 failures"
-
- Scenario: subject with getters
- Given a file named "subject_with_getter_spec.rb" with:
- """
- describe Array do
- describe "when first created" do
- its(:length) { should == 0 }
- end
- end
- """
- When I run "spec subject_with_getter_spec.rb"
- Then the stdout should include "1 example, 0 failures"
diff --git a/vendor/gems/rspec-1.3.1/features/support/env.rb b/vendor/gems/rspec-1.3.1/features/support/env.rb
deleted file mode 100644
index e649d82c5..000000000
--- a/vendor/gems/rspec-1.3.1/features/support/env.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-$:.unshift File.join(File.dirname(__FILE__), "/../../lib")
-
-require 'spec/expectations'
-require 'forwardable'
-require 'tempfile'
-require 'spec/ruby_forker'
-require 'features/support/matchers/smart_match'
-require 'spec/stubs/cucumber'
-
-class RspecWorld
- include Spec::Expectations
- include Spec::Matchers
- include RubyForker
-
- extend Forwardable
- def_delegators RspecWorld, :working_dir, :spec_command, :cmdline_file, :rspec_lib
-
- def self.working_dir
- @working_dir ||= File.expand_path(File.join(File.dirname(__FILE__), "/../../tmp/cucumber-generated-files"))
- end
-
- def self.spec_command
- @spec_command ||= File.expand_path(File.join(File.dirname(__FILE__), "/../../bin/spec"))
- end
-
- def self.cmdline_file
- @cmdline_file ||= File.expand_path(File.join(File.dirname(__FILE__), "/../../resources/helpers/cmdline.rb"))
- end
-
- def self.rspec_lib
- @rspec_lib ||= File.join(working_dir, "/../../lib")
- end
-
- def spec(args)
- ruby("#{spec_command} #{args}")
- end
-
- def cmdline(args)
- ruby("#{cmdline_file} #{args}")
- end
-
- def create_file(file_name, contents)
- file_path = File.join(working_dir, file_name)
- File.open(file_path, "w") { |f| f << contents }
- end
-
- def create_directory(dirname)
- FileUtils.mkdir_p File.join(working_dir, dirname)
- end
-
- def last_stdout
- @stdout
- end
-
- def last_stderr
- @stderr
- end
-
- def last_exit_code
- @exit_code
- end
-
- # it seems like this, and the last_* methods, could be moved into RubyForker-- is that being used anywhere but the features?
- def ruby(args)
- stderr_file = Tempfile.new('rspec')
- stderr_file.close
- Dir.chdir(working_dir) do
- @stdout = super("-I #{rspec_lib} #{args}", stderr_file.path)
- end
- @stderr = IO.read(stderr_file.path)
- @exit_code = $?.to_i
- end
-
-end
-
-Before do
- FileUtils.rm_rf RspecWorld.working_dir if test ?d, RspecWorld.working_dir
- FileUtils.mkdir_p RspecWorld.working_dir
-end
-
-World do
- RspecWorld.new
-end
diff --git a/vendor/gems/rspec-1.3.1/features/support/matchers/smart_match.rb b/vendor/gems/rspec-1.3.1/features/support/matchers/smart_match.rb
deleted file mode 100644
index 7a6aa58a7..000000000
--- a/vendor/gems/rspec-1.3.1/features/support/matchers/smart_match.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-Spec::Matchers.define :smart_match do |expected|
- def regexp?
- /^\/.*\/?$/
- end
-
- def quoted?
- /^".*"$/
- end
-
- match do |actual|
- case expected
- when regexp?
- actual =~ eval(expected)
- when quoted?
- actual.index(eval(expected))
- else # multi-line string
- actual.index(expected)
- end
- end
-
- failure_message_for_should do |actual|
- <<-MESSAGE
-#{'*'*50}
-got:
-#{'*'*30}
-#{actual}
-#{'*'*50}
-MESSAGE
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/geminstaller.yml b/vendor/gems/rspec-1.3.1/geminstaller.yml
deleted file mode 100644
index 0392cf0fe..000000000
--- a/vendor/gems/rspec-1.3.1/geminstaller.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-# Basics needed to run 'rake' from this directory
-gems:
-- name: cucumber
- version: '>= 0.3.101'
-- name: diff-lcs
- version: '>= 1.1.2'
-- name: fakefs
- version: '>= 0.2'
-- name: flexmock
- version: '>= 0.8.6'
-- name: heckle
- version: '>= 1.4.2'
-- name: hoe
- version: '>= 2.0'
-- name: nokogiri
- version: '>= 1.2.3'
-- name: mocha
- version: '>= 0.9.5'
-- name: rake
- version: '>= 0.8.4'
-- name: rcov
- version: '>= 0.9.7.1'
-- name: syntax
- version: '>= 1.0.0'
-- name: rr
- version: '>= 0.10.0'
-- name: ruby-debug
- version: '>= 0.10.3'
-- name: autotest-growl
diff --git a/vendor/gems/rspec-1.3.1/init.rb b/vendor/gems/rspec-1.3.1/init.rb
deleted file mode 100644
index 6262f0368..000000000
--- a/vendor/gems/rspec-1.3.1/init.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# Placeholder to satisfy Rails.
-#
-# Do NOT add any require statements to this file. Doing
-# so will cause Rails to load this plugin all of the time.
-#
-# Running 'ruby script/generate rspec' will
-# generate spec/spec_helper.rb, which includes the necessary
-# require statements and configuration. This file should
-# be required by all of your spec files. \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/lib/autotest/discover.rb b/vendor/gems/rspec-1.3.1/lib/autotest/discover.rb
deleted file mode 100644
index 3ac51c135..000000000
--- a/vendor/gems/rspec-1.3.1/lib/autotest/discover.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-Autotest.add_discovery do
- "rspec" if File.directory?('spec') && ENV['RSPEC']
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/autotest/rspec.rb b/vendor/gems/rspec-1.3.1/lib/autotest/rspec.rb
deleted file mode 100644
index 73ffcb374..000000000
--- a/vendor/gems/rspec-1.3.1/lib/autotest/rspec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'autotest'
-
-Autotest.add_hook :initialize do |at|
- at.clear_mappings
- # watch out for Ruby bug (1.8.6): %r(/) != /\//
- at.add_mapping(%r%^spec/.*_spec\.rb$%) { |filename, _|
- filename
- }
- at.add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
- ["spec/#{m[1]}_spec.rb"]
- }
- at.add_mapping(%r%^spec/(spec_helper|shared/.*)\.rb$%) {
- at.files_matching %r%^spec/.*_spec\.rb$%
- }
-end
-
-class RspecCommandError < StandardError; end
-
-class Autotest::Rspec < Autotest
-
- SPEC_PROGRAM = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec'))
-
- def initialize
- super
- self.failed_results_re = /^\d+\)\n(?:\e\[\d*m)?(?:.*?in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n\n?(.*?(\n\n\(.*?)?)\n\n/m
- self.completed_re = /\n(?:\e\[\d*m)?\d* examples?/m
- end
-
- def consolidate_failures(failed)
- filters = new_hash_of_arrays
- failed.each do |spec, trace|
- if trace =~ /\n(\.\/)?(.*spec\.rb):[\d]+:/
- filters[$2] << spec
- end
- end
- return filters
- end
-
- def make_test_cmd(files_to_test)
- files_to_test.empty? ? '' :
- "#{ruby} #{SPEC_PROGRAM} --autospec #{normalize(files_to_test).keys.flatten.join(' ')} #{add_options_if_present}"
- end
-
- def normalize(files_to_test)
- files_to_test.keys.inject({}) do |result, filename|
- result[File.expand_path(filename)] = []
- result
- end
- end
-
- def add_options_if_present # :nodoc:
- File.exist?("spec/spec.opts") ? "-O #{File.join('spec','spec.opts')} " : ""
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec.rb b/vendor/gems/rspec-1.3.1/lib/spec.rb
deleted file mode 100644
index 879c373e8..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'spec/deprecation'
-require 'spec/ruby'
-require 'spec/matchers'
-require 'spec/expectations'
-require 'spec/example'
-require 'spec/runner'
-require 'spec/version'
-require 'spec/dsl'
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/flexmock.rb b/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/flexmock.rb
deleted file mode 100644
index 18dd453dd..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/flexmock.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env ruby
-#
-# Created by Jim Weirich on 2007-04-10.
-# Copyright (c) 2007. All rights reserved.
-
-require 'rubygems' unless ENV['NO_RUBYGEMS']
-require 'flexmock/rspec'
-
-module Spec
- module Adapters
- module MockFramework
- include FlexMock::MockContainer
- def setup_mocks_for_rspec
- # No setup required
- end
- def verify_mocks_for_rspec
- flexmock_verify
- end
- def teardown_mocks_for_rspec
- flexmock_close
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/mocha.rb b/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/mocha.rb
deleted file mode 100644
index 4c97c139a..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/mocha.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'rubygems' unless ENV['NO_RUBYGEMS']
-require 'mocha/standalone'
-require 'mocha/object'
-
-module Spec
- module Adapters
- module MockFramework
- # Mocha::Standalone was deprecated as of Mocha 0.9.7.
- begin
- include Mocha::API
- rescue NameError
- include Mocha::Standalone
- end
- def setup_mocks_for_rspec
- mocha_setup
- end
- def verify_mocks_for_rspec
- mocha_verify
- end
- def teardown_mocks_for_rspec
- mocha_teardown
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/rr.rb b/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/rr.rb
deleted file mode 100644
index 758ddf611..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/rr.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'rubygems' unless ENV['NO_RUBYGEMS']
-require 'rr'
-
-patterns = ::Spec::Runner::QuietBacktraceTweaker::IGNORE_PATTERNS
-patterns.push(RR::Errors::BACKTRACE_IDENTIFIER)
-
-module Spec
- module Adapters
- module MockFramework
- include RR::Extensions::InstanceMethods
- def setup_mocks_for_rspec
- RR::Space.instance.reset
- end
- def verify_mocks_for_rspec
- RR::Space.instance.verify_doubles
- end
- def teardown_mocks_for_rspec
- RR::Space.instance.reset
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/rspec.rb b/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/rspec.rb
deleted file mode 100644
index b159f8bfe..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/adapters/mock_frameworks/rspec.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'spec/mocks/framework'
-require 'spec/mocks/extensions'
-
-module Spec
- module Adapters
- unless defined?(MockFramework)
- module MockFramework
- include Spec::Mocks::ExampleMethods
- def setup_mocks_for_rspec
- $rspec_mocks ||= Spec::Mocks::Space.new
- end
- def verify_mocks_for_rspec
- $rspec_mocks.verify_all
- end
- def teardown_mocks_for_rspec
- $rspec_mocks.reset_all
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/autorun.rb b/vendor/gems/rspec-1.3.1/lib/spec/autorun.rb
deleted file mode 100644
index f29b81966..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/autorun.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-require 'spec'
-
-Spec::Runner.autorun
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/deprecation.rb b/vendor/gems/rspec-1.3.1/lib/spec/deprecation.rb
deleted file mode 100644
index 3e3140d47..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/deprecation.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-module Spec
- class << self
- def deprecate(method, alternate_method=nil)
- return if Spec::Runner.configuration.suppress_deprecation_warnings?
- message = <<-NOTICE
-
-*****************************************************************
-DEPRECATION WARNING: you are using deprecated behaviour that will
-be removed from a future version of RSpec.
-
-#{caller(0)[2]}
-
-* #{method} is deprecated.
-NOTICE
- if alternate_method
- message << <<-ADDITIONAL
-* please use #{alternate_method} instead.
-ADDITIONAL
- end
-
- message << "*****************************************************************"
- warn(message)
- end
-
- def warn(message)
- Kernel.warn(message)
- end
-
- end
-
- class HashWithDeprecationNotice < Hash
- def initialize(method, alternate_method=nil, &block)
- @method, @alternate_method = method, alternate_method
- end
- def []=(k,v)
- Spec.deprecate(@method, @alternate_method)
- super
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/dsl.rb b/vendor/gems/rspec-1.3.1/lib/spec/dsl.rb
deleted file mode 100644
index d93e90d84..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/dsl.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'spec/dsl/main'
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/dsl/main.rb b/vendor/gems/rspec-1.3.1/lib/spec/dsl/main.rb
deleted file mode 100644
index d0c51f70f..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/dsl/main.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-module Spec
- module DSL
- module Main
- include Spec::Example::ArgsAndOptions
-
- # Creates and returns a class that includes the ExampleGroupMethods
- # module. Which ExampleGroup type is created depends on the directory of the file
- # calling this method. For example, Spec::Rails will use different
- # classes for specs living in <tt>spec/models</tt>,
- # <tt>spec/helpers</tt>, <tt>spec/views</tt> and
- # <tt>spec/controllers</tt>.
- #
- # It is also possible to override autodiscovery of the example group
- # type with an options Hash as the last argument:
- #
- # describe "name", :type => :something_special do ...
- #
- # The reason for using different example group classes is to have different
- # matcher methods available from within the <tt>describe</tt> block.
- #
- # See Spec::Example::ExampleGroupFactory#register for details about how to
- # register special implementations.
- #
- def describe(*args, &block)
- raise Spec::Example::NoDescriptionError.new("example group", caller(0)[1]) if args.empty?
- add_options(args, :scope => self)
- set_location(args.options, caller(0)[1])
- Spec::Example::ExampleGroupFactory.create_example_group(*args, &block)
- end
- alias :context :describe unless defined?(IRB::Context)
-
- # Creates an example group that can be shared by other example groups
- #
- # == Examples
- #
- # share_examples_for "All Editions" do
- # it "all editions behaviour" ...
- # end
- #
- # describe SmallEdition do
- # it_should_behave_like "All Editions"
- #
- # it "should do small edition stuff" do
- # ...
- # end
- # end
- def share_examples_for(*args, &block)
- add_options(args)
- set_location(args.options, caller(0)[1])
- Spec::Example::ExampleGroupFactory.create_shared_example_group(*args, &block)
- end
- alias :shared_examples_for :share_examples_for
-
- # Creates a Shared Example Group and assigns it to a constant
- #
- # share_as :AllEditions do
- # it "should do all editions stuff" ...
- # end
- #
- # describe SmallEdition do
- # it_should_behave_like AllEditions
- #
- # it "should do small edition stuff" do
- # ...
- # end
- # end
- #
- # And, for those of you who prefer to use something more like Ruby, you
- # can just include the module directly
- #
- # describe SmallEdition do
- # include AllEditions
- #
- # it "should do small edition stuff" do
- # ...
- # end
- # end
- def share_as(name, &block)
- Spec.deprecate("share_as","shared_examples_for")
- begin
- args = [name]
- add_options(args)
- set_location(args.options, caller(0)[1])
- Object.const_set(name, Spec::Example::ExampleGroupFactory.create_shared_example_group(*args, &block))
- rescue NameError => e
- raise NameError.new(e.message + "\nThe first argument to share_as must be a legal name for a constant\n")
- end
- end
- end
- end
-end
-
-include Spec::DSL::Main
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example.rb b/vendor/gems/rspec-1.3.1/lib/spec/example.rb
deleted file mode 100644
index afbf41286..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example.rb
+++ /dev/null
@@ -1,164 +0,0 @@
-module Spec
- # == Example Groups and Code Examples
- #
- # A Code Example is an executable example of how a bit of code is expected
- # to behave.
- #
- # An Example Group is a group of code examples.
- #
- # RSpec exposes a DSL to describe groups of examples.
- #
- # describe Account do
- # it "should have a balance of $0" do
- # account = Account.new
- # account.balance.should == Money.new(0, :dollars)
- # end
- # end
- #
- # == Before and After
- #
- # You can use the <tt>before()</tt> and <tt>after()</tt> methods to extract
- # common code within an Example Group. Both methods take an optional scope
- # argument so you can run the block before :each example or before :all
- # examples
- #
- # describe "..." do
- # before :all do
- # ...
- # end
- #
- # before :each do
- # ...
- # end
- #
- # it "should do something" do
- # ...
- # end
- #
- # it "should do something else" do
- # ...
- # end
- #
- # after :each do
- # ...
- # end
- #
- # after :all do
- # ...
- # end
- #
- # end
- #
- # The <tt>before :each</tt> block will run before each of the examples, once
- # for each example. Likewise, the <tt>after :each</tt> block will run after
- # each of the examples.
- #
- # It is also possible to specify a <tt>before :all</tt> and <tt>after
- # :all</tt> block that will run only once for each example group, before the
- # first <code>before :each</code> and after the last <code>after
- # :each</code> respectively. The use of these is generally discouraged,
- # because it introduces dependencies between the examples. Still, it might
- # prove useful for very expensive operations if you know what you are doing.
- #
- # == Local helper methods
- #
- # You can include local helper methods by simply expressing them within an
- # example group:
- #
- # describe "..." do
- #
- # it "..." do
- # helper_method
- # end
- #
- # def helper_method
- # ...
- # end
- #
- # end
- #
- # == Included helper methods
- #
- # You can include helper methods in multiple example groups by expressing
- # them within a module, and then including that module in your example
- # groups:
- #
- # module AccountExampleHelperMethods
- # def helper_method
- # ...
- # end
- # end
- #
- # describe "A new account" do
- # include AccountExampleHelperMethods
- # before do
- # @account = Account.new
- # end
- #
- # it "should have a balance of $0" do
- # helper_method
- # @account.balance.should eql(Money.new(0, :dollars))
- # end
- # end
- #
- # == Shared Example Groups
- #
- # You can define a shared example group, that may be used on other groups
- #
- # share_examples_for "All Editions" do
- # it "all editions behaviour" ...
- # end
- #
- # describe SmallEdition do
- # it_should_behave_like "All Editions"
- #
- # it "should do small edition stuff" do
- # ...
- # end
- # end
- #
- # You can also assign the shared group to a module and include that
- #
- # share_as :AllEditions do
- # it "should do all editions stuff" ...
- # end
- #
- # describe SmallEdition do
- # it_should_behave_like AllEditions
- #
- # it "should do small edition stuff" do
- # ...
- # end
- # end
- #
- # And, for those of you who prefer to use something more like Ruby, you can
- # just include the module directly
- #
- # describe SmallEdition do
- # include AllEditions
- #
- # it "should do small edition stuff" do
- # ...
- # end
- # end
- module Example
- end
-end
-
-require 'timeout'
-require 'spec/example/args_and_options'
-require 'spec/example/predicate_matchers'
-require 'spec/example/example_group_proxy'
-require 'spec/example/example_proxy'
-require 'spec/example/subject'
-require 'spec/example/before_and_after_hooks'
-require 'spec/example/pending'
-require 'spec/example/module_reopening_fix'
-require 'spec/example/example_group_hierarchy'
-require 'spec/example/example_group_methods'
-require 'spec/example/example_methods'
-require 'spec/example/example_group'
-require 'spec/example/shared_example_group'
-require 'spec/example/example_group_factory'
-require 'spec/example/errors'
-require 'spec/example/example_matcher'
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/args_and_options.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/args_and_options.rb
deleted file mode 100644
index b74fddd8e..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/args_and_options.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-module Spec
- module Example
- module ArgsAndOptions
- def args_and_options(*args) # :nodoc:
- options = Hash === args.last ? args.pop : {}
- return args, options
- end
-
- def add_options(args, options={}) # :nodoc:
- args << {} unless Hash === args.last
- args.extend WithOptions
- args.options.merge!(options)
- args.options
- end
-
- def set_location(options, location) # :nodoc:
- options[:location] ||= location
- end
-
- module WithOptions # :nodoc:
- def options
- last
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/before_and_after_hooks.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/before_and_after_hooks.rb
deleted file mode 100644
index 9f5039d1e..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/before_and_after_hooks.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-module Spec
- module Example
- module BeforeAndAfterHooks
- class << self
- def before_suite_parts # :nodoc:
- @before_suite_parts ||= []
- end
-
- def after_suite_parts # :nodoc:
- @after_suite_parts ||= []
- end
- end
-
- # Registers a block to be executed before examples. <tt>scope</tt> can be
- # <tt>:each</tt> (default), <tt>:all</tt>, or <tt>:suite</tt>. When
- # <tt>:each</tt>, the block is executed before each example. When
- # <tt>:all</tt>, the block is executed only once before any examples are
- # run.
- def append_before(scope = :each, &block)
- before_parts(scope) << block
- end
- alias_method :before, :append_before
-
- # Registers a block to be executed before each example.
- # This method prepends +block+ to existing before blocks.
- #
- # See <tt>append_before</tt> for scoping semantics.
- def prepend_before(scope = :each, &block)
- before_parts(scope).unshift(block)
- end
-
- # Registers a block to be executed after each example.
- # This method prepends +block+ to existing after blocks.
- #
- # See <tt>append_before</tt> for scoping semantics.
- def prepend_after(scope = :each, &block)
- after_parts(scope).unshift(block)
- end
- alias_method :after, :prepend_after
-
- # Registers a block to be executed after each example.
- # This method appends +block+ to existing after blocks.
- #
- # See <tt>append_before</tt> for scoping semantics.
- def append_after(scope = :each, &block)
- after_parts(scope) << block
- end
-
- def before_each_parts # :nodoc:
- @before_each_parts ||= []
- end
-
- def after_each_parts # :nodoc:
- @after_each_parts ||= []
- end
-
- def before_all_parts # :nodoc:
- @before_all_parts ||= []
- end
-
- def after_all_parts # :nodoc:
- @after_all_parts ||= []
- end
-
- def before_suite_parts # :nodoc:
- BeforeAndAfterHooks.before_suite_parts
- end
-
- def after_suite_parts # :nodoc:
- BeforeAndAfterHooks.after_suite_parts
- end
-
- private
-
- def before_parts(scope)
- case scope
- when :each; before_each_parts
- when :all; before_all_parts
- when :suite; before_suite_parts
- end
- end
-
- def after_parts(scope)
- case scope
- when :each; after_each_parts
- when :all; after_all_parts
- when :suite; after_suite_parts
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/errors.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/errors.rb
deleted file mode 100644
index 157b669b0..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/errors.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-module Spec
- module Example
- class ExamplePendingError < StandardError; end
-
- class NotYetImplementedError < ExamplePendingError
- MESSAGE = "Not Yet Implemented"
- def initialize
- super(MESSAGE)
- end
- end
-
- class PendingExampleFixedError < StandardError; end
-
- class NoDescriptionError < ArgumentError
- class << self
- def message(kind, location)
- "No description supplied for #{kind} declared on #{location}"
- end
- end
- def initialize(kind, location)
- super(self.class.message(kind, location))
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/example_group.rb
deleted file mode 100644
index 983be9a24..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-module Spec
- module Example
- # Base class for customized example groups. Use this if you
- # want to make a custom example group.
- class ExampleGroup
- extend Spec::Example::ExampleGroupMethods
- include Spec::Example::ExampleMethods
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_factory.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_factory.rb
deleted file mode 100644
index 1d662782a..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_factory.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-module Spec
- module Example
-
- class ExampleGroupFactory
- module ClassMethods
- include Spec::Example::ArgsAndOptions
-
- def reset
- @example_group_types = nil
- default(ExampleGroup)
- end
-
- def example_group_creation_listeners
- @example_group_creation_listeners ||= []
- end
-
- def register_example_group(klass)
- example_group_creation_listeners.each do |listener|
- listener.register_example_group(klass)
- end
- end
-
- def create_shared_example_group(*args, &example_group_block) # :nodoc:
- ::Spec::Example::SharedExampleGroup.register(*args, &example_group_block)
- end
-
- def create_example_group(*args, &block)
- raise ArgumentError if args.empty? || block.nil?
- add_options(args)
- superclass = determine_superclass(args.last)
- superclass.describe(*args, &block)
- end
-
- # Registers an example group class +klass+ with the symbol +type+. For
- # example:
- #
- # Spec::Example::ExampleGroupFactory.register(:farm, FarmExampleGroup)
- #
- # With that you can append a hash with :type => :farm to the describe
- # method and it will load an instance of FarmExampleGroup.
- #
- # describe Pig, :type => :farm do
- # ...
- #
- # If you don't use the hash explicitly, <tt>describe</tt> will
- # implicitly use an instance of FarmExampleGroup for any file loaded
- # from the <tt>./spec/farm</tt> directory.
- def register(key, example_group_class)
- @example_group_types[key.to_sym] = example_group_class
- end
-
- # Sets the default ExampleGroup class
- def default(example_group_class)
- Spec.__send__ :remove_const, :ExampleGroup if Spec.const_defined?(:ExampleGroup)
- Spec.const_set(:ExampleGroup, example_group_class)
- old = @example_group_types
- @example_group_types = Hash.new(example_group_class)
- @example_group_types.merge!(old) if old
- end
-
- def [](key)
- @example_group_types[key]
- end
-
- protected
-
- def determine_superclass(opts)
- if type = opts[:type]
- self[type]
- elsif opts[:location] =~ /spec(\\|\/)(#{@example_group_types.keys.sort_by{|k| k.to_s.length}.reverse.join('|')})/
- self[$2 == '' ? nil : $2.to_sym]
- else
- self[nil]
- end
- end
-
- end
- extend ClassMethods
- self.reset
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_hierarchy.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_hierarchy.rb
deleted file mode 100644
index f2c9fb5cd..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_hierarchy.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-module Spec
- module Example
- class ExampleGroupHierarchy < Array
- def initialize(example_group_class)
- push example_group_class
- if example_group_class.respond_to?(:superclass) && example_group_class.superclass.respond_to?(:example_group_hierarchy)
- unshift example_group_class.superclass.example_group_hierarchy
- flatten!
- end
- end
-
- def run_before_all(example)
- example.eval_each_fail_fast(before_all_parts)
- end
-
- def run_before_each(example)
- example.eval_each_fail_fast(before_each_parts)
- end
-
- def run_after_each(example)
- example.eval_each_fail_slow(after_each_parts)
- end
-
- def run_after_all(example)
- example.eval_each_fail_slow(after_all_parts)
- end
-
- def before_all_parts
- @before_all_parts ||= collect {|klass| klass.before_all_parts}.flatten
- end
-
- def before_each_parts
- @before_each_parts ||= collect {|klass| klass.before_each_parts}.flatten
- end
-
- def after_each_parts
- @after_each_parts ||= reverse.collect {|klass| klass.after_each_parts}.flatten
- end
-
- def after_all_parts
- @after_all_parts ||= reverse.collect {|klass| klass.after_all_parts}.flatten
- end
-
- def nested_descriptions
- @nested_descriptions ||= collect {|eg| nested_description_from(eg) == "" ? nil : nested_description_from(eg) }.compact
- end
-
- def nested_description_from(example_group)
- example_group.description_args.join
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_methods.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_methods.rb
deleted file mode 100644
index 93f459587..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_methods.rb
+++ /dev/null
@@ -1,287 +0,0 @@
-module Spec
- module Example
-
- module ExampleGroupMethods
- class << self
- attr_accessor :matcher_class
-
- def build_description_from(*args)
- text = args.inject("") do |description, arg|
- description << " " unless (description == "" || arg.to_s =~ /^(\s|\.|#)/)
- description << arg.to_s
- end
- text == "" ? nil : text
- end
- end
-
- include Spec::Example::BeforeAndAfterHooks
- include Spec::Example::Subject::ExampleGroupMethods
- include Spec::Example::PredicateMatchers
- include Spec::Example::ArgsAndOptions
-
- attr_reader :location
-
- def options # :nodoc:
- @options ||= {}
- end
-
- def inherited(klass) # :nodoc:
- super
- ExampleGroupFactory.register_example_group(klass)
- end
-
- # Makes the describe/it syntax available from a class. For example:
- #
- # class StackSpec < Spec::ExampleGroup
- # describe Stack, "with no elements"
- #
- # before
- # @stack = Stack.new
- # end
- #
- # it "should raise on pop" do
- # lambda{ @stack.pop }.should raise_error
- # end
- # end
- #
- def describe(*args, &example_group_block)
- raise Spec::Example::NoDescriptionError.new("example group", caller(0)[1]) if args.empty?
- if example_group_block
- options = add_options(args)
- set_location(options, caller(0)[1])
- if options[:shared]
- ExampleGroupFactory.create_shared_example_group(*args, &example_group_block)
- else
- subclass(*args, &example_group_block)
- end
- else
- set_description(*args)
- end
- end
- alias :context :describe
-
- # Use this to pull in examples from shared example groups.
- def it_should_behave_like(*shared_example_groups)
- shared_example_groups.each do |group|
- include_shared_example_group(group)
- end
- end
-
- # Creates an instance of the current example group class and adds it to
- # a collection of examples of the current example group.
- def example(description=nil, options={}, backtrace=nil, &implementation)
- example_proxy = ExampleProxy.new(description, options, backtrace || caller(0)[1])
- example_proxies << example_proxy
- example_implementations[example_proxy] = implementation || pending_implementation
- example_proxy
- end
-
- def pending_implementation
- lambda {|*args| raise(Spec::Example::NotYetImplementedError) }
- end
-
- alias_method :it, :example
- alias_method :specify, :example
-
- # Use this to temporarily disable an example.
- def xexample(description=nil, opts={}, &block)
- Kernel.warn("Example disabled: #{description}")
- end
-
- alias_method :xit, :xexample
- alias_method :xspecify, :xexample
-
- def run(run_options)
- examples = examples_to_run(run_options)
- notify(run_options.reporter) unless examples.empty?
- return true if examples.empty?
- return dry_run(examples, run_options) if run_options.dry_run?
-
- define_methods_from_predicate_matchers
-
- success, before_all_instance_variables = run_before_all(run_options)
- success, after_all_instance_variables = run_examples(success, before_all_instance_variables, examples, run_options)
- success = run_after_all(success, after_all_instance_variables, run_options)
- end
-
- def set_description(*args)
- @description_args, @options = args_and_options(*args)
- @backtrace = caller(1)
- @location = File.expand_path(options[:location]) if options[:location]
- self
- end
-
- def notify(reporter) # :nodoc:
- reporter.example_group_started(ExampleGroupProxy.new(self))
- end
-
- def description
- @description ||= ExampleGroupMethods.build_description_from(*description_parts) || to_s
- end
-
- def described_type
- @described_type ||= description_parts.reverse.find {|part| part.is_a?(Module)}
- end
-
- def described_class
- @described_class ||= Class === described_type ? described_type : nil
- end
-
- def description_args
- @description_args ||= []
- end
-
- def description_parts #:nodoc:
- @description_parts ||= example_group_hierarchy.inject([]) do |parts, example_group_class|
- [parts << example_group_class.description_args].flatten
- end
- end
-
- def example_proxies # :nodoc:
- @example_proxies ||= []
- end
-
- def example_implementations # :nodoc:
- @example_implementations ||= {}
- end
-
- def examples(run_options=nil) #:nodoc:
- (run_options && run_options.reverse) ? example_proxies.reverse : example_proxies
- end
-
- def number_of_examples #:nodoc:
- example_proxies.length
- end
-
- def example_group_hierarchy
- @example_group_hierarchy ||= ExampleGroupHierarchy.new(self)
- end
-
- def nested_descriptions
- example_group_hierarchy.nested_descriptions
- end
-
- def include_constants_in(mod)
- include mod if (Spec::Ruby.version.to_f >= 1.9) & (Module === mod) & !(Class === mod)
- end
-
- def let(name, &block)
- define_method name do
- @assignments ||= {}
- @assignments[name] ||= instance_eval(&block)
- end
- end
-
- def let!(name, &block)
- let(name, &block)
- before { __send__(name) }
- end
-
- private
-
- def subclass(*args, &example_group_block)
- @class_count ||= 0
- @class_count += 1
- klass = const_set("Subclass_#{@class_count}", Class.new(self))
- klass.set_description(*args)
- klass.include_constants_in(args.last[:scope])
- klass.module_eval(&example_group_block)
- klass
- end
-
- def dry_run(examples, run_options)
- examples.each do |example|
- run_options.reporter.example_started(example)
- run_options.reporter.example_finished(example)
- end
- end
-
- def run_before_all(run_options)
- return [true,{}] if example_group_hierarchy.before_all_parts.empty?
- example_proxy = ExampleProxy.new("before(:all)")
- before_all = new(example_proxy)
- begin
- example_group_hierarchy.run_before_all(before_all)
- return [true, before_all.instance_variable_hash]
- rescue Exception => e
- run_options.reporter.example_failed(example_proxy, e)
- return [false, before_all.instance_variable_hash]
- end
- end
-
- def run_examples(success, instance_variables, examples, run_options)
- return [success, instance_variables] unless success
-
- after_all_instance_variables = instance_variables
-
- examples.each do |example|
- example_group_instance = new(example, &example_implementations[example])
- success &= example_group_instance.execute(run_options, instance_variables)
- after_all_instance_variables = example_group_instance.instance_variable_hash
- end
-
- return [success, after_all_instance_variables]
- end
-
- def run_after_all(success, instance_variables, run_options)
- return success if example_group_hierarchy.after_all_parts.empty?
- example_proxy = ExampleProxy.new("after(:all)")
- after_all = new(example_proxy)
- after_all.set_instance_variables_from_hash(instance_variables)
- example_group_hierarchy.run_after_all(after_all)
- success
- rescue Exception => e
- run_options.reporter.example_failed(example_proxy, e)
- false
- end
-
- def examples_to_run(run_options)
- return example_proxies unless examples_were_specified?(run_options)
- if run_options.line_number_requested?
- if location =~ /:#{run_options.example_line}:?/
- example_proxies
- else
- example_proxies.select {|proxy| proxy.location =~ /:#{run_options.example_line}:?/}
- end
- else
- example_proxies.reject do |proxy|
- matcher = ExampleGroupMethods.matcher_class.
- new(description.to_s, proxy.description)
- !matcher.matches?(run_options.examples)
- end
- end
- end
-
- def examples_were_specified?(run_options)
- !run_options.examples.empty?
- end
-
- def method_added(name) # :nodoc:
- example(name.to_s, {}, caller(0)[1]) {__send__ name.to_s} if example_method?(name.to_s)
- end
-
- def example_method?(method_name)
- should_method?(method_name)
- end
-
- def should_method?(method_name)
- !(method_name =~ /^should(_not)?$/) &&
- method_name =~ /^should/ &&
- instance_method(method_name).arity < 1
- end
-
- def include_shared_example_group(shared_example_group)
- case shared_example_group
- when SharedExampleGroup
- include shared_example_group
- else
- unless example_group = SharedExampleGroup.find(shared_example_group)
- raise RuntimeError.new("Shared Example Group '#{shared_example_group}' can not be found")
- end
- include(example_group)
- end
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_proxy.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_proxy.rb
deleted file mode 100644
index 3c258d61f..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/example_group_proxy.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-module Spec
- module Example
- # Lightweight proxy for an example group. This is the object that is passed
- # to Spec::Runner::Formatter::BaseFormatter#example_group_started
- class ExampleGroupProxy
-
- def initialize(example_group) # :nodoc:
- @description = example_group.description
- @nested_descriptions = example_group.nested_descriptions
- @examples = example_group.example_proxies
- @location = example_group.location
- @backtrace = example_group.location # deprecated - see the backtrace method below
- @options = example_group.options.dup
- @options.delete(:location)
- @options.delete(:scope)
- end
-
- # Optional hash passed to the example group declaration. Note that RSpec uses
- # this hash internally and reserves the keys :location and :scope for its own
- # use (and removes them from this hash)
- attr_reader :options
-
- # This is the description passed to the <tt>describe()</tt> method or any
- # of its aliases
- attr_reader :description
-
- # Used by Spec::Runner::Formatter::NestedTextFormatter to access the
- # description of each example group in a nested group separately.
- attr_reader :nested_descriptions
-
- # A collection of ExampleGroupProxy objects, one for each example
- # declared in this group.
- attr_reader :examples
-
- # The file and line number at which the proxied example group
- # was declared. This is extracted from <tt>caller</tt>, and is therefore
- # formatted as an individual line in a backtrace.
- attr_reader :location
-
- # Deprecated - use location() instead
- def backtrace
- Spec::deprecate("ExampleGroupProxy#backtrace","ExampleGroupProxy#location")
- @backtrace
- end
-
- # Deprecated - just use gsub on the description instead.
- def filtered_description(regexp)
- Spec::deprecate("ExampleGroupProxy#filtered_description","gsub (or similar) to modify ExampleGroupProxy#description")
- ExampleGroupMethods.build_description_from(
- *nested_descriptions.collect do |description|
- description =~ regexp ? description.gsub($1, "") : description
- end
- )
- end
-
- def ==(other) # :nodoc:
- other.description == description
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/example_matcher.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/example_matcher.rb
deleted file mode 100644
index 3acd7e14a..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/example_matcher.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-module Spec
- module Example
- class ExampleMatcher
- def initialize(example_group_description, example_name)
- @example_group_description = example_group_description
- @example_name = example_name
- end
-
- def matches?(specified_examples)
- specified_examples.any? do |specified_example|
- matches_literal_example?(specified_example) || matches_example_not_considering_modules?(specified_example)
- end
- end
-
- protected
- def matches_literal_example?(specified_example)
- specified_example =~ /(^#{example_group_regex} #{example_regexp}$|^#{example_group_regex}$|^#{example_group_with_before_all_regexp}$|^#{example_regexp}$)/
- end
-
- def matches_example_not_considering_modules?(specified_example)
- specified_example =~ /(^#{example_group_regex_not_considering_modules} #{example_regexp}$|^#{example_group_regex_not_considering_modules}$|^#{example_regexp}$)/
- end
-
- def example_group_regex
- Regexp.escape(@example_group_description)
- end
-
- def example_group_with_before_all_regexp
- Regexp.escape("#{@example_group_description} before(:all)")
- end
-
- def example_group_regex_not_considering_modules
- Regexp.escape(@example_group_description.split('::').last)
- end
-
- def example_regexp
- Regexp.escape(@example_name) if @example_name
- end
- end
-
- ExampleGroupMethods.matcher_class = ExampleMatcher
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/example_methods.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/example_methods.rb
deleted file mode 100644
index 10f45a722..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/example_methods.rb
+++ /dev/null
@@ -1,152 +0,0 @@
-module Spec
- module Example
- module ExampleMethods
-
- extend Spec::Example::ModuleReopeningFix
- include Spec::Example::Subject::ExampleMethods
-
- def violated(message="")
- raise Spec::Expectations::ExpectationNotMetError.new(message)
- end
-
- # Declared description for this example:
- #
- # describe Account do
- # it "should start with a balance of 0" do
- # ...
- #
- # description
- # => "should start with a balance of 0"
- def description
- if description = @_proxy.description || ::Spec::Matchers.generated_description
- description
- else
- Spec.warn Spec::Example::NoDescriptionError.message("example", @_proxy.location)
- end
- end
-
- def options # :nodoc:
- @_proxy.options
- end
-
- def execute(run_options, instance_variables) # :nodoc:
- run_options.reporter.example_started(@_proxy)
- set_instance_variables_from_hash(instance_variables)
-
- execution_error = nil
- Timeout.timeout(run_options.timeout) do
- begin
- before_each_example
- instance_eval(&@_implementation)
- rescue Interrupt
- exit 1
- rescue Exception => e
- execution_error ||= e
- end
- begin
- after_each_example
- rescue Interrupt
- exit 1
- rescue Exception => e
- execution_error ||= e
- end
- end
-
- run_options.reporter.example_finished(@_proxy.update(description), execution_error)
- success = execution_error.nil? || ExamplePendingError === execution_error
- end
-
- module BlockAliases
- alias_method :to, :should
- alias_method :to_not, :should_not
- end
-
- # Extends the submitted block with aliases to and to_not
- # for should and should_not. Allows expectations like this:
- #
- # expect { this_block }.to change{this.expression}.from(old_value).to(new_value)
- # expect { this_block }.to raise_error
- def expect(&block)
- block.extend BlockAliases
- end
-
- def eval_each_fail_fast(blocks) # :nodoc:
- blocks.each {|block| instance_eval(&block)}
- end
-
- def eval_each_fail_slow(blocks) # :nodoc:
- first_exception = nil
- blocks.each do |block|
- begin
- instance_eval(&block)
- rescue Exception => e
- first_exception ||= e
- end
- end
- raise first_exception if first_exception
- end
-
- def instance_variable_hash # :nodoc:
- instance_variables.inject({}) do |variable_hash, variable_name|
- variable_hash[variable_name] = instance_variable_get(variable_name)
- variable_hash
- end
- end
-
- def set_instance_variables_from_hash(ivars) # :nodoc:
- ivars.each do |variable_name, value|
- # Ruby 1.9 requires variable.to_s on the next line
- unless ['@_proxy', '@_implementation', '@method_name'].include?(variable_name.to_s)
- instance_variable_set variable_name, value
- end
- end
- end
-
- # Run all the before(:each) blocks for this example
- def run_before_each
- example_group_hierarchy.run_before_each(self)
- end
-
- # Run all the after(:each) blocks for this example
- def run_after_each
- example_group_hierarchy.run_after_each(self)
- end
-
- def initialize(example_proxy, &implementation)
- @_proxy = example_proxy
- @_implementation = implementation
- @_backtrace = caller
- end
-
- private
-
- include Matchers
- include Pending
-
- def before_each_example
- setup_mocks_for_rspec
- run_before_each
- end
-
- def after_each_example
- run_after_each
- verify_mocks_for_rspec
- ensure
- teardown_mocks_for_rspec
- end
-
- def described_class
- self.class.described_class
- end
-
- def description_args
- self.class.description_args
- end
-
- def example_group_hierarchy
- self.class.example_group_hierarchy
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/example_proxy.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/example_proxy.rb
deleted file mode 100644
index f726d0e70..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/example_proxy.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-module Spec
- module Example
- # Lightweight proxy for an example. This is the object that is passed to
- # example-related methods in Spec::Runner::Formatter::BaseFormatter
- class ExampleProxy
-
- def initialize(description=nil, options={}, location=nil) # :nodoc:
- @description, @options, @location = description, options, location
- end
-
- # Optional hash passed to the example declaration
- attr_reader :options
-
- # This is the docstring passed to the <tt>it()</tt> method or any
- # of its aliases
- attr_reader :description
-
- # The file and line number at which the represented example
- # was declared. This is extracted from <tt>caller</tt>, and is therefore
- # formatted as an individual line in a backtrace.
- attr_reader :location
-
- # Deprecated - use location()
- def backtrace
- Spec.deprecate("ExampleProxy#backtrace","ExampleProxy#location")
- location
- end
-
- # Convenience method for example group - updates the value of
- # <tt>description</tt> and returns self.
- def update(description) # :nodoc:
- @description = description
- self
- end
-
- def ==(other) # :nodoc:
- (other.description == description) & (other.location == location)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/module_reopening_fix.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/module_reopening_fix.rb
deleted file mode 100644
index 9ea088a2e..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/module_reopening_fix.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-module Spec
- module Example
- # When you reopen a module that is included in another module that is included in a class,
- # the new material you define does not make it to the class. This fixes that.
- #
- # == Example
- #
- # module M1; end
- #
- # module M2
- # def foo; "FOO"; end
- # end
- #
- # class C
- # include M1
- # end
- #
- # module M1
- # include M2
- # end
- #
- # c = C.new
- # c.foo
- # NoMethodError: undefined method `foo' for #<C:0x5e89a4>
- # from (irb):12
- module ModuleReopeningFix
- def child_modules
- @child_modules ||= []
- end
-
- def included(mod)
- child_modules << mod
- end
-
- def include(mod)
- super
- child_modules.each do |child_module|
- child_module.__send__(:include, mod)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/pending.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/pending.rb
deleted file mode 100644
index 9aad1aab0..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/pending.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-module Spec
- module Example
- module Pending
- def pending(message = "TODO")
- if block_given?
- begin
- yield
- rescue Exception
- raise Spec::Example::ExamplePendingError.new(message)
- end
- raise Spec::Example::PendingExampleFixedError.new("Expected pending '#{message}' to fail. No Error was raised.")
- else
- raise Spec::Example::ExamplePendingError.new(message)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/predicate_matchers.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/predicate_matchers.rb
deleted file mode 100644
index c3c319519..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/predicate_matchers.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-module Spec
- module Example
- module PredicateMatchers
- # :call-seq:
- # predicate_matchers[matcher_name] = method_on_object
- # predicate_matchers[matcher_name] = [method1_on_object, method2_on_object]
- #
- # Dynamically generates a custom matcher that will match
- # a predicate on your class. RSpec provides a couple of these
- # out of the box:
- #
- # exist (for state expectations)
- # File.should exist("path/to/file")
- #
- # an_instance_of (for mock argument matchers)
- # mock.should_receive(:message).with(an_instance_of(String))
- #
- # == Examples
- #
- # class Fish
- # def can_swim?
- # true
- # end
- # end
- #
- # describe Fish do
- # predicate_matchers[:swim] = :can_swim?
- # it "should swim" do
- # Fish.new.should swim
- # end
- # end
- def predicate_matchers
- @predicate_matchers ||= Spec::HashWithDeprecationNotice.new("predicate_matchers", "the new Matcher DSL")
- end
-
- def define_methods_from_predicate_matchers # :nodoc:
- predicate_matchers.each_pair do |matcher_method, method_on_object|
- define_method matcher_method do |*args|
- eval("be_#{method_on_object.to_s.gsub('?','')}(*args)")
- end
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/shared_example_group.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/shared_example_group.rb
deleted file mode 100644
index 336944914..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/shared_example_group.rb
+++ /dev/null
@@ -1,59 +0,0 @@
-module Spec
- module Example
- class SharedExampleGroup < Module
- module ClassMethods
- def register(*args, &block)
- new_example_group = new(*args, &block)
- shared_example_groups << new_example_group unless already_registered?(new_example_group)
- new_example_group
- end
-
- def find(example_group_description)
- shared_example_groups.find {|b| b.description == example_group_description}
- end
-
- def clear
- shared_example_groups.clear
- end
-
- def include?(group)
- shared_example_groups.include?(group)
- end
-
- def count
- shared_example_groups.length
- end
-
- private
-
- def shared_example_groups
- @shared_example_groups ||= []
- end
-
- def already_registered?(new_example_group)
- existing_example_group = find(new_example_group.description)
- return false unless existing_example_group
- return true if new_example_group.equal?(existing_example_group)
- return true if expanded_path(new_example_group) == expanded_path(existing_example_group)
- raise ArgumentError.new("Shared Example '#{existing_example_group.description}' already exists")
- end
-
- def expanded_path(example_group)
- File.expand_path(example_group.location)
- end
- end
-
- extend ClassMethods
- include ExampleGroupMethods
-
- def initialize(*args, &example_group_block)
- set_description(*args)
- @example_group_block = example_group_block
- end
-
- def included(mod) # :nodoc:
- mod.module_eval(&@example_group_block)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/example/subject.rb b/vendor/gems/rspec-1.3.1/lib/spec/example/subject.rb
deleted file mode 100644
index 4f53f543a..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/example/subject.rb
+++ /dev/null
@@ -1,114 +0,0 @@
-module Spec
- module Example
- module Subject
- module ExampleGroupMethods
- # Defines an explicit subject for an example group which can then be the
- # implicit receiver (through delegation) of calls to +should+.
- #
- # == Examples
- #
- # describe CheckingAccount, "with $50" do
- # subject { CheckingAccount.new(:amount => 50, :currency => :USD) }
- # it { should have_a_balance_of(50, :USD) }
- # it { should_not be_overdrawn }
- # its(:currency) { should == :USD }
- # end
- #
- # See +ExampleMethods#should+ for more information about this approach.
- def subject(&block)
- block.nil? ?
- explicit_subject || implicit_subject : @explicit_subject_block = block
- end
-
- def its(attribute, &block)
- describe(attribute) do
- example do
- self.class.class_eval do
- define_method(:subject) do
- super().send(attribute)
- end
- end
- instance_eval(&block)
- end
- end
- end
-
- attr_reader :explicit_subject_block # :nodoc:
-
- private
-
- def explicit_subject
- group = self
- while group.respond_to?(:explicit_subject_block)
- return group.explicit_subject_block if group.explicit_subject_block
- group = group.superclass
- end
- end
-
- def implicit_subject
- (described_class ? proc {described_class.new} : proc {description_args.first})
- end
- end
-
- module ExampleMethods
-
- alias_method :__should_for_example_group__, :should
- alias_method :__should_not_for_example_group__, :should_not
-
- # Returns the subject defined in ExampleGroupMethods#subject. The
- # subject block is only executed once per example, the result of which
- # is cached and returned by any subsequent calls to +subject+.
- #
- # If a class is passed to +describe+ and no subject is explicitly
- # declared in the example group, then +subject+ will return a new
- # instance of that class.
- #
- # == Examples
- #
- # # explicit subject defined by the subject method
- # describe Person do
- # subject { Person.new(:birthdate => 19.years.ago) }
- # it "should be eligible to vote" do
- # subject.should be_eligible_to_vote
- # end
- # end
- #
- # # implicit subject => { Person.new }
- # describe Person do
- # it "should be eligible to vote" do
- # subject.should be_eligible_to_vote
- # end
- # end
- def subject
- @subject ||= instance_eval(&self.class.subject)
- end
-
- # When +should+ is called with no explicit receiver, the call is
- # delegated to the object returned by +subject+. Combined with
- # an implicit subject (see +subject+), this supports very concise
- # expressions.
- #
- # == Examples
- #
- # describe Person do
- # it { should be_eligible_to_vote }
- # end
- def should(matcher=nil, message=nil)
- self == subject ? self.__should_for_example_group__(matcher) : subject.should(matcher,message)
- end
-
- # Just like +should+, +should_not+ delegates to the subject (implicit or
- # explicit) of the example group.
- #
- # == Examples
- #
- # describe Person do
- # it { should_not be_eligible_to_vote }
- # end
- def should_not(matcher=nil, message=nil)
- self == subject ? self.__should_not_for_example_group__(matcher) : subject.should_not(matcher,message)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/expectations.rb b/vendor/gems/rspec-1.3.1/lib/spec/expectations.rb
deleted file mode 100644
index 13cf59b26..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/expectations.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'spec/matchers'
-require 'spec/expectations/fail_with'
-require 'spec/expectations/errors'
-require 'spec/expectations/extensions'
-require 'spec/expectations/handler'
-
-module Spec
-
- # Spec::Expectations lets you set expectations on your objects.
- #
- # result.should == 37
- # team.should have(11).players_on_the_field
- #
- # == How Expectations work.
- #
- # Spec::Expectations adds two methods to Object:
- #
- # should(matcher=nil)
- # should_not(matcher=nil)
- #
- # Both methods take an optional Expression Matcher (See Spec::Matchers).
- #
- # When +should+ receives an Expression Matcher, it calls <tt>matches?(self)</tt>. If
- # it returns +true+, the spec passes and execution continues. If it returns
- # +false+, then the spec fails with the message returned by <tt>matcher.failure_message</tt>.
- #
- # Similarly, when +should_not+ receives a matcher, it calls <tt>matches?(self)</tt>. If
- # it returns +false+, the spec passes and execution continues. If it returns
- # +true+, then the spec fails with the message returned by <tt>matcher.negative_failure_message</tt>.
- #
- # RSpec ships with a standard set of useful matchers, and writing your own
- # matchers is quite simple. See Spec::Matchers for details.
- module Expectations
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/expectations/errors.rb b/vendor/gems/rspec-1.3.1/lib/spec/expectations/errors.rb
deleted file mode 100644
index 1fabd105d..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/expectations/errors.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-module Spec
- module Expectations
- # If Test::Unit is loaed, we'll use its error as baseclass, so that Test::Unit
- # will report unmet RSpec expectations as failures rather than errors.
- superclass = ['Test::Unit::AssertionFailedError', '::StandardError'].map do |c|
- eval(c) rescue nil
- end.compact.first
-
- class ExpectationNotMetError < superclass
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/expectations/extensions.rb b/vendor/gems/rspec-1.3.1/lib/spec/expectations/extensions.rb
deleted file mode 100644
index d68212e42..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/expectations/extensions.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'spec/expectations/extensions/kernel'
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/expectations/extensions/kernel.rb b/vendor/gems/rspec-1.3.1/lib/spec/expectations/extensions/kernel.rb
deleted file mode 100644
index 7d8849226..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/expectations/extensions/kernel.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-module Kernel
- # :call-seq:
- # should(matcher)
- # should == expected
- # should === expected
- # should =~ expected
- #
- # receiver.should(matcher)
- # => Passes if matcher.matches?(receiver)
- #
- # receiver.should == expected #any value
- # => Passes if (receiver == expected)
- #
- # receiver.should === expected #any value
- # => Passes if (receiver === expected)
- #
- # receiver.should =~ regexp
- # => Passes if (receiver =~ regexp)
- #
- # See Spec::Matchers for more information about matchers
- #
- # == Warning
- #
- # NOTE that this does NOT support receiver.should != expected.
- # Instead, use receiver.should_not == expected
- def should(matcher=nil, message=nil, &block)
- Spec::Expectations::PositiveExpectationHandler.handle_matcher(self, matcher, message, &block)
- end
-
- # :call-seq:
- # should_not(matcher)
- # should_not == expected
- # should_not === expected
- # should_not =~ expected
- #
- # receiver.should_not(matcher)
- # => Passes unless matcher.matches?(receiver)
- #
- # receiver.should_not == expected
- # => Passes unless (receiver == expected)
- #
- # receiver.should_not === expected
- # => Passes unless (receiver === expected)
- #
- # receiver.should_not =~ regexp
- # => Passes unless (receiver =~ regexp)
- #
- # See Spec::Matchers for more information about matchers
- def should_not(matcher=nil, message=nil, &block)
- Spec::Expectations::NegativeExpectationHandler.handle_matcher(self, matcher, message, &block)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/expectations/fail_with.rb b/vendor/gems/rspec-1.3.1/lib/spec/expectations/fail_with.rb
deleted file mode 100644
index 5e01f99df..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/expectations/fail_with.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-module Spec
- module Expectations
- class << self
- attr_accessor :differ
-
- # raises a Spec::Expectations::ExpectationNotMetError with message
- #
- # When a differ has been assigned and fail_with is passed
- # <code>expected</code> and <code>target</code>, passes them
- # to the differ to append a diff message to the failure message.
- def fail_with(message, expected=nil, target=nil) # :nodoc:
- if message.nil?
- raise ArgumentError, "Failure message is nil. Does your matcher define the " +
- "appropriate failure_message_for_* method to return a string?"
- end
- if (Array === message) & (message.length == 3)
- ::Spec.warn(<<-NOTICE
-
-*****************************************************************
-DEPRECATION WARNING: you are using deprecated behaviour that will
-be removed from a future version of RSpec.
-
-* Support for matchers that return arrays from failure message
-methods is deprecated.
-* Instead, the matcher should return a string, and expose methods
-for the expected() and actual() values.
-*****************************************************************
-NOTICE
- )
- message, expected, target = message[0], message[1], message[2]
- end
- unless (differ.nil? || expected.nil? || target.nil?)
- if expected.is_a?(String)
- message << "\n\n Diff:" << self.differ.diff_as_string(target.to_s, expected)
- elsif expected.is_a?(Hash) && target.is_a?(Hash)
- message << "\n\n Diff:" << self.differ.diff_as_hash(target, expected)
- elsif !target.is_a?(Proc)
- message << "\n\n Diff:" << self.differ.diff_as_object(target, expected)
- end
- end
- Kernel::raise(Spec::Expectations::ExpectationNotMetError.new(message))
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/expectations/handler.rb b/vendor/gems/rspec-1.3.1/lib/spec/expectations/handler.rb
deleted file mode 100644
index c059637c7..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/expectations/handler.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-module Spec
- module Expectations
- class InvalidMatcherError < ArgumentError; end
-
- class PositiveExpectationHandler
- def self.handle_matcher(actual, matcher, message=nil, &block)
- ::Spec::Matchers.last_should = :should
- ::Spec::Matchers.last_matcher = matcher
- return ::Spec::Matchers::PositiveOperatorMatcher.new(actual) if matcher.nil?
-
- match = matcher.matches?(actual, &block)
- return match if match
-
- message ||= matcher.respond_to?(:failure_message_for_should) ?
- matcher.failure_message_for_should :
- matcher.failure_message
-
- if matcher.respond_to?(:diffable?) && matcher.diffable?
- ::Spec::Expectations.fail_with message, matcher.expected.first, matcher.actual
- else
- ::Spec::Expectations.fail_with message
- end
- end
- end
-
- class NegativeExpectationHandler
- def self.handle_matcher(actual, matcher, message=nil, &block)
- ::Spec::Matchers.last_should = :should_not
- ::Spec::Matchers.last_matcher = matcher
- return ::Spec::Matchers::NegativeOperatorMatcher.new(actual) if matcher.nil?
-
- match = matcher.respond_to?(:does_not_match?) ?
- !matcher.does_not_match?(actual, &block) :
- matcher.matches?(actual, &block)
- return match unless match
-
- message ||= matcher.respond_to?(:failure_message_for_should_not) ?
- matcher.failure_message_for_should_not :
- matcher.negative_failure_message
-
- if matcher.respond_to?(:diffable?) && matcher.diffable?
- ::Spec::Expectations.fail_with message, matcher.expected.first, matcher.actual
- else
- ::Spec::Expectations.fail_with message
- end
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/extensions/instance_exec.rb b/vendor/gems/rspec-1.3.1/lib/spec/extensions/instance_exec.rb
deleted file mode 100644
index ca7e14ead..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/extensions/instance_exec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-module Spec
- module Matchers
- module InstanceExec
- unless respond_to?(:instance_exec)
- # based on Bounded Spec InstanceExec (Mauricio Fernandez)
- # http://eigenclass.org/hiki/bounded+space+instance_exec
- # - uses singleton_class of matcher instead of global
- # InstanceExecHelper module
- # - this keeps it scoped to this class only, which is the
- # only place we need it
- # - only necessary for ruby 1.8.6
- def instance_exec(*args, &block)
- singleton_class = (class << self; self; end)
- begin
- orig_critical, Thread.critical = Thread.critical, true
- n = 0
- n += 1 while respond_to?(method_name="__instance_exec#{n}")
- singleton_class.module_eval{ define_method(:__instance_exec, &block) }
- ensure
- Thread.critical = orig_critical
- end
- begin
- return send(:__instance_exec, *args)
- ensure
- singleton_class.module_eval{ remove_method(:__instance_exec) } rescue nil
- end
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/interop/test.rb b/vendor/gems/rspec-1.3.1/lib/spec/interop/test.rb
deleted file mode 100644
index 156ab8f87..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/interop/test.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-require 'spec'
-
-if Spec::Ruby.version.to_f >= 1.9
- gem 'test-unit','= 1.2.3'
-end
-
-require 'test/unit'
-
-if Spec::Ruby.version.to_f >= 1.9
- require 'test/unit/version'
- if Test::Unit::VERSION > '1.2.3'
- raise <<-MESSAGE
-#{'*' * 50}
-Required: test-unit-1.2.3
-Loaded: test-unit-#{Test::Unit::VERSION}
-
-With ruby-1.9, rspec-#{Spec::VERSION::STRING} requires test-unit-1.2.3, and
-tries to force it with "gem 'test-unit', '= 1.2.3'" in:
-
- #{__FILE__}
-
-Unfortunately, test-unit-#{Test::Unit::VERSION} was loaded anyway. While we are
-aware of this bug we have not been able to track down its source.
-Until we do, you have two alternatives:
-
-* uninstall test-unit-#{Test::Unit::VERSION}
-* use 'script/spec' instead of 'rake spec'
-#{'*' * 50}
-MESSAGE
- end
-end
-
-
-require 'test/unit/testresult'
-
-require 'spec/interop/test/unit/testcase'
-require 'spec/interop/test/unit/testsuite_adapter'
-require 'spec/interop/test/unit/autorunner'
-require 'spec/interop/test/unit/testresult'
-require 'spec/interop/test/unit/ui/console/testrunner'
-
-Spec::Example::ExampleGroupFactory.default(Test::Unit::TestCase)
-
-Test::Unit.run = true
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/autorunner.rb b/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/autorunner.rb
deleted file mode 100644
index 3944e6995..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/autorunner.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class Test::Unit::AutoRunner
- remove_method :process_args
- def process_args(argv)
- true
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testcase.rb b/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testcase.rb
deleted file mode 100644
index dc10a2a64..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testcase.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'test/unit/testcase'
-
-module Test
- module Unit
- # This extension of the standard Test::Unit::TestCase makes RSpec
- # available from within, so that you can do things like:
- #
- # require 'spec/test/unit'
- #
- # class MyTest < Test::Unit::TestCase
- # it "should work with Test::Unit assertions" do
- # assert_equal 4, 2+1
- # end
- #
- # def test_should_work_with_rspec_expectations
- # (3+1).should == 5
- # end
- # end
- #
- # See also Spec::Example::ExampleGroup
- class TestCase
- extend Spec::Example::ExampleGroupMethods
- include Spec::Example::ExampleMethods
-
- def self.suite
- Test::Unit::TestSuiteAdapter.new(self)
- end
-
- def self.example_method?(method_name)
- should_method?(method_name) || test_method?(method_name)
- end
-
- def self.test_method?(method_name)
- method_name =~ /^test./ && (
- instance_method(method_name).arity == 0 ||
- instance_method(method_name).arity == -1
- )
- end
-
- before(:each) {setup}
- after(:each) {teardown}
-
- def initialize(description, &implementation)
- super
- # Some Test::Unit extensions depend on @method_name being present.
- @method_name = description.description
- @_result = ::Test::Unit::TestResult.new
- end
-
- def run(ignore_this_argument=nil)
- super()
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testresult.rb b/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testresult.rb
deleted file mode 100644
index dddcfe868..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testresult.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class Test::Unit::TestResult
- alias_method :tu_passed?, :passed?
- def passed?
- return tu_passed? & ::Spec::Runner.run
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testsuite_adapter.rb b/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testsuite_adapter.rb
deleted file mode 100644
index 76dcd14dc..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/testsuite_adapter.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'test/unit/testsuite'
-
-module Test
- module Unit
- class TestSuiteAdapter < TestSuite
- attr_reader :example_group, :examples
- alias_method :tests, :examples
- def initialize(example_group)
- @example_group = example_group
- @examples = example_group.examples
- end
-
- def name
- example_group.description
- end
-
- def run(*args)
- return true unless args.empty?
- example_group.run(Spec::Runner.options)
- end
-
- def size
- example_group.number_of_examples
- end
-
- def delete(example)
- examples.delete example
- end
-
- def empty?
- examples.empty?
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/ui/console/testrunner.rb b/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/ui/console/testrunner.rb
deleted file mode 100644
index 8e9995e02..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/interop/test/unit/ui/console/testrunner.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'test/unit/ui/console/testrunner'
-
-module Test
- module Unit
- module UI
- module Console
- class TestRunner
-
- alias_method :started_without_rspec, :started
- def started_with_rspec(result)
- @result = result
- @need_to_output_started = true
- end
- alias_method :started, :started_with_rspec
-
- alias_method :test_started_without_rspec, :test_started
- def test_started_with_rspec(name)
- if @need_to_output_started
- if @rspec_io
- @rspec_io.rewind
- output(@rspec_io.read)
- end
- output("Started")
- @need_to_output_started = false
- end
- test_started_without_rspec(name)
- end
- alias_method :test_started, :test_started_with_rspec
-
- alias_method :test_finished_without_rspec, :test_finished
- def test_finished_with_rspec(name)
- test_finished_without_rspec(name)
- @ran_test = true
- end
- alias_method :test_finished, :test_finished_with_rspec
-
- alias_method :finished_without_rspec, :finished
- def finished_with_rspec(elapsed_time)
- @ran_test ||= false
- if @ran_test
- finished_without_rspec(elapsed_time)
- end
- end
- alias_method :finished, :finished_with_rspec
-
- alias_method :setup_mediator_without_rspec, :setup_mediator
- def setup_mediator_with_rspec
- orig_io = @io
- @io = StringIO.new
- setup_mediator_without_rspec
- ensure
- @rspec_io = @io
- @io = orig_io
- end
- alias_method :setup_mediator, :setup_mediator_with_rspec
-
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers.rb
deleted file mode 100644
index a235df3ad..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers.rb
+++ /dev/null
@@ -1,214 +0,0 @@
-require 'spec/extensions/instance_exec'
-require 'spec/matchers/pretty'
-require 'spec/matchers/matcher'
-require 'spec/matchers/operator_matcher'
-require 'spec/matchers/be'
-require 'spec/matchers/be_close'
-require 'spec/matchers/be_instance_of'
-require 'spec/matchers/be_kind_of'
-require 'spec/matchers/change'
-require 'spec/matchers/eql'
-require 'spec/matchers/equal'
-require 'spec/matchers/errors'
-require 'spec/matchers/exist'
-require 'spec/matchers/generated_descriptions'
-require 'spec/matchers/has'
-require 'spec/matchers/have'
-require 'spec/matchers/include'
-require 'spec/matchers/match'
-require 'spec/matchers/match_array'
-require 'spec/matchers/method_missing'
-require 'spec/matchers/raise_exception'
-require 'spec/matchers/respond_to'
-require 'spec/matchers/satisfy'
-require 'spec/matchers/simple_matcher'
-require 'spec/matchers/throw_symbol'
-require 'spec/matchers/wrap_expectation'
-require 'spec/matchers/compatibility'
-require 'spec/matchers/dsl'
-
-module Spec
-
- # RSpec ships with a number of useful Expression Matchers. An Expression Matcher
- # is any object that responds to the following methods:
- #
- # matches?(actual)
- # failure_message_for_should
- #
- # These methods are also part of the matcher protocol, but are optional:
- #
- # does_not_match?(actual)
- # failure_message_for_should_not
- # description #optional
- #
- # These methods are from older versions of the protocol. They are still supported,
- # but are not recommended:
- #
- # failure_message (use failure_message_for_should instead)
- # negative_failure_message (use failure_message_for_should_not instead)
- #
- # See Spec::Expectations to learn how to use these as Expectation Matchers.
- #
- # == Predicates
- #
- # In addition to those Expression Matchers that are defined explicitly, RSpec will
- # create custom Matchers on the fly for any arbitrary predicate, giving your specs
- # a much more natural language feel.
- #
- # A Ruby predicate is a method that ends with a "?" and returns true or false.
- # Common examples are +empty?+, +nil?+, and +instance_of?+.
- #
- # All you need to do is write +should be_+ followed by the predicate without
- # the question mark, and RSpec will figure it out from there. For example:
- #
- # [].should be_empty => [].empty? #passes
- # [].should_not be_empty => [].empty? #fails
- #
- # In addtion to prefixing the predicate matchers with "be_", you can also use "be_a_"
- # and "be_an_", making your specs read much more naturally:
- #
- # "a string".should be_an_instance_of(String) =>"a string".instance_of?(String) #passes
- #
- # 3.should be_a_kind_of(Fixnum) => 3.kind_of?(Numeric) #passes
- # 3.should be_a_kind_of(Numeric) => 3.kind_of?(Numeric) #passes
- # 3.should be_an_instance_of(Fixnum) => 3.instance_of?(Fixnum) #passes
- # 3.should_not be_instance_of(Numeric) => 3.instance_of?(Numeric) #fails
- #
- # RSpec will also create custom matchers for predicates like +has_key?+. To
- # use this feature, just state that the object should have_key(:key) and RSpec will
- # call has_key?(:key) on the target. For example:
- #
- # {:a => "A"}.should have_key(:a) => {:a => "A"}.has_key?(:a) #passes
- # {:a => "A"}.should have_key(:b) => {:a => "A"}.has_key?(:b) #fails
- #
- # You can use this feature to invoke any predicate that begins with "has_", whether it is
- # part of the Ruby libraries (like +Hash#has_key?+) or a method you wrote on your own class.
- #
- # == Custom Matchers
- #
- # When you find that none of the stock Expectation Matchers provide a natural
- # feeling expectation, you can very easily write your own using RSpec's matcher
- # DSL or writing one from scratch.
- #
- # === Matcher DSL
- #
- # Imagine that you are writing a game in which players can be in various
- # zones on a virtual board. To specify that bob should be in zone 4, you
- # could say:
- #
- # bob.current_zone.should eql(Zone.new("4"))
- #
- # But you might find it more expressive to say:
- #
- # bob.should be_in_zone("4")
- #
- # and/or
- #
- # bob.should_not be_in_zone("3")
- #
- # You can create such a matcher like so:
- #
- # Spec::Matchers.define :be_in_zone do |zone|
- # match do |player|
- # player.in_zone?(zone)
- # end
- # end
- #
- # This will generate a <tt>be_in_zone</tt> method that returns a matcher
- # with logical default messages for failures. You can override the failure
- # messages and the generated description as follows:
- #
- # Spec::Matchers.define :be_in_zone do |zone|
- # match do |player|
- # player.in_zone?(zone)
- # end
- # failure_message_for_should do |player|
- # # generate and return the appropriate string.
- # end
- # failure_message_for_should_not do |player|
- # # generate and return the appropriate string.
- # end
- # description do
- # # generate and return the appropriate string.
- # end
- # end
- #
- # Each of the message-generation methods has access to the block arguments
- # passed to the <tt>create</tt> method (in this case, <tt>zone</tt>). The
- # failure message methods (<tt>failure_message_for_should</tt> and
- # <tt>failure_message_for_should_not</tt>) are passed the actual value (the
- # receiver of <tt>should</tt> or <tt>should_not</tt>).
- #
- # You can also create matchers that obey a fluent interface using the
- # <tt>chain</tt> method:
- #
- # Spec::Matchers.define :tip do |expected_tip|
- # chain :on do |bill|
- # @bill = bill
- # end
- #
- # match do |person|
- # person.tip_for(bill) == expected_tip
- # end
- # end
- #
- # This matcher can be used as follows:
- #
- # describe Customer do
- # it { should tip(10).on(50) }
- # end
- #
- # === Custom Matcher from scratch
- #
- # You could also write a custom matcher from scratch, as follows:
- #
- # class BeInZone
- # def initialize(expected)
- # @expected = expected
- # end
- # def matches?(target)
- # @target = target
- # @target.current_zone.eql?(Zone.new(@expected))
- # end
- # def failure_message_for_should
- # "expected #{@target.inspect} to be in Zone #{@expected}"
- # end
- # def failure_message_for_should_not
- # "expected #{@target.inspect} not to be in Zone #{@expected}"
- # end
- # end
- #
- # ... and a method like this:
- #
- # def be_in_zone(expected)
- # BeInZone.new(expected)
- # end
- #
- # And then expose the method to your specs. This is normally done
- # by including the method and the class in a module, which is then
- # included in your spec:
- #
- # module CustomGameMatchers
- # class BeInZone
- # ...
- # end
- #
- # def be_in_zone(expected)
- # ...
- # end
- # end
- #
- # describe "Player behaviour" do
- # include CustomGameMatchers
- # ...
- # end
- #
- # or you can include in globally in a spec_helper.rb file <tt>require</tt>d
- # from your spec file(s):
- #
- # Spec::Runner.configure do |config|
- # config.include(CustomGameMatchers)
- # end
- #
- module Matchers; end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/be.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/be.rb
deleted file mode 100644
index 1cbf90308..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/be.rb
+++ /dev/null
@@ -1,249 +0,0 @@
-require 'spec/matchers/dsl'
-
-Spec::Matchers.define :be_true do
- match do |actual|
- !!actual
- end
-end
-
-Spec::Matchers.define :be_false do
- match do |actual|
- !actual
- end
-end
-
-Spec::Matchers.define :be_nil do
- match do |actual|
- actual.nil?
- end
-
- failure_message_for_should do |actual|
- "expected nil, got #{actual.inspect}"
- end
-
- failure_message_for_should_not do
- "expected not nil, got nil"
- end
-end
-
-module Spec
- module Matchers
-
- class Be #:nodoc:
- include Spec::Matchers::Pretty
-
- def initialize(*args, &block)
- @args = args
- end
-
- def matches?(actual)
- @actual = actual
- !!@actual
- end
-
- def failure_message_for_should
- "expected #{@actual.inspect} to evaluate to true"
- end
-
- def failure_message_for_should_not
- "expected #{@actual.inspect} to evaluate to false"
- end
-
- def description
- "be"
- end
-
- [:==, :<, :<=, :>=, :>, :===].each do |operator|
- define_method operator do |operand|
- BeComparedTo.new(operand, operator)
- end
- end
-
- private
-
- def args_to_s
- @args.empty? ? "" : parenthesize(inspected_args.join(', '))
- end
-
- def parenthesize(string)
- return "(#{string})"
- end
-
- def inspected_args
- @args.collect{|a| a.inspect}
- end
-
- def expected_to_sentence
- split_words(@expected)
- end
-
- def args_to_sentence
- to_sentence(@args)
- end
-
- end
-
- class BeComparedTo < Be
-
- def initialize(operand, operator)
- @expected, @operator = operand, operator
- @args = []
- end
-
- def matches?(actual)
- @actual = actual
- @actual.__send__(@operator, @expected)
- end
-
- def failure_message_for_should
- "expected #{@operator} #{@expected}, got #{@actual.inspect}"
- end
-
- def failure_message_for_should_not
- message = <<-MESSAGE
-'should_not be #{@operator} #{@expected}' not only FAILED,
-it is a bit confusing.
- MESSAGE
-
- raise message << ([:===,:==].include?(@operator) ?
- "It might be more clearly expressed without the \"be\"?" :
- "It might be more clearly expressed in the positive?")
- end
-
- def description
- "be #{@operator} #{expected_to_sentence}#{args_to_sentence}"
- end
-
- end
-
- class BePredicate < Be
-
- def initialize(*args, &block)
- @expected = parse_expected(args.shift)
- @args = args
- @block = block
- end
-
- def matches?(actual)
- @actual = actual
- begin
- return @result = actual.__send__(predicate, *@args, &@block)
- rescue NameError => predicate_missing_error
- "this needs to be here or rcov will not count this branch even though it's executed in a code example"
- end
-
- begin
- return @result = actual.__send__(present_tense_predicate, *@args, &@block)
- rescue NameError
- raise predicate_missing_error
- end
- end
-
- def failure_message_for_should
- "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}"
- end
-
- def failure_message_for_should_not
- "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}"
- end
-
- def description
- "#{prefix_to_sentence}#{expected_to_sentence}#{args_to_sentence}"
- end
-
- private
-
- def predicate
- "#{@expected}?".to_sym
- end
-
- def present_tense_predicate
- "#{@expected}s?".to_sym
- end
-
- def parse_expected(expected)
- @prefix, expected = prefix_and_expected(expected)
- expected
- end
-
- def prefix_and_expected(symbol)
- symbol.to_s =~ /^(be_(an?_)?)(.*)/
- return $1, $3
- end
-
- def prefix_to_sentence
- split_words(@prefix)
- end
-
- end
-
- class BeSameAs < Be
-
- def initialize(*args, &block)
- @expected = args.shift
- @args = args
- end
-
- def matches?(actual)
- @actual = actual
- @actual.equal?(@expected)
- end
-
- def failure_message_for_should
- "expected #{@expected}, got #{@actual.inspect}"
- end
-
- def failure_message_for_should_not
- "expected not #{@expected}, got #{@actual.inspect}"
- end
-
- def description
- "be #{expected_to_sentence}#{args_to_sentence}"
- end
-
- end
-
- # :call-seq:
- # should be_true
- # should be_false
- # should be_nil
- # should be_[arbitrary_predicate](*args)
- # should_not be_nil
- # should_not be_[arbitrary_predicate](*args)
- #
- # Given true, false, or nil, will pass if actual value is
- # true, false or nil (respectively). Given no args means
- # the caller should satisfy an if condition (to be or not to be).
- #
- # Predicates are any Ruby method that ends in a "?" and returns true or false.
- # Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
- # convert that into a query against the target object.
- #
- # The arbitrary_predicate feature will handle any predicate
- # prefixed with "be_an_" (e.g. be_an_instance_of), "be_a_" (e.g. be_a_kind_of)
- # or "be_" (e.g. be_empty), letting you choose the prefix that best suits the predicate.
- #
- # == Examples
- #
- # target.should be_true
- # target.should be_false
- # target.should be_nil
- # target.should_not be_nil
- #
- # collection.should be_empty #passes if target.empty?
- # target.should_not be_empty #passes unless target.empty?
- # target.should_not be_old_enough(16) #passes unless target.old_enough?(16)
- def be(*args)
- args.empty? ?
- Matchers::Be.new :
- Matchers::BeSameAs.new(*args)
- end
-
- # passes if target.kind_of?(klass)
- def be_a(klass)
- be_a_kind_of(klass)
- end
-
- alias_method :be_an, :be_a
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_close.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_close.rb
deleted file mode 100644
index 28015f5fb..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_close.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-module Spec
- module Matchers
- # :call-seq:
- # should be_close(expected, delta)
- # should_not be_close(expected, delta)
- #
- # Passes if actual == expected +/- delta
- #
- # == Example
- #
- # result.should be_close(3.0, 0.5)
- def be_close(expected, delta)
- Matcher.new :be_close, expected, delta do |_expected_, _delta_|
- match do |actual|
- (actual - _expected_).abs < _delta_
- end
-
- failure_message_for_should do |actual|
- "expected #{_expected_} +/- (< #{_delta_}), got #{actual}"
- end
-
- failure_message_for_should_not do |actual|
- "expected #{_expected_} +/- (< #{_delta_}), got #{actual}"
- end
-
- description do
- "be close to #{_expected_} (within +- #{_delta_})"
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_instance_of.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_instance_of.rb
deleted file mode 100644
index ffc238405..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_instance_of.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-module Spec
- module Matchers
- # :call-seq:
- # should be_instance_of(expected)
- # should be_an_instance_of(expected)
- # should_not be_instance_of(expected)
- # should_not be_an_instance_of(expected)
- #
- # Passes if actual.instance_of?(expected)
- #
- # == Examples
- #
- # 5.should be_instance_of(Fixnum)
- # 5.should_not be_instance_of(Numeric)
- # 5.should_not be_instance_of(Float)
- def be_an_instance_of(expected)
- Matcher.new :be_an_instance_of, expected do |_expected_|
- match do |actual|
- actual.instance_of?(_expected_)
- end
- end
- end
-
- alias_method :be_instance_of, :be_an_instance_of
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_kind_of.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_kind_of.rb
deleted file mode 100644
index 6a1fddc13..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/be_kind_of.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-module Spec
- module Matchers
- # :call-seq:
- # should be_kind_of(expected)
- # should be_a_kind_of(expected)
- # should_not be_kind_of(expected)
- # should_not be_a_kind_of(expected)
- #
- # Passes if actual.kind_of?(expected)
- #
- # == Examples
- #
- # 5.should be_kind_of(Fixnum)
- # 5.should be_kind_of(Numeric)
- # 5.should_not be_kind_of(Float)
- def be_a_kind_of(expected)
- Matcher.new :be_a_kind_of, expected do |_expected_|
- match do |actual|
- actual.kind_of?(_expected_)
- end
- end
- end
-
- alias_method :be_kind_of, :be_a_kind_of
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/change.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/change.rb
deleted file mode 100644
index c8ab9e5cf..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/change.rb
+++ /dev/null
@@ -1,151 +0,0 @@
-module Spec
- module Matchers
-
- #Based on patch from Wilson Bilkovich
- class Change #:nodoc:
- def initialize(receiver=nil, message=nil, &block)
- @message = message || "result"
- @value_proc = block || lambda {receiver.__send__(message)}
- @to = @from = @minimum = @maximum = @amount = nil
- end
-
- def matches?(event_proc)
- raise_block_syntax_error if block_given?
-
- @before = evaluate_value_proc
- event_proc.call
- @after = evaluate_value_proc
-
- return (@to = false) if @from unless @from == @before
- return false if @to unless @to == @after
- return (@before + @amount == @after) if @amount
- return ((@after - @before) >= @minimum) if @minimum
- return ((@after - @before) <= @maximum) if @maximum
- return @before != @after
- end
-
- def raise_block_syntax_error
- raise MatcherError.new(<<-MESSAGE
-block passed to should or should_not change must use {} instead of do/end
-MESSAGE
- )
- end
-
- def evaluate_value_proc
- @value_proc.call
- end
-
- def failure_message_for_should
- if @to
- "#{@message} should have been changed to #{@to.inspect}, but is now #{@after.inspect}"
- elsif @from
- "#{@message} should have initially been #{@from.inspect}, but was #{@before.inspect}"
- elsif @amount
- "#{@message} should have been changed by #{@amount.inspect}, but was changed by #{actual_delta.inspect}"
- elsif @minimum
- "#{@message} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}"
- elsif @maximum
- "#{@message} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}"
- else
- "#{@message} should have changed, but is still #{@before.inspect}"
- end
- end
-
- def actual_delta
- @after - @before
- end
-
- def failure_message_for_should_not
- "#{@message} should not have changed, but did change from #{@before.inspect} to #{@after.inspect}"
- end
-
- def by(amount)
- @amount = amount
- self
- end
-
- def by_at_least(minimum)
- @minimum = minimum
- self
- end
-
- def by_at_most(maximum)
- @maximum = maximum
- self
- end
-
- def to(to)
- @to = to
- self
- end
-
- def from (from)
- @from = from
- self
- end
-
- def description
- "change ##{@message}"
- end
- end
-
- # :call-seq:
- # should change(receiver, message, &block)
- # should change(receiver, message, &block).by(value)
- # should change(receiver, message, &block).from(old).to(new)
- # should_not change(receiver, message, &block)
- #
- # Allows you to specify that a Proc will cause some value to change.
- #
- # == Examples
- #
- # lambda {
- # team.add_player(player)
- # }.should change(roster, :count)
- #
- # lambda {
- # team.add_player(player)
- # }.should change(roster, :count).by(1)
- #
- # lambda {
- # team.add_player(player)
- # }.should change(roster, :count).by_at_least(1)
- #
- # lambda {
- # team.add_player(player)
- # }.should change(roster, :count).by_at_most(1)
- #
- # string = "string"
- # lambda {
- # string.reverse!
- # }.should change { string }.from("string").to("gnirts")
- #
- # lambda {
- # person.happy_birthday
- # }.should change(person, :birthday).from(32).to(33)
- #
- # lambda {
- # employee.develop_great_new_social_networking_app
- # }.should change(employee, :title).from("Mail Clerk").to("CEO")
- #
- # Evaluates <tt>receiver.message</tt> or <tt>block</tt> before and after
- # it evaluates the c object (generated by the lambdas in the examples
- # above).
- #
- # Then compares the values before and after the <tt>receiver.message</tt>
- # and evaluates the difference compared to the expected difference.
- #
- # == WARNING
- # <tt>should_not change</tt> only supports the form with no
- # subsequent calls to <tt>by</tt>, <tt>by_at_least</tt>,
- # <tt>by_at_most</tt>, <tt>to</tt> or <tt>from</tt>.
- #
- # blocks passed to <tt>should</tt> <tt>change</tt> and <tt>should_not</tt>
- # <tt>change</tt> must use the <tt>{}</tt> form (<tt>do/end</tt> is not
- # supported).
- #
- def change(receiver=nil, message=nil, &block)
- Matchers::Change.new(receiver, message, &block)
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/compatibility.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/compatibility.rb
deleted file mode 100644
index 3b3ddb9b6..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/compatibility.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-Spec::Matchers.constants.each do |c|
- if Class === (klass = Spec::Matchers.const_get(c))
- if klass.public_instance_methods.any? {|m| ['failure_message_for_should',:failure_message_for_should].include?(m)}
- klass.class_eval do
- alias_method :failure_message, :failure_message_for_should
- end
- end
- if klass.public_instance_methods.any? {|m| ['failure_message_for_should_not',:failure_message_for_should_not].include?(m)}
- klass.class_eval do
- alias_method :negative_failure_message, :failure_message_for_should_not
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/dsl.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/dsl.rb
deleted file mode 100644
index 73f363457..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/dsl.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-module Spec
- module Matchers
- module DSL
- # See Spec::Matchers
- def define(name, &declarations)
- define_method name do |*expected|
- Spec::Matchers::Matcher.new name, *expected, &declarations
- end
- end
-
- # Deprecated - use define
- def create(name, &declarations)
- Spec.deprecate("Spec::Matchers.create","Spec::Matchers.define")
- define(name, &declarations)
- end
- end
- end
-end
-
-Spec::Matchers.extend Spec::Matchers::DSL
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/eql.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/eql.rb
deleted file mode 100644
index 98ab198d9..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/eql.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-module Spec
- module Matchers
- # :call-seq:
- # should eql(expected)
- # should_not eql(expected)
- #
- # Passes if actual and expected are of equal value, but not necessarily the same object.
- #
- # See http://www.ruby-doc.org/core/classes/Object.html#M001057 for more information about equality in Ruby.
- #
- # == Examples
- #
- # 5.should eql(5)
- # 5.should_not eql(3)
- def eql(expected)
- Matcher.new :eql, expected do |_expected_|
- match do |actual|
- actual.eql?(_expected_)
- end
-
- failure_message_for_should do |actual|
- <<-MESSAGE
-
-expected #{_expected_.inspect}
- got #{actual.inspect}
-
-(compared using eql?)
-MESSAGE
- end
-
- failure_message_for_should_not do |actual|
- <<-MESSAGE
-
-expected #{actual.inspect} not to equal #{_expected_.inspect}
-
-(compared using eql?)
-MESSAGE
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/equal.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/equal.rb
deleted file mode 100644
index 3580a95af..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/equal.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-module Spec
- module Matchers
-
- # :call-seq:
- # should equal(expected)
- # should_not equal(expected)
- #
- # Passes if actual and expected are the same object (object identity).
- #
- # See http://www.ruby-doc.org/core/classes/Object.html#M001057 for more information about equality in Ruby.
- #
- # == Examples
- #
- # 5.should equal(5) #Fixnums are equal
- # "5".should_not equal("5") #Strings that look the same are not the same object
- def equal(expected)
- Matcher.new :equal, expected do |_expected_|
- match do |actual|
- actual.equal?(_expected_)
- end
-
- def inspect_object(o)
- "#<#{o.class}:#{o.object_id}> => #{o.inspect}"
- end
-
- failure_message_for_should do |actual|
- <<-MESSAGE
-
-expected #{inspect_object(_expected_)}
- got #{inspect_object(actual)}
-
-Compared using equal?, which compares object identity,
-but expected and actual are not the same object. Use
-'actual.should == expected' if you don't care about
-object identity in this example.
-
-MESSAGE
- end
-
- failure_message_for_should_not do |actual|
- <<-MESSAGE
-
-expected not #{inspect_object(actual)}
- got #{inspect_object(_expected_)}
-
-Compared using equal?, which compares object identity.
-
-MESSAGE
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/errors.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/errors.rb
deleted file mode 100644
index 49c267797..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/errors.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-module Spec
- module Matchers
- class MatcherError < StandardError; end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/exist.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/exist.rb
deleted file mode 100644
index dc69c683d..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/exist.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module Spec
- module Matchers
- # :call-seq:
- # should exist
- # should_not exist
- #
- # Passes if actual.exist?
- def exist(arg=nil)
- Matcher.new :exist do
- match do |actual|
- arg ? actual.exist?(arg) : actual.exist?
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/generated_descriptions.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/generated_descriptions.rb
deleted file mode 100644
index 2340f57d8..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/generated_descriptions.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-module Spec
- module Matchers
- class << self
- attr_accessor :last_matcher, :last_should # :nodoc:
- end
-
- def self.clear_generated_description
- self.last_matcher = nil
- self.last_should = nil
- end
-
- def self.generated_description
- return nil if last_should.nil?
- "#{last_should.to_s.gsub('_',' ')} #{last_description}"
- end
-
- private
-
- def self.last_description
- last_matcher.respond_to?(:description) ? last_matcher.description : <<-MESSAGE
-When you call a matcher in an example without a String, like this:
-
-specify { object.should matcher }
-
-or this:
-
-it { should matcher }
-
-RSpec expects the matcher to have a #description method. You should either
-add a String to the example this matcher is being used in, or give it a
-description method. Then you won't have to suffer this lengthy warning again.
-MESSAGE
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/has.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/has.rb
deleted file mode 100644
index 283154fa6..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/has.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-module Spec
- module Matchers
-
- class Has
-
- def initialize(expected, *args, &block)
- @expected, @args, @block = expected, args, block
- end
-
- def matches?(actual)
- actual.__send__(predicate(@expected), *@args, &@block)
- end
-
- def failure_message_for_should
- "expected ##{predicate(@expected)}(#{@args[0].inspect}) to return true, got false"
- end
-
- def failure_message_for_should_not
- "expected ##{predicate(@expected)}(#{@args[0].inspect}) to return false, got true"
- end
-
- def description
- "have key #{@args[0].inspect}"
- end
-
- private
-
- def predicate(sym)
- "#{sym.to_s.sub("have_","has_")}?".to_sym
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/have.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/have.rb
deleted file mode 100644
index 0c936d617..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/have.rb
+++ /dev/null
@@ -1,152 +0,0 @@
-module Spec
- module Matchers
- class Have #:nodoc:
- def initialize(expected, relativity=:exactly)
- @expected = (expected == :no ? 0 : expected)
- @relativity = relativity
- @actual = nil
- @plural_collection_name = nil
- end
-
- def relativities
- @relativities ||= {
- :exactly => "",
- :at_least => "at least ",
- :at_most => "at most "
- }
- end
-
- def matches?(collection_owner)
- if collection_owner.respond_to?(@collection_name)
- collection = collection_owner.__send__(@collection_name, *@args, &@block)
- elsif (@plural_collection_name && collection_owner.respond_to?(@plural_collection_name))
- collection = collection_owner.__send__(@plural_collection_name, *@args, &@block)
- elsif (collection_owner.respond_to?(:length) || collection_owner.respond_to?(:size))
- collection = collection_owner
- else
- collection_owner.__send__(@collection_name, *@args, &@block)
- end
- @actual = collection.size if collection.respond_to?(:size)
- @actual = collection.length if collection.respond_to?(:length)
- raise not_a_collection if @actual.nil?
- return @actual >= @expected if @relativity == :at_least
- return @actual <= @expected if @relativity == :at_most
- return @actual == @expected
- end
-
- def not_a_collection
- "expected #{@collection_name} to be a collection but it does not respond to #length or #size"
- end
-
- def failure_message_for_should
- "expected #{relative_expectation} #{@collection_name}, got #{@actual}"
- end
-
- def failure_message_for_should_not
- if @relativity == :exactly
- return "expected target not to have #{@expected} #{@collection_name}, got #{@actual}"
- elsif @relativity == :at_most
- return <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_most(#{@expected}).#{@collection_name}
-We recommend that you use this instead:
- should have_at_least(#{@expected + 1}).#{@collection_name}
-EOF
- elsif @relativity == :at_least
- return <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_least(#{@expected}).#{@collection_name}
-We recommend that you use this instead:
- should have_at_most(#{@expected - 1}).#{@collection_name}
-EOF
- end
- end
-
- def description
- "have #{relative_expectation} #{@collection_name}"
- end
-
- def respond_to?(sym)
- @expected.respond_to?(sym) || super
- end
-
- private
-
- def method_missing(sym, *args, &block)
- @collection_name = sym
- if inflector = (defined?(ActiveSupport::Inflector) ? ActiveSupport::Inflector : (defined?(Inflector) ? Inflector : nil))
- @plural_collection_name = inflector.pluralize(sym.to_s)
- end
- @args = args
- @block = block
- self
- end
-
- def relative_expectation
- "#{relativities[@relativity]}#{@expected}"
- end
- end
-
- # :call-seq:
- # should have(number).named_collection__or__sugar
- # should_not have(number).named_collection__or__sugar
- #
- # Passes if receiver is a collection with the submitted
- # number of items OR if the receiver OWNS a collection
- # with the submitted number of items.
- #
- # If the receiver OWNS the collection, you must use the name
- # of the collection. So if a <tt>Team</tt> instance has a
- # collection named <tt>#players</tt>, you must use that name
- # to set the expectation.
- #
- # If the receiver IS the collection, you can use any name
- # you like for <tt>named_collection</tt>. We'd recommend using
- # either "elements", "members", or "items" as these are all
- # standard ways of describing the things IN a collection.
- #
- # This also works for Strings, letting you set an expectation
- # about its length
- #
- # == Examples
- #
- # # Passes if team.players.size == 11
- # team.should have(11).players
- #
- # # Passes if [1,2,3].length == 3
- # [1,2,3].should have(3).items #"items" is pure sugar
- #
- # # Passes if "this string".length == 11
- # "this string".should have(11).characters #"characters" is pure sugar
- def have(n)
- Matchers::Have.new(n)
- end
- alias :have_exactly :have
-
- # :call-seq:
- # should have_at_least(number).items
- #
- # Exactly like have() with >=.
- #
- # == Warning
- #
- # +should_not+ +have_at_least+ is not supported
- def have_at_least(n)
- Matchers::Have.new(n, :at_least)
- end
-
- # :call-seq:
- # should have_at_most(number).items
- #
- # Exactly like have() with <=.
- #
- # == Warning
- #
- # +should_not+ +have_at_most+ is not supported
- def have_at_most(n)
- Matchers::Have.new(n, :at_most)
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/include.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/include.rb
deleted file mode 100644
index a2a7fe3db..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/include.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-module Spec
- module Matchers
- # :call-seq:
- # should include(expected)
- # should_not include(expected)
- #
- # Passes if actual includes expected. This works for
- # collections and Strings. You can also pass in multiple args
- # and it will only pass if all args are found in collection.
- #
- # == Examples
- #
- # [1,2,3].should include(3)
- # [1,2,3].should include(2,3) #would pass
- # [1,2,3].should include(2,3,4) #would fail
- # [1,2,3].should_not include(4)
- # "spread".should include("read")
- # "spread".should_not include("red")
- def include(*expected)
- Matcher.new :include, *expected do |*_expected_|
- match do |actual|
- helper(actual, *_expected_)
- end
-
- def helper(actual, *_expected_)
- _expected_.each do |expected|
- if actual.is_a?(Hash)
- if expected.is_a?(Hash)
- expected.each_pair do |k,v|
- return false unless actual[k] == v
- end
- else
- return false unless actual.has_key?(expected)
- end
- else
- return false unless actual.include?(expected)
- end
- end
- true
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/match.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/match.rb
deleted file mode 100644
index b4b9ea864..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/match.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module Spec
- module Matchers
- # :call-seq:
- # should match(pattern)
- # should_not match(pattern)
- #
- # Given a Regexp or String, passes if actual.match(pattern)
- #
- # == Examples
- #
- # email.should match(/^([^\s]+)((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)
- # email.should match("@example.com")
- def match(expected)
- Matcher.new :match, expected do |_expected_|
- match do |actual|
- actual.match(_expected_)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/match_array.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/match_array.rb
deleted file mode 100644
index 51b4f3929..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/match_array.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-module Spec
- module Matchers
-
- class MatchArray #:nodoc:
- include Spec::Matchers::Pretty
-
- def initialize(expected)
- @expected = expected
- end
-
- def matches?(actual)
- @actual = actual
- @extra_items = difference_between_arrays(@actual, @expected)
- @missing_items = difference_between_arrays(@expected, @actual)
- @extra_items.empty? & @missing_items.empty?
- end
-
- def failure_message_for_should
- message = "expected collection contained: #{safe_sort(@expected).inspect}\n"
- message += "actual collection contained: #{safe_sort(@actual).inspect}\n"
- message += "the missing elements were: #{safe_sort(@missing_items).inspect}\n" unless @missing_items.empty?
- message += "the extra elements were: #{safe_sort(@extra_items).inspect}\n" unless @extra_items.empty?
- message
- end
-
- def failure_message_for_should_not
- "Matcher does not support should_not"
- end
-
- def description
- "contain exactly #{_pretty_print(@expected)}"
- end
-
- private
-
- def safe_sort(array)
- array.all?{|item| item.respond_to?(:<=>)} ? array.sort : array
- end
-
- def difference_between_arrays(array_1, array_2)
- difference = array_1.dup
- array_2.each do |element|
- if index = difference.index(element)
- difference.delete_at(index)
- end
- end
- difference
- end
-
-
- end
-
- # :call-seq:
- # should =~ expected
- #
- # Passes if actual contains all of the expected regardless of order.
- # This works for collections. Pass in multiple args and it will only
- # pass if all args are found in collection.
- #
- # NOTE: there is no should_not version of array.should =~ other_array
- #
- # == Examples
- #
- # [1,2,3].should =~ [1,2,3] # => would pass
- # [1,2,3].should =~ [2,3,1] # => would pass
- # [1,2,3,4].should =~ [1,2,3] # => would fail
- # [1,2,2,3].should =~ [1,2,3] # => would fail
- # [1,2,3].should =~ [1,2,3,4] # => would fail
- OperatorMatcher.register(Array, '=~', Spec::Matchers::MatchArray)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/matcher.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/matcher.rb
deleted file mode 100644
index 4756e2fc3..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/matcher.rb
+++ /dev/null
@@ -1,132 +0,0 @@
-module Spec
- module Matchers
- class Matcher
- include Spec::Matchers::InstanceExec
- include Spec::Matchers::Pretty
- include Spec::Matchers
-
- attr_reader :expected, :actual
-
- def initialize(name, *expected, &declarations)
- @name = name
- @expected = expected
- @actual = nil
- @diffable = false
- @expected_exception = nil
- @messages = {
- :description => lambda {"#{name_to_sentence}#{expected_to_sentence}"},
- :failure_message_for_should => lambda {|actual| "expected #{actual.inspect} to #{name_to_sentence}#{expected_to_sentence}"},
- :failure_message_for_should_not => lambda {|actual| "expected #{actual.inspect} not to #{name_to_sentence}#{expected_to_sentence}"}
- }
- making_declared_methods_public do
- instance_exec(*@expected, &declarations)
- end
- end
-
- #Used internally by objects returns by +should+ and +should_not+.
- def matches?(actual)
- @actual = actual
- if @expected_exception
- begin
- instance_exec(actual, &@match_block)
- true
- rescue @expected_exception
- false
- end
- else
- begin
- instance_exec(actual, &@match_block)
- rescue Spec::Expectations::ExpectationNotMetError
- false
- end
- end
- end
-
- # See Spec::Matchers
- def match(&block)
- @match_block = block
- end
-
- # See Spec::Matchers
- def match_unless_raises(exception=Exception, &block)
- @expected_exception = exception
- match(&block)
- end
-
- # See Spec::Matchers
- def failure_message_for_should(&block)
- cache_or_call_cached(:failure_message_for_should, &block)
- end
-
- # See Spec::Matchers
- def failure_message_for_should_not(&block)
- cache_or_call_cached(:failure_message_for_should_not, &block)
- end
-
- # See Spec::Matchers
- def description(&block)
- cache_or_call_cached(:description, &block)
- end
-
- #Used internally by objects returns by +should+ and +should_not+.
- def diffable?
- @diffable
- end
-
- # See Spec::Matchers
- def diffable
- @diffable = true
- end
-
- # See Spec::Matchers
- def chain(method, &block)
- self.class.class_eval do
- define_method method do |*args|
- block.call(*args)
- self
- end
- end
- end
-
- private
-
- def making_declared_methods_public # :nodoc:
- # Our home-grown instance_exec in ruby 1.8.6 results in any methods
- # declared in the block eval'd by instance_exec in the block to which we
- # are yielding here are scoped private. This is NOT the case for Ruby
- # 1.8.7 or 1.9.
- #
- # Also, due some crazy scoping that I don't understand, these methods
- # are actually available in the specs (something about the matcher being
- # defined in the scope of Spec::Matchers or within an example), so not
- # doing the following will not cause specs to fail, but they *will*
- # cause features to fail and that will make users unhappy. So don't.
- orig_private_methods = private_methods
- yield
- st = (class << self; self; end)
- (private_methods - orig_private_methods).each {|m| st.__send__ :public, m}
- end
-
- def cache_or_call_cached(key, &block)
- block ? cache(key, &block) : call_cached(key)
- end
-
- def cache(key, &block)
- @messages[key] = block
- end
-
- def call_cached(key)
- @messages[key].arity == 1 ? @messages[key].call(@actual) : @messages[key].call
- end
-
- def name_to_sentence
- split_words(@name)
- end
-
- def expected_to_sentence
- to_sentence(@expected)
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/method_missing.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/method_missing.rb
deleted file mode 100644
index 74aad8071..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/method_missing.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Spec
- module Matchers
- def method_missing(sym, *args, &block) # :nodoc:
- return Matchers::BePredicate.new(sym, *args, &block) if sym.to_s =~ /^be_/
- return Matchers::Has.new(sym, *args, &block) if sym.to_s =~ /^have_/
- super
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/operator_matcher.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/operator_matcher.rb
deleted file mode 100644
index a0465ae75..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/operator_matcher.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-module Spec
- module Matchers
-
- class OperatorMatcher
- class << self
- def registry
- @registry ||= {}
- end
-
- def register(klass, operator, matcher)
- registry[klass] ||= {}
- registry[klass][operator] = matcher
- end
-
- def get(klass, operator)
- matcher = registry[klass] && registry[klass][operator]
- unless matcher
- parent_class = registry.keys.detect {|pc| klass <= pc }
- matcher = registry[parent_class] && registry[parent_class][operator]
- end
- matcher
- end
- end
-
- def initialize(actual)
- @actual = actual
- end
-
- def self.use_custom_matcher_or_delegate(operator)
- define_method(operator) do |expected|
- if matcher = OperatorMatcher.get(@actual.class, operator)
- @actual.send(::Spec::Matchers.last_should, matcher.new(expected))
- else
- eval_match(@actual, operator, expected)
- end
- end
- end
-
- ['==', '===', '=~', '>', '>=', '<', '<='].each do |operator|
- use_custom_matcher_or_delegate operator
- end
-
- def fail_with_message(message)
- Spec::Expectations.fail_with(message, @expected, @actual)
- end
-
- def description
- "#{@operator} #{@expected.inspect}"
- end
-
- private
-
- def eval_match(actual, operator, expected)
- ::Spec::Matchers.last_matcher = self
- @operator, @expected = operator, expected
- __delegate_operator(actual, operator, expected)
- end
-
- end
-
- class PositiveOperatorMatcher < OperatorMatcher #:nodoc:
- def __delegate_operator(actual, operator, expected)
- if actual.__send__(operator, expected)
- true
- elsif ['==','===', '=~'].include?(operator)
- fail_with_message("expected: #{expected.inspect},\n got: #{actual.inspect} (using #{operator})")
- else
- fail_with_message("expected: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{actual.inspect}")
- end
- end
-
- end
-
- class NegativeOperatorMatcher < OperatorMatcher #:nodoc:
- def __delegate_operator(actual, operator, expected)
- return false unless actual.__send__(operator, expected)
- return fail_with_message("expected not: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{actual.inspect}")
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/pretty.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/pretty.rb
deleted file mode 100644
index 6db1d051a..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/pretty.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module Spec
- module Matchers
- module Pretty
- def split_words(sym)
- sym.to_s.gsub(/_/,' ')
- end
-
- def to_sentence(words=[])
- words = words.map{|w| w.inspect}
- case words.length
- when 0
- ""
- when 1
- " #{words[0]}"
- when 2
- " #{words[0]} and #{words[1]}"
- else
- " #{words[0...-1].join(', ')}, and #{words[-1]}"
- end
- end
-
- def _pretty_print(array)
- result = ""
- array.each_with_index do |item, index|
- if index < (array.length - 2)
- result << "#{item.inspect}, "
- elsif index < (array.length - 1)
- result << "#{item.inspect} and "
- else
- result << "#{item.inspect}"
- end
- end
- result
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/raise_exception.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/raise_exception.rb
deleted file mode 100644
index 66741c64d..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/raise_exception.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-module Spec
- module Matchers
- class RaiseException #:nodoc:
- def initialize(expected_exception_or_message=Exception, expected_message=nil, &block)
- @block = block
- @actual_exception = nil
- case expected_exception_or_message
- when String, Regexp
- @expected_exception, @expected_message = Exception, expected_exception_or_message
- else
- @expected_exception, @expected_message = expected_exception_or_message, expected_message
- end
- end
-
- def matches?(given_proc)
- @raised_expected_exception = false
- @with_expected_message = false
- @eval_block = false
- @eval_block_passed = false
- begin
- given_proc.call
- rescue @expected_exception => @actual_exception
- @raised_expected_exception = true
- @with_expected_message = verify_message
- rescue Exception => @actual_exception
- # This clause should be empty, but rcov will not report it as covered
- # unless something (anything) is executed within the clause
- rcov_exception_report = "http://eigenclass.org/hiki.rb?rcov-0.8.0"
- end
-
- unless negative_expectation?
- eval_block if @raised_expected_exception && @with_expected_message && @block
- end
-
- (@raised_expected_exception & @with_expected_message) ? (@eval_block ? @eval_block_passed : true) : false
- end
-
- def eval_block
- @eval_block = true
- begin
- @block[@actual_exception]
- @eval_block_passed = true
- rescue Exception => err
- @actual_exception = err
- end
- end
-
- def verify_message
- case @expected_message
- when nil
- true
- when Regexp
- @expected_message =~ @actual_exception.message
- else
- @expected_message == @actual_exception.message
- end
- end
-
- def failure_message_for_should
- @eval_block ? @actual_exception.message : "expected #{expected_exception}#{given_exception}"
- end
-
- def failure_message_for_should_not
- "expected no #{expected_exception}#{given_exception}"
- end
-
- def description
- "raise #{expected_exception}"
- end
-
- private
- def expected_exception
- case @expected_message
- when nil
- @expected_exception
- when Regexp
- "#{@expected_exception} with message matching #{@expected_message.inspect}"
- else
- "#{@expected_exception} with #{@expected_message.inspect}"
- end
- end
-
- def given_exception
- @actual_exception.nil? ? " but nothing was raised" : ", got #{@actual_exception.inspect}"
- end
-
- def negative_expectation?
- # YES - I'm a bad person... help me find a better way - ryand
- caller.first(3).find { |s| s =~ /should_not/ }
- end
- end
-
- # :call-seq:
- # should raise_exception()
- # should raise_exception(NamedError)
- # should raise_exception(NamedError, String)
- # should raise_exception(NamedError, Regexp)
- # should raise_exception() { |exception| ... }
- # should raise_exception(NamedError) { |exception| ... }
- # should raise_exception(NamedError, String) { |exception| ... }
- # should raise_exception(NamedError, Regexp) { |exception| ... }
- # should_not raise_exception()
- # should_not raise_exception(NamedError)
- # should_not raise_exception(NamedError, String)
- # should_not raise_exception(NamedError, Regexp)
- #
- # With no args, matches if any exception is raised.
- # With a named exception, matches only if that specific exception is raised.
- # With a named exception and messsage specified as a String, matches only if both match.
- # With a named exception and messsage specified as a Regexp, matches only if both match.
- # Pass an optional block to perform extra verifications on the exception matched
- #
- # == Examples
- #
- # lambda { do_something_risky }.should raise_exception
- # lambda { do_something_risky }.should raise_exception(PoorRiskDecisionError)
- # lambda { do_something_risky }.should raise_exception(PoorRiskDecisionError) { |exception| exception.data.should == 42 }
- # lambda { do_something_risky }.should raise_exception(PoorRiskDecisionError, "that was too risky")
- # lambda { do_something_risky }.should raise_exception(PoorRiskDecisionError, /oo ri/)
- #
- # lambda { do_something_risky }.should_not raise_exception
- # lambda { do_something_risky }.should_not raise_exception(PoorRiskDecisionError)
- # lambda { do_something_risky }.should_not raise_exception(PoorRiskDecisionError, "that was too risky")
- # lambda { do_something_risky }.should_not raise_exception(PoorRiskDecisionError, /oo ri/)
- def raise_exception(exception=Exception, message=nil, &block)
- Matchers::RaiseException.new(exception, message, &block)
- end
-
- alias_method :raise_error, :raise_exception
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/respond_to.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/respond_to.rb
deleted file mode 100644
index 9161cb94e..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/respond_to.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-module Spec
- module Matchers
-
- class RespondTo #:nodoc:
- def initialize(*names)
- @names = names
- @expected_arity = nil
- @names_not_responded_to = []
- end
-
- def matches?(actual)
- @actual = actual
- @names.each do |name|
- @names_not_responded_to << name unless actual.respond_to?(name) && matches_arity?(actual, name)
- end
- return @names_not_responded_to.empty?
- end
-
- def failure_message_for_should
- "expected #{@actual.inspect} to respond to #{@names_not_responded_to.collect {|name| name.inspect }.join(', ')}#{with_arity}"
- end
-
- def failure_message_for_should_not
- "expected #{@actual.inspect} not to respond to #{@names.collect {|name| name.inspect }.join(', ')}"
- end
-
- def description
- "respond to #{pp_names}#{with_arity}"
- end
-
- def with(n)
- @expected_arity = n
- self
- end
-
- def argument
- self
- end
- alias :arguments :argument
-
- private
-
- def matches_arity?(actual, name)
- @expected_arity.nil?? true : @expected_arity == actual.method(name).arity
- end
-
- def with_arity
- @expected_arity.nil?? "" :
- " with #{@expected_arity} argument#{@expected_arity == 1 ? '' : 's'}"
- end
-
- def pp_names
- # Ruby 1.9 returns the same thing for array.to_s as array.inspect, so just use array.inspect here
- @names.length == 1 ? "##{@names.first}" : @names.inspect
- end
- end
-
- # :call-seq:
- # should respond_to(*names)
- # should_not respond_to(*names)
- #
- # Matches if the target object responds to all of the names
- # provided. Names can be Strings or Symbols.
- #
- # == Examples
- #
- def respond_to(*names)
- Matchers::RespondTo.new(*names)
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/satisfy.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/satisfy.rb
deleted file mode 100644
index 58e3f56aa..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/satisfy.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-module Spec
- module Matchers
-
- class Satisfy #:nodoc:
- def initialize(&block)
- @block = block
- end
-
- def matches?(actual, &block)
- @block = block if block
- @actual = actual
- @block.call(actual)
- end
-
- def failure_message_for_should
- "expected #{@actual} to satisfy block"
- end
-
- def failure_message_for_should_not
- "expected #{@actual} not to satisfy block"
- end
- end
-
- # :call-seq:
- # should satisfy {}
- # should_not satisfy {}
- #
- # Passes if the submitted block returns true. Yields target to the
- # block.
- #
- # Generally speaking, this should be thought of as a last resort when
- # you can't find any other way to specify the behaviour you wish to
- # specify.
- #
- # If you do find yourself in such a situation, you could always write
- # a custom matcher, which would likely make your specs more expressive.
- #
- # == Examples
- #
- # 5.should satisfy { |n|
- # n > 3
- # }
- def satisfy(&block)
- Matchers::Satisfy.new(&block)
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/simple_matcher.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/simple_matcher.rb
deleted file mode 100644
index 9c77c0732..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/simple_matcher.rb
+++ /dev/null
@@ -1,134 +0,0 @@
-module Spec
- module Matchers
- class SimpleMatcher
- attr_writer :failure_message, :negative_failure_message, :description
-
- def initialize(description, &match_block)
- @description = description
- @match_block = match_block
- @failure_message = @negative_failure_message = nil
- end
-
- def matches?(given)
- @given = given
- case @match_block.arity
- when 2
- @match_block.call(@given, self)
- else
- @match_block.call(@given)
- end
- end
-
- def description
- @description || explanation
- end
-
- def failure_message_for_should
- @failure_message || (@description.nil? ? explanation : %[expected #{@description.inspect} but got #{@given.inspect}])
- end
-
- def failure_message_for_should_not
- @negative_failure_message || (@description.nil? ? explanation : %[expected not to get #{@description.inspect}, but got #{@given.inspect}])
- end
-
- def explanation
- "No description provided. See RDoc for simple_matcher()"
- end
- end
-
- # simple_matcher makes it easy for you to create your own custom matchers
- # in just a few lines of code when you don't need all the power of a
- # completely custom matcher object.
- #
- # The <tt>description</tt> argument will appear as part of any failure
- # message, and is also the source for auto-generated descriptions.
- #
- # The <tt>match_block</tt> can have an arity of 1 or 2. The first block
- # argument will be the given value. The second, if the block accepts it
- # will be the matcher itself, giving you access to set custom failure
- # messages in favor of the defaults.
- #
- # The <tt>match_block</tt> should return a boolean: <tt>true</tt>
- # indicates a match, which will pass if you use <tt>should</tt> and fail
- # if you use <tt>should_not</tt>. false (or nil) indicates no match,
- # which will do the reverse: fail if you use <tt>should</tt> and pass if
- # you use <tt>should_not</tt>.
- #
- # An error in the <tt>match_block</tt> will bubble up, resulting in a
- # failure.
- #
- # == Example with default messages
- #
- # def be_even
- # simple_matcher("an even number") { |given| given % 2 == 0 }
- # end
- #
- # describe 2 do
- # it "should be even" do
- # 2.should be_even
- # end
- # end
- #
- # Given an odd number, this example would produce an error message stating:
- # expected "an even number", got 3.
- #
- # Unfortunately, if you're a fan of auto-generated descriptions, this will
- # produce "should an even number." Not the most desirable result. You can
- # control that using custom messages:
- #
- # == Example with custom messages
- #
- # def rhyme_with(expected)
- # simple_matcher("rhyme with #{expected.inspect}") do |given, matcher|
- # matcher.failure_message = "expected #{given.inspect} to rhyme with #{expected.inspect}"
- # matcher.negative_failure_message = "expected #{given.inspect} not to rhyme with #{expected.inspect}"
- # given.rhymes_with? expected
- # end
- # end
- #
- # # OR
- #
- # def rhyme_with(expected)
- # simple_matcher do |given, matcher|
- # matcher.description = "rhyme with #{expected.inspect}"
- # matcher.failure_message = "expected #{given.inspect} to rhyme with #{expected.inspect}"
- # matcher.negative_failure_message = "expected #{given.inspect} not to rhyme with #{expected.inspect}"
- # given.rhymes_with? expected
- # end
- # end
- #
- # describe "pecan" do
- # it "should rhyme with 'be gone'" do
- # nut = "pecan"
- # nut.extend Rhymer
- # nut.should rhyme_with("be gone")
- # end
- # end
- #
- # The resulting messages would be:
- # description: rhyme with "be gone"
- # failure_message: expected "pecan" to rhyme with "be gone"
- # negative failure_message: expected "pecan" not to rhyme with "be gone"
- #
- # == Wrapped Expectations
- #
- # Because errors will bubble up, it is possible to wrap other expectations
- # in a SimpleMatcher.
- #
- # def be_even
- # simple_matcher("an even number") { |given| (given % 2).should == 0 }
- # end
- #
- # BE VERY CAREFUL when you do this. Only use wrapped expectations for
- # matchers that will always be used in only the positive
- # (<tt>should</tt>) or negative (<tt>should_not</tt>), but not both.
- # The reason is that is you wrap a <tt>should</tt> and call the wrapper
- # with <tt>should_not</tt>, the correct result (the <tt>should</tt>
- # failing), will fail when you want it to pass.
- #
- def simple_matcher(description=nil, &match_block)
- Spec.deprecate("simple_matcher", "Matcher DSL (http://rspec.rubyforge.org/rspec/1.3.0/classes/Spec/Matchers.html)")
- SimpleMatcher.new(description, &match_block)
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/throw_symbol.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/throw_symbol.rb
deleted file mode 100644
index 2e5dd62f0..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/throw_symbol.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-module Spec
- module Matchers
-
- class ThrowSymbol #:nodoc:
- def initialize(expected_symbol = nil, expected_arg=nil)
- @expected_symbol = expected_symbol
- @expected_arg = expected_arg
- @caught_symbol = @caught_arg = nil
- end
-
- def matches?(given_proc)
- begin
- if @expected_symbol.nil?
- given_proc.call
- else
- @caught_arg = catch :proc_did_not_throw_anything do
- catch @expected_symbol do
- given_proc.call
- throw :proc_did_not_throw_anything, :nothing_thrown
- end
- end
- @caught_symbol = @expected_symbol unless @caught_arg == :nothing_thrown
- end
-
- # Ruby 1.8 uses NameError with `symbol'
- # Ruby 1.9 uses ArgumentError with :symbol
- rescue NameError, ArgumentError => e
- raise e unless e.message =~ /uncaught throw (`|\:)([a-zA-Z0-9_]*)(')?/
- @caught_symbol = $2.to_sym
- end
- if @expected_symbol.nil?
- !@caught_symbol.nil?
- elsif @expected_arg.nil?
- @caught_symbol == @expected_symbol
- else
- (@caught_symbol == @expected_symbol) & (@caught_arg == @expected_arg)
- end
- end
-
- def failure_message_for_should
- if @caught_symbol
- "expected #{expected}, got #{@caught_symbol.inspect}"
- else
- "expected #{expected} but nothing was thrown"
- end
- end
-
- def failure_message_for_should_not
- if @expected_symbol
- "expected #{expected} not to be thrown"
- else
- "expected no Symbol, got :#{@caught_symbol}"
- end
- end
-
- def description
- "throw #{expected}"
- end
-
- private
-
- def expected
- @expected_symbol.nil? ? "a Symbol" : "#{@expected_symbol.inspect}#{args}"
- end
-
- def args
- @expected_arg.nil? ? "" : " with #{@expected_arg.inspect}"
- end
-
- end
-
- # :call-seq:
- # should throw_symbol()
- # should throw_symbol(:sym)
- # should throw_symbol(:sym, arg)
- # should_not throw_symbol()
- # should_not throw_symbol(:sym)
- # should_not throw_symbol(:sym, arg)
- #
- # Given no argument, matches if a proc throws any Symbol.
- #
- # Given a Symbol, matches if the given proc throws the specified Symbol.
- #
- # Given a Symbol and an arg, matches if the given proc throws the
- # specified Symbol with the specified arg.
- #
- # == Examples
- #
- # lambda { do_something_risky }.should throw_symbol
- # lambda { do_something_risky }.should throw_symbol(:that_was_risky)
- # lambda { do_something_risky }.should throw_symbol(:that_was_risky, culprit)
- #
- # lambda { do_something_risky }.should_not throw_symbol
- # lambda { do_something_risky }.should_not throw_symbol(:that_was_risky)
- # lambda { do_something_risky }.should_not throw_symbol(:that_was_risky, culprit)
- def throw_symbol(expected_symbol = nil, expected_arg=nil)
- Matchers::ThrowSymbol.new(expected_symbol, expected_arg)
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/matchers/wrap_expectation.rb b/vendor/gems/rspec-1.3.1/lib/spec/matchers/wrap_expectation.rb
deleted file mode 100644
index 95162cae1..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/matchers/wrap_expectation.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-module Spec
- module Matchers
- # wraps an expectation in a block that will return true if the
- # expectation passes and false if it fails (without bubbling up
- # the failure).
- #
- # This is intended to be used in the context of a simple matcher,
- # and is especially useful for wrapping multiple expectations or
- # one or more assertions from test/unit extensions when running
- # with test/unit.
- #
- # == Examples
- #
- # def eat_cheese(cheese)
- # simple_matcher do |mouse, matcher|
- # matcher.failure_message = "expected #{mouse} to eat cheese"
- # wrap_expectation do |matcher|
- # assert_eats_cheese(mouse)
- # end
- # end
- # end
- #
- # describe Mouse do
- # it "eats cheese" do
- # Mouse.new.should eat_cheese
- # end
- # end
- #
- # You might be wondering "why would I do this if I could just say"
- # assert_eats_cheese?", a fair question, indeed. You might prefer
- # to replace the word assert with something more aligned with the
- # rest of your code examples. You are using rspec, after all.
- #
- # The other benefit you get is that you can use the negative version
- # of the matcher:
- #
- # describe Cat do
- # it "does not eat cheese" do
- # Cat.new.should_not eat_cheese
- # end
- # end
- #
- # So in the event there is no assert_does_not_eat_cheese available,
- # you're all set!
- def wrap_expectation(matcher, &block)
- begin
- block.call(matcher)
- return true
- rescue Exception => e
- matcher.failure_message = e.message
- return false
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks.rb
deleted file mode 100644
index 339c0cc50..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks.rb
+++ /dev/null
@@ -1,200 +0,0 @@
-require 'spec/mocks/framework'
-require 'spec/mocks/extensions/object'
-
-module Spec
- # == Mocks and Stubs
- #
- # RSpec will create Mock Objects and Stubs for you at runtime, or attach stub/mock behaviour
- # to any of your real objects (Partial Mock/Stub). Because the underlying implementation
- # for mocks and stubs is the same, you can intermingle mock and stub
- # behaviour in either dynamically generated mocks or your pre-existing classes.
- # There is a semantic difference in how they are created, however,
- # which can help clarify the role it is playing within a given spec.
- #
- # == Mock Objects
- #
- # Mocks are objects that allow you to set and verify expectations that they will
- # receive specific messages during run time. They are very useful for specifying how the subject of
- # the spec interacts with its collaborators. This approach is widely known as "interaction
- # testing".
- #
- # Mocks are also very powerful as a design tool. As you are
- # driving the implementation of a given class, Mocks provide an anonymous
- # collaborator that can change in behaviour as quickly as you can write an expectation in your
- # spec. This flexibility allows you to design the interface of a collaborator that often
- # does not yet exist. As the shape of the class being specified becomes more clear, so do the
- # requirements for its collaborators - often leading to the discovery of new types that are
- # needed in your system.
- #
- # Read Endo-Testing[http://www.mockobjects.com/files/endotesting.pdf] for a much
- # more in depth description of this process.
- #
- # == Stubs
- #
- # Stubs are objects that allow you to set "stub" responses to
- # messages. As Martin Fowler points out on his site,
- # mocks_arent_stubs[http://www.martinfowler.com/articles/mocksArentStubs.html].
- # Paraphrasing Fowler's paraphrasing
- # of Gerard Meszaros: Stubs provide canned responses to messages they might receive in a test, while
- # mocks allow you to specify and, subsquently, verify that certain messages should be received during
- # the execution of a test.
- #
- # == Partial Mocks/Stubs
- #
- # RSpec also supports partial mocking/stubbing, allowing you to add stub/mock behaviour
- # to instances of your existing classes. This is generally
- # something to be avoided, because changes to the class can have ripple effects on
- # seemingly unrelated specs. When specs fail due to these ripple effects, the fact
- # that some methods are being mocked can make it difficult to understand why a
- # failure is occurring.
- #
- # That said, partials do allow you to expect and
- # verify interactions with class methods such as +#find+ and +#create+
- # on Ruby on Rails model classes.
- #
- # == Further Reading
- #
- # There are many different viewpoints about the meaning of mocks and stubs. If you are interested
- # in learning more, here is some recommended reading:
- #
- # * Mock Objects: http://www.mockobjects.com/
- # * Endo-Testing: http://www.mockobjects.com/files/endotesting.pdf
- # * Mock Roles, Not Objects: http://www.mockobjects.com/files/mockrolesnotobjects.pdf
- # * Test Double Patterns: http://xunitpatterns.com/Test%20Double%20Patterns.html
- # * Mocks aren't stubs: http://www.martinfowler.com/articles/mocksArentStubs.html
- #
- # == Creating a Mock
- #
- # You can create a mock in any specification (or setup) using:
- #
- # mock(name, options={})
- #
- # The optional +options+ argument is a +Hash+. Currently the only supported
- # option is +:null_object+. Setting this to true instructs the mock to ignore
- # any messages it hasn’t been told to expect – and quietly return itself. For example:
- #
- # mock("person", :null_object => true)
- #
- # == Creating a Stub
- #
- # You can create a stub in any specification (or setup) using:
- #
- # stub(name, stub_methods_and_values_hash)
- #
- # For example, if you wanted to create an object that always returns
- # "More?!?!?!" to "please_sir_may_i_have_some_more" you would do this:
- #
- # stub("Mr Sykes", :please_sir_may_i_have_some_more => "More?!?!?!")
- #
- # == Creating a Partial Mock
- #
- # You don't really "create" a partial mock, you simply add method stubs and/or
- # mock expectations to existing classes and objects:
- #
- # Factory.should_receive(:find).with(id).and_return(value)
- # obj.stub!(:to_i).and_return(3)
- # etc ...
- #
- # == Expecting Messages
- #
- # my_mock.should_receive(:sym)
- # my_mock.should_not_receive(:sym)
- #
- # == Expecting Arguments
- #
- # my_mock.should_receive(:sym).with(*args)
- # my_mock.should_not_receive(:sym).with(*args)
- #
- # == Argument Matchers
- #
- # Arguments that are passed to #with are compared with actual arguments received
- # using == by default. In cases in which you want to specify things about the arguments
- # rather than the arguments themselves, you can use any of RSpec's Expression Matchers.
- # They don't all make syntactic sense (they were primarily designed for use with
- # Spec::Expectations), but you are free to create your own custom Spec::Matchers.
- #
- # Spec::Mocks does provide one additional Matcher method named #ducktype.
- #
- # In addition, Spec::Mocks adds some keyword Symbols that you can use to
- # specify certain kinds of arguments:
- #
- # my_mock.should_receive(:sym).with(no_args())
- # my_mock.should_receive(:sym).with(any_args())
- # my_mock.should_receive(:sym).with(1, kind_of(Numeric), "b") #2nd argument can any kind of Numeric
- # my_mock.should_receive(:sym).with(1, boolean(), "b") #2nd argument can true or false
- # my_mock.should_receive(:sym).with(1, /abc/, "b") #2nd argument can be any String matching the submitted Regexp
- # my_mock.should_receive(:sym).with(1, anything(), "b") #2nd argument can be anything at all
- # my_mock.should_receive(:sym).with(1, ducktype(:abs, :div), "b")
- # #2nd argument can be object that responds to #abs and #div
- #
- # == Receive Counts
- #
- # my_mock.should_receive(:sym).once
- # my_mock.should_receive(:sym).twice
- # my_mock.should_receive(:sym).exactly(n).times
- # my_mock.should_receive(:sym).at_least(:once)
- # my_mock.should_receive(:sym).at_least(:twice)
- # my_mock.should_receive(:sym).at_least(n).times
- # my_mock.should_receive(:sym).at_most(:once)
- # my_mock.should_receive(:sym).at_most(:twice)
- # my_mock.should_receive(:sym).at_most(n).times
- # my_mock.should_receive(:sym).any_number_of_times
- #
- # == Ordering
- #
- # my_mock.should_receive(:sym).ordered
- # my_mock.should_receive(:other_sym).ordered
- # #This will fail if the messages are received out of order
- #
- # == Setting Reponses
- #
- # Whether you are setting a mock expectation or a simple stub, you can tell the
- # object precisely how to respond:
- #
- # my_mock.should_receive(:sym).and_return(value)
- # my_mock.should_receive(:sym).exactly(3).times.and_return(value1, value2, value3)
- # # returns value1 the first time, value2 the second, etc
- # my_mock.should_receive(:sym).and_return { ... } #returns value returned by the block
- # my_mock.should_receive(:sym).and_raise(error)
- # #error can be an instantiated object or a class
- # #if it is a class, it must be instantiable with no args
- # my_mock.should_receive(:sym).and_throw(:sym)
- # my_mock.should_receive(:sym).and_yield(values,to,yield)
- # my_mock.should_receive(:sym).and_yield(values,to,yield).and_yield(some,other,values,this,time)
- # # for methods that yield to a block multiple times
- #
- # Any of these responses can be applied to a stub as well, but stubs do
- # not support any qualifiers about the message received (i.e. you can't specify arguments
- # or receive counts):
- #
- # my_mock.stub!(:sym).and_return(value)
- # my_mock.stub!(:sym).and_return(value1, value2, value3)
- # my_mock.stub!(:sym).and_raise(error)
- # my_mock.stub!(:sym).and_throw(:sym)
- # my_mock.stub!(:sym).and_yield(values,to,yield)
- # my_mock.stub!(:sym).and_yield(values,to,yield).and_yield(some,other,values,this,time)
- #
- # == Arbitrary Handling
- #
- # Once in a while you'll find that the available expectations don't solve the
- # particular problem you are trying to solve. Imagine that you expect the message
- # to come with an Array argument that has a specific length, but you don't care
- # what is in it. You could do this:
- #
- # my_mock.should_receive(:sym) do |arg|
- # arg.should be_an_istance_of(Array)
- # arg.length.should == 7
- # end
- #
- # Note that this would fail if the number of arguments received was different from
- # the number of block arguments (in this case 1).
- #
- # == Combining Expectation Details
- #
- # Combining the message name with specific arguments, receive counts and responses
- # you can get quite a bit of detail in your expectations:
- #
- # my_mock.should_receive(:<<).with("illegal value").once.and_raise(ArgumentError)
- module Mocks
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/argument_expectation.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/argument_expectation.rb
deleted file mode 100644
index b51b7bae5..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/argument_expectation.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-module Spec
- module Mocks
-
- class ArgumentExpectation
- attr_reader :args
-
- def initialize(args, &block)
- @args = args
- @matchers_block = block
- @match_any_args = false
- @matchers = nil
-
- if ArgumentMatchers::AnyArgsMatcher === args.first
- @match_any_args = true
- elsif ArgumentMatchers::NoArgsMatcher === args.first
- @matchers = []
- else
- @matchers = args.collect {|arg| matcher_for(arg)}
- end
- end
-
- def matcher_for(arg)
- return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg)
- return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp)
- return ArgumentMatchers::EqualityProxy.new(arg)
- end
-
- def is_matcher?(obj)
- return obj.respond_to?(:matches?) & obj.respond_to?(:description)
- end
-
- def args_match?(given_args)
- match_any_args? || matchers_block_matches?(given_args) || matchers_match?(given_args)
- end
-
- def matchers_block_matches?(given_args)
- @matchers_block ? @matchers_block.call(*given_args) : nil
- end
-
- def matchers_match?(given_args)
- @matchers == given_args
- end
-
- def match_any_args?
- @match_any_args
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/argument_matchers.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/argument_matchers.rb
deleted file mode 100644
index f56551f21..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/argument_matchers.rb
+++ /dev/null
@@ -1,237 +0,0 @@
-module Spec
- module Mocks
-
- # ArgumentMatchers are messages that you can include in message
- # expectations to match arguments against a broader check than simple
- # equality.
- #
- # With the exception of any_args() and no_args(), the matchers
- # are all positional - they match against the arg in the given position.
- module ArgumentMatchers
-
- class AnyArgsMatcher
- def description
- "any args"
- end
- end
-
- class NoArgsMatcher
- def description
- "no args"
- end
- end
-
- class AnyArgMatcher
- def initialize(ignore)
- end
-
- def ==(other)
- true
- end
-
- def description
- "anything"
- end
- end
-
- class RegexpMatcher
- def initialize(regexp)
- @regexp = regexp
- end
-
- def ==(value)
- return value =~ @regexp unless value.is_a?(Regexp)
- value == @regexp
- end
- end
-
- class BooleanMatcher
- def initialize(ignore)
- end
-
- def ==(value)
- TrueClass === value || FalseClass === value
- end
- end
-
- class HashIncludingMatcher
- def initialize(expected)
- @expected = expected
- end
-
- def ==(actual)
- @expected.each do | key, value |
- return false unless actual.has_key?(key) && value == actual[key]
- end
- true
- rescue NoMethodError => ex
- return false
- end
-
- def description
- "hash_including(#{@expected.inspect.sub(/^\{/,"").sub(/\}$/,"")})"
- end
- end
-
- class HashNotIncludingMatcher
- def initialize(expected)
- @expected = expected
- end
-
- def ==(actual)
- @expected.each do | key, value |
- return false if actual.has_key?(key) && value == actual[key]
- end
- true
- rescue NoMethodError => ex
- return false
- end
-
- def description
- "hash_not_including(#{@expected.inspect.sub(/^\{/,"").sub(/\}$/,"")})"
- end
- end
-
- class DuckTypeMatcher
- def initialize(*methods_to_respond_to)
- @methods_to_respond_to = methods_to_respond_to
- end
-
- def ==(value)
- @methods_to_respond_to.all? { |sym| value.respond_to?(sym) }
- end
- end
-
- class MatcherMatcher
- def initialize(matcher)
- @matcher = matcher
- end
-
- def ==(value)
- @matcher.matches?(value)
- end
- end
-
- class EqualityProxy
- def initialize(given)
- @given = given
- end
-
- def ==(expected)
- @given == expected
- end
- end
-
- class InstanceOf
- def initialize(klass)
- @klass = klass
- end
-
- def ==(actual)
- actual.instance_of?(@klass)
- end
- end
-
- class KindOf
- def initialize(klass)
- @klass = klass
- end
-
- def ==(actual)
- actual.kind_of?(@klass)
- end
- end
-
- # :call-seq:
- # object.should_receive(:message).with(no_args())
- #
- # Passes if no arguments are passed along with the message
- def no_args
- NoArgsMatcher.new
- end
-
- # :call-seq:
- # object.should_receive(:message).with(any_args())
- #
- # Passes if object receives :message with any args at all. This is
- # really a more explicit variation of object.should_receive(:message)
- def any_args
- AnyArgsMatcher.new
- end
-
- # :call-seq:
- # object.should_receive(:message).with(anything())
- #
- # Passes as long as there is an argument.
- def anything
- AnyArgMatcher.new(nil)
- end
-
- # :call-seq:
- # object.should_receive(:message).with(duck_type(:hello))
- # object.should_receive(:message).with(duck_type(:hello, :goodbye))
- #
- # Passes if the argument responds to the specified messages.
- #
- # == Examples
- #
- # array = []
- # display = mock('display')
- # display.should_receive(:present_names).with(duck_type(:length, :each))
- # => passes
- def duck_type(*args)
- DuckTypeMatcher.new(*args)
- end
-
- # :call-seq:
- # object.should_receive(:message).with(boolean())
- #
- # Passes if the argument is boolean.
- def boolean
- BooleanMatcher.new(nil)
- end
-
- # :call-seq:
- # object.should_receive(:message).with(hash_including(:key => val))
- # object.should_receive(:message).with(hash_including(:key))
- # object.should_receive(:message).with(hash_including(:key, :key2 => val2))
- # Passes if the argument is a hash that includes the specified key(s) or key/value
- # pairs. If the hash includes other keys, it will still pass.
- def hash_including(*args)
- HashIncludingMatcher.new(anythingize_lonely_keys(*args))
- end
-
- # :call-seq:
- # object.should_receive(:message).with(hash_not_including(:key => val))
- # object.should_receive(:message).with(hash_not_including(:key))
- # object.should_receive(:message).with(hash_not_including(:key, :key2 => :val2))
- #
- # Passes if the argument is a hash that doesn't include the specified key(s) or key/value
- def hash_not_including(*args)
- HashNotIncludingMatcher.new(anythingize_lonely_keys(*args))
- end
-
- # Passes if arg.instance_of?(klass)
- def instance_of(klass)
- InstanceOf.new(klass)
- end
-
- alias_method :an_instance_of, :instance_of
-
- # Passes if arg.kind_of?(klass)
- def kind_of(klass)
- KindOf.new(klass)
- end
-
- alias_method :a_kind_of, :kind_of
-
- private
-
- def anythingize_lonely_keys(*args)
- hash = args.last.class == Hash ? args.delete_at(-1) : {}
- args.each { | arg | hash[arg] = anything }
- hash
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/error_generator.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/error_generator.rb
deleted file mode 100644
index f63811fed..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/error_generator.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-module Spec
- module Mocks
- class ErrorGenerator
- attr_writer :opts
-
- def initialize(target, name, options={})
- @declared_as = options[:__declared_as] || 'Mock'
- @target = target
- @name = name
- end
-
- def opts
- @opts ||= {}
- end
-
- def raise_unexpected_message_error(sym, *args)
- __raise "#{intro} received unexpected message :#{sym}#{arg_message(*args)}"
- end
-
- def raise_unexpected_message_args_error(expectation, *args)
- expected_args = format_args(*expectation.expected_args)
- actual_args = args.empty? ? "(no args)" : format_args(*args)
- __raise "#{intro} received #{expectation.sym.inspect} with unexpected arguments\n expected: #{expected_args}\n got: #{actual_args}"
- end
-
- def raise_expectation_error(sym, expected_received_count, actual_received_count, *args)
- __raise "#{intro} expected :#{sym}#{arg_message(*args)} #{count_message(expected_received_count)}, but received it #{count_message(actual_received_count)}"
- end
-
- def raise_out_of_order_error(sym)
- __raise "#{intro} received :#{sym} out of order"
- end
-
- def raise_block_failed_error(sym, detail)
- __raise "#{intro} received :#{sym} but passed block failed with: #{detail}"
- end
-
- def raise_missing_block_error(args_to_yield)
- __raise "#{intro} asked to yield |#{arg_list(*args_to_yield)}| but no block was passed"
- end
-
- def raise_wrong_arity_error(args_to_yield, arity)
- __raise "#{intro} yielded |#{arg_list(*args_to_yield)}| to block with arity of #{arity}"
- end
-
- private
-
- def intro
- if @name
- "#{@declared_as} #{@name.inspect}"
- elsif Mock === @target
- @declared_as
- elsif Class === @target
- "<#{@target.inspect} (class)>"
- elsif @target
- @target
- else
- "nil"
- end
- end
-
- def __raise(message)
- message = opts[:message] unless opts[:message].nil?
- Kernel::raise(Spec::Mocks::MockExpectationError, message)
- end
-
- def arg_message(*args)
- " with " + format_args(*args)
- end
-
- def format_args(*args)
- args.empty? ? "(no args)" : "(" + arg_list(*args) + ")"
- end
-
- def arg_list(*args)
- args.collect {|arg| arg.respond_to?(:description) ? arg.description : arg.inspect}.join(", ")
- end
-
- def count_message(count)
- return "at least #{pretty_print(count.abs)}" if count < 0
- return pretty_print(count)
- end
-
- def pretty_print(count)
- return "once" if count == 1
- return "twice" if count == 2
- return "#{count} times"
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/errors.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/errors.rb
deleted file mode 100644
index 560b66a93..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/errors.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-module Spec
- module Mocks
- class MockExpectationError < Exception
- end
-
- class AmbiguousReturnError < StandardError
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/example_methods.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/example_methods.rb
deleted file mode 100644
index f6c68ab6a..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/example_methods.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-module Spec
- module Mocks
- module ExampleMethods
- include Spec::Mocks::ArgumentMatchers
-
- # Shortcut for creating an instance of Spec::Mocks::Mock.
- #
- # +name+ is used for failure reporting, so you should use the
- # role that the double is playing in the example.
- #
- # +stubs_and_options+ lets you assign options and stub values
- # at the same time. The only option available is :null_object.
- # Anything else is treated as a stub value.
- #
- # == Examples
- #
- # thing = double("thing", :a => "A")
- # thing.a == "A" => true
- #
- # person = double("thing", :name => "Joe", :email => "joe@domain.com")
- # person.name => "Joe"
- # person.email => "joe@domain.com"
- def double(*args)
- __declare_double('Double', *args)
- end
-
- # Alias for double
- def mock(*args)
- __declare_double('Mock', *args)
- end
-
- # Alias for double
- def stub(*args)
- __declare_double('Stub', *args)
- end
-
- def __declare_double(declared_as, *args) # :nodoc:
- args << {} unless Hash === args.last
- args.last[:__declared_as] = declared_as
- Spec::Mocks::Mock.new(*args)
- end
-
- # DEPRECATED - use double('name').as_null_object instead
- #
- # Shortcut for creating a mock object that will return itself in response
- # to any message it receives that it hasn't been explicitly instructed
- # to respond to.
- def stub_everything(name = 'stub')
- Spec.warn(<<-WARNING)
-
-DEPRECATION: stub_everything('#{name}') is deprecated and will be removed
-from a future version of rspec. Please use double('#{name}').as_null_object
-(or stub('#{name}').as_null_object or mock('#{name}').as_null_object instead.
-
-WARNING
- mock(name, :null_object => true)
- end
-
- # Disables warning messages about expectations being set on nil.
- #
- # By default warning messages are issued when expectations are set on nil. This is to
- # prevent false-positives and to catch potential bugs early on.
- def allow_message_expectations_on_nil
- Proxy.allow_message_expectations_on_nil
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/extensions.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/extensions.rb
deleted file mode 100644
index 6fd51a272..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/extensions.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'spec/mocks/extensions/object'
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/extensions/object.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/extensions/object.rb
deleted file mode 100644
index 4b7531066..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/extensions/object.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class Object
- include Spec::Mocks::Methods
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/framework.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/framework.rb
deleted file mode 100644
index e25778655..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/framework.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-# Require everything except the global extensions of class and object. This
-# supports wrapping rspec's mocking functionality without invading every
-# object in the system.
-
-require 'spec/mocks/methods'
-require 'spec/mocks/argument_matchers'
-require 'spec/mocks/example_methods'
-require 'spec/mocks/proxy'
-require 'spec/mocks/mock'
-require 'spec/mocks/argument_expectation'
-require 'spec/mocks/message_expectation'
-require 'spec/mocks/order_group'
-require 'spec/mocks/errors'
-require 'spec/mocks/error_generator'
-require 'spec/mocks/space'
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/message_expectation.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/message_expectation.rb
deleted file mode 100644
index cd8dc0f97..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/message_expectation.rb
+++ /dev/null
@@ -1,344 +0,0 @@
-module Spec
- module Mocks
-
- class BaseExpectation
- attr_reader :sym
- attr_writer :expected_received_count, :method_block, :expected_from
- protected :expected_received_count=, :method_block=, :expected_from=
- attr_accessor :error_generator
- protected :error_generator, :error_generator=
-
- def initialize(error_generator, expectation_ordering, expected_from, sym, method_block, expected_received_count=1, opts={}, &implementation)
- @error_generator = error_generator
- @error_generator.opts = opts
- @expected_from = expected_from
- @sym = sym
- @method_block = method_block
- @actual_received_count = 0
- @expected_received_count = expected_received_count
- @args_expectation = ArgumentExpectation.new([ArgumentMatchers::AnyArgsMatcher.new])
- @consecutive = false
- @exception_to_raise = nil
- @symbol_to_throw = nil
- @order_group = expectation_ordering
- @at_least = nil
- @at_most = nil
- @args_to_yield = []
- @failed_fast = nil
- @args_to_yield_were_cloned = false
- @return_block = implementation
- @eval_context = nil
- end
-
- def build_child(expected_from, method_block, expected_received_count, opts={})
- child = clone
- child.expected_from = expected_from
- child.method_block = method_block
- child.expected_received_count = expected_received_count
- child.clear_actual_received_count!
- new_gen = error_generator.clone
- new_gen.opts = opts
- child.error_generator = new_gen
- child.clone_args_to_yield @args_to_yield
- child
- end
-
- def expected_args
- @args_expectation.args
- end
-
- def and_return(*values, &return_block)
- Kernel::raise AmbiguousReturnError unless @method_block.nil?
- case values.size
- when 0 then value = nil
- when 1 then value = values[0]
- else
- value = values
- @consecutive = true
- @expected_received_count = values.size if !ignoring_args? &&
- @expected_received_count < values.size
- end
- @return_block = block_given? ? return_block : lambda { value }
- end
-
- # :call-seq:
- # and_raise()
- # and_raise(Exception) #any exception class
- # and_raise(exception) #any exception object
- #
- # == Warning
- #
- # When you pass an exception class, the MessageExpectation will
- # raise an instance of it, creating it with +new+. If the exception
- # class initializer requires any parameters, you must pass in an
- # instance and not the class.
- def and_raise(exception=Exception)
- @exception_to_raise = exception
- end
-
- def and_throw(symbol)
- @symbol_to_throw = symbol
- end
-
- def and_yield(*args, &block)
- if @args_to_yield_were_cloned
- @args_to_yield.clear
- @args_to_yield_were_cloned = false
- end
-
- if block
- require 'spec/extensions/instance_exec'
- @eval_context = Object.new
- @eval_context.extend Spec::Matchers::InstanceExec
- yield @eval_context
- end
- @args_to_yield << args
- self
- end
-
- def matches(sym, args)
- @sym == sym and @args_expectation.args_match?(args)
- end
-
- def invoke(*args, &block)
- if @expected_received_count == 0
- @failed_fast = true
- @actual_received_count += 1
- @error_generator.raise_expectation_error @sym, @expected_received_count, @actual_received_count, *args
- end
-
- @order_group.handle_order_constraint self
-
- begin
- Kernel::raise @exception_to_raise unless @exception_to_raise.nil?
- Kernel::throw @symbol_to_throw unless @symbol_to_throw.nil?
-
-
- if !@method_block.nil?
- default_return_val = invoke_method_block(*args)
- elsif @args_to_yield.size > 0 || @eval_context
- default_return_val = invoke_with_yield(&block)
- else
- default_return_val = nil
- end
-
- if @consecutive
- return invoke_consecutive_return_block(*args, &block)
- elsif @return_block
- return invoke_return_block(*args, &block)
- else
- return default_return_val
- end
- ensure
- @actual_received_count += 1
- end
- end
-
- def called_max_times?
- @expected_received_count != :any && @expected_received_count > 0 &&
- @actual_received_count >= @expected_received_count
- end
-
- def invoke_return_block(*args, &block)
- args << block unless block.nil?
- # Ruby 1.9 - when we set @return_block to return values
- # regardless of arguments, any arguments will result in
- # a "wrong number of arguments" error
- @return_block.arity == 0 ? @return_block.call : @return_block.call(*args)
- end
-
- protected
-
- def invoke_method_block(*args)
- begin
- @method_block.call(*args)
- rescue => detail
- @error_generator.raise_block_failed_error @sym, detail.message
- end
- end
-
- def invoke_with_yield(&block)
- if block.nil?
- @error_generator.raise_missing_block_error @args_to_yield
- end
- value = nil
- @args_to_yield.each do |args_to_yield_this_time|
- if block.arity > -1 && args_to_yield_this_time.length != block.arity
- @error_generator.raise_wrong_arity_error args_to_yield_this_time, block.arity
- end
- value = eval_block(*args_to_yield_this_time, &block)
- end
- value
- end
-
- def eval_block(*args, &block)
- if @eval_context
- @eval_context.instance_exec(*args, &block)
- else
- block.call(*args)
- end
- end
-
- def invoke_consecutive_return_block(*args, &block)
- value = invoke_return_block(*args, &block)
- index = [@actual_received_count, value.size-1].min
- value[index]
- end
-
- def clone_args_to_yield(args)
- @args_to_yield = args.clone
- @args_to_yield_were_cloned = true
- end
-
- def failed_fast?
- @failed_fast
- end
- end
-
- class MessageExpectation < BaseExpectation
-
- def matches_name?(sym)
- @sym == sym
- end
-
- def matches_name_but_not_args(sym, args)
- matches_name?(sym) and not @args_expectation.args_match?(args)
- end
-
- def verify_messages_received
- return if expected_messages_received? || failed_fast?
-
- generate_error
- rescue Spec::Mocks::MockExpectationError => error
- error.backtrace.insert(0, @expected_from)
- Kernel::raise error
- end
-
- def expected_messages_received?
- ignoring_args? || matches_exact_count? ||
- matches_at_least_count? || matches_at_most_count?
- end
-
- def ignoring_args?
- @expected_received_count == :any
- end
-
- def matches_at_least_count?
- @at_least && @actual_received_count >= @expected_received_count
- end
-
- def matches_at_most_count?
- @at_most && @actual_received_count <= @expected_received_count
- end
-
- def matches_exact_count?
- @expected_received_count == @actual_received_count
- end
-
- def similar_messages
- @similar_messages ||= []
- end
-
- def advise(args, block)
- similar_messages << args
- end
-
- def generate_error
- if similar_messages.empty?
- @error_generator.raise_expectation_error(@sym, @expected_received_count, @actual_received_count, *@args_expectation.args)
- else
- @error_generator.raise_unexpected_message_args_error(self, *@similar_messages)
- end
- end
-
- def with(*args, &block)
- @args_expectation = ArgumentExpectation.new(args, &block)
- self
- end
-
- def exactly(n)
- set_expected_received_count :exactly, n
- self
- end
-
- def at_least(n)
- set_expected_received_count :at_least, n
- self
- end
-
- def at_most(n)
- set_expected_received_count :at_most, n
- self
- end
-
- def times(&block)
- @method_block = block if block
- self
- end
-
- def any_number_of_times(&block)
- @method_block = block if block
- @expected_received_count = :any
- self
- end
-
- def never
- @expected_received_count = 0
- self
- end
-
- def once(&block)
- @method_block = block if block
- @expected_received_count = 1
- self
- end
-
- def twice(&block)
- @method_block = block if block
- @expected_received_count = 2
- self
- end
-
- def ordered(&block)
- @method_block = block if block
- @order_group.register(self)
- @ordered = true
- self
- end
-
- def negative_expectation_for?(sym)
- return false
- end
-
- protected
- def set_expected_received_count(relativity, n)
- @at_least = (relativity == :at_least)
- @at_most = (relativity == :at_most)
- @expected_received_count = case n
- when Numeric
- n
- when :once
- 1
- when :twice
- 2
- end
- end
-
- def clear_actual_received_count!
- @actual_received_count = 0
- end
-
- end
-
- class NegativeMessageExpectation < MessageExpectation
- def initialize(message, expectation_ordering, expected_from, sym, method_block)
- super(message, expectation_ordering, expected_from, sym, method_block, 0)
- end
-
- def negative_expectation_for?(sym)
- return @sym == sym
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/methods.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/methods.rb
deleted file mode 100644
index 5d94cac37..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/methods.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-module Spec
- module Mocks
- module Methods
- def should_receive(sym, opts={}, &block)
- __mock_proxy.add_message_expectation(opts[:expected_from] || caller(1)[0], sym.to_sym, opts, &block)
- end
-
- def should_not_receive(sym, &block)
- __mock_proxy.add_negative_message_expectation(caller(1)[0], sym.to_sym, &block)
- end
-
- def stub!(sym_or_hash, opts={}, &block)
- if Hash === sym_or_hash
- sym_or_hash.each {|method, value| stub!(method).and_return value }
- else
- __mock_proxy.add_stub(caller(1)[0], sym_or_hash.to_sym, opts, &block)
- end
- end
-
- alias_method :stub, :stub!
-
- def unstub!(message)
- __mock_proxy.remove_stub(message)
- end
-
- alias_method :unstub, :unstub!
-
- # :call-seq:
- # object.stub_chain(:first, :second, :third).and_return(:this)
- #
- # Supports stubbing a chain of methods. Each argument represents
- # a method name to stub, and each one returns a proxy object that
- # can accept more stubs, until the last, which returns whatever
- # is passed to +and_return_.
- #
- # == Examples
- #
- # # with this in an example ...
- # article = double('article')
- # Article.stub_chain(:authored_by, :published, :recent).and_return([article])
- # # then this will return an Array with the article double in it:
- # Article.authored_by(params[:author_id]).published.recent
- def stub_chain(*methods)
- if methods.length > 1
- if matching_stub = __mock_proxy.find_matching_method_stub(methods[0])
- methods.shift
- matching_stub.invoke_return_block.stub_chain(*methods)
- else
- next_in_chain = Object.new
- stub!(methods.shift) {next_in_chain}
- next_in_chain.stub_chain(*methods)
- end
- else
- stub!(methods.shift)
- end
- end
-
- # Record and otherwise ignore all messages that aren't specified,
- # with +stub+, +stub!+, or +should_receive+.
- #
- # == Returns
- # self
- def as_null_object
- __mock_proxy.as_null_object
- end
-
- def null_object?
- __mock_proxy.null_object?
- end
-
- def received_message?(sym, *args, &block) #:nodoc:
- __mock_proxy.received_message?(sym.to_sym, *args, &block)
- end
-
- def rspec_verify #:nodoc:
- __mock_proxy.verify
- end
-
- def rspec_reset #:nodoc:
- __mock_proxy.reset
- end
-
- private
-
- def __mock_proxy
- if Mock === self
- @mock_proxy ||= Proxy.new(self, @name, @options)
- else
- @mock_proxy ||= Proxy.new(self)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/mock.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/mock.rb
deleted file mode 100644
index 35a6c798e..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/mock.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-module Spec
- module Mocks
- class Mock
- include Methods
-
- # Creates a new mock with a +name+ (that will be used in error messages
- # only) == Options:
- # * <tt>:null_object</tt> - if true, the mock object acts as a forgiving
- # null object allowing any message to be sent to it.
- def initialize(name=nil, stubs_and_options={})
- if name.is_a?(Hash) && stubs_and_options.empty?
- stubs_and_options = name
- @name = nil
- else
- @name = name
- end
- @options = extract_options(stubs_and_options)
- assign_stubs(stubs_and_options)
- end
-
- # This allows for comparing the mock to other objects that proxy such as
- # ActiveRecords belongs_to proxy objects. By making the other object run
- # the comparison, we're sure the call gets delegated to the proxy
- # target.
- def ==(other)
- other == __mock_proxy
- end
-
- def inspect
- "#<#{self.class}:#{sprintf '0x%x', self.object_id} @name=#{@name.inspect}>"
- end
-
- def to_s
- inspect.gsub('<','[').gsub('>',']')
- end
-
- private
-
- def method_missing(sym, *args, &block)
- __mock_proxy.record_message_received(sym, args, block)
- begin
- return self if __mock_proxy.null_object?
- super(sym, *args, &block)
- rescue NameError
- __mock_proxy.raise_unexpected_message_error sym, *args
- end
- end
-
- def extract_options(stubs_and_options)
- options = {}
- extract_option(stubs_and_options, options, :null_object)
- extract_option(stubs_and_options, options, :__declared_as, 'Mock')
- options
- end
-
- def extract_option(source, target, key, default=nil)
- if source[key]
- target[key] = source.delete(key)
- elsif default
- target[key] = default
- end
- end
-
- def assign_stubs(stubs)
- stubs.each_pair do |message, response|
- stub!(message).and_return(response)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/order_group.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/order_group.rb
deleted file mode 100644
index 9983207eb..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/order_group.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-module Spec
- module Mocks
- class OrderGroup
- def initialize error_generator
- @error_generator = error_generator
- @ordering = Array.new
- end
-
- def register(expectation)
- @ordering << expectation
- end
-
- def ready_for?(expectation)
- return @ordering.first == expectation
- end
-
- def consume
- @ordering.shift
- end
-
- def handle_order_constraint expectation
- return unless @ordering.include? expectation
- return consume if ready_for?(expectation)
- @error_generator.raise_out_of_order_error expectation.sym
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/proxy.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/proxy.rb
deleted file mode 100644
index 6c29a9cdd..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/proxy.rb
+++ /dev/null
@@ -1,268 +0,0 @@
-module Spec
- module Mocks
- class Proxy
- DEFAULT_OPTIONS = {
- :null_object => false,
- }
-
- @@warn_about_expectations_on_nil = true
-
- def self.allow_message_expectations_on_nil
- @@warn_about_expectations_on_nil = false
-
- # ensure nil.rspec_verify is called even if an expectation is not set in the example
- # otherwise the allowance would effect subsequent examples
- $rspec_mocks.add(nil) unless $rspec_mocks.nil?
- end
-
- def initialize(target, name=nil, options={})
- @target = target
- @name = name
- @error_generator = ErrorGenerator.new target, name, options
- @expectation_ordering = OrderGroup.new @error_generator
- @expectations = []
- @messages_received = []
- @stubs = []
- @proxied_methods = []
- @options = options ? DEFAULT_OPTIONS.dup.merge(options) : DEFAULT_OPTIONS
- @already_proxied_respond_to = false
- end
-
- def null_object?
- @options[:null_object]
- end
-
- def as_null_object
- @options[:null_object] = true
- @target
- end
-
- def add_message_expectation(expected_from, sym, opts={}, &block)
- __add sym
- warn_if_nil_class sym
- @expectations << build_expectation(expected_from, sym, opts, &block)
- @expectations.last
- end
-
- def build_expectation(expected_from, sym, opts, &block)
- if stub = find_matching_method_stub(sym)
- stub.build_child(expected_from, block_given?? block : nil, 1, opts)
- else
- MessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil, 1, opts)
- end
- end
-
- def add_negative_message_expectation(expected_from, sym, &block)
- __add sym
- warn_if_nil_class sym
- @expectations << NegativeMessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil)
- @expectations.last
- end
-
- def add_stub(expected_from, sym, opts={}, &implementation)
- __add sym
- @stubs.unshift MessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, nil, :any, opts, &implementation)
- @stubs.first
- end
-
- def remove_stub(message)
- message = message.to_sym
- if stub_to_remove = @stubs.detect { |s| s.matches_name?(message) }
- reset_proxied_method(message)
- @stubs.delete(stub_to_remove)
- else
- raise MockExpectationError, "The method `#{message}` was not stubbed or was already unstubbed"
- end
- end
-
- def verify #:nodoc:
- verify_expectations
- ensure
- reset
- end
-
- def reset
- clear_expectations
- clear_stubs
- reset_proxied_methods
- clear_proxied_methods
- reset_nil_expectations_warning
- end
-
- def received_message?(sym, *args, &block)
- @messages_received.any? {|array| array == [sym, args, block]}
- end
-
- def has_negative_expectation?(sym)
- @expectations.any? {|expectation| expectation.negative_expectation_for?(sym)}
- end
-
- def record_message_received(sym, args, block)
- @messages_received << [sym, args, block]
- end
-
- def message_received(sym, *args, &block)
- expectation = find_matching_expectation(sym, *args)
- stub = find_matching_method_stub(sym, *args)
-
- if ok_to_invoke_stub?(stub, expectation)
- record_stub(stub, sym, args, &block)
- elsif expectation
- invoke_expectation(expectation, *args, &block)
- elsif expectation = find_almost_matching_expectation(sym, *args)
- record_almost_matching_expectation(expectation, sym, *args, &block)
- elsif @target.is_a?(Class)
- @target.superclass.send(sym, *args, &block)
- else
- @target.__send__ :method_missing, sym, *args, &block
- end
- end
-
- def record_stub(stub, sym, args, &block)
- almost_matching_expectation(sym, *args) do |e|
- e.advise(args, block)
- end
- stub.invoke(*args, &block)
- end
-
- def invoke_expectation(expectation, *args, &block)
- expectation.invoke(*args, &block)
- end
-
- def record_almost_matching_expectation(expectation, sym, *args, &block)
- expectation.advise(args, block)
- unless (null_object? or has_negative_expectation?(sym))
- raise_unexpected_message_args_error(expectation, *args)
- end
- end
-
- def ok_to_invoke_stub?(stub, expectation)
- stub && (!expectation || expectation.called_max_times?)
- end
-
- def raise_unexpected_message_args_error(expectation, *args)
- @error_generator.raise_unexpected_message_args_error expectation, *args
- end
-
- def raise_unexpected_message_error(sym, *args)
- @error_generator.raise_unexpected_message_error sym, *args
- end
-
- def find_matching_method_stub(sym, *args)
- @stubs.find {|stub| stub.matches(sym, args)}
- end
-
- private
-
- def __add(sym)
- $rspec_mocks.add(@target) unless $rspec_mocks.nil?
- define_expected_method(sym)
- end
-
- def warn_if_nil_class(sym)
- if proxy_for_nil_class? & @@warn_about_expectations_on_nil
- Kernel.warn("An expectation of :#{sym} was set on nil. Called from #{caller[2]}. Use allow_message_expectations_on_nil to disable warnings.")
- end
- end
-
- def define_expected_method(sym)
- unless @proxied_methods.include?(sym)
- visibility_string = "#{visibility(sym)} :#{sym}"
- if target_responds_to?(sym)
- munged_sym = munge(sym)
- target_metaclass.instance_eval do
- alias_method munged_sym, sym if method_defined?(sym)
- end
- @proxied_methods << sym
- end
- target_metaclass.class_eval(<<-EOF, __FILE__, __LINE__)
- def #{sym}(*args, &block)
- __mock_proxy.message_received :#{sym}, *args, &block
- end
- #{visibility_string}
- EOF
- end
- end
-
- def target_responds_to?(sym)
- return @target.__send__(munge(:respond_to?),sym) if @already_proxied_respond_to
- return @already_proxied_respond_to = true if sym == :respond_to?
- return @target.respond_to?(sym, true)
- end
-
- def visibility(sym)
- if Mock === @target
- 'public'
- elsif target_metaclass.private_method_defined?(sym)
- 'private'
- elsif target_metaclass.protected_method_defined?(sym)
- 'protected'
- else
- 'public'
- end
- end
-
- def munge(sym)
- "proxied_by_rspec__#{sym}"
- end
-
- def clear_expectations
- @expectations.clear
- end
-
- def clear_stubs
- @stubs.clear
- end
-
- def clear_proxied_methods
- @proxied_methods.clear
- end
-
- def target_metaclass
- class << @target; self; end
- end
-
- def verify_expectations
- @expectations.map {|e| e.verify_messages_received}
- end
-
- def reset_proxied_methods
- @proxied_methods.map {|sym| reset_proxied_method(sym)}
- end
-
- def reset_proxied_method(sym)
- munged_sym = munge(sym)
- target_metaclass.instance_eval do
- remove_method sym
- if method_defined?(munged_sym)
- alias_method sym, munged_sym
- remove_method munged_sym
- end
- end
- end
-
- def proxy_for_nil_class?
- @target.nil?
- end
-
- def reset_nil_expectations_warning
- @@warn_about_expectations_on_nil = true if proxy_for_nil_class?
- end
-
- def find_matching_expectation(sym, *args)
- @expectations.find {|expectation| expectation.matches(sym, args) && !expectation.called_max_times?} ||
- @expectations.find {|expectation| expectation.matches(sym, args)}
- end
-
- def almost_matching_expectation(sym, *args, &block)
- if e = find_almost_matching_expectation(sym, *args)
- yield e
- end
- end
-
- def find_almost_matching_expectation(sym, *args)
- @expectations.find {|expectation| expectation.matches_name_but_not_args(sym, args)}
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/mocks/space.rb b/vendor/gems/rspec-1.3.1/lib/spec/mocks/space.rb
deleted file mode 100644
index 3e13224c7..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/mocks/space.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-module Spec
- module Mocks
- class Space
- def add(obj)
- mocks << obj unless mocks.detect {|m| m.equal? obj}
- end
-
- def verify_all
- mocks.each do |mock|
- mock.rspec_verify
- end
- end
-
- def reset_all
- mocks.each do |mock|
- mock.rspec_reset
- end
- mocks.clear
- end
-
- private
-
- def mocks
- @mocks ||= []
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/rake/spectask.rb b/vendor/gems/rspec-1.3.1/lib/spec/rake/spectask.rb
deleted file mode 100644
index 9049fd08e..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/rake/spectask.rb
+++ /dev/null
@@ -1,230 +0,0 @@
-#!/usr/bin/env ruby
-
-# Define a task library for running RSpec contexts.
-
-require 'rake'
-require 'rake/tasklib'
-
-module Spec
- module Rake
-
- # A Rake task that runs a set of specs.
- #
- # Example:
- #
- # Spec::Rake::SpecTask.new do |t|
- # t.warning = true
- # t.rcov = true
- # end
- #
- # This will create a task that can be run with:
- #
- # rake spec
- #
- # If rake is invoked with a "SPEC=filename" command line option,
- # then the list of spec files will be overridden to include only the
- # filename specified on the command line. This provides an easy way
- # to run just one spec.
- #
- # If rake is invoked with a "SPEC_OPTS=options" command line option,
- # then the given options will override the value of the +spec_opts+
- # attribute.
- #
- # If rake is invoked with a "RCOV_OPTS=options" command line option,
- # then the given options will override the value of the +rcov_opts+
- # attribute.
- #
- # Examples:
- #
- # rake spec # run specs normally
- # rake spec SPEC=just_one_file.rb # run just one spec file.
- # rake spec SPEC_OPTS="--diff" # enable diffing
- # rake spec RCOV_OPTS="--aggregate myfile.txt" # see rcov --help for details
- #
- # Each attribute of this task may be a proc. This allows for lazy evaluation,
- # which is sometimes handy if you want to defer the evaluation of an attribute value
- # until the task is run (as opposed to when it is defined).
- #
- # This task can also be used to run existing Test::Unit tests and get RSpec
- # output, for example like this:
- #
- # require 'spec/rake/spectask'
- # Spec::Rake::SpecTask.new do |t|
- # t.ruby_opts = ['-rtest/unit']
- # t.spec_files = FileList['test/**/*_test.rb']
- # end
- #
- class SpecTask < ::Rake::TaskLib
- def self.attr_accessor(*names)
- super(*names)
- names.each do |name|
- module_eval "def #{name}() evaluate(@#{name}) end" # Allows use of procs
- end
- end
-
- # Name of spec task. (default is :spec)
- attr_accessor :name
-
- # Array of directories to be added to $LOAD_PATH before running the
- # specs. Defaults to ['<the absolute path to RSpec's lib directory>']
- attr_accessor :libs
-
- # If true, requests that the specs be run with the warning flag set.
- # E.g. warning=true implies "ruby -w" used to run the specs. Defaults to false.
- attr_accessor :warning
-
- # Glob pattern to match spec files. (default is 'spec/**/*_spec.rb')
- # Setting the SPEC environment variable overrides this.
- attr_accessor :pattern
-
- # Array of commandline options to pass to RSpec. Defaults to [].
- # Setting the SPEC_OPTS environment variable overrides this.
- attr_accessor :spec_opts
-
- # Whether or not to use RCov (default is false)
- # See http://eigenclass.org/hiki.rb?rcov
- attr_accessor :rcov
-
- # Array of commandline options to pass to RCov. Defaults to ['--exclude', 'lib\/spec,bin\/spec'].
- # Ignored if rcov=false
- # Setting the RCOV_OPTS environment variable overrides this.
- attr_accessor :rcov_opts
-
- # Directory where the RCov report is written. Defaults to "coverage"
- # Ignored if rcov=false
- attr_accessor :rcov_dir
-
- # Array of commandline options to pass to ruby. Defaults to [].
- attr_accessor :ruby_opts
-
- # Whether or not to fail Rake when an error occurs (typically when specs fail).
- # Defaults to true.
- attr_accessor :fail_on_error
-
- # A message to print to stderr when there are failures.
- attr_accessor :failure_message
-
- # Where RSpec's output is written. Defaults to $stdout.
- # DEPRECATED. Use --format FORMAT:WHERE in spec_opts.
- attr_accessor :out
-
- # Explicitly define the list of spec files to be included in a
- # spec. +spec_files+ is expected to be an array of file names (a
- # FileList is acceptable). If both +pattern+ and +spec_files+ are
- # used, then the list of spec files is the union of the two.
- # Setting the SPEC environment variable overrides this.
- attr_accessor :spec_files
-
- # Use verbose output. If this is set to true, the task will print
- # the executed spec command to stdout. Defaults to false.
- attr_accessor :verbose
-
- # Explicitly define the path to the ruby binary, or its proxy (e.g. multiruby)
- attr_accessor :ruby_cmd
-
- # Defines a new task, using the name +name+.
- def initialize(name=:spec)
- @name = name
- @libs = ['lib']
- @pattern = nil
- @spec_files = nil
- @spec_opts = []
- @warning = false
- @ruby_opts = []
- @fail_on_error = true
- @rcov = false
- @rcov_opts = ['--exclude', 'lib\/spec,bin\/spec,config\/boot.rb']
- @rcov_dir = "coverage"
-
- yield self if block_given?
- @pattern = 'spec/**/*_spec.rb' if pattern.nil? && spec_files.nil?
- define
- end
-
- def define # :nodoc:
- spec_script = File.expand_path(File.join(File.dirname(__FILE__),"..","..","..","bin","spec"))
-
- lib_path = libs.join(File::PATH_SEPARATOR)
- actual_name = Hash === name ? name.keys.first : name
- unless ::Rake.application.last_comment
- desc "Run specs" + (rcov ? " using RCov" : "")
- end
- task name do
- RakeFileUtils.verbose(verbose) do
- unless spec_file_list.empty?
- # ruby [ruby_opts] -Ilib -S rcov [rcov_opts] bin/spec -- examples [spec_opts]
- # or
- # ruby [ruby_opts] -Ilib bin/spec examples [spec_opts]
- cmd_parts = [ruby_cmd || RUBY]
- cmd_parts += ruby_opts
- cmd_parts << %[-I"#{lib_path}"]
- cmd_parts << "-S rcov" if rcov
- cmd_parts << "-w" if warning
- cmd_parts << rcov_option_list
- cmd_parts << %[-o "#{rcov_dir}"] if rcov
- cmd_parts << %["#{spec_script}"]
- cmd_parts << "--" if rcov
- cmd_parts += spec_file_list.collect { |fn| %["#{fn}"] }
- cmd_parts << spec_option_list
- if out
- cmd_parts << %[> "#{out}"]
- STDERR.puts "The Spec::Rake::SpecTask#out attribute is DEPRECATED and will be removed in a future version. Use --format FORMAT:WHERE instead."
- end
- cmd = cmd_parts.join(" ")
- puts cmd if verbose
- unless system(cmd)
- STDERR.puts failure_message if failure_message
- raise("Command #{cmd} failed") if fail_on_error
- end
- end
- end
- end
-
- if rcov
- desc "Remove rcov products for #{actual_name}"
- task paste("clobber_", actual_name) do
- rm_r rcov_dir rescue nil
- end
-
- clobber_task = paste("clobber_", actual_name)
- task :clobber => [clobber_task]
-
- task actual_name => clobber_task
- end
- self
- end
-
- def rcov_option_list # :nodoc:
- if rcov
- ENV['RCOV_OPTS'] || rcov_opts.join(" ") || ""
- else
- ""
- end
- end
-
- def spec_option_list # :nodoc:
- STDERR.puts "RSPECOPTS is DEPRECATED and will be removed in a future version. Use SPEC_OPTS instead." if ENV['RSPECOPTS']
- ENV['SPEC_OPTS'] || ENV['RSPECOPTS'] || spec_opts.join(" ") || ""
- end
-
- def evaluate(o) # :nodoc:
- case o
- when Proc then o.call
- else o
- end
- end
-
- def spec_file_list # :nodoc:
- if ENV['SPEC']
- FileList[ ENV['SPEC'] ]
- else
- result = []
- result += spec_files.to_a if spec_files
- result += FileList[ pattern ].to_a if pattern
- FileList[result]
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/rake/verify_rcov.rb b/vendor/gems/rspec-1.3.1/lib/spec/rake/verify_rcov.rb
deleted file mode 100644
index 199bd8546..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/rake/verify_rcov.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-module RCov
- # A task that can verify that the RCov coverage doesn't
- # drop below a certain threshold. It should be run after
- # running Spec::Rake::SpecTask.
- class VerifyTask < Rake::TaskLib
- # Name of the task. Defaults to :verify_rcov
- attr_accessor :name
-
- # Path to the index.html file generated by RCov, which
- # is the file containing the total coverage.
- # Defaults to 'coverage/index.html'
- attr_accessor :index_html
-
- # Whether or not to output details. Defaults to true.
- attr_accessor :verbose
-
- # The threshold value (in percent) for coverage. If the
- # actual coverage is not equal to this value, the task will raise an
- # exception.
- attr_accessor :threshold
-
- # Require the threshold value be met exactly. This is the default.
- attr_accessor :require_exact_threshold
-
- def initialize(name=:verify_rcov)
- @name = name
- @index_html = 'coverage/index.html'
- @verbose = true
- @require_exact_threshold = true
- yield self if block_given?
- raise "Threshold must be set" if @threshold.nil?
- define
- end
-
- def define
- desc "Verify that rcov coverage is at least #{threshold}%"
- task @name do
- total_coverage = 0
-
- File.open(index_html).each_line do |line|
- if line =~ /<tt class='coverage_total'>\s*(\d+\.\d+)%\s*<\/tt>/
- total_coverage = $1.to_f
- break
- end
- end
- puts "Coverage: #{total_coverage}% (threshold: #{threshold}%)" if verbose
- raise "Coverage must be at least #{threshold}% but was #{total_coverage}%" if total_coverage < threshold
- raise "Coverage has increased above the threshold of #{threshold}% to #{total_coverage}%. You should update your threshold value." if (total_coverage > threshold) and require_exact_threshold
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/ruby.rb b/vendor/gems/rspec-1.3.1/lib/spec/ruby.rb
deleted file mode 100644
index 863877c7f..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/ruby.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Spec
- module Ruby
- class << self
- def version
- RUBY_VERSION
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner.rb
deleted file mode 100644
index 519b536e2..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'spec/runner/configuration'
-require 'spec/runner/options'
-require 'spec/runner/option_parser'
-require 'spec/runner/example_group_runner'
-require 'spec/runner/command_line'
-require 'spec/runner/drb_command_line'
-require 'spec/runner/backtrace_tweaker'
-require 'spec/runner/reporter'
-require 'spec/runner/line_number_query'
-require 'spec/runner/class_and_arguments_parser'
-require 'spec/runner/extensions/kernel'
-
-module Spec
- module Runner
-
- class ExampleGroupCreationListener
- def register_example_group(klass)
- Spec::Runner.options.add_example_group klass
- end
- end
-
- Spec::Example::ExampleGroupFactory.example_group_creation_listeners << ExampleGroupCreationListener.new
-
- class << self
- def configuration # :nodoc:
- @configuration ||= Spec::Runner::Configuration.new
- end
-
- # Use this to configure various configurable aspects of
- # RSpec:
- #
- # Spec::Runner.configure do |configuration|
- # # Configure RSpec here
- # end
- #
- # The yielded <tt>configuration</tt> object is a
- # Spec::Runner::Configuration instance. See its RDoc
- # for details about what you can do with it.
- #
- def configure
- yield configuration
- end
-
- def autorun # :nodoc:
- at_exit {exit run unless $!}
- end
-
- def options # :nodoc:
- @options ||= begin
- parser = ::Spec::Runner::OptionParser.new($stderr, $stdout)
- parser.order!(ARGV)
- parser.options
- end
- end
-
- def use options
- @options = options
- end
-
- def run
- options.examples_run? || options.run_examples
- end
-
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/backtrace_tweaker.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/backtrace_tweaker.rb
deleted file mode 100644
index 5f19171bf..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/backtrace_tweaker.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-module Spec
- module Runner
- class BacktraceTweaker
- def initialize(*patterns)
- @ignore_patterns = []
- end
-
- def clean_up_double_slashes(line)
- line.gsub!('//','/')
- end
-
- def ignore_patterns(*patterns)
- # do nothing. Only QuietBacktraceTweaker ignores patterns.
- end
-
- def ignored_patterns
- []
- end
-
- def tweak_backtrace(error)
- return if error.backtrace.nil?
- tweaked = error.backtrace.collect do |message|
- clean_up_double_slashes(message)
- kept_lines = message.split("\n").select do |line|
- ignored_patterns.each do |ignore|
- break if line =~ ignore
- end
- end
- kept_lines.empty?? nil : kept_lines.join("\n")
- end
- error.set_backtrace(tweaked.select {|line| line})
- end
- end
-
- class NoisyBacktraceTweaker < BacktraceTweaker
- end
-
- # Tweaks raised Exceptions to mask noisy (unneeded) parts of the backtrace
- class QuietBacktraceTweaker < BacktraceTweaker
- unless defined?(IGNORE_PATTERNS)
- root_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', '..'))
- spec_files = Dir["#{root_dir}/lib/*"].map do |path|
- subpath = path[root_dir.length..-1]
- /#{subpath}/
- end
- IGNORE_PATTERNS = spec_files + [
- /\/rspec-[^\/]*\/lib\/spec\//,
- /\/spork-[^\/]*\/lib\/spork\//,
- /\/lib\/ruby\//,
- /bin\/spec:/,
- /bin\/spork:/,
- /bin\/rcov:/,
- /lib\/rspec-rails/,
- /vendor\/rails/,
- # TextMate's Ruby and RSpec plugins
- /Ruby\.tmbundle\/Support\/tmruby.rb:/,
- /RSpec\.tmbundle\/Support\/lib/,
- /temp_textmate\./,
- /mock_frameworks\/rspec/,
- /spec_server/
- ]
- end
-
- def initialize(*patterns)
- super
- ignore_patterns(*patterns)
- end
-
- def ignore_patterns(*patterns)
- @ignore_patterns += patterns.flatten.map { |pattern| Regexp.new(pattern) }
- end
-
- def ignored_patterns
- IGNORE_PATTERNS + @ignore_patterns
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/class_and_arguments_parser.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/class_and_arguments_parser.rb
deleted file mode 100644
index a49ade26e..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/class_and_arguments_parser.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-module Spec
- module Runner
- class ClassAndArgumentsParser
- def self.parse(s)
- if s =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/
- arg = $2 == "" ? nil : $2
- [$1, arg]
- else
- raise "Couldn't parse #{s.inspect}"
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/command_line.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/command_line.rb
deleted file mode 100644
index 35a7e3159..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/command_line.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'spec/runner/option_parser'
-
-module Spec
- module Runner
- class CommandLine
- def self.run(tmp_options=Spec::Runner.options)
- orig_options = Spec::Runner.options
- Spec::Runner.use tmp_options
- tmp_options.run_examples
- ensure
- Spec::Runner.use orig_options
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/configuration.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/configuration.rb
deleted file mode 100644
index 19db52435..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/configuration.rb
+++ /dev/null
@@ -1,202 +0,0 @@
-module Spec
- module Runner
- class Configuration
- include Spec::Example::ArgsAndOptions
-
- # Chooses what mock framework to use. Example:
- #
- # Spec::Runner.configure do |config|
- # config.mock_with :rspec, :mocha, :flexmock, or :rr
- # end
- #
- # To use any other mock framework, you'll have to provide your own
- # adapter. This is simply a module that responds to the following
- # methods:
- #
- # setup_mocks_for_rspec
- # verify_mocks_for_rspec
- # teardown_mocks_for_rspec.
- #
- # These are your hooks into the lifecycle of a given example. RSpec will
- # call setup_mocks_for_rspec before running anything else in each
- # Example. After executing the #after methods, RSpec will then call
- # verify_mocks_for_rspec and teardown_mocks_for_rspec (this is
- # guaranteed to run even if there are failures in
- # verify_mocks_for_rspec).
- #
- # Once you've defined this module, you can pass that to mock_with:
- #
- # Spec::Runner.configure do |config|
- # config.mock_with MyMockFrameworkAdapter
- # end
- #
- def mock_with(mock_framework)
- @mock_framework = case mock_framework
- when Symbol
- mock_framework_path(mock_framework.to_s)
- else
- mock_framework
- end
- end
-
- def mock_framework # :nodoc:
- @mock_framework ||= mock_framework_path("rspec")
- end
-
- # :call-seq:
- # include(Some::Helpers)
- # include(Some::Helpers, More::Helpers)
- # include(My::Helpers, :type => :key)
- #
- # Declares modules to be included in multiple example groups
- # (<tt>describe</tt> blocks). With no <tt>:type</tt>, the modules listed
- # will be included in all example groups.
- #
- # Use <tt>:type</tt> to restrict
- # the inclusion to a subset of example groups. The value assigned to
- # <tt>:type</tt> should be a key that maps to a class that is either a
- # subclass of Spec::Example::ExampleGroup or extends
- # Spec::Example::ExampleGroupMethods and includes
- # Spec::Example::ExampleMethods.
- #
- # For example, the rspec-rails gem/plugin extends Test::Unit::TestCase
- # with Spec::Example::ExampleGroupMethods and includes
- # Spec::Example::ExampleMethods in it. So if you have a module of helper
- # methods for controller examples, you could do this:
- #
- # config.include(ControllerExampleHelpers, :type => :controller)
- #
- # Only example groups that have that type will get the modules included:
- #
- # describe Account, :type => :model do
- # # Will *not* include ControllerExampleHelpers
- # end
- #
- # describe AccountsController, :type => :controller do
- # # *Will* include ControllerExampleHelpers
- # end
- #
- def include(*modules_and_options)
- include_or_extend(:include, *modules_and_options)
- end
-
- # :call-seq:
- # extend(Some::Helpers)
- # extend(Some::Helpers, More::Helpers)
- # extend(My::Helpers, :type => :key)
- #
- # Works just like #include, but extends the example groups
- # with the modules rather than including them.
- def extend(*modules_and_options)
- include_or_extend(:extend, *modules_and_options)
- end
-
- # Appends a global <tt>before</tt> block to all example groups.
- # <tt>scope</tt> can be any of <tt>:each</tt> (default), <tt>:all</tt>, or
- # <tt>:suite</tt>. When <tt>:each</tt>, the block is executed before each
- # example. When <tt>:all</tt>, the block is executed once per example
- # group, before any of its examples are run. When <tt>:suite</tt> the
- # block is run once before the entire suite is run.
- def append_before(scope = :each, options={}, &proc)
- add_callback(:append_before, scope, options, &proc)
- end
- alias_method :before, :append_before
-
- # Prepends a global <tt>before</tt> block to all example groups.
- #
- # See <tt>append_before</tt> for scoping semantics.
- def prepend_before(scope = :each, options={}, &proc)
- add_callback(:prepend_before, scope, options, &proc)
- end
-
- # Prepends a global <tt>after</tt> block to all example groups.
- #
- # See <tt>append_before</tt> for scoping semantics.
- def prepend_after(scope = :each, options={}, &proc)
- add_callback(:prepend_after, scope, options, &proc)
- end
- alias_method :after, :prepend_after
-
- # Appends a global <tt>after</tt> block to all example groups.
- #
- # See <tt>append_before</tt> for scoping semantics.
- def append_after(scope = :each, options={}, &proc)
- add_callback(:append_after, scope, options, &proc)
- end
-
- # DEPRECATED - use Spec::Matchers::DSL instead
- #
- # Defines global predicate matchers. Example:
- #
- # config.predicate_matchers[:swim] = :can_swim?
- #
- # This makes it possible to say:
- #
- # person.should swim # passes if person.can_swim? returns true
- #
- def predicate_matchers
- @predicate_matchers ||= Spec::HashWithDeprecationNotice.new("predicate_matchers", "the new Matcher DSL")
- end
-
- # Adds patterns to the list of patterns ignored in the backtrace when a
- # failure is output by rspec. Example:
- #
- # config.ignore_backtrace_patterns /spork/, /shoulda/, "/some/weird/path/"
- #
- # When quiet backtraces are turned on (default), this will exclude any
- # lines that match any of the Regexps and Strings passed.
- #
- def ignore_backtrace_patterns(*patterns)
- @ignored_backtrace_patterns ||= []
- @ignored_backtrace_patterns += patterns
- end
-
- def ignored_backtrace_patterns # :nodoc:
- @ignored_backtrace_patterns ||= []
- end
-
- def suppress_deprecation_warnings!
- @suppress_deprecation_warnings = true
- end
-
- def suppress_deprecation_warnings?
- @suppress_deprecation_warnings ||= false
- end
-
- private
-
- def include_or_extend(action, *args)
- modules, options = args_and_options(*args)
- [get_type_from_options(options)].flatten.each do |required_example_group|
- required_example_group = required_example_group.to_sym if required_example_group
- modules.each do |mod|
- Spec::Example::ExampleGroupFactory[required_example_group].__send__(action, mod)
- end
- end
- end
-
- def add_callback(sym, *args, &proc)
- scope, options = scope_and_options(*args)
- example_group = Spec::Example::ExampleGroupFactory[get_type_from_options(options)]
- example_group.__send__(sym, scope, &proc)
- end
-
- def get_type_from_options(options)
- options[:type] || options[:behaviour_type]
- end
-
- def mock_framework_path(framework_name)
- "spec/adapters/mock_frameworks/#{framework_name}"
- end
-
- def scope_and_options(*args) # :nodoc:
- args, options = args_and_options(*args)
- return scope_from(*args), options
- end
-
- def scope_from(*args) # :nodoc:
- args[0] || :each
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/differs/default.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/differs/default.rb
deleted file mode 100644
index 3a05da9d1..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/differs/default.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-require 'spec/runner/differs/load-diff-lcs'
-require 'pp'
-
-module Spec
- module Expectations
- module Differs
- unless defined?(Spec::Expectations::Differs::Default)
- class Default
- def initialize(options)
- @options = options
- end
-
- # This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
- def diff_as_string(data_new, data_old)
- data_old = data_old.split(/\n/).map! { |e| e.chomp }
- data_new = data_new.split(/\n/).map! { |e| e.chomp }
- output = ""
- diffs = Diff::LCS.diff(data_old, data_new)
- return output if diffs.empty?
- oldhunk = hunk = nil
- file_length_difference = 0
- diffs.each do |piece|
- begin
- hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, context_lines,
- file_length_difference)
- file_length_difference = hunk.file_length_difference
- next unless oldhunk
- # Hunks may overlap, which is why we need to be careful when our
- # diff includes lines of context. Otherwise, we might print
- # redundant lines.
- if (context_lines > 0) and hunk.overlaps?(oldhunk)
- hunk.unshift(oldhunk)
- else
- output << oldhunk.diff(format)
- end
- ensure
- oldhunk = hunk
- output << "\n"
- end
- end
- #Handle the last remaining hunk
- output << oldhunk.diff(format) << "\n"
- end
-
- def diff_as_object(target,expected)
- diff_as_string(PP.pp(target,""), PP.pp(expected,""))
- end
-
- def diff_as_hash(target, expected)
- contains_hash = false
- contains_array = false
-
- extra_expected_keys = expected.keys - target.keys
- extra_target_keys = target.keys - expected.keys
-
- o = "\n"
-
- o << "Expected hash contains keys that target hash does not: " << extra_expected_keys.inspect << "\n" if !extra_expected_keys.empty?
- o << "Target hash contains keys that expected hash does not: " << extra_target_keys.inspect << "\n" if !extra_target_keys.empty?
-
- expected.delete_if do |key, value|
- contains_hash = true if value.is_a?(Hash)
- contains_array = true if value.is_a?(Array)
- target[key] == value
- end
-
- expected.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |key|
- o << "Expected the key #{key.inspect} to be #{expected[key].inspect}, but was #{target[key].inspect}\n"
- end
-
- o << "\n"
-
- if contains_hash || contains_array
- o << diff_as_object(target, expected)
- else
- o
- end
- end
-
- protected
- def format
- @options.diff_format
- end
-
- def context_lines
- @options.context_lines
- end
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/differs/load-diff-lcs.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/differs/load-diff-lcs.rb
deleted file mode 100644
index f708bc9b4..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/differs/load-diff-lcs.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-begin
- require 'diff/lcs'
-rescue LoadError
- begin
- require 'rubygems' unless ENV['NO_RUBYGEMS']
- require 'diff/lcs'
- rescue LoadError
- raise "You must gem install diff-lcs to use diffing"
- end
-end
-
-require 'diff/lcs/hunk'
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/drb_command_line.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/drb_command_line.rb
deleted file mode 100644
index cbc0f2d9a..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/drb_command_line.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require "drb/drb"
-
-module Spec
- module Runner
- # Facade to run specs by connecting to a DRB server
- class DrbCommandLine
-
- def self.port(options)
- (options.drb_port || ENV["RSPEC_DRB"] || 8989).to_i
- end
-
- # Runs specs on a DRB server. Note that this API is similar to that of
- # CommandLine - making it possible for clients to use both interchangeably.
- def self.run(options)
- begin
- begin; \
- DRb.start_service("druby://localhost:0"); \
- rescue SocketError, Errno::EADDRNOTAVAIL; \
- DRb.start_service("druby://:0"); \
- end
- spec_server = DRbObject.new_with_uri("druby://127.0.0.1:#{port(options)}")
- spec_server.run(options.argv, options.error_stream, options.output_stream)
- true
- rescue DRb::DRbConnError
- options.error_stream.puts "No server is running"
- false
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/example_group_runner.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/example_group_runner.rb
deleted file mode 100644
index 4de043f08..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/example_group_runner.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-module Spec
- module Runner
- class ExampleGroupRunner
- def initialize(options)
- @options = options
- end
-
- def load_files(files)
- $KCODE = 'u' if RUBY_VERSION.to_f < 1.9
- # It's important that loading files (or choosing not to) stays the
- # responsibility of the ExampleGroupRunner. Some implementations (like)
- # the one using DRb may choose *not* to load files, but instead tell
- # someone else to do it over the wire.
- files.each do |file|
- load file
- end
- end
-
- def run
- prepare
- success = true
- example_groups.each do |example_group|
- success = success & example_group.run(@options)
- end
- finish
- success
- end
-
- protected
-
- def prepare
- reporter.start(number_of_examples)
- example_groups.reverse! if reverse
- end
-
- def finish
- reporter.end
- reporter.dump
- end
-
- def reporter
- @options.reporter
- end
-
- def reverse
- @options.reverse
- end
-
- def example_groups
- @options.example_groups
- end
-
- def number_of_examples
- @options.number_of_examples
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/extensions/kernel.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/extensions/kernel.rb
deleted file mode 100644
index 4e23cdf22..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/extensions/kernel.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Kernel
- unless respond_to?(:debugger)
- # Start a debugging session if ruby-debug is loaded with the -u/--debugger option
- def debugger(steps=1)
- # If not then just comment and proceed
- $stderr.puts "debugger statement ignored, use -u or --debugger option on rspec to enable debugging"
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/base_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/base_formatter.rb
deleted file mode 100644
index 0fbc12ce4..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/base_formatter.rb
+++ /dev/null
@@ -1,139 +0,0 @@
-module Spec
- module Runner
- module Formatter
- # Formatter base-class, which implements all required methods as no-ops, with the exception
- class BaseFormatter
- # Formatters are initialized with <tt>options</tt> and <tt>output</tt>
- # arguments. RSpec's built-in formatters already expect this, and any
- # custom formatters should as well.
- #
- # ==== Parameters
- # options::
- # A struct containing boolean values for colour, autospec,
- # and dry_run
- # output::
- # Used by RSpec's built-in formatters to determine where to
- # write the output. Default is <tt>STDOUT</tt>, otherwise a
- # filename is expected.
- #
- # === Example
- # If you invoke the <tt>spec</tt> command with:
- #
- # --format progress:progress_report.txt
- #
- # ... the value of <tt>output</tt> will be progress_report.txt. If you
- # don't identify an output destination, the default is STDOUT.
- def initialize(options, output)
- end
-
- # This method is invoked before any examples are run, right after
- # they have all been collected. This can be useful for special
- # formatters that need to provide progress on feedback (graphical ones)
- #
- # This method will only be invoked once, and the next one to be invoked
- # is #example_group_started
- #
- # ==== Parameters
- # example_count:: the total number of examples to be run
- def start(example_count)
- end
-
- # This method is invoked at the beginning of the execution of each
- # example_group. The next method to be invoked after this is
- # #example_started
- #
- # ==== Parameters
- # example_group_proxy:: instance of Spec::Example::ExampleGroupProxy
- def example_group_started(example_group_proxy)
- end
-
- # Deprecated - use example_group_started instead
- def add_example_group(example_group_proxy)
- Spec.deprecate("BaseFormatter#add_example_group", "BaseFormatter#example_group_started")
- example_group_started(example_group_proxy)
- end
-
- # This method is invoked when an +example+ starts. The next method to be
- # invoked after this is #example_passed, #example_failed, or
- # #example_pending
- #
- # ==== Parameters
- # example_proxy:: instance of Spec::Example::ExampleProxy
- def example_started(example_proxy)
- end
-
- # This method is invoked when an +example+ passes.
- # +example_proxy+ is the same instance of Spec::Example::ExampleProxy
- # that was passed to example_started
- #
- # ==== Parameters
- # example_proxy:: instance of Spec::Example::ExampleProxy
- def example_passed(example_proxy)
- end
-
- # This method is invoked when an +example+ fails, i.e. an exception occurred
- # inside it (such as a failed should or other exception).
- #
- # ==== Parameters
- # example_proxy::
- # The same instance of Spec::Example::ExampleProxy that was passed
- # to <tt>example_started</tt>
- #
- # counter:: the sequential number of this failure
- #
- # failure:: instance of Spec::Runner::Reporter::Failure
- def example_failed(example_proxy, counter, failure)
- end
-
- # This method is invoked when an example is not yet implemented (i.e. has not
- # been provided a block), or when an ExamplePendingError is raised.
- # +message+ is the message from the ExamplePendingError, if it exists, or the
- # default value of "Not Yet Implemented". +deprecated_pending_location+ is
- # deprecated - use example_proxy.location instead
- #
- # ==== Parameters
- # example_proxy:: instance of Spec::Example::ExampleProxy
- # message::
- # the message passed to the pending message, or an internal
- # default
- #
- def example_pending(example_proxy, message, deprecated_pending_location=nil)
- end
-
- # This method is invoked after all of the examples have executed. The next method
- # to be invoked after this one is #dump_failure (once for each failed example)
- def start_dump
- end
-
- # Dumps detailed information about an example failure.
- # This method is invoked for each failed example after all examples have run. +counter+ is the sequence number
- # of the associated example. +failure+ is a Failure object, which contains detailed
- # information about the failure.
- #
- # ==== Parameters
- # counter:: the sequential number of this failure
- # failure:: instance of Spec::Runner::Reporter::Failure
- def dump_failure(counter, failure)
- end
-
- # This method is invoked after the dumping of examples and failures.
- #
- # ==== Parameters
- # duration:: the total time for the entire run
- # example_count:: the number of examples run
- # failure_count:: the number of examples that failed
- # pending_count:: the number of examples that are pending
- def dump_summary(duration, example_count, failure_count, pending_count)
- end
-
- # This gets invoked after the summary
- def dump_pending
- end
-
- # This method is invoked at the very end. Allows the formatter to clean up, like closing open streams.
- def close
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/base_text_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/base_text_formatter.rb
deleted file mode 100644
index ee8db75a4..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/base_text_formatter.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-require 'spec/runner/formatter/base_formatter'
-require 'fileutils'
-
-module Spec
- module Runner
- module Formatter
- # Baseclass for text-based formatters. Can in fact be used for
- # non-text based ones too - just ignore the +output+ constructor
- # argument.
- class BaseTextFormatter < BaseFormatter
- attr_reader :output, :example_group
- # Creates a new instance that will write to +output+. If +output+ is a
- # String, output will be written to the File with that name, otherwise
- # +output+ is exected to be an IO (or an object that responds to #puts
- # and #write).
- def initialize(options, output)
- @options = options
- if String === output
- FileUtils.mkdir_p(File.dirname(output))
- @output = File.open(output, 'w')
- else
- @output = output
- end
- @pending_examples = []
- end
-
- def example_group_started(example_group_proxy)
- @example_group = example_group_proxy
- end
-
- def example_pending(example, message, deprecated_pending_location=nil)
- @pending_examples << ["#{@example_group.description} #{example.description}", message, example.location]
- end
-
- def dump_failure(counter, failure)
- @output.puts
- @output.puts "#{counter.to_s})"
- @output.puts colorize_failure("#{failure.header}\n#{failure.exception.message}", failure)
- @output.puts format_backtrace(failure.exception.backtrace)
- @output.flush
- end
-
- def colorize_failure(message, failure)
- failure.pending_fixed? ? blue(message) : red(message)
- end
-
- def colourise(message, failure)
- Spec::deprecate("BaseTextFormatter#colourise", "colorize_failure")
- colorize_failure(message, failure)
- end
-
- def dump_summary(duration, example_count, failure_count, pending_count)
- return if dry_run?
- @output.puts
- @output.puts "Finished in #{duration} seconds"
- @output.puts
-
- summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
- summary << ", #{pending_count} pending" if pending_count > 0
-
- if failure_count == 0
- if pending_count > 0
- @output.puts yellow(summary)
- else
- @output.puts green(summary)
- end
- else
- @output.puts red(summary)
- end
- @output.flush
- end
-
- def dump_pending
- unless @pending_examples.empty?
- @output.puts
- @output.puts "Pending:"
- @pending_examples.each do |pending_example|
- @output.puts "\n#{pending_example[0]} (#{pending_example[1]})"
- @output.puts "#{pending_example[2]}\n"
- end
- end
- @output.flush
- end
-
- def close
- @output.close if (IO === @output) & (@output != $stdout)
- end
-
- def format_backtrace(backtrace)
- return "" if backtrace.nil?
- backtrace.map { |line| backtrace_line(line) }.join("\n")
- end
-
- protected
-
- def colour?
- !!@options.colour
- end
-
- def dry_run?
- !!@options.dry_run
- end
-
- def autospec?
- !!@options.autospec || ENV.has_key?("AUTOTEST")
- end
-
- def backtrace_line(line)
- line.sub(/\A([^:]+:\d+)$/, '\\1:')
- end
-
- def colour(text, colour_code)
- return text if output_to_file?
- return text unless ENV['RSPEC_COLOR'] || (colour? & (autospec? || output_to_tty?))
- "#{colour_code}#{text}\e[0m"
- end
-
- def output_to_file?
- File === @output
- end
-
- def output_to_tty?
- begin
- @output.tty?
- rescue NoMethodError
- false
- end
- end
-
- def green(text); colour(text, "\e[32m"); end
- def red(text); colour(text, "\e[31m"); end
- def yellow(text); colour(text, "\e[33m"); end
- def blue(text); colour(text, "\e[34m"); end
-
- def magenta(text)
- Spec::deprecate("BaseTextFormatter#magenta")
- red(text)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/failing_example_groups_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/failing_example_groups_formatter.rb
deleted file mode 100644
index 31729438b..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/failing_example_groups_formatter.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- class FailingExampleGroupsFormatter < BaseTextFormatter
- def example_failed(example, counter, failure)
- if @example_group
- @output.puts @example_group.description.gsub(/ \(druby.*\)/,"")
-
- @output.flush
- @example_group = nil
- end
- end
-
- def dump_failure(counter, failure)
- end
-
- def dump_summary(duration, example_count, failure_count, pending_count)
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/failing_examples_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/failing_examples_formatter.rb
deleted file mode 100644
index e3a271c8b..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/failing_examples_formatter.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- class FailingExamplesFormatter < BaseTextFormatter
- def example_failed(example, counter, failure)
- @output.puts "#{example_group.description} #{example.description}"
- @output.flush
- end
-
- def dump_failure(counter, failure)
- end
-
- def dump_summary(duration, example_count, failure_count, pending_count)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/html_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/html_formatter.rb
deleted file mode 100644
index 2d0c65d1b..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/html_formatter.rb
+++ /dev/null
@@ -1,338 +0,0 @@
-require 'erb'
-require 'spec/runner/formatter/base_text_formatter'
-require 'spec/runner/formatter/no_op_method_missing'
-
-module Spec
- module Runner
- module Formatter
- class HtmlFormatter < BaseTextFormatter
- include ERB::Util # for the #h method
- include NOOPMethodMissing
-
- def initialize(options, output)
- super
- @example_group_number = 0
- @example_number = 0
- @header_red = nil
- end
-
- # The number of the currently running example_group
- def example_group_number
- @example_group_number
- end
-
- # The number of the currently running example (a global counter)
- def example_number
- @example_number
- end
-
- def start(example_count)
- @example_count = example_count
-
- @output.puts html_header
- @output.puts report_header
- @output.flush
- end
-
- def example_group_started(example_group)
- super
- @example_group_red = false
- @example_group_number += 1
- unless example_group_number == 1
- @output.puts " </dl>"
- @output.puts "</div>"
- end
- @output.puts "<div class=\"example_group\">"
- @output.puts " <dl>"
- @output.puts " <dt id=\"example_group_#{example_group_number}\">#{h(example_group.description)}</dt>"
- @output.flush
- end
-
- def start_dump
- @output.puts " </dl>"
- @output.puts "</div>"
- @output.flush
- end
-
- def example_started(example)
- @example_number += 1
- end
-
- def example_passed(example)
- move_progress
- @output.puts " <dd class=\"spec passed\"><span class=\"passed_spec_name\">#{h(example.description)}</span></dd>"
- @output.flush
- end
-
- def example_failed(example, counter, failure)
- extra = extra_failure_content(failure)
- failure_style = failure.pending_fixed? ? 'pending_fixed' : 'failed'
- @output.puts " <script type=\"text/javascript\">makeRed('rspec-header');</script>" unless @header_red
- @header_red = true
- @output.puts " <script type=\"text/javascript\">makeRed('example_group_#{example_group_number}');</script>" unless @example_group_red
- @example_group_red = true
- move_progress
- @output.puts " <dd class=\"spec #{failure_style}\">"
- @output.puts " <span class=\"failed_spec_name\">#{h(example.description)}</span>"
- @output.puts " <div class=\"failure\" id=\"failure_#{counter}\">"
- @output.puts " <div class=\"message\"><pre>#{h(failure.exception.message)}</pre></div>" unless failure.exception.nil?
- @output.puts " <div class=\"backtrace\"><pre>#{format_backtrace(failure.exception.backtrace)}</pre></div>" unless failure.exception.nil?
- @output.puts extra unless extra == ""
- @output.puts " </div>"
- @output.puts " </dd>"
- @output.flush
- end
-
- def example_pending(example, message, deprecated_pending_location=nil)
- @output.puts " <script type=\"text/javascript\">makeYellow('rspec-header');</script>" unless @header_red
- @output.puts " <script type=\"text/javascript\">makeYellow('example_group_#{example_group_number}');</script>" unless @example_group_red
- move_progress
- @output.puts " <dd class=\"spec not_implemented\"><span class=\"not_implemented_spec_name\">#{h(example.description)} (PENDING: #{h(message)})</span></dd>"
- @output.flush
- end
-
- # Override this method if you wish to output extra HTML for a failed spec. For example, you
- # could output links to images or other files produced during the specs.
- #
- def extra_failure_content(failure)
- require 'spec/runner/formatter/snippet_extractor'
- @snippet_extractor ||= SnippetExtractor.new
- " <pre class=\"ruby\"><code>#{@snippet_extractor.snippet(failure.exception)}</code></pre>"
- end
-
- def move_progress
- @output.puts " <script type=\"text/javascript\">moveProgressBar('#{percent_done}');</script>"
- @output.flush
- end
-
- def percent_done
- result = 100.0
- if @example_count != 0
- result = ((example_number).to_f / @example_count.to_f * 1000).to_i / 10.0
- end
- result
- end
-
- def dump_failure(counter, failure)
- end
-
- def dump_summary(duration, example_count, failure_count, pending_count)
- if dry_run?
- totals = "This was a dry-run"
- else
- totals = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
- totals << ", #{pending_count} pending" if pending_count > 0
- end
- @output.puts "<script type=\"text/javascript\">document.getElementById('duration').innerHTML = \"Finished in <strong>#{duration} seconds</strong>\";</script>"
- @output.puts "<script type=\"text/javascript\">document.getElementById('totals').innerHTML = \"#{totals}\";</script>"
- @output.puts "</div>"
- @output.puts "</div>"
- @output.puts "</body>"
- @output.puts "</html>"
- @output.flush
- end
-
- def html_header
- <<-EOF
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-#{global_scripts}
- // ]]>
- </script>
- <style type="text/css">
-#{global_styles}
- </style>
-</head>
-<body>
-EOF
- end
-
- def report_header
- <<-EOF
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-EOF
- end
-
- def global_scripts
- <<-EOF
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-EOF
- end
-
- def global_styles
- <<-EOF
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-EOF
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/nested_text_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/nested_text_formatter.rb
deleted file mode 100644
index df5274591..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/nested_text_formatter.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- class NestedTextFormatter < BaseTextFormatter
-
- INDENT = ' '
-
- def initialize(options, where)
- super
- @last_nested_descriptions = []
- end
-
- def example_group_started(example_group)
- super
-
- example_group.nested_descriptions.each_with_index do |nested_description, i|
- unless example_group.nested_descriptions[0..i] == @last_nested_descriptions[0..i]
- output.puts "#{INDENT*i}#{nested_description}"
- end
- end
-
- @last_nested_descriptions = example_group.nested_descriptions
- end
-
- def example_failed(example, counter, failure)
- output.puts(red("#{current_indentation}#{example.description} (FAILED - #{counter})"))
- output.flush
- end
-
- def example_passed(example)
- message = "#{current_indentation}#{example.description}"
- output.puts green(message)
- output.flush
- end
-
- def example_pending(example, message, deprecated_pending_location=nil)
- super
- output.puts yellow("#{current_indentation}#{example.description} (PENDING: #{message})")
- output.flush
- end
-
- def current_indentation
- INDENT*@last_nested_descriptions.length
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/no_op_method_missing.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/no_op_method_missing.rb
deleted file mode 100644
index 350e29f73..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/no_op_method_missing.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module Spec
- module Runner
- module Formatter
- module NOOPMethodMissing
- def respond_to?(message, include_private = false)
- if include_private
- true
- else
- !private_methods.any? {|m| [message.to_s, message.to_sym].include?(m)}
- end
- end
-
- private
-
- def method_missing(sym, *args)
- # a no-op
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/profile_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/profile_formatter.rb
deleted file mode 100644
index 3784f3ac7..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/profile_formatter.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'spec/runner/formatter/progress_bar_formatter'
-
-module Spec
- module Runner
- module Formatter
- class ProfileFormatter < ProgressBarFormatter
-
- def initialize(options, where)
- super
- @example_times = []
- end
-
- def start(count)
- @output.puts "Profiling enabled."
- end
-
- def example_started(example)
- @time = Time.now
- end
-
- def example_passed(example)
- super
- @example_times << [
- example_group.description,
- example.description,
- Time.now - @time
- ]
- end
-
- def start_dump
- super
- @output.puts "\n\nTop 10 slowest examples:\n"
-
- @example_times = @example_times.sort_by do |description, example, time|
- time
- end.reverse
-
- @example_times[0..9].each do |description, example, time|
- @output.print red(sprintf("%.7f", time))
- @output.puts " #{description} #{example}"
- end
- @output.flush
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/progress_bar_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/progress_bar_formatter.rb
deleted file mode 100644
index 862f87a44..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/progress_bar_formatter.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-require 'spec/runner/formatter/no_op_method_missing'
-
-module Spec
- module Runner
- module Formatter
- class ProgressBarFormatter < BaseTextFormatter
- include NOOPMethodMissing
-
- def example_failed(example, counter, failure)
- @output.print colorize_failure('F', failure)
- @output.flush
- end
-
- def example_passed(example)
- @output.print green('.')
- @output.flush
- end
-
- def example_pending(example, message, deprecated_pending_location=nil)
- super
- @output.print yellow('*')
- @output.flush
- end
-
- def start_dump
- @output.puts
- @output.flush
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/silent_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/silent_formatter.rb
deleted file mode 100644
index 43cce33bb..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/silent_formatter.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'spec/runner/formatter/base_formatter'
-
-module Spec
- module Runner
- module Formatter
- class SilentFormatter < BaseFormatter
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/snippet_extractor.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/snippet_extractor.rb
deleted file mode 100644
index 4f34e5fee..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/snippet_extractor.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-module Spec
- module Runner
- module Formatter
- # This class extracts code snippets by looking at the backtrace of the passed error
- class SnippetExtractor #:nodoc:
- class NullConverter; def convert(code, pre); code; end; end #:nodoc:
- begin; require 'syntax/convertors/html'; @@converter = Syntax::Convertors::HTML.for_syntax "ruby"; rescue LoadError => e; @@converter = NullConverter.new; end
-
- def snippet(error)
- raw_code, line = snippet_for(error.backtrace[0])
- highlighted = @@converter.convert(raw_code, false)
- highlighted << "\n<span class=\"comment\"># gem install syntax to get syntax highlighting</span>" if @@converter.is_a?(NullConverter)
- post_process(highlighted, line)
- end
-
- def snippet_for(error_line)
- if error_line =~ /(.*):(\d+)/
- file = $1
- line = $2.to_i
- [lines_around(file, line), line]
- else
- ["# Couldn't get snippet for #{error_line}", 1]
- end
- end
-
- def lines_around(file, line)
- if File.file?(file)
- lines = File.open(file).read.split("\n")
- min = [0, line-3].max
- max = [line+1, lines.length-1].min
- selected_lines = []
- selected_lines.join("\n")
- lines[min..max].join("\n")
- else
- "# Couldn't get snippet for #{file}"
- end
- end
-
- def post_process(highlighted, offending_line)
- new_lines = []
- highlighted.split("\n").each_with_index do |line, i|
- new_line = "<span class=\"linenum\">#{offending_line+i-2}</span>#{line}"
- new_line = "<span class=\"offending\">#{new_line}</span>" if i == 2
- new_lines << new_line
- end
- new_lines.join("\n")
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/specdoc_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/specdoc_formatter.rb
deleted file mode 100644
index 7204f2147..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/specdoc_formatter.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- class SpecdocFormatter < BaseTextFormatter
- def example_group_started(example_group)
- super
- output.puts
- output.puts example_group.description
- output.flush
- end
-
- def example_failed(example, counter, failure)
- output.puts(red("- #{example.description} (FAILED - #{counter})"))
- output.flush
- end
-
- def example_passed(example)
- message = "- #{example.description}"
- output.puts green(message)
- output.flush
- end
-
- def example_pending(example, message, deprecated_pending_location=nil)
- super
- output.puts yellow("- #{example.description} (PENDING: #{message})")
- output.flush
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/text_mate_formatter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/text_mate_formatter.rb
deleted file mode 100644
index 4c0a9c7de..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/formatter/text_mate_formatter.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'spec/runner/formatter/html_formatter'
-
-module Spec
- module Runner
- module Formatter
- # Formats backtraces so they're clickable by TextMate
- class TextMateFormatter < HtmlFormatter
- def backtrace_line(line)
- line.gsub(/([^:]*\.rb):(\d*)/) do
- "<a href=\"txmt://open?url=file://#{File.expand_path($1)}&line=#{$2}\">#{$1}:#{$2}</a> "
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/heckle_runner.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/heckle_runner.rb
deleted file mode 100644
index 5c81ea846..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/heckle_runner.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-if Spec::Ruby.version.to_f < 1.9
- begin
- require 'rubygems' unless ENV['NO_RUBYGEMS']
- require 'heckle'
- rescue LoadError ; raise "You must gem install heckle to use --heckle" ; end
-
- module Spec
- module Runner
- # Creates a new Heckler configured to heckle all methods in the classes
- # whose name matches +filter+
- class HeckleRunner
- def initialize(filter, heckle_class=Heckler)
- @filter = filter
- @heckle_class = heckle_class
- end
-
- # Runs all the example groups held by +rspec_options+ once for each of the
- # methods in the matched classes.
- def heckle_with
- if @filter =~ /(.*)[#\.](.*)/
- heckle_method($1, $2)
- else
- heckle_class_or_module(@filter)
- end
- end
-
- def heckle_method(class_name, method_name)
- verify_constant(class_name)
- heckle = @heckle_class.new(class_name, method_name, Spec::Runner.options)
- heckle.validate
- end
-
- def heckle_class_or_module(class_or_module_name)
- verify_constant(class_or_module_name)
- pattern = /^#{class_or_module_name}/
- classes = []
- ObjectSpace.each_object(Class) do |klass|
- classes << klass if klass.name =~ pattern
- end
-
- classes.each do |klass|
- klass.instance_methods(false).each do |method_name|
- heckle = @heckle_class.new(klass.name, method_name, Spec::Runner.options)
- heckle.validate
- end
- end
- end
-
- def verify_constant(name)
- begin
- # This is defined in Heckle
- name.to_class
- rescue
- raise "Heckling failed - \"#{name}\" is not a known class or module"
- end
- end
- end
-
- class Heckler < Heckle
- def initialize(klass_name, method_name, rspec_options)
- super(klass_name, method_name)
- @rspec_options = rspec_options
- end
-
- def tests_pass?
- @rspec_options.run_examples
- end
-
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/heckle_runner_unsupported.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/heckle_runner_unsupported.rb
deleted file mode 100644
index 35ff86e10..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/heckle_runner_unsupported.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-module Spec
- module Runner
- # Dummy implementation for Windows that just fails (Heckle is not supported on Windows)
- class HeckleRunner
- def initialize(filter)
- raise "Heckle is not supported on Windows or Ruby 1.9"
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/line_number_query.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/line_number_query.rb
deleted file mode 100644
index 0a907d3fe..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/line_number_query.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-module Spec
- module Runner
- # Parses a spec file and finds the nearest example for a given line number.
- class LineNumberQuery
- attr_reader :best_match
-
- def initialize(run_options)
- @best_match = {}
- @run_options = run_options
- end
-
- def spec_name_for(file, line_number)
- best_match.clear
- file = File.expand_path(file)
- determine_best_match(file, line_number)
- if best_match[:example_group]
- if best_match[:example]
- "#{best_match[:example_group].description} #{best_match[:example].description}"
- else
- best_match[:example_group].description
- end
- else
- nil
- end
- end
-
- def example_line_for(file, line_number)
- determine_best_match(file, line_number)
- best_match[:line]
- end
-
- protected
-
- def determine_best_match(file, line_number)
- best_match.clear
- file = File.expand_path(file)
- @run_options.example_groups.each do |example_group|
- next unless example_group.location
- consider_example_group_for_best_match(example_group, file, line_number)
-
- example_group.examples.each do |example|
- consider_example_for_best_match(example, example_group, file, line_number)
- end
- end
- end
-
- def consider_example_group_for_best_match(example_group, file, line_number)
- example_group_file, example_group_line = parse_location(example_group.location)
- if is_best_match?(file, line_number, example_group_file, example_group_line)
- best_match.clear
- best_match[:example_group] = example_group
- best_match[:line] = example_group_line
- end
- end
-
- def consider_example_for_best_match(example, example_group, file, line_number)
- example_file, example_line = parse_location(example.location)
- if is_best_match?(file, line_number, example_file, example_line)
- best_match.clear
- best_match[:example_group] = example_group
- best_match[:example] = example
- best_match[:line] = example_line
- end
- end
-
- def is_best_match?(file, line_number, example_file, example_line)
- file == File.expand_path(example_file) &&
- example_line <= line_number &&
- example_line > best_match[:line].to_i
- end
-
- def parse_location(location)
- location =~ /(.*)\:(\d*)(\:|$)/
- return $1, Integer($2)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/option_parser.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/option_parser.rb
deleted file mode 100644
index 87c9522c2..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/option_parser.rb
+++ /dev/null
@@ -1,225 +0,0 @@
-require 'optparse'
-require 'stringio'
-
-module Spec
- module Runner
- class OptionParser < ::OptionParser
- class << self
- def parse(args, err, out)
- parser = new(err, out)
- parser.parse(args)
- parser.options
- end
-
- def spec_command?
- $0.split('/').last == 'spec'
- end
- end
-
- attr_reader :options
-
- OPTIONS = {
- :pattern => ["-p", "--pattern [PATTERN]","Limit files loaded to those matching this pattern. Defaults to '**/*_spec.rb'",
- "Separate multiple patterns with commas.",
- "Applies only to directories named on the command line (files",
- "named explicitly on the command line will be loaded regardless)."],
- :diff => ["-D", "--diff [FORMAT]","Show diff of objects that are expected to be equal when they are not",
- "Builtin formats: unified|u|context|c",
- "You can also specify a custom differ class",
- "(in which case you should also specify --require)"],
- :colour => ["-c", "--colour", "--color", "Show coloured (red/green) output"],
- :example => ["-e", "--example [NAME|FILE_NAME]", "Execute example(s) with matching name(s). If the argument is",
- "the path to an existing file (typically generated by a previous",
- "run using --format failing_examples:file.txt), then the examples",
- "on each line of that file will be executed. If the file is empty,",
- "all examples will be run (as if --example was not specified).",
- " ",
- "If the argument is not an existing file, then it is treated as",
- "an example name directly, causing RSpec to run just the example",
- "matching that name"],
- :specification => ["-s", "--specification [NAME]", "DEPRECATED - use -e instead", "(This will be removed when autotest works with -e)"],
- :line => ["-l", "--line LINE_NUMBER", Integer, "Execute example group or example at given line.",
- "(does not work for dynamically generated examples)"],
- :format => ["-f", "--format FORMAT[:WHERE]","Specifies what format to use for output. Specify WHERE to tell",
- "the formatter where to write the output. All built-in formats",
- "expect WHERE to be a file name, and will write to $stdout if it's",
- "not specified. The --format option may be specified several times",
- "if you want several outputs",
- " ",
- "Builtin formats:",
- "silent|l : No output", "progress|p : Text-based progress bar",
- "profile|o : Text-based progress bar with profiling of 10 slowest examples",
- "specdoc|s : Code example doc strings",
- "nested|n : Code example doc strings with nested groups indented",
- "html|h : A nice HTML report",
- "failing_examples|e : Write all failing examples - input for --example",
- "failing_example_groups|g : Write all failing example groups - input for --example",
- " ",
- "FORMAT can also be the name of a custom formatter class",
- "(in which case you should also specify --require to load it)"],
- :require => ["-r", "--require FILE", "Require FILE before running specs",
- "Useful for loading custom formatters or other extensions.",
- "If this option is used it must come before the others"],
- :backtrace => ["-b", "--backtrace", "Output full backtrace"],
- :loadby => ["-L", "--loadby STRATEGY", "Specify the strategy by which spec files should be loaded.",
- "STRATEGY can currently only be 'mtime' (File modification time)",
- "By default, spec files are loaded in alphabetical order if --loadby",
- "is not specified."],
- :reverse => ["-R", "--reverse", "Run examples in reverse order"],
- :timeout => ["-t", "--timeout FLOAT", "Interrupt and fail each example that doesn't complete in the",
- "specified time"],
- :heckle => ["-H", "--heckle CODE", "If all examples pass, this will mutate the classes and methods",
- "identified by CODE little by little and run all the examples again",
- "for each mutation. The intent is that for each mutation, at least",
- "one example *should* fail, and RSpec will tell you if this is not the",
- "case. CODE should be either Some::Module, Some::Class or",
- "Some::Fabulous#method}"],
- :dry_run => ["-d", "--dry-run", "Invokes formatters without executing the examples."],
- :options_file => ["-O", "--options PATH", "Read options from a file"],
- :generate_options => ["-G", "--generate-options PATH", "Generate an options file for --options"],
- :runner => ["-U", "--runner RUNNER", "Use a custom Runner."],
- :debug => ["-u", "--debugger", "Enable ruby-debugging."],
- :drb => ["-X", "--drb", "Run examples via DRb. (For example against script/spec_server)"],
- :drb_port => ["--port PORT", "Port for DRb server. (Ignored without --drb)"],
- :version => ["-v", "--version", "Show version"],
- :help => ["-h", "--help", "You're looking at it"]
- }
-
- def initialize(err, out)
- super()
- @error_stream = err
- @out_stream = out
- @options = Options.new(@error_stream, @out_stream)
-
- @file_factory = File
-
- self.banner = "Usage: spec (FILE(:LINE)?|DIRECTORY|GLOB)+ [options]"
- self.separator ""
- on(*OPTIONS[:pattern]) {|pattern| @options.filename_pattern = pattern}
- on(*OPTIONS[:diff]) {|diff| @options.parse_diff(diff)}
- on(*OPTIONS[:colour]) {@options.colour = true}
- on(*OPTIONS[:example]) {|example| @options.parse_example(example)}
- on(*OPTIONS[:specification]) {|example| @options.parse_example(example)}
- on(*OPTIONS[:line]) {|line_number| @options.line_number = line_number.to_i}
- on(*OPTIONS[:format]) {|format| @options.parse_format(format)}
- on(*OPTIONS[:require]) {|requires| invoke_requires(requires)}
- on(*OPTIONS[:backtrace]) {@options.backtrace_tweaker = NoisyBacktraceTweaker.new}
- on(*OPTIONS[:loadby]) {|loadby| @options.loadby = loadby}
- on(*OPTIONS[:reverse]) {@options.reverse = true}
- on(*OPTIONS[:timeout]) {|timeout| @options.timeout = timeout.to_f}
- on(*OPTIONS[:heckle]) {|heckle| @options.load_heckle_runner(heckle)}
- on(*OPTIONS[:dry_run]) {@options.dry_run = true}
- on(*OPTIONS[:options_file]) {|options_file|}
- on(*OPTIONS[:generate_options]) {|options_file|}
- on(*OPTIONS[:runner]) {|runner| @options.user_input_for_runner = runner}
- on(*OPTIONS[:debug]) {@options.debug = true}
- on(*OPTIONS[:drb]) {}
- on(*OPTIONS[:drb_port]) {|port| @options.drb_port = port}
- on(*OPTIONS[:version]) {parse_version}
- on("--autospec") {@options.autospec = true}
- on_tail(*OPTIONS[:help]) {parse_help}
- end
-
- def order!(argv, &blk)
- @argv = argv.dup
- @argv = (@argv.empty? & self.class.spec_command?) ? ['--help'] : @argv
-
- # Parse options file first
- parse_file_options(:options_file, :parse_options_file)
-
- @options.argv = @argv.dup
- return if parse_file_options(:generate_options, :write_options_file)
- return if parse_drb
-
- super(@argv) do |file|
- if file =~ /^(.+):(\d+)$/
- file = $1
- @options.line_number = $2.to_i
- end
-
- @options.files << file
- blk.call(file) if blk
- end
-
- @options
- end
-
- protected
-
- def invoke_requires(requires)
- requires.split(",").each do |file|
- require file
- end
- end
-
- def parse_file_options(option_name, action)
- # Remove the file option and the argument before handling the file
- options_file = nil
- options_list = OPTIONS[option_name][0..1]
- options_list[1].gsub!(" PATH", "")
- options_list.each do |option|
- if index = @argv.index(option)
- @argv.delete_at(index)
- options_file = @argv.delete_at(index)
- end
- end
-
- if options_file.nil? &&
- File.exist?('spec/spec.opts') &&
- !@argv.any?{|a| a =~ /^\-/ }
- options_file = 'spec/spec.opts'
- end
-
- if options_file
- send(action, options_file)
- return true
- else
- return false
- end
- end
-
- def parse_options_file(options_file)
- option_file_args = File.readlines(options_file).map {|l| l.chomp.split " "}.flatten
- @argv.push(*option_file_args)
- end
-
- def write_options_file(options_file)
- File.open(options_file, 'w') do |io|
- io.puts @argv.join("\n")
- end
- @out_stream.puts "\nOptions written to #{options_file}. You can now use these options with:"
- @out_stream.puts "spec --options #{options_file}"
- @options.examples_should_not_be_run
- end
-
- def parse_drb
- argv = @options.argv
- is_drb = false
- is_drb ||= argv.delete(OPTIONS[:drb][0])
- is_drb ||= argv.delete(OPTIONS[:drb][1])
- return false unless is_drb
- if DrbCommandLine.run(self.class.parse(argv, @error_stream, @out_stream))
- @options.examples_should_not_be_run
- true
- else
- @error_stream.puts "Running specs locally:"
- false
- end
- end
-
- def parse_version
- @out_stream.puts ::Spec::VERSION::SUMMARY
- exit if stdout?
- end
-
- def parse_help
- @out_stream.puts self
- exit if stdout?
- end
-
- def stdout?
- @out_stream == $stdout
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/options.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/options.rb
deleted file mode 100644
index 6e23da7da..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/options.rb
+++ /dev/null
@@ -1,406 +0,0 @@
-require 'ostruct'
-require 'rbconfig'
-
-module Spec
- module Runner
- class Options
- FILE_SORTERS = {
- 'mtime' => lambda {|file_a, file_b| File.mtime(file_b) <=> File.mtime(file_a)}
- }
-
- EXAMPLE_FORMATTERS = { # Load these lazily for better speed
- 'silent' => ['spec/runner/formatter/silent_formatter', 'Formatter::SilentFormatter'],
- 'l' => ['spec/runner/formatter/silent_formatter', 'Formatter::SilentFormatter'],
- 'specdoc' => ['spec/runner/formatter/specdoc_formatter', 'Formatter::SpecdocFormatter'],
- 's' => ['spec/runner/formatter/specdoc_formatter', 'Formatter::SpecdocFormatter'],
- 'nested' => ['spec/runner/formatter/nested_text_formatter', 'Formatter::NestedTextFormatter'],
- 'n' => ['spec/runner/formatter/nested_text_formatter', 'Formatter::NestedTextFormatter'],
- 'html' => ['spec/runner/formatter/html_formatter', 'Formatter::HtmlFormatter'],
- 'h' => ['spec/runner/formatter/html_formatter', 'Formatter::HtmlFormatter'],
- 'progress' => ['spec/runner/formatter/progress_bar_formatter', 'Formatter::ProgressBarFormatter'],
- 'p' => ['spec/runner/formatter/progress_bar_formatter', 'Formatter::ProgressBarFormatter'],
- 'failing_examples' => ['spec/runner/formatter/failing_examples_formatter', 'Formatter::FailingExamplesFormatter'],
- 'e' => ['spec/runner/formatter/failing_examples_formatter', 'Formatter::FailingExamplesFormatter'],
-'failing_example_groups' => ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
- 'g' => ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
- 'profile' => ['spec/runner/formatter/profile_formatter', 'Formatter::ProfileFormatter'],
- 'o' => ['spec/runner/formatter/profile_formatter', 'Formatter::ProfileFormatter'],
- 'textmate' => ['spec/runner/formatter/text_mate_formatter', 'Formatter::TextMateFormatter']
- }
-
- attr_accessor(
- :autospec, # hack to tell
- :filename_pattern,
- :backtrace_tweaker,
- :context_lines,
- :diff_format,
- :dry_run,
- :profile,
- :heckle_runner,
- :debug,
- :line_number,
- :loadby,
- :reporter,
- :reverse,
- :timeout,
- :verbose,
- :user_input_for_runner,
- :error_stream,
- :output_stream,
- # TODO: BT - Figure out a better name
- :argv
- )
- attr_reader :colour, :differ_class, :files, :examples, :example_groups
- attr_writer :drb_port
-
- def initialize(error_stream, output_stream)
- @error_stream = error_stream
- @output_stream = output_stream
- @filename_pattern = "**/*_spec.rb"
- @backtrace_tweaker = QuietBacktraceTweaker.new
- @examples = []
- @colour = false
- @profile = false
- @dry_run = false
- @debug = false
- @reporter = Reporter.new(self)
- @context_lines = 3
- @diff_format = :unified
- @files = []
- @example_groups = []
- @result = nil
- @examples_run = false
- @examples_should_be_run = nil
- @user_input_for_runner = nil
- @after_suite_parts = []
- @files_loaded = false
- @out_used = nil
- end
-
- def add_example_group(example_group)
- @example_groups << example_group
- end
-
- def line_number_requested?
- !!line_number
- end
-
- def example_line
- Spec::Runner::LineNumberQuery.new(self).example_line_for(files.first, line_number)
- end
-
- def remove_example_group(example_group)
- @example_groups.delete(example_group)
- end
-
- def require_ruby_debug
- require 'rubygems' unless ENV['NO_RUBYGEMS']
- require 'ruby-debug'
- end
-
- def project_root # :nodoc:
- require 'pathname'
- @project_root ||= determine_project_root
- end
-
- def determine_project_root # :nodoc:
- # This is borrowed (slightly modified) from Scott Taylors
- # project_path project:
- # http://github.com/smtlaissezfaire/project_path
- Pathname(File.expand_path('.')).ascend do |path|
- if File.exists?(File.join(path, "spec"))
- return path
- end
- end
- end
-
- def add_dir_from_project_root_to_load_path(dir, load_path=$LOAD_PATH) # :nodoc:
- return if project_root.nil?
- full_dir = File.join(project_root, dir)
- load_path.unshift full_dir unless load_path.include?(full_dir)
- end
-
- def run_examples
- require_ruby_debug if debug
- return true unless examples_should_be_run?
- success = true
- begin
- runner = custom_runner || ExampleGroupRunner.new(self)
-
- unless @files_loaded
- ['spec','lib'].each do |dir|
- add_dir_from_project_root_to_load_path(dir)
- end
- runner.load_files(files_to_load)
- @files_loaded = true
- end
-
- define_predicate_matchers
- plugin_mock_framework
- ignore_backtrace_patterns
-
- # TODO - this has to happen after the files get loaded,
- # otherwise the before_suite_parts are not populated
- # from the configuration. There is no spec for this
- # directly, but features/before_and_after_blocks/before_and_after_blocks.story
- # will fail if this happens before the files are loaded.
- before_suite_parts.each { |part| part.call }
-
- if example_groups.empty?
- true
- else
- set_spec_from_line_number if line_number
- success = runner.run
- @examples_run = true
- heckle if heckle_runner
- success
- end
- ensure
- after_suite_parts.each do |part|
- part.arity < 1 ? part.call : part.call(success)
- end
- end
- end
-
- def before_suite_parts
- Spec::Example::BeforeAndAfterHooks.before_suite_parts
- end
-
- def after_suite_parts
- Spec::Example::BeforeAndAfterHooks.after_suite_parts
- end
-
- def examples_run?
- @examples_run
- end
-
- def examples_should_not_be_run
- @examples_should_be_run = false
- end
-
- def mock_framework
- # TODO - don't like this dependency - perhaps store this in here instead?
- Spec::Runner.configuration.mock_framework
- end
-
- def colour=(colour)
- @colour = colour
- if @colour && Config::CONFIG['host_os'] =~ /mswin|mingw/ ;\
- begin ;\
- replace_output = @output_stream.equal?($stdout) ;\
- require 'rubygems' unless ENV['NO_RUBYGEMS'] ;\
- require 'Win32/Console/ANSI' ;\
- @output_stream = $stdout if replace_output ;\
- rescue LoadError ;\
- warn "You must 'gem install win32console' to use colour on Windows" ;\
- @colour = false ;\
- end
- end
- end
-
- def parse_diff(format)
- case format
- when :context, 'context', 'c'
- @diff_format = :context
- default_differ
- when :unified, 'unified', 'u', '', nil
- @diff_format = :unified
- default_differ
- else
- @diff_format = :custom
- self.differ_class = load_class(format, 'differ', '--diff')
- end
- end
-
- def parse_example(example)
- if(File.file?(example))
- @examples = [File.open(example).read.split("\n")].flatten
- else
- @examples = [example]
- end
- end
-
- def parse_format(format_arg)
- format, where = ClassAndArgumentsParser.parse(format_arg)
- unless where
- raise "When using several --format options only one of them can be without a file" if @out_used
- where = @output_stream
- @out_used = true
- end
- @format_options ||= []
- @format_options << [format, where]
- end
-
- def formatters
- @format_options ||= [['progress', @output_stream]]
- @formatters ||= load_formatters(@format_options, EXAMPLE_FORMATTERS)
- end
-
- def load_formatters(format_options, formatters)
- format_options.map do |format, where|
- formatter_type = if formatters[format]
- require formatters[format][0]
- eval(formatters[format][1], binding, __FILE__, __LINE__)
- else
- load_class(format, 'formatter', '--format')
- end
- formatter_type.new(formatter_options, where)
- end
- end
-
- def formatter_options
- @formatter_options ||= OpenStruct.new(
- :colour => colour,
- :autospec => autospec,
- :dry_run => dry_run
- )
- end
-
- def which_heckle_runner
- ([/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} || Spec::Ruby.version.to_f == 1.9) ? "spec/runner/heckle_runner_unsupported" : "spec/runner/heckle_runner"
- end
-
- def load_heckle_runner(heckle)
- @format_options ||= [['silent', @output_stream]]
- require which_heckle_runner
- @heckle_runner = ::Spec::Runner::HeckleRunner.new(heckle)
- end
-
- def number_of_examples
- return examples.size unless examples.empty?
- @example_groups.inject(0) {|sum, group| sum + group.number_of_examples}
- end
-
- def files_to_load
- result = []
- sorted_files.each do |file|
- if File.directory?(file)
- filename_pattern.split(",").each do |pattern|
- result += Dir[File.expand_path("#{file}/#{pattern.strip}")]
- end
- elsif File.file?(file)
- result << file
- else
- raise "File or directory not found: #{file}"
- end
- end
- result
- end
-
- def dry_run?
- @dry_run == true
- end
-
- def drb_port
- @drb_port.to_i if defined?(@drb_port)
- end
-
- protected
-
- def define_predicate_matchers
- Spec::Runner.configuration.predicate_matchers.each_pair do |matcher_method, method_on_object|
- Spec::Example::ExampleMethods::__send__ :define_method, matcher_method do |*args|
- eval("be_#{method_on_object.to_s.gsub('?','')}(*args)")
- end
- end
- end
-
- def plugin_mock_framework
- case mock_framework
- when Module
- Spec::Example::ExampleMethods.__send__ :include, mock_framework
- else
- require mock_framework
- Spec::Example::ExampleMethods.__send__ :include, Spec::Adapters::MockFramework
- end
- end
-
- def ignore_backtrace_patterns
- @backtrace_tweaker.ignore_patterns Spec::Runner.configuration.ignored_backtrace_patterns
- end
-
- def examples_should_be_run?
- return @examples_should_be_run unless @examples_should_be_run.nil?
- @examples_should_be_run = true
- end
-
- def differ_class=(klass)
- return unless klass
- @differ_class = klass
- Spec::Expectations.differ = self.differ_class.new(self)
- end
-
- def load_class(name, kind, option)
- if name =~ /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/
- arg = $2 == "" ? nil : $2
- [$1, arg]
- else
- m = "#{name.inspect} is not a valid class name"
- @error_stream.puts m
- raise m
- end
- begin
- eval(name, binding, __FILE__, __LINE__)
- rescue NameError => e
- @error_stream.puts "Couldn't find #{kind} class #{name}"
- @error_stream.puts "Make sure the --require option is specified *before* #{option}"
- if $_spec_spec ; raise e ; else exit(1) ; end
- end
- end
-
- def custom_runner
- return nil unless custom_runner?
- klass_name, arg = ClassAndArgumentsParser.parse(user_input_for_runner)
- runner_type = load_class(klass_name, 'example group runner', '--runner')
- return runner_type.new(self, arg)
- end
-
- def custom_runner?
- return user_input_for_runner ? true : false
- end
-
- def heckle
- heckle_runner = self.heckle_runner
- self.heckle_runner = nil
- heckle_runner.heckle_with
- end
-
- def sorted_files
- return sorter ? files.sort(&sorter) : files
- end
-
- def sorter
- FILE_SORTERS[loadby]
- end
-
- def default_differ
- require 'spec/runner/differs/default'
- self.differ_class = ::Spec::Expectations::Differs::Default
- end
-
- def set_spec_from_line_number
- if examples.empty?
- if files.length == 1
- if File.directory?(files[0])
- error_stream.puts "You must specify one file, not a directory when providing a line number"
- exit(1) if stderr?
- else
- example = LineNumberQuery.new(self).spec_name_for(files[0], line_number)
- @examples = [example]
- end
- else
- error_stream.puts "Only one file can be specified when providing a line number: #{files.inspect}"
- exit(3) if stderr?
- end
- else
- error_stream.puts "You cannot use --example and specify a line number"
- exit(4) if stderr?
- end
- end
-
- def stderr?
- @error_stream == $stderr
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/runner/reporter.rb b/vendor/gems/rspec-1.3.1/lib/spec/runner/reporter.rb
deleted file mode 100644
index 0fae7d137..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/runner/reporter.rb
+++ /dev/null
@@ -1,171 +0,0 @@
-module Spec
- module Runner
- class Reporter
- attr_reader :options
-
- def initialize(options)
- @options = options
- @options.reporter = self
- @failures = []
- @pending_count = 0
- @example_count = 0
- @start_time = nil
- @end_time = nil
- end
-
- def example_group_started(example_group)
- @example_group = example_group
- formatters.each do |f|
- f.example_group_started(example_group)
- end
- end
-
- def example_started(example)
- formatters.each{|f| f.example_started(example)}
- end
-
- def example_finished(example, error=nil)
- @example_count += 1
-
- if error.nil?
- example_passed(example)
- elsif Spec::Example::ExamplePendingError === error
- example_pending(example, example.location, error.message)
- else
- example_failed(example, error)
- end
- end
-
- def example_failed(example, error)
- backtrace_tweaker.tweak_backtrace(error)
- failure = Failure.new(@example_group.description, example.description, error)
- @failures << failure
- formatters.each do |f|
- f.example_failed(example, @failures.length, failure)
- end
- end
-
- def start(number_of_examples)
- @start_time = Time.new
- formatters.each{|f| f.start(number_of_examples)}
- end
-
- def end
- @end_time = Time.new
- end
-
- # Dumps the summary and returns the total number of failures
- def dump
- formatters.each{|f| f.start_dump}
- dump_pending
- dump_failures
- formatters.each do |f|
- f.dump_summary(duration, @example_count, @failures.length, @pending_count)
- f.close
- end
- @failures.length
- end
-
- class Failure
- def initialize(group_description, example_description, exception) # :nodoc:
- @example_name = "#{group_description} #{example_description}"
- @exception = exception
- end
-
- # The Exception object raised
- attr_reader :exception
-
- # Header messsage for reporting this failure, including the name of the
- # example and an indicator of the type of failure. FAILED indicates a
- # failed expectation. FIXED indicates a pending example that passes, and
- # no longer needs to be pending. RuntimeError indicates that a
- # RuntimeError occured.
- #
- # == Examples
- #
- # 'A new account should have a zero balance' FAILED
- # 'A new account should have a zero balance' FIXED
- # RuntimeError in 'A new account should have a zero balance'
- def header
- if expectation_not_met?
- "'#{@example_name}' FAILED"
- elsif pending_fixed?
- "'#{@example_name}' FIXED"
- else
- "#{@exception.class.name} in '#{@example_name}'"
- end
- end
-
- def pending_fixed? # :nodoc:
- @exception.is_a?(Spec::Example::PendingExampleFixedError)
- end
-
- def expectation_not_met? # :nodoc:
- @exception.is_a?(Spec::Expectations::ExpectationNotMetError)
- end
- end
-
- private
-
- def formatters
- @options.formatters
- end
-
- def backtrace_tweaker
- @options.backtrace_tweaker
- end
-
- def dump_failures
- return if @failures.empty?
- @failures.inject(1) do |index, failure|
- formatters.each{|f| f.dump_failure(index, failure)}
- index + 1
- end
- end
-
- def dump_pending
- formatters.each{|f| f.dump_pending}
- end
-
- def duration
- return @end_time - @start_time unless (@end_time.nil? or @start_time.nil?)
- return "0.0"
- end
-
- def example_passed(example)
- formatters.each{|f| f.example_passed(example)}
- end
-
- EXAMPLE_PENDING_DEPRECATION_WARNING = <<-WARNING
-
-*********************************************************************
-DEPRECATION WARNING: RSpec's formatters have changed example_pending
-to accept two arguments instead of three. Please see the rdoc
-for Spec::Runner::Formatter::BaseFormatter#example_pending
-for more information.
-
-Please update any custom formatters to accept only two arguments
-to example_pending. Support for example_pending with two arguments
-and this warning message will be removed after the RSpec 2.0 release.
-*********************************************************************
-WARNING
-
- def example_pending(example, ignore, message="Not Yet Implemented")
- @pending_count += 1
- formatters.each do |formatter|
- if formatter_uses_deprecated_example_pending_method?(formatter)
- Spec.warn EXAMPLE_PENDING_DEPRECATION_WARNING
- formatter.example_pending(example, message, example.location)
- else
- formatter.example_pending(example, message)
- end
- end
- end
-
- def formatter_uses_deprecated_example_pending_method?(formatter)
- formatter.method(:example_pending).arity == 3
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/stubs/cucumber.rb b/vendor/gems/rspec-1.3.1/lib/spec/stubs/cucumber.rb
deleted file mode 100644
index ed294ed66..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/stubs/cucumber.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# This plugs RSpec's mocking/stubbing framework into cucumber
-require 'spec/mocks'
-Before {$rspec_mocks ||= Spec::Mocks::Space.new}
-After {$rspec_mocks.reset_all}
-World(Spec::Mocks::ExampleMethods)
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/test/unit.rb b/vendor/gems/rspec-1.3.1/lib/spec/test/unit.rb
deleted file mode 100644
index fb4eb4932..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/test/unit.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'spec/interop/test'
-
-# Hack to stop active_support/dependencies from complaining about
-# 'spec/test/unit' not defining Spec::Test::Unit
-module Spec
- module Test
- module Unit
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/lib/spec/version.rb b/vendor/gems/rspec-1.3.1/lib/spec/version.rb
deleted file mode 100644
index 122c45101..000000000
--- a/vendor/gems/rspec-1.3.1/lib/spec/version.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-module Spec # :nodoc:
- module VERSION # :nodoc:
- unless defined? MAJOR
- MAJOR = 1
- MINOR = 3
- TINY = 1
- PRE = nil
-
- STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
-
- SUMMARY = "rspec #{STRING}"
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/resources/helpers/cmdline.rb b/vendor/gems/rspec-1.3.1/resources/helpers/cmdline.rb
deleted file mode 100644
index 0e337579b..000000000
--- a/vendor/gems/rspec-1.3.1/resources/helpers/cmdline.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'spec'
-
-# Uncommenting next line will break the output feature (no output!!)
-# rspec_options
-options = Spec::Runner::OptionParser.parse(
- ARGV, $stderr, $stdout
-)
-Spec::Runner::CommandLine.run(options)
diff --git a/vendor/gems/rspec-1.3.1/resources/rake/examples.rake b/vendor/gems/rspec-1.3.1/resources/rake/examples.rake
deleted file mode 100644
index 32d0ad0e6..000000000
--- a/vendor/gems/rspec-1.3.1/resources/rake/examples.rake
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'rake'
-require 'spec/rake/spectask'
-
-desc "Run all examples"
-Spec::Rake::SpecTask.new('examples') do |t|
- t.spec_files = FileList['examples/**/*.rb']
-end
diff --git a/vendor/gems/rspec-1.3.1/resources/rake/examples_with_rcov.rake b/vendor/gems/rspec-1.3.1/resources/rake/examples_with_rcov.rake
deleted file mode 100644
index 4bf35c6b8..000000000
--- a/vendor/gems/rspec-1.3.1/resources/rake/examples_with_rcov.rake
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'rake'
-require 'spec/rake/spectask'
-
-desc "Run all examples with RCov"
-Spec::Rake::SpecTask.new('examples_with_rcov') do |t|
- t.spec_files = FileList['examples/**/*.rb']
- t.rcov = true
- t.rcov_opts = ['--exclude', 'examples']
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/resources/rake/failing_examples_with_html.rake b/vendor/gems/rspec-1.3.1/resources/rake/failing_examples_with_html.rake
deleted file mode 100644
index 6e53551f3..000000000
--- a/vendor/gems/rspec-1.3.1/resources/rake/failing_examples_with_html.rake
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'rake'
-require 'spec/rake/spectask'
-
-desc "Generate HTML report for failing examples"
-Spec::Rake::SpecTask.new('failing_examples_with_html') do |t|
- t.spec_files = FileList['failing_examples/**/*.rb']
- t.spec_opts = ["--format", "html:doc/reports/tools/failing_examples.html", "--diff"]
- t.fail_on_error = false
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/resources/rake/verify_rcov.rake b/vendor/gems/rspec-1.3.1/resources/rake/verify_rcov.rake
deleted file mode 100644
index a2fab00bc..000000000
--- a/vendor/gems/rspec-1.3.1/resources/rake/verify_rcov.rake
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'rake'
-require 'spec/rake/verify_rcov'
-
-RCov::VerifyTask.new(:verify_rcov => 'spec:rcov') do |t|
- t.threshold = 100.0
- t.index_html = 'coverage/index.html'
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/README.jruby b/vendor/gems/rspec-1.3.1/spec/README.jruby
deleted file mode 100644
index 7eddb5671..000000000
--- a/vendor/gems/rspec-1.3.1/spec/README.jruby
+++ /dev/null
@@ -1,15 +0,0 @@
-= Running specs on JRuby =
-
-svn co http://svn.codehaus.org/jruby/trunk jruby
-cd jruby/jruby
-ant clean
-ant
-# put JRuby's bin dir on your PATH
-jruby -S gem install rake --no-ri --no-rdoc
-jruby -S gem install diff-lcs
-jruby -S gem install syntax
-cd ../testsuites/rspec
-mkdir target
-jruby -S rake checkout_code
-cd target/rspec
-jruby bin/spec spec -c
diff --git a/vendor/gems/rspec-1.3.1/spec/autotest/autotest_helper.rb b/vendor/gems/rspec-1.3.1/spec/autotest/autotest_helper.rb
deleted file mode 100644
index 3af9295de..000000000
--- a/vendor/gems/rspec-1.3.1/spec/autotest/autotest_helper.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'spec_helper'
-begin
- require 'autotest'
-rescue LoadError
- raise "You must install ZenTest to use autotest"
-end
-require 'autotest/rspec'
-require 'autotest/autotest_matchers'
diff --git a/vendor/gems/rspec-1.3.1/spec/autotest/autotest_matchers.rb b/vendor/gems/rspec-1.3.1/spec/autotest/autotest_matchers.rb
deleted file mode 100644
index 2bfca4ac3..000000000
--- a/vendor/gems/rspec-1.3.1/spec/autotest/autotest_matchers.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-module Spec
- module Matchers
- class AutotestMappingMatcher
- def initialize(specs)
- @specs = specs
- end
-
- def to(file)
- @file = file
- self
- end
-
- def matches?(autotest)
- @autotest = prepare(autotest)
- @actual = autotest.test_files_for(@file)
- @actual == @specs
- end
-
- def failure_message
- "expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}"
- end
-
- private
-
- def prepare(autotest)
- find_order = @specs.dup << @file
- autotest.instance_eval { @find_order = find_order }
- autotest
- end
-
- end
-
- def map_specs(specs)
- AutotestMappingMatcher.new(specs)
- end
-
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/autotest/discover_spec.rb b/vendor/gems/rspec-1.3.1/spec/autotest/discover_spec.rb
deleted file mode 100644
index 46b872c17..000000000
--- a/vendor/gems/rspec-1.3.1/spec/autotest/discover_spec.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'autotest/autotest_helper'
-
-describe Autotest::Rspec, "discovery" do
- it "adds the rspec autotest plugin" do
- Autotest.should_receive(:add_discovery)
- load File.expand_path("../../../lib/autotest/discover.rb", __FILE__)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/autotest/failed_results_re_spec.rb b/vendor/gems/rspec-1.3.1/spec/autotest/failed_results_re_spec.rb
deleted file mode 100644
index 87c65d407..000000000
--- a/vendor/gems/rspec-1.3.1/spec/autotest/failed_results_re_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'autotest/autotest_helper'
-
-describe "failed_results_re" do
- it "should match a failure" do
- re = Autotest::Rspec.new.failed_results_re
- re =~ "1)\n'this example' FAILED\nreason\n/path.rb:37:\n\n"
- $1.should == "this example"
- $2.should == "reason\n/path.rb:37:"
- end
-
- it "should match a failure when matcher outputs multiple lines" do
- re = Autotest::Rspec.new.failed_results_re
- re =~ "1)\n'other example' FAILED\n\nreason line 1\nreason line 2\n\n(additional info)\n/path.rb:37:\n\n"
- $1.should == "other example"
- $2.should == "reason line 1\nreason line 2\n\n(additional info)\n/path.rb:37:"
- end
-
- it "should match an Error" do
- re = Autotest::Rspec.new.failed_results_re
- re =~ "1)\nRuntimeError in 'this example'\nreason\n/path.rb:37:\n\n"
- $1.should == "this example"
- $2.should == "reason\n/path.rb:37:"
- end
-
- it "should match an Error that doesn't end in Error" do
- re = Autotest::Rspec.new.failed_results_re
- re =~ "1)\nInvalidArgument in 'this example'\nreason\n/path.rb:37:\n\n"
- $1.should == "this example"
- $2.should == "reason\n/path.rb:37:"
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/autotest/rspec_spec.rb b/vendor/gems/rspec-1.3.1/spec/autotest/rspec_spec.rb
deleted file mode 100644
index 27fa600cc..000000000
--- a/vendor/gems/rspec-1.3.1/spec/autotest/rspec_spec.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-require 'autotest/autotest_helper'
-
-describe Autotest::Rspec do
- describe "adding spec.opts --options" do
- before(:each) do
- @rspec_autotest = Autotest::Rspec.new
- end
-
- it "should return the command line option to add spec.opts if the options file exists" do
- File.stub!(:exist?).and_return true
- @rspec_autotest.add_options_if_present.should == "-O spec/spec.opts "
- end
-
- it "should return an empty string if no spec.opts exists" do
- File.stub!(:exist?).and_return false
- Autotest::Rspec.new.add_options_if_present.should == ""
- end
- end
-
- describe "commands" do
- before(:each) do
- @rspec_autotest = Autotest::Rspec.new
- @rspec_autotest.stub!(:ruby).and_return "ruby"
- @rspec_autotest.stub!(:add_options_if_present).and_return "-O spec/spec.opts"
-
- @ruby = @rspec_autotest.ruby
- @spec_cmd = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec'))
- @options = @rspec_autotest.add_options_if_present
- files = %w[file_one file_two]
- @files_to_test = {
- files[0] => [],
- files[1] => []
- }
- # this is not the inner representation of Autotest!
- @rspec_autotest.files_to_test = @files_to_test
- @to_test = files.map { |f| File.expand_path(f) }.join ' '
- end
-
- it "should make the appropriate test command" do
- cmd = @rspec_autotest.make_test_cmd(@files_to_test)
- (cmd =~ /#{@ruby} #{@spec_cmd} --autospec (.*) #{@options}/).should be_true
- $1.should =~ /#{File.expand_path('file_one')}/
- $1.should =~ /#{File.expand_path('file_two')}/
- end
-
- it "should return a blank command for no files" do
- @rspec_autotest.make_test_cmd({}).should == ''
- end
- end
-
- describe "mappings" do
-
- before(:each) do
- @lib_file = "lib/something.rb"
- @spec_file = "spec/something_spec.rb"
- @rspec_autotest = Autotest::Rspec.new
- @rspec_autotest.hook :initialize
- end
-
- it "should find the spec file for a given lib file" do
- @rspec_autotest.should map_specs([@spec_file]).to(@lib_file)
- end
-
- it "should find the spec file if given a spec file" do
- @rspec_autotest.should map_specs([@spec_file]).to(@spec_file)
- end
-
- it "should ignore files in spec dir that aren't specs" do
- @rspec_autotest.should map_specs([]).to("spec/spec_helper.rb")
- end
-
- it "should ignore untracked files (in @file)" do
- @rspec_autotest.should map_specs([]).to("lib/untracked_file")
- end
- end
-
- describe "consolidating failures" do
- before(:each) do
- @rspec_autotest = Autotest::Rspec.new
-
- @spec_file = "spec/autotest/some_spec.rb"
- @rspec_autotest.instance_variable_set("@files", {@spec_file => Time.now})
- @rspec_autotest.stub!(:find_files_to_test).and_return true
- end
-
- it "should return no failures if no failures were given in the output" do
- @rspec_autotest.consolidate_failures([[]]).should == {}
- end
-
- it "should return a hash with the spec filename => spec name for each failure or error" do
- @rspec_autotest.stub!(:test_files_for).and_return "spec/autotest/some_spec.rb"
- failures = [
- [
- "false should be false",
- "expected: true,\n got: false (using ==)\n#{@spec_file}:203:"
- ]
- ]
- @rspec_autotest.consolidate_failures(failures).should == {
- @spec_file => ["false should be false"]
- }
- end
-
- it "should not include the subject file" do
- subject_file = "lib/autotest/some.rb"
- @rspec_autotest.stub!(:test_files_for).and_return "spec/autotest/some_spec.rb"
- failures = [
- [
- "false should be false",
- "expected: true,\n got: false (using ==)\n#{subject_file}:143:\n#{@spec_file}:203:"
- ]
- ]
- @rspec_autotest.consolidate_failures(failures).keys.should_not include(subject_file)
- end
- end
-
- describe "normalizing file names" do
- it "should ensure that a single file appears in files_to_test only once" do
- @rspec_autotest = Autotest::Rspec.new
- @files_to_test = {}
- ['filename.rb', './filename.rb', File.expand_path('filename.rb')].each do |file|
- @files_to_test[file] = []
- end
- @rspec_autotest.normalize(@files_to_test).should have(1).file
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/ruby_forker.rb b/vendor/gems/rspec-1.3.1/spec/ruby_forker.rb
deleted file mode 100644
index 6ab038750..000000000
--- a/vendor/gems/rspec-1.3.1/spec/ruby_forker.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'rbconfig'
-
-module RubyForker
- # Forks a ruby interpreter with same type as ourself.
- # juby will fork jruby, ruby will fork ruby etc.
- def ruby(args, stderr=nil)
- config = ::Config::CONFIG
- interpreter = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
- cmd = "#{interpreter} #{args}"
- cmd << " 2> #{stderr}" unless stderr.nil?
- `#{cmd}`
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec.opts b/vendor/gems/rspec-1.3.1/spec/spec.opts
deleted file mode 100644
index 48e51f93b..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec.opts
+++ /dev/null
@@ -1,6 +0,0 @@
---colour
---format
-profile
---timeout
-20
---diff \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/dsl/main_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/dsl/main_spec.rb
deleted file mode 100644
index 1edd8695e..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/dsl/main_spec.rb
+++ /dev/null
@@ -1,103 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module DSL
- describe Main do
- before(:each) do
- @main = Class.new do; include Spec::DSL::Main; end
- end
-
- [:describe, :context].each do |method|
- describe "##{method}" do
- it "should delegate to Spec::Example::ExampleGroupFactory.create_example_group" do
- block = lambda {|a,b|}
- Spec::Example::ExampleGroupFactory.should_receive(:create_example_group).with(
- "The ExampleGroup", hash_including(:location), &block
- )
- @main.__send__ method, "The ExampleGroup", &block
- end
-
- it "raises with no description" do
- block = lambda {|a,b|}
- lambda do
- @main.__send__ method, &block
- end.should raise_error(ArgumentError, /No description supplied for example group declared on #{__FILE__}:#{__LINE__ - 1}/)
- end
- end
- end
-
- [:share_examples_for, :shared_examples_for].each do |method|
- describe "##{method}" do
- it "should create a shared ExampleGroup" do
- block = lambda {|a,b|}
- Spec::Example::ExampleGroupFactory.should_receive(:create_shared_example_group).with(
- "shared group", hash_including(:location), &block
- )
- @main.__send__ method, "shared group", &block
- end
- end
- end
-
- describe "#describe; with RUBY_VERSION = 1.9" do
- it "includes an enclosing module into the block's scope" do
- Spec::Ruby.stub!(:version).and_return("1.9")
-
- module Foo; module Bar; end; end
-
- Foo::Bar.should_receive(:included).with do |*args|
- included_by = args.last
- included_by.description.should == "this example group"
- end
-
- module Foo
- module Bar
- describe("this example group") do; end
- end
- end
- end
- end
-
- describe "#share_as" do
- def self.next_group_name
- @group_number ||= 0
- @group_number += 1
- "Group#{@group_number}"
- end
-
- def group_name
- @group_name ||= self.class.next_group_name
- end
-
- before(:each) do
- Spec.stub(:deprecate)
- end
-
- it "is deprecated" do
- Spec.should_receive(:deprecate)
- share_as group_name do; end
- end
-
- it "registers a shared ExampleGroup" do
- block = lambda {|a,b|}
- Spec::Example::ExampleGroupFactory.should_receive(:create_shared_example_group).with(
- group_name, hash_including(:location), &block
- )
- @main.share_as group_name, &block
- end
-
- it "creates a constant that points to a Module" do
- group = @main.share_as group_name do end
- Object.const_get(group_name).should equal(group)
- end
-
- it "complains if you pass it a not-constantizable name" do
- lambda do
- @group = @main.share_as "Non Constant" do end
- end.should raise_error(NameError, /The first argument to share_as must be a legal name for a constant/)
- end
-
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_class_definition_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_class_definition_spec.rb
deleted file mode 100644
index 96bd21110..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_class_definition_spec.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- class ExampleGroupSubclass < ExampleGroup
- class << self
- attr_accessor :examples_ran
- end
-
- @@class_variable = :class_variable
- CONSTANT = :constant
-
- before(:each) do
- @instance_variable = :instance_variable
- end
-
- after(:all) do
- self.class.examples_ran = true
- end
-
- def a_method
- 22
- end
-
- it "can access instance variables defined before(:each)" do
- @instance_variable.should == :instance_variable
- end
-
- it "can access class variables (Ruby 1.8 only)" do
- with_ruby 1.8 do
- @@class_variable.should == :class_variable
- end
- end
-
- it "can access constants" do
- CONSTANT.should == :constant
- end
-
- it "can access methods defined in the Example Group" do
- a_method.should == 22
- end
-
- end
-
- describe ExampleGroupSubclass do
- it "should run" do
- ExampleGroupSubclass.examples_ran.should be_true
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_factory_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_factory_spec.rb
deleted file mode 100644
index 0819d3a3e..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_factory_spec.rb
+++ /dev/null
@@ -1,180 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- describe ExampleGroupFactory do
- describe "#get" do
- attr_reader :example_group
- before(:each) do
- @example_group_class = Class.new(ExampleGroupDouble)
- ExampleGroupFactory.register(:registered_type, @example_group_class)
- end
-
- after(:each) do
- ExampleGroupFactory.reset
- end
-
- it "should return the default ExampleGroup type for nil" do
- ExampleGroupFactory[nil].should == ExampleGroup
- end
-
- it "should return the default ExampleGroup for an unregistered non-nil value" do
- ExampleGroupFactory[:does_not_exist].should == ExampleGroup
- end
-
- it "should return custom type if registered" do
- ExampleGroupFactory[:registered_type].should == @example_group_class
- end
-
- it "should get the custom type after setting the default" do
- @alternate_example_group_class = Class.new(ExampleGroupDouble)
- ExampleGroupFactory.default(@alternate_example_group_class)
- ExampleGroupFactory[:registered_type].should == @example_group_class
- end
- end
-
- describe "#create_example_group" do
- attr_reader :parent_example_group
- before do
- @parent_example_group = Class.new(ExampleGroupDouble) do
- def initialize(*args, &block)
- ;
- end
- end
- end
-
- it "should create a uniquely named class" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
- example_group.name.should =~ /Spec::Example::ExampleGroup::Subclass_\d+/
- end
-
- it "should create a Spec::Example::Example subclass by default" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
- example_group.superclass.should == Spec::Example::ExampleGroup
- end
-
- it "should raise when no description is given" do
- lambda {
- Spec::Example::ExampleGroupFactory.create_example_group do; end
- }.should raise_error(ArgumentError)
- end
-
- it "should raise when no block is given" do
- lambda { Spec::Example::ExampleGroupFactory.create_example_group "foo" }.should raise_error(ArgumentError)
- end
-
- it "should run registered ExampleGroups" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group "The ExampleGroup" do end
- Spec::Runner.options.example_groups.should include(example_group)
- end
-
- it "should not run unregistered ExampleGroups" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group "The ExampleGroup" do Spec::Runner.options.remove_example_group self; end
- Spec::Runner.options.example_groups.should_not include(example_group)
- end
-
- describe "with :type => :default" do
- it "should create a Spec::Example::ExampleGroup" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :type => :default
- ) {}
- example_group.superclass.should == Spec::Example::ExampleGroup
- end
- end
-
- describe "with :type => :something_other_than_default" do
- it "should create the specified type" do
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
- non_default_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :type => :something_other_than_default
- ) {}
- non_default_example_group.superclass.should == parent_example_group
- end
- end
-
- it "should create a type indicated by :location" do
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :location => "./spec/something_other_than_default/some_spec.rb"
- ) {}
- custom_example_group.superclass.should == parent_example_group
- end
-
- it "should create a type indicated by :location (with location generated by caller on windows)" do
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group",
- :location => "./spec\\something_other_than_default\\some_spec.rb"
- ) {}
- custom_example_group.superclass.should == parent_example_group
- end
-
- it "should create a type indicated by location for a path-like key" do
- Spec::Example::ExampleGroupFactory.register('path/to/custom/', parent_example_group)
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :location => "./spec/path/to/custom/some_spec.rb"
- ) {}
- custom_example_group.superclass.should == parent_example_group
- end
-
- it "should use the longest key that matches when creating a type indicated by location" do
- longer = Class.new parent_example_group
- Spec::Example::ExampleGroupFactory.register(:longer, longer)
- long = Class.new parent_example_group
- Spec::Example::ExampleGroupFactory.register(:long, long)
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "example_group", :location => "./spec/longer/some_spec.rb"
- ) {}
- custom_example_group.superclass.should == longer
- end
-
- describe "with :shared => true" do
- def shared_example_group
- @shared_example_group ||= Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '/blah/spec/models/blah.rb', :type => :controller, :shared => true
- ) {}
- end
-
- it "should create and register a Spec::Example::SharedExampleGroup" do
- shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
- SharedExampleGroup.should include(shared_example_group)
- end
- end
-
- it "should favor the :type over the :location" do
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '/blah/spec/models/blah.rb', :type => :something_other_than_default
- ) {}
- custom_example_group.superclass.should == parent_example_group
- end
-
- it "should register ExampleGroup by default" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
- end
- Spec::Runner.options.example_groups.should include(example_group)
- end
-
- it "should enable unregistering of ExampleGroups" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
- Spec::Runner.options.remove_example_group self
- end
- Spec::Runner.options.example_groups.should_not include(example_group)
- end
-
- after(:each) do
- Spec::Example::ExampleGroupFactory.reset
- end
- end
-
- describe "#create_shared_example_group" do
- it "registers a new shared example group" do
- shared_example_group = Spec::Example::ExampleGroupFactory.create_shared_example_group("something shared") {}
- shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
- SharedExampleGroup.should include(shared_example_group)
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_methods_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_methods_spec.rb
deleted file mode 100644
index 32eaee6a7..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_methods_spec.rb
+++ /dev/null
@@ -1,778 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- describe 'ExampleGroupMethods' do
- with_sandboxed_options do
- attr_reader :example_group, :result, :reporter
- before(:each) do
- # See http://rspec.lighthouseapp.com/projects/5645-rspec/tickets/525-arity-changed-on-partial-mocks#ticket-525-2
- method_with_three_args = lambda { |arg1, arg2, arg3| }
- options.formatters << mock("formatter", :null_object => true, :example_pending => method_with_three_args)
- options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
- @reporter = FakeReporter.new(@options)
- options.reporter = reporter
- @example_group = Class.new(ExampleGroupDouble) do
- describe("ExampleGroup")
- it "does nothing"
- end
- end
-
- after(:each) do
- ExampleGroupDouble.reset
- end
-
- ["describe","context"].each do |method|
- describe "##{method}" do
- describe "when creating an ExampleGroup" do
- before(:each) do
- @parent_example_group = Class.new(ExampleGroupDouble) do
- example "first example" do; end
- end
- @child_example_group = @parent_example_group.__send__ method, "Child" do
- example "second example" do; end
- end
- end
-
- it "should create a subclass of the ExampleGroup when passed a block" do
- @child_example_group.superclass.should == @parent_example_group
- options.example_groups.should include(@child_example_group)
- end
-
- it "should not inherit examples" do
- @child_example_group.should have(1).examples
- end
-
- it "records the spec path" do
- @child_example_group.location.should =~ /#{__FILE__}:#{__LINE__ - 15}/
- end
- end
-
- describe "when creating an example group with no description" do
- it "raises an ArgumentError" do
- lambda do
- Class.new(ExampleGroupDouble).describe
- end.should raise_error(Spec::Example::NoDescriptionError, /No description supplied for example group declared on #{__FILE__}:#{__LINE__ - 1}/)
- end
- end
-
- describe "when creating a SharedExampleGroup" do
- before(:each) do
- @shared_example_group = @example_group.__send__ method, "A Shared ExampleGroup", :shared => true do; end
- end
-
- after(:each) do
- SharedExampleGroup.instance_eval{@shared_example_groups}.delete @shared_example_group
- end
-
- it "should create a SharedExampleGroup" do
- @shared_example_group.should_not be_nil
- SharedExampleGroup.find("A Shared ExampleGroup").should == @shared_example_group
- end
- end
-
- end
- end
-
- [:example, :specify, :it].each do |method|
- describe "##{method.to_s}" do
- it "should add an example" do
- lambda {
- @example_group.__send__(method, "")
- }.should change { @example_group.examples.length }.by(1)
- end
-
- describe "with no location supplied" do
- describe "creates an ExampleProxy" do
- before(:all) do
- @example_group = Class.new(ExampleGroupDouble).describe("bar")
- @example_proxy = @example_group.__send__(method, "foo", {:this => :that}) {}
- @location = "#{__FILE__}:#{__LINE__ - 1}"
- end
-
- specify "with a description" do
- @example_proxy.description.should == "foo"
- end
-
- specify "with options" do
- @example_proxy.options.should == {:this => :that}
- end
-
- specify "with a default backtrace (DEPRECATED)" do
- Spec.stub!(:deprecate)
- @example_proxy.backtrace.should =~ /#{@location}/
- end
-
- specify "with a default location" do
- @example_proxy.location.should =~ /#{@location}/
- end
- end
- end
-
- describe "with a location supplied" do
- describe "creates an ExampleProxy" do
- before(:all) do
- @example_group = Class.new(ExampleGroupDouble).describe("bar")
- @example_proxy = @example_group.__send__(method, "foo", {:this => :that}, "the location") {}
- end
-
- specify "with the supplied location as #backtrace (DEPRECATED)" do
- Spec.stub!(:deprecate)
- @example_proxy.backtrace.should == "the location"
- end
-
- specify "with the supplied location as #location" do
- @example_proxy.location.should == "the location"
- end
- end
- end
-
-
- end
- end
-
- [:xexample, :xit, :xspecify].each do |method|
- describe "##{method.to_s}" do
- before(:each) do
- Kernel.stub!(:warn)
- end
-
- it "should NOT create an example" do
- lambda {
- @example_group.__send__(method,"")
- }.should_not change(@example_group.examples, :length)
- end
-
- it "should warn that the example is disabled" do
- Kernel.should_receive(:warn).with("Example disabled: foo")
- @example_group.__send__(method,"foo")
- end
- end
- end
-
- describe "#examples" do
- it "should have Examples" do
- example_group = Class.new(ExampleGroupDouble) do
- it "should exist" do; end
- end
- example_group.examples.length.should == 1
- example_group.examples.first.description.should == "should exist"
- end
-
- it "should not include methods that begin with test (only when TU interop is loaded)" do
- example_group = Class.new(ExampleGroupDouble) do
- def test_any_args(*args)
- true.should be_true
- end
- def test_something
- 1.should == 1
- end
- def test
- raise "This is not a real test"
- end
- def testify
- raise "This is not a real test"
- end
- def should_something
- # forces the run
- end
- end
-
- example_group.examples.length.should == 1
- example_group.run(options).should be_true
- end
-
- it "should include methods that begin with should and has an arity of 0 in suite" do
- example_group = Class.new(ExampleGroupDouble) do
- def shouldCamelCase
- true.should be_true
- end
- def should_any_args(*args)
- true.should be_true
- end
- def should_something
- 1.should == 1
- end
- def should_not_something
- 1.should_not == 2
- end
- def should
- raise "This is not a real example"
- end
- def should_not
- raise "This is not a real example"
- end
- end
- example_group.should have(4).examples
- descriptions = example_group.examples.collect {|e| e.description}
- descriptions.should include(
- "shouldCamelCase",
- "should_any_args",
- "should_something",
- "should_not_something")
- descriptions.should_not include(
- "should",
- "should_not"
- )
- end
-
- it "should not include methods that begin with test_ and has an arity > 0 in suite" do
- example_group = Class.new(ExampleGroupDouble) do
- def test_invalid(foo)
- 1.should == 1
- end
- def testInvalidCamelCase(foo)
- 1.should == 1
- end
- end
- example_group.should have(:no).examples
- end
-
- it "should not include methods that begin with should_ and has an arity > 0 in suite" do
- example_group = Class.new(ExampleGroupDouble) do
- def should_invalid(foo)
- 1.should == 2
- end
- def shouldInvalidCamelCase(foo)
- 1.should == 3
- end
- def should_not_invalid(foo)
- 1.should == 4
- end
- def should_valid
- 1.should == 1
- end
- end
- example_group.should have(1).examples
- example_group.run(options).should be_true
- end
-
- it "should run should_methods" do
- example_group = Class.new(ExampleGroupDouble) do
- def should_valid
- 1.should == 2
- end
- end
- example_group.should have(1).examples
- example_group.run(options).should be_false
- end
- end
-
- describe "#set_description" do
- attr_reader :example_group
- before do
- class << example_group
- public :set_description
- end
- end
-
- describe "given a String" do
- before(:each) do
- example_group.set_description("abc")
- end
-
- specify ".description should return the String passed into .set_description" do
- example_group.description.should == "abc"
- end
-
- specify ".described_type should provide nil as its type" do
- example_group.described_type.should be_nil
- end
- end
-
- describe "given a Class" do
- before(:each) do
- example_group.set_description(ExampleGroup)
- end
-
- specify ".description should return a String representation of that type (fully qualified) as its name" do
- example_group.description.should == "Spec::Example::ExampleGroup"
- end
-
- specify ".described_type should return the passed in type" do
- example_group.described_type.should == Spec::Example::ExampleGroup
- end
- end
-
- describe "given a String and a Class" do
- before(:each) do
- example_group.set_description("behaving", ExampleGroup)
- end
-
- specify ".description should return String then space then Type" do
- example_group.description.should == "behaving Spec::Example::ExampleGroup"
- end
-
- specify ".described_type should return the passed in type" do
- example_group.described_type.should == Spec::Example::ExampleGroup
- end
- end
-
- describe "given a Class and a String (starting with an alpha char)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "behaving")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup behaving"
- end
- end
-
- describe "given a Class and a String (starting with a '.')" do
- before(:each) do
- example_group.set_description(ExampleGroup, ".behaving")
- end
-
- specify ".description should return the Type then String" do
- example_group.description.should == "Spec::Example::ExampleGroup.behaving"
- end
- end
-
- describe "#set_description(Class, String starting with #)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "#behaving")
- end
-
- specify "should return the Class then String" do
- example_group.description.should == "Spec::Example::ExampleGroup#behaving"
- end
- end
-
- describe "#set_description(Class, String containing .)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "calling a.b")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup calling a.b"
- end
- end
-
- describe "#set_description(Class, String containing #)" do
- before(:each) do
- example_group.set_description(ExampleGroup, "is #1")
- end
-
- specify ".description should return the Type then space then String" do
- example_group.description.should == "Spec::Example::ExampleGroup is #1"
- end
- end
-
- describe "#set_description(String, Type, String)" do
- before(:each) do
- example_group.set_description("A", Hash, "with one entry")
- end
-
- specify ".description should return the first String then space then Type then second String" do
- example_group.description.should == "A Hash with one entry"
- end
- end
-
- describe "#set_description(Hash representing options)" do
- before(:each) do
- example_group.set_description(:a => "b", :location => "blah")
- end
-
- it ".location should expand the passed in :location option passed into the constructor" do
- example_group.location.should == File.expand_path("blah")
- end
-
- it ".options should return all the options passed in" do
- example_group.options.should == {:a => "b", :location => "blah"}
- end
-
- end
- end
-
- describe "#description" do
- it "should return the same description instance for each call" do
- example_group.description.should eql(example_group.description)
- end
-
- it "should not add a space when description begins with #" do
- child_example_group = Class.new(example_group) do
- describe("#foobar", "Does something")
- end
- child_example_group.description.should == "ExampleGroup#foobar Does something"
- end
-
- it "should not add a space when description begins with ." do
- child_example_group = Class.new(example_group) do
- describe(".foobar", "Does something")
- end
- child_example_group.description.should == "ExampleGroup.foobar Does something"
- end
-
- it "should return the class name if nil" do
- example_group.set_description(nil)
- example_group.description.should =~ /Class:/
- end
-
- it "should return the class name if nil" do
- example_group.set_description("")
- example_group.description.should =~ /Class:/
- end
-
- it "is cached" do
- example_group.set_description("describe me")
- example_group.description.should be(example_group.description)
- end
- end
-
- describe "#description_parts" do
- it "should return an Array of the current class description args" do
- example_group.description_parts.should == [example_group.description]
- end
-
- it "should return an Array of the description args from each class in the hierarchy" do
- parent_example_group = Class.new(ExampleGroupDouble) do
- describe("Parent")
- end
-
- child_example_group = Class.new(parent_example_group)
- child_example_group.describe("Child", ExampleGroup)
- child_example_group.description.should_not be_empty
-
- grand_child_example_group = Class.new(child_example_group)
- grand_child_example_group.describe("GrandChild", ExampleGroup)
- grand_child_example_group.description.should_not be_empty
-
- grand_child_example_group.description_parts.should == [
- "Parent",
- "Child",
- Spec::Example::ExampleGroup,
- "GrandChild",
- Spec::Example::ExampleGroup
- ]
- end
-
- it "caches the description parts" do
- example_group.description_parts.should equal(example_group.description_parts)
- end
- end
-
- describe "#described_type" do
- it "should return passed in type" do
- child_example_group = Class.new(example_group) do
- describe Object
- end
- child_example_group.described_type.should == Object
- end
-
- it "should return #described_type of superclass when no passed in type" do
- parent_example_group = Class.new(ExampleGroupDouble) do
- describe Object, "#foobar"
- end
- child_example_group = Class.new(parent_example_group) do
- describe "not a type"
- end
- child_example_group.described_type.should == Object
- end
-
- it "is cached per example group" do
- klass = Class.new
- group = Class.new(ExampleGroupDouble) do
- describe(klass)
- end
- group.should_receive(:description_parts).once.and_return([klass])
- group.described_type
- group.described_type
- end
- end
-
- describe "#include" do
- it "should have accessible class methods from included module" do
- mod_method_called = false
- mod = Module.new do
- class_methods = Module.new do
- define_method :mod_method do
- mod_method_called = true
- end
- end
-
- self.class.class_eval do
- define_method(:included) do |receiver|
- receiver.extend class_methods
- end
- end
- end
-
- @example_group.__send__ :include, mod
-
- @example_group.mod_method
- mod_method_called.should be_true
- end
- end
-
- describe "#number_of_examples" do
- it "should count number of examples" do
- proc do
- @example_group.it("one") {}
- @example_group.it("two") {}
- @example_group.it("three") {}
- @example_group.it("four") {}
- end.should change {@example_group.number_of_examples}.by(4)
- end
- end
-
- describe "#class_eval" do
- it "should allow constants to be defined" do
- example_group = Class.new(ExampleGroupDouble) do
- FOO = 1
- it "should reference FOO" do
- FOO.should == 1
- end
- end
- success = example_group.run(options)
- success.should be_true
- Object.const_defined?(:FOO).should == false
- end
- end
-
- describe '#register' do
- after(:each) do
- Spec::Runner.options.remove_example_group example_group
- end
- it "should add ExampleGroup to set of ExampleGroups to be run" do
- Spec::Runner.options.add_example_group example_group
- options.example_groups.should include(example_group)
- end
- end
-
- describe '#remove_example_group' do
- before(:each) do
- Spec::Runner.options.add_example_group example_group
- end
- it "should remove ExampleGroup from set of ExampleGroups to be run" do
- Spec::Runner.options.remove_example_group example_group
- options.example_groups.should_not include(example_group)
- end
- end
-
- describe "#run" do
- describe "given an example group with at least one example" do
- it "should call add_example_group" do
- example_group = Class.new(ExampleGroupDouble) do
- example("anything") {}
- end
- reporter.should_receive(:add_example_group)
- example_group.run(options)
- end
- end
-
- describe "given an example group with no examples" do
- it "should NOT call add_example_group" do
- example_group = Class.new(ExampleGroupDouble) do end
- reporter.should_not_receive(:add_example_group)
- example_group.run(options)
- end
- end
- end
-
- describe "#matcher_class=" do
- it "should call new and matches? on the class used for matching examples" do
- example_group = Class.new(ExampleGroupDouble) do
- it "should do something" do end
- def self.specified_examples
- ["something"]
- end
- def self.to_s
- "TestMatcher"
- end
- end
-
- matcher = mock("matcher")
- matcher.should_receive(:matches?).with(["something"]).any_number_of_times
-
- matcher_class = Class.new
- matcher_class.should_receive(:new).with("TestMatcher", "should do something").and_return(matcher)
-
- begin
- ExampleGroupMethods.matcher_class = matcher_class
-
- example_group.run(options)
- ensure
- ExampleGroupMethods.matcher_class = ExampleMatcher
- end
- end
- end
-
- describe "#options" do
- it "should expose the options hash" do
- group = describe("group", :this => 'hash') {}
- group.options[:this].should == 'hash'
- end
- end
-
- describe "#before" do
- it "stores before(:each) blocks" do
- example_group = Class.new(ExampleGroupDouble) {}
- block = lambda {}
- example_group.before(:each, &block)
- example_group.before_each_parts.should include(block)
- end
-
- it "stores before(:all) blocks" do
- example_group = Class.new(ExampleGroupDouble) {}
- block = lambda {}
- example_group.before(:all, &block)
- example_group.before_all_parts.should include(block)
- end
-
- it "stores before(:suite) blocks" do
- example_group = Class.new(ExampleGroupDouble) {}
- parts = []
- ExampleGroupMethods.stub!(:before_suite_parts).and_return(parts)
- block = lambda {}
- example_group.before(:suite, &block)
- example_group.before_suite_parts.should include(block)
- end
- end
-
-
- describe "#after" do
- it "stores after(:each) blocks" do
- example_group = Class.new(ExampleGroupDouble) {}
- block = lambda {}
- example_group.after(:each, &block)
- example_group.after_each_parts.should include(block)
- end
-
- it "stores after(:all) blocks" do
- example_group = Class.new(ExampleGroupDouble) {}
- block = lambda {}
- example_group.after(:all, &block)
- example_group.after_all_parts.should include(block)
- end
-
- it "stores after(:suite) blocks" do
- example_group = Class.new(ExampleGroupDouble) {}
- parts = []
- ExampleGroupMethods.stub!(:after_suite_parts).and_return(parts)
- block = lambda {}
- example_group.after(:suite, &block)
- example_group.after_suite_parts.should include(block)
- end
- end
-
- describe "#run_before_all" do
- it "does not create an instance if before_all_parts are empty" do
- example_group = Class.new(ExampleGroupDouble) { example("one example") {} }
- example_group.should_not_receive(:new)
- example_group.__send__ :run_before_all, nil
- end
- end
-
- describe "#run_after_all" do
- it "does not create an instance if after_all_parts are empty" do
- example_group = Class.new(ExampleGroupDouble) { example("one example") {} }
- example_group.should_not_receive(:new)
- example_group.__send__ :run_after_all, true, {}, nil
- end
- end
-
- describe "#examples_to_run" do
- it "runs only the example identified by a line number" do
- example_group = Class.new(ExampleGroupDouble).describe("this") do
- it { 3.should == 3 }
- it "has another example which raises" do
- raise "this shouldn't have run"
- end
- end
- options.examples << :ignore
- options.line_number = __LINE__ - 6
- options.files << __FILE__
- example_group.run(options).should be_true
- end
-
- it "runs the example identified by a line number even if it's not the example line number" do
- example_group = Class.new(ExampleGroupDouble).describe("this") do
-
- it { raise "foo" }
-
- end
- options.examples << :ignore
- options.line_number = __LINE__ - 3
- options.files << __FILE__
- example_group.run(options).should be_false
- end
-
- it "runs all the examples in the group " do
- first_example_ran = false
- second_example_ran = false
- example_group = Class.new(ExampleGroupDouble).describe("this") do
-
- it { first_example_ran = true }
- it { second_example_ran = true }
-
- end
- options.line_number = __LINE__ - 6
- options.files << __FILE__
- options.examples << :ignore
- example_group.run(options)
- first_example_ran.should be_true
- second_example_ran.should be_true
- end
-
- it "doesn't run any examples in another group" do
- example_ran = false
- example_group_1 = Class.new(ExampleGroupDouble).describe("this") do
- it "ignore" do
- example_ran = true
- end
- end
- example_group_2 = Class.new(ExampleGroupDouble).describe("that") do
- end
- options.examples << :ignore
- options.line_number = __LINE__ - 3
- options.files << __FILE__
- example_group_1.run(options)
- example_group_2.run(options)
- example_ran.should be_false
- end
- end
-
- describe "#let" do
- let(:counter) do
- Class.new do
- def initialize
- @count = 0
- end
- def count
- @count += 1
- end
- end.new
- end
-
- it "generates an instance method" do
- counter.count.should == 1
- end
-
- it "caches the value" do
- counter.count.should == 1
- counter.count.should == 2
- end
- end
-
- describe "#let!" do
- let!(:creator) do
- class Creator
- @count = 0
- def self.count
- @count += 1
- end
- end
- end
-
- it "evaluates the value non-lazily" do
- lambda { Creator.count }.should_not raise_error
- end
-
- it "does not interfere between tests" do
- Creator.count.should == 1
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_proxy_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_proxy_spec.rb
deleted file mode 100644
index 8d42f3a04..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_proxy_spec.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- describe ExampleGroupProxy do
- before(:each) do
- @group = stub("example group",:nested_descriptions => []).as_null_object
- end
-
- attr_reader :group
- def proxy
- @proxy ||= ExampleGroupProxy.new(@group)
- end
-
- describe "#description" do
- it "provides the example group's description" do
- group.stub!(:description => "the description")
- proxy.description.should == "the description"
- end
- end
-
- describe "#nested_descriptions" do
- it "provides the example group's nested_descriptions" do
- group.stub!(:nested_descriptions => ["the description"])
- proxy.nested_descriptions.should == ["the description"]
- end
- end
-
- describe "#filtered_description (DEPRECATED)" do
- before(:each) do
- Spec.stub!(:deprecate)
- end
-
- it "is deprecated" do
- Spec.should_receive(:deprecate)
- proxy.filtered_description(/(ignore)/)
- end
-
- it "builds the description from the group's nested_descriptions" do
- group.stub!(:nested_descriptions => ["ignore","the","description"])
- proxy.filtered_description(/(ignore)/).should == "the description"
- end
-
- it "filters out description parts that match the supplied regexp" do
- group.stub!(:nested_descriptions => ["ignore the","description"])
- proxy.filtered_description(/(ignore )/).should == "the description"
- end
- end
-
- describe "#examples" do
- it "provides a collection of example group proxies" do
- group.stub!(:example_proxies => ["array","of","proxies"])
- proxy.examples.should == ["array","of","proxies"]
- end
- end
-
- describe "#backtrace (deprecated - use #location)" do
- before(:each) do
- Spec.stub!(:deprecate)
- end
-
- it "provides the location of the declaration of this group" do
- group.stub!(:location => "path/to/location:37")
- proxy.backtrace.should == "path/to/location:37"
- end
-
- it "warns deprecation" do
- Spec.should_receive(:deprecate)
- group.stub!(:location => "path/to/location:37")
- proxy.backtrace
- end
- end
-
- describe "#location" do
- it "provides the location of the declaration of this group" do
- group.stub!(:location => "path/to/location:37")
- proxy.location.should == "path/to/location:37"
- end
- end
-
- describe "#options" do
- it "provides the options passed to the example group declaration" do
- group.stub!(:options => {:a => 'b'})
- proxy.options.should == {:a => 'b'}
- end
-
- it "excludes :location" do
- group.stub!(:options => {:location => 'b'})
- proxy.options.should == {}
- end
-
- it "excludes :scope" do
- group.stub!(:options => {:scope => 'b'})
- proxy.options.should == {}
- end
-
- it "preserves the original hash" do
- hash = {:a => 'b', :location => 'here', :scope => 'tiny'}
- group.stub!(:options => hash)
- proxy.options.should == {:a => 'b'}
- hash.should == {:a => 'b', :location => 'here', :scope => 'tiny'}
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_spec.rb
deleted file mode 100644
index da04a3803..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/example_group_spec.rb
+++ /dev/null
@@ -1,632 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- class ExampleModuleScopingSpec < ExampleGroup
- describe ExampleGroup, "via a class definition"
-
- module Foo
- module Bar
- def self.loaded?; true; end
- end
- end
- include Foo
-
- it "should understand module scoping" do
- Bar.should be_loaded
- end
-
- @@class_variable = "a class variable"
-
- it "can access class variables in examples in Ruby 1.8" do
- @@class_variable.should == "a class variable"
- end
-
- end
-
- class ExampleClassVariablePollutionSpec < ExampleGroup
- describe ExampleGroup, "via a class definition without a class variable"
-
- it "should not retain class variables from other Example classes" do
- proc do
- @@class_variable
- end.should raise_error
- end
- end
-
- describe ExampleGroup, "#pending" do
- it "should raise a Pending error when its block fails" do
- block_ran = false
- lambda {
- pending("something") do
- block_ran = true
- raise "something wrong with my example"
- end
- }.should raise_error(Spec::Example::ExamplePendingError, "something")
- block_ran.should == true
- end
-
- it "should raise Spec::Example::PendingExampleFixedError when its block does not fail" do
- block_ran = false
- lambda {
- pending("something") do
- block_ran = true
- end
- }.should raise_error(Spec::Example::PendingExampleFixedError, "Expected pending 'something' to fail. No Error was raised.")
- block_ran.should == true
- end
- end
-
- describe ExampleGroup, "#run with failure in example", :shared => true do
- it "should add an example failure to the TestResult" do
- example_group.run(options).should be_false
- end
- end
-
- describe ExampleGroup, "#run" do
- with_sandboxed_options do
- attr_reader :example_group, :formatter, :reporter
- before :each do
- method_with_three_args = lambda { |arg1, arg2, arg3| }
- @formatter = mock("formatter", :null_object => true, :example_pending => method_with_three_args)
- options.formatters << formatter
- options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
- @reporter = FakeReporter.new(options)
- options.reporter = reporter
- @example_group = Class.new(ExampleGroupDouble) do
- describe("example")
- it "does nothing" do
- end
- end
- class << example_group
- public :include
- end
- end
-
- after :each do
- ExampleGroup.reset
- end
-
- it "should not run when there are no examples" do
- example_group = Class.new(ExampleGroupDouble) do
- describe("Foobar")
- end
- example_group.examples.should be_empty
-
- reporter = mock("Reporter")
- reporter.should_not_receive(:add_example_group)
- example_group.run(options)
- end
-
- it "should report the start of an example run" do
- reporter.should_receive(:example_started) do |example|
- example.should equal(example_group.examples[0])
- end
- example_group.run(options)
- end
-
- it "should report the end of an example run" do
- reporter.should_receive(:example_finished) do |example, execution_error|
- example.should equal(example_group.examples[0])
- execution_error.should be_nil
- end
- example_group.run(options)
- end
-
- describe "when before_each fails" do
- before(:each) do
- $example_ran = $after_each_ran = false
- @example_group = describe("Foobar") do
- before(:each) {raise}
- it "should not be run" do
- $example_ran = true
- end
- after(:each) do
- $after_each_ran = true
- end
- end
- end
-
- it "should not run example block" do
- example_group.run(options)
- $example_ran.should be_false
- end
-
- it "should run after_each" do
- example_group.run(options)
- $after_each_ran.should be_true
- end
-
- it "should report failure location when in before_each" do
- reporter.should_receive(:example_finished) do |example_group, error|
- error.message.should eql("in before_each")
- end
- example_group.run(options)
- end
- end
-
- describe ExampleGroup, "#run on dry run" do
- before do
- @options.dry_run = true
- end
-
- it "should not run before(:all) or after(:all)" do
- before_all_ran = false
- after_all_ran = false
- ExampleGroup.before(:all) { before_all_ran = true }
- ExampleGroup.after(:all) { after_all_ran = true }
- example_group.it("should") {}
- example_group.run(options)
- before_all_ran.should be_false
- after_all_ran.should be_false
- end
-
- it "should not run example" do
- example_ran = false
- example_group.it("should") {example_ran = true}
- example_group.run(options)
- example_ran.should be_false
- end
- end
-
- describe ExampleGroup, "#run with specified examples" do
- attr_reader :examples_that_were_run
- before do
- @examples_that_were_run = []
- end
-
- describe "when specified_examples matches entire ExampleGroup" do
- before do
- examples_that_were_run = @examples_that_were_run
- @example_group = Class.new(ExampleGroupDouble) do
- describe("the ExampleGroup")
- it("should be run") do
- examples_that_were_run << 'should be run'
- end
-
- it("should also be run") do
- examples_that_were_run << 'should also be run'
- end
- end
- options.parse_example "the ExampleGroup"
- end
-
- it "should not run the Examples in the ExampleGroup" do
- example_group.run(options)
- examples_that_were_run.should == ['should be run', 'should also be run']
- end
- end
-
- describe ExampleGroup, "#run when specified_examples matches only Example description" do
- before do
- examples_that_were_run = @examples_that_were_run
- @example_group = Class.new(ExampleGroupDouble) do
- describe("example")
- it("should be run") do
- examples_that_were_run << 'should be run'
- end
- end
- options.parse_example "should be run"
- end
-
- it "should not run the example" do
- example_group.run(options)
- examples_that_were_run.should == ['should be run']
- end
- end
-
- describe ExampleGroup, "#run when specified_examples does not match an Example description" do
- before do
- examples_that_were_run = @examples_that_were_run
- @example_group = Class.new(ExampleGroupDouble) do
- describe("example")
- it("should be something else") do
- examples_that_were_run << 'should be something else'
- end
- end
- options.parse_example "does not match anything"
- end
-
- it "should not run the example" do
- example_group.run(options)
- examples_that_were_run.should == []
- end
- end
-
- describe ExampleGroup, "#run when specified_examples matches an Example description" do
- before do
- examples_that_were_run = @examples_that_were_run
- @example_group = Class.new(ExampleGroupDouble) do
- describe("example")
- it("should be run") do
- examples_that_were_run << 'should be run'
- end
- it("should not be run") do
- examples_that_were_run << 'should not be run'
- end
- end
- options.parse_example "should be run"
- end
-
- it "should run only the example" do
- example_group.run(options)
- examples_that_were_run.should == ["should be run"]
- end
- end
- end
-
- describe ExampleGroup, "#run with success" do
- before do
- @special_example_group = Class.new(ExampleGroupDouble)
- ExampleGroupFactory.register(:special, @special_example_group)
- @not_special_example_group = Class.new(ExampleGroupDouble)
- ExampleGroupFactory.register(:not_special, @not_special_example_group)
- end
-
- after do
- ExampleGroupFactory.reset
- end
-
- it "should send reporter example_group_started" do
- reporter.should_receive(:example_group_started)
- example_group.run(options)
- end
-
- it "should run example on run" do
- example_ran = false
- example_group.it("should") {example_ran = true}
- example_group.run(options)
- example_ran.should be_true
- end
-
- it "should run before(:all) block only once" do
- before_all_run_count_run_count = 0
- example_group.before(:all) {before_all_run_count_run_count += 1}
- example_group.it("test") {true}
- example_group.it("test2") {true}
- example_group.run(options)
- before_all_run_count_run_count.should == 1
- end
-
- it "should run after(:all) block only once" do
- after_all_run_count = 0
- example_group.after(:all) {after_all_run_count += 1}
- example_group.it("test") {true}
- example_group.it("test2") {true}
- example_group.run(options)
- after_all_run_count.should == 1
- @reporter.rspec_verify
- end
-
- it "after(:all) should have access to all instance variables defined in before(:all)" do
- context_instance_value_in = "Hello there"
- context_instance_value_out = ""
- example_group.before(:all) { @instance_var = context_instance_value_in }
- example_group.after(:all) { context_instance_value_out = @instance_var }
- example_group.it("test") {true}
- example_group.run(options)
- context_instance_value_in.should == context_instance_value_out
- end
-
- it "should copy instance variables from before(:all)'s execution context into spec's execution context" do
- context_instance_value_in = "Hello there"
- context_instance_value_out = ""
- example_group.before(:all) { @instance_var = context_instance_value_in }
- example_group.it("test") {context_instance_value_out = @instance_var}
- example_group.run(options)
- context_instance_value_in.should == context_instance_value_out
- end
-
- it "should not add global before callbacks for untargetted example_group" do
- fiddle = []
-
- ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
- ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
- @special_example_group.before(:each) { fiddle << "Example.before(:each, :type => :special)" }
- @special_example_group.prepend_before(:each) { fiddle << "Example.prepend_before(:each, :type => :special)" }
- @special_example_group.before(:all) { fiddle << "Example.before(:all, :type => :special)" }
- @special_example_group.prepend_before(:all) { fiddle << "Example.prepend_before(:all, :type => :special)" }
-
- example_group = Class.new(ExampleGroupDouble) do
- describe("I'm not special", :type => :not_special)
- it "does nothing"
- end
- example_group.run(options)
- fiddle.should == [
- 'Example.prepend_before(:all)',
- 'Example.before(:all)',
- ]
- end
-
- it "should add global before callbacks for targetted example_groups" do
- fiddle = []
-
- ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
- ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
- @special_example_group.before(:each) { fiddle << "special.before(:each, :type => :special)" }
- @special_example_group.prepend_before(:each) { fiddle << "special.prepend_before(:each, :type => :special)" }
- @special_example_group.before(:all) { fiddle << "special.before(:all, :type => :special)" }
- @special_example_group.prepend_before(:all) { fiddle << "special.prepend_before(:all, :type => :special)" }
- @special_example_group.append_before(:each) { fiddle << "special.append_before(:each, :type => :special)" }
-
- example_group = Class.new(@special_example_group).describe("I'm a special example_group") {}
- example_group.it("test") {true}
- example_group.run(options)
- fiddle.should == [
- 'Example.prepend_before(:all)',
- 'Example.before(:all)',
- 'special.prepend_before(:all, :type => :special)',
- 'special.before(:all, :type => :special)',
- 'special.prepend_before(:each, :type => :special)',
- 'special.before(:each, :type => :special)',
- 'special.append_before(:each, :type => :special)',
- ]
- end
-
- it "should order before callbacks from global to local" do
- fiddle = []
- ExampleGroup.prepend_before(:all) { fiddle << "Example.prepend_before(:all)" }
- ExampleGroup.before(:all) { fiddle << "Example.before(:all)" }
- example_group.prepend_before(:all) { fiddle << "prepend_before(:all)" }
- example_group.before(:all) { fiddle << "before(:all)" }
- example_group.prepend_before(:each) { fiddle << "prepend_before(:each)" }
- example_group.before(:each) { fiddle << "before(:each)" }
- example_group.run(options)
- fiddle.should == [
- 'Example.prepend_before(:all)',
- 'Example.before(:all)',
- 'prepend_before(:all)',
- 'before(:all)',
- 'prepend_before(:each)',
- 'before(:each)'
- ]
- end
-
- it "should order after callbacks from local to global" do
- fiddle = []
- example_group.after(:each) { fiddle << "after(:each)" }
- example_group.append_after(:each) { fiddle << "append_after(:each)" }
- example_group.after(:all) { fiddle << "after(:all)" }
- example_group.append_after(:all) { fiddle << "append_after(:all)" }
- ExampleGroup.after(:all) { fiddle << "Example.after(:all)" }
- ExampleGroup.append_after(:all) { fiddle << "Example.append_after(:all)" }
- example_group.run(options)
- fiddle.should == [
- 'after(:each)',
- 'append_after(:each)',
- 'after(:all)',
- 'append_after(:all)',
- 'Example.after(:all)',
- 'Example.append_after(:all)'
- ]
- end
-
- it "should have accessible instance methods from included module" do
- mod1_method_called = false
- mod1 = Module.new do
- define_method :mod1_method do
- mod1_method_called = true
- end
- end
-
- mod2_method_called = false
- mod2 = Module.new do
- define_method :mod2_method do
- mod2_method_called = true
- end
- end
-
- example_group.include mod1, mod2
-
- example_group.it("test") do
- mod1_method
- mod2_method
- end
- example_group.run(options)
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
-
- it "should include targetted modules included using configuration" do
- mod1 = Module.new
- mod2 = Module.new
- mod3 = Module.new
- Spec::Runner.configuration.include(mod1, mod2)
- Spec::Runner.configuration.include(mod3, :type => :not_special)
-
- example_group = Class.new(@special_example_group).describe("I'm special", :type => :special) do
- it "does nothing"
- end
- example_group.run(options)
-
- example_group.included_modules.should include(mod1)
- example_group.included_modules.should include(mod2)
- example_group.included_modules.should_not include(mod3)
- end
-
- end
-
- describe ExampleGroup, "#run with pending example that has a failing assertion" do
- before do
- example_group.it("should be pending") do
- pending("Example fails") {false.should be_true}
- end
- end
-
- it "should send example_pending to formatter" do
- @formatter.should_receive(:example_pending).with("example", "should be pending", "Example fails")
- example_group.run(options)
- end
- end
-
- describe ExampleGroup, "#run with pending example that does not have a failing assertion" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- example_group.it("should be pending") do
- pending("Example passes") {true.should be_true}
- end
- end
-
- it "should send example_pending to formatter" do
- @formatter.should_receive(:example_pending).with("example", "should be pending", "Example passes")
- example_group.run(options)
- end
- end
-
- describe ExampleGroup, "#run when before(:all) fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- ExampleGroup.before(:all) { raise NonStandardError, "before(:all) failure" }
- end
-
- it "should not run any example" do
- spec_ran = false
- example_group.it("test") {spec_ran = true}
- example_group.run(options)
- spec_ran.should be_false
- end
-
- it "should run ExampleGroup after(:all)" do
- after_all_ran = false
- ExampleGroup.after(:all) { after_all_ran = true }
- example_group.run(options)
- after_all_ran.should be_true
- end
-
- it "should run example_group after(:all)" do
- after_all_ran = false
- example_group.after(:all) { after_all_ran = true }
- example_group.run(options)
- after_all_ran.should be_true
- end
-
- it "should supply before(:all) as description" do
- @reporter.should_receive(:example_failed) do |example, error|
- example.description.should eql("before(:all)")
- error.message.should eql("before(:all) failure")
- end
-
- example_group.it("test") {true}
- example_group.run(options)
- end
- end
-
- describe ExampleGroup, "#run when before(:each) fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- ExampleGroup.before(:each) { raise NonStandardError }
- end
-
- it "should run after(:all)" do
- after_all_ran = false
- ExampleGroup.after(:all) { after_all_ran = true }
- example_group.run(options)
- after_all_ran.should be_true
- end
- end
-
- describe ExampleGroup, "#run when any example fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- example_group.it("should") { raise NonStandardError }
- end
-
- it "should run after(:all)" do
- after_all_ran = false
- ExampleGroup.after(:all) { after_all_ran = true }
- example_group.run(options)
- after_all_ran.should be_true
- end
- end
-
- describe ExampleGroup, "#run when first after(:each) block fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- class << example_group
- attr_accessor :first_after_ran, :second_after_ran
- end
- example_group.first_after_ran = false
- example_group.second_after_ran = false
-
- example_group.after(:each) do
- self.class.second_after_ran = true
- end
- example_group.after(:each) do
- self.class.first_after_ran = true
- raise "first"
- end
- end
-
- it "should run second after(:each) block" do
- reporter.should_receive(:example_finished) do |example, error|
- example.should equal(example)
- error.message.should eql("first")
- end
- example_group.run(options)
- example_group.first_after_ran.should be_true
- example_group.second_after_ran.should be_true
- end
- end
-
- describe ExampleGroup, "#run when first before(:each) block fails" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- class << example_group
- attr_accessor :first_before_ran, :second_before_ran
- end
- example_group.first_before_ran = false
- example_group.second_before_ran = false
-
- example_group.before(:each) do
- self.class.first_before_ran = true
- raise "first"
- end
- example_group.before(:each) do
- self.class.second_before_ran = true
- end
- end
-
- it "should not run second before(:each)" do
- reporter.should_receive(:example_finished) do |name, error|
- error.message.should eql("first")
- end
- example_group.run(options)
- example_group.first_before_ran.should be_true
- example_group.second_before_ran.should be_false
- end
- end
-
- describe ExampleGroup, "#run when failure in after(:all)" do
- it_should_behave_like "Spec::Example::ExampleGroup#run with failure in example"
-
- before do
- ExampleGroup.after(:all) { raise NonStandardError, "in after(:all)" }
- end
-
- it "should return false" do
- example_group.run(options).should be_false
- end
- end
- end
- end
-
- describe ExampleGroup, "subclasses" do
- it "should have access to the described_type" do
- example_group = Class.new(ExampleGroupDouble).describe(Array)
- example_group.__send__(:described_type).should == Array
- end
-
- it "should concat descriptions when nested" do
- example_group = Class.new(ExampleGroupDouble).describe(Array)
- nested_group = example_group.describe("when empty") do; end
- nested_group.description.to_s.should == "Array when empty"
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/example_matcher_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/example_matcher_spec.rb
deleted file mode 100644
index d82224f7a..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/example_matcher_spec.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- describe ExampleMatcher, "#matches?" do
-
- Spec::Matchers.define :match_examples do |examples|
- match do |actual|
- actual.matches?(examples)
- end
- end
-
- it "should match correct example_group and example" do
- matcher = ExampleMatcher.new("example_group", "example")
- matcher.should match_examples(["example_group example"])
- end
-
- it "should not match wrong example" do
- matcher = ExampleMatcher.new("example_group", "other example")
- matcher.should_not match_examples(["example_group example"])
- end
-
- it "should not match wrong example_group" do
- matcher = ExampleMatcher.new("other example_group", "example")
- matcher.should_not match_examples(["example_group example"])
- end
-
- it "should match example only" do
- matcher = ExampleMatcher.new("example_group", "example")
- matcher.should match_examples(["example"])
- end
-
- it "should match example_group only" do
- matcher = ExampleMatcher.new("example_group", "example")
- matcher.should match_examples(["example_group"])
- end
-
- it "should match example_group ending with before(:all)" do
- matcher = ExampleMatcher.new("example_group", "example")
- matcher.should match_examples(["example_group before(:all)"])
- end
-
- it "should escape regexp chars" do
- matcher = ExampleMatcher.new("(con|text)", "[example]")
- matcher.should_not match_examples(["con p"])
- end
-
- it "should match when example_group is modularized" do
- matcher = ExampleMatcher.new("MyModule::MyClass", "example")
- matcher.should match_examples(["MyClass example"])
- end
- end
-
- describe ExampleMatcher, "#matches? normal case" do
- it "matches when passed in example matches" do
- matcher = ExampleMatcher.new("Foo", "bar")
- matcher.matches?(["no match", "Foo bar"]).should == true
- end
-
- it "does not match when no passed in examples match" do
- matcher = ExampleMatcher.new("Foo", "bar")
- matcher.matches?(["no match1", "no match2"]).should == false
- end
- end
-
- describe ExampleMatcher, "#matches? where description has '::' in it" do
- it "matches when passed in example matches" do
- matcher = ExampleMatcher.new("Foo::Bar", "baz")
- matcher.matches?(["no match", "Foo::Bar baz"]).should == true
- end
-
- it "does not match when no passed in examples match" do
- matcher = ExampleMatcher.new("Foo::Bar", "baz")
- matcher.matches?(["no match1", "no match2"]).should == false
- end
- end
-
- describe ExampleMatcher, "called with nil example" do
- it "does not puke" do
- matcher = ExampleMatcher.new("Foo::Bar", nil)
- matcher.matches?(["anything"]).should == false
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/example_methods_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/example_methods_spec.rb
deleted file mode 100644
index 9a6810952..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/example_methods_spec.rb
+++ /dev/null
@@ -1,162 +0,0 @@
-require 'spec_helper'
-
-class Thing
- attr_reader :arg
- def initialize(arg=nil)
- @arg = arg || :default
- end
- def ==(other)
- @arg == other.arg
- end
- def eql?(other)
- @arg == other.arg
- end
-end
-
-module Spec
- module Example
- describe ExampleMethods do
- module ModuleThatIsReopened; end
-
- module Spec::Example::ExampleMethods
- include ModuleThatIsReopened
- end
-
- module ModuleThatIsReopened
- def module_that_is_reopened_method; end
- end
-
- describe "with an included module that is reopened" do
- it "should have reopened methods" do
- method(:module_that_is_reopened_method).should_not be_nil
- end
- end
-
- describe "#should" do
- before(:each) do
- @example_group = Class.new(ExampleGroupDouble)
- @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
- end
-
- context "in an ExampleGroup with an implicit subject" do
- it "delegates matcher to the implied subject" do
- @example_group.describe(::Thing)
- @example_group.example { should == ::Thing.new(:default) }
- @example_group.example { should eql(::Thing.new(:default)) }
- @example_group.run(@options).should be_true
- end
- end
-
- context "in an ExampleGroup using an explicit subject" do
- it "delegates matcher to the declared subject" do
- @example_group.describe(::Thing)
- @example_group.subject { ::Thing.new(:other) }
- @example_group.example { should == ::Thing.new(:other) }
- @example_group.example { should eql(::Thing.new(:other)) }
- @example_group.run(@options).should be_true
- end
- end
-
- context "in an ExampleGroup using 'self' as an explicit subject" do
- it "delegates matcher to the ExampleGroup" do
- @example_group.describe(::Thing)
- @example_group.subject { self }
- @example_group.example { should == self }
- @example_group.example { should eql(self) }
- @example_group.example do
- self.instance_eval("def method_ok?; true end")
- should be_method_ok
- end
- @example_group.run(@options).should be_true
- end
- end
- end
-
- describe "#should_not" do
- before(:each) do
- @example_group = Class.new(ExampleGroupDouble)
- @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
- end
-
- context "in an ExampleGroup with an implicit subject" do
- it "delegates matcher to the implied subject" do
- @example_group.describe(::Thing)
- @example_group.example { should_not == ::Thing.new(:other) }
- @example_group.example { should_not eql(::Thing.new(:other)) }
- @example_group.run(@options).should be_true
- end
- end
-
- context "in an ExampleGroup using an explicit subject" do
- it "delegates matcher to the declared subject" do
- @example_group.describe(::Thing)
- @example_group.subject { ::Thing.new(:other) }
- @example_group.example { should_not == ::Thing.new(:default) }
- @example_group.example { should_not eql(::Thing.new(:default)) }
- @example_group.run(@options).should be_true
- end
- end
-
- context "in an ExampleGroup using 'self' as an explicit subject" do
- it "delegates matcher to the ExampleGroup" do
- @example_group.describe(::Thing)
- @example_group.subject { self }
- @example_group.example { should_not == ::Thing.new(:default) }
- @example_group.example { should_not eql(::Thing.new(:default)) }
- @example_group.example do
- self.instance_eval("def method_ok?; false end")
- should_not be_method_ok
- end
- @example_group.run(@options).should be_true
- end
- end
- end
- end
-
- describe "#options" do
- it "should expose the options hash" do
- example = ExampleGroupDouble.new ExampleProxy.new("name", :this => 'that') do; end
- example.options[:this].should == 'that'
- end
- end
-
- describe "#set_instance_variables_from_hash" do
- it "preserves the options" do
- example = ExampleGroupDouble.new ExampleProxy.new("name", :this => 'that') do; end
- example.set_instance_variables_from_hash({:@_options => {}})
- example.options[:this].should == 'that'
- end
- end
-
- describe "#description" do
- it "returns the supplied description" do
- example = ExampleGroupDouble.new ExampleProxy.new("name") do; end
- example.description.should == "name"
- end
- it "returns the generated description if there is no description supplied" do
- example = ExampleGroupDouble.new ExampleProxy.new do; end
- Spec::Matchers.stub!(:generated_description).and_return('this message')
- example.description.should == "this message"
- end
- it "warns if there is no supplied or generated description" do
- example = ExampleGroupDouble.new ExampleProxy.new(nil, {}, "this backtrace") do; end
- Spec::Matchers.stub!(:generated_description).and_return(nil)
- Spec.should_receive(:warn).with("No description supplied for example declared on this backtrace")
- example.description
- end
- end
-
- describe "#expect" do
- it "aliases #should with #to on the proc" do
- a = 3
- expect { a += 1 }.to change{a}.from(3).to(4)
- end
-
- it "aliases #should_not with #to_not on the proc" do
- a = 3
- expect { nil }.to_not change{a}
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/example_proxy_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/example_proxy_spec.rb
deleted file mode 100644
index de845c9e2..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/example_proxy_spec.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
-
- describe ExampleProxy do
-
- describe "#description" do
- it "provides the submitted description" do
- proxy = ExampleProxy.new("the description")
- proxy.description.should == "the description"
- end
- end
-
- describe "#update" do
- it "updates the description" do
- proxy = ExampleProxy.new("old description")
- proxy.update("new description")
- proxy.description.should == "new description"
- end
- end
-
- describe "#options" do
- it "provides the submitted options" do
- proxy = ExampleProxy.new(:ignore, {:these => :options})
- proxy.options.should == {:these => :options}
- end
- end
-
- describe "#backtrace (DEPRECATED - use #location)" do
- before(:each) do
- Spec.stub!(:deprecate)
- end
-
- it "is deprecated" do
- Spec.should_receive(:deprecate)
- proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37")
- proxy.backtrace
- end
-
- it "provides the location of the declaration of this group" do
- proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37")
- proxy.backtrace.should == "path/to/location:37"
- end
- end
-
- describe "#location" do
- it "provides the location of the declaration of this group" do
- proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37")
- proxy.location.should == "path/to/location:37"
- end
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/helper_method_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/helper_method_spec.rb
deleted file mode 100644
index 3653aec71..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/helper_method_spec.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'spec_helper'
-
-# This was added to prove that http://rspec.lighthouseapp.com/projects/5645/tickets/211
-# was fixed in ruby 1.9.1
-
-module HelperMethodExample
- describe "a helper method" do
- def helper_method
- "received call"
- end
-
- it "is available to examples in the same group" do
- helper_method.should == "received call"
- end
-
- describe "from a nested group" do
- it "is available to examples in a nested group" do
- helper_method.should == "received call"
- end
- end
-
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/nested_example_group_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/nested_example_group_spec.rb
deleted file mode 100644
index 83e4a9d7c..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/nested_example_group_spec.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- describe 'Nested Example Groups' do
- parent = self
-
- def count
- @count ||= 0
- @count = @count + 1
- @count
- end
-
- before(:all) do
- count.should == 1
- end
-
- before(:all) do
- count.should == 2
- end
-
- before(:each) do
- count.should == 3
- end
-
- before(:each) do
- count.should == 4
- end
-
- it "should run before(:all), before(:each), example, after(:each), after(:all) in order" do
- count.should == 5
- end
-
- after(:each) do
- count.should == 7
- end
-
- after(:each) do
- count.should == 6
- end
-
- after(:all) do
- count.should == 9
- end
-
- after(:all) do
- count.should == 8
- end
-
- describe 'nested example group' do
- self.superclass.should == parent
-
- it "should run all before and after callbacks" do
- count.should == 5
- end
- end
- end
-
- describe "Nested Example Groups" do
- describe "description options", :other_options => "other options" do
- it "includes :location" do
- self.class.options[:location].should match(/#{__FILE__}/)
- end
-
- it "includes any other options" do
- self.class.options[:other_options].should == "other options"
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/pending_module_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/pending_module_spec.rb
deleted file mode 100644
index 275abc7d6..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/pending_module_spec.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-module Spec
- module Example
- describe Pending do
-
- context "when no block is supplied" do
- it "raises an ExamplePendingError if no block is supplied" do
- lambda {
- pending "TODO"
- }.should raise_error(ExamplePendingError, /TODO/)
- end
- end
-
- context "when the supplied block fails" do
- it "raises an ExamplePendingError if a supplied block fails as expected" do
- lambda {
- pending "TODO" do
- raise "oops"
- end
- }.should raise_error(ExamplePendingError, /TODO/)
- end
- end
-
- context "when the supplied block fails with a mock" do
- it "raises an ExamplePendingError if a supplied block fails as expected with a mock" do
- lambda {
- pending "TODO" do
- m = mock("thing")
- m.should_receive(:foo)
- m.rspec_verify
- end
- }.should raise_error(ExamplePendingError, /TODO/)
- end
- end
-
- context "when the supplied block passes" do
- it "raises a PendingExampleFixedError" do
- lambda {
- pending "TODO" do
- # success!
- end
- }.should raise_error(PendingExampleFixedError, /TODO/)
- end
- end
- end
-
- describe ExamplePendingError do
- it "should have the message provided" do
- ExamplePendingError.new("a message").message.should == "a message"
- end
- end
-
- describe NotYetImplementedError do
- it "should have the message 'Not Yet Implemented'" do
- NotYetImplementedError.new.message.should == "Not Yet Implemented"
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/predicate_matcher_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/predicate_matcher_spec.rb
deleted file mode 100644
index a01858502..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/predicate_matcher_spec.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- class Fish
- def can_swim?(distance_in_yards)
- distance_in_yards < 1000
- end
- end
-
- describe "predicate_matcher[method_on_object] = matcher_method" do
- before(:each) do
- Spec.stub!(:deprecate)
- end
-
- it "is deprecated" do
- Spec.should_receive(:deprecate)
- group = ExampleGroupDouble.describe("foo") do
- predicate_matchers[:swim] = :can_swim?
- end
- group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
- end
-
- it "should match matcher_method if method_on_object returns true" do
- group = ExampleGroupDouble.describe(Fish) do
- predicate_matchers[:swim] = :can_swim?
- it { should swim(100) }
- end
- group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
- end
-
- it "should not match matcher_method if method_on_object returns false" do
- group = ExampleGroupDouble.describe(Fish) do
- predicate_matchers[:swim] = :can_swim?
- it { should_not swim(1000) }
- end
- group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/shared_example_group_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/shared_example_group_spec.rb
deleted file mode 100644
index bbebbf15c..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/shared_example_group_spec.rb
+++ /dev/null
@@ -1,257 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- describe ExampleGroup, "with :shared => true" do
- with_sandboxed_options do
- attr_reader :formatter, :example_group
- before(:each) do
- @formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
- options.formatters << formatter
- @example_group = Class.new(ExampleGroupDouble).describe("example_group")
- class << example_group
- public :include
- end
- end
-
- after(:each) do
- @formatter.rspec_verify
- @example_group = nil
- Spec::Example::SharedExampleGroup.clear
- end
-
- describe "#register" do
- it "creates a new shared example group with the submitted args" do
- block = lambda {|a|}
- group = SharedExampleGroup.new("shared group") do end
- Spec::Example::SharedExampleGroup.should_receive(:new).with("share me", &block).and_return(group)
- Spec::Example::SharedExampleGroup.register("share me", &block)
- end
-
- it "registers the shared example group" do
- lambda do
- Spec::Example::SharedExampleGroup.register "share me" do end
- end.should change {Spec::Example::SharedExampleGroup.count}.by(1)
- end
- end
-
- it "complains when adding a second shared example_group with the same description" do
- describe "shared example_group", :shared => true do
- end
- lambda do
- describe "shared example_group", :shared => true do
- end
- end.should raise_error(ArgumentError)
- end
-
- it "does NOT add the same group twice" do
- lambda do
- 2.times do
- describe "shared example_group which gets loaded twice", :shared => true do
- end
- end
- end.should change {Spec::Example::SharedExampleGroup.count}.by(1)
- end
-
- it "does NOT complain when adding the same shared example_group again (i.e. file gets reloaded)" do
- lambda do
- 2.times do
- describe "shared example_group which gets loaded twice", :shared => true do
- end
- end
- end.should_not raise_error(ArgumentError)
- end
-
- it "does NOT complain when adding the same shared example_group in same file with different absolute path" do
- SharedExampleGroup.register(
- "shared example_group",
- :shared => true,
- :location => "/my/spec/a/../shared.rb"
- )
- SharedExampleGroup.register(
- "shared example_group",
- :shared => true,
- :location => "/my/spec/b/../shared.rb"
- )
- end
-
- it "complains when adding a different shared example_group with the same name in a different file with the same basename" do
- SharedExampleGroup.register(
- "shared example_group",
- :shared => true,
- :location => "/my/spec/a/shared.rb"
- )
- lambda do
- SharedExampleGroup.register(
- "shared example_group",
- :shared => true,
- :location => "/my/spec/b/shared.rb"
- )
- end.should raise_error(ArgumentError, /already exists/)
- end
-
- it "adds examples to current example_group using it_should_behave_like" do
- shared_example_group = SharedExampleGroup.register("shared example_group") do
- it("shared example") {}
- it("shared example 2") {}
- end
-
- example_group.it("example") {}
- example_group.number_of_examples.should == 1
- example_group.it_should_behave_like("shared example_group")
- example_group.number_of_examples.should == 3
- end
-
- it "adds examples to from two shared groups" do
- shared_example_group_1 = SharedExampleGroup.register("shared example_group 1") do
- it("shared example 1") {}
- end
-
- shared_example_group_1 = SharedExampleGroup.register("shared example_group 2") do
- it("shared example 2") {}
- end
-
- example_group.it("example") {}
- example_group.number_of_examples.should == 1
- example_group.it_should_behave_like("shared example_group 1", "shared example_group 2")
- example_group.number_of_examples.should == 3
- end
-
- it "adds examples to current example_group using include" do
- shared_example_group = describe "all things", :shared => true do
- it "should do stuff" do end
- end
-
- example_group = describe "one thing" do
- include shared_example_group
- end
-
- example_group.number_of_examples.should == 1
- end
-
- it "adds examples to current example_group using it_should_behave_like with a module" do
- ::AllThings = describe "all things", :shared => true do
- it "should do stuff" do end
- end
-
- example_group = describe "one thing" do
- it_should_behave_like ::AllThings
- end
-
- example_group.number_of_examples.should == 1
- end
-
- it "runs shared examples" do
- shared_example_ran = false
- shared_example_group = SharedExampleGroup.register("shared example_group") do
- it("shared example") { shared_example_ran = true }
- end
-
- example_ran = false
-
- example_group.it_should_behave_like("shared example_group")
- example_group.it("example") {example_ran = true}
- example_group.run(options)
- example_ran.should be_true
- shared_example_ran.should be_true
- end
-
- it "runs before(:each) and after(:each) from shared example_group" do
- shared_setup_ran = false
- shared_teardown_ran = false
- shared_example_group = SharedExampleGroup.register("shared example_group") do
- before(:each) { shared_setup_ran = true }
- after(:each) { shared_teardown_ran = true }
- it("shared example") { shared_example_ran = true }
- end
-
- example_ran = false
-
- example_group.it_should_behave_like("shared example_group")
- example_group.it("example") {example_ran = true}
- example_group.run(options)
- example_ran.should be_true
- shared_setup_ran.should be_true
- shared_teardown_ran.should be_true
- end
-
- it "should run before(:all) and after(:all) only once from shared example_group" do
- shared_before_all_run_count = 0
- shared_after_all_run_count = 0
- shared_example_group = SharedExampleGroup.register("shared example_group") do
- before(:all) { shared_before_all_run_count += 1}
- after(:all) { shared_after_all_run_count += 1}
- it("shared example") { shared_example_ran = true }
- end
-
- example_ran = false
-
- example_group.it_should_behave_like("shared example_group")
- example_group.it("example") {example_ran = true}
- example_group.run(options)
- example_ran.should be_true
- shared_before_all_run_count.should == 1
- shared_after_all_run_count.should == 1
- end
-
- it "should include modules, included into shared example_group, into current example_group" do
- @formatter.should_receive(:add_example_group).with(any_args)
-
- shared_example_group = SharedExampleGroup.register("shared example_group") do
- it("shared example") { shared_example_ran = true }
- end
-
- mod1_method_called = false
- mod1 = Module.new do
- define_method :mod1_method do
- mod1_method_called = true
- end
- end
-
- mod2_method_called = false
- mod2 = Module.new do
- define_method :mod2_method do
- mod2_method_called = true
- end
- end
-
- shared_example_group.__send__ :include, mod2
-
- example_group.it_should_behave_like("shared example_group")
- example_group.include mod1
-
- example_group.it("test") do
- mod1_method
- mod2_method
- end
- example_group.run(options)
- mod1_method_called.should be_true
- mod2_method_called.should be_true
- end
-
- it "should make methods defined in the shared example_group available in consuming example_group" do
- shared_example_group = SharedExampleGroup.register("shared example_group xyz") do
- def a_shared_helper_method
- "this got defined in a shared example_group"
- end
- end
- example_group.it_should_behave_like("shared example_group xyz")
- success = false
- example_group.it("should access a_shared_helper_method") do
- a_shared_helper_method
- success = true
- end
- example_group.run(options)
- success.should be_true
- end
-
- it "should raise when named shared example_group can not be found" do
- lambda {
- example_group.it_should_behave_like("non-existent shared example group")
- violated
- }.should raise_error("Shared Example Group 'non-existent shared example group' can not be found")
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/subclassing_example_group_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/subclassing_example_group_spec.rb
deleted file mode 100644
index 969014a73..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/subclassing_example_group_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- class GrandParentExampleGroup < Spec::Example::ExampleGroup
- describe "Grandparent ExampleGroup"
- end
-
- class ParentExampleGroup < GrandParentExampleGroup
- describe "Parent ExampleGroup"
- it "should bar" do
- end
- end
-
- class ChildExampleGroup < ParentExampleGroup
- describe "Child ExampleGroup"
- it "should bam" do
- end
- end
-
- describe ChildExampleGroup do
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/example/subject_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/example/subject_spec.rb
deleted file mode 100644
index e1889cb36..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/example/subject_spec.rb
+++ /dev/null
@@ -1,110 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- describe "implicit subject" do
- describe "with a class" do
- it "returns an instance of the class" do
- group = Class.new(ExampleGroupDouble).describe(Array)
- example = group.new(ExampleProxy.new)
- example.subject.should == []
- end
- end
-
- describe "with a Module" do
- it "returns the Module" do
- group = Class.new(ExampleGroupDouble).describe(Enumerable)
- example = group.new(ExampleProxy.new)
- example.subject.should == Enumerable
- end
- end
-
- describe "with a string" do
- it "return the string" do
- group = Class.new(ExampleGroupDouble).describe('foo')
- example = group.new(ExampleProxy.new)
- example.subject.should == 'foo'
- end
- end
-
- describe "with a number" do
- it "returns the number" do
- group = Class.new(ExampleGroupDouble).describe(15)
- example = group.new(ExampleProxy.new)
- example.subject.should == 15
- end
- end
-
- end
-
- describe "explicit subject" do
- describe "defined in a top level group" do
- it "replaces the implicit subject in that group" do
- group = Class.new(ExampleGroupDouble).describe(Array)
- group.subject { [1,2,3] }
- example = group.new(ExampleProxy.new)
- example.subject.should == [1,2,3]
- end
- end
-
- describe "defined in a top level group" do
- before(:each) do
- @group = Class.new do
- extend Spec::Example::Subject::ExampleGroupMethods
- include Spec::Example::Subject::ExampleMethods
- class << self
- def described_class
- Array
- end
- end
- def described_class
- self.class.described_class
- end
-
- subject {
- [1,2,3]
- }
- end
- end
-
- it "is available in a nested group (subclass)" do
- nested_group = Class.new(@group)
-
- example = nested_group.new
- example.subject.should == [1,2,3]
- end
-
- it "is available in a doubly nested group (subclass)" do
- nested_group = Class.new(@group)
- doubly_nested_group = Class.new(nested_group)
-
- example = doubly_nested_group.new
- example.subject.should == [1,2,3]
- end
- end
- end
-
- describe ".its (to access subject's attributes)" do
- with_sandboxed_options do
- it "allows before(:each) blocks on subjects in outer scope" do
- group = Class.new(ExampleGroupDouble).describe(Array)
- group.before(:each) { subject << 1 }
- child = group.its(:length) { should == 1 }
- child.run(options).should == true
- end
-
- it "passes when expectation should pass" do
- group = Class.new(ExampleGroupDouble).describe(Array)
- child = group.its(:length) { should == 0 }
- child.run(options).should == true
- end
-
- it "fails when expectation should fail" do
- group = Class.new(ExampleGroupDouble).describe(Array)
- child = group.its(:length) { should == 1 }
- child.run(options).should == false
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/expectations/differs/default_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/expectations/differs/default_spec.rb
deleted file mode 100644
index 3bc3c45ab..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/expectations/differs/default_spec.rb
+++ /dev/null
@@ -1,194 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Fixtures
- class Animal
- def initialize(name,species)
- @name,@species = name,species
- end
-
- def inspect
- <<-EOA
-<Animal
- name=#{@name},
- species=#{@species}
->
- EOA
- end
- end
- end
-end
-
-describe "Diff" do
- before(:each) do
- @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
- @differ = Spec::Expectations::Differs::Default.new(@options)
- end
-
- it "should output unified diff of two strings" do
- expected="foo\nbar\nzap\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nline\n"
- actual="foo\nzap\nbar\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nanother\nline\n"
- expected_diff= <<'EOD'
-
-
-@@ -1,6 +1,6 @@
- foo
--zap
- bar
-+zap
- this
- is
- soo
-@@ -9,6 +9,5 @@
- equal
- insert
- a
--another
- line
-EOD
-
- diff = @differ.diff_as_string(expected, actual)
- diff.should eql(expected_diff)
- end
-
- it "should output unified diff message of two arrays" do
- expected = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'charlie', :width, 'quite wide' ]
- actual = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'tango' , :width, 'very wide' ]
-
- expected_diff = <<'EOD'
-
-
-@@ -5,7 +5,7 @@
- :metasyntactic,
- "variable",
- :delta,
-- "tango",
-+ "charlie",
- :width,
-- "very wide"]
-+ "quite wide"]
-EOD
-
-
- diff = @differ.diff_as_object(expected,actual)
- diff.should == expected_diff
- end
-
- it "should output a friendly message if comparing simple hashes" do
- expected = { "foo" => "bar" }
- actual = { "foo" => "baz" }
-
- expected_diff = <<'EOD'
-
-Expected the key "foo" to be "bar", but was "baz"
-
-EOD
-
-
- diff = @differ.diff_as_hash(actual, expected)
- diff.should == expected_diff
- end
-
-
- it "should output a friendly message if comparing simple hashes that contain different keys" do
- expected = { "bar" => "foo" }
- actual = { "foo" => "baz" }
-
- expected_diff = <<'EOD'
-
-Expected hash contains keys that target hash does not: ["bar"]
-Target hash contains keys that expected hash does not: ["foo"]
-Expected the key "bar" to be "foo", but was nil
-
-EOD
-
-
- diff = @differ.diff_as_hash(actual, expected)
- diff.should == expected_diff
- end
-
- it "should output diff message if the hash is complex (containing Array or Hash)" do
- expected = { "foo" => "bar", "fizz" => [1, 2, 3] }
- actual = { "foo" => "baz", "fizz" => [1, 2] }
-
- # UGH - 1.8.7 seems to order hash keys differently than the others
- if RUBY_VERSION =~ /^1.8.7/
- expected_diff = <<'EOD'
-
-Expected the key "fizz" to be [1, 2, 3], but was [1, 2]
-Expected the key "foo" to be "bar", but was "baz"
-
-
-@@ -1,2 +1,2 @@
--{"fizz"=>[1, 2, 3], "foo"=>"bar"}
-+{"fizz"=>[1, 2], "foo"=>"baz"}
-EOD
- else
- expected_diff = <<'EOD'
-
-Expected the key "fizz" to be [1, 2, 3], but was [1, 2]
-Expected the key "foo" to be "bar", but was "baz"
-
-
-@@ -1,2 +1,2 @@
--{"foo"=>"bar", "fizz"=>[1, 2, 3]}
-+{"foo"=>"baz", "fizz"=>[1, 2]}
-EOD
- end
-
- diff = @differ.diff_as_hash(actual, expected)
- diff.should == expected_diff
- end
-
-
- it "should output unified diff message of two objects" do
- expected = Spec::Fixtures::Animal.new "bob", "giraffe"
- actual = Spec::Fixtures::Animal.new "bob", "tortoise"
-
- expected_diff = <<'EOD'
-
-@@ -1,5 +1,5 @@
- <Animal
- name=bob,
-- species=tortoise
-+ species=giraffe
- >
-EOD
-
- diff = @differ.diff_as_object(expected,actual)
- diff.should == expected_diff
- end
-
-end
-
-
-describe "Diff in context format" do
- before(:each) do
- @options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
- @options.diff_format = :context
- @differ = Spec::Expectations::Differs::Default.new(@options)
- end
-
- it "should output unified diff message of two objects" do
- expected = Spec::Fixtures::Animal.new "bob", "giraffe"
- actual = Spec::Fixtures::Animal.new "bob", "tortoise"
-
- expected_diff = <<'EOD'
-
-***************
-*** 1,5 ****
- <Animal
- name=bob,
-! species=tortoise
- >
---- 1,5 ----
- <Animal
- name=bob,
-! species=giraffe
- >
-EOD
-
- diff = @differ.diff_as_object(expected,actual)
- diff.should == expected_diff
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/expectations/extensions/kernel_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/expectations/extensions/kernel_spec.rb
deleted file mode 100644
index 9a0ed3ce5..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/expectations/extensions/kernel_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require 'spec_helper'
-
-describe Object, "#should" do
- before(:each) do
- @target = "target"
- @matcher = mock("matcher")
- @matcher.stub!(:matches?).and_return(true)
- @matcher.stub!(:failure_message_for_should)
- end
-
- it "accepts and interacts with a matcher" do
- @matcher.should_receive(:matches?).with(@target).and_return(true)
- @target.should @matcher
- end
-
- it "asks for a failure_message_for_should when matches? returns false" do
- @matcher.should_receive(:matches?).with(@target).and_return(false)
- @matcher.should_receive(:failure_message_for_should).and_return("the failure message")
- lambda {
- @target.should @matcher
- }.should fail_with("the failure message")
- end
-end
-
-describe Object, "#should_not" do
- before(:each) do
- @target = "target"
- @matcher = mock("matcher")
- end
-
- it "accepts and interacts with a matcher" do
- @matcher.should_receive(:matches?).with(@target).and_return(false)
- @matcher.stub!(:failure_message_for_should_not)
-
- @target.should_not @matcher
- end
-
- it "asks for a failure_message_for_should_not when matches? returns true" do
- @matcher.should_receive(:matches?).with(@target).and_return(true)
- @matcher.should_receive(:failure_message_for_should_not).and_return("the failure message for should not")
- lambda {
- @target.should_not @matcher
- }.should fail_with("the failure message for should not")
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/expectations/fail_with_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/expectations/fail_with_spec.rb
deleted file mode 100644
index 639b7f950..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/expectations/fail_with_spec.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-require 'spec_helper'
-
-describe Spec::Expectations, "#fail_with with no diff" do
- before(:each) do
- @old_differ = Spec::Expectations.differ
- Spec::Expectations.differ = nil
- end
-
- it "should handle just a message" do
- lambda {
- Spec::Expectations.fail_with "the message"
- }.should fail_with("the message")
- end
-
- after(:each) do
- Spec::Expectations.differ = @old_differ
- end
-end
-
-describe Spec::Expectations, "#fail_with with Array" do
- before(:each) do
- Spec.stub!(:warn)
- end
-
- it "is deprecated" do
- Spec.should_receive(:warn)
- lambda {
- Spec::Expectations.fail_with ["message", "expected", "actual"]
- }.should raise_error
- end
-end
-
-describe Spec::Expectations, "#fail_with with diff" do
- before(:each) do
- @old_differ = Spec::Expectations.differ
- @differ = mock("differ")
- Spec::Expectations.differ = @differ
- end
-
- it "should not call differ if no expected/actual" do
- lambda {
- Spec::Expectations.fail_with "the message"
- }.should fail_with("the message")
- end
-
- it "should call differ if expected/actual are presented separately" do
- @differ.should_receive(:diff_as_string).and_return("diff")
- lambda {
- Spec::Expectations.fail_with "the message", "expected", "actual"
- }.should fail_with("the message\n\n Diff:diff")
- end
-
- it "should call differ if expected/actual are not strings" do
- @differ.should_receive(:diff_as_object).and_return("diff")
- lambda {
- Spec::Expectations.fail_with "the message", :expected, :actual
- }.should fail_with("the message\n\n Diff:diff")
- end
-
- it "should call differ if expected/actual are both hashes" do
- @differ.should_receive(:diff_as_hash).and_return("diff")
- lambda {
- Spec::Expectations.fail_with "the message", {:a => :b}, {:a => 'b'}
- }.should fail_with("the message\n\n Diff:diff")
- end
-
- it "should not call differ if expected or actual are procs" do
- @differ.should_not_receive(:diff_as_string)
- @differ.should_not_receive(:diff_as_object)
- @differ.should_not_receive(:diff_as_hash)
- lambda {
- Spec::Expectations.fail_with "the message", lambda {}, lambda {}
- }.should fail_with("the message")
- end
-
- after(:each) do
- Spec::Expectations.differ = @old_differ
- end
-end
-
-describe Spec::Expectations, "#fail_with with a nil message" do
- before(:each) do
- @old_differ = Spec::Expectations.differ
- Spec::Expectations.differ = nil
- end
-
- it "should handle just a message" do
- lambda {
- Spec::Expectations.fail_with nil
- }.should raise_error(ArgumentError, /Failure message is nil\. Does your matcher define the appropriate failure_message_for_\* method to return a string\?/)
- end
-
- after(:each) do
- Spec::Expectations.differ = @old_differ
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/expectations/handler_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/expectations/handler_spec.rb
deleted file mode 100644
index e7d6a6ed1..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/expectations/handler_spec.rb
+++ /dev/null
@@ -1,206 +0,0 @@
-require 'spec_helper'
-
-module ExampleExpectations
-
- class ArbitraryMatcher
- def initialize(*args, &block)
- if args.last.is_a? Hash
- @expected = args.last[:expected]
- end
- @expected = block.call if block
- @block = block
- end
-
- def matches?(target)
- @target = target
- return @expected == target
- end
-
- def with(new_value)
- @expected = new_value
- self
- end
-
- def failure_message
- "expected #{@expected}, got #{@target}"
- end
-
- def negative_failure_message
- "expected not #{@expected}, got #{@target}"
- end
- end
-
- class PositiveOnlyMatcher < ArbitraryMatcher
- undef negative_failure_message rescue nil
- end
-
- def arbitrary_matcher(*args, &block)
- ArbitraryMatcher.new(*args, &block)
- end
-
- def positive_only_matcher(*args, &block)
- PositiveOnlyMatcher.new(*args, &block)
- end
-
-end
-
-module Spec
- module Expectations
- describe PositiveExpectationHandler do
- describe "#handle_matcher" do
- it "asks the matcher if it matches" do
- matcher = mock("matcher")
- actual = Object.new
- matcher.should_receive(:matches?).with(actual).and_return(true)
- Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
- end
-
- it "returns the match value" do
- matcher = mock("matcher")
- actual = Object.new
- matcher.should_receive(:matches?).with(actual).and_return(:this_value)
- Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher).should == :this_value
- end
-
- it "calls failure_message_for_should if the matcher implements it" do
- matcher = mock("matcher", :failure_message_for_should => "message", :matches? => false)
- actual = Object.new
-
- ::Spec::Expectations.should_receive(:fail_with).with("message")
-
- Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
- end
-
- it "calls fail if matcher.diffable?" do
- matcher = mock("matcher",
- :diffable? => true,
- :failure_message_for_should => "message",
- :matches? => false,
- :expected => [1],
- :actual => 2
- )
- actual = Object.new
-
- ::Spec::Expectations.should_receive(:fail_with).with("message", 1, 2)
-
- Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
- end
-
- it "calls failure_message if the matcher does not implement failure_message_for_should" do
- matcher = mock("matcher", :failure_message => "message", :matches? => false)
- actual = Object.new
-
- ::Spec::Expectations.should_receive(:fail_with).with("message")
-
- Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
-
- end
-
- it "appends the :or message in the options hash passed to should" do
- matcher = mock("matcher", :failure_message_for_should => "message", :matches? => false)
- actual = Object.new
-
- ::Spec::Expectations.should_receive(:fail_with).with("custom")
-
- Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher, "custom")
- end
- end
- end
-
- describe NegativeExpectationHandler do
- describe "#handle_matcher" do
- it "asks the matcher if it doesn't match when the matcher responds to #does_not_match?" do
- matcher = mock("matcher", :does_not_match? => true, :negative_failure_message => nil)
- actual = Object.new
- matcher.should_receive(:does_not_match?).with(actual).and_return(true)
- Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
- end
-
- it "asks the matcher if it matches when the matcher doesn't respond to #does_not_match?" do
- matcher = mock("matcher")
- actual = Object.new
- matcher.stub!(:negative_failure_message)
- matcher.should_receive(:matches?).with(actual).and_return(false)
- Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
- end
-
- it "returns the match value" do
- matcher = mock("matcher")
- actual = Object.new
- matcher.should_receive(:matches?).with(actual).and_return(false)
- matcher.stub!(:negative_failure_message).and_return("ignore")
- Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher).should be_false
- end
-
-
- it "calls failure_message_for_should_not if the matcher implements it" do
- matcher = mock("matcher", :failure_message_for_should_not => "message", :matches? => true)
- actual = Object.new
-
- ::Spec::Expectations.should_receive(:fail_with).with("message")
-
- Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
-
- end
-
- it "calls negative_failure_message if the matcher does not implement failure_message_for_should_not" do
- matcher = mock("matcher", :negative_failure_message => "message", :matches? => true)
- actual = Object.new
-
- ::Spec::Expectations.should_receive(:fail_with).with("message")
-
- Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
-
- end
-
-
- it "calls fail if matcher.diffable?" do
- matcher = mock("matcher",
- :diffable? => true,
- :failure_message_for_should_not => "message",
- :matches? => true,
- :expected => [1],
- :actual => 2
- )
- actual = Object.new
-
- ::Spec::Expectations.should_receive(:fail_with).with("message", 1, 2)
-
- Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
- end
-
- it "appends the :or message in the options hash passed to should" do
- matcher = mock("matcher", :failure_message_for_should_not => "message", :matches? => true)
- actual = Object.new
-
- ::Spec::Expectations.should_receive(:fail_with).with("custom")
-
- Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher, "custom")
- end
-
- end
- end
-
- describe PositiveExpectationHandler do
- include ExampleExpectations
-
- it "should handle submitted args" do
- 5.should arbitrary_matcher(:expected => 5)
- 5.should arbitrary_matcher(:expected => "wrong").with(5)
- lambda { 5.should arbitrary_matcher(:expected => 4) }.should fail_with("expected 4, got 5")
- lambda { 5.should arbitrary_matcher(:expected => 5).with(4) }.should fail_with("expected 4, got 5")
- 5.should_not arbitrary_matcher(:expected => 4)
- 5.should_not arbitrary_matcher(:expected => 5).with(4)
- lambda { 5.should_not arbitrary_matcher(:expected => 5) }.should fail_with("expected not 5, got 5")
- lambda { 5.should_not arbitrary_matcher(:expected => 4).with(5) }.should fail_with("expected not 5, got 5")
- end
-
- it "should handle the submitted block" do
- 5.should arbitrary_matcher { 5 }
- 5.should arbitrary_matcher(:expected => 4) { 5 }
- 5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/expectations/wrap_expectation_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/expectations/wrap_expectation_spec.rb
deleted file mode 100644
index bcd0d53c9..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/expectations/wrap_expectation_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Matchers
- describe "wrap_expectation" do
- before { Spec.stub(:deprecate) }
-
- def stub_matcher
- @_stub_matcher ||= simple_matcher do
- end
- end
-
- def failing_matcher
- @_failing_matcher ||= simple_matcher do
- 1.should == 2
- end
- end
-
- it "should return true if there is no error" do
- wrap_expectation stub_matcher do
- end.should be_true
- end
-
- it "should return false if there is an error" do
- wrap_expectation failing_matcher do
- raise "error"
- end.should be_false
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_that_fails.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_that_fails.rb
deleted file mode 100644
index b2c484109..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_that_fails.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-describe "example group with failures" do
- it "should fail" do
- false.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_that_passes.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_that_passes.rb
deleted file mode 100644
index 4203af3a5..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_that_passes.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-describe "example group with passing examples" do
- it "should pass" do
- true.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_with_errors.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_with_errors.rb
deleted file mode 100644
index a18ce72f7..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_with_errors.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-describe "example group with errors" do
- it "should raise errors" do
- raise "error raised in example group with errors"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb
deleted file mode 100644
index 7dc344bdd..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-describe "options hash" do
- describe "#options" do
- it "should expose the options hash" do
- group = describe("group", :this => 'hash') {}
- group.options[:this].should == 'hash'
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_that_fails.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_that_fails.rb
deleted file mode 100644
index 0a977cb15..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_that_fails.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-class TestCaseThatFails < Test::Unit::TestCase
- def test_that_fails
- false.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_that_passes.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_that_passes.rb
deleted file mode 100644
index 078a5f778..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_that_passes.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-class TestCaseThatPasses < Test::Unit::TestCase
- def test_that_passes
- true.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_with_errors.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_with_errors.rb
deleted file mode 100644
index dc5f52e47..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_with_errors.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-class TestCaseWithErrors < Test::Unit::TestCase
- def test_with_error
- raise "error raised in TestCaseWithErrors"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb
deleted file mode 100644
index 186db49d5..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-class TestCaseThatPasses < Test::Unit::TestCase
- def test_should_allow_underscore
- assert true
- end
-
- def testShouldAllowUppercaseLetter
- assert true
- end
-
- def testshouldallowlowercaseletter
- assert true
- end
-
- define_method :"test: should allow punctuation" do
- assert true
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb
deleted file mode 100644
index 5182b8203..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-rspec_lib = File.dirname(__FILE__) + "/../../../../../../lib"
-$:.unshift rspec_lib unless $:.include?(rspec_lib)
-require 'spec/autorun'
-require 'spec/test/unit'
-
-module Test
- module Unit
- describe TestSuiteAdapter do
- def create_adapter(group)
- TestSuiteAdapter.new(group)
- end
-
- describe "#size" do
- it "should return the number of examples in the example group" do
- group = Class.new(Spec::ExampleGroup) do
- describe("some examples")
- it("bar") {}
- it("baz") {}
- end
- adapter = create_adapter(group)
- adapter.size.should == 2
- end
- end
-
- describe "#delete" do
- it "should do nothing" do
- group = Class.new(Spec::ExampleGroup) do
- describe("Some Examples")
- it("does something") {}
- end
- adapter = create_adapter(group)
- adapter.delete(adapter.examples.first)
- adapter.should be_empty
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/spec_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/spec_spec.rb
deleted file mode 100644
index d4d3d2c65..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/spec_spec.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require 'spec/interop/test/unit/test_unit_spec_helper'
-
-describe "ExampleGroup with test/unit/interop" do
- include TestUnitSpecHelper
-
- describe "with passing examples" do
- it "should output 0 failures" do
- output = ruby("'#{resources}/spec_that_passes.rb'")
- output.should include("1 example, 0 failures")
- end
-
- it "should return an exit code of 0" do
- ruby("'#{resources}/spec_that_passes.rb'")
- $?.should == 0
- end
- end
-
- describe "with failing examples" do
- it "should output 1 failure" do
- output = ruby("'#{resources}/spec_that_fails.rb'")
- output.should include("1 example, 1 failure")
- end
-
- it "should return an exit code of 256" do
- ruby("'#{resources}/spec_that_fails.rb'")
- $?.should == 256
- end
- end
-
- describe "with example that raises an error" do
- it "should output 1 failure" do
- output = ruby("'#{resources}/spec_with_errors.rb'")
- output.should include("1 example, 1 failure")
- end
-
- it "should return an exit code of 256" do
- ruby("'#{resources}/spec_with_errors.rb'")
- $?.should == 256
- end
- end
-
- describe "options hash" do
- it "should be exposed" do
- output = ruby("'#{resources}/spec_with_options_hash.rb'")
- output.should include("1 example, 0 failures")
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/test_unit_spec_helper.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/test_unit_spec_helper.rb
deleted file mode 100644
index 1f6c223eb..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/test_unit_spec_helper.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'spec_helper'
-require 'ruby_forker'
-
-module TestUnitSpecHelper
- include RubyForker
-
- def resources
- File.dirname(__FILE__) + "/resources"
- end
-
- def run_script(file_name)
- output = ruby(file_name)
- if !$?.success? || output.include?("FAILED") || output.include?("Error")
- raise output
- end
- output
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/testcase_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/testcase_spec.rb
deleted file mode 100644
index 1ab57a37a..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/testcase_spec.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'spec/interop/test/unit/test_unit_spec_helper'
-
-describe "Test::Unit::TestCase" do
- include TestUnitSpecHelper
-
- before(:each) do
- @dir = File.dirname(__FILE__) + "/resources"
- end
-
- describe "with passing test case" do
- it "should output 0 failures" do
- output = ruby("'#{@dir}/test_case_that_passes.rb'")
- output.should include("1 example, 0 failures")
- end
-
- it "should return an exit code of 0" do
- ruby("'#{@dir}/test_case_that_passes.rb'")
- $?.should == 0
- end
- end
-
- describe "with failing test case" do
- it "should output 1 failure" do
- output = ruby("'#{@dir}/test_case_that_fails.rb'")
- output.should include("1 example, 1 failure")
- end
-
- it "should return an exit code of 256" do
- ruby("'#{@dir}/test_case_that_fails.rb'")
- $?.should == 256
- end
- end
-
- describe "with test case that raises an error" do
- it "should output 1 failure" do
- output = ruby("'#{@dir}/test_case_with_errors.rb'")
- output.should include("1 example, 1 failure")
- end
-
- it "should return an exit code of 256" do
- ruby("'#{@dir}/test_case_with_errors.rb'")
- $?.should == 256
- end
- end
-
- it "should find all Test::Unit test methods" do
- output = ruby("'#{@dir}/test_case_with_various_names.rb'")
- output.should include("4 examples, 0 failures")
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/testsuite_adapter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/testsuite_adapter_spec.rb
deleted file mode 100644
index 57af21e8f..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/interop/test/unit/testsuite_adapter_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'spec/interop/test/unit/test_unit_spec_helper'
-
-describe "TestSuiteAdapter" do
- include TestUnitSpecHelper
- it "should pass" do
- dir = File.dirname(__FILE__)
- run_script "'#{dir}/resources/testsuite_adapter_spec_with_test_unit.rb'"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_close_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_close_spec.rb
deleted file mode 100644
index cc0e5bd44..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_close_spec.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'spec_helper'
-module Spec
- module Matchers
- describe "[actual.should] be_close(expected, delta)" do
- it "matches when actual == expected" do
- be_close(5.0, 0.5).matches?(5.0).should be_true
- end
- it "matches when actual < (expected + delta)" do
- be_close(5.0, 0.5).matches?(5.49).should be_true
- end
- it "matches when actual > (expected - delta)" do
- be_close(5.0, 0.5).matches?(4.51).should be_true
- end
- it "does not match when actual == (expected - delta)" do
- be_close(5.0, 0.5).matches?(4.5).should be_false
- end
- it "does not match when actual < (expected - delta)" do
- be_close(5.0, 0.5).matches?(4.49).should be_false
- end
- it "does not match when actual == (expected + delta)" do
- be_close(5.0, 0.5).matches?(5.5).should be_false
- end
- it "does not match when actual > (expected + delta)" do
- be_close(5.0, 0.5).matches?(5.51).should be_false
- end
- it "provides a failure message for should" do
- #given
- matcher = be_close(5.0, 0.5)
- #when
- matcher.matches?(5.51)
- #then
- matcher.failure_message_for_should.should == "expected 5.0 +/- (< 0.5), got 5.51"
- end
-
- it "provides a failure message for should tno" do
- #given
- matcher = be_close(5.0, 0.5)
- #when
- matcher.matches?(5.49)
- #then
- matcher.failure_message_for_should_not.should == "expected 5.0 +/- (< 0.5), got 5.49"
- end
- it "provides a description" do
- matcher = be_close(5.0, 0.5)
- matcher.matches?(5.1)
- matcher.description.should == "be close to 5.0 (within +- 0.5)"
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_instance_of_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_instance_of_spec.rb
deleted file mode 100644
index e6abd0b16..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_instance_of_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Matchers
- [:be_an_instance_of, :be_instance_of].each do |method|
- describe "actual.should #{method}(expected)" do
- it "passes if actual is instance of expected class" do
- 5.should send(method, Fixnum)
- end
-
- it "fails if actual is instance of subclass of expected class" do
- lambda { 5.should send(method, Numeric) }.should fail_with(%Q{expected 5 to be an instance of Numeric})
- end
-
- it "fails with failure message for should unless actual is instance of expected class" do
- lambda { "foo".should send(method, Array) }.should fail_with(%Q{expected "foo" to be an instance of Array})
- end
-
- it "provides a description" do
- matcher = be_an_instance_of(Fixnum)
- matcher.matches?(Numeric)
- matcher.description.should == "be an instance of Fixnum"
- end
- end
-
- describe "actual.should_not #{method}(expected)" do
-
- it "fails with failure message for should_not if actual is instance of expected class" do
- lambda { "foo".should_not send(method, String) }.should fail_with(%Q{expected "foo" not to be an instance of String})
- end
-
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_kind_of_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_kind_of_spec.rb
deleted file mode 100644
index d3f05e806..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_kind_of_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Matchers
- [:be_a_kind_of, :be_kind_of].each do |method|
- describe "actual.should #{method}(expected)" do
- it "passes if actual is instance of expected class" do
- 5.should send(method, Fixnum)
- end
-
- it "passes if actual is instance of subclass of expected class" do
- 5.should send(method, Numeric)
- end
-
- it "fails with failure message for should unless actual is kind of expected class" do
- lambda { "foo".should send(method, Array) }.should fail_with(%Q{expected "foo" to be a kind of Array})
- end
-
- it "provides a description" do
- matcher = be_a_kind_of(String)
- matcher.matches?("this")
- matcher.description.should == "be a kind of String"
- end
- end
-
- describe "actual.should_not #{method}(expected)" do
- it "fails with failure message for should_not if actual is kind of expected class" do
- lambda { "foo".should_not send(method, String) }.should fail_with(%Q{expected "foo" not to be a kind of String})
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_spec.rb
deleted file mode 100644
index e1d10b854..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/be_spec.rb
+++ /dev/null
@@ -1,460 +0,0 @@
-require 'spec_helper'
-
-describe "should be_predicate" do
- it "should pass when actual returns true for :predicate?" do
- actual = stub("actual", :happy? => true)
- actual.should be_happy
- end
-
- it "should pass when actual returns true for :predicates? (present tense)" do
- actual = stub("actual", :exists? => true, :exist? => true)
- actual.should be_exist
- end
-
- it "should fail when actual returns false for :predicate?" do
- actual = stub("actual", :happy? => false)
- lambda {
- actual.should be_happy
- }.should fail_with("expected happy? to return true, got false")
- end
-
- it "should fail when actual returns false for :predicate?" do
- actual = stub("actual", :happy? => nil)
- lambda {
- actual.should be_happy
- }.should fail_with("expected happy? to return true, got nil")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- lambda {
- Object.new.should be_happy
- }.should raise_error(NameError, /happy\?/)
- end
-
- it "should fail on error other than NameError" do
- actual = stub("actual")
- actual.should_receive(:foo?).and_raise("aaaah")
- lambda {
- actual.should be_foo
- }.should raise_error(/aaaah/)
- end
-
- it "should fail on error other than NameError (with the present tense predicate)" do
- actual = Object.new
- actual.should_receive(:foos?).and_raise("aaaah")
- lambda {
- actual.should be_foo
- }.should raise_error(/aaaah/)
- end
-end
-
-describe "should_not be_predicate" do
- it "should pass when actual returns false for :sym?" do
- actual = stub("actual", :happy? => false)
- actual.should_not be_happy
- end
-
- it "should pass when actual returns nil for :sym?" do
- actual = stub("actual", :happy? => nil)
- actual.should_not be_happy
- end
-
- it "should fail when actual returns true for :sym?" do
- actual = stub("actual", :happy? => true)
- lambda {
- actual.should_not be_happy
- }.should fail_with("expected happy? to return false, got true")
- end
-
- it "should fail when actual does not respond to :sym?" do
- lambda {
- Object.new.should_not be_happy
- }.should raise_error(NameError)
- end
-end
-
-describe "should be_predicate(*args)" do
- it "should pass when actual returns true for :predicate?(*args)" do
- actual = mock("actual")
- actual.should_receive(:older_than?).with(3).and_return(true)
- actual.should be_older_than(3)
- end
-
- it "should fail when actual returns false for :predicate?(*args)" do
- actual = mock("actual")
- actual.should_receive(:older_than?).with(3).and_return(false)
- lambda {
- actual.should be_older_than(3)
- }.should fail_with("expected older_than?(3) to return true, got false")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- lambda {
- Object.new.should be_older_than(3)
- }.should raise_error(NameError)
- end
-end
-
-describe "should_not be_predicate(*args)" do
- it "should pass when actual returns false for :predicate?(*args)" do
- actual = mock("actual")
- actual.should_receive(:older_than?).with(3).and_return(false)
- actual.should_not be_older_than(3)
- end
-
- it "should fail when actual returns true for :predicate?(*args)" do
- actual = mock("actual")
- actual.should_receive(:older_than?).with(3).and_return(true)
- lambda {
- actual.should_not be_older_than(3)
- }.should fail_with("expected older_than?(3) to return false, got true")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- lambda {
- Object.new.should_not be_older_than(3)
- }.should raise_error(NameError)
- end
-end
-
-describe "should be_predicate(&block)" do
- it "should pass when actual returns true for :predicate?(&block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:happy?).and_yield
- delegate.should_receive(:check_happy).and_return(true)
- actual.should be_happy { delegate.check_happy }
- end
-
- it "should fail when actual returns false for :predicate?(&block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:happy?).and_yield
- delegate.should_receive(:check_happy).and_return(false)
- lambda {
- actual.should be_happy { delegate.check_happy }
- }.should fail_with("expected happy? to return true, got false")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- delegate = mock("delegate", :check_happy => true)
- lambda {
- Object.new.should be_happy { delegate.check_happy }
- }.should raise_error(NameError)
- end
-end
-
-describe "should_not be_predicate(&block)" do
- it "should pass when actual returns false for :predicate?(&block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:happy?).and_yield
- delegate.should_receive(:check_happy).and_return(false)
- actual.should_not be_happy { delegate.check_happy }
- end
-
- it "should fail when actual returns true for :predicate?(&block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:happy?).and_yield
- delegate.should_receive(:check_happy).and_return(true)
- lambda {
- actual.should_not be_happy { delegate.check_happy }
- }.should fail_with("expected happy? to return false, got true")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- delegate = mock("delegate", :check_happy => true)
- lambda {
- Object.new.should_not be_happy { delegate.check_happy }
- }.should raise_error(NameError)
- end
-end
-
-describe "should be_predicate(*args, &block)" do
- it "should pass when actual returns true for :predicate?(*args, &block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:older_than?).with(3).and_yield(3)
- delegate.should_receive(:check_older_than).with(3).and_return(true)
- actual.should be_older_than(3) { |age| delegate.check_older_than(age) }
- end
-
- it "should fail when actual returns false for :predicate?(*args, &block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:older_than?).with(3).and_yield(3)
- delegate.should_receive(:check_older_than).with(3).and_return(false)
- lambda {
- actual.should be_older_than(3) { |age| delegate.check_older_than(age) }
- }.should fail_with("expected older_than?(3) to return true, got false")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- delegate = mock("delegate", :check_older_than => true)
- lambda {
- Object.new.should be_older_than(3) { |age| delegate.check_older_than(age) }
- }.should raise_error(NameError)
- end
-end
-
-describe "should_not be_predicate(*args, &block)" do
- it "should pass when actual returns false for :predicate?(*args, &block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:older_than?).with(3).and_yield(3)
- delegate.should_receive(:check_older_than).with(3).and_return(false)
- actual.should_not be_older_than(3) { |age| delegate.check_older_than(age) }
- end
-
- it "should fail when actual returns true for :predicate?(*args, &block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:older_than?).with(3).and_yield(3)
- delegate.should_receive(:check_older_than).with(3).and_return(true)
- lambda {
- actual.should_not be_older_than(3) { |age| delegate.check_older_than(age) }
- }.should fail_with("expected older_than?(3) to return false, got true")
- end
-
- it "should fail when actual does not respond to :predicate?" do
- delegate = mock("delegate", :check_older_than => true)
- lambda {
- Object.new.should_not be_older_than(3) { |age| delegate.check_older_than(age) }
- }.should raise_error(NameError)
- end
-end
-
-describe "should be_true" do
- it "should pass when actual equal?(true)" do
- true.should be_true
- end
-
- it "should pass when actual is 1" do
- 1.should be_true
- end
-
- it "should fail when actual equal?(false)" do
- lambda {
- false.should be_true
- }.should fail_with("expected false to be true")
- end
-end
-
-describe "should be_false" do
- it "should pass when actual equal?(false)" do
- false.should be_false
- end
-
- it "should pass when actual equal?(nil)" do
- nil.should be_false
- end
-
- it "should fail when actual equal?(true)" do
- lambda {
- true.should be_false
- }.should fail_with("expected true to be false")
- end
-end
-
-describe "should be_nil" do
- it "should pass when actual is nil" do
- nil.should be_nil
- end
-
- it "should fail when actual is not nil" do
- lambda {
- :not_nil.should be_nil
- }.should fail_with("expected nil, got :not_nil")
- end
-end
-
-describe "should_not be_nil" do
- it "should pass when actual is not nil" do
- :not_nil.should_not be_nil
- end
-
- it "should fail when actual is nil" do
- lambda {
- nil.should_not be_nil
- }.should fail_with("expected not nil, got nil")
- end
-end
-
-describe "should be <" do
- it "should pass when < operator returns true" do
- 3.should be < 4
- end
-
- it "should fail when < operator returns false" do
- lambda { 3.should be < 3 }.should fail_with("expected < 3, got 3")
- end
-
- it "should describe itself" do
- be.<(4).description.should == "be < 4"
- end
-end
-
-describe "should be <=" do
- it "should pass when <= operator returns true" do
- 3.should be <= 4
- 4.should be <= 4
- end
-
- it "should fail when <= operator returns false" do
- lambda { 3.should be <= 2 }.should fail_with("expected <= 2, got 3")
- end
-end
-
-describe "should be >=" do
- it "should pass when >= operator returns true" do
- 4.should be >= 4
- 5.should be >= 4
- end
-
- it "should fail when >= operator returns false" do
- lambda { 3.should be >= 4 }.should fail_with("expected >= 4, got 3")
- end
-end
-
-describe "should be >" do
- it "should pass when > operator returns true" do
- 5.should be > 4
- end
-
- it "should fail when > operator returns false" do
- lambda { 3.should be > 4 }.should fail_with("expected > 4, got 3")
- end
-end
-
-describe "should be ==" do
- it "should pass when == operator returns true" do
- 5.should be == 5
- end
-
- it "should fail when == operator returns false" do
- lambda { 3.should be == 4 }.should fail_with("expected == 4, got 3")
- end
-end
-
-describe "should be ===" do
- it "should pass when === operator returns true" do
- Hash.should be === Hash.new
- end
-
- it "should fail when === operator returns false" do
- lambda { Hash.should be === "not a hash" }.should fail_with(%[expected === not a hash, got Hash])
- end
-end
-
-describe "should_not with operators" do
- it "should coach user to stop using operators with should_not" do
- lambda {
- 5.should_not be < 6
- }.should raise_error(/not only FAILED,\nit is a bit confusing./m)
- end
-end
-
-describe "should be" do
- it "should pass if actual is truthy" do
- true.should be
- 1.should be
- end
-
- it "should fail if actual is false" do
- lambda {false.should be}.should fail_with("expected false to evaluate to true")
- end
-
- it "should fail if actual is nil" do
- lambda {nil.should be}.should fail_with("expected nil to evaluate to true")
- end
-
- it "should describe itself" do
- be.description.should == "be"
- end
-end
-
-describe "should_not be" do
- it "should pass if actual is falsy" do
- false.should_not be
- nil.should_not be
- end
-
- it "should fail on true" do
- lambda {true.should_not be}.should fail_with("expected true to evaluate to false")
- end
-end
-
-describe "should be(value)" do
- it "should pass if actual.equal?(value)" do
- 5.should be(5)
- end
-
- it "should fail if !actual.equal?(value)" do
- lambda { 5.should be(6) }.should fail_with("expected 6, got 5")
- end
-
- it "should describe itself" do
- be(5).description.should == "be 5"
- end
-end
-
-describe "should_not be(value)" do
- it "should pass if !actual.equal?(value)" do
- 5.should_not be(6)
- end
- it "should fail if !actual.equal?(value)" do
- lambda { 5.should_not be(5) }.should fail_with("expected not 5, got 5")
- end
-end
-
-describe "'should be' with operator" do
- it "should include 'be' in the description" do
- (be > 6).description.should =~ /be > 6/
- (be >= 6).description.should =~ /be >= 6/
- (be <= 6).description.should =~ /be <= 6/
- (be < 6).description.should =~ /be < 6/
- end
-end
-
-
-describe "arbitrary predicate with DelegateClass" do
- it "should access methods defined in the delegating class (LH[#48])" do
- require 'delegate'
- class ArrayDelegate < DelegateClass(Array)
- def initialize(array)
- @internal_array = array
- super(@internal_array)
- end
-
- def large?
- @internal_array.size >= 5
- end
- end
-
- delegate = ArrayDelegate.new([1,2,3,4,5,6])
- delegate.should be_large
- end
-end
-
-describe "be_a, be_an" do
- it "should pass when class matches" do
- "foobar".should be_a(String)
- [1,2,3].should be_an(Array)
- end
-
- it "should fail when class does not match" do
- "foobar".should_not be_a(Hash)
- [1,2,3].should_not be_an(Integer)
- end
-end
-
-describe "be_an_instance_of" do
- it "passes when direct class matches" do
- 5.should be_an_instance_of(Fixnum)
- end
-
- it "fails when class is higher up hierarchy" do
- 5.should_not be_an_instance_of(Numeric)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/change_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/change_spec.rb
deleted file mode 100644
index e70daf37d..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/change_spec.rb
+++ /dev/null
@@ -1,349 +0,0 @@
-#Based on patch from Wilson Bilkovich
-
-require 'spec_helper'
-class SomethingExpected
- attr_accessor :some_value
-end
-
-describe "should change(actual, message)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when actual is modified by the block" do
- expect {@instance.some_value = 6}.to change(@instance, :some_value)
- end
-
- it "should fail when actual is not modified by the block" do
- expect do
- expect {}.to change(@instance, :some_value)
- end.to fail_with("some_value should have changed, but is still 5")
- end
-
- it "provides a #description" do
- change(@instance, :some_value).description.should == "change #some_value"
- end
-end
-
-describe "should_not change(actual, message)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when actual is not modified by the block" do
- expect { }.to_not change(@instance, :some_value)
- end
-
- it "should fail when actual is not modified by the block" do
- expect do
- expect {@instance.some_value = 6}.to_not change(@instance, :some_value)
- end.to fail_with("some_value should not have changed, but did change from 5 to 6")
- end
-end
-
-describe "should change { block }" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when actual is modified by the block" do
- expect {@instance.some_value = 6}.to change { @instance.some_value }
- end
-
- it "should fail when actual is not modified by the block" do
- expect do
- expect {}.to change{ @instance.some_value }
- end.to fail_with("result should have changed, but is still 5")
- end
-
- it "should warn if passed a block using do/end instead of {}" do
- expect do
- expect {}.to change do; end
- end.to raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
- end
-
- it "provides a #description" do
- change { @instance.some_value }.description.should == "change #result"
- end
-end
-
-describe "should_not change { block }" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when actual is modified by the block" do
- expect {}.to_not change{ @instance.some_value }
- end
-
- it "should fail when actual is not modified by the block" do
- expect do
- expect {@instance.some_value = 6}.to_not change { @instance.some_value }
- end.to fail_with("result should not have changed, but did change from 5 to 6")
- end
-
- it "should warn if passed a block using do/end instead of {}" do
- expect do
- expect {}.to_not change do; end
- end.to raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
- end
-end
-
-describe "should change(actual, message).by(expected)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when attribute is changed by expected amount" do
- expect { @instance.some_value += 1 }.to change(@instance, :some_value).by(1)
- end
-
- it "should fail when the attribute is changed by unexpected amount" do
- expect do
- expect { @instance.some_value += 2 }.to change(@instance, :some_value).by(1)
- end.to fail_with("some_value should have been changed by 1, but was changed by 2")
- end
-
- it "should fail when the attribute is changed by unexpected amount in the opposite direction" do
- expect do
- expect { @instance.some_value -= 1 }.to change(@instance, :some_value).by(1)
- end.to fail_with("some_value should have been changed by 1, but was changed by -1")
- end
-end
-
-describe "should change{ block }.by(expected)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when attribute is changed by expected amount" do
- expect { @instance.some_value += 1 }.to change{@instance.some_value}.by(1)
- end
-
- it "should fail when the attribute is changed by unexpected amount" do
- expect do
- expect { @instance.some_value += 2 }.to change{@instance.some_value}.by(1)
- end.to fail_with("result should have been changed by 1, but was changed by 2")
- end
-
- it "should fail when the attribute is changed by unexpected amount in the opposite direction" do
- expect do
- expect { @instance.some_value -= 1 }.to change{@instance.some_value}.by(1)
- end.to fail_with("result should have been changed by 1, but was changed by -1")
- end
-end
-
-describe "should change(actual, message).by_at_least(expected)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when attribute is changed by greater than the expected amount" do
- expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_least(1)
- end
-
- it "should pass when attribute is changed by the expected amount" do
- expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_least(2)
- end
-
- it "should fail when the attribute is changed by less than the expected amount" do
- expect do
- expect { @instance.some_value += 1 }.to change(@instance, :some_value).by_at_least(2)
- end.to fail_with("some_value should have been changed by at least 2, but was changed by 1")
- end
-
-end
-
-describe "should change{ block }.by_at_least(expected)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when attribute is changed by greater than expected amount" do
- expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_least(1)
- end
-
- it "should pass when attribute is changed by the expected amount" do
- expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_least(2)
- end
-
- it "should fail when the attribute is changed by less than the unexpected amount" do
- expect do
- expect { @instance.some_value += 1 }.to change{@instance.some_value}.by_at_least(2)
- end.to fail_with("result should have been changed by at least 2, but was changed by 1")
- end
-end
-
-
-describe "should change(actual, message).by_at_most(expected)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when attribute is changed by less than the expected amount" do
- expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(3)
- end
-
- it "should pass when attribute is changed by the expected amount" do
- expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(2)
- end
-
- it "should fail when the attribute is changed by greater than the expected amount" do
- expect do
- expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(1)
- end.to fail_with("some_value should have been changed by at most 1, but was changed by 2")
- end
-
-end
-
-describe "should change{ block }.by_at_most(expected)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 5
- end
-
- it "should pass when attribute is changed by less than expected amount" do
- expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(3)
- end
-
- it "should pass when attribute is changed by the expected amount" do
- expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(2)
- end
-
- it "should fail when the attribute is changed by greater than the unexpected amount" do
- expect do
- expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(1)
- end.to fail_with("result should have been changed by at most 1, but was changed by 2")
- end
-end
-
-describe "should change(actual, message).from(old)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when attribute is == to expected value before executing block" do
- expect { @instance.some_value = "astring" }.to change(@instance, :some_value).from("string")
- end
-
- it "should fail when attribute is not == to expected value before executing block" do
- expect do
- expect { @instance.some_value = "knot" }.to change(@instance, :some_value).from("cat")
- end.to fail_with("some_value should have initially been \"cat\", but was \"string\"")
- end
-end
-
-describe "should change{ block }.from(old)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when attribute is == to expected value before executing block" do
- expect { @instance.some_value = "astring" }.to change{@instance.some_value}.from("string")
- end
-
- it "should fail when attribute is not == to expected value before executing block" do
- expect do
- expect { @instance.some_value = "knot" }.to change{@instance.some_value}.from("cat")
- end.to fail_with("result should have initially been \"cat\", but was \"string\"")
- end
-end
-
-describe "should change(actual, message).to(new)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when attribute is == to expected value after executing block" do
- expect { @instance.some_value = "cat" }.to change(@instance, :some_value).to("cat")
- end
-
- it "should fail when attribute is not == to expected value after executing block" do
- expect do
- expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("dog")
- end.to fail_with("some_value should have been changed to \"dog\", but is now \"cat\"")
- end
-end
-
-describe "should change{ block }.to(new)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when attribute is == to expected value after executing block" do
- expect { @instance.some_value = "cat" }.to change{@instance.some_value}.to("cat")
- end
-
- it "should fail when attribute is not == to expected value after executing block" do
- expect do
- expect { @instance.some_value = "cat" }.to change{@instance.some_value}.from("string").to("dog")
- end.to fail_with("result should have been changed to \"dog\", but is now \"cat\"")
- end
-end
-
-describe "should change(actual, message).from(old).to(new)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when #to comes before #from" do
- expect { @instance.some_value = "cat" }.to change(@instance, :some_value).to("cat").from("string")
- end
-
- it "should pass when #from comes before #to" do
- expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("cat")
- end
-
- it "should show the correct messaging when #after and #to are different" do
- expect do
- expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("dog")
- end.to fail_with("some_value should have been changed to \"dog\", but is now \"cat\"")
- end
-
- it "should show the correct messaging when #before and #from are different" do
- expect do
- expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("not_string").to("cat")
- end.to fail_with("some_value should have initially been \"not_string\", but was \"string\"")
- end
-end
-
-describe "should change{ block }.from(old).to(new)" do
- before(:each) do
- @instance = SomethingExpected.new
- @instance.some_value = 'string'
- end
-
- it "should pass when #to comes before #from" do
- expect { @instance.some_value = "cat" }.to change{@instance.some_value}.to("cat").from("string")
- end
-
- it "should pass when #from comes before #to" do
- expect { @instance.some_value = "cat" }.to change{@instance.some_value}.from("string").to("cat")
- end
-end
-
-describe Spec::Matchers::Change do
- it "should work when the receiver has implemented #send" do
- @instance = SomethingExpected.new
- @instance.some_value = "string"
- def @instance.send(*args); raise "DOH! Library developers shouldn't use #send!" end
-
- expect {
- expect { @instance.some_value = "cat" }.to change(@instance, :some_value)
- }.to_not raise_error
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/compatibility_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/compatibility_spec.rb
deleted file mode 100644
index 3987e590f..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/compatibility_spec.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'spec_helper'
-
-Spec::Matchers.define :have_public_instance_method do |method|
- match do |klass|
- klass.public_instance_methods.any? {|m| [method, method.to_sym].include?(m)}
- end
-end
-
-(Spec::Matchers.constants.sort).each do |c|
- if (Class === (klass = Spec::Matchers.const_get(c)))
- describe klass do
- if klass.public_instance_methods.any? {|m| ['failure_message_for_should',:failure_message_for_should].include?(m)}
- describe "called with should" do
- subject { klass }
- it { should have_public_instance_method('failure_message_for_should')}
- it { should have_public_instance_method('failure_message')}
- end
- end
- if klass.public_instance_methods.any? {|m| ['failure_message_for_should_not',:failure_message_for_should_not].include?(m)}
- describe "called with should not" do
- subject { klass }
- it { should have_public_instance_method('failure_message_for_should_not')}
- it { should have_public_instance_method('negative_failure_message')}
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/description_generation_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/description_generation_spec.rb
deleted file mode 100644
index 51b483c74..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/description_generation_spec.rb
+++ /dev/null
@@ -1,160 +0,0 @@
-require 'spec_helper'
-
-describe "Matchers should be able to generate their own descriptions" do
- after(:each) do
- Spec::Matchers.clear_generated_description
- end
-
- it "should == expected" do
- "this".should == "this"
- Spec::Matchers.generated_description.should == "should == \"this\""
- end
-
- it "should not == expected" do
- "this".should_not == "that"
- Spec::Matchers.generated_description.should == "should not == \"that\""
- end
-
- it "should be empty (arbitrary predicate)" do
- [].should be_empty
- Spec::Matchers.generated_description.should == "should be empty"
- end
-
- it "should not be empty (arbitrary predicate)" do
- [1].should_not be_empty
- Spec::Matchers.generated_description.should == "should not be empty"
- end
-
- it "should be true" do
- true.should be_true
- Spec::Matchers.generated_description.should == "should be true"
- end
-
- it "should be false" do
- false.should be_false
- Spec::Matchers.generated_description.should == "should be false"
- end
-
- it "should be nil" do
- nil.should be_nil
- Spec::Matchers.generated_description.should == "should be nil"
- end
-
- it "should be > n" do
- 5.should be > 3
- Spec::Matchers.generated_description.should == "should be > 3"
- end
-
- it "should be predicate arg1, arg2 and arg3" do
- 5.0.should be_between(0,10)
- Spec::Matchers.generated_description.should == "should be between 0 and 10"
- end
-
- it "should equal" do
- expected = "expected"
- expected.should equal(expected)
- Spec::Matchers.generated_description.should == "should equal \"expected\""
- end
-
- it "should_not equal" do
- 5.should_not equal(37)
- Spec::Matchers.generated_description.should == "should not equal 37"
- end
-
- it "should eql" do
- "string".should eql("string")
- Spec::Matchers.generated_description.should == "should eql \"string\""
- end
-
- it "should not eql" do
- "a".should_not eql(:a)
- Spec::Matchers.generated_description.should == "should not eql :a"
- end
-
- it "should have_key" do
- {:a => "a"}.should have_key(:a)
- Spec::Matchers.generated_description.should == "should have key :a"
- end
-
- it "should have n items" do
- team.should have(3).players
- Spec::Matchers.generated_description.should == "should have 3 players"
- end
-
- it "should have at least n items" do
- team.should have_at_least(2).players
- Spec::Matchers.generated_description.should == "should have at least 2 players"
- end
-
- it "should have at most n items" do
- team.should have_at_most(4).players
- Spec::Matchers.generated_description.should == "should have at most 4 players"
- end
-
- it "should include" do
- [1,2,3].should include(3)
- Spec::Matchers.generated_description.should == "should include 3"
- end
-
- it "array.should =~ [1,2,3]" do
- [1,2,3].should =~ [1,2,3]
- Spec::Matchers.generated_description.should == "should contain exactly 1, 2 and 3"
- end
-
- it "should match" do
- "this string".should match(/this string/)
- Spec::Matchers.generated_description.should == "should match /this string/"
- end
-
- it "should raise_error" do
- lambda { raise }.should raise_error
- Spec::Matchers.generated_description.should == "should raise Exception"
- end
-
- it "should raise_error with type" do
- lambda { raise }.should raise_error(RuntimeError)
- Spec::Matchers.generated_description.should == "should raise RuntimeError"
- end
-
- it "should raise_error with type and message" do
- lambda { raise "there was an error" }.should raise_error(RuntimeError, "there was an error")
- Spec::Matchers.generated_description.should == "should raise RuntimeError with \"there was an error\""
- end
-
- it "should respond_to" do
- [].should respond_to(:insert)
- Spec::Matchers.generated_description.should == "should respond to #insert"
- end
-
- it "should throw symbol" do
- lambda { throw :what_a_mess }.should throw_symbol
- Spec::Matchers.generated_description.should == "should throw a Symbol"
- end
-
- it "should throw symbol (with named symbol)" do
- lambda { throw :what_a_mess }.should throw_symbol(:what_a_mess)
- Spec::Matchers.generated_description.should == "should throw :what_a_mess"
- end
-
- def team
- Class.new do
- def players
- [1,2,3]
- end
- end.new
- end
-end
-
-describe "a Matcher with no description" do
- def matcher
- Class.new do
- def matches?(ignore); true; end
- def failure_message; ""; end
- end.new
- end
-
- it "should provide a helpful message when used in a string-less example block" do
- 5.should matcher
- Spec::Matchers.generated_description.should =~ /When you call.*description method/m
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/dsl_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/dsl_spec.rb
deleted file mode 100644
index 9c280e5ae..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/dsl_spec.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Matchers
- module DSL
- describe "#create" do
- it "is deprecated" do
- Spec.should_receive(:deprecate)
- mod = Module.new
- mod.extend Spec::Matchers::DSL
- mod.create(:foo)
- end
- end
-
- describe "#define" do
- it "creates a method that initializes a new matcher with the submitted name and expected arg" do
- # FIXME - this expects new to be called, but we need something
- # more robust - that expects new to be called with a specific
- # block (lambda, proc, whatever)
- mod = Module.new
- mod.extend Spec::Matchers::DSL
- mod.define(:foo)
-
- obj = Object.new
- obj.extend mod
-
- Spec::Matchers::Matcher.should_receive(:new).with(:foo, 3)
-
- obj.foo(3)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/eql_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/eql_spec.rb
deleted file mode 100644
index 5cdf541eb..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/eql_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Matchers
- describe "eql" do
- it "should match when actual.eql?(expected)" do
- 1.should eql(1)
- end
-
- it "should not match when !actual.eql?(expected)" do
- 1.should_not eql(2)
- end
-
- it "should describe itself" do
- matcher = eql(1)
- matcher.matches?(1)
- matcher.description.should == "eql 1"
- end
-
- it "should provide message, expected and actual on #failure_message" do
- matcher = eql("1")
- matcher.matches?(1)
- matcher.failure_message_for_should.should == "\nexpected \"1\"\n got 1\n\n(compared using eql?)\n"
- end
-
- it "should provide message, expected and actual on #negative_failure_message" do
- matcher = eql(1)
- matcher.matches?(1)
- matcher.failure_message_for_should_not.should == "\nexpected 1 not to equal 1\n\n(compared using eql?)\n"
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/equal_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/equal_spec.rb
deleted file mode 100644
index cb2fc1e51..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/equal_spec.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'spec_helper'
-module Spec
- module Matchers
- describe "equal" do
-
- def inspect_object(o)
- "#<#{o.class}:#{o.object_id}> => #{o.inspect}"
- end
-
- it "should match when actual.equal?(expected)" do
- 1.should equal(1)
- end
-
- it "should not match when !actual.equal?(expected)" do
- 1.should_not equal("1")
- end
-
- it "should describe itself" do
- matcher = equal(1)
- matcher.matches?(1)
- matcher.description.should == "equal 1"
- end
-
- it "should provide message on #failure_message" do
- expected, actual = "1", "1"
- matcher = equal(expected)
- matcher.matches?(actual)
-
- matcher.failure_message_for_should.should == <<-MESSAGE
-
-expected #{inspect_object(expected)}
- got #{inspect_object(actual)}
-
-Compared using equal?, which compares object identity,
-but expected and actual are not the same object. Use
-'actual.should == expected' if you don't care about
-object identity in this example.
-
-MESSAGE
- end
-
- it "should provide message on #negative_failure_message" do
- expected = actual = "1"
- matcher = equal(expected)
- matcher.matches?(actual)
- matcher.failure_message_for_should_not.should == <<-MESSAGE
-
-expected not #{inspect_object(expected)}
- got #{inspect_object(actual)}
-
-Compared using equal?, which compares object identity.
-
-MESSAGE
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/exist_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/exist_spec.rb
deleted file mode 100644
index f95c86ff8..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/exist_spec.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require 'spec_helper'
-
-class Substance
- def initialize exists, description
- @exists = exists
- @description = description
- end
- def exist?(arg=nil)
- @exists
- end
- def inspect
- @description
- end
-end
-
-class SubstanceTester
- include Spec::Matchers
- def initialize substance
- @substance = substance
- end
- def should_exist
- @substance.should exist
- end
-end
-
-describe "should exist" do
-
- before(:each) do
- @real = Substance.new true, 'something real'
- @imaginary = Substance.new false, 'something imaginary'
- end
-
- describe "within an example group" do
-
- it "passes if target exists" do
- @real.should exist
- end
-
- it "passes if target exists with args" do
- @real.should exist('this arg')
- end
-
- it "fails if target does not exist" do
- lambda { @imaginary.should exist }.should fail
- end
-
- it "describes itself" do
- exist.description.should == "exist"
- end
-
- it "passes should_not exist if target doesn't exist" do
- lambda { @real.should_not exist }.should fail
- end
- end
-
- describe "outside of an example group" do
-
- it "should pass if target exists" do
- real_tester = SubstanceTester.new @real
- real_tester.should_exist
- end
-
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/has_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/has_spec.rb
deleted file mode 100644
index f77e70274..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/has_spec.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-require 'spec_helper'
-
-describe "should have_sym(*args)" do
- it "should pass if #has_sym?(*args) returns true" do
- {:a => "A"}.should have_key(:a)
- end
-
- it "should fail if #has_sym?(*args) returns false" do
- lambda {
- {:b => "B"}.should have_key(:a)
- }.should fail_with("expected #has_key?(:a) to return true, got false")
- end
-
- it "should fail if #has_sym?(*args) returns nil" do
- klass = Class.new do
- def has_foo?
- end
- end
- lambda {
- klass.new.should have_foo
- }.should fail_with("expected #has_foo?(nil) to return true, got false")
- end
-
- it "should fail if target does not respond to #has_sym?" do
- lambda {
- Object.new.should have_key(:a)
- }.should raise_error(NoMethodError)
- end
-
- it "should reraise an exception thrown in #has_sym?(*args)" do
- o = Object.new
- def o.has_sym?(*args)
- raise "Funky exception"
- end
- lambda { o.should have_sym(:foo) }.should raise_error("Funky exception")
- end
-end
-
-describe "should_not have_sym(*args)" do
- it "should pass if #has_sym?(*args) returns false" do
- {:a => "A"}.should_not have_key(:b)
- end
-
- it "should pass if #has_sym?(*args) returns nil" do
- klass = Class.new do
- def has_foo?
- end
- end
- klass.new.should_not have_foo
- end
-
- it "should fail if #has_sym?(*args) returns true" do
- lambda {
- {:a => "A"}.should_not have_key(:a)
- }.should fail_with("expected #has_key?(:a) to return false, got true")
- end
-
- it "should fail if target does not respond to #has_sym?" do
- lambda {
- Object.new.should have_key(:a)
- }.should raise_error(NoMethodError)
- end
-
- it "should reraise an exception thrown in #has_sym?(*args)" do
- o = Object.new
- def o.has_sym?(*args)
- raise "Funky exception"
- end
- lambda { o.should_not have_sym(:foo) }.should raise_error("Funky exception")
- end
-end
-
-describe "should have_sym(&block)" do
- it "should pass when actual returns true for :has_sym?(&block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:has_foo?).and_yield
- delegate.should_receive(:check_has_foo).and_return(true)
- actual.should have_foo { delegate.check_has_foo }
- end
-
- it "should fail when actual returns false for :has_sym?(&block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:has_foo?).and_yield
- delegate.should_receive(:check_has_foo).and_return(false)
- lambda {
- actual.should have_foo { delegate.check_has_foo }
- }.should fail_with("expected #has_foo?(nil) to return true, got false")
- end
-
- it "should fail when actual does not respond to :has_sym?" do
- delegate = mock("delegate", :check_has_foo => true)
- lambda {
- Object.new.should have_foo { delegate.check_has_foo }
- }.should raise_error(NameError)
- end
-end
-
-describe "should_not have_sym(&block)" do
- it "should pass when actual returns false for :has_sym?(&block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:has_foo?).and_yield
- delegate.should_receive(:check_has_foo).and_return(false)
- actual.should_not have_foo { delegate.check_has_foo }
- end
-
- it "should fail when actual returns true for :has_sym?(&block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:has_foo?).and_yield
- delegate.should_receive(:check_has_foo).and_return(true)
- lambda {
- actual.should_not have_foo { delegate.check_has_foo }
- }.should fail_with("expected #has_foo?(nil) to return false, got true")
- end
-
- it "should fail when actual does not respond to :has_sym?" do
- delegate = mock("delegate", :check_has_foo => true)
- lambda {
- Object.new.should_not have_foo { delegate.check_has_foo }
- }.should raise_error(NameError)
- end
-end
-
-describe "should have_sym(*args, &block)" do
- it "should pass when actual returns true for :has_sym?(*args, &block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:has_foo?).with(:a).and_yield(:a)
- delegate.should_receive(:check_has_foo).with(:a).and_return(true)
- actual.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
- end
-
- it "should fail when actual returns false for :has_sym?(*args, &block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:has_foo?).with(:a).and_yield(:a)
- delegate.should_receive(:check_has_foo).with(:a).and_return(false)
- lambda {
- actual.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
- }.should fail_with("expected #has_foo?(:a) to return true, got false")
- end
-
- it "should fail when actual does not respond to :has_sym?" do
- delegate = mock("delegate", :check_has_foo => true)
- lambda {
- Object.new.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
- }.should raise_error(NameError)
- end
-end
-
-describe "should_not have_sym(*args, &block)" do
- it "should pass when actual returns false for :has_sym?(*args, &block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:has_foo?).with(:a).and_yield(:a)
- delegate.should_receive(:check_has_foo).with(:a).and_return(false)
- actual.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
- end
-
- it "should fail when actual returns true for :has_sym?(*args, &block)" do
- actual = mock("actual")
- delegate = mock("delegate")
- actual.should_receive(:has_foo?).with(:a).and_yield(:a)
- delegate.should_receive(:check_has_foo).with(:a).and_return(true)
- lambda {
- actual.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
- }.should fail_with("expected #has_foo?(:a) to return false, got true")
- end
-
- it "should fail when actual does not respond to :has_sym?" do
- delegate = mock("delegate", :check_has_foo => true)
- lambda {
- Object.new.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
- }.should raise_error(NameError)
- end
-end
-
-
-describe "has" do
- it "should work when the target implements #send" do
- o = {:a => "A"}
- def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
- lambda {
- o.should have_key(:a)
- }.should_not raise_error
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/have_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/have_spec.rb
deleted file mode 100644
index e514acabe..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/have_spec.rb
+++ /dev/null
@@ -1,381 +0,0 @@
-require 'spec_helper'
-
-describe "have matcher" do
-
- def create_collection_owner_with(n)
- owner = Spec::Expectations::Helper::CollectionOwner.new
- (1..n).each do |number|
- owner.add_to_collection_with_length_method(number)
- owner.add_to_collection_with_size_method(number)
- end
- owner
- end
-
- before(:each) do
- if defined?(::ActiveSupport::Inflector)
- @active_support_was_defined = true
- else
- @active_support_was_defined = false
- module ::ActiveSupport
- class Inflector
- def self.pluralize(string)
- string.to_s + 's'
- end
- end
- end
- end
- end
-
- describe "should have(n).items" do
- it "should pass if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- owner.should have(3).items_in_collection_with_length_method
- owner.should have(3).items_in_collection_with_size_method
- end
-
- it "should convert :no to 0" do
- owner = create_collection_owner_with(0)
- owner.should have(:no).items_in_collection_with_length_method
- owner.should have(:no).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have(4).items_in_collection_with_length_method
- }.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have(4).items_in_collection_with_size_method
- }.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
- end
-
- it "should fail if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have(2).items_in_collection_with_length_method
- }.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have(2).items_in_collection_with_size_method
- }.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
- end
- end
-
- describe 'should have(1).item when ActiveSupport::Inflector is defined' do
- it 'should pluralize the collection name' do
- owner = create_collection_owner_with(1)
- owner.should have(1).item
- end
-
- after(:each) do
- unless @active_support_was_defined
- Object.__send__ :remove_const, :ActiveSupport
- end
- end
- end
-
- describe 'should have(1).item when Inflector is defined' do
- before(:each) do
- if defined?(Inflector)
- @inflector_was_defined = true
- else
- @inflector_was_defined = false
- class ::Inflector
- def self.pluralize(string)
- string.to_s + 's'
- end
- end
- end
- end
-
- it 'should pluralize the collection name' do
- owner = create_collection_owner_with(1)
- owner.should have(1).item
- end
-
- after(:each) do
- unless @inflector_was_defined
- Object.__send__ :remove_const, :Inflector
- end
- end
- end
-
- describe "should have(n).items where result responds to items but returns something other than a collection" do
- it "should provide a meaningful error" do
- owner = Class.new do
- def items
- Object.new
- end
- end.new
- lambda do
- owner.should have(3).items
- end.should raise_error("expected items to be a collection but it does not respond to #length or #size")
- end
- end
-
- describe "should_not have(n).items" do
- it "should pass if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- owner.should_not have(4).items_in_collection_with_length_method
- owner.should_not have(4).items_in_collection_with_size_method
- end
-
- it "should pass if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- owner.should_not have(2).items_in_collection_with_length_method
- owner.should_not have(2).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should_not have(3).items_in_collection_with_length_method
- }.should fail_with("expected target not to have 3 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should_not have(3).items_in_collection_with_size_method
- }.should fail_with("expected target not to have 3 items_in_collection_with_size_method, got 3")
- end
- end
-
- describe "should have_exactly(n).items" do
- it "should pass if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- owner.should have_exactly(3).items_in_collection_with_length_method
- owner.should have_exactly(3).items_in_collection_with_size_method
- end
-
- it "should convert :no to 0" do
- owner = create_collection_owner_with(0)
- owner.should have_exactly(:no).items_in_collection_with_length_method
- owner.should have_exactly(:no).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have_exactly(4).items_in_collection_with_length_method
- }.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have_exactly(4).items_in_collection_with_size_method
- }.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
- end
-
- it "should fail if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have_exactly(2).items_in_collection_with_length_method
- }.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have_exactly(2).items_in_collection_with_size_method
- }.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
- end
- end
-
- describe "should have_at_least(n).items" do
- it "should pass if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- owner.should have_at_least(3).items_in_collection_with_length_method
- owner.should have_at_least(3).items_in_collection_with_size_method
- end
-
- it "should pass if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- owner.should have_at_least(2).items_in_collection_with_length_method
- owner.should have_at_least(2).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have_at_least(4).items_in_collection_with_length_method
- }.should fail_with("expected at least 4 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have_at_least(4).items_in_collection_with_size_method
- }.should fail_with("expected at least 4 items_in_collection_with_size_method, got 3")
- end
-
- it "should provide educational negative failure messages" do
- #given
- owner = create_collection_owner_with(3)
- length_matcher = have_at_least(3).items_in_collection_with_length_method
- size_matcher = have_at_least(3).items_in_collection_with_size_method
-
- #when
- length_matcher.matches?(owner)
- size_matcher.matches?(owner)
-
- #then
- length_matcher.failure_message_for_should_not.should == <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_least(3).items_in_collection_with_length_method
-We recommend that you use this instead:
- should have_at_most(2).items_in_collection_with_length_method
-EOF
-
- size_matcher.failure_message_for_should_not.should == <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_least(3).items_in_collection_with_size_method
-We recommend that you use this instead:
- should have_at_most(2).items_in_collection_with_size_method
-EOF
- end
- end
-
- describe "should have_at_most(n).items" do
- it "should pass if target has a collection of items with n members" do
- owner = create_collection_owner_with(3)
- owner.should have_at_most(3).items_in_collection_with_length_method
- owner.should have_at_most(3).items_in_collection_with_size_method
- end
-
- it "should fail if target has a collection of items with > n members" do
- owner = create_collection_owner_with(3)
- lambda {
- owner.should have_at_most(2).items_in_collection_with_length_method
- }.should fail_with("expected at most 2 items_in_collection_with_length_method, got 3")
- lambda {
- owner.should have_at_most(2).items_in_collection_with_size_method
- }.should fail_with("expected at most 2 items_in_collection_with_size_method, got 3")
- end
-
- it "should pass if target has a collection of items with < n members" do
- owner = create_collection_owner_with(3)
- owner.should have_at_most(4).items_in_collection_with_length_method
- owner.should have_at_most(4).items_in_collection_with_size_method
- end
-
- it "should provide educational negative failure messages" do
- #given
- owner = create_collection_owner_with(3)
- length_matcher = have_at_most(3).items_in_collection_with_length_method
- size_matcher = have_at_most(3).items_in_collection_with_size_method
-
- #when
- length_matcher.matches?(owner)
- size_matcher.matches?(owner)
-
- #then
- length_matcher.failure_message_for_should_not.should == <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_most(3).items_in_collection_with_length_method
-We recommend that you use this instead:
- should have_at_least(4).items_in_collection_with_length_method
-EOF
-
- size_matcher.failure_message_for_should_not.should == <<-EOF
-Isn't life confusing enough?
-Instead of having to figure out the meaning of this:
- should_not have_at_most(3).items_in_collection_with_size_method
-We recommend that you use this instead:
- should have_at_least(4).items_in_collection_with_size_method
-EOF
- end
- end
-
- describe "have(n).items(args, block)" do
- it "should pass args to target" do
- target = mock("target")
- target.should_receive(:items).with("arg1","arg2").and_return([1,2,3])
- target.should have(3).items("arg1","arg2")
- end
-
- it "should pass block to target" do
- target = mock("target")
- block = lambda { 5 }
- target.should_receive(:items).with("arg1","arg2", block).and_return([1,2,3])
- target.should have(3).items("arg1","arg2", block)
- end
- end
-
- describe "have(n).items where target IS a collection" do
- it "should reference the number of items IN the collection" do
- [1,2,3].should have(3).items
- end
-
- it "should fail when the number of items IN the collection is not as expected" do
- lambda { [1,2,3].should have(7).items }.should fail_with("expected 7 items, got 3")
- end
- end
-
- describe "have(n).characters where target IS a String" do
- it "should pass if the length is correct" do
- "this string".should have(11).characters
- end
-
- it "should fail if the length is incorrect" do
- lambda { "this string".should have(12).characters }.should fail_with("expected 12 characters, got 11")
- end
- end
-
- describe "have(n).things on an object which is not a collection nor contains one" do
- it "should fail" do
- lambda { Object.new.should have(2).things }.should raise_error(NoMethodError, /undefined method `things' for #<Object:/)
- end
- end
-
- describe Spec::Matchers::Have, "for a collection owner that implements #send" do
- before(:each) do
- @collection = Object.new
- def @collection.floozles; [1,2] end
- def @collection.send(*args); raise "DOH! Library developers shouldn't use #send!" end
- end
-
- it "should work in the straightforward case" do
- lambda {
- @collection.should have(2).floozles
- }.should_not raise_error
- end
-
- it "should work when doing automatic pluralization" do
- lambda {
- @collection.should have_at_least(1).floozle
- }.should_not raise_error
- end
-
- it "should blow up when the owner doesn't respond to that method" do
- lambda {
- @collection.should have(99).problems
- }.should raise_error(NoMethodError, /problems/)
- end
- end
-
- module Spec
- module Matchers
- describe Have do
- treats_method_missing_as_private :noop => false
-
- describe "respond_to?" do
- before :each do
- @have = Have.new(:foo)
- @a_method_which_have_defines = Have.instance_methods.first
- @a_method_which_object_defines = Object.instance_methods.first
- end
-
- it "should be true for a method which Have defines" do
- @have.should respond_to(@a_method_which_have_defines)
- end
-
- it "should be true for a method that it's superclass (Object) defines" do
- @have.should respond_to(@a_method_which_object_defines)
- end
-
- it "should be false for a method which neither Object nor nor Have defines" do
- @have.should_not respond_to(:foo_bar_baz)
- end
-
- it "should be false if the owner doesn't respond to the method" do
- have = Have.new(99)
- have.should_not respond_to(:problems)
- end
-
- it "should be true if the owner responds to the method" do
- have = Have.new(:a_symbol)
- have.should respond_to(:to_sym)
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/include_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/include_spec.rb
deleted file mode 100644
index 2b959b589..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/include_spec.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-require 'spec_helper'
-
-describe "should include(expected)" do
- it "should pass if target includes expected" do
- [1,2,3].should include(3)
- "abc".should include("a")
- end
-
- it 'should pass if target is a Hash and has the expected as a key' do
- {:key => 'value'}.should include(:key)
- end
-
- it "should fail if target does not include expected" do
- lambda {
- [1,2,3].should include(4)
- }.should fail_with("expected [1, 2, 3] to include 4")
- lambda {
- "abc".should include("d")
- }.should fail_with("expected \"abc\" to include \"d\"")
- lambda {
- {:key => 'value'}.should include(:other)
- }.should fail_with(%Q|expected {:key=>"value"} to include :other|)
- end
-end
-
-describe "should include(with, multiple, args)" do
- it "should pass if target includes all items" do
- [1,2,3].should include(1,2,3)
- end
-
- it 'should pass if target is a Hash including all items as keys' do
- {:key => 'value', :other => 'value'}.should include(:key, :other)
- end
-
- it "should fail if target does not include any one of the items" do
- lambda {
- [1,2,3].should include(1,2,4)
- }.should fail_with("expected [1, 2, 3] to include 1, 2, and 4")
- end
-
- it 'should pass if target is a Hash missing any item as a key' do
- lambda {
- {:key => 'value'}.should include(:key, :other)
- }.should fail_with(%Q|expected {:key=>"value"} to include :key and :other|)
- end
-end
-
-describe "should_not include(expected)" do
- it "should pass if target does not include expected" do
- [1,2,3].should_not include(4)
- "abc".should_not include("d")
- end
-
- it 'should pass if target is a Hash and does not have the expected as a key' do
- {:other => 'value'}.should_not include(:key)
- end
-
- it "should fail if target includes expected" do
- lambda {
- [1,2,3].should_not include(3)
- }.should fail_with("expected [1, 2, 3] not to include 3")
- lambda {
- "abc".should_not include("c")
- }.should fail_with("expected \"abc\" not to include \"c\"")
- lambda {
- {:key => 'value'}.should_not include(:key)
- }.should fail_with(%Q|expected {:key=>"value"} not to include :key|)
- end
-end
-
-describe "should include(:key => value)" do
- it "should pass if target is a Hash and includes the key/value pair" do
- {:key => 'value'}.should include(:key => 'value')
- end
- it "should pass if target is a Hash and includes the key/value pair among others" do
- {:key => 'value', :other => 'different'}.should include(:key => 'value')
- end
- it "should fail if target is a Hash and has a different value for key" do
- lambda {
- {:key => 'different'}.should include(:key => 'value')
- }.should fail_with(%Q|expected {:key=>"different"} to include {:key=>"value"}|)
- end
- it "should fail if target is a Hash and has a different key" do
- lambda {
- {:other => 'value'}.should include(:key => 'value')
- }.should fail_with(%Q|expected {:other=>"value"} to include {:key=>"value"}|)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/match_array_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/match_array_spec.rb
deleted file mode 100644
index 313acf46e..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/match_array_spec.rb
+++ /dev/null
@@ -1,115 +0,0 @@
-require 'spec_helper'
-
-class UnsortableObject
- def initialize(id)
- @id = id
- end
-
- def inspect
- @id.to_s
- end
-
- def ==(other)
- false
- end
-end
-
-describe "array.should =~ other_array" do
- it "should pass if target contains all items" do
- [1,2,3].should =~ [1,2,3]
- end
-
- it "should pass if target contains all items out of order" do
- [1,3,2].should =~ [1,2,3]
- end
-
- it "should fail if target includes extra items" do
- lambda {
- [1,2,3,4].should =~ [1,2,3]
- }.should fail_with(<<-MESSAGE)
-expected collection contained: [1, 2, 3]
-actual collection contained: [1, 2, 3, 4]
-the extra elements were: [4]
-MESSAGE
- end
-
- it "should fail if target is missing items" do
- lambda {
- [1,2].should =~ [1,2,3]
- }.should fail_with(<<-MESSAGE)
-expected collection contained: [1, 2, 3]
-actual collection contained: [1, 2]
-the missing elements were: [3]
-MESSAGE
- end
-
- it "should fail if target is missing items and has extra items" do
-
- lambda {
- [1,2,4].should =~ [1,2,3]
- }.should fail_with(<<-MESSAGE)
-expected collection contained: [1, 2, 3]
-actual collection contained: [1, 2, 4]
-the missing elements were: [3]
-the extra elements were: [4]
-MESSAGE
- end
-
- it "should sort items in the error message if they all respond to <=>" do
- lambda {
- [6,2,1,5].should =~ [4,1,2,3]
- }.should fail_with(<<-MESSAGE)
-expected collection contained: [1, 2, 3, 4]
-actual collection contained: [1, 2, 5, 6]
-the missing elements were: [3, 4]
-the extra elements were: [5, 6]
-MESSAGE
- end
-
- it "should not sort items in the error message if they don't all respond to <=>" do
- with_ruby 1.8 do
- lambda {
- [UnsortableObject.new(2), UnsortableObject.new(1)].should =~ [UnsortableObject.new(4), UnsortableObject.new(3)]
- }.should fail_with(<<-MESSAGE)
-expected collection contained: [4, 3]
-actual collection contained: [2, 1]
-the missing elements were: [4, 3]
-the extra elements were: [2, 1]
-MESSAGE
- end
- end
-
- it "should accurately report extra elements when there are duplicates" do
- lambda {
- [1,1,1,5].should =~ [1,5]
- }.should fail_with(<<-MESSAGE)
-expected collection contained: [1, 5]
-actual collection contained: [1, 1, 1, 5]
-the extra elements were: [1, 1]
-MESSAGE
- end
-
- it "should accurately report missing elements when there are duplicates" do
- lambda {
- [1,5].should =~ [1,1,5]
- }.should fail_with(<<-MESSAGE)
-expected collection contained: [1, 1, 5]
-actual collection contained: [1, 5]
-the missing elements were: [1]
-MESSAGE
- end
-
- it "should work with subclasses of Array" do
- class SuperArray < Array; end
- SuperArray.new([1,2,3]).should =~ SuperArray.new([3,2,1])
- end
-
-end
-
-describe "should_not =~ [:with, :multiple, :args]" do
- it "should not be supported" do
- lambda {
- [1,2,3].should_not =~ [1,2,3]
- }.should fail_with(/Matcher does not support should_not/)
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/match_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/match_spec.rb
deleted file mode 100644
index e5dc800a6..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/match_spec.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'spec_helper'
-
-describe "should match(expected)" do
- it "should pass when target (String) matches expected (Regexp)" do
- "string".should match(/tri/)
- end
-
- it "should pass when target (String) matches expected (String)" do
- "string".should match("tri")
- end
-
- it "should fail when target (String) does not match expected (Regexp)" do
- lambda {
- "string".should match(/rings/)
- }.should fail
- end
-
- it "should fail when target (String) does not match expected (String)" do
- lambda {
- "string".should match("rings")
- }.should fail
- end
-
- it "should provide message, expected and actual on failure" do
- matcher = match(/rings/)
- matcher.matches?("string")
- matcher.failure_message_for_should.should == "expected \"string\" to match /rings/"
- end
-end
-
-describe "should_not match(expected)" do
- it "should pass when target (String) matches does not match (Regexp)" do
- "string".should_not match(/rings/)
- end
-
- it "should pass when target (String) matches does not match (String)" do
- "string".should_not match("rings")
- end
-
- it "should fail when target (String) matches expected (Regexp)" do
- lambda {
- "string".should_not match(/tri/)
- }.should fail
- end
-
- it "should fail when target (String) matches expected (String)" do
- lambda {
- "string".should_not match("tri")
- }.should fail
- end
-
- it "should provide message, expected and actual on failure" do
- matcher = match(/tri/)
- matcher.matches?("string")
- matcher.failure_message_for_should_not.should == "expected \"string\" not to match /tri/"
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/matcher_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/matcher_spec.rb
deleted file mode 100644
index b933cfc90..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/matcher_spec.rb
+++ /dev/null
@@ -1,289 +0,0 @@
-require 'spec_helper'
-
-class UnexpectedError < StandardError; end
-
-module Spec
- module Matchers
- describe Matcher do
- context "without overrides" do
- before(:each) do
- @matcher = Spec::Matchers::Matcher.new(:be_a_multiple_of, 3) do |multiple|
- match do |actual|
- actual % multiple == 0
- end
- end
- end
-
- it "provides a default description" do
- @matcher.description.should == "be a multiple of 3"
- end
-
- it "provides a default failure message for #should" do
- @matcher.matches?(8)
- @matcher.failure_message_for_should.should == "expected 8 to be a multiple of 3"
- end
-
- it "provides a default failure message for #should_not" do
- @matcher.matches?(9)
- @matcher.failure_message_for_should_not.should == "expected 9 not to be a multiple of 3"
- end
- end
-
- it "is not diffable by default" do
- matcher = Spec::Matchers::Matcher.new(:name) {}
- matcher.should_not be_diffable
- end
-
- it "is diffable when told to be" do
- matcher = Spec::Matchers::Matcher.new(:name) { diffable }
- matcher.should be_diffable
- end
-
- it "provides expected" do
- matcher = Spec::Matchers::Matcher.new(:name, 'expected string') {}
- matcher.expected.should == ['expected string']
- end
-
- it "provides actual" do
- matcher = Spec::Matchers::Matcher.new(:name, 'expected string') do
- match {|actual|}
- end
-
- matcher.matches?('actual string')
-
- matcher.actual.should == 'actual string'
- end
-
- context "wrapping another expectation (should == ...)" do
- it "returns true if the wrapped expectation passes" do
- matcher = Spec::Matchers::Matcher.new(:name, 'value') do |expected|
- match do |actual|
- actual.should == expected
- end
- end
- matcher.matches?('value').should be_true
- end
-
- it "returns false if the wrapped expectation fails" do
- matcher = Spec::Matchers::Matcher.new(:name, 'value') do |expected|
- match do |actual|
- actual.should == expected
- end
- end
- matcher.matches?('other value').should be_false
- end
- end
-
- context "with overrides" do
- before(:each) do
- @matcher = Spec::Matchers::Matcher.new(:be_boolean, true) do |boolean|
- match do |actual|
- actual
- end
- description do
- "be the boolean #{boolean}"
- end
- failure_message_for_should do |actual|
- "expected #{actual} to be the boolean #{boolean}"
- end
- failure_message_for_should_not do |actual|
- "expected #{actual} not to be the boolean #{boolean}"
- end
- end
- end
-
- it "does not hide result of match block when true" do
- @matcher.matches?(true).should be_true
- end
-
- it "does not hide result of match block when false" do
- @matcher.matches?(false).should be_false
- end
-
- it "overrides the description" do
- @matcher.description.should == "be the boolean true"
- end
-
- it "overrides the failure message for #should" do
- @matcher.matches?(false)
- @matcher.failure_message_for_should.should == "expected false to be the boolean true"
- end
-
- it "overrides the failure message for #should_not" do
- @matcher.matches?(true)
- @matcher.failure_message_for_should_not.should == "expected true not to be the boolean true"
- end
- end
-
- context "#new" do
- it "passes matches? arg to match block" do
- matcher = Spec::Matchers::Matcher.new(:ignore) do
- match do |actual|
- actual == 5
- end
- end
- matcher.matches?(5).should be_true
- end
-
- it "exposes arg submitted through #new to matcher block" do
- matcher = Spec::Matchers::Matcher.new(:ignore, 4) do |expected|
- match do |actual|
- actual > expected
- end
- end
- matcher.matches?(5).should be_true
- end
- end
-
- context "with no args" do
- before(:each) do
- @matcher = Spec::Matchers::Matcher.new(:matcher_name) do
- match do |actual|
- actual == 5
- end
- end
- end
-
- it "matches" do
- @matcher.matches?(5).should be_true
- end
-
- it "describes" do
- @matcher.description.should == "matcher name"
- end
- end
-
- context "with 1 arg" do
- before(:each) do
- @matcher = Spec::Matchers::Matcher.new(:matcher_name, 1) do |expected|
- match do |actual|
- actual == 5 && expected == 1
- end
- end
- end
-
- it "matches" do
- @matcher.matches?(5).should be_true
- end
-
- it "describes" do
- @matcher.description.should == "matcher name 1"
- end
- end
-
- context "with multiple args" do
- before(:each) do
- @matcher = Spec::Matchers::Matcher.new(:matcher_name, 1, 2, 3, 4) do |a,b,c,d|
- match do |sum|
- a + b + c + d == sum
- end
- end
- end
-
- it "matches" do
- @matcher.matches?(10).should be_true
- end
-
- it "describes" do
- @matcher.description.should == "matcher name 1, 2, 3, and 4"
- end
- end
-
- it "supports helper methods" do
- matcher = Spec::Matchers::Matcher.new(:be_similar_to, [1,2,3]) do |sample|
- match do |actual|
- similar?(sample, actual)
- end
-
- def similar?(a, b)
- a.sort == b.sort
- end
- end
-
- matcher.matches?([2,3,1]).should be_true
- end
-
- it "supports fluent interface" do
- matcher = Spec::Matchers::Matcher.new(:first_word) do
- def second_word
- self
- end
- end
-
- matcher.second_word.should == matcher
- end
-
- it "treats method missing normally for undeclared methods" do
- matcher = Spec::Matchers::Matcher.new(:ignore) { }
- expect { matcher.non_existent_method }.to raise_error(NoMethodError)
- end
-
- it "has access to other matchers" do
- matcher = Spec::Matchers::Matcher.new(:ignore, 3) do |expected|
- match do |actual|
- extend Spec::Matchers
- actual.should eql(5 + expected)
- end
- end
-
- matcher.matches?(8).should be_true
- end
-
- describe "#match_unless_raises" do
- context "with a passing assertion" do
- let(:mod) do
- Module.new do
- def assert_equal(a,b)
- a == b ? nil : (raise UnexpectedError.new("#{a} does not equal #{b}"))
- end
- end
- end
- let(:matcher) do
- m = mod
- Spec::Matchers::Matcher.new :equal, 4 do |expected|
- extend m
- match_unless_raises UnexpectedError do
- assert_equal expected, actual
- end
- end
- end
- it "passes as you would expect" do
- matcher.matches?(4).should be_true
- end
- it "fails as you would expect" do
- matcher.matches?(5).should be_false
- end
- end
-
- context "with an unexpected error" do
- let(:matcher) do
- Spec::Matchers::Matcher.new :foo, :bar do |expected|
- match_unless_raises SyntaxError do |actual|
- raise "unexpected exception"
- end
- end
- end
-
- it "raises the error" do
- expect do
- matcher.matches?(:bar)
- end.to raise_error("unexpected exception")
- end
- end
-
- end
-
- it "can define chainable methods" do
- matcher = Spec::Matchers::Matcher.new(:name) do
- chain(:expecting) do |expected_value|
- @expected_value = expected_value
- end
- match { |actual| actual == @expected_value }
- end
-
- matcher.expecting('value').matches?('value').should be_true
- matcher.expecting('value').matches?('other value').should be_false
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/matchers_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/matchers_spec.rb
deleted file mode 100644
index 51f5efc44..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/matchers_spec.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'spec_helper'
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/operator_matcher_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/operator_matcher_spec.rb
deleted file mode 100644
index 86e637e0f..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/operator_matcher_spec.rb
+++ /dev/null
@@ -1,191 +0,0 @@
-require 'spec_helper'
-
-require 'spec/runner/differs/default'
-
-describe "should ==" do
-
- it "should delegate message to target" do
- subject = "apple"
- subject.should_receive(:==).with("apple").and_return(true)
- subject.should == "apple"
- end
-
- it "should return true on success" do
- subject = "apple"
- (subject.should == "apple").should be_true
- end
-
- it "should fail when target.==(actual) returns false" do
- subject = "apple"
- Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ==)], "orange", "apple")
- subject.should == "orange"
- end
-
-end
-
-describe "should_not ==" do
-
- it "should delegate message to target" do
- subject = "orange"
- subject.should_receive(:==).with("apple").and_return(false)
- subject.should_not == "apple"
- end
-
- it "should return true on success" do
- subject = "apple"
- (subject.should_not == "orange").should be_false
- end
-
- it "should fail when target.==(actual) returns false" do
- subject = "apple"
- Spec::Expectations.should_receive(:fail_with).with(%[expected not: == "apple",\n got: "apple"], "apple", "apple")
- subject.should_not == "apple"
- end
-
-end
-
-describe "should ===" do
-
- it "should delegate message to target" do
- subject = "apple"
- subject.should_receive(:===).with("apple").and_return(true)
- subject.should === "apple"
- end
-
- it "should fail when target.===(actual) returns false" do
- subject = "apple"
- subject.should_receive(:===).with("orange").and_return(false)
- Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ===)], "orange", "apple")
- subject.should === "orange"
- end
-
-end
-
-describe "should_not ===" do
-
- it "should delegate message to target" do
- subject = "orange"
- subject.should_receive(:===).with("apple").and_return(false)
- subject.should_not === "apple"
- end
-
- it "should fail when target.===(actual) returns false" do
- subject = "apple"
- subject.should_receive(:===).with("apple").and_return(true)
- Spec::Expectations.should_receive(:fail_with).with(%[expected not: === "apple",\n got: "apple"], "apple", "apple")
- subject.should_not === "apple"
- end
-
-end
-
-describe "should =~" do
-
- it "should delegate message to target" do
- subject = "foo"
- subject.should_receive(:=~).with(/oo/).and_return(true)
- subject.should =~ /oo/
- end
-
- it "should fail when target.=~(actual) returns false" do
- subject = "fu"
- subject.should_receive(:=~).with(/oo/).and_return(false)
- Spec::Expectations.should_receive(:fail_with).with(%[expected: /oo/,\n got: "fu" (using =~)], /oo/, "fu")
- subject.should =~ /oo/
- end
-
-end
-
-describe "should_not =~" do
-
- it "should delegate message to target" do
- subject = "fu"
- subject.should_receive(:=~).with(/oo/).and_return(false)
- subject.should_not =~ /oo/
- end
-
- it "should fail when target.=~(actual) returns false" do
- subject = "foo"
- subject.should_receive(:=~).with(/oo/).and_return(true)
- Spec::Expectations.should_receive(:fail_with).with(%[expected not: =~ /oo/,\n got: "foo"], /oo/, "foo")
- subject.should_not =~ /oo/
- end
-
-end
-
-describe "should >" do
-
- it "should pass if > passes" do
- 4.should > 3
- end
-
- it "should fail if > fails" do
- Spec::Expectations.should_receive(:fail_with).with(%[expected: > 5,\n got: 4], 5, 4)
- 4.should > 5
- end
-
-end
-
-describe "should >=" do
-
- it "should pass if >= passes" do
- 4.should > 3
- 4.should >= 4
- end
-
- it "should fail if > fails" do
- Spec::Expectations.should_receive(:fail_with).with(%[expected: >= 5,\n got: 4], 5, 4)
- 4.should >= 5
- end
-
-end
-
-describe "should <" do
-
- it "should pass if < passes" do
- 4.should < 5
- end
-
- it "should fail if > fails" do
- Spec::Expectations.should_receive(:fail_with).with(%[expected: < 3,\n got: 4], 3, 4)
- 4.should < 3
- end
-
-end
-
-describe "should <=" do
-
- it "should pass if <= passes" do
- 4.should <= 5
- 4.should <= 4
- end
-
- it "should fail if > fails" do
- Spec::Expectations.should_receive(:fail_with).with(%[expected: <= 3,\n got: 4], 3, 4)
- 4.should <= 3
- end
-
-end
-
-describe Spec::Matchers::PositiveOperatorMatcher do
-
- it "should work when the target has implemented #send" do
- o = Object.new
- def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
- lambda {
- o.should == o
- }.should_not raise_error
- end
-
-end
-
-describe Spec::Matchers::NegativeOperatorMatcher do
-
- it "should work when the target has implemented #send" do
- o = Object.new
- def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
- lambda {
- o.should_not == :foo
- }.should_not raise_error
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/raise_exception_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/raise_exception_spec.rb
deleted file mode 100644
index 26888926e..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/raise_exception_spec.rb
+++ /dev/null
@@ -1,345 +0,0 @@
-require 'spec_helper'
-
-describe "should raise_exception" do
- it "should pass if anything is raised" do
- lambda {raise}.should raise_exception
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda {}.should raise_exception
- }.should fail_with("expected Exception but nothing was raised")
- end
-end
-
-describe "should raise_error" do
- it "should pass if anything is raised" do
- lambda {raise}.should raise_error
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda {}.should raise_error
- }.should fail_with("expected Exception but nothing was raised")
- end
-end
-
-describe "should raise_exception {|e| ... }" do
- it "passes if there is an exception" do
- ran = false
- lambda { non_existent_method }.should raise_exception {|e|
- ran = true
- }
- ran.should be_true
- end
-
- it "passes the exception to the block" do
- exception = nil
- lambda { non_existent_method }.should raise_exception {|e|
- exception = e
- }
- exception.should be_kind_of(NameError)
- end
-end
-
-describe "should_not raise_exception" do
- it "should pass if nothing is raised" do
- lambda {}.should_not raise_exception
- end
-
- it "should fail if anything is raised" do
- lambda {
- lambda {raise}.should_not raise_exception
- }.should fail_with("expected no Exception, got RuntimeError")
- end
-end
-
-describe "should raise_exception(message)" do
- it "should pass if RuntimeError is raised with the right message" do
- lambda {raise 'blah'}.should raise_exception('blah')
- end
- it "should pass if RuntimeError is raised with a matching message" do
- lambda {raise 'blah'}.should raise_exception(/blah/)
- end
- it "should pass if any other exception is raised with the right message" do
- lambda {raise NameError.new('blah')}.should raise_exception('blah')
- end
- it "should fail if RuntimeError exception is raised with the wrong message" do
- lambda do
- lambda {raise 'blarg'}.should raise_exception('blah')
- end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
- end
- it "should fail if any other exception is raised with the wrong message" do
- lambda do
- lambda {raise NameError.new('blarg')}.should raise_exception('blah')
- end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
- end
-end
-
-describe "should_not raise_exception(message)" do
- it "should pass if RuntimeError exception is raised with the different message" do
- lambda {raise 'blarg'}.should_not raise_exception('blah')
- end
- it "should pass if any other exception is raised with the wrong message" do
- lambda {raise NameError.new('blarg')}.should_not raise_exception('blah')
- end
- it "should fail if RuntimeError is raised with message" do
- lambda do
- lambda {raise 'blah'}.should_not raise_exception('blah')
- end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
- end
- it "should fail if any other exception is raised with message" do
- lambda do
- lambda {raise NameError.new('blah')}.should_not raise_exception('blah')
- end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
- end
-end
-
-describe "should raise_exception(NamedError)" do
- it "should pass if named exception is raised" do
- lambda { non_existent_method }.should raise_exception(NameError)
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda { }.should raise_exception(NameError)
- }.should fail_with("expected NameError but nothing was raised")
- end
-
- it "should fail if another exception is raised (NameError)" do
- lambda {
- lambda { raise }.should raise_exception(NameError)
- }.should fail_with("expected NameError, got RuntimeError")
- end
-
- it "should fail if another exception is raised (NameError)" do
- lambda {
- lambda { load "non/existent/file" }.should raise_exception(NameError)
- }.should fail_with(/expected NameError, got #<LoadError/)
- end
-end
-
-describe "should_not raise_exception(NamedError)" do
- it "should pass if nothing is raised" do
- lambda { }.should_not raise_exception(NameError)
- end
-
- it "should pass if another exception is raised" do
- lambda { raise }.should_not raise_exception(NameError)
- end
-
- it "should fail if named exception is raised" do
- lambda {
- lambda { 1 + 'b' }.should_not raise_exception(TypeError)
- }.should fail_with(/expected no TypeError, got #<TypeError: String can't be/)
- end
-end
-
-describe "should raise_exception(NamedError, exception_message) with String" do
- it "should pass if named exception is raised with same message" do
- lambda { raise "example message" }.should raise_exception(RuntimeError, "example message")
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda {}.should raise_exception(RuntimeError, "example message")
- }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
- end
-
- it "should fail if incorrect exception is raised" do
- lambda {
- lambda { raise }.should raise_exception(NameError, "example message")
- }.should fail_with("expected NameError with \"example message\", got RuntimeError")
- end
-
- it "should fail if correct exception is raised with incorrect message" do
- lambda {
- lambda { raise RuntimeError.new("not the example message") }.should raise_exception(RuntimeError, "example message")
- }.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
- end
-end
-
-describe "should raise_exception(NamedError, exception_message) { |err| ... }" do
- it "should yield exception if named exception is raised with same message" do
- ran = false
-
- lambda {
- raise "example message"
- }.should raise_exception(RuntimeError, "example message") { |err|
- ran = true
- err.class.should == RuntimeError
- err.message.should == "example message"
- }
-
- ran.should == true
- end
-
- it "yielded block should be able to fail on it's own right" do
- ran, passed = false, false
-
- lambda {
- lambda {
- raise "example message"
- }.should raise_exception(RuntimeError, "example message") { |err|
- ran = true
- 5.should == 4
- passed = true
- }
- }.should fail_with(/expected: 4/m)
-
- ran.should == true
- passed.should == false
- end
-
- it "should NOT yield exception if no exception was thrown" do
- ran = false
-
- lambda {
- lambda {}.should raise_exception(RuntimeError, "example message") { |err|
- ran = true
- }
- }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
-
- ran.should == false
- end
-
- it "should not yield exception if exception class is not matched" do
- ran = false
-
- lambda {
- lambda {
- raise "example message"
- }.should raise_exception(SyntaxError, "example message") { |err|
- ran = true
- }
- }.should fail_with("expected SyntaxError with \"example message\", got #<RuntimeError: example message>")
-
- ran.should == false
- end
-
- it "should NOT yield exception if exception message is not matched" do
- ran = false
-
- lambda {
- lambda {
- raise "example message"
- }.should raise_exception(RuntimeError, "different message") { |err|
- ran = true
- }
- }.should fail_with("expected RuntimeError with \"different message\", got #<RuntimeError: example message>")
-
- ran.should == false
- end
-end
-
-describe "should_not raise_exception(NamedError, exception_message) { |err| ... }" do
- it "should pass if nothing is raised" do
- ran = false
-
- lambda {}.should_not raise_exception(RuntimeError, "example message") { |err|
- ran = true
- }
-
- ran.should == false
- end
-
- it "should pass if a different exception is raised" do
- ran = false
-
- lambda { raise }.should_not raise_exception(NameError, "example message") { |err|
- ran = true
- }
-
- ran.should == false
- end
-
- it "should pass if same exception is raised with different message" do
- ran = false
-
- lambda {
- raise RuntimeError.new("not the example message")
- }.should_not raise_exception(RuntimeError, "example message") { |err|
- ran = true
- }
-
- ran.should == false
- end
-
- it "should fail if named exception is raised with same message" do
- ran = false
-
- lambda {
- lambda {
- raise "example message"
- }.should_not raise_exception(RuntimeError, "example message") { |err|
- ran = true
- }
- }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
-
- ran.should == false
- end
-end
-
-describe "should_not raise_exception(NamedError, exception_message) with String" do
- it "should pass if nothing is raised" do
- lambda {}.should_not raise_exception(RuntimeError, "example message")
- end
-
- it "should pass if a different exception is raised" do
- lambda { raise }.should_not raise_exception(NameError, "example message")
- end
-
- it "should pass if same exception is raised with different message" do
- lambda { raise RuntimeError.new("not the example message") }.should_not raise_exception(RuntimeError, "example message")
- end
-
- it "should fail if named exception is raised with same message" do
- lambda {
- lambda { raise "example message" }.should_not raise_exception(RuntimeError, "example message")
- }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
- end
-end
-
-describe "should raise_exception(NamedError, exception_message) with Regexp" do
- it "should pass if named exception is raised with matching message" do
- lambda { raise "example message" }.should raise_exception(RuntimeError, /ample mess/)
- end
-
- it "should fail if nothing is raised" do
- lambda {
- lambda {}.should raise_exception(RuntimeError, /ample mess/)
- }.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
- end
-
- it "should fail if incorrect exception is raised" do
- lambda {
- lambda { raise }.should raise_exception(NameError, /ample mess/)
- }.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
- end
-
- it "should fail if correct exception is raised with incorrect message" do
- lambda {
- lambda { raise RuntimeError.new("not the example message") }.should raise_exception(RuntimeError, /less than ample mess/)
- }.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
- end
-end
-
-describe "should_not raise_exception(NamedError, exception_message) with Regexp" do
- it "should pass if nothing is raised" do
- lambda {}.should_not raise_exception(RuntimeError, /ample mess/)
- end
-
- it "should pass if a different exception is raised" do
- lambda { raise }.should_not raise_exception(NameError, /ample mess/)
- end
-
- it "should pass if same exception is raised with non-matching message" do
- lambda { raise RuntimeError.new("non matching message") }.should_not raise_exception(RuntimeError, /ample mess/)
- end
-
- it "should fail if named exception is raised with matching message" do
- lambda {
- lambda { raise "example message" }.should_not raise_exception(RuntimeError, /ample mess/)
- }.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/respond_to_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/respond_to_spec.rb
deleted file mode 100644
index 8d8f3c1ac..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/respond_to_spec.rb
+++ /dev/null
@@ -1,116 +0,0 @@
-require 'spec_helper'
-
-describe "should respond_to(:sym)" do
-
- it "passes if target responds to :sym" do
- Object.new.should respond_to(:methods)
- end
-
- it "fails if target does not respond to :sym" do
- lambda {
- "this string".should respond_to(:some_method)
- }.should fail_with(%q|expected "this string" to respond to :some_method|)
- end
-
-end
-
-describe "should respond_to(:sym).with(1).argument" do
- it "passes if target responds to :sym with 1 arg" do
- obj = Object.new
- def obj.foo(arg); end
- obj.should respond_to(:foo).with(1).argument
- end
-
- it "fails if target does not respond to :sym" do
- obj = Object.new
- lambda {
- obj.should respond_to(:some_method).with(1).argument
- }.should fail_with(/expected .* to respond to :some_method/)
- end
-
- it "fails if :sym expects 0 args" do
- obj = Object.new
- def obj.foo; end
- lambda {
- obj.should respond_to(:foo).with(1).argument
- }.should fail_with(/expected #<Object.*> to respond to :foo with 1 argument/)
- end
-
- it "fails if :sym expects 2 args" do
- obj = Object.new
- def obj.foo(arg, arg2); end
- lambda {
- obj.should respond_to(:foo).with(1).argument
- }.should fail_with(/expected #<Object.*> to respond to :foo with 1 argument/)
- end
-end
-
-describe "should respond_to(message1, message2)" do
-
- it "passes if target responds to both messages" do
- Object.new.should respond_to('methods', 'inspect')
- end
-
- it "fails if target does not respond to first message" do
- lambda {
- Object.new.should respond_to('method_one', 'inspect')
- }.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
- end
-
- it "fails if target does not respond to second message" do
- lambda {
- Object.new.should respond_to('inspect', 'method_one')
- }.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
- end
-
- it "fails if target does not respond to either message" do
- lambda {
- Object.new.should respond_to('method_one', 'method_two')
- }.should fail_with(/expected #<Object:.*> to respond to "method_one", "method_two"/)
- end
-end
-
-describe "should respond_to(:sym).with(2).arguments" do
- it "passes if target responds to :sym with 2 args" do
- obj = Object.new
- def obj.foo(a1, a2); end
- obj.should respond_to(:foo).with(2).arguments
- end
-
- it "fails if target does not respond to :sym" do
- obj = Object.new
- lambda {
- obj.should respond_to(:some_method).with(2).arguments
- }.should fail_with(/expected .* to respond to :some_method/)
- end
-
- it "fails if :sym expects 0 args" do
- obj = Object.new
- def obj.foo; end
- lambda {
- obj.should respond_to(:foo).with(2).arguments
- }.should fail_with(/expected #<Object.*> to respond to :foo with 2 arguments/)
- end
-
- it "fails if :sym expects 2 args" do
- obj = Object.new
- def obj.foo(arg); end
- lambda {
- obj.should respond_to(:foo).with(2).arguments
- }.should fail_with(/expected #<Object.*> to respond to :foo with 2 arguments/)
- end
-end
-
-describe "should_not respond_to(:sym)" do
-
- it "passes if target does not respond to :sym" do
- Object.new.should_not respond_to(:some_method)
- end
-
- it "fails if target responds to :sym" do
- lambda {
- Object.new.should_not respond_to(:methods)
- }.should fail_with(/expected #<Object:.*> not to respond to :methods/)
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/satisfy_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/satisfy_spec.rb
deleted file mode 100644
index e50c395a6..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/satisfy_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'spec_helper'
-
-describe "should satisfy { block }" do
- it "should pass if block returns true" do
- true.should satisfy { |val| val }
- true.should satisfy do |val|
- val
- end
- end
-
- it "should fail if block returns false" do
- lambda {
- false.should satisfy { |val| val }
- }.should fail_with("expected false to satisfy block")
- lambda do
- false.should satisfy do |val|
- val
- end
- end.should fail_with("expected false to satisfy block")
- end
-end
-
-describe "should_not satisfy { block }" do
- it "should pass if block returns false" do
- false.should_not satisfy { |val| val }
- false.should_not satisfy do |val|
- val
- end
- end
-
- it "should fail if block returns true" do
- lambda {
- true.should_not satisfy { |val| val }
- }.should fail_with("expected true not to satisfy block")
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/simple_matcher_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/simple_matcher_spec.rb
deleted file mode 100644
index 7d38862b2..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/simple_matcher_spec.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Matchers
- describe SimpleMatcher do
- before { Spec.stub(:deprecate) }
-
- it "is deprecated" do
- Spec.should_receive(:deprecate)
- simple_matcher("foo") {}
- end
-
- it "should pass match arg to block" do
- actual = nil
- matcher = simple_matcher("message") do |given| actual = given end
- matcher.matches?("foo")
- actual.should == "foo"
- end
-
- it "should provide a stock failure message" do
- matcher = simple_matcher("thing") do end
- matcher.matches?("other")
- matcher.failure_message.should =~ /expected \"thing\" but got \"other\"/
- end
-
- it "should provide a stock negative failure message" do
- matcher = simple_matcher("thing") do end
- matcher.matches?("other")
- matcher.negative_failure_message.should =~ /expected not to get \"thing\", but got \"other\"/
- end
-
- it "should provide the given description" do
- matcher = simple_matcher("thing") do end
- matcher.description.should =="thing"
- end
-
- it "should fail if a wrapped 'should' fails" do
- matcher = simple_matcher("should fail") do
- 2.should == 3
- end
- lambda do
- matcher.matches?("anything").should be_true
- end.should fail_with(/expected: 3/)
- end
-
- describe "with arity of 2" do
- it "should provide the matcher so you can access its messages" do
- provided_matcher = nil
- matcher = simple_matcher("thing") do |given, matcher|
- provided_matcher = matcher
- end
- matcher.matches?("anything")
- provided_matcher.should equal(matcher)
- end
-
- it "should support a custom failure message" do
- matcher = simple_matcher("thing") do |given, matcher|
- matcher.failure_message = "custom message"
- end
- matcher.matches?("other")
- matcher.failure_message.should == "custom message"
- end
-
- it "should complain when asked for a failure message if you don't give it a description or a message" do
- matcher = simple_matcher do |given, matcher| end
- matcher.matches?("other")
- matcher.failure_message.should =~ /No description provided/
- end
-
- it "should support a custom negative failure message" do
- matcher = simple_matcher("thing") do |given, matcher|
- matcher.negative_failure_message = "custom message"
- end
- matcher.matches?("other")
- matcher.negative_failure_message.should == "custom message"
- end
-
- it "should complain when asked for a negative failure message if you don't give it a description or a message" do
- matcher = simple_matcher do |given, matcher| end
- matcher.matches?("other")
- matcher.negative_failure_message.should =~ /No description provided/
- end
-
- it "should support a custom description" do
- matcher = simple_matcher("thing") do |given, matcher|
- matcher.description = "custom message"
- end
- matcher.matches?("description")
- matcher.description.should == "custom message"
- end
-
- it "should tell you no description was provided when it doesn't receive one" do
- matcher = simple_matcher do end
- matcher.description.should =~ /No description provided/
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/matchers/throw_symbol_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/matchers/throw_symbol_spec.rb
deleted file mode 100644
index e6aa008e0..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/matchers/throw_symbol_spec.rb
+++ /dev/null
@@ -1,121 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Matchers
- describe ThrowSymbol do
- describe "with no args" do
- let(:matcher) { throw_symbol }
-
- it "matches if any Symbol is thrown" do
- matcher.matches?(lambda{ throw :sym }).should be_true
- end
-
- it "matches if any Symbol is thrown with an arg" do
- matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
- end
-
- it "does not match if no Symbol is thrown" do
- matcher.matches?(lambda{ }).should be_false
- end
-
- it "provides a failure message" do
- matcher.matches?(lambda{})
- matcher.failure_message_for_should.should == "expected a Symbol but nothing was thrown"
- end
-
- it "provides a negative failure message" do
- matcher.matches?(lambda{ throw :sym})
- matcher.failure_message_for_should_not.should == "expected no Symbol, got :sym"
- end
- end
-
- describe "with a symbol" do
- let(:matcher) { throw_symbol(:sym) }
-
- it "matches if correct Symbol is thrown" do
- matcher.matches?(lambda{ throw :sym }).should be_true
- end
-
- it "matches if correct Symbol is thrown with an arg" do
- matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
- end
-
- it "does not match if no Symbol is thrown" do
- matcher.matches?(lambda{ }).should be_false
- end
-
- it "does not match if correct Symbol is thrown" do
- matcher.matches?(lambda{ throw :other_sym }).should be_false
- end
-
- it "provides a failure message when no Symbol is thrown" do
- matcher.matches?(lambda{})
- matcher.failure_message_for_should.should == "expected :sym but nothing was thrown"
- end
-
- it "provides a failure message when wrong Symbol is thrown" do
- matcher.matches?(lambda{ throw :other_sym })
- matcher.failure_message_for_should.should == "expected :sym, got :other_sym"
- end
-
- it "provides a negative failure message" do
- matcher.matches?(lambda{ throw :sym })
- matcher.failure_message_for_should_not.should == "expected :sym not to be thrown"
- end
-
- it "should only match NameErrors raised by uncaught throws" do
- matcher.matches?(lambda{ :sym }).should be_false
- end
-
- it "bubbles up errors other than NameError" do
- lambda do
- matcher.matches?(lambda{ raise 'foo' })
- end.should raise_error('foo')
- end
- end
-
- describe "with a symbol and an arg" do
- let(:matcher) { throw_symbol(:sym, "a") }
-
- it "matches if correct Symbol and args are thrown" do
- matcher.matches?(lambda{ throw :sym, "a" }).should be_true
- end
-
- it "does not match if nothing is thrown" do
- matcher.matches?(lambda{ }).should be_false
- end
-
- it "does not match if other Symbol is thrown" do
- matcher.matches?(lambda{ throw :other_sym, "a" }).should be_false
- end
-
- it "does not match if no arg is thrown" do
- matcher.matches?(lambda{ throw :sym }).should be_false
- end
-
- it "does not match if wrong arg is thrown" do
- matcher.matches?(lambda{ throw :sym, "b" }).should be_false
- end
-
- it "provides a failure message when no Symbol is thrown" do
- matcher.matches?(lambda{})
- matcher.failure_message_for_should.should == %q[expected :sym with "a" but nothing was thrown]
- end
-
- it "provides a failure message when wrong Symbol is thrown" do
- matcher.matches?(lambda{ throw :other_sym })
- matcher.failure_message_for_should.should == %q[expected :sym with "a", got :other_sym]
- end
-
- it "provides a negative failure message" do
- matcher.matches?(lambda{ throw :sym })
- matcher.failure_message_for_should_not.should == %q[expected :sym with "a" not to be thrown]
- end
-
- it "only matches NameErrors raised by uncaught throws" do
- matcher.matches?(lambda{ :sym }).should be_false
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/and_yield_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/and_yield_spec.rb
deleted file mode 100644
index 39a07a212..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/and_yield_spec.rb
+++ /dev/null
@@ -1,117 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe Mock do
- describe "#and_yield" do
-
- context "with eval context as block argument" do
- let(:obj) { double }
-
- it "evaluates the supplied block as it is read" do
- evaluated = false
- obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
- evaluated = true
- end
- evaluated.should be_true
- end
-
- it "passes an eval context object to the supplied block" do
- obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
- eval_context.should_not be_nil
- end
- end
-
- it "evaluates the block passed to the stubbed method in the context of the supplied eval context" do
- expected_eval_context = nil
- actual_eval_context = nil
-
- obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
- expected_eval_context = eval_context
- end
-
- obj.method_that_accepts_a_block do
- actual_eval_context = self
- end
-
- actual_eval_context.should equal(expected_eval_context)
- end
-
- context "and no yielded arguments" do
-
- it "passes when expectations set on the eval context are met" do
- configured_eval_context = nil
- obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
- configured_eval_context = eval_context
- configured_eval_context.should_receive(:foo)
- end
-
- obj.method_that_accepts_a_block do
- foo
- end
-
- configured_eval_context.rspec_verify
- end
-
- it "fails when expectations set on the eval context are not met" do
- configured_eval_context = nil
- obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
- configured_eval_context = eval_context
- configured_eval_context.should_receive(:foo)
- end
-
- obj.method_that_accepts_a_block do
- # foo is not called here
- end
-
- lambda {configured_eval_context.rspec_verify}.should raise_error(MockExpectationError)
- end
-
- end
-
- context "and yielded arguments" do
-
- it "passes when expectations set on the eval context and yielded arguments are met" do
- configured_eval_context = nil
- yielded_arg = Object.new
- obj.stub(:method_that_accepts_a_block).and_yield(yielded_arg) do |eval_context|
- configured_eval_context = eval_context
- configured_eval_context.should_receive(:foo)
- yielded_arg.should_receive(:bar)
- end
-
- obj.method_that_accepts_a_block do |obj|
- obj.bar
- foo
- end
-
- configured_eval_context.rspec_verify
- yielded_arg.rspec_verify
- end
-
- it "fails when expectations set on the eval context and yielded arguments are not met" do
- configured_eval_context = nil
- yielded_arg = Object.new
- obj.stub(:method_that_accepts_a_block).and_yield(yielded_arg) do |eval_context|
- configured_eval_context = eval_context
- configured_eval_context.should_receive(:foo)
- yielded_arg.should_receive(:bar)
- end
-
- obj.method_that_accepts_a_block do |obj|
- # obj.bar is not called here
- # foo is not called here
- end
-
- lambda {configured_eval_context.rspec_verify}.should raise_error(MockExpectationError)
- lambda {yielded_arg.rspec_verify}.should raise_error(MockExpectationError)
- end
-
- end
-
- end
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/any_number_of_times_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/any_number_of_times_spec.rb
deleted file mode 100644
index 9a3f6edaf..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/any_number_of_times_spec.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
-
- describe "AnyNumberOfTimes" do
- before(:each) do
- @mock = Mock.new("test mock")
- end
-
- it "should pass if any number of times method is called many times" do
- @mock.should_receive(:random_call).any_number_of_times
- (1..10).each do
- @mock.random_call
- end
- end
-
- it "should pass if any number of times method is called once" do
- @mock.should_receive(:random_call).any_number_of_times
- @mock.random_call
- end
-
- it "should pass if any number of times method is not called" do
- @mock.should_receive(:random_call).any_number_of_times
- end
-
- it "should return the mocked value when called after a similar stub" do
- @mock.stub!(:message).and_return :stub_value
- @mock.should_receive(:message).any_number_of_times.and_return(:mock_value)
- @mock.message.should == :mock_value
- @mock.message.should == :mock_value
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/argument_expectation_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/argument_expectation_spec.rb
deleted file mode 100644
index 496f7507c..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/argument_expectation_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe ArgumentExpectation do
- it "should consider an object that responds to #matches? and #description to be a matcher" do
- argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
- obj = mock("matcher")
- obj.should_receive(:respond_to?).with(:matches?).and_return(true)
- obj.should_receive(:respond_to?).with(:description).and_return(true)
- argument_expecatation.is_matcher?(obj).should be_true
- end
-
- it "should NOT consider an object that only responds to #matches? to be a matcher" do
- argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
- obj = mock("matcher")
- obj.should_receive(:respond_to?).with(:matches?).and_return(true)
- obj.should_receive(:respond_to?).with(:description).and_return(false)
- argument_expecatation.is_matcher?(obj).should be_false
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/argument_matchers_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/argument_matchers_spec.rb
deleted file mode 100644
index fc8165583..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/argument_matchers_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- module ArgumentMatchers
- describe AnyArgsMatcher do
- it "represents itself nicely for failure messages" do
- AnyArgsMatcher.new.description.should == "any args"
- end
- end
-
- describe AnyArgMatcher do
- it "represents itself nicely for failure messages" do
- AnyArgMatcher.new(nil).description.should == "anything"
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/at_least_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/at_least_spec.rb
deleted file mode 100644
index 0b76d3213..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/at_least_spec.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "at_least" do
- before(:each) do
- @mock = Mock.new("test mock")
- end
-
- it "should fail if method is never called" do
- @mock.should_receive(:random_call).at_least(4).times
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when called less than n times" do
- @mock.should_receive(:random_call).at_least(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at least once method is never called" do
- @mock.should_receive(:random_call).at_least(:once)
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at least twice method is called once" do
- @mock.should_receive(:random_call).at_least(:twice)
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at least twice method is never called" do
- @mock.should_receive(:random_call).at_least(:twice)
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should pass when at least n times method is called exactly n times" do
- @mock.should_receive(:random_call).at_least(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least n times method is called n plus 1 times" do
- @mock.should_receive(:random_call).at_least(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least once method is called once" do
- @mock.should_receive(:random_call).at_least(:once)
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least once method is called twice" do
- @mock.should_receive(:random_call).at_least(:once)
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least twice method is called three times" do
- @mock.should_receive(:random_call).at_least(:twice)
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at least twice method is called twice" do
- @mock.should_receive(:random_call).at_least(:twice)
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/at_most_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/at_most_spec.rb
deleted file mode 100644
index 744c9ff1b..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/at_most_spec.rb
+++ /dev/null
@@ -1,93 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "at_most" do
- before(:each) do
- @mock = Mock.new("test mock")
- end
-
- it "should fail when at most n times method is called n plus 1 times" do
- @mock.should_receive(:random_call).at_most(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at most once method is called twice" do
- @mock.should_receive(:random_call).at_most(:once)
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when at most twice method is called three times" do
- @mock.should_receive(:random_call).at_most(:twice)
- @mock.random_call
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should pass when at most n times method is called exactly n times" do
- @mock.should_receive(:random_call).at_most(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most n times method is called less than n times" do
- @mock.should_receive(:random_call).at_most(4).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most n times method is never called" do
- @mock.should_receive(:random_call).at_most(4).times
- @mock.rspec_verify
- end
-
- it "should pass when at most once method is called once" do
- @mock.should_receive(:random_call).at_most(:once)
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most once method is never called" do
- @mock.should_receive(:random_call).at_most(:once)
- @mock.rspec_verify
- end
-
- it "should pass when at most twice method is called once" do
- @mock.should_receive(:random_call).at_most(:twice)
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most twice method is called twice" do
- @mock.should_receive(:random_call).at_most(:twice)
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass when at most twice method is never called" do
- @mock.should_receive(:random_call).at_most(:twice)
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_10260_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_10260_spec.rb
deleted file mode 100644
index 783782f64..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_10260_spec.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'spec_helper'
-
-describe "An RSpec Mock" do
- it "should hide internals in its inspect representation" do
- m = mock('cup')
- m.inspect.should =~ /#<Spec::Mocks::Mock:0x[a-f0-9.]+ @name="cup">/
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_10263_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_10263_spec.rb
deleted file mode 100644
index 8a0bc505f..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_10263_spec.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-describe "Mock" do
- before do
- @mock = mock("test mock")
- end
-
- specify "when one example has an expectation (non-mock) inside the block passed to the mock" do
- @mock.should_receive(:msg) do |b|
- b.should be_true #this call exposes the problem
- end
- begin
- @mock.msg(false)
- rescue Exception
- end
- end
-
- specify "then the next example should behave as expected instead of saying" do
- @mock.should_receive(:foobar)
- @mock.foobar
- @mock.rspec_verify
- begin
- @mock.foobar
- rescue Exception => e
- e.message.should == "Mock \"test mock\" received unexpected message :foobar with (no args)"
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_11545_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_11545_spec.rb
deleted file mode 100644
index 7eb7c6e45..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_11545_spec.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'spec_helper'
-
-class LiarLiarPantsOnFire
- def respond_to?(sym, incl_private=false)
- true
- end
-
- def self.respond_to?(sym, incl_private=false)
- true
- end
-end
-
-describe 'should_receive' do
- before(:each) do
- @liar = LiarLiarPantsOnFire.new
- end
-
- it "should work when object lies about responding to a method" do
- @liar.should_receive(:something)
- @liar.something
- end
-
- it 'should work when class lies about responding to a method' do
- LiarLiarPantsOnFire.should_receive(:something)
- LiarLiarPantsOnFire.something
- end
-
- it 'should cleanup after itself' do
- (class << LiarLiarPantsOnFire; self; end).instance_methods.should_not include("something")
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_15719_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_15719_spec.rb
deleted file mode 100644
index efd7a7824..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_15719_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "mock failure" do
-
- it "should tell you when it receives the right message with the wrong args" do
- m = mock("foo")
- m.should_receive(:bar).with("message")
- lambda {
- m.bar("different message")
- }.should raise_error(Spec::Mocks::MockExpectationError, %Q{Mock "foo" received :bar with unexpected arguments\n expected: ("message")\n got: ("different message")})
- m.bar("message") # allows the spec to pass
- end
-
- it "should tell you when it receives the right message with the wrong args if you stub the method" do
- pending("fix bug 15719")
- # NOTE - for whatever reason, if you use a the block style of pending here,
- # rcov gets unhappy. Don't know why yet.
- m = mock("foo")
- m.stub!(:bar)
- m.should_receive(:bar).with("message")
- lambda {
- m.bar("different message")
- }.should raise_error(Spec::Mocks::MockExpectationError, %Q{Mock "foo" received :bar with unexpected arguments\n expected: ("message")\n got: ("different message")})
- m.bar("message") # allows the spec to pass
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_496_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_496_spec.rb
deleted file mode 100644
index d9edd7994..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_496_spec.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'spec_helper'
-
-module BugReport496
- class BaseClass
- end
-
- class SubClass < BaseClass
- end
-
- describe "a message expectation on a base class object" do
- it "should correctly pick up message sent to it subclass" do
- BaseClass.should_receive(:new).once
- SubClass.new
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_600_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_600_spec.rb
deleted file mode 100644
index c5c50d5a4..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_600_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'spec_helper'
-
-module BugReport600
- class ExampleClass
- def self.method_that_uses_define_method
- define_method "defined_method" do |attributes|
- load_address(address, attributes)
- end
- end
- end
-
- describe "stubbing a class method" do
- it "should work" do
- ExampleClass.should_receive(:define_method).with("defined_method")
- ExampleClass.method_that_uses_define_method
- end
-
- it "should restore the original method" do
- ExampleClass.method_that_uses_define_method
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_7611_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_7611_spec.rb
deleted file mode 100644
index ff1ef8795..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_7611_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'spec_helper'
-
-module Bug7611
- class Foo
- end
-
- class Bar < Foo
- end
-
- describe "A Partial Mock" do
- it "should respect subclasses" do
- Foo.stub!(:new).and_return(Object.new)
- end
-
- it "should" do
- Bar.new.class.should == Bar
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_7805_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_7805_spec.rb
deleted file mode 100644
index 9a3d493d9..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_7805_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'spec_helper'
-
-module Bug7805
- #This is really a duplicate of 8302
-
- describe "Stubs should correctly restore module methods" do
- it "1 - stub the open method" do
- File.stub!(:open).and_return("something")
- File.open.should == "something"
- end
- it "2 - use File.open to create example.txt" do
- filename = "#{File.dirname(__FILE__)}/example-#{Time.new.to_i}.txt"
- File.exist?(filename).should be_false
- file = File.open(filename,'w')
- file.close
- File.exist?(filename).should be_true
- File.delete(filename)
- File.exist?(filename).should be_false
- end
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_8165_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_8165_spec.rb
deleted file mode 100644
index 8d8d01772..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_8165_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'spec_helper'
-
-describe "An object where respond_to? is true and does not have method" do
- # When should_receive(:sym) is sent to any object, the Proxy sends
- # respond_to?(:sym) to that object to see if the method should be proxied.
- #
- # If respond_to? itself is proxied, then when the Proxy sends respond_to?
- # to the object, the proxy is invoked and responds yes (if so set in the spec).
- # When the object does NOT actually respond to :sym, an exception is thrown
- # when trying to proxy it.
- #
- # The fix was to keep track of whether :respond_to? had been proxied and, if
- # so, call the munged copy of :respond_to? on the object.
-
- it "should not raise an exception for Object" do
- obj = Object.new
- obj.should_receive(:respond_to?).with(:foobar).and_return(true)
- obj.should_receive(:foobar).and_return(:baz)
- obj.respond_to?(:foobar).should be_true
- obj.foobar.should == :baz
- end
-
- it "should not raise an exception for mock" do
- obj = mock("obj")
- obj.should_receive(:respond_to?).with(:foobar).and_return(true)
- obj.should_receive(:foobar).and_return(:baz)
- obj.respond_to?(:foobar).should be_true
- obj.foobar.should == :baz
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_8302_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_8302_spec.rb
deleted file mode 100644
index 55d8d3acd..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_8302_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'spec_helper'
-
-module Bug8302
- class Foo
- def Foo.class_method(arg)
- end
-
- def instance_bar(arg)
- end
- end
-
- describe "Bug report 8302:" do
- it "class method is not restored correctly when proxied" do
- Foo.should_not_receive(:class_method).with(Array.new)
- Foo.rspec_verify
- Foo.class_method(Array.new)
- end
-
- it "instance method is not restored correctly when proxied" do
- foo = Foo.new
- foo.should_not_receive(:instance_bar).with(Array.new)
- foo.rspec_verify
- foo.instance_bar(Array.new)
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_830_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_830_spec.rb
deleted file mode 100644
index ed16f419a..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/bug_report_830_spec.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe 'Calling a method that catches StandardError' do
- class Foo
- def self.foo
- bar
- rescue StandardError
- end
- end
-
- it 'still reports mock failures' do
- Foo.should_not_receive :bar
- lambda do
- Foo.foo
- end.should raise_error(MockExpectationError)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/double_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/double_spec.rb
deleted file mode 100644
index 0d6ee982d..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/double_spec.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-require 'spec_helper'
-
-describe "double" do
- it "is an alias for stub and mock" do
- double().should be_a(Spec::Mocks::Mock)
- end
-
- it "uses 'Double' in failure messages" do
- double = double('name')
- expect {double.foo}.to raise_error(/Double "name" received/)
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/failing_argument_matchers_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/failing_argument_matchers_spec.rb
deleted file mode 100644
index 30742157d..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/failing_argument_matchers_spec.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "failing MockArgumentMatchers" do
- before(:each) do
- @mock = mock("test mock")
- @reporter = Mock.new("reporter", :null_object => true)
- end
-
- after(:each) do
- @mock.rspec_reset
- end
-
- it "should reject non boolean" do
- @mock.should_receive(:random_call).with(boolean())
- lambda do
- @mock.random_call("false")
- end.should raise_error(MockExpectationError)
- end
-
- it "should reject non numeric" do
- @mock.should_receive(:random_call).with(an_instance_of(Numeric))
- lambda do
- @mock.random_call("1")
- end.should raise_error(MockExpectationError)
- end
-
- it "should reject non string" do
- @mock.should_receive(:random_call).with(an_instance_of(String))
- lambda do
- @mock.random_call(123)
- end.should raise_error(MockExpectationError)
- end
-
- it "should reject goose when expecting a duck" do
- @mock.should_receive(:random_call).with(duck_type(:abs, :div))
- lambda { @mock.random_call("I don't respond to :abs or :div") }.should raise_error(MockExpectationError)
- end
-
- it "should fail if regexp does not match submitted string" do
- @mock.should_receive(:random_call).with(/bcd/)
- lambda { @mock.random_call("abc") }.should raise_error(MockExpectationError)
- end
-
- it "should fail if regexp does not match submitted regexp" do
- @mock.should_receive(:random_call).with(/bcd/)
- lambda { @mock.random_call(/bcde/) }.should raise_error(MockExpectationError)
- end
-
- it "should fail for a hash w/ wrong values" do
- @mock.should_receive(:random_call).with(:a => "b", :c => "d")
- lambda do
- @mock.random_call(:a => "b", :c => "e")
- end.should raise_error(MockExpectationError, /Mock "test mock" received :random_call with unexpected arguments\n expected: \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\)\n got: \(\{(:a=>\"b\", :c=>\"e\"|:c=>\"e\", :a=>\"b\")\}\)/)
- end
-
- it "should fail for a hash w/ wrong keys" do
- @mock.should_receive(:random_call).with(:a => "b", :c => "d")
- lambda do
- @mock.random_call("a" => "b", "c" => "d")
- end.should raise_error(MockExpectationError, /Mock "test mock" received :random_call with unexpected arguments\n expected: \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\)\n got: \(\{(\"a\"=>\"b\", \"c\"=>\"d\"|\"c\"=>\"d\", \"a\"=>\"b\")\}\)/)
- end
-
- it "should match against a Matcher" do
- lambda do
- @mock.should_receive(:msg).with(equal(3))
- @mock.msg(37)
- end.should raise_error(MockExpectationError, "Mock \"test mock\" received :msg with unexpected arguments\n expected: (equal 3)\n got: (37)")
- end
-
- it "should fail no_args with one arg" do
- lambda do
- @mock.should_receive(:msg).with(no_args)
- @mock.msg(37)
- end.should raise_error(MockExpectationError, "Mock \"test mock\" received :msg with unexpected arguments\n expected: (no args)\n got: (37)")
- end
-
- it "should fail hash_including with missing key" do
- lambda do
- @mock.should_receive(:msg).with(hash_including(:a => 1))
- @mock.msg({})
- end.should raise_error(MockExpectationError, "Mock \"test mock\" received :msg with unexpected arguments\n expected: (hash_including(:a=>1))\n got: ({})")
- end
-
- it "should fail with block matchers" do
- lambda do
- @mock.should_receive(:msg).with {|arg| arg.should == :received }
- @mock.msg :no_msg_for_you
- end.should raise_error(Spec::Expectations::ExpectationNotMetError, /expected: :received.*\s*.*got: :no_msg_for_you/)
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/hash_including_matcher_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/hash_including_matcher_spec.rb
deleted file mode 100644
index d757f619a..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/hash_including_matcher_spec.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- module ArgumentMatchers
- describe HashIncludingMatcher do
-
- it "should describe itself properly" do
- HashIncludingMatcher.new(:a => 1).description.should == "hash_including(:a=>1)"
- end
-
- describe "passing" do
- it "should match the same hash" do
- hash_including(:a => 1).should == {:a => 1}
- end
-
- it "should match a hash with extra stuff" do
- hash_including(:a => 1).should == {:a => 1, :b => 2}
- end
-
- describe "when matching against other matchers" do
- it "should match an int against anything()" do
- hash_including(:a => anything, :b => 2).should == {:a => 1, :b => 2}
- end
-
- it "should match a string against anything()" do
- hash_including(:a => anything, :b => 2).should == {:a => "1", :b => 2}
- end
- end
-
- describe "when passed only keys or keys mixed with key/value pairs" do
- it "should match if the key is present" do
- hash_including(:a).should == {:a => 1, :b => 2}
- end
-
- it "should match if more keys are present" do
- hash_including(:a, :b).should == {:a => 1, :b => 2, :c => 3}
- end
-
- it "should match a string against a given key" do
- hash_including(:a).should == {:a => "1", :b => 2}
- end
-
- it "should match if passed one key and one key/value pair" do
- hash_including(:a, :b => 2).should == {:a => 1, :b => 2}
- end
-
- it "should match if passed many keys and one key/value pair" do
- hash_including(:a, :b, :c => 3).should == {:a => 1, :b => 2, :c => 3, :d => 4}
- end
-
- it "should match if passed many keys and many key/value pairs" do
- hash_including(:a, :b, :c => 3, :e => 5).should == {:a => 1, :b => 2, :c => 3, :d => 4, :e => 5}
- end
- end
- end
-
- describe "failing" do
- it "should not match a non-hash" do
- hash_including(:a => 1).should_not == 1
- end
-
- it "should not match a hash with a missing key" do
- hash_including(:a => 1).should_not == {:b => 2}
- end
-
- it "should not match a hash with a missing key" do
- hash_including(:a).should_not == {:b => 2}
- end
-
- it "should not match an empty hash with a given key" do
- hash_including(:a).should_not == {}
- end
-
- it "should not match a hash with a missing key when one pair is matching" do
- hash_including(:a, :b => 2).should_not == {:b => 2}
- end
-
- it "should not match a hash with an incorrect value" do
- hash_including(:a => 1, :b => 2).should_not == {:a => 1, :b => 3}
- end
-
- it "should not match when values are nil but keys are different" do
- hash_including(:a => nil).should_not == {:b => nil}
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/hash_not_including_matcher_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/hash_not_including_matcher_spec.rb
deleted file mode 100644
index 9df69fe6c..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/hash_not_including_matcher_spec.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- module ArgumentMatchers
- describe HashNotIncludingMatcher do
-
- it "should describe itself properly" do
- HashNotIncludingMatcher.new(:a => 5).description.should == "hash_not_including(:a=>5)"
- end
-
- describe "passing" do
- it "should match a hash without the specified key" do
- hash_not_including(:c).should == {:a => 1, :b => 2}
- end
-
- it "should match a hash with the specified key, but different value" do
- hash_not_including(:b => 3).should == {:a => 1, :b => 2}
- end
-
- it "should match a hash without the specified key, given as anything()" do
- hash_not_including(:c => anything).should == {:a => 1, :b => 2}
- end
-
- it "should match an empty hash" do
- hash_not_including(:a).should == {}
- end
-
- it "should match a hash without any of the specified keys" do
- hash_not_including(:a, :b, :c).should == { :d => 7}
- end
-
- end
-
- describe "failing" do
- it "should not match a non-hash" do
- hash_not_including(:a => 1).should_not == 1
- end
-
- it "should not match a hash with a specified key" do
- hash_not_including(:b).should_not == {:b => 2}
- end
-
- it "should not match a hash with the specified key/value pair" do
- hash_not_including(:b => 2).should_not == {:a => 1, :b => 2}
- end
-
- it "should not match a hash with the specified key" do
- hash_not_including(:a, :b => 3).should_not == {:a => 1, :b => 2}
- end
-
- it "should not match a hash with one of the specified keys" do
- hash_not_including(:a, :b).should_not == {:b => 2}
- end
-
- it "should not match a hash with some of the specified keys" do
- hash_not_including(:a, :b, :c).should_not == {:a => 1, :b => 2}
- end
-
- it "should not match a hash with one key/value pair included" do
- hash_not_including(:a, :b, :c, :d => 7).should_not == { :d => 7}
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_ordering_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_ordering_spec.rb
deleted file mode 100644
index 4bd15478f..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_ordering_spec.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
-
- describe "Mock ordering" do
-
- before do
- @mock = mock("test mock")
- end
-
- after do
- @mock.rspec_reset
- end
-
- it "should pass two calls in order" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- @mock.one
- @mock.two
- @mock.rspec_verify
- end
-
- it "should pass three calls in order" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- @mock.should_receive(:three).ordered
- @mock.one
- @mock.two
- @mock.three
- @mock.rspec_verify
- end
-
- it "should fail if second call comes first" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- lambda do
- @mock.two
- end.should raise_error(MockExpectationError, "Mock \"test mock\" received :two out of order")
- end
-
- it "should fail if third call comes first" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- @mock.should_receive(:three).ordered
- @mock.one
- lambda do
- @mock.three
- end.should raise_error(MockExpectationError, "Mock \"test mock\" received :three out of order")
- end
-
- it "should fail if third call comes second" do
- @mock.should_receive(:one).ordered
- @mock.should_receive(:two).ordered
- @mock.should_receive(:three).ordered
- @mock.one
- lambda do
- @mock.three
- end.should raise_error(MockExpectationError, "Mock \"test mock\" received :three out of order")
- end
-
- it "should ignore order of non ordered calls" do
- @mock.should_receive(:ignored_0)
- @mock.should_receive(:ordered_1).ordered
- @mock.should_receive(:ignored_1)
- @mock.should_receive(:ordered_2).ordered
- @mock.should_receive(:ignored_2)
- @mock.should_receive(:ignored_3)
- @mock.should_receive(:ordered_3).ordered
- @mock.should_receive(:ignored_4)
- @mock.ignored_3
- @mock.ordered_1
- @mock.ignored_0
- @mock.ordered_2
- @mock.ignored_4
- @mock.ignored_2
- @mock.ordered_3
- @mock.ignored_1
- @mock.rspec_verify
- end
-
- it "should pass when duplicates exist" do
- @mock.should_receive(:a).ordered
- @mock.should_receive(:b).ordered
- @mock.should_receive(:a).ordered
-
- @mock.a
- @mock.b
- @mock.a
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_space_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_space_spec.rb
deleted file mode 100644
index 878239307..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_space_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'spec_helper'
-require 'spec/mocks'
-
-module Spec
- module Mocks
- describe Space do
- before :each do
- @space = Space.new
- klazz = Class.new do
- def rspec_verify
- @verified = true
- end
- def verified?
- @verified
- end
- def rspec_reset
- @reset = true
- end
- def reset?
- @reset
- end
- end
- @m1 = klazz.new
- @m2 = klazz.new
- end
- it "should verify all mocks within" do
- @space.add(@m1)
- @space.add(@m2)
- @space.verify_all
- @m1.should be_verified
- @m2.should be_verified
- end
- it "should reset all mocks within" do
- @space.add(m1 = mock("mock1"))
- @space.add(m2 = mock("mock2"))
- m1.should_receive(:rspec_reset)
- m2.should_receive(:rspec_reset)
- @space.reset_all
- end
- it "should clear internal mocks on reset_all" do
- @space.add(m = mock("mock"))
- @space.reset_all
- @space.instance_eval { mocks.empty? }.should be_true
- end
- it "should only add an instance once" do
- @space.add(m1 = mock("mock1"))
- @space.add(m1)
- m1.should_receive(:rspec_verify)
- @space.verify_all
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_spec.rb
deleted file mode 100644
index d86b75458..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/mock_spec.rb
+++ /dev/null
@@ -1,594 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe Mock do
- treats_method_missing_as_private :subject => Mock.new, :noop => false
-
- before(:each) do
- @mock = mock("test mock")
- end
-
- after(:each) do
- @mock.rspec_reset
- end
-
- describe "deprecated #stub_everything method" do
- before(:each) do
- Kernel.stub!(:warn)
- end
-
- it "creates a mock that behaves as a null object" do
- stub_everything.should be_null_object
- end
-
- it "provides deprecation warning" do
- Kernel.should_receive(:warn).with(/DEPRECATION: stub_everything.* is deprecated./)
- stub_everything
- end
- end
-
- it "should report line number of expectation of unreceived message" do
- expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
- begin
- @mock.rspec_verify
- violated
- rescue MockExpectationError => e
- # NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
- e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
- end
- end
-
- it "should report line number of expectation of unreceived message after #should_receive after similar stub" do
- @mock.stub!(:wont_happen)
- expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
- begin
- @mock.rspec_verify
- violated
- rescue MockExpectationError => e
- # NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
- e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
- end
- end
-
- it "should pass when not receiving message specified as not to be received" do
- @mock.should_not_receive(:not_expected)
- @mock.rspec_verify
- end
-
- it "should pass when receiving message specified as not to be received with different args" do
- @mock.should_not_receive(:message).with("unwanted text")
- @mock.should_receive(:message).with("other text")
- @mock.message "other text"
- @mock.rspec_verify
- end
-
- it "should fail when receiving message specified as not to be received" do
- @mock.should_not_receive(:not_expected)
- lambda {
- @mock.not_expected
- violated
- }.should raise_error(MockExpectationError, "Mock \"test mock\" expected :not_expected with (no args) 0 times, but received it once")
- end
-
- it "should fail when receiving message specified as not to be received with args" do
- @mock.should_not_receive(:not_expected).with("unexpected text")
- lambda {
- @mock.not_expected("unexpected text")
- violated
- }.should raise_error(MockExpectationError, "Mock \"test mock\" expected :not_expected with (\"unexpected text\") 0 times, but received it once")
- end
-
- it "should pass when receiving message specified as not to be received with wrong args" do
- @mock.should_not_receive(:not_expected).with("unexpected text")
- @mock.not_expected "really unexpected text"
- @mock.rspec_verify
- end
-
- it "should allow block to calculate return values" do
- @mock.should_receive(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
- @mock.something("a","b","c").should == "cba"
- @mock.rspec_verify
- end
-
- it "should allow parameter as return value" do
- @mock.should_receive(:something).with("a","b","c").and_return("booh")
- @mock.something("a","b","c").should == "booh"
- @mock.rspec_verify
- end
-
- it "should return nil if no return value set" do
- @mock.should_receive(:something).with("a","b","c")
- @mock.something("a","b","c").should be_nil
- @mock.rspec_verify
- end
-
- it "should raise exception if args don't match when method called" do
- @mock.should_receive(:something).with("a","b","c").and_return("booh")
- lambda {
- @mock.something("a","d","c")
- violated
- }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: (\"a\", \"d\", \"c\")")
- end
-
- it "should raise exception if args don't match when method called even when the method is stubbed" do
- @mock.stub!(:something)
- @mock.should_receive(:something).with("a","b","c")
- lambda {
- @mock.something("a","d","c")
- @mock.rspec_verify
- }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: ([\"a\", \"d\", \"c\"])")
- end
-
- it "should raise exception if args don't match when method called even when using null_object" do
- @mock = mock("test mock", :null_object => true)
- @mock.should_receive(:something).with("a","b","c")
- lambda {
- @mock.something("a","d","c")
- @mock.rspec_verify
- }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: ([\"a\", \"d\", \"c\"])")
- end
-
- it "should fail if unexpected method called" do
- lambda {
- @mock.something("a","b","c")
- violated
- }.should raise_error(MockExpectationError, "Mock \"test mock\" received unexpected message :something with (\"a\", \"b\", \"c\")")
- end
-
- it "should use block for expectation if provided" do
- @mock.should_receive(:something) do | a, b |
- a.should == "a"
- b.should == "b"
- "booh"
- end
- @mock.something("a", "b").should == "booh"
- @mock.rspec_verify
- end
-
- it "should fail if expectation block fails" do
- @mock.should_receive(:something) {| bool | bool.should be_true}
- lambda {
- @mock.something false
- }.should raise_error(MockExpectationError, /Mock "test mock" received :something but passed block failed with: expected false to be true/)
- end
-
- it "should fail right away when method defined as never is received" do
- @mock.should_receive(:not_expected).never
- lambda {
- @mock.not_expected
- }.should raise_error(MockExpectationError, "Mock \"test mock\" expected :not_expected with (no args) 0 times, but received it once")
- end
-
- it "should eventually fail when method defined as never is received" do
- @mock.should_receive(:not_expected).never
- lambda {
- @mock.not_expected
- }.should raise_error(MockExpectationError, "Mock \"test mock\" expected :not_expected with (no args) 0 times, but received it once")
- end
-
- it "should raise when told to" do
- @mock.should_receive(:something).and_raise(RuntimeError)
- lambda do
- @mock.something
- end.should raise_error(RuntimeError)
- end
-
- it "should raise passed an Exception instance" do
- error = RuntimeError.new("error message")
- @mock.should_receive(:something).and_raise(error)
- lambda {
- @mock.something
- }.should raise_error(RuntimeError, "error message")
- end
-
- it "should raise RuntimeError with passed message" do
- @mock.should_receive(:something).and_raise("error message")
- lambda {
- @mock.something
- }.should raise_error(RuntimeError, "error message")
- end
-
- it "should not raise when told to if args dont match" do
- @mock.should_receive(:something).with(2).and_raise(RuntimeError)
- lambda {
- @mock.something 1
- }.should raise_error(MockExpectationError)
- end
-
- it "should throw when told to" do
- @mock.should_receive(:something).and_throw(:blech)
- lambda {
- @mock.something
- }.should throw_symbol(:blech)
- end
-
- it "should raise when explicit return and block constrained" do
- lambda {
- @mock.should_receive(:fruit) do |colour|
- :strawberry
- end.and_return :apple
- }.should raise_error(AmbiguousReturnError)
- end
-
- it "should ignore args on any args" do
- @mock.should_receive(:something).at_least(:once).with(any_args)
- @mock.something
- @mock.something 1
- @mock.something "a", 2
- @mock.something [], {}, "joe", 7
- @mock.rspec_verify
- end
-
- it "should fail on no args if any args received" do
- @mock.should_receive(:something).with(no_args())
- lambda {
- @mock.something 1
- }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (no args)\n got: (1)")
- end
-
- it "should fail when args are expected but none are received" do
- @mock.should_receive(:something).with(1)
- lambda {
- @mock.something
- }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (1)\n got: (no args)")
- end
-
- it "should return value from block by default" do
- @mock.stub!(:method_that_yields).and_yield
- @mock.method_that_yields { :returned_obj }.should == :returned_obj
- @mock.rspec_verify
- end
-
- it "should yield 0 args to blocks that take a variable number of arguments" do
- @mock.should_receive(:yield_back).with(no_args()).once.and_yield
- a = nil
- @mock.yield_back {|*x| a = x}
- a.should == []
- @mock.rspec_verify
- end
-
- it "should yield 0 args multiple times to blocks that take a variable number of arguments" do
- @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield.
- and_yield
- a = nil
- b = []
- @mock.yield_back {|*a| b << a}
- b.should == [ [], [] ]
- @mock.rspec_verify
- end
-
- it "should yield one arg to blocks that take a variable number of arguments" do
- @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
- a = nil
- @mock.yield_back {|*x| a = x}
- a.should == [99]
- @mock.rspec_verify
- end
-
- it "should yield one arg 3 times consecutively to blocks that take a variable number of arguments" do
- @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
- and_yield(43).
- and_yield("something fruity")
- a = nil
- b = []
- @mock.yield_back {|*a| b << a}
- b.should == [[99], [43], ["something fruity"]]
- @mock.rspec_verify
- end
-
- it "should yield many args to blocks that take a variable number of arguments" do
- @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99, 27, "go")
- a = nil
- @mock.yield_back {|*x| a = x}
- a.should == [99, 27, "go"]
- @mock.rspec_verify
- end
-
- it "should yield many args 3 times consecutively to blocks that take a variable number of arguments" do
- @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, "go").
- and_yield("wait", :amber).
- and_yield("stop", 12, :red)
- a = nil
- b = []
- @mock.yield_back {|*a| b << a}
- b.should == [[99, :green, "go"], ["wait", :amber], ["stop", 12, :red]]
- @mock.rspec_verify
- end
-
- it "should yield single value" do
- @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
- a = nil
- @mock.yield_back {|x| a = x}
- a.should == 99
- @mock.rspec_verify
- end
-
- it "should yield single value 3 times consecutively" do
- @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
- and_yield(43).
- and_yield("something fruity")
- a = nil
- b = []
- @mock.yield_back {|a| b << a}
- b.should == [99, 43, "something fruity"]
- @mock.rspec_verify
- end
-
- it "should yield two values" do
- @mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
- a, b = nil
- @mock.yield_back {|x,y| a=x; b=y}
- a.should == 'wha'
- b.should == 'zup'
- @mock.rspec_verify
- end
-
- it "should yield two values 3 times consecutively" do
- @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
- and_yield('not', 'down').
- and_yield(14, 65)
- a, b = nil
- c = []
- @mock.yield_back {|a,b| c << [a, b]}
- c.should == [['wha', 'zup'], ['not', 'down'], [14, 65]]
- @mock.rspec_verify
- end
-
- it "should fail when calling yielding method with wrong arity" do
- @mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
- lambda {
- @mock.yield_back {|a|}
- }.should raise_error(MockExpectationError, "Mock \"test mock\" yielded |\"wha\", \"zup\"| to block with arity of 1")
- end
-
- it "should fail when calling yielding method consecutively with wrong arity" do
- @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
- and_yield('down').
- and_yield(14, 65)
- lambda {
- a, b = nil
- c = []
- @mock.yield_back {|a,b| c << [a, b]}
- }.should raise_error(MockExpectationError, "Mock \"test mock\" yielded |\"down\"| to block with arity of 2")
- end
-
- it "should fail when calling yielding method without block" do
- @mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
- lambda {
- @mock.yield_back
- }.should raise_error(MockExpectationError, "Mock \"test mock\" asked to yield |[\"wha\", \"zup\"]| but no block was passed")
- end
-
- it "should be able to mock send" do
- @mock.should_receive(:send).with(any_args)
- @mock.send 'hi'
- @mock.rspec_verify
- end
-
- it "should be able to raise from method calling yielding mock" do
- @mock.should_receive(:yield_me).and_yield 44
-
- lambda {
- @mock.yield_me do |x|
- raise "Bang"
- end
- }.should raise_error(StandardError, "Bang")
-
- @mock.rspec_verify
- end
-
- it "should clear expectations after verify" do
- @mock.should_receive(:foobar)
- @mock.foobar
- @mock.rspec_verify
- lambda {
- @mock.foobar
- }.should raise_error(MockExpectationError, "Mock \"test mock\" received unexpected message :foobar with (no args)")
- end
-
- it "should restore objects to their original state on rspec_reset" do
- mock = mock("this is a mock")
- mock.should_receive(:blah)
- mock.rspec_reset
- mock.rspec_verify #should throw if reset didn't work
- end
-
- it "should work even after method_missing starts raising NameErrors instead of NoMethodErrors" do
- # Object#method_missing throws either NameErrors or NoMethodErrors.
- #
- # On a fresh ruby program Object#method_missing:
- # * raises a NoMethodError when called directly
- # * raises a NameError when called indirectly
- #
- # Once Object#method_missing has been called at least once (on any object)
- # it starts behaving differently:
- # * raises a NameError when called directly
- # * raises a NameError when called indirectly
- #
- # There was a bug in Mock#method_missing that relied on the fact
- # that calling Object#method_missing directly raises a NoMethodError.
- # This example tests that the bug doesn't exist anymore.
-
-
- # Ensures that method_missing always raises NameErrors.
- a_method_that_doesnt_exist rescue
-
-
- @mock.should_receive(:foobar)
- @mock.foobar
- @mock.rspec_verify
-
- lambda { @mock.foobar }.should_not raise_error(NameError)
- lambda { @mock.foobar }.should raise_error(MockExpectationError)
- end
-
- it "should temporarily replace a method stub on a mock" do
- @mock.stub!(:msg).and_return(:stub_value)
- @mock.should_receive(:msg).with(:arg).and_return(:mock_value)
- @mock.msg(:arg).should equal(:mock_value)
- @mock.msg.should equal(:stub_value)
- @mock.msg.should equal(:stub_value)
- @mock.rspec_verify
- end
-
- it "should not require a different signature to replace a method stub" do
- @mock.stub!(:msg).and_return(:stub_value)
- @mock.should_receive(:msg).and_return(:mock_value)
- @mock.msg(:arg).should equal(:mock_value)
- @mock.msg.should equal(:stub_value)
- @mock.msg.should equal(:stub_value)
- @mock.rspec_verify
- end
-
- it "should raise an error when a previously stubbed method has a negative expectation" do
- @mock.stub!(:msg).and_return(:stub_value)
- @mock.should_not_receive(:msg).and_return(:mock_value)
- lambda {@mock.msg(:arg)}.should raise_error(MockExpectationError)
- end
-
- it "should temporarily replace a method stub on a non-mock" do
- non_mock = Object.new
- non_mock.stub!(:msg).and_return(:stub_value)
- non_mock.should_receive(:msg).with(:arg).and_return(:mock_value)
- non_mock.msg(:arg).should equal(:mock_value)
- non_mock.msg.should equal(:stub_value)
- non_mock.msg.should equal(:stub_value)
- non_mock.rspec_verify
- end
-
- it "should return the stubbed value when no new value specified" do
- @mock.stub!(:msg).and_return(:stub_value)
- @mock.should_receive(:msg)
- @mock.msg.should equal(:stub_value)
- @mock.rspec_verify
- end
-
- it "should not mess with the stub's yielded values when also mocked" do
- @mock.stub!(:yield_back).and_yield(:stub_value)
- @mock.should_receive(:yield_back).and_yield(:mock_value)
- @mock.yield_back{|v| v.should == :mock_value }
- @mock.yield_back{|v| v.should == :stub_value }
- @mock.rspec_verify
- end
-
- it "should yield multiple values after a similar stub" do
- File.stub!(:open).and_yield(:stub_value)
- File.should_receive(:open).and_yield(:first_call).and_yield(:second_call)
- yielded_args = []
- File.open {|v| yielded_args << v }
- yielded_args.should == [:first_call, :second_call]
- File.open {|v| v.should == :stub_value }
- File.rspec_verify
- end
-
- it "should assign stub return values" do
- mock = Mock.new('name', :message => :response)
- mock.message.should == :response
- end
-
- end
-
- describe "a mock message receiving a block" do
- before(:each) do
- @mock = mock("mock")
- @calls = 0
- end
-
- def add_call
- @calls = @calls + 1
- end
-
- it "should call the block after #should_receive" do
- @mock.should_receive(:foo) { add_call }
-
- @mock.foo
-
- @calls.should == 1
- end
-
- it "should call the block after #should_receive after a similar stub" do
- @mock.stub!(:foo).and_return(:bar)
- @mock.should_receive(:foo) { add_call }
-
- @mock.foo
-
- @calls.should == 1
- end
-
- it "should call the block after #once" do
- @mock.should_receive(:foo).once { add_call }
-
- @mock.foo
-
- @calls.should == 1
- end
-
- it "should call the block after #twice" do
- @mock.should_receive(:foo).twice { add_call }
-
- @mock.foo
- @mock.foo
-
- @calls.should == 2
- end
-
- it "should call the block after #times" do
- @mock.should_receive(:foo).exactly(10).times { add_call }
-
- (1..10).each { @mock.foo }
-
- @calls.should == 10
- end
-
- it "should call the block after #any_number_of_times" do
- @mock.should_receive(:foo).any_number_of_times { add_call }
-
- (1..7).each { @mock.foo }
-
- @calls.should == 7
- end
-
- it "should call the block after #ordered" do
- @mock.should_receive(:foo).ordered { add_call }
- @mock.should_receive(:bar).ordered { add_call }
-
- @mock.foo
- @mock.bar
-
- @calls.should == 2
- end
- end
-
- describe 'string representation generated by #to_s' do
- it 'should not contain < because that might lead to invalid HTML in some situations' do
- mock = mock("Dog")
- valid_html_str = "#{mock}"
- valid_html_str.should_not include('<')
- end
- end
-
- describe "mock created with no name" do
- it "should not use a name in a failure message" do
- mock = mock()
- expect {mock.foo}.to raise_error(/Mock received/)
- end
-
- it "should respond to initially stubbed methods" do
- mock = mock(:foo => "woo", :bar => "car")
- mock.foo.should == "woo"
- mock.bar.should == "car"
- end
- end
-
- describe "==" do
- it "sends '== self' to the comparison object" do
- first = mock('first')
- second = mock('second')
-
- first.should_receive(:==).with(second)
- second == first
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/multiple_return_value_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/multiple_return_value_spec.rb
deleted file mode 100644
index 08a6b066c..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/multiple_return_value_spec.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "a Mock expectation with multiple return values and no specified count" do
- before(:each) do
- @mock = Mock.new("mock")
- @return_values = ["1",2,Object.new]
- @mock.should_receive(:message).and_return(@return_values[0],@return_values[1],@return_values[2])
- end
-
- it "should return values in order to consecutive calls" do
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- @mock.message.should == @return_values[2]
- @mock.rspec_verify
- end
-
- it "should complain when there are too few calls" do
- third = Object.new
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it twice")
- end
-
- it "should complain when there are too many calls" do
- third = Object.new
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- @mock.message.should == @return_values[2]
- @mock.message.should == @return_values[2]
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it 4 times")
- end
- end
-
- describe "a Mock expectation with multiple return values with a specified count equal to the number of values" do
- before(:each) do
- @mock = Mock.new("mock")
- @return_values = ["1",2,Object.new]
- @mock.should_receive(:message).exactly(3).times.and_return(@return_values[0],@return_values[1],@return_values[2])
- end
-
- it "should return values in order to consecutive calls" do
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- @mock.message.should == @return_values[2]
- @mock.rspec_verify
- end
-
- it "should complain when there are too few calls" do
- third = Object.new
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it twice")
- end
-
- it "should complain when there are too many calls" do
- third = Object.new
- @mock.message.should == @return_values[0]
- @mock.message.should == @return_values[1]
- @mock.message.should == @return_values[2]
- @mock.message.should == @return_values[2]
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it 4 times")
- end
- end
-
- describe "a Mock expectation with multiple return values specifying at_least less than the number of values" do
- before(:each) do
- @mock = Mock.new("mock")
- @mock.should_receive(:message).at_least(:twice).with(no_args).and_return(11, 22)
- end
-
- it "should use last return value for subsequent calls" do
- @mock.message.should equal(11)
- @mock.message.should equal(22)
- @mock.message.should equal(22)
- @mock.rspec_verify
- end
-
- it "should fail when called less than the specified number" do
- @mock.message.should equal(11)
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (no args) twice, but received it once")
- end
- end
- describe "a Mock expectation with multiple return values with a specified count larger than the number of values" do
- before(:each) do
- @mock = Mock.new("mock")
- @mock.should_receive(:message).exactly(3).times.and_return(11, 22)
- end
-
- it "should use last return value for subsequent calls" do
- @mock.message.should equal(11)
- @mock.message.should equal(22)
- @mock.message.should equal(22)
- @mock.rspec_verify
- end
-
- it "should fail when called less than the specified number" do
- @mock.message.should equal(11)
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it once")
- end
-
- it "should fail when called greater than the specified number" do
- @mock.message.should equal(11)
- @mock.message.should equal(22)
- @mock.message.should equal(22)
- @mock.message.should equal(22)
- lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it 4 times")
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/nil_expectation_warning_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/nil_expectation_warning_spec.rb
deleted file mode 100644
index f8f72baff..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/nil_expectation_warning_spec.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
-
- describe "an expectation set on nil" do
-
- it "should issue a warning with file and line number information" do
- expected_warning = %r%An expectation of :foo was set on nil. Called from #{__FILE__}:#{__LINE__+3}(:in `block \(2 levels\) in <module:Mocks>')?. Use allow_message_expectations_on_nil to disable warnings.%
- Kernel.should_receive(:warn).with(expected_warning)
-
- nil.should_receive(:foo)
- nil.foo
- end
-
- it "should issue a warning when the expectation is negative" do
- Kernel.should_receive(:warn)
-
- nil.should_not_receive(:foo)
- end
-
- it "should not issue a warning when expectations are set to be allowed" do
- allow_message_expectations_on_nil
- Kernel.should_not_receive(:warn)
-
- nil.should_receive(:foo)
- nil.should_not_receive(:bar)
- nil.foo
- end
-
- end
-
- describe "#allow_message_expectations_on_nil" do
-
- it "should not effect subsequent examples" do
- example_group = Class.new(::Spec::Example::ExampleGroupDouble)
- example_group.it("when called in one example that doesn't end up setting an expectation on nil") do
- allow_message_expectations_on_nil
- end
- example_group.it("should not effect the next exapmle ran") do
- Kernel.should_receive(:warn)
- nil.should_receive(:foo)
- nil.foo
- end
-
- example_group.run(Spec::Runner.options).should be_true
-
- end
-
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/null_object_mock_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/null_object_mock_spec.rb
deleted file mode 100644
index 8af6b49d7..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/null_object_mock_spec.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "a mock acting as a NullObject" do
- before(:each) do
- @mock = Mock.new("null_object", :null_object => true)
- end
-
- it "should allow explicit expectation" do
- @mock.should_receive(:something)
- @mock.something
- end
-
- it "should fail verification when explicit exception not met" do
- lambda do
- @mock.should_receive(:something)
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should ignore unexpected methods" do
- @mock.random_call("a", "d", "c")
- @mock.rspec_verify
- end
-
- it "should expected message with different args first" do
- @mock.should_receive(:message).with(:expected_arg)
- @mock.message(:unexpected_arg)
- @mock.message(:expected_arg)
- end
-
- it "should expected message with different args second" do
- @mock.should_receive(:message).with(:expected_arg)
- @mock.message(:expected_arg)
- @mock.message(:unexpected_arg)
- end
- end
-
- describe "#null_object?" do
- it "should default to false" do
- obj = mock('anything')
- obj.should_not be_null_object
- end
- end
-
- describe "#as_null_object" do
- it "should set the object to null_object" do
- obj = mock('anything').as_null_object
- obj.should be_null_object
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/once_counts_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/once_counts_spec.rb
deleted file mode 100644
index 951298321..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/once_counts_spec.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "OnceCounts" do
- before(:each) do
- @mock = mock("test mock")
- end
-
- it "once should fail when called once with wrong args" do
- @mock.should_receive(:random_call).once.with("a", "b", "c")
- lambda do
- @mock.random_call("d", "e", "f")
- end.should raise_error(MockExpectationError)
- @mock.rspec_reset
- end
-
- it "once should fail when called twice" do
- @mock.should_receive(:random_call).once
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "once should fail when not called" do
- @mock.should_receive(:random_call).once
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "once should pass when called once" do
- @mock.should_receive(:random_call).once
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "once should pass when called once with specified args" do
- @mock.should_receive(:random_call).once.with("a", "b", "c")
- @mock.random_call("a", "b", "c")
- @mock.rspec_verify
- end
-
- it "once should pass when called once with unspecified args" do
- @mock.should_receive(:random_call).once
- @mock.random_call("a", "b", "c")
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/options_hash_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/options_hash_spec.rb
deleted file mode 100644
index f82757827..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/options_hash_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "calling :should_receive with an options hash" do
- it "should report the file and line submitted with :expected_from" do
- begin
- mock = Spec::Mocks::Mock.new("a mock")
- mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
- mock.rspec_verify
- rescue Exception => e
- ensure
- e.backtrace.to_s.should =~ /\/path\/to\/blah.ext:37/m
- end
- end
-
- it "should use the message supplied with :message" do
- lambda {
- m = Spec::Mocks::Mock.new("a mock")
- m.should_receive(:message, :message => "recebi nada")
- m.rspec_verify
- }.should raise_error("recebi nada")
- end
-
- it "should use the message supplied with :message after a similar stub" do
- lambda {
- m = Spec::Mocks::Mock.new("a mock")
- m.stub!(:message)
- m.should_receive(:message, :message => "from mock")
- m.rspec_verify
- }.should raise_error("from mock")
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/partial_mock_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/partial_mock_spec.rb
deleted file mode 100644
index c19ecd304..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/partial_mock_spec.rb
+++ /dev/null
@@ -1,164 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "using a Partial Mock," do
- before(:each) do
- @object = Object.new
- end
-
- it "should name the class in the failure message" do
- @object.should_receive(:foo)
- lambda do
- @object.rspec_verify
- end.should raise_error(Spec::Mocks::MockExpectationError, /<Object:.*> expected/)
- end
-
- it "should name the class in the failure message when expectation is on class" do
- Object.should_receive(:foo)
- lambda do
- Object.rspec_verify
- end.should raise_error(Spec::Mocks::MockExpectationError, /<Object \(class\)>/)
- end
-
- it "should not conflict with @options in the object" do
- @object.instance_eval { @options = Object.new }
- @object.should_receive(:blah)
- @object.blah
- end
-
- it "should_not_receive should mock out the method" do
- @object.should_not_receive(:fuhbar)
- lambda do
- @object.fuhbar
- end.should raise_error(MockExpectationError, /<Object:.*> expected :fuhbar with \(no args\) 0 times/)
- end
-
- it "should_not_receive should return a negative message expectation" do
- @object.should_not_receive(:foobar).should be_kind_of(NegativeMessageExpectation)
- end
-
- it "should_receive should mock out the method" do
- @object.should_receive(:foobar).with(:test_param).and_return(1)
- @object.foobar(:test_param).should equal(1)
- end
-
- it "should_receive should handle a hash" do
- @object.should_receive(:foobar).with(:key => "value").and_return(1)
- @object.foobar(:key => "value").should equal(1)
- end
-
- it "should_receive should handle an inner hash" do
- hash = {:a => {:key => "value"}}
- @object.should_receive(:foobar).with(:key => "value").and_return(1)
- @object.foobar(hash[:a]).should equal(1)
- end
-
- it "should_receive should return a message expectation" do
- @object.should_receive(:foobar).should be_kind_of(MessageExpectation)
- @object.foobar
- end
-
- it "should_receive should verify method was called" do
- @object.should_receive(:foobar).with(:test_param).and_return(1)
- lambda do
- @object.rspec_verify
- end.should raise_error(Spec::Mocks::MockExpectationError)
- end
-
- it "should_receive should also take a String argument" do
- @object.should_receive('foobar')
- @object.foobar
- end
-
- it "should_not_receive should also take a String argument" do
- @object.should_not_receive('foobar')
- lambda do
- @object.foobar
- end.should raise_error(Spec::Mocks::MockExpectationError)
- end
-
- it "should use report nil in the error message" do
- allow_message_expectations_on_nil
-
- @this_will_resolve_to_nil.should_receive(:foobar)
- lambda do
- @this_will_resolve_to_nil.rspec_verify
- end.should raise_error(Spec::Mocks::MockExpectationError, /nil expected :foobar with/)
- end
- end
-
- describe "Partially mocking an object that defines ==, after another mock has been defined" do
- before(:each) do
- stub("existing mock", :foo => :foo)
- end
-
- class PartiallyMockedEquals
- attr_reader :val
- def initialize(val)
- @val = val
- end
-
- def ==(other)
- @val == other.val
- end
- end
-
- it "should not raise an error when stubbing the object" do
- o = PartiallyMockedEquals.new :foo
- lambda { o.stub!(:bar) }.should_not raise_error(NoMethodError)
- end
- end
-
- describe "Method visibility when using partial mocks" do
- class MockableClass
- def public_method
- private_method
- protected_method
- end
- protected
- def protected_method; end
- private
- def private_method; end
- end
-
- before(:each) do
- @object = MockableClass.new
- end
-
- it 'should keep public methods public' do
- @object.should_receive(:public_method)
- with_ruby('1.9') do
- @object.public_methods.should include(:public_method)
- end
- with_ruby('1.8') do
- @object.public_methods.should include('public_method')
- end
- @object.public_method
- end
-
- it 'should keep private methods private' do
- @object.should_receive(:private_method)
- with_ruby('1.9') do
- @object.private_methods.should include(:private_method)
- end
- with_ruby('1.8') do
- @object.private_methods.should include('private_method')
- end
- @object.public_method
- end
-
- it 'should keep protected methods protected' do
- @object.should_receive(:protected_method)
- with_ruby('1.9') do
- @object.protected_methods.should include(:protected_method)
- end
- with_ruby('1.8') do
- @object.protected_methods.should include('protected_method')
- end
- @object.public_method
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb
deleted file mode 100644
index a69aa6ac0..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'spec_helper'
-
-module Spec
-module Mocks
-describe "PartialMockUsingMocksDirectly" do
- before(:each) do
-
- klass=Class.new
- klass.class_eval do
- def existing_method
- :original_value
- end
- end
- @obj = klass.new
-
- end
-
- # See http://rubyforge.org/tracker/index.php?func=detail&aid=10263&group_id=797&atid=3149
- # specify "should clear expectations on verify" do
- # @obj.should_receive(:msg)
- # @obj.msg
- # @obj.rspec_verify
- # lambda do
- # @obj.msg
- # end.should raise_error(NoMethodError)
- #
- # end
- it "should fail when expected message is not received" do
- @obj.should_receive(:msg)
- lambda do
- @obj.rspec_verify
- end.should raise_error(MockExpectationError)
-
- end
- it "should fail when message is received with incorrect args" do
- @obj.should_receive(:msg).with(:correct_arg)
- lambda do
- @obj.msg(:incorrect_arg)
- end.should raise_error(MockExpectationError)
- @obj.msg(:correct_arg)
-
- end
- it "should pass when expected message is received" do
- @obj.should_receive(:msg)
- @obj.msg
- @obj.rspec_verify
-
- end
- it "should pass when message is received with correct args" do
- @obj.should_receive(:msg).with(:correct_arg)
- @obj.msg(:correct_arg)
- @obj.rspec_verify
-
- end
- it "should revert to original method if existed" do
- @obj.existing_method.should equal(:original_value)
- @obj.should_receive(:existing_method).and_return(:mock_value)
- @obj.existing_method.should equal(:mock_value)
- @obj.rspec_verify
- @obj.existing_method.should equal(:original_value)
-
- end
-
-end
-end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/passing_argument_matchers_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/passing_argument_matchers_spec.rb
deleted file mode 100644
index a364df0ae..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/passing_argument_matchers_spec.rb
+++ /dev/null
@@ -1,145 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "mock argument matchers", :shared => true do
- before(:each) do
- @mock = Mock.new("test mock")
- Kernel.stub!(:warn)
- end
-
- after(:each) do
- @mock.rspec_verify
- end
- end
-
- describe Methods, "handling argument matchers" do
- it_should_behave_like "mock argument matchers"
-
- it "should accept true as boolean()" do
- @mock.should_receive(:random_call).with(boolean())
- @mock.random_call(true)
- end
-
- it "should accept false as boolean()" do
- @mock.should_receive(:random_call).with(boolean())
- @mock.random_call(false)
- end
-
- it "should accept fixnum as kind_of(Numeric)" do
- @mock.should_receive(:random_call).with(kind_of(Numeric))
- @mock.random_call(1)
- end
-
- it "should accept float as an_instance_of(Numeric)" do
- @mock.should_receive(:random_call).with(kind_of(Numeric))
- @mock.random_call(1.5)
- end
-
- it "accepts fixnum as instance_of(Fixnum)" do
- @mock.should_receive(:random_call).with(instance_of(Fixnum))
- @mock.random_call(1)
- end
-
- it "should NOT accept fixnum as instance_of(Numeric)" do
- @mock.should_not_receive(:random_call).with(instance_of(Numeric))
- @mock.random_call(1)
- end
-
- it "should NOT accept float as instance_of(Numeric)" do
- @mock.should_not_receive(:random_call).with(instance_of(Numeric))
- @mock.random_call(1.5)
- end
-
- it "should accept string as anything()" do
- @mock.should_receive(:random_call).with("a", anything(), "c")
- @mock.random_call("a", "whatever", "c")
- end
-
- it "should match duck type with one method" do
- @mock.should_receive(:random_call).with(duck_type(:length))
- @mock.random_call([])
- end
-
- it "should match duck type with two methods" do
- @mock.should_receive(:random_call).with(duck_type(:abs, :div))
- @mock.random_call(1)
- end
-
- it "should match no args against any_args()" do
- @mock.should_receive(:random_call).with(any_args)
- @mock.random_call()
- end
-
- it "should match one arg against any_args()" do
- @mock.should_receive(:random_call).with(any_args)
- @mock.random_call("a string")
- end
-
- it "should match no args against no_args()" do
- @mock.should_receive(:random_call).with(no_args)
- @mock.random_call()
- end
-
- it "should match hash with hash_including same hash" do
- @mock.should_receive(:random_call).with(hash_including(:a => 1))
- @mock.random_call(:a => 1)
- end
-
- end
-
- describe Methods, "handling block matchers" do
- it_should_behave_like "mock argument matchers"
-
- it "should match arguments against RSpec expectations" do
- @mock.should_receive(:random_call).with {|arg1, arg2, arr, *rest|
- arg1.should == 5
- arg2.should have_at_least(3).characters
- arg2.should have_at_most(10).characters
- arr.map {|i| i * 2}.should == [2,4,6]
- rest.should == [:fee, "fi", 4]
- }
- @mock.random_call 5, "hello", [1,2,3], :fee, "fi", 4
- end
- end
-
- describe Methods, "handling non-matcher arguments" do
-
- before(:each) do
- @mock = Mock.new("test mock")
- end
-
- it "should match non special symbol (can be removed when deprecated symbols are removed)" do
- @mock.should_receive(:random_call).with(:some_symbol)
- @mock.random_call(:some_symbol)
- end
-
- it "should match string against regexp" do
- @mock.should_receive(:random_call).with(/bcd/)
- @mock.random_call("abcde")
- end
-
- it "should match regexp against regexp" do
- @mock.should_receive(:random_call).with(/bcd/)
- @mock.random_call(/bcd/)
- end
-
- it "should match against a hash submitted and received by value" do
- @mock.should_receive(:random_call).with(:a => "a", :b => "b")
- @mock.random_call(:a => "a", :b => "b")
- end
-
- it "should match against a hash submitted by reference and received by value" do
- opts = {:a => "a", :b => "b"}
- @mock.should_receive(:random_call).with(opts)
- @mock.random_call(:a => "a", :b => "b")
- end
-
- it "should match against a hash submitted by value and received by reference" do
- opts = {:a => "a", :b => "b"}
- @mock.should_receive(:random_call).with(:a => "a", :b => "b")
- @mock.random_call(opts)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/precise_counts_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/precise_counts_spec.rb
deleted file mode 100644
index 5b64ef281..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/precise_counts_spec.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "PreciseCounts" do
- before(:each) do
- @mock = mock("test mock")
- end
-
- it "should fail when exactly n times method is called less than n times" do
- @mock.should_receive(:random_call).exactly(3).times
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should fail when exactly n times method is never called" do
- @mock.should_receive(:random_call).exactly(3).times
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "should pass if exactly n times method is called exactly n times" do
- @mock.should_receive(:random_call).exactly(3).times
- @mock.random_call
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "should pass multiple calls with different args and counts" do
- @mock.should_receive(:random_call).twice.with(1)
- @mock.should_receive(:random_call).once.with(2)
- @mock.random_call(1)
- @mock.random_call(2)
- @mock.random_call(1)
- @mock.rspec_verify
- end
-
- it "should pass mutiple calls with different args" do
- @mock.should_receive(:random_call).once.with(1)
- @mock.should_receive(:random_call).once.with(2)
- @mock.random_call(1)
- @mock.random_call(2)
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/record_messages_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/record_messages_spec.rb
deleted file mode 100644
index bed2fbff6..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/record_messages_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "a mock" do
- before(:each) do
- @mock = mock("mock", :null_object => true)
- end
- it "should answer false for received_message? when no messages received" do
- @mock.received_message?(:message).should be_false
- end
- it "should answer true for received_message? when message received" do
- @mock.message
- @mock.received_message?(:message).should be_true
- end
- it "should answer true for received_message? when message received with correct args" do
- @mock.message 1,2,3
- @mock.received_message?(:message, 1,2,3).should be_true
- end
- it "should answer false for received_message? when message received with incorrect args" do
- @mock.message 1,2,3
- @mock.received_message?(:message, 1,2).should be_false
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_chain_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_chain_spec.rb
deleted file mode 100644
index 3536e1761..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_chain_spec.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "A chained method stub" do
- before(:each) do
- @subject = Object.new
- end
-
- it "returns expected value from chaining only one method call" do
- @subject.stub_chain(:msg1).and_return(:return_value)
- @subject.msg1.should equal(:return_value)
- end
-
- it "returns expected value from chaining two method calls" do
- @subject.stub_chain(:msg1, :msg2).and_return(:return_value)
- @subject.msg1.msg2.should equal(:return_value)
- end
-
- it "returns expected value from chaining four method calls" do
- @subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:return_value)
- @subject.msg1.msg2.msg3.msg4.should equal(:return_value)
- end
-
- it "returns expected value from two chains with shared messages at the end" do
- @subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:first)
- @subject.stub_chain(:msg5, :msg2, :msg3, :msg4).and_return(:second)
-
- @subject.msg1.msg2.msg3.msg4.should equal(:first)
- @subject.msg5.msg2.msg3.msg4.should equal(:second)
- end
-
- it "returns expected value from two chains with shared messages at the beginning" do
- @subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:first)
- @subject.stub_chain(:msg1, :msg2, :msg3, :msg5).and_return(:second)
-
- @subject.msg1.msg2.msg3.msg4.should equal(:first)
- @subject.msg1.msg2.msg3.msg5.should equal(:second)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_implementation_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_implementation_spec.rb
deleted file mode 100644
index 1487277fc..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_implementation_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "stub implementation" do
- context "with no args" do
- it "execs the block when called" do
- obj = stub()
- obj.stub(:foo) { :bar }
- obj.foo.should == :bar
- end
- end
-
- context "with one arg" do
- it "execs the block with that arg when called" do
- obj = stub()
- obj.stub(:foo) {|given| given}
- obj.foo(:bar).should == :bar
- end
- end
-
- context "with variable args" do
- it "execs the block when called" do
- obj = stub()
- obj.stub(:foo) {|*given| given.first}
- obj.foo(:bar).should == :bar
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_spec.rb
deleted file mode 100644
index e0b7b2640..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/stub_spec.rb
+++ /dev/null
@@ -1,203 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "A method stub" do
- before(:each) do
- @class = Class.new do
- def self.existing_class_method
- :original_value
- end
-
- def existing_instance_method
- :original_value
- end
- end
- @instance = @class.new
- @stub = Object.new
- end
-
- [:stub!, :stub].each do |method|
- context "using #{method}" do
- it "should return expected value when expected message is received" do
- @instance.send(method, :msg).and_return(:return_value)
- @instance.msg.should equal(:return_value)
- @instance.rspec_verify
- end
- end
- end
-
- it "should ignore when expected message is received" do
- @instance.stub!(:msg)
- @instance.msg
- lambda do
- @instance.rspec_verify
- end.should_not raise_error
- end
-
- it "should ignore when message is received with args" do
- @instance.stub!(:msg)
- @instance.msg(:an_arg)
- lambda do
- @instance.rspec_verify
- end.should_not raise_error
- end
-
- it "should ignore when expected message is not received" do
- @instance.stub!(:msg)
- lambda do
- @instance.rspec_verify
- end.should_not raise_error
- end
-
- it "should handle multiple stubbed methods" do
- @instance.stub!(:msg1 => 1, :msg2 => 2)
- @instance.msg1.should == 1
- @instance.msg2.should == 2
- end
-
- it "should clear itself when verified" do
- @instance.stub!(:this_should_go).and_return(:blah)
- @instance.this_should_go.should == :blah
- @instance.rspec_verify
- lambda do
- @instance.this_should_go
- end.should raise_error(NameError)
- end
-
- it "should return values in order to consecutive calls" do
- return_values = ["1",2,Object.new]
- @instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
- @instance.msg.should == return_values[0]
- @instance.msg.should == return_values[1]
- @instance.msg.should == return_values[2]
- end
-
- it "should keep returning last value in consecutive calls" do
- return_values = ["1",2,Object.new]
- @instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
- @instance.msg.should == return_values[0]
- @instance.msg.should == return_values[1]
- @instance.msg.should == return_values[2]
- @instance.msg.should == return_values[2]
- @instance.msg.should == return_values[2]
- end
-
- it "should revert to original instance method if there is one" do
- @instance.existing_instance_method.should equal(:original_value)
- @instance.stub!(:existing_instance_method).and_return(:mock_value)
- @instance.existing_instance_method.should equal(:mock_value)
- @instance.rspec_verify
- @instance.existing_instance_method.should equal(:original_value)
- end
-
- it "should revert to original class method if there is one" do
- @class.existing_class_method.should equal(:original_value)
- @class.stub!(:existing_class_method).and_return(:mock_value)
- @class.existing_class_method.should equal(:mock_value)
- @class.rspec_verify
- @class.existing_class_method.should equal(:original_value)
- end
-
- it "should yield a specified object" do
- @instance.stub!(:method_that_yields).and_yield(:yielded_obj)
- current_value = :value_before
- @instance.method_that_yields {|val| current_value = val}
- current_value.should == :yielded_obj
- @instance.rspec_verify
- end
-
- it "should yield multiple times with multiple calls to and_yield" do
- @instance.stub!(:method_that_yields_multiple_times).and_yield(:yielded_value).
- and_yield(:another_value)
- current_value = []
- @instance.method_that_yields_multiple_times {|val| current_value << val}
- current_value.should == [:yielded_value, :another_value]
- @instance.rspec_verify
- end
-
- it "should yield a specified object and return another specified object" do
- yielded_obj = mock("my mock")
- yielded_obj.should_receive(:foo).with(:bar)
- @instance.stub!(:method_that_yields_and_returns).and_yield(yielded_obj).and_return(:baz)
- @instance.method_that_yields_and_returns { |o| o.foo :bar }.should == :baz
- end
-
- it "should throw when told to" do
- @mock.stub!(:something).and_throw(:up)
- lambda do
- @mock.something
- end.should throw_symbol(:up)
- end
-
- it "should override a pre-existing stub" do
- @stub.stub!(:existing_instance_method).and_return(:updated_stub_value)
- @stub.existing_instance_method.should == :updated_stub_value
- end
-
- it "should limit " do
- @stub.stub!(:foo).with("bar")
- @stub.should_receive(:foo).with("baz")
- @stub.foo("bar")
- @stub.foo("baz")
- end
-
- it "calculates return value by executing block passed to #and_return" do
- @mock.stub!(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
- @mock.something("a","b","c").should == "cba"
- @mock.rspec_verify
- end
- end
-
- describe "A method stub with args" do
- before(:each) do
- @stub = Object.new
- @stub.stub!(:foo).with("bar")
- end
-
- it "should not complain if not called" do
- end
-
- it "should not complain if called with arg" do
- @stub.foo("bar")
- end
-
- it "should complain if called with no arg" do
- lambda do
- @stub.foo
- end.should raise_error
- end
-
- it "should complain if called with other arg" do
- lambda do
- @stub.foo("other")
- end.should raise_error
- end
-
- it "should not complain if also mocked w/ different args" do
- @stub.should_receive(:foo).with("baz")
- @stub.foo("bar")
- @stub.foo("baz")
- end
-
- it "should complain if also mocked w/ different args AND called w/ a 3rd set of args" do
- @stub.should_receive(:foo).with("baz")
- @stub.foo("bar")
- @stub.foo("baz")
- lambda do
- @stub.foo("other")
- end.should raise_error
- end
-
- it "should support options" do
- @stub.stub!(:foo, :expected_from => "bar")
- end
-
- it "should use 'Stub' in the failure message" do
- stub = stub('name')
- expect {stub.foo}.to raise_error(/Stub "name" received/)
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/stubbed_message_expectations_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/stubbed_message_expectations_spec.rb
deleted file mode 100644
index 03c8fecdc..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/stubbed_message_expectations_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "Example with stubbed and then called message" do
- it "fails if the message is expected and then subsequently not called again" do
- mock_obj = mock("mock", :msg => nil)
- mock_obj.msg
- mock_obj.should_receive(:msg)
- lambda { mock_obj.rspec_verify }.should raise_error(Spec::Mocks::MockExpectationError)
- end
-
- it "outputs arguments of all similar calls" do
- m = mock('mock', :foo => true)
- m.should_receive(:foo).with('first')
- m.foo('second')
- m.foo('third')
- lambda do
- m.rspec_verify
- end.should raise_error(%Q|Mock "mock" received :foo with unexpected arguments\n expected: ("first")\n got: (["second"], ["third"])|)
- m.rspec_reset
- end
- end
-
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/twice_counts_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/twice_counts_spec.rb
deleted file mode 100644
index 4538eb8f9..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/twice_counts_spec.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe "TwiceCounts" do
- before(:each) do
- @mock = mock("test mock")
- end
-
- it "twice should fail when call count is higher than expected" do
- @mock.should_receive(:random_call).twice
- @mock.random_call
- @mock.random_call
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "twice should fail when call count is lower than expected" do
- @mock.should_receive(:random_call).twice
- @mock.random_call
- lambda do
- @mock.rspec_verify
- end.should raise_error(MockExpectationError)
- end
-
- it "twice should fail when called twice with wrong args on the first call" do
- @mock.should_receive(:random_call).twice.with("1", 1)
- lambda do
- @mock.random_call(1, "1")
- end.should raise_error(MockExpectationError)
- @mock.rspec_reset
- end
-
- it "twice should fail when called twice with wrong args on the second call" do
- @mock.should_receive(:random_call).twice.with("1", 1)
- @mock.random_call("1", 1)
- lambda do
- @mock.random_call(1, "1")
- end.should raise_error(MockExpectationError)
- @mock.rspec_reset
- end
-
- it "twice should pass when called twice" do
- @mock.should_receive(:random_call).twice
- @mock.random_call
- @mock.random_call
- @mock.rspec_verify
- end
-
- it "twice should pass when called twice with specified args" do
- @mock.should_receive(:random_call).twice.with("1", 1)
- @mock.random_call("1", 1)
- @mock.random_call("1", 1)
- @mock.rspec_verify
- end
-
- it "twice should pass when called twice with unspecified args" do
- @mock.should_receive(:random_call).twice
- @mock.random_call("1")
- @mock.random_call(1)
- @mock.rspec_verify
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/mocks/unstub_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/mocks/unstub_spec.rb
deleted file mode 100644
index 89e5ac381..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/mocks/unstub_spec.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Mocks
- describe Mock do
- context "unstubbing a mock object with a stub" do
- it "should remove the stub" do
- a_mock = mock 'an object', :foo => :bar
-
- a_mock.unstub! :foo
- a_mock.should_not respond_to(:foo)
- end
- end
-
- context "unstubbing a real object with a stub" do
- before do
- @obj = Object.new
- end
-
- it "should raise a NoMethodError if the message is called after unstubbing" do
- @obj.stub!(:foo).and_return :bar
- @obj.unstub!(:foo)
-
- lambda {
- @obj.foo
- }.should raise_error(NoMethodError)
- end
-
- it "should only clear the stub specified" do
- @obj.stub!(:foo).and_return :bar
- @obj.stub!(:other).and_return :baz
-
- @obj.unstub!(:foo)
-
- @obj.other.should == :baz
- end
-
- it "should no longer respond_to? the method" do
- @obj.stub!(:foo).and_return :bar
- @obj.unstub!(:foo)
-
- @obj.should_not respond_to(:foo)
- end
-
- it "should unstub using a string (should convert the string to a symbol)" do
- @obj.stub!(:foo)
-
- @obj.unstub!("foo")
-
- @obj.should_not respond_to(:foo)
- end
-
- it "should restore a previous method definition" do
- def @obj.foo
- :a_result
- end
-
- @obj.stub!(:foo).and_return :stubbed_result
- @obj.unstub!(:foo)
-
- @obj.foo.should == :a_result
- end
-
- it "should have unstub as an alias of unstub!" do
- @obj.stub!(:foo).and_return :bar
-
- @obj.unstub(:foo)
-
- lambda {
- @obj.foo
- }.should raise_error(NoMethodError)
- end
-
- it "should raise a MockExpectationError if it is not stubbed" do
- lambda {
- @obj.unstub!(:foo)
- }.should raise_error(MockExpectationError, "The method `foo` was not stubbed or was already unstubbed")
- end
-
- it "should raise a MockExpectationError if it was already unstubbed" do
- @obj.stub!(:foo)
- @obj.unstub!(:foo)
-
- lambda {
- @obj.unstub!(:foo)
- }.should raise_error(MockExpectationError, "The method `foo` was not stubbed or was already unstubbed")
- end
-
- it "should use the correct message name in the error" do
- @obj.stub!(:bar)
- @obj.unstub!(:bar)
-
- lambda {
- @obj.unstub!(:bar)
- }.should raise_error(MockExpectationError, "The method `bar` was not stubbed or was already unstubbed")
- end
-
- it "should raise a MockExpectationError if the method is defined, but not stubbed" do
- def @obj.meth; end
-
- lambda {
- @obj.unstub!(:meth)
- }.should raise_error(MockExpectationError)
- end
-
- it "should be able to restub a after unstubbing" do
- @obj.stub!(:foo).and_return :bar
-
- @obj.unstub!(:foo)
-
- @obj.stub!(:foo).and_return :baz
-
- @obj.foo.should == :baz
- end
-
- it "should remove only the first stub if multiple stubs have been defined" do
- @obj.stub!(:foo).and_return :first
- @obj.stub!(:foo).and_return :second
-
- @obj.unstub!(:foo)
-
- @obj.foo.should == :first
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/package/bin_spec_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/package/bin_spec_spec.rb
deleted file mode 100644
index 6628fad72..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/package/bin_spec_spec.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'spec_helper'
-require 'ruby_forker'
-
-describe "The bin/spec script" do
- include RubyForker
-
- it "should have no warnings" do
- output = ruby "-w -Ilib bin/spec --help"
- output.should_not =~ /warning/n
- end
-
- it "should show the help w/ no args" do
- output = ruby "-w -Ilib bin/spec"
- output.should =~ /^Usage: spec/
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/rake/spectask_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/rake/spectask_spec.rb
deleted file mode 100644
index ea834bad4..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/rake/spectask_spec.rb
+++ /dev/null
@@ -1,150 +0,0 @@
-require 'spec_helper'
-require 'spec/rake/spectask'
-
-module Spec
- module Rake
-
- class MockTask
- class << self
- attr_accessor :last_instance, :last_cmd
- end
-
- def self.tasks
- @tasks ||= {}
- end
-
- def self.reset_tasks
- @tasks = {}
- end
-
- def self.task(name)
- tasks[name]
- end
-
- def self.register_task(name, block)
- tasks[name] = block
- end
-
- def initialize(name, &block)
- MockTask.register_task(name, block)
- MockTask.last_instance = block
- end
-
- def self.create_task(name, &block)
- new(name, &block)
- end
- end
-
- class SpecTask
- def task(name, &block)
- MockTask.create_task(name, &block)
- end
-
- def system(cmd)
- MockTask.last_cmd = cmd
- true
- end
-
- def default_ruby_path
- RUBY
- end
- end
-
- describe SpecTask do
-
- before(:each) do
- MockTask.reset_tasks
- end
-
- it "should execute rake's ruby path by default" do
- task = SpecTask.new
- MockTask.last_instance.call
- MockTask.last_cmd.should match(/^#{task.default_ruby_path} /)
- end
-
- it "should execute the command with system if ruby_cmd is specified" do
- task = SpecTask.new {|t| t.ruby_cmd = "path_to_multiruby"}
- task.should_receive(:system).and_return(true)
- MockTask.last_instance.call
- end
-
- it "should execute the ruby_cmd path if specified" do
- SpecTask.new {|t| t.ruby_cmd = "path_to_multiruby"}
- MockTask.last_instance.call
- MockTask.last_cmd.should match(/^path_to_multiruby /)
- end
-
- it "should produce a deprecation warning if the out option is used" do
- SpecTask.new {|t| t.out = "somewhere_over_the_rainbow"}
- STDERR.should_receive(:puts).with("The Spec::Rake::SpecTask#out attribute is DEPRECATED and will be removed in a future version. Use --format FORMAT:WHERE instead.")
- MockTask.last_instance.call
- end
-
- it "should produce an error if failure_message is set and the command fails" do
- task = SpecTask.new {|t| t.failure_message = "oops"; t.fail_on_error = false}
- STDERR.should_receive(:puts).with("oops")
- task.stub(:system).and_return(false)
- MockTask.last_instance.call
- end
-
- it "should raise if fail_on_error is set and the command fails" do
- task = SpecTask.new
- task.stub(:system).and_return(false)
- lambda {MockTask.last_instance.call}.should raise_error
- end
-
- it "should not raise if fail_on_error is not set and the command fails" do
- task = SpecTask.new {|t| t.fail_on_error = false}
- task.stub(:system).and_return(false)
- lambda {MockTask.last_instance.call}.should_not raise_error
- end
-
- context "with ENV['SPEC'] set" do
- before(:each) do
- @orig_env_spec = ENV['SPEC']
- ENV['SPEC'] = 'foo.rb'
- end
- after(:each) do
- ENV['SPEC'] = @orig_env_spec
- end
- it "should use the provided file list" do
- task = SpecTask.new
- task.spec_file_list.should == ["foo.rb"]
- end
- end
-
- context "with the rcov option" do
-
- it "should create a clobber_rcov task" do
- MockTask.stub!(:create_task)
- MockTask.should_receive(:create_task).with(:clobber_rcov)
- SpecTask.new(:rcov) {|t| t.rcov = true}
- end
-
- it "should setup the clobber_rcov task to remove the rcov directory" do
- task = SpecTask.new(:rcov) {|t| t.rcov = true; t.rcov_dir = "path_to_rcov_directory"}
- task.should_receive(:rm_r).with("path_to_rcov_directory")
- MockTask.task(:clobber_rcov).call
- end
-
- it "should make the clobber task depend on clobber_rcov" do
- MockTask.stub!(:create_task)
- MockTask.should_receive(:create_task).with(:clobber => [:clobber_rcov])
- SpecTask.new(:rcov) {|t| t.rcov = true}
- end
-
- it "should make the rcov task depend on clobber_rcov" do
- MockTask.stub!(:create_task)
- MockTask.should_receive(:create_task).with(:rcov => :clobber_rcov)
- SpecTask.new(:rcov) {|t| t.rcov = true}
- end
-
- it "creates an rcov options list" do
- MockTask.stub!(:create_task)
- task = SpecTask.new(:rcov) {|t| t.rcov = true, t.rcov_opts = ['a','b']}
- task.rcov_option_list.should == "a b"
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/class_and_argument_parser_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/class_and_argument_parser_spec.rb
deleted file mode 100644
index 1168818f0..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/class_and_argument_parser_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- describe ClassAndArgumentsParser, ".parse" do
-
- it "should use a single : to separate class names from arguments" do
- ClassAndArgumentsParser.parse('Foo').should == ['Foo', nil]
- ClassAndArgumentsParser.parse('Foo:arg').should == ['Foo', 'arg']
- ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
- ClassAndArgumentsParser.parse('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
- ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
- ClassAndArgumentsParser.parse('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
- end
-
- it "should raise an error when passed an empty string" do
- lambda do
- ClassAndArgumentsParser.parse('')
- end.should raise_error("Couldn't parse \"\"")
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/command_line_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/command_line_spec.rb
deleted file mode 100644
index bc64e5aef..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/command_line_spec.rb
+++ /dev/null
@@ -1,162 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- describe CommandLine, ".run" do
- with_sandboxed_options do
- attr_reader :err, :out
- before do
- @err = options.error_stream
- @out = options.output_stream
- end
-
- it "should run directory" do
- file = File.dirname(__FILE__) + '/../../../examples/passing'
- run_with(OptionParser.parse([file,"-p","**/*_spec.rb,**/*_example.rb"], @err, @out))
-
- @out.rewind
- @out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
- end
-
- it "should run file" do
- file = File.dirname(__FILE__) + '/../../../examples/failing/predicate_example.rb'
- run_with(OptionParser.parse([file], @err, @out))
-
- @out.rewind
- @out.read.should =~ /3 examples, 2 failures/n
- end
-
- it "should raise when file does not exist" do
- file = File.dirname(__FILE__) + '/doesntexist'
-
- lambda {
- Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
- }.should raise_error
- end
-
- it "should return true when in --generate-options mode" do
- # NOTE - this used to say /dev/null but jruby hangs on that for some reason
- Spec::Runner::CommandLine.run(
- OptionParser.parse(['--generate-options', '/tmp/foo'], @err, @out)
- ).should be_true
- end
-
- it "should exit if Interrupt exception occurrs during the spec" do
- example_group = Class.new(::Spec::Example::ExampleGroup) do
- describe("example_group")
- it "no error" do
- end
-
- it "should interrupt" do
- raise Interrupt, "I'm interrupting"
- end
- end
-
- options = ::Spec::Runner::Options.new(@err, @out)
- ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
- options.add_example_group(example_group)
-
- expect {
- Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
- }.to raise_error(SystemExit)
- end
-
- it "should exit if Interrupt exception occurrs during an after(:each)" do
- example_group = Class.new(::Spec::Example::ExampleGroup) do
- describe("example_group")
- it "no error" do
- end
-
- after do
- raise Interrupt, "I'm interrupting"
- end
- end
-
- options = ::Spec::Runner::Options.new(@err, @out)
- ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
- options.add_example_group(example_group)
-
- expect {
- Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
- }.to raise_error(SystemExit)
- end
-
- it "should heckle when options have heckle_runner" do
- example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
- it "no error" do
- end
- end
- options = ::Spec::Runner::Options.new(@err, @out)
- ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
- options.add_example_group example_group
-
- heckle_runner = mock("heckle_runner")
- heckle_runner.should_receive(:heckle_with)
- $rspec_mocks.__send__(:mocks).delete(heckle_runner)
-
- options.heckle_runner = heckle_runner
- options.add_example_group(example_group)
-
- Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
- heckle_runner.rspec_verify
- end
-
- it "should run examples backwards if options.reverse is true" do
- options = ::Spec::Runner::Options.new(@err, @out)
- ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
- options.reverse = true
-
- b1 = Class.new(Spec::Example::ExampleGroup)
- b2 = Class.new(Spec::Example::ExampleGroup)
-
- b2.should_receive(:run).ordered
- b1.should_receive(:run).ordered
-
- options.add_example_group(b1)
- options.add_example_group(b2)
-
- Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
- end
-
- it "should pass its ExampleGroup to the reporter" do
- example_group = describe("example_group") do
- it "should" do
- end
- end
- options = ::Spec::Runner::Options.new(@err, @out)
- options.add_example_group(example_group)
-
- ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
- options.reporter.should_receive(:add_example_group).with(Spec::Example::ExampleGroupProxy.new(example_group))
-
- Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
- end
-
- it "runs only selected Examples when options.examples is set" do
- options = ::Spec::Runner::Options.new(@err, @out)
- ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
-
- options.examples << "example group expected example"
- expected_example_was_run = false
- unexpected_example_was_run = false
- example_group = describe("example group") do
- it "expected example" do
- expected_example_was_run = true
- end
- it "unexpected example" do
- unexpected_example_was_run = true
- end
- end
-
- options.reporter.should_receive(:add_example_group).with(Spec::Example::ExampleGroupProxy.new(example_group))
-
- options.add_example_group example_group
- run_with(options)
-
- expected_example_was_run.should be_true
- unexpected_example_was_run.should be_false
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/configuration_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/configuration_spec.rb
deleted file mode 100644
index ea545d641..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/configuration_spec.rb
+++ /dev/null
@@ -1,320 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- describe Configuration do
- with_sandboxed_options do
- with_sandboxed_config do
-
- describe "#mock_with" do
- it "should default mock framework to rspec" do
- config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/rspec$/
- end
-
- it "should set rspec mocking explicitly" do
- config.mock_with(:rspec)
- config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/rspec$/
- end
-
- it "should set mocha" do
- config.mock_with(:mocha)
- config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/mocha$/
- end
-
- it "should set flexmock" do
- config.mock_with(:flexmock)
- config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/flexmock$/
- end
-
- it "should set rr" do
- config.mock_with(:rr)
- config.mock_framework.should =~ /^spec\/adapters\/mock_frameworks\/rr$/
- end
-
- it "should set an arbitrary adapter module" do
- adapter = Module.new
- config.mock_with(adapter)
- config.mock_framework.should == adapter
- end
- end
-
- describe "#include" do
-
- before(:each) do
- @example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) {}
- Spec::Example::ExampleGroupFactory.register(:foobar, @example_group_class)
- end
-
- it "should include the submitted module in ExampleGroup subclasses" do
- mod = Module.new
- config.include mod
- Class.new(@example_group_class).included_modules.should include(mod)
- end
-
- it "should scope modules to be included for a specific type" do
- mod = Module.new
- config.include mod, :type => :foobar
- Class.new(@example_group_class).included_modules.should include(mod)
- end
-
- it "should not include modules in a type they are not intended for" do
- mod = Module.new
- @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble)
- Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class)
-
- config.include mod, :type => :foobar
-
- Class.new(@other_example_group_class).included_modules.should_not include(mod)
- end
-
- it "accepts an Array of types" do
- mod = Module.new
- @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble)
- Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class)
-
- config.include mod, :type => [:foobar, :baz]
-
- Class.new(@example_group_class).included_modules.should include(mod)
- Class.new(@other_example_group_class).included_modules.should include(mod)
- end
-
- end
-
- describe "#extend" do
-
- before(:each) do
- @example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) {}
- Spec::Example::ExampleGroupFactory.register(:foobar, @example_group_class)
- end
-
- it "should extend all groups" do
- mod = Module.new
- ExampleGroup.should_receive(:extend).with(mod)
- Spec::Runner.configuration.extend mod
- end
-
- it "should extend specified groups" do
- mod = Module.new
- @example_group_class.should_receive(:extend).with(mod)
- Spec::Runner.configuration.extend mod, :type => :foobar
- end
-
- it "should not extend non-specified groups" do
- @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble)
- Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class)
-
- mod = Module.new
- @other_example_group_class.should_not_receive(:extend)
-
- Spec::Runner.configuration.extend mod, :type => :foobar
- end
-
- end
- end
-
- describe "ordering methods: " do
-
- before(:each) do
- @special_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe("special_example_group")
- @special_child_example_group = Class.new(@special_example_group).describe("special_child_example_group")
- @nonspecial_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe("nonspecial_example_group")
- Spec::Example::ExampleGroupFactory.register(:special, @special_example_group)
- Spec::Example::ExampleGroupFactory.register(:special_child, @special_child_example_group)
- Spec::Example::ExampleGroupFactory.register(:non_special, @nonspecial_example_group)
- @example_group = @special_child_example_group.describe "Special Example Group"
- @unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group"
- end
-
- describe "#prepend_before" do
- it "prepends the before block on all instances of the passed in type" do
- order = []
- config.prepend_before(:all) do
- order << :prepend__before_all
- end
- config.prepend_before(:all, :type => :special) do
- order << :special_prepend__before_all
- end
- config.prepend_before(:all, :type => :special_child) do
- order << :special_child_prepend__before_all
- end
- config.prepend_before(:each) do
- order << :prepend__before_each
- end
- config.prepend_before(:each, :type => :special) do
- order << :special_prepend__before_each
- end
- config.prepend_before(:each, :type => :special_child) do
- order << :special_child_prepend__before_each
- end
- config.prepend_before(:all, :type => :non_special) do
- order << :special_prepend__before_all
- end
- config.prepend_before(:each, :type => :non_special) do
- order << :special_prepend__before_each
- end
- @example_group.it "calls prepend_before" do
- end
-
- @example_group.run(options)
- order.should == [
- :prepend__before_all,
- :special_prepend__before_all,
- :special_child_prepend__before_all,
- :prepend__before_each,
- :special_prepend__before_each,
- :special_child_prepend__before_each
- ]
- end
- end
-
- describe "#append_before" do
-
- it "calls append_before on the type" do
- order = []
- config.append_before(:all) do
- order << :append_before_all
- end
- config.append_before(:all, :type => :special) do
- order << :special_append_before_all
- end
- config.append_before(:all, :type => :special_child) do
- order << :special_child_append_before_all
- end
- config.append_before do # default is :each
- order << :append_before_each
- end
- config.append_before(:each, :type => :special) do
- order << :special_append_before_each
- end
- config.append_before(:each, :type => :special_child) do
- order << :special_child_append_before_each
- end
- config.append_before(:all, :type => :non_special) do
- order << :special_append_before_all
- end
- config.append_before(:each, :type => :non_special) do
- order << :special_append_before_each
- end
- @example_group.it "calls append_before" do
- end
-
- @example_group.run(options)
- order.should == [
- :append_before_all,
- :special_append_before_all,
- :special_child_append_before_all,
- :append_before_each,
- :special_append_before_each,
- :special_child_append_before_each
- ]
- end
- end
-
- describe "#prepend_after" do
-
- it "prepends the after block on all instances of the passed in type" do
- order = []
- config.prepend_after(:all) do
- order << :prepend__after_all
- end
- config.prepend_after(:all, :type => :special) do
- order << :special_prepend__after_all
- end
- config.prepend_after(:all, :type => :special) do
- order << :special_child_prepend__after_all
- end
- config.prepend_after(:each) do
- order << :prepend__after_each
- end
- config.prepend_after(:each, :type => :special) do
- order << :special_prepend__after_each
- end
- config.prepend_after(:each, :type => :special) do
- order << :special_child_prepend__after_each
- end
- config.prepend_after(:all, :type => :non_special) do
- order << :special_prepend__after_all
- end
- config.prepend_after(:each, :type => :non_special) do
- order << :special_prepend__after_each
- end
- @example_group.it "calls prepend_after" do
- end
-
- @example_group.run(options)
- order.should == [
- :special_child_prepend__after_each,
- :special_prepend__after_each,
- :prepend__after_each,
- :special_child_prepend__after_all,
- :special_prepend__after_all,
- :prepend__after_all
- ]
- end
- end
-
- describe "#append_after" do
-
- it "calls append_after on the type" do
- order = []
- config.append_after(:all) do
- order << :append__after_all
- end
- config.append_after(:all, :type => :special) do
- order << :special_append__after_all
- end
- config.append_after(:all, :type => :special_child) do
- order << :special_child_append__after_all
- end
- config.append_after(:each) do
- order << :append__after_each
- end
- config.append_after(:each, :type => :special) do
- order << :special_append__after_each
- end
- config.append_after(:each, :type => :special_child) do
- order << :special_child_append__after_each
- end
- config.append_after(:all, :type => :non_special) do
- order << :non_special_append_after_all
- end
- config.append_after(:each, :type => :non_special) do
- order << :non_special_append_after_each
- end
- @example_group.it "calls append_after" do
- end
-
- @example_group.run(options)
- order.should == [
- :special_child_append__after_each,
- :special_append__after_each,
- :append__after_each,
- :special_child_append__after_all,
- :special_append__after_all,
- :append__after_all
- ]
- end
-
- end
-
- describe "#ignore_backtrace_patterns" do
- it "adds patterns to ignore in backtrace" do
- config.ignore_backtrace_patterns /custom_pattern/, /shoulda/, /spork/
- config.ignored_backtrace_patterns.should include(/custom_pattern/)
- config.ignored_backtrace_patterns.should include(/shoulda/)
- config.ignored_backtrace_patterns.should include(/spork/)
- end
- end
-
- describe "#predicate_matchers (DEPRECATED)" do
- it "is deprecated" do
- Spec.should_receive(:deprecate)
- config.predicate_matchers[:foo] = :bar?
- end
- end
-
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/drb_command_line_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/drb_command_line_spec.rb
deleted file mode 100644
index 4071956ab..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/drb_command_line_spec.rb
+++ /dev/null
@@ -1,146 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- unless jruby?
- describe DrbCommandLine do
-
- context "without server running" do
- it "prints error" do
- err = out = StringIO.new
- DrbCommandLine.run(OptionParser.parse(['--version'], err, out))
-
- err.rewind
- err.read.should =~ /No server is running/
- end
-
- it "returns nil" do
- err = out = StringIO.new
- result = DrbCommandLine.run(OptionParser.parse(['--version'], err, out))
- result.should be_false
- end
- end
-
- context "with server running" do
- class ::CommandLineForDrbSpec
- def self.run(argv, stderr, stdout)
- orig_options = Spec::Runner.options
- tmp_options = Spec::Runner::OptionParser.parse(argv, stderr, stdout)
- Spec::Runner.use tmp_options
- Spec::Runner::CommandLine.run(tmp_options)
- ensure
- Spec::Runner.use orig_options
- end
- end
-
- before(:all) do
- DRb.start_service("druby://127.0.0.1:8989", ::CommandLineForDrbSpec)
- @@drb_example_file_counter = 0
- end
-
- before(:each) do
- create_dummy_spec_file
- @@drb_example_file_counter = @@drb_example_file_counter + 1
- end
-
- after(:each) do
- File.delete(@dummy_spec_filename)
- end
-
- after(:all) do
- DRb.stop_service
- end
-
- it "returns true" do
- err = out = StringIO.new
- result = DrbCommandLine.run(OptionParser.parse(['--version'], err, out))
- result.should be_true
- end
-
- it "should run against local server" do
- out = run_spec_via_druby(['--version'])
- out.should =~ /rspec \d+\.\d+\.\d+.*/n
- end
-
- it "should output green colorized text when running with --colour option" do
- out = run_spec_via_druby(["--colour", @dummy_spec_filename])
- out.should =~ /\e\[32m/n
- end
-
- it "should output red colorized text when running with -c option" do
- out = run_spec_via_druby(["-c", @dummy_spec_filename])
- out.should =~ /\e\[31m/n
- end
-
- def create_dummy_spec_file
- @dummy_spec_filename = File.expand_path(File.dirname(__FILE__)) + "/_dummy_spec#{@@drb_example_file_counter}.rb"
- File.open(@dummy_spec_filename, 'w') do |f|
- f.write %{
- describe "DUMMY CONTEXT for 'DrbCommandLine with -c option'" do
- it "should be output with green bar" do
- true.should be_true
- end
-
- it "should be output with red bar" do
- violated("I want to see a red bar!")
- end
- end
- }
- end
- end
-
- def run_spec_via_druby(argv)
- err, out = StringIO.new, StringIO.new
- out.instance_eval do
- def tty?; true end
- end
- options = ::Spec::Runner::Options.new(err, out)
- options.argv = argv
- Spec::Runner::DrbCommandLine.run(options)
- out.rewind; out.read
- end
- end
-
- context "#port" do
- before do
- @options = stub("options", :drb_port => nil)
- end
-
- context "with no additional configuration" do
- it "defaults to 8989" do
- Spec::Runner::DrbCommandLine.port(@options).should == 8989
- end
- end
-
- context "with RSPEC_DRB environment variable set" do
- def with_RSPEC_DRB_set_to(val)
- original = ENV['RSPEC_DRB']
- begin
- ENV['RSPEC_DRB'] = val
- yield
- ensure
- ENV['RSPEC_DRB'] = original
- end
- end
-
- it "uses RSPEC_DRB value" do
- with_RSPEC_DRB_set_to('9000') do
- Spec::Runner::DrbCommandLine.port(@options).should == 9000
- end
- end
-
- context "and config variable set" do
- it "uses configured value" do
- @options.stub(:drb_port => '5000')
- with_RSPEC_DRB_set_to('9000') do
- Spec::Runner::DrbCommandLine.port(@options).should == 5000
- end
- end
- end
-
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/empty_file.txt b/vendor/gems/rspec-1.3.1/spec/spec/runner/empty_file.txt
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/empty_file.txt
+++ /dev/null
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/example_group_runner_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/example_group_runner_spec.rb
deleted file mode 100644
index 2b1601aca..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/example_group_runner_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- describe ExampleGroupRunner do
- before(:each) do
- err = StringIO.new('')
- out = StringIO.new('')
- @options = Options.new(err, out)
- @runner = Spec::Runner::ExampleGroupRunner.new(@options)
- end
-
- after(:each) do
- Spec::Expectations.differ = nil
- end
-
- describe "#load_files" do
- it "should load UTF-8 encoded files" do
- file = File.expand_path(File.dirname(__FILE__) + "/resources/utf8_encoded.rb")
- @options.files << file
- @runner.load_files(@options.files_to_load).should == @options.files_to_load
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/examples.txt b/vendor/gems/rspec-1.3.1/spec/spec/runner/examples.txt
deleted file mode 100644
index 2fcbd355d..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/examples.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Sir, if you were my husband, I would poison your drink.
-Madam, if you were my wife, I would drink it. \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/failed.txt b/vendor/gems/rspec-1.3.1/spec/spec/runner/failed.txt
deleted file mode 100644
index 07c5442cf..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/failed.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-heckler_spec.rb
-command_line_spec.rb
-reporter_spec.rb \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/base_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/base_formatter_spec.rb
deleted file mode 100644
index a904bf380..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/base_formatter_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- module Formatter
- describe BaseFormatter do
- subject { BaseFormatter.new(nil,nil) }
- it {should respond_to(:start ).with(1).argument }
- it {should respond_to(:example_group_started).with(1).argument }
- it {should respond_to(:example_started ).with(1).argument }
- # -3 indicates that one of the arguments is optional, with a default
- # value assigned. This is due to deprecated_pending_location. Once
- # that is removed, this should be changed to 2.
- it {should respond_to(:example_pending ).with(-3).arguments}
- it {should respond_to(:example_passed ).with(1).argument }
- it {should respond_to(:example_failed ).with(3).arguments}
- it {should respond_to(:start_dump ).with(0).arguments}
- it {should respond_to(:dump_failure ).with(2).arguments}
- it {should respond_to(:dump_summary ).with(4).arguments}
- it {should respond_to(:dump_pending ).with(0).arguments}
- it {should respond_to(:close ).with(0).arguments}
-
- it "deprecates add_example_group" do
- Spec.should_receive(:deprecate)
- subject.add_example_group(stub('example group'))
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/base_text_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/base_text_formatter_spec.rb
deleted file mode 100644
index e3677ad47..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/base_text_formatter_spec.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/formatter/base_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe BaseTextFormatter do
-
- before :all do
- @sandbox = "spec/sandbox"
- end
-
- it "should create the directory contained in WHERE if it does not exist" do
- FileUtils.should_receive(:mkdir_p).with(@sandbox)
- File.stub!(:open)
- BaseTextFormatter.new({},"#{@sandbox}/temp.rb")
- end
-
- context "(deprecations)" do
- before(:each) do
- Kernel.stub!(:warn)
- @io = StringIO.new
- @options = mock('options')
- @options.stub!(:dry_run).and_return(false)
- @options.stub!(:colour).and_return(false)
- @options.stub!(:autospec).and_return(false)
- @formatter = Class.new(BaseTextFormatter) do
- def method_that_class_magenta(message)
- magenta(message)
- end
- def method_that_class_colourise(message, failure)
- colourise(message, failure)
- end
- end.new(@options, @io)
- @failure = stub('failure', :pending_fixed? => false)
- end
-
- context "#colourise" do
- it "warns when subclasses call colourise" do
- Spec.should_receive(:deprecate)
- @formatter.method_that_class_colourise('this message', @failure)
- end
-
- it "delegates to colorize_failure" do
- @formatter.should_receive(:colorize_failure).with('this message', @failure)
- @formatter.colourise('this message', @failure)
- end
- end
-
- context "#magenta" do
- it "warns when subclasses call magenta" do
- Spec.should_receive(:deprecate).with(/#magenta/)
- @formatter.method_that_class_magenta('this message')
- end
-
- it "delegates to red" do
- @formatter.should_receive(:red).with('this message')
- @formatter.method_that_class_magenta('this message')
- end
- end
-
- end
-
- describe "#colour (protected)" do
- before(:each) do
- @original_RSPEC_COLOR = ENV['RSPEC_COLOR']
- end
-
- it "does not colorize when output_to_file? returns true" do
- out = StringIO.new
- options = stub('options', :colour => true, :autospec => false)
- formatter = BaseTextFormatter.new(options,out)
- formatter.stub!(:output_to_tty?).and_return(true)
- formatter.stub!(:output_to_file?).and_return(true)
- formatter.__send__(:colour, 'foo', "\e[32m").should == "foo"
- end
-
- it "colorizes when colour? and output_to_tty? return true" do
- out = StringIO.new
- options = stub('options', :colour => true, :autospec => false)
- formatter = BaseTextFormatter.new(options,out)
- formatter.stub!(:output_to_tty?).and_return(true)
- formatter.__send__(:colour, 'foo', "\e[32m").should == "\e[32mfoo\e[0m"
- end
-
- it "colorizes when ENV['RSPEC_COLOR'] is set even if colour? and output_to_tty? return false" do
- out = StringIO.new
- options = stub('options', :colour => false)
- formatter = BaseTextFormatter.new(options,out)
- formatter.stub!(:output_to_tty?).and_return(false)
-
- ENV['RSPEC_COLOR'] = 'true'
-
- formatter.__send__(:colour, 'foo', "\e[32m").should == "\e[32mfoo\e[0m"
- end
-
- it "colorizes when autospec? is true even if colour? and output_to_tty? return false" do
- out = StringIO.new
- options = stub('options', :colour => true, :autospec => true)
- formatter = BaseTextFormatter.new(options,out)
- formatter.stub!(:output_to_tty?).and_return(false)
-
- formatter.__send__(:colour, 'foo', "\e[32m").should == "\e[32mfoo\e[0m"
- end
-
- after(:each) do
- ENV['RSPEC_COLOR'] = @original_RSPEC_COLOR
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb
deleted file mode 100644
index b390131ad..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/formatter/failing_example_groups_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe FailingExampleGroupsFormatter do
- attr_reader :example_group, :formatter, :io
-
- before(:each) do
- @io = StringIO.new
- options = mock('options')
- @formatter = FailingExampleGroupsFormatter.new(options, io)
- @example_group = Class.new(::Spec::Example::ExampleGroup)
- end
-
- it "should add example name for each failure" do
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(Class.new(::Spec::Example::ExampleGroupDouble).describe("b 1")))
- formatter.example_failed("e 1", nil, Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(Class.new(::Spec::Example::ExampleGroupDouble).describe("b 2")))
- formatter.example_failed("e 2", nil, Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
- formatter.example_failed("e 3", nil, Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
- io.string.should include("b 1")
- io.string.should include("b 2")
- end
-
- it "should delimit ExampleGroup superclass descriptions with :" do
- parent_example_group = Class.new(example_group).describe("Parent")
- child_example_group = Class.new(parent_example_group).describe("#child_method")
- grand_child_example_group = Class.new(child_example_group).describe("GrandChild")
-
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
- formatter.example_failed("failure", nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
- io.string.should == "Parent#child_method GrandChild\n"
- end
-
- it "should remove druby url, which is used by Spec::Distributed" do
- @formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(Class.new(::Spec::Example::ExampleGroupDouble).describe("something something (druby://99.99.99.99:99)")))
- @formatter.example_failed("e 1", nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
- io.string.should == "something something\n"
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/failing_examples_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
deleted file mode 100644
index 76d03fa39..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/failing_examples_formatter_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/formatter/failing_examples_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe FailingExamplesFormatter do
- before(:each) do
- @io = StringIO.new
- options = mock('options')
- @formatter = FailingExamplesFormatter.new(options, @io)
- end
-
- it "should add example name for each failure" do
- example_group_1 = Class.new(::Spec::Example::ExampleGroupDouble).describe("A")
- example_group_2 = Class.new(example_group_1).describe("B")
-
- @formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group_1))
- @formatter.example_failed(example_group_1.it("a1"){}, nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
- @formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group_2))
- @formatter.example_failed(example_group_2.it("b2"){}, nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
- @formatter.example_failed(example_group_2.it("b3"){}, nil, ::Spec::Runner::Reporter::Failure.new("g", nil, RuntimeError.new))
- @io.string.should eql(<<-EOF
-A a1
-A B b2
-A B b3
-EOF
-)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html
deleted file mode 100644
index 029cee62e..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html
+++ /dev/null
@@ -1,377 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-</head>
-<body>
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <dt id="example_group_1">Mocker</dt>
- <script type="text/javascript">moveProgressBar('5.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
- <script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('example_group_1');</script>
- <script type="text/javascript">moveProgressBar('11.7');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when expected message not received</span>
- <div class="failure" id="failure_1">
- <div class="message"><pre>Mock &quot;poke me&quot; expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre>examples/failing/mocking_example.rb:11:
-spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
-<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
-<span class="linenum">12</span> <span class="keyword">end</span>
-<span class="linenum">13</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when messages are received out of order</span>
- <div class="failure" id="failure_2">
- <div class="message"><pre>Mock &quot;one two three&quot; received :three out of order</pre></div>
- <div class="backtrace"><pre>examples/failing/mocking_example.rb:20:
-spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
-<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
-<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
-<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">22</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
- <div class="failure" id="failure_3">
- <div class="message"><pre>Mock &quot;don't talk to me&quot; expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre>examples/failing/mocking_example.rb:27:
-spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
-<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span>
-<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
-<span class="linenum">28</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <span class="failed_spec_name">has a bug we need to fix</span>
- <div class="failure" id="failure_4">
- <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre>examples/failing/mocking_example.rb:31:
-spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">29</span>
-<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
-<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('example_group_2');</script>
- <script type="text/javascript">moveProgressBar('35.2');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different strings</span>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-
- Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behaviour driven development
-+behavior driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre>examples/failing/diffing_spec.rb:13:
-spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
-<span class="linenum">12</span><span class="constant">EOF</span>
-<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>
-expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-
- got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
-
-
-(compared using eql?)
-</pre></div>
- <div class="backtrace"><pre>examples/failing/diffing_spec.rb:34:
-spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
-<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
-<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_3">A consumer of a stub</dt>
- <script type="text/javascript">moveProgressBar('47.0');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_4">A stubbed method on a class</dt>
- <script type="text/javascript">moveProgressBar('52.9');</script>
- <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
- <script type="text/javascript">moveProgressBar('58.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_5">A mock</dt>
- <script type="text/javascript">moveProgressBar('70.5');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
- <script type="text/javascript">moveProgressBar('76.4');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('example_group_6');</script>
- <script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('example_group_7');</script>
- <script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('example_group_8');</script>
- <script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.6.html b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.6.html
deleted file mode 100644
index 1461d03e4..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.6.html
+++ /dev/null
@@ -1,377 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-</head>
-<body>
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <dt id="example_group_1">Mocker</dt>
- <script type="text/javascript">moveProgressBar('5.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
- <script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('example_group_1');</script>
- <script type="text/javascript">moveProgressBar('11.7');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when expected message not received</span>
- <div class="failure" id="failure_1">
- <div class="message"><pre>Mock &quot;poke me&quot; expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:11:
-./spec/spec_helper.rb:44:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
-<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
-<span class="linenum">12</span> <span class="keyword">end</span>
-<span class="linenum">13</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when messages are received out of order</span>
- <div class="failure" id="failure_2">
- <div class="message"><pre>Mock &quot;one two three&quot; received :three out of order</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:20:
-./spec/spec_helper.rb:44:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
-<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
-<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
-<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">22</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
- <div class="failure" id="failure_3">
- <div class="message"><pre>Mock &quot;don't talk to me&quot; expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:27:
-./spec/spec_helper.rb:44:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
-<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span>
-<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
-<span class="linenum">28</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <span class="failed_spec_name">has a bug we need to fix</span>
- <div class="failure" id="failure_4">
- <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:31:
-./spec/spec_helper.rb:44:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">29</span>
-<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
-<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('example_group_2');</script>
- <script type="text/javascript">moveProgressBar('35.2');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different strings</span>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-
- Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behaviour driven development
-+behavior driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:13:
-./spec/spec_helper.rb:44:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
-<span class="linenum">12</span><span class="constant">EOF</span>
-<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>
-expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-
- got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
-
-
-(compared using eql?)
-</pre></div>
- <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:34:
-./spec/spec_helper.rb:44:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
-<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
-<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_3">A consumer of a stub</dt>
- <script type="text/javascript">moveProgressBar('47.0');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_4">A stubbed method on a class</dt>
- <script type="text/javascript">moveProgressBar('52.9');</script>
- <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
- <script type="text/javascript">moveProgressBar('58.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_5">A mock</dt>
- <script type="text/javascript">moveProgressBar('70.5');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
- <script type="text/javascript">moveProgressBar('76.4');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('example_group_6');</script>
- <script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('example_group_7');</script>
- <script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('example_group_8');</script>
- <script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.7.html b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.7.html
deleted file mode 100644
index 5e489bba5..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.8.7.html
+++ /dev/null
@@ -1,377 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-</head>
-<body>
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <dt id="example_group_1">Mocker</dt>
- <script type="text/javascript">moveProgressBar('5.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
- <script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('example_group_1');</script>
- <script type="text/javascript">moveProgressBar('11.7');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when expected message not received</span>
- <div class="failure" id="failure_1">
- <div class="message"><pre>Mock &quot;poke me&quot; expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:11:
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
-<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
-<span class="linenum">12</span> <span class="keyword">end</span>
-<span class="linenum">13</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when messages are received out of order</span>
- <div class="failure" id="failure_2">
- <div class="message"><pre>Mock &quot;one two three&quot; received :three out of order</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:20:
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
-<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
-<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
-<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">22</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
- <div class="failure" id="failure_3">
- <div class="message"><pre>Mock &quot;don't talk to me&quot; expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:27:
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
-<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span>
-<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
-<span class="linenum">28</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <span class="failed_spec_name">has a bug we need to fix</span>
- <div class="failure" id="failure_4">
- <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:31:
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">29</span>
-<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
-<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('example_group_2');</script>
- <script type="text/javascript">moveProgressBar('35.2');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different strings</span>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-
- Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behaviour driven development
-+behavior driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:13:
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
-<span class="linenum">12</span><span class="constant">EOF</span>
-<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>
-expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-
- got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
-
-
-(compared using eql?)
-</pre></div>
- <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:34:
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:</pre></div>
- <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
-<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
-<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_3">A consumer of a stub</dt>
- <script type="text/javascript">moveProgressBar('47.0');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_4">A stubbed method on a class</dt>
- <script type="text/javascript">moveProgressBar('52.9');</script>
- <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
- <script type="text/javascript">moveProgressBar('58.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_5">A mock</dt>
- <script type="text/javascript">moveProgressBar('70.5');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
- <script type="text/javascript">moveProgressBar('76.4');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('example_group_6');</script>
- <script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('example_group_7');</script>
- <script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('example_group_8');</script>
- <script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.9.1.html b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.9.1.html
deleted file mode 100644
index 5d0be3bfe..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatted-1.9.1.html
+++ /dev/null
@@ -1,377 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-</head>
-<body>
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <dt id="example_group_1">Mocker</dt>
- <script type="text/javascript">moveProgressBar('5.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
- <script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('example_group_1');</script>
- <script type="text/javascript">moveProgressBar('11.7');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when expected message not received</span>
- <div class="failure" id="failure_1">
- <div class="message"><pre>Mock &quot;poke me&quot; expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:11:in `block (2 levels) in <top (required)>'
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
-<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
-<span class="linenum">12</span> <span class="keyword">end</span>
-<span class="linenum">13</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when messages are received out of order</span>
- <div class="failure" id="failure_2">
- <div class="message"><pre>Mock &quot;one two three&quot; received :three out of order</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:20:in `block (2 levels) in <top (required)>'
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
-<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
-<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
-<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">22</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
- <div class="failure" id="failure_3">
- <div class="message"><pre>Mock &quot;don't talk to me&quot; expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:27:in `block (2 levels) in <top (required)>'
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
-<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span>
-<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
-<span class="linenum">28</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <span class="failed_spec_name">has a bug we need to fix</span>
- <div class="failure" id="failure_4">
- <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre>./examples/failing/mocking_example.rb:31:in `block (2 levels) in <top (required)>'
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">29</span>
-<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
-<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('example_group_2');</script>
- <script type="text/javascript">moveProgressBar('35.2');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different strings</span>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-
- Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behaviour driven development
-+behavior driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:13:in `block (2 levels) in <top (required)>'
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
-<span class="linenum">12</span><span class="constant">EOF</span>
-<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>
-expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-
- got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
-
-
-(compared using eql?)
-</pre></div>
- <div class="backtrace"><pre>./examples/failing/diffing_spec.rb:34:in `block (2 levels) in <top (required)>'
-./spec/spec_helper.rb:42:in `run_with'
-./spec/spec/runner/formatter/html_formatter_spec.rb:41:in `block (4 levels) in <module:Formatter>'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:29:in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
-<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
-<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_3">A consumer of a stub</dt>
- <script type="text/javascript">moveProgressBar('47.0');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_4">A stubbed method on a class</dt>
- <script type="text/javascript">moveProgressBar('52.9');</script>
- <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
- <script type="text/javascript">moveProgressBar('58.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_5">A mock</dt>
- <script type="text/javascript">moveProgressBar('70.5');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
- <script type="text/javascript">moveProgressBar('76.4');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('example_group_6');</script>
- <script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('example_group_7');</script>
- <script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('example_group_8');</script>
- <script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatter_spec.rb
deleted file mode 100644
index bbff1ef42..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/html_formatter_spec.rb
+++ /dev/null
@@ -1,118 +0,0 @@
-# require 'spec_helper'
-
-begin # See rescue all the way at the bottom
-
-require 'nokogiri' # Needed to compare generated with wanted HTML
-require 'spec/runner/formatter/html_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe HtmlFormatter do
-
- treats_method_missing_as_private
-
- attr_reader :root, :expected_file, :expected_html
-
- before do
- @root = File.expand_path("#{File.dirname(__FILE__)}/../../../..")
- suffix = jruby? ? '-jruby' : ''
- @expected_file = "#{File.dirname(__FILE__)}/html_formatted-#{::RUBY_VERSION}#{suffix}.html"
- raise "There is no HTML file with expected content for this platform: #{expected_file}" unless File.file?(expected_file)
- @expected_html = File.read(expected_file)
- end
-
- # Uncomment this line temporarily in order to overwrite the expected with actual.
- # Use with care!!!
- # describe "file generator" do
- # it "generates a new comparison file" do
- # Dir.chdir(root) do
- # args = [
- # 'examples/failing/mocking_example.rb',
- # 'examples/failing/diffing_spec.rb',
- # 'examples/passing/stubbing_example.rb',
- # 'examples/passing/pending_example.rb',
- # '--format',
- # 'html',
- # "--diff"
- # ]
- # err = StringIO.new
- # out = StringIO.new
- # run_with ::Spec::Runner::OptionParser.parse(args, err, out)
- #
- # seconds = /\d+\.\d+ seconds/
- # html = out.string.gsub seconds, 'x seconds'
- #
- # File.open(expected_file, 'w') {|io| io.write(html)}
- # end
- # end
- # end
-
- it "should produce HTML identical to the one we designed manually with --diff" do
- Dir.chdir(root) do
- args = [
- 'examples/failing/mocking_example.rb',
- 'examples/failing/diffing_spec.rb',
- 'examples/passing/stubbing_example.rb',
- 'examples/passing/pending_example.rb',
- '--format',
- 'html',
- "--diff"
- ]
- err = StringIO.new
- out = StringIO.new
- run_with ::Spec::Runner::OptionParser.parse(args, err, out)
-
- seconds = /\d+\.\d+ seconds/
- html = out.string.gsub seconds, 'x seconds'
- expected_html.gsub! seconds, 'x seconds'
-
- doc = Nokogiri::HTML(html)
- backtraces = doc.search("div.backtrace").collect {|e| e.at("pre").inner_html}
- doc.css("div.backtrace").remove
-
- expected_doc = Nokogiri::HTML(expected_html)
- expected_backtraces = expected_doc.search("div.backtrace").collect {|e| e.at("pre").inner_html}
- expected_doc.search("div.backtrace").remove
-
- doc.inner_html.should == expected_doc.inner_html
-
- expected_backtraces.each_with_index do |expected_line, i|
- expected_path, expected_line_number, expected_suffix = expected_line.split(':')
- actual_path, actual_line_number, actual_suffix = backtraces[i].split(':')
- File.expand_path(actual_path).should == File.expand_path(expected_path)
- actual_line_number.should == expected_line_number
- end
- end
- end
-
- it "should produce HTML identical to the one we designed manually with --dry-run" do
- Dir.chdir(root) do
- args = [
- 'examples/failing/mocking_example.rb',
- 'examples/failing/diffing_spec.rb',
- 'examples/passing/stubbing_example.rb',
- 'examples/passing/pending_example.rb',
- '--format',
- 'html',
- "--dry-run"
- ]
- err = StringIO.new
- out = StringIO.new
- run_with ::Spec::Runner::OptionParser.parse(args, err, out)
-
- seconds = /\d+\.\d+ seconds/
- html = out.string.gsub seconds, 'x seconds'
- expected_html.gsub! seconds, 'x seconds'
-
- html.should =~ /This was a dry-run/m
- end
- end
- end
- end
- end
-end
-
-rescue LoadError
- warn "nokogiri not loaded -- skipping HtmlFormatter specs"
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/nested_text_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/nested_text_formatter_spec.rb
deleted file mode 100644
index e64d3f615..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/nested_text_formatter_spec.rb
+++ /dev/null
@@ -1,329 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/formatter/nested_text_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe NestedTextFormatter do
- with_sandboxed_options do
- attr_reader :io, :options, :formatter, :example_group
- before(:each) do
- @io = StringIO.new
- @formatter = NestedTextFormatter.new(options, io)
- @example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe("ExampleGroup")
- @example_group.example("example") {}
- end
-
- describe "where ExampleGroup has no superclass with a description" do
- def example_group_started
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
- end
-
- before(:each) do
- example_group_started
- end
-
- describe "#dump_summary" do
- it "produces standard summary without pending when pending has a 0 count" do
- formatter.dump_summary(3, 2, 1, 0)
- io.string.should == <<-OUT
-ExampleGroup
-
-Finished in 3 seconds
-
-2 examples, 1 failure
-OUT
- end
-
- it "produces standard summary" do
- formatter.dump_summary(3, 2, 1, 4)
- io.string.should == <<-OUT
-ExampleGroup
-
-Finished in 3 seconds
-
-2 examples, 1 failure, 4 pending
-OUT
- end
- end
-
- describe "#example_group_started" do
-
- describe "when ExampleGroup has a nested description" do
-
- describe "when ExampleGroup has no parents with nested description" do
- it "pushes ExampleGroup name" do
- io.string.should eql("ExampleGroup\n")
- end
- end
-
- describe "when ExampleGroup has one parent with nested description" do
- attr_reader :child_example_group
- def example_group_started
- @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
- end
-
- describe "and parent ExampleGroups have not been printed" do
- before do
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
- end
-
- it "pushes ExampleGroup name with two spaces of indentation" do
- io.string.should == <<-OUT
-ExampleGroup
- Child ExampleGroup
-OUT
- end
- end
-
- describe "and parent ExampleGroups have been printed" do
- before do
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
- io.string = ""
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
- end
-
- it "should print only the indented ExampleGroup" do
- io.string.should == <<-OUT
- Child ExampleGroup
-OUT
- end
- end
- end
-
- describe "when ExampleGroup has two parents with nested description" do
- attr_reader :child_example_group, :grand_child_example_group
- def example_group_started
- @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
- @grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
- end
-
- describe "and parent ExampleGroups have not been printed" do
- before do
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
- end
-
- it "prints the entire nested ExampleGroup heirarchy" do
- io.string.should == <<-OUT
-ExampleGroup
- Child ExampleGroup
- GrandChild ExampleGroup
-OUT
- end
- end
-
- describe "and parent ExampleGroups have been printed" do
- before do
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
- io.string = ""
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
- end
-
- it "should print only the indented ExampleGroup" do
- io.string.should == <<-OUT
- GrandChild ExampleGroup
-OUT
- end
- end
- end
- end
-
- describe "when ExampleGroup nested description is blank" do
- attr_reader :child_example_group
-
- describe "and parent ExampleGroups have not been printed" do
- def example_group_started
- @child_example_group = Class.new(example_group)
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
- end
-
- it "should render only the parent ExampleGroup" do
- io.string.should == <<-OUT
-ExampleGroup
-OUT
- end
- end
-
- describe "and parent ExampleGroups have been printed" do
- def example_group_started
- @child_example_group = Class.new(example_group)
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
- io.string = ""
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
- end
-
- it "should not render anything" do
- io.string.should == ""
- end
- end
- end
-
- describe "when ExampleGroup nested description is blank" do
- def example_group_started
- example_group.set_description
- super
- end
-
- it "should not render anything" do
- io.string.should == ""
- end
- end
-
- describe "with parallel groups" do
- def make_group(name, parent=::Spec::Example::ExampleGroupDouble)
- Class.new(parent).describe(name)
- end
-
- it "excludes duplicated group" do
- parent_1 = make_group("ExampleGroup")
- child_1 = make_group("Child ExampleGroup", parent_1)
- grandchild_1 = make_group("GrandChild ExampleGroup", child_1)
-
- parent_2 = make_group("ExampleGroup")
- child_2 = make_group("Child ExampleGroup 2", parent_2)
- grandchild_2 = make_group("GrandChild ExampleGroup", child_2)
-
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grandchild_1))
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grandchild_2))
- io.string.should == <<-OUTPUT
-ExampleGroup
- Child ExampleGroup
- GrandChild ExampleGroup
- Child ExampleGroup 2
- GrandChild ExampleGroup
-OUTPUT
- end
- end
- end
-
- describe "#example_failed" do
- describe "where ExampleGroup has no superclasss with a description" do
- describe "when having an error" do
- it "should push failing spec name and failure number" do
- formatter.example_failed(
- example_group.it("spec"),
- 98,
- ::Spec::Runner::Reporter::Failure.new("g", "c s", RuntimeError.new)
- )
- io.string.should == <<-OUT
-ExampleGroup
- spec (FAILED - 98)
-OUT
- end
- end
-
- describe "when having an expectation failure" do
- it "should push failing spec name and failure number" do
- formatter.example_failed(
- example_group.it("spec"),
- 98,
- ::Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Expectations::ExpectationNotMetError.new)
- )
- io.string.should == <<-OUT
-ExampleGroup
- spec (FAILED - 98)
-OUT
- end
- end
- end
-
- describe "where ExampleGroup has two superclasses with a description" do
- attr_reader :child_example_group, :grand_child_example_group
-
- def example_group_started
- @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
- @grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
- end
-
- describe "when having an error" do
- it "should push failing spec name and failure number" do
- formatter.example_failed(
- grand_child_example_group.it("spec"),
- 98,
- ::Spec::Runner::Reporter::Failure.new("g", "c s", RuntimeError.new)
- )
- io.string.should == <<-OUT
-ExampleGroup
- Child ExampleGroup
- GrandChild ExampleGroup
- spec (FAILED - 98)
-OUT
- end
- end
-
- describe "when having an expectation" do
- it "should push failing spec name and failure number" do
- formatter.example_failed(
- grand_child_example_group.it("spec"),
- 98,
- ::Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Expectations::ExpectationNotMetError.new)
- )
- io.string.should == <<-OUT
-ExampleGroup
- Child ExampleGroup
- GrandChild ExampleGroup
- spec (FAILED - 98)
-OUT
- end
- end
- end
- end
-
- describe "#start" do
- it "should push nothing on start" do
- formatter.start(5)
- io.string.should == <<-OUT
-ExampleGroup
-OUT
- end
- end
-
- describe "#start_dump" do
- it "should push nothing on start dump" do
- formatter.start_dump
- io.string.should == <<-OUT
-ExampleGroup
-OUT
- end
- end
-
- describe "#example_passed" do
- it "should push passing spec name" do
- formatter.example_passed(example_group.it("spec"))
- io.string.should == <<-OUT
-ExampleGroup
- spec
-OUT
- end
- end
-
- describe "#example_pending" do
- it "should push pending example name and message" do
- formatter.example_pending(example_group.examples.first, 'reason', "#{__FILE__}:#{__LINE__}")
- io.string.should == <<-OUT
-ExampleGroup
- example (PENDING: reason)
-OUT
- end
-
- it "should dump pending" do
- formatter.example_pending(example_group.examples.first, 'reason', "#{__FILE__}:#{__LINE__}")
- io.rewind
- formatter.dump_pending
- io.string.should =~ /Pending\:\n\nExampleGroup example \(reason\)\n/
- end
- end
-
- def have_single_level_example_group_output(expected_output)
- expected = "ExampleGroup\n #{expected_output}"
- ::Spec::Matchers::SimpleMatcher.new(expected) do |actual|
- actual == expected
- end
- end
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/profile_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/profile_formatter_spec.rb
deleted file mode 100644
index 338df7089..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/profile_formatter_spec.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/formatter/profile_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe ProfileFormatter do
-
- treats_method_missing_as_private
-
- attr_reader :io, :formatter
- before(:each) do
- @io = StringIO.new
- options = mock('options')
- options.stub!(:colour).and_return(true)
- options.stub!(:autospec).and_return(true)
- @formatter = ProfileFormatter.new(options, io)
- end
-
- it "should print a heading" do
- formatter.start(0)
- io.string.should eql("Profiling enabled.\n")
- end
-
- it "should record the current time when starting a new example" do
- now = Time.now
- Time.stub!(:now).and_return(now)
- formatter.example_started('should foo')
- formatter.instance_variable_get("@time").should == now
- end
-
- it "should correctly record a passed example" do
- now = Time.now
- Time.stub!(:now).and_return(now)
- parent_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe('Parent')
- child_example_group = Class.new(parent_example_group).describe('Child')
-
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
-
- formatter.example_started('when foo')
- Time.stub!(:now).and_return(now+1)
- formatter.example_passed(stub('foo', :description => 'i like ice cream'))
-
- formatter.start_dump
- io.string.should include('Parent Child')
- end
-
- it "should sort the results in descending order" do
- formatter.instance_variable_set("@example_times", [['a', 'a', 0.1], ['b', 'b', 0.3], ['c', 'c', 0.2]])
- formatter.start_dump
- formatter.instance_variable_get("@example_times").should == [ ['b', 'b', 0.3], ['c', 'c', 0.2], ['a', 'a', 0.1]]
- end
-
- it "should print the top 10 results" do
- example_group = Class.new(::Spec::Example::ExampleGroup).describe("ExampleGroup")
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
- formatter.instance_variable_set("@time", Time.now)
-
- 15.times do
- formatter.example_passed(stub('foo', :description => 'i like ice cream'))
- end
-
- io.should_receive(:print).exactly(10)
- formatter.start_dump
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/progress_bar_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/progress_bar_formatter_spec.rb
deleted file mode 100644
index ea96ca6c4..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/progress_bar_formatter_spec.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/formatter/progress_bar_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe ProgressBarFormatter do
-
- treats_method_missing_as_private
-
- before(:each) do
- @io = StringIO.new
- @options = mock('options')
- @options.stub!(:dry_run).and_return(false)
- @options.stub!(:colour).and_return(false)
- @options.stub!(:autospec).and_return(false)
- @formatter = ProgressBarFormatter.new(@options, @io)
- end
-
- it "should produce line break on start dump" do
- @formatter.start_dump
- @io.string.should eql("\n")
- end
-
- it "should produce standard summary without pending when pending has a 0 count" do
- @formatter.dump_summary(3, 2, 1, 0)
- @io.string.should eql("\nFinished in 3 seconds\n\n2 examples, 1 failure\n")
- end
-
- it "should produce standard summary" do
- example_group = ExampleGroup.describe("example_group") do
- specify "example" do
- end
- end
- example = example_group.examples.first
- @formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
- @formatter.example_pending(example, "message", "#{__FILE__}:#{__LINE__}")
- @io.rewind
- @formatter.dump_summary(3, 2, 1, 1)
- @io.string.should eql(%Q|
-Finished in 3 seconds
-
-2 examples, 1 failure, 1 pending
-|)
- end
-
- it "should push green dot for passing spec" do
- @formatter.stub(:output_to_file?) {false}
- @io.stub(:tty?) {true}
- @options.stub(:colour) {true}
- @formatter.example_passed("spec")
- @io.string.should == "\e[32m.\e[0m"
- end
-
- it "should push red F for failure spec" do
- @formatter.stub(:output_to_file?) {false}
- @io.stub(:tty?) {true}
- @options.stub(:colour) {true}
- @formatter.example_failed("spec", 98, Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Expectations::ExpectationNotMetError.new))
- @io.string.should eql("\e[31mF\e[0m")
- end
-
- it "should push red F for error spec" do
- @formatter.stub(:output_to_file?) {false}
- @io.stub(:tty?) {true}
- @options.stub(:colour) {true}
- @formatter.example_failed("spec", 98, Spec::Runner::Reporter::Failure.new("g", "c s", RuntimeError.new))
- @io.string.should eql("\e[31mF\e[0m")
- end
-
- it "should push blue F for fixed pending spec" do
- @formatter.stub(:output_to_file?) {false}
- @io.stub(:tty?) {true}
- @options.stub(:colour) {true}
- @formatter.example_failed("spec", 98, Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Example::PendingExampleFixedError.new))
- @io.string.should eql("\e[34mF\e[0m")
- end
-
- it "should push nothing on start" do
- @formatter.start(4)
- @io.string.should eql("")
- end
-
- it "should ensure two ':' in the first backtrace" do
- backtrace = ["/tmp/x.rb:1", "/tmp/x.rb:2", "/tmp/x.rb:3"]
- @formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
-/tmp/x.rb:1:
-/tmp/x.rb:2:
-/tmp/x.rb:3:
-EOE
-
- backtrace = ["/tmp/x.rb:1: message", "/tmp/x.rb:2", "/tmp/x.rb:3"]
- @formatter.format_backtrace(backtrace).should eql(<<-EOE.rstrip)
-/tmp/x.rb:1: message
-/tmp/x.rb:2:
-/tmp/x.rb:3:
-EOE
- end
-
- it "should dump pending with file and line number" do
- example_group = ExampleGroup.describe("example_group") do
- specify "example" do
- end
- end
- example = example_group.examples.first
- file = __FILE__
- line = __LINE__ - 5
- @formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
- @formatter.example_pending(example, "message", "#{__FILE__}:#{__LINE__}")
- @formatter.dump_pending
- @io.string.should =~ /Pending:\n\nexample_group example \(message\)\n#{file}:#{line}/m
- end
- end
-
- describe "ProgressBarFormatter outputting to custom out" do
- before(:each) do
- @out = mock("out")
- @options = mock('options')
- @out.stub!(:puts)
- @formatter = ProgressBarFormatter.new(@options, @out)
- @formatter.class.__send__ :public, :output_to_tty?
- end
-
- after(:each) do
- @formatter.class.__send__ :protected, :output_to_tty?
- end
-
- it "should not throw NoMethodError on output_to_tty?" do
- @out.should_receive(:tty?).and_raise(NoMethodError)
- @formatter.output_to_tty?.should be_false
- end
- end
-
- describe ProgressBarFormatter, "dry run" do
- before(:each) do
- @io = StringIO.new
- options = mock('options')
- options.stub!(:dry_run).and_return(true)
- @formatter = ProgressBarFormatter.new(options, @io)
- end
-
- it "should not produce summary on dry run" do
- @formatter.dump_summary(3, 2, 1, 0)
- @io.string.should eql("")
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/snippet_extractor_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/snippet_extractor_spec.rb
deleted file mode 100644
index c683c39a8..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/snippet_extractor_spec.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/formatter/snippet_extractor'
-
-module Spec
- module Runner
- module Formatter
- describe SnippetExtractor do
- it "should fall back on a default message when it doesn't understand a line" do
- SnippetExtractor.new.snippet_for("blech").should == ["# Couldn't get snippet for blech", 1]
- end
-
- it "should fall back on a default message when it doesn't find the file" do
- SnippetExtractor.new.lines_around("blech", 8).should == "# Couldn't get snippet for blech"
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/specdoc_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/specdoc_formatter_spec.rb
deleted file mode 100644
index ac4e0eeea..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/specdoc_formatter_spec.rb
+++ /dev/null
@@ -1,159 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/formatter/specdoc_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe SpecdocFormatter do
- with_sandboxed_options do
- attr_reader :io, :formatter, :example_group
- before(:each) do
- @io = StringIO.new
- options.stub!(:dry_run).and_return(false)
- options.stub!(:colour).and_return(false)
- @formatter = SpecdocFormatter.new(options, io)
- @example_group = ::Spec::Example::ExampleGroup.describe("ExampleGroup") do
- specify "example" do
- end
- end
- end
-
- describe "where ExampleGroup has no superclasss with a description" do
- before do
- example_group_started
- end
-
- def example_group_started
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
- end
-
- describe "#dump_summary" do
- it "should produce standard summary without pending when pending has a 0 count" do
- formatter.dump_summary(3, 2, 1, 0)
- io.string.should have_example_group_output("\nFinished in 3 seconds\n\n2 examples, 1 failure\n")
- end
-
- it "should produce standard summary" do
- formatter.dump_summary(3, 2, 1, 4)
- io.string.should have_example_group_output("\nFinished in 3 seconds\n\n2 examples, 1 failure, 4 pending\n")
- end
- end
-
- describe "#example_group_started" do
- it "should push ExampleGroup name" do
- io.string.should eql("\nExampleGroup\n")
- end
- end
-
- describe "#example_failed" do
- describe "where ExampleGroup has no superclasss with a description" do
- describe "when having an error" do
- it "should push failing spec name and failure number" do
- formatter.example_failed(
- example_group.it("spec"),
- 98,
- Spec::Runner::Reporter::Failure.new("g", "c s", RuntimeError.new)
- )
- io.string.should have_example_group_output("- spec (FAILED - 98)\n")
- end
- end
-
- describe "when having an expectation failure" do
- it "should push failing spec name and failure number" do
- formatter.example_failed(
- example_group.it("spec"),
- 98,
- Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Expectations::ExpectationNotMetError.new)
- )
- io.string.should have_example_group_output("- spec (FAILED - 98)\n")
- end
- end
- end
-
- describe "where ExampleGroup has two superclasses with a description" do
- attr_reader :child_example_group, :grand_child_example_group
-
- def example_group_started
- @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
- @grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
- formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
- end
-
- describe "when having an error" do
- it "should push failing spec name and failure number" do
- formatter.example_failed(
- example_group.it("spec"),
- 98,
- Spec::Runner::Reporter::Failure.new("g", "c s", RuntimeError.new)
- )
- io.string.should have_nested_example_group_output("- spec (FAILED - 98)\n")
- end
- end
-
- describe "when having an expectation" do
- it "should push failing spec name and failure number" do
- formatter.example_failed(
- example_group.it("spec"),
- 98,
- Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Expectations::ExpectationNotMetError.new)
- )
- io.string.should have_nested_example_group_output("- spec (FAILED - 98)\n")
- end
- end
-
- def have_nested_example_group_output(expected_output)
- expected_full_output = "\nExampleGroup Child ExampleGroup GrandChild ExampleGroup\n#{expected_output}"
- ::Spec::Matchers::SimpleMatcher.new(expected_full_output) do |actual|
- actual == expected_full_output
- end
- end
- end
- end
-
- describe "#start" do
- it "should push nothing on start" do
- formatter.start(5)
- io.string.should have_example_group_output("")
- end
- end
-
- describe "#start_dump" do
- it "should push nothing on start dump" do
- formatter.start_dump
- io.string.should have_example_group_output("")
- end
- end
-
- describe "#example_passed" do
- it "should push passing spec name" do
- formatter.example_passed(example_group.it("spec"))
- io.string.should have_example_group_output("- spec\n")
- end
- end
-
- describe "#example_pending" do
- it "should push pending example name and message" do
- formatter.example_pending(example_group.examples.first, 'reason', "#{__FILE__}:#{__LINE__}")
- io.string.should have_example_group_output("- example (PENDING: reason)\n")
- end
-
- it "should dump pending" do
- formatter.example_pending(example_group.examples.first, 'reason', "#{__FILE__}:#{__LINE__}")
- io.rewind
- formatter.dump_pending
- io.string.should =~ /Pending\:\n\nExampleGroup example \(reason\)\n/
- end
- end
-
- def have_example_group_output(expected_output)
- expected = "\nExampleGroup\n#{expected_output}"
- ::Spec::Matchers::SimpleMatcher.new(expected) do |actual|
- actual == expected
- end
- end
- end
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html
deleted file mode 100644
index bbef5eb8b..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html
+++ /dev/null
@@ -1,371 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-</head>
-<body>
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <dt id="example_group_1">Mocker</dt>
- <script type="text/javascript">moveProgressBar('5.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
- <script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('example_group_1');</script>
- <script type="text/javascript">moveProgressBar('11.7');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when expected message not received</span>
- <div class="failure" id="failure_1">
- <div class="message"><pre>Mock &quot;poke me&quot; expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=11">examples/failing/mocking_example.rb:11</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
-<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
-<span class="linenum">12</span> <span class="keyword">end</span>
-<span class="linenum">13</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when messages are received out of order</span>
- <div class="failure" id="failure_2">
- <div class="message"><pre>Mock &quot;one two three&quot; received :three out of order</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=20">examples/failing/mocking_example.rb:20</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
-<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
-<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
-<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">22</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
- <div class="failure" id="failure_3">
- <div class="message"><pre>Mock &quot;don't talk to me&quot; expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=27">examples/failing/mocking_example.rb:27</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
-<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span>
-<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
-<span class="linenum">28</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <span class="failed_spec_name">has a bug we need to fix</span>
- <div class="failure" id="failure_4">
- <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=31">examples/failing/mocking_example.rb:31</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">29</span>
-<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
-<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('example_group_2');</script>
- <script type="text/javascript">moveProgressBar('35.2');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different strings</span>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-
- Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behaviour driven development
-+behavior driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=13">examples/failing/diffing_spec.rb:13</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
-<span class="linenum">12</span><span class="constant">EOF</span>
-<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>
-expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-
- got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
-
-
-(compared using eql?)
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=34">examples/failing/diffing_spec.rb:34</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
-<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
-<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_3">A consumer of a stub</dt>
- <script type="text/javascript">moveProgressBar('47.0');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_4">A stubbed method on a class</dt>
- <script type="text/javascript">moveProgressBar('52.9');</script>
- <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
- <script type="text/javascript">moveProgressBar('58.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_5">A mock</dt>
- <script type="text/javascript">moveProgressBar('70.5');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
- <script type="text/javascript">moveProgressBar('76.4');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('example_group_6');</script>
- <script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('example_group_7');</script>
- <script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('example_group_8');</script>
- <script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html
deleted file mode 100644
index 54d761901..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html
+++ /dev/null
@@ -1,371 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-</head>
-<body>
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <dt id="example_group_1">Mocker</dt>
- <script type="text/javascript">moveProgressBar('5.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
- <script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('example_group_1');</script>
- <script type="text/javascript">moveProgressBar('11.7');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when expected message not received</span>
- <div class="failure" id="failure_1">
- <div class="message"><pre>Mock &quot;poke me&quot; expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=11">./examples/failing/mocking_example.rb:11</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
-<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
-<span class="linenum">12</span> <span class="keyword">end</span>
-<span class="linenum">13</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when messages are received out of order</span>
- <div class="failure" id="failure_2">
- <div class="message"><pre>Mock &quot;one two three&quot; received :three out of order</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=20">./examples/failing/mocking_example.rb:20</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
-<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
-<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
-<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">22</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
- <div class="failure" id="failure_3">
- <div class="message"><pre>Mock &quot;don't talk to me&quot; expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=27">./examples/failing/mocking_example.rb:27</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
-<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span>
-<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
-<span class="linenum">28</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <span class="failed_spec_name">has a bug we need to fix</span>
- <div class="failure" id="failure_4">
- <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=31">./examples/failing/mocking_example.rb:31</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">29</span>
-<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
-<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('example_group_2');</script>
- <script type="text/javascript">moveProgressBar('35.2');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different strings</span>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-
- Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behaviour driven development
-+behavior driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=13">./examples/failing/diffing_spec.rb:13</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
-<span class="linenum">12</span><span class="constant">EOF</span>
-<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>
-expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-
- got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
-
-
-(compared using eql?)
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=34">./examples/failing/diffing_spec.rb:34</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
-<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
-<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_3">A consumer of a stub</dt>
- <script type="text/javascript">moveProgressBar('47.0');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_4">A stubbed method on a class</dt>
- <script type="text/javascript">moveProgressBar('52.9');</script>
- <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
- <script type="text/javascript">moveProgressBar('58.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_5">A mock</dt>
- <script type="text/javascript">moveProgressBar('70.5');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
- <script type="text/javascript">moveProgressBar('76.4');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('example_group_6');</script>
- <script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('example_group_7');</script>
- <script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('example_group_8');</script>
- <script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html
deleted file mode 100644
index 54d761901..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html
+++ /dev/null
@@ -1,371 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-</head>
-<body>
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <dt id="example_group_1">Mocker</dt>
- <script type="text/javascript">moveProgressBar('5.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
- <script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('example_group_1');</script>
- <script type="text/javascript">moveProgressBar('11.7');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when expected message not received</span>
- <div class="failure" id="failure_1">
- <div class="message"><pre>Mock &quot;poke me&quot; expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=11">./examples/failing/mocking_example.rb:11</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
-<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
-<span class="linenum">12</span> <span class="keyword">end</span>
-<span class="linenum">13</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when messages are received out of order</span>
- <div class="failure" id="failure_2">
- <div class="message"><pre>Mock &quot;one two three&quot; received :three out of order</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=20">./examples/failing/mocking_example.rb:20</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
-<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
-<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
-<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">22</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
- <div class="failure" id="failure_3">
- <div class="message"><pre>Mock &quot;don't talk to me&quot; expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=27">./examples/failing/mocking_example.rb:27</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
-<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span>
-<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
-<span class="linenum">28</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <span class="failed_spec_name">has a bug we need to fix</span>
- <div class="failure" id="failure_4">
- <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=31">./examples/failing/mocking_example.rb:31</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">29</span>
-<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
-<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('example_group_2');</script>
- <script type="text/javascript">moveProgressBar('35.2');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different strings</span>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-
- Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behaviour driven development
-+behavior driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=13">./examples/failing/diffing_spec.rb:13</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
-<span class="linenum">12</span><span class="constant">EOF</span>
-<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>
-expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-
- got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
-
-
-(compared using eql?)
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=34">./examples/failing/diffing_spec.rb:34</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a>
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> </pre></div>
- <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
-<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
-<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_3">A consumer of a stub</dt>
- <script type="text/javascript">moveProgressBar('47.0');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_4">A stubbed method on a class</dt>
- <script type="text/javascript">moveProgressBar('52.9');</script>
- <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
- <script type="text/javascript">moveProgressBar('58.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_5">A mock</dt>
- <script type="text/javascript">moveProgressBar('70.5');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
- <script type="text/javascript">moveProgressBar('76.4');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('example_group_6');</script>
- <script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('example_group_7');</script>
- <script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('example_group_8');</script>
- <script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html
deleted file mode 100644
index 24c98046b..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html
+++ /dev/null
@@ -1,371 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>RSpec results</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="Expires" content="-1" />
- <meta http-equiv="Pragma" content="no-cache" />
- <style type="text/css">
- body {
- margin: 0;
- padding: 0;
- background: #fff;
- font-size: 80%;
- }
- </style>
- <script type="text/javascript">
- // <![CDATA[
-function moveProgressBar(percentDone) {
- document.getElementById("rspec-header").style.width = percentDone +"%";
-}
-function makeRed(element_id) {
- document.getElementById(element_id).style.background = '#C40D0D';
- document.getElementById(element_id).style.color = '#FFFFFF';
-}
-
-function makeYellow(element_id) {
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
- else
- {
- document.getElementById(element_id).style.background = '#FAF834';
- document.getElementById(element_id).style.color = '#000000';
- }
-}
-
- // ]]>
- </script>
- <style type="text/css">
-#rspec-header {
- background: #65C400; color: #fff; height: 4em;
-}
-
-.rspec-report h1 {
- margin: 0px 10px 0px 10px;
- padding: 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- font-size: 1.8em;
- position: absolute;
-}
-
-#summary {
- margin: 0; padding: 5px 10px;
- font-family: "Lucida Grande", Helvetica, sans-serif;
- text-align: right;
- top: 0px;
- right: 0px;
- float:right;
-}
-
-#summary p {
- margin: 0 0 0 2px;
-}
-
-#summary #totals {
- font-size: 1.2em;
-}
-
-.example_group {
- margin: 0 10px 5px;
- background: #fff;
-}
-
-dl {
- margin: 0; padding: 0 0 5px;
- font: normal 11px "Lucida Grande", Helvetica, sans-serif;
-}
-
-dt {
- padding: 3px;
- background: #65C400;
- color: #fff;
- font-weight: bold;
-}
-
-dd {
- margin: 5px 0 5px 5px;
- padding: 3px 3px 3px 18px;
-}
-
-dd.spec.passed {
- border-left: 5px solid #65C400;
- border-bottom: 1px solid #65C400;
- background: #DBFFB4; color: #3D7700;
-}
-
-dd.spec.failed {
- border-left: 5px solid #C20000;
- border-bottom: 1px solid #C20000;
- color: #C20000; background: #FFFBD3;
-}
-
-dd.spec.not_implemented {
- border-left: 5px solid #FAF834;
- border-bottom: 1px solid #FAF834;
- background: #FCFB98; color: #131313;
-}
-
-dd.spec.pending_fixed {
- border-left: 5px solid #0000C2;
- border-bottom: 1px solid #0000C2;
- color: #0000C2; background: #D3FBFF;
-}
-
-.backtrace {
- color: #000;
- font-size: 12px;
-}
-
-a {
- color: #BE5C00;
-}
-
-/* Ruby code, style similar to vibrant ink */
-.ruby {
- font-size: 12px;
- font-family: monospace;
- color: white;
- background-color: black;
- padding: 0.1em 0 0.2em 0;
-}
-
-.ruby .keyword { color: #FF6600; }
-.ruby .constant { color: #339999; }
-.ruby .attribute { color: white; }
-.ruby .global { color: white; }
-.ruby .module { color: white; }
-.ruby .class { color: white; }
-.ruby .string { color: #66FF00; }
-.ruby .ident { color: white; }
-.ruby .method { color: #FFCC00; }
-.ruby .number { color: white; }
-.ruby .char { color: white; }
-.ruby .comment { color: #9933CC; }
-.ruby .symbol { color: white; }
-.ruby .regex { color: #44B4CC; }
-.ruby .punct { color: white; }
-.ruby .escape { color: white; }
-.ruby .interp { color: white; }
-.ruby .expr { color: white; }
-
-.ruby .offending { background-color: gray; }
-.ruby .linenum {
- width: 75px;
- padding: 0.1em 1em 0.2em 0;
- color: #000000;
- background-color: #FFFBD3;
-}
-
- </style>
-</head>
-<body>
-<div class="rspec-report">
-
-<div id="rspec-header">
- <div id="label">
- <h1>RSpec Code Examples</h1>
- </div>
-
- <div id="summary">
- <p id="totals">&nbsp;</p>
- <p id="duration">&nbsp;</p>
- </div>
-</div>
-
-<div class="results">
-<div class="example_group">
- <dl>
- <dt id="example_group_1">Mocker</dt>
- <script type="text/javascript">moveProgressBar('5.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
- <script type="text/javascript">makeRed('rspec-header');</script>
- <script type="text/javascript">makeRed('example_group_1');</script>
- <script type="text/javascript">moveProgressBar('11.7');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when expected message not received</span>
- <div class="failure" id="failure_1">
- <div class="message"><pre>Mock &quot;poke me&quot; expected :poke with (any args) once, but received it 0 times</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=11">./examples/failing/mocking_example.rb:11</a> :in `block (2 levels) in <top (required)>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">9</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="linenum">10</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
-<span class="offending"><span class="linenum">11</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
-<span class="linenum">12</span> <span class="keyword">end</span>
-<span class="linenum">13</span> </code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('17.6');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should fail when messages are received out of order</span>
- <div class="failure" id="failure_2">
- <div class="message"><pre>Mock &quot;one two three&quot; received :three out of order</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=20">./examples/failing/mocking_example.rb:20</a> :in `block (2 levels) in <top (required)>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">18</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
-<span class="linenum">19</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
-<span class="offending"><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
-<span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
-<span class="linenum">22</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('23.5');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
- <div class="failure" id="failure_3">
- <div class="message"><pre>Mock &quot;don't talk to me&quot; expected :any_message_at_all with (no args) 0 times, but received it once</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=27">./examples/failing/mocking_example.rb:27</a> :in `block (2 levels) in <top (required)>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">25</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
-<span class="linenum">26</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span>
-<span class="offending"><span class="linenum">27</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span></span>
-<span class="linenum">28</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('29.4');</script>
- <dd class="spec pending_fixed">
- <span class="failed_spec_name">has a bug we need to fix</span>
- <div class="failure" id="failure_4">
- <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/mocking_example.rb&line=31">./examples/failing/mocking_example.rb:31</a> :in `block (2 levels) in <top (required)>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">29</span>
-<span class="linenum">30</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
-<span class="offending"><span class="linenum">31</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
-<span class="linenum">32</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
-<span class="linenum">33</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_2">Running specs with --diff</dt>
- <script type="text/javascript">makeRed('example_group_2');</script>
- <script type="text/javascript">moveProgressBar('35.2');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different strings</span>
- <div class="failure" id="failure_5">
- <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
- got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
-
- Diff:
-@@ -1,4 +1,4 @@
- RSpec is a
--behaviour driven development
-+behavior driven development
- framework for Ruby
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=13">./examples/failing/diffing_spec.rb:13</a> :in `block (2 levels) in <top (required)>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
-<span class="linenum">12</span><span class="constant">EOF</span>
-<span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
-<span class="linenum">14</span> <span class="keyword">end</span></code></pre>
- </div>
- </dd>
- <script type="text/javascript">moveProgressBar('41.1');</script>
- <dd class="spec failed">
- <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
- <div class="failure" id="failure_6">
- <div class="message"><pre>
-expected &lt;Animal
-name=bob,
-species=tortoise
-&gt;
-
- got &lt;Animal
-name=bob,
-species=giraffe
-&gt;
-
-
-(compared using eql?)
-</pre></div>
- <div class="backtrace"><pre><a href="txmt://open?url=file://./examples/failing/diffing_spec.rb&line=34">./examples/failing/diffing_spec.rb:34</a> :in `block (2 levels) in <top (required)>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=49">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:49</a> :in `block (4 levels) in <module:Formatter>'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `chdir'
-<a href="txmt://open?url=file://./spec/spec/runner/formatter/text_mate_formatter_spec.rb&line=45">./spec/spec/runner/formatter/text_mate_formatter_spec.rb:45</a> :in `block (3 levels) in <module:Formatter>'</pre></div>
- <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
-<span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
-<span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
-<span class="linenum">35</span> <span class="keyword">end</span>
-<span class="linenum">36</span><span class="keyword">end</span></code></pre>
- </div>
- </dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_3">A consumer of a stub</dt>
- <script type="text/javascript">moveProgressBar('47.0');</script>
- <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_4">A stubbed method on a class</dt>
- <script type="text/javascript">moveProgressBar('52.9');</script>
- <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
- <script type="text/javascript">moveProgressBar('58.8');</script>
- <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
- <script type="text/javascript">moveProgressBar('64.7');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_5">A mock</dt>
- <script type="text/javascript">moveProgressBar('70.5');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
- <script type="text/javascript">moveProgressBar('76.4');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
- <script type="text/javascript">moveProgressBar('82.3');</script>
- <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_6">pending example (using pending method)</dt>
- <script type="text/javascript">makeYellow('example_group_6');</script>
- <script type="text/javascript">moveProgressBar('88.2');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_7">pending example (with no block)</dt>
- <script type="text/javascript">makeYellow('example_group_7');</script>
- <script type="text/javascript">moveProgressBar('94.1');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
- </dl>
-</div>
-<div class="example_group">
- <dl>
- <dt id="example_group_8">pending example (with block for pending)</dt>
- <script type="text/javascript">makeYellow('example_group_8');</script>
- <script type="text/javascript">moveProgressBar('100.0');</script>
- <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
- </dl>
-</div>
-<script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
-<script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
-</div>
-</div>
-</body>
-</html>
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatter_spec.rb
deleted file mode 100644
index a35ad89f5..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/formatter/text_mate_formatter_spec.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-require 'spec_helper'
-
-begin # See rescue all the way at the bottom
-
-require 'nokogiri' # Needed to compare generated with wanted HTML
-require 'spec/runner/formatter/text_mate_formatter'
-
-module Spec
- module Runner
- module Formatter
- describe TextMateFormatter do
- attr_reader :root, :suffix, :expected_file
- before do
- @root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
- @suffix = jruby? ? '-jruby' : ''
- @expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::RUBY_VERSION}#{suffix}.html"
- end
-
- def produces_html_identical_to_manually_designed_document(opt)
- root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
-
- Dir.chdir(root) do
- args = [
- 'examples/failing/mocking_example.rb',
- 'examples/failing/diffing_spec.rb',
- 'examples/passing/stubbing_example.rb',
- 'examples/passing/pending_example.rb',
- '--format',
- 'textmate',
- opt
- ]
- err = StringIO.new
- out = StringIO.new
-
- run_with ::Spec::Runner::OptionParser.parse(args, err, out)
-
- yield(out.string)
- end
- end
-
- # Uncomment this spec temporarily in order to overwrite the expected with actual.
- # Use with care!!!
- # describe "functional spec file generator" do
- # it "generates a new comparison file" do
- # Dir.chdir(root) do
- # args = ['examples/failing/mocking_example.rb', 'examples/failing/diffing_spec.rb', 'examples/passing/stubbing_example.rb', 'examples/passing/pending_example.rb', '--format', 'textmate', '--diff']
- # err = StringIO.new
- # out = StringIO.new
- # Spec::Runner::CommandLine.run(
- # ::Spec::Runner::OptionParser.parse(args, err, out)
- # )
- #
- # seconds = /\d+\.\d+ seconds/
- # html = out.string.gsub seconds, 'x seconds'
- #
- # File.open(expected_file, 'w') {|io| io.write(html)}
- # end
- # end
- # end
-
- describe "functional spec using --diff" do
- it "should produce HTML identical to the one we designed manually with --diff" do
- produces_html_identical_to_manually_designed_document("--diff") do |html|
- suffix = jruby? ? '-jruby' : ''
- expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::RUBY_VERSION}#{suffix}.html"
- unless File.file?(expected_file)
- raise "There is no HTML file with expected content for this platform: #{expected_file}"
- end
- expected_html = File.read(expected_file)
-
- seconds = /\d+\.\d+ seconds/
- html.gsub! seconds, 'x seconds'
- expected_html.gsub! seconds, 'x seconds'
-
- doc = Nokogiri::HTML(html)
- backtraces = doc.search("div.backtrace a")
- doc.search("div.backtrace").remove
-
- expected_doc = Nokogiri::HTML(expected_html)
- expected_doc.search("div.backtrace").remove
-
- doc.inner_html.should == expected_doc.inner_html
-
- backtraces.each do |backtrace_link|
- backtrace_link['href'].should include("txmt://open?url=")
- end
- end
- end
-
- end
-
- describe "functional spec using --dry-run" do
- it "should produce HTML identical to the one we designed manually with --dry-run" do
- produces_html_identical_to_manually_designed_document("--dry-run") do |html, expected_html|
- html.should =~ /This was a dry-run/m
- end
- end
- end
- end
- end
- end
-end
-
-rescue LoadError
- warn "nokogiri not loaded -- skipping TextMateFormatter specs"
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/heckle_runner_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/heckle_runner_spec.rb
deleted file mode 100644
index 287ff856a..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/heckle_runner_spec.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-require 'spec_helper'
-unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} || Spec::Ruby.version.to_f == 1.9
- require 'spec/runner/heckle_runner'
-
- module Foo
- class Bar
- def one; end
- def two; end
- end
-
- class Zap
- def three; end
- def four; end
- end
- end
-
- describe "HeckleRunner" do
- before(:each) do
- @heckle = mock("heckle", :null_object => true)
- @heckle_class = mock("heckle_class")
- end
-
- it "should heckle all methods in all classes in a module" do
- @heckle_class.should_receive(:new).with("Foo::Bar", "one", Spec::Runner.options).and_return(@heckle)
- @heckle_class.should_receive(:new).with("Foo::Bar", "two", Spec::Runner.options).and_return(@heckle)
- @heckle_class.should_receive(:new).with("Foo::Zap", "three", Spec::Runner.options).and_return(@heckle)
- @heckle_class.should_receive(:new).with("Foo::Zap", "four", Spec::Runner.options).and_return(@heckle)
-
- heckle_runner = Spec::Runner::HeckleRunner.new("Foo", @heckle_class)
- heckle_runner.heckle_with
- end
-
- it "should heckle all methods in a class" do
- @heckle_class.should_receive(:new).with("Foo::Bar", "one", Spec::Runner.options).and_return(@heckle)
- @heckle_class.should_receive(:new).with("Foo::Bar", "two", Spec::Runner.options).and_return(@heckle)
-
- heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar", @heckle_class)
- heckle_runner.heckle_with
- end
-
- it "should fail heckling when the class is not found" do
- lambda do
- heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bob", @heckle_class)
- heckle_runner.heckle_with
- end.should raise_error(StandardError, "Heckling failed - \"Foo::Bob\" is not a known class or module")
- end
-
- it "should heckle specific method in a class (with #)" do
- @heckle_class.should_receive(:new).with("Foo::Bar", "two", Spec::Runner.options).and_return(@heckle)
-
- heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar#two", @heckle_class)
- heckle_runner.heckle_with
- end
-
- it "should heckle specific method in a class (with .)" do
- @heckle_class.should_receive(:new).with("Foo::Bar", "two", Spec::Runner.options).and_return(@heckle)
-
- heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar.two", @heckle_class)
- heckle_runner.heckle_with
- end
- end
-
- describe "Heckler" do
- it "should say yes to tests_pass? if specs pass" do
- options = mock("options", :null_object => true)
- options.should_receive(:run_examples).and_return(true)
- heckler = Spec::Runner::Heckler.new("Foo", nil, options)
- heckler.tests_pass?.should be_true
- end
-
- it "should say no to tests_pass? if specs fail" do
- options = mock("options", :null_object => true)
- options.should_receive(:run_examples).and_return(false)
- heckler = Spec::Runner::Heckler.new("Foo", nil, options)
- heckler.tests_pass?.should be_false
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/heckler_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/heckler_spec.rb
deleted file mode 100644
index 00869df6e..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/heckler_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-if Spec::Ruby.version.to_f < 1.9
- require 'spec_helper'
- unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
- require 'spec/runner/heckle_runner'
-
- describe "Heckler" do
- it "should run examples on tests_pass?" do
- sub = Class.new(Spec::Runner::Heckler) do
- def initialize(klass_name, method_name, rspec_options)
- @rspec_options = rspec_options
- end
- end
- opts = mock('options')
- opts.should_receive(:run_examples).and_return(true)
- heckler = sub.new('klass','method',opts)
- heckler.tests_pass?
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/line_number_query/line_number_query_fixture.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/line_number_query/line_number_query_fixture.rb
deleted file mode 100644
index 82a257d3b..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/line_number_query/line_number_query_fixture.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-require 'spec_helper'
-
-describe "c" do
-
- it "1" do
- end
-
- it "2" do
- end
-
-end
-
-describe "d" do
-
- it "3" do
- end
-
- it "4" do
- end
-
-end
-
-class LineNumberQuerySubject
-end
-
-describe LineNumberQuerySubject do
-
- it "5" do
- end
-
-end
-
-describe LineNumberQuerySubject, "described" do
-
- it "6" do
- end
-
-end
-
-describe LineNumberQuerySubject, "described", :something => :something_else do
-
- it "7" do
- end
-
-end
-
-describe "described", :something => :something_else do
-
- it "8" do
- end
-
-end
-
-describe "e" do
-
- it "9" do
- end
-
- it "10" do
- end
-
- describe "f" do
- it "11" do
- end
-
- it "12" do
- end
- end
-
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/line_number_query_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/line_number_query_spec.rb
deleted file mode 100644
index e4e11050d..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/line_number_query_spec.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-require 'spec_helper'
-
-describe "LineNumberQuery" do
- with_sandboxed_options do
- attr_reader :parser, :file
-
- before do
- @parser = Spec::Runner::LineNumberQuery.new(options)
- @file = "#{File.dirname(__FILE__)}/line_number_query/line_number_query_fixture.rb"
- load file
- end
-
- it "should find spec name for 'specify' at same line" do
- parser.spec_name_for(file, 5).should == "c 1"
- end
-
- it "should find spec name for 'specify' at end of spec line" do
- parser.spec_name_for(file, 6).should == "c 1"
- end
-
- it "should find context for 'context' above all specs" do
- parser.spec_name_for(file, 4).should == "c"
- end
-
- it "should find spec name for 'it' at same line" do
- parser.spec_name_for(file, 15).should == "d 3"
- end
-
- it "should find spec name for 'it' at end of spec line" do
- parser.spec_name_for(file, 16).should == "d 3"
- end
-
- it "should find context for 'describe' above all specs" do
- parser.spec_name_for(file, 14).should == "d"
- end
-
- it "should find nearest example name between examples" do
- parser.spec_name_for(file, 7).should == "c 1"
- end
-
- it "should find nothing outside a context" do
- parser.spec_name_for(file, 2).should be_nil
- end
-
- it "should find context name for type" do
- parser.spec_name_for(file, 26).should == "LineNumberQuerySubject"
- end
-
- it "should find context and spec name for type" do
- parser.spec_name_for(file, 28).should == "LineNumberQuerySubject 5"
- end
-
- it "should find context and description for type" do
- parser.spec_name_for(file, 33).should == "LineNumberQuerySubject described"
- end
-
- it "should find context and description and example for type" do
- parser.spec_name_for(file, 36).should == "LineNumberQuerySubject described 6"
- end
-
- it "should find context and description for type with modifications" do
- parser.spec_name_for(file, 40).should == "LineNumberQuerySubject described"
- end
-
- it "should find context and described and example for type with modifications" do
- parser.spec_name_for(file, 43).should == "LineNumberQuerySubject described 7"
- end
-
- it "should find example group" do
- parser.spec_name_for(file, 47).should == "described"
- end
-
- it "should find example" do
- parser.spec_name_for(file, 50).should == "described 8"
- end
-
- it "should find nested example" do
- parser.spec_name_for(file, 63).should == "e f 11"
- end
-
- it "should handle paths which contain colons" do
- fixture =
- { "c:/somepath/somefile.rb:999:in 'method'" => "c:/somepath/somefile.rb",
- "./somepath/somefile:999" => "./somepath/somefile" }
- fixture.each_pair do |input, expected|
- parser.send(:parse_location, input ).should == [expected, 999]
- end
- end
-
- it "should handle paths which contain colons and backslashes" do
- fixture =
- { "c:\\somepath\\somefile.rb:999:in 'method'" => "c:\\somepath\\somefile.rb",
- ".\\somepath\\somefile:999" => ".\\somepath\\somefile" }
- fixture.each_pair do |input, expected|
- parser.send(:parse_location, input ).should == [expected, 999]
- end
- end
-
- it "ignores example group base classes which have no location" do
- options = stub('options', :example_groups => [
- stub('example_group', :location => nil)
- ])
- parser = Spec::Runner::LineNumberQuery.new(options)
- parser.spec_name_for('foo',37).should == nil
- end
-
- describe "#example_line_for" do
- it "should find example declared on same line" do
- parser.example_line_for(file, 5).should == 5
- end
-
- it "should find example declared on the line above, while still inside the example" do
- parser.example_line_for(file, 6).should == 5
- end
-
- it "should find example declared from empty line below the example" do
- parser.example_line_for(file, 7).should == 5
- end
-
- it "should find the group declared on the same line" do
- parser.example_line_for(file, 3).should == 3
- end
-
- it "should find the group declared above the first example" do
- parser.example_line_for(file, 4).should == 3
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/noisy_backtrace_tweaker_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/noisy_backtrace_tweaker_spec.rb
deleted file mode 100644
index 13b79432c..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/noisy_backtrace_tweaker_spec.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- describe NoisyBacktraceTweaker do
- before(:each) do
- @error = RuntimeError.new
- @tweaker = NoisyBacktraceTweaker.new
- end
-
- it "gracefully handles nil backtrace" do
- lambda do
- @tweaker.tweak_backtrace(@error)
- end.should_not raise_error
- end
-
- it "cleans up double slashes" do
- @error.set_backtrace(["/a//b/c//d.rb"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should include("/a/b/c/d.rb")
- end
-
- it "preserves lines in lib/spec" do
- ["expectations", "mocks", "runner", "stubs"].each do |child|
- @error.set_backtrace(["/lib/spec/#{child}/anything.rb"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should_not be_empty
- end
- end
-
- it "preserves lines in spec/" do
- @error.set_backtrace(["/lib/spec/expectations/anything.rb"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should_not be_empty
- end
-
- it "preserves lines in bin/spec" do
- @error.set_backtrace(["bin/spec:"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should_not be_empty
- end
-
- it "ignores custom patterns" do
- @tweaker.ignore_patterns(/custom_pattern/)
- @error.set_backtrace(["custom_pattern"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should_not be_empty
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/option_parser_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/option_parser_spec.rb
deleted file mode 100644
index 3b31f35c1..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/option_parser_spec.rb
+++ /dev/null
@@ -1,551 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/resources/custom_example_group_runner'
-require 'fakefs/spec_helpers'
-
-describe "OptionParser" do
- before(:each) do
- @out = StringIO.new
- @err = StringIO.new
- @parser = Spec::Runner::OptionParser.new(@err, @out)
- end
-
- def parse(args)
- @parser.parse(args)
- @parser.options
- end
-
- describe "with fakefs" do
- include FakeFS::SpecHelpers
-
- it "should not use colour by default" do
- options = parse([])
- options.colour.should == false
- end
-
- it "should use progress bar formatter by default" do
- options = parse([])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::ProgressBarFormatter)
- end
- end
-
- it "should leave the submitted argv alone" do
- args = ["--pattern", "foo"]
- @parser.order!(args)
- args.should == ["--pattern", "foo"]
- end
-
- it "should accept files to include" do
- options = parse(["--pattern", "foo"])
- options.filename_pattern.should == "foo"
- end
-
- it "should accept debugger option" do
- options = parse(["--debugger"])
- options.debug.should be_true
- end
-
- it "should accept -u form of debugger option" do
- options = parse(["-u"])
- options.debug.should be_true
- end
-
- it "should turn off the debugger option if drb is specified later" do
- @parser.stub!(:parse_drb).with(no_args).and_return(true)
- options = parse(["-u", "--drb"])
- options.debug.should be_false
- end
-
- it "should turn off the debugger option if drb is specified first" do
- @parser.stub!(:parse_drb).with(no_args).and_return(true)
- options = parse(["--drb", "-u"])
- options.debug.should be_false
- end
-
- it "should accept port option" do
- options = parse(["--port", "9000"])
- options.drb_port.should == 9000
- end
-
- it 'should require argument to port option' do
- lambda { parse(["--port"]) }.should raise_error(OptionParser::MissingArgument)
- end
-
- it "should accept dry run option" do
- options = parse(["--dry-run"])
- options.dry_run.should be_true
- end
-
- it "should eval and use custom formatter when none of the builtins" do
- options = parse(["--format", "Custom::Formatter"])
- options.formatters[0].class.should be(Custom::Formatter)
- end
-
- it "should support formatters with relative and absolute paths, even on windows" do
- options = parse([
- "--format", "Custom::Formatter:C:\\foo\\bar",
- "--format", "Custom::Formatter:foo/bar",
- "--format", "Custom::Formatter:foo\\bar",
- "--format", "Custom::Formatter:/foo/bar"
- ])
- options.formatters[0].where.should eql("C:\\foo\\bar")
- options.formatters[1].where.should eql("foo/bar")
- options.formatters[2].where.should eql("foo\\bar")
- options.formatters[3].where.should eql("/foo/bar")
- end
-
- it "should not be verbose by default" do
- options = parse([])
- options.verbose.should be_nil
- end
-
- it "should print help to stdout if no args and spec_comand?" do
- Spec::Runner::OptionParser.stub!(:spec_command?).and_return(true)
- options = parse([])
- @out.rewind
- @out.read.should match(/Usage: spec \(FILE\(:LINE\)\?\|DIRECTORY\|GLOB\)\+ \[options\]/m)
- end
-
- it "should not print help to stdout if no args and NOT spec_command?" do
- Spec::Runner::OptionParser.stub!(:spec_command?).and_return(false)
- options = parse([])
- @out.rewind
- @out.read.should == ""
- end
-
- it "should print help to stdout" do
- options = parse(["--help"])
- @out.rewind
- @out.read.should match(/Usage: spec \(FILE\(:LINE\)\?\|DIRECTORY\|GLOB\)\+ \[options\]/m)
- end
-
- it "should print instructions about how to require missing formatter" do
- lambda do
- options = parse(["--format", "Custom::MissingFormatter"])
- options.formatters
- end.should raise_error(NameError)
- @err.string.should match(/Couldn't find formatter class Custom::MissingFormatter/n)
- end
-
- it "should print version to stdout" do
- options = parse(["--version"])
- @out.rewind
- @out.read.should match(/rspec \d+\.\d+\.\d+/n)
- end
-
- it "should require file when require specified" do
- lambda do
- parse(["--require", "whatever"])
- end.should raise_error(LoadError)
- end
-
- it "should support c option" do
- options = parse(["-c"])
- options.colour.should be_true
- end
-
- it "should support queens colour option" do
- options = parse(["--colour"])
- options.colour.should be_true
- end
-
- it "should support us color option" do
- options = parse(["--color"])
- options.colour.should be_true
- end
-
- it "should support single example with -e option" do
- options = parse(["-e", "something or other"])
- options.examples.should eql(["something or other"])
- end
-
- it "should support single example with -s option (will be removed when autotest supports -e)" do
- options = parse(["-s", "something or other"])
- options.examples.should eql(["something or other"])
- end
-
- it "should support single example with --example option" do
- options = parse(["--example", "something or other"])
- options.examples.should eql(["something or other"])
- end
-
- it "should read several example names from file if --example is given an existing file name" do
- options = parse(["--example", File.dirname(__FILE__) + '/examples.txt'])
- options.examples.should eql([
- "Sir, if you were my husband, I would poison your drink.",
- "Madam, if you were my wife, I would drink it."])
- end
-
- it "should read no examples if given an empty file" do
- options = parse(["--example", File.dirname(__FILE__) + '/empty_file.txt'])
- options.examples.should eql([])
- end
-
- it "should use html formatter when format is h" do
- options = parse(["--format", "h"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
- end
-
- it "should use html formatter when format is html" do
- options = parse(["--format", "html"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
- end
-
- it "should use silent formatter when format is s" do
- options = parse(["--format", "l"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::SilentFormatter)
- end
-
- it "should use silent formatter when format is silent" do
- options = parse(["--format", "silent"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::SilentFormatter)
- end
-
- it "should use html formatter with explicit output when format is html:test.html" do
- FileUtils.rm 'test.html' if File.exist?('test.html')
- options = parse(["--format", "html:test.html"])
- options.formatters # creates the file
- File.should exist('test.html')
- options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
- options.formatters[0].close
- FileUtils.rm 'test.html'
- end
-
- it "should use noisy backtrace tweaker with b option" do
- options = parse(["-b"])
- options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
- end
-
- it "should use noisy backtrace tweaker with backtrace option" do
- options = parse(["--backtrace"])
- options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
- end
-
- it "should use quiet backtrace tweaker by default" do
- options = parse([])
- options.backtrace_tweaker.should be_instance_of(Spec::Runner::QuietBacktraceTweaker)
- end
-
- it "should use specdoc formatter when format is s" do
- options = parse(["--format", "s"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
- end
-
- it "should use specdoc formatter when format is specdoc" do
- options = parse(["--format", "specdoc"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
- end
-
- it "should use nested text formatter when format is s" do
- options = parse(["--format", "n"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::NestedTextFormatter)
- end
-
- it "should use nested text formatter when format is nested" do
- options = parse(["--format", "nested"])
- options.formatters[0].class.should equal(Spec::Runner::Formatter::NestedTextFormatter)
- end
-
- it "should support diff option when format is not specified" do
- options = parse(["--diff"])
- options.diff_format.should == :unified
- end
-
- it "should use unified diff format option when format is unified" do
- options = parse(["--diff", "unified"])
- options.diff_format.should == :unified
- options.differ_class.should equal(Spec::Expectations::Differs::Default)
- end
-
- it "should use context diff format option when format is context" do
- options = parse(["--diff", "context"])
- options.diff_format.should == :context
- options.differ_class.should == Spec::Expectations::Differs::Default
- end
-
- it "should use custom diff format option when format is a custom format" do
- Spec::Expectations.differ.should_not be_instance_of(Custom::Differ)
-
- options = parse(["--diff", "Custom::Differ"])
- options.parse_diff "Custom::Differ"
- options.diff_format.should == :custom
- options.differ_class.should == Custom::Differ
- Spec::Expectations.differ.should be_instance_of(Custom::Differ)
- end
-
- it "should print instructions about how to fix missing differ" do
- lambda { parse(["--diff", "Custom::MissingFormatter"]) }.should raise_error(NameError)
- @err.string.should match(/Couldn't find differ class Custom::MissingFormatter/n)
- end
-
- describe "when attempting a focussed spec" do
- attr_reader :file, :dir
- before(:each) do
- @original_rspec_options = Spec::Runner.options
- @file = "#{File.dirname(__FILE__)}/line_number_query/line_number_query_fixture.rb"
- @dir = File.dirname(file)
- end
-
- after(:each) do
- Spec::Runner.use @original_rspec_options
- end
-
- def parse(args)
- options = super
- Spec::Runner.use options
- options.filename_pattern = "*_fixture.rb"
- options
- end
-
- describe 'with the --line flag' do
- it "should correctly identify the spec" do
- options = parse([file, "--line", "13"])
- options.line_number.should == 13
- options.examples.should be_empty
- options.run_examples
- options.examples.should eql(["d"])
- end
-
- it "should fail with error message if specified file is a dir" do
- options = parse([dir, "--line", "169"])
- options.line_number.should == 169
- options.run_examples
- @err.string.should match(/You must specify one file, not a directory when providing a line number/n)
- end
-
-
- it "should fail with error message if file does not exist" do
- options = parse(["some file", "--line", "169"])
- proc do
- options.run_examples
- end.should raise_error
- end
-
- it "should fail with error message if more than one files are specified" do
- options = parse([file, file, "--line", "169"])
- options.run_examples
- @err.string.should match(/Only one file can be specified when providing a line number/n)
- end
-
- it "should fail with error message if using simultaneously with --example" do
- options = parse([file, "--example", "some example", "--line", "169"])
- options.run_examples
- @err.string.should match(/You cannot use --example and specify a line number/n)
- end
- end
-
- describe 'with the colon syntax (filename:LINE_NUMBER)' do
-
- it "should strip the line number from the file name" do
- options = parse(["#{file}:13"])
- options.files.should include(file)
- end
-
- it "should correctly identify the spec" do
- options = parse(["#{file}:13"])
- options.line_number.should == 13
- options.examples.should be_empty
- options.run_examples
- options.examples.should eql(["d"])
- end
-
- it "should fail with error message if specified file is a dir" do
- options = parse(["#{dir}:169"])
- options.line_number.should == 169
- options.run_examples
- @err.string.should match(/You must specify one file, not a directory when providing a line number/n)
- end
-
-
- it "should fail with error message if file does not exist" do
- options = parse(["some file:169"])
- proc do
- options.run_examples
- end.should raise_error
- end
-
- it "should fail with error message if more than one files are specified" do
- options = parse([file, "#{file}:169"])
- options.run_examples
- @err.string.should match(/Only one file can be specified when providing a line number/n)
- end
-
- it "should fail with error message if using simultaneously with --example" do
- options = parse(["#{file}:169", "--example", "some example"])
- options.run_examples
- @err.string.should match(/You cannot use --example and specify a line number/n)
- end
- end
-
- end
-
- if [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
- it "should barf when --heckle is specified (and platform is windows)" do
- lambda do
- options = parse(["--heckle", "Spec"])
- end.should raise_error(StandardError, /Heckle is not supported/)
- end
- elsif Spec::Ruby.version.to_f == 1.9
- it "should barf when --heckle is specified (and platform is Ruby 1.9)" do
- lambda do
- options = parse(["--heckle", "Spec"])
- end.should raise_error(StandardError, /Heckle is not supported/)
- end
- else
- it "should heckle when --heckle is specified (and platform is not windows)" do
- options = parse(["--heckle", "Spec"])
- options.heckle_runner.should be_instance_of(Spec::Runner::HeckleRunner)
- end
- end
-
- it "should read options from file when --options is specified" do
- options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
- options.diff_format.should_not be_nil
- options.colour.should be_true
- end
-
- it "should default the formatter to ProgressBarFormatter when using options file" do
- options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
- options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::ProgressBarFormatter)
- end
-
- it "should run parse drb after parsing options" do
- @parser.should_receive(:parse_drb).with(no_args).and_return(true)
- options = parse(["--options", File.dirname(__FILE__) + "/spec_drb.opts"])
- end
-
- it "should send all the arguments other than --drb back to the parser after parsing options" do
- Spec::Runner::DrbCommandLine.should_receive(:run).and_return do |options|
- options.argv.should == ["example_file.rb", "--colour"]
- end
- options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
- end
-
- it "runs specs locally if no drb is running when --drb is specified" do
- Spec::Runner::DrbCommandLine.should_receive(:run).and_return(false)
- options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
- options.__send__(:examples_should_be_run?).should be_true
- end
-
- it "says its running specs locally if no drb is running when --drb is specified" do
- Spec::Runner::DrbCommandLine.should_receive(:run).and_return(false)
- options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
- options.error_stream.rewind
- options.error_stream.string.should =~ /Running specs locally/
- end
-
- it "does not run specs locally if drb is running when --drb is specified" do
- Spec::Runner::DrbCommandLine.should_receive(:run).and_return(true)
- options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
- options.__send__(:examples_should_be_run?).should be_false
- end
-
- it "should read spaced and multi-line options from file when --options is specified" do
- options = parse(["--options", File.dirname(__FILE__) + "/spec_spaced.opts"])
- options.diff_format.should_not be_nil
- options.colour.should be_true
- options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::SpecdocFormatter)
- end
-
- it "should save config to file when --generate-options is specified" do
- FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
- options = parse(["--colour", "--generate-options", "test.spec.opts", "--diff"])
- IO.read('test.spec.opts').should == "--colour\n--diff\n"
- FileUtils.rm 'test.spec.opts'
- end
-
- it "should save config to file when -G is specified" do
- FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
- options = parse(["--colour", "-G", "test.spec.opts", "--diff"])
- IO.read('test.spec.opts').should == "--colour\n--diff\n"
- FileUtils.rm 'test.spec.opts'
- end
-
- it "when --drb is specified, calls DrbCommandLine all of the other ARGV arguments" do
- options = Spec::Runner::OptionParser.parse([
- "some/spec.rb", "--diff", "--colour"
- ], @err, @out)
- Spec::Runner::DrbCommandLine.should_receive(:run).and_return do |options|
- options.argv.should == ["some/spec.rb", "--diff", "--colour"]
- end
- parse(["some/spec.rb", "--diff", "--drb", "--colour"])
- end
-
- it "should reverse spec order when --reverse is specified" do
- options = parse(["some/spec.rb", "--reverse"])
- end
-
- it "should set an mtime comparator when --loadby mtime" do
- options = parse(["--loadby", 'mtime'])
- runner = Spec::Runner::ExampleGroupRunner.new(options)
- Spec::Runner::ExampleGroupRunner.should_receive(:new).
- with(options).
- and_return(runner)
- runner.should_receive(:load_files).with(["most_recent_spec.rb", "command_line_spec.rb"])
-
- Dir.chdir(File.dirname(__FILE__)) do
- options.files << 'command_line_spec.rb'
- options.files << 'most_recent_spec.rb'
- FileUtils.touch "most_recent_spec.rb"
- options.run_examples
- FileUtils.rm "most_recent_spec.rb"
- end
- end
-
- it "should use the standard runner by default" do
- runner = ::Spec::Runner::ExampleGroupRunner.new(@parser.options)
- ::Spec::Runner::ExampleGroupRunner.should_receive(:new).
- with(@parser.options).
- and_return(runner)
- options = parse([])
- options.run_examples
- end
-
- it "should use a custom runner when given" do
- runner = Custom::ExampleGroupRunner.new(@parser.options, nil)
- Custom::ExampleGroupRunner.should_receive(:new).
- with(@parser.options, nil).
- and_return(runner)
- options = parse(["--runner", "Custom::ExampleGroupRunner"])
- options.run_examples
- end
-
- it "should use a custom runner with extra options" do
- runner = Custom::ExampleGroupRunner.new(@parser.options, 'something')
- Custom::ExampleGroupRunner.should_receive(:new).
- with(@parser.options, 'something').
- and_return(runner)
- options = parse(["--runner", "Custom::ExampleGroupRunner:something"])
- options.run_examples
- end
-
- it "sets options.autospec to true with --autospec" do
- options = parse(["--autospec"])
- options.autospec.should be(true)
- end
-
- describe "implicitly loading spec/spec.opts" do
- include FakeFS::SpecHelpers
-
- it "uses spec/spec.opts if present" do
- File.open('spec/spec.opts', 'w') { |f| f.write "--colour" }
- options = parse(['ignore.rb'])
- options.colour.should be(true)
- end
-
- it "does not try to load spec/spec.opts if not present" do
- FileUtils.rm 'spec/spec.opts'
- options = parse(['ignore.rb'])
- options.colour.should be(false)
- end
-
- it "uses specified opts if supplied" do
- options = nil
- File.open("spec/spec.opts",'w') { |f| f.write "" }
- File.open("spec/alternate.opts",'w') { |f| f.write "--colour" }
- options = parse(['-O','spec/alternate.opts'])
- options.colour.should be(true)
- end
- end
-
-
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/options_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/options_spec.rb
deleted file mode 100644
index 63f9fa43d..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/options_spec.rb
+++ /dev/null
@@ -1,554 +0,0 @@
-require 'spec_helper'
-require 'spec/runner/resources/custom_example_group_runner'
-
-module Spec
- module Runner
- describe Options do
- before(:each) do
- @err = StringIO.new('')
- @out = StringIO.new('')
- @options = Options.new(@err, @out)
-
- before_suite_parts = []
- after_suite_parts = []
- @options.stub!(:before_suite_parts).and_return(before_suite_parts)
- @options.stub!(:after_suite_parts).and_return(after_suite_parts)
- end
-
- after(:each) do
- Spec::Expectations.differ = nil
- end
-
- describe "#require_ruby_debug" do
- it "should require ruby-debug" do
- @options.stub!(:require)
- @options.should_receive(:require).with("ruby-debug")
- @options.require_ruby_debug
- end
- end
-
- describe "#examples" do
- it "should default to empty array" do
- @options.examples.should == []
- end
- end
-
- describe "#include_pattern" do
- it "should default to '**/*_spec.rb'" do
- @options.filename_pattern.should == "**/*_spec.rb"
- end
- end
-
- describe "#files_to_load" do
-
- it "should load files not following pattern if named explicitly" do
- file = File.expand_path(File.dirname(__FILE__) + "/resources/a_bar.rb")
- @options.files << file
- @options.files_to_load.should include(file)
- end
-
- describe "with default --pattern" do
- it "should load files named _spec.rb" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources/")
- @options.files << dir
- @options.files_to_load.should == ["#{dir}/a_spec.rb"]
- end
- end
-
- describe "with explicit pattern (single)" do
- before(:each) do
- @options.filename_pattern = "**/*_foo.rb"
- end
-
- it "should load files following pattern" do
- file = File.expand_path(File.dirname(__FILE__) + "/resources/a_foo.rb")
- @options.files << file
- @options.files_to_load.should include(file)
- end
-
- it "should load files in directories following pattern" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources")
- @options.files << dir
- @options.files_to_load.should include("#{dir}/a_foo.rb")
- end
-
- it "should not load files in directories not following pattern" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources")
- @options.files << dir
- @options.files_to_load.should_not include("#{dir}/a_bar.rb")
- end
- end
-
- describe "with explicit pattern (comma,separated,values)" do
-
- before(:each) do
- @options.filename_pattern = "**/*_foo.rb,**/*_bar.rb"
- end
-
- it "should support comma separated values" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources")
- @options.files << dir
- @options.files_to_load.should include("#{dir}/a_foo.rb")
- @options.files_to_load.should include("#{dir}/a_bar.rb")
- end
-
- it "should support comma separated values with spaces" do
- dir = File.expand_path(File.dirname(__FILE__) + "/resources")
- @options.files << dir
- @options.files_to_load.should include("#{dir}/a_foo.rb")
- @options.files_to_load.should include("#{dir}/a_bar.rb")
- end
-
- end
-
- end
-
- describe "#backtrace_tweaker" do
- it "should default to QuietBacktraceTweaker" do
- @options.backtrace_tweaker.class.should == QuietBacktraceTweaker
- end
-
- it "adds custom ignored backtrace patterns" do
- Spec::Runner.configuration.stub!(:ignored_backtrace_patterns).and_return([/custom_pattern/])
- @options.run_examples
- @options.backtrace_tweaker.ignored_patterns.should include(/custom_pattern/)
- end
- end
-
- describe "#dry_run" do
- it "should default to false" do
- @options.dry_run.should == false
- end
- end
-
- describe "#debug" do
- it "should default to false" do
- @options.debug.should == false
- end
- end
-
- describe "#context_lines" do
- it "should default to 3" do
- @options.context_lines.should == 3
- end
- end
-
- describe "#parse_diff with nil" do
- before(:each) do
- @options.parse_diff nil
- end
-
- it "should make diff_format unified" do
- @options.diff_format.should == :unified
- end
-
- it "should set Spec::Expectations.differ to be a default differ" do
- Spec::Expectations.differ.class.should ==
- ::Spec::Expectations::Differs::Default
- end
- end
-
- describe "#parse_diff with 'unified'" do
- before(:each) do
- @options.parse_diff 'unified'
- end
-
- it "should make diff_format unified and uses default differ_class" do
- @options.diff_format.should == :unified
- @options.differ_class.should equal(Spec::Expectations::Differs::Default)
- end
-
- it "should set Spec::Expectations.differ to be a default differ" do
- Spec::Expectations.differ.class.should ==
- ::Spec::Expectations::Differs::Default
- end
- end
-
- describe "#parse_diff with 'context'" do
- before(:each) do
- @options.parse_diff 'context'
- end
-
- it "should make diff_format context and uses default differ_class" do
- @options.diff_format.should == :context
- @options.differ_class.should == Spec::Expectations::Differs::Default
- end
-
- it "should set Spec::Expectations.differ to be a default differ" do
- Spec::Expectations.differ.class.should ==
- ::Spec::Expectations::Differs::Default
- end
- end
-
- describe "#parse_diff with Custom::Differ" do
- before(:each) do
- @options.parse_diff 'Custom::Differ'
- end
-
- it "should use custom differ_class" do
- @options.diff_format.should == :custom
- @options.differ_class.should == Custom::Differ
- Spec::Expectations.differ.should be_instance_of(Custom::Differ)
- end
-
- it "should set Spec::Expectations.differ to be a default differ" do
- Spec::Expectations.differ.class.should ==
- ::Custom::Differ
- end
- end
-
- describe "#parse_diff with missing class name" do
- it "should raise error" do
- lambda { @options.parse_diff "Custom::MissingDiffer" }.should raise_error(NameError)
- @err.string.should match(/Couldn't find differ class Custom::MissingDiffer/n)
- end
- end
-
- describe "#parse_example" do
- it "with argument thats not a file path, sets argument as the example" do
- example = "something or other"
- File.file?(example).should == false
- @options.parse_example example
- @options.examples.should eql(["something or other"])
- end
-
- it "with argument that is a file path, sets examples to contents of the file" do
- example = "#{File.dirname(__FILE__)}/examples.txt"
- File.should_receive(:file?).with(example).and_return(true)
- file = StringIO.new("Sir, if you were my husband, I would poison your drink.\nMadam, if you were my wife, I would drink it.")
- File.should_receive(:open).with(example).and_return(file)
-
- @options.parse_example example
- @options.examples.should eql([
- "Sir, if you were my husband, I would poison your drink.",
- "Madam, if you were my wife, I would drink it."
- ])
- end
- end
-
- describe "#examples_should_not_be_run" do
- it "should cause #run_examples to return true and do nothing" do
- @options.examples_should_not_be_run
- ExampleGroupRunner.should_not_receive(:new)
-
- @options.run_examples.should be_true
- end
- end
-
- describe "debug option specified" do
- it "should cause ruby_debug to be required and do nothing" do
- @options.debug = true
- @options.should_receive(:require_ruby_debug)
- @options.run_examples.should be_true
- end
- end
-
- describe "debug option not specified" do
- it "should not cause ruby_debug to be required" do
- @options.debug = false
- @options.should_not_receive(:require_ruby_debug)
- @options.run_examples.should be_true
- end
- end
-
- describe "#load_class" do
- it "should raise error when not class name" do
- lambda do
- @options.__send__(:load_class, 'foo', 'fruit', '--food')
- end.should raise_error('"foo" is not a valid class name')
- end
- end
-
- describe "#reporter" do
- it "returns a Reporter" do
- @options.reporter.should be_instance_of(Reporter)
- @options.reporter.options.should === @options
- end
- end
-
- describe "#drb_port" do
- it "returns a number" do
- @options.drb_port = "400"
- @options.drb_port.should == 400
- end
- end
-
- describe "#number_of_examples" do
- context "when --example is parsed" do
- it "provides the number of examples parsed instead of the total number of examples collected" do
- @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
- it "uses this example_group 1" do; end
- it "uses this example_group 2" do; end
- it "uses this example_group 3" do; end
- end
- @options.add_example_group @example_group
- @options.parse_example("an example")
- @options.number_of_examples.should == 1
- end
- end
- end
-
- describe "#add_example_group affecting passed in example_group" do
- it "runs all examples when options.examples is empty" do
- example_1_has_run = false
- example_2_has_run = false
- @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
- it "runs 1" do
- example_1_has_run = true
- end
- it "runs 2" do
- example_2_has_run = true
- end
- end
-
- @options.examples.clear
-
- @options.add_example_group @example_group
- @options.run_examples
- example_1_has_run.should be_true
- example_2_has_run.should be_true
- end
-
- it "keeps all example_definitions when options.examples is empty" do
- example_1_has_run = false
- example_2_has_run = false
- @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
- it "runs 1" do
- example_1_has_run = true
- end
- it "runs 2" do
- example_2_has_run = true
- end
- end
-
- @options.add_example_group @example_group
- @options.run_examples
- example_1_has_run.should be_true
- example_2_has_run.should be_true
- end
- end
-
- describe "#add_example_group affecting example_group" do
- it "adds example_group when example_group has example_definitions and is not shared" do
- @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
- it "uses this example_group" do
- end
- end
-
- @options.number_of_examples.should == 0
- @options.add_example_group @example_group
- @options.number_of_examples.should == 1
- @options.example_groups.length.should == 1
- end
- end
-
- describe "#remove_example_group" do
- it "should remove the ExampleGroup from the list of ExampleGroups" do
- @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
- end
- @options.add_example_group @example_group
- @options.example_groups.should include(@example_group)
-
- @options.remove_example_group @example_group
- @options.example_groups.should_not include(@example_group)
- end
- end
-
- describe "#run_examples" do
- describe "with global predicate matchers" do
- it "defines global predicate matcher methods on ExampleMethods" do
- Spec::Runner.configuration.stub!(:predicate_matchers).and_return({:this => :that?})
- group = Class.new(::Spec::Example::ExampleGroupDouble).describe("Some Examples")
- example = group.new(::Spec::Example::ExampleProxy.new)
-
- @options.run_examples
- example.this
- end
-
- after(:each) do
- Spec::Example::ExampleMethods.class_eval "undef :this"
- end
- end
-
- describe "with a mock framework defined as a Symbol" do
- it "includes Spec::Adapters::MockFramework" do
- Spec::Runner.configuration.stub!(:mock_framework).and_return('spec/adapters/mock_frameworks/rspec')
-
- Spec::Example::ExampleMethods.should_receive(:include).with(Spec::Adapters::MockFramework)
-
- @options.run_examples
- end
- end
-
- describe "with a mock framework defined as a Module" do
- it "includes the module in ExampleMethods" do
- mod = Module.new
- Spec::Runner.configuration.stub!(:mock_framework).and_return(mod)
- Spec::Example::ExampleMethods.should_receive(:include).with(mod)
- @options.run_examples
- end
- end
-
- describe "when not given a custom runner" do
- it "should use the standard" do
- runner = ::Spec::Runner::ExampleGroupRunner.new(@options)
- ::Spec::Runner::ExampleGroupRunner.should_receive(:new).
- with(@options).
- and_return(runner)
- @options.user_input_for_runner = nil
-
- @options.run_examples
- end
- end
-
- describe "when given a custom runner" do
- it "should use the custom runner" do
- runner = Custom::ExampleGroupRunner.new(@options, nil)
- Custom::ExampleGroupRunner.should_receive(:new).
- with(@options, nil).
- and_return(runner)
- @options.user_input_for_runner = "Custom::ExampleGroupRunner"
-
- @options.run_examples
- end
-
- it "should use the custom runner with extra options" do
- runner = Custom::ExampleGroupRunner.new(@options, 'something')
- Custom::ExampleGroupRunner.should_receive(:new).
- with(@options, 'something').
- and_return(runner)
- @options.user_input_for_runner = "Custom::ExampleGroupRunner:something"
-
- @options.run_examples
- end
- end
-
- describe "when there are examples" do
- before(:each) do
- @example_group = Class.new(::Spec::Example::ExampleGroup)
- @options.add_example_group @example_group
- @options.formatters << Formatter::BaseTextFormatter.new(@options, @out)
- end
-
- it "runs the Examples and outputs the result" do
- @options.run_examples
- @out.string.should include("0 examples, 0 failures")
- end
-
- it "sets #examples_run? to true" do
- @options.examples_run?.should be_false
- @options.run_examples
- @options.examples_run?.should be_true
- end
-
- describe "and the suite passes" do
- before do
- @example_group.should_receive(:run).and_return(true)
- end
-
- it "invokes after_suite_parts with true" do
- success_result = nil
- @options.after_suite_parts << lambda do |success|
- success_result = success
- end
-
- @options.run_examples
- success_result.should be_true
- end
- end
-
- describe "and the suite fails" do
- before(:each) do
- @example_group.should_receive(:run).and_return(false)
- end
-
- it "invokes after_suite_parts with false" do
- success_result = nil
- @options.after_suite_parts << lambda do |success|
- success_result = success
- end
-
- @options.run_examples
- success_result.should be_false
- end
- end
-
- describe "when using heckle runner" do
- before(:each) do
- @heckle_runner_mock = mock("HeckleRunner")
- @options.heckle_runner = @heckle_runner_mock
- end
-
- it "should heckle" do
- @heckle_runner_mock.should_receive(:heckle_with)
- @options.run_examples
- end
-
- it "shouldn't heckle recursively" do
- heckled = false
- @heckle_runner_mock.should_receive(:heckle_with) {
- heckled.should == false
- heckled = true
- @options.run_examples
- }
- @options.run_examples
- end
-
- it "shouldn't load spec files twice" do
- example_runner = mock("ExampleGroupRunner")
- example_runner_inside_heckle = mock("ExampleGroupRunner inside Heckle")
-
- ExampleGroupRunner.should_receive(:new).twice.and_return(
- example_runner, example_runner_inside_heckle
- )
-
- example_runner.stub!(:run)
- example_runner.should_receive(:load_files)
- @heckle_runner_mock.stub!(:heckle_with).and_return { @options.run_examples }
- example_runner_inside_heckle.stub!(:run)
- example_runner_inside_heckle.should_not_receive(:load_files)
-
- @options.run_examples
- end
- end
- end
-
- describe "when there are no examples" do
- before(:each) do
- @options.formatters << Formatter::BaseTextFormatter.new(@options, @out)
- end
-
- it "does not run Examples and does not output a result" do
- @options.run_examples
- @out.string.should_not include("examples")
- @out.string.should_not include("failures")
- end
-
- it "sets #examples_run? to false" do
- @options.examples_run?.should be_false
- @options.run_examples
- @options.examples_run?.should be_false
- end
-
- it "invokes after_suite_parts with true" do
- success_result = nil
- @options.after_suite_parts << lambda do |success|
- success_result = success
- end
-
- @options.run_examples
- success_result.should be_true
- end
- end
- end
-
- describe "#add_dir_from_project_root_to_load_path" do
- it "handles nil gracefully" do
- load_path = double().as_null_object
- @options.stub(:project_root).and_return(nil)
- @options.add_dir_from_project_root_to_load_path(nil,load_path)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_fixture.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_fixture.rb
deleted file mode 100644
index 8a3a9fc72..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_fixture.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'spec_helper'
-
-describe "Running an Example" do
- it "should not output twice" do
- true.should be_true
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_fixture_runner.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_fixture_runner.rb
deleted file mode 100644
index b6b3761e4..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_fixture_runner.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require "spec_helper"
-
-triggering_double_output = Spec::Runner.options
-options = Spec::Runner::OptionParser.parse(
- [File.dirname(__FILE__) + "/output_one_time_fixture.rb"], $stderr, $stdout
-)
-Spec::Runner::CommandLine.run(options)
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_spec.rb
deleted file mode 100644
index c91bb0ffb..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/output_one_time_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'spec_helper'
-require 'ruby_forker'
-
-module Spec
- module Runner
- describe CommandLine do
- include RubyForker
- it "should not output twice" do
- output = ruby "-Ilib bin/spec spec/spec/runner/output_one_time_fixture_runner.rb"
- output.should include("1 example, 0 failures")
- output.should_not include("0 examples, 0 failures")
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/quiet_backtrace_tweaker_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/quiet_backtrace_tweaker_spec.rb
deleted file mode 100644
index 725434775..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/quiet_backtrace_tweaker_spec.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- describe QuietBacktraceTweaker do
- before(:each) do
- @error = RuntimeError.new
- @tweaker = QuietBacktraceTweaker.new
- end
-
- it "gracefully handles nil backtrace" do
- expect do
- @tweaker.tweak_backtrace(@error)
- end.to_not raise_error
- end
-
- it "gracefully handles backtraces with newlines" do
- @error.set_backtrace(["we like\nbin/spec:\nnewlines"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should include("we like\nnewlines")
- end
-
- it "cleans up double slashes" do
- @error.set_backtrace(["/a//b/c//d.rb"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should include("/a/b/c/d.rb")
- end
-
- it "preserves lines from textmate ruby bundle" do
- @error.set_backtrace(["/Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby.tmbundle/Support/tmruby.rb:147"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty
- end
-
- it "removes lines in lib/spec" do
- ["expectations", "mocks", "runner"].each do |child|
- element="/lib/spec/#{child}/anything.rb"
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
- end
- end
-
- it "removes lines in bin/spec" do
- @error.set_backtrace(["bin/spec:"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty
- end
-
- it "preserves lines in spec" do
- @error.set_backtrace(["spec/foo/bar_spec.rb"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should == ["spec/foo/bar_spec.rb"]
- end
-
- it "preserves lines in ./spec" do
- @error.set_backtrace(["./spec/foo/bar_spec.rb"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should == ["./spec/foo/bar_spec.rb"]
- end
-
- it "preserves lines in /path/to/project/spec" do
- @error.set_backtrace(["/path/to/project/spec/foo/bar_spec.rb"])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should == ["/path/to/project/spec/foo/bar_spec.rb"]
- end
-
- it "removes lines in mock_frameworks/rspec" do
- element = "mock_frameworks/rspec"
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
- end
-
- it "removes custom patterns in regexp form" do
- element = "/vendor/lib/custom_pattern/"
- @tweaker.ignore_patterns /custom_pattern/
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
- end
-
- it "removes custom patterns in string form" do
- element = "/vendor/lib/custom_pattern/"
- @tweaker.ignore_patterns "custom_pattern"
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
- end
-
- it "removes lines in mock_frameworks/rspec" do
- element = "mock_frameworks/rspec"
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
- end
-
- it "removes lines in rspec gem" do
- ["/rspec-1.2.3/lib/spec.rb","/rspec-1.2.3/lib/spec/anything.rb","bin/spec:123"].each do |element|
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
- end
- end
-
- it "removes lines in pre-release rspec gems" do
- ["/rspec-1.2.3.a1.gem/lib/spec.rb","/rspec-1.2.3.b1.gem/lib/spec.rb","/rspec-1.2.3.rc1.gem/lib/spec.rb"].each do |element|
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
- end
- end
-
- it "removes lines in spork gem" do
- ["/spork-1.2.3/lib/spec.rb","/spork-1.2.3/lib/spec/anything.rb","bin/spork:123"].each do |element|
- @error.set_backtrace([element])
- @tweaker.tweak_backtrace(@error)
- @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/reporter_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/reporter_spec.rb
deleted file mode 100644
index 556387dc7..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/reporter_spec.rb
+++ /dev/null
@@ -1,244 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- describe Reporter do
- attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group, :example_group_proxy, :example_proxy
- before(:each) do
- @formatter_output = StringIO.new
- @options = Options.new(StringIO.new, StringIO.new)
- @backtrace_tweaker = stub("backtrace tweaker", :tweak_backtrace => nil)
- options.backtrace_tweaker = backtrace_tweaker
- @formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(options, formatter_output)
- options.formatters << formatter
- @reporter = Reporter.new(options)
- @example_group = create_example_group("example_group")
- @example_group_proxy = Spec::Example::ExampleGroupProxy.new(@example_group)
- @example_proxy = Spec::Example::ExampleProxy.new
- example_group.notify(reporter)
- end
-
- def failure
- Mocks::ArgumentMatchers::DuckTypeMatcher.new(:header, :exception)
- end
-
- def create_example_group(text)
- example_group = Spec::Example::ExampleGroup.describe(text) do
- it "should do something" do
- end
- end
- example_group
- end
-
- it "should assign itself as the reporter to options" do
- options.reporter.should equal(@reporter)
- end
-
- it "should tell formatter when example_group is added" do
- formatter.should_receive(:example_group_started).with(example_group_proxy)
- example_group.notify(reporter)
- end
-
- it "should handle multiple example_groups with same name" do
- formatter.should_receive(:example_group_started).exactly(3).times
- formatter.should_receive(:example_started).exactly(3).times
- formatter.should_receive(:example_passed).exactly(3).times
- formatter.should_receive(:start_dump)
- formatter.should_receive(:dump_pending)
- formatter.should_receive(:close).with(no_args)
- formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
- create_example_group("example_group").notify(reporter)
- reporter.example_started(description_of("spec 1"))
- reporter.example_finished(description_of("spec 1"))
- create_example_group("example_group").notify(reporter)
- reporter.example_started(description_of("spec 2"))
- reporter.example_finished(description_of("spec 2"))
- create_example_group("example_group").notify(reporter)
- reporter.example_started(description_of("spec 3"))
- reporter.example_finished(description_of("spec 3"))
- reporter.dump
- end
-
- def description_of(example)
- ::Spec::Example::ExampleProxy.new(String === example ? example : example.description)
- end
-
- it "should handle multiple examples with the same name" do
- error=RuntimeError.new
- passing = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
- failing = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
-
- formatter.should_receive(:example_group_started).exactly(2).times
- formatter.should_receive(:example_passed).with(description_of(passing)).exactly(2).times
- formatter.should_receive(:example_failed).with(description_of(failing), 1, failure)
- formatter.should_receive(:example_failed).with(description_of(failing), 2, failure)
- formatter.should_receive(:dump_failure).exactly(2).times
- formatter.should_receive(:start_dump)
- formatter.should_receive(:dump_pending)
- formatter.should_receive(:close).with(no_args)
- formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
- backtrace_tweaker.should_receive(:tweak_backtrace).twice
-
- create_example_group("example_group").notify(reporter)
- reporter.example_finished(description_of(passing))
- reporter.example_finished(description_of(failing), error)
-
- create_example_group("example_group").notify(reporter)
- reporter.example_finished(description_of(passing))
- reporter.example_finished(description_of(failing), error)
- reporter.dump
- end
-
- it "should push stats to formatter even with no data" do
- formatter.should_receive(:start_dump)
- formatter.should_receive(:dump_pending)
- formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
- formatter.should_receive(:close).with(no_args)
- reporter.dump
- end
-
- it "should push time to formatter" do
- formatter.should_receive(:start).with(5)
- formatter.should_receive(:start_dump)
- formatter.should_receive(:dump_pending)
- formatter.should_receive(:close).with(no_args)
- formatter.should_receive(:dump_summary) do |time, a, b|
- time.to_s.should match(/[0-9].[0-9|e|-]+/)
- end
- reporter.start(5)
- reporter.end
- reporter.dump
- end
-
- describe "reporting one passing example" do
- it "should tell formatter example passed" do
- formatter.should_receive(:example_passed)
- reporter.example_finished(description_of("example"))
- end
-
- it "should not delegate to backtrace tweaker" do
- formatter.should_receive(:example_passed)
- backtrace_tweaker.should_not_receive(:tweak_backtrace)
- reporter.example_finished(description_of("example"))
- end
-
- it "should account for passing example in stats" do
- formatter.should_receive(:example_passed)
- formatter.should_receive(:start_dump)
- formatter.should_receive(:dump_pending)
- formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
- formatter.should_receive(:close).with(no_args)
- reporter.example_finished(description_of("example"))
- reporter.dump
- end
- end
-
- describe "reporting one failing example" do
- it "should tell formatter that example failed" do
- example = example_group.it("should do something") {}
- formatter.should_receive(:example_failed)
- reporter.example_finished(description_of(example), RuntimeError.new)
- end
-
- it "should delegate to backtrace tweaker" do
- formatter.should_receive(:example_failed)
- backtrace_tweaker.should_receive(:tweak_backtrace)
- reporter.example_finished(example_proxy, RuntimeError.new)
- end
-
- it "should account for failing example in stats" do
- example = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
- formatter.should_receive(:example_failed).with(description_of(example), 1, failure)
- formatter.should_receive(:start_dump)
- formatter.should_receive(:dump_pending)
- formatter.should_receive(:dump_failure).with(1, anything())
- formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
- formatter.should_receive(:close).with(no_args)
- reporter.example_finished(description_of(example), RuntimeError.new)
- reporter.dump
- end
-
- end
-
- describe "reporting one pending example (ExamplePendingError)" do
- before :each do
- @pending_error = Spec::Example::ExamplePendingError.new("reason")
- end
-
- it "should tell formatter example is pending" do
- example = ExampleGroup.new(example_proxy)
- formatter.should_receive(:example_pending).with(description_of(example), "reason")
- formatter.should_receive(:example_group_started).with(example_group_proxy)
- example_group.notify(reporter)
- reporter.example_finished(description_of(example), @pending_error)
- end
-
- it "should account for pending example in stats" do
- example = ExampleGroup.new(example_proxy)
- formatter.should_receive(:example_pending).with(description_of(example), "reason")
- formatter.should_receive(:start_dump)
- formatter.should_receive(:dump_pending)
- formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
- formatter.should_receive(:close).with(no_args)
- formatter.should_receive(:example_group_started).with(example_group_proxy)
- example_group.notify(reporter)
- reporter.example_finished(description_of(example), @pending_error)
- reporter.dump
- end
-
- describe "to formatters which have example_pending's arity of 3 (which is now deprecated)" do
- before :each do
- Spec.stub!(:warn)
-
- @deprecated_formatter = Class.new(@formatter.class) do
- attr_reader :example_passed_to_method, :message_passed_to_method
-
- def example_pending(example_passed_to_method, message_passed_to_method, deprecated_pending_location)
- @example_passed_to_method = example_passed_to_method
- @message_passed_to_method = message_passed_to_method
- end
- end.new(options, formatter_output)
-
- options.formatters << @deprecated_formatter
- end
-
- it "should pass the correct example description to the formatter" do
- proxy = Spec::Example::ExampleProxy.new("name")
- example = ExampleGroup.new(proxy)
- example_group.notify(reporter)
- reporter.example_finished(description_of(example), @pending_error)
-
- @deprecated_formatter.example_passed_to_method.should == proxy
- end
-
- it "should pass the correct pending error message to the formatter" do
- example = ExampleGroup.new(example_proxy)
- example_group.notify(reporter)
- reporter.example_finished(description_of(example), @pending_error)
-
- @deprecated_formatter.message_passed_to_method.should == @pending_error.message
- end
-
- it "should raise a deprecation warning" do
- Spec.should_receive(:warn)
-
- example = ExampleGroup.new(example_proxy)
- example_group.notify(reporter)
- reporter.example_finished(description_of(example), @pending_error)
- end
- end
- end
-
- describe "reporting one pending example (PendingExampleFixedError)" do
- it "should tell formatter pending example is fixed" do
- formatter.should_receive(:example_failed) do |name, counter, failure|
- failure.header.should == "'example_group should do something' FIXED"
- end
- formatter.should_receive(:example_group_started).with(example_group_proxy)
- example_group.notify(reporter)
- reporter.example_finished(description_of(example_group.examples.first), Spec::Example::PendingExampleFixedError.new("reason"))
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_bar.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_bar.rb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_bar.rb
+++ /dev/null
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_foo.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_foo.rb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_foo.rb
+++ /dev/null
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_spec.rb
deleted file mode 100644
index d9b67cc76..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/a_spec.rb
+++ /dev/null
@@ -1 +0,0 @@
-# Empty - used by ../options_spec.rb \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/custom_example_group_runner.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/custom_example_group_runner.rb
deleted file mode 100644
index edcf54e96..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/custom_example_group_runner.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-module Custom
- class ExampleGroupRunner
- attr_reader :options, :arg
- def initialize(options, arg)
- @options, @arg = options, arg
- end
-
- def load_files(files)
- end
-
- def run
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/utf8_encoded.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/utf8_encoded.rb
deleted file mode 100644
index 7cbdd6908..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/resources/utf8_encoded.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# encoding: utf-8
-module Custom
- class ExampleUTF8ClassNameVarietà
- def self.è
- così = :però
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/spec.opts b/vendor/gems/rspec-1.3.1/spec/spec/runner/spec.opts
deleted file mode 100644
index fd816a424..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/spec.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---diff
---colour \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/spec_drb.opts b/vendor/gems/rspec-1.3.1/spec/spec/runner/spec_drb.opts
deleted file mode 100644
index 61f260b71..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/spec_drb.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---colour
---drb
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner/spec_spaced.opts b/vendor/gems/rspec-1.3.1/spec/spec/runner/spec_spaced.opts
deleted file mode 100644
index 6b3efd20f..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner/spec_spaced.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---diff --colour
---format s \ No newline at end of file
diff --git a/vendor/gems/rspec-1.3.1/spec/spec/runner_spec.rb b/vendor/gems/rspec-1.3.1/spec/spec/runner_spec.rb
deleted file mode 100644
index 3b55be7a7..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec/runner_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'spec_helper'
-
-module Spec
- describe Runner do
- describe ".configure" do
- it "should yield global configuration" do
- Spec::Runner.configure do |config|
- config.should equal(Spec::Runner.configuration)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/spec_helper.rb b/vendor/gems/rspec-1.3.1/spec/spec_helper.rb
deleted file mode 100644
index d746d0871..000000000
--- a/vendor/gems/rspec-1.3.1/spec/spec_helper.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-$: << '.' # for ruby 1.9
-require 'stringio'
-
-$_spec_spec = true # Prevents Kernel.exit in various places
-
-require 'spec'
-require 'spec/mocks'
-require 'spec/runner/differs/default'
-require 'spec/autorun'
-
-require 'support/spec_classes'
-require 'support/macros'
-
-def jruby?
- ::RUBY_PLATFORM == 'java'
-end
-
-module Spec
- module Example
- class NonStandardError < Exception; end
- end
-
- module Matchers
- def fail
- raise_error(Spec::Expectations::ExpectationNotMetError)
- end
-
- def fail_with(message)
- raise_error(Spec::Expectations::ExpectationNotMetError, message)
- end
-
- def exception_from(&block)
- exception = nil
- begin
- yield
- rescue StandardError => e
- exception = e
- end
- exception
- end
-
- def run_with(options)
- ::Spec::Runner::CommandLine.run(options)
- end
-
- def with_ruby(version)
- yield if RUBY_VERSION =~ Regexp.compile("^#{version.to_s}")
- end
- end
-end
-
-def with_sandboxed_options
- attr_reader :options
-
- before(:each) do
- @original_rspec_options = ::Spec::Runner.options
- ::Spec::Runner.use(@options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new))
- end
-
- after(:each) do
- ::Spec::Runner.use(@original_rspec_options)
- end
-
- yield
-end
-
-def with_sandboxed_config
- attr_reader :config
-
- before(:each) do
- @config = ::Spec::Runner::Configuration.new
- @original_configuration = ::Spec::Runner.configuration
- spec_configuration = @config
- ::Spec::Runner.instance_eval {@configuration = spec_configuration}
- end
-
- after(:each) do
- original_configuration = @original_configuration
- ::Spec::Runner.instance_eval {@configuration = original_configuration}
- ::Spec::Example::ExampleGroupFactory.reset
- end
-
- yield
-end
-
-module Spec
- module Example
- module Resettable
- def reset # :nodoc:
- @before_all_parts = nil
- @after_all_parts = nil
- @before_each_parts = nil
- @after_each_parts = nil
- end
- end
- class ExampleGroup
- extend Resettable
- end
- class ExampleGroupDouble < ExampleGroup
- ::Spec::Runner.options.remove_example_group self
- def register_example_group(klass)
- #ignore
- end
- def initialize(proxy=nil, &block)
- super(proxy || ExampleProxy.new, &block)
- end
- end
- end
-end
-
-Spec::Runner.configure do |config|
- config.extend(Macros)
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/support/macros.rb b/vendor/gems/rspec-1.3.1/spec/support/macros.rb
deleted file mode 100644
index 6322060b0..000000000
--- a/vendor/gems/rspec-1.3.1/spec/support/macros.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-module Macros
- def treats_method_missing_as_private(options = {:noop => true, :subject => nil})
- it "should have method_missing as private" do
- with_ruby 1.8 do
- described_class.private_instance_methods.should include("method_missing")
- end
- with_ruby 1.9 do
- described_class.private_instance_methods.should include(:method_missing)
- end
- end
-
- it "should not respond_to? method_missing (because it's private)" do
- formatter = options[:subject] || described_class.new({ }, StringIO.new)
- formatter.should_not respond_to(:method_missing)
- end
-
- if options[:noop]
- it "should respond_to? all messages" do
- formatter = described_class.new({ }, StringIO.new)
- formatter.should respond_to(:just_about_anything)
- end
-
- it "should respond_to? anything, when given the private flag" do
- formatter = described_class.new({ }, StringIO.new)
- formatter.respond_to?(:method_missing, true).should be_true
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-1.3.1/spec/support/spec_classes.rb b/vendor/gems/rspec-1.3.1/spec/support/spec_classes.rb
deleted file mode 100644
index c8900a789..000000000
--- a/vendor/gems/rspec-1.3.1/spec/support/spec_classes.rb
+++ /dev/null
@@ -1,133 +0,0 @@
-# This file contains various classes used by the specs.
-module Spec
- module Expectations
- class Person
- attr_reader :name
- def initialize name
- @name = name
- end
- def == other
- return @name == other.name
- end
- end
-
- class ClassWithMultiWordPredicate
- def multi_word_predicate?
- true
- end
- end
-
- module Helper
- class CollectionWithSizeMethod
- def initialize; @list = []; end
- def size; @list.size; end
- def push(item); @list.push(item); end
- end
-
- class CollectionWithLengthMethod
- def initialize; @list = []; end
- def length; @list.size; end
- def push(item); @list.push(item); end
- end
-
- class CollectionOwner
- attr_reader :items_in_collection_with_size_method, :items_in_collection_with_length_method
-
- def initialize
- @items_in_collection_with_size_method = CollectionWithSizeMethod.new
- @items_in_collection_with_length_method = CollectionWithLengthMethod.new
- end
-
- def add_to_collection_with_size_method(item)
- @items_in_collection_with_size_method.push(item)
- end
-
- def add_to_collection_with_length_method(item)
- @items_in_collection_with_length_method.push(item)
- end
-
- def items_for(arg)
- return [1, 2, 3] if arg == 'a'
- [1]
- end
-
- def items
- @items_in_collection_with_size_method
- end
- end
-
- class HandCodedMock
- include Spec::Matchers
- def initialize(return_val)
- @return_val = return_val
- @funny_called = false
- end
-
- def funny?
- @funny_called = true
- @return_val
- end
-
- def hungry?(a, b, c)
- a.should equal(1)
- b.should equal(2)
- c.should equal(3)
- @funny_called = true
- @return_val
- end
-
- def exists?
- @return_val
- end
-
- def multi_word_predicate?
- @return_val
- end
-
- def rspec_verify
- @funny_called.should be_true
- end
- end
- class ClassWithUnqueriedPredicate
- attr_accessor :foo
- def initialize(foo)
- @foo = foo
- end
- end
- end
- end
-end
-
-module Custom
- require 'spec/runner/formatter/base_text_formatter'
- class Formatter < Spec::Runner::Formatter::BaseTextFormatter
- attr_reader :options, :where
-
- def initialize(options, where)
- @options = options
- @where = where
- end
- end
-
- class BadFormatter < Spec::Runner::Formatter::BaseTextFormatter
- attr_reader :where
-
- def initialize(options, where)
- bad_method
- end
- end
-
- class Differ
- attr_reader :options
- def initialize(options)
- @options = options
- end
-
- def diff_as_object(target, expected)
- ""
- end
- end
-end
-
-class FakeReporter < Spec::Runner::Reporter
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/.document b/vendor/gems/rspec-rails-1.3.3/.document
deleted file mode 100644
index 1c7800d57..000000000
--- a/vendor/gems/rspec-rails-1.3.3/.document
+++ /dev/null
@@ -1,7 +0,0 @@
-lib/**/*.rb
-History.rdoc
-License.txt
-README.rdoc
-Upgrade.rdoc
-features/**/*.feature
-
diff --git a/vendor/gems/rspec-rails-1.3.3/.specification b/vendor/gems/rspec-rails-1.3.3/.specification
deleted file mode 100644
index f1f280090..000000000
--- a/vendor/gems/rspec-rails-1.3.3/.specification
+++ /dev/null
@@ -1,313 +0,0 @@
---- !ruby/object:Gem::Specification
-name: rspec-rails
-version: !ruby/object:Gem::Version
- hash: 29
- prerelease: false
- segments:
- - 1
- - 3
- - 3
- version: 1.3.3
-platform: ruby
-authors:
-- RSpec Development Team
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2010-10-09 00:00:00 +01:00
-default_executable:
-dependencies:
-- !ruby/object:Gem::Dependency
- name: rspec
- prerelease: false
- requirement: &id001 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - "="
- - !ruby/object:Gem::Version
- hash: 25
- segments:
- - 1
- - 3
- - 1
- version: 1.3.1
- type: :runtime
- version_requirements: *id001
-- !ruby/object:Gem::Dependency
- name: rack
- prerelease: false
- requirement: &id002 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 23
- segments:
- - 1
- - 0
- - 0
- version: 1.0.0
- type: :runtime
- version_requirements: *id002
-- !ruby/object:Gem::Dependency
- name: cucumber
- prerelease: false
- requirement: &id003 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 213
- segments:
- - 0
- - 3
- - 99
- version: 0.3.99
- type: :development
- version_requirements: *id003
-- !ruby/object:Gem::Dependency
- name: hoe
- prerelease: false
- requirement: &id004 !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 19
- segments:
- - 2
- - 6
- - 2
- version: 2.6.2
- type: :development
- version_requirements: *id004
-description: Behaviour Driven Development for Ruby on Rails.
-email:
-- rspec-devel@rubyforge.org
-executables: []
-
-extensions: []
-
-extra_rdoc_files:
-- License.txt
-- Manifest.txt
-- TODO.txt
-- generators/rspec/templates/previous_failures.txt
-files:
-- .document
-- Contribute.rdoc
-- History.rdoc
-- License.txt
-- Manifest.txt
-- README.rdoc
-- Rakefile
-- TODO.txt
-- Upgrade.rdoc
-- generators/integration_spec/integration_spec_generator.rb
-- generators/integration_spec/templates/integration_spec.rb
-- generators/rspec/CHANGES
-- generators/rspec/rspec_generator.rb
-- generators/rspec/templates/previous_failures.txt
-- generators/rspec/templates/rcov.opts
-- generators/rspec/templates/rspec.rake
-- generators/rspec/templates/script/autospec
-- generators/rspec/templates/script/spec
-- generators/rspec/templates/spec.opts
-- generators/rspec/templates/spec_helper.rb
-- generators/rspec_controller/USAGE
-- generators/rspec_controller/rspec_controller_generator.rb
-- generators/rspec_controller/templates/controller_spec.rb
-- generators/rspec_controller/templates/helper_spec.rb
-- generators/rspec_controller/templates/view_spec.rb
-- generators/rspec_default_values.rb
-- generators/rspec_model/USAGE
-- generators/rspec_model/rspec_model_generator.rb
-- generators/rspec_model/templates/model_spec.rb
-- generators/rspec_scaffold/rspec_scaffold_generator.rb
-- generators/rspec_scaffold/templates/controller_spec.rb
-- generators/rspec_scaffold/templates/edit_erb_spec.rb
-- generators/rspec_scaffold/templates/helper_spec.rb
-- generators/rspec_scaffold/templates/index_erb_spec.rb
-- generators/rspec_scaffold/templates/new_erb_spec.rb
-- generators/rspec_scaffold/templates/routing_spec.rb
-- generators/rspec_scaffold/templates/show_erb_spec.rb
-- init.rb
-- lib/autotest/discover.rb
-- lib/autotest/rails_rspec.rb
-- lib/spec/rails.rb
-- lib/spec/rails/example.rb
-- lib/spec/rails/example/assigns_hash_proxy.rb
-- lib/spec/rails/example/controller_example_group.rb
-- lib/spec/rails/example/cookies_proxy.rb
-- lib/spec/rails/example/functional_example_group.rb
-- lib/spec/rails/example/helper_example_group.rb
-- lib/spec/rails/example/integration_example_group.rb
-- lib/spec/rails/example/model_example_group.rb
-- lib/spec/rails/example/render_observer.rb
-- lib/spec/rails/example/routing_example_group.rb
-- lib/spec/rails/example/routing_helpers.rb
-- lib/spec/rails/example/view_example_group.rb
-- lib/spec/rails/extensions.rb
-- lib/spec/rails/extensions/action_controller/rescue.rb
-- lib/spec/rails/extensions/action_controller/test_case.rb
-- lib/spec/rails/extensions/action_controller/test_response.rb
-- lib/spec/rails/extensions/action_view/base.rb
-- lib/spec/rails/extensions/active_record/base.rb
-- lib/spec/rails/extensions/active_support/test_case.rb
-- lib/spec/rails/extensions/spec/matchers/have.rb
-- lib/spec/rails/extensions/spec/runner/configuration.rb
-- lib/spec/rails/interop/testcase.rb
-- lib/spec/rails/matchers.rb
-- lib/spec/rails/matchers/ar_be_valid.rb
-- lib/spec/rails/matchers/assert_select.rb
-- lib/spec/rails/matchers/change.rb
-- lib/spec/rails/matchers/have_text.rb
-- lib/spec/rails/matchers/include_text.rb
-- lib/spec/rails/matchers/redirect_to.rb
-- lib/spec/rails/matchers/render_template.rb
-- lib/spec/rails/matchers/route_to.rb
-- lib/spec/rails/mocks.rb
-- lib/spec/rails/version.rb
-- spec/autotest/mappings_spec.rb
-- spec/rails_suite.rb
-- spec/resources/controllers/action_view_base_spec_controller.rb
-- spec/resources/controllers/application.rb
-- spec/resources/controllers/controller_spec_controller.rb
-- spec/resources/controllers/example.txt
-- spec/resources/controllers/redirect_spec_controller.rb
-- spec/resources/controllers/render_spec_controller.rb
-- spec/resources/controllers/rjs_spec_controller.rb
-- spec/resources/helpers/addition_helper.rb
-- spec/resources/helpers/explicit_helper.rb
-- spec/resources/helpers/more_explicit_helper.rb
-- spec/resources/helpers/plugin_application_helper.rb
-- spec/resources/helpers/view_spec_helper.rb
-- spec/resources/models/animal.rb
-- spec/resources/models/person.rb
-- spec/resources/models/thing.rb
-- spec/resources/views/controller_spec/_partial.html.erb
-- spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb
-- spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb
-- spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb
-- spec/resources/views/controller_spec/action_with_errors_in_template.html.erb
-- spec/resources/views/controller_spec/action_with_template.html.erb
-- spec/resources/views/layouts/application.html.erb
-- spec/resources/views/layouts/simple.html.erb
-- spec/resources/views/objects/_object.html.erb
-- spec/resources/views/render_spec/_a_partial.html.erb
-- spec/resources/views/render_spec/action_with_alternate_layout.html.erb
-- spec/resources/views/render_spec/some_action.html.erb
-- spec/resources/views/render_spec/some_action.js.rjs
-- spec/resources/views/rjs_spec/_replacement_partial.html.erb
-- spec/resources/views/rjs_spec/hide_div.js.rjs
-- spec/resources/views/rjs_spec/hide_page_element.js.rjs
-- spec/resources/views/rjs_spec/insert_html.js.rjs
-- spec/resources/views/rjs_spec/replace.js.rjs
-- spec/resources/views/rjs_spec/replace_html.js.rjs
-- spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs
-- spec/resources/views/rjs_spec/visual_effect.js.rjs
-- spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs
-- spec/resources/views/tag_spec/no_tags.html.erb
-- spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb
-- spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb
-- spec/resources/views/view_spec/_partial.html.erb
-- spec/resources/views/view_spec/_partial_used_twice.html.erb
-- spec/resources/views/view_spec/_partial_with_local_variable.html.erb
-- spec/resources/views/view_spec/_partial_with_sub_partial.html.erb
-- spec/resources/views/view_spec/_spacer.html.erb
-- spec/resources/views/view_spec/accessor.html.erb
-- spec/resources/views/view_spec/block_helper.html.erb
-- spec/resources/views/view_spec/entry_form.html.erb
-- spec/resources/views/view_spec/explicit_helper.html.erb
-- spec/resources/views/view_spec/foo/show.html.erb
-- spec/resources/views/view_spec/implicit_helper.html.erb
-- spec/resources/views/view_spec/multiple_helpers.html.erb
-- spec/resources/views/view_spec/path_params.html.erb
-- spec/resources/views/view_spec/should_not_receive.html.erb
-- spec/resources/views/view_spec/template_with_partial.html.erb
-- spec/resources/views/view_spec/template_with_partial_using_collection.html.erb
-- spec/resources/views/view_spec/template_with_partial_with_array.html.erb
-- spec/resources/views/view_spec/view_helpers.html.erb
-- spec/spec/rails/example/assigns_hash_proxy_spec.rb
-- spec/spec/rails/example/configuration_spec.rb
-- spec/spec/rails/example/controller_example_group_spec.rb
-- spec/spec/rails/example/controller_isolation_spec.rb
-- spec/spec/rails/example/cookies_proxy_spec.rb
-- spec/spec/rails/example/error_handling_spec.rb
-- spec/spec/rails/example/example_group_factory_spec.rb
-- spec/spec/rails/example/helper_example_group_spec.rb
-- spec/spec/rails/example/model_example_group_spec.rb
-- spec/spec/rails/example/routing_example_group_spec.rb
-- spec/spec/rails/example/shared_routing_example_group_examples.rb
-- spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb
-- spec/spec/rails/example/view_example_group_spec.rb
-- spec/spec/rails/extensions/action_view_base_spec.rb
-- spec/spec/rails/extensions/active_record_spec.rb
-- spec/spec/rails/interop/testcase_spec.rb
-- spec/spec/rails/matchers/ar_be_valid_spec.rb
-- spec/spec/rails/matchers/assert_select_spec.rb
-- spec/spec/rails/matchers/errors_on_spec.rb
-- spec/spec/rails/matchers/have_text_spec.rb
-- spec/spec/rails/matchers/include_text_spec.rb
-- spec/spec/rails/matchers/redirect_to_spec.rb
-- spec/spec/rails/matchers/render_template_spec.rb
-- spec/spec/rails/matchers/should_change_spec.rb
-- spec/spec/rails/mocks/ar_classes.rb
-- spec/spec/rails/mocks/mock_model_spec.rb
-- spec/spec/rails/mocks/stub_model_spec.rb
-- spec/spec/rails/sample_modified_fixture.rb
-- spec/spec/rails/sample_spec.rb
-- spec/spec/rails/spec_spec.rb
-- spec/spec_helper.rb
-has_rdoc: true
-homepage: http://rspec.info
-licenses: []
-
-post_install_message: |
- **************************************************
-
- Thank you for installing rspec-rails-1.3.3
-
- If you are upgrading, do this in each of your rails apps
- that you want to upgrade:
-
- $ ruby script/generate rspec
-
- Please be sure to read History.rdoc and Upgrade.rdoc
- for useful information about this release.
-
- **************************************************
-
-rdoc_options:
-- --main
-- README.rdoc
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: rspec
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: rspec-rails 1.3.3
-test_files: []
-
diff --git a/vendor/gems/rspec-rails-1.3.3/Contribute.rdoc b/vendor/gems/rspec-rails-1.3.3/Contribute.rdoc
deleted file mode 100644
index 0c10d49c6..000000000
--- a/vendor/gems/rspec-rails-1.3.3/Contribute.rdoc
+++ /dev/null
@@ -1,4 +0,0 @@
-== Contribute
-
-If you're interested in contributing to rspec-rails, please see
-http://wiki.github.com/dchelimsky/rspec-dev for information.
diff --git a/vendor/gems/rspec-rails-1.3.3/History.rdoc b/vendor/gems/rspec-rails-1.3.3/History.rdoc
deleted file mode 100644
index 0c64a481d..000000000
--- a/vendor/gems/rspec-rails-1.3.3/History.rdoc
+++ /dev/null
@@ -1,314 +0,0 @@
-=== Version 1.3.3 / 2010-10-09
-
-* enhancements
- * replace use of 'returning' with 'tap'
-
-* bug fixes
- * support message expectation on template.render with locals (Sergey
- Nebolsin). Closes #941.
- * helper instance variable no longer persists across examples
- (alex rothenberg). Closes #627.
- * mock_model stubs marked_for_destruction? (returns false).
-
-=== Version 1.3.2 / 2010-01-13
-
-* bug fix
- * generator only adds code for rspec-rails
- * which depends on rspec
-
-=== Version 1.3.1 / 2010-01-12
-
-* bug fix
- * ensure that Spec::Rails module is defined (Jack Chen and Ryan Bigg).
- Closes #939.
-
-=== Version 1.3.0 / 2010-01-11
-
-* enhancements
- * use stub() instead of stub!() in generators
- * generate gem config in test.rb with 'script/generate rspec'
-
-=== Version 1.2.9 / 2009-10-05
-
-* enhancements
- * added route_to and be_routable matchers (Randy Harmon). Closes #843.
- * Provide better failure message for render_template when redirected (Josh
- Nichols). Closes #885.
- * generated specs require 'spec_helper'
-
-* bug fixes
- * pass the correct args to super in controller#render depending on the rails
- version (Lucas Carlson). Closes #865.
- * use Rack::Utils.parse_query to convert query strings to hashes. Closes #872.
- * errors correctly bubble up when a controller spec in isolation mode
- requests a non-existent action/template
- * no error if either action or template exist
- * error if neither exist
- * Closes #888.
- * mock_model stubs destroyed? to return false
-
-* removals
- * spec_server has been removed in favor of spork.
- * You can still use the --drb flag, but you've got to install the spork
- gem.
- * Windows users who cannot use the spork gem can install the spec_server
- from http://github.com/dchelimsky/spec_server
-
-=== Version 1.2.7 / 2009-06-22
-
-* enhancements
- * alias :stub!, :stub so rspec-rails extensions of rspec stubs can use the
- same syntax as rspec (core)
- * integration specs (Ben Mabey and David Chelimsky)
- * added support for references and belongs_to generated model specs (José
- Valim). Closes #792.
- * add discovery for autotest-rails to keep compatible with ZenTest-4.0.0
- (Ryan Davis). Closes #838.
- * controller specs in isolation mode don't care whether the file exists
- anymore!
-
-* bug fixes
- * allow rspec-rails to work without ActiveRecord. Closes #810.
- * fix bug with have() matcher failure message (Dave Giunta). Closes #818.
- * fix bug where render_template('new') would pass if 'newer' was rendered
- (or anything that started with 'new')
-
-* deprecations
- * spec_server is now deprecated - use spork instead (gem install spork).
- Closes #827.
-
-=== Version 1.2.6 / 2009-04-30
-
-* bug fixes
- * restored rake tasks for rspec[-rails] as plugins
-
-=== Version 1.2.5 / 2009-04-29
-
-* enhancements
- * support :xml and :strict config options for have_tag matcher (patch from
- Peer Allan and Max Murphy). Closes #783.
-
-* bug fixes
- * Fixed a small typo that makes rake stats fail (José Valim). Closes #802.
- * link_to and friends are available to ViewExampleGroup again
- (J.B. Rainsberger). Closes #787.
- * spec_server works correctly with rails 2.3 again (Neil Buckley). Closes
- #759.
-
-=== Version 1.2.4 / 2009-03-13
-
-No changes in this release, but aligns with the rspec-1.2.4 release. Someday
-soon, this binding of rspec/rspec-rails versions needs to end!
-
-=== Version 1.2.3 / 2009-03-13
-
-No changes in this release, but aligns with the rspec-1.2.3 release.
-
-=== Version 1.2.2 / 2009-03-22
-
-No changes in this release, but aligns with the rspec-1.2.2 release.
-
-=== Version 1.2.1 / 2009-03-22
-
-This is a bug-fix release, recommended for anybody who has already upgraded to
-rspec-rails-1.2.0 or is upgrading to rails-2.3.2
-
-See Upgrade.rdoc for information about upgrading to rspec-rails-1.2.1
-
-* enhancements
-
- * more cleanup of internals (reducing dependency on rspec-core)
- * don't require config/environments more than once
- * autotest includes spec/routing directory (Matt Peterson). Closes #739.
- * display helpful messages when installing rspec-rails running
- script/generate rspec
- * thanks for Dr Nic for the pointers
- * restored require 'rubygems' where needed
- * export NO_RUBYGEMS=true if you don't use rubygems
-
-* bug fixes
-
- * fix scoping issues in rspec-rails' own suite for ruby 1.9.1 (Matthias
- Hennemeyer). Closes #717.
- * rake stats no longer hides test directories. Closes #748.
- * fixed regression that was introduced in 1.2 in which controller_name
- failed to override the controller class passed to describe() (patches from
- Aaron Gibralter and Zach Dennis). Closes #732.
-
-=== Version 1.2.0 / 2009-03-15
-
-IMPORTANT: See Upgrade.rdoc for information about upgrading to rspec-rails-1.2.0
-
-IMPORTANT: This release includes the following backwards-compatibility-breaking changes.
-
-* rspec-rails supports rails 2.0.2, 2.1.2, 2.2.2 and 2.3.2
-
- * We are no longer supporting 1.x versions of rails.
-
-* expect_render and stub_render have been removed.
-
- * Both of these methods were deprecated in rspec-rails-1.1.5, released in Sept, 2008.
-
-* { route_for(args).should == "/path" } now delegates to assert_generates (in rails)
-
- * see Upgrade.txt for more information
-
-* deprecations
-
- * controller.use_rails_error_handling! is deprecated
- * use rescue_action_in_public! (from rails) instead
-
-* enhancements
-
- * Adding status codes to redirect_to matcher (Damian Janowski). Closes #570.
- * Initialize current URL before executing any examples in a ViewExampleGroup (Wilson Bilkovich). Closes #654.
- * Support query strings in params_from (Wilson Bilkovich). Closes #652.
- * delegate route_for to assert_recognizes (less brittle)
- * it { should be_valid } (Kakutani). Closes #665.
- * controller is implicit subject in controller specs (Joe Ferris). #686.
- * template is implicit subject in view specs (Joe Ferris). #686.
- * redirect_to and render_template matchers can accept controller or response (Joe Ferris). Closes #686.
- * generated specs use declarative docstrings
- * rspec_scaffold generator generates layout and stylesheet (per Rails-2.3)
- * add bypass_rescue for controller specs
- * infer template path from the first arg passed to describe in view specs
- * separate routing specs (in spec/routing)
-
-* bug fixes
-
- * you no longer *have* to load ActionMailer to get specs to run. Closes #650.
- * query_params are now parsed by Rack::Utils.parse_query in redirect_to matcher. Closes #684.
- * cleaned up spec_server (there was a bunch of pre-rails 2.0 material). Closes #685.
- * rspec's rake tasks are not loaded when running "rake gems" or any of its subtasks
- * only warn when rspec is not installed when trying to invoke an rspec rake task
- * support 2 arg version of ActionController::Base#render (reported by Nathan Wilmes)
- * rake spec:server:start doesn't choke if there is no tmp directory
- * force cache_classes = false when running with spec_server. Closes #287.
- * keep spec_server working against edge rails (Jonathan Tron). Closes #685.
- * create lib/tasks if not present when running script/generate rspec. Closes #687.
- * fixed regression (and added spec so it won't regress again) where
- render => :inline didn't render unless integrate_views was set
- * fixed nil.with_output_buffer bug in helper specs. Closes #719.
-
-=== Version 1.1.12 / 2009-01-11
-
-* 2 deprecations
-
- * TestResponse#[] is deprecated if you're using Rails <= 2.2.x and removed if you're using Rails 2.3
- * add_stubs(model, {:method => value}) is deprecated. Use model.stub!(:method => value) instead.
-
-* 2 major enhancements
-
- * support controller and action path params in view specs (Mike Vincent).
- * use ActiveSupport::TestCase when available, else Test::Unit::TestCase - supports Rails 1.2.6 (Brandon Keepers). Closes #620.
- * support form tag helpers in helpers (Ivo Dancet). Closes #641.
-
-* 3 minor enhancements
-
- * improve rdoc for render_template (Patch from Andrew Premdas). Fixes #571.
- * use more liberal globs to allow for specs in symlinked dirs (Martin Luder). Closes #361.
- * Enable loading fixtures from arbitrary locations (Jacek Becela). Closes #464.
-
-* 7 bug fixes
-
- * Attempt to load application_controller before falling back to application (Geoff Garside). Closes #626.
- * Include _id and reduce quoting of default values in view specs (Steen Lehmann). Closes #598.
- * Record calls to render and check rendered[:template] and rendered[:partial] for edge rails (> v2.2.2). Closes #633.
- * config.gem 'rspec' can't be unpacked. Closes #629.
- * spec_server not working with Rails 2.2.2 (Andreas Wolff). Closes #631.
- * redirect_to doesn't work with http method constrained urls (Maxim Kulkin). Closes #648.
- * rescue_with declarations are no longer by-passed (Brandon Keepers). #85
-
-=== Version 1.1.11 / 2008-10-24
-
-* No changes to rspec-rails - release to align with bug-fix release in rspec ... again :(
-
-=== Version 1.1.10 / 2008-10-24
-
-* No changes to rspec-rails - release to align with bug-fix release in rspec
-
-=== Version 1.1.9 / 2008-10-20
-
-* 4 bug fixes
-
- * require 'rubygems' in script/spec
- * fix failure message for error_on and errors_on (Patch from Mike Vincent). Fixes #566.
- * fix issues that arise in view spec if passing actual template name to render (Patch from Mike Vincent). Fixes #551.
- * fixed bug accessing assigns from helper examples
-
-=== Version 1.1.8 / 2008-10-03
-
-* 2 bug fixes
-
- * correctly handle assigns that are false. Fixes #552.
- * ensure that NotYetImplemented examples report as pending (fixed in rspec, not rspec-rails). Fixes #553.
-
-=== Version 1.1.7 / 2008-10-02
-
-* 1 bug fix
-
- * depend on the correct version of rspec
-
-=== Version 1.1.6 / 2008-10-02
-
-* 1 bug fix
-
- * fixed regression where values assigned to the assigns hash were not accessible from the example (#549)
-
-=== Version 1.1.5 / 2008-09-28
-
-IMPORTANT: use 'script/autospec' (or just 'autospec' if you have the rspec gem
-installed) instead of 'autotest'. We changed the way autotest discovers rspec
-so the autotest executable won't automatically load rspec anymore. This allows
-rspec to live side by side other spec frameworks without always co-opting
-autotest through autotest's discovery mechanism.
-
-ALSO IMPORTANT: Rails v2.1.1 changed assert_select_rjs such that it doesn't
-always fail when it should. Please see
-http://rails.lighthouseapp.com/projects/8994/tickets/982.
-
-* Generated route specs have shorter names, making it less painful to modify their implementation
-* Add conditional so Rails 2.1.0 doesn't warn about cache_template_extensions (patch from James Herdman)
-* Fixed stub_model examples to work with Rails 2.1.0 (the code was fine, just the examples needed patching)
-* use hoe for build/release
-* reworked generated examples for rspec_scaffold - thanks to Mikel Lindsaar and Dan Manges for their feedback
-* bye, bye translator
-* Added proxy to cookies so you can set them in examples the same way you set them in controllers
-* Added script/autospec so you can run autospec without installing the gem
-* Support --skip-fixture in the rspec_model generator (patches from Alex Tomlins and Niels Ganser)
-* Add mock_model#as_new_record (patch from Zach Dennis)
-* mock(:null_object=>true) plays nice with HTML (patch from Gerrit Kaiser)
-* Suppress a deprecation notice in Rails 2.1 (James Herdman)
-* quiet deprecation warning on inflector (RSL)
-* rspec-rails gem (Ben Mabey)
-* updated generated code examples
-* Make rspec_model generator honour --skip-fixtures tag (Niels Ganser, Alex Tomlins)
-* Fix to create new models with attributes in command line (Nicolas)
-* fix to_param in mock_model with stubbed id incorrectly returning autogenerated id (Adam Meehan)
-* Call Rail's TestCase setup/teardown callbacks (Jonathan del Strother)
-* Only run TestUnitTesting once (Jonathan del Strother)
-* use require_dependency instead of require (Brandon Keepers)
-* Fixed a problem caused by controller action names getting out of sync between rspec-dev and rspec-rails for speccing (Matt Patterson)
-* don't mutate hash passed to mock_model (Reg Vos)
-
-=== Version 1.1.4
-
-Maintenance release.
-
-* Moved mock_model and stub_model to their own module: Spec::Rails::Mocks
-* Setting mock_model object id with stubs hash - patch from Adam Meehan
-* Added as_new_record to stub_model e.g. stub_model(Foo).as_new_record
-* Improved stub_model such that new_record? does "the right thing"
-* Patch from Pat Maddox to get integrate_views to work in nested example groups.
-* Patch from Pat Maddox to get controller_name to work in nested example groups.
-* Patch from Corey Haines to add include_text matcher
-* Added stub_model method which creates a real model instance with :id stubbed and data access prohibited.
-* Applied patch from Pat Maddox to handle redirect_to w/ SSL. Closes #320.
-* Added #helper and #assigns to helper specs.
-* Applied patch from Bryan Helmkamp to tweak format of generated spec.opts to be more obvious. Closes #162.
-* Tweaked list of exceptions (ignores) for autotest
-* Applied patch from Rick Olson to get rspec_on_rails working with rails edge (>= 8862)
-* Applied patch from Wincent Colaiuta to invert sense of "spec --diff". Closes #281.
-* Allow any type of render in view specs. Closes #57.
-* Applied patch from Ian White to get rspec working with edge rails (8804). Closes #271.
-* Applied patch from Jon Strother to have spec_server reload fixtures. Closes #344.
diff --git a/vendor/gems/rspec-rails-1.3.3/License.txt b/vendor/gems/rspec-rails-1.3.3/License.txt
deleted file mode 100644
index 791a0eee6..000000000
--- a/vendor/gems/rspec-rails-1.3.3/License.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-(The MIT License)
-
-====================================================================
-==== RSpec, RSpec-Rails
-Copyright (c) 2005-2009 The RSpec Development Team
-====================================================================
-==== ARTS
-Copyright (c) 2006 Kevin Clark, Jake Howerton
-====================================================================
-==== ZenTest
-Copyright (c) 2001-2006 Ryan Davis, Eric Hodel, Zen Spider Software
-====================================================================
-==== AssertSelect
-Copyright (c) 2006 Assaf Arkin
-====================================================================
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/gems/rspec-rails-1.3.3/Manifest.txt b/vendor/gems/rspec-rails-1.3.3/Manifest.txt
deleted file mode 100644
index f5f07c172..000000000
--- a/vendor/gems/rspec-rails-1.3.3/Manifest.txt
+++ /dev/null
@@ -1,165 +0,0 @@
-.document
-Contribute.rdoc
-History.rdoc
-License.txt
-Manifest.txt
-README.rdoc
-Rakefile
-TODO.txt
-Upgrade.rdoc
-generators/integration_spec/integration_spec_generator.rb
-generators/integration_spec/templates/integration_spec.rb
-generators/rspec/CHANGES
-generators/rspec/rspec_generator.rb
-generators/rspec/templates/previous_failures.txt
-generators/rspec/templates/rcov.opts
-generators/rspec/templates/rspec.rake
-generators/rspec/templates/script/autospec
-generators/rspec/templates/script/spec
-generators/rspec/templates/spec.opts
-generators/rspec/templates/spec_helper.rb
-generators/rspec_controller/USAGE
-generators/rspec_controller/rspec_controller_generator.rb
-generators/rspec_controller/templates/controller_spec.rb
-generators/rspec_controller/templates/helper_spec.rb
-generators/rspec_controller/templates/view_spec.rb
-generators/rspec_default_values.rb
-generators/rspec_model/USAGE
-generators/rspec_model/rspec_model_generator.rb
-generators/rspec_model/templates/model_spec.rb
-generators/rspec_scaffold/rspec_scaffold_generator.rb
-generators/rspec_scaffold/templates/controller_spec.rb
-generators/rspec_scaffold/templates/edit_erb_spec.rb
-generators/rspec_scaffold/templates/helper_spec.rb
-generators/rspec_scaffold/templates/index_erb_spec.rb
-generators/rspec_scaffold/templates/new_erb_spec.rb
-generators/rspec_scaffold/templates/routing_spec.rb
-generators/rspec_scaffold/templates/show_erb_spec.rb
-init.rb
-lib/autotest/discover.rb
-lib/autotest/rails_rspec.rb
-lib/spec/rails.rb
-lib/spec/rails/example.rb
-lib/spec/rails/example/assigns_hash_proxy.rb
-lib/spec/rails/example/controller_example_group.rb
-lib/spec/rails/example/cookies_proxy.rb
-lib/spec/rails/example/functional_example_group.rb
-lib/spec/rails/example/helper_example_group.rb
-lib/spec/rails/example/integration_example_group.rb
-lib/spec/rails/example/model_example_group.rb
-lib/spec/rails/example/render_observer.rb
-lib/spec/rails/example/routing_example_group.rb
-lib/spec/rails/example/routing_helpers.rb
-lib/spec/rails/example/view_example_group.rb
-lib/spec/rails/extensions.rb
-lib/spec/rails/extensions/action_controller/rescue.rb
-lib/spec/rails/extensions/action_controller/test_case.rb
-lib/spec/rails/extensions/action_controller/test_response.rb
-lib/spec/rails/extensions/action_view/base.rb
-lib/spec/rails/extensions/active_record/base.rb
-lib/spec/rails/extensions/active_support/test_case.rb
-lib/spec/rails/extensions/spec/matchers/have.rb
-lib/spec/rails/extensions/spec/runner/configuration.rb
-lib/spec/rails/interop/testcase.rb
-lib/spec/rails/matchers.rb
-lib/spec/rails/matchers/ar_be_valid.rb
-lib/spec/rails/matchers/assert_select.rb
-lib/spec/rails/matchers/change.rb
-lib/spec/rails/matchers/have_text.rb
-lib/spec/rails/matchers/include_text.rb
-lib/spec/rails/matchers/redirect_to.rb
-lib/spec/rails/matchers/render_template.rb
-lib/spec/rails/matchers/route_to.rb
-lib/spec/rails/mocks.rb
-lib/spec/rails/version.rb
-spec/autotest/mappings_spec.rb
-spec/rails_suite.rb
-spec/resources/controllers/action_view_base_spec_controller.rb
-spec/resources/controllers/application.rb
-spec/resources/controllers/controller_spec_controller.rb
-spec/resources/controllers/example.txt
-spec/resources/controllers/redirect_spec_controller.rb
-spec/resources/controllers/render_spec_controller.rb
-spec/resources/controllers/rjs_spec_controller.rb
-spec/resources/helpers/addition_helper.rb
-spec/resources/helpers/explicit_helper.rb
-spec/resources/helpers/more_explicit_helper.rb
-spec/resources/helpers/plugin_application_helper.rb
-spec/resources/helpers/view_spec_helper.rb
-spec/resources/models/animal.rb
-spec/resources/models/person.rb
-spec/resources/models/thing.rb
-spec/resources/views/controller_spec/_partial.html.erb
-spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb
-spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb
-spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb
-spec/resources/views/controller_spec/action_with_errors_in_template.html.erb
-spec/resources/views/controller_spec/action_with_template.html.erb
-spec/resources/views/layouts/application.html.erb
-spec/resources/views/layouts/simple.html.erb
-spec/resources/views/objects/_object.html.erb
-spec/resources/views/render_spec/_a_partial.html.erb
-spec/resources/views/render_spec/action_with_alternate_layout.html.erb
-spec/resources/views/render_spec/some_action.html.erb
-spec/resources/views/render_spec/some_action.js.rjs
-spec/resources/views/rjs_spec/_replacement_partial.html.erb
-spec/resources/views/rjs_spec/hide_div.js.rjs
-spec/resources/views/rjs_spec/hide_page_element.js.rjs
-spec/resources/views/rjs_spec/insert_html.js.rjs
-spec/resources/views/rjs_spec/replace.js.rjs
-spec/resources/views/rjs_spec/replace_html.js.rjs
-spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs
-spec/resources/views/rjs_spec/visual_effect.js.rjs
-spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs
-spec/resources/views/tag_spec/no_tags.html.erb
-spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb
-spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb
-spec/resources/views/view_spec/_partial.html.erb
-spec/resources/views/view_spec/_partial_used_twice.html.erb
-spec/resources/views/view_spec/_partial_with_local_variable.html.erb
-spec/resources/views/view_spec/_partial_with_sub_partial.html.erb
-spec/resources/views/view_spec/_spacer.html.erb
-spec/resources/views/view_spec/accessor.html.erb
-spec/resources/views/view_spec/block_helper.html.erb
-spec/resources/views/view_spec/entry_form.html.erb
-spec/resources/views/view_spec/explicit_helper.html.erb
-spec/resources/views/view_spec/foo/show.html.erb
-spec/resources/views/view_spec/implicit_helper.html.erb
-spec/resources/views/view_spec/multiple_helpers.html.erb
-spec/resources/views/view_spec/path_params.html.erb
-spec/resources/views/view_spec/should_not_receive.html.erb
-spec/resources/views/view_spec/template_with_partial.html.erb
-spec/resources/views/view_spec/template_with_partial_using_collection.html.erb
-spec/resources/views/view_spec/template_with_partial_with_array.html.erb
-spec/resources/views/view_spec/view_helpers.html.erb
-spec/spec/rails/example/assigns_hash_proxy_spec.rb
-spec/spec/rails/example/configuration_spec.rb
-spec/spec/rails/example/controller_example_group_spec.rb
-spec/spec/rails/example/controller_isolation_spec.rb
-spec/spec/rails/example/cookies_proxy_spec.rb
-spec/spec/rails/example/error_handling_spec.rb
-spec/spec/rails/example/example_group_factory_spec.rb
-spec/spec/rails/example/helper_example_group_spec.rb
-spec/spec/rails/example/model_example_group_spec.rb
-spec/spec/rails/example/routing_example_group_spec.rb
-spec/spec/rails/example/shared_routing_example_group_examples.rb
-spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb
-spec/spec/rails/example/view_example_group_spec.rb
-spec/spec/rails/extensions/action_view_base_spec.rb
-spec/spec/rails/extensions/active_record_spec.rb
-spec/spec/rails/interop/testcase_spec.rb
-spec/spec/rails/matchers/ar_be_valid_spec.rb
-spec/spec/rails/matchers/assert_select_spec.rb
-spec/spec/rails/matchers/errors_on_spec.rb
-spec/spec/rails/matchers/have_text_spec.rb
-spec/spec/rails/matchers/include_text_spec.rb
-spec/spec/rails/matchers/redirect_to_spec.rb
-spec/spec/rails/matchers/render_template_spec.rb
-spec/spec/rails/matchers/should_change_spec.rb
-spec/spec/rails/mocks/ar_classes.rb
-spec/spec/rails/mocks/mock_model_spec.rb
-spec/spec/rails/mocks/stub_model_spec.rb
-spec/spec/rails/sample_modified_fixture.rb
-spec/spec/rails/sample_spec.rb
-spec/spec/rails/spec_spec.rb
-spec/spec_helper.rb
diff --git a/vendor/gems/rspec-rails-1.3.3/README.rdoc b/vendor/gems/rspec-rails-1.3.3/README.rdoc
deleted file mode 100644
index 06360d905..000000000
--- a/vendor/gems/rspec-rails-1.3.3/README.rdoc
+++ /dev/null
@@ -1,48 +0,0 @@
-= Spec::Rails
-
-* http://rspec.info
-* http://rubyforge.org/projects/rspec
-* http://github.com/dchelimsky/rspec-rails
-* http://wiki.github.com/dchelimsky/rspec/rails
-* mailto:rspec-devel@rubyforge.org
-
-== DESCRIPTION:
-
-Behaviour Driven Development for Ruby on Rails.
-
-rspec-rails is an RSpec extension that allows you to drive the development of
-Ruby on Rails applications with RSpec.
-
-This is the repository for rspec-rails-1.x. If you're looking
-for rspec-rails-2 for rails-3, see http://github.com/rspec/rspec-rails.
-
-== FEATURES:
-
-* Use RSpec to independently specify Rails Models, Views, Controllers and Helpers
-* Integrated fixture loading
-* Special generators for Resources, Models, Views and Controllers that generate RSpec code examples.
-
-== VISION:
-
-For people for whom TDD is a brand new concept, the testing support built into
-Ruby on Rails is a huge leap forward. The fact that it is built right in is
-fantastic, and Ruby on Rails apps are generally much easier to maintain than
-they might have been without such support.
-
-For those of us coming from a history with TDD, and now BDD, the existing
-support presents some problems related to dependencies across examples. To
-that end, RSpec on Rails supports 4 types of examples. We’ve also built in
-first class mocking and stubbing support in order to break dependencies across
-these different concerns.
-
-== MORE INFORMATION:
-
-See Spec::Rails::Example for information about the different kinds of example
-groups you can use to spec the different Rails components
-
-See Spec::Rails::Matchers for information about Rails-specific
-expectations you can set on responses and models, etc.
-
-== INSTALL
-
-* Visit http://wiki.github.com/dchelimsky/rspec/rails for installation instructions.
diff --git a/vendor/gems/rspec-rails-1.3.3/Rakefile b/vendor/gems/rspec-rails-1.3.3/Rakefile
deleted file mode 100644
index 554706ce2..000000000
--- a/vendor/gems/rspec-rails-1.3.3/Rakefile
+++ /dev/null
@@ -1,72 +0,0 @@
-# -*- ruby -*-
-gem 'hoe', '>=2.0.0'
-require 'hoe'
-
-$:.unshift(File.expand_path(File.join(File.dirname(__FILE__),"..","rspec","lib")))
-$:.unshift(File.expand_path(File.join(File.dirname(__FILE__),"lib")))
-
-require 'spec/rails/version'
-require 'spec/rake/spectask'
-require 'cucumber/rake/task'
-
-Hoe.spec 'rspec-rails' do
- self.version = Spec::Rails::VERSION::STRING
- self.summary = Spec::Rails::VERSION::SUMMARY
- self.description = "Behaviour Driven Development for Ruby on Rails."
- self.rubyforge_name = 'rspec'
- self.developer 'RSpec Development Team', 'rspec-devel@rubyforge.org'
- self.extra_deps = [["rspec","1.3.1"],["rack",">=1.0.0"]]
- self.extra_dev_deps = [["cucumber",">= 0.3.99"]]
- self.remote_rdoc_dir = "rspec-rails/#{Spec::Rails::VERSION::STRING}"
- self.history_file = 'History.rdoc'
- self.readme_file = 'README.rdoc'
- self.post_install_message = <<-POST_INSTALL_MESSAGE
-#{'*'*50}
-
- Thank you for installing rspec-rails-#{Spec::Rails::VERSION::STRING}
-
- If you are upgrading, do this in each of your rails apps
- that you want to upgrade:
-
- $ ruby script/generate rspec
-
- Please be sure to read History.rdoc and Upgrade.rdoc
- for useful information about this release.
-
-#{'*'*50}
-POST_INSTALL_MESSAGE
-end
-
-['audit','test','test_deps','default','post_blog', 'release'].each do |task|
- Rake.application.instance_variable_get('@tasks').delete(task)
-end
-
-task :post_blog do
- # no-op
-end
-
-task :release => [:clean, :package] do |t|
- version = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
- abort "Versions don't match #{version} vs #{Spec::Rails::VERSION::STRING}" unless version == Spec::Rails::VERSION::STRING
- pkg = "pkg/rspec-rails-#{version}"
-
- rubyforge = RubyForge.new.configure
- puts "Logging in to rubyforge ..."
- rubyforge.login
-
- puts "Releasing rspec-rails version #{version} ..."
- ["#{pkg}.gem", "#{pkg}.tgz"].each do |file|
- rubyforge.add_file('rspec', 'rspec', Spec::Rails::VERSION::STRING, file)
- end
-end
-
-Cucumber::Rake::Task.new
-
-task :default => [:features]
-
-namespace :update do
- desc "update the manifest"
- task :manifest do
- system %q[touch Manifest.txt; rake check_manifest | grep -v "(in " | patch]
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/TODO.txt b/vendor/gems/rspec-rails-1.3.3/TODO.txt
deleted file mode 100644
index 99a54c7f7..000000000
--- a/vendor/gems/rspec-rails-1.3.3/TODO.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-* wiki
- * need a matrix of which rspec-rails versions support which rails versions
-* CI
- * need a robust CI setup that runs
- * Multiple rubies
- * MRI: 1.8.6
- * MRI: 1.8.7
- * MRI: 1.9.1
- * JRuby
- * IronRuby??? (perhaps using mono)
- * Multiple rails-es
- * 2.0.5
- * 2.1.2
- * 2.2.2
- * 2.3.4
- * 3.0 (once available)
- * With and without ActiveRecord
diff --git a/vendor/gems/rspec-rails-1.3.3/Upgrade.rdoc b/vendor/gems/rspec-rails-1.3.3/Upgrade.rdoc
deleted file mode 100644
index 479e5b8a4..000000000
--- a/vendor/gems/rspec-rails-1.3.3/Upgrade.rdoc
+++ /dev/null
@@ -1,148 +0,0 @@
-= Upgrade to 1.2.8 - 1.3.2
-
-== What's new
-
-=== route_to and be_routable matchers
-
-Stop using route_for and params_from today! These new matchers from Randy
-Harmon are more expressive and more reliable. Here's how you use them:
-
- { :put => "/projects/37" }.should route_to(:controller => 'projects', :action => 'update', :id => '37')
-
- { :get => "/nonexisting_route" }.should_not be_routable
-
-== What's changed
-
-=== spec_server has been removed
-
-spec_server was deprecated in 1.2.7 and has now been removed. Admittedly, this
-was a short deprecation cycle, but spec server never quite worked right in all
-situations and spork is a great solution that you can use today! This is all
-you need to do:
-
- [sudo] gem install spork
- cd path/to/project
- spork --bootsrap
-
-Now open up spec/spec_helper.rb and follow the directions at the top. You'll
-be up and running in no time.
-
-For more info:
-
-* http://github.com/timcharper/spork
-* http://groups.google.com/group/sporkgem
-
-= Upgrade to 1.2.7
-
-== What's changed
-
-=== spec_server is deprecated
-
-spec_server is deprecated in favor of Tim Harper's new spork library
-(http://github.com/timcharper/spork). Get it. Use it. Love it.
-
- gem install spork
-
-= Upgrade to 1.2.0-1.2.6
-
-== What's changed
-
-=== Supported Rails Versions
-
-This release supports the following versions of rails:
-
-* 2.0.5
-* 2.1.2
-* 2.2.2
-* 2.3.2
-
-=== update generated files
-
-Be sure to run "script/generate rspec" and allow the following files to be overwritten:
-
-* lib/tasks/rspec.rake
-* script/spec
-* script/spec_server
-
-=== controller.use_rails_error_handling! is deprecated
-
-Use <tt>rescue_action_in_public!</tt> instead. It comes directly from rails and does
-exactly the same thing
-
-=== route_for
-
-After a change to edge rails broke our monkey-patched <tt>route_for</tt> method, I
-decided to just delegate to rails' <tt>assert_generates</tt> method. For most cases,
-this will not present a problem, but for some it might. You'll know if you
-upgrade and see any newly failing, route-related examples. Here are the things
-that you might need to change.
-
-==== Make sure IDs are strings
-
-If you had :id => 1 before, you need to change that to :id => "1"
-
- #old
- route_for(:controller => 'things', :action => 'show', :id => 1).should == "/things/1"
-
- #new
- route_for(:controller => 'things', :action => 'show', :id => "1").should == "/things/1"
-
-==== Convert paths for non-get methods to hashes
-
-If you had an example with a route that requires post, put, or delete, you'll
-need to declare that explicitly.
-
- #old
- route_for(:controller => 'things', :action => 'create').should == "/things"
-
- #new
- route_for(:controller => 'things', :action => 'create').should == {:path => "/things", :method => :post}
-
-=== Controller/template isolation
-
-Even though controller specs do not render views by default (use
-<tt>integrate_views</tt> to get them to render views), the way this works has
-changed in this version.
-
-It used to be that the view template need not even exist, but due to changes
-in rails it became much more difficult to manage that for all the different
-versions of rails that rspec-rails supports. So now the template must exist,
-but it still won't be rendered unless you declare <tt>integrate_views</tt>.
-
-== What's new
-
-=== render no longer requires a path
-
-The <tt>render()</tt> method in view specs will infer the path from the
-first argument passed to <tt>describe()</tt>.
-
- describe "players/show" do
- it "does something" do
- render
- response.should have_tag("....")
- end
- end
-
-=== routing specs live in spec/routing
-
-<tt>script/generate rspec_scaffold</tt> now generates its routing spec in
-<tt>spec/routing/</tt>.
-
-=== bypass_rescue
-
-Added a new <tt>bypass_rescue()</tt> declaration for controller specs. Use this
-when you want to specify that an error is raised by an action, even if that
-error is later captured by a <tt>rescue_from()</tt> declaration.
-
- describe AccountController do
- describe "GET @account" do
- context "requested by anonymous user" do
- it "denies access" do
- bypass_rescue
- lambda do
- get :show, :id => "37"
- end.should raise_error(AccessDenied)
- end
- end
- end
- end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/integration_spec/integration_spec_generator.rb b/vendor/gems/rspec-rails-1.3.3/generators/integration_spec/integration_spec_generator.rb
deleted file mode 100644
index 12a80e4fd..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/integration_spec/integration_spec_generator.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require File.dirname(__FILE__) + '/../rspec_default_values'
-
-class IntegrationSpecGenerator < ModelGenerator
- def manifest
- record do |m|
- m.class_collisions class_path, class_name
- m.template 'integration_spec.rb', File.join('spec/integration', class_path, "#{class_name.tableize}_spec.rb")
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/integration_spec/templates/integration_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/integration_spec/templates/integration_spec.rb
deleted file mode 100644
index d4b91f87f..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/integration_spec/templates/integration_spec.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'spec_helper'
-
-describe "<%= class_name.pluralize %>" do
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/CHANGES b/vendor/gems/rspec-rails-1.3.3/generators/rspec/CHANGES
deleted file mode 100644
index 69f37090e..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/CHANGES
+++ /dev/null
@@ -1 +0,0 @@
-Please refer to the CHANGES file for RSpec's core \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/rspec_generator.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec/rspec_generator.rb
deleted file mode 100644
index 9fce0f885..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/rspec_generator.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-require 'rbconfig'
-
-# This generator bootstraps a Rails project for use with RSpec
-class RspecGenerator < Rails::Generator::Base
- DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
- Config::CONFIG['ruby_install_name'])
-
- def initialize(runtime_args, runtime_options = {})
- if test ?f, 'spec/spec_helper.rb'
-
- puts <<-HELPFUL_INSTRUCTIONS
-
-It looks like you are upgrading rspec-rails in this application. Please let
-this script overwrite everything it wants to with the following exceptions,
-*if* you have customized any of these files:
-
- * spec/spec.opts
- * spec/rcov.opts
- * spec/spec_helper.rb
-
-If you have customized spec/spec_helper.rb, please set aside a copy of that
-file so that it can be updated and you can manually restore your changes.
-
-HELPFUL_INSTRUCTIONS
- end
- Dir.mkdir('lib/tasks') unless File.directory?('lib/tasks')
-
- if Rails::VERSION::STRING >= '2.1'
- test_env = 'config/environments/test.rb'
- contents = File.read(test_env)
- unless contents =~ /config\.gem\s+(\"|\')rspec/m
- puts "Configuring rspec and rspec-rails gems in #{test_env} ..."
- puts
- require File.expand_path('../../../lib/spec/rails/version.rb', __FILE__)
- rspec_config = <<-EOF
- config.gem 'rspec-rails', :version => '>= #{Spec::Rails::VERSION::STRING}', :lib => false unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
- EOF
- File.open(test_env, "wb") do |f|
- f.puts contents
- f.puts
- f.puts rspec_config
- end
- end
- end
-
- super
- end
-
- def manifest
- record do |m|
- script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
-
- m.directory 'lib/tasks'
- m.file 'rspec.rake', 'lib/tasks/rspec.rake'
-
- m.file 'script/autospec', 'script/autospec', script_options
- m.file 'script/spec', 'script/spec', script_options
-
- m.directory 'spec'
- m.file 'rcov.opts', 'spec/rcov.opts'
- m.file 'spec.opts', 'spec/spec.opts'
- m.template 'spec_helper.rb', 'spec/spec_helper.rb'
- end
- end
-
-protected
-
- def banner
- "Usage: #{$0} rspec"
- end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/previous_failures.txt b/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/previous_failures.txt
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/previous_failures.txt
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/rcov.opts b/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/rcov.opts
deleted file mode 100644
index 274ed51ad..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/rcov.opts
+++ /dev/null
@@ -1,2 +0,0 @@
---exclude "spec/*,gems/*"
---rails \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/rspec.rake b/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/rspec.rake
deleted file mode 100644
index dba3ffcc1..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/rspec.rake
+++ /dev/null
@@ -1,144 +0,0 @@
-gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9
-rspec_gem_dir = nil
-Dir["#{RAILS_ROOT}/vendor/gems/*"].each do |subdir|
- rspec_gem_dir = subdir if subdir.gsub("#{RAILS_ROOT}/vendor/gems/","") =~ /^(\w+-)?rspec-(\d+)/ && File.exist?("#{subdir}/lib/spec/rake/spectask.rb")
-end
-rspec_plugin_dir = File.expand_path(File.dirname(__FILE__) + '/../../vendor/plugins/rspec')
-
-if rspec_gem_dir && (test ?d, rspec_plugin_dir)
- raise "\n#{'*'*50}\nYou have rspec installed in both vendor/gems and vendor/plugins\nPlease pick one and dispose of the other.\n#{'*'*50}\n\n"
-end
-
-if rspec_gem_dir
- $LOAD_PATH.unshift("#{rspec_gem_dir}/lib")
-elsif File.exist?(rspec_plugin_dir)
- $LOAD_PATH.unshift("#{rspec_plugin_dir}/lib")
-end
-
-# Don't load rspec if running "rake gems:*"
-unless ARGV.any? {|a| a =~ /^gems/}
-
-begin
- require 'spec/rake/spectask'
-rescue MissingSourceFile
- module Spec
- module Rake
- class SpecTask
- def initialize(name)
- task name do
- # if rspec-rails is a configured gem, this will output helpful material and exit ...
- require File.expand_path(File.join(File.dirname(__FILE__),"..","..","config","environment"))
-
- # ... otherwise, do this:
- raise <<-MSG
-
-#{"*" * 80}
-* You are trying to run an rspec rake task defined in
-* #{__FILE__},
-* but rspec can not be found in vendor/gems, vendor/plugins or system gems.
-#{"*" * 80}
-MSG
- end
- end
- end
- end
- end
-end
-
-Rake.application.instance_variable_get('@tasks').delete('default')
-
-spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop
-task :noop do
-end
-
-task :default => :spec
-task :stats => "spec:statsetup"
-
-desc "Run all specs in spec directory (excluding plugin specs)"
-Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
- t.spec_files = FileList['spec/**/*_spec.rb']
-end
-
-namespace :spec do
- desc "Run all specs in spec directory with RCov (excluding plugin specs)"
- Spec::Rake::SpecTask.new(:rcov) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
- t.spec_files = FileList['spec/**/*_spec.rb']
- t.rcov = true
- t.rcov_opts = lambda do
- IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
- end
- end
-
- desc "Print Specdoc for all specs (excluding plugin specs)"
- Spec::Rake::SpecTask.new(:doc) do |t|
- t.spec_opts = ["--format", "specdoc", "--dry-run"]
- t.spec_files = FileList['spec/**/*_spec.rb']
- end
-
- desc "Print Specdoc for all plugin examples"
- Spec::Rake::SpecTask.new(:plugin_doc) do |t|
- t.spec_opts = ["--format", "specdoc", "--dry-run"]
- t.spec_files = FileList['vendor/plugins/**/spec/**/*_spec.rb'].exclude('vendor/plugins/rspec/*')
- end
-
- [:models, :controllers, :views, :helpers, :lib, :integration].each do |sub|
- desc "Run the code examples in spec/#{sub}"
- Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
- t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
- end
- end
-
- desc "Run the code examples in vendor/plugins (except RSpec's own)"
- Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
- t.spec_files = FileList['vendor/plugins/**/spec/**/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*")
- end
-
- namespace :plugins do
- desc "Runs the examples for rspec_on_rails"
- Spec::Rake::SpecTask.new(:rspec_on_rails) do |t|
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
- t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*_spec.rb']
- end
- end
-
- # Setup specs for stats
- task :statsetup do
- require 'code_statistics'
- ::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models')
- ::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views')
- ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers')
- ::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers')
- ::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib')
- ::STATS_DIRECTORIES << %w(Routing\ specs spec/routing) if File.exist?('spec/routing')
- ::STATS_DIRECTORIES << %w(Integration\ specs spec/integration) if File.exist?('spec/integration')
- ::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models')
- ::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views')
- ::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers')
- ::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers')
- ::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib')
- ::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing')
- ::CodeStatistics::TEST_TYPES << "Integration specs" if File.exist?('spec/integration')
- end
-
- namespace :db do
- namespace :fixtures do
- desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z."
- task :load => :environment do
- ActiveRecord::Base.establish_connection(Rails.env)
- base_dir = File.join(Rails.root, 'spec', 'fixtures')
- fixtures_dir = ENV['FIXTURES_DIR'] ? File.join(base_dir, ENV['FIXTURES_DIR']) : base_dir
-
- require 'active_record/fixtures'
- (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/).map {|f| File.join(fixtures_dir, f) } : Dir.glob(File.join(fixtures_dir, '*.{yml,csv}'))).each do |fixture_file|
- Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*'))
- end
- end
- end
- end
-end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/script/autospec b/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/script/autospec
deleted file mode 100644
index 837bbd7f4..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/script/autospec
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env ruby
-gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9
-ENV['RSPEC'] = 'true' # allows autotest to discover rspec
-ENV['AUTOTEST'] = 'true' # allows autotest to run w/ color on linux
-system((RUBY_PLATFORM =~ /mswin|mingw/ ? 'autotest.bat' : 'autotest'), *ARGV) ||
- $stderr.puts("Unable to find autotest. Please install ZenTest or fix your PATH")
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/script/spec b/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/script/spec
deleted file mode 100644
index 46fdbe6e4..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/script/spec
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-if ARGV.any? {|arg| %w[--drb -X --generate-options -G --help -h --version -v].include?(arg)}
- require 'rubygems' unless ENV['NO_RUBYGEMS']
-else
- gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9
- ENV["RAILS_ENV"] ||= 'test'
- require File.expand_path(File.dirname(__FILE__) + "/../config/environment") unless defined?(RAILS_ROOT)
-end
-require 'spec/autorun'
-exit ::Spec::Runner::CommandLine.run
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/spec.opts b/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/spec.opts
deleted file mode 100644
index 391705bf8..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/spec.opts
+++ /dev/null
@@ -1,4 +0,0 @@
---colour
---format progress
---loadby mtime
---reverse
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/spec_helper.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/spec_helper.rb
deleted file mode 100644
index 1f72de02d..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec/templates/spec_helper.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# This file is copied to ~/spec when you run 'ruby script/generate rspec'
-# from the project root directory.
-ENV["RAILS_ENV"] ||= 'test'
-require File.expand_path(File.join(File.dirname(__FILE__),'..','config','environment'))
-require 'spec/autorun'
-require 'spec/rails'
-
-# Uncomment the next line to use webrat's matchers
-#require 'webrat/integrations/rspec-rails'
-
-# Requires supporting files with custom matchers and macros, etc,
-# in ./support/ and its subdirectories.
-Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
-
-Spec::Runner.configure do |config|
- # If you're not using ActiveRecord you should remove these
- # lines, delete config/database.yml and disable :active_record
- # in your config/boot.rb
- config.use_transactional_fixtures = true
- config.use_instantiated_fixtures = false
- config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
-
- # == Fixtures
- #
- # You can declare fixtures for each example_group like this:
- # describe "...." do
- # fixtures :table_a, :table_b
- #
- # Alternatively, if you prefer to declare them only once, you can
- # do so right here. Just uncomment the next line and replace the fixture
- # names with your fixtures.
- #
- # config.global_fixtures = :table_a, :table_b
- #
- # If you declare global fixtures, be aware that they will be declared
- # for all of your examples, even those that don't use them.
- #
- # You can also declare which fixtures to use (for example fixtures for test/fixtures):
- #
- # config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
- #
- # == Mock Framework
- #
- # RSpec uses its own mocking framework by default. If you prefer to
- # use mocha, flexmock or RR, uncomment the appropriate line:
- #
- # config.mock_with :mocha
- # config.mock_with :flexmock
- # config.mock_with :rr
- #
- # == Notes
- #
- # For more information take a look at Spec::Runner::Configuration and Spec::Runner
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/USAGE b/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/USAGE
deleted file mode 100755
index 1546c325d..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/USAGE
+++ /dev/null
@@ -1,33 +0,0 @@
-Description:
- The rspec_controller generator creates stub specs and files for a new
- controller and its views.
-
- The generator takes a controller name and a list of views as arguments.
- The controller name may be given in CamelCase or under_score and should
- not be suffixed with 'Controller'. To create a controller within a
- module, specify the controller name as 'module/controller'.
-
- The generator creates stubs for a controller (and spec), a view (and spec)
- for each view in the argument list, plus a helper.
-
-Example:
- ./script/generate rspec_controller dog bark fetch
- ...
- create spec/controllers/dog_controller_spec.rb
- create app/controllers/dog_controller.rb
- create app/helpers/dog_helper.rb
- create spec/views/dog/bark_view_spec.rb
- create app/views/dog/bark.rhtml
- create spec/views/dog/fetch_view_spec.rb
- create app/views/dog/fetch.rhtml
-
-Modules Example:
- ./script/generate rspec_controller 'pets/dog' bark fetch
- ...
- create spec/controllers/pets/dog_controller_spec.rb
- create app/controllers/pets/dog_controller.rb
- create app/helpers/pets/dog_helper.rb
- create spec/views/pets/dog/bark_view_spec.rb
- create app/views/pets/dog/bark.rhtml
- create spec/views/pets/dog/fetch_view_spec.rb
- create app/views/pets/dog/fetch.rhtml
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/rspec_controller_generator.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/rspec_controller_generator.rb
deleted file mode 100755
index 0064986d2..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/rspec_controller_generator.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'rails_generator/generators/components/controller/controller_generator'
-
-class RspecControllerGenerator < ControllerGenerator
-
- def manifest
- record do |m|
- # Check for class naming collisions.
- m.class_collisions class_path, "#{class_name}Controller", "#{class_name}Helper"
-
- # Controller, helper, views, and spec directories.
- m.directory File.join('app/controllers', class_path)
- m.directory File.join('app/helpers', class_path)
- m.directory File.join('app/views', class_path, file_name)
- m.directory File.join('spec/controllers', class_path)
- m.directory File.join('spec/helpers', class_path)
- m.directory File.join('spec/views', class_path, file_name)
-
- @default_file_extension = "html.erb"
-
- # Controller spec, class, and helper.
- m.template 'controller_spec.rb',
- File.join('spec/controllers', class_path, "#{file_name}_controller_spec.rb")
-
- m.template 'helper_spec.rb',
- File.join('spec/helpers', class_path, "#{file_name}_helper_spec.rb")
-
- m.template 'controller:controller.rb',
- File.join('app/controllers', class_path, "#{file_name}_controller.rb")
-
- m.template 'controller:helper.rb',
- File.join('app/helpers', class_path, "#{file_name}_helper.rb")
-
-
-
- # Spec and view template for each action.
- actions.each do |action|
- m.template 'view_spec.rb',
- File.join('spec/views', class_path, file_name, "#{action}.#{@default_file_extension}_spec.rb"),
- :assigns => { :action => action, :model => file_name }
- path = File.join('app/views', class_path, file_name, "#{action}.#{@default_file_extension}")
- m.template "controller:view.#{@default_file_extension}",
- path,
- :assigns => { :action => action, :path => path }
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/controller_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/controller_spec.rb
deleted file mode 100755
index 9d13c49c6..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/controller_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'spec_helper'
-
-describe <%= class_name %>Controller do
-
-<% if actions.empty? -%>
- #Delete this example and add some real ones
-<% else -%>
- #Delete these examples and add some real ones
-<% end -%>
- it "should use <%= class_name %>Controller" do
- controller.should be_an_instance_of(<%= class_name %>Controller)
- end
-
-<% unless actions.empty? -%>
-<% for action in actions -%>
-
- describe "GET '<%= action %>'" do
- it "should be successful" do
- get '<%= action %>'
- response.should be_success
- end
- end
-<% end -%>
-<% end -%>
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/helper_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/helper_spec.rb
deleted file mode 100644
index ffdfd14f2..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/helper_spec.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'spec_helper'
-
-describe <%= class_name %>Helper do
-
- #Delete this example and add some real ones or delete this file
- it "should be included in the object returned by #helper" do
- included_modules = (class << helper; self; end).send :included_modules
- included_modules.should include(<%= class_name %>Helper)
- end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/view_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/view_spec.rb
deleted file mode 100644
index 31469c606..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_controller/templates/view_spec.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-require 'spec_helper'
-
-describe "/<%= class_name.underscore %>/<%= action %>" do
- before(:each) do
- render '<%= class_name.underscore %>/<%= action %>'
- end
-
- #Delete this example and add some real ones or delete this file
- it "should tell you where to find the file" do
- response.should have_tag('p', %r[Find me in app/views/<%= class_name.underscore %>/<%= action %>])
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_default_values.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_default_values.rb
deleted file mode 100644
index 162681a36..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_default_values.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-module Rails
- module Generator
- class GeneratedAttribute
- def default_value
- @default_value ||= case type
- when :int, :integer then "1"
- when :float then "1.5"
- when :decimal then "9.99"
- when :datetime, :timestamp, :time then "Time.now"
- when :date then "Date.today"
- when :string, :text then "\"value for #{@name}\""
- when :boolean then "false"
- when :belongs_to, :references then "1"
- else
- ""
- end
- end
-
- def name_or_reference
- if ::Rails::VERSION::STRING >= '2.2'
- reference? ? :"#{name}_id" : name
- else
- name
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/USAGE b/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/USAGE
deleted file mode 100755
index a7b781414..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/USAGE
+++ /dev/null
@@ -1,18 +0,0 @@
-Description:
- The rspec_model generator creates stubs for a new model.
-
- The generator takes a model name as its argument. The model name may be
- given in CamelCase or under_score and should not be suffixed with 'Model'.
-
- The generator creates a model class in app/models, an RSpec spec in
- spec/models, database fixtures in spec/fixtures/plural_name.yml, and a migration
- in db/migrate.
-
-Example:
- ./script/generate rspec_model Account
-
- This will create an Account model:
- Model: app/models/account.rb
- Spec: spec/models/account_spec.rb
- Fixtures: spec/fixtures/accounts.yml
- Migration: db/migrate/XXX_add_accounts.rb
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/rspec_model_generator.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/rspec_model_generator.rb
deleted file mode 100755
index 66e873e31..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/rspec_model_generator.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'rails_generator/generators/components/model/model_generator'
-require File.dirname(__FILE__) + '/../rspec_default_values'
-
-class RspecModelGenerator < ModelGenerator
-
- def manifest
-
- record do |m|
- # Check for class naming collisions.
- m.class_collisions class_path, class_name
-
- # Model, spec, and fixture directories.
- m.directory File.join('app/models', class_path)
- m.directory File.join('spec/models', class_path)
- unless options[:skip_fixture]
- m.directory File.join('spec/fixtures', class_path)
- end
-
- # Model class, spec and fixtures.
- m.template 'model:model.rb', File.join('app/models', class_path, "#{file_name}.rb")
- m.template 'model_spec.rb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
- unless options[:skip_fixture]
- m.template 'model:fixtures.yml', File.join('spec/fixtures', "#{table_name}.yml")
- end
-
- unless options[:skip_migration]
- m.migration_template 'model:migration.rb', 'db/migrate', :assigns => {
- :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
- }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
- end
-
- end
- end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/templates/model_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/templates/model_spec.rb
deleted file mode 100755
index c7cb1ce78..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_model/templates/model_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'spec_helper'
-
-describe <%= class_name %> do
- before(:each) do
- @valid_attributes = {
- <%= attributes.map{|a| ":#{a.name_or_reference} => #{a.default_value}" }.join(",\n ") %>
- }
- end
-
- it "should create a new instance given valid attributes" do
- <%= class_name %>.create!(@valid_attributes)
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/rspec_scaffold_generator.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/rspec_scaffold_generator.rb
deleted file mode 100644
index 0761c0031..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/rspec_scaffold_generator.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require File.dirname(__FILE__) + '/../rspec_default_values'
-
-class RspecScaffoldGenerator < Rails::Generator::NamedBase
- default_options :skip_migration => false
-
- attr_reader :controller_name,
- :controller_class_path,
- :controller_file_path,
- :controller_class_nesting,
- :controller_class_nesting_depth,
- :controller_class_name,
- :controller_singular_name,
- :controller_plural_name,
- :resource_edit_path,
- :default_file_extension
- alias_method :controller_file_name, :controller_singular_name
- alias_method :controller_table_name, :controller_plural_name
-
- def initialize(runtime_args, runtime_options = {})
- super
-
- @controller_name = @name.pluralize
-
- base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
- @controller_class_name_without_nesting, @controller_singular_name, @controller_plural_name = inflect_names(base_name)
-
- if @controller_class_nesting.empty?
- @controller_class_name = @controller_class_name_without_nesting
- else
- @controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
- end
-
- @default_file_extension = "html.erb"
- end
-
- def manifest
- record do |m|
-
- # Check for class naming collisions.
- m.class_collisions(controller_class_path, "#{controller_class_name}Controller", "#{controller_class_name}Helper")
- m.class_collisions(class_path, "#{class_name}")
-
- # Controller, helper, views, and spec directories.
- m.directory(File.join('app/models', class_path))
- m.directory(File.join('app/controllers', controller_class_path))
- m.directory(File.join('app/helpers', controller_class_path))
- m.directory(File.join('app/views', controller_class_path, controller_file_name))
- m.directory(File.join('app/views/layouts', controller_class_path))
- m.directory(File.join('public/stylesheets', class_path))
-
- m.directory(File.join('spec/controllers', controller_class_path))
- m.directory(File.join('spec/routing', controller_class_path))
- m.directory(File.join('spec/models', class_path))
- m.directory(File.join('spec/helpers', class_path))
- m.directory File.join('spec/fixtures', class_path)
- m.directory File.join('spec/views', controller_class_path, controller_file_name)
- m.directory File.join('spec/integration', class_path)
-
- # Layout and stylesheet.
- m.template("scaffold:layout.html.erb", File.join('app/views/layouts', controller_class_path, "#{controller_file_name}.html.erb"))
- m.template("scaffold:style.css", 'public/stylesheets/scaffold.css')
-
- # Controller spec, class, and helper.
- m.template 'rspec_scaffold:routing_spec.rb',
- File.join('spec/routing', controller_class_path, "#{controller_file_name}_routing_spec.rb")
-
- m.template 'rspec_scaffold:controller_spec.rb',
- File.join('spec/controllers', controller_class_path, "#{controller_file_name}_controller_spec.rb")
-
- m.template "scaffold:controller.rb",
- File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb")
-
- m.template 'rspec_scaffold:helper_spec.rb',
- File.join('spec/helpers', class_path, "#{controller_file_name}_helper_spec.rb")
-
- m.template "scaffold:helper.rb",
- File.join('app/helpers', controller_class_path, "#{controller_file_name}_helper.rb")
-
- for action in scaffold_views
- m.template(
- "scaffold:view_#{action}.#{@default_file_extension}",
- File.join('app/views', controller_class_path, controller_file_name, "#{action}.#{default_file_extension}")
- )
- end
-
- # Model class, unit test, and fixtures.
- m.template 'model:model.rb', File.join('app/models', class_path, "#{file_name}.rb")
- m.template 'model:fixtures.yml', File.join('spec/fixtures', class_path, "#{table_name}.yml")
- m.template 'rspec_model:model_spec.rb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
-
- # View specs
- m.template "rspec_scaffold:edit_erb_spec.rb",
- File.join('spec/views', controller_class_path, controller_file_name, "edit.#{default_file_extension}_spec.rb")
- m.template "rspec_scaffold:index_erb_spec.rb",
- File.join('spec/views', controller_class_path, controller_file_name, "index.#{default_file_extension}_spec.rb")
- m.template "rspec_scaffold:new_erb_spec.rb",
- File.join('spec/views', controller_class_path, controller_file_name, "new.#{default_file_extension}_spec.rb")
- m.template "rspec_scaffold:show_erb_spec.rb",
- File.join('spec/views', controller_class_path, controller_file_name, "show.#{default_file_extension}_spec.rb")
-
- # Integration
- m.template 'integration_spec:integration_spec.rb', File.join('spec/integration', class_path, "#{table_name}_spec.rb")
-
- unless options[:skip_migration]
- m.migration_template(
- 'model:migration.rb', 'db/migrate',
- :assigns => {
- :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}",
- :attributes => attributes
- },
- :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
- )
- end
-
- m.route_resources controller_file_name
-
- end
- end
-
- protected
- # Override with your own usage banner.
- def banner
- "Usage: #{$0} rspec_scaffold ModelName [field:type field:type]"
- end
-
- def add_options!(opt)
- opt.separator ''
- opt.separator 'Options:'
- opt.on("--skip-migration",
- "Don't generate a migration file for this model") { |v| options[:skip_migration] = v }
- end
-
- def scaffold_views
- %w[ index show new edit ]
- end
-
- def model_name
- class_name.demodulize
- end
-end
-
-module Rails
- module Generator
- class GeneratedAttribute
- def input_type
- @input_type ||= case type
- when :text then "textarea"
- else
- "input"
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/controller_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/controller_spec.rb
deleted file mode 100755
index d80779912..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/controller_spec.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-require 'spec_helper'
-
-describe <%= controller_class_name %>Controller do
-
- def mock_<%= file_name %>(stubs={})
- @mock_<%= file_name %> ||= mock_model(<%= class_name %>, stubs)
- end
-
- describe "GET index" do
- it "assigns all <%= table_name.pluralize %> as @<%= table_name.pluralize %>" do
- <%= class_name %>.stub(:find).with(:all).and_return([mock_<%= file_name %>])
- get :index
- assigns[:<%= table_name %>].should == [mock_<%= file_name %>]
- end
- end
-
- describe "GET show" do
- it "assigns the requested <%= file_name %> as @<%= file_name %>" do
- <%= class_name %>.stub(:find).with("37").and_return(mock_<%= file_name %>)
- get :show, :id => "37"
- assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
- end
- end
-
- describe "GET new" do
- it "assigns a new <%= file_name %> as @<%= file_name %>" do
- <%= class_name %>.stub(:new).and_return(mock_<%= file_name %>)
- get :new
- assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
- end
- end
-
- describe "GET edit" do
- it "assigns the requested <%= file_name %> as @<%= file_name %>" do
- <%= class_name %>.stub(:find).with("37").and_return(mock_<%= file_name %>)
- get :edit, :id => "37"
- assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
- end
- end
-
- describe "POST create" do
-
- describe "with valid params" do
- it "assigns a newly created <%= file_name %> as @<%= file_name %>" do
- <%= class_name %>.stub(:new).with({'these' => 'params'}).and_return(mock_<%= file_name %>(:save => true))
- post :create, :<%= file_name %> => {:these => 'params'}
- assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
- end
-
- it "redirects to the created <%= file_name %>" do
- <%= class_name %>.stub(:new).and_return(mock_<%= file_name %>(:save => true))
- post :create, :<%= file_name %> => {}
- response.should redirect_to(<%= table_name.singularize %>_url(mock_<%= file_name %>))
- end
- end
-
- describe "with invalid params" do
- it "assigns a newly created but unsaved <%= file_name %> as @<%= file_name %>" do
- <%= class_name %>.stub(:new).with({'these' => 'params'}).and_return(mock_<%= file_name %>(:save => false))
- post :create, :<%= file_name %> => {:these => 'params'}
- assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
- end
-
- it "re-renders the 'new' template" do
- <%= class_name %>.stub(:new).and_return(mock_<%= file_name %>(:save => false))
- post :create, :<%= file_name %> => {}
- response.should render_template('new')
- end
- end
-
- end
-
- describe "PUT update" do
-
- describe "with valid params" do
- it "updates the requested <%= file_name %>" do
- <%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
- mock_<%= file_name %>.should_receive(:update_attributes).with({'these' => 'params'})
- put :update, :id => "37", :<%= file_name %> => {:these => 'params'}
- end
-
- it "assigns the requested <%= file_name %> as @<%= file_name %>" do
- <%= class_name %>.stub(:find).and_return(mock_<%= file_name %>(:update_attributes => true))
- put :update, :id => "1"
- assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
- end
-
- it "redirects to the <%= file_name %>" do
- <%= class_name %>.stub(:find).and_return(mock_<%= file_name %>(:update_attributes => true))
- put :update, :id => "1"
- response.should redirect_to(<%= table_name.singularize %>_url(mock_<%= file_name %>))
- end
- end
-
- describe "with invalid params" do
- it "updates the requested <%= file_name %>" do
- <%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
- mock_<%= file_name %>.should_receive(:update_attributes).with({'these' => 'params'})
- put :update, :id => "37", :<%= file_name %> => {:these => 'params'}
- end
-
- it "assigns the <%= file_name %> as @<%= file_name %>" do
- <%= class_name %>.stub(:find).and_return(mock_<%= file_name %>(:update_attributes => false))
- put :update, :id => "1"
- assigns[:<%= file_name %>].should equal(mock_<%= file_name %>)
- end
-
- it "re-renders the 'edit' template" do
- <%= class_name %>.stub(:find).and_return(mock_<%= file_name %>(:update_attributes => false))
- put :update, :id => "1"
- response.should render_template('edit')
- end
- end
-
- end
-
- describe "DELETE destroy" do
- it "destroys the requested <%= file_name %>" do
- <%= class_name %>.should_receive(:find).with("37").and_return(mock_<%= file_name %>)
- mock_<%= file_name %>.should_receive(:destroy)
- delete :destroy, :id => "37"
- end
-
- it "redirects to the <%= table_name %> list" do
- <%= class_name %>.stub(:find).and_return(mock_<%= file_name %>(:destroy => true))
- delete :destroy, :id => "1"
- response.should redirect_to(<%= table_name %>_url)
- end
- end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/edit_erb_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/edit_erb_spec.rb
deleted file mode 100644
index 4f9a7911c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/edit_erb_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'spec_helper'
-
-<% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
-describe "/<%= table_name %>/edit.<%= default_file_extension %>" do
- include <%= controller_class_name %>Helper
-
- before(:each) do
- assigns[:<%= file_name %>] = @<%= file_name %> = stub_model(<%= class_name %>,
- :new_record? => false<%= output_attributes.empty? ? '' : ',' %>
-<% output_attributes.each_with_index do |attribute, attribute_index| -%>
- :<%= attribute.name %> => <%= attribute.default_value %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
-<% end -%>
- )
- end
-
- it "renders the edit <%= file_name %> form" do
- render
-
- response.should have_tag("form[action=#{<%= file_name %>_path(@<%= file_name %>)}][method=post]") do
-<% for attribute in output_attributes -%>
- with_tag('<%= attribute.input_type -%>#<%= file_name %>_<%= attribute.name %>[name=?]', "<%= file_name %>[<%= attribute.name %>]")
-<% end -%>
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/helper_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/helper_spec.rb
deleted file mode 100644
index ad657cf05..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/helper_spec.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'spec_helper'
-
-describe <%= controller_class_name %>Helper do
-
- #Delete this example and add some real ones or delete this file
- it "is included in the helper object" do
- included_modules = (class << helper; self; end).send :included_modules
- included_modules.should include(<%= controller_class_name %>Helper)
- end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/index_erb_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/index_erb_spec.rb
deleted file mode 100644
index 5aa33d5b2..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/index_erb_spec.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-require 'spec_helper'
-
-<% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
-describe "/<%= table_name %>/index.<%= default_file_extension %>" do
- include <%= controller_class_name %>Helper
-
- before(:each) do
- assigns[:<%= table_name %>] = [
-<% [1,2].each_with_index do |id, model_index| -%>
- stub_model(<%= class_name %><%= output_attributes.empty? ? (model_index == 1 ? ')' : '),') : ',' %>
-<% output_attributes.each_with_index do |attribute, attribute_index| -%>
- :<%= attribute.name %> => <%= attribute.default_value %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
-<% end -%>
-<% if !output_attributes.empty? -%>
- <%= model_index == 1 ? ')' : '),' %>
-<% end -%>
-<% end -%>
- ]
- end
-
- it "renders a list of <%= table_name %>" do
- render
-<% for attribute in output_attributes -%>
- response.should have_tag("tr>td", <%= attribute.default_value %>.to_s, 2)
-<% end -%>
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/new_erb_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/new_erb_spec.rb
deleted file mode 100644
index 29f08e558..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/new_erb_spec.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'spec_helper'
-
-<% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
-describe "/<%= table_name %>/new.<%= default_file_extension %>" do
- include <%= controller_class_name %>Helper
-
- before(:each) do
- assigns[:<%= file_name %>] = stub_model(<%= class_name %>,
- :new_record? => true<%= output_attributes.empty? ? '' : ',' %>
-<% output_attributes.each_with_index do |attribute, attribute_index| -%>
- :<%= attribute.name %> => <%= attribute.default_value %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
-<% end -%>
- )
- end
-
- it "renders new <%= file_name %> form" do
- render
-
- response.should have_tag("form[action=?][method=post]", <%= table_name %>_path) do
-<% for attribute in output_attributes -%>
- with_tag("<%= attribute.input_type -%>#<%= file_name %>_<%= attribute.name %>[name=?]", "<%= file_name %>[<%= attribute.name %>]")
-<% end -%>
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/routing_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/routing_spec.rb
deleted file mode 100644
index ad4731aee..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/routing_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec_helper'
-
-describe <%= controller_class_name %>Controller do
- describe "routing" do
- it "recognizes and generates #index" do
- { :get => "/<%= table_name %>" }.should route_to(:controller => "<%= table_name %>", :action => "index")
- end
-
- it "recognizes and generates #new" do
- { :get => "/<%= table_name %>/new" }.should route_to(:controller => "<%= table_name %>", :action => "new")
- end
-
- it "recognizes and generates #show" do
- { :get => "/<%= table_name %>/1" }.should route_to(:controller => "<%= table_name %>", :action => "show", :id => "1")
- end
-
- it "recognizes and generates #edit" do
- { :get => "/<%= table_name %>/1/edit" }.should route_to(:controller => "<%= table_name %>", :action => "edit", :id => "1")
- end
-
- it "recognizes and generates #create" do
- { :post => "/<%= table_name %>" }.should route_to(:controller => "<%= table_name %>", :action => "create")
- end
-
- it "recognizes and generates #update" do
- { :put => "/<%= table_name %>/1" }.should route_to(:controller => "<%= table_name %>", :action => "update", :id => "1")
- end
-
- it "recognizes and generates #destroy" do
- { :delete => "/<%= table_name %>/1" }.should route_to(:controller => "<%= table_name %>", :action => "destroy", :id => "1")
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/show_erb_spec.rb b/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/show_erb_spec.rb
deleted file mode 100644
index f2c11db89..000000000
--- a/vendor/gems/rspec-rails-1.3.3/generators/rspec_scaffold/templates/show_erb_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'spec_helper'
-
-<% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
-describe "/<%= table_name %>/show.<%= default_file_extension %>" do
- include <%= controller_class_name %>Helper
- before(:each) do
- assigns[:<%= file_name %>] = @<%= file_name %> = stub_model(<%= class_name %><%= output_attributes.empty? ? ')' : ',' %>
-<% output_attributes.each_with_index do |attribute, attribute_index| -%>
- :<%= attribute.name %> => <%= attribute.default_value %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
-<% end -%>
-<% if !output_attributes.empty? -%>
- )
-<% end -%>
- end
-
- it "renders attributes in <p>" do
- render
-<% for attribute in output_attributes -%>
- response.should have_text(/<%= Regexp.escape(attribute.default_value).gsub(/^"|"$/, '')%>/)
-<% end -%>
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/init.rb b/vendor/gems/rspec-rails-1.3.3/init.rb
deleted file mode 100644
index 6262f0368..000000000
--- a/vendor/gems/rspec-rails-1.3.3/init.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# Placeholder to satisfy Rails.
-#
-# Do NOT add any require statements to this file. Doing
-# so will cause Rails to load this plugin all of the time.
-#
-# Running 'ruby script/generate rspec' will
-# generate spec/spec_helper.rb, which includes the necessary
-# require statements and configuration. This file should
-# be required by all of your spec files. \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/autotest/discover.rb b/vendor/gems/rspec-rails-1.3.3/lib/autotest/discover.rb
deleted file mode 100644
index d3a6fbaaf..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/autotest/discover.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-Autotest.add_discovery do
- style = []
- style << "rails" if File.exist? 'config/environment.rb'
- style
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/autotest/rails_rspec.rb b/vendor/gems/rspec-rails-1.3.3/lib/autotest/rails_rspec.rb
deleted file mode 100644
index 2aa4f5f71..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/autotest/rails_rspec.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-# (c) Copyright 2006 Nick Sieger <nicksieger@gmail.com>
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation files
-# (the "Software"), to deal in the Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, sublicense, and/or sell copies of the Software,
-# and to permit persons to whom the Software is furnished to do so,
-# subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-$:.push(*Dir["vendor/rails/*/lib"])
-
-require 'active_support'
-require 'autotest/rspec'
-
-Autotest.add_hook :initialize do |at|
- %w{config/ coverage/ db/ doc/ log/ public/ script/ tmp/ vendor/rails vendor/plugins previous_failures.txt}.each do |exception|
- at.add_exception(exception)
- end
-
- at.clear_mappings
-
- at.add_mapping(%r%^(test|spec)/fixtures/(.*).yml$%) { |_, m|
- ["spec/models/#{m[2].singularize}_spec.rb"] + at.files_matching(%r%^spec\/views\/#{m[2]}/.*_spec\.rb$%)
- }
- at.add_mapping(%r%^spec/(models|controllers|routing|views|helpers|lib)/.*rb$%) { |filename, _|
- filename
- }
- at.add_mapping(%r%^app/models/(.*)\.rb$%) { |_, m|
- ["spec/models/#{m[1]}_spec.rb"]
- }
- at.add_mapping(%r%^app/views/(.*)$%) { |_, m|
- at.files_matching %r%^spec/views/#{m[1]}_spec.rb$%
- }
- at.add_mapping(%r%^app/controllers/(.*)\.rb$%) { |_, m|
- if m[1] == "application"
- at.files_matching %r%^spec/controllers/.*_spec\.rb$%
- else
- ["spec/controllers/#{m[1]}_spec.rb"]
- end
- }
- at.add_mapping(%r%^app/helpers/(.*)_helper\.rb$%) { |_, m|
- if m[1] == "application" then
- at.files_matching(%r%^spec/(views|helpers)/.*_spec\.rb$%)
- else
- ["spec/helpers/#{m[1]}_helper_spec.rb"] + at.files_matching(%r%^spec\/views\/#{m[1]}/.*_spec\.rb$%)
- end
- }
- at.add_mapping(%r%^config/routes\.rb$%) {
- at.files_matching %r%^spec/(controllers|routing|views|helpers)/.*_spec\.rb$%
- }
- at.add_mapping(%r%^config/database\.yml$%) { |_, m|
- at.files_matching %r%^spec/models/.*_spec\.rb$%
- }
- at.add_mapping(%r%^(spec/(spec_helper|shared/.*)|config/(boot|environment(s/test)?))\.rb$%) {
- at.files_matching %r%^spec/(models|controllers|routing|views|helpers)/.*_spec\.rb$%
- }
- at.add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
- ["spec/lib/#{m[1]}_spec.rb"]
- }
-end
-
-class Autotest::RailsRspec < Autotest::Rspec
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails.rb
deleted file mode 100644
index 2a20d70b5..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-begin
- require_dependency 'application_controller'
-rescue MissingSourceFile
- require_dependency 'application'
-end
-require 'rack/utils'
-
-require 'action_controller/test_process'
-require 'action_controller/integration'
-require 'active_support/test_case'
-require 'active_record/fixtures' if defined?(ActiveRecord::Base)
-
-require 'spec/test/unit'
-
-require 'spec/rails/matchers'
-require 'spec/rails/mocks'
-require 'spec/rails/example'
-require 'spec/rails/extensions'
-require 'spec/rails/interop/testcase'
-
-Spec::Example::ExampleGroupFactory.default(ActiveSupport::TestCase)
-
-if ActionView::Base.respond_to?(:cache_template_extensions)
- ActionView::Base.cache_template_extensions = false
-end
-
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example.rb
deleted file mode 100644
index cca44efe5..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-dir = File.dirname(__FILE__)
-
-require 'spec/rails/example/routing_helpers'
-require 'spec/rails/example/assigns_hash_proxy'
-require "spec/rails/example/render_observer"
-require "spec/rails/example/model_example_group"
-require "spec/rails/example/functional_example_group"
-require "spec/rails/example/controller_example_group"
-require "spec/rails/example/helper_example_group"
-require "spec/rails/example/view_example_group"
-require "spec/rails/example/routing_example_group"
-require "spec/rails/example/integration_example_group"
-require "spec/rails/example/cookies_proxy"
-
-module Spec
- module Rails
- # Spec::Rails::Example extends Spec::Example (RSpec's core Example module) to provide
- # Rails-specific contexts for describing Rails Models, Views, Controllers and Helpers.
- #
- # == Model Examples
- #
- # These are the equivalent of unit tests in Rails' built in testing. Ironically (for the traditional TDD'er) these are the only specs that we feel should actually interact with the database.
- #
- # See Spec::Rails::Example::ModelExampleGroup
- #
- # == Controller Examples
- #
- # These align somewhat with functional tests in rails, except that they do not actually render views (though you can force rendering of views if you prefer). Instead of setting expectations about what goes on a page, you set expectations about what templates get rendered.
- #
- # See Spec::Rails::Example::ControllerExampleGroup
- #
- # == View Examples
- #
- # This is the other half of Rails functional testing. View specs allow you to set up assigns and render
- # a template. By assigning mock model data, you can specify view behaviour with no dependency on a database
- # or your real models.
- #
- # See Spec::Rails::Example::ViewExampleGroup
- #
- # == Helper Examples
- #
- # These let you specify directly methods that live in your helpers.
- #
- # See Spec::Rails::Example::HelperExampleGroup
- module Example
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/assigns_hash_proxy.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/assigns_hash_proxy.rb
deleted file mode 100644
index f80743a15..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/assigns_hash_proxy.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-module Spec
- module Rails
- module Example
- class AssignsHashProxy #:nodoc:
- def initialize(example_group, &block)
- @target = block.call
- @example_group = example_group
- end
-
- def [](key)
- return false if false == assigns[key] || false == assigns[key.to_s]
- assigns[key] || assigns[key.to_s] || @target.instance_variable_get("@#{key}")
- end
-
- def []=(key, val)
- @target.instance_variable_set("@#{key}", val)
- end
-
- def delete(key)
- assigns.delete(key.to_s)
- @target.instance_variable_set("@#{key}", nil)
- end
-
- def each(&block)
- assigns.each &block
- end
-
- def has_key?(key)
- assigns.key?(key.to_s)
- end
-
- protected
- def assigns
- @example_group.orig_assigns
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/controller_example_group.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/controller_example_group.rb
deleted file mode 100644
index 4dcac0e2c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/controller_example_group.rb
+++ /dev/null
@@ -1,285 +0,0 @@
-module Spec
- module Rails
- module Example
- # Controller Examples live in $RAILS_ROOT/spec/controllers/.
- #
- # Controller Examples use Spec::Rails::Example::ControllerExampleGroup,
- # which supports running specs for Controllers in two modes, which
- # represent the tension between the more granular testing common in TDD
- # and the more high level testing built into rails. BDD sits somewhere
- # in between: we want to a balance between specs that are close enough
- # to the code to enable quick fault isolation and far enough away from
- # the code to enable refactoring with minimal changes to the existing
- # specs.
- #
- # == Isolation mode (default)
- #
- # No dependencies on views because none are ever rendered. The benefit
- # of this mode is that can spec the controller completely independent of
- # the view, allowing that responsibility to be handled later, or by
- # somebody else. Combined w/ separate view specs, this also provides
- # better fault isolation.
- #
- # == Integration mode
- #
- # To run in this mode, include the +integrate_views+ declaration
- # in your controller context:
- #
- # describe ThingController do
- # integrate_views
- # ...
- #
- # In this mode, controller specs are run in the same way that rails
- # functional tests run - one set of tests for both the controllers and
- # the views. The benefit of this approach is that you get wider coverage
- # from each spec. Experienced rails developers may find this an easier
- # approach to begin with, however we encourage you to explore using the
- # isolation mode and revel in its benefits.
- #
- # == Expecting Errors
- #
- # Rspec on Rails will raise errors that occur in controller actions and
- # are not rescued or handeled with rescue_from.
- #
- class ControllerExampleGroup < FunctionalExampleGroup
- class << self
-
- # Use integrate_views to instruct RSpec to render views in
- # your controller examples in Integration mode.
- #
- # describe ThingController do
- # integrate_views
- # ...
- #
- # See Spec::Rails::Example::ControllerExampleGroup for more
- # information about Integration and Isolation modes.
- def integrate_views(integrate_views = true)
- @integrate_views = integrate_views
- end
-
- def integrate_views? # :nodoc:
- @integrate_views
- end
-
- def inherited(klass) # :nodoc:
- klass.integrate_views(integrate_views?)
- klass.subject { controller }
- super
- end
-
- def set_description(*args) # :nodoc:
- super
- if described_class && described_class.ancestors.include?(ActionController::Base)
- controller_klass = if superclass.controller_class.ancestors.include?(ActionController::Base)
- superclass.controller_class
- else
- described_class
- end
- tests controller_klass
- end
- end
-
- # When you don't pass a controller to describe, like this:
- #
- # describe ThingsController do
- #
- # ... then you must provide a controller_name within the context of
- # your controller specs:
- #
- # describe "ThingController" do
- # controller_name :thing
- # ...
- def controller_name(name)
- tests "#{name}_controller".camelize.constantize
- end
- end
-
- before(:each) do
- # Some Rails apps explicitly disable ActionMailer in environment.rb
- if defined?(ActionMailer)
- @deliveries = []
- ActionMailer::Base.deliveries = @deliveries
- end
-
- unless @controller.class.ancestors.include?(ActionController::Base)
- Spec::Expectations.fail_with <<-MESSAGE
-Controller specs need to know what controller is being specified. You can
-indicate this by passing the controller to describe():
-
- describe MyController do
-
-or by declaring the controller's name
-
- describe "a MyController" do
- controller_name :my #invokes the MyController
-end
-MESSAGE
- end
- @controller.extend ControllerInstanceMethods
- @controller.integrate_views! if integrate_views?
- @controller.session = session
- end
-
- attr_reader :response, :request, :controller
-
- def integrate_views?
- @integrate_views || self.class.integrate_views?
- end
-
- # Bypasses any error rescues defined with rescue_from. Useful
- # in cases in which you want to specify errors coming out of
- # actions that might be caught by a rescue_from clause that is
- # specified separately.
- #
- # Note that this will override the effect of rescue_action_in_public
- def bypass_rescue
- if ::Rails::VERSION::STRING >= '2.2'
- def controller.rescue_action(exception)
- raise exception
- end
- else
- def controller.rescue_action_with_handler(exception)
- raise exception
- end
- end
- end
-
- protected
-
- def _assigns_hash_proxy
- @_assigns_hash_proxy ||= AssignsHashProxy.new(self) {@response.template}
- end
-
- private
-
- module TemplateIsolationExtensions
- def file_exists?(ignore); true; end
-
- def render_file(*args)
- @first_render ||= args[0] unless args[0] =~ /^layouts/
- end
-
- # Rails 2.2
- def _pick_template(*args)
- @_first_render ||= args[0] unless args[0] =~ /^layouts/
- PickedTemplate.new
- end
-
- def __action_exists?(params)
- controller.respond_to? params[:action]
- end
-
- def __template_exists?(args)
- self.view_paths.respond_to?(:find_template) ?
- self.view_paths.find_template(args[0][:file], template_format) :
- false
- end
-
- def render(*args)
- if ::Rails::VERSION::STRING >= "2.1"
- return super unless __action_exists?(params) || __template_exists?(args)
- end
- if file = args.last[:file].instance_eval{@template_path}
- record_render :file => file
- elsif args.last[:inline]
- super
- elsif @_rendered
- record_render(args[0])
- else
- super
- end
- end
-
- private
-
- def record_render(opts)
- return unless @_rendered
- @_rendered[:template] ||= opts[:file] if opts[:file]
- @_rendered[:partials][opts[:partial]] += 1 if opts[:partial]
- end
-
- # Returned by _pick_template when running controller examples in isolation mode.
- class PickedTemplate
- # Do nothing when running controller examples in isolation mode.
- def render_template(*ignore_args); end
- # Do nothing when running controller examples in isolation mode.
- def render_partial(*ignore_args); end
- end
- end
-
- module ControllerInstanceMethods # :nodoc:
- include Spec::Rails::Example::RenderObserver
-
- # === render(options = nil, extra_options={}, &block)
- #
- # This gets added to the controller's singleton meta class,
- # allowing Controller Examples to run in two modes, freely switching
- # from example group to example group.
- def render(options=nil, extra_options={}, &block)
- unless block_given?
- unless integrate_views?
- @template.extend TemplateIsolationExtensions
- end
- end
-
- if matching_message_expectation_exists(options)
- render_proxy.render(options, &block)
- @performed_render = true
- else
- if matching_stub_exists(options)
- @performed_render = true
- else
- if ::Rails::VERSION::STRING > '2.1'
- super(options, extra_options, &block)
- else
- super(options, &block)
- end
- end
- end
- end
-
- # Rails 2.3
- def default_template(action_name = self.action_name)
- if integrate_views?
- super
- else
- begin
- super
- rescue ActionView::MissingTemplate
- "#{self.class.name.sub(/Controller$/,'').underscore}/#{action_name}"
- end
- end
- end
-
- def response(&block)
- # NOTE - we're setting @update for the assert_select_spec - kinda weird, huh?
- @update = block
- super
- end
-
- def integrate_views!
- @integrate_views = true
- end
-
- private
-
- def integrate_views?
- @integrate_views
- end
-
- def matching_message_expectation_exists(options)
- render_proxy.__send__(:__mock_proxy).__send__(:find_matching_expectation, :render, options)
- end
-
- def matching_stub_exists(options)
- render_proxy.__send__(:__mock_proxy).__send__(:find_matching_method_stub, :render, options)
- end
-
- end
-
- Spec::Example::ExampleGroupFactory.register(:controller, self)
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/cookies_proxy.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/cookies_proxy.rb
deleted file mode 100644
index ffd57fb2f..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/cookies_proxy.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'action_controller/cookies'
-
-module Spec
- module Rails
- module Example
- class CookiesProxy
- def initialize(example)
- @example = example
- end
-
- def[]=(name, value)
- if ::Rails::VERSION::STRING >= '2.3'
- @example.request.cookies[name.to_s] = value
- else
- @example.request.cookies[name.to_s] = CGI::Cookie.new(name.to_s, value)
- end
- end
-
- def [](name)
- @example.response.cookies[name.to_s]
- end
-
- def delete(name)
- @example.response.cookies.delete(name.to_s)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/functional_example_group.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/functional_example_group.rb
deleted file mode 100644
index 68dbc6842..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/functional_example_group.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-require 'action_controller/test_case'
-
-module Spec
- module Rails
- module Example
- class FunctionalExampleGroup < ActionController::TestCase
- def setup
- # no-op to override AC::TC's setup w/ conflicts with the before(:each) below
- end
-
- attr_reader :request, :response
-
- # The params hash accessed within a view or helper. Use this before
- # rendering a view or calling a helper to provide data used by the
- # view or helper.
- #
- # == Examples
- # # in a view spec
- # params[:name] = "David"
- # render
- # response.should have_tag("div.name","David")
- #
- # # in a helper spec
- # params[:first_name] = "David"
- # params[:last_name] = "Chelimsky"
- # helper.full_name.should == "David Chelimsky"
- def params
- request.parameters
- end
-
- # Provides access to the flash hash. Use this after rendering a
- # view, calling a helper or calling a controller action.
- #
- # == Examples
- # post :create
- # flash[:notice].should == "Success!"
- def flash
- @controller.__send__ :flash
- end
-
- # Provides access to the session hash. Use this before or after
- # rendering a view, calling a helper or calling a controller action.
- def session
- request.session
- end
-
- # Overrides the <tt>cookies()</tt> method in
- # ActionController::TestResponseBehaviour, returning a proxy that
- # accesses the requests cookies when setting a cookie and the
- # responses cookies when reading one. This allows you to set and read
- # cookies in examples using the same API with which you set and read
- # them in controllers.
- #
- # == Examples (Rails 2.0 > 2.2)
- #
- # cookies[:user_id] = {:value => '1234', :expires => 1.minute.ago}
- # get :index
- # response.should be_redirect
- #
- # == Examples (Rails 2.3)
- #
- # Rails 2.3 changes the way cookies are made available to functional
- # tests (and therefore rspec controller specs), only making single
- # values available with no access to other aspects of the cookie. This
- # is backwards-incompatible, so you have to change your examples to
- # look like this:
- #
- # cookies[:foo] = 'bar'
- # get :index
- # cookies[:foo].should == 'bar'
- def cookies
- @cookies ||= Spec::Rails::Example::CookiesProxy.new(self)
- end
-
- alias_method :orig_assigns, :assigns
-
- # :call-seq:
- # assigns()
- #
- # Hash of instance variables to values that are made available to
- # views. == Examples
- #
- # #in thing_controller.rb
- # def new
- # @thing = Thing.new
- # end
- #
- # #in thing_controller_spec
- # get 'new'
- # assigns[:registration].should == Thing.new
- #--
- # NOTE - Even though docs only use assigns[:key] format, this supports
- # assigns(:key) for backwards compatibility.
- #++
- def assigns(key = nil)
- if key.nil?
- _assigns_hash_proxy
- else
- _assigns_hash_proxy[key]
- end
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/helper_example_group.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/helper_example_group.rb
deleted file mode 100644
index 476f37c47..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/helper_example_group.rb
+++ /dev/null
@@ -1,153 +0,0 @@
-module Spec
- module Rails
- module Example
- class HelperExampleGroupController < ApplicationController #:nodoc:
- attr_accessor :request, :url
- end
-
- # Helper Specs live in $RAILS_ROOT/spec/helpers/.
- #
- # Helper Specs use Spec::Rails::Example::HelperExampleGroup, which allows you to
- # include your Helper directly in the context and write specs directly
- # against its methods.
- #
- # HelperExampleGroup also includes the standard lot of ActionView::Helpers in case your
- # helpers rely on any of those.
- #
- # == Example
- #
- # module ThingHelper
- # def number_of_things
- # Thing.count
- # end
- # end
- #
- # describe "ThingHelper example_group" do
- # include ThingHelper
- # it "should tell you the number of things" do
- # Thing.should_receive(:count).and_return(37)
- # number_of_things.should == 37
- # end
- # end
- class HelperExampleGroup < FunctionalExampleGroup
- tests HelperExampleGroupController
- attr_accessor :output_buffer
-
- class HelperObject < ActionView::Base
- def initialize(*args)
- @template = self
- super
- end
- def protect_against_forgery?
- false
- end
-
- attr_writer :session, :request, :flash, :params, :controller
-
- private
- attr_reader :session, :request, :flash, :params, :controller
- end
-
- class << self
- # The helper name....
- def helper_name(name=nil)
- @helper_being_described = "#{name}_helper".camelize.constantize
- send :include, @helper_being_described
- end
-
- def helper
- HelperObject.new.tap do |helper_object|
- if @helper_being_described.nil?
- if described_type.class == Module
- helper_object.extend described_type
- end
- else
- helper_object.extend @helper_being_described
- end
- end
- end
- end
-
- # Returns an instance of ActionView::Base with the helper being spec'd
- # included.
- #
- # == Example
- #
- # describe PersonHelper do
- # it "should write a link to person with the name" do
- # assigns[:person] = mock_model(Person, :full_name => "Full Name", :id => 37, :new_record? => false)
- # helper.link_to_person.should == %{<a href="/people/37">Full Name</a>}
- # end
- # end
- #
- # module PersonHelper
- # def link_to_person
- # link_to person.full_name, url_for(person)
- # end
- # end
- #
- def helper
- @helper ||= self.class.helper
- end
-
- def orig_assigns
- helper.assigns
- end
-
- # Reverse the load order so that custom helpers which are defined last
- # are also loaded last.
- ActionView::Base.included_modules.reverse.each do |mod|
- include mod if mod.parents.include?(ActionView::Helpers)
- end
-
- before(:each) do
- @controller.request = @request
- @controller.url = ActionController::UrlRewriter.new @request, {} # url_for
-
- @flash = ActionController::Flash::FlashHash.new
- session['flash'] = @flash
-
- @output_buffer = ""
- @template = helper
- ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
-
- helper.session = session
- helper.request = @request
- helper.flash = flash
- helper.params = params
- helper.controller = @controller
- end
-
- def flash
- @flash
- end
-
- def eval_erb(text)
- erb_args = [text]
- if helper.respond_to?(:output_buffer)
- erb_args += [nil, nil, '@output_buffer']
- end
-
- helper.instance_eval do
- ERB.new(*erb_args).result(binding)
- end
- end
-
- # TODO: BT - Helper Examples should proxy method_missing to a Rails View instance.
- # When that is done, remove this method
- def protect_against_forgery?
- false
- end
-
- Spec::Example::ExampleGroupFactory.register(:helper, self)
-
- protected
-
- def _assigns_hash_proxy
- @_assigns_hash_proxy ||= AssignsHashProxy.new(self) {helper}
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/integration_example_group.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/integration_example_group.rb
deleted file mode 100644
index 7143f05f6..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/integration_example_group.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-class ActionController::IntegrationTest
- alias_method :orig_initialize, :initialize
- def initialize(*args)
- super
- end
-end
-
-module Spec
- module Rails
- module Example
- class IntegrationExampleGroup < ActionController::IntegrationTest
- Spec::Example::ExampleGroupFactory.register(:integration, self)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/model_example_group.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/model_example_group.rb
deleted file mode 100644
index 768c6fa45..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/model_example_group.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Spec
- module Rails
- module Example
- # Model examples live in $RAILS_ROOT/spec/models/.
- #
- # Model examples use Spec::Rails::Example::ModelExampleGroup, which
- # provides support for fixtures and some custom expectations via extensions
- # to ActiveRecord::Base.
- base = defined?(ActiveRecord::TestCase) ? ActiveRecord::TestCase : ActiveSupport::TestCase
- class ModelExampleGroup < base
- Spec::Example::ExampleGroupFactory.register(:model, self)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/render_observer.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/render_observer.rb
deleted file mode 100644
index b70b3490e..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/render_observer.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require 'spec/mocks/framework'
-
-module Spec
- module Rails
- module Example
- # Extends the #should_receive, #should_not_receive and #stub! methods in rspec's
- # mocking framework to handle #render calls to controller in controller examples
- # and template and view examples
- module RenderObserver
-
- def verify_rendered # :nodoc:
- render_proxy.rspec_verify
- end
-
- def unregister_verify_after_each #:nodoc:
- proc = verify_rendered_proc
- Spec::Example::ExampleGroup.remove_after(:each, &proc)
- end
-
- def should_receive(*args)
- if args[0] == :render
- register_verify_after_each
- render_proxy.should_receive(:render, :expected_from => caller(1)[0])
- else
- super
- end
- end
-
- def should_not_receive(*args)
- if args[0] == :render
- register_verify_after_each
- render_proxy.should_not_receive(:render)
- else
- super
- end
- end
-
- def stub(*args)
- if args[0] == :render
- register_verify_after_each
- render_proxy.stub(args.first, :expected_from => caller(1)[0])
- else
- super
- end
- end
-
- # FIXME - for some reason, neither alias nor alias_method are working
- # as expected in the else branch, so this is a duplicate of stub()
- # above. Could delegate, but then we'd run into craziness handling
- # :expected_from. This will have to do for the moment.
- def stub!(*args)
- if args[0] == :render
- register_verify_after_each
- render_proxy.stub!(args.first, :expected_from => caller(1)[0])
- else
- super
- end
- end
-
- def verify_rendered_proc #:nodoc:
- template = self
- @verify_rendered_proc ||= Proc.new do
- template.verify_rendered
- template.unregister_verify_after_each
- end
- end
-
- def register_verify_after_each #:nodoc:
- proc = verify_rendered_proc
- Spec::Example::ExampleGroup.after(:each, &proc)
- end
-
- def render_proxy #:nodoc:
- @render_proxy ||= Spec::Mocks::Mock.new("render_proxy")
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/routing_example_group.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/routing_example_group.rb
deleted file mode 100644
index 84f91b7e5..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/routing_example_group.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module Spec
- module Rails
- module Example
-
- class RoutingExampleGroup < ActionController::TestCase
- class RoutingController < ActionController::Base
- end
-
- tests RoutingController
-
- Spec::Example::ExampleGroupFactory.register(:routing, self)
- end
-
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/routing_helpers.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/routing_helpers.rb
deleted file mode 100644
index 351f49540..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/routing_helpers.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-require 'rack/utils'
-
-module Spec
- module Rails
- module Example
- module RoutingHelpers
-
- class RouteFor
- def initialize(example, options)
- @example, @options = example, options
- end
-
- def ==(expected)
- if Hash === expected
- path, querystring = expected[:path].split('?')
- path_string = path
- path = expected.merge(:path => path)
- else
- path, querystring = expected.split('?')
- path_string = path
- path = { :path => path, :method => :get }
- end
- params = querystring.blank? ? {} : Rack::Utils.parse_query(querystring).symbolize_keys!
- begin
- @example.assert_routing(path, @options, {}, params)
- true
- rescue ActionController::RoutingError, ::Test::Unit::AssertionFailedError => e
- raise e.class, "#{e}\nIf you're expecting this failure, we suggest {:#{path[:method]}=>\"#{path[:path]}\"}.should_not be_routable"
- end
- end
- end
- # Uses ActionController::Routing::Routes to generate
- # the correct route for a given set of options.
- # == Examples
- # route_for(:controller => 'registrations', :action => 'edit', :id => '1')
- # => '/registrations/1/edit'
- # route_for(:controller => 'registrations', :action => 'create')
- # => {:path => "/registrations", :method => :post}
- def route_for(options)
- RouteFor.new(self, options)
- end
-
- # Uses ActionController::Routing::Routes to parse
- # an incoming path so the parameters it generates can be checked
- #
- # Note that this method is obsoleted by the route_to matcher.
- # == Example
- # params_from(:get, '/registrations/1/edit')
- # => :controller => 'registrations', :action => 'edit', :id => '1'
- def params_from(method, path)
- ensure_that_routes_are_loaded
- path, querystring = path.split('?')
- params = ActionController::Routing::Routes.recognize_path(path, :method => method)
- querystring.blank? ? params : params.merge(Rack::Utils.parse_query(querystring).symbolize_keys!)
- end
-
- private
-
- def ensure_that_routes_are_loaded
- ActionController::Routing::Routes.reload if ActionController::Routing::Routes.empty?
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/view_example_group.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/view_example_group.rb
deleted file mode 100644
index d97305ae0..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/example/view_example_group.rb
+++ /dev/null
@@ -1,203 +0,0 @@
-module Spec
- module Rails
- module Example
- class ViewExampleGroupController < ApplicationController #:nodoc:
- include Spec::Rails::Example::RenderObserver
- attr_reader :template
-
- def add_helper_for(template_path)
- add_helper(template_path.split('/')[0])
- end
-
- def add_helper(name)
- begin
- helper_module = "#{name}_helper".camelize.constantize
- rescue
- return
- end
- (class << template; self; end).class_eval do
- include helper_module
- end
- end
-
- def forget_variables_added_to_assigns
- end
- end
-
- # View Examples live in $RAILS_ROOT/spec/views/.
- #
- # View Specs use Spec::Rails::Example::ViewExampleGroup,
- # which provides access to views without invoking any of your controllers.
- # See Spec::Rails::Expectations::Matchers for information about specific
- # expectations that you can set on views.
- #
- # == Example
- #
- # describe "login/login" do
- # before do
- # render 'login/login'
- # end
- #
- # it "should display login form" do
- # response.should have_tag("form[action=/login]") do
- # with_tag("input[type=text][name=email]")
- # with_tag("input[type=password][name=password]")
- # with_tag("input[type=submit][value=Login]")
- # end
- # end
- # end
- class ViewExampleGroup < FunctionalExampleGroup
- if ActionView::Base.respond_to?(:load_helpers) # Rails 2.0.x
- ActionView::Helpers.constants.each do |name|
- const = ActionView::Helpers.const_get(name)
- include const if name.include?("Helper") && Module === const
- end
- elsif ActionView::Base.respond_to?(:helper_modules) # Rails 2.1.x
- ActionView::Base.helper_modules.each do |helper_module|
- include helper_module
- end
- else # Rails 2.2.x
- include ActionView::Helpers
- end
-
- tests ViewExampleGroupController
- class << self
- def inherited(klass) # :nodoc:
- klass.subject { template }
- super
- end
- end
-
- before {ensure_that_flash_and_session_work_properly}
- after {ensure_that_base_view_path_is_not_set_across_example_groups}
-
- def ensure_that_flash_and_session_work_properly #:nodoc:
- # For some reason which I do not yet understand, when running
- # examples with rake on ruby-1.9.2, the @controller is not defined.
- @controller ||= ViewExampleGroupController.new
-
- @controller.class.__send__ :public, :flash
- @controller.__send__ :initialize_template_class, @response
- @controller.__send__ :assign_shortcuts, @request, @response
- @controller.__send__ :initialize_current_url
- @session = @controller.session
- end
-
- def ensure_that_base_view_path_is_not_set_across_example_groups #:nodoc:
- ActionView::Base.base_view_path = nil
- end
-
- def set_base_view_path(options) #:nodoc:
- ActionView::Base.base_view_path = base_view_path(options)
- end
-
- def base_view_path(options) #:nodoc:
- "/#{derived_controller_name(options)}/"
- end
-
- def derived_controller_name(options) #:nodoc:
- parts = subject_of_render(options).split('/').reject { |part| part.empty? }
- "#{parts[0..-2].join('/')}"
- end
-
- def derived_action_name(options) #:nodoc:
- parts = subject_of_render(options).split('/').reject { |part| part.empty? }
- "#{parts.last}".split('.').first
- end
-
- def subject_of_render(options) #:nodoc:
- [:template, :partial, :file].each do |render_type|
- if options.has_key?(render_type)
- return options[render_type]
- end
- end
- return ""
- end
-
- def add_helpers(options) #:nodoc:
- @controller.add_helper("application")
- @controller.add_helper(derived_controller_name(options))
- @controller.add_helper(options[:helper]) if options[:helper]
- options[:helpers].each { |helper| @controller.add_helper(helper) } if options[:helpers]
- end
-
- # Renders a template for a View Spec, which then provides access to the result
- # through the +response+. Also supports render with :inline, which you can
- # use to spec custom form builders, helpers, etc, in the context of a view.
- #
- # == Examples
- #
- # render('/people/list')
- # render('/people/list', :helper => MyHelper)
- # render('/people/list', :helpers => [MyHelper, MyOtherHelper])
- # render(:partial => '/people/_address')
- # render(:inline => "<% custom_helper 'argument', 'another argument' %>")
- #
- # See Spec::Rails::Example::ViewExampleGroup for more information.
- def render(*args)
- options = Hash === args.last ? args.pop : {}
-
- if args.empty?
- unless [:partial, :inline, :file, :template, :xml, :json, :update].any? {|k| options.has_key? k}
- args << self.class.description_parts.first
- end
- end
-
- options[:template] = args.first.to_s.sub(/^\//,'') unless args.empty?
-
- set_base_view_path(options)
- add_helpers(options)
-
- assigns[:action_name] = @action_name
-
- @request.path_parameters = @request.path_parameters.merge(
- :controller => derived_controller_name(options),
- :action => derived_action_name(options)
- ).merge(options[:path_parameters] || {})
-
- defaults = { :layout => false }
- options = defaults.merge options
-
- @controller.__send__(:params).reverse_merge! @request.parameters
-
- @controller.class.instance_eval %{
- def controller_path
- "#{derived_controller_name(options)}"
- end
-
- def controller_name
- "#{derived_controller_name(options).split('/').last}"
- end
- }
-
- @controller.__send__ :forget_variables_added_to_assigns
- @controller.__send__ :render, options
- @controller.__send__ :process_cleanup
- end
-
- # This provides the template. Use this to set mock
- # expectations for dealing with partials
- #
- # == Example
- #
- # describe "/person/new" do
- # it "should use the form partial" do
- # template.should_receive(:render).with(:partial => 'form')
- # render "/person/new"
- # end
- # end
- def template
- @controller.template
- end
-
- Spec::Example::ExampleGroupFactory.register(:view, self)
-
- protected
- def _assigns_hash_proxy
- @_assigns_hash_proxy ||= AssignsHashProxy.new(self) {@response.template}
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions.rb
deleted file mode 100644
index 989dfd5da..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'spec'
-
-require 'spec/rails/extensions/spec/runner/configuration'
-require 'spec/rails/extensions/spec/matchers/have'
-
-require 'spec/rails/extensions/active_support/test_case'
-require 'spec/rails/extensions/active_record/base'
-require 'spec/rails/extensions/action_controller/rescue'
-require 'spec/rails/extensions/action_controller/test_case'
-require 'spec/rails/extensions/action_controller/test_response'
-require 'spec/rails/extensions/action_view/base'
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/rescue.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/rescue.rb
deleted file mode 100644
index 9d1ec6ae6..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/rescue.rb
+++ /dev/null
@@ -1,42 +0,0 @@
-module ActionController
- module Rescue
- def use_rails_error_handling!
- Kernel.warn <<-WARNING
-DEPRECATION NOTICE: controller.use_rails_error_handling! is
-deprecated and will be removed from a future version of
-rspec-rails.
-
-Use rescue_action_in_public!, which is defined directly in
-rails' testing framework, instead.
-WARNING
- if ::Rails::VERSION::STRING =~ /^2\.0/
- @use_rails_error_handling = true
- else
- # anything but 0.0.0.0 - borrowed from rails own rescue_action_in_public!
- request.remote_addr = '208.77.188.166'
- end
- end
-
- def use_rails_error_handling?
- @use_rails_error_handling ||= false
- end
-
- protected
-
- if ::Rails::VERSION::STRING =~ /^2\.0/
- def rescue_action_in_public?
- request.respond_to?(:rescue_action_in_public?) and request.rescue_action_in_public?
- end
-
- def rescue_action_with_handler_with_fast_errors(exception)
- if (use_rails_error_handling? || rescue_action_in_public?) & !handler_for_rescue(exception)
- rescue_action_in_public(exception)
- else
- rescue_action_with_handler_without_fast_errors(exception)
- end
- end
- alias_method_chain :rescue_action_with_handler, :fast_errors
- end
-
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/test_case.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/test_case.rb
deleted file mode 100644
index c0433403c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/test_case.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module ActionController
- class TestCase
- include ::Spec::Rails::Example::RoutingHelpers
-
- if ::Rails::VERSION::STRING =~ /2\.0/
- # Introduced in Rails 2.1, but we need it for 2.0
- def rescue_action_in_public!
- # See rescue.rb in this same directory
- def request.rescue_action_in_public?
- true
- end
- end
-
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/test_response.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/test_response.rb
deleted file mode 100644
index 5ea4a814b..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_controller/test_response.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module ActionController #:nodoc:
- class TestResponse #:nodoc:
- attr_writer :controller_path
-
- def capture(name)
- template.instance_variable_get "@content_for_#{name.to_s}"
- end
-
- if ::Rails::VERSION::STRING < "2.3"
- def [](name)
- Kernel.warn <<-WARNING
-DEPRECATION NOTICE: [](name) as an alias for capture(name) (TestResponse
-extension in rspec-rails) is deprecated and will not be defined by rspec-rails
-when working with rails >= 2.3.0. It will also be removed entirely from
-a future version of rspec-rails.
-WARNING
- capture(name)
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_view/base.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_view/base.rb
deleted file mode 100644
index 00aabb331..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/action_view/base.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-module ActionView #:nodoc:
- class Base #:nodoc:
- include Spec::Rails::Example::RenderObserver
- cattr_accessor :base_view_path
-
- def render_partial_with_base_view_path_handling(partial_path, local_assigns = nil, deprecated_local_assigns = nil) #:nodoc:
- if partial_path.is_a?(String)
- unless partial_path.include?("/")
- unless self.class.base_view_path.nil?
- partial_path = "#{self.class.base_view_path}/#{partial_path}"
- end
- end
- end
- begin
- render_partial_without_base_view_path_handling(partial_path, local_assigns, deprecated_local_assigns)
- rescue ArgumentError # edge rails > 2.1 changed render_partial to accept only one arg
- render_partial_without_base_view_path_handling(partial_path)
- end
- end
- alias_method_chain :render_partial, :base_view_path_handling
-
- def render_with_mock_proxy(options = {}, old_local_assigns = {}, &block)
- if render_proxy.__send__(:__mock_proxy).__send__(:find_matching_expectation, :render, options, old_local_assigns)
- render_proxy.render(options, old_local_assigns)
- elsif render_proxy.__send__(:__mock_proxy).__send__(:find_matching_expectation, :render, options)
- render_proxy.render(options)
- else
- unless render_proxy.__send__(:__mock_proxy).__send__(:find_matching_method_stub, :render, options)
- render_without_mock_proxy(options, old_local_assigns, &block)
- end
- end
- end
- alias_method_chain :render, :mock_proxy
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/active_record/base.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/active_record/base.rb
deleted file mode 100644
index 10611e315..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/active_record/base.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-if defined?(ActiveRecord::Base)
- module Spec
- module Rails
- module Extensions
- module ActiveRecord
- module ClassMethods
- # :call-seq:
- # ModelClass.should have(:no).records
- # ModelClass.should have(1).record
- # ModelClass.should have(n).records
- #
- # Extension to enhance <tt>should have</tt> on AR Model classes
- def records
- find(:all)
- end
- alias :record :records
- end
-
- module InstanceMethods
- # :call-seq:
- # model.should have(:no).errors_on(:attribute)
- # model.should have(1).error_on(:attribute)
- # model.should have(n).errors_on(:attribute)
- #
- # Extension to enhance <tt>should have</tt> on AR Model instances.
- # Calls model.valid? in order to prepare the object's errors
- # object.
- def errors_on(attribute)
- self.valid?
- [self.errors.on(attribute)].flatten.compact
- end
- alias :error_on :errors_on
- end
- end
- end
- end
- end
-
- module ActiveRecord #:nodoc:
- class Base
- extend Spec::Rails::Extensions::ActiveRecord::ClassMethods
- include Spec::Rails::Extensions::ActiveRecord::InstanceMethods
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/active_support/test_case.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/active_support/test_case.rb
deleted file mode 100644
index b01953fb2..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/active_support/test_case.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-module ActiveSupport
- class TestCase
- include ::Spec::Rails::Matchers
- include ::Spec::Rails::Mocks
- end
-end
-
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/spec/matchers/have.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/spec/matchers/have.rb
deleted file mode 100644
index 53924c49a..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/spec/matchers/have.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'spec/matchers/have'
-
-module Spec #:nodoc:
- module Matchers #:nodoc:
- class Have #:nodoc:
-
- def failure_message_for_should_with_errors_on_extensions
- return "expected #{relativities[@relativity]}#{@expected} errors on :#{@args[0]}, got #{@actual}" if @collection_name == :errors_on
- return "expected #{relativities[@relativity]}#{@expected} error on :#{@args[0]}, got #{@actual}" if @collection_name == :error_on
- return failure_message_for_should_without_errors_on_extensions
- end
- alias_method_chain :failure_message_for_should, :errors_on_extensions
-
- def description_with_errors_on_extensions
- return "have #{relativities[@relativity]}#{@expected} errors on :#{@args[0]}" if @collection_name == :errors_on
- return "have #{relativities[@relativity]}#{@expected} error on :#{@args[0]}" if @collection_name == :error_on
- return description_without_errors_on_extensions
- end
- alias_method_chain :description, :errors_on_extensions
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/spec/runner/configuration.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/spec/runner/configuration.rb
deleted file mode 100755
index f254f27ae..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/extensions/spec/runner/configuration.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-require 'spec/runner/configuration'
-require 'test_help'
-
-if defined?(ActiveRecord::Base)
- module Spec
- module Runner
- class Configuration
-
- def initialize
- super
- self.fixture_path = RAILS_ROOT + '/spec/fixtures'
- end
-
- def use_transactional_fixtures
- ActiveSupport::TestCase.use_transactional_fixtures
- end
- def use_transactional_fixtures=(value)
- ActiveSupport::TestCase.use_transactional_fixtures = value
- end
-
- def use_instantiated_fixtures
- ActiveSupport::TestCase.use_instantiated_fixtures
- end
- def use_instantiated_fixtures=(value)
- ActiveSupport::TestCase.use_instantiated_fixtures = value
- end
-
- def fixture_path
- ActiveSupport::TestCase.fixture_path
- end
- def fixture_path=(path)
- ActiveSupport::TestCase.fixture_path = path
- ActionController::IntegrationTest.fixture_path = path
- end
-
- def global_fixtures
- ActiveSupport::TestCase.fixture_table_names
- end
- def global_fixtures=(fixtures)
- ActiveSupport::TestCase.fixtures(*fixtures)
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/interop/testcase.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/interop/testcase.rb
deleted file mode 100644
index 53cb9920c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/interop/testcase.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-module Test
- module Unit
- class TestCase
- # Edge rails (r8664) introduces class-wide setup & teardown callbacks for Test::Unit::TestCase.
- # Make sure these still get run when running TestCases under rspec:
- prepend_before(:each) do
- run_callbacks :setup if respond_to?(:run_callbacks)
- end
- append_after(:each) do
- run_callbacks :teardown if respond_to?(:run_callbacks)
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers.rb
deleted file mode 100644
index 11b579358..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-module Spec
- module Rails
- # Spec::Rails::Expectations::Matchers provides several expectation matchers
- # intended to work with Rails components like models and responses. For example:
- #
- # response.should redirect_to("some/url") #redirect_to(url) is the matcher.
- #
- # In addition to those you see below, the arbitrary predicate feature of RSpec
- # makes the following available as well:
- #
- # response.should be_success #passes if response.success?
- # response.should be_redirect #passes if response.redirect?
- #
- # Note that many of these matchers are part of a wrapper of <tt>assert_select</tt>, so
- # the documentation comes straight from that with some slight modifications.
- # <tt>assert_select</tt> is a Test::Unit extension originally contributed to the
- # Rails community as a plugin by Assaf Arkin and eventually shipped as part of Rails.
- #
- # For more info on <tt>assert_select</tt>, see the relevant Rails documentation.
- module Matchers
- end
- end
-end
-
-require 'spec/rails/matchers/ar_be_valid'
-require 'spec/rails/matchers/assert_select'
-require 'spec/rails/matchers/change'
-require 'spec/rails/matchers/have_text'
-require 'spec/rails/matchers/include_text'
-require 'spec/rails/matchers/redirect_to'
-require 'spec/rails/matchers/route_to'
-require 'spec/rails/matchers/render_template'
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/ar_be_valid.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/ar_be_valid.rb
deleted file mode 100644
index 59bd6739c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/ar_be_valid.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-if defined?(ActiveRecord::Base)
- module Spec
- module Rails
- module Matchers
- # :call-seq:
- # response.should be_valid
- # response.should_not be_valid
- def be_valid
- ::Spec::Matchers::Matcher.new :be_valid do
- match do |actual|
- actual.valid?
- end
-
- failure_message_for_should do |actual|
- if actual.respond_to?(:errors) && ActiveRecord::Errors === actual.errors
- "Expected #{actual.inspect} to be valid, but it was not\nErrors: " + actual.errors.full_messages.join(", ")
- else
- "Expected #{actual.inspect} to be valid"
- end
- end
- end
- end
-
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/assert_select.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/assert_select.rb
deleted file mode 100644
index db9387e50..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/assert_select.rb
+++ /dev/null
@@ -1,180 +0,0 @@
-# This is a wrapper of assert_select for rspec.
-
-module Spec # :nodoc:
- module Rails
- module Matchers
-
- class AssertSelect #:nodoc:
- attr_reader :options
-
- def initialize(selector_assertion, spec_scope, *args, &block)
- @args, @options = args_and_options(args)
- @spec_scope = spec_scope
- @selector_assertion = selector_assertion
- @block = block
- end
-
- def matches?(response_or_text, &block)
- @block = block if block
-
- if doc = doc_from(response_or_text)
- @args.unshift(doc)
- end
-
- begin
- @spec_scope.__send__(@selector_assertion, *@args, &@block)
- true
- rescue ::Test::Unit::AssertionFailedError => @error
- false
- end
- end
-
- def failure_message_for_should; @error.message; end
- def failure_message_for_should_not; "should not #{description}, but did"; end
-
- def description
- {
- :assert_select => "have tag#{format_args(*@args)}",
- :assert_select_email => "send email#{format_args(*@args)}",
- }[@selector_assertion]
- end
-
- private
-
- module TestResponseOrString
- def test_response?
- ActionController::TestResponse === self and
- !self.headers['Content-Type'].blank? and
- self.headers['Content-Type'].to_sym == :xml
- end
-
- def string?
- String === self
- end
- end
-
- def doc_from(response_or_text)
- response_or_text.extend TestResponseOrString
- if response_or_text.test_response?
- HTML::Document.new(response_or_text.body, @options[:strict], @options[:xml]).root
- elsif response_or_text.string?
- HTML::Document.new(response_or_text, @options[:strict], @options[:xml]).root
- end
- end
-
- def format_args(*args)
- args.empty? ? "" : "(#{arg_list(*args)})"
- end
-
- def arg_list(*args)
- args.map do |arg|
- arg.respond_to?(:description) ? arg.description : arg.inspect
- end.join(", ")
- end
-
- def args_and_options(args)
- opts = {:xml => false, :strict => false}
- if args.last.is_a?(::Hash)
- opts[:strict] = args.last.delete(:strict) unless args.last[:strict].nil?
- opts[:xml] = args.last.delete(:xml) unless args.last[:xml].nil?
- args.pop if args.last.empty?
- end
- return [args, opts]
- end
-
- end
-
- # :call-seq:
- # response.should have_tag(*args, &block)
- # string.should have_tag(*args, &block)
- #
- # wrapper for assert_select with additional support for using
- # css selectors to set expectation on Strings. Use this in
- # helper specs, for example, to set expectations on the results
- # of helper methods. Also allow specification of how the
- # response is parsed using the options :xml and :strict options.
- # By default, these options are set to false.
- #
- # == Examples
- #
- # # in a controller spec
- # response.should have_tag("div", "some text")
- #
- # # to force xml and/or strict parsing of the response
- # response.should have_tag("div", "some text", :xml => true)
- # response.should have_tag("div", "some text", :strict => true)
- # response.should have_tag("div", "some text", :xml => true, :strict => false)
- #
- # # in a helper spec (person_address_tag is a method in the helper)
- # person_address_tag.should have_tag("input#person_address")
- #
- # see documentation for assert_select at http://api.rubyonrails.org/
- def have_tag(*args, &block)
- @__current_scope_for_assert_select = AssertSelect.new(:assert_select, self, *args, &block)
- end
-
- # wrapper for a nested assert_select
- #
- # response.should have_tag("div#form") do
- # with_tag("input#person_name[name=?]", "person[name]")
- # end
- #
- # see documentation for assert_select at http://api.rubyonrails.org/
- def with_tag(*args, &block)
- args = prepare_args(args, @__current_scope_for_assert_select)
- @__current_scope_for_assert_select.should have_tag(*args, &block)
- end
-
- # wrapper for a nested assert_select with false
- #
- # response.should have_tag("div#1") do
- # without_tag("span", "some text that shouldn't be there")
- # end
- #
- # see documentation for assert_select at http://api.rubyonrails.org/
- def without_tag(*args, &block)
- args = prepare_args(args, @__current_scope_for_assert_select)
- @__current_scope_for_assert_select.should_not have_tag(*args, &block)
- end
-
- # :call-seq:
- # response.should have_rjs(*args, &block)
- #
- # wrapper for assert_select_rjs
- #
- # see documentation for assert_select_rjs at http://api.rubyonrails.org/
- def have_rjs(*args, &block)
- AssertSelect.new(:assert_select_rjs, self, *args, &block)
- end
-
- # :call-seq:
- # response.should send_email(*args, &block)
- #
- # wrapper for assert_select_email
- #
- # see documentation for assert_select_email at http://api.rubyonrails.org/
- def send_email(*args, &block)
- AssertSelect.new(:assert_select_email, self, *args, &block)
- end
-
- # wrapper for assert_select_encoded
- #
- # see documentation for assert_select_encoded at http://api.rubyonrails.org/
- def with_encoded(*args, &block)
- should AssertSelect.new(:assert_select_encoded, self, *args, &block)
- end
-
- private
-
- def prepare_args(args, current_scope = nil)
- return args if current_scope.nil?
- defaults = current_scope.options || {:strict => false, :xml => false}
- args << {} unless args.last.is_a?(::Hash)
- args.last[:strict] = defaults[:strict] if args.last[:strict].nil?
- args.last[:xml] = defaults[:xml] if args.last[:xml].nil?
- args
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/change.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/change.rb
deleted file mode 100644
index 3542f58fd..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/change.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-if defined?(ActiveRecord::Base)
- module Spec
- module Matchers
- class Change
- def evaluate_value_proc_with_ensured_evaluation_of_proxy
- value = evaluate_value_proc_without_ensured_evaluation_of_proxy
- ActiveRecord::Associations::AssociationProxy === value ? value.dup : value
- end
- alias_method_chain :evaluate_value_proc, :ensured_evaluation_of_proxy
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/have_text.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/have_text.rb
deleted file mode 100644
index e3dfc6fe0..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/have_text.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-module Spec
- module Rails
- module Matchers
-
- class HaveText #:nodoc:
-
- def initialize(expected)
- @expected = expected
- end
-
- def matches?(response_or_text)
- @actual = response_or_text.respond_to?(:body) ? response_or_text.body : response_or_text
- return actual =~ expected if Regexp === expected
- return actual == expected unless Regexp === expected
- end
-
- def failure_message_for_should
- "expected #{expected.inspect}, got #{actual.inspect}"
- end
-
- def failure_message_for_should_not
- "expected not to have text #{expected.inspect}"
- end
-
- def description
- "have text #{expected.inspect}"
- end
-
- private
- attr_reader :expected
- attr_reader :actual
-
- end
-
- # :call-seq:
- # response.should have_text(expected)
- # response.should_not have_text(expected)
- #
- # Accepts a String or a Regexp, matching a String using ==
- # and a Regexp using =~.
- #
- # If response_or_text has a #body, then that is used as to match against
- # else it uses response_or_text
- #
- # Use this instead of <tt>response.should have_tag()</tt>
- # when you want to match the whole string or whole body
- #
- # == Examples
- #
- # response.should have_text("This is the expected text")
- def have_text(text)
- HaveText.new(text)
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/include_text.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/include_text.rb
deleted file mode 100644
index a05d804aa..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/include_text.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-module Spec
- module Rails
- module Matchers
-
- class IncludeText #:nodoc:
-
- def initialize(expected)
- @expected = expected
- end
-
- def matches?(response_or_text)
- @actual = response_or_text.respond_to?(:body) ? response_or_text.body : response_or_text
- return actual.include?(expected)
- end
-
- def failure_message_for_should
- "expected to find #{expected.inspect} in #{actual.inspect}"
- end
-
- def failure_message_for_should_not
- "expected not to include text #{expected.inspect}"
- end
-
- def description
- "include text #{expected.inspect}"
- end
-
- private
- attr_reader :expected
- attr_reader :actual
-
- end
-
-
- # :call-seq:
- # response.should include_text(expected)
- # response.should_not include_text(expected)
- #
- # Accepts a String, matching using include?
- #
- # Use this instead of <tt>response.should have_text()</tt>
- # when you either don't know or don't care where on the page
- # this text appears.
- #
- # == Examples
- #
- # response.should include_text("This text will be in the actual string")
- def include_text(text)
- IncludeText.new(text)
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/redirect_to.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/redirect_to.rb
deleted file mode 100644
index e2ec6763a..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/redirect_to.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-module Spec
- module Rails
- module Matchers
-
- class RedirectTo #:nodoc:
-
- include ActionController::StatusCodes
-
- def initialize(request, expected)
- @expected = expected
- @request = request
- end
-
- def matches?(response_or_controller)
- response = response_or_controller.respond_to?(:response) ?
- response_or_controller.response :
- response_or_controller
-
- @redirected = response.redirect?
- @actual = response.redirect_url
- return false unless @redirected
-
- if @expected_status
- @actual_status = interpret_status(response.code.to_i)
- @status_matched = @expected_status == @actual_status
- else
- @status_matched = true
- end
-
- if @expected.instance_of? Hash
- return false unless @actual =~ %r{^\w+://#{@request.host}}
- return false unless actual_redirect_to_valid_route
- return actual_hash == expected_hash && @status_matched
- else
- return @actual == expected_url && @status_matched
- end
- end
-
- def actual_hash
- hash_from_url @actual
- end
-
- def expected_hash
- hash_from_url expected_url
- end
-
- def actual_redirect_to_valid_route
- actual_hash
- end
-
- def hash_from_url(url)
- query_hash(url).merge(path_hash(url)).with_indifferent_access
- end
-
- def path_hash(url)
- path = url.sub(%r{^\w+://#{@request.host}(?::\d+)?}, "").split("?", 2)[0]
- ActionController::Routing::Routes.recognize_path path, { :method => :get }
- end
-
- def query_hash(url)
- query = url.split("?", 2)[1] || ""
- Rack::Utils.parse_query(query)
- end
-
- def with(options)
- @expected_status = interpret_status(options[:status])
- self
- end
-
- def expected_url
- case @expected
- when Hash
- return ActionController::UrlRewriter.new(@request, {}).rewrite(@expected)
- when :back
- return @request.env['HTTP_REFERER']
- when %r{^\w+://.*}
- return @expected
- else
- return "http://#{@request.host}" + (@expected.split('')[0] == '/' ? '' : '/') + @expected
- end
- end
-
- def failure_message_for_should
- if @redirected
- if @status_matched
- return %Q{expected redirect to #{@expected.inspect}, got redirect to #{@actual.inspect}}
- else
- return %Q{expected redirect to #{@expected.inspect} with status #{@expected_status}, got #{@actual_status}}
- end
- else
- return %Q{expected redirect to #{@expected.inspect}, got no redirect}
- end
- end
-
- def failure_message_for_should_not
- return %Q{expected not to be redirected to #{@expected.inspect}, but was} if @redirected
- end
-
- def description
- "redirect to #{@expected.inspect}"
- end
- end
-
- # :call-seq:
- # response.should redirect_to(url)
- # response.should redirect_to(:action => action_name)
- # response.should redirect_to(:controller => controller_name, :action => action_name)
- # response.should_not redirect_to(url)
- # response.should_not redirect_to(:action => action_name)
- # response.should_not redirect_to(:controller => controller_name, :action => action_name)
- #
- # Passes if the response is a redirect to the url, action or controller/action.
- # Useful in controller specs (integration or isolation mode).
- #
- # == Examples
- #
- # response.should redirect_to("path/to/action")
- # response.should redirect_to("http://test.host/path/to/action")
- # response.should redirect_to(:action => 'list')
- def redirect_to(opts)
- RedirectTo.new(request, opts)
- end
- end
-
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/render_template.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/render_template.rb
deleted file mode 100644
index b2c1887e1..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/render_template.rb
+++ /dev/null
@@ -1,129 +0,0 @@
-module Spec
- module Rails
- module Matchers
-
- class RenderTemplate #:nodoc:
-
- def initialize(expected, controller)
- @controller = controller
- @expected = expected
- end
-
- def matches?(response_or_controller)
- response = response_or_controller.respond_to?(:response) ?
- response_or_controller.response :
- response_or_controller
-
- if response.respond_to?(:redirect?) && response.redirect?
- @redirect_url = response.redirect_url
- elsif response.respond_to?(:rendered_file)
- @actual = response.rendered_file
- elsif response.respond_to?(:rendered)
- case template = response.rendered[:template]
- when nil
- unless response.rendered[:partials].empty?
- @actual = path_and_file(response.rendered[:partials].keys.first).join("/_")
- end
- when ActionView::Template
- @actual = template.path
- when String
- @actual = template
- end
- else
- @actual = response.rendered_template.to_s
- end
- return false if @actual.blank?
- given_controller_path, given_file = path_and_file(@actual)
- expected_controller_path, expected_file = path_and_file(@expected)
- given_controller_path == expected_controller_path && match_files(given_file, expected_file)
- end
-
- def match_files(actual, expected)
- actual_parts = actual.split('.')
- expected_parts = expected.split('.')
- expected_parts.each_with_index do |expected_part, index|
- return false unless expected_part == actual_parts[index]
- end
- true
- end
-
- def failure_message_for_should
- if @redirect_url
- "expected #{@expected.inspect}, got redirected to #{@redirect_url.inspect}"
- else
- "expected #{@expected.inspect}, got #{@actual.inspect}"
- end
- end
-
- def failure_message_for_should_not
- "expected not to render #{@expected.inspect}, but did"
- end
-
- def description
- "render template #{@expected.inspect}"
- end
-
- private
- def path_and_file(path)
- parts = path.split('/')
- file = parts.pop
- controller = parts.empty? ? current_controller_path : parts.join('/')
- return controller, file
- end
-
- def controller_path_from(path)
- parts = path.split('/')
- parts.pop
- parts.join('/')
- end
-
- def current_controller_path
- @controller.class.to_s.underscore.gsub(/_controller$/,'')
- end
-
- end
-
- # :call-seq:
- # response.should render_template(template)
- # response.should_not render_template(template)
- #
- # For use in controller code examples (integration or isolation mode).
- #
- # Passes if the specified template (view file) is rendered by the
- # response. This file can be any view file, including a partial. However
- # if it is a partial it must be rendered directly i.e. you can't detect
- # that a partial has been rendered as part of a view using
- # render_template. For that you should use a message expectation
- # (mock) instead:
- #
- # controller.should_receive(:render).with(:partial => 'path/to/partial')
- #
- # <code>template</code> can include the controller path. It can also
- # include an optional extension, which you only need to use when there
- # is ambiguity.
- #
- # Note that partials must be spelled with the preceding underscore.
- #
- # == Examples
- #
- # response.should render_template('list')
- # response.should render_template('same_controller/list')
- # response.should render_template('other_controller/list')
- #
- # # with extensions
- # response.should render_template('list.rjs')
- # response.should render_template('list.haml')
- # response.should render_template('same_controller/list.rjs')
- # response.should render_template('other_controller/list.rjs')
- #
- # # partials
- # response.should render_template('_a_partial')
- # response.should render_template('same_controller/_a_partial')
- # response.should render_template('other_controller/_a_partial')
- def render_template(path)
- RenderTemplate.new(path.to_s, @controller)
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/route_to.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/route_to.rb
deleted file mode 100644
index eae35f0b7..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/matchers/route_to.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-require 'rack/utils'
-
-module Spec
- module Rails
- module Matchers
- USAGE = ArgumentError.new( 'usage: { :method => "path" }.should route_to( :controller => "controller", :action => "action", [ args ] )' )
-
- class PathDecomposer
- def self.decompose_path(path)
- method, path = if Hash === path
- raise USAGE if path.keys.size > 1
- path.entries.first
- else
- [:get, path]
- end
- path, querystring = path.split('?')
- return method, path, querystring
- end
- end
-
- class RouteTo #:nodoc:
- def initialize(expected, example)
- @route, @example = expected,example
- end
-
- def matches?(path)
- begin
- @actual = path
- method, path, querystring = PathDecomposer.decompose_path(path)
- params = querystring.blank? ? {} : Rack::Utils.parse_query(querystring).symbolize_keys!
- @example.assert_routing({ :method => method, :path => path }, @route, {}, params)
- true
- rescue ActionController::RoutingError, ::Test::Unit::AssertionFailedError, ActionController::MethodNotAllowed => e
- raise e.class, "#{e}\nIf you're expecting this failure, we suggest { :#{method} => \"#{path}\" }.should_not be_routable"
- rescue Exception => e
- raise e.class, "#{e}\n#{e.backtrace.join( "\n" )}"
- end
- end
-
- def does_not_match(path)
- raise ArgumentError, "Don't test a negative route like this."
- end
-
- def failure_message_for_should
- "Expected #{@expected.inspect} to route to #{@actual.inspect}, but it didn't.\n"+
- "In this case, we expected you to get an exception. So this message probably means something weird happened."
- end
-
- def failure_message_for_should_not
- "Expected a routing error, but the route passed instead. \nNote, when expecting routes to fail, you should use 'should_not be_routable' instead."
- end
-
- def description
- "route to #{@expected.inspect}"
- end
-
- private
- attr_reader :expected
- attr_reader :actual
-
- end
-
- # :call-seq:
- # "path".should route_to(expected) # assumes GET
- # { :get => "path" }.should route_to(expected)
- # { :put => "path" }.should route_to(expected)
- #
- # Uses ActionController::Routing::Routes to verify that
- # the path-and-method routes to a given set of options.
- # Also verifies route-generation, so that the expected options
- # do generate a pathname consisten with the indicated path/method.
- #
- # For negative tests, only the route recognition failure can be
- # tested; since route generation via path_to() will always generate
- # a path as requested. Use .should_not be_routable() in this case.
- #
- # == Examples
- # { :get => '/registrations/1/edit' }.
- # should route_to(:controller => 'registrations', :action => 'edit', :id => '1')
- # { :put => "/registrations/1" }.should
- # route_to(:controller => 'registrations', :action => 'update', :id => 1)
- # { :post => "/registrations/" }.should
- # route_to(:controller => 'registrations', :action => 'create')
-
- def route_to(expected)
- RouteTo.new(expected, self)
- end
-
- class BeRoutable
- def initialize(example)
- @example = example
- end
-
- def matches?(path)
- begin
- @actual = path
- method, path = PathDecomposer.decompose_path(path)
- @example.assert_recognizes({}, { :method => method, :path => path }, {} )
- true
- rescue ActionController::RoutingError, ActionController::MethodNotAllowed
- false
- rescue ::Test::Unit::AssertionFailedError => e
- # the second thingy will always be "<{}>" becaues of the way we called assert_recognizes({}...) above.
- e.to_s =~ /<(.*)> did not match <\{\}>/ and @actual_place = $1 or raise
- true
- end
- end
- def failure_message_for_should
- "Expected '#{@actual.keys.first.to_s.upcase} #{@actual.values.first}' to be routable, but it wasn't.\n"+
- "To really test routability, we recommend #{@actual.inspect}.\n"+
- " should route_to( :action => 'action', :controller => 'controller' )\n\n"+
-
- "That way, you'll verify where your route goes to. Plus, we'll verify\n"+
- "the generation of the expected path from the action/controller, as in\n"+
- "the url_for() helper."
- end
-
- def failure_message_for_should_not
- "Expected '#{@actual.keys.first.to_s.upcase} #{@actual.values.first}' to fail, but it routed to #{@actual_place} instead"
- end
-
- end
- # :call-seq:
- # { "path" }.should_not be_routable # assumes GET
- # { :get => "path" }.should_not be_routable
- # { :put => "path" }.should_not be_routable
- #
- # Uses ActionController::Routing::Routes to verify that
- # the path-and-method cannot be routed to a controller.
- # Since url_for() will always generate a path, even if that
- # path is not routable, the negative test only needs to be
- # performed on the route recognition.
- #
- # Don't use this matcher for testing expected routability -
- # use .should route_to( :controller => "controller", :action => "action" ) instead
- #
- # == Examples
- # { :get => '/registrations/1/attendees/3/edit' }.should_not be_routable
- # { :get => '/attendees/3/edit' }.should route_to( ...<controller/action>... )
-
- def be_routable
- BeRoutable.new(self)
- end
-
- alias_method :be_routeable, :be_routable
- end
- end
-end
-
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/mocks.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/mocks.rb
deleted file mode 100644
index 9071ec991..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/mocks.rb
+++ /dev/null
@@ -1,140 +0,0 @@
-module Spec
- module Rails
-
- class IllegalDataAccessException < StandardError; end
-
- module Mocks
-
- # Creates a mock object instance for a +model_class+ with common
- # methods stubbed out. Additional methods may be easily stubbed (via
- # add_stubs) if +stubs+ is passed.
- def mock_model(model_class, options_and_stubs = {})
- id = options_and_stubs[:id] || next_id
- options_and_stubs = options_and_stubs.reverse_merge({
- :id => id,
- :to_param => id.to_s,
- :new_record? => false,
- :destroyed? => false,
- :marked_for_destruction? => false,
- :errors => stub("errors", :count => 0)
- })
- m = mock("#{model_class.name}_#{id}", options_and_stubs)
- m.__send__(:__mock_proxy).instance_eval <<-CODE
- def @target.as_new_record
- self.stub(:id).and_return nil
- self.stub(:to_param).and_return nil
- self.stub(:new_record?).and_return true
- self
- end
- def @target.to_str
- self.to_s
- end
- def @target.is_a?(other)
- #{model_class}.ancestors.include?(other)
- end
- def @target.kind_of?(other)
- #{model_class}.ancestors.include?(other)
- end
- def @target.instance_of?(other)
- other == #{model_class}
- end
- def @target.class
- #{model_class}
- end
- CODE
- yield m if block_given?
- m
- end
-
- module ModelStubber
- def connection
- raise Spec::Rails::IllegalDataAccessException.new("stubbed models are not allowed to access the database")
- end
- def new_record?
- id.nil?
- end
- def as_new_record
- self.id = nil
- self
- end
- end
-
- # :call-seq:
- # stub_model(Model)
- # stub_model(Model).as_new_record
- # stub_model(Model, hash_of_stubs)
- # stub_model(Model, instance_variable_name, hash_of_stubs)
- #
- # Creates an instance of +Model+ that is prohibited from accessing the
- # database*. For each key in +hash_of_stubs+, if the model has a
- # matching attribute (determined by asking it) are simply assigned the
- # submitted values. If the model does not have a matching attribute, the
- # key/value pair is assigned as a stub return value using RSpec's
- # mocking/stubbing framework.
- #
- # <tt>new_record?</tt> is overridden to return the result of id.nil?
- # This means that by default new_record? will return false. If you want
- # the object to behave as a new record, sending it +as_new_record+ will
- # set the id to nil. You can also explicitly set :id => nil, in which
- # case new_record? will return true, but using +as_new_record+ makes the
- # example a bit more descriptive.
- #
- # While you can use stub_model in any example (model, view, controller,
- # helper), it is especially useful in view examples, which are
- # inherently more state-based than interaction-based.
- #
- # == Database Independence
- #
- # +stub_model+ does not make your examples entirely
- # database-independent. It does not stop the model class itself from
- # loading up its columns from the database. It just prevents data access
- # from the object itself. To completely decouple from the database, take
- # a look at libraries like unit_record or NullDB.
- #
- # == Examples
- #
- # stub_model(Person)
- # stub_model(Person).as_new_record
- # stub_model(Person, :id => 37)
- # stub_model(Person) do |person|
- # person.first_name = "David"
- # end
- def stub_model(model_class, stubs={})
- stubs = {:id => next_id}.merge(stubs)
- model_class.new.tap do |model|
- model.id = stubs.delete(:id)
- model.extend ModelStubber
- stubs.each do |k,v|
- if model.has_attribute?(k)
- model[k] = stubs.delete(k)
- end
- end
- model.stub!(stubs)
- yield model if block_given?
- end
- end
-
- # DEPRECATED - use object.stub!(:method => value, :method2 => value)
- #
- # Stubs methods on +object+ (if +object+ is a symbol or string a new mock
- # with that name will be created). +stubs+ is a Hash of +method=>value+
- def add_stubs(object, stubs = {}) #:nodoc:
- Kernel.warn <<-WARNING
-DEPRECATION NOTICE: add_stubs is deprecated and will be removed
-from a future version of rspec-rails. Use this instead:
-
- object.stub!(:method => value, :method2 => value)
-
-WARNING
- object.stub!(stubs)
- end
-
- private
- @@model_id = 1000
- def next_id
- @@model_id += 1
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/version.rb b/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/version.rb
deleted file mode 100644
index c10881d07..000000000
--- a/vendor/gems/rspec-rails-1.3.3/lib/spec/rails/version.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module Spec # :nodoc:
- module Rails # :nodoc:
- module VERSION # :nodoc:
- unless defined? MAJOR
- MAJOR = 1
- MINOR = 3
- TINY = 3
- PRE = nil
-
- STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
-
- SUMMARY = "rspec-rails #{STRING}"
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/autotest/mappings_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/autotest/mappings_spec.rb
deleted file mode 100644
index 1e0ec738d..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/autotest/mappings_spec.rb
+++ /dev/null
@@ -1,86 +0,0 @@
-require 'spec_helper'
-require File.dirname(__FILE__) + '/../../lib/autotest/rails_rspec'
-require File.dirname(__FILE__) + '/../../../rspec/spec/autotest/autotest_matchers'
-
-describe Autotest::RailsRspec, "file mapping" do
- before(:each) do
- @autotest = Autotest::RailsRspec.new
- @autotest.hook :initialize
- end
-
- it "should map model example to model" do
- @autotest.should map_specs(['spec/models/thing_spec.rb']).
- to('app/models/thing.rb')
- end
-
- it "should map controller example to controller" do
- @autotest.should map_specs(['spec/controllers/things_controller_spec.rb']).
- to('app/controllers/things_controller.rb')
- end
-
- it "should map view.rhtml" do
- @autotest.should map_specs(['spec/views/things/index.rhtml_spec.rb']).
- to('app/views/things/index.rhtml')
- end
-
- it "should map view.rhtml with underscores in example filename" do
- @autotest.should map_specs(['spec/views/things/index_rhtml_spec.rb']).
- to('app/views/things/index.rhtml')
- end
-
- it "should map view.html.erb" do
- @autotest.should map_specs(['spec/views/things/index.html.erb_spec.rb']).
- to('app/views/things/index.html.erb')
- end
-
- describe "between routes.rb and things which depend on routes" do
- it "should map routes.rb to controllers" do
- @autotest.should map_specs(['spec/controllers/things_controller_spec.rb']).
- to('config/routes.rb')
- end
-
- it "should map routes.rb to views" do
- @autotest.should map_specs(['spec/views/things/action.html.erb_spec.rb']).
- to('config/routes.rb')
- end
-
- it "should map routes.rb to helpers" do
- @autotest.should map_specs(['spec/helpers/things_helper_spec.rb']).
- to('config/routes.rb')
- end
-
- it "should map routing example to routes" do
- @autotest.should map_specs(['spec/routing/thing_spec.rb']).
- to('config/routes.rb')
- end
- end
-
- describe "between the config and specs" do
- ['spec/controllers/things_controller_spec.rb',
- 'spec/views/things/action.html.erb_spec.rb',
- 'spec/helpers/things_helper_spec.rb',
- 'spec/routing/thing_spec.rb',
- 'spec/models/thing_spec.rb'].each do |file_path|
-
- it "should map environment.rb to #{file_path}" do
- @autotest.should map_specs([file_path]).
- to('config/environment.rb')
- end
-
- it "should map environments/test.rb to #{file_path}" do
- @autotest.should map_specs([file_path]).
- to('config/environments/test.rb')
- end
-
- it "should map boot.rb to #{file_path}" do
- @autotest.should map_specs([file_path]).
- to('config/boot.rb')
- end
-
- it "should map spec_helper.rb to #{file_path}" do
- @autotest.should map_specs([file_path]).
- to('spec/spec_helper.rb')
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/rails_suite.rb b/vendor/gems/rspec-rails-1.3.3/spec/rails_suite.rb
deleted file mode 100644
index 15effae1c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/rails_suite.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-dir = File.dirname(__FILE__)
-Dir["#{dir}/**/*_example.rb"].each do |file|
- require file
-end
-Dir["#{dir}/**/*_spec.rb"].each do |file|
- require file
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/action_view_base_spec_controller.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/action_view_base_spec_controller.rb
deleted file mode 100644
index 924022178..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/action_view_base_spec_controller.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class ActionViewBaseSpecController < ActionController::Base
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/application.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/application.rb
deleted file mode 100644
index 343fdd7bc..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/application.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class ApplicationController < ActionController::Base
- before_filter :i_should_only_be_run_once,
- :only => 'action_with_inherited_before_filter'
-
- def i_should_only_be_run_once
- true
- end
- private :i_should_only_be_run_once
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/controller_spec_controller.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/controller_spec_controller.rb
deleted file mode 100644
index d5b5627d1..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/controller_spec_controller.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-class ControllerSpecController < ActionController::Base
- before_filter :raise_error, :only => :action_with_skipped_before_filter
-
- def raise_error
- raise "from a before filter"
- end
-
- skip_before_filter :raise_error
-
- prepend_view_path File.join(File.dirname(__FILE__), "..", "views")
-
- def some_action
- render :template => "template/that/does/not/actually/exist"
- end
-
- def some_action_with_implied_template
- end
-
- def action_with_template
- render :template => "controller_spec/action_with_template"
- end
-
- def action_which_sets_flash
- flash[:flash_key] = "flash value"
- render :text => ""
- end
-
- def action_which_gets_session
- raise "expected #{params[:session_key].inspect}\ngot #{session[:session_key].inspect}" unless (session[:session_key] == params[:expected])
- render :text => ""
- end
-
- def action_which_sets_session
- session[:session_key] = "session value"
- end
-
- def action_which_gets_cookie
- raise "expected #{params[:expected].inspect}, got #{cookies[:cookie_key].inspect}" unless (cookies[:cookie_key] == params[:expected])
- render :text => ""
- end
-
- def action_which_sets_cookie
- cookies['cookie_key'] = params[:value]
- render :text => ""
- end
-
- def action_with_partial
- render :partial => "controller_spec/partial"
- end
-
- def action_with_partial_with_object
- render :partial => "controller_spec/partial", :object => params[:thing]
- end
-
- def action_with_partial_with_locals
- render :partial => "controller_spec/partial", :locals => {:thing => params[:thing]}
- end
-
- def action_with_errors_in_template
- render :template => "controller_spec/action_with_errors_in_template"
- end
-
- def action_setting_the_assigns_hash
- @indirect_assigns_key = :indirect_assigns_key_value
- end
-
- def action_setting_flash_after_session_reset
- reset_session
- flash[:after_reset] = "available"
- end
-
- def action_setting_flash_before_session_reset
- flash[:before_reset] = 'available'
- reset_session
- end
-
- def action_with_render_update
- render :update do |page|
- page.replace :bottom, 'replace_me',
- :partial => 'non_existent_partial'
- end
- end
-
- def action_with_skipped_before_filter
- render :text => ""
- end
-
- def action_that_renders_inline
- render :inline => "<%= 'inline code' %>"
- end
-
- def action_that_assigns_false_to_a_variable
- @a_variable = false
- render :text => ""
- end
-
- def action_with_two_arg_render
- render :update, :status => 404 do |page|
- page.visual_effect :highlight, 'user_list'
- end
- end
-
- class RescuedError < Exception; end
- class UnRescuedError < Exception; end
-
- rescue_from RescuedError do |e|
- render :text => 'Rescued!'
- end
-
- def rescued_error_action
- raise ControllerSpecController::RescuedError
- end
-
- def un_rescued_error_action
- raise ControllerSpecController::UnRescuedError
- end
-
- def action_that_returns_headers
- render :text => request.headers[params[:header]]
- end
-end
-
-class ControllerInheritingFromApplicationControllerController < ApplicationController
- def action_with_inherited_before_filter
- render :text => ""
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/example.txt b/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/example.txt
deleted file mode 100644
index 380965314..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/example.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is an example file to download. \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/redirect_spec_controller.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/redirect_spec_controller.rb
deleted file mode 100644
index 7b63c99f2..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/redirect_spec_controller.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-class RedirectSpecController < ApplicationController
-
- def action_with_no_redirect
- render :text => "this is just here to keep this from causing a MissingTemplate error"
- end
-
- def action_with_redirect_to_somewhere
- redirect_to :action => 'somewhere'
- end
-
- def action_with_redirect_to_other_somewhere
- redirect_to :controller => 'render_spec', :action => 'text_action'
- end
-
- def action_with_redirect_to_somewhere_and_return
- redirect_to :action => 'somewhere' and return
- render :text => "this is after the return"
- end
-
- def somewhere
- render :text => "this is just here to keep this from causing a MissingTemplate error"
- end
-
- def action_with_redirect_to_rspec_site
- redirect_to "http://rspec.rubyforge.org"
- end
-
- def action_with_redirect_back
- redirect_to :back
- end
-
- def action_with_redirect_in_respond_to
- respond_to do |wants|
- wants.html { redirect_to :action => 'somewhere' }
- end
- end
-
- def action_with_redirect_which_creates_query_string
- redirect_to :action => "somewhere", :id => 1111, :param1 => "value1", :param2 => "value2"
- end
-
- # note: sometimes this is the URL which rails will generate from the hash in
- # action_with_redirect_which_creates_query_string
- def action_with_redirect_with_query_string_order1
- redirect_to "http://test.host/redirect_spec/somewhere/1111?param1=value1&param2=value2"
- end
-
- # note: sometimes this is the URL which rails will generate from the hash in
- # action_with_redirect_which_creates_query_string
- def action_with_redirect_with_query_string_order2
- redirect_to "http://test.host/redirect_spec/somewhere/1111?param2=value2&param1=value1"
- end
-
- def action_with_redirect_to_unroutable_url_inside_app
- redirect_to :controller => "nonexistant", :action => "none"
- end
-
- def action_with_method_restriction
- render :text => ''
- end
-
- def action_to_redirect_to_action_with_method_restriction
- redirect_to :action => 'action_with_method_restriction'
- end
-
- def action_with_redirect_to_somewhere_with_status
- redirect_to :action => 'somewhere', :status => 301
- end
-end
-
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/render_spec_controller.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/render_spec_controller.rb
deleted file mode 100644
index 1efe61ff8..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/render_spec_controller.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-class RenderSpecController < ApplicationController
- prepend_view_path File.join(File.dirname(__FILE__), "..", "views")
-
- def some_action
- respond_to do |format|
- format.html
- format.js
- end
- end
-
- def action_which_renders_template_from_other_controller
- render :template => 'controller_spec/action_with_template'
- end
-
- def text_action
- render :text => "this is the text for this action"
- end
-
- def action_with_redirect
- redirect_to :action => :some_action
- end
-
- def action_with_partial
- render :partial => "a_partial"
- end
-
- def action_that_renders_nothing
- render :nothing => true
- end
-
- def action_with_alternate_layout
- render :layout => 'simple'
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/rjs_spec_controller.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/rjs_spec_controller.rb
deleted file mode 100644
index 4fd9a41c0..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/controllers/rjs_spec_controller.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-class RjsSpecController < ApplicationController
- prepend_view_path File.join(File.dirname(__FILE__), "..", "views")
-
- def replace_html
- end
-
- def insert_html
- end
-
- def replace
- end
-
- def hide_div
- end
-
- def hide_page_element
- end
-
- def replace_html_with_partial
- end
-
- def render_replace_html
- render :update do |page|
- page.replace_html 'mydiv', 'replacement text'
- page.replace_html 'myotherdiv', 'other replacement text'
- end
- end
-
- def render_replace_html_with_partial
- render :update do |page|
- page.replace_html 'mydiv', :partial => 'rjs_spec/replacement_partial'
- end
- end
-
- def render_insert_html
- render :update do |page|
- page.insert_html 'mydiv', 'replacement text'
- end
- end
-
- def render_replace
- render :update do |page|
- page.replace 'mydiv', 'replacement text'
- end
- end
-
- def render_hide_div
- render :update do |page|
- page.hide 'mydiv'
- end
- end
-
- def render_hide_page_element
- render :update do |page|
- page['mydiv'].hide
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/addition_helper.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/addition_helper.rb
deleted file mode 100644
index 14ad70c3e..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/addition_helper.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-module AdditionHelper
- def plus(addend)
- @addend + addend
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/explicit_helper.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/explicit_helper.rb
deleted file mode 100644
index f75d1ddcb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/explicit_helper.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-module ExplicitHelper
- def method_in_explicit_helper
- "<div>This is text from a method in the ExplicitHelper</div>"
- end
-
- # this is an example of a method spec'able with eval_erb in helper specs
- def prepend(arg, &block)
- begin # rails edge after 2.1.0 eliminated need for block.binding
- concat(arg) + block.call
- rescue
- concat(arg, block.binding) + block.call
- end
- end
-
- def named_url
- rspec_on_rails_specs_url
- end
-
- def named_path
- rspec_on_rails_specs_path
- end
-
- def params_foo
- params[:foo]
- end
-
- def session_foo
- session[:foo]
- end
-
- def request_thing
- request.thing
- end
-
- def flash_thing
- flash[:thing]
- end
-
- def method_using_output_buffer
- concat("the_text_from_concat")
- end
-
- def method_using_template
- update_page { |p| p["#some_id"].replace_html "" }
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/more_explicit_helper.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/more_explicit_helper.rb
deleted file mode 100644
index 7468741b2..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/more_explicit_helper.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-module MoreExplicitHelper
- def method_in_more_explicit_helper
- "<div>This is text from a method in the MoreExplicitHelper</div>"
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/plugin_application_helper.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/plugin_application_helper.rb
deleted file mode 100644
index 2107d2218..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/plugin_application_helper.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-# Methods added to this helper will be available to all templates in the application.
-module ApplicationHelper
- def method_in_plugin_application_helper
- "<div>This is text from a method in the ApplicationHelper</div>"
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/view_spec_helper.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/view_spec_helper.rb
deleted file mode 100644
index b05fc53f7..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/helpers/view_spec_helper.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-module ViewSpecHelper
- def method_in_helper
- "<div>This is text from a method in the ViewSpecHelper</div>"
- end
-
- def method_in_template_with_partial
- "<div>method_in_template_with_partial in ViewSpecHelper</div>"
- end
-
- def method_in_partial
- "<div>method_in_partial in ViewSpecHelper</div>"
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/models/animal.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/models/animal.rb
deleted file mode 100644
index 3ce078ad4..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/models/animal.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-class Animal < ActiveRecord::Base
- belongs_to :person
- validates_uniqueness_of :name
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/models/person.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/models/person.rb
deleted file mode 100644
index 7f9607e57..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/models/person.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class Person < ActiveRecord::Base
- has_many :animals do
- def pups
- find(:all, :conditions => 'age < 1')
- end
- def adults
- find(:all, :conditions => 'age >= 1')
- end
- end
- validates_presence_of :name
-
- def add_animal animal
- animal.person = self
- animals << animal
- animal.save
- end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/models/thing.rb b/vendor/gems/rspec-rails-1.3.3/spec/resources/models/thing.rb
deleted file mode 100644
index c674804ac..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/models/thing.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class Thing < ActiveRecord::Base
- validates_presence_of :name
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/_partial.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/_partial.html.erb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/_partial.html.erb
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb
deleted file mode 100644
index 8b1378917..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb
deleted file mode 100644
index 8b1378917..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_with_errors_in_template.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_with_errors_in_template.html.erb
deleted file mode 100644
index 0f957b2c8..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_with_errors_in_template.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<% raise %> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_with_template.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_with_template.html.erb
deleted file mode 100644
index 6e1f05847..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/controller_spec/action_with_template.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<div>This is action_with_template.rhtml</div>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/layouts/application.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/layouts/application.html.erb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/layouts/application.html.erb
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/layouts/simple.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/layouts/simple.html.erb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/layouts/simple.html.erb
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/objects/_object.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/objects/_object.html.erb
deleted file mode 100644
index b751f09c4..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/objects/_object.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= object.name %> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/_a_partial.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/_a_partial.html.erb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/_a_partial.html.erb
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/action_with_alternate_layout.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/action_with_alternate_layout.html.erb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/action_with_alternate_layout.html.erb
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/some_action.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/some_action.html.erb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/some_action.html.erb
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/some_action.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/some_action.js.rjs
deleted file mode 100644
index 4472f4b4c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/render_spec/some_action.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-# This is used for rails > 1.2.3 \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/_replacement_partial.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/_replacement_partial.html.erb
deleted file mode 100644
index d2820659c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/_replacement_partial.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-This is the text in the replacement partial. \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/hide_div.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/hide_div.js.rjs
deleted file mode 100644
index 1fe2139be..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/hide_div.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-page.hide 'mydiv'
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/hide_page_element.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/hide_page_element.js.rjs
deleted file mode 100644
index de1ebc9d0..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/hide_page_element.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-page['mydiv'].hide
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/insert_html.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/insert_html.js.rjs
deleted file mode 100644
index f8a59e0ca..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/insert_html.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-page.insert_html 'mydiv', 'replacement text'
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace.js.rjs
deleted file mode 100644
index aca59a97a..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-page.replace 'mydiv', 'replacement text'
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace_html.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace_html.js.rjs
deleted file mode 100644
index 717c598e6..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace_html.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-page.replace_html 'mydiv', 'replacement text' \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs
deleted file mode 100644
index 0531804dd..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-page.replace_html 'mydiv', :partial => 'rjs_spec/replacement_partial' \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/visual_effect.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/visual_effect.js.rjs
deleted file mode 100644
index 1c37b32ad..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/visual_effect.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-page.visual_effect :fade, 'mydiv'
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs
deleted file mode 100644
index 97cf6bbeb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs
+++ /dev/null
@@ -1 +0,0 @@
-page.visual_effect :toggle_blind, 'mydiv'
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/no_tags.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/no_tags.html.erb
deleted file mode 100644
index 877b90815..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/no_tags.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<!-THIS FILE HAS NO TAGS-> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb
deleted file mode 100644
index 281c6866c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<div></div> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb
deleted file mode 100644
index c664e76e7..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<div key="value"></div> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial.html.erb
deleted file mode 100644
index 39505da3d..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial.html.erb
+++ /dev/null
@@ -1,2 +0,0 @@
-<%= method_in_plugin_application_helper %>
-<%= method_in_partial %> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_used_twice.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_used_twice.html.erb
deleted file mode 100644
index e69de29bb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_used_twice.html.erb
+++ /dev/null
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_with_local_variable.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_with_local_variable.html.erb
deleted file mode 100644
index 47274481b..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_with_local_variable.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<div><%= x %></div> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_with_sub_partial.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_with_sub_partial.html.erb
deleted file mode 100644
index 90207a30d..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_partial_with_sub_partial.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= render :partial => 'partial', :object => partial %> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_spacer.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_spacer.html.erb
deleted file mode 100644
index c952f6e9a..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/_spacer.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<hr id="spacer" />
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/accessor.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/accessor.html.erb
deleted file mode 100644
index 807a3ca37..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/accessor.html.erb
+++ /dev/null
@@ -1,6 +0,0 @@
-<div id="session"><%= session[:key] %></div>
-<div id="params"><%= params[:key] %></div>
-<div id="flash"><%= flash[:key] %></div>
-<div id="flash_now"><%= flash[:now_key] %></div>
-<div id="controller"><%= params[:controller] %></div>
-<div id="action"><%= params[:action] %></div>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/block_helper.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/block_helper.html.erb
deleted file mode 100644
index 3a1dcd5de..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/block_helper.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<% if_allowed do %>
- <div>block helper was rendered</div>
-<% end %> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/entry_form.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/entry_form.html.erb
deleted file mode 100755
index 7b11d9723..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/entry_form.html.erb
+++ /dev/null
@@ -1,2 +0,0 @@
-<% form_tag do %>
-<% end %> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/explicit_helper.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/explicit_helper.html.erb
deleted file mode 100644
index 49aa081cd..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/explicit_helper.html.erb
+++ /dev/null
@@ -1,2 +0,0 @@
-<%= method_in_plugin_application_helper %>
-<%= method_in_explicit_helper %>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/foo/show.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/foo/show.html.erb
deleted file mode 100644
index 2cc5fd98e..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/foo/show.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= method_in_plugin_application_helper %>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/implicit_helper.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/implicit_helper.html.erb
deleted file mode 100644
index 816c66744..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/implicit_helper.html.erb
+++ /dev/null
@@ -1,2 +0,0 @@
-<%= method_in_plugin_application_helper %>
-<%= method_in_helper %>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/multiple_helpers.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/multiple_helpers.html.erb
deleted file mode 100644
index ae5a72b65..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/multiple_helpers.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= method_in_plugin_application_helper %>
-<%= method_in_explicit_helper %>
-<%= method_in_more_explicit_helper %> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/path_params.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/path_params.html.erb
deleted file mode 100644
index a31e98f83..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/path_params.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= params[:controller] %> \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/should_not_receive.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/should_not_receive.html.erb
deleted file mode 100644
index d3e5f441e..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/should_not_receive.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<% if @obj.render_partial? %>
- <%= render :partial => 'some_partial' %>
-<% end %>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial.html.erb
deleted file mode 100644
index 0e13ba3b2..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial.html.erb
+++ /dev/null
@@ -1,5 +0,0 @@
-<%= method_in_template_with_partial %>
-<%= render :partial => 'partial' %>
-
-<%= render :partial => 'partial_used_twice' %>
-<%= render :partial => 'partial_used_twice' %>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial_using_collection.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial_using_collection.html.erb
deleted file mode 100644
index 79d82156e..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial_using_collection.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= render :partial => 'partial',
- :collection => ['Alice', 'Bob'],
- :spacer_template => 'spacer' %>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial_with_array.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial_with_array.html.erb
deleted file mode 100644
index 7d53476d6..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/template_with_partial_with_array.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= render :partial => @array %>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/view_helpers.html.erb b/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/view_helpers.html.erb
deleted file mode 100644
index 7e4f3df15..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/resources/views/view_spec/view_helpers.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<span><%= link_to "edit", "this_is_the_link" %></span>
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/assigns_hash_proxy_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/assigns_hash_proxy_spec.rb
deleted file mode 100644
index 5b572133c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/assigns_hash_proxy_spec.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-require 'spec_helper'
-
-describe "AssignsHashProxy" do
- def orig_assigns
- @object.assigns
- end
-
- class Foo
- def initialize(bar)
- @bar = bar
- end
- attr_reader :bar
-
- def ==(other)
- self.bar == other.bar
- end
- end
-
- before(:each) do
- @object = Class.new do
- def assigns; @assigns ||= Hash.new; end
- end.new
- @proxy = Spec::Rails::Example::AssignsHashProxy.new(self) {@object}
- end
-
- it "doesn't wig out on objects that define their own == method" do
- @object.assigns['foo'] = Foo.new(1)
- @proxy['foo'].should == Foo.new(1)
- end
-
- it "should set ivars on object using string" do
- @proxy['foo'] = 'bar'
- @object.instance_eval{@foo}.should == 'bar'
- end
-
- it "should set ivars on object using symbol" do
- @proxy[:foo] = 'bar'
- @object.instance_eval{@foo}.should == 'bar'
- end
-
- it "should access object's assigns with a string" do
- @object.assigns['foo'] = 'bar'
- @proxy['foo'].should == 'bar'
- end
-
- it "should access object's assigns with a symbol" do
- @object.assigns['foo'] = 'bar'
- @proxy[:foo].should == 'bar'
- end
-
- it "should access object's ivars with a string" do
- @object.instance_variable_set('@foo', 'bar')
- @proxy['foo'].should == 'bar'
- end
-
- it "should access object's ivars with a symbol" do
- @object.instance_variable_set('@foo', 'bar')
- @proxy[:foo].should == 'bar'
- end
-
- it "should iterate through each element like a Hash" do
- values = {
- 'foo' => 1,
- 'bar' => 2,
- 'baz' => 3
- }
- @proxy['foo'] = values['foo']
- @proxy['bar'] = values['bar']
- @proxy['baz'] = values['baz']
-
- @proxy.each do |key, value|
- key.should == key
- value.should == values[key]
- end
- end
-
- it "should delete the ivar of passed in key" do
- @object.instance_variable_set('@foo', 'bar')
- @proxy.delete('foo')
- @proxy['foo'].should be_nil
- end
-
- it "should delete the assigned element of passed in key" do
- @object.assigns['foo'] = 'bar'
- @proxy.delete('foo')
- @proxy['foo'].should be_nil
- end
-
- it "should detect the presence of a key in assigns" do
- @object.assigns['foo'] = 'bar'
- @proxy.has_key?('foo').should == true
- @proxy.has_key?('bar').should == false
- end
-
- it "should expose values set in example back to the example" do
- @proxy[:foo] = 'bar'
- @proxy[:foo].should == 'bar'
- end
-
- it "should allow assignment of false via proxy" do
- @proxy['foo'] = false
- @proxy['foo'].should be_false
- end
-
- it "should allow assignment of false" do
- @object.instance_variable_set('@foo',false)
- @proxy['foo'].should be_false
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/configuration_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/configuration_spec.rb
deleted file mode 100644
index 391dbb2fe..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/configuration_spec.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Runner
- describe Configuration do
-
- def config
- @config ||= Configuration.new
- end
-
- describe "#use_transactional_fixtures" do
- it "should return ActiveSupport::TestCase.use_transactional_fixtures" do
- config.use_transactional_fixtures.should == ActiveSupport::TestCase.use_transactional_fixtures
- end
-
- it "should set ActiveSupport::TestCase.use_transactional_fixtures to false" do
- ActiveSupport::TestCase.should_receive(:use_transactional_fixtures=).with(false)
- config.use_transactional_fixtures = false
- end
-
- it "should set ActiveSupport::TestCase.use_transactional_fixtures to true" do
- ActiveSupport::TestCase.should_receive(:use_transactional_fixtures=).with(true)
- config.use_transactional_fixtures = true
- end
- end
-
- describe "#use_instantiated_fixtures" do
- it "should return ActiveSupport::TestCase.use_transactional_fixtures" do
- config.use_instantiated_fixtures.should == ActiveSupport::TestCase.use_instantiated_fixtures
- end
-
- it "should set ActiveSupport::TestCase.use_instantiated_fixtures to false" do
- ActiveSupport::TestCase.should_receive(:use_instantiated_fixtures=).with(false)
- config.use_instantiated_fixtures = false
- end
-
- it "should set ActiveSupport::TestCase.use_instantiated_fixtures to true" do
- ActiveSupport::TestCase.should_receive(:use_instantiated_fixtures=).with(true)
- config.use_instantiated_fixtures = true
- end
- end
-
- describe "#fixture_path" do
- it "should default to RAILS_ROOT + '/spec/fixtures'" do
- config.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
- ActiveSupport::TestCase.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
- ActionController::IntegrationTest.fixture_path.should == RAILS_ROOT + '/spec/fixtures'
- end
-
- it "should set fixture_path" do
- config.fixture_path = "/new/path"
- config.fixture_path.should == "/new/path"
- ActiveSupport::TestCase.fixture_path.should == "/new/path"
- ActionController::IntegrationTest.fixture_path.should == "/new/path"
- end
- end
-
- describe "#global_fixtures" do
- it "should set fixtures on TestCase" do
- ActiveSupport::TestCase.should_receive(:fixtures).with(:blah)
- config.global_fixtures = [:blah]
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/controller_example_group_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/controller_example_group_spec.rb
deleted file mode 100644
index 3a03206ec..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/controller_example_group_spec.rb
+++ /dev/null
@@ -1,307 +0,0 @@
-require 'spec_helper'
-require 'controller_spec_controller'
-require File.join(File.dirname(__FILE__), "/shared_routing_example_group_examples.rb")
-
-['integration', 'isolation'].each do |mode|
- describe "A controller example running in #{mode} mode", :type => :controller do
- controller_name :controller_spec
- integrate_views if mode == 'integration'
-
- accesses_configured_helper_methods
- it_should_behave_like "a routing example"
-
- describe "with an implicit subject" do
- it "uses the controller" do
- subject.should == controller
- end
- end
-
- describe "with a specified subject" do
- subject { 'specified' }
-
- it "uses the specified subject" do
- subject.should == 'specified'
- end
- end
-
- it "should provide controller.session as session" do
- get 'action_with_template'
- session.should equal(controller.session)
- end
-
- it "should provide the same session object before and after the action" do
- session_before = session
- get 'action_with_template'
- session.should equal(session_before)
- end
-
- it "should keep the same data in the session before and after the action" do
- session[:foo] = :bar
- get 'action_with_template'
- session[:foo].should == :bar
- end
-
- it "should ensure controller.session is NOT nil before the action" do
- controller.session.should_not be_nil
- get 'action_with_template'
- end
-
- it "should ensure controller.session is NOT nil after the action" do
- get 'action_with_template'
- controller.session.should_not be_nil
- end
-
- it "should allow specifying a partial with partial name only" do
- get 'action_with_partial'
- response.should render_template("_partial")
- end
-
- it "should allow specifying a partial with should_receive(:render)" do
- controller.should_receive(:render).with(:partial => "controller_spec/partial")
- get 'action_with_partial'
- end
-
- it "should allow specifying a partial with should_receive(:render) with object" do
- controller.should_receive(:render).with(:partial => "controller_spec/partial", :object => "something")
- get 'action_with_partial_with_object', :thing => "something"
- end
-
- it "should allow specifying a partial with should_receive(:render) with locals" do
- controller.should_receive(:render).with(:partial => "controller_spec/partial", :locals => {:thing => "something"})
- get 'action_with_partial_with_locals', :thing => "something"
- end
-
- it "should yield to render :update" do
- template = stub("template")
- controller.should_receive(:render).with(:update).and_yield(template)
- template.should_receive(:replace).with(:bottom, "replace_me", :partial => "non_existent_partial")
- get 'action_with_render_update'
- end
-
- it "should allow a path relative to RAILS_ROOT/app/views/ when specifying a partial" do
- get 'action_with_partial'
- response.should render_template("controller_spec/_partial")
- end
-
- it "should provide access to flash" do
- get 'action_which_sets_flash'
- flash[:flash_key].should == "flash value"
- end
-
- it "should provide access to flash values set after a session reset" do
- get 'action_setting_flash_after_session_reset'
- flash[:after_reset].should == "available"
- end
-
- it "should not provide access to flash values set before a session reset" do
- get 'action_setting_flash_before_session_reset'
- flash[:before_reset].should_not == "available"
- end
-
- it "should provide access to session" do
- session[:session_key] = "session value"
- lambda do
- get 'action_which_gets_session', :expected => "session value"
- end.should_not raise_error
- end
-
- it "allows inline rendering" do
- get 'action_that_renders_inline'
- response.body.should == "inline code"
- end
-
- describe "handling should_receive(:render)" do
- it "should warn" do
- controller.should_receive(:render).with(:template => "controller_spec/action_with_template")
- get :action_with_template
- end
- end
-
- describe "handling should_not_receive(:render)" do
- it "should warn" do
- controller.should_not_receive(:render).with(:template => "the/wrong/template")
- get :action_with_template
- end
- end
-
- describe "setting cookies in the request" do
-
- it "should support a String key" do
- cookies['cookie_key'] = 'cookie value'
- get 'action_which_gets_cookie', :expected => "cookie value"
- end
-
- it "should support a Symbol key" do
- cookies[:cookie_key] = 'cookie value'
- get 'action_which_gets_cookie', :expected => "cookie value"
- end
-
- it "should support a Hash value" do
- cookies[:cookie_key] = {'value' => 'cookie value', 'path' => '/not/default'}
- get 'action_which_gets_cookie', :expected => {'value' => 'cookie value', 'path' => '/not/default'}
- end
-
- end
-
- describe "reading cookies from the response" do
-
- it "should support a Symbol key" do
- get 'action_which_sets_cookie', :value => "cookie value"
- if ::Rails::VERSION::STRING >= "2.3"
- cookies[:cookie_key].should match("cookie[\+ ]value")
- else
- cookies[:cookie_key].should == ["cookie value"]
- end
- end
-
- it "should support a String key" do
- get 'action_which_sets_cookie', :value => "cookie value"
- if ::Rails::VERSION::STRING >= "2.3"
- cookies['cookie_key'].should match("cookie[\+ ]value")
- else
- cookies['cookie_key'].should == ["cookie value"]
- end
- end
-
- end
-
- it "should expose instance vars through the assigns hash" do
- get 'action_setting_the_assigns_hash'
- assigns[:indirect_assigns_key].should == :indirect_assigns_key_value
- end
-
- it "should expose instance vars through the assigns hash that are set to false" do
- get 'action_that_assigns_false_to_a_variable'
- assigns[:a_variable].should be_false
- end
-
- it "should NOT complain when calling should_receive with arguments other than :render" do
- controller.should_receive(:anything_besides_render)
- lambda {
- controller.rspec_verify
- }.should raise_error(Exception, /expected :anything_besides_render/)
- end
-
- it "should not run a skipped before_filter" do
- lambda {
- get 'action_with_skipped_before_filter'
- }.should_not raise_error
- end
-
- if ::Rails::VERSION::STRING > '2.1'
- describe "extending #render on a controller" do
- it "supports two arguments (as with rails 2.1)" do
- get 'action_with_two_arg_render'
- response.body.should =~ /new Effect\.Highlight/
- end
- end
- end
-
- it "should access headers" do
- request.env['ACCEPT'] = "application/json"
- get 'action_that_returns_headers', :header => 'ACCEPT'
- response.body.should == "application/json"
- end
- end
-
- describe "Given a controller spec for RedirectSpecController running in #{mode} mode", :type => :controller do
- controller_name :redirect_spec
- integrate_views if mode == 'integration'
-
- it "a redirect should ignore the absence of a template" do
- get 'action_with_redirect_to_somewhere'
- response.should be_redirect
- response.redirect_url.should == "http://test.host/redirect_spec/somewhere"
- response.should redirect_to("http://test.host/redirect_spec/somewhere")
- end
-
- it "a call to response.should redirect_to should fail if no redirect" do
- get 'action_with_no_redirect'
- lambda {
- response.redirect?.should be_true
- }.should fail
- lambda {
- response.should redirect_to("http://test.host/redirect_spec/somewhere")
- }.should fail_with("expected redirect to \"http://test.host/redirect_spec/somewhere\", got no redirect")
- end
- end
-
- describe "Given a controller spec running in #{mode} mode" do
- example_group = describe "A controller spec"
- # , :type => :controller do
- # integrate_views if mode == 'integration'
- it "a spec in a context without controller_name set should fail with a useful warning" do
- pending("need a new way to deal with examples that should_raise")
- # ,
- # :should_raise => [
- # Spec::Expectations::ExpectationNotMetError,
- # /You have to declare the controller name in controller specs/
- # ] do
- end
- end
-
-end
-
-['integration', 'isolation'].each do |mode|
- describe "A controller example running in #{mode} mode", :type => :controller do
- controller_name :controller_inheriting_from_application_controller
- integrate_views if mode == 'integration'
-
- it "should only have a before filter inherited from ApplicationController run once..." do
- controller.should_receive(:i_should_only_be_run_once).once
- get :action_with_inherited_before_filter
- end
- end
-end
-
-describe ControllerSpecController, :type => :controller do
- it "should use the controller passed to #describe" do
- end
-end
-
-describe "A controller spec with controller_name set", :type => :controller do
- controller_name :controller_spec
-
- describe "nested" do
- it "should inherit the controller name" do
- get 'action_with_template'
- response.should be_success
- end
- end
-end
-
-module Spec
- module Rails
- module Example
- describe ApplicationController, :type => :controller do
- describe "controller_name" do
- controller_name :controller_spec
- it "overrides the controller class submitted to the outermost group" do
- subject.should be_an_instance_of(ControllerSpecController)
- end
- describe "in a nested group" do
- it "overrides the controller class submitted to the outermost group" do
- subject.should be_an_instance_of(ControllerSpecController)
- end
- describe "(doubly nested)" do
- it "overrides the controller class submitted to the outermost group" do
- subject.should be_an_instance_of(ControllerSpecController)
- end
- end
- end
- end
- end
-
- describe ControllerExampleGroup do
- it "should clear its name from the description" do
- group = describe("foo", :type => :controller) do
- $nested_group = describe("bar") do
- end
- end
- group.description.to_s.should == "foo"
- $nested_group.description.to_s.should == "foo bar"
- end
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/controller_isolation_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/controller_isolation_spec.rb
deleted file mode 100644
index 8a5541871..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/controller_isolation_spec.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-require 'spec_helper'
-require 'controller_spec_controller'
-
-describe "a controller spec running in isolation mode", :type => :controller do
- controller_name :controller_spec
-
- it "does not care if the specified template doesn't exist" do
- get 'some_action'
- response.should be_success
- response.should render_template("template/that/does/not/actually/exist")
- end
-
- it "does not care if the implied template doesn't exist" do
- get 'some_action_with_implied_template'
- response.should be_success
- response.should render_template("some_action_with_implied_template")
- end
-
- it "does not care if the template has errors" do
- get 'action_with_errors_in_template'
- response.should be_success
- response.should render_template("action_with_errors_in_template")
- end
-
- it "does not care if the template exists but the action doesn't" do
- get 'non_existent_action_with_existent_template'
- response.should be_success
- end
-
- it "fails if the neither the action nor the template exist" do
- expect {get 'non_existent_action'}.to raise_error(ActionController::UnknownAction)
- end
-end
-
-describe "a controller spec running in integration mode", :type => :controller do
- controller_name :controller_spec
- integrate_views
-
- it "renders a template" do
- get 'action_with_template'
- response.should be_success
- response.should have_tag('div', 'This is action_with_template.rhtml')
- end
-
- it "fails if the template doesn't exist" do
- error = defined?(ActionController::MissingTemplate) ? ActionController::MissingTemplate : ActionView::MissingTemplate
- lambda { get 'some_action' }.should raise_error(error)
- end
-
- it "fails if the template has errors" do
- lambda { get 'action_with_errors_in_template' }.should raise_error(ActionView::TemplateError)
- end
-
- it "fails if the action doesn't exist" do
- expect {get 'non_existent_action'}.to raise_error(ActionController::UnknownAction)
- end
-
- describe "nested" do
- it "should render a template" do
- get 'action_with_template'
- response.should be_success
- response.should have_tag('div', 'This is action_with_template.rhtml')
- end
-
- describe "with integrate_views turned off" do
- integrate_views false
-
- it "should not care if the template doesn't exist" do
- get 'some_action'
- response.should be_success
- response.should render_template("template/that/does/not/actually/exist")
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/cookies_proxy_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/cookies_proxy_spec.rb
deleted file mode 100644
index 141763801..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/cookies_proxy_spec.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-require 'spec_helper'
-
-class CookiesProxyExamplesController < ActionController::Base
- def index
- cookies[:key] = cookies[:key]
- render :text => ""
- end
-end
-
-module Spec
- module Rails
- module Example
- describe CookiesProxy, :type => :controller do
- controller_name :cookies_proxy_examples
-
- describe "with a String key" do
-
- it "should accept a String value" do
- proxy = CookiesProxy.new(self)
- proxy['key'] = 'value'
- get :index
- if ::Rails::VERSION::STRING >= "2.3"
- proxy['key'].should == 'value'
- else
- proxy['key'].should == ['value']
- end
- end
-
- it "should accept a Hash value" do
- proxy = CookiesProxy.new(self)
- proxy['key'] = { :value => 'value', :expires => expiration = 1.hour.from_now, :path => path = '/path' }
- get :index
- if ::Rails::VERSION::STRING >= "2.3"
- proxy['key'].should == 'value'
- else
- proxy['key'].should == ['value']
- proxy['key'].value.should == ['value']
- proxy['key'].expires.should == expiration
- proxy['key'].path.should == path
- end
- end
-
- end
-
- describe "with a Symbol key" do
-
- it "should accept a String value" do
- proxy = CookiesProxy.new(self)
- proxy[:key] = 'value'
- get :index
- if ::Rails::VERSION::STRING >= "2.3"
- proxy[:key].should == 'value'
- else
- proxy[:key].should == ['value']
- end
- end
-
- it "should accept a Hash value" do
- proxy = CookiesProxy.new(self)
- proxy[:key] = { :value => 'value', :expires => expiration = 1.hour.from_now, :path => path = '/path' }
- get :index
- if ::Rails::VERSION::STRING >= "2.3"
- proxy[:key].should == 'value'
- else
- proxy[:key].should == ['value']
- proxy[:key].value.should == ['value']
- proxy[:key].expires.should == expiration
- proxy[:key].path.should == path
- end
- end
-
- end
-
- describe "#delete" do
- it "should delete from the response cookies" do
- proxy = CookiesProxy.new(self)
- response_cookies = mock('cookies')
- response.should_receive(:cookies).and_return(response_cookies)
- response_cookies.should_receive(:delete).with('key')
- proxy.delete :key
- end
- end
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/error_handling_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/error_handling_spec.rb
deleted file mode 100644
index 71385eed1..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/error_handling_spec.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-require 'spec_helper'
-require 'controller_spec_controller'
-
-['integration', 'isolation'].each do |mode|
- describe "A controller example running in #{mode} mode", :type => :controller do
- controller_name :controller_spec
- integrate_views if mode == 'integration'
-
- describe "without use_rails_error_handling!" do
- describe "with an error that is *not* rescued" do
- it "raises the error" do
- lambda do
- get 'un_rescued_error_action'
- end.should raise_error(ControllerSpecController::UnRescuedError)
- end
- end
- describe "with an error that *is* rescued" do
- it "returns a 200" do
- get 'rescued_error_action'
- response.response_code.should == 200
- end
- end
- end
-
- describe "with deprecated use_rails_error_handling!" do
- before(:each) do
- Kernel.stub!(:warn)
- end
-
- it "warns of deprecation" do
- Kernel.should_receive(:warn).with(/DEPRECATION NOTICE/)
- controller.use_rails_error_handling!
- end
-
- describe "with an error that is *not* rescued" do
- it "returns the error code" do
- controller.use_rails_error_handling!
- get 'un_rescued_error_action'
- response.response_code.should == 500
- end
- end
-
- describe "with an error that *is* rescued" do
- it "returns a 200" do
- controller.use_rails_error_handling!
- get 'rescued_error_action'
- response.response_code.should == 200
- end
- end
- end
-
- describe "with rescue_action_in_public!" do
- describe "with an error that is *not* rescued" do
- it "returns the error code" do
- rescue_action_in_public!
- get 'un_rescued_error_action'
- response.response_code.should == 500
- end
- end
-
- describe "with an error that *is* rescued" do
- it "returns a 200" do
- rescue_action_in_public!
- get 'rescued_error_action'
- response.response_code.should == 200
- end
- end
- end
-
- describe "with bypass_rescue" do
- describe "with an error that is *not* rescued" do
- it "raises the error" do
- bypass_rescue
- lambda do
- get 'un_rescued_error_action'
- end.should raise_error(ControllerSpecController::UnRescuedError)
- end
- end
-
- describe "with an error that *is* rescued" do
- it "raises the error" do
- bypass_rescue
- lambda do
- get 'rescued_error_action'
- end.should raise_error(ControllerSpecController::RescuedError)
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/example_group_factory_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/example_group_factory_spec.rb
deleted file mode 100644
index 792346f7e..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/example_group_factory_spec.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Example
- describe ExampleGroupFactory do
- it "should return a ModelExampleGroup when given :type => :model" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :type => :model
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
- end
-
- it "should return a ModelExampleGroup when given :location => '/blah/spec/models/'" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '/blah/spec/models/blah.rb'
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
- end
-
- it "should return a ModelExampleGroup when given :location => '\\blah\\spec\\models\\' (windows format)" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '\\blah\\spec\\models\\blah.rb'
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ModelExampleGroup
- end
-
- it "should return an ActiveSupport::TestCase when given :location => '/blah/spec/foo/' (anything other than controllers, views and helpers)" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '/blah/spec/foo/blah.rb'
- ) {}
- example_group.superclass.should == ActiveSupport::TestCase
- end
-
- it "should return an ActiveSupport::TestCase when given :location => '\\blah\\spec\\foo\\' (windows format) (anything other than controllers, views and helpers)" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '\\blah\\spec\\foo\\blah.rb'
- ) {}
- example_group.superclass.should == ActiveSupport::TestCase
- end
-
- it "should return a ViewExampleGroup when given :type => :view" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :type => :view
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
- end
-
- it "should return a ViewExampleGroup when given :location => '/blah/spec/views/'" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '/blah/spec/views/blah.rb'
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
- end
-
- it "should return a ModelExampleGroup when given :location => '\\blah\\spec\\views\\' (windows format)" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '\\blah\\spec\\views\\blah.rb'
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ViewExampleGroup
- end
-
- it "should return a HelperExampleGroup when given :type => :helper" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :type => :helper
- ) {}
- example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
- end
-
- it "should return a HelperExampleGroup when given :location => '/blah/spec/helpers/'" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '/blah/spec/helpers/blah.rb'
- ) {}
- example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
- end
-
- it "should return a ModelExampleGroup when given :location => '\\blah\\spec\\helpers\\' (windows format)" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '\\blah\\spec\\helpers\\blah.rb'
- ) {}
- example_group.superclass.should == Spec::Rails::Example::HelperExampleGroup
- end
-
- it "should return a ControllerExampleGroup when given :type => :controller" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :type => :controller
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
- end
-
- it "should return a ControllerExampleGroup when given :location => '/blah/spec/controllers/'" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '/blah/spec/controllers/blah.rb'
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
- end
-
- it "should return a ModelExampleGroup when given :location => '\\blah\\spec\\controllers\\' (windows format)" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '\\blah\\spec\\controllers\\blah.rb'
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
- end
-
- it "should favor the :type over the :location" do
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
- "name", :location => '/blah/spec/models/blah.rb', :type => :controller
- ) {}
- example_group.superclass.should == Spec::Rails::Example::ControllerExampleGroup
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/helper_example_group_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/helper_example_group_spec.rb
deleted file mode 100755
index 09ad52927..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/helper_example_group_spec.rb
+++ /dev/null
@@ -1,247 +0,0 @@
-require 'spec_helper'
-Spec::Runner.configuration.global_fixtures = :people
-
-describe ExplicitHelper, :type => :helper do
- include ExplicitHelper
-
- it "should not require naming the helper if describe is passed a type" do
- method_in_explicit_helper.should match(/text from a method/)
- helper.method_in_explicit_helper.should match(/text from a method/)
- end
-end
-
-module Spec
- module Rails
- module Example
- describe HelperExampleGroup, :type => :helper do
- helper_name :explicit
-
- accesses_configured_helper_methods
-
- it "DEPRECATED should have direct access to methods defined in helpers" do
- method_in_explicit_helper.should =~ /text from a method/
- end
-
- it "should expose the helper with the #helper method" do
- helper.method_in_explicit_helper.should =~ /text from a method/
- end
-
- it "should have access to named routes" do
- rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
- rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
-
- helper.named_url.should == "http://test.host/rspec_on_rails_specs"
- helper.named_path.should == "/rspec_on_rails_specs"
- end
-
- it "should fail if the helper method deson't exist" do
- lambda { non_existent_helper_method }.should raise_error(NameError)
- lambda { helper.non_existent_helper_method }.should raise_error(NameError)
- end
-
- it "should have access to session" do
- session[:foo] = 'bar'
- session_foo.should == 'bar'
- helper.session_foo.should == 'bar'
- end
-
- it "should have access to params" do
- params[:foo] = 'bar'
- params_foo.should == 'bar'
- helper.params_foo.should == 'bar'
- end
-
- it "should have access to request" do
- request.stub!(:thing).and_return('bar')
- request_thing.should == 'bar'
- helper.request_thing.should == 'bar'
- end
-
- it "should have access to flash" do
- flash[:thing] = 'camera'
- flash_thing.should == 'camera'
- helper.flash_thing.should == 'camera'
- end
- end
-
- describe HelperExampleGroup, "#eval_erb", :type => :helper do
- helper_name :explicit
-
- it "should support methods that accept blocks" do
- eval_erb("<% prepend 'foo' do %>bar<% end %>").should == "foobar"
- end
- end
-
- describe HelperExampleGroup, ".fixtures", :type => :helper do
- helper_name :explicit
- fixtures :animals
-
- it "should load fixtures" do
- pig = animals(:pig)
- pig.class.should == Animal
- end
-
- it "should load global fixtures" do
- lachie = people(:lachie)
- lachie.class.should == Person
- end
- end
-
- describe "methods from standard helpers", :type => :helper do
- helper_name :explicit
- it "should be exposed to the helper" do
- helper.link_to("Foo","http://bar").should have_tag("a")
- end
- end
-
- describe HelperExampleGroup, "included modules", :type => :helper do
- helpers = [
- ActionView::Helpers::ActiveRecordHelper,
- ActionView::Helpers::AssetTagHelper,
- ActionView::Helpers::BenchmarkHelper,
- ActionView::Helpers::CacheHelper,
- ActionView::Helpers::CaptureHelper,
- ActionView::Helpers::DateHelper,
- ActionView::Helpers::DebugHelper,
- ActionView::Helpers::FormHelper,
- ActionView::Helpers::FormOptionsHelper,
- ActionView::Helpers::FormTagHelper,
- ActionView::Helpers::JavaScriptHelper,
- ActionView::Helpers::NumberHelper,
- ActionView::Helpers::PrototypeHelper,
- ActionView::Helpers::ScriptaculousHelper,
- ActionView::Helpers::TagHelper,
- ActionView::Helpers::TextHelper,
- ActionView::Helpers::UrlHelper
- ]
- helpers.each do |helper_module|
- it "should include #{helper_module}" do
- self.class.ancestors.should include(helper_module)
- helper.class.ancestors.should include(helper_module)
- end
- end
- end
-
- # TODO: BT - Helper Examples should proxy method_missing to a Rails View instance.
- # When that is done, remove this method
- describe HelperExampleGroup, "#protect_against_forgery?", :type => :helper do
- it "should return false" do
- protect_against_forgery?.should be_false
- helper.protect_against_forgery?.should be_false
- end
- end
-
- describe HelperExampleGroup, "#assigns", :type => :helper do
- helper_name :addition
- it "should expose variables to helper" do
- assigns[:addend] = 3
- helper.plus(4).should == 7
- end
-
- it "should make helper ivars available in example" do
- assigns[:addend] = 3
- assigns[:addend].should == 3
- end
- end
-
- describe HelperExampleGroup, "using a helper that uses output_buffer inside helper", :type => :helper do
- helper_name :explicit
-
- before(:each) do
- if ::Rails::VERSION::STRING < "2.2"
- pending("need to get this new feature working against pre 2.2 versions of rails")
- end
- end
-
- it "should not raise an error" do
- lambda { method_using_output_buffer }.should_not raise_error
- end
-
- it "should put the output in the output_buffer" do
- method_using_output_buffer
- output_buffer.should == "the_text_from_concat"
- end
- end
-
- describe HelperExampleGroup, "using a helper that tries to access @template", :type => :helper do
- helper_name :explicit
-
- it "should not raise an error" do
- lambda { method_using_template }.should_not raise_error
- end
-
- it "should have the correct output" do
- method_using_template.should have_text(/#some_id/)
- end
- end
-
- # both specs the same as textmate invokes first-then-second but rake spec:plugins:rspec_on_rails invokes second-then-first
- describe HelperExampleGroup, "new helper for each spec - instance variables side effects are isolated", :type=> :helper do
- it 'should be able to set an instance variable on the helper on a new instance of the helper' do
- helper.instance_variable_get(:@test_instance_var).should be_nil
- helper.instance_variable_set(:@test_instance_var, :first_value)
- helper.instance_variable_get(:@test_instance_var).should == :first_value
- end
-
- it 'should get a clean copy of the helper with no saved instance variables from the last run' do
- helper.instance_variable_get(:@test_instance_var).should be_nil
- helper.instance_variable_set(:@test_instance_var, :second_value)
- helper.instance_variable_get(:@test_instance_var).should == :second_value
- end
- end
- end
- end
-end
-
-module Bug11223
- # see http://rubyforge.org/tracker/index.php?func=detail&aid=11223&group_id=797&atid=3149
- describe 'Accessing flash from helper spec', :type => :helper do
- it 'should not raise an error' do
- lambda { flash['test'] }.should_not raise_error
- end
- end
-end
-
-module Spec
- module Rails
- module Example
- describe HelperExampleGroup do
- it "should clear its name from the description" do
- group = describe("foo", :type => :helper) do
- $nested_group = describe("bar") do
- end
- end
- group.description.to_s.should == "foo"
- $nested_group.description.to_s.should == "foo bar"
- end
- end
- end
- end
-end
-
-module Bug719
- # see http://rspec.lighthouseapp.com/projects/5645/tickets/719
- # FIXME - helper and example provided in ticket. The example did
- # fail initially, so running it now shows that the bug is fixed,
- # but this doesn't serve as a good internal example.
- module ImagesHelper
- def hide_images_button
- content_tag :div, :class => :hide_images_button do
- button_to_function "Hide Images", :id => :hide_images_button do |page|
- page[:more_images_button].toggle
- page[:image_browser].toggle
- end
- end
- end
- end
-
- describe ImagesHelper, :type => :helper do
- it "should render a hide_images_button" do
- helper.hide_images_button.should have_tag('div[class=?]','hide_images_button') do
- with_tag('input[id=?][type=?][value=?][onclick^=?]',
- 'hide_images_button', 'button', 'Hide Images',
- "$(&quot;more_images_button&quot;).toggle();\n$(&quot;image_browser&quot;).toggle();;")
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/model_example_group_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/model_example_group_spec.rb
deleted file mode 100644
index 55138a9aa..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/model_example_group_spec.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'spec_helper'
-
-module Spec
- module Rails
- module Example
- describe ModelExampleGroup do
- accesses_configured_helper_methods
-
- if defined?(ActiveRecord::TestCase)
- it "derives from ActiveRecord::TestCase" do
- group = describe("foo", :type => :model) do; end
- group.ancestors.should include(ActiveRecord::TestCase)
- end
- else
- it "derives from ActiveSupport::TestCase" do
- group = describe("foo", :type => :model) do; end
- group.ancestors.should include(ActiveSupport::TestCase)
- end
- end
-
- it "clears its name from the description" do
- group = describe("foo", :type => :model) do
- $nested_group = describe("bar") do
- end
- end
- group.description.to_s.should == "foo"
- $nested_group.description.to_s.should == "foo bar"
- end
- end
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/routing_example_group_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/routing_example_group_spec.rb
deleted file mode 100644
index 9da50c0cc..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/routing_example_group_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'spec_helper'
-require 'controller_spec_controller'
-require File.join(File.dirname(__FILE__), "/shared_routing_example_group_examples.rb")
-
-describe "Routing Examples", :type => :routing do
- it_should_behave_like "a routing example"
- it_should_behave_like "a be routable spec"
- it_should_behave_like "a route to spec"
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/shared_routing_example_group_examples.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/shared_routing_example_group_examples.rb
deleted file mode 100644
index 6276f453c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/shared_routing_example_group_examples.rb
+++ /dev/null
@@ -1,237 +0,0 @@
-class CustomRouteSpecController < ActionController::Base; end
-class RspecOnRailsSpecsController < ActionController::Base; end
-
-shared_examples_for "a routing example" do
- describe "using backward compatible route_for()" do
- it "translates GET-only paths to be explicit" do
- self.should_receive(:assert_routing).with(hash_including(:method => :get), anything, {}, anything)
- route_for(:controller => "controller_spec", :action => "some_action").
- should == "/controller_spec/some_action"
- end
-
- it "uses assert_routing to specify that the :controller and :action are involved" do
- @route = { :controller => "controller_spec", :action => "some_action" }
- self.should_receive(:assert_routing).with(anything, @route, {}, anything)
- route_for(@route).
- should == "/controller_spec/some_action"
- end
-
- it "passes extra args through to assert_routing" do
- @route = { :controller => "controller_spec", :action => "some_action" }
- self.should_receive(:assert_routing).with(anything, anything, {}, { :a => "1", :b => "2" } )
- route_for(@route).
- should == "/controller_spec/some_action?a=1&b=2"
- end
-
- it "passes with an existing route" do
- route_for(:controller => "controller_spec", :action => "some_action").
- should == "/controller_spec/some_action"
- end
-
- it "passes with an existing route with additional parameters" do
- route_for(:controller => "controller_spec", :action => "some_action", :param => '1').
- should == "/controller_spec/some_action?param=1"
- end
-
- it "recognizes routes with methods besides :get" do
- should_receive(:assert_routing).with(hash_including(:method => :put), anything, {}, anything)
-
- route_for(:controller => "rspec_on_rails_specs", :action => "update", :id => "37").
- should == {:path => "/rspec_on_rails_specs/37", :method => :put}
- end
-
- describe "failing due to bad path:" do
- it "raises routing error and suggests should_not be_routeable()" do
- lambda {
- route_for(:controller => "rspec_on_rails_specs", :action => "nonexistent", :id => "37") ==
- {:path => "/rspec_on_rails_specs/bad_route/37", :method => :put}
- }.should raise_error( ActionController::RoutingError, /suggest.*should_not be_routable/ )
- end
- end
-
- describe "failing due to params mismatch:" do
- it "re-raises assertion and suggests should_not be_routeable()" do
- lambda {
- route_for(:controller => "rspec_on_rails_specs", :action => "nonexistent", :id => "37") ==
- {:path => "/rspec_on_rails_specs/37", :method => :put}
- }.should raise_error( ::Test::Unit::AssertionFailedError, /suggest.*should_not be_routable/ )
- end
- end
-
- describe "failing due to wrong HTTP method" do
- it "raises method error and suggest should_not be_routable()" do
- lambda {
- route_for(:controller => "rspec_on_rails_specs", :action => "update", :id => "37").
- should == {:path => "/rspec_on_rails_specs/37", :method => :post}
- }.should raise_error(ActionController::MethodNotAllowed) { |error| error.should_not =~ /should_not be_routable/ }
- end
- end
-
- it "generates params for custom routes" do
- # redundant, deprecated
- params_from(:get, '/custom_route').
- should == {:controller => "custom_route_spec", :action => "custom_route"}
- end
-
- it "generates params for existing routes" do
- # redundant, deprecated
- params_from(:get, '/controller_spec/some_action').
- should == {:controller => "controller_spec", :action => "some_action"}
- end
-
- it "generates params for existing routes with a query parameters" do
- # redundant, deprecated
- params_from(:get, '/controller_spec/some_action?param=1').
- should == {:controller => "controller_spec", :action => "some_action", :param => '1'}
- end
-
- it "generates params for existing routes with multiple query parameters" do
- # redundant, deprecated
- params_from(:get, '/controller_spec/some_action?param1=1&param2=2').
- should == {:controller => "controller_spec", :action => "some_action", :param1 => '1', :param2 => '2' }
- end
- end
-end
-
-shared_examples_for "a be routable spec" do
- describe "using should_not be_routable()" do
- it "passes for a bad route" do
- { :put => "/rspec_on_rails_specs/bad_route/37" }.
- should_not be_routable
- end
- it "passes for a bad route having an arg" do
- { :put => "/rspec_on_rails_specs/bad_route/37?some_arg=1" }.
- should_not be_routable
- end
- describe "when assert_recognizes throws exceptions:" do
- [ ActionController::RoutingError, ActionController::MethodNotAllowed ].each do |e|
- it "passes on #{e}" do
- self.stub!( :assert_recognizes ).and_return { raise e, "stubbed exception" }
- { :get => "/rspec_on_rails_spec/bad_route/37" }.should_not be_routable
- end
- it "should be_routable on usual Test::Unit::AssertionFailedError" do
- # <{}> is predictable because of the way we call assert_recognizes during be_routable().
- self.stub!( :assert_recognizes ).and_return { raise ::Test::Unit::AssertionFailedError, "<{a}> did not match <{}>" }
- { :get => "/rspec_on_rails_spec/arguably_bad_route" }.should be_routable
- end
- it "should re-raise on unusual Test::Unit::AssertionFailedError" do
- self.stub!( :assert_recognizes ).and_return { raise ::Test::Unit::AssertionFailedError, "some other message" }
- expect { { :get => "/rspec_on_rails_spec/weird_case_route/" }.should be_routable }.
- to raise_error
- end
- end
- end
- it "test should be_routable" do
- { :get => "/custom_route" }.
- should be_routable
- end
-
- it "recommends route_to() on failure with should()" do
- lambda {
- { :get => "/nonexisting_route" }.
- should be_routable
- }.should raise_error( /route_to\(/)
- end
-
- it "shows actual route that was generated on failure with should_not()" do
- begin
- { :get => "/custom_route" }.should_not be_routable
- rescue Exception => e
- ensure
- # Different versions of ruby order these differently
- e.message.should =~ /"action"=>"custom_route"/
- e.message.should =~ /"controller"=>"custom_route_spec"/
- end
- end
-
- it "works with routeable (alternate spelling)" do
- { :put => "/nonexisting_route" }.
- should_not be_routeable
- end
- end
-end
-
-shared_examples_for "a route to spec" do
- describe "using should[_not] route_to()" do
- it "supports existing routes" do
- { :get => "/controller_spec/some_action" }.
- should route_to( :controller => "controller_spec", :action => "some_action" )
- end
-
- it "translates GET-only paths to be explicit, when matching against a string (for parity with route_for().should == '/path')" do
- self.should_receive(:assert_routing).with(hash_including(:method => :get), anything, {}, anything)
- "/controller_spec/some_action".
- should route_to({})
- end
-
- it "asserts, using assert_routing, that the :controller and :action are involved" do
- @route = { :controller => "controller_spec", :action => "some_action" }
- self.should_receive(:assert_routing).with(anything, @route, {}, anything)
- "/controller_spec/some_action".
- should route_to(@route)
- end
-
- it "sends extra args through" do
- @route = { :controller => "controller_spec", :action => "some_action" }
- self.should_receive(:assert_routing).with(anything, anything, {}, { :a => "1", :b => "2" } )
- "/controller_spec/some_action?a=1&b=2".
- should route_to( @route )
- end
-
- it "supports routes with additional parameters" do
- { :get => "/controller_spec/some_action?param=1" }.
- should route_to( :controller => "controller_spec", :action => "some_action", :param => '1' )
- end
-
- it "recognizes routes with methods besides :get" do
- self.should_receive(:assert_routing).with(hash_including(:method => :put), anything, {}, anything)
- { :put => "/rspec_on_rails_specs/37" }.
- should route_to(:controller => "rspec_on_rails_specs", :action => "update", :id => "37")
- end
-
- it "allows only one key/value in the path - :method => path" do
- lambda {
- { :a => "b" ,:c => "d" }.
- should route_to("anything")
- }.should raise_error( ArgumentError, /usage/ )
- end
-
- describe "failing due to bad path" do
- it "raises routing error, and suggests should_not be_routeable()" do
- lambda {
- { :put => "/rspec_on_rails_specs/nonexistent/37" }.
- should route_to(:controller => "rspec_on_rails_specs", :action => "nonexistent", :id => "37")
- }.should raise_error( ActionController::RoutingError, /suggest.*nonexistent.*should_not be_routable/ )
- end
- end
-
- describe "failing due to params mismatch" do
- it "raises assertion, and suggests should_not be_routeable()" do
- lambda {
- { :put => "/rspec_on_rails_specs/37" }.
- should route_to(:controller => "rspec_on_rails_specs", :action => "nonexistent", :id => "37")
- }.should raise_error( ::Test::Unit::AssertionFailedError, /suggest.*rspec_on_rails_specs\/37.*should_not be_routable/ )
- end
- end
-
- describe "passing when expected failure" do
- it "suggests should_not be_routable()" do
- self.stub!(:assert_routing).and_return true
- lambda {
- { :put => "/rspec_on_rails_specs/37" }.
- should_not route_to(:controller => "rspec_on_rails_specs", :action => "update", :id => "37")
- }.should raise_error( /expected a routing error.*be_routable/im )
- end
- end
-
- describe "failing due to wrong HTTP method" do
- it "raises method error and suggests should_not be_routable()" do
- self.stub!(:assert_routing) { raise ActionController::MethodNotAllowed }
- lambda {
- { :post => "/rspec_on_rails_specs/37" }.
- should route_to(:controller => "rspec_on_rails_specs", :action => "update", :id => "37" )
- }.should raise_error(ActionController::MethodNotAllowed, /rspec_on_rails_specs\/37.*should_not be_routable/ )
- end
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb
deleted file mode 100644
index ae720a4d8..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'spec_helper'
-
-describe "assert_equal", :shared => true do
- it "like assert_equal" do
- assert_equal 1, 1
- lambda {
- assert_equal 1, 2
- }.should raise_error(::Test::Unit::AssertionFailedError)
- end
-end
-
-describe "A model spec should be able to access 'test/unit' assertions", :type => :model do
- it_should_behave_like "assert_equal"
-end
-
-describe "A view spec should be able to access 'test/unit' assertions", :type => :view do
- it_should_behave_like "assert_equal"
-end
-
-describe "A helper spec should be able to access 'test/unit' assertions", :type => :helper do
- it_should_behave_like "assert_equal"
-end
-
-describe "A controller spec with integrated views should be able to access 'test/unit' assertions", :type => :controller do
- controller_name :controller_spec
- integrate_views
- it_should_behave_like "assert_equal"
-end
-
-describe "A controller spec should be able to access 'test/unit' assertions", :type => :controller do
- controller_name :controller_spec
- it_should_behave_like "assert_equal"
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/view_example_group_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/view_example_group_spec.rb
deleted file mode 100644
index f4827a7fc..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/example/view_example_group_spec.rb
+++ /dev/null
@@ -1,346 +0,0 @@
-require 'spec_helper'
-
-describe "A template with an implicit helper", :type => :view do
- before(:each) do
- render "view_spec/implicit_helper"
- end
-
- accesses_configured_helper_methods
-
- it "should include the helper" do
- response.should have_tag('div', :content => "This is text from a method in the ViewSpecHelper")
- end
-
- it "should include the application helper" do
- response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
- end
-
- it "should have access to named routes" do
- rspec_on_rails_specs_url.should == "http://test.host/rspec_on_rails_specs"
- rspec_on_rails_specs_path.should == "/rspec_on_rails_specs"
- end
-end
-
-describe "A template requiring an explicit helper", :type => :view do
- before(:each) do
- render "view_spec/explicit_helper", :helper => 'explicit'
- end
-
- it "should include the helper if specified" do
- response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
- end
-
- it "should include the application helper" do
- response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
- end
-end
-
-describe "A template requiring multiple explicit helpers", :type => :view do
- before(:each) do
- render "view_spec/multiple_helpers", :helpers => ['explicit', 'more_explicit']
- end
-
- it "should include all specified helpers" do
- response.should have_tag('div', :content => "This is text from a method in the ExplicitHelper")
- response.should have_tag('div', :content => "This is text from a method in the MoreExplicitHelper")
- end
-
- it "should include the application helper" do
- response.should have_tag('div', :content => "This is text from a method in the ApplicationHelper")
- end
-end
-
-describe "Message Expectations on helper methods", :type => :view do
- it "should work" do
- template.should_receive(:method_in_plugin_application_helper).and_return('alternate message 1')
- render "view_spec/implicit_helper"
- response.body.should =~ /alternate message 1/
- end
-
- it "should work twice" do
- template.should_receive(:method_in_plugin_application_helper).and_return('alternate message 2')
- render "view_spec/implicit_helper"
- response.body.should =~ /alternate message 2/
- end
-end
-
-describe "A template that includes a partial", :type => :view do
- def render!
- render "view_spec/template_with_partial"
- end
-
- it "should render the enclosing template" do
- render!
- response.should have_tag('div', "method_in_partial in ViewSpecHelper")
- end
-
- it "should render the partial" do
- render!
- response.should have_tag('div', "method_in_template_with_partial in ViewSpecHelper")
- end
-
- it "should include the application helper" do
- render!
- response.should have_tag('div', "This is text from a method in the ApplicationHelper")
- end
-
- it "should pass should_receive(:render) with the right partial" do
- template.should_receive(:render).with(:partial => 'partial')
- render!
- template.verify_rendered
- end
-
- it "should fail should_receive(:render) with the wrong partial" do
- template.should_receive(:render).with(:partial => 'non_existent')
- render!
- begin
- template.verify_rendered
- rescue Spec::Mocks::MockExpectationError => e
- ensure
- e.backtrace.find{|line| line =~ /#{__FILE__}\:#{__LINE__ - 6}/}.should_not be_nil
- end
- end
-
- it "should pass should_receive(:render) when a partial is expected twice and happens twice" do
- template.should_receive(:render).with(:partial => 'partial_used_twice').twice
- render!
- template.verify_rendered
- end
-
- it "should pass should_receive(:render) when a partial is expected once and happens twice" do
- template.should_receive(:render).with(:partial => 'partial_used_twice')
- render!
- begin
- template.verify_rendered
- rescue Spec::Mocks::MockExpectationError => e
- ensure
- e.backtrace.find{|line| line =~ /#{__FILE__}\:#{__LINE__ - 6}/}.should_not be_nil
- end
- end
-
- it "should fail should_receive(:render) with the right partial but wrong options" do
- template.should_receive(:render).with(:partial => 'partial', :locals => {:thing => Object.new})
- render!
- lambda {template.verify_rendered}.should raise_error(Spec::Mocks::MockExpectationError)
- end
-end
-
-describe "A partial that includes a partial", :type => :view do
- it "should support should_receive(:render) with nested partial" do
- obj = Object.new
- template.should_receive(:render).with(:partial => 'partial', :object => obj)
- render :partial => "view_spec/partial_with_sub_partial", :locals => { :partial => obj }
- end
-end
-
-describe "A view that includes a partial using :collection and :spacer_template", :type => :view do
- it "should render the partial w/ spacer_tamplate" do
- render "view_spec/template_with_partial_using_collection"
- response.should have_tag('div',/method_in_partial/)
- response.should have_tag('div',/ApplicationHelper/)
- response.should have_tag('div',/ViewSpecHelper/)
- response.should have_tag('hr#spacer')
- end
-
- it "should render the partial" do
- template.should_receive(:render).with(:partial => 'partial',
- :collection => ['Alice', 'Bob'],
- :spacer_template => 'spacer')
- render "view_spec/template_with_partial_using_collection"
- end
-
-end
-
-describe "A view that includes a partial using an array as partial_path", :type => :view do
- before(:each) do
- renderable_object = Object.new
- renderable_object.stub!(:name).and_return("Renderable Object")
- assigns[:array] = [renderable_object]
- end
-
- it "should render the array passed through to render_partial without modification" do
- render "view_spec/template_with_partial_with_array"
- response.body.should match(/^Renderable Object$/)
- end
-end
-
-describe "Different types of renders (not :template)", :type => :view do
- it "should render partial with local" do
- render :partial => "view_spec/partial_with_local_variable", :locals => {:x => "Ender"}
- response.should have_tag('div', :content => "Ender")
- end
-end
-
-describe "A view", :type => :view do
- before(:each) do
- session[:key] = "session"
- params[:key] = "params"
- flash[:key] = "flash"
- flash.now[:now_key] = "flash.now"
- render "view_spec/accessor"
- end
-
- it "uses the template as the implicit subject" do
- subject.should == template
- end
-
- it "has access to session data" do
- response.should have_tag("div#session", "session")
- end
-
- it "has access to params data" do
- response.should have_tag("div#params", "params")
- end
-
- it "has access to flash" do
- response.should have_tag("div#flash", "flash")
- end
-
- it "has access to flash.now" do
- response.should have_tag("div#flash_now", "flash.now")
- end
-
- it "has a controller param" do
- response.should have_tag("div#controller", "view_spec")
- end
-
- it "has an action param" do
- response.should have_tag("div#action", "accessor")
- end
-end
-
-describe "A view with a form_tag", :type => :view do
- it "should render the right action" do
- render "view_spec/entry_form"
- response.should have_tag("form[action=?]","/view_spec/entry_form")
- end
-end
-
-describe "An instantiated ViewExampleGroupController", :type => :view do
- before do
- render "view_spec/foo/show"
- end
-
- it "should return the name of the real controller that it replaces" do
- @controller.controller_name.should == 'foo'
- end
-
- it "should return the path of the real controller that it replaces" do
- @controller.controller_path.should == 'view_spec/foo'
- end
-end
-
-describe "a block helper", :type => :view do
- it "should not yield when not told to in the example" do
- template.should_receive(:if_allowed)
- render "view_spec/block_helper"
- response.should_not have_tag("div","block helper was rendered")
- end
-
- it "should yield when told to in the example" do
- template.should_receive(:if_allowed).and_yield
- render "view_spec/block_helper"
- response.should have_tag("div","block helper was rendered")
- end
-end
-
-describe "render :inline => ...", :type => :view do
- it "should render ERB right in the spec" do
- render :inline => %|<%= text_field_tag('field_name', 'Value') %>|
- response.should have_tag("input[type=?][name=?][value=?]","text","field_name","Value")
- end
-end
-
-describe "render 'view_spec/foo/show'", :type => :view do
- it "should derive action name using the first part of the template name" do
- render 'view_spec/foo/show'
- request.path_parameters[:action].should == 'show'
- end
-end
-
-describe "view_spec/foo/show", :type => :view do
- context "rendered with no args" do
- it "renders just fine" do
- render
- request.path_parameters[:action].should == 'show'
- end
- end
-end
-
-describe "setting path parameters", :type => :view do
- describe "(controller)" do
- it "should supercede the default path parameters" do
- render "view_spec/entry_form", :path_parameters => {:controller => 'foo'}
- request.path_parameters[:controller].should == 'foo'
- end
- end
- describe "(action)" do
- it "should supercede the default path parameters" do
- render "view_spec/entry_form", :path_parameters => {:action => 'foo'}
- request.path_parameters[:action].should == 'foo'
- end
- end
- describe "(something arbitrary)" do
- it "should supercede the default path parameters" do
- render "view_spec/entry_form", :path_parameters => {:foo => 'bar'}
- request.path_parameters[:foo].should == 'bar'
- end
- end
-end
-
-describe "route helpers", :type => :view do
- it "should be available before render is called" do
- custom_route_path.should == '/custom_route'
- end
-end
-
-module Spec
- module Rails
- module Example
- describe ViewExampleGroup do
- it "should clear its name from the description" do
- group = describe("foo", :type => :view) do
- $nested_group = describe("bar") do
- end
- end
- group.description.to_s.should == "foo"
- $nested_group.description.to_s.should == "foo bar"
- end
-
- it "should clear ActionView::Base.base_view_path on teardown" do
- group = describe("base_view_path_cleared flag", :type => :view) {}
- example = group.new(Spec::Example::ExampleProxy.new) {}
-
- ActionView::Base.should_receive(:base_view_path=).with(nil)
- example.run_after_each
- end
- end
- end
- end
-end
-
-describe "bug http://rspec.lighthouseapp.com/projects/5645/tickets/510", :type => :view do
- describe "a view example with should_not_receive" do
- it "should render the view" do
- obj = mock('model')
- obj.should_receive(:render_partial?).and_return false
- assigns[:obj] = obj
- template.should_not_receive(:render).with(:partial => 'some_partial')
- render "view_spec/should_not_receive"
- end
- end
-end
-
-describe "bug https://rspec.lighthouseapp.com/projects/5645/tickets/787", :type => :view do
- describe "a view example checking a link" do
- it "should have access to link_to" do
- render "view_spec/view_helpers"
- response.body.should include(link_to("edit", "this_is_the_link"))
- end
-
- it "should use link_to within have_tag" do
- render "view_spec/view_helpers"
- response.body.should have_tag("span", :html => link_to("edit", "this_is_the_link"))
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/extensions/action_view_base_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/extensions/action_view_base_spec.rb
deleted file mode 100644
index ff309a17c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/extensions/action_view_base_spec.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-require 'spec_helper'
-require 'spec/mocks/errors'
-
-describe ActionView::Base, "with RSpec extensions:", :type => :view do
-
- describe "should_receive(:render)" do
- it "should not raise when render has been received" do
- template.should_receive(:render).with(:partial => "name")
- template.render :partial => "name"
- end
-
- it "should not raise when render with local assignments has been received" do
- template.should_receive(:render).with('name', :param => 1)
- template.render 'name', :param => 1
- end
-
- it "should raise when render has NOT been received" do
- template.should_receive(:render).with(:partial => "name")
- lambda {
- template.verify_rendered
- }.should raise_error
- end
-
- it "should return something (like a normal mock)" do
- template.should_receive(:render).with(:partial => "name").and_return("Little Johnny")
- result = template.render :partial => "name"
- result.should == "Little Johnny"
- end
- end
-
- [:stub!, :stub].each do |method|
- describe "#{method}(:render)" do
- it "should not raise when stubbing and render has been received" do
- template.send(method, :render).with(:partial => "name")
- template.render :partial => "name"
- end
-
- it "should not raise when stubbing and render has NOT been received" do
- template.send(method, :render).with(:partial => "name")
- end
-
- it "should not raise when stubbing and render has been received with different options" do
- template.send(method, :render).with(:partial => "name")
- template.render :partial => "view_spec/spacer"
- end
-
- it "should not raise when stubbing and expecting and render has been received" do
- template.send(method, :render).with(:partial => "name")
- template.should_receive(:render).with(:partial => "name")
- template.render(:partial => "name")
- end
- end
-
- describe "#{method}(:helper_method)" do
- it "should not raise when stubbing and helper_method has been received" do
- template.send(method, :helper_method).with(:arg => "value")
- template.helper_method :arg => "value"
- end
-
- it "should not raise when stubbing and helper_method has NOT been received" do
- template.send(method, :helper_method).with(:arg => "value")
- end
-
- it "SHOULD raise when stubbing and helper_method has been received with different options" do
- template.send(method, :helper_method).with(:arg => "value")
- expect { template.helper_method :arg => "other_value" }.
- to raise_error(/undefined .* `helper_method'/)
- end
-
- it "should not raise when stubbing and expecting and helper_method has been received" do
- template.send(method, :helper_method).with(:arg => "value")
- template.should_receive(:helper_method).with(:arg => "value")
- template.helper_method(:arg => "value")
- end
- end
-
- end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/extensions/active_record_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/extensions/active_record_spec.rb
deleted file mode 100644
index f616973cf..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/extensions/active_record_spec.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'spec_helper'
-
-describe "A model" do
- fixtures :things
- it "should tell you its required fields" do
- Thing.new.should have(1).error_on(:name)
- end
-
- it "should tell you how many records it has" do
- Thing.should have(:no).records
- Thing.create(:name => "THE THING")
- Thing.should have(1).record
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/interop/testcase_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/interop/testcase_spec.rb
deleted file mode 100644
index bde8b6c31..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/interop/testcase_spec.rb
+++ /dev/null
@@ -1,70 +0,0 @@
-require 'spec_helper'
-
-
-if ActiveSupport.const_defined?(:Callbacks) && Test::Unit::TestCase.include?(ActiveSupport::Callbacks)
-
- class TestUnitTesting < Test::Unit::TestCase
- @@setup_callback_count = 0
- @@setup_method_count = 0
- @@teardown_callback_count = 0
- @@teardown_method_count = 0
- cattr_accessor :setup_callback_count, :setup_method_count, :teardown_callback_count, :teardown_method_count
-
- setup :do_some_setup
- teardown :do_some_teardown
-
- @@has_been_run = false
- def self.run?
- @@has_been_run
- end
-
- def self.run(options=Spec::Runner.options)
- super options
- end
-
- def do_some_setup
- @@setup_callback_count += 1
- end
-
- def setup
- @@setup_method_count += 1
- end
-
- def test_something
- assert_equal true, true
- @@has_been_run = true
- end
-
- def teardown
- @@teardown_method_count += 1
- end
-
- def do_some_teardown
- @@teardown_callback_count += 1
- end
- end
-
- module Test
- module Unit
- describe "Running TestCase tests" do
- before(:all) do
- TestUnitTesting.run unless TestUnitTesting.run?
- end
-
- it "should call the setup callbacks" do
- TestUnitTesting.setup_callback_count.should == 1
- end
- it "should still only call the normal setup method once" do
- TestUnitTesting.setup_method_count.should == 1
- end
- it "should call the teardown callbacks" do
- TestUnitTesting.teardown_callback_count.should == 1
- end
- it "should still only call the normal teardown method once" do
- TestUnitTesting.teardown_method_count.should == 1
- end
- end
- end
- end
-
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/ar_be_valid_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/ar_be_valid_spec.rb
deleted file mode 100644
index 0f752e9cb..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/ar_be_valid_spec.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'spec_helper'
-
-describe "be_valid" do
- context "with valid attributes" do
- it "returns true" do
- be_valid.matches?(Thing.new(:name => 'thing')).should == true
- end
- end
-
- context "with invalid attributes" do
- it "returns false" do
- be_valid.matches?(Thing.new).should == false
- end
-
- it "adds errors to the errors " do
- expect { Thing.new.should be_valid }.to raise_error(/can't be blank/)
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/assert_select_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/assert_select_spec.rb
deleted file mode 100644
index f8da8e3b8..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/assert_select_spec.rb
+++ /dev/null
@@ -1,835 +0,0 @@
-require 'spec_helper'
-
-# assert_select plugins for Rails
-#
-# Copyright (c) 2006 Assaf Arkin, under Creative Commons Attribution and/or MIT License
-# Developed for http://co.mments.com
-# Code and documention: http://labnotes.org
-
-class AssertSelectController < ActionController::Base
-
- def response=(content)
- @content = content
- end
-
- def html()
- render :text=>@content, :layout=>false, :content_type=>Mime::HTML
- @content = nil
- end
-
- def rjs()
- update = @update
- render :update do |page|
- update.call page
- end
- @update = nil
- end
-
- def xml()
- render :text=>@content, :layout=>false, :content_type=>Mime::XML
- @content = nil
- end
-
-end
-
-class AssertSelectMailer < ActionMailer::Base
-
- def test(html)
- recipients "test <test@test.host>"
- from "test@test.host"
- subject "Test e-mail"
- part :content_type=>"text/html", :body=>html
- end
-
-end
-
-module AssertSelectSpecHelpers
- def render_html(html)
- @controller.response = html
- get :html
- end
-
- def render_rjs(&block)
- clear_response
- @controller.response &block
- get :rjs
- end
-
- def render_xml(xml)
- @controller.response = xml
- get :xml
- end
-
- def first_non_rspec_line_in_backtrace_of(error)
- rlocation = File.join('rspec', 'lib', 'spec')
- error.backtrace.reject { |line|
- line =~ /#{rlocation}/
- }.first
- end
-
- private
- # necessary for 1.2.1
- def clear_response
- render_html("")
- end
-end
-
-unless defined?(SpecFailed)
- SpecFailed = Spec::Expectations::ExpectationNotMetError
-end
-
-describe "should have_tag", :type => :controller do
- include AssertSelectSpecHelpers
- controller_name :assert_select
- integrate_views
-
- it "should not care about the XML setting on HTML with unclosed singletons when using a response" do
- render_html %Q{<table id="1"><tr><td><img src="image.png" alt="image">Hello</td></tr><tr><td></td></tr><tr><td>World</td></tr></table>}
- response.should have_tag("tr", 3)
- response.should have_tag("tr", 3, :xml => true)
- end
-
- it "should find specific numbers of elements" do
- render_html %Q{<div id="1"></div><div id="2"></div>}
- response.should have_tag( "div" )
- response.should have_tag("div", 2)
- lambda { response.should_not have_tag("div") }.should raise_error(SpecFailed, "should not have tag(\"div\"), but did")
-
- lambda { response.should have_tag("div", 3) }.should raise_error(SpecFailed)
- lambda { response.should have_tag("p") }.should raise_error(SpecFailed)
- end
-
- it "should expect to find elements when using true" do
- render_html %Q{<div id="1"></div><div id="2"></div>}
- response.should have_tag( "div", true )
- lambda { response.should have_tag( "p", true )}.should raise_error(SpecFailed)
- end
-
- it "should expect to not find elements when using false" do
- render_html %Q{<div id="1"></div><div id="2"></div>}
- response.should have_tag( "p", false )
- lambda { response.should have_tag( "div", false )}.should raise_error(SpecFailed)
- end
-
-
- it "should match submitted text using text or regexp" do
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
- response.should have_tag("div", "foo")
- response.should have_tag("div", /(foo|bar)/)
- response.should have_tag("div", :text=>"foo")
- response.should have_tag("div", :text=>/(foo|bar)/)
-
- lambda { response.should have_tag("div", "bar") }.should raise_error(SpecFailed)
- lambda { response.should have_tag("div", :text=>"bar") }.should raise_error(SpecFailed)
- lambda { response.should have_tag("p", :text=>"foo") }.should raise_error(SpecFailed)
-
- lambda { response.should have_tag("div", /foobar/) }.should raise_error(SpecFailed)
- lambda { response.should have_tag("div", :text=>/foobar/) }.should raise_error(SpecFailed)
- lambda { response.should have_tag("p", :text=>/foo/) }.should raise_error(SpecFailed)
- end
-
- it "should use submitted message" do
- render_html %Q{nothing here}
- lambda {
- response.should have_tag("div", {}, "custom message")
- }.should raise_error(SpecFailed, /custom message/)
- end
-
- it "should match submitted html" do
- render_html %Q{<p>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</p>}
- text = "\"This is not a big problem,\" he said."
- html = "<em>\"This is <strong>not</strong> a big problem,\"</em> he said."
- response.should have_tag("p", text)
- lambda { response.should have_tag("p", html) }.should raise_error(SpecFailed)
- response.should have_tag("p", :html=>html)
- lambda { response.should have_tag("p", :html=>text) }.should raise_error(SpecFailed)
-
- # # No stripping for pre.
- render_html %Q{<pre>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</pre>}
- text = "\n\"This is not a big problem,\" he said.\n"
- html = "\n<em>\"This is <strong>not</strong> a big problem,\"</em> he said.\n"
- response.should have_tag("pre", text)
- lambda { response.should have_tag("pre", html) }.should raise_error(SpecFailed)
- response.should have_tag("pre", :html=>html)
- lambda { response.should have_tag("pre", :html=>text) }.should raise_error(SpecFailed)
- end
-
- it "should match number of instances" do
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
- response.should have_tag("div", 2)
- lambda { response.should have_tag("div", 3) }.should raise_error(SpecFailed)
- response.should have_tag("div", 1..2)
- lambda { response.should have_tag("div", 3..4) }.should raise_error(SpecFailed)
- response.should have_tag("div", :count=>2)
- lambda { response.should have_tag("div", :count=>3) }.should raise_error(SpecFailed)
- response.should have_tag("div", :minimum=>1)
- response.should have_tag("div", :minimum=>2)
- lambda { response.should have_tag("div", :minimum=>3) }.should raise_error(SpecFailed)
- response.should have_tag("div", :maximum=>2)
- response.should have_tag("div", :maximum=>3)
- lambda { response.should have_tag("div", :maximum=>1) }.should raise_error(SpecFailed)
- response.should have_tag("div", :minimum=>1, :maximum=>2)
- lambda { response.should have_tag("div", :minimum=>3, :maximum=>4) }.should raise_error(SpecFailed)
- end
-
- it "substitution values" do
- render_html %Q{<div id="1">foo</div><div id="2">foo</div><span id="3"></span>}
- response.should have_tag("div#?", /\d+/) do |elements| #using do/end
- elements.size.should == 2
- end
- response.should have_tag("div#?", /\d+/) { |elements| #using {}
- elements.size.should == 2
- }
- lambda {
- response.should have_tag("div#?", /\d+/) do |elements|
- elements.size.should == 3
- end
- }.should raise_error(SpecFailed, "expected: 3,\n got: 2 (using ==)")
-
- lambda {
- response.should have_tag("div#?", /\d+/) { |elements|
- elements.size.should == 3
- }
- }.should raise_error(SpecFailed, "expected: 3,\n got: 2 (using ==)")
-
- response.should have_tag("div#?", /\d+/) do |elements|
- elements.size.should == 2
- with_tag("#1")
- with_tag("#2")
- without_tag("#3")
- end
- end
-
- #added for RSpec
- it "nested tags in form" do
- render_html %Q{
- <form action="test">
- <input type="text" name="email">
- </form>
- <form action="other">
- <input type="text" name="other_input">
- </form>
- }
- response.should have_tag("form[action=test]") { |form|
- with_tag("input[type=text][name=email]")
- }
- response.should have_tag("form[action=other]") { |form|
- with_tag("input[type=text][name=other_input]")
- }
-
- lambda {
- response.should have_tag("form[action=test]") { |form|
- with_tag("input[type=text][name=other_input]")
- }
- }.should raise_error(SpecFailed)
-
- lambda {
- response.should have_tag("form[action=test]") {
- with_tag("input[type=text][name=other_input]")
- }
- }.should raise_error(SpecFailed)
- end
-
- it "should report the correct line number for a nested failed expectation" do
- render_html %Q{
- <form action="test">
- <input type="text" name="email">
- </form>
- }
- begin
- response.should have_tag("form[action=test]") {
- @expected_error_line = __LINE__; should have_tag("input[type=text][name=other_input]")
- }
- rescue => e
- first_non_rspec_line_in_backtrace_of(e).should =~
- /#{File.basename(__FILE__)}:#{@expected_error_line}/
- else
- fail
- end
- end
-
- it "should report the correct line number for a nested raised exception" do
- render_html %Q{
- <form action="test">
- <input type="text" name="email">
- </form>
- }
- begin
- response.should have_tag("form[action=test]") {
- @expected_error_line = __LINE__; raise "Failed!"
- }
- rescue => e
- first_non_rspec_line_in_backtrace_of(e).should =~
- /#{File.basename(__FILE__)}:#{@expected_error_line}/
- else
- fail
- end
- end
-
- it "should report the correct line number for a nested failed test/unit assertion" do
- pending "Doesn't work at the moment. Do we want to support this?" do
- render_html %Q{
- <form action="test">
- <input type="text" name="email">
- </form>
- }
- begin
- response.should have_tag("form[action=test]") {
- @expected_error_line = __LINE__; assert false
- }
- rescue => e
- first_non_rspec_line_in_backtrace_of(e).should =~
- /#{File.basename(__FILE__)}:#{@expected_error_line}/
- else
- fail
- end
- end
- end
-
-
- it "beatles" do
- unless defined?(BEATLES)
- BEATLES = [
- ["John", "Guitar"],
- ["George", "Guitar"],
- ["Paul", "Bass"],
- ["Ringo", "Drums"]
- ]
- end
-
- render_html %Q{
- <div id="beatles">
- <div class="beatle">
- <h2>John</h2><p>Guitar</p>
- </div>
- <div class="beatle">
- <h2>George</h2><p>Guitar</p>
- </div>
- <div class="beatle">
- <h2>Paul</h2><p>Bass</p>
- </div>
- <div class="beatle">
- <h2>Ringo</h2><p>Drums</p>
- </div>
- </div>
- }
- response.should have_tag("div#beatles>div[class=\"beatle\"]", 4)
-
- response.should have_tag("div#beatles>div.beatle") {
- BEATLES.each { |name, instrument|
- with_tag("div.beatle>h2", name)
- with_tag("div.beatle>p", instrument)
- without_tag("div.beatle>span")
- }
- }
- end
-
- it "assert_select_text_match" do
- render_html %Q{<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>}
- response.should have_tag("div") do |divs|
- with_tag("div", "foo")
- with_tag("div", "bar")
- with_tag("div", /\w*/)
- with_tag("div", /\w*/, :count=>2)
- without_tag("div", :text=>"foo", :count=>2)
- with_tag("div", :html=>"<span>bar</span>")
- with_tag("div", :html=>"<span>bar</span>")
- with_tag("div", :html=>/\w*/)
- with_tag("div", :html=>/\w*/, :count=>2)
- without_tag("div", :html=>"<span>foo</span>", :count=>2)
- end
- end
-
-
- it "assert_select_from_rjs with one item" do
- render_rjs do |page|
- page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
- end
- response.should have_tag("div") { |elements|
- elements.size.should == 2
- with_tag("#1")
- with_tag("#2")
- }
-
- lambda {
- response.should have_tag("div") { |elements|
- elements.size.should == 2
- with_tag("#1")
- with_tag("#3")
- }
- }.should raise_error(SpecFailed)
-
- lambda {
- response.should have_tag("div") { |elements|
- elements.size.should == 2
- with_tag("#1")
- without_tag("#2")
- }
- }.should raise_error(SpecFailed, "should not have tag(\"#2\"), but did")
-
- lambda {
- response.should have_tag("div") { |elements|
- elements.size.should == 3
- with_tag("#1")
- with_tag("#2")
- }
- }.should raise_error(SpecFailed)
-
-
- response.should have_tag("div#?", /\d+/) { |elements|
- with_tag("#1")
- with_tag("#2")
- }
- end
-
- it "assert_select_from_rjs with multiple items" do
- render_rjs do |page|
- page.replace_html "test", "<div id=\"1\">foo</div>"
- page.replace_html "test2", "<div id=\"2\">foo</div>"
- end
- response.should have_tag("div")
- response.should have_tag("div") { |elements|
- elements.size.should == 2
- with_tag("#1")
- with_tag("#2")
- }
-
- lambda {
- response.should have_tag("div") { |elements|
- with_tag("#3")
- }
- }.should raise_error(SpecFailed)
- end
-end
-
-describe "css_select", :type => :controller do
- include AssertSelectSpecHelpers
- controller_name :assert_select
- integrate_views
-
- it "can select tags from html" do
- render_html %Q{<div id="1"></div><div id="2"></div>}
- css_select("div").size.should == 2
- css_select("p").size.should == 0
- end
-
-
- it "can select nested tags from html" do
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
- response.should have_tag("div#?", /\d+/) { |elements|
- css_select(elements[0], "div").should have(1).element
- css_select(elements[1], "div").should have(1).element
- }
- response.should have_tag("div") {
- css_select("div").should have(2).elements
- css_select("div").each { |element|
- # Testing as a group is one thing
- css_select("#1,#2").should have(2).elements
- # Testing individually is another
- css_select("#1").should have(1).element
- css_select("#2").should have(1).element
- }
- }
- end
-
- it "can select nested tags from rjs (one result)" do
- render_rjs do |page|
- page.replace_html "test", "<div id=\"1\">foo</div>\n<div id=\"2\">foo</div>"
- end
- css_select("div").should have(2).elements
- css_select("#1").should have(1).element
- css_select("#2").should have(1).element
- end
-
- it "can select nested tags from rjs (two results)" do
- render_rjs do |page|
- page.replace_html "test", "<div id=\"1\">foo</div>"
- page.replace_html "test2", "<div id=\"2\">foo</div>"
- end
- css_select("div").should have(2).elements
- css_select("#1").should have(1).element
- css_select("#2").should have(1).element
- end
-
-end
-
-describe "have_rjs behaviour_type", :type => :controller do
- include AssertSelectSpecHelpers
- controller_name :assert_select
- integrate_views
-
- before(:each) do
- render_rjs do |page|
- page.replace "test1", "<div id=\"1\">foo</div>"
- page.replace_html "test2", "<div id=\"2\">bar</div><div id=\"3\">none</div>"
- page.insert_html :top, "test3", "<div id=\"4\">loopy</div>"
- page.hide "test4"
- page["test5"].hide
- end
- end
-
- it "should pass if any rjs exists" do
- response.should have_rjs
- end
-
- it "should fail if no rjs exists" do
- render_rjs do |page|
- end
- lambda do
- response.should have_rjs
- end.should raise_error(SpecFailed)
- end
-
- it "should find all rjs from multiple statements" do
- response.should have_rjs do
- with_tag("#1")
- with_tag("#2")
- with_tag("#3")
- with_tag("#4")
- end
- end
-
- it "should find by id" do
- response.should have_rjs("test1") { |rjs|
- rjs.size.should == 1
- with_tag("div", 1)
- with_tag("div#1", "foo")
- }
-
- lambda do
- response.should have_rjs("test1") { |rjs|
- rjs.size.should == 1
- without_tag("div#1", "foo")
- }
- end.should raise_error(SpecFailed, "should not have tag(\"div#1\", \"foo\"), but did")
-
- response.should have_rjs("test2") { |rjs|
- rjs.size.should == 2
- with_tag("div", 2)
- with_tag("div#2", "bar")
- with_tag("div#3", "none")
- }
- # response.should have_rjs("test4")
- # response.should have_rjs("test5")
- end
-
- # specify "should find rjs using :hide" do
- # response.should have_rjs(:hide)
- # response.should have_rjs(:hide, "test4")
- # response.should have_rjs(:hide, "test5")
- # lambda do
- # response.should have_rjs(:hide, "test3")
- # end.should raise_error(SpecFailed)
- # end
-
- it "should find rjs using :replace" do
- response.should have_rjs(:replace) { |rjs|
- with_tag("div", 1)
- with_tag("div#1", "foo")
- }
- response.should have_rjs(:replace, "test1") { |rjs|
- with_tag("div", 1)
- with_tag("div#1", "foo")
- }
- lambda {
- response.should have_rjs(:replace, "test2")
- }.should raise_error(SpecFailed)
-
- lambda {
- response.should have_rjs(:replace, "test3")
- }.should raise_error(SpecFailed)
- end
-
- it "should find rjs using :replace_html" do
- response.should have_rjs(:replace_html) { |rjs|
- with_tag("div", 2)
- with_tag("div#2", "bar")
- with_tag("div#3", "none")
- }
-
- response.should have_rjs(:replace_html, "test2") { |rjs|
- with_tag("div", 2)
- with_tag("div#2", "bar")
- with_tag("div#3", "none")
- }
-
- lambda {
- response.should have_rjs(:replace_html, "test1")
- }.should raise_error(SpecFailed)
-
- lambda {
- response.should have_rjs(:replace_html, "test3")
- }.should raise_error(SpecFailed)
- end
-
- it "should find rjs using :insert_html (non-positioned)" do
- response.should have_rjs(:insert_html) { |rjs|
- with_tag("div", 1)
- with_tag("div#4", "loopy")
- }
-
- response.should have_rjs(:insert_html, "test3") { |rjs|
- with_tag("div", 1)
- with_tag("div#4", "loopy")
- }
-
- lambda {
- response.should have_rjs(:insert_html, "test1")
- }.should raise_error(SpecFailed)
-
- lambda {
- response.should have_rjs(:insert_html, "test2")
- }.should raise_error(SpecFailed)
- end
-
- it "should find rjs using :insert (positioned)" do
- render_rjs do |page|
- page.insert_html :top, "test1", "<div id=\"1\">foo</div>"
- page.insert_html :bottom, "test2", "<div id=\"2\">bar</div>"
- page.insert_html :before, "test3", "<div id=\"3\">none</div>"
- page.insert_html :after, "test4", "<div id=\"4\">loopy</div>"
- end
- response.should have_rjs(:insert, :top) do
- with_tag("div", 1)
- with_tag("#1")
- end
- response.should have_rjs(:insert, :top, "test1") do
- with_tag("div", 1)
- with_tag("#1")
- end
- response.should have_rjs(:insert, :bottom) {|rjs|
- with_tag("div", 1)
- with_tag("#2")
- }
- response.should have_rjs(:insert, :bottom, "test2") {|rjs|
- with_tag("div", 1)
- with_tag("#2")
- }
- response.should have_rjs(:insert, :before) {|rjs|
- with_tag("div", 1)
- with_tag("#3")
- }
- response.should have_rjs(:insert, :before, "test3") {|rjs|
- with_tag("div", 1)
- with_tag("#3")
- }
- response.should have_rjs(:insert, :after) {|rjs|
- with_tag("div", 1)
- with_tag("#4")
- }
- response.should have_rjs(:insert, :after, "test4") {|rjs|
- with_tag("div", 1)
- with_tag("#4")
- }
- end
-
- it "should find rjs using :insert (positioned)" do
- pending("await fix for http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/982")
- render_rjs do |page|
- page.insert_html :top, "test1", "<div id=\"1\">foo</div>"
- page.insert_html :bottom, "test2", "<div id=\"2\">bar</div>"
- end
- lambda {
- response.should have_rjs(:insert, :top, "test2")
- }.should raise_error(SpecFailed)
- end
-end
-
-describe "send_email behaviour_type", :type => :controller do
- include AssertSelectSpecHelpers
- controller_name :assert_select
- integrate_views
-
- before(:each) do
- ActionMailer::Base.delivery_method = :test
- ActionMailer::Base.perform_deliveries = true
- ActionMailer::Base.deliveries = []
- end
-
- after(:each) do
- ActionMailer::Base.deliveries.clear
- end
-
- it "should fail with nothing sent" do
- response.should_not send_email
- lambda {
- response.should send_email{}
- }.should raise_error(SpecFailed, /No e-mail in delivery list./)
- end
-
- it "should pass otherwise" do
- AssertSelectMailer.deliver_test "<div><p>foo</p><p>bar</p></div>"
- response.should send_email
- lambda {
- response.should_not send_email
- }.should raise_error(SpecFailed)
- response.should send_email{}
- response.should send_email {
- with_tag("div:root") {
- with_tag("p:first-child", "foo")
- with_tag("p:last-child", "bar")
- }
- }
-
- lambda {
- response.should_not send_email
- }.should raise_error(SpecFailed, "should not send email, but did")
- end
-
-end
-
-describe "string.should have_tag", :type => :helper do
- include AssertSelectSpecHelpers
-
- it "should find root element" do
- "<p>a paragraph</p>".should have_tag("p", "a paragraph")
- end
-
- it "should not find non-existent element" do
- lambda do
- "<p>a paragraph</p>".should have_tag("p", "wrong text")
- end.should raise_error(SpecFailed)
- end
-
- it "should find child element" do
- "<div><p>a paragraph</p></div>".should have_tag("p", "a paragraph")
- end
-
- it "should find nested element in one line" do
- "<div><p>a paragraph</p></div>".should have_tag("div p","a paragraph")
- end
-
- it "should find nested element" do
- "<div><p>a paragraph</p></div>".should have_tag("div") do
- with_tag("p", "a paragraph")
- end
- end
-
- it "should not find wrong nested element" do
- lambda do
- "<div><p>a paragraph</p></div>".should have_tag("div") do
- with_tag("p", "wrong text")
- end
- end.should raise_error(SpecFailed)
- end
-
- it "should raise when using an HTML string with unclosed singleton tags when using the XML parsing setting" do
- lambda do
- %Q{<table id="1"><tr><td><img src="image.png" alt="image">Hello</td></tr><tr><td></td></tr><tr><td>World</td></tr></table>}.
- should have_tag("tr", 3, :xml => true)
- end.should raise_error
- end
-
- it "should find the specific number of elements regardless of unclosed singletons in a HTML string" do
- %Q{<table id="1"><tr><td><img src="image.png" alt="image">Hello</td></tr><tr><td></td></tr><tr><td>World</td></tr></table>}.
- should have_tag("tr", 3)
- end
-
- it "should find nested tags in an HTML string regardless unclosed singletons" do
- %Q{<table id="1"><tr><td><img src="image.png" alt="image">Hello</td></tr><tr><td></td></tr><tr><td>World</td></tr></table>}.
- should have_tag("table") do
- with_tag('tr',3)
- end
- end
-
-end
-
-describe "have_tag", :type => :controller do
- include AssertSelectSpecHelpers
- controller_name :assert_select
- integrate_views
-
- it "should work exactly the same as assert_select" do
- render_html %Q{
- <div id="wrapper">foo
- <div class="piece">
- <h3>Text</h3>
- </div>
- <div class="piece">
- <h3>Another</h3>
- </div>
- </div>
- }
-
- assert_select "#wrapper .piece h3", :text => "Text"
- assert_select "#wrapper .piece h3", :text => "Another"
-
- response.should have_tag("#wrapper .piece h3", :text => "Text")
- response.should have_tag("#wrapper .piece h3", :text => "Another")
- end
-end
-
-describe 'selecting in HTML that contains a mock with null_object' do
- include ActionController::Assertions::SelectorAssertions
- module HTML
- class Document
- def initialize_with_strict_error_checking(text, strict=false, xml=false)
- initialize_without_strict_error_checking(text, true, xml)
- end
- alias_method :initialize_without_strict_error_checking, :initialize
- alias_method :initialize, :initialize_with_strict_error_checking
- end
- end
-
- describe 'modified HTML::Document' do
- it 'should raise error on valid HTML even though false is specified' do
- lambda {HTML::Document.new("<b>#<Spec::Mocks::Mock:0x267b4f0></b>", false, false)}.should raise_error
- end
- end
-
- it 'should not print errors from assert_select' do
- mock = mock("Dog", :null_object => true)
- html = "<b>#{mock.colour}</b>"
- lambda {html.should have_tag('b')}.should_not raise_error
- end
-end
-
-# describe "An rjs call to :visual_effect, a 'should have_rjs' spec with",
-# :type => :view do
-#
-# before do
-# render 'rjs_spec/visual_effect'
-# end
-#
-# it "should pass with the correct element name" do
-# response.should have_rjs(:effect, :fade, 'mydiv')
-# end
-#
-# it "should fail the wrong element name" do
-# lambda {
-# response.should have_rjs(:effect, :fade, 'wrongname')
-# }.should raise_error(SpecFailed)
-# end
-#
-# it "should fail with the correct element but the wrong command" do
-# lambda {
-# response.should have_rjs(:effect, :puff, 'mydiv')
-# }.should raise_error(SpecFailed)
-# end
-#
-# end
-#
-# describe "An rjs call to :visual_effect for a toggle, a 'should have_rjs' spec with",
-# :type => :view do
-#
-# before do
-# render 'rjs_spec/visual_toggle_effect'
-# end
-#
-# it "should pass with the correct element name" do
-# response.should have_rjs(:effect, :toggle_blind, 'mydiv')
-# end
-#
-# it "should fail with the wrong element name" do
-# lambda {
-# response.should have_rjs(:effect, :toggle_blind, 'wrongname')
-# }.should raise_error(SpecFailed)
-# end
-#
-# it "should fail the correct element but the wrong command" do
-# lambda {
-# response.should have_rjs(:effect, :puff, 'mydiv')
-# }.should raise_error(SpecFailed)
-# end
-#
-# end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/errors_on_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/errors_on_spec.rb
deleted file mode 100644
index bcb702aaf..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/errors_on_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'spec_helper'
-
-describe "error_on" do
- it "should provide a description including the name of what the error is on" do
- have(1).error_on(:whatever).description.should == "have 1 error on :whatever"
- end
-
- it "should provide a failure message including the number actually given" do
- lambda {
- [].should have(1).error_on(:whatever)
- }.should fail_with("expected 1 error on :whatever, got 0")
- end
-end
-
-describe "errors_on" do
- it "should provide a description including the name of what the error is on" do
- have(2).errors_on(:whatever).description.should == "have 2 errors on :whatever"
- end
-
- it "should provide a failure message including the number actually given" do
- lambda {
- [1].should have(3).errors_on(:whatever)
- }.should fail_with("expected 3 errors on :whatever, got 1")
- end
-end
-
-describe "have something other than error_on or errors_on" do
- it "has a standard rspec failure message" do
- lambda {
- [1,2,3].should have(2).elements
- }.should fail_with("expected 2 elements, got 3")
- end
-
- it "has a standard rspec description" do
- have(2).elements.description.should == "have 2 elements"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/have_text_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/have_text_spec.rb
deleted file mode 100644
index c6de80613..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/have_text_spec.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-require 'spec_helper'
-
-describe "have_text" do
-
- it "should have a helpful description" do
- matcher = have_text("foo bar")
- matcher.description.should == 'have text "foo bar"'
- end
-
- describe "where target is a Regexp" do
- it 'should should match submitted text using a regexp' do
- matcher = have_text(/fo*/)
- matcher.matches?('foo').should be_true
- matcher.matches?('bar').should be_nil
- end
- end
-
- describe "where target is a String" do
- it 'should match submitted text using a string' do
- matcher = have_text('foo')
- matcher.matches?('foo').should be_true
- matcher.matches?('foo bar').should be_false
- end
- end
-
-end
-
-describe "have_text",
- :type => :controller do
- ['isolation','integration'].each do |mode|
- if mode == 'integration'
- integrate_views
- end
-
- describe "where target is a response (in #{mode} mode)" do
- controller_name :render_spec
-
- it "should pass with exactly matching text" do
- post 'text_action'
- response.should have_text("this is the text for this action")
- end
-
- it "should pass with matching text (using Regexp)" do
- post 'text_action'
- response.should have_text(/is the text/)
- end
-
- it "should fail with matching text" do
- post 'text_action'
- lambda {
- response.should have_text("this is NOT the text for this action")
- }.should fail_with("expected \"this is NOT the text for this action\", got \"this is the text for this action\"")
- end
-
- it "should fail when a template is rendered" do
- post 'some_action'
- lambda {
- response.should have_text("this is the text for this action")
- }.should fail_with(/expected \"this is the text for this action\", got .*/)
- end
-
- it "should pass using should_not with incorrect text" do
- post 'text_action'
- response.should_not have_text("the accordian guy")
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/include_text_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/include_text_spec.rb
deleted file mode 100644
index 1df4b3833..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/include_text_spec.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'spec_helper'
-
-describe "include_text" do
-
- it "should have a helpful description" do
- matcher = include_text("foo bar")
- matcher.description.should == 'include text "foo bar"'
- end
-
- it 'should match if the text is contained' do
- matcher = include_text('big piece')
- matcher.matches?('I am a big piece of text').should be_true
- end
-
- it 'should not match if text is not contained' do
- matcher = include_text('foo bar')
- matcher.matches?('hello world').should be_false
- end
-
-end
-
-describe "include_text", :type => :controller do
- ['isolation','integration'].each do |mode|
- if mode == 'integration'
- integrate_views
- end
-
- describe "where target is a response (in #{mode} mode)" do
- controller_name :render_spec
-
- it "should pass with exactly matching text" do
- post 'text_action'
- response.should include_text("this is the text for this action")
- end
-
- it 'should pass with substring matching text' do
- post 'text_action'
- response.should include_text('text for this')
- end
-
- it "should fail with incorrect text" do
- post 'text_action'
- lambda {
- response.should include_text("the accordian guy")
- }.should fail_with("expected to find \"the accordian guy\" in \"this is the text for this action\"")
- end
-
- it "should pass using should_not with incorrect text" do
- post 'text_action'
- response.should_not include_text("the accordian guy")
- end
-
- it "should fail when a template is rendered" do
- get 'some_action'
- lambda {
- response.should include_text("this is the text for this action")
- }.should fail_with(/expected to find \"this is the text for this action\"/)
- end
- end
- end
-end
-
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/redirect_to_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/redirect_to_spec.rb
deleted file mode 100644
index 6588cd8b5..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/redirect_to_spec.rb
+++ /dev/null
@@ -1,253 +0,0 @@
-require 'spec_helper'
-
-[:response, :controller].each do |subject_method|
- ['isolation','integration'].each do |mode|
- describe "redirect_to behaviour", :type => :controller do
- if mode == 'integration'
- integrate_views
- end
- controller_name :redirect_spec
-
- subject { send(subject_method) }
-
- it "redirected to another action" do
- get 'action_with_redirect_to_somewhere'
- should redirect_to(:action => 'somewhere')
- end
-
- it "redirected to another controller and action" do
- get 'action_with_redirect_to_other_somewhere'
- should redirect_to(:controller => 'render_spec', :action => 'text_action')
- end
-
- it "redirected to another action (with 'and return')" do
- get 'action_with_redirect_to_somewhere_and_return'
- should redirect_to(:action => 'somewhere')
- end
-
- it "redirected from an SSL action to a non-SSL action" do
- request.stub!(:ssl?).and_return true
- get 'action_with_redirect_to_somewhere'
- should redirect_to(:action => 'somewhere')
- end
-
- it "redirected to correct path with leading /" do
- get 'action_with_redirect_to_somewhere'
- should redirect_to('/redirect_spec/somewhere')
- end
-
- it "redirected to correct path without leading /" do
- get 'action_with_redirect_to_somewhere'
- should redirect_to('redirect_spec/somewhere')
- end
-
- it "redirected to correct internal URL" do
- get 'action_with_redirect_to_somewhere'
- should redirect_to("http://test.host/redirect_spec/somewhere")
- end
-
- it "redirected to correct external URL" do
- get 'action_with_redirect_to_rspec_site'
- should redirect_to("http://rspec.rubyforge.org")
- end
-
- it "redirected :back" do
- request.env['HTTP_REFERER'] = "http://test.host/previous/page"
- get 'action_with_redirect_back'
- should redirect_to(:back)
- end
-
- it "redirected :back and should redirect_to URL matches" do
- request.env['HTTP_REFERER'] = "http://test.host/previous/page"
- get 'action_with_redirect_back'
- should redirect_to("http://test.host/previous/page")
- end
-
- it "redirected from within a respond_to block" do
- get 'action_with_redirect_in_respond_to'
- should redirect_to('redirect_spec/somewhere')
- end
-
- params_as_hash = {:action => "somewhere", :id => 1111, :param1 => "value1", :param2 => "value2"}
-
- it "redirected to an internal URL containing a query string" do
- get "action_with_redirect_which_creates_query_string"
- should redirect_to(params_as_hash)
- end
-
- it "redirected to an internal URL containing a query string, one way it might be generated" do
- get "action_with_redirect_with_query_string_order1"
- should redirect_to(params_as_hash)
- end
-
- it "redirected to an internal URL containing a query string, another way it might be generated" do
- get "action_with_redirect_with_query_string_order2"
- should redirect_to(params_as_hash)
- end
-
- it "redirected to an internal URL which is unroutable but matched via a string" do
- get "action_with_redirect_to_unroutable_url_inside_app"
- should redirect_to("http://test.host/nonexistant/none")
- end
-
- it "redirected to a URL with a specific status code" do
- get "action_with_redirect_to_somewhere_with_status"
- should redirect_to(:action => 'somewhere').with(:status => 301)
- end
-
- it "redirected to a URL with a specific status code (using names)" do
- get "action_with_redirect_to_somewhere_with_status"
- should redirect_to(:action => 'somewhere').with(:status => :moved_permanently)
- end
-
- end
-
-
- describe "redirect_to with a controller spec in #{mode} mode and a custom request.host", :type => :controller do
- if mode == 'integration'
- integrate_views
- end
- controller_name :redirect_spec
-
- subject { send(subject_method) }
-
- before do
- request.host = "some.custom.host"
- end
-
- it "should pass when redirected to another action" do
- get 'action_with_redirect_to_somewhere'
- should redirect_to(:action => 'somewhere')
- end
- end
-
- describe "Given a controller spec in #{mode} mode", :type => :controller do
- if mode == 'integration'
- integrate_views
- end
- controller_name :redirect_spec
-
- subject { send(subject_method) }
-
- it "an action that redirects should not result in an error if no should redirect_to expectation is called" do
- get 'action_with_redirect_to_somewhere'
- end
-
- it "an action that redirects should not result in an error if should_not redirect_to expectation was called, but not to that action" do
- get 'action_with_redirect_to_somewhere'
- should_not redirect_to(:action => 'another_destination')
- end
-
- it "an action that redirects should result in an error if should_not redirect_to expectation was called to that action" do
- get 'action_with_redirect_to_somewhere'
- lambda {
- should_not redirect_to(:action => 'somewhere')
- }.should fail_with("expected not to be redirected to {:action=>\"somewhere\"}, but was")
- end
-
- it "an action that does not redirects should not result in an error if should_not redirect_to expectation was called" do
- get 'action_with_no_redirect'
- should_not redirect_to(:action => 'any_destination')
- end
-
-
- end
-
- describe "Given a controller spec in #{mode} mode, should redirect_to should fail when", :type => :controller do
- if mode == 'integration'
- integrate_views
- end
- controller_name :redirect_spec
-
- subject { send(subject_method) }
-
- it "redirected to wrong action" do
- get 'action_with_redirect_to_somewhere'
- lambda {
- should redirect_to(:action => 'somewhere_else')
- }.should fail_with("expected redirect to {:action=>\"somewhere_else\"}, got redirect to \"http://test.host/redirect_spec/somewhere\"")
- end
-
- it "redirected with wrong status code" do
- get 'action_with_redirect_to_somewhere_with_status'
- lambda {
- should redirect_to(:action => 'somewhere').with(:status => 302)
- }.should fail_with("expected redirect to {:action=>\"somewhere\"} with status 302 Found, got 301 Moved Permanently")
- end
-
- it "redirected with wrong status code (using names)" do
- get 'action_with_redirect_to_somewhere_with_status'
- lambda {
- should redirect_to(:action => 'somewhere').with(:status => :found)
- }.should fail_with("expected redirect to {:action=>\"somewhere\"} with status 302 Found, got 301 Moved Permanently")
- end
-
- it "redirected to incorrect path with leading /" do
- get 'action_with_redirect_to_somewhere'
- lambda {
- should redirect_to('/redirect_spec/somewhere_else')
- }.should fail_with('expected redirect to "/redirect_spec/somewhere_else", got redirect to "http://test.host/redirect_spec/somewhere"')
- end
-
- it "redirected to incorrect path without leading /" do
- get 'action_with_redirect_to_somewhere'
- lambda {
- should redirect_to('redirect_spec/somewhere_else')
- }.should fail_with('expected redirect to "redirect_spec/somewhere_else", got redirect to "http://test.host/redirect_spec/somewhere"')
- end
-
- it "redirected to incorrect internal URL (based on the action)" do
- get 'action_with_redirect_to_somewhere'
- lambda {
- should redirect_to("http://test.host/redirect_spec/somewhere_else")
- }.should fail_with('expected redirect to "http://test.host/redirect_spec/somewhere_else", got redirect to "http://test.host/redirect_spec/somewhere"')
- end
-
- it "redirected to wrong external URL" do
- get 'action_with_redirect_to_rspec_site'
- lambda {
- should redirect_to("http://test.unit.rubyforge.org")
- }.should fail_with('expected redirect to "http://test.unit.rubyforge.org", got redirect to "http://rspec.rubyforge.org"')
- end
-
- it "redirected to incorrect internal URL (based on the directory path)" do
- get 'action_with_redirect_to_somewhere'
- lambda {
- should redirect_to("http://test.host/non_existent_controller/somewhere")
- }.should fail_with('expected redirect to "http://test.host/non_existent_controller/somewhere", got redirect to "http://test.host/redirect_spec/somewhere"')
- end
-
- it "expected redirect :back, but redirected to a new URL" do
- get 'action_with_no_redirect'
- lambda {
- should redirect_to(:back)
- }.should fail_with('expected redirect to :back, got no redirect')
- end
-
- it "no redirect at all" do
- get 'action_with_no_redirect'
- lambda {
- should redirect_to(:action => 'nowhere')
- }.should fail_with("expected redirect to {:action=>\"nowhere\"}, got no redirect")
- end
-
- it "redirected to an internal URL which is unroutable and matched via a hash" do
- get "action_with_redirect_to_unroutable_url_inside_app"
- route = {:controller => "nonexistant", :action => "none"}
- lambda {
- should redirect_to(route)
- }.should raise_error(ActionController::RoutingError, /(no route found to match|No route matches) \"\/nonexistant\/none\" with \{.*\}/)
- end
-
- it "provides a description" do
- redirect_to("foo/bar").description.should == %q|redirect to "foo/bar"|
- end
-
- it "redirects to action with http method restriction" do
- post 'action_to_redirect_to_action_with_method_restriction'
- should redirect_to(:action => 'action_with_method_restriction')
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/render_template_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/render_template_spec.rb
deleted file mode 100644
index 68c995574..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/render_template_spec.rb
+++ /dev/null
@@ -1,208 +0,0 @@
-require 'spec_helper'
-
-[:response, :controller].each do |subject_method|
- ['isolation','integration'].each do |mode|
- describe "#{subject_method}.should render_template (in #{mode} mode)",
- :type => :controller do
- controller_name :render_spec
- if mode == 'integration'
- integrate_views
- end
-
- subject { send(subject_method) }
-
- it "matches an action (using a string)" do
- post 'some_action'
- should render_template('some_action')
- end
-
- it "does not match an action that is a truncated version of the actual action" do
- post 'some_action'
- should_not render_template('some_actio')
- end
-
- if ::Rails::VERSION::STRING >= '2.3'
- it "matches an action with specified extenstions (implicit format)" do
- post 'some_action'
- should render_template('some_action.html.erb')
- end
-
- it "matches an action with specified extenstions (explicit format)" do
- post 'some_action', :format => 'js'
- should render_template('some_action.js.rjs')
- end
- end
-
- it "matches an action (using a symbol)" do
- post 'some_action'
- should render_template(:some_action)
- end
-
- it "matches an action on a specific controller" do
- post 'some_action'
- should render_template('render_spec/some_action')
- end
-
- it "matches an action on a non-default specific controller" do
- post 'action_which_renders_template_from_other_controller'
- should render_template('controller_spec/action_with_template')
- end
-
- it "matches an rjs template" do
- xhr :post, 'some_action'
- should render_template('render_spec/some_action')
- end
-
- it "matches a partial template (simple path)" do
- get 'action_with_partial'
- should render_template("_a_partial")
- end
-
- it "matches a partial template (complex path)" do
- get 'action_with_partial'
- should render_template("render_spec/_a_partial")
- end
-
- it "fails when the wrong template is rendered" do
- post 'some_action'
- lambda do
- should render_template('non_existent_template')
- end.should fail_with(/expected \"non_existent_template\", got \"render_spec\/some_action(\.html\.erb)?\"/)
- end
-
- it "fails when redirected" do
- post :action_with_redirect
- lambda do
- should render_template(:some_action)
- end.should fail_with(/expected \"some_action\", got redirected to \"http:\/\/test.host\/render_spec\/some_action\"/)
- end
-
- it "fails when template is associated with a different controller but controller is not specified" do
- post 'action_which_renders_template_from_other_controller'
- lambda do
- should render_template('action_with_template')
- end.should fail_with(/expected \"action_with_template\", got \"controller_spec\/action_with_template(\.html\.erb)?\"/)
- end
-
- it "fails with incorrect full path when template is associated with a different controller" do
- post 'action_which_renders_template_from_other_controller'
- lambda do
- should render_template('render_spec/action_with_template')
- end.should fail_with(/expected \"render_spec\/action_with_template\", got \"controller_spec\/action_with_template(\.html\.erb)?\"/)
- end
-
- it "fails on the wrong extension" do
- get 'some_action'
- lambda {
- should render_template('render_spec/some_action.js.rjs')
- }.should fail_with(/expected \"render_spec\/some_action\.js\.rjs\", got \"render_spec\/some_action(\.html\.erb)?\"/)
- end
-
- it "faild when TEXT is rendered" do
- post 'text_action'
- lambda do
- should render_template('some_action')
- end.should fail_with(/expected \"some_action\", got (nil|\"\")/)
- end
-
- describe "with an alternate layout" do
- it "says it rendered the action's layout" do
- pending("record rendering of layouts") do
- get 'action_with_alternate_layout'
- should render_template('layouts/simple')
- end
- end
- end
-
- it "provides a description" do
- render_template("foo/bar").description.should == %q|render template "foo/bar"|
- end
- end
-
- describe "#{subject_method}.should_not render_template (in #{mode} mode)",
- :type => :controller do
- controller_name :render_spec
- if mode == 'integration'
- integrate_views
- end
-
- subject { send(subject_method) }
-
- it "passes when the action renders nothing" do
- post 'action_that_renders_nothing'
- should_not render_template('action_that_renders_nothing')
- end
-
- it "passes when the action renders nothing (symbol)" do
- post 'action_that_renders_nothing'
- should_not render_template(:action_that_renders_nothing)
- end
-
- it "passes when the action does not render the template" do
- post 'some_action'
- should_not render_template('some_other_template')
- end
-
- it "passes when the action does not render the template (symbol)" do
- post 'some_action'
- should_not render_template(:some_other_template)
- end
-
- it "passes when the action does not render the template (named with controller)" do
- post 'some_action'
- should_not render_template('render_spec/some_other_template')
- end
-
- it "passes when the action renders the template with a different controller" do
- post 'action_which_renders_template_from_other_controller'
- should_not render_template('action_with_template')
- end
-
- it "passes when the action renders the template (named with controller) with a different controller" do
- post 'action_which_renders_template_from_other_controller'
- should_not render_template('render_spec/action_with_template')
- end
-
- it "passes when TEXT is rendered" do
- post 'text_action'
- should_not render_template('some_action')
- end
-
- it "fails when the action renders the template" do
- post 'some_action'
- lambda do
- should_not render_template('some_action')
- end.should fail_with("expected not to render \"some_action\", but did")
- end
-
- it "fails when the action renders the template (symbol)" do
- post 'some_action'
- lambda do
- should_not render_template(:some_action)
- end.should fail_with("expected not to render \"some_action\", but did")
- end
-
- it "fails when the action renders the template (named with controller)" do
- post 'some_action'
- lambda do
- should_not render_template('render_spec/some_action')
- end.should fail_with("expected not to render \"render_spec/some_action\", but did")
- end
-
- it "fails when the action renders the partial" do
- post 'action_with_partial'
- lambda do
- should_not render_template('_a_partial')
- end.should fail_with("expected not to render \"_a_partial\", but did")
- end
-
- it "fails when the action renders the partial (named with controller)" do
- post 'action_with_partial'
- lambda do
- should_not render_template('render_spec/_a_partial')
- end.should fail_with("expected not to render \"render_spec/_a_partial\", but did")
- end
-
- end
- end
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/should_change_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/should_change_spec.rb
deleted file mode 100644
index 304335270..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/matchers/should_change_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'spec_helper'
-
-describe "should change" do
- describe "handling association proxies" do
- it "should match expected collection with proxied collection" do
- person = Person.create!(:name => 'David')
- koala = person.animals.create!(:name => 'Koala')
- zebra = person.animals.create!(:name => 'Zebra')
-
- lambda {
- person.animals.delete(koala)
- }.should change{person.animals}.to([zebra])
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/ar_classes.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/ar_classes.rb
deleted file mode 100644
index 05213029a..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/ar_classes.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-class MockableModel < ActiveRecord::Base
- has_one :associated_model
-end
-
-class SubMockableModel < MockableModel
-end
-
-class AssociatedModel < ActiveRecord::Base
- belongs_to :mockable_model
-end
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/mock_model_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/mock_model_spec.rb
deleted file mode 100644
index 0abcd08c1..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/mock_model_spec.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-require 'spec_helper'
-require File.dirname(__FILE__) + '/ar_classes'
-
-describe "mock_model" do
- describe "responding to interrogation" do
- before(:each) do
- @model = mock_model(SubMockableModel)
- end
- it "should say it is_a? if it is" do
- @model.is_a?(SubMockableModel).should be(true)
- end
- it "should say it is_a? if it's ancestor is" do
- @model.is_a?(MockableModel).should be(true)
- end
- it "should say it is kind_of? if it is" do
- @model.kind_of?(SubMockableModel).should be(true)
- end
- it "should say it is kind_of? if it's ancestor is" do
- @model.kind_of?(MockableModel).should be(true)
- end
- it "should say it is instance_of? if it is" do
- @model.instance_of?(SubMockableModel).should be(true)
- end
- it "should not say it instance_of? if it isn't, even if it's ancestor is" do
- @model.instance_of?(MockableModel).should be(false)
- end
- it "should say it is not destroyed" do
- @model.destroyed?(SubMockableModel).should be(false)
- end
- it "should say it is not marked_for_destruction" do
- @model.marked_for_destruction?.should be(false)
- end
- end
-
- describe "with params" do
- it "should not mutate its parameters" do
- params = {:a => 'b'}
- model = mock_model(MockableModel, params)
- params.should == {:a => 'b'}
- end
- end
-
- describe "with #id stubbed", :type => :view do
- before(:each) do
- @model = mock_model(MockableModel, :id => 1)
- end
- it "should be named using the stubbed id value" do
- @model.instance_variable_get(:@name).should == "MockableModel_1"
- end
- it "should return string of id value for to_param" do
- @model.to_param.should == "1"
- end
- end
-
- describe "as association", :type => :view do
- before(:each) do
- @real = AssociatedModel.create!
- @mock_model = mock_model(MockableModel)
- @real.mockable_model = @mock_model
- end
-
- it "should pass associated_model == mock" do
- @mock_model.should == @real.mockable_model
- end
-
- it "should pass mock == associated_model" do
- @real.mockable_model.should == @mock_model
- end
- end
-
- describe "with :null_object => true", :type => :view do
- before(:each) do
- @model = mock_model(MockableModel, :null_object => true, :mocked_method => "mocked")
- end
-
- it "should be able to mock methods" do
- @model.mocked_method.should == "mocked"
- end
- it "should return itself to unmocked methods" do
- @model.unmocked_method.should equal(@model)
- end
- end
-
- describe "#as_null_object", :type => :view do
- before(:each) do
- @model = mock_model(MockableModel, :mocked_method => "mocked").as_null_object
- end
-
- it "should be able to mock methods" do
- @model.mocked_method.should == "mocked"
- end
- it "should return itself to unmocked methods" do
- @model.unmocked_method.should equal(@model)
- end
- end
-
- describe "#as_new_record" do
- it "should say it is a new record" do
- mock_model(MockableModel).as_new_record.should be_new_record
- end
-
- it "should have a nil id" do
- mock_model(MockableModel).as_new_record.id.should be(nil)
- end
-
- it "should return nil for #to_param" do
- mock_model(MockableModel).as_new_record.to_param.should be(nil)
- end
- end
-end
-
-
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/stub_model_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/stub_model_spec.rb
deleted file mode 100644
index 09b5a21ec..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/mocks/stub_model_spec.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require 'spec_helper'
-require File.dirname(__FILE__) + '/ar_classes'
-
-describe "stub_model" do
- describe "defaults" do
- it "should have an id" do
- stub_model(MockableModel).id.should be > 0
- end
-
- it "should say it is not a new record" do
- stub_model(MockableModel).should_not be_new_record
- end
- end
-
- it "should accept a stub id" do
- stub_model(MockableModel, :id => 37).id.should == 37
- end
-
- it "should say it is a new record when id is set to nil" do
- stub_model(MockableModel, :id => nil).should be_new_record
- end
-
- it "should accept any arbitrary stub" do
- stub_model(MockableModel, :foo => "bar").foo.should == "bar"
- end
-
- it "should accept a stub for save" do
- stub_model(MockableModel, :save => false).save.should be(false)
- end
-
- describe "#as_new_record" do
- it "should say it is a new record" do
- stub_model(MockableModel).as_new_record.should be_new_record
- end
-
- it "should have a nil id" do
- stub_model(MockableModel).as_new_record.id.should be(nil)
- end
- end
-
- it "should raise when hitting the db" do
- lambda do
- model = stub_model(MockableModel, :changed => true, :attributes_with_quotes => {'this' => 'that'})
- model.save
- end.should raise_error(Spec::Rails::IllegalDataAccessException, /stubbed models are not allowed to access the database/)
- end
-
- it "should increment the id" do
- first = stub_model(MockableModel)
- second = stub_model(MockableModel)
- second.id.should == (first.id + 1)
- end
-
- describe "as association" do
- before(:each) do
- @real = AssociatedModel.create!
- @stub_model = stub_model(MockableModel)
- @real.mockable_model = @stub_model
- end
-
- it "should pass associated_model == mock" do
- @stub_model.should == @real.mockable_model
- end
-
- it "should pass mock == associated_model" do
- @real.mockable_model.should == @stub_model
- end
- end
-
- describe "with a block" do
- it "should yield the model" do
- model = stub_model(MockableModel) do |block_arg|
- @block_arg = block_arg
- end
- model.should be(@block_arg)
- end
- end
-end
-
-
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/sample_modified_fixture.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/sample_modified_fixture.rb
deleted file mode 100644
index 55269248c..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/sample_modified_fixture.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'spec_helper'
-
-describe "A sample spec", :type => :model do
- fixtures :animals
- it "should pass" do
- animals(:pig).name.should == "Piggy"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/sample_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/sample_spec.rb
deleted file mode 100644
index a749cb74e..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/sample_spec.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-require 'spec_helper'
-
-describe "A sample spec", :type => :model do
- fixtures :animals
- it "should pass" do
- animals(:pig).name.should == "Pig"
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/spec_spec.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/spec_spec.rb
deleted file mode 100644
index 1776bac3a..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec/rails/spec_spec.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'spec_helper'
-
-describe "script/spec file" do
- it "should run a spec" do
- dir = File.dirname(__FILE__)
- output = `#{RAILS_ROOT}/script/spec #{dir}/sample_spec.rb`
- unless $?.exitstatus == 0
- flunk "command 'script/spec spec/sample_spec' failed\n#{output}"
- end
- end
-end \ No newline at end of file
diff --git a/vendor/gems/rspec-rails-1.3.3/spec/spec_helper.rb b/vendor/gems/rspec-rails-1.3.3/spec/spec_helper.rb
deleted file mode 100644
index b450d8a7d..000000000
--- a/vendor/gems/rspec-rails-1.3.3/spec/spec_helper.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-$LOAD_PATH.unshift '../rspec/lib'
-$LOAD_PATH.unshift '../../../'
-$LOAD_PATH.unshift 'spec/resources/controllers'
-$LOAD_PATH.unshift 'spec/resources/helpers'
-
-require '../../../spec/spec_helper'
-
-require 'spec/resources/controllers/application'
-require 'spec/resources/controllers/render_spec_controller'
-require 'spec/resources/controllers/controller_spec_controller'
-require 'spec/resources/controllers/rjs_spec_controller'
-require 'spec/resources/controllers/redirect_spec_controller'
-require 'spec/resources/controllers/action_view_base_spec_controller'
-require 'spec/resources/helpers/addition_helper'
-require 'spec/resources/helpers/explicit_helper'
-require 'spec/resources/helpers/more_explicit_helper'
-require 'spec/resources/helpers/view_spec_helper'
-require 'spec/resources/helpers/plugin_application_helper'
-require 'spec/resources/models/animal'
-require 'spec/resources/models/person'
-require 'spec/resources/models/thing'
-
-unless ActionController::Routing.controller_paths.include?('spec/resources/controllers')
- ActionController::Routing.instance_eval {@possible_controllers = nil}
- ActionController::Routing.controller_paths << 'spec/resources/controllers'
-end
-
-module Spec
- module Rails
- module Example
- class ViewExampleGroupController
- prepend_view_path 'spec/resources/views'
- end
- end
- end
-end
-
-def fail()
- raise_error(Spec::Expectations::ExpectationNotMetError)
-end
-
-def fail_with(message)
- raise_error(Spec::Expectations::ExpectationNotMetError,message)
-end
-
-class Proc
- def should_pass
- lambda { self.call }.should_not raise_error
- end
-end
-
-ActionController::Routing::Routes.draw do |map|
- map.connect 'action_with_method_restriction', :controller => 'redirect_spec', :action => 'action_with_method_restriction', :conditions => { :method => :get }
- map.connect 'action_to_redirect_to_action_with_method_restriction', :controller => 'redirect_spec', :action => 'action_to_redirect_to_action_with_method_restriction'
-
- map.resources :rspec_on_rails_specs
- map.custom_route 'custom_route', :controller => 'custom_route_spec', :action => 'custom_route'
- map.connect ':controller/:action/:id'
-end
-
-module HelperMethods
- def method_in_module_included_in_configuration
- end
-end
-
-module HelperMacros
- def accesses_configured_helper_methods
- it "has access to methods in modules included in configuration" do
- method_in_module_included_in_configuration
- end
- end
-end
-
-Spec::Runner.configure do |config|
- config.include HelperMethods
- config.extend HelperMacros
-end
-
diff --git a/vendor/gems/will_paginate-2.3.15/.specification b/vendor/gems/will_paginate-2.3.15/.specification
deleted file mode 100644
index c1f3064e2..000000000
--- a/vendor/gems/will_paginate-2.3.15/.specification
+++ /dev/null
@@ -1,108 +0,0 @@
---- !ruby/object:Gem::Specification
-name: will_paginate
-version: !ruby/object:Gem::Version
- hash: 29
- prerelease: false
- segments:
- - 2
- - 3
- - 15
- version: 2.3.15
-platform: ruby
-authors:
-- "Mislav Marohni\xC4\x87"
-- PJ Hyett
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2010-09-08 00:00:00 +01:00
-default_executable:
-dependencies: []
-
-description: The will_paginate library provides a simple, yet powerful and extensible API for ActiveRecord pagination and rendering of pagination links in ActionView templates.
-email: mislav.marohnic@gmail.com
-executables: []
-
-extensions: []
-
-extra_rdoc_files:
-- README.rdoc
-- LICENSE
-- CHANGELOG.rdoc
-files:
-- Rakefile
-- lib/will_paginate/array.rb
-- lib/will_paginate/collection.rb
-- lib/will_paginate/core_ext.rb
-- lib/will_paginate/finder.rb
-- lib/will_paginate/named_scope.rb
-- lib/will_paginate/named_scope_patch.rb
-- lib/will_paginate/version.rb
-- lib/will_paginate/view_helpers.rb
-- lib/will_paginate.rb
-- test/boot.rb
-- test/collection_test.rb
-- test/console
-- test/database.yml
-- test/finder_test.rb
-- test/fixtures/admin.rb
-- test/fixtures/developer.rb
-- test/fixtures/developers_projects.yml
-- test/fixtures/project.rb
-- test/fixtures/projects.yml
-- test/fixtures/replies.yml
-- test/fixtures/reply.rb
-- test/fixtures/schema.rb
-- test/fixtures/topic.rb
-- test/fixtures/topics.yml
-- test/fixtures/user.rb
-- test/fixtures/users.yml
-- test/helper.rb
-- test/lib/activerecord_test_case.rb
-- test/lib/activerecord_test_connector.rb
-- test/lib/load_fixtures.rb
-- test/lib/view_test_process.rb
-- test/tasks.rake
-- test/view_test.rb
-- README.rdoc
-- LICENSE
-- CHANGELOG.rdoc
-has_rdoc: true
-homepage: http://github.com/mislav/will_paginate/wikis
-licenses: []
-
-post_install_message:
-rdoc_options:
-- --main
-- README.rdoc
-- --charset=UTF-8
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- none: false
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- hash: 3
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project:
-rubygems_version: 1.4.2
-signing_key:
-specification_version: 3
-summary: Pagination for Rails
-test_files: []
-
diff --git a/vendor/gems/will_paginate-2.3.15/CHANGELOG.rdoc b/vendor/gems/will_paginate-2.3.15/CHANGELOG.rdoc
deleted file mode 100644
index 8c4d2c90c..000000000
--- a/vendor/gems/will_paginate-2.3.15/CHANGELOG.rdoc
+++ /dev/null
@@ -1,139 +0,0 @@
-= 2.3.12, released 2009-12-01
-
-* make view helpers "HTML safe" for Rails 2.3.5 with rails_xss plugin
-
-= 2.3.11, released 2009-06-02
-
-* fix `enable_actionpack`
-
-= 2.3.10, released 2009-05-21
-
-* count_by_sql: don't use table alias with any adapters starting with "oracle"
-* Add back "AS count_table" alias to `paginate_by_sql` counter SQL
-
-= 2.3.9, released 2009-05-29
-
-* remove "AS count_table" alias from `paginate_by_sql` counter SQL
-* Rails 2.3.2 compat: monkeypatch Rails issue #2189 (count breaks has_many :through)
-* fix generation of page URLs that contain the "@" character
-* check for method existance in a ruby 1.8- and 1.9-compatible way
-* load will_paginate view helpers even if ActiveRecord is not loaded
-
-== 2.3.8, released 2009-03-09
-
-* Rails 2.3 compat: query parameter parsing with Rack
-
-== 2.3.7, released 2009-02-09
-
-* Removed all unnecessary &block variables since they cause serious memory damage and lots of subsequent gc runs.
-
-== 2.3.6, released 2008-10-26
-
-* Rails 2.2 fix: stop using `extract_attribute_names_from_match` inernal AR method, it no longer exists
-
-== 2.3.5, released 2008-10-07
-
-* update the backported named_scope implementation for Rails versions older than 2.1
-* break out of scope of paginated_each() yielded block when used on named scopes
-* fix paginate(:from)
-
-== 2.3.4, released 2008-09-16
-
-* Removed gem dependency to Active Support (causes trouble with vendored rails).
-* Rails 2.1: fix a failing test and a deprecation warning.
-* Cope with scoped :select when counting.
-
-== 2.3.3, released 2008-08-29
-
-* Ensure that paginate_by_sql doesn't change the original SQL query.
-* RDoc love (now live at http://gitrdoc.com/mislav/will_paginate/tree/master)
-* Rename :prev_label to :previous_label for consistency. old name still functions but is deprecated
-* ActiveRecord 2.1: Remove :include option from count_all query when it's possible.
-
-== 2.3.2, released 2008-05-16
-
-* Fixed LinkRenderer#stringified_merge by removing "return" from iterator block
-* Ensure that 'href' values in pagination links are escaped URLs
-
-== 2.3.1, released 2008-05-04
-
-* Fixed page numbers not showing with custom routes and implicit first page
-* Try to use Hanna for documentation (falls back to default RDoc template if not)
-
-== 2.3.0, released 2008-04-29
-
-* Changed LinkRenderer to receive collection, options and reference to view template NOT in
- constructor, but with the #prepare method. This is a step towards supporting passing of
- LinkRenderer (or subclass) instances that may be preconfigured in some way
-* LinkRenderer now has #page_link and #page_span methods for easier customization of output in
- subclasses
-* Changed page_entries_info() method to adjust its output according to humanized class name of
- collection items. Override this with :entry_name parameter (singular).
-
- page_entries_info(@posts)
- #-> "Displaying all 12 posts"
- page_entries_info(@posts, :entry_name => 'item')
- #-> "Displaying all 12 items"
-
-== 2.2.3, released 2008-04-26
-
-* will_paginate gem is no longer published on RubyForge, but on
- gems.github.com:
-
- gem sources -a http://gems.github.com/ (you only need to do this once)
- gem install mislav-will_paginate
-
-* extract reusable pagination testing stuff into WillPaginate::View
-* rethink the page URL construction mechanizm to be more bulletproof when
- combined with custom routing for page parameter
-* test that anchor parameter can be used in pagination links
-
-== 2.2.2, released 2008-04-21
-
-* Add support for page parameter in custom routes like "/foo/page/2"
-* Change output of "page_entries_info" on single-page collection and erraneous
- output with empty collection as reported by Tim Chater
-
-== 2.2.1, released 2008-04-08
-
-* take less risky path when monkeypatching named_scope; fix that it no longer
- requires ActiveRecord::VERSION
-* use strings in "respond_to?" calls to work around a bug in acts_as_ferret
- stable (ugh)
-* add rake release task
-
-
-== 2.2.0, released 2008-04-07
-
-=== API changes
-* Rename WillPaginate::Collection#page_count to "total_pages" for consistency.
- If you implemented this interface, change your implementation accordingly.
-* Remove old, deprecated style of calling Array#paginate as "paginate(page,
- per_page)". If you want to specify :page, :per_page or :total_entries, use a
- parameter hash.
-* Rename LinkRenderer#url_options to "url_for" and drastically optimize it
-
-=== View changes
-* Added "prev_page" and "next_page" CSS classes on previous/next page buttons
-* Add examples of pagination links styling in "examples/index.html"
-* Change gap in pagination links from "..." to
- "<span class="gap">&hellip;</span>".
-* Add "paginated_section", a block helper that renders pagination both above and
- below content in the block
-* Add rel="prev|next|start" to page links
-
-=== Other
-
-* Add ability to opt-in for Rails 2.1 feature "named_scope" by calling
- WillPaginate.enable_named_scope (tested in Rails 1.2.6 and 2.0.2)
-* Support complex page parameters like "developers[page]"
-* Move Array#paginate definition to will_paginate/array.rb. You can now easily
- use pagination on arrays outside of Rails:
-
- gem 'will_paginate'
- require 'will_paginate/array'
-
-* Add "paginated_each" method for iterating through every record by loading only
- one page of records at the time
-* Rails 2: Rescue from WillPaginate::InvalidPage error with 404 Not Found by
- default
diff --git a/vendor/gems/will_paginate-2.3.15/LICENSE b/vendor/gems/will_paginate-2.3.15/LICENSE
deleted file mode 100644
index 96a48cb3f..000000000
--- a/vendor/gems/will_paginate-2.3.15/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright (c) 2007 PJ Hyett and Mislav Marohnić
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/gems/will_paginate-2.3.15/README.rdoc b/vendor/gems/will_paginate-2.3.15/README.rdoc
deleted file mode 100644
index 2a52ed307..000000000
--- a/vendor/gems/will_paginate-2.3.15/README.rdoc
+++ /dev/null
@@ -1,107 +0,0 @@
-= WillPaginate
-
-Pagination is just limiting the number of records displayed. Why should you let
-it get in your way while developing, then? This plugin makes magic happen. Did
-you ever want to be able to do just this on a model:
-
- Post.paginate :page => 1, :order => 'created_at DESC'
-
-... and then render the page links with a single view helper? Well, now you
-can.
-
-Some resources to get you started:
-
-* {Installation instructions}[http://github.com/mislav/will_paginate/wikis/installation]
- on {the wiki}[http://github.com/mislav/will_paginate/wikis]
-* Your mind reels with questions? Join our
- {Google group}[http://groups.google.com/group/will_paginate].
-* {How to report bugs}[http://github.com/mislav/will_paginate/wikis/report-bugs]
-
-
-== Example usage
-
-Use a paginate finder in the controller:
-
- @posts = Post.paginate_by_board_id @board.id, :page => params[:page], :order => 'updated_at DESC'
-
-Yeah, +paginate+ works just like +find+ -- it just doesn't fetch all the
-records. Don't forget to tell it which page you want, or it will complain!
-Read more on WillPaginate::Finder::ClassMethods.
-
-Render the posts in your view like you would normally do. When you need to render
-pagination, just stick this in:
-
- <%= will_paginate @posts %>
-
-You're done. (You can find the option list at WillPaginate::ViewHelpers.)
-
-How does it know how much items to fetch per page? It asks your model by calling
-its <tt>per_page</tt> class method. You can define it like this:
-
- class Post < ActiveRecord::Base
- cattr_reader :per_page
- @@per_page = 50
- end
-
-... or like this:
-
- class Post < ActiveRecord::Base
- def self.per_page
- 50
- end
- end
-
-... or don't worry about it at all. WillPaginate defines it to be <b>30</b> by default.
-But you can always specify the count explicitly when calling +paginate+:
-
- @posts = Post.paginate :page => params[:page], :per_page => 50
-
-The +paginate+ finder wraps the original finder and returns your resultset that now has
-some new properties. You can use the collection as you would with any ActiveRecord
-resultset. WillPaginate view helpers also need that object to be able to render pagination:
-
- <ol>
- <% for post in @posts -%>
- <li>Render `post` in some nice way.</li>
- <% end -%>
- </ol>
-
- <p>Now let's render us some pagination!</p>
- <%= will_paginate @posts %>
-
-More detailed documentation:
-
-* WillPaginate::Finder::ClassMethods for pagination on your models;
-* WillPaginate::ViewHelpers for your views.
-
-
-== Authors and credits
-
-Authors:: Mislav Marohnić, PJ Hyett
-Original announcement:: http://errtheblog.com/post/929
-Original PHP source:: http://www.strangerstudios.com/sandbox/pagination/diggstyle.php
-
-All these people helped making will_paginate what it is now with their code
-contributions or just simply awesome ideas:
-
-Chris Wanstrath, Dr. Nic Williams, K. Adam Christensen, Mike Garey, Bence
-Golda, Matt Aimonetti, Charles Brian Quinn, Desi McAdam, James Coglan, Matijs
-van Zuijlen, Maria, Brendan Ribera, Todd Willey, Bryan Helmkamp, Jan Berkel,
-Lourens Naudé, Rick Olson, Russell Norris, Piotr Usewicz, Chris Eppstein,
-Denis Barushev, Ben Pickles.
-
-
-== Usable pagination in the UI
-
-There are some CSS styles to get you started in the "examples/" directory. They
-are {showcased online here}[http://mislav.uniqpath.com/will_paginate/].
-
-More reading about pagination as design pattern:
-
-* {Pagination 101}[http://kurafire.net/log/archive/2007/06/22/pagination-101]
-* {Pagination gallery}[http://www.smashingmagazine.com/2007/11/16/pagination-gallery-examples-and-good-practices/]
-* {Pagination on Yahoo Design Pattern Library}[http://developer.yahoo.com/ypatterns/parent.php?pattern=pagination]
-
-Want to discuss, request features, ask questions? Join the
-{Google group}[http://groups.google.com/group/will_paginate].
-
diff --git a/vendor/gems/will_paginate-2.3.15/Rakefile b/vendor/gems/will_paginate-2.3.15/Rakefile
deleted file mode 100644
index 6226b1b70..000000000
--- a/vendor/gems/will_paginate-2.3.15/Rakefile
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'rubygems'
-begin
- hanna_dir = '/Users/mislav/Projects/Hanna/lib'
- $:.unshift hanna_dir if File.exists? hanna_dir
- require 'hanna/rdoctask'
-rescue LoadError
- require 'rake'
- require 'rake/rdoctask'
-end
-load 'test/tasks.rake'
-
-desc 'Default: run unit tests.'
-task :default => :test
-
-desc 'Generate RDoc documentation for the will_paginate plugin.'
-Rake::RDocTask.new(:rdoc) do |rdoc|
- rdoc.rdoc_files.include('README.rdoc', 'LICENSE', 'CHANGELOG.rdoc').
- include('lib/**/*.rb').
- exclude('lib/will_paginate/named_scope*').
- exclude('lib/will_paginate/array.rb').
- exclude('lib/will_paginate/version.rb')
-
- rdoc.main = "README.rdoc" # page to start on
- rdoc.title = "will_paginate documentation"
-
- rdoc.rdoc_dir = 'doc' # rdoc output folder
- rdoc.options << '--inline-source' << '--charset=UTF-8'
- rdoc.options << '--webcvs=http://github.com/mislav/will_paginate/tree/master/'
-end
-
-desc %{Update ".manifest" with the latest list of project filenames. Respect\
-.gitignore by excluding everything that git ignores. Update `files` and\
-`test_files` arrays in "*.gemspec" file if it's present.}
-task :manifest do
- list = `git ls-files --full-name --exclude=*.gemspec --exclude=.*`.chomp.split("\n")
-
- if spec_file = Dir['*.gemspec'].first
- spec = File.read spec_file
- spec.gsub! /^(\s* s.(test_)?files \s* = \s* )( \[ [^\]]* \] | %w\( [^)]* \) )/mx do
- assignment = $1
- bunch = $2 ? list.grep(/^test\//) : list
- '%s%%w(%s)' % [assignment, bunch.join(' ')]
- end
-
- File.open(spec_file, 'w') { |f| f << spec }
- end
- File.open('.manifest', 'w') { |f| f << list.join("\n") }
-end
-
-task :examples do
- %x(haml examples/index.haml examples/index.html)
- %x(sass examples/pagination.sass examples/pagination.css)
-end
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate.rb
deleted file mode 100644
index ac30b6586..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate.rb
+++ /dev/null
@@ -1,90 +0,0 @@
-require 'active_support'
-require 'will_paginate/core_ext'
-
-# = You *will* paginate!
-#
-# First read about WillPaginate::Finder::ClassMethods, then see
-# WillPaginate::ViewHelpers. The magical array you're handling in-between is
-# WillPaginate::Collection.
-#
-# Happy paginating!
-module WillPaginate
- class << self
- # shortcut for <tt>enable_actionpack</tt> and <tt>enable_activerecord</tt> combined
- def enable
- enable_actionpack
- enable_activerecord
- end
-
- # hooks WillPaginate::ViewHelpers into ActionView::Base
- def enable_actionpack
- return if ActionView::Base.instance_methods.include_method? :will_paginate
- require 'will_paginate/view_helpers'
- ActionView::Base.send :include, ViewHelpers
-
- if defined?(ActionController::Base) and ActionController::Base.respond_to? :rescue_responses
- ActionController::Base.rescue_responses['WillPaginate::InvalidPage'] = :not_found
- end
- end
-
- # hooks WillPaginate::Finder into ActiveRecord::Base and classes that deal
- # with associations
- def enable_activerecord
- return if ActiveRecord::Base.respond_to? :paginate
- require 'will_paginate/finder'
- ActiveRecord::Base.send :include, Finder
-
- # support pagination on associations
- a = ActiveRecord::Associations
- [ a::AssociationCollection ].tap { |classes|
- # detect http://dev.rubyonrails.org/changeset/9230
- unless a::HasManyThroughAssociation.superclass == a::HasManyAssociation
- classes << a::HasManyThroughAssociation
- end
- }.each do |klass|
- klass.send :include, Finder::ClassMethods
- klass.class_eval { alias_method_chain :method_missing, :paginate }
- end
-
- # monkeypatch Rails ticket #2189: "count breaks has_many :through"
- ActiveRecord::Base.class_eval do
- protected
- def self.construct_count_options_from_args(*args)
- result = super
- result[0] = '*' if result[0].is_a?(String) and result[0] =~ /\.\*$/
- result
- end
- end
- end
-
- # Enable named_scope, a feature of Rails 2.1, even if you have older Rails
- # (tested on Rails 2.0.2 and 1.2.6).
- #
- # You can pass +false+ for +patch+ parameter to skip monkeypatching
- # *associations*. Use this if you feel that <tt>named_scope</tt> broke
- # has_many, has_many :through or has_and_belongs_to_many associations in
- # your app. By passing +false+, you can still use <tt>named_scope</tt> in
- # your models, but not through associations.
- def enable_named_scope(patch = true)
- return if defined? ActiveRecord::NamedScope
- require 'will_paginate/named_scope'
- require 'will_paginate/named_scope_patch' if patch
-
- ActiveRecord::Base.send :include, WillPaginate::NamedScope
- end
- end
-
- module Deprecation # :nodoc:
- extend ActiveSupport::Deprecation
-
- def self.warn(message, callstack = caller)
- message = 'WillPaginate: ' + message.strip.gsub(/\s+/, ' ')
- ActiveSupport::Deprecation.warn(message, callstack)
- end
- end
-end
-
-if defined? Rails
- WillPaginate.enable_activerecord if defined? ActiveRecord
- WillPaginate.enable_actionpack if defined? ActionController
-end
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/array.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate/array.rb
deleted file mode 100644
index d061d2be9..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/array.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'will_paginate/collection'
-
-# http://www.desimcadam.com/archives/8
-Array.class_eval do
- def paginate(options = {})
- raise ArgumentError, "parameter hash expected (got #{options.inspect})" unless Hash === options
-
- WillPaginate::Collection.create(
- options[:page] || 1,
- options[:per_page] || 30,
- options[:total_entries] || self.length
- ) { |pager|
- pager.replace self[pager.offset, pager.per_page].to_a
- }
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/collection.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate/collection.rb
deleted file mode 100644
index 3ccb4a6aa..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/collection.rb
+++ /dev/null
@@ -1,144 +0,0 @@
-module WillPaginate
- # = Invalid page number error
- # This is an ArgumentError raised in case a page was requested that is either
- # zero or negative number. You should decide how do deal with such errors in
- # the controller.
- #
- # If you're using Rails 2, then this error will automatically get handled like
- # 404 Not Found. The hook is in "will_paginate.rb":
- #
- # ActionController::Base.rescue_responses['WillPaginate::InvalidPage'] = :not_found
- #
- # If you don't like this, use your preffered method of rescuing exceptions in
- # public from your controllers to handle this differently. The +rescue_from+
- # method is a nice addition to Rails 2.
- #
- # This error is *not* raised when a page further than the last page is
- # requested. Use <tt>WillPaginate::Collection#out_of_bounds?</tt> method to
- # check for those cases and manually deal with them as you see fit.
- class InvalidPage < ArgumentError
- def initialize(page, page_num)
- super "#{page.inspect} given as value, which translates to '#{page_num}' as page number"
- end
- end
-
- # = The key to pagination
- # Arrays returned from paginating finds are, in fact, instances of this little
- # class. You may think of WillPaginate::Collection as an ordinary array with
- # some extra properties. Those properties are used by view helpers to generate
- # correct page links.
- #
- # WillPaginate::Collection also assists in rolling out your own pagination
- # solutions: see +create+.
- #
- # If you are writing a library that provides a collection which you would like
- # to conform to this API, you don't have to copy these methods over; simply
- # make your plugin/gem dependant on this library and do:
- #
- # require 'will_paginate/collection'
- # # WillPaginate::Collection is now available for use
- class Collection < Array
- attr_reader :current_page, :per_page, :total_entries, :total_pages
-
- # Arguments to the constructor are the current page number, per-page limit
- # and the total number of entries. The last argument is optional because it
- # is best to do lazy counting; in other words, count *conditionally* after
- # populating the collection using the +replace+ method.
- def initialize(page, per_page, total = nil)
- @current_page = page.to_i
- raise InvalidPage.new(page, @current_page) if @current_page < 1
- @per_page = per_page.to_i
- raise ArgumentError, "`per_page` setting cannot be less than 1 (#{@per_page} given)" if @per_page < 1
-
- self.total_entries = total if total
- end
-
- # Just like +new+, but yields the object after instantiation and returns it
- # afterwards. This is very useful for manual pagination:
- #
- # @entries = WillPaginate::Collection.create(1, 10) do |pager|
- # result = Post.find(:all, :limit => pager.per_page, :offset => pager.offset)
- # # inject the result array into the paginated collection:
- # pager.replace(result)
- #
- # unless pager.total_entries
- # # the pager didn't manage to guess the total count, do it manually
- # pager.total_entries = Post.count
- # end
- # end
- #
- # The possibilities with this are endless. For another example, here is how
- # WillPaginate used to define pagination for Array instances:
- #
- # Array.class_eval do
- # def paginate(page = 1, per_page = 15)
- # WillPaginate::Collection.create(page, per_page, size) do |pager|
- # pager.replace self[pager.offset, pager.per_page].to_a
- # end
- # end
- # end
- #
- # The Array#paginate API has since then changed, but this still serves as a
- # fine example of WillPaginate::Collection usage.
- def self.create(page, per_page, total = nil)
- pager = new(page, per_page, total)
- yield pager
- pager
- end
-
- # Helper method that is true when someone tries to fetch a page with a
- # larger number than the last page. Can be used in combination with flashes
- # and redirecting.
- def out_of_bounds?
- current_page > total_pages
- end
-
- # Current offset of the paginated collection. If we're on the first page,
- # it is always 0. If we're on the 2nd page and there are 30 entries per page,
- # the offset is 30. This property is useful if you want to render ordinals
- # side by side with records in the view: simply start with offset + 1.
- def offset
- (current_page - 1) * per_page
- end
-
- # current_page - 1 or nil if there is no previous page
- def previous_page
- current_page > 1 ? (current_page - 1) : nil
- end
-
- # current_page + 1 or nil if there is no next page
- def next_page
- current_page < total_pages ? (current_page + 1) : nil
- end
-
- # sets the <tt>total_entries</tt> property and calculates <tt>total_pages</tt>
- def total_entries=(number)
- @total_entries = number.to_i
- @total_pages = (@total_entries / per_page.to_f).ceil
- end
-
- # This is a magic wrapper for the original Array#replace method. It serves
- # for populating the paginated collection after initialization.
- #
- # Why magic? Because it tries to guess the total number of entries judging
- # by the size of given array. If it is shorter than +per_page+ limit, then we
- # know we're on the last page. This trick is very useful for avoiding
- # unnecessary hits to the database to do the counting after we fetched the
- # data for the current page.
- #
- # However, after using +replace+ you should always test the value of
- # +total_entries+ and set it to a proper value if it's +nil+. See the example
- # in +create+.
- def replace(array)
- result = super
-
- # The collection is shorter then page limit? Rejoice, because
- # then we know that we are on the last page!
- if total_entries.nil? and length < per_page and (current_page == 1 or length > 0)
- self.total_entries = offset + length
- end
-
- result
- end
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/core_ext.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate/core_ext.rb
deleted file mode 100644
index 3397736b3..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/core_ext.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'set'
-require 'will_paginate/array'
-
-# helper to check for method existance in ruby 1.8- and 1.9-compatible way
-# because `methods`, `instance_methods` and others return strings in 1.8 and symbols in 1.9
-#
-# ['foo', 'bar'].include_method?(:foo) # => true
-class Array
- def include_method?(name)
- name = name.to_sym
- !!(find { |item| item.to_sym == name })
- end
-end
-
-unless Hash.instance_methods.include_method? :except
- Hash.class_eval do
- # Returns a new hash without the given keys.
- def except(*keys)
- rejected = Set.new(respond_to?(:convert_key) ? keys.map { |key| convert_key(key) } : keys)
- reject { |key,| rejected.include?(key) }
- end
-
- # Replaces the hash without only the given keys.
- def except!(*keys)
- replace(except(*keys))
- end
- end
-end
-
-unless Hash.instance_methods.include_method? :slice
- Hash.class_eval do
- # Returns a new hash with only the given keys.
- def slice(*keys)
- allowed = Set.new(respond_to?(:convert_key) ? keys.map { |key| convert_key(key) } : keys)
- reject { |key,| !allowed.include?(key) }
- end
-
- # Replaces the hash with only the given keys.
- def slice!(*keys)
- replace(slice(*keys))
- end
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/finder.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate/finder.rb
deleted file mode 100644
index e121c5ff3..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/finder.rb
+++ /dev/null
@@ -1,264 +0,0 @@
-require 'will_paginate/core_ext'
-
-module WillPaginate
- # A mixin for ActiveRecord::Base. Provides +per_page+ class method
- # and hooks things up to provide paginating finders.
- #
- # Find out more in WillPaginate::Finder::ClassMethods
- #
- module Finder
- def self.included(base)
- base.extend ClassMethods
- class << base
- alias_method_chain :method_missing, :paginate
- # alias_method_chain :find_every, :paginate
- define_method(:per_page) { 30 } unless respond_to?(:per_page)
- end
- end
-
- # = Paginating finders for ActiveRecord models
- #
- # WillPaginate adds +paginate+, +per_page+ and other methods to
- # ActiveRecord::Base class methods and associations. It also hooks into
- # +method_missing+ to intercept pagination calls to dynamic finders such as
- # +paginate_by_user_id+ and translate them to ordinary finders
- # (+find_all_by_user_id+ in this case).
- #
- # In short, paginating finders are equivalent to ActiveRecord finders; the
- # only difference is that we start with "paginate" instead of "find" and
- # that <tt>:page</tt> is required parameter:
- #
- # @posts = Post.paginate :all, :page => params[:page], :order => 'created_at DESC'
- #
- # In paginating finders, "all" is implicit. There is no sense in paginating
- # a single record, right? So, you can drop the <tt>:all</tt> argument:
- #
- # Post.paginate(...) => Post.find :all
- # Post.paginate_all_by_something => Post.find_all_by_something
- # Post.paginate_by_something => Post.find_all_by_something
- #
- # == The importance of the <tt>:order</tt> parameter
- #
- # In ActiveRecord finders, <tt>:order</tt> parameter specifies columns for
- # the <tt>ORDER BY</tt> clause in SQL. It is important to have it, since
- # pagination only makes sense with ordered sets. Without the <tt>ORDER
- # BY</tt> clause, databases aren't required to do consistent ordering when
- # performing <tt>SELECT</tt> queries; this is especially true for
- # PostgreSQL.
- #
- # Therefore, make sure you are doing ordering on a column that makes the
- # most sense in the current context. Make that obvious to the user, also.
- # For perfomance reasons you will also want to add an index to that column.
- module ClassMethods
- # This is the main paginating finder.
- #
- # == Special parameters for paginating finders
- # * <tt>:page</tt> -- REQUIRED, but defaults to 1 if false or nil
- # * <tt>:per_page</tt> -- defaults to <tt>CurrentModel.per_page</tt> (which is 30 if not overridden)
- # * <tt>:total_entries</tt> -- use only if you manually count total entries
- # * <tt>:count</tt> -- additional options that are passed on to +count+
- # * <tt>:finder</tt> -- name of the ActiveRecord finder used (default: "find")
- #
- # All other options (+conditions+, +order+, ...) are forwarded to +find+
- # and +count+ calls.
- def paginate(*args)
- options = args.pop
- page, per_page, total_entries = wp_parse_options(options)
- finder = (options[:finder] || 'find').to_s
-
- if finder == 'find'
- # an array of IDs may have been given:
- total_entries ||= (Array === args.first and args.first.size)
- # :all is implicit
- args.unshift(:all) if args.empty?
- end
-
- WillPaginate::Collection.create(page, per_page, total_entries) do |pager|
- count_options = options.except :page, :per_page, :total_entries, :finder
- find_options = count_options.except(:count).update(:offset => pager.offset, :limit => pager.per_page)
-
- args << find_options
- # @options_from_last_find = nil
- pager.replace(send(finder, *args) { |*a| yield(*a) if block_given? })
-
- # magic counting for user convenience:
- pager.total_entries = wp_count(count_options, args, finder) unless pager.total_entries
- end
- end
-
- # Iterates through all records by loading one page at a time. This is useful
- # for migrations or any other use case where you don't want to load all the
- # records in memory at once.
- #
- # It uses +paginate+ internally; therefore it accepts all of its options.
- # You can specify a starting page with <tt>:page</tt> (default is 1). Default
- # <tt>:order</tt> is <tt>"id"</tt>, override if necessary.
- #
- # See {Faking Cursors in ActiveRecord}[http://weblog.jamisbuck.org/2007/4/6/faking-cursors-in-activerecord]
- # where Jamis Buck describes this and a more efficient way for MySQL.
- def paginated_each(options = {})
- options = { :order => 'id', :page => 1 }.merge options
- options[:page] = options[:page].to_i
- options[:total_entries] = 0 # skip the individual count queries
- total = 0
-
- begin
- collection = paginate(options)
- with_exclusive_scope(:find => {}) do
- # using exclusive scope so that the block is yielded in scope-free context
- total += collection.each { |item| yield item }.size
- end
- options[:page] += 1
- end until collection.size < collection.per_page
-
- total
- end
-
- # Wraps +find_by_sql+ by simply adding LIMIT and OFFSET to your SQL string
- # based on the params otherwise used by paginating finds: +page+ and
- # +per_page+.
- #
- # Example:
- #
- # @developers = Developer.paginate_by_sql ['select * from developers where salary > ?', 80000],
- # :page => params[:page], :per_page => 3
- #
- # A query for counting rows will automatically be generated if you don't
- # supply <tt>:total_entries</tt>. If you experience problems with this
- # generated SQL, you might want to perform the count manually in your
- # application.
- #
- def paginate_by_sql(sql, options)
- WillPaginate::Collection.create(*wp_parse_options(options)) do |pager|
- query = sanitize_sql(sql.dup)
- original_query = query.dup
- # add limit, offset
- add_limit! query, :offset => pager.offset, :limit => pager.per_page
- # perfom the find
- pager.replace find_by_sql(query)
-
- unless pager.total_entries
- count_query = original_query.sub /\bORDER\s+BY\s+[\w`,\s]+$/mi, ''
- count_query = "SELECT COUNT(*) FROM (#{count_query})"
-
- unless self.connection.adapter_name =~ /^(oracle|oci$)/i
- count_query << ' AS count_table'
- end
- # perform the count query
- pager.total_entries = count_by_sql(count_query)
- end
- end
- end
-
- def respond_to?(method, include_priv = false) #:nodoc:
- case method.to_sym
- when :paginate, :paginate_by_sql
- true
- else
- super || super(method.to_s.sub(/^paginate/, 'find'), include_priv)
- end
- end
-
- protected
-
- def method_missing_with_paginate(method, *args) #:nodoc:
- # did somebody tried to paginate? if not, let them be
- unless method.to_s.index('paginate') == 0
- if block_given?
- return method_missing_without_paginate(method, *args) { |*a| yield(*a) }
- else
- return method_missing_without_paginate(method, *args)
- end
- end
-
- # paginate finders are really just find_* with limit and offset
- finder = method.to_s.sub('paginate', 'find')
- finder.sub!('find', 'find_all') if finder.index('find_by_') == 0
-
- options = args.pop
- raise ArgumentError, 'parameter hash expected' unless options.respond_to? :symbolize_keys
- options = options.dup
- options[:finder] = finder
- args << options
-
- paginate(*args) { |*a| yield(*a) if block_given? }
- end
-
- # Does the not-so-trivial job of finding out the total number of entries
- # in the database. It relies on the ActiveRecord +count+ method.
- def wp_count(options, args, finder)
- excludees = [:count, :order, :limit, :offset, :readonly]
- excludees << :from unless ActiveRecord::Calculations::CALCULATIONS_OPTIONS.include?(:from)
-
- # we may be in a model or an association proxy
- klass = (@owner and @reflection) ? @reflection.klass : self
-
- # Use :select from scope if it isn't already present.
- options[:select] = scope(:find, :select) unless options[:select]
-
- if options[:select] and options[:select] =~ /^\s*DISTINCT\b/i
- # Remove quoting and check for table_name.*-like statement.
- if options[:select].gsub(/[`"]/, '') =~ /\w+\.\*/
- options[:select] = "DISTINCT #{klass.table_name}.#{klass.primary_key}"
- end
- else
- excludees << :select # only exclude the select param if it doesn't begin with DISTINCT
- end
-
- # count expects (almost) the same options as find
- count_options = options.except *excludees
-
- # merge the hash found in :count
- # this allows you to specify :select, :order, or anything else just for the count query
- count_options.update options[:count] if options[:count]
-
- # forget about includes if they are irrelevant (Rails 2.1)
- if count_options[:include] and
- klass.private_methods.include_method?(:references_eager_loaded_tables?) and
- !klass.send(:references_eager_loaded_tables?, count_options)
- count_options.delete :include
- end
-
- # we may have to scope ...
- counter = Proc.new { count(count_options) }
-
- count = if finder.index('find_') == 0 and klass.respond_to?(scoper = finder.sub('find', 'with'))
- # scope_out adds a 'with_finder' method which acts like with_scope, if it's present
- # then execute the count with the scoping provided by the with_finder
- send(scoper, &counter)
- elsif finder =~ /^find_(all_by|by)_([_a-zA-Z]\w*)$/
- # extract conditions from calls like "paginate_by_foo_and_bar"
- attribute_names = $2.split('_and_')
- conditions = construct_attributes_from_arguments(attribute_names, args)
- with_scope(:find => { :conditions => conditions }, &counter)
- else
- counter.call
- end
-
- (!count.is_a?(Integer) && count.respond_to?(:length)) ? count.length : count
- end
-
- def wp_parse_options(options) #:nodoc:
- raise ArgumentError, 'parameter hash expected' unless options.respond_to? :symbolize_keys
- options = options.symbolize_keys
- raise ArgumentError, ':page parameter required' unless options.key? :page
-
- if options[:count] and options[:total_entries]
- raise ArgumentError, ':count and :total_entries are mutually exclusive'
- end
-
- page = options[:page] || 1
- per_page = options[:per_page] || self.per_page
- total = options[:total_entries]
- [page, per_page, total]
- end
-
- private
-
- # def find_every_with_paginate(options)
- # @options_from_last_find = options
- # find_every_without_paginate(options)
- # end
- end
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/named_scope.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate/named_scope.rb
deleted file mode 100644
index 5a743d7fb..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/named_scope.rb
+++ /dev/null
@@ -1,170 +0,0 @@
-module WillPaginate
- # This is a feature backported from Rails 2.1 because of its usefullness not only with will_paginate,
- # but in other aspects when managing complex conditions that you want to be reusable.
- module NamedScope
- # All subclasses of ActiveRecord::Base have two named_scopes:
- # * <tt>all</tt>, which is similar to a <tt>find(:all)</tt> query, and
- # * <tt>scoped</tt>, which allows for the creation of anonymous scopes, on the fly: <tt>Shirt.scoped(:conditions => {:color => 'red'}).scoped(:include => :washing_instructions)</tt>
- #
- # These anonymous scopes tend to be useful when procedurally generating complex queries, where passing
- # intermediate values (scopes) around as first-class objects is convenient.
- def self.included(base)
- base.class_eval do
- extend ClassMethods
- named_scope :scoped, lambda { |scope| scope }
- end
- end
-
- module ClassMethods
- def scopes
- read_inheritable_attribute(:scopes) || write_inheritable_attribute(:scopes, {})
- end
-
- # Adds a class method for retrieving and querying objects. A scope represents a narrowing of a database query,
- # such as <tt>:conditions => {:color => :red}, :select => 'shirts.*', :include => :washing_instructions</tt>.
- #
- # class Shirt < ActiveRecord::Base
- # named_scope :red, :conditions => {:color => 'red'}
- # named_scope :dry_clean_only, :joins => :washing_instructions, :conditions => ['washing_instructions.dry_clean_only = ?', true]
- # end
- #
- # The above calls to <tt>named_scope</tt> define class methods <tt>Shirt.red</tt> and <tt>Shirt.dry_clean_only</tt>. <tt>Shirt.red</tt>,
- # in effect, represents the query <tt>Shirt.find(:all, :conditions => {:color => 'red'})</tt>.
- #
- # Unlike Shirt.find(...), however, the object returned by <tt>Shirt.red</tt> is not an Array; it resembles the association object
- # constructed by a <tt>has_many</tt> declaration. For instance, you can invoke <tt>Shirt.red.find(:first)</tt>, <tt>Shirt.red.count</tt>,
- # <tt>Shirt.red.find(:all, :conditions => {:size => 'small'})</tt>. Also, just
- # as with the association objects, name scopes acts like an Array, implementing Enumerable; <tt>Shirt.red.each(&block)</tt>,
- # <tt>Shirt.red.first</tt>, and <tt>Shirt.red.inject(memo, &block)</tt> all behave as if Shirt.red really were an Array.
- #
- # These named scopes are composable. For instance, <tt>Shirt.red.dry_clean_only</tt> will produce all shirts that are both red and dry clean only.
- # Nested finds and calculations also work with these compositions: <tt>Shirt.red.dry_clean_only.count</tt> returns the number of garments
- # for which these criteria obtain. Similarly with <tt>Shirt.red.dry_clean_only.average(:thread_count)</tt>.
- #
- # All scopes are available as class methods on the ActiveRecord::Base descendent upon which the scopes were defined. But they are also available to
- # <tt>has_many</tt> associations. If,
- #
- # class Person < ActiveRecord::Base
- # has_many :shirts
- # end
- #
- # then <tt>elton.shirts.red.dry_clean_only</tt> will return all of Elton's red, dry clean
- # only shirts.
- #
- # Named scopes can also be procedural.
- #
- # class Shirt < ActiveRecord::Base
- # named_scope :colored, lambda { |color|
- # { :conditions => { :color => color } }
- # }
- # end
- #
- # In this example, <tt>Shirt.colored('puce')</tt> finds all puce shirts.
- #
- # Named scopes can also have extensions, just as with <tt>has_many</tt> declarations:
- #
- # class Shirt < ActiveRecord::Base
- # named_scope :red, :conditions => {:color => 'red'} do
- # def dom_id
- # 'red_shirts'
- # end
- # end
- # end
- #
- #
- # For testing complex named scopes, you can examine the scoping options using the
- # <tt>proxy_options</tt> method on the proxy itself.
- #
- # class Shirt < ActiveRecord::Base
- # named_scope :colored, lambda { |color|
- # { :conditions => { :color => color } }
- # }
- # end
- #
- # expected_options = { :conditions => { :colored => 'red' } }
- # assert_equal expected_options, Shirt.colored('red').proxy_options
- def named_scope(name, options = {})
- name = name.to_sym
- scopes[name] = lambda do |parent_scope, *args|
- Scope.new(parent_scope, case options
- when Hash
- options
- when Proc
- options.call(*args)
- end) { |*a| yield(*a) if block_given? }
- end
- (class << self; self end).instance_eval do
- define_method name do |*args|
- scopes[name].call(self, *args)
- end
- end
- end
- end
-
- class Scope
- attr_reader :proxy_scope, :proxy_options
-
- [].methods.each do |m|
- unless m =~ /(^__|^nil\?|^send|^object_id$|class|extend|^find$|count|sum|average|maximum|minimum|paginate|first|last|empty\?|respond_to\?)/
- delegate m, :to => :proxy_found
- end
- end
-
- delegate :scopes, :with_scope, :to => :proxy_scope
-
- def initialize(proxy_scope, options)
- [options[:extend]].flatten.each { |extension| extend extension } if options[:extend]
- extend Module.new { |*args| yield(*args) } if block_given?
- @proxy_scope, @proxy_options = proxy_scope, options.except(:extend)
- end
-
- def reload
- load_found; self
- end
-
- def first(*args)
- if args.first.kind_of?(Integer) || (@found && !args.first.kind_of?(Hash))
- proxy_found.first(*args)
- else
- find(:first, *args)
- end
- end
-
- def last(*args)
- if args.first.kind_of?(Integer) || (@found && !args.first.kind_of?(Hash))
- proxy_found.last(*args)
- else
- find(:last, *args)
- end
- end
-
- def empty?
- @found ? @found.empty? : count.zero?
- end
-
- def respond_to?(method, include_private = false)
- super || @proxy_scope.respond_to?(method, include_private)
- end
-
- protected
- def proxy_found
- @found || load_found
- end
-
- private
- def method_missing(method, *args)
- if scopes.include?(method)
- scopes[method].call(self, *args)
- else
- with_scope :find => proxy_options do
- proxy_scope.send(method, *args) { |*a| yield(*a) if block_given? }
- end
- end
- end
-
- def load_found
- @found = find(:all)
- end
- end
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/named_scope_patch.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate/named_scope_patch.rb
deleted file mode 100644
index 7daff5922..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/named_scope_patch.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-ActiveRecord::Associations::AssociationProxy.class_eval do
- protected
- def with_scope(*args)
- @reflection.klass.send(:with_scope, *args) { |*a| yield(*a) if block_given? }
- end
-end
-
-[ ActiveRecord::Associations::AssociationCollection,
- ActiveRecord::Associations::HasManyThroughAssociation ].each do |klass|
- klass.class_eval do
- protected
- alias :method_missing_without_scopes :method_missing_without_paginate
- def method_missing_without_paginate(method, *args)
- if @reflection.klass.scopes.include?(method)
- @reflection.klass.scopes[method].call(self, *args) { |*a| yield(*a) if block_given? }
- else
- method_missing_without_scopes(method, *args) { |*a| yield(*a) if block_given? }
- end
- end
- end
-end
-
-# Rails 1.2.6
-ActiveRecord::Associations::HasAndBelongsToManyAssociation.class_eval do
- protected
- def method_missing(method, *args)
- if @target.respond_to?(method) || (!@reflection.klass.respond_to?(method) && Class.respond_to?(method))
- super
- elsif @reflection.klass.scopes.include?(method)
- @reflection.klass.scopes[method].call(self, *args)
- else
- @reflection.klass.with_scope(:find => { :conditions => @finder_sql, :joins => @join_sql, :readonly => false }) do
- @reflection.klass.send(method, *args) { |*a| yield(*a) if block_given? }
- end
- end
- end
-end if ActiveRecord::Base.respond_to? :find_first
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/version.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate/version.rb
deleted file mode 100644
index b7de1ad36..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/version.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module WillPaginate
- module VERSION
- MAJOR = 2
- MINOR = 3
- TINY = 15
-
- STRING = [MAJOR, MINOR, TINY].join('.')
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/view_helpers.rb b/vendor/gems/will_paginate-2.3.15/lib/will_paginate/view_helpers.rb
deleted file mode 100644
index 48972b6e4..000000000
--- a/vendor/gems/will_paginate-2.3.15/lib/will_paginate/view_helpers.rb
+++ /dev/null
@@ -1,410 +0,0 @@
-require 'will_paginate/core_ext'
-
-module WillPaginate
- # = Will Paginate view helpers
- #
- # The main view helper, #will_paginate, renders
- # pagination links for the given collection. The helper itself is lightweight
- # and serves only as a wrapper around LinkRenderer instantiation; the
- # renderer then does all the hard work of generating the HTML.
- #
- # == Global options for helpers
- #
- # Options for pagination helpers are optional and get their default values from the
- # <tt>WillPaginate::ViewHelpers.pagination_options</tt> hash. You can write to this hash to
- # override default options on the global level:
- #
- # WillPaginate::ViewHelpers.pagination_options[:previous_label] = 'Previous page'
- #
- # By putting this into "config/initializers/will_paginate.rb" (or simply environment.rb in
- # older versions of Rails) you can easily translate link texts to previous
- # and next pages, as well as override some other defaults to your liking.
- module ViewHelpers
- # default options that can be overridden on the global level
- @@pagination_options = {
- :class => 'pagination',
- :previous_label => '&laquo; Previous',
- :next_label => 'Next &raquo;',
- :inner_window => 4, # links around the current page
- :outer_window => 1, # links around beginning and end
- :separator => ' ', # single space is friendly to spiders and non-graphic browsers
- :param_name => :page,
- :params => nil,
- :renderer => 'WillPaginate::LinkRenderer',
- :page_links => true,
- :container => true
- }
- mattr_reader :pagination_options
-
- # Renders Digg/Flickr-style pagination for a WillPaginate::Collection
- # object. Nil is returned if there is only one page in total; no point in
- # rendering the pagination in that case...
- #
- # ==== Options
- # Display options:
- # * <tt>:previous_label</tt> -- default: "« Previous" (this parameter is called <tt>:prev_label</tt> in versions <b>2.3.2</b> and older!)
- # * <tt>:next_label</tt> -- default: "Next »"
- # * <tt>:page_links</tt> -- when false, only previous/next links are rendered (default: true)
- # * <tt>:inner_window</tt> -- how many links are shown around the current page (default: 4)
- # * <tt>:outer_window</tt> -- how many links are around the first and the last page (default: 1)
- # * <tt>:separator</tt> -- string separator for page HTML elements (default: single space)
- #
- # HTML options:
- # * <tt>:class</tt> -- CSS class name for the generated DIV (default: "pagination")
- # * <tt>:container</tt> -- toggles rendering of the DIV container for pagination links, set to
- # false only when you are rendering your own pagination markup (default: true)
- # * <tt>:id</tt> -- HTML ID for the container (default: nil). Pass +true+ to have the ID
- # automatically generated from the class name of objects in collection: for example, paginating
- # ArticleComment models would yield an ID of "article_comments_pagination".
- #
- # Advanced options:
- # * <tt>:param_name</tt> -- parameter name for page number in URLs (default: <tt>:page</tt>)
- # * <tt>:params</tt> -- additional parameters when generating pagination links
- # (eg. <tt>:controller => "foo", :action => nil</tt>)
- # * <tt>:renderer</tt> -- class name, class or instance of a link renderer (default:
- # <tt>WillPaginate::LinkRenderer</tt>)
- #
- # All options not recognized by will_paginate will become HTML attributes on the container
- # element for pagination links (the DIV). For example:
- #
- # <%= will_paginate @posts, :style => 'font-size: small' %>
- #
- # ... will result in:
- #
- # <div class="pagination" style="font-size: small"> ... </div>
- #
- # ==== Using the helper without arguments
- # If the helper is called without passing in the collection object, it will
- # try to read from the instance variable inferred by the controller name.
- # For example, calling +will_paginate+ while the current controller is
- # PostsController will result in trying to read from the <tt>@posts</tt>
- # variable. Example:
- #
- # <%= will_paginate :id => true %>
- #
- # ... will result in <tt>@post</tt> collection getting paginated:
- #
- # <div class="pagination" id="posts_pagination"> ... </div>
- #
- def will_paginate(collection = nil, options = {})
- options, collection = collection, nil if collection.is_a? Hash
- unless collection or !controller
- collection_name = "@#{controller.controller_name}"
- collection = instance_variable_get(collection_name)
- raise ArgumentError, "The #{collection_name} variable appears to be empty. Did you " +
- "forget to pass the collection object for will_paginate?" unless collection
- end
- # early exit if there is nothing to render
- return nil unless WillPaginate::ViewHelpers.total_pages_for_collection(collection) > 1
-
- options = options.symbolize_keys.reverse_merge WillPaginate::ViewHelpers.pagination_options
- if options[:prev_label]
- WillPaginate::Deprecation::warn(":prev_label view parameter is now :previous_label; the old name has been deprecated", caller)
- options[:previous_label] = options.delete(:prev_label)
- end
-
- # get the renderer instance
- renderer = case options[:renderer]
- when String
- options[:renderer].to_s.constantize.new
- when Class
- options[:renderer].new
- else
- options[:renderer]
- end
- # render HTML for pagination
- renderer.prepare collection, options, self
- renderer.to_html
- end
-
- # Wrapper for rendering pagination links at both top and bottom of a block
- # of content.
- #
- # <% paginated_section @posts do %>
- # <ol id="posts">
- # <% for post in @posts %>
- # <li> ... </li>
- # <% end %>
- # </ol>
- # <% end %>
- #
- # will result in:
- #
- # <div class="pagination"> ... </div>
- # <ol id="posts">
- # ...
- # </ol>
- # <div class="pagination"> ... </div>
- #
- # Arguments are passed to a <tt>will_paginate</tt> call, so the same options
- # apply. Don't use the <tt>:id</tt> option; otherwise you'll finish with two
- # blocks of pagination links sharing the same ID (which is invalid HTML).
- def paginated_section(*args, &block)
- pagination = will_paginate(*args).to_s
-
- unless ActionView::Base.respond_to? :erb_variable
- concat pagination
- yield
- concat pagination
- else
- content = pagination + capture(&block) + pagination
- concat(content, block.binding)
- end
- end
-
- # Renders a helpful message with numbers of displayed vs. total entries.
- # You can use this as a blueprint for your own, similar helpers.
- #
- # <%= page_entries_info @posts %>
- # #-> Displaying posts 6 - 10 of 26 in total
- #
- # By default, the message will use the humanized class name of objects
- # in collection: for instance, "project types" for ProjectType models.
- # Override this with the <tt>:entry_name</tt> parameter:
- #
- # <%= page_entries_info @posts, :entry_name => 'item' %>
- # #-> Displaying items 6 - 10 of 26 in total
- def page_entries_info(collection, options = {})
- entry_name = options[:entry_name] ||
- (collection.empty?? 'entry' : collection.first.class.name.underscore.sub('_', ' '))
-
- if collection.total_pages < 2
- case collection.size
- when 0; "No #{entry_name.pluralize} found"
- when 1; "Displaying <b>1</b> #{entry_name}"
- else; "Displaying <b>all #{collection.size}</b> #{entry_name.pluralize}"
- end
- else
- %{Displaying #{entry_name.pluralize} <b>%d&nbsp;-&nbsp;%d</b> of <b>%d</b> in total} % [
- collection.offset + 1,
- collection.offset + collection.length,
- collection.total_entries
- ]
- end
- end
-
- if respond_to? :safe_helper
- safe_helper :will_paginate, :paginated_section, :page_entries_info
- end
-
- def self.total_pages_for_collection(collection) #:nodoc:
- if collection.respond_to?('page_count') and !collection.respond_to?('total_pages')
- WillPaginate::Deprecation.warn %{
- You are using a paginated collection of class #{collection.class.name}
- which conforms to the old API of WillPaginate::Collection by using
- `page_count`, while the current method name is `total_pages`. Please
- upgrade yours or 3rd-party code that provides the paginated collection}, caller
- class << collection
- def total_pages; page_count; end
- end
- end
- collection.total_pages
- end
- end
-
- # This class does the heavy lifting of actually building the pagination
- # links. It is used by the <tt>will_paginate</tt> helper internally.
- class LinkRenderer
-
- # The gap in page links is represented by:
- #
- # <span class="gap">&hellip;</span>
- attr_accessor :gap_marker
-
- def initialize
- @gap_marker = '<span class="gap">&hellip;</span>'
- end
-
- # * +collection+ is a WillPaginate::Collection instance or any other object
- # that conforms to that API
- # * +options+ are forwarded from +will_paginate+ view helper
- # * +template+ is the reference to the template being rendered
- def prepare(collection, options, template)
- @collection = collection
- @options = options
- @template = template
-
- # reset values in case we're re-using this instance
- @total_pages = @param_name = @url_string = nil
- end
-
- # Process it! This method returns the complete HTML string which contains
- # pagination links. Feel free to subclass LinkRenderer and change this
- # method as you see fit.
- def to_html
- links = @options[:page_links] ? windowed_links : []
- # previous/next buttons
- links.unshift page_link_or_span(@collection.previous_page, 'disabled prev_page', @options[:previous_label])
- links.push page_link_or_span(@collection.next_page, 'disabled next_page', @options[:next_label])
-
- html = links.join(@options[:separator])
- html = html.html_safe if html.respond_to? :html_safe
- @options[:container] ? @template.content_tag(:div, html, html_attributes) : html
- end
-
- # Returns the subset of +options+ this instance was initialized with that
- # represent HTML attributes for the container element of pagination links.
- def html_attributes
- return @html_attributes if @html_attributes
- @html_attributes = @options.except *(WillPaginate::ViewHelpers.pagination_options.keys - [:class])
- # pagination of Post models will have the ID of "posts_pagination"
- if @options[:container] and @options[:id] === true
- @html_attributes[:id] = @collection.first.class.name.underscore.pluralize + '_pagination'
- end
- @html_attributes
- end
-
- protected
-
- # Collects link items for visible page numbers.
- def windowed_links
- prev = nil
-
- visible_page_numbers.inject [] do |links, n|
- # detect gaps:
- links << gap_marker if prev and n > prev + 1
- links << page_link_or_span(n, 'current')
- prev = n
- links
- end
- end
-
- # Calculates visible page numbers using the <tt>:inner_window</tt> and
- # <tt>:outer_window</tt> options.
- def visible_page_numbers
- inner_window, outer_window = @options[:inner_window].to_i, @options[:outer_window].to_i
- window_from = current_page - inner_window
- window_to = current_page + inner_window
-
- # adjust lower or upper limit if other is out of bounds
- if window_to > total_pages
- window_from -= window_to - total_pages
- window_to = total_pages
- end
- if window_from < 1
- window_to += 1 - window_from
- window_from = 1
- window_to = total_pages if window_to > total_pages
- end
-
- visible = (1..total_pages).to_a
- left_gap = (2 + outer_window)...window_from
- right_gap = (window_to + 1)...(total_pages - outer_window)
- visible -= left_gap.to_a if left_gap.last - left_gap.first > 1
- visible -= right_gap.to_a if right_gap.last - right_gap.first > 1
-
- visible
- end
-
- def page_link_or_span(page, span_class, text = nil)
- text ||= page.to_s
- text = text.html_safe if text.respond_to? :html_safe
-
- if page and page != current_page
- classnames = span_class && span_class.index(' ') && span_class.split(' ', 2).last
- page_link page, text, :rel => rel_value(page), :class => classnames
- else
- page_span page, text, :class => span_class
- end
- end
-
- def page_link(page, text, attributes = {})
- @template.link_to text, url_for(page), attributes
- end
-
- def page_span(page, text, attributes = {})
- @template.content_tag :span, text, attributes
- end
-
- # Returns URL params for +page_link_or_span+, taking the current GET params
- # and <tt>:params</tt> option into account.
- def url_for(page)
- page_one = page == 1
- unless @url_string and !page_one
- @url_params = {}
- # page links should preserve GET parameters
- stringified_merge @url_params, @template.params if @template.request.get?
- stringified_merge @url_params, @options[:params] if @options[:params]
-
- if complex = param_name.index(/[^\w-]/)
- page_param = parse_query_parameters("#{param_name}=#{page}")
-
- stringified_merge @url_params, page_param
- else
- @url_params[param_name] = page_one ? 1 : 2
- end
-
- url = @template.url_for(@url_params)
- return url if page_one
-
- if complex
- @url_string = url.sub(%r!((?:\?|&amp;)#{CGI.escape param_name}=)#{page}!, "\\1\0")
- return url
- else
- @url_string = url
- @url_params[param_name] = 3
- @template.url_for(@url_params).split(//).each_with_index do |char, i|
- if char == '3' and url[i, 1] == '2'
- @url_string[i] = "\0"
- break
- end
- end
- end
- end
- # finally!
- @url_string.sub "\0", page.to_s
- end
-
- private
-
- def rel_value(page)
- case page
- when @collection.previous_page; 'prev' + (page == 1 ? ' start' : '')
- when @collection.next_page; 'next'
- when 1; 'start'
- end
- end
-
- def current_page
- @collection.current_page
- end
-
- def total_pages
- @total_pages ||= WillPaginate::ViewHelpers.total_pages_for_collection(@collection)
- end
-
- def param_name
- @param_name ||= @options[:param_name].to_s
- end
-
- # Recursively merge into target hash by using stringified keys from the other one
- def stringified_merge(target, other)
- other.each do |key, value|
- key = key.to_s # this line is what it's all about!
- existing = target[key]
-
- if value.is_a?(Hash) and (existing.is_a?(Hash) or existing.nil?)
- stringified_merge(existing || (target[key] = {}), value)
- else
- target[key] = value
- end
- end
- end
-
- def parse_query_parameters(params)
- if defined? Rack::Utils
- # For Rails > 2.3
- Rack::Utils.parse_nested_query(params)
- elsif defined?(ActionController::AbstractRequest)
- ActionController::AbstractRequest.parse_query_parameters(params)
- elsif defined?(ActionController::UrlEncodedPairParser)
- # For Rails > 2.2
- ActionController::UrlEncodedPairParser.parse_query_parameters(params)
- elsif defined?(CGIMethods)
- CGIMethods.parse_query_parameters(params)
- else
- raise "unsupported ActionPack version"
- end
- end
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/boot.rb b/vendor/gems/will_paginate-2.3.15/test/boot.rb
deleted file mode 100644
index 5344b0794..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/boot.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-plugin_root = File.join(File.dirname(__FILE__), '..')
-version = ENV['RAILS_VERSION']
-version = nil if version and version == ""
-
-# first look for a symlink to a copy of the framework
-if !version and framework_root = ["#{plugin_root}/rails", "#{plugin_root}/../../rails"].find { |p| File.directory? p }
- puts "found framework root: #{framework_root}"
- # this allows for a plugin to be tested outside of an app and without Rails gems
- $:.unshift "#{framework_root}/activesupport/lib", "#{framework_root}/activerecord/lib", "#{framework_root}/actionpack/lib"
-else
- # simply use installed gems if available
- puts "using Rails#{version ? ' ' + version : nil} gems"
- require 'rubygems'
-
- if version
- gem 'rails', version
- else
- gem 'actionpack', '< 3.0.0.a'
- gem 'activerecord', '< 3.0.0.a'
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/collection_test.rb b/vendor/gems/will_paginate-2.3.15/test/collection_test.rb
deleted file mode 100644
index a9336bbeb..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/collection_test.rb
+++ /dev/null
@@ -1,143 +0,0 @@
-require 'helper'
-require 'will_paginate/array'
-
-class ArrayPaginationTest < Test::Unit::TestCase
-
- def setup ; end
-
- def test_simple
- collection = ('a'..'e').to_a
-
- [{ :page => 1, :per_page => 3, :expected => %w( a b c ) },
- { :page => 2, :per_page => 3, :expected => %w( d e ) },
- { :page => 1, :per_page => 5, :expected => %w( a b c d e ) },
- { :page => 3, :per_page => 5, :expected => [] },
- ].
- each do |conditions|
- expected = conditions.delete :expected
- assert_equal expected, collection.paginate(conditions)
- end
- end
-
- def test_defaults
- result = (1..50).to_a.paginate
- assert_equal 1, result.current_page
- assert_equal 30, result.size
- end
-
- def test_deprecated_api
- assert_raise(ArgumentError) { [].paginate(2) }
- assert_raise(ArgumentError) { [].paginate(2, 10) }
- end
-
- def test_total_entries_has_precedence
- result = %w(a b c).paginate :total_entries => 5
- assert_equal 5, result.total_entries
- end
-
- def test_argument_error_with_params_and_another_argument
- assert_raise ArgumentError do
- [].paginate({}, 5)
- end
- end
-
- def test_paginated_collection
- entries = %w(a b c)
- collection = create(2, 3, 10) do |pager|
- assert_equal entries, pager.replace(entries)
- end
-
- assert_equal entries, collection
- assert_respond_to_all collection, %w(total_pages each offset size current_page per_page total_entries)
- assert_kind_of Array, collection
- assert_instance_of Array, collection.entries
- assert_equal 3, collection.offset
- assert_equal 4, collection.total_pages
- assert !collection.out_of_bounds?
- end
-
- def test_previous_next_pages
- collection = create(1, 1, 3)
- assert_nil collection.previous_page
- assert_equal 2, collection.next_page
-
- collection = create(2, 1, 3)
- assert_equal 1, collection.previous_page
- assert_equal 3, collection.next_page
-
- collection = create(3, 1, 3)
- assert_equal 2, collection.previous_page
- assert_nil collection.next_page
- end
-
- def test_out_of_bounds
- entries = create(2, 3, 2){}
- assert entries.out_of_bounds?
-
- entries = create(1, 3, 2){}
- assert !entries.out_of_bounds?
- end
-
- def test_guessing_total_count
- entries = create do |pager|
- # collection is shorter than limit
- pager.replace array
- end
- assert_equal 8, entries.total_entries
-
- entries = create(2, 5, 10) do |pager|
- # collection is shorter than limit, but we have an explicit count
- pager.replace array
- end
- assert_equal 10, entries.total_entries
-
- entries = create do |pager|
- # collection is the same as limit; we can't guess
- pager.replace array(5)
- end
- assert_equal nil, entries.total_entries
-
- entries = create do |pager|
- # collection is empty; we can't guess
- pager.replace array(0)
- end
- assert_equal nil, entries.total_entries
-
- entries = create(1) do |pager|
- # collection is empty and we're on page 1,
- # so the whole thing must be empty, too
- pager.replace array(0)
- end
- assert_equal 0, entries.total_entries
- end
-
- def test_invalid_page
- bad_inputs = [0, -1, nil, '', 'Schnitzel']
-
- bad_inputs.each do |bad|
- assert_raise(WillPaginate::InvalidPage) { create bad }
- end
- end
-
- def test_invalid_per_page_setting
- assert_raise(ArgumentError) { create(1, -1) }
- end
-
- def test_page_count_was_removed
- assert_raise(NoMethodError) { create.page_count }
- # It's `total_pages` now.
- end
-
- private
- def create(page = 2, limit = 5, total = nil, &block)
- if block_given?
- WillPaginate::Collection.create(page, limit, total, &block)
- else
- WillPaginate::Collection.new(page, limit, total)
- end
- end
-
- def array(size = 3)
- Array.new(size)
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/console b/vendor/gems/will_paginate-2.3.15/test/console
deleted file mode 100755
index 3f282f114..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/console
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
-libs = []
-
-libs << 'irb/completion'
-libs << File.join('lib', 'load_fixtures')
-
-exec "#{irb} -Ilib:test#{libs.map{ |l| " -r #{l}" }.join} --simple-prompt"
diff --git a/vendor/gems/will_paginate-2.3.15/test/database.yml b/vendor/gems/will_paginate-2.3.15/test/database.yml
deleted file mode 100644
index b2794c3e1..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/database.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-sqlite3:
- database: ":memory:"
- adapter: sqlite3
- timeout: 500
-
-sqlite2:
- database: ":memory:"
- adapter: sqlite2
-
-mysql:
- adapter: mysql
- username: root
- password:
- encoding: utf8
- database: will_paginate_unittest
-
-postgres:
- adapter: postgresql
- username: mislav
- password:
- database: will_paginate_unittest
- min_messages: warning
diff --git a/vendor/gems/will_paginate-2.3.15/test/finder_test.rb b/vendor/gems/will_paginate-2.3.15/test/finder_test.rb
deleted file mode 100644
index 9e1381a3e..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/finder_test.rb
+++ /dev/null
@@ -1,496 +0,0 @@
-require 'helper'
-require 'lib/activerecord_test_case'
-
-require 'will_paginate'
-WillPaginate.enable_activerecord
-WillPaginate.enable_named_scope
-
-class FinderTest < ActiveRecordTestCase
- fixtures :topics, :replies, :users, :projects, :developers_projects
-
- def test_new_methods_presence
- assert_respond_to_all Topic, %w(per_page paginate paginate_by_sql paginate_by_definition_in_class)
- end
-
- def test_simple_paginate
- assert_queries(1) do
- entries = Topic.paginate :page => nil
- assert_equal 1, entries.current_page
- assert_equal 1, entries.total_pages
- assert_equal 4, entries.size
- end
-
- assert_queries(2) do
- entries = Topic.paginate :page => 2
- assert_equal 1, entries.total_pages
- assert entries.empty?
- end
- end
-
- def test_parameter_api
- # :page parameter in options is required!
- assert_raise(ArgumentError){ Topic.paginate }
- assert_raise(ArgumentError){ Topic.paginate({}) }
-
- # explicit :all should not break anything
- assert_equal Topic.paginate(:page => nil), Topic.paginate(:all, :page => 1)
-
- # :count could be nil and we should still not cry
- assert_nothing_raised { Topic.paginate :page => 1, :count => nil }
- end
-
- def test_counting_when_integer_has_length_method
- Integer.module_eval { def length; to_s.length; end }
- begin
- assert_equal 2, 11.length
- entries = Developer.paginate :page => 1, :per_page => 5
- assert_equal 11, entries.total_entries
- assert_equal 5, entries.size
- assert_equal 3, entries.total_pages
- ensure
- begin
- Integer.module_eval { remove_method :length }
- rescue
- end
- end
- end
-
- def test_paginate_with_per_page
- entries = Topic.paginate :page => 1, :per_page => 1
- assert_equal 1, entries.size
- assert_equal 4, entries.total_pages
-
- # Developer class has explicit per_page at 10
- entries = Developer.paginate :page => 1
- assert_equal 10, entries.size
- assert_equal 2, entries.total_pages
-
- entries = Developer.paginate :page => 1, :per_page => 5
- assert_equal 11, entries.total_entries
- assert_equal 5, entries.size
- assert_equal 3, entries.total_pages
- end
-
- def test_paginate_with_order
- entries = Topic.paginate :page => 1, :order => 'created_at desc'
- expected = [topics(:futurama), topics(:harvey_birdman), topics(:rails), topics(:ar)].reverse
- assert_equal expected, entries.to_a
- assert_equal 1, entries.total_pages
- end
-
- def test_paginate_with_conditions
- entries = Topic.paginate :page => 1, :conditions => ["created_at > ?", 30.minutes.ago]
- expected = [topics(:rails), topics(:ar)]
- assert_equal expected, entries.to_a
- assert_equal 1, entries.total_pages
- end
-
- def test_paginate_with_include_and_conditions
- entries = Topic.paginate \
- :page => 1,
- :include => :replies,
- :conditions => "replies.content LIKE 'Bird%' ",
- :per_page => 10
-
- expected = Topic.find :all,
- :include => 'replies',
- :conditions => "replies.content LIKE 'Bird%' ",
- :limit => 10
-
- assert_equal expected, entries.to_a
- assert_equal 1, entries.total_entries
- end
-
- def test_paginate_with_include_and_order
- entries = nil
- assert_queries(2) do
- entries = Topic.paginate \
- :page => 1,
- :include => :replies,
- :order => 'replies.created_at asc, topics.created_at asc',
- :per_page => 10
- end
-
- expected = Topic.find :all,
- :include => 'replies',
- :order => 'replies.created_at asc, topics.created_at asc',
- :limit => 10
-
- assert_equal expected, entries.to_a
- assert_equal 4, entries.total_entries
- end
-
- def test_paginate_associations_with_include
- entries, project = nil, projects(:active_record)
-
- assert_nothing_raised "THIS IS A BUG in Rails 1.2.3 that was fixed in [7326]. " +
- "Please upgrade to a newer version of Rails." do
- entries = project.topics.paginate \
- :page => 1,
- :include => :replies,
- :conditions => "replies.content LIKE 'Nice%' ",
- :per_page => 10
- end
-
- expected = Topic.find :all,
- :include => 'replies',
- :conditions => "project_id = #{project.id} AND replies.content LIKE 'Nice%' ",
- :limit => 10
-
- assert_equal expected, entries.to_a
- end
-
- def test_paginate_associations
- dhh = users :david
- expected_name_ordered = [projects(:action_controller), projects(:active_record)]
- expected_id_ordered = [projects(:active_record), projects(:action_controller)]
-
- assert_queries(2) do
- # with association-specified order
- entries = dhh.projects.paginate(:page => 1)
- assert_equal expected_name_ordered, entries
- assert_equal 2, entries.total_entries
- end
-
- # with explicit order
- entries = dhh.projects.paginate(:page => 1, :order => 'projects.id')
- assert_equal expected_id_ordered, entries
- assert_equal 2, entries.total_entries
-
- assert_nothing_raised { dhh.projects.find(:all, :order => 'projects.id', :limit => 4) }
- entries = dhh.projects.paginate(:page => 1, :order => 'projects.id', :per_page => 4)
- assert_equal expected_id_ordered, entries
-
- # has_many with implicit order
- topic = Topic.find(1)
- expected = [replies(:spam), replies(:witty_retort)]
- assert_equal expected.map(&:id).sort, topic.replies.paginate(:page => 1).map(&:id).sort
- assert_equal expected.reverse, topic.replies.paginate(:page => 1, :order => 'replies.id ASC')
- end
-
- def test_paginate_association_extension
- project = Project.find(:first)
-
- assert_queries(2) do
- entries = project.replies.paginate_recent :page => 1
- assert_equal [replies(:brave)], entries
- end
- end
-
- def test_paginate_with_joins
- entries = nil
-
- assert_queries(1) do
- entries = Developer.paginate :page => 1,
- :joins => 'LEFT JOIN developers_projects ON users.id = developers_projects.developer_id',
- :conditions => 'project_id = 1'
- assert_equal 2, entries.size
- developer_names = entries.map &:name
- assert developer_names.include?('David')
- assert developer_names.include?('Jamis')
- end
-
- assert_queries(1) do
- expected = entries.to_a
- entries = Developer.paginate :page => 1,
- :joins => 'LEFT JOIN developers_projects ON users.id = developers_projects.developer_id',
- :conditions => 'project_id = 1', :count => { :select => "users.id" }
- assert_equal expected, entries.to_a
- assert_equal 2, entries.total_entries
- end
- end
-
- def test_paginate_with_group
- entries = nil
- assert_queries(1) do
- entries = Developer.paginate :page => 1, :per_page => 10,
- :group => 'salary', :select => 'salary', :order => 'salary'
- end
-
- expected = [ users(:david), users(:jamis), users(:dev_10), users(:poor_jamis) ].map(&:salary).sort
- assert_equal expected, entries.map(&:salary)
- end
-
- def test_paginate_with_dynamic_finder
- expected = [replies(:witty_retort), replies(:spam)]
- assert_equal expected, Reply.paginate_by_topic_id(1, :page => 1, :order => :created_at)
-
- entries = Developer.paginate :conditions => { :salary => 100000 }, :page => 1, :per_page => 5
- assert_equal 8, entries.total_entries
- assert_equal entries, Developer.paginate_by_salary(100000, :page => 1, :per_page => 5)
-
- # dynamic finder + conditions
- entries = Developer.paginate_by_salary(100000, :page => 1,
- :conditions => ['id > ?', 6])
- assert_equal 4, entries.total_entries
- assert_equal (7..10).to_a, entries.map(&:id)
-
- assert_raises NoMethodError do
- Developer.paginate_by_inexistent_attribute 100000, :page => 1
- end
- end
-
- def test_scoped_paginate
- entries = Developer.with_poor_ones { Developer.paginate :page => 1 }
-
- assert_equal 2, entries.size
- assert_equal 2, entries.total_entries
- end
-
- ## named_scope ##
-
- def test_paginate_in_named_scope
- entries = Developer.poor.paginate :page => 1, :per_page => 1
-
- assert_equal 1, entries.size
- assert_equal 2, entries.total_entries
- end
-
- def test_paginate_in_named_scope_on_habtm_association
- project = projects(:active_record)
- assert_queries(2) do
- entries = project.developers.poor.paginate :page => 1, :per_page => 1
-
- assert_equal 1, entries.size, 'one developer should be found'
- assert_equal 1, entries.total_entries, 'only one developer should be found'
- end
- end
-
- def test_paginate_in_named_scope_on_hmt_association
- project = projects(:active_record)
- expected = [replies(:brave)]
-
- assert_queries(2) do
- entries = project.replies.recent.paginate :page => 1, :per_page => 1
- assert_equal expected, entries
- assert_equal 1, entries.total_entries, 'only one reply should be found'
- end
- end
-
- def test_paginate_in_named_scope_on_has_many_association
- project = projects(:active_record)
- expected = [topics(:ar)]
-
- assert_queries(2) do
- entries = project.topics.mentions_activerecord.paginate :page => 1, :per_page => 1
- assert_equal expected, entries
- assert_equal 1, entries.total_entries, 'only one topic should be found'
- end
- end
-
- def test_named_scope_with_include
- project = projects(:active_record)
- entries = project.topics.with_replies_starting_with('AR ').paginate(:page => 1, :per_page => 1)
- assert_equal 1, entries.size
- end
-
- ## misc ##
-
- def test_count_and_total_entries_options_are_mutually_exclusive
- e = assert_raise ArgumentError do
- Developer.paginate :page => 1, :count => {}, :total_entries => 1
- end
- assert_match /exclusive/, e.to_s
- end
-
- def test_readonly
- assert_nothing_raised { Developer.paginate :readonly => true, :page => 1 }
- end
-
- # this functionality is temporarily removed
- def xtest_pagination_defines_method
- pager = "paginate_by_created_at"
- assert !User.methods.include_method?(pager), "User methods should not include `#{pager}` method"
- # paginate!
- assert 0, User.send(pager, nil, :page => 1).total_entries
- # the paging finder should now be defined
- assert User.methods.include_method?(pager), "`#{pager}` method should be defined on User"
- end
-
- # Is this Rails 2.0? Find out by testing find_all which was removed in [6998]
- unless ActiveRecord::Base.respond_to? :find_all
- def test_paginate_array_of_ids
- # AR finders also accept arrays of IDs
- # (this was broken in Rails before [6912])
- assert_queries(1) do
- entries = Developer.paginate((1..8).to_a, :per_page => 3, :page => 2, :order => 'id')
- assert_equal (4..6).to_a, entries.map(&:id)
- assert_equal 8, entries.total_entries
- end
- end
- end
-
- uses_mocha 'internals' do
- def test_implicit_all_with_dynamic_finders
- Topic.expects(:find_all_by_foo).returns([])
- Topic.expects(:count).returns(0)
- Topic.paginate_by_foo :page => 2
- end
-
- def test_guessing_the_total_count
- Topic.expects(:find).returns(Array.new(2))
- Topic.expects(:count).never
-
- entries = Topic.paginate :page => 2, :per_page => 4
- assert_equal 6, entries.total_entries
- end
-
- def test_guessing_that_there_are_no_records
- Topic.expects(:find).returns([])
- Topic.expects(:count).never
-
- entries = Topic.paginate :page => 1, :per_page => 4
- assert_equal 0, entries.total_entries
- end
-
- def test_extra_parameters_stay_untouched
- Topic.expects(:find).with(:all, {:foo => 'bar', :limit => 4, :offset => 0 }).returns(Array.new(5))
- Topic.expects(:count).with({:foo => 'bar'}).returns(1)
-
- Topic.paginate :foo => 'bar', :page => 1, :per_page => 4
- end
-
- def test_count_skips_select
- Developer.stubs(:find).returns([])
- Developer.expects(:count).with({}).returns(0)
- Developer.paginate :select => 'salary', :page => 2
- end
-
- def test_count_select_when_distinct
- Developer.stubs(:find).returns([])
- Developer.expects(:count).with(:select => 'DISTINCT salary').returns(0)
- Developer.paginate :select => 'DISTINCT salary', :page => 2
- end
-
- def test_count_with_scoped_select_when_distinct
- Developer.stubs(:find).returns([])
- Developer.expects(:count).with(:select => 'DISTINCT users.id').returns(0)
- Developer.distinct.paginate :page => 2
- end
-
- def test_should_use_scoped_finders_if_present
- # scope-out compatibility
- Topic.expects(:find_best).returns(Array.new(5))
- Topic.expects(:with_best).returns(1)
-
- Topic.paginate_best :page => 1, :per_page => 4
- end
-
- def test_paginate_by_sql
- sql = "SELECT * FROM users WHERE type = 'Developer' ORDER BY id"
- entries = Developer.paginate_by_sql(sql, :page => 2, :per_page => 3)
- assert_equal 11, entries.total_entries
- assert_equal [users(:dev_4), users(:dev_5), users(:dev_6)], entries
- end
-
- def test_paginate_by_sql_respects_total_entries_setting
- sql = "SELECT * FROM users"
- entries = Developer.paginate_by_sql(sql, :page => 1, :total_entries => 999)
- assert_equal 999, entries.total_entries
- end
-
- def test_paginate_by_sql_strips_order_by_when_counting
- Developer.expects(:find_by_sql).returns([])
- Developer.expects(:count_by_sql).with("SELECT COUNT(*) FROM (sql\n ) AS count_table").returns(0)
-
- Developer.paginate_by_sql "sql\n ORDER\nby foo, bar, `baz` ASC", :page => 2
- end
-
- # TODO: counts are still wrong
- def test_ability_to_use_with_custom_finders
- # acts_as_taggable defines find_tagged_with(tag, options)
- Topic.expects(:find_tagged_with).with('will_paginate', :offset => 5, :limit => 5).returns([])
- Topic.expects(:count).with({}).returns(0)
-
- Topic.paginate_tagged_with 'will_paginate', :page => 2, :per_page => 5
- end
-
- def test_array_argument_doesnt_eliminate_count
- ids = (1..8).to_a
- Developer.expects(:find_all_by_id).returns([])
- Developer.expects(:count).returns(0)
-
- Developer.paginate_by_id(ids, :per_page => 3, :page => 2, :order => 'id')
- end
-
- def test_paginating_finder_doesnt_mangle_options
- Developer.expects(:find).returns([])
- options = { :page => 1, :per_page => 2, :foo => 'bar' }
- options_before = options.dup
-
- Developer.paginate(options)
- assert_equal options_before, options
- end
-
- def test_paginate_by_sql_doesnt_change_original_query
- query = 'SQL QUERY'
- original_query = query.dup
- Developer.expects(:find_by_sql).returns([])
-
- Developer.paginate_by_sql query, :page => 1
- assert_equal original_query, query
- end
-
- def test_paginated_each
- collection = stub('collection', :size => 5, :empty? => false, :per_page => 5)
- collection.expects(:each).times(2).returns(collection)
- last_collection = stub('collection', :size => 4, :empty? => false, :per_page => 5)
- last_collection.expects(:each).returns(last_collection)
-
- params = { :order => 'id', :total_entries => 0 }
-
- Developer.expects(:paginate).with(params.merge(:page => 2)).returns(collection)
- Developer.expects(:paginate).with(params.merge(:page => 3)).returns(collection)
- Developer.expects(:paginate).with(params.merge(:page => 4)).returns(last_collection)
-
- assert_equal 14, Developer.paginated_each(:page => '2') { }
- end
-
- def test_paginated_each_with_named_scope
- assert_equal 2, Developer.poor.paginated_each(:per_page => 1) {
- assert_equal 11, Developer.count
- }
- end
-
- # detect ActiveRecord 2.1
- if ActiveRecord::Base.private_methods.include_method?(:references_eager_loaded_tables?)
- def test_removes_irrelevant_includes_in_count
- Developer.expects(:find).returns([1])
- Developer.expects(:count).with({}).returns(0)
-
- Developer.paginate :page => 1, :per_page => 1, :include => :projects
- end
-
- def test_doesnt_remove_referenced_includes_in_count
- Developer.expects(:find).returns([1])
- Developer.expects(:count).with({ :include => :projects, :conditions => 'projects.id > 2' }).returns(0)
-
- Developer.paginate :page => 1, :per_page => 1,
- :include => :projects, :conditions => 'projects.id > 2'
- end
- end
-
- def test_paginate_from
- result = Developer.paginate(:from => 'users', :page => 1, :per_page => 1)
- assert_equal 1, result.size
- end
-
- def test_hmt_with_include
- # ticket #220
- reply = projects(:active_record).replies.find(:first, :order => 'replies.id')
- assert_equal replies(:decisive), reply
-
- # ticket #223
- Project.find(1, :include => :replies)
-
- # I cannot reproduce any of the failures from those reports :(
- end
-
- def test_hmt_with_uniq
- project = Project.find(1)
- result = project.unique_replies.paginate :page => 1, :per_page => 1,
- :order => 'replies.id'
- assert_equal replies(:decisive), result.first
- end
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/admin.rb b/vendor/gems/will_paginate-2.3.15/test/fixtures/admin.rb
deleted file mode 100644
index 1d5e7f36a..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/admin.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class Admin < User
- has_many :companies, :finder_sql => 'SELECT * FROM companies'
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/developer.rb b/vendor/gems/will_paginate-2.3.15/test/fixtures/developer.rb
deleted file mode 100644
index 0224f4bf8..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/developer.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class Developer < User
- has_and_belongs_to_many :projects, :include => :topics, :order => 'projects.name'
-
- def self.with_poor_ones(&block)
- with_scope :find => { :conditions => ['salary <= ?', 80000], :order => 'salary' } do
- yield
- end
- end
-
- named_scope :distinct, :select => 'DISTINCT `users`.*'
- named_scope :poor, :conditions => ['salary <= ?', 80000], :order => 'salary'
-
- def self.per_page() 10 end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/developers_projects.yml b/vendor/gems/will_paginate-2.3.15/test/fixtures/developers_projects.yml
deleted file mode 100644
index cee359c7c..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/developers_projects.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-david_action_controller:
- developer_id: 1
- project_id: 2
- joined_on: 2004-10-10
-
-david_active_record:
- developer_id: 1
- project_id: 1
- joined_on: 2004-10-10
-
-jamis_active_record:
- developer_id: 2
- project_id: 1 \ No newline at end of file
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/project.rb b/vendor/gems/will_paginate-2.3.15/test/fixtures/project.rb
deleted file mode 100644
index 7f6d72cd1..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/project.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-class Project < ActiveRecord::Base
- has_and_belongs_to_many :developers, :uniq => true
-
- has_many :topics
- # :finder_sql => 'SELECT * FROM topics WHERE (topics.project_id = #{id})',
- # :counter_sql => 'SELECT COUNT(*) FROM topics WHERE (topics.project_id = #{id})'
-
- has_many :replies, :through => :topics do
- def find_recent(params = {})
- with_scope :find => { :conditions => ['replies.created_at > ?', 15.minutes.ago] } do
- find :all, params
- end
- end
- end
-
- has_many :unique_replies, :through => :topics, :source => :replies, :uniq => true
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/projects.yml b/vendor/gems/will_paginate-2.3.15/test/fixtures/projects.yml
deleted file mode 100644
index 74f3c32f6..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/projects.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-active_record:
- id: 1
- name: Active Record
-action_controller:
- id: 2
- name: Active Controller
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/replies.yml b/vendor/gems/will_paginate-2.3.15/test/fixtures/replies.yml
deleted file mode 100644
index 9a83c004a..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/replies.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-witty_retort:
- id: 1
- topic_id: 1
- content: Birdman is better!
- created_at: <%= 6.hours.ago.to_s(:db) %>
-
-another:
- id: 2
- topic_id: 2
- content: Nuh uh!
- created_at: <%= 1.hour.ago.to_s(:db) %>
-
-spam:
- id: 3
- topic_id: 1
- content: Nice site!
- created_at: <%= 1.hour.ago.to_s(:db) %>
-
-decisive:
- id: 4
- topic_id: 4
- content: "I'm getting to the bottom of this"
- created_at: <%= 30.minutes.ago.to_s(:db) %>
-
-brave:
- id: 5
- topic_id: 4
- content: "AR doesn't scare me a bit"
- created_at: <%= 10.minutes.ago.to_s(:db) %>
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/reply.rb b/vendor/gems/will_paginate-2.3.15/test/fixtures/reply.rb
deleted file mode 100644
index ecaf3c1fc..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/reply.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class Reply < ActiveRecord::Base
- belongs_to :topic, :include => [:replies]
-
- named_scope :recent, :conditions => ['replies.created_at > ?', 15.minutes.ago]
-
- validates_presence_of :content
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/schema.rb b/vendor/gems/will_paginate-2.3.15/test/fixtures/schema.rb
deleted file mode 100644
index 8831aad22..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/schema.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-ActiveRecord::Schema.define do
-
- create_table "users", :force => true do |t|
- t.column "name", :text
- t.column "salary", :integer, :default => 70000
- t.column "created_at", :datetime
- t.column "updated_at", :datetime
- t.column "type", :text
- end
-
- create_table "projects", :force => true do |t|
- t.column "name", :text
- end
-
- create_table "developers_projects", :id => false, :force => true do |t|
- t.column "developer_id", :integer, :null => false
- t.column "project_id", :integer, :null => false
- t.column "joined_on", :date
- t.column "access_level", :integer, :default => 1
- end
-
- create_table "topics", :force => true do |t|
- t.column "project_id", :integer
- t.column "title", :string
- t.column "subtitle", :string
- t.column "content", :text
- t.column "created_at", :datetime
- t.column "updated_at", :datetime
- end
-
- create_table "replies", :force => true do |t|
- t.column "content", :text
- t.column "created_at", :datetime
- t.column "updated_at", :datetime
- t.column "topic_id", :integer
- end
-
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/topic.rb b/vendor/gems/will_paginate-2.3.15/test/fixtures/topic.rb
deleted file mode 100644
index 2dd94955e..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/topic.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class Topic < ActiveRecord::Base
- has_many :replies, :dependent => :destroy, :order => 'replies.created_at DESC'
- belongs_to :project
-
- named_scope :mentions_activerecord, :conditions => ['topics.title LIKE ?', '%ActiveRecord%']
-
- named_scope :with_replies_starting_with, lambda { |text|
- { :conditions => "replies.content LIKE '#{text}%' ", :include => :replies }
- }
-
- def self.paginate_by_definition_in_class; end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/topics.yml b/vendor/gems/will_paginate-2.3.15/test/fixtures/topics.yml
deleted file mode 100644
index 0a2690473..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/topics.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-futurama:
- id: 1
- title: Isnt futurama awesome?
- subtitle: It really is, isnt it.
- content: I like futurama
- created_at: <%= 1.day.ago.to_s(:db) %>
- updated_at:
-
-harvey_birdman:
- id: 2
- title: Harvey Birdman is the king of all men
- subtitle: yup
- content: He really is
- created_at: <%= 2.hours.ago.to_s(:db) %>
- updated_at:
-
-rails:
- id: 3
- project_id: 1
- title: Rails is nice
- subtitle: It makes me happy
- content: except when I have to hack internals to fix pagination. even then really.
- created_at: <%= 20.minutes.ago.to_s(:db) %>
-
-ar:
- id: 4
- project_id: 1
- title: ActiveRecord sometimes freaks me out
- content: "I mean, what's the deal with eager loading?"
- created_at: <%= 15.minutes.ago.to_s(:db) %>
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/user.rb b/vendor/gems/will_paginate-2.3.15/test/fixtures/user.rb
deleted file mode 100644
index 4a57cf079..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/user.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class User < ActiveRecord::Base
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/fixtures/users.yml b/vendor/gems/will_paginate-2.3.15/test/fixtures/users.yml
deleted file mode 100644
index ed2c03ae1..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/fixtures/users.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-david:
- id: 1
- name: David
- salary: 80000
- type: Developer
-
-jamis:
- id: 2
- name: Jamis
- salary: 150000
- type: Developer
-
-<% for digit in 3..10 %>
-dev_<%= digit %>:
- id: <%= digit %>
- name: fixture_<%= digit %>
- salary: 100000
- type: Developer
-<% end %>
-
-poor_jamis:
- id: 11
- name: Jamis
- salary: 9000
- type: Developer
-
-admin:
- id: 12
- name: admin
- type: Admin
-
-goofy:
- id: 13
- name: Goofy
- type: Admin
diff --git a/vendor/gems/will_paginate-2.3.15/test/helper.rb b/vendor/gems/will_paginate-2.3.15/test/helper.rb
deleted file mode 100644
index 7b55af59c..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/helper.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'test/unit'
-require 'rubygems'
-
-# gem install redgreen for colored test output
-begin require 'redgreen'; rescue LoadError; end
-
-require 'boot' unless defined?(ActiveRecord)
-
-class Test::Unit::TestCase
- protected
- def assert_respond_to_all object, methods
- methods.each do |method|
- [method.to_s, method.to_sym].each { |m| assert_respond_to object, m }
- end
- end
-
- def collect_deprecations
- old_behavior = WillPaginate::Deprecation.behavior
- deprecations = []
- WillPaginate::Deprecation.behavior = Proc.new do |message, callstack|
- deprecations << message
- end
- result = yield
- [result, deprecations]
- ensure
- WillPaginate::Deprecation.behavior = old_behavior
- end
-end
-
-# Wrap tests that use Mocha and skip if unavailable.
-def uses_mocha(test_name)
- require 'mocha'
-rescue LoadError
- $stderr.puts "Skipping #{test_name} tests. `gem install mocha` and try again."
-else
- yield
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/lib/activerecord_test_case.rb b/vendor/gems/will_paginate-2.3.15/test/lib/activerecord_test_case.rb
deleted file mode 100644
index 72a6b16e3..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/lib/activerecord_test_case.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'lib/activerecord_test_connector'
-
-class ActiveRecordTestCase < Test::Unit::TestCase
- if defined?(ActiveSupport::Testing::SetupAndTeardown)
- include ActiveSupport::Testing::SetupAndTeardown
- end
-
- if defined?(ActiveRecord::TestFixtures)
- include ActiveRecord::TestFixtures
- end
- # Set our fixture path
- if ActiveRecordTestConnector.able_to_connect
- self.fixture_path = File.join(File.dirname(__FILE__), '..', 'fixtures')
- self.use_transactional_fixtures = true
- end
-
- def self.fixtures(*args)
- super if ActiveRecordTestConnector.connected
- end
-
- def run(*args)
- super if ActiveRecordTestConnector.connected
- end
-
- # Default so Test::Unit::TestCase doesn't complain
- def test_truth
- end
-
- protected
-
- def assert_queries(num = 1)
- $query_count = 0
- yield
- ensure
- assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed."
- end
-
- def assert_no_queries(&block)
- assert_queries(0, &block)
- end
-end
-
-ActiveRecordTestConnector.setup
diff --git a/vendor/gems/will_paginate-2.3.15/test/lib/activerecord_test_connector.rb b/vendor/gems/will_paginate-2.3.15/test/lib/activerecord_test_connector.rb
deleted file mode 100644
index d3e80e6e3..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/lib/activerecord_test_connector.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-require 'active_record'
-require 'active_record/version'
-require 'active_record/fixtures'
-
-class ActiveRecordTestConnector
- cattr_accessor :able_to_connect
- cattr_accessor :connected
-
- FIXTURES_PATH = File.join(File.dirname(__FILE__), '..', 'fixtures')
-
- # Set our defaults
- self.connected = false
- self.able_to_connect = true
-
- def self.setup
- unless self.connected || !self.able_to_connect
- setup_connection
- load_schema
- add_load_path FIXTURES_PATH
- self.connected = true
- end
- rescue Exception => e # errors from ActiveRecord setup
- $stderr.puts "\nSkipping ActiveRecord tests: #{e}\n\n"
- self.able_to_connect = false
- end
-
- private
-
- def self.add_load_path(path)
- dep = defined?(ActiveSupport::Dependencies) ? ActiveSupport::Dependencies : ::Dependencies
- autoload_paths = dep.respond_to?(:autoload_paths) ? dep.autoload_paths : dep.load_paths
- autoload_paths.unshift path
- end
-
- def self.setup_connection
- db = ENV['DB'].blank?? 'sqlite3' : ENV['DB']
-
- configurations = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'database.yml'))
- raise "no configuration for '#{db}'" unless configurations.key? db
- configuration = configurations[db]
-
- ActiveRecord::Base.logger = Logger.new(STDOUT) if $0 == 'irb'
- puts "using #{configuration['adapter']} adapter" unless ENV['DB'].blank?
-
- gem 'sqlite3-ruby' if 'sqlite3' == db
-
- ActiveRecord::Base.establish_connection(configuration)
- ActiveRecord::Base.configurations = { db => configuration }
- prepare ActiveRecord::Base.connection
-
- unless Object.const_defined?(:QUOTED_TYPE)
- Object.send :const_set, :QUOTED_TYPE, ActiveRecord::Base.connection.quote_column_name('type')
- end
- end
-
- def self.load_schema
- ActiveRecord::Base.silence do
- ActiveRecord::Migration.verbose = false
- load File.join(FIXTURES_PATH, 'schema.rb')
- end
- end
-
- def self.prepare(conn)
- class << conn
- IGNORED_SQL = [/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/, /^SHOW FIELDS /]
-
- def execute_with_counting(sql, name = nil, &block)
- $query_count ||= 0
- $query_count += 1 unless IGNORED_SQL.any? { |r| sql =~ r }
- execute_without_counting(sql, name, &block)
- end
-
- alias_method_chain :execute, :counting
- end
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/lib/load_fixtures.rb b/vendor/gems/will_paginate-2.3.15/test/lib/load_fixtures.rb
deleted file mode 100644
index 10d6f4209..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/lib/load_fixtures.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'boot'
-require 'lib/activerecord_test_connector'
-
-# setup the connection
-ActiveRecordTestConnector.setup
-
-# load all fixtures
-Fixtures.create_fixtures(ActiveRecordTestConnector::FIXTURES_PATH, ActiveRecord::Base.connection.tables)
-
-require 'will_paginate'
-WillPaginate.enable_activerecord
diff --git a/vendor/gems/will_paginate-2.3.15/test/lib/view_test_process.rb b/vendor/gems/will_paginate-2.3.15/test/lib/view_test_process.rb
deleted file mode 100644
index 8da1b71c1..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/lib/view_test_process.rb
+++ /dev/null
@@ -1,179 +0,0 @@
-require 'will_paginate/core_ext'
-require 'action_controller'
-require 'action_controller/test_process'
-
-require 'will_paginate'
-WillPaginate.enable_actionpack
-
-ActionController::Routing::Routes.draw do |map|
- map.connect 'dummy/page/:page', :controller => 'dummy'
- map.connect 'dummy/dots/page.:page', :controller => 'dummy', :action => 'dots'
- map.connect 'ibocorp/:page', :controller => 'ibocorp',
- :requirements => { :page => /\d+/ },
- :defaults => { :page => 1 }
-
- map.connect ':controller/:action/:id'
-end
-
-ActionController::Base.perform_caching = false
-
-class WillPaginate::ViewTestCase < Test::Unit::TestCase
- if defined?(ActionController::TestCase::Assertions)
- include ActionController::TestCase::Assertions
- end
- if defined?(ActiveSupport::Testing::Deprecation)
- include ActiveSupport::Testing::Deprecation
- end
-
- def setup
- super
- @controller = DummyController.new
- @request = @controller.request
- @html_result = nil
- @template = '<%= will_paginate collection, options %>'
-
- @view = ActionView::Base.new
- @view.assigns['controller'] = @controller
- @view.assigns['_request'] = @request
- @view.assigns['_params'] = @request.params
- end
-
- def test_no_complain; end
-
- protected
-
- def paginate(collection = {}, options = {}, &block)
- if collection.instance_of? Hash
- page_options = { :page => 1, :total_entries => 11, :per_page => 4 }.merge(collection)
- collection = [1].paginate(page_options)
- end
-
- locals = { :collection => collection, :options => options }
-
- unless @view.respond_to? :render_template
- # Rails 2.2
- @html_result = ActionView::InlineTemplate.new(@template).render(@view, locals)
- else
- if defined? ActionView::InlineTemplate
- # Rails 2.1
- args = [ ActionView::InlineTemplate.new(@view, @template, locals) ]
- else
- # older Rails versions
- args = [nil, @template, nil, locals]
- end
-
- @html_result = @view.render_template(*args)
- end
-
- @html_document = HTML::Document.new(@html_result, true, false)
-
- if block_given?
- classname = options[:class] || WillPaginate::ViewHelpers.pagination_options[:class]
- assert_select("div.#{classname}", 1, 'no main DIV', &block)
- end
- end
-
- def response_from_page_or_rjs
- @html_document.root
- end
-
- def validate_page_numbers expected, links, param_name = :page
- param_pattern = /\W#{CGI.escape(param_name.to_s)}=([^&]*)/
-
- assert_equal(expected, links.map { |e|
- e['href'] =~ param_pattern
- $1 ? $1.to_i : $1
- })
- end
-
- def assert_links_match pattern, links = nil, numbers = nil
- links ||= assert_select 'div.pagination a[href]' do |elements|
- elements
- end
-
- pages = [] if numbers
-
- links.each do |el|
- assert_match pattern, el['href']
- if numbers
- el['href'] =~ pattern
- pages << ($1.nil?? nil : $1.to_i)
- end
- end
-
- assert_equal numbers, pages, "page numbers don't match" if numbers
- end
-
- def assert_no_links_match pattern
- assert_select 'div.pagination a[href]' do |elements|
- elements.each do |el|
- assert_no_match pattern, el['href']
- end
- end
- end
-end
-
-class DummyRequest
- attr_accessor :symbolized_path_parameters
-
- def initialize
- @get = true
- @params = {}
- @symbolized_path_parameters = { :controller => 'foo', :action => 'bar' }
- end
-
- def get?
- @get
- end
-
- def post
- @get = false
- end
-
- def relative_url_root
- ''
- end
-
- def params(more = nil)
- @params.update(more) if more
- @params
- end
-end
-
-class DummyController
- attr_reader :request
- attr_accessor :controller_name
-
- def initialize
- @request = DummyRequest.new
- @url = ActionController::UrlRewriter.new(@request, @request.params)
- end
-
- def params
- @request.params
- end
-
- def url_for(params)
- @url.rewrite(params)
- end
-end
-
-module HTML
- Node.class_eval do
- def inner_text
- children.map(&:inner_text).join('')
- end
- end
-
- Text.class_eval do
- def inner_text
- self.to_s
- end
- end
-
- Tag.class_eval do
- def inner_text
- childless?? '' : super
- end
- end
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/tasks.rake b/vendor/gems/will_paginate-2.3.15/test/tasks.rake
deleted file mode 100644
index a0453e609..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/tasks.rake
+++ /dev/null
@@ -1,59 +0,0 @@
-require 'rake/testtask'
-
-desc 'Test the will_paginate plugin.'
-Rake::TestTask.new(:test) do |t|
- t.pattern = 'test/**/*_test.rb'
- t.verbose = true
- t.libs << 'test'
-end
-
-# I want to specify environment variables at call time
-class EnvTestTask < Rake::TestTask
- attr_accessor :env
-
- def ruby(*args)
- env.each { |key, value| ENV[key] = value } if env
- super
- env.keys.each { |key| ENV.delete key } if env
- end
-end
-
-for configuration in %w( sqlite3 mysql postgres )
- EnvTestTask.new("test_#{configuration}") do |t|
- t.pattern = 'test/finder_test.rb'
- t.verbose = true
- t.env = { 'DB' => configuration }
- t.libs << 'test'
- end
-end
-
-task :test_databases => %w(test_mysql test_sqlite3 test_postgres)
-
-desc %{Test everything on SQLite3, MySQL and PostgreSQL}
-task :test_full => %w(test test_mysql test_postgres)
-
-desc %{Test everything with Rails 2.1.x, 2.0.x & 1.2.x gems}
-task :test_all do
- all = Rake::Task['test_full']
- versions = %w(2.3.2 2.2.2 2.1.0 2.0.4 1.2.6)
- versions.each do |version|
- ENV['RAILS_VERSION'] = "~> #{version}"
- all.invoke
- reset_invoked unless version == versions.last
- end
-end
-
-def reset_invoked
- %w( test_full test test_mysql test_postgres ).each do |name|
- Rake::Task[name].instance_variable_set '@already_invoked', false
- end
-end
-
-task :rcov do
- excludes = %w( lib/will_paginate/named_scope*
- lib/will_paginate/core_ext.rb
- lib/will_paginate.rb
- rails* )
-
- system %[rcov -Itest:lib test/*.rb -x #{excludes.join(',')}]
-end
diff --git a/vendor/gems/will_paginate-2.3.15/test/view_test.rb b/vendor/gems/will_paginate-2.3.15/test/view_test.rb
deleted file mode 100644
index 3777cced7..000000000
--- a/vendor/gems/will_paginate-2.3.15/test/view_test.rb
+++ /dev/null
@@ -1,373 +0,0 @@
-require 'helper'
-require 'lib/view_test_process'
-
-class AdditionalLinkAttributesRenderer < WillPaginate::LinkRenderer
- def initialize(link_attributes = nil)
- super()
- @additional_link_attributes = link_attributes || { :default => 'true' }
- end
-
- def page_link(page, text, attributes = {})
- @template.link_to text, url_for(page), attributes.merge(@additional_link_attributes)
- end
-end
-
-class ViewTest < WillPaginate::ViewTestCase
-
- ## basic pagination ##
-
- def test_will_paginate
- paginate do |pagination|
- assert_select 'a[href]', 3 do |elements|
- validate_page_numbers [2,3,2], elements
- assert_select elements.last, ':last-child', "Next &raquo;"
- end
- assert_select 'span', 2
- assert_select 'span.disabled:first-child', '&laquo; Previous'
- assert_select 'span.current', '1'
- assert_equal '&laquo; Previous 1 2 3 Next &raquo;', pagination.first.inner_text
- end
- end
-
- def test_no_pagination_when_page_count_is_one
- paginate :per_page => 30
- assert_equal '', @html_result
- end
-
- def test_will_paginate_with_options
- paginate({ :page => 2 },
- :class => 'will_paginate', :previous_label => 'Prev', :next_label => 'Next') do
- assert_select 'a[href]', 4 do |elements|
- validate_page_numbers [1,1,3,3], elements
- # test rel attribute values:
- assert_select elements[1], 'a', '1' do |link|
- assert_equal 'prev start', link.first['rel']
- end
- assert_select elements.first, 'a', "Prev" do |link|
- assert_equal 'prev start', link.first['rel']
- end
- assert_select elements.last, 'a', "Next" do |link|
- assert_equal 'next', link.first['rel']
- end
- end
- assert_select 'span.current', '2'
- end
- end
-
- def test_will_paginate_using_renderer_class
- paginate({}, :renderer => AdditionalLinkAttributesRenderer) do
- assert_select 'a[default=true]', 3
- end
- end
-
- def test_will_paginate_using_renderer_instance
- renderer = WillPaginate::LinkRenderer.new
- renderer.gap_marker = '<span class="my-gap">~~</span>'
-
- paginate({ :per_page => 2 }, :inner_window => 0, :outer_window => 0, :renderer => renderer) do
- assert_select 'span.my-gap', '~~'
- end
-
- renderer = AdditionalLinkAttributesRenderer.new(:title => 'rendered')
- paginate({}, :renderer => renderer) do
- assert_select 'a[title=rendered]', 3
- end
- end
-
- def test_prev_next_links_have_classnames
- paginate do |pagination|
- assert_select 'span.disabled.prev_page:first-child'
- assert_select 'a.next_page[href]:last-child'
- end
- end
-
- def test_prev_label_deprecated
- assert_deprecated ':previous_label' do
- paginate({ :page => 2 }, :prev_label => 'Deprecated') do
- assert_select 'a[href]:first-child', 'Deprecated'
- end
- end
- end
-
- def test_full_output
- paginate
- expected = <<-HTML
- <div class="pagination"><span class="disabled prev_page">&laquo; Previous</span>
- <span class="current">1</span>
- <a href="/foo/bar?page=2" rel="next">2</a>
- <a href="/foo/bar?page=3">3</a>
- <a href="/foo/bar?page=2" class="next_page" rel="next">Next &raquo;</a></div>
- HTML
- expected.strip!.gsub!(/\s{2,}/, ' ')
-
- assert_dom_equal expected, @html_result
- end
-
- def test_escaping_of_urls
- paginate({:page => 1, :per_page => 1, :total_entries => 2},
- :page_links => false, :params => { :tag => '<br>' })
-
- assert_select 'a[href]', 1 do |links|
- query = links.first['href'].split('?', 2)[1]
- assert_equal %w(page=2 tag=%3Cbr%3E), query.split('&amp;').sort
- end
- end
-
- ## advanced options for pagination ##
-
- def test_will_paginate_without_container
- paginate({}, :container => false)
- assert_select 'div.pagination', 0, 'main DIV present when it shouldn\'t'
- assert_select 'a[href]', 3
- end
-
- def test_will_paginate_without_page_links
- paginate({ :page => 2 }, :page_links => false) do
- assert_select 'a[href]', 2 do |elements|
- validate_page_numbers [1,3], elements
- end
- end
- end
-
- def test_will_paginate_windows
- paginate({ :page => 6, :per_page => 1 }, :inner_window => 1) do |pagination|
- assert_select 'a[href]', 8 do |elements|
- validate_page_numbers [5,1,2,5,7,10,11,7], elements
- assert_select elements.first, 'a', '&laquo; Previous'
- assert_select elements.last, 'a', 'Next &raquo;'
- end
- assert_select 'span.current', '6'
- assert_equal '&laquo; Previous 1 2 &hellip; 5 6 7 &hellip; 10 11 Next &raquo;', pagination.first.inner_text
- end
- end
-
- def test_will_paginate_eliminates_small_gaps
- paginate({ :page => 6, :per_page => 1 }, :inner_window => 2) do
- assert_select 'a[href]', 12 do |elements|
- validate_page_numbers [5,1,2,3,4,5,7,8,9,10,11,7], elements
- end
- end
- end
-
- def test_container_id
- paginate do |div|
- assert_nil div.first['id']
- end
-
- # magic ID
- paginate({}, :id => true) do |div|
- assert_equal 'fixnums_pagination', div.first['id']
- end
-
- # explicit ID
- paginate({}, :id => 'custom_id') do |div|
- assert_equal 'custom_id', div.first['id']
- end
- end
-
- ## other helpers ##
-
- def test_paginated_section
- @template = <<-ERB
- <% paginated_section collection, options do %>
- <%= content_tag :div, '', :id => "developers" %>
- <% end %>
- ERB
-
- paginate
- assert_select 'div.pagination', 2
- assert_select 'div.pagination + div#developers', 1
- end
-
- def test_page_entries_info
- @template = '<%= page_entries_info collection %>'
- array = ('a'..'z').to_a
-
- paginate array.paginate(:page => 2, :per_page => 5)
- assert_equal %{Displaying strings <b>6&nbsp;-&nbsp;10</b> of <b>26</b> in total},
- @html_result
-
- paginate array.paginate(:page => 7, :per_page => 4)
- assert_equal %{Displaying strings <b>25&nbsp;-&nbsp;26</b> of <b>26</b> in total},
- @html_result
- end
-
- uses_mocha 'class name' do
- def test_page_entries_info_with_longer_class_name
- @template = '<%= page_entries_info collection %>'
- collection = ('a'..'z').to_a.paginate
- collection.first.stubs(:class).returns(mock('class', :name => 'ProjectType'))
-
- paginate collection
- assert @html_result.index('project types'), "expected <#{@html_result.inspect}> to mention 'project types'"
- end
- end
-
- def test_page_entries_info_with_single_page_collection
- @template = '<%= page_entries_info collection %>'
-
- paginate(('a'..'d').to_a.paginate(:page => 1, :per_page => 5))
- assert_equal %{Displaying <b>all 4</b> strings}, @html_result
-
- paginate(['a'].paginate(:page => 1, :per_page => 5))
- assert_equal %{Displaying <b>1</b> string}, @html_result
-
- paginate([].paginate(:page => 1, :per_page => 5))
- assert_equal %{No entries found}, @html_result
- end
-
- def test_page_entries_info_with_custom_entry_name
- @template = '<%= page_entries_info collection, :entry_name => "author" %>'
-
- entries = (1..20).to_a
-
- paginate(entries.paginate(:page => 1, :per_page => 5))
- assert_equal %{Displaying authors <b>1&nbsp;-&nbsp;5</b> of <b>20</b> in total}, @html_result
-
- paginate(entries.paginate(:page => 1, :per_page => 20))
- assert_equal %{Displaying <b>all 20</b> authors}, @html_result
-
- paginate(['a'].paginate(:page => 1, :per_page => 5))
- assert_equal %{Displaying <b>1</b> author}, @html_result
-
- paginate([].paginate(:page => 1, :per_page => 5))
- assert_equal %{No authors found}, @html_result
- end
-
- ## parameter handling in page links ##
-
- def test_will_paginate_preserves_parameters_on_get
- @request.params :foo => { :bar => 'baz' }
- paginate
- assert_links_match /foo%5Bbar%5D=baz/
- end
-
- def test_will_paginate_doesnt_preserve_parameters_on_post
- @request.post
- @request.params :foo => 'bar'
- paginate
- assert_no_links_match /foo=bar/
- end
-
- def test_adding_additional_parameters
- paginate({}, :params => { :foo => 'bar' })
- assert_links_match /foo=bar/
- end
-
- def test_adding_anchor_parameter
- paginate({}, :params => { :anchor => 'anchor' })
- assert_links_match /#anchor$/
- end
-
- def test_removing_arbitrary_parameters
- @request.params :foo => 'bar'
- paginate({}, :params => { :foo => nil })
- assert_no_links_match /foo=bar/
- end
-
- def test_adding_additional_route_parameters
- paginate({}, :params => { :controller => 'baz', :action => 'list' })
- assert_links_match %r{\Wbaz/list\W}
- end
-
- def test_will_paginate_with_custom_page_param
- paginate({ :page => 2 }, :param_name => :developers_page) do
- assert_select 'a[href]', 4 do |elements|
- validate_page_numbers [1,1,3,3], elements, :developers_page
- end
- end
- end
-
- def test_will_paginate_with_atmark_url
- @request.symbolized_path_parameters[:action] = "@tag"
- renderer = WillPaginate::LinkRenderer.new
-
- paginate({ :page => 1 }, :renderer=>renderer)
- assert_links_match %r[/foo/@tag\?page=\d]
- end
-
- def test_complex_custom_page_param
- @request.params :developers => { :page => 2 }
-
- paginate({ :page => 2 }, :param_name => 'developers[page]') do
- assert_select 'a[href]', 4 do |links|
- assert_links_match /\?developers%5Bpage%5D=\d+$/, links
- validate_page_numbers [1,1,3,3], links, 'developers[page]'
- end
- end
- end
-
- def test_custom_routing_page_param
- @request.symbolized_path_parameters.update :controller => 'dummy', :action => nil
- paginate :per_page => 2 do
- assert_select 'a[href]', 6 do |links|
- assert_links_match %r{/page/(\d+)$}, links, [2, 3, 4, 5, 6, 2]
- end
- end
- end
-
- def test_custom_routing_page_param_with_dot_separator
- @request.symbolized_path_parameters.update :controller => 'dummy', :action => 'dots'
- paginate :per_page => 2 do
- assert_select 'a[href]', 6 do |links|
- assert_links_match %r{/page\.(\d+)$}, links, [2, 3, 4, 5, 6, 2]
- end
- end
- end
-
- def test_custom_routing_with_first_page_hidden
- @request.symbolized_path_parameters.update :controller => 'ibocorp', :action => nil
- paginate :page => 2, :per_page => 2 do
- assert_select 'a[href]', 7 do |links|
- assert_links_match %r{/ibocorp(?:/(\d+))?$}, links, [nil, nil, 3, 4, 5, 6, 3]
- end
- end
- end
-
- ## internal hardcore stuff ##
-
- class LegacyCollection < WillPaginate::Collection
- alias :page_count :total_pages
- undef :total_pages
- end
-
- def test_deprecation_notices_with_page_count
- collection = LegacyCollection.new(1, 1, 2)
-
- assert_deprecated collection.class.name do
- paginate collection
- end
- end
-
- uses_mocha 'view internals' do
- def test_collection_name_can_be_guessed
- collection = mock
- collection.expects(:total_pages).returns(1)
-
- @template = '<%= will_paginate options %>'
- @controller.controller_name = 'developers'
- @view.assigns['developers'] = collection
-
- paginate(nil)
- end
- end
-
- def test_inferred_collection_name_raises_error_when_nil
- @template = '<%= will_paginate options %>'
- @controller.controller_name = 'developers'
-
- e = assert_raise ArgumentError do
- paginate(nil)
- end
- assert e.message.include?('@developers')
- end
-
- if ActionController::Base.respond_to? :rescue_responses
- # only on Rails 2
- def test_rescue_response_hook_presence
- assert_equal :not_found,
- ActionController::Base.rescue_responses['WillPaginate::InvalidPage']
- end
- end
-
-end
diff --git a/vendor/rails b/vendor/rails
deleted file mode 160000
-Subproject e0774e47302a907319ed974ccf59b8b54d32bbd
diff --git a/vendor/railties b/vendor/railties
deleted file mode 120000
index f3ed8f8d3..000000000
--- a/vendor/railties
+++ /dev/null
@@ -1 +0,0 @@
-rails/railties \ No newline at end of file
diff --git a/vendor/ruby-msg/ChangeLog b/vendor/ruby-msg/ChangeLog
deleted file mode 100644
index fb502127a..000000000
--- a/vendor/ruby-msg/ChangeLog
+++ /dev/null
@@ -1,82 +0,0 @@
-== 1.4.0 / 2008-10-12
-
-- Initial simple msg test case.
-- Update TODO, stripping out all the redundant ole stuff.
-- Fix property set guids to use the new Ole::Types::Clsid type.
-- Add block form of Msg.open
-- Fix file requires for running tests individually.
-- Update pst RangesIO subclasses for changes in ruby-ole.
-- Merge initial pst reading code (converted from libpst).
-- Pretty big pst refactoring, adding initial outlook 2003 pst support.
-- Flesh out move to mapi to clean up the way pst hijacks the msg
- classes currently.
-- Add a ChangeLog :).
-- Update README, by converting Home.wiki with wiki2rdoc converter.
-- Separate out generic mapi object code from msg code, and separate out
- conversion code.
-- Add decent set of Mapi and Msg unit tests, approaching ~55% code coverage,
- not including pst.
-- Add TMail note conversion alternative, to eventually allow removal of
- custom Mime class.
-- Expose experimental pst support through renamed mapitool program.
-
-== 1.3.1 / 2007-08-21
-
-- Add fix for issue #2, and #4.
-- Move ole code to ruby-ole project, and depend on it.
-
-== 1.2.17 / 2007-05-13
-
-(This was last release before splitting out ruby-ole. subsequent bug fix
-point releases 1-3 were made directly on the gem, not reflected in the
-repository, though the fixes were also forward-ported.)
-
-- Update Ole::Storage backend, finalising api for split to separate
- library.
-
-== 1.2.16 / 2007-04-28
-
-- Some minor fixes to msg parser.
-- Extending RTF and body conversion support.
-- Initial look at possible wmf conversion for embedded images.
-- Add initial cli converter tool
-- Add rdoc to ole/storage, and msg/properties
-- Add streaming IO support to Ole::Storage, and use it in Msg::Properties
-- Updates to test cases
-- Add README, and update TODO
-- Convert rtf support tools in c to small ruby class.
-- Merge preliminary write support for Ole::Storage, as well as preliminary
- filesystem api.
-
-== 1.2.13 / 2007-01-22
-
-- Nested msg support
-
-== 1.2.10 / 2007-01-21
-
-- Add initial vcard support.
-- Implement a named properties map, for vcard conversion.
-- Add orderedhash to Mime for keeping header order
-- Fix line endings in lib/mime
-- First released version
-
-== <= 1.2.9 / 2007-01-11..2007-01-19
-
-(Haven't bothered to note exact versions and dates - nothing here was released.
-can look at history of lib/msg.rb to see exact VERSION at each commit.)
-
-- Merged most of the named property work.
-- Added some test files.
-- Update svn:ignore, to exclude test messages and ole files which I can't
- release. Need to get some clean files for use in test cases.
- Also excluding source to the mapitags files for the moment.
- A lot of it is not redistributable
-- Added a converter to extract embedded html in rtf. Downloaded somewhere,
- source unknown.
-- Minor fix to ole/storage.rb, after new OleDir#type behaviour
-- Imported support.rb, replacing previously required std.rb
-- Added initial support for parsing times in Msg::Properties.
-- Imported some rtf decompression code and minor updates.
-- Cleaned up the ole class a bit
-- Fixed OleDir#data method using sb_blocks map (see POLE).
-
diff --git a/vendor/ruby-msg/FIXES b/vendor/ruby-msg/FIXES
deleted file mode 100644
index 7a094b437..000000000
--- a/vendor/ruby-msg/FIXES
+++ /dev/null
@@ -1,56 +0,0 @@
-FIXES
-
-recent fixes based on importing results into evolution
-
-1. was running into some issue with base64 encoded message/rfc822 attachments displaying
- as empty. encoding them as plain solved the issue (odd).
-
-2. problem with a large percentage of emails, not displaying as mime. turned out to be
- all received from blackberry. further, turned out there was 2 content-type headers,
- "Content-Type", which I add, and "Content-type". normally my override works, but I
- need to handle it case insensitvely it would appear. more tricky, whats the story
- with these. fixing that will probably fix that whole class of issues there.
- evolution was renaming my second content type as X-Invalid-Content-Type or something.
-
-3. another interesting one. had content-transfer-encoding set in the transport message
- headers. it was set to base64. i didn't override that, so evolution "decoded" my
- plaintext message into complete garbage.
- fix - delete content-transfer-encoding.
-
-4. added content-location and content-id output in the mime handling of attachments
- to get some inline html/image mails to work properly.
- further, the containing mime content-type must be multipart/related, not multipart/mixed,
- at least for evolution, in order for the images to appear inline.
- could still improve in this area. if someone drags and drops in an image, it may
- be inline in the rtf version, but exchanges generates crappy html such that the image
- doesn't display inline. maybe i should correct the html output in these cases as i'm
- throwing away the rtf version.
-
-5. note you may need wingdings installed. i had a lot of L and J appear in messages from
- outlook users. turns out its smilies in wingdings. i think its only if word is used
- as email editor and has autotext messing things up.
-
-6. still unsure about how to do my "\r" handling.
-
-7. need to join addresses with , instead of ; i think. evolution only shows the
- first one otherwise it appears, but all when they are , separated.
-
-8. need to solve ole storage issues with the very large file using extra bat
- stuff.
-
-9. retest a bit on evolution and thunderbird, and release. tested on a corups
- of >1000 msg files, so should be starting to get pretty good quality.
-
-10. longer term, things fall into a few basic categories:
-
-- non mail conversions (look further into vcard, ical et al support for other
- types of msg)
-- further tests and robustness for what i handle now. ie, look into corner
- cases covered so far, and work on the mime code. fix random charset encoding
- issues, in the various weird mime ways, do header wrapping etc etc.
- check fidelity of conversions, and capture some more properties as headers,
- such as importance which i don't do yet.
-- fix that named property bug. tidy up warnings, exceptions.
-- extend conversion to make better html.
- this is longer term. as i don't use the rtf, i need to make my html better.
- emulating some rtf things. harder, not important atm.
diff --git a/vendor/ruby-msg/README b/vendor/ruby-msg/README
deleted file mode 100644
index bd16dfcc4..000000000
--- a/vendor/ruby-msg/README
+++ /dev/null
@@ -1,128 +0,0 @@
-= Introduction
-
-Generally, the goal of the project is to enable the conversion of
-msg and pst files into standards based formats, without reliance on
-outlook, or any platform dependencies. In fact its currently <em>pure
-ruby</em>, so it should be easy to get running.
-
-It is targeted at people who want to migrate their PIM data from outlook,
-converting msg and pst files into rfc2822 emails, vCard contacts,
-iCalendar appointments etc. However, it also aims to be a fairly complete
-mapi message store manipulation library, providing a sane model for
-(currently read-only) access to msg and pst files (message stores).
-
-I am happy to accept patches, give commit bits etc.
-
-Please let me know how it works for you, any feedback would be welcomed.
-
-= Features
-
-Broad features of the project:
-
-* Can be used as a general mapi library, where conversion to and working
- on a standard format doesn't make sense.
-
-* Supports conversion of messages to standard formats, like rfc2822
- emails, vCard, etc.
-
-* Well commented, and easily extended.
-
-* Basic RTF converter, for providing a readable body when only RTF
- exists (needs work)
-
-* RTF decompression support included, as well as HTML extraction from
- RTF where appropriate (both in pure ruby, see <tt>lib/mapi/rtf.rb</tt>)
-
-* Support for mapping property codes to symbolic names, with many
- included.
-
-Features of the msg format message store:
-
-* Most key .msg structures are understood, and the only the parsing
- code should require minor tweaks. Most of remaining work is in achieving
- high-fidelity conversion to standards formats (see [TODO]).
-
-* Supports both types of property storage (large ones in +substg+
- files, and small ones in the +properties+ file.
-
-* Complete support for named properties in different GUID namespaces.
-
-* Initial support for handling embedded ole files, converting nested
- .msg files to message/rfc822 attachments, and serializing others
- as ole file attachments (allows you to view embedded excel for example).
-
-Features of the pst format message store:
-
-* Handles both Outlook 1997 & 2003 format pst files, both with no-
- and "compressible-" encryption.
-
-* Understanding of the file format is still very superficial.
-
-= Usage
-
-At the command line, it is simple to convert individual msg or pst
-files to .eml, or to convert a batch to an mbox format file. See mapitool
-help for details:
-
- mapitool -si some_email.msg > some_email.eml
- mapitool -s *.msg > mbox
-
-There is also a fairly complete and easy to use high level library
-access:
-
- require 'mapi/msg'
-
- msg = Mapi::Msg.open filename
-
- # access to the 3 main data stores, if you want to poke with the msg
- # internals
- msg.recipients
- # => [#<Recipient:'\'Marley, Bob\' <bob.marley@gmail.com>'>]
- msg.attachments
- # => [#<Attachment filename='blah1.tif'>, #<Attachment filename='blah2.tif'>]
- msg.properties
- # => #<Properties ... normalized_subject='Testing' ...
- # creation_time=#<DateTime: 2454042.45074714,0,2299161> ...>
-
-To completely abstract away all msg peculiarities, convert the msg
-to a mime object. The message as a whole, and some of its main parts
-support conversion to mime objects.
-
- msg.attachments.first.to_mime
- # => #<Mime content_type='application/octet-stream'>
- mime = msg.to_mime
- puts mime.to_tree
- # =>
- - #<Mime content_type='multipart/mixed'>
- |- #<Mime content_type='multipart/alternative'>
- | |- #<Mime content_type='text/plain'>
- | \- #<Mime content_type='text/html'>
- |- #<Mime content_type='application/octet-stream'>
- \- #<Mime content_type='application/octet-stream'>
-
- # convert mime object to serialised form,
- # inclusive of attachments etc. (not ideal in memory, but its wip).
- puts mime.to_s
-
-= Thanks
-
-* The initial implementation of parsing msg files was based primarily
- on msgconvert.pl[http://www.matijs.net/software/msgconv/].
-
-* The basis for the outlook 97 pst file was the source to +libpst+.
-
-* The code for rtf decompression was implemented by inspecting the
- algorithm used in the +JTNEF+ project.
-
-= Other
-
-For more information, see
-
-* TODO
-
-* MsgDetails[http://code.google.com/p/ruby-msg/wiki/MsgDetails]
-
-* PstDetails[http://code.google.com/p/ruby-msg/wiki/PstDetails]
-
-* OleDetails[http://code.google.com/p/ruby-ole/wiki/OleDetails]
-
diff --git a/vendor/ruby-msg/Rakefile b/vendor/ruby-msg/Rakefile
deleted file mode 100644
index 066ca3741..000000000
--- a/vendor/ruby-msg/Rakefile
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'rake/rdoctask'
-require 'rake/testtask'
-require 'rake/packagetask'
-require 'rake/gempackagetask'
-
-require 'rbconfig'
-require 'fileutils'
-
-$:.unshift 'lib'
-
-require 'mapi/msg'
-
-PKG_NAME = 'ruby-msg'
-PKG_VERSION = Mapi::VERSION
-
-task :default => [:test]
-
-Rake::TestTask.new(:test) do |t|
- t.test_files = FileList["test/test_*.rb"] - ['test/test_pst.rb']
- t.warning = false
- t.verbose = true
-end
-
-begin
- require 'rcov/rcovtask'
- # NOTE: this will not do anything until you add some tests
- desc "Create a cross-referenced code coverage report"
- Rcov::RcovTask.new do |t|
- t.test_files = FileList['test/test*.rb']
- t.ruby_opts << "-Ilib" # in order to use this rcov
- t.rcov_opts << "--xrefs" # comment to disable cross-references
- t.rcov_opts << "--exclude /usr/local/lib/site_ruby"
- t.verbose = true
- end
-rescue LoadError
- # Rcov not available
-end
-
-Rake::RDocTask.new do |t|
- t.rdoc_dir = 'doc'
- t.title = "#{PKG_NAME} documentation"
- t.options += %w[--main README --line-numbers --inline-source --tab-width 2]
- t.rdoc_files.include 'lib/**/*.rb'
- t.rdoc_files.include 'README'
-end
-
-spec = Gem::Specification.new do |s|
- s.name = PKG_NAME
- s.version = PKG_VERSION
- s.summary = %q{Ruby Msg library.}
- s.description = %q{A library for reading and converting Outlook msg and pst files (mapi message stores).}
- s.authors = ["Charles Lowe"]
- s.email = %q{aquasync@gmail.com}
- s.homepage = %q{http://code.google.com/p/ruby-msg}
- s.rubyforge_project = %q{ruby-msg}
-
- s.executables = ['mapitool']
- s.files = FileList['data/*.yaml', 'Rakefile', 'README', 'FIXES']
- s.files += FileList['lib/**/*.rb', 'test/test_*.rb', 'bin/*']
-
- s.has_rdoc = true
- s.extra_rdoc_files = ['README']
- s.rdoc_options += ['--main', 'README',
- '--title', "#{PKG_NAME} documentation",
- '--tab-width', '2']
-
- s.add_dependency 'ruby-ole', '>=1.2.8'
- s.add_dependency 'vpim', '>=0.360'
-end
-
-Rake::GemPackageTask.new(spec) do |p|
- p.gem_spec = spec
- p.need_tar = false #true
- p.need_zip = false
- p.package_dir = 'build'
-end
-
diff --git a/vendor/ruby-msg/TODO b/vendor/ruby-msg/TODO
deleted file mode 100644
index 2e4309c21..000000000
--- a/vendor/ruby-msg/TODO
+++ /dev/null
@@ -1,184 +0,0 @@
-= Newer Msg
-
-* a lot of the doc is out of sync given the Mapi:: changes lately. need to
- fix.
-
-* extend msgtool with support for the other kinds of msg files. things like,
- - dump properties to yaml / xml (with option on how the keys should be dumped).
- should be fairly easy to implement. hash, with array of attach & recips.
- - just write out the mime type
- - convert to the automatically guessed output type, also allowing an override
- of some sort. have a batch mode that converts all arguments, using automatic
- extensions, eg .vcf, .eml etc.
- - options regarding preferring rtf / html / txt output for things. like, eg
- the output for note conversion, will be one of them i guess.
-
-* fix nameid handling for sub Properties objects. needs to inherit top-level @nameid.
-
-* better handling for "Untitled Attachments", or attachments with no filename at all.
- maybe better handling in general for attached messages. maybe re-write filename with
- subject.
-
-* do the above 2, then go for a new release.
- for this release, i want it to be pretty robust, and have better packaging.
- have the gem install 2 tools - oletool (--tree, --read, --write, --repack)
- and msgtool (--convert, --dump-attachments etc)
- fix docs, add option parsing etc etc.
- submit to the usual gem repositories etc, announce project as usable.
-
-* better handling for other types of embedded ole attachments. try to recognise .wmf to
- start with. etc. 2 goals, form .eml, and for .rtf output.
-
-* rtf to text support, initially. just simple strip all the crap out approach. maybe html
- later on. sometimes the only body is rtf, which is problematic. is rtf an allowed body
- type?
-
-* better encoding support (i'm thinking, check some things like m-dash in the non-wide
- string type. is it windows codepage?. how to know code page in general? change
- ENCODER[] to convert these to utf8 i think). I'm trying to just move everything to utf8.
- then i need to make sure the mime side of that holds up.
-
-* certain parsing still not correct, especially small properties directory,
- things like bools, multiavlue shorts etc.
-
-* test cases for msg/properties.rb msg/rtf.rb and mime.rb
-* regarding the mime fix ups. check out:
-
-- http://rubyforge.org/projects/rubymail/, and
-- http://rubyforge.org/projects/mime-alt-lite/
-
-both haven't been touched in 2 years though.
-
-* get some sort of working From: header
- there doesn't appear to be a way to get an smtp address for the sender in an
- internal mail. you need to query the exchanger server, using the sender_entryid
- as far as i can tell.
- you may also get these so called "X.400" addresses for external recipients
- that are on the GAL (Global Address List), as custom recipients.
- (mostly complete. better way?)
-* check lots of little details: encoding issues with code pages etc other
- than ascii stuff. consider Msg, Mime, Vcard etc, to check its clean. check
- timezones, inaccuracies in date handling.
-* http://msdn2.microsoft.com/en-us/library/ms526761.aspx
- import guids for these?
-PS_ROUTING_EMAIL_ADDRESSES
-PS_ROUTING_ADDRTYPE
-PS_ROUTING_SEARCH_KEY
-PS_ROUTING_DISPLAY_NAME
-PS_ROUTING_ENTRYID
-* check this thing i wrote:
- creating ones in ps_mapi works strangely, as ps_mapi is the top levels ones.
- don't get entries in nameid. as should match the definitions.
- however still get allocated an 8 number. that number becomes permanent...
-* do something about the message class-specific range, 0x6800 through 0x7FFF.
-* multivalue encoding may explain some of the unknown data in properties objs
-* get some clean test msgs from somewhere
-* tackle other types of msgs, such as appointments, contacts etc, converting
- to their appropriate standard types too.
- would like to look at this next. see about the content specific range
- http://en.wikipedia.org/wiki/ICalendar
- is it better/easier to go through micro formats? there are libraries for ruby
- already i think. check this out. although using IMC standards seem to make
- more sense. encoding issues?
- try contact => vcf,
- note => ?? icalendar. VTODO? / VJOURNAL?
- appointment => VEVENT?
- (initial try done. really basic vcard output supported. not difficult)
-* ole code is suppopsed to be able to return guids for something too. supporting
- all this probably means creating a new file for ole/types.rb, containing all
- the various classes, and binary conversion code.
-* some dubiously useful info about some unknown codes i wrote:
-unknown property 5ff6
- * appears to be equal to display_name, and transmitable_display_name
-unknown property 5ff7
- * recipient.properties[0x5ff7].upcase == recipient.properties.entryid
- is equivalent, but not all uppercase.
- everything else is upper though. maybe a displayname kind of thing.
-* common relationship
- CGI.escape(msg.properties.subject.strip).tr('+', ' ') + '.EML' == msg.properties.url_comp_name
-
-(28 bytes binary data and msg.properties.sender_email_address and "\000")
-entryids are a strange format. for internal or from exchange whatever, they have that
-EX:/O=XXXXXX/...
-otherwise, they may have SMTP in them.
- such as msg.properties.sent_representing_search_key
- == "SMTP:SOMEGUY@XXX.COM\000"
- but Ole::UTF16_TO_UTF8[msg2.properties.sender_entryid[/.*\000\000(.+)\000/, 1][0..-2]]
- == "SomeGuy@XXX.COM"
- for external people, entry ids have displayname and address.
-
-longer term, i want to investigate the overlap with PST stuff, like libpst,
-which seems to be another kind of mapi tag property storage, and try to
-understand the relationship with existing TNEF work also.
-
-hmmmm for future work:
-http://blogs.msdn.com/stephen_griffin/archive/2005/10/25/484656.aspx
-
-
-= Older
-
-- set 'From' in Msg#populate_headers.
- Notes:
- # ways to get the sender of a mail.
- # if external, you can do this (different for internal).
- name, protocol, email = Ole::UTF16_TO_UTF8[msg.props.sender_entryid[24..-1]].split(/\x00/)
- # here is an excerpt from a yaml dump.
- # need to consider how to get it. also when its a draft, and other stuff.
- creator_name:
- sent_representing_name:
- last_modifier_name:
- sender_email_address:
- sent_representing_email_address:
- sender_name:
-- fill out some of the tag holes. mostly done
-- properly integrate rtf decompression, and the html conversion from rtf
-- figure out some things, like entryids, and the properties directories,
- and the ntsecurity data 0e27.
- http://peach.ease.lsoft.com/scripts/wa.exe?A2=ind0207&L=mapi-l&P=24515
- "In case anybody is interested, Exchange stores PR_NT_SECURITY_DESCRIPTOR as a header plus the regular self=-relative SECURITY_DESCRIPTOR structure. The first two bytes of the header (WORD) is the length of the header; Read these two bytes to find out how many bytes you must skip to get to the real data. Many thanks to Stephen Griffin for this info."
- using outlook spy gives an actual dump. for example:
- <<
- Control: SE_DACL_AUTO_INHERITED | SE_DACL_DEFAULTED | SE_DACL_PRESENT | SE_GROUP_DEFAULTED | SE_OWNER_DEFAULTED | SE_SACL_AUTO_INHERITED | SE_SACL_DEFAULTED | SE_SELF_RELATIVE
- Owner:
- SID: S-1-5-21-1004336348-602609370-725345543-44726
- Name: lowecha
- DomainName: XXX
- Group:
- SID: S-1-5-21-1004336348-602609370-725345543-513
- Name: Domain Users
- DomainName: XXX
- Dacl:
- Header:
- AceType: ACCESS_DENIED_ACE_TYPE
- AceFlags: INHERITED_ACE
- Mask: fsdrightReadBody (fsdrightListContents) | fsdrightWriteBody (fsdrightCreateItem) | fsdrightAppendMsg (fsdrightCreateContainer) | fsdrightReadProperty | fsdrightWriteProperty | fsdrightExecute | fsdrightReadAttributes | fsdrightWriteAttributes | fsdrightWriteOwnProperty | fsdrightDeleteOwnItem | fsdrightViewItem | fsdrightWriteSD | fsdrightDelete | fsdrightWriteOwner | fsdrightReadControl | fsdrightSynchronize
- Sid:
- SID: S-1-5-7
- Name: ANONYMOUS LOGON
- DomainName: NT AUTHORITY
- >>
- Not something i care about at the moment.
-
-- conversion of inline images.
- Content-Location, cid: urls etc etc.
- what would be cool, is conversion of outlooks text/rtf's only real "feature" over
- text/html - convert inline attachments to be <a href> links, using cid: urls to the
- actual content data, and using an <img with cid: url to a converted image from the
- attach_rendering property (image data), along with the text itself. (although i think
- the rendering may actually include the text ??. that would explain why its always clipped.
- can these be used for contact pictures too?
-- entryid format cf. entry_id.h. another serialized structure.
- entryids are for the addressbook connection. EMS (exchange message something), AB
- address book. MUIDEMSAB. makes sense.
-
-mapidefs.h:
-
- 174 /* Types of message receivers */
- 175 #ifndef MAPI_ORIG
- 176 #define MAPI_ORIG 0 /* The original author */
- 177 #define MAPI_TO 1 /* The primary message receiver */
- 178 #define MAPI_CC 2 /* A carbon copy receiver */
- 179 #define MAPI_BCC 3 /* A blind carbon copy receiver */
- 180 #define MAPI_P1 0x10000000 /* A message resend */
- 181 #define MAPI_SUBMITTED 0x80000000 /* This message has already been sent */
- 182 #endif
diff --git a/vendor/ruby-msg/bin/mapitool b/vendor/ruby-msg/bin/mapitool
deleted file mode 100755
index 79824daa4..000000000
--- a/vendor/ruby-msg/bin/mapitool
+++ /dev/null
@@ -1,195 +0,0 @@
-#! /usr/bin/ruby
-
-$:.unshift File.dirname(__FILE__) + '/../lib'
-
-require 'optparse'
-require 'rubygems'
-require 'mapi/msg'
-require 'mapi/pst'
-require 'mapi/convert'
-require 'time'
-
-class Mapitool
- attr_reader :files, :opts
- def initialize files, opts
- @files, @opts = files, opts
- seen_pst = false
- raise ArgumentError, 'Must specify 1 or more input files.' if files.empty?
- files.map! do |f|
- ext = File.extname(f.downcase)[1..-1]
- raise ArgumentError, 'Unsupported file type - %s' % f unless ext =~ /^(msg|pst)$/
- raise ArgumentError, 'Expermiental pst support not enabled' if ext == 'pst' and !opts[:enable_pst]
- [ext.to_sym, f]
- end
- if dir = opts[:output_dir]
- Dir.mkdir(dir) unless File.directory?(dir)
- end
- end
-
- def each_message(&block)
- files.each do |format, filename|
- if format == :pst
- if filter_path = opts[:filter_path]
- filter_path = filter_path.tr("\\", '/').gsub(/\/+/, '/').sub(/^\//, '').sub(/\/$/, '')
- end
- open filename do |io|
- pst = Mapi::Pst.new io
- pst.each do |message|
- next unless message.type == :message
- if filter_path
- next unless message.path =~ /^#{Regexp.quote filter_path}(\/|$)/i
- end
- yield message
- end
- end
- else
- Mapi::Msg.open filename, &block
- end
- end
- end
-
- def run
- each_message(&method(:process_message))
- end
-
- def make_unique filename
- @map ||= {}
- return @map[filename] if !opts[:individual] and @map[filename]
- try = filename
- i = 1
- try = filename.gsub(/(\.[^.]+)$/, ".#{i += 1}\\1") while File.exist?(try)
- @map[filename] = try
- try
- end
-
- def process_message message
- # TODO make this more informative
- mime_type = message.mime_type
- return unless pair = Mapi::Message::CONVERSION_MAP[mime_type]
-
- combined_map = {
- 'eml' => 'Mail.mbox',
- 'vcf' => 'Contacts.vcf',
- 'txt' => 'Posts.txt'
- }
-
- # TODO handle merged mode, pst, etc etc...
- case message
- when Mapi::Msg
- if opts[:individual]
- filename = message.root.ole.io.path.gsub(/msg$/i, pair.last)
- else
- filename = combined_map[pair.last] or raise NotImplementedError
- end
- when Mapi::Pst::Item
- if opts[:individual]
- filename = "#{message.subject.tr ' ', '_'}.#{pair.last}".gsub(/[^A-Za-z0-9.()\[\]{}-]/, '_')
- else
- filename = combined_map[pair.last] or raise NotImplementedError
- filename = (message.path.tr(' /', '_.').gsub(/[^A-Za-z0-9.()\[\]{}-]/, '_') + '.' + File.extname(filename)).squeeze('.')
- end
- dir = File.dirname(message.instance_variable_get(:@desc).pst.io.path)
- filename = File.join dir, filename
- else
- raise
- end
-
- if dir = opts[:output_dir]
- filename = File.join dir, File.basename(filename)
- end
-
- filename = make_unique filename
-
- write_message = proc do |f|
- data = message.send(pair.first).to_s
- if !opts[:individual] and pair.last == 'eml'
- # we do the append > style mbox quoting (mboxrd i think its called), as it
- # is the only one that can be robuslty un-quoted. evolution doesn't use this!
- f.puts "From mapitool@localhost #{Time.now.rfc2822}"
- #munge_headers mime, opts
- data.each do |line|
- if line =~ /^>*From /o
- f.print '>' + line
- else
- f.print line
- end
- end
- else
- f.write data
- end
- end
-
- if opts[:stdout]
- write_message[STDOUT]
- else
- open filename, 'a', &write_message
- end
- end
-
- def munge_headers mime, opts
- opts[:header_defaults].each do |s|
- key, val = s.match(/(.*?):\s+(.*)/)[1..-1]
- mime.headers[key] = [val] if mime.headers[key].empty?
- end
- end
-end
-
-def mapitool
- opts = {:verbose => false, :action => :convert, :header_defaults => []}
- op = OptionParser.new do |op|
- op.banner = "Usage: mapitool [options] [files]"
- #op.separator ''
- #op.on('-c', '--convert', 'Convert input files (default)') { opts[:action] = :convert }
- op.separator ''
- op.on('-o', '--output-dir DIR', 'Put all output files in DIR') { |d| opts[:output_dir] = d }
- op.on('-i', '--[no-]individual', 'Do not combine converted files') { |i| opts[:individual] = i }
- op.on('-s', '--stdout', 'Write all data to stdout') { opts[:stdout] = true }
- op.on('-f', '--filter-path PATH', 'Only process pst items in PATH') { |path| opts[:filter_path] = path }
- op.on( '--enable-pst', 'Turn on experimental PST support') { opts[:enable_pst] = true }
- #op.on('-d', '--header-default STR', 'Provide a default value for top level mail header') { |hd| opts[:header_defaults] << hd }
- # --enable-pst
- op.separator ''
- op.on('-v', '--[no-]verbose', 'Run verbosely') { |v| opts[:verbose] = v }
- op.on_tail('-h', '--help', 'Show this message') { puts op; exit }
- end
-
- files = op.parse ARGV
-
- # for windows. see issue #2
- STDOUT.binmode
-
- Mapi::Log.level = Ole::Log.level = opts[:verbose] ? Logger::WARN : Logger::FATAL
-
- tool = begin
- Mapitool.new(files, opts)
- rescue ArgumentError
- puts $!
- puts op
- exit 1
- end
-
- tool.run
-end
-
-mapitool
-
-__END__
-
-mapitool [options] [files]
-
-files is a list of *.msg & *.pst files.
-
-one of the options should be some sort of path filter to apply to pst items.
-
---filter-path=
---filter-type=eml,vcf
-
-with that out of the way, the entire list of files can be converted into a
-list of items (with meta data about the source).
-
---convert
---[no-]separate one output file per item or combined output
---stdout
---output-dir=.
-
-
diff --git a/vendor/ruby-msg/contrib/rtf2html.c b/vendor/ruby-msg/contrib/rtf2html.c
deleted file mode 100644
index 937e22ff1..000000000
--- a/vendor/ruby-msg/contrib/rtf2html.c
+++ /dev/null
@@ -1,155 +0,0 @@
-#include <stdio.h>
-#define bool int
-#define false 0
-#define true 1
-
-// RTF/HTML functions
-// --------------------
-//
-// Sometimes in MAPI, the PR_BODY_HTML property contains the HTML of a message.
-// But more usually, the HTML is encoded inside the RTF body (which you get in the
-// PR_RTF_COMPRESSED property). These routines concern the decoding of the HTML
-// from this RTF body.
-//
-// An encoded htmlrtf file is a valid RTF document, but which contains additional
-// html markup information in its comments, and sometimes contains the equivalent
-// rtf markup outside the comments. Therefore, when it is displayed by a plain
-// simple RTF reader, the html comments are ignored and only the rtf markup has
-// effect. Typically, this rtf markup is not as rich as the html markup would have been.
-// But for an html-aware reader (such as the code below), we can ignore all the
-// rtf markup, and extract the html markup out of the comments, and get a valid
-// html document.
-//
-// There are actually two kinds of html markup in comments. Most of them are
-// prefixed by "\*\htmltagNNN", for some number NNN. But sometimes there's one
-// prefixed by "\*\mhtmltagNNN" followed by "\*\htmltagNNN". In this case,
-// the two are equivalent, but the m-tag is for a MIME Multipart/Mixed Message
-// and contains tags that refer to content-ids (e.g. img src="cid:072344a7")
-// while the normal tag just refers to a name (e.g. img src="fred.jpg")
-// The code below keeps the m-tag and discards the normal tag.
-// If there are any m-tags like this, then the message also contains an
-// attachment with a PR_CONTENT_ID property e.g. "072344a7". Actually,
-// sometimes the m-tag is e.g. img src="http://outlook/welcome.html" and the
-// attachment has a PR_CONTENT_LOCATION "http://outlook/welcome.html" instead
-// of a PR_CONTENT_ID.
-//
-// This code is experimental. It works on my own message archive, of about
-// a thousand html-encoded messages, received in Outlook97 and Outlook2000
-// and OutlookXP. But I can't guarantee that it will work on all rtf-encoded
-// messages. Indeed, it used to be the case that people would simply stick
-// {\fromhtml at the start of an html document, and } at the end, and send
-// this as RTF. If someone did this, then it will almost work in my function
-// but not quite. (Because I ignore \r and \n, and respect only \par. Thus,
-// any linefeeds in the erroneous encoded-html will be ignored.)
-
-
-
-
-
-// ISRTFHTML -- Given an uncompressed RTF body of the message, this
-// function tells you whether it encodes some html.
-// [in] (buf,*len) indicate the start and length of the uncompressed RTF body.
-// [return-value] true or false, for whether it really does encode some html
-bool isrtfhtml(const char *buf,unsigned int len)
-{ // We look for the words "\fromhtml" somewhere in the file.
- // If the rtf encodes text rather than html, then instead
- // it will only find "\fromtext".
- const char *c;
- for (c=buf; c<buf+len; c++)
- { if (strncmp(c,"\\from",5)==0) return strncmp(c,"\\fromhtml",9)==0;
- }
- return false;
-}
-
-
-
-
-// DECODERTFHTML -- Given an uncompressed RTF body of the message,
-// and assuming that it contains encoded-html, this function
-// turns it onto regular html.
-// [in] (buf,*len) indicate the start and length of the uncompressed RTF body.
-// [out] the buffer is overwritten with the HTML version, null-terminated,
-// and *len indicates the length of this HTML.
-//
-// Notes: (1) because of how the encoding works, the HTML version is necessarily
-// shorter than the encoded version. That's why it's safe for the function to
-// place the decoded html in the same buffer that formerly held the encoded stuff.
-// (2) Some messages include characters \'XX, where XX is a hexedecimal number.
-// This function simply converts this into ASCII. The conversion will only make
-// sense if the right code-page is being used. I don't know how rtf specifies which
-// code page it wants.
-// (3) By experiment, I discovered that \pntext{..} and \liN and \fi-N are RTF
-// markup that should be removed. There might be other RTF markup that should
-// also be removed. But I don't know what else.
-//
-void decodertfhtml(char *buf,unsigned int *len)
-{ // c -- pointer to where we're reading from
- // d -- pointer to where we're writing to. Invariant: d<c
- // max -- how far we can read from (i.e. to the end of the original rtf)
- // ignore_tag -- stores 'N': after \mhtmlN, we will ignore the subsequent \htmlN.
- char *c=buf, *max=buf+*len, *d=buf; int ignore_tag=-1;
- // First, we skip forwards to the first \htmltag.
- while (c<max && strncmp(c,"{\\*\\htmltag",11)!=0) c++;
- //
- // Now work through the document. Our plan is as follows:
- // * Ignore { and }. These are part of RTF markup.
- // * Ignore \htmlrtf...\htmlrtf0. This is how RTF keeps its equivalent markup separate from the html.
- // * Ignore \r and \n. The real carriage returns are stored in \par tags.
- // * Ignore \pntext{..} and \liN and \fi-N. These are RTF junk.
- // * Convert \par and \tab into \r\n and \t
- // * Convert \'XX into the ascii character indicated by the hex number XX
- // * Convert \{ and \} into { and }. This is how RTF escapes its curly braces.
- // * When we get \*\mhtmltagN, keep the tag, but ignore the subsequent \*\htmltagN
- // * When we get \*\htmltagN, keep the tag as long as it isn't subsequent to a \*\mhtmltagN
- // * All other text should be kept as it is.
- while (c<max)
- { if (*c=='{') c++;
- else if (*c=='}') c++;
- else if (strncmp(c,"\\*\\htmltag",10)==0)
- { c+=10; int tag=0; while (*c>='0' && *c<='9') {tag=tag*10+*c-'0'; c++;}
- if (*c==' ') c++;
- if (tag==ignore_tag) {while (c<max && *c!='}') c++; if (*c=='}') c++;}
- ignore_tag=-1;
- }
- else if (strncmp(c,"\\*\\mhtmltag",11)==0)
- { c+=11; int tag=0; while (*c>='0' && *c<='9') {tag=tag*10+*c-'0'; c++;}
- if (*c==' ') c++;
- ignore_tag=tag;
- }
- else if (strncmp(c,"\\par",4)==0) {strcpy(d,"\r\n"); d+=2; c+=4; if (*c==' ') c++;}
- else if (strncmp(c,"\\tab",4)==0) {strcpy(d," "); d+=3; c+=4; if (*c==' ') c++;}
- else if (strncmp(c,"\\li",3)==0)
- { c+=3; while (*c>='0' && *c<='9') c++; if (*c==' ') c++;
- }
- else if (strncmp(c,"\\fi-",4)==0)
- { c+=4; while (*c>='0' && *c<='9') c++; if (*c==' ') c++;
- }
- else if (strncmp(c,"\\'",2)==0)
- { unsigned int hi=c[2], lo=c[3];
- if (hi>='0' && hi<='9') hi-='0'; else if (hi>='A' && hi<='Z') hi-='A'; else if (hi>='a' && hi<='z') hi-='a';
- if (lo>='0' && lo<='9') lo-='0'; else if (lo>='A' && lo<='Z') lo-='A'; else if (lo>='a' && lo<='z') lo-='a';
- *((unsigned char*)d) = (unsigned char)(hi*16+lo);
- c+=4; d++;
- }
- else if (strncmp(c,"\\pntext",7)==0) {c+=7; while (c<max && *c!='}') c++;}
- else if (strncmp(c,"\\htmlrtf",8)==0)
- { c++; while (c<max && strncmp(c,"\\htmlrtf0",9)!=0) c++;
- if (c<max) c+=9; if (*c==' ') c++;
- }
- else if (*c=='\r' || *c=='\n') c++;
- else if (strncmp(c,"\\{",2)==0) {*d='{'; d++; c+=2;}
- else if (strncmp(c,"\\}",2)==0) {*d='}'; d++; c+=2;}
- else {*d=*c; c++; d++;}
- }
- *d=0; d++;
- *len = d-buf;
-}
-
-
-void main()
-{
- unsigned char buf[1024*1024];
- int len = fread(buf, 1, 1024*1024, stdin);
- decodertfhtml(buf, &len);
- fwrite(buf, 1, len, stdout);
-}
diff --git a/vendor/ruby-msg/contrib/rtfdecompr.c b/vendor/ruby-msg/contrib/rtfdecompr.c
deleted file mode 100644
index 633d50286..000000000
--- a/vendor/ruby-msg/contrib/rtfdecompr.c
+++ /dev/null
@@ -1,105 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-void decompress_rtf(FILE *srcf)
-{
-// #define prebuf_len (sizeof(prebuf))
-// static unsigned char prebuf[] =
-
- // the window of decompressed bytes that can be referenced for copies.
- // moved to this rather than indexing directly into output for streaming.
- // circular buffer.
- // because we use single-function call approach, no need for copy.
- // if using libstream-3, i would have a few options. i would be part of
- // the filter interface, which doesn't care if it is reading or writing,
- // all it knows about is its input and output buffers. we can't just
- // flush some data to the output buffer in that scenario, so we would need
- // to keep the window around. we also can't guarantee availability of that
- // buffer. so, we would probably have a instance member which would be
- // this ->
- unsigned char buf[4096] =
- "{\\rtf1\\ansi\\mac\\deff0\\deftab720{\\fonttbl;}"
- "{\\f0\\fnil \\froman \\fswiss \\fmodern \\fscript "
- "\\fdecor MS Sans SerifSymbolArialTimes New RomanCourier"
- "{\\colortbl\\red0\\green0\\blue0\n\r\\par "
- "\\pard\\plain\\f0\\fs20\\b\\i\\u\\tab\\tx";
-
- #define BUF_MASK 4095
-
- int wp = strlen((char *)buf);
-
- unsigned char *dst; // destination for uncompressed bytes
- int in = 0; // current position in src array
- int out = 0; // current position in dst array
-
- unsigned char hdr[16];
- int got;
- // get header fields (as defined in RTFLIB.H)
- got = fread(hdr, 1, 16, srcf);
- if (got != 16) {
- printf("Invalid compressed-RTF header\n");
- exit(1);
- }
-
- int compr_size = *(unsigned int *)(hdr);
- int uncompr_size = *(unsigned int *)(hdr + 4);
- int magic = *(unsigned int *)(hdr + 8);
- long crc32 = *(unsigned int *)(hdr + 12);
-
- unsigned char *x, *y;;
- unsigned char *src = malloc(compr_size - 12); // includes the 3 header fields
- y = src;
- x = src + compr_size - 12;
- got = fread(src, 1, compr_size - 12, srcf);
- if (got != compr_size - 12) {
- printf("compressed-RTF data size mismatch (%d != %d)\n", got, compr_size - 12);
- exit(1);
- }
- // shouldn't be any more than that
- got = fread(dst, 1, 16, srcf);
- if (got > 0) {
- printf("warning: data after the size\n");
- }
-
- // process the data
- if (magic == 0x414c454d) { // magic number that identifies the stream as a uncompressed stream
- dst = malloc(uncompr_size);
- memcpy(dst, src, uncompr_size);
- }
- else if (magic == 0x75465a4c) { // magic number that identifies the stream as a compressed stream
- out = 0; //strlen(prebuf);
- int dst_len;
- dst = malloc(dst_len = uncompr_size);
-
- int flagCount = 0;
- int flags = 0;
- while (out < dst_len && src < x) {
- // each flag byte flags 8 literals/references, 1 per bit
- flags = (flagCount++ % 8 == 0) ? *src++ : flags >> 1;
- if (flags & 1) { // each flag bit is 1 for reference, 0 for literal
- int rp = *src++;
- int l = *src++;
- //offset is a 12 byte number. 2^12 is 4096, so thats fine
- rp = (rp << 4) | (l >> 4); // the offset relative to block start
- l = (l & 0xf) + 2; // the number of bytes to copy
- int e = rp + l;
- while (rp < e)
- putchar(buf[wp++ & BUF_MASK] = buf[rp++ & BUF_MASK]);
- }
- else putchar(buf[wp++ & BUF_MASK] = *src++);
- }
- }
- else { // unknown magic number
- printf("Unknown compression type (magic number %04x)", magic);
- }
-
- free(y);
-}
-
-int main(int argc, char *argv[])
-{
- FILE *file = fopen(argv[1], "rb");
- decompress_rtf(file);
- fclose(file);
-}
diff --git a/vendor/ruby-msg/contrib/wmf.rb b/vendor/ruby-msg/contrib/wmf.rb
deleted file mode 100644
index 531e5fc99..000000000
--- a/vendor/ruby-msg/contrib/wmf.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-
-# this file will be used later to enhance the msg conversion.
-
-# doesn't really work very well....
-
-def wmf_getdimensions wmf_data
- # check if we have a placeable metafile
- if wmf_data.unpack('L')[0] == 0x9ac6cdd7
- # do check sum test
- shorts = wmf_data.unpack 'S11'
- warn 'bad wmf header checksum' unless shorts.pop == shorts.inject(0) { |a, b| a ^ b }
- # determine dimensions
- left, top, right, bottom, twips_per_inch = wmf_data[6, 10].unpack 'S5'
- p [left, top, right, bottom, twips_per_inch]
- [right - left, bottom - top].map { |i| (i * 96.0 / twips_per_inch).round }
- else
- [nil, nil]
- end
-end
-
-=begin
-
-some attachment stuff
-rendering_position
-object_type
-attach_num
-attach_method
-
-rendering_position is around (1 << 32) - 1 if its inline
-
-attach_method 1 for plain data?
-attach_method 6 for embedded ole
-
-display_name instead of reading the embedded ole type.
-
-
-PR_RTF_IN_SYNC property is missing or set to FALSE.
-
-
-Before reading from the uncompressed RTF stream, sort the message's attachment
-table on the value of the PR_RENDERING_POSITION property. The attachments will
-now be in order by how they appear in the message.
-
-As your client scans through the RTF stream, check for the token "\objattph".
-The character following the token is the place to put the next attachment from
-the sorted table. Handle attachments that have set their PR_RENDERING_POSITION
-property to -1 separately.
-
-eg from rtf.
-
-\b\f2\fs20{\object\objemb{\*\objclass PBrush}\objw1320\objh1274{\*\objdata
-01050000 <- looks like standard header
-02000000 <- not sure
-07000000 <- this means length of following is 7.
-50427275736800 <- Pbrush\000 in hex
-00000000 <- ?
-00000000 <- ?
-e0570000 <- this is 22496. length of the following in hex
-this is the bitmap data, starting with BM....
-424dde57000000000000360000002800000058000000550000000100180000000000a857000000
-000000000000000000000000000000c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4
-
----------------
-
-tested 3 different embedded files:
-
-1. excel embedded
- - "\002OlePres000"[40..-1] can be saved to '.wmf' and opened.
- - "\002OlePres001" similarly.
- much better looking image. strange
- - For the rtf serialization, it has the file contents as an
- ole, "d0cf11e" serialization, which i can't do yet. this can
- be extracted as a working .xls
- followed by a METAFILEPICT chunk, correspoding to one of the
- ole pres chunks.
- then the very same metafile chunk in the result bit.
-
-2. pbrush embedded image
- - "\002OlePres000" wmf as above.
- - "\001Ole10Native" is a long followed by a plain old .bmp
- - Serialization:
- Basic header as before, then bitmap data follows, then the
- metafile chunk follows, though labeled PBrush again this time.
- the result chunk was corrupted
-
-3. metafile embedded image
- - no presentation section, just a
- - "CONTENTS" section, which can be saved directly as a wmf.
- different header to the other 2 metafiles. it starts with
- 9AC6CDD7, which is the Aldus placeable metafile header.
- (http://wvware.sourceforge.net/caolan/ora-wmf.html)
- you can decode the left, top, right, bottom, and then
- multiply by 96, and divide by the metafile unit converter thing
- to get pixel values.
-
-the above ones were always the plain metafiles
-word filetype (0 = memory, 1 = disk)
-word headersize (always 9)
-word version
-thus leading to the
-0100
-0900
-0003
-pattern i usually see.
-
-=end
-
diff --git a/vendor/ruby-msg/data/mapitags.yaml b/vendor/ruby-msg/data/mapitags.yaml
deleted file mode 100644
index d6c5d5756..000000000
--- a/vendor/ruby-msg/data/mapitags.yaml
+++ /dev/null
@@ -1,4168 +0,0 @@
----
-66b0:
-- PR_RECIPIENT_ON_ASSOC_MSG_COUNT
-- PT_LONG
-3a01:
-- PR_ALTERNATE_RECIPIENT
-- PT_BINARY
-"6628":
-- PR_GW_MTSIN_ENTRYID
-- PT_BINARY
-"0061":
-- PR_END_DATE
-- PT_SYSTIME
-66b1:
-- PR_ATTACH_ON_NORMAL_MSG_COUNT
-- PT_LONG
-"1006":
-- PR_RTF_SYNC_BODY_CRC
-- PT_LONG
-3a02:
-- PR_CALLBACK_TELEPHONE_NUMBER
-- PT_TSTRING
-67aa:
-- PR_ASSOCIATED
-- PT_BOOLEAN
-"6629":
-- PR_GW_MTSOUT_ENTRYID
-- PT_BINARY
-"0062":
-- PR_OWNER_APPT_ID
-- PT_LONG
-fffa:
-- PR_EMS_AB_OBJECT_OID
-- PT_BINARY
-66b2:
-- PR_ATTACH_ON_ASSOC_MSG_COUNT
-- PT_LONG
-36e0:
-- PR_FOLDER_XVIEWINFO_E
-- PT_BINARY
-"1007":
-- PR_RTF_SYNC_BODY_COUNT
-- PT_LONG
-3a03:
-- PR_CONVERSION_PROHIBITED
-- PT_BOOLEAN
-"0063":
-- PR_RESPONSE_REQUESTED
-- PT_BOOLEAN
-fffb:
-- PR_EMS_AB_IS_MASTER
-- PT_BOOLEAN
-002a:
-- PR_RECEIPT_TIME
-- PT_SYSTIME
-66b3:
-- PR_NORMAL_MESSAGE_SIZE
-- PT_LONG|PT_I8
-36e1:
-- PR_FOLDER_VIEWS_ONLY
-- PT_LONG
-"1008":
-- PR_RTF_SYNC_BODY_TAG
-- PT_TSTRING
-3a04:
-- PR_DISCLOSE_RECIPIENTS
-- PT_BOOLEAN
-"0064":
-- PR_SENT_REPRESENTING_ADDRTYPE
-- PT_TSTRING
-fffc:
-- PR_EMS_AB_PARENT_ENTRYID
-- PT_BINARY
-002b:
-- PR_RECIPIENT_REASSIGNMENT_PROHIBITED
-- PT_BOOLEAN
-66b4:
-- PR_ASSOC_MESSAGE_SIZE
-- PT_LONG|PT_I8
-"1009":
-- PR_RTF_COMPRESSED
-- PT_BINARY
-3a05:
-- PR_GENERATION
-- PT_TSTRING
-"0065":
-- PR_SENT_REPRESENTING_EMAIL_ADDRESS
-- PT_TSTRING
-002c:
-- PR_REDIRECTION_HISTORY
-- PT_BINARY
-66b5:
-- PR_FOLDER_PATHNAME
-- PT_TSTRING
-3a06:
-- PR_GIVEN_NAME
-- PT_TSTRING
-fffe:
-- PR_EMS_AB_SERVER
-- PT_TSTRING
-002d:
-- PR_RELATED_IPMS
-- PT_BINARY
-66b6:
-- PR_OWNER_COUNT
-- PT_LONG
-36e4:
-- PR_FREEBUSY_ENTRYIDS
-- PT_MV_BINARY
-3a07:
-- PR_GOVERNMENT_ID_NUMBER
-- PT_TSTRING
-"0066":
-- PR_ORIGINAL_SENDER_ADDRTYPE
-- PT_TSTRING
-002e:
-- PR_ORIGINAL_SENSITIVITY
-- PT_LONG
-"1010":
-- PR_RTF_SYNC_PREFIX_COUNT
-- PT_LONG
-66b7:
-- PR_CONTACT_COUNT
-- PT_LONG
-36e5:
-- PR_DEF_MSG_CLASS
-- PT_UNICODE
-3a08:
-- PR_BUSINESS_TELEPHONE_NUMBER
-- PT_TSTRING
-"0067":
-- PR_ORIGINAL_SENDER_EMAIL_ADDRESS
-- PT_TSTRING
-002f:
-- PR_LANGUAGES
-- PT_TSTRING
-"1011":
-- PR_RTF_SYNC_TRAILING_COUNT
-- PT_LONG
-"6634":
-- PR_CHANGE_ADVISOR
-- PT_OBJECT
-36e6:
-- PR_DEF_FORM_NAME
-- PT_UNICODE
-3a09:
-- PR_HOME_TELEPHONE_NUMBER
-- PT_TSTRING
-0068:
-- PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE
-- PT_TSTRING
-"6635":
-- PR_FAVORITES_DEFAULT_NAME
-- PT_TSTRING
-0069:
-- PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS
-- PT_TSTRING
-"1012":
-- PR_ORIGINALLY_INTENDED_RECIP_ENTRYID
-- PT_BINARY
-0e96:
-- PR_ATTACH_VIRUS_SCAN_INFO
-- PT_BINARY
-"6636":
-- PR_SYS_CONFIG_FOLDER_ENTRYID
-- PT_BINARY
-67f0:
-- PR_PROFILE_SECURE_MAILBOX
-- PT_BINARY
-"1013":
-- PR_BODY_HTML
-- PT_TSTRING
-"3400":
-- PR_DEFAULT_STORE
-- PT_BOOLEAN
-"6637":
-- PR_CHANGE_NOTIFICATION_GUID
-- PT_CLSID
-36e9:
-- PR_GENERATE_EXCHANGE_VIEWS
-- PT_BOOLEAN
-"0070":
-- PR_CONVERSATION_TOPIC
-- PT_TSTRING
-0e5e:
-- PR_MIME_HANDLER_CLASSIDS
-- PT_CLSID
-3a10:
-- PR_ORGANIZATIONAL_ID_NUMBER
-- PT_TSTRING
-"6638":
-- PR_FOLDER_CHILD_COUNT
-- PT_LONG
-"0071":
-- PR_CONVERSATION_INDEX
-- PT_BINARY
-3a11:
-- PR_SURNAME
-- PT_TSTRING
-"0072":
-- PR_ORIGINAL_DISPLAY_BCC
-- PT_TSTRING
-"7001":
-- PR_VD_BINARY
-- PT_BINARY
-3a12:
-- PR_ORIGINAL_ENTRYID
-- PT_BINARY
-"0073":
-- PR_ORIGINAL_DISPLAY_CC
-- PT_TSTRING
-003a:
-- PR_REPORT_NAME
-- PT_TSTRING
-"7002":
-- PR_VD_STRINGS
-- PT_UNICODE
-3a13:
-- PR_ORIGINAL_DISPLAY_NAME
-- PT_TSTRING
-"0074":
-- PR_ORIGINAL_DISPLAY_TO
-- PT_TSTRING
-686b:
-- PR_DELEGATES_SEE_PRIVATE
-- PT_MV_LONG
-003b:
-- PR_SENT_REPRESENTING_SEARCH_KEY
-- PT_BINARY
-66c3:
-- PR_CODE_PAGE_ID
-- PT_LONG
-"7003":
-- PR_VD_FLAGS
-- PT_LONG
-3a14:
-- PR_ORIGINAL_SEARCH_KEY
-- PT_BINARY
-"0075":
-- PR_RECEIVED_BY_ADDRTYPE
-- PT_TSTRING
-686c:
-- PR_PERSONAL_FREEBUSY
-- PT_BINARY
-003c:
-- PR_X400_CONTENT_TYPE
-- PT_BINARY
-66c4:
-- PR_RETENTION_AGE_LIMIT
-- PT_LONG
-"7004":
-- PR_VD_LINK_TO
-- PT_BINARY
-3a15:
-- PR_POSTAL_ADDRESS
-- PT_TSTRING
-"0076":
-- PR_RECEIVED_BY_EMAIL_ADDRESS
-- PT_TSTRING
-686d:
-- PR_PROCESS_MEETING_REQUESTS
-- PT_BOOLEAN
-003d:
-- PR_SUBJECT_PREFIX
-- PT_TSTRING
-66c5:
-- PR_DISABLE_PERUSER_READ
-- PT_BOOLEAN
-"7005":
-- PR_VD_VIEW_FOLDER
-- PT_BINARY
-3a16:
-- PR_COMPANY_NAME
-- PT_TSTRING
-686e:
-- PR_DECLINE_RECURRING_MEETING_REQUESTS
-- PT_BOOLEAN
-003e:
-- PR_NON_RECEIPT_REASON
-- PT_LONG
-66c6:
-- PR_INTERNET_PARSE_STATE
-- PT_BINARY
-"7006":
-- PR_VD_NAME
-- PT_UNICODE
-3a17:
-- PR_TITLE
-- PT_TSTRING
-660a:
-- PR_PROFILE_TYPE
-- PT_LONG
-"0077":
-- PR_RCVD_REPRESENTING_ADDRTYPE
-- PT_TSTRING
-686f:
-- PR_DECLINE_CONFLICTING_MEETING_REQUESTS
-- PT_BOOLEAN
-003f:
-- PR_RECEIVED_BY_ENTRYID
-- PT_BINARY
-66c7:
-- PR_INTERNET_MESSAGE_INFO
-- PT_BINARY
-3a18:
-- PR_DEPARTMENT_NAME
-- PT_TSTRING
-660b:
-- PR_PROFILE_MAILBOX
-- PT_TSTRING
-0078:
-- PR_RCVD_REPRESENTING_EMAIL_ADDRESS
-- PT_TSTRING
-7d01:
-- PR_FAV_AUTOSUBFOLDERS
-- PT_LONG
-"7007":
-- PR_VD_VERSION
-- PT_LONG
-3a19:
-- PR_OFFICE_LOCATION
-- PT_TSTRING
-660c:
-- PR_PROFILE_SERVER
-- PT_TSTRING
-0079:
-- PR_ORIGINAL_AUTHOR_ADDRTYPE
-- PT_TSTRING
-7d02:
-- PR_FAV_PARENT_SOURCE_KEY
-- PT_BINARY
-660d:
-- PR_PROFILE_MAX_RESTRICT
-- PT_LONG
-7d03:
-- PR_FAV_LEVEL_MASK
-- PT_LONG
-"3410":
-- PR_IPM_SUBTREE_SEARCH_KEY
-- PT_BINARY
-660e:
-- PR_PROFILE_AB_FILES_PATH
-- PT_TSTRING
-3a20:
-- PR_TRANSMITTABLE_DISPLAY_NAME
-- PT_TSTRING
-"3411":
-- PR_IPM_OUTBOX_SEARCH_KEY
-- PT_BINARY
-"6779":
-- PR_PF_QUOTA_STYLE
-- PT_LONG
-0c0a:
-- PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY
-- PT_BOOLEAN
-660f:
-- PR_PROFILE_FAVFLD_DISPLAY_NAME
-- PT_TSTRING
-3a21:
-- PR_PAGER_TELEPHONE_NUMBER
-- PT_TSTRING
-"3412":
-- PR_IPM_WASTEBASKET_SEARCH_KEY
-- PT_BINARY
-0c0b:
-- PR_PHYSICAL_DELIVERY_MODE
-- PT_LONG
-3a22:
-- PR_USER_CERTIFICATE
-- PT_BINARY
-"3413":
-- PR_IPM_SENTMAIL_SEARCH_KEY
-- PT_BINARY
-0c0c:
-- PR_PHYSICAL_DELIVERY_REPORT_REQUEST
-- PT_LONG
-7d07:
-- PR_FAV_INHERIT_AUTO
-- PT_LONG
-65a0:
-- PR_RULE_SERVER_RULE_ID
-- PT_I8
-3a23:
-- PR_PRIMARY_FAX_NUMBER
-- PT_TSTRING
-"3414":
-- PR_MDB_PROVIDER
-- PT_BINARY
-0c0d:
-- PR_PHYSICAL_FORWARDING_ADDRESS
-- PT_BINARY
-004a:
-- PR_DISC_VAL
-- PT_BOOLEAN
-7d08:
-- PR_FAV_DEL_SUBS
-- PT_BINARY
-"6650":
-- PR_RULE_ACTION_NUMBER
-- PT_LONG
-3a24:
-- PR_BUSINESS_FAX_NUMBER
-- PT_TSTRING
-"3415":
-- PR_RECEIVE_FOLDER_SETTINGS
-- PT_OBJECT
-0c0e:
-- PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED
-- PT_BOOLEAN
-004b:
-- PR_ORIG_MESSAGE_CLASS
-- PT_TSTRING
-"6651":
-- PR_RULE_FOLDER_ENTRYID
-- PT_BINARY
-"6783":
-- PR_SEARCH_FLAGS
-- PT_LONG
-3a25:
-- PR_HOME_FAX_NUMBER
-- PT_TSTRING
-674a:
-- PR_MID
-- PT_I8
-0c0f:
-- PR_PHYSICAL_FORWARDING_PROHIBITED
-- PT_BOOLEAN
-004c:
-- PR_ORIGINAL_AUTHOR_ENTRYID
-- PT_BINARY
-"6652":
-- PR_ACTIVE_USER_ENTRYID
-- PT_BINARY
-3a26:
-- PR_COUNTRY
-- PT_TSTRING
-674b:
-- PR_CATEG_ID
-- PT_I8
-004d:
-- PR_ORIGINAL_AUTHOR_NAME
-- PT_TSTRING
-"1030":
-- PR_INTERNET_APPROVED
-- PT_TSTRING
-"6653":
-- PR_X400_ENVELOPE_TYPE
-- PT_LONG
-3a27:
-- PR_LOCALITY
-- PT_TSTRING
-661a:
-- PR_USER_NAME
-- PT_TSTRING
-674c:
-- PR_PARENT_CATEG_ID
-- PT_I8
-004e:
-- PR_ORIGINAL_SUBMIT_TIME
-- PT_SYSTIME
-"1031":
-- PR_INTERNET_CONTROL
-- PT_TSTRING
-"6654":
-- PR_MSG_FOLD_TIME
-- PT_SYSTIME
-3a28:
-- PR_STATE_OR_PROVINCE
-- PT_TSTRING
-661b:
-- PR_MAILBOX_OWNER_ENTRYID
-- PT_BINARY
-674d:
-- PR_INST_ID
-- PT_I8
-004f:
-- PR_REPLY_RECIPIENT_ENTRIES
-- PT_BINARY
-"1032":
-- PR_INTERNET_DISTRIBUTION
-- PT_TSTRING
-3a29:
-- PR_STREET_ADDRESS
-- PT_TSTRING
-661c:
-- PR_MAILBOX_OWNER_NAME
-- PT_TSTRING
-674e:
-- PR_INSTANCE_NUM
-- PT_LONG
-"1033":
-- PR_INTERNET_FOLLOWUP_TO
-- PT_TSTRING
-"6655":
-- PR_ICS_CHANGE_KEY
-- PT_BINARY
-661d:
-- PR_OOF_STATE
-- PT_BOOLEAN
-674f:
-- PR_ADDRBOOK_MID
-- PT_I8
-661e:
-- PR_SCHEDULE_FOLDER_ENTRYID
-- PT_BINARY
-"1034":
-- PR_INTERNET_LINES
-- PT_LONG
-3a30:
-- PR_ASSISTANT
-- PT_TSTRING
-0c1a:
-- PR_SENDER_NAME
-- PT_TSTRING
-661f:
-- PR_IPM_DAF_ENTRYID
-- PT_BINARY
-"1035":
-- PR_INTERNET_MESSAGE_ID
-- PT_TSTRING
-"6658":
-- PR_GW_ADMIN_OPERATIONS
-- PT_LONG
-0c1b:
-- PR_SUPPLEMENTARY_INFO
-- PT_TSTRING
-"1036":
-- PR_INTERNET_NEWSGROUPS
-- PT_TSTRING
-"6659":
-- PR_INTERNET_CONTENT
-- PT_BINARY
-0c1c:
-- PR_TYPE_OF_MTS_USER
-- PT_LONG
-0c1d:
-- PR_SENDER_SEARCH_KEY
-- PT_BINARY
-005a:
-- PR_ORIGINAL_SENDER_NAME
-- PT_TSTRING
-"1037":
-- PR_INTERNET_ORGANIZATION
-- PT_TSTRING
-66aa:
-- PR_RESTRICTION_COUNT
-- PT_LONG
-0c1e:
-- PR_SENDER_ADDRTYPE
-- PT_TSTRING
-005b:
-- PR_ORIGINAL_SENDER_ENTRYID
-- PT_BINARY
-10c0:
-- PR_SMTP_TEMP_TBL_DATA
-- PT_BINARY
-"6660":
-- PR_TRACE_INFO
-- PT_BINARY
-"1038":
-- PR_INTERNET_NNTP_PATH
-- PT_TSTRING
-66ab:
-- PR_CATEG_COUNT
-- PT_LONG
-675a:
-- PR_PCL_EXPORT
-- PT_BINARY
-0c1f:
-- PR_SENDER_EMAIL_ADDRESS
-- PT_TSTRING
-005c:
-- PR_ORIGINAL_SENDER_SEARCH_KEY
-- PT_BINARY
-10c1:
-- PR_SMTP_TEMP_TBL_DATA_2
-- PT_LONG
-35e0:
-- PR_IPM_SUBTREE_ENTRYID
-- PT_BINARY
-"6661":
-- PR_SUBJECT_TRACE_INFO
-- PT_BINARY
-"1039":
-- PR_INTERNET_REFERENCES
-- PT_TSTRING
-66ac:
-- PR_CACHED_COLUMN_COUNT
-- PT_LONG
-675b:
-- PR_CN_MV_EXPORT
-- PT_MV_BINARY
-"8100":
-- PR_EMS_AB_OPEN_RETRY_INTERVAL
-- PT_LONG
-005d:
-- PR_ORIGINAL_SENT_REPRESENTING_NAME
-- PT_TSTRING
-10c2:
-- PR_SMTP_TEMP_TBL_DATA_3
-- PT_BINARY
-"6662":
-- PR_RECIPIENT_NUMBER
-- PT_LONG
-66ad:
-- PR_NORMAL_MSG_W_ATTACH_COUNT
-- PT_LONG
-662a:
-- PR_TRANSFER_ENABLED
-- PT_BOOLEAN
-"8101":
-- PR_EMS_AB_ORGANIZATION_NAME
-- PT_MV_TSTRING
-005e:
-- PR_ORIGINAL_SENT_REPRESENTING_ENTRYID
-- PT_BINARY
-10c3:
-- PR_CAL_START_TIME
-- PT_SYSTIME
-"1040":
-- PR_NNTP_XREF
-- PT_TSTRING
-35e2:
-- PR_IPM_OUTBOX_ENTRYID
-- PT_BINARY
-"6663":
-- PR_MTS_SUBJECT_ID
-- PT_BINARY
-66ae:
-- PR_ASSOC_MSG_W_ATTACH_COUNT
-- PT_LONG
-662b:
-- PR_TEST_LINE_SPEED
-- PT_BINARY
-"8102":
-- PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME
-- PT_MV_TSTRING
-005f:
-- PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY
-- PT_BINARY
-10c4:
-- PR_CAL_END_TIME
-- PT_SYSTIME
-"1041":
-- PR_INTERNET_PRECEDENCE
-- PT_TSTRING
-35e3:
-- PR_IPM_WASTEBASKET_ENTRYID
-- PT_BINARY
-"6664":
-- PR_REPORT_DESTINATION_NAME
-- PT_TSTRING
-66af:
-- PR_RECIPIENT_ON_NORMAL_MSG_COUNT
-- PT_LONG
-662c:
-- PR_HIERARCHY_SYNCHRONIZER
-- PT_OBJECT
-"8103":
-- PR_EMS_AB_ORIGINAL_DISPLAY_TABLE
-- PT_BINARY
-10c5:
-- PR_CAL_RECURRING_ID
-- PT_SYSTIME
-"1042":
-- PR_IN_REPLY_TO_ID
-- PT_UNICODE
-35e4:
-- PR_IPM_SENTMAIL_ENTRYID
-- PT_BINARY
-"6665":
-- PR_REPORT_DESTINATION_ENTRYID
-- PT_BINARY
-662d:
-- PR_CONTENTS_SYNCHRONIZER
-- PT_OBJECT
-"8104":
-- PR_EMS_AB_ORIGINAL_DISPLAY_TABLE_MSDOS
-- PT_BINARY
-10c6:
-- PR_DAV_SUBMIT_DATA
-- PT_UNICODE
-"1043":
-- PR_LIST_HELP
-- PT_UNICODE
-35e5:
-- PR_VIEWS_ENTRYID
-- PT_BINARY
-662e:
-- PR_COLLECTOR
-- PT_OBJECT
-36df:
-- PR_FOLDER_WEBVIEWINFO
-- PT_BINARY
-"8105":
-- PR_EMS_AB_OUTBOUND_SITES
-- PT_OBJECT|PT_MV_TSTRING
-10c7:
-- PR_CDO_EXPANSION_INDEX
-- PT_LONG
-"1044":
-- PR_LIST_SUBSCRIBE
-- PT_UNICODE
-35e6:
-- PR_COMMON_VIEWS_ENTRYID
-- PT_BINARY
-"6666":
-- PR_CONTENT_SEARCH_KEY
-- PT_BINARY
-662f:
-- PR_FAST_TRANSFER
-- PT_OBJECT
-"8106":
-- PR_EMS_AB_P_SELECTOR
-- PT_BINARY
-10c8:
-- PR_IFS_INTERNAL_DATA
-- PT_BINARY
-3a40:
-- PR_SEND_RICH_INFO
-- PT_BOOLEAN
-35e7:
-- PR_FINDER_ENTRYID
-- PT_BINARY
-"6667":
-- PR_FOREIGN_ID
-- PT_BINARY
-"1045":
-- PR_LIST_UNSUBSCRIBE
-- PT_UNICODE
-3a41:
-- PR_WEDDING_ANNIVERSARY
-- PT_SYSTIME
-"6668":
-- PR_FOREIGN_REPORT_ID
-- PT_BINARY
-"8107":
-- PR_EMS_AB_P_SELECTOR_INBOUND
-- PT_BINARY
-"3301":
-- PR_FORM_VERSION
-- PT_TSTRING
-3a42:
-- PR_BIRTHDAY
-- PT_SYSTIME
-"6669":
-- PR_FOREIGN_SUBJECT_ID
-- PT_BINARY
-3a0a:
-- PR_INITIALS
-- PT_TSTRING
-"8108":
-- PR_EMS_AB_PER_MSG_DIALOG_DISPLAY_TABLE
-- PT_BINARY
-"3302":
-- PR_FORM_CLSID
-- PT_CLSID
-3a43:
-- PR_HOBBIES
-- PT_TSTRING
-"8109":
-- PR_EMS_AB_PER_RECIP_DIALOG_DISPLAY_TABLE
-- PT_BINARY
-"6670":
-- PR_LONGTERM_ENTRYID_FROM_TABLE
-- PT_BINARY
-"3303":
-- PR_FORM_CONTACT_NAME
-- PT_TSTRING
-3a44:
-- PR_MIDDLE_NAME
-- PT_TSTRING
-3a0b:
-- PR_KEYWORD
-- PT_TSTRING
-65c2:
-- PR_REPLY_TEMPLATE_ID
-- PT_BINARY
-"6671":
-- PR_MEMBER_ID
-- PT_I8
-"3304":
-- PR_FORM_CATEGORY
-- PT_TSTRING
-3a45:
-- PR_DISPLAY_NAME_PREFIX
-- PT_TSTRING
-3a0c:
-- PR_LANGUAGE
-- PT_TSTRING
-"6672":
-- PR_MEMBER_NAME
-- PT_TSTRING
-"3305":
-- PR_FORM_CATEGORY_SUB
-- PT_TSTRING
-3a46:
-- PR_PROFESSION
-- PT_TSTRING
-"8110":
-- PR_EMS_AB_PUBLIC_DELEGATES_BL
-- PT_OBJECT|PT_MV_TSTRING
-3a0d:
-- PR_LOCATION
-- PT_TSTRING
-"6673":
-- PR_MEMBER_RIGHTS
-- PT_LONG
-"3306":
-- PR_FORM_HOST_MAP
-- PT_MV_LONG
-3a47:
-- PR_PREFERRED_BY_NAME
-- PT_TSTRING
-663a:
-- PR_HAS_RULES
-- PT_BOOLEAN
-"8111":
-- PR_EMS_AB_QUOTA_NOTIFICATION_SCHEDULE
-- PT_BINARY
-3a0e:
-- PR_MAIL_PERMISSION
-- PT_BOOLEAN
-"6674":
-- PR_RULE_ID
-- PT_I8
-"3307":
-- PR_FORM_HIDDEN
-- PT_BOOLEAN
-3a48:
-- PR_SPOUSE_NAME
-- PT_TSTRING
-663b:
-- PR_ADDRESS_BOOK_ENTRYID
-- PT_BINARY
-36ec:
-- PR_AGING_PERIOD
-- PT_LONG
-"8112":
-- PR_EMS_AB_QUOTA_NOTIFICATION_STYLE
-- PT_LONG
-3a0f:
-- PR_MHS_COMMON_NAME
-- PT_TSTRING
-"6675":
-- PR_RULE_IDS
-- PT_BINARY
-"3308":
-- PR_FORM_DESIGNER_NAME
-- PT_TSTRING
-3a49:
-- PR_COMPUTER_NETWORK_NAME
-- PT_TSTRING
-663c:
-- PR_PUBLIC_FOLDER_ENTRYID
-- PT_BINARY
-"8113":
-- PR_EMS_AB_RANGE_LOWER
-- PT_LONG
-"6676":
-- PR_RULE_SEQUENCE
-- PT_LONG
-"3309":
-- PR_FORM_DESIGNER_GUID
-- PT_CLSID
-663d:
-- PR_OFFLINE_FLAGS
-- PT_LONG
-36ee:
-- PR_AGING_GRANULARITY
-- PT_LONG
-7c00:
-- PR_FAV_DISPLAY_NAME
-- PT_TSTRING
-"8114":
-- PR_EMS_AB_RANGE_UPPER
-- PT_LONG
-663e:
-- PR_HIERARCHY_CHANGE_NUM
-- PT_LONG
-"8115":
-- PR_EMS_AB_RAS_CALLBACK_NUMBER
-- PT_TSTRING
-3a50:
-- PR_PERSONAL_HOME_PAGE
-- PT_TSTRING
-"6677":
-- PR_RULE_STATE
-- PT_LONG
-663f:
-- PR_HAS_MODERATOR_RULES
-- PT_BOOLEAN
-7c02:
-- PR_FAV_PUBLIC_SOURCE_KEY
-- PT_BINARY
-"8116":
-- PR_EMS_AB_RAS_PHONE_NUMBER
-- PT_TSTRING
-3a51:
-- PR_BUSINESS_HOME_PAGE
-- PT_TSTRING
-"6678":
-- PR_RULE_USER_FLAGS
-- PT_LONG
-"8117":
-- PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME
-- PT_TSTRING
-3a52:
-- PR_CONTACT_VERSION
-- PT_CLSID
-"6679":
-- PR_RULE_CONDITION
-- PT_SRESTRICTION
-3a1a:
-- PR_PRIMARY_TELEPHONE_NUMBER
-- PT_TSTRING
-7c04:
-- PR_OST_OSTID
-- PT_BINARY
-"4000":
-- PR_NEW_ATTACH
-- PT_LONG
-3a53:
-- PR_CONTACT_ENTRYIDS
-- PT_MV_BINARY
-3a1b:
-- PR_BUSINESS2_TELEPHONE_NUMBER
-- PT_TSTRING
-007a:
-- PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS
-- PT_TSTRING
-"8118":
-- PR_EMS_AB_RAS_REMOTE_SRVR_NAME
-- PT_TSTRING
-"4001":
-- PR_START_EMBED
-- PT_LONG
-3a54:
-- PR_CONTACT_ADDRTYPES
-- PT_MV_TSTRING
-81a1:
-- PR_EMS_AB_X500_RDN
-- PT_TSTRING
-340d:
-- PR_STORE_SUPPORT_MASK
-- PT_LONG
-007b:
-- PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE
-- PT_TSTRING
-"8119":
-- PR_EMS_AB_REGISTERED_ADDRESS
-- PT_MV_BINARY
-"4002":
-- PR_END_EMBED
-- PT_LONG
-"6681":
-- PR_RULE_PROVIDER
-- PT_TSTRING
-3a55:
-- PR_CONTACT_DEFAULT_ADDRESS_INDEX
-- PT_LONG
-81a2:
-- PR_EMS_AB_X500_NC
-- PT_TSTRING
-3a1c:
-- PR_MOBILE_TELEPHONE_NUMBER
-- PT_TSTRING
-340e:
-- PR_STORE_STATE
-- PT_LONG
-007c:
-- PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS
-- PT_TSTRING
-"4003":
-- PR_START_RECIP
-- PT_LONG
-"6682":
-- PR_RULE_NAME
-- PT_TSTRING
-3a56:
-- PR_CONTACT_EMAIL_ADDRESSES
-- PT_MV_TSTRING
-677b:
-- PR_PF_STORAGE_QUOTA
-- PT_LONG
-81a3:
-- PR_EMS_AB_REFERRAL_LIST
-- PT_MV_TSTRING
-"8120":
-- PR_EMS_AB_REPORT_TO_ORIGINATOR
-- PT_BOOLEAN
-3a1d:
-- PR_RADIO_TELEPHONE_NUMBER
-- PT_TSTRING
-007d:
-- PR_TRANSPORT_MESSAGE_HEADERS
-- PT_TSTRING
-"6683":
-- PR_RULE_LEVEL
-- PT_LONG
-3a57:
-- PR_COMPANY_MAIN_PHONE_NUMBER
-- PT_TSTRING
-664a:
-- PR_HAS_NAMED_PROPERTIES
-- PT_BOOLEAN
-81a4:
-- PR_EMS_AB_NNTP_DISTRIBUTIONS_FLAG
-- PT_BOOLEAN
-"8121":
-- PR_EMS_AB_REPORT_TO_OWNER
-- PT_BOOLEAN
-3a1e:
-- PR_CAR_TELEPHONE_NUMBER
-- PT_TSTRING
-007e:
-- PR_DELEGATION
-- PT_BINARY
-"4004":
-- PR_END_RECIP
-- PT_LONG
-"6684":
-- PR_RULE_PROVIDER_DATA
-- PT_BINARY
-3a58:
-- PR_CHILDRENS_NAMES
-- PT_MV_TSTRING
-664b:
-- PR_REPLICA_VERSION
-- PT_I8
-81a5:
-- PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP
-- PT_OBJECT|PT_MV_TSTRING
-"8122":
-- PR_EMS_AB_REQ_SEQ
-- PT_LONG
-3a1f:
-- PR_OTHER_TELEPHONE_NUMBER
-- PT_TSTRING
-007f:
-- PR_TNEF_CORRELATION_KEY
-- PT_BINARY
-"4005":
-- PR_END_CC_RECIP
-- PT_LONG
-"6685":
-- PR_LAST_FULL_BACKUP
-- PT_SYSTIME
-3a59:
-- PR_HOME_ADDRESS_CITY
-- PT_TSTRING
-81a6:
-- PR_EMS_AB_NNTP_NEWSFEEDS
-- PT_OBJECT|PT_MV_TSTRING
-"8123":
-- PR_EMS_AB_RESPONSIBLE_LOCAL_DXA
-- PT_OBJECT|PT_MV_TSTRING
-"4006":
-- PR_END_BCC_RECIP
-- PT_LONG
-"8124":
-- PR_EMS_AB_RID_SERVER
-- PT_OBJECT|PT_MV_TSTRING
-"4007":
-- PR_END_P1_RECIP
-- PT_LONG
-"6687":
-- PR_PROFILE_ADDR_INFO
-- PT_BINARY
-81a8:
-- PR_EMS_AB_ENABLED_PROTOCOL_CFG
-- PT_BOOLEAN
-"8125":
-- PR_EMS_AB_ROLE_OCCUPANT
-- PT_OBJECT|PT_MV_TSTRING
-81a9:
-- PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES
-- PT_MV_TSTRING
-"8126":
-- PR_EMS_AB_ROUTING_LIST
-- PT_MV_TSTRING
-"4009":
-- PR_START_TOP_FLD
-- PT_LONG
-3a60:
-- PR_OTHER_ADDRESS_COUNTRY
-- PT_TSTRING
-"8127":
-- PR_EMS_AB_RTS_CHECKPOINT_SIZE
-- PT_LONG
-"5902":
-- PR_INET_MAIL_OVERRIDE_FORMAT
-- PT_LONG
-3a61:
-- PR_OTHER_ADDRESS_POSTAL_CODE
-- PT_TSTRING
-"6689":
-- PR_PROFILE_OPTIONS_DATA
-- PT_BINARY
-3a2a:
-- PR_POSTAL_CODE
-- PT_TSTRING
-"8128":
-- PR_EMS_AB_RTS_RECOVERY_TIMEOUT
-- PT_LONG
-"4010":
-- PR_START_FAI_MSG
-- PT_LONG
-3a62:
-- PR_OTHER_ADDRESS_STATE_OR_PROVINCE
-- PT_TSTRING
-81b0:
-- PR_EMS_AB_OUTBOUND_HOST_TYPE
-- PT_BOOLEAN
-3a2b:
-- PR_POST_BOX
-- PT_TSTRING
-"4011":
-- PR_NEW_FX_FOLDER
-- PT_BINARY
-7ffa:
-- PR_ATTACHMENT_LINKID
-- PT_LONG
-65e0:
-- PR_SOURCE_KEY
-- PT_BINARY
-3a63:
-- PR_OTHER_ADDRESS_STREET
-- PT_TSTRING
-81b1:
-- PR_EMS_AB_PROXY_GENERATION_ENABLED
-- PT_BOOLEAN
-3a2c:
-- PR_TELEX_NUMBER
-- PT_TSTRING
-"8129":
-- PR_EMS_AB_RTS_WINDOW_SIZE
-- PT_LONG
-"4012":
-- PR_INCR_SYNC_CHG
-- PT_LONG
-7ffb:
-- PR_EXCEPTION_STARTTIME
-- PT_SYSTIME
-65e1:
-- PR_PARENT_SOURCE_KEY
-- PT_BINARY
-"6690":
-- PR_REPLICATION_STYLE
-- PT_LONG
-3a64:
-- PR_OTHER_ADDRESS_POST_OFFICE_BOX
-- PT_TSTRING
-81b2:
-- PR_EMS_AB_ROOT_NEWSGROUPS_FOLDER_ID
-- PT_BINARY
-10f1:
-- PR_OWA_URL
-- PT_TSTRING
-"4013":
-- PR_INCR_SYNC_DEL
-- PT_LONG
-7ffc:
-- PR_EXCEPTION_ENDTIME
-- PT_SYSTIME
-65e2:
-- PR_CHANGE_KEY
-- PT_BINARY
-"6691":
-- PR_REPLICATION_SCHEDULE
-- PT_BINARY
-81b3:
-- PR_EMS_AB_CONNECTION_TYPE
-- PT_BOOLEAN
-3a2d:
-- PR_ISDN_NUMBER
-- PT_TSTRING
-"8130":
-- PR_EMS_AB_SERIAL_NUMBER
-- PT_MV_TSTRING
-10f2:
-- PR_DISABLE_FULL_FIDELITY
-- PT_BOOLEAN
-"4014":
-- PR_INCR_SYNC_END
-- PT_LONG
-7ffd:
-- PR_ATTACHMENT_FLAGS
-- PT_LONG
-65e3:
-- PR_PREDECESSOR_CHANGE_LIST
-- PT_BINARY
-"6692":
-- PR_REPLICATION_MESSAGE_PRIORITY
-- PT_LONG
-81b4:
-- PR_EMS_AB_CONNECTION_LIST_FILTER_TYPE
-- PT_LONG
-"8131":
-- PR_EMS_AB_SERVICE_ACTION_FIRST
-- PT_LONG
-3a2e:
-- PR_ASSISTANT_TELEPHONE_NUMBER
-- PT_TSTRING
-10f3:
-- PR_URL_COMP_NAME
-- PT_UNICODE
-7ffe:
-- PR_ATTACHMENT_HIDDEN
-- PT_BOOLEAN
-65e4:
-- PR_SYNCHRONIZE_FLAGS
-- PT_LONG
-"6693":
-- PR_OVERALL_MSG_AGE_LIMIT
-- PT_LONG
-665a:
-- PR_HAS_ATTACH_FROM_IMAIL
-- PT_BOOLEAN
-81b5:
-- PR_EMS_AB_PORT_NUMBER
-- PT_LONG
-"8132":
-- PR_EMS_AB_SERVICE_ACTION_OTHER
-- PT_LONG
-3a2f:
-- PR_HOME2_TELEPHONE_NUMBER
-- PT_TSTRING
-10f4:
-- PR_ATTR_HIDDEN
-- PT_BOOLEAN
-"4015":
-- PR_INCR_SYNC_MSG
-- PT_LONG
-65e5:
-- PR_AUTO_ADD_NEW_SUBS
-- PT_BOOLEAN
-"6694":
-- PR_REPLICATION_ALWAYS_INTERVAL
-- PT_LONG
-"5909":
-- PR_MSG_EDITOR_FORMAT
-- PT_LONG
-665b:
-- PR_ORIGINATOR_NAME
-- PT_TSTRING
-"8001":
-- PR_EMS_AB_DISPLAY_NAME_OVERRIDE
-- PT_BOOLEAN
-81b6:
-- PR_EMS_AB_PROTOCOL_SETTINGS
-- PT_MV_TSTRING
-"8133":
-- PR_EMS_AB_SERVICE_ACTION_SECOND
-- PT_LONG
-10f5:
-- PR_ATTR_SYSTEM
-- PT_BOOLEAN
-"4016":
-- PR_FX_DEL_PROP
-- PT_LONG
-65e6:
-- PR_NEW_SUBS_GET_AUTO_ADD
-- PT_BOOLEAN
-"6695":
-- PR_REPLICATION_MSG_SIZE
-- PT_LONG
-665c:
-- PR_ORIGINATOR_ADDR
-- PT_TSTRING
-81b7:
-- PR_EMS_AB_GROUP_BY_ATTR_1
-- PT_TSTRING
-"8134":
-- PR_EMS_AB_SERVICE_RESTART_DELAY
-- PT_LONG
-10f6:
-- PR_ATTR_READONLY
-- PT_BOOLEAN
-"4017":
-- PR_IDSET_GIVEN
-- PT_LONG
-65e7:
-- PR_MESSAGE_SITE_NAME
-- PT_TSTRING
-"6696":
-- PR_IS_NEWSGROUP_ANCHOR
-- PT_BOOLEAN
-103a:
-- PR_SUPERSEDES
-- PT_TSTRING
-665d:
-- PR_ORIGINATOR_ADDRTYPE
-- PT_TSTRING
-"8003":
-- PR_EMS_AB_CA_CERTIFICATE
-- PT_MV_BINARY
-81b8:
-- PR_EMS_AB_GROUP_BY_ATTR_2
-- PT_TSTRING
-"8135":
-- PR_EMS_AB_SERVICE_RESTART_MESSAGE
-- PT_TSTRING
-65e8:
-- PR_MESSAGE_PROCESSED
-- PT_BOOLEAN
-"6697":
-- PR_IS_NEWSGROUP
-- PT_BOOLEAN
-103b:
-- PR_POST_FOLDER_ENTRIES
-- PT_BINARY
-665e:
-- PR_ORIGINATOR_ENTRYID
-- PT_BINARY
-"8004":
-- PR_EMS_AB_FOLDER_PATHNAME
-- PT_TSTRING
-81b9:
-- PR_EMS_AB_GROUP_BY_ATTR_3
-- PT_TSTRING
-"8136":
-- PR_EMS_AB_SESSION_DISCONNECT_TIMER
-- PT_LONG
-"4019":
-- PR_SENDER_FLAGS
-- PT_LONG
-65e9:
-- PR_RULE_MSG_STATE
-- PT_LONG
-3a70:
-- PR_USER_X509_CERTIFICATE
-- PT_MV_BINARY
-"6698":
-- PR_REPLICA_LIST
-- PT_BINARY
-103c:
-- PR_POST_FOLDER_NAMES
-- PT_TSTRING
-665f:
-- PR_ARRIVAL_TIME
-- PT_SYSTIME
-"8005":
-- PR_EMS_AB_MANAGER
-- PT_OBJECT|PT_MV_TSTRING
-"8137":
-- PR_EMS_AB_SITE_AFFINITY
-- PT_MV_TSTRING
-3a71:
-- PR_SEND_INTERNET_ENCODING
-- PT_LONG
-103d:
-- PR_POST_REPLY_FOLDER_ENTRIES
-- PT_BINARY
-35df:
-- PR_VALID_FOLDER_MASK
-- PT_LONG
-"8006":
-- PR_EMS_AB_HOME_MDB
-- PT_OBJECT|PT_MV_TSTRING
-"8138":
-- PR_EMS_AB_SITE_PROXY_SPACE
-- PT_MV_TSTRING
-"4020":
-- PR_READ_RECEIPT_FLAGS
-- PT_LONG
-"6699":
-- PR_OVERALL_AGE_LIMIT
-- PT_LONG
-103e:
-- PR_POST_REPLY_FOLDER_NAMES
-- PT_TSTRING
-"8007":
-- PR_EMS_AB_HOME_MTA
-- PT_OBJECT|PT_MV_TSTRING
-"8139":
-- PR_EMS_AB_SPACE_LAST_COMPUTED
-- PT_SYSTIME
-"4021":
-- PR_SOFT_DELETES
-- PT_BOOLEAN
-65f0:
-- PR_RULE_MSG_CONDITION
-- PT_BINARY
-103f:
-- PR_POST_REPLY_DENIED
-- PT_BINARY
-81c0:
-- PR_EMS_AB_VIEW_CONTAINER_2
-- PT_TSTRING
-65f1:
-- PR_RULE_MSG_CONDITION_LCID
-- PT_LONG
-81c1:
-- PR_EMS_AB_VIEW_CONTAINER_3
-- PT_TSTRING
-65f2:
-- PR_RULE_MSG_VERSION
-- PT_SHORT
-81c2:
-- PR_EMS_AB_PROMO_EXPIRATION
-- PT_SYSTIME
-"8008":
-- PR_EMS_AB_IS_MEMBER_OF_DL
-- PT_OBJECT|PT_MV_TSTRING
-65f3:
-- PR_RULE_MSG_SEQUENCE
-- PT_LONG
-10ca:
-- PR_CAL_REMINDER_NEXT_TIME
-- PT_SYSTIME
-81c3:
-- PR_EMS_AB_DISABLED_GATEWAY_PROXY
-- PT_MV_TSTRING
-"8140":
-- PR_EMS_AB_T_SELECTOR
-- PT_BINARY
-"8009":
-- PR_EMS_AB_MEMBER
-- PT_OBJECT|PT_MV_TSTRING
-"1080":
-- PR_ACTION
-- PT_LONG
-65f4:
-- PR_PREVENT_MSG_CREATE
-- PT_BOOLEAN
-81c4:
-- PR_EMS_AB_COMPROMISED_KEY_LIST
-- PT_BINARY
-"8141":
-- PR_EMS_AB_T_SELECTOR_INBOUND
-- PT_BINARY
-"1081":
-- PR_ACTION_FLAG
-- PT_LONG
-65f5:
-- PR_IMAP_INTERNAL_DATE
-- PT_SYSTIME
-"8010":
-- PR_EMS_AB_HELP_DATA32
-- PT_BINARY
-81c5:
-- PR_EMS_AB_INSADMIN
-- PT_OBJECT|PT_MV_TSTRING
-"8142":
-- PR_EMS_AB_TARGET_MTAS
-- PT_MV_TSTRING
-"1082":
-- PR_ACTION_DATE
-- PT_SYSTIME
-666c:
-- PR_IN_CONFLICT
-- PT_BOOLEAN
-"8011":
-- PR_EMS_AB_TARGET_ADDRESS
-- PT_TSTRING
-81c6:
-- PR_EMS_AB_OVERRIDE_NNTP_CONTENT_FORMAT
-- PT_BOOLEAN
-"8143":
-- PR_EMS_AB_TELETEX_TERMINAL_IDENTIFIER
-- PT_MV_BINARY
-3f00:
-- PR_CONTROL_FLAGS
-- PT_LONG
-810a:
-- PR_EMS_AB_PERIOD_REP_SYNC_TIMES
-- PT_BINARY
-"8012":
-- PR_EMS_AB_TELEPHONE_NUMBER
-- PT_MV_TSTRING
-81c7:
-- PR_EMS_AB_OBJ_VIEW_CONTAINERS
-- PT_OBJECT|PT_MV_TSTRING
-"8144":
-- PR_EMS_AB_TEMP_ASSOC_THRESHOLD
-- PT_LONG
-3f01:
-- PR_CONTROL_STRUCTURE
-- PT_BINARY
-810b:
-- PR_EMS_AB_PERIOD_REPL_STAGGER
-- PT_LONG
-"8013":
-- PR_EMS_AB_NT_SECURITY_DESCRIPTOR
-- PT_BINARY
-"8145":
-- PR_EMS_AB_TOMBSTONE_LIFETIME
-- PT_LONG
-3f02:
-- PR_CONTROL_TYPE
-- PT_LONG
-810c:
-- PR_EMS_AB_POSTAL_ADDRESS
-- PT_MV_BINARY
-"8014":
-- PR_EMS_AB_HOME_MDB_BL
-- PT_OBJECT|PT_MV_TSTRING
-"8146":
-- PR_EMS_AB_TRACKING_LOG_PATH_NAME
-- PT_TSTRING
-3f03:
-- PR_DELTAX
-- PT_LONG
-810d:
-- PR_EMS_AB_PREFERRED_DELIVERY_METHOD
-- PT_MV_LONG
-"8015":
-- PR_EMS_AB_PUBLIC_DELEGATES
-- PT_OBJECT|PT_MV_TSTRING
-"8147":
-- PR_EMS_AB_TRANS_RETRY_MINS
-- PT_LONG
-3f04:
-- PR_DELTAY
-- PT_LONG
-810e:
-- PR_EMS_AB_PRMD
-- PT_TSTRING
-3a4a:
-- PR_CUSTOMER_ID
-- PT_TSTRING
-"8016":
-- PR_EMS_AB_CERTIFICATE_REVOCATION_LIST
-- PT_BINARY
-"8148":
-- PR_EMS_AB_TRANS_TIMEOUT_MINS
-- PT_LONG
-"4030":
-- PR_SENDER_SIMPLE_DISP_NAME
-- PT_UNICODE
-3f05:
-- PR_XPOS
-- PT_LONG
-810f:
-- PR_EMS_AB_PROXY_GENERATOR_DLL
-- PT_TSTRING
-330a:
-- PR_FORM_MESSAGE_BEHAVIOR
-- PT_LONG
-3a4b:
-- PR_TTYTDD_PHONE_NUMBER
-- PT_TSTRING
-"8017":
-- PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE
-- PT_BINARY
-"8149":
-- PR_EMS_AB_TRANSFER_RETRY_INTERVAL
-- PT_LONG
-"4031":
-- PR_SENT_REPRESENTING_SIMPLE_DISP_NAME
-- PT_UNICODE
-3f06:
-- PR_YPOS
-- PT_LONG
-3a4c:
-- PR_FTP_SITE
-- PT_TSTRING
-"8018":
-- PR_EMS_AB_ADDRESS_SYNTAX
-- PT_BINARY
-3f07:
-- PR_CONTROL_ID
-- PT_BINARY
-80a0:
-- PR_EMS_AB_DXA_TYPES
-- PT_LONG
-3a4d:
-- PR_GENDER
-- PT_SHORT
-3f08:
-- PR_INITIAL_DETAILS_PANE
-- PT_LONG
-80a1:
-- PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST
-- PT_OBJECT|PT_MV_TSTRING
-"8150":
-- PR_EMS_AB_TURN_REQUEST_THRESHOLD
-- PT_LONG
-3a4e:
-- PR_MANAGER_NAME
-- PT_TSTRING
-66fe:
-- PR_OWNER_NAME
-- PT_STRING8
-80a2:
-- PR_EMS_AB_ENCAPSULATION_METHOD
-- PT_LONG
-"8151":
-- PR_EMS_AB_TWO_WAY_ALTERNATE_FACILITY
-- PT_BOOLEAN
-"1090":
-- PR_FLAG_STATUS
-- PT_LONG
-667b:
-- PR_PROFILE_MOAB
-- PT_TSTRING
-80a3:
-- PR_EMS_AB_ENCRYPT
-- PT_BOOLEAN
-"8152":
-- PR_EMS_AB_UNAUTH_ORIG_BL
-- PT_OBJECT|PT_MV_TSTRING
-3a4f:
-- PR_NICKNAME
-- PT_TSTRING
-"3900":
-- PR_DISPLAY_TYPE
-- PT_LONG
-"1091":
-- PR_FLAG_COMPLETE
-- PT_SYSTIME
-66ff:
-- PR_ASSIGNED_ACCESS
-- PT_LONG
-667c:
-- PR_PROFILE_MOAB_GUID
-- PT_TSTRING
-80a4:
-- PR_EMS_AB_EXPAND_DLS_LOCALLY
-- PT_BOOLEAN
-"8153":
-- PR_EMS_AB_USER_PASSWORD
-- PT_MV_BINARY
-811a:
-- PR_EMS_AB_REMOTE_BRIDGE_HEAD
-- PT_TSTRING
-667d:
-- PR_PROFILE_MOAB_SEQ
-- PT_LONG
-80a5:
-- PR_EMS_AB_EXPORT_CONTAINERS
-- PT_OBJECT|PT_MV_TSTRING
-"8154":
-- PR_EMS_AB_USN_CREATED
-- PT_LONG
-"3902":
-- PR_TEMPLATEID
-- PT_BINARY
-811b:
-- PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS
-- PT_TSTRING
-80a6:
-- PR_EMS_AB_EXPORT_CUSTOM_RECIPIENTS
-- PT_BOOLEAN
-"8023":
-- PR_EMS_AB_BUSINESS_ROLES
-- PT_BINARY
-"8155":
-- PR_EMS_AB_USN_DSA_LAST_OBJ_REMOVED
-- PT_LONG
-811c:
-- PR_EMS_AB_REMOTE_OUT_BH_SERVER
-- PT_OBJECT|PT_MV_TSTRING
-"4038":
-- PR_CREATOR_SIMPLE_DISP_NAME
-- PT_UNICODE
-667f:
-- PR_IMPLIED_RESTRICTIONS
-- PT_MV_BINARY
-80a7:
-- PR_EMS_AB_EXTENDED_CHARS_ALLOWED
-- PT_BOOLEAN
-"8024":
-- PR_EMS_AB_OWNER_BL
-- PT_OBJECT|PT_MV_TSTRING
-"8156":
-- PR_EMS_AB_USN_LAST_OBJ_REM
-- PT_LONG
-"3904":
-- PR_PRIMARY_CAPABILITY
-- PT_BINARY
-7c0a:
-- PR_STORE_SLOWLINK
-- PT_BOOLEAN
-811d:
-- PR_EMS_AB_REMOTE_SITE
-- PT_OBJECT|PT_MV_TSTRING
-80a8:
-- PR_EMS_AB_EXTENSION_DATA
-- PT_MV_BINARY
-"8025":
-- PR_EMS_AB_CROSS_CERTIFICATE_PAIR
-- PT_MV_BINARY
-"8157":
-- PR_EMS_AB_USN_SOURCE
-- PT_LONG
-811e:
-- PR_EMS_AB_REPLICATION_SENSITIVITY
-- PT_LONG
-80a9:
-- PR_EMS_AB_EXTENSION_NAME
-- PT_MV_TSTRING
-"8026":
-- PR_EMS_AB_AUTHORITY_REVOCATION_LIST
-- PT_MV_BINARY
-"8158":
-- PR_EMS_AB_X121_ADDRESS
-- PT_MV_TSTRING
-811f:
-- PR_EMS_AB_REPLICATION_STAGGER
-- PT_LONG
-3a5a:
-- PR_HOME_ADDRESS_COUNTRY
-- PT_TSTRING
-"8027":
-- PR_EMS_AB_ASSOC_NT_ACCOUNT
-- PT_BINARY
-"8159":
-- PR_EMS_AB_X25_CALL_USER_DATA_INCOMING
-- PT_BINARY
-3a5b:
-- PR_HOME_ADDRESS_POSTAL_CODE
-- PT_TSTRING
-"8028":
-- PR_EMS_AB_EXPIRATION_TIME
-- PT_SYSTIME
-3a5c:
-- PR_HOME_ADDRESS_STATE_OR_PROVINCE
-- PT_TSTRING
-"8029":
-- PR_EMS_AB_USN_CHANGED
-- PT_LONG
-400a:
-- PR_START_SUB_FLD
-- PT_LONG
-80b0:
-- PR_EMS_AB_GATEWAY_LOCAL_CRED
-- PT_TSTRING
-3a5d:
-- PR_HOME_ADDRESS_STREET
-- PT_TSTRING
-81ab:
-- PR_EMS_AB_HTTP_SERVERS
-- PT_MV_TSTRING
-400b:
-- PR_END_FOLDER
-- PT_LONG
-80b1:
-- PR_EMS_AB_GATEWAY_LOCAL_DESIG
-- PT_TSTRING
-"8160":
-- PR_EMS_AB_X400_ATTACHMENT_TYPE
-- PT_BINARY
-3a5e:
-- PR_HOME_ADDRESS_POST_OFFICE_BOX
-- PT_TSTRING
-81ac:
-- PR_EMS_AB_MODERATED
-- PT_BOOLEAN
-400c:
-- PR_START_MESSAGE
-- PT_LONG
-80b2:
-- PR_EMS_AB_GATEWAY_PROXY
-- PT_MV_TSTRING
-"8161":
-- PR_EMS_AB_X400_SELECTOR_SYNTAX
-- PT_LONG
-3a5f:
-- PR_OTHER_ADDRESS_CITY
-- PT_TSTRING
-81ad:
-- PR_EMS_AB_RAS_ACCOUNT
-- PT_TSTRING
-400d:
-- PR_END_MESSAGE
-- PT_LONG
-668b:
-- PR_NNTP_CONTROL_FOLDER_ENTRYID
-- PT_BINARY
-80b3:
-- PR_EMS_AB_GATEWAY_ROUTING_TREE
-- PT_BINARY
-"8030":
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_4
-- PT_TSTRING
-"8162":
-- PR_EMS_AB_X500_ACCESS_CONTROL_LIST
-- PT_BINARY
-81ae:
-- PR_EMS_AB_RAS_PASSWORD
-- PT_BINARY
-812a:
-- PR_EMS_AB_RUNS_ON
-- PT_OBJECT|PT_MV_TSTRING
-400e:
-- PR_END_ATTACH
-- PT_LONG
-668c:
-- PR_NEWSGROUP_ROOT_FOLDER_ENTRYID
-- PT_BINARY
-80b4:
-- PR_EMS_AB_GWART_LAST_MODIFIED
-- PT_SYSTIME
-"8031":
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_5
-- PT_TSTRING
-"8163":
-- PR_EMS_AB_XMIT_TIMEOUT_NON_URGENT
-- PT_LONG
-81af:
-- PR_EMS_AB_INCOMING_PASSWORD
-- PT_BINARY
-812b:
-- PR_EMS_AB_S_SELECTOR
-- PT_BINARY
-400f:
-- PR_EC_WARNING
-- PT_LONG
-668d:
-- PR_INBOUND_NEWSFEED_DN
-- PT_TSTRING
-80b5:
-- PR_EMS_AB_HAS_FULL_REPLICA_NCS
-- PT_OBJECT|PT_MV_TSTRING
-"8032":
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_6
-- PT_TSTRING
-"8164":
-- PR_EMS_AB_XMIT_TIMEOUT_NORMAL
-- PT_LONG
-812c:
-- PR_EMS_AB_S_SELECTOR_INBOUND
-- PT_BINARY
-668e:
-- PR_OUTBOUND_NEWSFEED_DN
-- PT_TSTRING
-80b6:
-- PR_EMS_AB_HAS_MASTER_NCS
-- PT_OBJECT|PT_MV_TSTRING
-"8033":
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_7
-- PT_TSTRING
-"8165":
-- PR_EMS_AB_XMIT_TIMEOUT_URGENT
-- PT_LONG
-812d:
-- PR_EMS_AB_SEARCH_FLAGS
-- PT_LONG
-668f:
-- PR_DELETED_ON
-- PT_SYSTIME
-80b7:
-- PR_EMS_AB_HEURISTICS
-- PT_LONG
-"8034":
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_8
-- PT_TSTRING
-"8166":
-- PR_EMS_AB_SITE_FOLDER_GUID
-- PT_BINARY
-812e:
-- PR_EMS_AB_SEARCH_GUIDE
-- PT_MV_BINARY
-80b8:
-- PR_EMS_AB_HIDE_DL_MEMBERSHIP
-- PT_BOOLEAN
-"8035":
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_9
-- PT_TSTRING
-"8167":
-- PR_EMS_AB_SITE_FOLDER_SERVER
-- PT_OBJECT|PT_MV_TSTRING
-812f:
-- PR_EMS_AB_SEE_ALSO
-- PT_OBJECT|PT_MV_TSTRING
-80b9:
-- PR_EMS_AB_HIDE_FROM_ADDRESS_BOOK
-- PT_BOOLEAN
-"8036":
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_10
-- PT_TSTRING
-"8168":
-- PR_EMS_AB_REPLICATION_MAIL_MSG_SIZE
-- PT_LONG
-"8037":
-- PR_EMS_AB_SECURITY_PROTOCOL
-- PT_MV_BINARY
-"8169":
-- PR_EMS_AB_MAXIMUM_OBJECT_ID
-- PT_BINARY
-"8038":
-- PR_EMS_AB_PF_CONTACTS
-- PT_OBJECT|PT_MV_TSTRING
-401a:
-- PR_SENT_REPRESENTING_FLAGS
-- PT_LONG
-65ea:
-- PR_RULE_MSG_USER_FLAGS
-- PT_LONG
-80c0:
-- PR_EMS_AB_IS_DELETED
-- PT_BOOLEAN
-81ba:
-- PR_EMS_AB_GROUP_BY_ATTR_4
-- PT_TSTRING
-401b:
-- PR_RCVD_BY_FLAGS
-- PT_LONG
-65eb:
-- PR_RULE_MSG_PROVIDER
-- PT_UNICODE
-80c1:
-- PR_EMS_AB_IS_SINGLE_VALUED
-- PT_BOOLEAN
-"8170":
-- PR_EMS_AB_NETWORK_ADDRESS
-- PT_MV_TSTRING
-401c:
-- PR_RCVD_REPRESENTING_FLAGS
-- PT_LONG
-65ec:
-- PR_RULE_MSG_NAME
-- PT_UNICODE
-669a:
-- PR_INTERNET_CHARSET
-- PT_TSTRING
-80c2:
-- PR_EMS_AB_KCC_STATUS
-- PT_MV_BINARY
-"8171":
-- PR_EMS_AB_LDAP_DISPLAY_NAME
-- PT_MV_TSTRING
-401d:
-- PR_ORIGINAL_SENDER_FLAGS
-- PT_LONG
-65ed:
-- PR_RULE_MSG_LEVEL
-- PT_LONG
-669b:
-- PR_DELETED_MESSAGE_SIZE
-- PT_I8
-80c3:
-- PR_EMS_AB_KNOWLEDGE_INFORMATION
-- PT_MV_TSTRING
-"8040":
-- PR_EMS_AB_ENCRYPT_ALG_LIST_NA
-- PT_MV_TSTRING
-401e:
-- PR_ORIGINAL_SENT_REPRESENTING_FLAGS
-- PT_LONG
-65ee:
-- PR_RULE_MSG_PROVIDER_DATA
-- PT_BINARY
-669c:
-- PR_DELETED_NORMAL_MESSAGE_SIZE
-- PT_I8
-80c4:
-- PR_EMS_AB_LINE_WRAP
-- PT_LONG
-"8041":
-- PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER
-- PT_MV_TSTRING
-"8173":
-- PR_EMS_AB_SCHEMA_FLAGS
-- PT_LONG
-81be:
-- PR_EMS_AB_VIEW_SITE
-- PT_TSTRING
-813a:
-- PR_EMS_AB_STREET_ADDRESS
-- PT_TSTRING
-401f:
-- PR_REPORT_FLAGS
-- PT_LONG
-669d:
-- PR_DELETED_ASSOC_MESSAGE_SIZE
-- PT_I8
-80c5:
-- PR_EMS_AB_LINK_ID
-- PT_LONG
-"8042":
-- PR_EMS_AB_IMPORTED_FROM
-- PT_TSTRING
-"8174":
-- PR_EMS_AB_BRIDGEHEAD_SERVERS
-- PT_OBJECT|PT_MV_TSTRING
-81bf:
-- PR_EMS_AB_VIEW_CONTAINER_1
-- PT_TSTRING
-813b:
-- PR_EMS_AB_SUB_REFS
-- PT_OBJECT|PT_MV_TSTRING
-65ef:
-- PR_RULE_MSG_ACTIONS
-- PT_BINARY
-669e:
-- PR_SECURE_IN_SITE
-- PT_BOOLEAN
-80c6:
-- PR_EMS_AB_LOCAL_BRIDGE_HEAD
-- PT_TSTRING
-"8043":
-- PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA
-- PT_TSTRING
-"8175":
-- PR_EMS_AB_WWW_HOME_PAGE
-- PT_TSTRING
-3e00:
-- PR_IDENTITY_DISPLAY
-- PT_TSTRING
-800a:
-- PR_EMS_AB_AUTOREPLY_MESSAGE
-- PT_TSTRING
-813c:
-- PR_EMS_AB_SUBMISSION_CONT_LENGTH
-- PT_LONG
-80c7:
-- PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS
-- PT_TSTRING
-"8044":
-- PR_EMS_AB_ACCESS_CATEGORY
-- PT_LONG
-"8176":
-- PR_EMS_AB_NNTP_CONTENT_FORMAT
-- PT_TSTRING
-3e01:
-- PR_IDENTITY_ENTRYID
-- PT_BINARY
-800b:
-- PR_EMS_AB_AUTOREPLY
-- PT_BOOLEAN
-813d:
-- PR_EMS_AB_SUPPORTED_APPLICATION_CONTEXT
-- PT_MV_BINARY
-"4059":
-- PR_CREATOR_FLAGS
-- PT_LONG
-80c8:
-- PR_EMS_AB_LOCAL_INITIAL_TURN
-- PT_BOOLEAN
-"8045":
-- PR_EMS_AB_ACTIVATION_SCHEDULE
-- PT_BINARY
-"8177":
-- PR_EMS_AB_POP_CONTENT_FORMAT
-- PT_TSTRING
-3e02:
-- PR_RESOURCE_METHODS
-- PT_LONG
-800c:
-- PR_EMS_AB_OWNER
-- PT_OBJECT|PT_MV_TSTRING
-813e:
-- PR_EMS_AB_SUPPORTING_STACK
-- PT_OBJECT|PT_MV_TSTRING
-80c9:
-- PR_EMS_AB_LOCAL_SCOPE
-- PT_OBJECT|PT_MV_TSTRING
-"8046":
-- PR_EMS_AB_ACTIVATION_STYLE
-- PT_LONG
-"8178":
-- PR_EMS_AB_LANGUAGE
-- PT_LONG
-3e03:
-- PR_RESOURCE_TYPE
-- PT_LONG
-800d:
-- PR_EMS_AB_KM_SERVER
-- PT_OBJECT|PT_MV_TSTRING
-813f:
-- PR_EMS_AB_SUPPORTING_STACK_BL
-- PT_OBJECT|PT_MV_TSTRING
-"8047":
-- PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE_MSDOS
-- PT_BINARY
-"8179":
-- PR_EMS_AB_POP_CHARACTER_SET
-- PT_TSTRING
-"4061":
-- PR_ORIGINATOR_SEARCH_KEY
-- PT_BINARY
-3e04:
-- PR_STATUS_CODE
-- PT_LONG
-800e:
-- PR_EMS_AB_REPORTS
-- PT_OBJECT
-"8048":
-- PR_EMS_AB_ADDRESS_TYPE
-- PT_TSTRING
-3e05:
-- PR_IDENTITY_SEARCH_KEY
-- PT_BINARY
-800f:
-- PR_EMS_AB_PROXY_ADDRESSES
-- PT_MV_TSTRING
-80d0:
-- PR_EMS_AB_MDB_MSG_TIME_OUT_PERIOD
-- PT_LONG
-"8049":
-- PR_EMS_AB_ADMD
-- PT_TSTRING
-3e06:
-- PR_OWN_STORE_ENTRYID
-- PT_BINARY
-80d1:
-- PR_EMS_AB_MDB_OVER_QUOTA_LIMIT
-- PT_LONG
-"8180":
-- PR_EMS_AB_CONNECTION_LIST_FILTER
-- PT_BINARY
-"4064":
-- PR_REPORT_DESTINATION_SEARCH_KEY
-- PT_BINARY
-3e07:
-- PR_RESOURCE_PATH
-- PT_TSTRING
-80d2:
-- PR_EMS_AB_MDB_STORAGE_QUOTA
-- PT_LONG
-"8181":
-- PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES
-- PT_MV_TSTRING
-"4065":
-- PR_ER_FLAG
-- PT_LONG
-3e08:
-- PR_STATUS_STRING
-- PT_TSTRING
-402c:
-- PR_MESSAGE_SUBMISSION_ID_FROM_CLIENT
-- PT_BINARY
-80d3:
-- PR_EMS_AB_MDB_UNREAD_LIMIT
-- PT_LONG
-"8050":
-- PR_EMS_AB_ANCESTOR_ID
-- PT_BINARY
-"8182":
-- PR_EMS_AB_CHARACTER_SET_LIST
-- PT_MV_TSTRING
-3e09:
-- PR_X400_DEFERRED_DELIVERY_CANCEL
-- PT_BOOLEAN
-"8051":
-- PR_EMS_AB_ASSOC_REMOTE_DXA
-- PT_OBJECT|PT_MV_TSTRING
-"8183":
-- PR_EMS_AB_USE_SITE_VALUES
-- PT_BOOLEAN
-814a:
-- PR_EMS_AB_TRANSFER_TIMEOUT_NON_URGENT
-- PT_LONG
-80d4:
-- PR_EMS_AB_MDB_USE_DEFAULTS
-- PT_BOOLEAN
-"8052":
-- PR_EMS_AB_ASSOCIATION_LIFETIME
-- PT_LONG
-"8184":
-- PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES
-- PT_MV_TSTRING
-814b:
-- PR_EMS_AB_TRANSFER_TIMEOUT_NORMAL
-- PT_LONG
-"4068":
-- PR_INTERNET_SUBJECT
-- PT_BINARY
-80d5:
-- PR_EMS_AB_MESSAGE_TRACKING_ENABLED
-- PT_BOOLEAN
-"8053":
-- PR_EMS_AB_AUTH_ORIG_BL
-- PT_OBJECT|PT_MV_TSTRING
-"8185":
-- PR_EMS_AB_CHARACTER_SET
-- PT_TSTRING
-814c:
-- PR_EMS_AB_TRANSFER_TIMEOUT_URGENT
-- PT_LONG
-"4069":
-- PR_INTERNET_SENT_REPRESENTING_NAME
-- PT_BINARY
-80d6:
-- PR_EMS_AB_MONITOR_CLOCK
-- PT_BOOLEAN
-"8054":
-- PR_EMS_AB_AUTHORIZED_DOMAIN
-- PT_TSTRING
-"8186":
-- PR_EMS_AB_CONTENT_TYPE
-- PT_LONG
-814d:
-- PR_EMS_AB_TRANSLATION_TABLE_USED
-- PT_LONG
-80d7:
-- PR_EMS_AB_MONITOR_SERVERS
-- PT_BOOLEAN
-"8187":
-- PR_EMS_AB_ANONYMOUS_ACCESS
-- PT_BOOLEAN
-814e:
-- PR_EMS_AB_TRANSPORT_EXPEDITED_DATA
-- PT_BOOLEAN
-8c18:
-- PR_EMS_AB_VIEW_FLAGS
-- PT_LONG
-80d8:
-- PR_EMS_AB_MONITOR_SERVICES
-- PT_BOOLEAN
-"8055":
-- PR_EMS_AB_AUTHORIZED_PASSWORD
-- PT_BINARY
-"8188":
-- PR_EMS_AB_CONTROL_MSG_FOLDER_ID
-- PT_BINARY
-814f:
-- PR_EMS_AB_TRUST_LEVEL
-- PT_LONG
-8c19:
-- PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR
-- PT_TSTRING
-80d9:
-- PR_EMS_AB_MONITORED_CONFIGURATIONS
-- PT_OBJECT|PT_MV_TSTRING
-"8056":
-- PR_EMS_AB_AUTHORIZED_USER
-- PT_TSTRING
-"8189":
-- PR_EMS_AB_USENET_SITE_NAME
-- PT_TSTRING
-3fc9:
-- PR_LAST_CONFLICT
-- PT_BINARY
-"8057":
-- PR_EMS_AB_BUSINESS_CATEGORY
-- PT_MV_TSTRING
-"8058":
-- PR_EMS_AB_CAN_CREATE_PF
-- PT_OBJECT|PT_MV_TSTRING
-8c20:
-- PR_EMS_AB_INBOUND_ACCEPT_ALL
-- PT_BOOLEAN
-80e0:
-- PR_EMS_AB_MONITORING_CACHED_VIA_MAIL
-- PT_OBJECT|PT_MV_TSTRING
-3fd0:
-- PR_REPL_HEADER
-- PT_BINARY
-"8059":
-- PR_EMS_AB_CAN_CREATE_PF_BL
-- PT_OBJECT|PT_MV_TSTRING
-8c21:
-- PR_EMS_AB_ENABLED
-- PT_BOOLEAN
-80e1:
-- PR_EMS_AB_MONITORING_CACHED_VIA_RPC
-- PT_OBJECT|PT_MV_TSTRING
-"8190":
-- PR_EMS_AB_INCOMING_MSG_SIZE_LIMIT
-- PT_LONG
-8c22:
-- PR_EMS_AB_PRESERVE_INTERNET_CONTENT
-- PT_BOOLEAN
-80e2:
-- PR_EMS_AB_MONITORING_ESCALATION_PROCEDURE
-- PT_MV_BINARY
-"8191":
-- PR_EMS_AB_SEND_TNEF
-- PT_BOOLEAN
-3fd1:
-- PR_REPL_STATUS
-- PT_BINARY
-80aa:
-- PR_EMS_AB_EXTENSION_NAME_INHERITED
-- PT_MV_TSTRING
-403d:
-- PR_ORG_ADDR_TYPE
-- PT_UNICODE
-8c23:
-- PR_EMS_AB_DISABLE_DEFERRED_COMMIT
-- PT_BOOLEAN
-80e3:
-- PR_EMS_AB_MONITORING_HOTSITE_POLL_INTERVAL
-- PT_LONG
-"8060":
-- PR_EMS_AB_CAN_PRESERVE_DNS
-- PT_BOOLEAN
-"8192":
-- PR_EMS_AB_AUTHORIZED_PASSWORD_CONFIRM
-- PT_BINARY
-3fd2:
-- PR_REPL_CHANGES
-- PT_BINARY
-80ab:
-- PR_EMS_AB_FACSIMILE_TELEPHONE_NUMBER
-- PT_MV_BINARY
-403e:
-- PR_ORG_EMAIL_ADDR
-- PT_UNICODE
-8c24:
-- PR_EMS_AB_CLIENT_ACCESS_ENABLED
-- PT_BOOLEAN
-80e4:
-- PR_EMS_AB_MONITORING_HOTSITE_POLL_UNITS
-- PT_LONG
-"8061":
-- PR_EMS_AB_CLOCK_ALERT_OFFSET
-- PT_LONG
-"8193":
-- PR_EMS_AB_INBOUND_NEWSFEED
-- PT_TSTRING
-3fd3:
-- PR_REPL_RGM
-- PT_BINARY
-80ac:
-- PR_EMS_AB_FILE_VERSION
-- PT_BINARY
-815a:
-- PR_EMS_AB_X25_CALL_USER_DATA_OUTGOING
-- PT_BINARY
-8c25:
-- PR_EMS_AB_REQUIRE_SSL
-- PT_BOOLEAN
-80e5:
-- PR_EMS_AB_MONITORING_MAIL_UPDATE_INTERVAL
-- PT_LONG
-"8062":
-- PR_EMS_AB_CLOCK_ALERT_REPAIR
-- PT_BOOLEAN
-"8194":
-- PR_EMS_AB_NEWSFEED_TYPE
-- PT_LONG
-3fd4:
-- PR_RMI
-- PT_BINARY
-80ad:
-- PR_EMS_AB_FILTER_LOCAL_ADDRESSES
-- PT_BOOLEAN
-815b:
-- PR_EMS_AB_X25_FACILITIES_DATA_INCOMING
-- PT_BINARY
-"8063":
-- PR_EMS_AB_CLOCK_WARNING_OFFSET
-- PT_LONG
-80ae:
-- PR_EMS_AB_FOLDERS_CONTAINER
-- PT_OBJECT|PT_MV_TSTRING
-80e6:
-- PR_EMS_AB_MONITORING_MAIL_UPDATE_UNITS
-- PT_LONG
-815c:
-- PR_EMS_AB_X25_FACILITIES_DATA_OUTGOING
-- PT_BINARY
-"8195":
-- PR_EMS_AB_OUTBOUND_NEWSFEED
-- PT_TSTRING
-8c26:
-- PR_EMS_AB_ANONYMOUS_ACCOUNT
-- PT_TSTRING
-3fd5:
-- PR_INTERNAL_POST_REPLY
-- PT_BINARY
-"8064":
-- PR_EMS_AB_CLOCK_WARNING_REPAIR
-- PT_BOOLEAN
-80af:
-- PR_EMS_AB_GARBAGE_COLL_PERIOD
-- PT_LONG
-80e7:
-- PR_EMS_AB_MONITORING_NORMAL_POLL_INTERVAL
-- PT_LONG
-815d:
-- PR_EMS_AB_X25_LEASED_LINE_PORT
-- PT_BINARY
-"8196":
-- PR_EMS_AB_NEWSGROUP_LIST
-- PT_BINARY
-8c27:
-- PR_EMS_AB_CERTIFICATE_CHAIN_V3
-- PT_BINARY
-3fd6:
-- PR_NTSD_MODIFICATION_TIME
-- PT_SYSTIME
-"8065":
-- PR_EMS_AB_COMPUTER_NAME
-- PT_TSTRING
-80e8:
-- PR_EMS_AB_MONITORING_NORMAL_POLL_UNITS
-- PT_LONG
-815e:
-- PR_EMS_AB_X25_LEASED_OR_SWITCHED
-- PT_BOOLEAN
-"8197":
-- PR_EMS_AB_NNTP_DISTRIBUTIONS
-- PT_MV_TSTRING
-8c28:
-- PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V3
-- PT_BINARY
-802d:
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_1
-- PT_TSTRING
-3fd8:
-- PR_PREVIEW_UNREAD
-- PT_TSTRING
-"8066":
-- PR_EMS_AB_CONNECTED_DOMAINS
-- PT_MV_TSTRING
-80e9:
-- PR_EMS_AB_MONITORING_RECIPIENTS
-- PT_OBJECT|PT_MV_TSTRING
-815f:
-- PR_EMS_AB_X25_REMOTE_MTA_PHONE
-- PT_TSTRING
-"8198":
-- PR_EMS_AB_NEWSGROUP
-- PT_TSTRING
-8c29:
-- PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V1
-- PT_BINARY
-802e:
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_2
-- PT_TSTRING
-3fd9:
-- PR_PREVIEW
-- PT_TSTRING
-"8067":
-- PR_EMS_AB_CONTAINER_INFO
-- PT_LONG
-"8199":
-- PR_EMS_AB_MODERATOR
-- PT_TSTRING
-802f:
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_3
-- PT_TSTRING
-"8068":
-- PR_EMS_AB_COST
-- PT_LONG
-"8069":
-- PR_EMS_AB_COUNTRY_NAME
-- PT_TSTRING
-80f0:
-- PR_EMS_AB_MTA_LOCAL_DESIG
-- PT_TSTRING
-8c30:
-- PR_EMS_AB_CROSS_CERTIFICATE_CRL
-- PT_MV_BINARY
-"3000":
-- PR_ROWID
-- PT_LONG
-80f1:
-- PR_EMS_AB_N_ADDRESS
-- PT_BINARY
-8c31:
-- PR_EMS_AB_SEND_EMAIL_MESSAGE
-- PT_BOOLEAN
-"3001":
-- PR_DISPLAY_NAME
-- PT_TSTRING
-80ba:
-- PR_EMS_AB_IMPORT_CONTAINER
-- PT_OBJECT|PT_MV_TSTRING
-80f2:
-- PR_EMS_AB_N_ADDRESS_TYPE
-- PT_LONG
-8c32:
-- PR_EMS_AB_ENABLE_COMPATIBILITY
-- PT_BOOLEAN
-"3002":
-- PR_ADDRTYPE
-- PT_TSTRING
-3fe2:
-- PR_FOLDER_DESIGN_FLAGS
-- PT_LONG
-"8070":
-- PR_EMS_AB_DESTINATION_INDICATOR
-- PT_MV_TSTRING
-80bb:
-- PR_EMS_AB_IMPORT_SENSITIVITY
-- PT_LONG
-80f3:
-- PR_EMS_AB_NT_MACHINE_NAME
-- PT_TSTRING
-8c33:
-- PR_EMS_AB_SMIME_ALG_LIST_NA
-- PT_MV_TSTRING
-3fe3:
-- PR_DELEGATED_BY_RULE
-- PT_BOOLEAN
-"8071":
-- PR_EMS_AB_DIAGNOSTIC_REG_KEY
-- PT_TSTRING
-80bc:
-- PR_EMS_AB_INBOUND_SITES
-- PT_OBJECT|PT_MV_TSTRING
-80f4:
-- PR_EMS_AB_NUM_OF_OPEN_RETRIES
-- PT_LONG
-8c34:
-- PR_EMS_AB_SMIME_ALG_LIST_OTHER
-- PT_MV_TSTRING
-"3003":
-- PR_EMAIL_ADDRESS
-- PT_TSTRING
-3fe4:
-- PR_DESIGN_IN_PROGRESS
-- PT_BOOLEAN
-"8072":
-- PR_EMS_AB_DL_MEM_REJECT_PERMS_BL
-- PT_OBJECT|PT_MV_TSTRING
-80bd:
-- PR_EMS_AB_INSTANCE_TYPE
-- PT_LONG
-80f5:
-- PR_EMS_AB_NUM_OF_TRANSFER_RETRIES
-- PT_LONG
-8c35:
-- PR_EMS_AB_SMIME_ALG_SELECTED_NA
-- PT_TSTRING
-"3004":
-- PR_COMMENT
-- PT_TSTRING
-803a:
-- PR_EMS_AB_HELP_DATA16
-- PT_BINARY
-3fe5:
-- PR_SECURE_ORIGINATION
-- PT_BOOLEAN
-"8073":
-- PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL
-- PT_OBJECT|PT_MV_TSTRING
-80be:
-- PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER
-- PT_MV_TSTRING
-80f6:
-- PR_EMS_AB_OBJECT_CLASS_CATEGORY
-- PT_LONG
-8c36:
-- PR_EMS_AB_SMIME_ALG_SELECTED_OTHER
-- PT_TSTRING
-"3005":
-- PR_DEPTH
-- PT_LONG
-803b:
-- PR_EMS_AB_HELP_FILE_NAME
-- PT_TSTRING
-3fe6:
-- PR_PUBLISH_IN_ADDRESS_BOOK
-- PT_BOOLEAN
-"8074":
-- PR_EMS_AB_DL_MEMBER_RULE
-- PT_MV_BINARY
-80bf:
-- PR_EMS_AB_INVOCATION_ID
-- PT_BINARY
-80f7:
-- PR_EMS_AB_OBJECT_VERSION
-- PT_LONG
-8c37:
-- PR_EMS_AB_DEFAULT_MESSAGE_FORMAT
-- PT_BOOLEAN
-"3006":
-- PR_PROVIDER_DISPLAY
-- PT_TSTRING
-803c:
-- PR_EMS_AB_OBJ_DIST_NAME
-- PT_OBJECT|PT_MV_TSTRING
-3fe7:
-- PR_RESOLVE_METHOD
-- PT_LONG
-3d00:
-- PR_STORE_PROVIDERS
-- PT_BINARY
-"8075":
-- PR_EMS_AB_DOMAIN_DEF_ALT_RECIP
-- PT_OBJECT|PT_MV_TSTRING
-80f8:
-- PR_EMS_AB_OFF_LINE_AB_CONTAINERS
-- PT_OBJECT|PT_MV_TSTRING
-8c38:
-- PR_EMS_AB_TYPE
-- PT_TSTRING
-"3007":
-- PR_CREATION_TIME
-- PT_SYSTIME
-803d:
-- PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER
-- PT_TSTRING
-3fe8:
-- PR_ADDRESS_BOOK_DISPLAY_NAME
-- PT_TSTRING
-3d01:
-- PR_AB_PROVIDERS
-- PT_BINARY
-"8076":
-- PR_EMS_AB_DOMAIN_NAME
-- PT_TSTRING
-80f9:
-- PR_EMS_AB_OFF_LINE_AB_SCHEDULE
-- PT_BINARY
-"3008":
-- PR_LAST_MODIFICATION_TIME
-- PT_SYSTIME
-803e:
-- PR_EMS_AB_AUTOREPLY_SUBJECT
-- PT_TSTRING
-3fe9:
-- PR_EFORMS_LOCALE_ID
-- PT_LONG
-3d02:
-- PR_TRANSPORT_PROVIDERS
-- PT_BINARY
-"8077":
-- PR_EMS_AB_DSA_SIGNATURE
-- PT_BINARY
-"3009":
-- PR_RESOURCE_FLAGS
-- PT_LONG
-803f:
-- PR_EMS_AB_HOME_PUBLIC_SERVER
-- PT_OBJECT|PT_MV_TSTRING
-"8078":
-- PR_EMS_AB_DXA_ADMIN_COPY
-- PT_BOOLEAN
-3d04:
-- PR_DEFAULT_PROFILE
-- PT_BOOLEAN
-"8079":
-- PR_EMS_AB_DXA_ADMIN_FORWARD
-- PT_BOOLEAN
-3ff0:
-- PR_CONFLICT_ENTRYID
-- PT_BINARY
-8c40:
-- PR_EMS_AB_VOICE_MAIL_FLAGS
-- PT_MV_BINARY
-405a:
-- PR_MODIFIER_FLAGS
-- PT_LONG
-3d05:
-- PR_AB_SEARCH_PATH
-- PT_MV_BINARY
-3ff1:
-- PR_MESSAGE_LOCALE_ID
-- PT_LONG
-8c41:
-- PR_EMS_AB_VOICE_MAIL_VOLUME
-- PT_LONG
-405b:
-- PR_ORIGINATOR_FLAGS
-- PT_LONG
-3d06:
-- PR_AB_DEFAULT_DIR
-- PT_BINARY
-3ff2:
-- PR_RULE_TRIGGER_HISTORY
-- PT_BINARY
-80ca:
-- PR_EMS_AB_LOG_FILENAME
-- PT_TSTRING
-8c42:
-- PR_EMS_AB_VOICE_MAIL_SPEED
-- PT_LONG
-405c:
-- PR_REPORT_DESTINATION_FLAGS
-- PT_LONG
-"8080":
-- PR_EMS_AB_DXA_EXCHANGE_OPTIONS
-- PT_LONG
-3d07:
-- PR_AB_DEFAULT_PAB
-- PT_BINARY
-80cb:
-- PR_EMS_AB_LOG_ROLLOVER_INTERVAL
-- PT_LONG
-8c43:
-- PR_EMS_AB_VOICE_MAIL_RECORDING_LENGTH
-- PT_MV_LONG
-405d:
-- PR_ORIGINAL_AUTHOR_FLAGS
-- PT_LONG
-"6800":
-- PR_MAILBEAT_BOUNCE_SERVER
-- PT_UNICODE
-3ff3:
-- PR_MOVE_TO_STORE_ENTRYID
-- PT_BINARY
-"8081":
-- PR_EMS_AB_DXA_EXPORT_NOW
-- PT_BOOLEAN
-3d08:
-- PR_FILTERING_HOOKS
-- PT_BINARY
-80cc:
-- PR_EMS_AB_MAINTAIN_AUTOREPLY_HISTORY
-- PT_BOOLEAN
-817a:
-- PR_EMS_AB_USN_INTERSITE
-- PT_LONG
-8c44:
-- PR_EMS_AB_DISPLAY_NAME_SUFFIX
-- PT_TSTRING
-"6801":
-- PR_MAILBEAT_REQUEST_SENT
-- PT_SYSTIME
-3ff4:
-- PR_MOVE_TO_FOLDER_ENTRYID
-- PT_BINARY
-"8082":
-- PR_EMS_AB_DXA_FLAGS
-- PT_LONG
-3d09:
-- PR_SERVICE_NAME
-- PT_TSTRING
-80cd:
-- PR_EMS_AB_MAPI_DISPLAY_TYPE
-- PT_LONG
-817b:
-- PR_EMS_AB_SUB_SITE
-- PT_TSTRING
-8c45:
-- PR_EMS_AB_ATTRIBUTE_CERTIFICATE
-- PT_MV_BINARY
-"6802":
-- PR_USENET_SITE_NAME
-- PT_UNICODE
-3ff5:
-- PR_STORAGE_QUOTA_LIMIT
-- PT_LONG
-"8083":
-- PR_EMS_AB_DXA_IMP_SEQ
-- PT_TSTRING
-804a:
-- PR_EMS_AB_ADMIN_DESCRIPTION
-- PT_TSTRING
-80ce:
-- PR_EMS_AB_MAPI_ID
-- PT_LONG
-817c:
-- PR_EMS_AB_SCHEMA_VERSION
-- PT_MV_LONG
-8c46:
-- PR_EMS_AB_DELTA_REVOCATION_LIST
-- PT_MV_BINARY
-"6803":
-- PR_MAILBEAT_REQUEST_RECEIVED
-- PT_SYSTIME
-3ff6:
-- PR_EXCESS_STORAGE_USED
-- PT_LONG
-"3700":
-- PR_ATTACHMENT_X400_PARAMETERS
-- PT_BINARY
-"8084":
-- PR_EMS_AB_DXA_IMP_SEQ_TIME
-- PT_SYSTIME
-0e00:
-- PR_CURRENT_VERSION
-- PT_I8
-804b:
-- PR_EMS_AB_ADMIN_DISPLAY_NAME
-- PT_TSTRING
-80cf:
-- PR_EMS_AB_MDB_BACKOFF_INTERVAL
-- PT_LONG
-817d:
-- PR_EMS_AB_NNTP_CHARACTER_SET
-- PT_TSTRING
-8c47:
-- PR_EMS_AB_SECURITY_POLICY
-- PT_MV_BINARY
-"6804":
-- PR_MAILBEAT_REQUEST_PROCESSED
-- PT_SYSTIME
-3ff7:
-- PR_SVR_GENERATING_QUOTA_MSG
-- PT_TSTRING
-3d10:
-- PR_SERVICE_DELETE_FILES
-- PT_MV_TSTRING
-"8085":
-- PR_EMS_AB_DXA_IMP_SEQ_USN
-- PT_LONG
-0e01:
-- PR_DELETE_AFTER_SUBMIT
-- PT_BOOLEAN
-804c:
-- PR_EMS_AB_ADMIN_EXTENSION_DLL
-- PT_TSTRING
-817e:
-- PR_EMS_AB_USE_SERVER_VALUES
-- PT_BOOLEAN
-8c48:
-- PR_EMS_AB_SUPPORT_SMIME_SIGNATURES
-- PT_BOOLEAN
-"3701":
-- PR_ATTACH_DATA
-- PT_OBJECT|PT_BINARY
-3ff8:
-- PR_CREATOR_NAME
-- PT_TSTRING
-"3702":
-- PR_ATTACH_ENCODING
-- PT_BINARY
-3d11:
-- PR_AB_SEARCH_PATH_UPDATE
-- PT_BINARY
-"8086":
-- PR_EMS_AB_DXA_IMPORT_NOW
-- PT_BOOLEAN
-0e02:
-- PR_DISPLAY_BCC
-- PT_TSTRING
-3e0a:
-- PR_HEADER_FOLDER_ENTRYID
-- PT_BINARY
-804d:
-- PR_EMS_AB_ALIASED_OBJECT_NAME
-- PT_OBJECT|PT_MV_TSTRING
-817f:
-- PR_EMS_AB_ENABLED_PROTOCOLS
-- PT_LONG
-8c49:
-- PR_EMS_AB_DELEGATE_USER
-- PT_BOOLEAN
-"6806":
-- PR_MAILBEAT_REPLY_SENT
-- PT_SYSTIME
-3ff9:
-- PR_CREATOR_ENTRYID
-- PT_BINARY
-"3703":
-- PR_ATTACH_EXTENSION
-- PT_TSTRING
-3d12:
-- PR_PROFILE_NAME
-- PT_TSTRING
-"8087":
-- PR_EMS_AB_DXA_IN_TEMPLATE_MAP
-- PT_MV_TSTRING
-0e03:
-- PR_DISPLAY_CC
-- PT_TSTRING
-3e0b:
-- PR_REMOTE_PROGRESS
-- PT_LONG
-804e:
-- PR_EMS_AB_ALT_RECIPIENT
-- PT_OBJECT|PT_MV_TSTRING
-"6807":
-- PR_MAILBEAT_REPLY_SUBMIT
-- PT_SYSTIME
-"3704":
-- PR_ATTACH_FILENAME
-- PT_TSTRING
-"8088":
-- PR_EMS_AB_DXA_LOCAL_ADMIN
-- PT_OBJECT|PT_MV_TSTRING
-0e04:
-- PR_DISPLAY_TO
-- PT_TSTRING
-3e0c:
-- PR_REMOTE_PROGRESS_TEXT
-- PT_TSTRING
-804f:
-- PR_EMS_AB_ALT_RECIPIENT_BL
-- PT_OBJECT|PT_MV_TSTRING
-"6808":
-- PR_MAILBEAT_REPLY_RECEIVED
-- PT_SYSTIME
-"3705":
-- PR_ATTACH_METHOD
-- PT_LONG
-"8089":
-- PR_EMS_AB_DXA_LOGGING_LEVEL
-- PT_LONG
-0e05:
-- PR_PARENT_DISPLAY
-- PT_TSTRING
-3e0d:
-- PR_REMOTE_VALIDATE_OK
-- PT_BOOLEAN
-8c50:
-- PR_EMS_AB_LIST_PUBLIC_FOLDERS
-- PT_BOOLEAN
-"6809":
-- PR_MAILBEAT_REPLY_PROCESSED
-- PT_SYSTIME
-0e06:
-- PR_MESSAGE_DELIVERY_TIME
-- PT_SYSTIME
-8c51:
-- PR_EMS_AB_LABELEDURI
-- PT_TSTRING
-"3707":
-- PR_ATTACH_LONG_FILENAME
-- PT_TSTRING
-0e07:
-- PR_MESSAGE_FLAGS
-- PT_LONG
-80da:
-- PR_EMS_AB_MONITORED_SERVERS
-- PT_OBJECT|PT_MV_TSTRING
-8c1a:
-- PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN
-- PT_OBJECT|PT_MV_TSTRING
-8c52:
-- PR_EMS_AB_RETURN_EXACT_MSG_SIZE
-- PT_BOOLEAN
-"3708":
-- PR_ATTACH_PATHNAME
-- PT_TSTRING
-"8090":
-- PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES
-- PT_OBJECT|PT_MV_TSTRING
-80db:
-- PR_EMS_AB_MONITORED_SERVICES
-- PT_MV_TSTRING
-8c1b:
-- PR_EMS_AB_VIEW_DEFINITION
-- PT_MV_BINARY
-8c53:
-- PR_EMS_AB_GENERATION_QUALIFIER
-- PT_TSTRING
-3fca:
-- PR_CONFLICT_MSG_KEY
-- PT_BINARY
-0e08:
-- PR_MESSAGE_SIZE
-- PT_LONG|PT_I8
-"3709":
-- PR_ATTACH_RENDERING
-- PT_BINARY
-0e09:
-- PR_PARENT_ENTRYID
-- PT_BINARY
-"8091":
-- PR_EMS_AB_DXA_PREV_REPLICATION_SENSITIVITY
-- PT_LONG
-80dc:
-- PR_EMS_AB_MONITORING_ALERT_DELAY
-- PT_LONG
-818a:
-- PR_EMS_AB_CONTROL_MSG_RULES
-- PT_BINARY
-8c1c:
-- PR_EMS_AB_MIME_TYPES
-- PT_BINARY
-8c54:
-- PR_EMS_AB_HOUSE_IDENTIFIER
-- PT_TSTRING
-3f80:
-- PR_DID
-- PT_I8
-"8092":
-- PR_EMS_AB_DXA_PREV_TEMPLATE_OPTIONS
-- PT_LONG
-80dd:
-- PR_EMS_AB_MONITORING_ALERT_UNITS
-- PT_LONG
-818b:
-- PR_EMS_AB_AVAILABLE_DISTRIBUTIONS
-- PT_TSTRING
-8c1d:
-- PR_EMS_AB_LDAP_SEARCH_CFG
-- PT_LONG
-8c55:
-- PR_EMS_AB_SUPPORTED_ALGORITHMS
-- PT_BINARY
-3f81:
-- PR_SEQID
-- PT_I8
-805a:
-- PR_EMS_AB_CAN_CREATE_PF_DL
-- PT_OBJECT|PT_MV_TSTRING
-"8093":
-- PR_EMS_AB_DXA_PREV_TYPES
-- PT_LONG
-80de:
-- PR_EMS_AB_MONITORING_AVAILABILITY_STYLE
-- PT_LONG
-8c1e:
-- PR_EMS_AB_INBOUND_DN
-- PT_OBJECT|PT_MV_TSTRING
-8c56:
-- PR_EMS_AB_DMD_NAME
-- PT_TSTRING
-3f82:
-- PR_DRAFTID
-- PT_I8
-805b:
-- PR_EMS_AB_CAN_CREATE_PF_DL_BL
-- PT_OBJECT|PT_MV_TSTRING
-"3710":
-- PR_ATTACH_MIME_SEQUENCE
-- PT_LONG
-0e10:
-- PR_SPOOLER_STATUS
-- PT_LONG
-"8094":
-- PR_EMS_AB_DXA_RECIPIENT_CP
-- PT_TSTRING
-80df:
-- PR_EMS_AB_MONITORING_AVAILABILITY_WINDOW
-- PT_BINARY
-818d:
-- PR_EMS_AB_OUTBOUND_HOST
-- PT_BINARY
-8c57:
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_11
-- PT_TSTRING
-3f83:
-- PR_CHECK_IN_TIME
-- PT_SYSTIME
-805c:
-- PR_EMS_AB_CAN_NOT_CREATE_PF
-- PT_OBJECT|PT_MV_TSTRING
-0e11:
-- PR_TRANSPORT_STATUS
-- PT_LONG
-"8095":
-- PR_EMS_AB_DXA_REMOTE_CLIENT
-- PT_OBJECT|PT_MV_TSTRING
-818e:
-- PR_EMS_AB_INBOUND_HOST
-- PT_MV_TSTRING
-8c1f:
-- PR_EMS_AB_INBOUND_NEWSFEED_TYPE
-- PT_BOOLEAN
-8c58:
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_12
-- PT_TSTRING
-3f84:
-- PR_CHECK_IN_COMMENT
-- PT_UNICODE
-805d:
-- PR_EMS_AB_CAN_NOT_CREATE_PF_BL
-- PT_OBJECT|PT_MV_TSTRING
-"3712":
-- PR_ATTACH_CONTENT_ID
-- PT_TSTRING
-0e12:
-- PR_MESSAGE_RECIPIENTS
-- PT_OBJECT
-"8096":
-- PR_EMS_AB_DXA_REQ_SEQ
-- PT_TSTRING
-818f:
-- PR_EMS_AB_OUTGOING_MSG_SIZE_LIMIT
-- PT_LONG
-8c59:
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_13
-- PT_TSTRING
-3d21:
-- PR_ADMIN_SECURITY_DESCRIPTOR
-- PT_BINARY
-3f85:
-- PR_VERSION_OP_CODE
-- PT_LONG
-805e:
-- PR_EMS_AB_CAN_NOT_CREATE_PF_DL
-- PT_OBJECT|PT_MV_TSTRING
-"3713":
-- PR_ATTACH_CONTENT_LOCATION
-- PT_TSTRING
-0e13:
-- PR_MESSAGE_ATTACHMENTS
-- PT_OBJECT
-"8097":
-- PR_EMS_AB_DXA_REQ_SEQ_TIME
-- PT_SYSTIME
-3f86:
-- PR_VERSION_OP_DATA
-- PT_BINARY
-805f:
-- PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL
-- PT_OBJECT|PT_MV_TSTRING
-"3714":
-- PR_ATTACH_FLAGS
-- PT_LONG
-0e14:
-- PR_SUBMIT_FLAGS
-- PT_LONG
-"8098":
-- PR_EMS_AB_DXA_REQ_SEQ_USN
-- PT_LONG
-3f87:
-- PR_VERSION_SEQUENCE_NUMBER
-- PT_LONG
-0e15:
-- PR_RECIPIENT_STATUS
-- PT_LONG
-"8099":
-- PR_EMS_AB_DXA_REQNAME
-- PT_TSTRING
-8c60:
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_14
-- PT_TSTRING
-3f88:
-- PR_ATTACH_ID
-- PT_I8
-"6001":
-- PR_DOTSTUFF_STATE
-- PT_LONG
-0e16:
-- PR_TRANSPORT_KEY
-- PT_LONG
-8c61:
-- PR_EMS_AB_EXTENSION_ATTRIBUTE_15
-- PT_TSTRING
-"3716":
-- PR_ATTACH_CONTENT_DISPOSITION
-- PT_UNICODE
-0e17:
-- PR_MSG_STATUS
-- PT_LONG
-80ea:
-- PR_EMS_AB_MONITORING_RECIPIENTS_NDR
-- PT_OBJECT|PT_MV_TSTRING
-8c62:
-- PR_EMS_AB_REPLICATED_OBJECT_VERSION
-- PT_LONG
-3fda:
-- PR_ABSTRACT
-- PT_TSTRING
-0e18:
-- PR_MESSAGE_DOWNLOAD_TIME
-- PT_LONG
-80eb:
-- PR_EMS_AB_MONITORING_RPC_UPDATE_INTERVAL
-- PT_LONG
-8c63:
-- PR_EMS_AB_MAIL_DROP
-- PT_TSTRING
-3fdb:
-- PR_DL_REPORT_FLAGS
-- PT_LONG
-0e19:
-- PR_CREATION_VERSION
-- PT_I8
-80ec:
-- PR_EMS_AB_MONITORING_RPC_UPDATE_UNITS
-- PT_LONG
-819a:
-- PR_EMS_AB_AUTHENTICATION_TO_USE
-- PT_TSTRING
-8c64:
-- PR_EMS_AB_FORWARDING_ADDRESS
-- PT_TSTRING
-3f90:
-- PR_VERSIONING_FLAGS
-- PT_SHORT
-3fdc:
-- PR_BILATERAL_INFO
-- PT_BINARY
-80ed:
-- PR_EMS_AB_MONITORING_WARNING_DELAY
-- PT_LONG
-819b:
-- PR_EMS_AB_HTTP_PUB_GAL
-- PT_BOOLEAN
-8c65:
-- PR_EMS_AB_FORM_DATA
-- PT_BINARY
-3f91:
-- PR_PKM_LAST_UNAPPROVED_VID
-- PT_BINARY
-3fdd:
-- PR_MSG_BODY_ID
-- PT_LONG
-806a:
-- PR_EMS_AB_DELIV_CONT_LENGTH
-- PT_LONG
-80ee:
-- PR_EMS_AB_MONITORING_WARNING_UNITS
-- PT_LONG
-819c:
-- PR_EMS_AB_HTTP_PUB_GAL_LIMIT
-- PT_LONG
-8c66:
-- PR_EMS_AB_OWA_SERVER
-- PT_TSTRING
-3f92:
-- PR_MV_PKM_VERSION_LABELS
-- PT_MV_UNICODE
-0e20:
-- PR_ATTACH_SIZE
-- PT_LONG
-3fde:
-- PR_INTERNET_CPID
-- PT_LONG
-806b:
-- PR_EMS_AB_DELIV_EITS
-- PT_MV_BINARY
-80ef:
-- PR_EMS_AB_MTA_LOCAL_CRED
-- PT_TSTRING
-8c67:
-- PR_EMS_AB_EMPLOYEE_NUMBER
-- PT_TSTRING
-3f93:
-- PR_MV_PKM_VERSION_STATUS
-- PT_MV_UNICODE
-0e21:
-- PR_ATTACH_NUM
-- PT_LONG
-3fdf:
-- PR_AUTO_RESPONSE_SUPPRESS
-- PT_LONG
-806c:
-- PR_EMS_AB_DELIV_EXT_CONT_TYPES
-- PT_MV_BINARY
-819e:
-- PR_EMS_AB_HTTP_PUB_PF
-- PT_MV_BINARY
-8c68:
-- PR_EMS_AB_TELEPHONE_PERSONAL_PAGER
-- PT_TSTRING
-3f94:
-- PR_PKM_INTERNAL_DATA
-- PT_BINARY
-0e22:
-- PR_PREPROCESS
-- PT_BOOLEAN
-806d:
-- PR_EMS_AB_DELIVER_AND_REDIRECT
-- PT_BOOLEAN
-8c69:
-- PR_EMS_AB_EMPLOYEE_TYPE
-- PT_TSTRING
-806e:
-- PR_EMS_AB_DELIVERY_MECHANISM
-- PT_LONG
-0e23:
-- PR_INTERNET_ARTICLE_NUMBER
-- PT_LONG
-806f:
-- PR_EMS_AB_DESCRIPTION
-- PT_MV_TSTRING
-0e24:
-- PR_NEWSGROUP_NAME
-- PT_TSTRING
-0e25:
-- PR_ORIGINATING_MTA_CERTIFICATE
-- PT_BINARY
-0e26:
-- PR_PROOF_OF_SUBMISSION
-- PT_BINARY
-80fa:
-- PR_EMS_AB_OFF_LINE_AB_SERVER
-- PT_OBJECT|PT_MV_TSTRING
-8c3a:
-- PR_EMS_AB_DO_OAB_VERSION
-- PT_LONG
-0e27:
-- PR_NT_SECURITY_DESCRIPTOR
-- PT_BINARY
-3fea:
-- PR_HAS_DAMS
-- PT_BOOLEAN
-80fb:
-- PR_EMS_AB_OFF_LINE_AB_STYLE
-- PT_LONG
-8c3b:
-- PR_EMS_AB_VOICE_MAIL_SYSTEM_GUID
-- PT_BINARY
-"0001":
-- PR_ACKNOWLEDGEMENT_MODE
-- PT_LONG
-300a:
-- PR_PROVIDER_DLL_NAME
-- PT_TSTRING
-3feb:
-- PR_DEFERRED_SEND_NUMBER
-- PT_LONG
-80fc:
-- PR_EMS_AB_OID_TYPE
-- PT_LONG
-8c3c:
-- PR_EMS_AB_VOICE_MAIL_USER_ID
-- PT_TSTRING
-"0002":
-- PR_ALTERNATE_RECIPIENT_ALLOWED
-- PT_BOOLEAN
-300b:
-- PR_SEARCH_KEY
-- PT_BINARY
-3fec:
-- PR_DEFERRED_SEND_UNITS
-- PT_LONG
-80fd:
-- PR_EMS_AB_OM_OBJECT_CLASS
-- PT_BINARY
-8c3d:
-- PR_EMS_AB_VOICE_MAIL_PASSWORD
-- PT_TSTRING
-"0003":
-- PR_AUTHORIZING_USERS
-- PT_BINARY
-807a:
-- PR_EMS_AB_DXA_ADMIN_UPDATE
-- PT_LONG
-"6701":
-- PR_PST_REMEMBER_PW
-- PT_BOOLEAN
-300c:
-- PR_PROVIDER_UID
-- PT_BINARY
-3fed:
-- PR_EXPIRY_NUMBER
-- PT_LONG
-80fe:
-- PR_EMS_AB_OM_SYNTAX
-- PT_LONG
-8c3e:
-- PR_EMS_AB_VOICE_MAIL_RECORDED_NAME
-- PT_BINARY
-"0004":
-- PR_AUTO_FORWARD_COMMENT
-- PT_TSTRING
-807b:
-- PR_EMS_AB_DXA_APPEND_REQCN
-- PT_BOOLEAN
-300d:
-- PR_PROVIDER_ORDINAL
-- PT_LONG
-3fee:
-- PR_EXPIRY_UNITS
-- PT_LONG
-80ff:
-- PR_EMS_AB_OOF_REPLY_TO_ORIGINATOR
-- PT_BOOLEAN
-8c3f:
-- PR_EMS_AB_VOICE_MAIL_GREETINGS
-- PT_MV_TSTRING
-"6702":
-- PR_OST_ENCRYPTION
-- PT_LONG
-3fef:
-- PR_DEFERRED_SEND_TIME
-- PT_SYSTIME
-"0005":
-- PR_AUTO_FORWARDED
-- PT_BOOLEAN
-807c:
-- PR_EMS_AB_DXA_CONF_CONTAINER_LIST
-- PT_OBJECT|PT_MV_TSTRING
-"6703":
-- PR_PST_PW_SZ_OLD
-- PT_TSTRING
-"0006":
-- PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID
-- PT_BINARY
-807d:
-- PR_EMS_AB_DXA_CONF_REQ_TIME
-- PT_SYSTIME
-"6704":
-- PR_PST_PW_SZ_NEW
-- PT_TSTRING
-"3600":
-- PR_CONTAINER_FLAGS
-- PT_LONG
-"0007":
-- PR_CONTENT_CORRELATOR
-- PT_BINARY
-807e:
-- PR_EMS_AB_DXA_CONF_SEQ
-- PT_TSTRING
-"6705":
-- PR_SORT_LOCALE_ID
-- PT_LONG
-"3601":
-- PR_FOLDER_TYPE
-- PT_LONG
-0008:
-- PR_CONTENT_IDENTIFIER
-- PT_TSTRING
-3d0a:
-- PR_SERVICE_DLL_NAME
-- PT_TSTRING
-807f:
-- PR_EMS_AB_DXA_CONF_SEQ_USN
-- PT_LONG
-"3602":
-- PR_CONTENT_COUNT
-- PT_LONG
-0009:
-- PR_CONTENT_LENGTH
-- PT_LONG
-3d0b:
-- PR_SERVICE_ENTRY_NAME
-- PT_TSTRING
-"3603":
-- PR_CONTENT_UNREAD
-- PT_LONG
-"6707":
-- PR_URL_NAME
-- PT_UNICODE
-3d0c:
-- PR_SERVICE_UID
-- PT_BINARY
-"3604":
-- PR_CREATE_TEMPLATES
-- PT_OBJECT
-3d0d:
-- PR_SERVICE_EXTRA_UIDS
-- PT_BINARY
-"0010":
-- PR_DELIVER_TIME
-- PT_SYSTIME
-"3605":
-- PR_DETAILS_TABLE
-- PT_OBJECT
-"6709":
-- PR_LOCAL_COMMIT_TIME
-- PT_SYSTIME
-3d0e:
-- PR_SERVICES
-- PT_BINARY
-3ffa:
-- PR_LAST_MODIFIER_NAME
-- PT_TSTRING
-f000:
-- PR_EMS_AB_OTHER_RECIPS
-- PT_OBJECT
-3d0f:
-- PR_SERVICE_SUPPORT_FILES
-- PT_MV_TSTRING
-3ffb:
-- PR_LAST_MODIFIER_ENTRYID
-- PT_BINARY
-"0011":
-- PR_DISCARD_REASON
-- PT_LONG
-"3607":
-- PR_SEARCH
-- PT_OBJECT
-3ffc:
-- PR_REPLY_RECIPIENT_SMTP_PROXIES
-- PT_TSTRING
-"0012":
-- PR_DISCLOSURE_OF_RECIPIENTS
-- PT_BOOLEAN
-"6710":
-- PR_URL_COMP_NAME_HASH
-- PT_LONG
-3ffd:
-- PR_MESSAGE_CODEPAGE
-- PT_LONG
-"0013":
-- PR_DL_EXPANSION_HISTORY
-- PT_BINARY
-"3609":
-- PR_SELECTABLE
-- PT_BOOLEAN
-808a:
-- PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE
-- PT_TSTRING
-0ff4:
-- PR_ACCESS
-- PT_LONG
-"6711":
-- PR_MSG_FOLDER_TEMPLATE_RES_2
-- PT_LONG
-3ffe:
-- PR_EXTENDED_ACL_DATA
-- PT_BINARY
-"0014":
-- PR_DL_EXPANSION_PROHIBITED
-- PT_BOOLEAN
-808b:
-- PR_EMS_AB_DXA_OUT_TEMPLATE_MAP
-- PT_MV_TSTRING
-0ff5:
-- PR_ROW_TYPE
-- PT_LONG
-"6712":
-- PR_RANK
-- PT_LONG
-"6844":
-- PR_DELEGATES_DISPLAY_NAMES
-- PT_MV_UNICODE
-"0015":
-- PR_EXPIRY_TIME
-- PT_SYSTIME
-808c:
-- PR_EMS_AB_DXA_PASSWORD
-- PT_TSTRING
-0ff6:
-- PR_INSTANCE_KEY
-- PT_BINARY
-3fff:
-- PR_FROM_I_HAVE
-- PT_BOOLEAN
-"6713":
-- PR_MSG_FOLDER_TEMPLATE_RES_4
-- PT_BOOLEAN
-"6845":
-- PR_DELEGATES_ENTRYIDS
-- PT_MV_BINARY
-"0016":
-- PR_IMPLICIT_CONVERSION_PROHIBITED
-- PT_BOOLEAN
-370a:
-- PR_ATTACH_TAG
-- PT_BINARY
-808d:
-- PR_EMS_AB_DXA_PREV_EXCHANGE_OPTIONS
-- PT_LONG
-"3610":
-- PR_FOLDER_ASSOCIATED_CONTENTS
-- PT_OBJECT
-0ff7:
-- PR_ACCESS_LEVEL
-- PT_LONG
-"6714":
-- PR_MSG_FOLDER_TEMPLATE_RES_5
-- PT_BOOLEAN
-"0017":
-- PR_IMPORTANCE
-- PT_LONG
-370b:
-- PR_RENDERING_POSITION
-- PT_LONG
-808e:
-- PR_EMS_AB_DXA_PREV_EXPORT_NATIVE_ONLY
-- PT_BOOLEAN
-0e0a:
-- PR_SENTMAIL_ENTRYID
-- PT_BINARY
-"3611":
-- PR_DEF_CREATE_DL
-- PT_BINARY
-0ff8:
-- PR_MAPPING_SIGNATURE
-- PT_BINARY
-"6715":
-- PR_MSG_FOLDER_TEMPLATE_RES_6
-- PT_BOOLEAN
-"6847":
-- PR_FREEBUSY_START_RANGE
-- PT_LONG
-0018:
-- PR_IPM_ID
-- PT_BINARY
-370c:
-- PR_ATTACH_TRANSPORT_NAME
-- PT_TSTRING
-808f:
-- PR_EMS_AB_DXA_PREV_IN_EXCHANGE_SENSITIVITY
-- PT_LONG
-"3612":
-- PR_DEF_CREATE_MAILUSER
-- PT_BINARY
-0ff9:
-- PR_RECORD_KEY
-- PT_BINARY
-"6716":
-- PR_MSG_FOLDER_TEMPLATE_RES_7
-- PT_BINARY
-"6848":
-- PR_FREEBUSY_END_RANGE
-- PT_LONG
-0019:
-- PR_LATEST_DELIVERY_TIME
-- PT_SYSTIME
-370d:
-- PR_ATTACH_LONG_PATHNAME
-- PT_TSTRING
-0e0c:
-- PR_CORRELATE
-- PT_BOOLEAN
-"3613":
-- PR_CONTAINER_CLASS
-- PT_TSTRING
-"6717":
-- PR_MSG_FOLDER_TEMPLATE_RES_8
-- PT_BINARY
-"6849":
-- PR_FREEBUSY_EMAIL_ADDRESS
-- PT_UNICODE
-370e:
-- PR_ATTACH_MIME_TAG
-- PT_TSTRING
-0e0d:
-- PR_CORRELATE_MTSID
-- PT_BINARY
-"3614":
-- PR_CONTAINER_MODIFY_VERSION
-- PT_I8
-"6718":
-- PR_MSG_FOLDER_TEMPLATE_RES_9
-- PT_BINARY
-370f:
-- PR_ATTACH_ADDITIONAL_INFO
-- PT_BINARY
-0e0e:
-- PR_DISCRETE_VALUES
-- PT_BOOLEAN
-"0020":
-- PR_ORIGINALLY_INTENDED_RECIPIENT_NAME
-- PT_BINARY
-"3615":
-- PR_AB_PROVIDER_ID
-- PT_BINARY
-"6719":
-- PR_MSG_FOLDER_TEMPLATE_RES_10
-- PT_UNICODE
-"6850":
-- PR_FREEBUSY_ALL_EVENTS
-- PT_MV_BINARY
-0e0f:
-- PR_RESPONSIBILITY
-- PT_BOOLEAN
-"0021":
-- PR_ORIGINAL_EITS
-- PT_BINARY
-"3616":
-- PR_DEFAULT_VIEW_ENTRYID
-- PT_BINARY
-"6851":
-- PR_FREEBUSY_TENTATIVE_MONTHS
-- PT_MV_LONG
-"3617":
-- PR_ASSOC_CONTENT_COUNT
-- PT_LONG
-"3880":
-- PR_SYNCEVENT_SUPPRESS_GUID
-- PT_BINARY
-"6720":
-- PR_INTERNET_FREE_DOC_INFO
-- PT_BINARY
-"6852":
-- PR_FREEBUSY_TENTATIVE_EVENTS
-- PT_MV_BINARY
-"0022":
-- PR_ORIGINATOR_CERTIFICATE
-- PT_BINARY
-"0023":
-- PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED
-- PT_BOOLEAN
-809a:
-- PR_EMS_AB_DXA_SVR_SEQ
-- PT_TSTRING
-39fe:
-- PR_SMTP_ADDRESS
-- PT_UNICODE
-"6721":
-- PR_PF_OVER_HARD_QUOTA_LIMIT
-- PT_LONG
-"6853":
-- PR_FREEBUSY_BUSY_MONTHS
-- PT_MV_LONG
-"0024":
-- PR_ORIGINATOR_RETURN_ADDRESS
-- PT_BINARY
-809b:
-- PR_EMS_AB_DXA_SVR_SEQ_TIME
-- PT_SYSTIME
-"6722":
-- PR_PF_MSG_SIZE_LIMIT
-- PT_LONG
-"6854":
-- PR_FREEBUSY_BUSY_EVENTS
-- PT_MV_BINARY
-39ff:
-- PR_7BIT_DISPLAY_NAME
-- PT_TSTRING
-"0025":
-- PR_PARENT_KEY
-- PT_BINARY
-809c:
-- PR_EMS_AB_DXA_SVR_SEQ_USN
-- PT_LONG
-"6855":
-- PR_FREEBUSY_OOF_MONTHS
-- PT_MV_LONG
-"0026":
-- PR_PRIORITY
-- PT_LONG
-809d:
-- PR_EMS_AB_DXA_TASK
-- PT_LONG
-3f8d:
-- PR_PKM_DOC_STATUS
-- PT_UNICODE
-"6856":
-- PR_FREEBUSY_OOF_EVENTS
-- PT_MV_BINARY
-0e1a:
-- PR_MODIFY_VERSION
-- PT_I8
-"0027":
-- PR_ORIGIN_CHECK
-- PT_BINARY
-809e:
-- PR_EMS_AB_DXA_TEMPLATE_OPTIONS
-- PT_LONG
-fff8:
-- PR_EMS_AB_CHILD_RDNS
-- PT_MV_TSTRING
-0e1b:
-- PR_HASATTACH
-- PT_BOOLEAN
-0028:
-- PR_PROOF_OF_SUBMISSION_REQUESTED
-- PT_BOOLEAN
-809f:
-- PR_EMS_AB_DXA_TEMPLATE_TIMESTAMP
-- PT_SYSTIME
-fff9:
-- PR_EMS_AB_HIERARCHY_PATH
-- PT_TSTRING
-3f8e:
-- PR_MV_PKM_OPERATION_REQ
-- PT_MV_UNICODE
-0e1c:
-- PR_BODY_CRC
-- PT_LONG
-0029:
-- PR_READ_RECEIPT_REQUESTED
-- PT_BOOLEAN
-3f8f:
-- PR_PKM_DOC_INTERNAL_STATE
-- PT_UNICODE
-0e1d:
-- PR_NORMALIZED_SUBJECT
-- PT_TSTRING
-"0030":
-- PR_REPLY_TIME
-- PT_SYSTIME
-8c6a:
-- PR_EMS_AB_TAGGED_X509_CERT
-- PT_MV_BINARY
-0e1f:
-- PR_RTF_IN_SYNC
-- PT_BOOLEAN
-"0031":
-- PR_REPORT_TAG
-- PT_BINARY
-8c6b:
-- PR_EMS_AB_PERSONAL_TITLE
-- PT_TSTRING
-0e58:
-- PR_CREATOR_SID
-- PT_BINARY
-"0032":
-- PR_REPORT_TIME
-- PT_SYSTIME
-8c6c:
-- PR_EMS_AB_LANGUAGE_ISO639
-- PT_TSTRING
-0e59:
-- PR_LAST_MODIFIER_SID
-- PT_BINARY
-"0033":
-- PR_RETURNED_IPM
-- PT_BOOLEAN
-"0034":
-- PR_SECURITY
-- PT_LONG
-"0035":
-- PR_INCOMPLETE_COPY
-- PT_BOOLEAN
-0e61:
-- PR_URL_COMP_NAME_POSTFIX
-- PT_LONG
-"0036":
-- PR_SENSITIVITY
-- PT_LONG
-"6602":
-- PR_PROFILE_HOME_SERVER
-- PT_TSTRING
-0e62:
-- PR_URL_COMP_NAME_SET
-- PT_BOOLEAN
-"0037":
-- PR_SUBJECT
-- PT_TSTRING
-0e63:
-- PR_SUBFOLDER_CT
-- PT_LONG
-0038:
-- PR_SUBJECT_IPM
-- PT_BINARY
-0c00:
-- PR_CONTENT_INTEGRITY_CHECK
-- PT_BINARY
-0e64:
-- PR_DELETED_SUBFOLDER_CT
-- PT_LONG
-"6868":
-- PR_FREEBUSY_LAST_MODIFIED
-- PT_SYSTIME
-0039:
-- PR_CLIENT_SUBMIT_TIME
-- PT_SYSTIME
-0c01:
-- PR_EXPLICIT_CONVERSION
-- PT_LONG
-"6869":
-- PR_FREEBUSY_NUM_MONTHS
-- PT_LONG
-0c02:
-- PR_IPM_RETURN_REQUESTED
-- PT_BOOLEAN
-0e66:
-- PR_DELETE_TIME
-- PT_SYSTIME
-"0040":
-- PR_RECEIVED_BY_NAME
-- PT_TSTRING
-"6607":
-- PR_PROFILE_UNRESOLVED_NAME
-- PT_TSTRING
-0c03:
-- PR_MESSAGE_TOKEN
-- PT_BINARY
-0e67:
-- PR_AGE_LIMIT
-- PT_BINARY
-"0041":
-- PR_SENT_REPRESENTING_ENTRYID
-- PT_BINARY
-"6608":
-- PR_PROFILE_UNRESOLVED_SERVER
-- PT_TSTRING
-0c04:
-- PR_NDR_REASON_CODE
-- PT_LONG
-"0042":
-- PR_SENT_REPRESENTING_NAME
-- PT_TSTRING
-0c05:
-- PR_NDR_DIAG_CODE
-- PT_LONG
-000a:
-- PR_CONTENT_RETURN_REQUESTED
-- PT_BOOLEAN
-"0043":
-- PR_RCVD_REPRESENTING_ENTRYID
-- PT_BINARY
-0c06:
-- PR_NON_RECEIPT_NOTIFICATION_REQUESTED
-- PT_BOOLEAN
-"6610":
-- PR_PROFILE_OFFLINE_STORE_PATH
-- PT_TSTRING
-000b:
-- PR_CONVERSATION_KEY
-- PT_BINARY
-0c07:
-- PR_DELIVERY_POINT
-- PT_LONG
-000c:
-- PR_CONVERSION_EITS
-- PT_BINARY
-"0044":
-- PR_RCVD_REPRESENTING_NAME
-- PT_TSTRING
-0c08:
-- PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED
-- PT_BOOLEAN
-670a:
-- PR_LOCAL_COMMIT_TIME_MAX
-- PT_SYSTIME
-"6611":
-- PR_PROFILE_OFFLINE_INFO
-- PT_BINARY
-000d:
-- PR_CONVERSION_WITH_LOSS_PROHIBITED
-- PT_BOOLEAN
-"0045":
-- PR_REPORT_ENTRYID
-- PT_BINARY
-0c09:
-- PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT
-- PT_BINARY
-670b:
-- PR_DELETED_COUNT_TOTAL
-- PT_LONG
-"6743":
-- PR_CONNECTION_MODULUS
-- PT_LONG
-"6612":
-- PR_PROFILE_HOME_SERVER_DN
-- PT_TSTRING
-000e:
-- PR_CONVERTED_EITS
-- PT_BINARY
-"0046":
-- PR_READ_RECEIPT_ENTRYID
-- PT_BINARY
-670c:
-- PR_AUTO_RESET
-- PT_CLSID
-"6744":
-- PR_DELIVER_TO_DN
-- PT_UNICODE
-"6613":
-- PR_PROFILE_HOME_SERVER_ADDRS
-- PT_MV_TSTRING
-000f:
-- PR_DEFERRED_DELIVERY_TIME
-- PT_SYSTIME
-"0047":
-- PR_MESSAGE_SUBMISSION_ID
-- PT_BINARY
-"6614":
-- PR_PROFILE_SERVER_DN
-- PT_TSTRING
-0c10:
-- PR_PHYSICAL_RENDITION_ATTRIBUTES
-- PT_BINARY
-0048:
-- PR_PROVIDER_SUBMIT_TIME
-- PT_SYSTIME
-360a:
-- PR_SUBFOLDERS
-- PT_BOOLEAN
-"6746":
-- PR_MIME_SIZE
-- PT_LONG
-"6615":
-- PR_PROFILE_FAVFLD_COMMENT
-- PT_TSTRING
-0c11:
-- PR_PROOF_OF_DELIVERY
-- PT_BINARY
-0049:
-- PR_ORIGINAL_SUBJECT
-- PT_TSTRING
-360b:
-- PR_STATUS
-- PT_LONG
-"6747":
-- PR_FILE_SIZE
-- PT_I8
-"6616":
-- PR_PROFILE_ALLPUB_DISPLAY_NAME
-- PT_TSTRING
-0c12:
-- PR_PROOF_OF_DELIVERY_REQUESTED
-- PT_BOOLEAN
-360c:
-- PR_ANR
-- PT_TSTRING
-"6748":
-- PR_FID
-- PT_I8
-"0050":
-- PR_REPLY_RECIPIENT_NAMES
-- PT_TSTRING
-"6617":
-- PR_PROFILE_ALLPUB_COMMENT
-- PT_TSTRING
-0c13:
-- PR_RECIPIENT_CERTIFICATE
-- PT_BINARY
-360d:
-- PR_CONTENTS_SORT_ORDER
-- PT_MV_LONG
-"6749":
-- PR_PARENT_FID
-- PT_I8
-"0051":
-- PR_RECEIVED_BY_SEARCH_KEY
-- PT_BINARY
-0c14:
-- PR_RECIPIENT_NUMBER_FOR_ADVICE
-- PT_TSTRING
-66a0:
-- PR_NT_USER_NAME
-- PT_TSTRING
-360e:
-- PR_CONTAINER_HIERARCHY
-- PT_OBJECT
-"0052":
-- PR_RCVD_REPRESENTING_SEARCH_KEY
-- PT_BINARY
-0ffa:
-- PR_STORE_RECORD_KEY
-- PT_BINARY
-0c15:
-- PR_RECIPIENT_TYPE
-- PT_LONG
-66a1:
-- PR_LOCALE_ID
-- PT_LONG
-360f:
-- PR_CONTAINER_CONTENTS
-- PT_OBJECT
-0e79:
-- PR_TRUST_SENDER
-- PT_LONG
-"6750":
-- PR_ICS_NOTIF
-- PT_LONG
-"0053":
-- PR_READ_RECEIPT_SEARCH_KEY
-- PT_BINARY
-0ffb:
-- PR_STORE_ENTRYID
-- PT_BINARY
-0c16:
-- PR_REGISTERED_MAIL_TYPE
-- PT_LONG
-66a2:
-- PR_LAST_LOGON_TIME
-- PT_SYSTIME
-"1100":
-- PR_P1_CONTENT
-- PT_BINARY
-001a:
-- PR_MESSAGE_CLASS
-- PT_TSTRING
-36d0:
-- PR_IPM_APPOINTMENT_ENTRYID
-- PT_BINARY
-"6751":
-- PR_ARTICLE_NUM_NEXT
-- PT_LONG
-"0054":
-- PR_REPORT_SEARCH_KEY
-- PT_BINARY
-0ffc:
-- PR_MINI_ICON
-- PT_BINARY
-0c17:
-- PR_REPLY_REQUESTED
-- PT_BOOLEAN
-66a3:
-- PR_LAST_LOGOFF_TIME
-- PT_SYSTIME
-"1101":
-- PR_P1_CONTENT_TYPE
-- PT_BINARY
-001b:
-- PR_MESSAGE_DELIVERY_ID
-- PT_BINARY
-36d1:
-- PR_IPM_CONTACT_ENTRYID
-- PT_BINARY
-"6752":
-- PR_IMAP_LAST_ARTICLE_ID
-- PT_LONG
-0ffd:
-- PR_ICON
-- PT_BINARY
-0c18:
-- PR_REQUESTED_DELIVERY_METHOD
-- PT_LONG
-66a4:
-- PR_STORAGE_LIMIT_INFORMATION
-- PT_LONG
-36d2:
-- PR_IPM_JOURNAL_ENTRYID
-- PT_BINARY
-671a:
-- PR_MSG_FOLDER_TEMPLATE_RES_11
-- PT_UNICODE
-"6753":
-- PR_NOT_822_RENDERABLE
-- PT_BOOLEAN
-"0055":
-- PR_ORIGINAL_DELIVERY_TIME
-- PT_SYSTIME
-0ffe:
-- PR_OBJECT_TYPE
-- PT_LONG
-0c19:
-- PR_SENDER_ENTRYID
-- PT_BINARY
-66a5:
-- PR_NEWSGROUP_COMPONENT
-- PT_TSTRING
-36d3:
-- PR_IPM_NOTE_ENTRYID
-- PT_BINARY
-671b:
-- PR_MSG_FOLDER_TEMPLATE_RES_12
-- PT_UNICODE
-"0056":
-- PR_ORIGINAL_AUTHOR_SEARCH_KEY
-- PT_BINARY
-66a6:
-- PR_NEWSFEED_INFO
-- PT_BINARY
-"1000":
-- PR_BODY
-- PT_TSTRING
-001e:
-- PR_MESSAGE_SECURITY_LABEL
-- PT_BINARY
-36d4:
-- PR_IPM_TASK_ENTRYID
-- PT_BINARY
-0fff:
-- PR_ENTRYID
-- PT_BINARY
-"0057":
-- PR_MESSAGE_TO_ME
-- PT_BOOLEAN
-66a7:
-- PR_INTERNET_NEWSGROUP_NAME
-- PT_TSTRING
-001f:
-- PR_OBSOLETED_IPMS
-- PT_BINARY
-36d5:
-- PR_REMINDERS_ONLINE_ENTRYID
-- PT_BINARY
-684f:
-- PR_FREEBUSY_ALL_MONTHS
-- PT_MV_LONG
-0058:
-- PR_MESSAGE_CC_ME
-- PT_BOOLEAN
-66a8:
-- PR_FOLDER_FLAGS
-- PT_LONG
-"1001":
-- PR_REPORT_TEXT
-- PT_TSTRING
-36d6:
-- PR_REMINDERS_OFFLINE_ENTRYID
-- PT_BINARY
-671e:
-- PR_PF_PLATINUM_HOME_MDB
-- PT_BOOLEAN
-0059:
-- PR_MESSAGE_RECIP_ME
-- PT_BOOLEAN
-66a9:
-- PR_LAST_ACCESS_TIME
-- PT_SYSTIME
-"1002":
-- PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY
-- PT_BINARY
-36d7:
-- PR_IPM_DRAFTS_ENTRYID
-- PT_BINARY
-671f:
-- PR_PF_PROXY_REQUIRED
-- PT_BOOLEAN
-"6626":
-- PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID
-- PT_BINARY
-"1003":
-- PR_REPORTING_DL_NAME
-- PT_BINARY
-361c:
-- PR_PACKED_NAME_PROPS
-- PT_BINARY
-36d8:
-- PR_OUTLOOK_2003_ENTRYIDS
-- PT_MV_BINARY
-"6758":
-- PR_LTID
-- PT_BINARY
-"0060":
-- PR_START_DATE
-- PT_SYSTIME
-"6627":
-- PR_OFFLINE_MESSAGE_ENTRYID
-- PT_BINARY
-3a00:
-- PR_ACCOUNT
-- PT_TSTRING
-"1004":
-- PR_REPORTING_MTA_CERTIFICATE
-- PT_BINARY
-"6759":
-- PR_CN_EXPORT
-- PT_BINARY
diff --git a/vendor/ruby-msg/data/named_map.yaml b/vendor/ruby-msg/data/named_map.yaml
deleted file mode 100644
index 8de27d13f..000000000
--- a/vendor/ruby-msg/data/named_map.yaml
+++ /dev/null
@@ -1,114 +0,0 @@
-# this file provides for the mapping of the keys of named properties
-# to symbolic names (as opposed to mapitags.yaml, which is currently
-# in a different format, has a different source, and is only fixed
-# code properties)
-#
-# essentially the symbols are slightly munged versions of the names
-# given to these properties by CDO, or Outlook's object model.
-# it was parsed out of cdo10.htm, and neatened up a bit.
-#
-# interestingly, despite having separate guids, the codes are picked not to
-# clash. further the names themselves have only 3 clashes in all the below.
-{
-[0x8005, PSETID_Address]: file_under,
-[0x8017, PSETID_Address]: last_name_and_first_name,
-[0x8018, PSETID_Address]: company_and_full_name,
-[0x8019, PSETID_Address]: full_name_and_company,
-[0x801a, PSETID_Address]: home_address,
-[0x801b, PSETID_Address]: business_address,
-[0x801c, PSETID_Address]: other_address,
-[0x8022, PSETID_Address]: selected_address,
-[0x802b, PSETID_Address]: web_page,
-[0x802c, PSETID_Address]: yomi_first_name,
-[0x802d, PSETID_Address]: yomi_last_name,
-[0x802e, PSETID_Address]: yomi_company_name,
-[0x8030, PSETID_Address]: last_first_no_space,
-[0x8031, PSETID_Address]: last_first_space_only,
-[0x8032, PSETID_Address]: company_last_first_no_space,
-[0x8033, PSETID_Address]: company_last_first_space_only,
-[0x8034, PSETID_Address]: last_first_no_space_company,
-[0x8035, PSETID_Address]: last_first_space_only_company,
-[0x8036, PSETID_Address]: last_first_and_suffix,
-[0x8045, PSETID_Address]: business_address_street,
-[0x8046, PSETID_Address]: business_address_city,
-[0x8047, PSETID_Address]: business_address_state,
-[0x8048, PSETID_Address]: business_address_postal_code,
-[0x8049, PSETID_Address]: business_address_country,
-[0x804a, PSETID_Address]: business_address_post_office_box,
-[0x804f, PSETID_Address]: user_field1,
-[0x8050, PSETID_Address]: user_field2,
-[0x8051, PSETID_Address]: user_field3,
-[0x8052, PSETID_Address]: user_field4,
-[0x8062, PSETID_Address]: imaddress,
-[0x8082, PSETID_Address]: email_addr_type,
-[0x8083, PSETID_Address]: email_email_address,
-[0x8084, PSETID_Address]: email_original_display_name,
-[0x8085, PSETID_Address]: email_original_entry_id,
-[0x8092, PSETID_Address]: email2_addr_type,
-[0x8093, PSETID_Address]: email2_email_address,
-[0x8094, PSETID_Address]: email2_original_display_name,
-[0x8095, PSETID_Address]: email2_original_entry_id,
-[0x80a2, PSETID_Address]: email3_addr_type,
-[0x80a3, PSETID_Address]: email3_email_address,
-[0x80a4, PSETID_Address]: email3_original_display_name,
-[0x80a5, PSETID_Address]: email3_original_entry_id,
-[0x80d8, PSETID_Address]: internet_free_busy_address,
-[0x8101, PSETID_Task]: status,
-[0x8102, PSETID_Task]: percent_complete,
-[0x8103, PSETID_Task]: team_task,
-[0x8104, PSETID_Task]: start_date,
-[0x8105, PSETID_Task]: due_date,
-[0x8106, PSETID_Task]: duration,
-[0x810f, PSETID_Task]: date_completed,
-[0x8110, PSETID_Task]: actual_work,
-[0x8111, PSETID_Task]: total_work,
-[0x811c, PSETID_Task]: complete,
-[0x811f, PSETID_Task]: owner,
-[0x8126, PSETID_Task]: is_recurring,
-[0x8205, PSETID_Appointment]: busy_status,
-[0x8208, PSETID_Appointment]: location,
-[0x820d, PSETID_Appointment]: start_date,
-[0x820e, PSETID_Appointment]: end_date,
-[0x8213, PSETID_Appointment]: duration,
-[0x8214, PSETID_Appointment]: colors,
-[0x8216, PSETID_Appointment]: recurrence_state,
-[0x8218, PSETID_Appointment]: response_status,
-[0x8222, PSETID_Appointment]: reply_time,
-[0x8223, PSETID_Appointment]: is_recurring,
-[0x822e, PSETID_Appointment]: organizer,
-[0x8231, PSETID_Appointment]: recurrence_type,
-[0x8232, PSETID_Appointment]: recurrence_pattern,
-# also had CdoPR_FLAG_DUE_BY, when applied to messages. i don't currently
-# use message class specific names
-[0x8502, PSETID_Common]: reminder_time,
-[0x8503, PSETID_Common]: reminder_set,
-[0x8516, PSETID_Common]: common_start,
-[0x8517, PSETID_Common]: common_end,
-[0x851c, PSETID_Common]: reminder_override,
-[0x851e, PSETID_Common]: reminder_sound,
-[0x851f, PSETID_Common]: reminder_file,
-# this one only listed as CdoPR_FLAG_TEXT. maybe should be
-# reminder_text
-[0x8530, PSETID_Common]: flag_text,
-[0x8534, PSETID_Common]: mileage,
-[0x8535, PSETID_Common]: billing_information,
-[0x8539, PSETID_Common]: companies,
-[0x853a, PSETID_Common]: contact_names,
-# had CdoPR_FLAG_DUE_BY_NEXT for this one also
-[0x8560, PSETID_Common]: reminder_next_time,
-[0x8700, PSETID_Log]: entry,
-[0x8704, PSETID_Log]: start_date,
-[0x8705, PSETID_Log]: start_time,
-[0x8706, PSETID_Log]: start,
-[0x8707, PSETID_Log]: duration,
-[0x8708, PSETID_Log]: end,
-[0x870e, PSETID_Log]: doc_printed,
-[0x870f, PSETID_Log]: doc_saved,
-[0x8710, PSETID_Log]: doc_routed,
-[0x8711, PSETID_Log]: doc_posted,
-[0x8712, PSETID_Log]: entry_type,
-[0x8b00, PSETID_Note]: color,
-[0x8b02, PSETID_Note]: width,
-[0x8b03, PSETID_Note]: height,
-["Keywords", PS_PUBLIC_STRINGS]: categories
-}
diff --git a/vendor/ruby-msg/data/types.yaml b/vendor/ruby-msg/data/types.yaml
deleted file mode 100644
index b2c9024b8..000000000
--- a/vendor/ruby-msg/data/types.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-# grep ' PT_' mapitags.yaml | sort -u > types.yaml
-- PT_BINARY
-- PT_BOOLEAN
-- PT_CLSID
-- PT_I8
-- PT_LONG
-- PT_MV_BINARY
-- PT_MV_LONG
-- PT_MV_TSTRING
-- PT_OBJECT
-- PT_SHORT
-- PT_STRING8
-- PT_SYSTIME
-- PT_TSTRING
diff --git a/vendor/ruby-msg/lib/mapi.rb b/vendor/ruby-msg/lib/mapi.rb
deleted file mode 100644
index b9d3413f7..000000000
--- a/vendor/ruby-msg/lib/mapi.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-require 'mapi/types'
-require 'mapi/property_set'
-
-module Mapi
- VERSION = '1.4.0'
-
- #
- # Mapi::Item is the base class used for all mapi objects, and is purely a
- # property set container
- #
- class Item
- attr_reader :properties
- alias props properties
-
- # +properties+ should be a PropertySet instance.
- def initialize properties
- @properties = properties
- end
- end
-
- # a general attachment class. is subclassed by Msg and Pst attachment classes
- class Attachment < Item
- def filename
- props.attach_long_filename || props.attach_filename
- end
-
- def data
- @embedded_msg || @embedded_ole || props.attach_data
- end
-
- # with new stream work, its possible to not have the whole thing in memory at one time,
- # just to save an attachment
- #
- # a = msg.attachments.first
- # a.save open(File.basename(a.filename || 'attachment'), 'wb')
- def save io
- raise "can only save binary data blobs, not ole dirs" if @embedded_ole
- data.each_read { |chunk| io << chunk }
- end
-
- def inspect
- "#<#{self.class.to_s[/\w+$/]}" +
- (filename ? " filename=#{filename.inspect}" : '') +
- (@embedded_ole ? " embedded_type=#{@embedded_ole.embedded_type.inspect}" : '') + ">"
- end
- end
-
- class Recipient < Item
- # some kind of best effort guess for converting to standard mime style format.
- # there are some rules for encoding non 7bit stuff in mail headers. should obey
- # that here, as these strings could be unicode
- # email_address will be an EX:/ address (X.400?), unless external recipient. the
- # other two we try first.
- # consider using entry id for this too.
- def name
- name = props.transmittable_display_name || props.display_name
- # dequote
- name[/^'(.*)'/, 1] or name rescue nil
- end
-
- def email
- props.smtp_address || props.org_email_addr || props.email_address
- end
-
- RECIPIENT_TYPES = { 0 => :orig, 1 => :to, 2 => :cc, 3 => :bcc }
- def type
- RECIPIENT_TYPES[props.recipient_type]
- end
-
- def to_s
- if name = self.name and !name.empty? and email && name != email
- %{"#{name}" <#{email}>}
- else
- email || name
- end
- end
-
- def inspect
- "#<#{self.class.to_s[/\w+$/]}:#{self.to_s.inspect}>"
- end
- end
-
- # i refer to it as a message (as does mapi), although perhaps Item is better, as its a more general
- # concept than a message, as used in Pst files. though maybe i'll switch to using
- # Mapi::Object as the base class there.
- #
- # IMessage essentially, but there's also stuff like IMAPIFolder etc. so, for this to form
- # basis for PST Item, it'd need to be more general.
- class Message < Item
- # these 2 collections should be provided by our subclasses
- def attachments
- raise NotImplementedError
- end
-
- def recipients
- raise NotImplementedError
- end
-
- def inspect
- str = %w[message_class from to subject].map do |key|
- " #{key}=#{props.send(key).inspect}"
- end.compact.join
- str << " recipients=#{recipients.inspect}"
- str << " attachments=#{attachments.inspect}"
- "#<#{self.class.to_s[/\w+$/]}#{str}>"
- end
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/convert.rb b/vendor/ruby-msg/lib/mapi/convert.rb
deleted file mode 100644
index 4c7a0d298..000000000
--- a/vendor/ruby-msg/lib/mapi/convert.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-# we have two different "backends" for note conversion. we're sticking with
-# the current (home grown) mime one until the tmail version is suitably
-# polished.
-require 'mapi/convert/note-mime'
-require 'mapi/convert/contact'
-
-module Mapi
- class Message
- CONVERSION_MAP = {
- 'text/x-vcard' => [:to_vcard, 'vcf'],
- 'message/rfc822' => [:to_mime, 'eml'],
- 'text/plain' => [:to_post, 'txt']
- # ...
- }
-
- # get the mime type of the message.
- def mime_type
- case props.message_class #.downcase <- have a feeling i saw other cased versions
- when 'IPM.Contact'
- # apparently "text/directory; profile=vcard" is what you're supposed to use
- 'text/x-vcard'
- when 'IPM.Note'
- 'message/rfc822'
- when 'IPM.Post'
- 'text/plain'
- when 'IPM.StickyNote'
- 'text/plain' # hmmm....
- else
- Mapi::Log.warn 'unknown message_class - %p' % props.message_class
- nil
- end
- end
-
- def convert
- type = mime_type
- unless pair = CONVERSION_MAP[type]
- raise 'unable to convert message with mime type - %p' % type
- end
- send pair.first
- end
-
- # should probably be moved to mapi/convert/post
- class Post
- # not really sure what the pertinent properties are. we just do nothing for now...
- def initialize message
- @message = message
- end
-
- def to_s
- # should maybe handle other types, like html body. need a better format for post
- # probably anyway, cause a lot of meta data is getting chucked.
- @message.props.body
- end
- end
-
- def to_post
- Post.new self
- end
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/convert/contact.rb b/vendor/ruby-msg/lib/mapi/convert/contact.rb
deleted file mode 100644
index 838ae6498..000000000
--- a/vendor/ruby-msg/lib/mapi/convert/contact.rb
+++ /dev/null
@@ -1,142 +0,0 @@
-require 'rubygems'
-require 'vpim/vcard'
-
-# patch Vpim. TODO - fix upstream, or verify old behaviour was ok
-def Vpim.encode_text v
- # think the regexp was wrong
- v.to_str.gsub(/(.)/m) do
- case $1
- when "\n"
- "\\n"
- when "\\", ",", ";"
- "\\#{$1}"
- else
- $1
- end
- end
-end
-
-module Mapi
- class Message
- class VcardConverter
- include Vpim
-
- # a very incomplete mapping, but its a start...
- # can't find where to set a lot of stuff, like zipcode, jobtitle etc
- VCARD_MAP = {
- # these are all standard mapi properties
- :name => [
- {
- :given => :given_name,
- :family => :surname,
- :fullname => :subject
- }
- ],
- # outlook seems to eschew the mapi properties this time,
- # like postal_address, street_address, home_address_city
- # so we use the named properties
- :addr => [
- {
- :location => 'work',
- :street => :business_address_street,
- :locality => proc do |props|
- [props.business_address_city, props.business_address_state].compact * ', '
- end
- }
- ],
-
- # right type? maybe date
- :birthday => :birthday,
- :nickname => :nickname
-
- # photo available?
- # FIXME finish, emails, telephones etc
- }
-
- attr_reader :msg
- def initialize msg
- @msg = msg
- end
-
- def field name, *args
- DirectoryInfo::Field.create name, Vpim.encode_text_list(args)
- end
-
- def get_property key
- if String === key
- return key
- elsif key.respond_to? :call
- value = key.call msg.props
- else
- value = msg.props[key]
- end
- if String === value and value.empty?
- nil
- else
- value
- end
- end
-
- def get_properties hash
- constants = {}
- others = {}
- hash.each do |to, from|
- if String === from
- constants[to] = from
- else
- value = get_property from
- others[to] = value if value
- end
- end
- return nil if others.empty?
- others.merge constants
- end
-
- def convert
- Vpim::Vcard::Maker.make2 do |m|
- # handle name
- [:name, :addr].each do |type|
- VCARD_MAP[type].each do |hash|
- next unless props = get_properties(hash)
- m.send "add_#{type}" do |n|
- props.each { |key, value| n.send "#{key}=", value }
- end
- end
- end
-
- (VCARD_MAP.keys - [:name, :addr]).each do |key|
- value = get_property VCARD_MAP[key]
- m.send "#{key}=", value if value
- end
-
- # the rest of the stuff is custom
-
- url = get_property(:webpage) || get_property(:business_home_page)
- m.add_field field('URL', url) if url
- m.add_field field('X-EVOLUTION-FILE-AS', get_property(:file_under)) if get_property(:file_under)
-
- addr = get_property(:email_email_address) || get_property(:email_original_display_name)
- if addr
- m.add_email addr do |e|
- e.format ='x400' unless msg.props.email_addr_type == 'SMTP'
- end
- end
-
- if org = get_property(:company_name)
- m.add_field field('ORG', get_property(:company_name))
- end
-
- # TODO: imaddress
- end
- end
- end
-
- def to_vcard
- #p props.raw.reject { |key, value| key.guid.inspect !~ /00062004-0000-0000-c000-000000000046/ }.
- # map { |key, value| [key.to_sym, value] }.reject { |a, b| b.respond_to? :read }
- #y props.to_h.reject { |a, b| b.respond_to? :read }
- VcardConverter.new(self).convert
- end
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/convert/note-mime.rb b/vendor/ruby-msg/lib/mapi/convert/note-mime.rb
deleted file mode 100644
index deb035f2c..000000000
--- a/vendor/ruby-msg/lib/mapi/convert/note-mime.rb
+++ /dev/null
@@ -1,274 +0,0 @@
-require 'base64'
-require 'mime'
-require 'time'
-
-# there is still some Msg specific stuff in here.
-
-module Mapi
- class Message
- def mime
- return @mime if @mime
- # if these headers exist at all, they can be helpful. we may however get a
- # application/ms-tnef mime root, which means there will be little other than
- # headers. we may get nothing.
- # and other times, when received from external, we get the full cigar, boundaries
- # etc and all.
- # sometimes its multipart, with no boundaries. that throws an error. so we'll be more
- # forgiving here
- @mime = SimpleMime.new props.transport_message_headers.to_s, true
- populate_headers
- @mime
- end
-
- def headers
- mime.headers
- end
-
- # copy data from msg properties storage to standard mime. headers
- # i've now seen it where the existing headers had heaps on stuff, and the msg#props had
- # practically nothing. think it was because it was a tnef - msg conversion done by exchange.
- def populate_headers
- # construct a From value
- # should this kind of thing only be done when headers don't exist already? maybe not. if its
- # sent, then modified and saved, the headers could be wrong?
- # hmmm. i just had an example where a mail is sent, from an internal user, but it has transport
- # headers, i think because one recipient was external. the only place the senders email address
- # exists is in the transport headers. so its maybe not good to overwrite from.
- # recipients however usually have smtp address available.
- # maybe we'll do it for all addresses that are smtp? (is that equivalent to
- # sender_email_address !~ /^\//
- name, email = props.sender_name, props.sender_email_address
- if props.sender_addrtype == 'SMTP'
- headers['From'] = if name and email and name != email
- [%{"#{name}" <#{email}>}]
- else
- [email || name]
- end
- elsif !headers.has_key?('From')
- # some messages were never sent, so that sender stuff isn't filled out. need to find another
- # way to get something
- # what about marking whether we thing the email was sent or not? or draft?
- # for partition into an eventual Inbox, Sent, Draft mbox set?
- # i've now seen cases where this stuff is missing, but exists in transport message headers,
- # so maybe i should inhibit this in that case.
- if email
- # disabling this warning for now
- #Log.warn "* no smtp sender email address available (only X.400). creating fake one"
- # this is crap. though i've specially picked the logic so that it generates the correct
- # email addresses in my case (for my organisation).
- # this user stuff will give valid email i think, based on alias.
- user = name ? name.sub(/(.*), (.*)/, "\\2.\\1") : email[/\w+$/].downcase
- domain = (email[%r{^/O=([^/]+)}i, 1].downcase + '.com' rescue email)
- headers['From'] = [name ? %{"#{name}" <#{user}@#{domain}>} : "<#{user}@#{domain}>" ]
- elsif name
- # we only have a name? thats screwed up.
- # disabling this warning for now
- #Log.warn "* no smtp sender email address available (only name). creating fake one"
- headers['From'] = [%{"#{name}"}]
- else
- # disabling this warning for now
- #Log.warn "* no sender email address available at all. FIXME"
- end
- # else we leave the transport message header version
- end
-
- # for all of this stuff, i'm assigning in utf8 strings.
- # thats ok i suppose, maybe i can say its the job of the mime class to handle that.
- # but a lot of the headers are overloaded in different ways. plain string, many strings
- # other stuff. what happens to a person who has a " in their name etc etc. encoded words
- # i suppose. but that then happens before assignment. and can't be automatically undone
- # until the header is decomposed into recipients.
- recips_by_type = recipients.group_by { |r| r.type }
- # i want to the the types in a specific order.
- [:to, :cc, :bcc].each do |type|
- # don't know why i bother, but if we can, we try to sort recipients by the numerical part
- # of the ole name, or just leave it if we can't
- recips = recips_by_type[type]
- recips = (recips.sort_by { |r| r.obj.name[/\d{8}$/].hex } rescue recips)
- # switched to using , for separation, not ;. see issue #4
- # recips.empty? is strange. i wouldn't have thought it possible, but it was right?
- headers[type.to_s.sub(/^(.)/) { $1.upcase }] = [recips.join(', ')] if recips and !recips.empty?
- end
- headers['Subject'] = [props.subject] if props.subject
-
- # fill in a date value. by default, we won't mess with existing value hear
- if !headers.has_key?('Date')
- # we want to get a received date, as i understand it.
- # use this preference order, or pull the most recent?
- keys = %w[message_delivery_time client_submit_time last_modification_time creation_time]
- time = keys.each { |key| break time if time = props.send(key) }
- time = nil unless Date === time
-
- # now convert and store
- # this is a little funky. not sure about time zone stuff either?
- # actually seems ok. maybe its always UTC and interpreted anyway. or can be timezoneless.
- # i have no timezone info anyway.
- # in gmail, i see stuff like 15 Jan 2007 00:48:19 -0000, and it displays as 11:48.
- # can also add .localtime here if desired. but that feels wrong.
- headers['Date'] = [Time.iso8601(time.to_s).rfc2822] if time
- end
-
- # some very simplistic mapping between internet message headers and the
- # mapi properties
- # any of these could be causing duplicates due to case issues. the hack in #to_mime
- # just stops re-duplication at that point. need to move some smarts into the mime
- # code to handle it.
- mapi_header_map = [
- [:internet_message_id, 'Message-ID'],
- [:in_reply_to_id, 'In-Reply-To'],
- # don't set these values if they're equal to the defaults anyway
- [:importance, 'Importance', proc { |val| val.to_s == '1' ? nil : val }],
- [:priority, 'Priority', proc { |val| val.to_s == '1' ? nil : val }],
- [:sensitivity, 'Sensitivity', proc { |val| val.to_s == '0' ? nil : val }],
- # yeah?
- [:conversation_topic, 'Thread-Topic'],
- # not sure of the distinction here
- # :originator_delivery_report_requested ??
- [:read_receipt_requested, 'Disposition-Notification-To', proc { |val| from }]
- ]
- mapi_header_map.each do |mapi, mime, *f|
- next unless q = val = props.send(mapi) or headers.has_key?(mime)
- next if f[0] and !(val = f[0].call(val))
- headers[mime] = [val.to_s]
- end
- end
-
- # redundant?
- def type
- props.message_class[/IPM\.(.*)/, 1].downcase rescue nil
- end
-
- # shortcuts to some things from the headers
- %w[From To Cc Bcc Subject].each do |key|
- define_method(key.downcase) { headers[key].join(' ') if headers.has_key?(key) }
- end
-
- def body_to_mime
- # to create the body
- # should have some options about serializing rtf. and possibly options to check the rtf
- # for rtf2html conversion, stripping those html tags or other similar stuff. maybe want to
- # ignore it in the cases where it is generated from incoming html. but keep it if it was the
- # source for html and plaintext.
- if props.body_rtf or props.body_html
- # should plain come first?
- mime = SimpleMime.new "Content-Type: multipart/alternative\r\n\r\n"
- # its actually possible for plain body to be empty, but the others not.
- # if i can get an html version, then maybe a callout to lynx can be made...
- mime.parts << SimpleMime.new("Content-Type: text/plain\r\n\r\n" + props.body) if props.body
- # this may be automatically unwrapped from the rtf if the rtf includes the html
- mime.parts << SimpleMime.new("Content-Type: text/html\r\n\r\n" + props.body_html) if props.body_html
- # temporarily disabled the rtf. its just showing up as an attachment anyway.
- #mime.parts << SimpleMime.new("Content-Type: text/rtf\r\n\r\n" + props.body_rtf) if props.body_rtf
- # its thus currently possible to get no body at all if the only body is rtf. that is not
- # really acceptable FIXME
- mime
- else
- # check no header case. content type? etc?. not sure if my SimpleMime class will accept
- Log.debug "taking that other path"
- # body can be nil, hence the to_s
- SimpleMime.new "Content-Type: text/plain\r\n\r\n" + props.body.to_s
- end
- end
-
- def to_mime
- # intended to be used for IPM.note, which is the email type. can use it for others if desired,
- # YMMV
- Log.warn "to_mime used on a #{props.message_class}" unless props.message_class == 'IPM.Note'
- # we always have a body
- mime = body = body_to_mime
-
- # If we have attachments, we take the current mime root (body), and make it the first child
- # of a new tree that will contain body and attachments.
- unless attachments.empty?
- mime = SimpleMime.new "Content-Type: multipart/mixed\r\n\r\n"
- mime.parts << body
- # i don't know any better way to do this. need multipart/related for inline images
- # referenced by cid: urls to work, but don't want to use it otherwise...
- related = false
- attachments.each do |attach|
- part = attach.to_mime
- related = true if part.headers.has_key?('Content-ID') or part.headers.has_key?('Content-Location')
- mime.parts << part
- end
- mime.headers['Content-Type'] = ['multipart/related'] if related
- end
-
- # at this point, mime is either
- # - a single text/plain, consisting of the body ('taking that other path' above. rare)
- # - a multipart/alternative, consiting of a few bodies (plain and html body. common)
- # - a multipart/mixed, consisting of 1 of the above 2 types of bodies, and attachments.
- # we add this standard preamble if its multipart
- # FIXME preamble.replace, and body.replace both suck.
- # preamble= is doable. body= wasn't being done because body will get rewritten from parts
- # if multipart, and is only there readonly. can do that, or do a reparse...
- # The way i do this means that only the first preamble will say it, not preambles of nested
- # multipart chunks.
- mime.preamble.replace "This is a multi-part message in MIME format.\r\n" if mime.multipart?
-
- # now that we have a root, we can mix in all our headers
- headers.each do |key, vals|
- # don't overwrite the content-type, encoding style stuff
- next if mime.headers.has_key? key
- # some new temporary hacks
- next if key =~ /content-type/i and vals[0] =~ /base64/
- next if mime.headers.keys.map(&:downcase).include? key.downcase
- mime.headers[key] += vals
- end
- # just a stupid hack to make the content-type header last, when using OrderedHash
- mime.headers['Content-Type'] = mime.headers.delete 'Content-Type'
-
- mime
- end
- end
-
- class Attachment
- def to_mime
- # TODO: smarter mime typing.
- mimetype = props.attach_mime_tag || 'application/octet-stream'
- mime = SimpleMime.new "Content-Type: #{mimetype}\r\n\r\n"
- mime.headers['Content-Disposition'] = [%{attachment; filename="#{filename}"}]
- mime.headers['Content-Transfer-Encoding'] = ['base64']
- mime.headers['Content-Location'] = [props.attach_content_location] if props.attach_content_location
- mime.headers['Content-ID'] = [props.attach_content_id] if props.attach_content_id
- # data.to_s for now. data was nil for some reason.
- # perhaps it was a data object not correctly handled?
- # hmmm, have to use read here. that assumes that the data isa stream.
- # but if the attachment data is a string, then it won't work. possible?
- data_str = if @embedded_msg
- mime.headers['Content-Type'] = 'message/rfc822'
- # lets try making it not base64 for now
- mime.headers.delete 'Content-Transfer-Encoding'
- # not filename. rather name, or something else right?
- # maybe it should be inline?? i forget attach_method / access meaning
- mime.headers['Content-Disposition'] = [%{attachment; filename="#{@embedded_msg.subject}"}]
- @embedded_msg.to_mime.to_s
- elsif @embedded_ole
- # kind of hacky
- io = StringIO.new
- Ole::Storage.new io do |ole|
- ole.root.type = :dir
- Ole::Storage::Dirent.copy @embedded_ole, ole.root
- end
- io.string
- else
- # FIXME: shouldn't be required
- data.read.to_s rescue ''
- end
- mime.body.replace @embedded_msg ? data_str : Base64.encode64(data_str).gsub(/\n/, "\r\n")
- mime
- end
- end
-
- class Msg < Message
- def populate_headers
- super
- if !headers.has_key?('Date')
- # can employ other methods for getting a time. heres one in a similar vein to msgconvert.pl,
- # ie taking the time from an ole object
- time = @root.ole.dirents.map { |dirent| dirent.modify_time || dirent.create_time }.compact.sort.last
- headers['Date'] = [Time.iso8601(time.to_s).rfc2822] if time
- end
- end
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/convert/note-tmail.rb b/vendor/ruby-msg/lib/mapi/convert/note-tmail.rb
deleted file mode 100644
index 9ccc9e0b3..000000000
--- a/vendor/ruby-msg/lib/mapi/convert/note-tmail.rb
+++ /dev/null
@@ -1,287 +0,0 @@
-require 'rubygems'
-require 'tmail'
-
-# these will be removed later
-require 'time'
-require 'mime'
-
-# there is some Msg specific stuff in here.
-
-class TMail::Mail
- def quoted_body= str
- body_port.wopen { |f| f.write str }
- str
- end
-end
-
-module Mapi
- class Message
- def mime
- return @mime if @mime
- # if these headers exist at all, they can be helpful. we may however get a
- # application/ms-tnef mime root, which means there will be little other than
- # headers. we may get nothing.
- # and other times, when received from external, we get the full cigar, boundaries
- # etc and all.
- # sometimes its multipart, with no boundaries. that throws an error. so we'll be more
- # forgiving here
- @mime = Mime.new props.transport_message_headers.to_s, true
- populate_headers
- @mime
- end
-
- def headers
- mime.headers
- end
-
- # copy data from msg properties storage to standard mime. headers
- # i've now seen it where the existing headers had heaps on stuff, and the msg#props had
- # practically nothing. think it was because it was a tnef - msg conversion done by exchange.
- def populate_headers
- # construct a From value
- # should this kind of thing only be done when headers don't exist already? maybe not. if its
- # sent, then modified and saved, the headers could be wrong?
- # hmmm. i just had an example where a mail is sent, from an internal user, but it has transport
- # headers, i think because one recipient was external. the only place the senders email address
- # exists is in the transport headers. so its maybe not good to overwrite from.
- # recipients however usually have smtp address available.
- # maybe we'll do it for all addresses that are smtp? (is that equivalent to
- # sender_email_address !~ /^\//
- name, email = props.sender_name, props.sender_email_address
- if props.sender_addrtype == 'SMTP'
- headers['From'] = if name and email and name != email
- [%{"#{name}" <#{email}>}]
- else
- [email || name]
- end
- elsif !headers.has_key?('From')
- # some messages were never sent, so that sender stuff isn't filled out. need to find another
- # way to get something
- # what about marking whether we thing the email was sent or not? or draft?
- # for partition into an eventual Inbox, Sent, Draft mbox set?
- # i've now seen cases where this stuff is missing, but exists in transport message headers,
- # so maybe i should inhibit this in that case.
- if email
- # disabling this warning for now
- #Log.warn "* no smtp sender email address available (only X.400). creating fake one"
- # this is crap. though i've specially picked the logic so that it generates the correct
- # email addresses in my case (for my organisation).
- # this user stuff will give valid email i think, based on alias.
- user = name ? name.sub(/(.*), (.*)/, "\\2.\\1") : email[/\w+$/].downcase
- domain = (email[%r{^/O=([^/]+)}i, 1].downcase + '.com' rescue email)
- headers['From'] = [name ? %{"#{name}" <#{user}@#{domain}>} : "<#{user}@#{domain}>" ]
- elsif name
- # we only have a name? thats screwed up.
- # disabling this warning for now
- #Log.warn "* no smtp sender email address available (only name). creating fake one"
- headers['From'] = [%{"#{name}"}]
- else
- # disabling this warning for now
- #Log.warn "* no sender email address available at all. FIXME"
- end
- # else we leave the transport message header version
- end
-
- # for all of this stuff, i'm assigning in utf8 strings.
- # thats ok i suppose, maybe i can say its the job of the mime class to handle that.
- # but a lot of the headers are overloaded in different ways. plain string, many strings
- # other stuff. what happens to a person who has a " in their name etc etc. encoded words
- # i suppose. but that then happens before assignment. and can't be automatically undone
- # until the header is decomposed into recipients.
- recips_by_type = recipients.group_by { |r| r.type }
- # i want to the the types in a specific order.
- [:to, :cc, :bcc].each do |type|
- # don't know why i bother, but if we can, we try to sort recipients by the numerical part
- # of the ole name, or just leave it if we can't
- recips = recips_by_type[type]
- recips = (recips.sort_by { |r| r.obj.name[/\d{8}$/].hex } rescue recips)
- # switched to using , for separation, not ;. see issue #4
- # recips.empty? is strange. i wouldn't have thought it possible, but it was right?
- headers[type.to_s.sub(/^(.)/) { $1.upcase }] = [recips.join(', ')] unless recips.empty?
- end
- headers['Subject'] = [props.subject] if props.subject
-
- # fill in a date value. by default, we won't mess with existing value hear
- if !headers.has_key?('Date')
- # we want to get a received date, as i understand it.
- # use this preference order, or pull the most recent?
- keys = %w[message_delivery_time client_submit_time last_modification_time creation_time]
- time = keys.each { |key| break time if time = props.send(key) }
- time = nil unless Date === time
-
- # now convert and store
- # this is a little funky. not sure about time zone stuff either?
- # actually seems ok. maybe its always UTC and interpreted anyway. or can be timezoneless.
- # i have no timezone info anyway.
- # in gmail, i see stuff like 15 Jan 2007 00:48:19 -0000, and it displays as 11:48.
- # can also add .localtime here if desired. but that feels wrong.
- headers['Date'] = [Time.iso8601(time.to_s).rfc2822] if time
- end
-
- # some very simplistic mapping between internet message headers and the
- # mapi properties
- # any of these could be causing duplicates due to case issues. the hack in #to_mime
- # just stops re-duplication at that point. need to move some smarts into the mime
- # code to handle it.
- mapi_header_map = [
- [:internet_message_id, 'Message-ID'],
- [:in_reply_to_id, 'In-Reply-To'],
- # don't set these values if they're equal to the defaults anyway
- [:importance, 'Importance', proc { |val| val.to_s == '1' ? nil : val }],
- [:priority, 'Priority', proc { |val| val.to_s == '1' ? nil : val }],
- [:sensitivity, 'Sensitivity', proc { |val| val.to_s == '0' ? nil : val }],
- # yeah?
- [:conversation_topic, 'Thread-Topic'],
- # not sure of the distinction here
- # :originator_delivery_report_requested ??
- [:read_receipt_requested, 'Disposition-Notification-To', proc { |val| from }]
- ]
- mapi_header_map.each do |mapi, mime, *f|
- next unless q = val = props.send(mapi) or headers.has_key?(mime)
- next if f[0] and !(val = f[0].call(val))
- headers[mime] = [val.to_s]
- end
- end
-
- # redundant?
- def type
- props.message_class[/IPM\.(.*)/, 1].downcase rescue nil
- end
-
- # shortcuts to some things from the headers
- %w[From To Cc Bcc Subject].each do |key|
- define_method(key.downcase) { headers[key].join(' ') if headers.has_key?(key) }
- end
-
- def body_to_tmail
- # to create the body
- # should have some options about serializing rtf. and possibly options to check the rtf
- # for rtf2html conversion, stripping those html tags or other similar stuff. maybe want to
- # ignore it in the cases where it is generated from incoming html. but keep it if it was the
- # source for html and plaintext.
- if props.body_rtf or props.body_html
- # should plain come first?
- part = TMail::Mail.new
- # its actually possible for plain body to be empty, but the others not.
- # if i can get an html version, then maybe a callout to lynx can be made...
- part.parts << TMail::Mail.parse("Content-Type: text/plain\r\n\r\n" + props.body) if props.body
- # this may be automatically unwrapped from the rtf if the rtf includes the html
- part.parts << TMail::Mail.parse("Content-Type: text/html\r\n\r\n" + props.body_html) if props.body_html
- # temporarily disabled the rtf. its just showing up as an attachment anyway.
- #mime.parts << Mime.new("Content-Type: text/rtf\r\n\r\n" + props.body_rtf) if props.body_rtf
- # its thus currently possible to get no body at all if the only body is rtf. that is not
- # really acceptable FIXME
- part['Content-Type'] = 'multipart/alternative'
- part
- else
- # check no header case. content type? etc?. not sure if my Mime class will accept
- Log.debug "taking that other path"
- # body can be nil, hence the to_s
- TMail::Mail.parse "Content-Type: text/plain\r\n\r\n" + props.body.to_s
- end
- end
-
- def to_tmail
- # intended to be used for IPM.note, which is the email type. can use it for others if desired,
- # YMMV
- Log.warn "to_mime used on a #{props.message_class}" unless props.message_class == 'IPM.Note'
- # we always have a body
- mail = body = body_to_tmail
-
- # If we have attachments, we take the current mime root (body), and make it the first child
- # of a new tree that will contain body and attachments.
- unless attachments.empty?
- raise NotImplementedError
- mime = Mime.new "Content-Type: multipart/mixed\r\n\r\n"
- mime.parts << body
- # i don't know any better way to do this. need multipart/related for inline images
- # referenced by cid: urls to work, but don't want to use it otherwise...
- related = false
- attachments.each do |attach|
- part = attach.to_mime
- related = true if part.headers.has_key?('Content-ID') or part.headers.has_key?('Content-Location')
- mime.parts << part
- end
- mime.headers['Content-Type'] = ['multipart/related'] if related
- end
-
- # at this point, mime is either
- # - a single text/plain, consisting of the body ('taking that other path' above. rare)
- # - a multipart/alternative, consiting of a few bodies (plain and html body. common)
- # - a multipart/mixed, consisting of 1 of the above 2 types of bodies, and attachments.
- # we add this standard preamble if its multipart
- # FIXME preamble.replace, and body.replace both suck.
- # preamble= is doable. body= wasn't being done because body will get rewritten from parts
- # if multipart, and is only there readonly. can do that, or do a reparse...
- # The way i do this means that only the first preamble will say it, not preambles of nested
- # multipart chunks.
- mail.quoted_body = "This is a multi-part message in MIME format.\r\n" if mail.multipart?
-
- # now that we have a root, we can mix in all our headers
- headers.each do |key, vals|
- # don't overwrite the content-type, encoding style stuff
- next if mail[key]
- # some new temporary hacks
- next if key =~ /content-type/i and vals[0] =~ /base64/
- #next if mime.headers.keys.map(&:downcase).include? key.downcase
- mail[key] = vals.first
- end
- # just a stupid hack to make the content-type header last, when using OrderedHash
- #mime.headers['Content-Type'] = mime.headers.delete 'Content-Type'
-
- mail
- end
- end
-
- class Attachment
- def to_tmail
- # TODO: smarter mime typing.
- mimetype = props.attach_mime_tag || 'application/octet-stream'
- part = TMail::Mail.parse "Content-Type: #{mimetype}\r\n\r\n"
- part['Content-Disposition'] = %{attachment; filename="#{filename}"}
- part['Content-Transfer-Encoding'] = 'base64'
- part['Content-Location'] = props.attach_content_location if props.attach_content_location
- part['Content-ID'] = props.attach_content_id if props.attach_content_id
- # data.to_s for now. data was nil for some reason.
- # perhaps it was a data object not correctly handled?
- # hmmm, have to use read here. that assumes that the data isa stream.
- # but if the attachment data is a string, then it won't work. possible?
- data_str = if @embedded_msg
- raise NotImplementedError
- mime.headers['Content-Type'] = 'message/rfc822'
- # lets try making it not base64 for now
- mime.headers.delete 'Content-Transfer-Encoding'
- # not filename. rather name, or something else right?
- # maybe it should be inline?? i forget attach_method / access meaning
- mime.headers['Content-Disposition'] = [%{attachment; filename="#{@embedded_msg.subject}"}]
- @embedded_msg.to_mime.to_s
- elsif @embedded_ole
- raise NotImplementedError
- # kind of hacky
- io = StringIO.new
- Ole::Storage.new io do |ole|
- ole.root.type = :dir
- Ole::Storage::Dirent.copy @embedded_ole, ole.root
- end
- io.string
- else
- data.read.to_s
- end
- part.body = @embedded_msg ? data_str : Base64.encode64(data_str).gsub(/\n/, "\r\n")
- part
- end
- end
-
- class Msg < Message
- def populate_headers
- super
- if !headers.has_key?('Date')
- # can employ other methods for getting a time. heres one in a similar vein to msgconvert.pl,
- # ie taking the time from an ole object
- time = @root.ole.dirents.map { |dirent| dirent.modify_time || dirent.create_time }.compact.sort.last
- headers['Date'] = [Time.iso8601(time.to_s).rfc2822] if time
- end
- end
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/msg.rb b/vendor/ruby-msg/lib/mapi/msg.rb
deleted file mode 100644
index fc30a9170..000000000
--- a/vendor/ruby-msg/lib/mapi/msg.rb
+++ /dev/null
@@ -1,440 +0,0 @@
-require 'rubygems'
-require 'ole/storage'
-require 'mapi'
-require 'mapi/rtf'
-
-module Mapi
- #
- # = Introduction
- #
- # Primary class interface to the vagaries of .msg files.
- #
- # The core of the work is done by the <tt>Msg::PropertyStore</tt> class.
- #
- class Msg < Message
- #
- # = Introduction
- #
- # A big compononent of +Msg+ files is the property store, which holds
- # all the key/value pairs of properties. The message itself, and all
- # its <tt>Attachment</tt>s and <tt>Recipient</tt>s have an instance of
- # this class.
- #
- # = Storage model
- #
- # Property keys (tags?) can be either simple hex numbers, in the
- # range 0x0000 - 0xffff, or they can be named properties. In fact,
- # properties in the range 0x0000 to 0x7fff are supposed to be the non-
- # named properties, and can be considered to be in the +PS_MAPI+
- # namespace. (correct?)
- #
- # Named properties are serialized in the 0x8000 to 0xffff range,
- # and are referenced as a guid and long/string pair.
- #
- # There are key ranges, which can be used to imply things generally
- # about keys.
- #
- # Further, we can give symbolic names to most keys, coming from
- # constants in various places. Eg:
- #
- # 0x0037 => subject
- # {00062002-0000-0000-C000-000000000046}/0x8218 => response_status
- # # displayed as categories in outlook
- # {00020329-0000-0000-C000-000000000046}/"Keywords" => categories
- #
- # Futher, there are completely different names, coming from other
- # object models that get mapped to these things (CDO's model,
- # Outlook's model etc). Eg "urn:schemas:httpmail:subject"
- # I think these can be ignored though, as they aren't defined clearly
- # in terms of mapi properties, and i'm really just trying to make
- # a mapi property store. (It should also be relatively easy to
- # support them later.)
- #
- # = Usage
- #
- # The api is driven by a desire to have the simple stuff "just work", ie
- #
- # properties.subject
- # properties.display_name
- #
- # There also needs to be a way to look up properties more specifically:
- #
- # properties[0x0037] # => gets the subject
- # properties[0x0037, PS_MAPI] # => still gets the subject
- # properties['Keywords', PS_PUBLIC_STRINGS] # => gets outlook's categories array
- #
- # The abbreviated versions work by "resolving" the symbols to full keys:
- #
- # # the guid here is just PS_PUBLIC_STRINGS
- # properties.resolve :keywords # => #<Key {00020329-0000-0000-c000-000000000046}/"Keywords">
- # # the result here is actually also a key
- # k = properties.resolve :subject # => 0x0037
- # # it has a guid
- # k.guid == Msg::Properties::PS_MAPI # => true
- #
- # = Parsing
- #
- # There are three objects that need to be parsed to load a +Msg+ property store:
- #
- # 1. The +nameid+ directory (<tt>Properties.parse_nameid</tt>)
- # 2. The many +substg+ objects, whose names should match <tt>Properties::SUBSTG_RX</tt>
- # (<tt>Properties#parse_substg</tt>)
- # 3. The +properties+ file (<tt>Properties#parse_properties</tt>)
- #
- # Understanding of the formats is by no means perfect.
- #
- # = TODO
- #
- # * While the key objects are sufficient, the value objects are just plain
- # ruby types. It currently isn't possible to write to the values, or to know
- # which encoding the value had.
- # * Update this doc.
- # * Perhaps change from eager loading, to be load-on-demand.
- #
- class PropertyStore
- include PropertySet::Constants
- Key = PropertySet::Key
-
- # note that binary and default both use obj.open. not the block form. this means we should
- # #close it later, which we don't. as we're only reading though, it shouldn't matter right?
- # not really good though FIXME
- # change these to use mapi symbolic const names
- ENCODINGS = {
- 0x000d => proc { |obj| obj }, # seems to be used when its going to be a directory instead of a file. eg nested ole. 3701 usually. in which case we shouldn't get here right?
- 0x001f => proc { |obj| Ole::Types::FROM_UTF16.iconv obj.read }, # unicode
- # ascii
- # FIXME hack did a[0..-2] before, seems right sometimes, but for some others it chopped the text. chomp
- 0x001e => proc { |obj| obj.read.chomp 0.chr },
- 0x0102 => proc { |obj| obj.open }, # binary?
- :default => proc { |obj| obj.open }
- }
-
- SUBSTG_RX = /^__substg1\.0_([0-9A-F]{4})([0-9A-F]{4})(?:-([0-9A-F]{8}))?$/
- PROPERTIES_RX = /^__properties_version1\.0$/
- NAMEID_RX = /^__nameid_version1\.0$/
- VALID_RX = /#{SUBSTG_RX}|#{PROPERTIES_RX}|#{NAMEID_RX}/
-
- attr_reader :nameid
-
- def initialize
- @nameid = nil
- # not exactly a cache currently
- @cache = {}
- end
-
- #--
- # The parsing methods
- #++
-
- def self.load obj
- prop = new
- prop.load obj
- prop
- end
-
- # Parse properties from the +Dirent+ obj
- def load obj
- # we need to do the nameid first, as it provides the map for later user defined properties
- if nameid_obj = obj.children.find { |child| child.name =~ NAMEID_RX }
- @nameid = PropertyStore.parse_nameid nameid_obj
- # hack to make it available to all msg files from the same ole storage object
- # FIXME - come up with a neater way
- class << obj.ole
- attr_accessor :msg_nameid
- end
- obj.ole.msg_nameid = @nameid
- elsif obj.ole
- @nameid = obj.ole.msg_nameid rescue nil
- end
- # now parse the actual properties. i think dirs that match the substg should be decoded
- # as properties to. 0x000d is just another encoding, the dir encoding. it should match
- # whether the object is file / dir. currently only example is embedded msgs anyway
- obj.children.each do |child|
- next unless child.file?
- case child.name
- when PROPERTIES_RX
- parse_properties child
- when SUBSTG_RX
- parse_substg(*($~[1..-1].map { |num| num.hex rescue nil } + [child]))
- end
- end
- end
-
- # Read nameid from the +Dirent+ obj, which is used for mapping of named properties keys to
- # proxy keys in the 0x8000 - 0xffff range.
- # Returns a hash of integer -> Key.
- def self.parse_nameid obj
- remaining = obj.children.dup
- guids_obj, props_obj, names_obj =
- %w[__substg1.0_00020102 __substg1.0_00030102 __substg1.0_00040102].map do |name|
- remaining.delete obj/name
- end
-
- # parse guids
- # this is the guids for named properities (other than builtin ones)
- # i think PS_PUBLIC_STRINGS, and PS_MAPI are builtin.
- guids = [PS_PUBLIC_STRINGS] + guids_obj.read.scan(/.{16}/mn).map do |str|
- Ole::Types.load_guid str
- end
-
- # parse names.
- # the string ids for named properties
- # they are no longer parsed, as they're referred to by offset not
- # index. they are simply sequentially packed, as a long, giving
- # the string length, then padding to 4 byte multiple, and repeat.
- names_data = names_obj.read
-
- # parse actual props.
- # not sure about any of this stuff really.
- # should flip a few bits in the real msg, to get a better understanding of how this works.
- props = props_obj.read.scan(/.{8}/mn).map do |str|
- flags, offset = str[4..-1].unpack 'v2'
- # the property will be serialised as this pseudo property, mapping it to this named property
- pseudo_prop = 0x8000 + offset
- named = flags & 1 == 1
- prop = if named
- str_off = *str.unpack('V')
- len = *names_data[str_off, 4].unpack('V')
- Ole::Types::FROM_UTF16.iconv names_data[str_off + 4, len]
- else
- a, b = str.unpack('v2')
- Log.debug "b not 0" if b != 0
- a
- end
- # a bit sus
- guid_off = flags >> 1
- # missing a few builtin PS_*
- Log.debug "guid off < 2 (#{guid_off})" if guid_off < 2
- guid = guids[guid_off - 2]
- [pseudo_prop, Key.new(prop, guid)]
- end
-
- #Log.warn "* ignoring #{remaining.length} objects in nameid" unless remaining.empty?
- # this leaves a bunch of other unknown chunks of data with completely unknown meaning.
- # pp [:unknown, child.name, child.data.unpack('H*')[0].scan(/.{16}/m)]
- Hash[*props.flatten]
- end
-
- # Parse an +Dirent+, as per <tt>msgconvert.pl</tt>. This is how larger properties, such
- # as strings, binary blobs, and other ole sub-directories (eg nested Msg) are stored.
- def parse_substg key, encoding, offset, obj
- if (encoding & 0x1000) != 0
- if !offset
- # there is typically one with no offset first, whose data is a series of numbers
- # equal to the lengths of all the sub parts. gives an implied array size i suppose.
- # maybe you can initialize the array at this time. the sizes are the same as all the
- # ole object sizes anyway, its to pre-allocate i suppose.
- #p obj.data.unpack('V*')
- # ignore this one
- return
- else
- # remove multivalue flag for individual pieces
- encoding &= ~0x1000
- end
- else
- Log.warn "offset specified for non-multivalue encoding #{obj.name}" if offset
- offset = nil
- end
- # offset is for multivalue encodings.
- unless encoder = ENCODINGS[encoding]
- Log.warn "unknown encoding #{encoding}"
- #encoder = proc { |obj| obj.io } #.read }. maybe not a good idea
- encoder = ENCODINGS[:default]
- end
- add_property key, encoder[obj], offset
- end
-
- # For parsing the +properties+ file. Smaller properties are serialized in one chunk,
- # such as longs, bools, times etc. The parsing has problems.
- def parse_properties obj
- data = obj.read
- # don't really understand this that well...
- pad = data.length % 16
- unless (pad == 0 || pad == 8) and data[0...pad] == "\000" * pad
- Log.warn "padding was not as expected #{pad} (#{data.length}) -> #{data[0...pad].inspect}"
- end
- data[pad..-1].scan(/.{16}/mn).each do |data|
- property, encoding = ('%08x' % data.unpack('V')).scan /.{4}/
- key = property.hex
- # doesn't make any sense to me. probably because its a serialization of some internal
- # outlook structure...
- next if property == '0000'
- case encoding
- when '0102', '001e', '001f', '101e', '101f', '000d'
- # ignore on purpose. not sure what its for
- # multivalue versions ignored also
- when '0003' # long
- # don't know what all the other data is for
- add_property key, *data[8, 4].unpack('V')
- when '000b' # boolean
- # again, heaps more data than needed. and its not always 0 or 1.
- # they are in fact quite big numbers. this is wrong.
-# p [property, data[4..-1].unpack('H*')[0]]
- add_property key, data[8, 4].unpack('V')[0] != 0
- when '0040' # systime
- # seems to work:
- add_property key, Ole::Types.load_time(data[8..-1])
- else
- #Log.warn "ignoring data in __properties section, encoding: #{encoding}"
- #Log << data.unpack('H*').inspect + "\n"
- end
- end
- end
-
- def add_property key, value, pos=nil
- # map keys in the named property range through nameid
- if Integer === key and key >= 0x8000
- if !@nameid
- Log.warn "no nameid section yet named properties used"
- key = Key.new key
- elsif real_key = @nameid[key]
- key = real_key
- else
- # i think i hit these when i have a named property, in the PS_MAPI
- # guid
- Log.warn "property in named range not in nameid #{key.inspect}"
- key = Key.new key
- end
- else
- key = Key.new key
- end
- if pos
- @cache[key] ||= []
- Log.warn "duplicate property" unless Array === @cache[key]
- # ^ this is actually a trickier problem. the issue is more that they must all be of
- # the same type.
- @cache[key][pos] = value
- else
- # take the last.
- Log.warn "duplicate property #{key.inspect}" if @cache[key]
- @cache[key] = value
- end
- end
-
- # delegate to cache
- def method_missing name, *args, &block
- @cache.send name, *args, &block
- end
- end
-
- # these 2 will actually be of the form
- # 1\.0_#([0-9A-Z]{8}), where $1 is the 0 based index number in hex
- # should i parse that and use it as an index, or just return in
- # file order? probably should use it later...
- ATTACH_RX = /^__attach_version1\.0_.*/
- RECIP_RX = /^__recip_version1\.0_.*/
- VALID_RX = /#{PropertyStore::VALID_RX}|#{ATTACH_RX}|#{RECIP_RX}/
-
- attr_reader :root
- attr_accessor :close_parent
-
- # Alternate constructor, to create an +Msg+ directly from +arg+ and +mode+, passed
- # directly to Ole::Storage (ie either filename or seekable IO object).
- def self.open arg, mode=nil
- msg = new Ole::Storage.open(arg, mode).root
- # we will close the ole when we are #closed
- msg.close_parent = true
- if block_given?
- begin yield msg
- ensure; msg.close
- end
- else msg
- end
- end
-
- # Create an Msg from +root+, an <tt>Ole::Storage::Dirent</tt> object
- def initialize root
- @root = root
- @close_parent = false
- super PropertySet.new(PropertyStore.load(@root))
- Msg.warn_unknown @root
- end
-
- def self.warn_unknown obj
- # bit of validation. not important if there is extra stuff, though would be
- # interested to know what it is. doesn't check dir/file stuff.
- unknown = obj.children.reject { |child| child.name =~ VALID_RX }
- Log.warn "skipped #{unknown.length} unknown msg object(s)" unless unknown.empty?
- end
-
- def close
- @root.ole.close if @close_parent
- end
-
- def attachments
- @attachments ||= @root.children.
- select { |child| child.dir? and child.name =~ ATTACH_RX }.
- map { |child| Attachment.new child }.
- select { |attach| attach.valid? }
- end
-
- def recipients
- @recipients ||= @root.children.
- select { |child| child.dir? and child.name =~ RECIP_RX }.
- map { |child| Recipient.new child }
- end
-
- class Attachment < Mapi::Attachment
- attr_reader :obj, :properties
- alias props :properties
-
- def initialize obj
- @obj = obj
- @embedded_ole = nil
- @embedded_msg = nil
-
- super PropertySet.new(PropertyStore.load(@obj))
- Msg.warn_unknown @obj
-
- @obj.children.each do |child|
- # temp hack. PropertyStore doesn't do directory properties atm - FIXME
- if child.dir? and child.name =~ PropertyStore::SUBSTG_RX and
- $1 == '3701' and $2.downcase == '000d'
- @embedded_ole = child
- class << @embedded_ole
- def compobj
- return nil unless compobj = self["\001CompObj"]
- compobj.read[/^.{32}([^\x00]+)/m, 1]
- end
-
- def embedded_type
- temp = compobj and return temp
- # try to guess more
- if children.select { |child| child.name =~ /__(substg|properties|recip|attach|nameid)/ }.length > 2
- return 'Microsoft Office Outlook Message'
- end
- nil
- end
- end
- if @embedded_ole.embedded_type == 'Microsoft Office Outlook Message'
- @embedded_msg = Msg.new @embedded_ole
- end
- end
- end
- end
-
- def valid?
- # something i started to notice when handling embedded ole object attachments is
- # the particularly strange case where there are empty attachments
- not props.raw.keys.empty?
- end
- end
-
- #
- # +Recipient+ serves as a container for the +recip+ directories in the .msg.
- # It has things like office_location, business_telephone_number, but I don't
- # think enough to make a vCard out of?
- #
- class Recipient < Mapi::Recipient
- attr_reader :obj, :properties
- alias props :properties
-
- def initialize obj
- @obj = obj
- super PropertySet.new(PropertyStore.load(@obj))
- Msg.warn_unknown @obj
- end
- end
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/property_set.rb b/vendor/ruby-msg/lib/mapi/property_set.rb
deleted file mode 100644
index 199bca525..000000000
--- a/vendor/ruby-msg/lib/mapi/property_set.rb
+++ /dev/null
@@ -1,269 +0,0 @@
-require 'yaml'
-require 'mapi/types'
-require 'mapi/rtf'
-require 'rtf'
-
-module Mapi
- #
- # The Mapi::PropertySet class is used to wrap the lower level Msg or Pst property stores,
- # and provide a consistent and more friendly interface. It allows you to just say:
- #
- # properties.subject
- #
- # instead of:
- #
- # properites.raw[0x0037, PS_MAPI]
- #
- # The underlying store can be just a hash, or lazily loading directly from the file. A good
- # compromise is to cache all the available keys, and just return the values on demand, rather
- # than load up many possibly unwanted values.
- #
- class PropertySet
- # the property set guid constants
- # these guids are all defined with the macro DEFINE_OLEGUID in mapiguid.h.
- # see http://doc.ddart.net/msdn/header/include/mapiguid.h.html
- oleguid = proc do |prefix|
- Ole::Types::Clsid.parse "{#{prefix}-0000-0000-c000-000000000046}"
- end
-
- NAMES = {
- oleguid['00020328'] => 'PS_MAPI',
- oleguid['00020329'] => 'PS_PUBLIC_STRINGS',
- oleguid['00020380'] => 'PS_ROUTING_EMAIL_ADDRESSES',
- oleguid['00020381'] => 'PS_ROUTING_ADDRTYPE',
- oleguid['00020382'] => 'PS_ROUTING_DISPLAY_NAME',
- oleguid['00020383'] => 'PS_ROUTING_ENTRYID',
- oleguid['00020384'] => 'PS_ROUTING_SEARCH_KEY',
- # string properties in this namespace automatically get added to the internet headers
- oleguid['00020386'] => 'PS_INTERNET_HEADERS',
- # theres are bunch of outlook ones i think
- # http://blogs.msdn.com/stephen_griffin/archive/2006/05/10/outlook-2007-beta-documentation-notification-based-indexing-support.aspx
- # IPM.Appointment
- oleguid['00062002'] => 'PSETID_Appointment',
- # IPM.Task
- oleguid['00062003'] => 'PSETID_Task',
- # used for IPM.Contact
- oleguid['00062004'] => 'PSETID_Address',
- oleguid['00062008'] => 'PSETID_Common',
- # didn't find a source for this name. it is for IPM.StickyNote
- oleguid['0006200e'] => 'PSETID_Note',
- # for IPM.Activity. also called the journal?
- oleguid['0006200a'] => 'PSETID_Log',
- }
-
- module Constants
- NAMES.each { |guid, name| const_set name, guid }
- end
-
- include Constants
-
- # +Properties+ are accessed by <tt>Key</tt>s, which are coerced to this class.
- # Includes a bunch of methods (hash, ==, eql?) to allow it to work as a key in
- # a +Hash+.
- #
- # Also contains the code that maps keys to symbolic names.
- class Key
- include Constants
-
- attr_reader :code, :guid
- def initialize code, guid=PS_MAPI
- @code, @guid = code, guid
- end
-
- def to_sym
- # hmmm, for some stuff, like, eg, the message class specific range, sym-ification
- # of the key depends on knowing our message class. i don't want to store anything else
- # here though, so if that kind of thing is needed, it can be passed to this function.
- # worry about that when some examples arise.
- case code
- when Integer
- if guid == PS_MAPI # and < 0x8000 ?
- # the hash should be updated now that i've changed the process
- TAGS['%04x' % code].first[/_(.*)/, 1].downcase.to_sym rescue code
- else
- # handle other guids here, like mapping names to outlook properties, based on the
- # outlook object model.
- NAMED_MAP[self].to_sym rescue code
- end
- when String
- # return something like
- # note that named properties don't go through the map at the moment. so #categories
- # doesn't work yet
- code.downcase.to_sym
- end
- end
-
- def to_s
- to_sym.to_s
- end
-
- # FIXME implement these
- def transmittable?
- # etc, can go here too
- end
-
- # this stuff is to allow it to be a useful key
- def hash
- [code, guid].hash
- end
-
- def == other
- hash == other.hash
- end
-
- alias eql? :==
-
- def inspect
- # maybe the way to do this, would be to be able to register guids
- # in a global lookup, which are used by Clsid#inspect itself, to
- # provide symbolic names...
- guid_str = NAMES[guid] || "{#{guid.format}}" rescue "nil"
- if Integer === code
- hex = '0x%04x' % code
- if guid == PS_MAPI
- # just display as plain hex number
- hex
- else
- "#<Key #{guid_str}/#{hex}>"
- end
- else
- # display full guid and code
- "#<Key #{guid_str}/#{code.inspect}>"
- end
- end
- end
-
- # duplicated here for now
- SUPPORT_DIR = File.dirname(__FILE__) + '/../..'
-
- # data files that provide for the code to symbolic name mapping
- # guids in named_map are really constant references to the above
- TAGS = YAML.load_file "#{SUPPORT_DIR}/data/mapitags.yaml"
- NAMED_MAP = YAML.load_file("#{SUPPORT_DIR}/data/named_map.yaml").inject({}) do |hash, (key, value)|
- hash.update Key.new(key[0], const_get(key[1])) => value
- end
-
- attr_reader :raw
-
- # +raw+ should be an hash-like object that maps <tt>Key</tt>s to values. Should respond_to?
- # [], keys, values, each, and optionally []=, and delete.
- def initialize raw
- @raw = raw
- end
-
- # resolve +arg+ (could be key, code, string, or symbol), and possible +guid+ to a key.
- # returns nil on failure
- def resolve arg, guid=nil
- if guid; Key.new arg, guid
- else
- case arg
- when Key; arg
- when Integer; Key.new arg
- else sym_to_key[arg.to_sym]
- end
- end
- end
-
- # this is the function that creates a symbol to key mapping. currently this works by making a
- # pass through the raw properties, but conceivably you could map symbols to keys using the
- # mapitags directly. problem with that would be that named properties wouldn't map automatically,
- # but maybe thats not too important.
- def sym_to_key
- return @sym_to_key if @sym_to_key
- @sym_to_key = {}
- raw.keys.each do |key|
- sym = key.to_sym
- unless Symbol === sym
- Log.debug "couldn't find symbolic name for key #{key.inspect}"
- next
- end
- if @sym_to_key[sym]
- Log.warn "duplicate key #{key.inspect}"
- # we give preference to PS_MAPI keys
- @sym_to_key[sym] = key if key.guid == PS_MAPI
- else
- # just assign
- @sym_to_key[sym] = key
- end
- end
- @sym_to_key
- end
-
- def keys
- sym_to_key.keys
- end
-
- def values
- sym_to_key.values.map { |key| raw[key] }
- end
-
- def [] arg, guid=nil
- raw[resolve(arg, guid)]
- end
-
- def []= arg, *args
- args.unshift nil if args.length == 1
- guid, value = args
- # FIXME this won't really work properly. it would need to go
- # to TAGS to resolve, as it often won't be there already...
- raw[resolve(arg, guid)] = value
- end
-
- def method_missing name, *args
- if name.to_s !~ /\=$/ and args.empty?
- self[name]
- elsif name.to_s =~ /(.*)\=$/ and args.length == 1
- self[$1] = args[0]
- else
- super
- end
- end
-
- def to_h
- sym_to_key.inject({}) { |hash, (sym, key)| hash.update sym => raw[key] }
- end
-
- def inspect
- "#<#{self.class} " + to_h.sort_by { |k, v| k.to_s }.map do |k, v|
- v = v.inspect
- "#{k}=#{v.length > 32 ? v[0..29] + '..."' : v}"
- end.join(' ') + '>'
- end
-
- # -----
-
- # temporary pseudo tags
-
- # for providing rtf to plain text conversion. later, html to text too.
- def body
- return @body if defined?(@body)
- @body = (self[:body] rescue nil)
- # last resort
- if !@body or @body.strip.empty?
- Log.warn 'creating text body from rtf'
- @body = (::RTF::Converter.rtf2text body_rtf rescue nil)
- end
- @body
- end
-
- # for providing rtf decompression
- def body_rtf
- return @body_rtf if defined?(@body_rtf)
- @body_rtf = (RTF.rtfdecompr rtf_compressed.read rescue nil)
- end
-
- # for providing rtf to html conversion
- def body_html
- return @body_html if defined?(@body_html)
- @body_html = (self[:body_html].read rescue nil)
- @body_html = (RTF.rtf2html body_rtf rescue nil) if !@body_html or @body_html.strip.empty?
- # last resort
- if !@body_html or @body_html.strip.empty?
- Log.warn 'creating html body from rtf'
- @body_html = (::RTF::Converter.rtf2text body_rtf, :html rescue nil)
- end
- @body_html
- end
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/pst.rb b/vendor/ruby-msg/lib/mapi/pst.rb
deleted file mode 100644
index 9ac64b097..000000000
--- a/vendor/ruby-msg/lib/mapi/pst.rb
+++ /dev/null
@@ -1,1806 +0,0 @@
-#
-# = Introduction
-#
-# This file is mostly an attempt to port libpst to ruby, and simplify it in the process. It
-# will leverage much of the existing MAPI => MIME conversion developed for Msg files, and as
-# such is purely concerned with the file structure details.
-#
-# = TODO
-#
-# 1. solve recipient table problem (test4).
-# this is done. turns out it was due to id2 clashes. find better solution
-# 2. check parse consistency. an initial conversion of a 30M file to pst, shows
-# a number of messages conveting badly. compare with libpst too.
-# 3. xattribs
-# 4. generalise the Mapi stuff better
-# 5. refactor index load
-# 6. msg serialization?
-#
-
-=begin
-
-quick plan for cleanup.
-
-have working tests for 97 and 03 file formats, so safe.
-
-want to fix up:
-
-64 bit unpacks scattered around. its ugly. not sure how best to handle it, but am slightly tempted
-to override String#unpack to support a 64 bit little endian unpack (like L vs N/V, for Q). one way or
-another need to fix it. Could really slow everything else down if its parsing the unpack strings twice,
-once in ruby, for every single unpack i do :/
-
-the index loading process, and the lack of shared code between normal vs 64 bit variants, and Index vs Desc.
-should be able to reduce code by factor of 4. also think I should move load code into the class too. then
-maybe have something like:
-
-class Header
- def index_class
- version_2003 ? Index64 : Index
- end
-end
-
-def load_idx
- header.index_class.load_index
-end
-
-OR
-
-def initialize
- @header = ...
- extend @header.index_class::Load
- load_idx
-end
-
-need to think about the role of the mapi code, and Pst::Item etc, but that layer can come later.
-
-=end
-
-require 'mapi'
-require 'enumerator'
-require 'ostruct'
-require 'ole/ranges_io'
-
-module Mapi
-class Pst
- class FormatError < StandardError
- end
-
- # unfortunately there is no Q analogue which is little endian only.
- # this translates T as an unsigned quad word, little endian byte order, to
- # not pollute the rest of the code.
- #
- # didn't want to override String#unpack, cause its too hacky, and incomplete.
- def self.unpack str, unpack_spec
- return str.unpack(unpack_spec) unless unpack_spec['T']
- @unpack_cache ||= {}
- t_offsets, new_spec = @unpack_cache[unpack_spec]
- unless t_offsets
- t_offsets = []
- offset = 0
- new_spec = ''
- unpack_spec.scan(/([^\d])_?(\*|\d+)?/o) do
- num_elems = $1.downcase == 'a' ? 1 : ($2 || 1).to_i
- if $1 == 'T'
- num_elems.times { |i| t_offsets << offset + i }
- new_spec << "V#{num_elems * 2}"
- else
- new_spec << $~[0]
- end
- offset += num_elems
- end
- @unpack_cache[unpack_spec] = [t_offsets, new_spec]
- end
- a = str.unpack(new_spec)
- t_offsets.each do |offset|
- low, high = a[offset, 2]
- a[offset, 2] = low && high ? low + (high << 32) : nil
- end
- a
- end
-
- #
- # this is the header and encryption encapsulation code
- # ----------------------------------------------------------------------------
- #
-
- # class which encapsulates the pst header
- class Header
- SIZE = 512
- MAGIC = 0x2142444e
-
- # these are the constants defined in libpst.c, that
- # are referenced in pst_open()
- INDEX_TYPE_OFFSET = 0x0A
- FILE_SIZE_POINTER = 0xA8
- FILE_SIZE_POINTER_64 = 0xB8
- SECOND_POINTER = 0xBC
- INDEX_POINTER = 0xC4
- SECOND_POINTER_64 = 0xE0
- INDEX_POINTER_64 = 0xF0
- ENC_OFFSET = 0x1CD
-
- attr_reader :magic, :index_type, :encrypt_type, :size
- attr_reader :index1_count, :index1, :index2_count, :index2
- attr_reader :version
- def initialize data
- @magic = data.unpack('N')[0]
- @index_type = data[INDEX_TYPE_OFFSET]
- @version = {0x0e => 1997, 0x17 => 2003}[@index_type]
-
- if version_2003?
- # don't know?
- # >> data1.unpack('V*').zip(data2.unpack('V*')).enum_with_index.select { |(c, d), i| c != d and not [46, 56, 60].include?(i) }.select { |(a, b), i| b == 0 }.map { |(a, b), i| [a / 256, i] }
- # [8, 76], [32768, 84], [128, 89]
- # >> data1.unpack('C*').zip(data2.unpack('C*')).enum_with_index.select { |(c, d), i| c != d and not [184..187, 224..227, 240..243].any? { |r| r === i } }.select { |(a, b), i| b == 0 and ((Math.log(a) / Math.log(2)) % 1) < 0.0001 }
- # [[[2, 0], 61], [[2, 0], 76], [[2, 0], 195], [[2, 0], 257], [[8, 0], 305], [[128, 0], 338], [[128, 0], 357]]
- # i have only 2 psts to base this guess on, so i can't really come up with anything that looks reasonable yet. not sure what the offset is. unfortunately there is so much in the header
- # that isn't understood...
- @encrypt_type = 1
-
- @index2_count, @index2 = data[SECOND_POINTER_64 - 4, 8].unpack('V2')
- @index1_count, @index1 = data[INDEX_POINTER_64 - 4, 8].unpack('V2')
-
- @size = data[FILE_SIZE_POINTER_64, 4].unpack('V')[0]
- else
- @encrypt_type = data[ENC_OFFSET]
-
- @index2_count, @index2 = data[SECOND_POINTER - 4, 8].unpack('V2')
- @index1_count, @index1 = data[INDEX_POINTER - 4, 8].unpack('V2')
-
- @size = data[FILE_SIZE_POINTER, 4].unpack('V')[0]
- end
-
- validate!
- end
-
- def version_2003?
- version == 2003
- end
-
- def encrypted?
- encrypt_type != 0
- end
-
- def validate!
- raise FormatError, "bad signature on pst file (#{'0x%x' % magic})" unless magic == MAGIC
- raise FormatError, "only index types 0x0e and 0x17 are handled (#{'0x%x' % index_type})" unless [0x0e, 0x17].include?(index_type)
- raise FormatError, "only encrytion types 0 and 1 are handled (#{encrypt_type.inspect})" unless [0, 1].include?(encrypt_type)
- end
- end
-
- # compressible encryption! :D
- #
- # simple substitution. see libpst.c
- # maybe test switch to using a String#tr!
- class CompressibleEncryption
- DECRYPT_TABLE = [
- 0x47, 0xf1, 0xb4, 0xe6, 0x0b, 0x6a, 0x72, 0x48,
- 0x85, 0x4e, 0x9e, 0xeb, 0xe2, 0xf8, 0x94, 0x53, # 0x0f
- 0xe0, 0xbb, 0xa0, 0x02, 0xe8, 0x5a, 0x09, 0xab,
- 0xdb, 0xe3, 0xba, 0xc6, 0x7c, 0xc3, 0x10, 0xdd, # 0x1f
- 0x39, 0x05, 0x96, 0x30, 0xf5, 0x37, 0x60, 0x82,
- 0x8c, 0xc9, 0x13, 0x4a, 0x6b, 0x1d, 0xf3, 0xfb, # 0x2f
- 0x8f, 0x26, 0x97, 0xca, 0x91, 0x17, 0x01, 0xc4,
- 0x32, 0x2d, 0x6e, 0x31, 0x95, 0xff, 0xd9, 0x23, # 0x3f
- 0xd1, 0x00, 0x5e, 0x79, 0xdc, 0x44, 0x3b, 0x1a,
- 0x28, 0xc5, 0x61, 0x57, 0x20, 0x90, 0x3d, 0x83, # 0x4f
- 0xb9, 0x43, 0xbe, 0x67, 0xd2, 0x46, 0x42, 0x76,
- 0xc0, 0x6d, 0x5b, 0x7e, 0xb2, 0x0f, 0x16, 0x29, # 0x5f
- 0x3c, 0xa9, 0x03, 0x54, 0x0d, 0xda, 0x5d, 0xdf,
- 0xf6, 0xb7, 0xc7, 0x62, 0xcd, 0x8d, 0x06, 0xd3, # 0x6f
- 0x69, 0x5c, 0x86, 0xd6, 0x14, 0xf7, 0xa5, 0x66,
- 0x75, 0xac, 0xb1, 0xe9, 0x45, 0x21, 0x70, 0x0c, # 0x7f
- 0x87, 0x9f, 0x74, 0xa4, 0x22, 0x4c, 0x6f, 0xbf,
- 0x1f, 0x56, 0xaa, 0x2e, 0xb3, 0x78, 0x33, 0x50, # 0x8f
- 0xb0, 0xa3, 0x92, 0xbc, 0xcf, 0x19, 0x1c, 0xa7,
- 0x63, 0xcb, 0x1e, 0x4d, 0x3e, 0x4b, 0x1b, 0x9b, # 0x9f
- 0x4f, 0xe7, 0xf0, 0xee, 0xad, 0x3a, 0xb5, 0x59,
- 0x04, 0xea, 0x40, 0x55, 0x25, 0x51, 0xe5, 0x7a, # 0xaf
- 0x89, 0x38, 0x68, 0x52, 0x7b, 0xfc, 0x27, 0xae,
- 0xd7, 0xbd, 0xfa, 0x07, 0xf4, 0xcc, 0x8e, 0x5f, # 0xbf
- 0xef, 0x35, 0x9c, 0x84, 0x2b, 0x15, 0xd5, 0x77,
- 0x34, 0x49, 0xb6, 0x12, 0x0a, 0x7f, 0x71, 0x88, # 0xcf
- 0xfd, 0x9d, 0x18, 0x41, 0x7d, 0x93, 0xd8, 0x58,
- 0x2c, 0xce, 0xfe, 0x24, 0xaf, 0xde, 0xb8, 0x36, # 0xdf
- 0xc8, 0xa1, 0x80, 0xa6, 0x99, 0x98, 0xa8, 0x2f,
- 0x0e, 0x81, 0x65, 0x73, 0xe4, 0xc2, 0xa2, 0x8a, # 0xef
- 0xd4, 0xe1, 0x11, 0xd0, 0x08, 0x8b, 0x2a, 0xf2,
- 0xed, 0x9a, 0x64, 0x3f, 0xc1, 0x6c, 0xf9, 0xec # 0xff
- ]
-
- ENCRYPT_TABLE = [nil] * 256
- DECRYPT_TABLE.each_with_index { |i, j| ENCRYPT_TABLE[i] = j }
-
- def self.decrypt_alt encrypted
- decrypted = ''
- encrypted.length.times { |i| decrypted << DECRYPT_TABLE[encrypted[i]] }
- decrypted
- end
-
- def self.encrypt_alt decrypted
- encrypted = ''
- decrypted.length.times { |i| encrypted << ENCRYPT_TABLE[decrypted[i]] }
- encrypted
- end
-
- # an alternate implementation that is possibly faster....
- # TODO - bench
- DECRYPT_STR, ENCRYPT_STR = [DECRYPT_TABLE, (0...256)].map do |values|
- values.map { |i| i.chr }.join.gsub(/([\^\-\\])/, "\\\\\\1")
- end
-
- def self.decrypt encrypted
- encrypted.tr ENCRYPT_STR, DECRYPT_STR
- end
-
- def self.encrypt decrypted
- decrypted.tr DECRYPT_STR, ENCRYPT_STR
- end
- end
-
- class RangesIOEncryptable < RangesIO
- def initialize io, mode='r', params={}
- mode, params = 'r', mode if Hash === mode
- @decrypt = !!params[:decrypt]
- super
- end
-
- def encrypted?
- @decrypt
- end
-
- def read limit=nil
- buf = super
- buf = CompressibleEncryption.decrypt(buf) if encrypted?
- buf
- end
- end
-
- attr_reader :io, :header, :idx, :desc, :special_folder_ids
-
- # corresponds to
- # * pst_open
- # * pst_load_index
- def initialize io
- @io = io
- io.pos = 0
- @header = Header.new io.read(Header::SIZE)
-
- # would prefer this to be in Header#validate, but it doesn't have the io size.
- # should perhaps downgrade this to just be a warning...
- raise FormatError, "header size field invalid (#{header.size} != #{io.size}}" unless header.size == io.size
-
- load_idx
- load_desc
- load_xattrib
-
- @special_folder_ids = {}
- end
-
- def encrypted?
- @header.encrypted?
- end
-
- # until i properly fix logging...
- def warn s
- Mapi::Log.warn s
- end
-
- #
- # this is the index and desc record loading code
- # ----------------------------------------------------------------------------
- #
-
- ToTree = Module.new
-
- module Index2
- BLOCK_SIZE = 512
- module RecursiveLoad
- def load_chain
- #...
- end
- end
-
- module Base
- def read
- #...
- end
- end
-
- class Version1997 < Struct.new(:a)#...)
- SIZE = 12
-
- include RecursiveLoad
- include Base
- end
-
- class Version2003 < Struct.new(:a)#...)
- SIZE = 24
-
- include RecursiveLoad
- include Base
- end
- end
-
- module Desc2
- module Base
- def desc
- #...
- end
- end
-
- class Version1997 < Struct.new(:a)#...)
- #include Index::RecursiveLoad
- include Base
- end
-
- class Version2003 < Struct.new(:a)#...)
- #include Index::RecursiveLoad
- include Base
- end
- end
-
- # more constants from libpst.c
- # these relate to the index block
- ITEM_COUNT_OFFSET = 0x1f0 # count byte
- LEVEL_INDICATOR_OFFSET = 0x1f3 # node or leaf
- BACKLINK_OFFSET = 0x1f8 # backlink u1 value
-
- # these 3 classes are used to hold various file records
-
- # pst_index
- class Index < Struct.new(:id, :offset, :size, :u1)
- UNPACK_STR = 'VVvv'
- SIZE = 12
- BLOCK_SIZE = 512 # index blocks was 516 but bogus
- COUNT_MAX = 41 # max active items (ITEM_COUNT_OFFSET / Index::SIZE = 41)
-
- attr_accessor :pst
- def initialize data
- data = Pst.unpack data, UNPACK_STR if String === data
- super(*data)
- end
-
- def type
- @type ||= begin
- if id & 0x2 == 0
- :data
- else
- first_byte, second_byte = read.unpack('CC')
- if first_byte == 1
- raise second_byte unless second_byte == 1
- :data_chain_header
- elsif first_byte == 2
- raise second_byte unless second_byte == 0
- :id2_assoc
- else
- raise FormatError, 'unknown first byte for block - %p' % first_byte
- end
- end
- end
- end
-
- def data?
- (id & 0x2) == 0
- end
-
- def read decrypt=true
- # only data blocks are every encrypted
- decrypt = false unless data?
- pst.pst_read_block_size offset, size, decrypt
- end
-
- # show all numbers in hex
- def inspect
- super.gsub(/=(\d+)/) { '=0x%x' % $1.to_i }.sub(/Index /, "Index type=#{type.inspect}, ")
- end
- end
-
- # mostly guesses.
- ITEM_COUNT_OFFSET_64 = 0x1e8
- LEVEL_INDICATOR_OFFSET_64 = 0x1eb # diff of 3 between these 2 as above...
-
- # will maybe inherit from Index64, in order to get the same #type function.
- class Index64 < Index
- UNPACK_STR = 'TTvvV'
- SIZE = 24
- BLOCK_SIZE = 512
- COUNT_MAX = 20 # bit of a guess really. 512 / 24 = 21, but doesn't leave enough header room
-
- # this is the extra item on the end of the UNPACK_STR above
- attr_accessor :u2
-
- def initialize data
- data = Pst.unpack data, UNPACK_STR if String === data
- @u2 = data.pop
- super data
- end
-
- def inspect
- super.sub(/>$/, ', u2=%p>' % u2)
- end
-
- def self.load_chain io, header
- load_idx_rec io, header.index1, 0, 0
- end
-
- # almost identical to load code for Index, just different offsets and unpack strings.
- # can probably merge them, or write a generic load_tree function or something.
- def self.load_idx_rec io, offset, linku1, start_val
- io.seek offset
- buf = io.read BLOCK_SIZE
- idxs = []
-
- item_count = buf[ITEM_COUNT_OFFSET_64]
- raise "have too many active items in index (#{item_count})" if item_count > COUNT_MAX
-
- #idx = Index.new buf[BACKLINK_OFFSET, Index::SIZE]
- #raise 'blah 1' unless idx.id == linku1
-
- if buf[LEVEL_INDICATOR_OFFSET_64] == 0
- # leaf pointers
- # split the data into item_count index objects
- buf[0, SIZE * item_count].scan(/.{#{SIZE}}/mo).each_with_index do |data, i|
- idx = new data
- # first entry
- raise 'blah 3' if i == 0 and start_val != 0 and idx.id != start_val
- #idx.pst = self
- break if idx.id == 0
- idxs << idx
- end
- else
- # node pointers
- # split the data into item_count table pointers
- buf[0, SIZE * item_count].scan(/.{#{SIZE}}/mo).each_with_index do |data, i|
- start, u1, offset = Pst.unpack data, 'T3'
- # for the first value, we expect the start to be equal
- raise 'blah 3' if i == 0 and start_val != 0 and start != start_val
- break if start == 0
- idxs += load_idx_rec io, offset, u1, start
- end
- end
-
- idxs
- end
- end
-
- # pst_desc
- class Desc64 < Struct.new(:desc_id, :idx_id, :idx2_id, :parent_desc_id, :u2)
- UNPACK_STR = 'T3VV'
- SIZE = 32
- BLOCK_SIZE = 512 # descriptor blocks was 520 but bogus
- COUNT_MAX = 15 # guess as per Index64
-
- include RecursivelyEnumerable
-
- attr_accessor :pst
- attr_reader :children
- def initialize data
- super(*Pst.unpack(data, UNPACK_STR))
- @children = []
- end
-
- def desc
- pst.idx_from_id idx_id
- end
-
- def list_index
- pst.idx_from_id idx2_id
- end
-
- def self.load_chain io, header
- load_desc_rec io, header.index2, 0, 0x21
- end
-
- def self.load_desc_rec io, offset, linku1, start_val
- io.seek offset
- buf = io.read BLOCK_SIZE
- descs = []
- item_count = buf[ITEM_COUNT_OFFSET_64]
-
- # not real desc
- #desc = Desc.new buf[BACKLINK_OFFSET, 4]
- #raise 'blah 1' unless desc.desc_id == linku1
-
- if buf[LEVEL_INDICATOR_OFFSET_64] == 0
- # leaf pointers
- raise "have too many active items in index (#{item_count})" if item_count > COUNT_MAX
- # split the data into item_count desc objects
- buf[0, SIZE * item_count].scan(/.{#{SIZE}}/mo).each_with_index do |data, i|
- desc = new data
- # first entry
- raise 'blah 3' if i == 0 and start_val != 0 and desc.desc_id != start_val
- break if desc.desc_id == 0
- descs << desc
- end
- else
- # node pointers
- raise "have too many active items in index (#{item_count})" if item_count > Index64::COUNT_MAX
- # split the data into item_count table pointers
- buf[0, Index64::SIZE * item_count].scan(/.{#{Index64::SIZE}}/mo).each_with_index do |data, i|
- start, u1, offset = Pst.unpack data, 'T3'
- # for the first value, we expect the start to be equal note that ids -1, so even for the
- # first we expect it to be equal. thats the 0x21 (dec 33) desc record. this means we assert
- # that the first desc record is always 33...
- # thats because 0x21 is the pst root itself...
- raise 'blah 3' if i == 0 and start_val != -1 and start != start_val
- # this shouldn't really happen i'd imagine
- break if start == 0
- descs += load_desc_rec io, offset, u1, start
- end
- end
-
- descs
- end
-
- def each_child(&block)
- @children.each(&block)
- end
- end
-
- # _pst_table_ptr_struct
- class TablePtr < Struct.new(:start, :u1, :offset)
- UNPACK_STR = 'V3'
- SIZE = 12
-
- def initialize data
- data = data.unpack(UNPACK_STR) if String === data
- super(*data)
- end
- end
-
- # pst_desc
- # idx_id is a pointer to an idx record which gets the primary data stream for the Desc record.
- # idx2_id gets you an idx record, that when read gives you an ID2 association list, which just maps
- # another set of ids to index values
- class Desc < Struct.new(:desc_id, :idx_id, :idx2_id, :parent_desc_id)
- UNPACK_STR = 'V4'
- SIZE = 16
- BLOCK_SIZE = 512 # descriptor blocks was 520 but bogus
- COUNT_MAX = 31 # max active desc records (ITEM_COUNT_OFFSET / Desc::SIZE = 31)
-
- include ToTree
-
- attr_accessor :pst
- attr_reader :children
- def initialize data
- super(*data.unpack(UNPACK_STR))
- @children = []
- end
-
- def desc
- pst.idx_from_id idx_id
- end
-
- def list_index
- pst.idx_from_id idx2_id
- end
-
- # show all numbers in hex
- def inspect
- super.gsub(/=(\d+)/) { '=0x%x' % $1.to_i }
- end
- end
-
- # corresponds to
- # * _pst_build_id_ptr
- def load_idx
- @idx = []
- @idx_offsets = []
- if header.version_2003?
- @idx = Index64.load_chain io, header
- @idx.each { |idx| idx.pst = self }
- else
- load_idx_rec header.index1, header.index1_count, 0
- end
-
- # we'll typically be accessing by id, so create a hash as a lookup cache
- @idx_from_id = {}
- @idx.each do |idx|
- warn "there are duplicate idx records with id #{idx.id}" if @idx_from_id[idx.id]
- @idx_from_id[idx.id] = idx
- end
- end
-
- # load the flat idx table, which maps ids to file ranges. this is the recursive helper
- #
- # corresponds to
- # * _pst_build_id_ptr
- def load_idx_rec offset, linku1, start_val
- @idx_offsets << offset
-
- #_pst_read_block_size(pf, offset, BLOCK_SIZE, &buf, 0, 0) < BLOCK_SIZE)
- buf = pst_read_block_size offset, Index::BLOCK_SIZE, false
-
- item_count = buf[ITEM_COUNT_OFFSET]
- raise "have too many active items in index (#{item_count})" if item_count > Index::COUNT_MAX
-
- idx = Index.new buf[BACKLINK_OFFSET, Index::SIZE]
- raise 'blah 1' unless idx.id == linku1
-
- if buf[LEVEL_INDICATOR_OFFSET] == 0
- # leaf pointers
- # split the data into item_count index objects
- buf[0, Index::SIZE * item_count].scan(/.{#{Index::SIZE}}/mo).each_with_index do |data, i|
- idx = Index.new data
- # first entry
- raise 'blah 3' if i == 0 and start_val != 0 and idx.id != start_val
- idx.pst = self
- # this shouldn't really happen i'd imagine
- break if idx.id == 0
- @idx << idx
- end
- else
- # node pointers
- # split the data into item_count table pointers
- buf[0, TablePtr::SIZE * item_count].scan(/.{#{TablePtr::SIZE}}/mo).each_with_index do |data, i|
- table = TablePtr.new data
- # for the first value, we expect the start to be equal
- raise 'blah 3' if i == 0 and start_val != 0 and table.start != start_val
- # this shouldn't really happen i'd imagine
- break if table.start == 0
- load_idx_rec table.offset, table.u1, table.start
- end
- end
- end
-
- # most access to idx objects will use this function
- #
- # corresponds to
- # * _pst_getID
- def idx_from_id id
- @idx_from_id[id]
- end
-
- # corresponds to
- # * _pst_build_desc_ptr
- # * record_descriptor
- def load_desc
- @desc = []
- @desc_offsets = []
- if header.version_2003?
- @desc = Desc64.load_chain io, header
- @desc.each { |desc| desc.pst = self }
- else
- load_desc_rec header.index2, header.index2_count, 0x21
- end
-
- # first create a lookup cache
- @desc_from_id = {}
- @desc.each do |desc|
- desc.pst = self
- warn "there are duplicate desc records with id #{desc.desc_id}" if @desc_from_id[desc.desc_id]
- @desc_from_id[desc.desc_id] = desc
- end
-
- # now turn the flat list of loaded desc records into a tree
-
- # well, they have no parent, so they're more like, the toplevel descs.
- @orphans = []
- # now assign each node to the parents child array, putting the orphans in the above
- @desc.each do |desc|
- parent = @desc_from_id[desc.parent_desc_id]
- # note, besides this, its possible to create other circular structures.
- if parent == desc
- # this actually happens usually, for the root_item it appears.
- #warn "desc record's parent is itself (#{desc.inspect})"
- # maybe add some more checks in here for circular structures
- elsif parent
- parent.children << desc
- next
- end
- @orphans << desc
- end
-
- # maybe change this to some sort of sane-ness check. orphans are expected
-# warn "have #{@orphans.length} orphan desc record(s)." unless @orphans.empty?
- end
-
- # load the flat list of desc records recursively
- #
- # corresponds to
- # * _pst_build_desc_ptr
- # * record_descriptor
- def load_desc_rec offset, linku1, start_val
- @desc_offsets << offset
-
- buf = pst_read_block_size offset, Desc::BLOCK_SIZE, false
- item_count = buf[ITEM_COUNT_OFFSET]
-
- # not real desc
- desc = Desc.new buf[BACKLINK_OFFSET, 4]
- raise 'blah 1' unless desc.desc_id == linku1
-
- if buf[LEVEL_INDICATOR_OFFSET] == 0
- # leaf pointers
- raise "have too many active items in index (#{item_count})" if item_count > Desc::COUNT_MAX
- # split the data into item_count desc objects
- buf[0, Desc::SIZE * item_count].scan(/.{#{Desc::SIZE}}/mo).each_with_index do |data, i|
- desc = Desc.new data
- # first entry
- raise 'blah 3' if i == 0 and start_val != 0 and desc.desc_id != start_val
- # this shouldn't really happen i'd imagine
- break if desc.desc_id == 0
- @desc << desc
- end
- else
- # node pointers
- raise "have too many active items in index (#{item_count})" if item_count > Index::COUNT_MAX
- # split the data into item_count table pointers
- buf[0, TablePtr::SIZE * item_count].scan(/.{#{TablePtr::SIZE}}/mo).each_with_index do |data, i|
- table = TablePtr.new data
- # for the first value, we expect the start to be equal note that ids -1, so even for the
- # first we expect it to be equal. thats the 0x21 (dec 33) desc record. this means we assert
- # that the first desc record is always 33...
- raise 'blah 3' if i == 0 and start_val != -1 and table.start != start_val
- # this shouldn't really happen i'd imagine
- break if table.start == 0
- load_desc_rec table.offset, table.u1, table.start
- end
- end
- end
-
- # as for idx
- #
- # corresponds to:
- # * _pst_getDptr
- def desc_from_id id
- @desc_from_id[id]
- end
-
- # corresponds to
- # * pst_load_extended_attributes
- def load_xattrib
- unless desc = desc_from_id(0x61)
- warn "no extended attributes desc record found"
- return
- end
- unless desc.desc
- warn "no desc idx for extended attributes"
- return
- end
- if desc.list_index
- end
- #warn "skipping loading xattribs"
- # FIXME implement loading xattribs
- end
-
- # corresponds to:
- # * _pst_read_block_size
- # * _pst_read_block ??
- # * _pst_ff_getIDblock_dec ??
- # * _pst_ff_getIDblock ??
- def pst_read_block_size offset, size, decrypt=true
- io.seek offset
- buf = io.read size
- warn "tried to read #{size} bytes but only got #{buf.length}" if buf.length != size
- encrypted? && decrypt ? CompressibleEncryption.decrypt(buf) : buf
- end
-
- #
- # id2
- # ----------------------------------------------------------------------------
- #
-
- class ID2Assoc < Struct.new(:id2, :id, :table2)
- UNPACK_STR = 'V3'
- SIZE = 12
-
- def initialize data
- data = data.unpack(UNPACK_STR) if String === data
- super(*data)
- end
- end
-
- class ID2Assoc64 < Struct.new(:id2, :u1, :id, :table2)
- UNPACK_STR = 'VVT2'
- SIZE = 24
-
- def initialize data
- if String === data
- data = Pst.unpack data, UNPACK_STR
- end
- super(*data)
- end
-
- def self.load_chain idx
- buf = idx.read
- type, count = buf.unpack 'v2'
- unless type == 0x0002
- raise 'unknown id2 type 0x%04x' % type
- #return
- end
- id2 = []
- count.times do |i|
- assoc = new buf[8 + SIZE * i, SIZE]
- id2 << assoc
- if assoc.table2 != 0
- id2 += load_chain idx.pst.idx_from_id(assoc.table2)
- end
- end
- id2
- end
- end
-
- class ID2Mapping
- attr_reader :list
- def initialize pst, list
- @pst = pst
- @list = list
- # create a lookup.
- @id_from_id2 = {}
- @list.each do |id2|
- # NOTE we take the last value seen value if there are duplicates. this "fixes"
- # test4-o1997.pst for the time being.
- warn "there are duplicate id2 records with id #{id2.id2}" if @id_from_id2[id2.id2]
- next if @id_from_id2[id2.id2]
- @id_from_id2[id2.id2] = id2.id
- end
- end
-
- # TODO: fix logging
- def warn s
- Mapi::Log.warn s
- end
-
- # corresponds to:
- # * _pst_getID2
- def [] id
- #id2 = @list.find { |x| x.id2 == id }
- id = @id_from_id2[id]
- id and @pst.idx_from_id(id)
- end
- end
-
- def load_idx2 idx
- if header.version_2003?
- id2 = ID2Assoc64.load_chain idx
- else
- id2 = load_idx2_rec idx
- end
- ID2Mapping.new self, id2
- end
-
- # corresponds to
- # * _pst_build_id2
- def load_idx2_rec idx
- # i should perhaps use a idx chain style read here?
- buf = pst_read_block_size idx.offset, idx.size, false
- type, count = buf.unpack 'v2'
- unless type == 0x0002
- raise 'unknown id2 type 0x%04x' % type
- #return
- end
- id2 = []
- count.times do |i|
- assoc = ID2Assoc.new buf[4 + ID2Assoc::SIZE * i, ID2Assoc::SIZE]
- id2 << assoc
- if assoc.table2 != 0
- id2 += load_idx2_rec idx_from_id(assoc.table2)
- end
- end
- id2
- end
-
- class RangesIOIdxChain < RangesIOEncryptable
- def initialize pst, idx_head
- @idxs = pst.id2_block_idx_chain idx_head
- # whether or not a given idx needs encrypting
- decrypts = @idxs.map do |idx|
- decrypt = (idx.id & 2) != 0 ? false : pst.encrypted?
- end.uniq
- raise NotImplementedError, 'partial encryption in RangesIOID2' if decrypts.length > 1
- decrypt = decrypts.first
- # convert idxs to ranges
- ranges = @idxs.map { |idx| [idx.offset, idx.size] }
- super pst.io, :ranges => ranges, :decrypt => decrypt
- end
- end
-
- class RangesIOID2 < RangesIOIdxChain
- def self.new pst, id2, idx2
- RangesIOIdxChain.new pst, idx2[id2]
- end
- end
-
- # corresponds to:
- # * _pst_ff_getID2block
- # * _pst_ff_getID2data
- # * _pst_ff_compile_ID
- def id2_block_idx_chain idx
- if (idx.id & 0x2) == 0
- [idx]
- else
- buf = idx.read
- type, fdepth, count = buf[0, 4].unpack 'CCv'
- unless type == 1 # libpst.c:3958
- warn 'Error in idx_chain - %p, %p, %p - attempting to ignore' % [type, fdepth, count]
- return [idx]
- end
- # there are 4 unaccounted for bytes here, 4...8
- if header.version_2003?
- ids = buf[8, count * 8].unpack("T#{count}")
- else
- ids = buf[8, count * 4].unpack('V*')
- end
- if fdepth == 1
- ids.map { |id| idx_from_id id }
- else
- ids.map { |id| id2_block_idx_chain idx_from_id(id) }.flatten
- end
- end
- end
-
- #
- # main block parsing code. gets raw properties
- # ----------------------------------------------------------------------------
- #
-
- # the job of this class, is to take a desc record, and be able to enumerate through the
- # mapi properties of the associated thing.
- #
- # corresponds to
- # * _pst_parse_block
- # * _pst_process (in some ways. although perhaps thats more the Item::Properties#add_property)
- class BlockParser
- include Mapi::Types::Constants
-
- TYPES = {
- 0xbcec => 1,
- 0x7cec => 2,
- # type 3 is removed. an artifact of not handling the indirect blocks properly in libpst.
- }
-
- PR_SUBJECT = PropertySet::TAGS.find { |num, (name, type)| name == 'PR_SUBJECT' }.first.hex
- PR_BODY_HTML = PropertySet::TAGS.find { |num, (name, type)| name == 'PR_BODY_HTML' }.first.hex
-
- # this stuff could maybe be moved to Ole::Types? or leverage it somehow?
- # whether or not a type is immeidate is more a property of the pst encoding though i expect.
- # what i probably can add is a generic concept of whether a type is of variadic length or not.
-
- # these lists are very incomplete. think they are largely copied from libpst
-
- IMMEDIATE_TYPES = [
- PT_SHORT, PT_LONG, PT_BOOLEAN
- ]
-
- INDIRECT_TYPES = [
- PT_DOUBLE, PT_OBJECT,
- 0x0014, # whats this? probably something like PT_LONGLONG, given the correspondence with the
- # ole variant types. (= VT_I8)
- PT_STRING8, PT_UNICODE, # unicode isn't in libpst, but added here for outlook 2003 down the track
- PT_SYSTIME,
- 0x0048, # another unknown
- 0x0102, # this is PT_BINARY vs PT_CLSID
- #0x1003, # these are vector types, but they're commented out for now because i'd expect that
- #0x1014, # there's extra decoding needed that i'm not doing. (probably just need a simple
- # # PT_* => unpack string mapping for the immediate types, and just do unpack('V*') etc
- #0x101e,
- #0x1102
- ]
-
- # the attachment and recipient arrays appear to be always stored with these fixed
- # id2 values. seems strange. are there other extra streams? can find out by making higher
- # level IO wrapper, which has the id2 value, and doing the diff of available id2 values versus
- # used id2 values in properties of an item.
- ID2_ATTACHMENTS = 0x671
- ID2_RECIPIENTS = 0x692
-
- attr_reader :desc, :data, :data_chunks, :offset_tables
- def initialize desc
- raise FormatError, "unable to get associated index record for #{desc.inspect}" unless desc.desc
- @desc = desc
- #@data = desc.desc.read
- if Pst::Index === desc.desc
- #@data = RangesIOIdxChain.new(desc.pst, desc.desc).read
- idxs = desc.pst.id2_block_idx_chain desc.desc
- # this gets me the plain index chain.
- else
- # fake desc
- #@data = desc.desc.read
- idxs = [desc.desc]
- end
-
- @data_chunks = idxs.map { |idx| idx.read }
- @data = @data_chunks.first
-
- load_header
-
- @index_offsets = [@index_offset] + @data_chunks[1..-1].map { |chunk| chunk.unpack('v')[0] }
- @offset_tables = []
- @ignored = []
- @data_chunks.zip(@index_offsets).each do |chunk, offset|
- ignore = chunk[offset, 2].unpack('v')[0]
- @ignored << ignore
-# p ignore
- @offset_tables.push offset_table = []
- # maybe its ok if there aren't to be any values ?
- raise FormatError if offset == 0
- offsets = chunk[offset + 2..-1].unpack('v*')
- #p offsets
- offsets[0, ignore + 2].each_cons 2 do |from, to|
- #next if to == 0
- raise FormatError, [from, to].inspect if from > to
- offset_table << [from, to]
- end
- end
-
- @offset_table = @offset_tables.first
- @idxs = idxs
-
- # now, we may have multiple different blocks
- end
-
- # a given desc record may or may not have associated idx2 data. we lazily load it here, so it will never
- # actually be requested unless get_data_indirect actually needs to use it.
- def idx2
- return @idx2 if @idx2
- raise FormatError, 'idx2 requested but no idx2 available' unless desc.list_index
- # should check this can't return nil
- @idx2 = desc.pst.load_idx2 desc.list_index
- end
-
- def load_header
- @index_offset, type, @offset1 = data.unpack 'vvV'
- raise FormatError, 'unknown block type signature 0x%04x' % type unless TYPES[type]
- @type = TYPES[type]
- end
-
- # based on the value of offset, return either some data from buf, or some data from the
- # id2 chain id2, where offset is some key into a lookup table that is stored as the id2
- # chain. i think i may need to create a BlockParser class that wraps up all this mess.
- #
- # corresponds to:
- # * _pst_getBlockOffsetPointer
- # * _pst_getBlockOffset
- def get_data_indirect offset
- return get_data_indirect_io(offset).read
-
- if offset == 0
- nil
- elsif (offset & 0xf) == 0xf
- RangesIOID2.new(desc.pst, offset, idx2).read
- else
- low, high = offset & 0xf, offset >> 4
- raise FormatError if low != 0 or (high & 0x1) != 0 or (high / 2) > @offset_table.length
- from, to = @offset_table[high / 2]
- data[from...to]
- end
- end
-
- def get_data_indirect_io offset
- if offset == 0
- nil
- elsif (offset & 0xf) == 0xf
- if idx2[offset]
- RangesIOID2.new desc.pst, offset, idx2
- else
- warn "tried to get idx2 record for #{offset} but failed"
- return StringIO.new('')
- end
- else
- low, high = offset & 0xf, offset >> 4
- if low != 0 or (high & 0x1) != 0
-# raise FormatError,
- warn "bad - #{low} #{high} (1)"
- return StringIO.new('')
- end
- # lets see which block it should come from.
- block_idx, i = high.divmod 4096
- unless block_idx < @data_chunks.length
- warn "bad - block_idx to high (not #{block_idx} < #{@data_chunks.length})"
- return StringIO.new('')
- end
- data_chunk, offset_table = @data_chunks[block_idx], @offset_tables[block_idx]
- if i / 2 >= offset_table.length
- warn "bad - #{low} #{high} - #{i / 2} >= #{offset_table.length} (2)"
- return StringIO.new('')
- end
- #warn "ok - #{low} #{high} #{offset_table.length}"
- from, to = offset_table[i / 2]
- StringIO.new data_chunk[from...to]
- end
- end
-
- def handle_indirect_values key, type, value
- case type
- when PT_BOOLEAN
- value = value != 0
- when *IMMEDIATE_TYPES # not including PT_BOOLEAN which we just did above
- # no processing current applied (needed?).
- when *INDIRECT_TYPES
- # the value is a pointer
- if String === value # ie, value size > 4 above
- value = StringIO.new value
- else
- value = get_data_indirect_io(value)
- end
- # keep strings as immediate values for now, for compatability with how i set up
- # Msg::Properties::ENCODINGS
- if value
- if type == PT_STRING8
- value = value.read
- elsif type == PT_UNICODE
- value = Ole::Types::FROM_UTF16.iconv value.read
- end
- end
- # special subject handling
- if key == PR_BODY_HTML and value
- # to keep the msg code happy, which thinks body_html will be an io
- # although, in 2003 version, they are 0102 already
- value = StringIO.new value unless value.respond_to?(:read)
- end
- if key == PR_SUBJECT and value
- ignore, offset = value.unpack 'C2'
- offset = (offset == 1 ? nil : offset - 3)
- value = value[2..-1]
-=begin
- index = value =~ /^[A-Z]*:/ ? $~[0].length - 1 : nil
- unless ignore == 1 and offset == index
- warn 'something wrong with subject hack'
- $x = [ignore, offset, value]
- require 'irb'
- IRB.start
- exit
- end
-=end
-=begin
-new idea:
-
-making sense of the \001\00[156] i've seen prefixing subject. i think its to do with the placement
-of the ':', or the ' '. And perhaps an optimization to do with thread topic, and ignoring the prefixes
-added by mailers. thread topic is equal to subject with all that crap removed.
-
-can test by creating some mails with bizarre subjects.
-
-subject="\001\005RE: blah blah"
-subject="\001\001blah blah"
-subject="\001\032Out of Office AutoReply: blah blah"
-subject="\001\020Undeliverable: blah blah"
-
-looks like it
-
-=end
-
- # now what i think, is that perhaps, value[offset..-1] ...
- # or something like that should be stored as a special tag. ie, do a double yield
- # for this case. probably PR_CONVERSATION_TOPIC, in which case i'd write instead:
- # yield [PR_SUBJECT, ref_type, value]
- # yield [PR_CONVERSATION_TOPIC, ref_type, value[offset..-1]
- # next # to skip the yield.
- end
-
- # special handling for embedded objects
- # used for attach_data for attached messages. in which case attach_method should == 5,
- # for embedded object.
- if type == PT_OBJECT and value
- value = value.read if value.respond_to?(:read)
- id2, unknown = value.unpack 'V2'
- io = RangesIOID2.new desc.pst, id2, idx2
-
- # hacky
- desc2 = OpenStruct.new(:desc => io, :pst => desc.pst, :list_index => desc.list_index, :children => [])
- # put nil instead of desc.list_index, otherwise the attachment is attached to itself ad infinitum.
- # should try and fix that FIXME
- # this shouldn't be done always. for an attached message, yes, but for an attached
- # meta file, for example, it shouldn't. difference between embedded_ole vs embedded_msg
- # really.
- # note that in the case where its a embedded ole, you actually get a regular serialized ole
- # object, so i need to create an ole storage object on a rangesioidxchain!
- # eg:
-=begin
-att.props.display_name # => "Picture (Metafile)"
-io = att.props.attach_data
-io.read(32).unpack('H*') # => ["d0cf11e0a1b11ae100000.... note the docfile signature.
-# plug some missing rangesio holes:
-def io.rewind; seek 0; end
-def io.flush; raise IOError; end
-ole = Ole::Storage.open io
-puts ole.root.to_tree
-
-- #<Dirent:"Root Entry">
- |- #<Dirent:"\001Ole" size=20 data="\001\000\000\002\000...">
- |- #<Dirent:"CONTENTS" size=65696 data="\327\315\306\232\000...">
- \- #<Dirent:"\003MailStream" size=12 data="\001\000\000\000[...">
-=end
- # until properly fixed, i have disabled this code here, so this will break
- # nested messages temporarily.
- #value = Item.new desc2, RawPropertyStore.new(desc2).to_a
- #desc2.list_index = nil
- value = io
- end
- # this is PT_MV_STRING8, i guess.
- # should probably have the 0x1000 flag, and do the or-ring.
- # example of 0x1102 is PR_OUTLOOK_2003_ENTRYIDS. less sure about that one.
- when 0x101e, 0x1102
- # example data:
- # 0x802b "\003\000\000\000\020\000\000\000\030\000\000\000#\000\000\000BusinessCompetitionFavorites"
- # this 0x802b would be an extended attribute for categories / keywords.
- value = get_data_indirect_io(value).read unless String === value
- num = value.unpack('V')[0]
- offsets = value[4, 4 * num].unpack("V#{num}")
- value = (offsets + [value.length]).to_enum(:each_cons, 2).map { |from, to| value[from...to] }
- value.map! { |str| StringIO.new str } if type == 0x1102
- else
- name = Mapi::Types::DATA[type].first rescue nil
- warn '0x%04x %p' % [key, get_data_indirect_io(value).read]
- raise NotImplementedError, 'unsupported mapi property type - 0x%04x (%p)' % [type, name]
- end
- [key, type, value]
- end
- end
-
-=begin
-* recipients:
-
- affects: ["0x200764", "0x2011c4", "0x201b24", "0x201b44", "0x201ba4", "0x201c24", "0x201cc4", "0x202504"]
-
-after adding the rawpropertystoretable fix, all except the second parse properly, and satisfy:
-
- item.props.display_to == item.recipients.map { |r| r.props.display_name if r.props.recipient_type == 1 }.compact * '; '
-
-only the second still has a problem
-
-#[#<struct Pst::Desc desc_id=0x2011c4, idx_id=0x397c, idx2_id=0x398a, parent_desc_id=0x8082>]
-
-think this is related to a multi block #data3. ie, when you use @x * rec_size, and it
-goes > 8190, or there abouts, then it stuffs up. probably there is header gunk, or something,
-similar to when #data is multi block.
-
-same problem affects the attachment table in test4.
-
-fixed that issue. round data3 ranges to rec_size.
-
-fix other issue with attached objects.
-
-all recipients and attachments in test2 are fine.
-
-only remaining issue is test4 recipients of 200044. strange.
-
-=end
-
- # RawPropertyStore is used to iterate through the properties of an item, or the auxiliary
- # data for an attachment. its just a parser for the way the properties are serialized, when the
- # properties don't have to conform to a column structure.
- #
- # structure of this chunk of data is often
- # header, property keys, data values, and then indexes.
- # the property keys has value in it. value can be the actual value if its a short type,
- # otherwise you lookup the value in the indicies, where you get the offsets to use in the
- # main data body. due to the indirect thing though, any of these parts could actually come
- # from a separate stream.
- class RawPropertyStore < BlockParser
- include Enumerable
-
- attr_reader :length
- def initialize desc
- super
- raise FormatError, "expected type 1 - got #{@type}" unless @type == 1
-
- # the way that offset works, data1 may be a subset of buf, or something from id2. if its from buf,
- # it will be offset based on index_offset and offset. so it could be some random chunk of data anywhere
- # in the thing.
- header_data = get_data_indirect @offset1
- raise FormatError if header_data.length < 8
- signature, offset2 = header_data.unpack 'V2'
- #p [@type, signature]
- raise FormatError, 'unhandled block signature 0x%08x' % @type if signature != 0x000602b5
- # this is actually a big chunk of tag tuples.
- @index_data = get_data_indirect offset2
- @length = @index_data.length / 8
- end
-
- # iterate through the property tuples
- def each
- length.times do |i|
- key, type, value = handle_indirect_values(*@index_data[8 * i, 8].unpack('vvV'))
- yield key, type, value
- end
- end
- end
-
- # RawPropertyStoreTable is kind of like a database table.
- # it has a fixed set of columns.
- # #[] is kind of like getting a row from the table.
- # those rows are currently encapsulated by Row, which has #each like
- # RawPropertyStore.
- # only used for the recipients array, and the attachments array. completely lazy, doesn't
- # load any of the properties upon creation.
- class RawPropertyStoreTable < BlockParser
- class Column < Struct.new(:ref_type, :type, :ind2_off, :size, :slot)
- def initialize data
- super(*data.unpack('v3CC'))
- end
-
- def nice_type_name
- Mapi::Types::DATA[ref_type].first[/_(.*)/, 1].downcase rescue '0x%04x' % ref_type
- end
-
- def nice_prop_name
- Mapi::PropertyStore::TAGS['%04x' % type].first[/_(.*)/, 1].downcase rescue '0x%04x' % type
- end
-
- def inspect
- "#<#{self.class} name=#{nice_prop_name.inspect}, type=#{nice_type_name.inspect}>"
- end
- end
-
- include Enumerable
-
- attr_reader :length, :index_data, :data2, :data3, :rec_size
- def initialize desc
- super
- raise FormatError, "expected type 2 - got #{@type}" unless @type == 2
-
- header_data = get_data_indirect @offset1
- # seven_c_blk
- # often: u1 == u2 and u3 == u2 + 2, then rec_size == u3 + 4. wtf
- seven_c, @num_list, u1, u2, u3, @rec_size, b_five_offset,
- ind2_offset, u7, u8 = header_data[0, 22].unpack('CCv4V2v2')
- @index_data = header_data[22..-1]
-
- raise FormatError if @num_list != schema.length or seven_c != 0x7c
- # another check
- min_size = schema.inject(0) { |total, col| total + col.size }
- # seem to have at max, 8 padding bytes on the end of the record. not sure if it means
- # anything. maybe its just space that hasn't been reclaimed due to columns being
- # removed or something. probably should just check lower bound.
- range = (min_size..min_size + 8)
- warn "rec_size seems wrong (#{range} !=== #{rec_size})" unless range === rec_size
-
- header_data2 = get_data_indirect b_five_offset
- raise FormatError if header_data2.length < 8
- signature, offset2 = header_data2.unpack 'V2'
- # ??? seems a bit iffy
- # there's probably more to the differences than this, and the data2 difference below
- expect = desc.pst.header.version_2003? ? 0x000404b5 : 0x000204b5
- raise FormatError, 'unhandled block signature 0x%08x' % signature if signature != expect
-
- # this holds all the row data
- # handle multiple block issue.
- @data3_io = get_data_indirect_io ind2_offset
- if RangesIOIdxChain === @data3_io
- @data3_idxs =
- # modify ranges
- ranges = @data3_io.ranges.map { |offset, size| [offset, size / @rec_size * @rec_size] }
- @data3_io.instance_variable_set :@ranges, ranges
- end
- @data3 = @data3_io.read
-
- # there must be something to the data in data2. i think data2 is the array of objects essentially.
- # currently its only used to imply a length
- # actually, at size 6, its just some auxiliary data. i'm thinking either Vv/vV, for 97, and something
- # wider for 03. the second value is just the index (0...length), and the first value is
- # some kind of offset i expect. actually, they were all id2 values, in another case.
- # so maybe they're get_data_indirect values too?
- # actually, it turned out they were identical to the PR_ATTACHMENT_ID2 values...
- # id2_values = ie, data2.unpack('v*').to_enum(:each_slice, 3).transpose[0]
- # table[i].assoc(PR_ATTACHMENT_ID2).last == id2_values[i], for all i.
- @data2 = get_data_indirect(offset2) rescue nil
- #if data2
- # @length = (data2.length / 6.0).ceil
- #else
- # the above / 6, may have been ok for 97 files, but the new 0x0004 style block must have
- # different size records... just use this instead:
- # hmmm, actually, we can still figure it out:
- @length = @data3.length / @rec_size
- #end
-
- # lets try and at least use data2 for a warning for now
- if data2
- data2_rec_size = desc.pst.header.version_2003? ? 8 : 6
- warn 'somthing seems wrong with data3' unless @length == (data2.length / data2_rec_size)
- end
- end
-
- def schema
- @schema ||= index_data.scan(/.{8}/m).map { |data| Column.new data }
- end
-
- def [] idx
- # handle funky rounding
- Row.new self, idx * @rec_size
- end
-
- def each
- length.times { |i| yield self[i] }
- end
-
- class Row
- include Enumerable
-
- def initialize array_parser, x
- @array_parser, @x = array_parser, x
- end
-
- # iterate through the property tuples
- def each
- (@array_parser.index_data.length / 8).times do |i|
- ref_type, type, ind2_off, size, slot = @array_parser.index_data[8 * i, 8].unpack 'v3CC'
- # check this rescue too
- value = @array_parser.data3[@x + ind2_off, size]
-# if INDIRECT_TYPES.include? ref_type
- if size <= 4
- value = value.unpack('V')[0]
- end
- #p ['0x%04x' % ref_type, '0x%04x' % type, (Msg::Properties::MAPITAGS['%04x' % type].first[/^.._(.*)/, 1].downcase rescue nil),
- # value_orig, value, (get_data_indirect(value_orig.unpack('V')[0]) rescue nil), size, ind2_off, slot]
- key, type, value = @array_parser.handle_indirect_values type, ref_type, value
- yield key, type, value
- end
- end
- end
- end
-
- class AttachmentTable < BlockParser
- # a "fake" MAPI property name for this constant. if you get a mapi property with
- # this value, it is the id2 value to use to get attachment data.
- PR_ATTACHMENT_ID2 = 0x67f2
-
- attr_reader :desc, :table
- def initialize desc
- @desc = desc
- # no super, we only actually want BlockParser2#idx2
- @table = nil
- return unless desc.list_index
- return unless idx = idx2[ID2_ATTACHMENTS]
- # FIXME make a fake desc.
- @desc2 = OpenStruct.new :desc => idx, :pst => desc.pst, :list_index => desc.list_index
- @table = RawPropertyStoreTable.new @desc2
- end
-
- def to_a
- return [] if !table
- table.map do |attachment|
- attachment = attachment.to_a
- #p attachment
- # potentially merge with yet more properties
- # this still seems pretty broken - especially the property overlap
- if attachment_id2 = attachment.assoc(PR_ATTACHMENT_ID2)
- #p attachment_id2.last
- #p idx2[attachment_id2.last]
- @desc2.desc = idx2[attachment_id2.last]
- RawPropertyStore.new(@desc2).each do |a, b, c|
- record = attachment.assoc a
- attachment << record = [] unless record
- record.replace [a, b, c]
- end
- end
- attachment
- end
- end
- end
-
- # there is no equivalent to this in libpst. ID2_RECIPIENTS was just guessed given the above
- # AttachmentTable.
- class RecipientTable < BlockParser
- attr_reader :desc, :table
- def initialize desc
- @desc = desc
- # no super, we only actually want BlockParser2#idx2
- @table = nil
- return unless desc.list_index
- return unless idx = idx2[ID2_RECIPIENTS]
- # FIXME make a fake desc.
- desc2 = OpenStruct.new :desc => idx, :pst => desc.pst, :list_index => desc.list_index
- @table = RawPropertyStoreTable.new desc2
- end
-
- def to_a
- return [] if !table
- table.map { |x| x.to_a }
- end
- end
-
- #
- # higher level item code. wraps up the raw properties above, and gives nice
- # objects to work with. handles item relationships too.
- # ----------------------------------------------------------------------------
- #
-
- def self.make_property_set property_list
- hash = property_list.inject({}) do |hash, (key, type, value)|
- hash.update PropertySet::Key.new(key) => value
- end
- PropertySet.new hash
- end
-
- class Attachment < Mapi::Attachment
- def initialize list
- super Pst.make_property_set(list)
-
- @embedded_msg = props.attach_data if Item === props.attach_data
- end
- end
-
- class Recipient < Mapi::Recipient
- def initialize list
- super Pst.make_property_set(list)
- end
- end
-
- class Item < Mapi::Message
- class EntryID < Struct.new(:u1, :entry_id, :id)
- UNPACK_STR = 'VA16V'
-
- def initialize data
- data = data.unpack(UNPACK_STR) if String === data
- super(*data)
- end
- end
-
- include RecursivelyEnumerable
-
- attr_accessor :type, :parent
-
- def initialize desc, list, type=nil
- @desc = desc
- super Pst.make_property_set(list)
-
- # this is kind of weird, but the ids of the special folders are stored in a hash
- # when the root item is loaded
- if ipm_wastebasket_entryid
- desc.pst.special_folder_ids[ipm_wastebasket_entryid] = :wastebasket
- end
-
- if finder_entryid
- desc.pst.special_folder_ids[finder_entryid] = :finder
- end
-
- # and then here, those are used, along with a crappy heuristic to determine if we are an
- # item
-=begin
-i think the low bits of the desc_id can give some info on the type.
-
-it seems that 0x4 is for regular messages (and maybe contacts etc)
-0x2 is for folders, and 0x8 is for special things like rules etc, that aren't visible.
-=end
- unless type
- type = props.valid_folder_mask || ipm_subtree_entryid || props.content_count || props.subfolders ? :folder : :message
- if type == :folder
- type = desc.pst.special_folder_ids[desc.desc_id] || type
- end
- end
-
- @type = type
- end
-
- def each_child
- id = ipm_subtree_entryid
- if id
- root = @desc.pst.desc_from_id id
- raise "couldn't find root" unless root
- raise 'both kinds of children' unless @desc.children.empty?
- children = root.children
- # lets look up the other ids we have.
- # typically the wastebasket one "deleted items" is in the children already, but
- # the search folder isn't.
- extras = [ipm_wastebasket_entryid, finder_entryid].compact.map do |id|
- root = @desc.pst.desc_from_id id
- warn "couldn't find root for id #{id}" unless root
- root
- end.compact
- # i do this instead of union, so as not to mess with the order of the
- # existing children.
- children += (extras - children)
- children
- else
- @desc.children
- end.each do |desc|
- item = @desc.pst.pst_parse_item(desc)
- item.parent = self
- yield item
- end
- end
-
- def path
- parents, item = [], self
- parents.unshift item while item = item.parent
- # remove root
- parents.shift
- parents.map { |item| item.props.display_name or raise 'unable to construct path' } * '/'
- end
-
- def children
- to_enum(:each_child).to_a
- end
-
- # these are still around because they do different stuff
-
- # Top of Personal Folder Record
- def ipm_subtree_entryid
- @ipm_subtree_entryid ||= EntryID.new(props.ipm_subtree_entryid.read).id rescue nil
- end
-
- # Deleted Items Folder Record
- def ipm_wastebasket_entryid
- @ipm_wastebasket_entryid ||= EntryID.new(props.ipm_wastebasket_entryid.read).id rescue nil
- end
-
- # Search Root Record
- def finder_entryid
- @finder_entryid ||= EntryID.new(props.finder_entryid.read).id rescue nil
- end
-
- # all these have been replaced with the method_missing below
-=begin
- # States which folders are valid for this message store
- #def valid_folder_mask
- # props[0x35df]
- #end
-
- # Number of emails stored in a folder
- def content_count
- props[0x3602]
- end
-
- # Has children
- def subfolders
- props[0x360a]
- end
-=end
-
- # i think i will change these, so they can inherit the lazyness from RawPropertyStoreTable.
- # so if you want the last attachment, you can get it without creating the others perhaps.
- # it just has to handle the no table at all case a bit more gracefully.
-
- def attachments
- @attachments ||= AttachmentTable.new(@desc).to_a.map { |list| Attachment.new list }
- end
-
- def recipients
- #[]
- @recipients ||= RecipientTable.new(@desc).to_a.map { |list| Recipient.new list }
- end
-
- def each_recursive(&block)
- #p :self => self
- children.each do |child|
- #p :child => child
- block[child]
- child.each_recursive(&block)
- end
- end
-
- def inspect
- attrs = %w[display_name subject sender_name subfolders]
-# attrs = %w[display_name valid_folder_mask ipm_wastebasket_entryid finder_entryid content_count subfolders]
- str = attrs.map { |a| b = props.send a; " #{a}=#{b.inspect}" if b }.compact * ','
-
- type_s = type == :message ? 'Message' : type == :folder ? 'Folder' : type.to_s.capitalize + 'Folder'
- str2 = 'desc_id=0x%x' % @desc.desc_id
-
- !str.empty? ? "#<Pst::#{type_s} #{str2}#{str}>" : "#<Pst::#{type_s} #{str2} props=#{props.inspect}>" #\n" + props.transport_message_headers + ">"
- end
- end
-
- # corresponds to
- # * _pst_parse_item
- def pst_parse_item desc
- Item.new desc, RawPropertyStore.new(desc).to_a
- end
-
- #
- # other random code
- # ----------------------------------------------------------------------------
- #
-
- def dump_debug_info
- puts "* pst header"
- p header
-
-=begin
-Looking at the output of this, for blank-o1997.pst, i see this part:
-...
-- (26624,516) desc block data (overlap of 4 bytes)
-- (27136,516) desc block data (gap of 508 bytes)
-- (28160,516) desc block data (gap of 2620 bytes)
-...
-
-which confirms my belief that the block size for idx and desc is more likely 512
-=end
- if 0 + 0 == 0
- puts '* file range usage'
- file_ranges =
- # these 3 things, should account for most of the data in the file.
- [[0, Header::SIZE, 'pst file header']] +
- @idx_offsets.map { |offset| [offset, Index::BLOCK_SIZE, 'idx block data'] } +
- @desc_offsets.map { |offset| [offset, Desc::BLOCK_SIZE, 'desc block data'] } +
- @idx.map { |idx| [idx.offset, idx.size, 'idx id=0x%x (%s)' % [idx.id, idx.type]] }
- (file_ranges.sort_by { |idx| idx.first } + [nil]).to_enum(:each_cons, 2).each do |(offset, size, name), next_record|
- # i think there is a padding of the size out to 64 bytes
- # which is equivalent to padding out the final offset, because i think the offset is
- # similarly oriented
- pad_amount = 64
- warn 'i am wrong about the offset padding' if offset % pad_amount != 0
- # so, assuming i'm not wrong about that, then we can calculate how much padding is needed.
- pad = pad_amount - (size % pad_amount)
- pad = 0 if pad == pad_amount
- gap = next_record ? next_record.first - (offset + size + pad) : 0
- extra = case gap <=> 0
- when -1; ["overlap of #{gap.abs} bytes)"]
- when 0; []
- when +1; ["gap of #{gap} bytes"]
- end
- # how about we check that padding
- @io.pos = offset + size
- pad_bytes = @io.read(pad)
- extra += ["padding not all zero"] unless pad_bytes == 0.chr * pad
- puts "- #{offset}:#{size}+#{pad} #{name.inspect}" + (extra.empty? ? '' : ' [' + extra * ', ' + ']')
- end
- end
-
- # i think the idea of the idx, and indeed the idx2, is just to be able to
- # refer to data indirectly, which means it can get moved around, and you just update
- # the idx table. it is simply a list of file offsets and sizes.
- # not sure i get how id2 plays into it though....
- # the sizes seem to be all even. is that a co-incidence? and the ids are all even. that
- # seems to be related to something else (see the (id & 2) == 1 stuff)
- puts '* idx entries'
- @idx.each { |idx| puts "- #{idx.inspect}" }
-
- # if you look at the desc tree, you notice a few things:
- # 1. there is a desc that seems to be the parent of all the folders, messages etc.
- # it is the one whose parent is itself.
- # one of its children is referenced as the subtree_entryid of the first desc item,
- # the root.
- # 2. typically only 2 types of desc records have idx2_id != 0. messages themselves,
- # and the desc with id = 0x61 - the xattrib container. everything else uses the
- # regular ids to find its data. i think it should be reframed as small blocks and
- # big blocks, but i'll look into it more.
- #
- # idx_id and idx2_id are for getting to the data. desc_id and parent_desc_id just define
- # the parent <-> child relationship, and the desc_ids are how the items are referred to in
- # entryids.
- # note that these aren't unique! eg for 0, 4 etc. i expect these'd never change, as the ids
- # are stored in entryids. whereas the idx and idx2 could be a bit more volatile.
- puts '* desc tree'
- # make a dummy root hold everything just for convenience
- root = Desc.new ''
- def root.inspect; "#<Pst::Root>"; end
- root.children.replace @orphans
- # this still loads the whole thing as a string for gsub. should use directo output io
- # version.
- puts root.to_tree.gsub(/, (parent_desc_id|idx2_id)=0x0(?!\d)/, '')
-
- # this is fairly easy to understand, its just an attempt to display the pst items in a tree form
- # which resembles what you'd see in outlook.
- puts '* item tree'
- # now streams directly
- root_item.to_tree STDOUT
- end
-
- def root_desc
- @desc.first
- end
-
- def root_item
- item = pst_parse_item root_desc
- item.type = :root
- item
- end
-
- def root
- root_item
- end
-
- # depth first search of all items
- include Enumerable
-
- def each(&block)
- root = self.root
- block[root]
- root.each_recursive(&block)
- end
-
- def name
- @name ||= root_item.props.display_name
- end
-
- def inspect
- "#<Pst name=#{name.inspect} io=#{io.inspect}>"
- end
-end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/rtf.rb b/vendor/ruby-msg/lib/mapi/rtf.rb
deleted file mode 100644
index 9fa133fac..000000000
--- a/vendor/ruby-msg/lib/mapi/rtf.rb
+++ /dev/null
@@ -1,169 +0,0 @@
-require 'stringio'
-require 'strscan'
-require 'rtf'
-
-module Mapi
- #
- # = Introduction
- #
- # The +RTF+ module contains a few helper functions for dealing with rtf
- # in mapi messages: +rtfdecompr+, and <tt>rtf2html</tt>.
- #
- # Both were ported from their original C versions for simplicity's sake.
- #
- module RTF
- RTF_PREBUF =
- "{\\rtf1\\ansi\\mac\\deff0\\deftab720{\\fonttbl;}" \
- "{\\f0\\fnil \\froman \\fswiss \\fmodern \\fscript " \
- "\\fdecor MS Sans SerifSymbolArialTimes New RomanCourier" \
- "{\\colortbl\\red0\\green0\\blue0\n\r\\par " \
- "\\pard\\plain\\f0\\fs20\\b\\i\\u\\tab\\tx"
-
- # Decompresses compressed rtf +data+, as found in the mapi property
- # +PR_RTF_COMPRESSED+. Code converted from my C version, which in turn
- # I wrote from a Java source, in JTNEF I believe.
- #
- # C version was modified to use circular buffer for back references,
- # instead of the optimization of the Java version to index directly into
- # output buffer. This was in preparation to support streaming in a
- # read/write neutral fashion.
- def rtfdecompr data
- io = StringIO.new data
- buf = RTF_PREBUF + "\x00" * (4096 - RTF_PREBUF.length)
- wp = RTF_PREBUF.length
- rtf = ''
-
- # get header fields (as defined in RTFLIB.H)
- compr_size, uncompr_size, magic, crc32 = io.read(16).unpack 'V*'
- #warn "compressed-RTF data size mismatch" unless io.size == data.compr_size + 4
-
- # process the data
- case magic
- when 0x414c454d # "MELA" magic number that identifies the stream as a uncompressed stream
- rtf = io.read uncompr_size
- when 0x75465a4c # "LZFu" magic number that identifies the stream as a compressed stream
- flag_count = -1
- flags = nil
- while rtf.length < uncompr_size and !io.eof?
- # each flag byte flags 8 literals/references, 1 per bit
- flags = ((flag_count += 1) % 8 == 0) ? io.getc : flags >> 1
- if 1 == (flags & 1) # each flag bit is 1 for reference, 0 for literal
- rp, l = io.getc, io.getc
- # offset is a 12 byte number. 2^12 is 4096, so thats fine
- rp = (rp << 4) | (l >> 4) # the offset relative to block start
- l = (l & 0xf) + 2 # the number of bytes to copy
- l.times do
- rtf << buf[wp] = buf[rp]
- wp = (wp + 1) % 4096
- rp = (rp + 1) % 4096
- end
- else
- rtf << buf[wp] = io.getc
- wp = (wp + 1) % 4096
- end
- end
- else # unknown magic number
- raise "Unknown compression type (magic number 0x%08x)" % magic
- end
-
- # not sure if its due to a bug in the above code. doesn't seem to be
- # in my tests, but sometimes there's a trailing null. we chomp it here,
- # which actually makes the resultant rtf smaller than its advertised
- # size (+uncompr_size+).
- rtf.chomp! 0.chr
- rtf
- end
-
- # Note, this is a conversion of the original C code. Not great - needs tests and
- # some refactoring, and an attempt to correct some inaccuracies. Hacky but works.
- #
- # Returns +nil+ if it doesn't look like an rtf encapsulated rtf.
- #
- # Some cases that the original didn't deal with have been patched up, eg from
- # this chunk, where there are tags outside of the htmlrtf ignore block.
- #
- # "{\\*\\htmltag116 <br />}\\htmlrtf \\line \\htmlrtf0 \\line {\\*\\htmltag84 <a href..."
- #
- # We take the approach of ignoring all rtf tags not explicitly handled. A proper
- # parse tree would be nicer to work with. will need to look for ruby rtf library
- #
- # Some of the original comment to the c code is excerpted here:
- #
- # Sometimes in MAPI, the PR_BODY_HTML property contains the HTML of a message.
- # But more usually, the HTML is encoded inside the RTF body (which you get in the
- # PR_RTF_COMPRESSED property). These routines concern the decoding of the HTML
- # from this RTF body.
- #
- # An encoded htmlrtf file is a valid RTF document, but which contains additional
- # html markup information in its comments, and sometimes contains the equivalent
- # rtf markup outside the comments. Therefore, when it is displayed by a plain
- # simple RTF reader, the html comments are ignored and only the rtf markup has
- # effect. Typically, this rtf markup is not as rich as the html markup would have been.
- # But for an html-aware reader (such as the code below), we can ignore all the
- # rtf markup, and extract the html markup out of the comments, and get a valid
- # html document.
- #
- # There are actually two kinds of html markup in comments. Most of them are
- # prefixed by "\*\htmltagNNN", for some number NNN. But sometimes there's one
- # prefixed by "\*\mhtmltagNNN" followed by "\*\htmltagNNN". In this case,
- # the two are equivalent, but the m-tag is for a MIME Multipart/Mixed Message
- # and contains tags that refer to content-ids (e.g. img src="cid:072344a7")
- # while the normal tag just refers to a name (e.g. img src="fred.jpg")
- # The code below keeps the m-tag and discards the normal tag.
- # If there are any m-tags like this, then the message also contains an
- # attachment with a PR_CONTENT_ID property e.g. "072344a7". Actually,
- # sometimes the m-tag is e.g. img src="http://outlook/welcome.html" and the
- # attachment has a PR_CONTENT_LOCATION "http://outlook/welcome.html" instead
- # of a PR_CONTENT_ID.
- #
- def rtf2html rtf
- scan = StringScanner.new rtf
- # require \fromhtml. is this worth keeping? apparently you see \\fromtext if it
- # was converted from plain text.
- return nil unless rtf["\\fromhtml"]
- html = ''
- ignore_tag = nil
- # skip up to the first htmltag. return nil if we don't ever find one
- return nil unless scan.scan_until /(?=\{\\\*\\htmltag)/
- until scan.empty?
- if scan.scan /\{/
- elsif scan.scan /\}/
- elsif scan.scan /\\\*\\htmltag(\d+) ?/
- #p scan[1]
- if ignore_tag == scan[1]
- scan.scan_until /\}/
- ignore_tag = nil
- end
- elsif scan.scan /\\\*\\mhtmltag(\d+) ?/
- ignore_tag = scan[1]
- elsif scan.scan /\\par ?/
- html << "\r\n"
- elsif scan.scan /\\tab ?/
- html << "\t"
- elsif scan.scan /\\'([0-9A-Za-z]{2})/
- html << scan[1].hex.chr
- elsif scan.scan /\\pntext/
- scan.scan_until /\}/
- elsif scan.scan /\\htmlrtf/
- scan.scan_until /\\htmlrtf0 ?/
- # a generic throw away unknown tags thing.
- # the above 2 however, are handled specially
- elsif scan.scan /\\[a-z-]+(\d+)? ?/
- #elsif scan.scan /\\li(\d+) ?/
- #elsif scan.scan /\\fi-(\d+) ?/
- elsif scan.scan /[\r\n]/
- elsif scan.scan /\\([{}\\])/
- html << scan[1]
- elsif scan.scan /(.)/
- html << scan[1]
- else
- p :wtf
- end
- end
- html.strip.empty? ? nil : html
- end
-
- module_function :rtf2html, :rtfdecompr
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mapi/types.rb b/vendor/ruby-msg/lib/mapi/types.rb
deleted file mode 100644
index 71416afd5..000000000
--- a/vendor/ruby-msg/lib/mapi/types.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'rubygems'
-require 'ole/types'
-
-module Mapi
- Log = Logger.new_with_callstack
-
- module Types
- #
- # Mapi property types, taken from http://msdn2.microsoft.com/en-us/library/bb147591.aspx.
- #
- # The fields are [mapi name, variant name, description]. Maybe I should just make it a
- # struct.
- #
- # seen some synonyms here, like PT_I8 vs PT_LONG. seen stuff like PT_SRESTRICTION, not
- # sure what that is. look at `grep ' PT_' data/mapitags.yaml | sort -u`
- # also, it has stuff like PT_MV_BINARY, where _MV_ probably means multi value, and is
- # likely just defined to | in 0x1000.
- #
- # Note that the last 2 are the only ones where the Mapi value differs from the Variant value
- # for the corresponding variant type. Odd. Also, the last 2 are currently commented out here
- # because of the clash.
- #
- # Note 2 - the strings here say VT_BSTR, but I don't have that defined in Ole::Types. Should
- # maybe change them to match. I've also seen reference to PT_TSTRING, which is defined as some
- # sort of get unicode first, and fallback to ansii or something.
- #
- DATA = {
- 0x0001 => ['PT_NULL', 'VT_NULL', 'Null (no valid data)'],
- 0x0002 => ['PT_SHORT', 'VT_I2', '2-byte integer (signed)'],
- 0x0003 => ['PT_LONG', 'VT_I4', '4-byte integer (signed)'],
- 0x0004 => ['PT_FLOAT', 'VT_R4', '4-byte real (floating point)'],
- 0x0005 => ['PT_DOUBLE', 'VT_R8', '8-byte real (floating point)'],
- 0x0006 => ['PT_CURRENCY', 'VT_CY', '8-byte integer (scaled by 10,000)'],
- 0x000a => ['PT_ERROR', 'VT_ERROR', 'SCODE value; 32-bit unsigned integer'],
- 0x000b => ['PT_BOOLEAN', 'VT_BOOL', 'Boolean'],
- 0x000d => ['PT_OBJECT', 'VT_UNKNOWN', 'Data object'],
- 0x001e => ['PT_STRING8', 'VT_BSTR', 'String'],
- 0x001f => ['PT_UNICODE', 'VT_BSTR', 'String'],
- 0x0040 => ['PT_SYSTIME', 'VT_DATE', '8-byte real (date in integer, time in fraction)'],
- #0x0102 => ['PT_BINARY', 'VT_BLOB', 'Binary (unknown format)'],
- #0x0102 => ['PT_CLSID', 'VT_CLSID', 'OLE GUID']
- }
-
- module Constants
- DATA.each { |num, (mapi_name, variant_name, desc)| const_set mapi_name, num }
- end
-
- include Constants
- end
-end
-
diff --git a/vendor/ruby-msg/lib/mime.rb b/vendor/ruby-msg/lib/mime.rb
deleted file mode 100644
index 4340e4901..000000000
--- a/vendor/ruby-msg/lib/mime.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-#
-# = Introduction
-#
-# A *basic* mime class for _really_ _basic_ and probably non-standard parsing
-# and construction of MIME messages.
-#
-# Intended for two main purposes in this project:
-# 1. As the container that is used to build up the message for eventual
-# serialization as an eml.
-# 2. For assistance in parsing the +transport_message_headers+ provided in .msg files,
-# which are then kept through to the final eml.
-#
-# = TODO
-#
-# * Better streaming support, rather than an all-in-string approach.
-# * Add +OrderedHash+ optionally, to not lose ordering in headers.
-# * A fair bit remains to be done for this class, its fairly immature. But generally I'd like
-# to see it be more generally useful.
-# * All sorts of correctness issues, encoding particular.
-# * Duplication of work in net/http.rb's +HTTPHeader+? Don't know if the overlap is sufficient.
-# I don't want to lower case things, just for starters.
-# * Mime was the original place I wrote #to_tree, intended as a quick debug hack.
-#
-class SimpleMime
- Hash = begin
- require 'orderedhash'
- OrderedHash
- rescue LoadError
- Hash
- end
-
- attr_reader :headers, :body, :parts, :content_type, :preamble, :epilogue
-
- # Create a SimpleMime object using +str+ as an initial serialization, which must contain headers
- # and a body (even if empty). Needs work.
- def initialize str, ignore_body=false
- headers, @body = $~[1..-1] if str[/(.*?\r?\n)(?:\r?\n(.*))?\Z/m]
-
- @headers = Hash.new { |hash, key| hash[key] = [] }
- @body ||= ''
- headers.to_s.scan(/^\S+:\s*.*(?:\n\t.*)*/).each do |header|
- @headers[header[/(\S+):/, 1]] << header[/\S+:\s*(.*)/m, 1].gsub(/\s+/m, ' ').strip # this is kind of wrong
- end
-
- # don't have to have content type i suppose
- @content_type, attrs = nil, {}
- if content_type = @headers['Content-Type'][0]
- @content_type, attrs = SimpleMime.split_header content_type
- end
-
- return if ignore_body
-
- if multipart?
- if body.empty?
- @preamble = ''
- @epilogue = ''
- @parts = []
- else
- # we need to split the message at the boundary
- boundary = attrs['boundary'] or raise "no boundary for multipart message"
-
- # splitting the body:
- parts = body.split(/--#{Regexp.quote boundary}/m)
- unless parts[-1] =~ /^--/; warn "bad multipart boundary (missing trailing --)"
- else parts[-1][0..1] = ''
- end
- parts.each_with_index do |part, i|
- part =~ /^(\r?\n)?(.*?)(\r?\n)?\Z/m
- part.replace $2
- warn "bad multipart boundary" if (1...parts.length-1) === i and !($1 && $3)
- end
- @preamble = parts.shift
- @epilogue = parts.pop
- @parts = parts.map { |part| SimpleMime.new part }
- end
- end
- end
-
- def multipart?
- @content_type && @content_type =~ /^multipart/ ? true : false
- end
-
- def inspect
- # add some extra here.
- "#<SimpleMime content_type=#{@content_type.inspect}>"
- end
-
- def to_tree
- if multipart?
- str = "- #{inspect}\n"
- parts.each_with_index do |part, i|
- last = i == parts.length - 1
- part.to_tree.split(/\n/).each_with_index do |line, j|
- str << " #{last ? (j == 0 ? "\\" : ' ') : '|'}" + line + "\n"
- end
- end
- str
- else
- "- #{inspect}\n"
- end
- end
-
- def to_s opts={}
- opts = {:boundary_counter => 0}.merge opts
- if multipart?
- boundary = SimpleMime.make_boundary opts[:boundary_counter] += 1, self
- @body = [preamble, parts.map { |part| "\r\n" + part.to_s(opts) + "\r\n" }, "--\r\n" + epilogue].
- flatten.join("\r\n--" + boundary)
- content_type, attrs = SimpleMime.split_header @headers['Content-Type'][0]
- attrs['boundary'] = boundary
- @headers['Content-Type'] = [([content_type] + attrs.map { |key, val| %{#{key}="#{val}"} }).join('; ')]
- end
-
- str = ''
- @headers.each do |key, vals|
- vals.each { |val| str << "#{key}: #{val}\r\n" }
- end
- str << "\r\n" + @body
- end
-
- def self.split_header header
- # FIXME: haven't read standard. not sure what its supposed to do with " in the name, or if other
- # escapes are allowed. can't test on windows as " isn't allowed anyway. can be fixed with more
- # accurate parser later.
- # maybe move to some sort of Header class. but not all headers should be of it i suppose.
- # at least add a join_header then, taking name and {}. for use in SimpleMime#to_s (for boundary
- # rewrite), and Attachment#to_mime, among others...
- attrs = {}
- header.scan(/;\s*([^\s=]+)\s*=\s*("[^"]*"|[^\s;]*)\s*/m).each do |key, value|
- if attrs[key]; warn "ignoring duplicate header attribute #{key.inspect}"
- else attrs[key] = value[/^"/] ? value[1..-2] : value
- end
- end
-
- [header[/^[^;]+/].strip, attrs]
- end
-
- # +i+ is some value that should be unique for all multipart boundaries for a given message
- def self.make_boundary i, extra_obj = SimpleMime
- "----_=_NextPart_#{'%03d' % i}_#{'%08x' % extra_obj.object_id}.#{'%08x' % Time.now}"
- end
-end
-
-=begin
-things to consider for header work.
-encoded words:
-Subject: =?iso-8859-1?q?p=F6stal?=
-
-and other mime funkyness:
-Content-Disposition: attachment;
- filename*0*=UTF-8''09%20%D7%90%D7%A5;
- filename*1*=%20%D7%A1%D7%91-;
- filename*2*=%D7%A7%95%A5.wma
-Content-Transfer-Encoding: base64
-
-and another, doing a test with an embedded newline in an attachment name, I
-get this output from evolution. I get the feeling that this is probably a bug
-with their implementation though, they weren't expecting new lines in filenames.
-Content-Disposition: attachment; filename="asdf'b\"c
-d efgh=i: ;\\j"
-d efgh=i: ;\\j"; charset=us-ascii
-Content-Type: text/plain; name="asdf'b\"c"; charset=us-ascii
-
-=end
-
diff --git a/vendor/ruby-msg/lib/orderedhash.rb b/vendor/ruby-msg/lib/orderedhash.rb
deleted file mode 100644
index 16a4f5860..000000000
--- a/vendor/ruby-msg/lib/orderedhash.rb
+++ /dev/null
@@ -1,218 +0,0 @@
-# = OrderedHash
-#
-# == Version
-# 1.2006.07.13 (change of the first number means Big Change)
-#
-# == Description
-# Hash which preserves order of added items (like PHP array).
-#
-# == Usage
-#
-# (see examples directory under the ruby gems root directory)
-#
-# require 'rubygems'
-# require 'ordered_hash'
-#
-# hsh = OrderedHash.new
-# hsh['z'] = 1
-# hsh['a'] = 2
-# hsh['c'] = 3
-# p hsh.keys # ['z','a','c']
-#
-# == Source
-# http://simplypowerful.1984.cz/goodlibs/1.2006.07.13
-#
-# == Author
-# jan molic (/mig/at_sign/1984/dot/cz/)
-#
-# == Thanks to
-# Andrew Johnson for his suggestions and fixes of Hash[], merge, to_a, inspect and shift
-# Desmond Dsouza for == fixes
-#
-# == Licence
-# You can redistribute it and/or modify it under the same terms of Ruby's license;
-# either the dual license version in 2003, or any later version.
-#
-
-class OrderedHash < Hash
-
- attr_accessor :order
-
- class << self
-
- def [] *args
- hsh = OrderedHash.new
- if Hash === args[0]
- hsh.replace args[0]
- elsif (args.size % 2) != 0
- raise ArgumentError, "odd number of elements for Hash"
- else
- hsh[args.shift] = args.shift while args.size > 0
- end
- hsh
- end
-
- end
-
- def initialize(*a, &b)
- super
- @order = []
- end
-
- def store_only a,b
- store a,b
- end
-
- alias orig_store store
-
- def store a,b
- @order.push a unless has_key? a
- super a,b
- end
-
- alias []= store
-
- def == hsh2
- return hsh2==self if !hsh2.is_a?(OrderedHash)
- return false if @order != hsh2.order
- super hsh2
- end
-
- def clear
- @order = []
- super
- end
-
- def delete key
- @order.delete key
- super
- end
-
- def each_key
- @order.each { |k| yield k }
- self
- end
-
- def each_value
- @order.each { |k| yield self[k] }
- self
- end
-
- def each
- @order.each { |k| yield k,self[k] }
- self
- end
-
- alias each_pair each
-
- def delete_if
- @order.clone.each { |k|
- delete k if yield
- }
- self
- end
-
- def values
- ary = []
- @order.each { |k| ary.push self[k] }
- ary
- end
-
- def keys
- @order
- end
-
- def invert
- hsh2 = Hash.new
- @order.each { |k| hsh2[self[k]] = k }
- hsh2
- end
-
- def reject &block
- self.dup.delete_if( &block )
- end
-
- def reject! &block
- hsh2 = reject( &block )
- self == hsh2 ? nil : hsh2
- end
-
- def replace hsh2
- @order = hsh2.keys
- super hsh2
- end
-
- def shift
- key = @order.first
- key ? [key,delete(key)] : super
- end
-
- def unshift k,v
- unless self.include? k
- @order.unshift k
- orig_store(k,v)
- true
- else
- false
- end
- end
-
- def push k,v
- unless self.include? k
- @order.push k
- orig_store(k,v)
- true
- else
- false
- end
- end
-
- def pop
- key = @order.last
- key ? [key,delete(key)] : nil
- end
-
- def first
- self[@order.first]
- end
-
- def last
- self[@order.last]
- end
-
- def to_a
- ary = []
- each { |k,v| ary << [k,v] }
- ary
- end
-
- def to_s
- self.to_a.to_s
- end
-
- def inspect
- ary = []
- each {|k,v| ary << k.inspect + "=>" + v.inspect}
- '{' + ary.join(", ") + '}'
- end
-
- def update hsh2
- hsh2.each { |k,v| self[k] = v }
- self
- end
-
- alias :merge! update
-
- def merge hsh2
- self.dup update(hsh2)
- end
-
- def select
- ary = []
- each { |k,v| ary << [k,v] if yield k,v }
- ary
- end
-
-end
-
-#=end
diff --git a/vendor/ruby-msg/lib/rtf.rb b/vendor/ruby-msg/lib/rtf.rb
deleted file mode 100755
index 3afac68a8..000000000
--- a/vendor/ruby-msg/lib/rtf.rb
+++ /dev/null
@@ -1,109 +0,0 @@
-require 'stringio'
-
-# this file is pretty crap, its just to ensure there is always something readable if
-# there is an rtf only body, with no html encapsulation.
-
-module RTF
- class Tokenizer
- def self.process io
- while true do
- case c = io.getc
- when ?{; yield :open_group
- when ?}; yield :close_group
- when ?\\
- case c = io.getc
- when ?{, ?}, ?\\; yield :text, c.chr
- when ?'; yield :text, [io.read(2)].pack('H*')
- when ?a..?z, ?A..?Z
- # read control word
- str = c.chr
- str << c while c = io.read(1) and c =~ /[a-zA-Z]/
- neg = 1
- neg = -1 and c = io.read(1) if c == '-'
- num = if c =~ /[0-9]/
- num = c
- num << c while c = io.read(1) and c =~ /[0-9]/
- num.to_i * neg
- end
- raise "invalid rtf stream" if neg == -1 and !num # ???? \blahblah- some text
- io.seek(-1, IO::SEEK_CUR) if c != ' '
- yield :control_word, str, num
- when nil
- raise "invalid rtf stream" # \EOF
- else
- # other kind of control symbol
- yield :control_symbol, c.chr
- end
- when nil
- return
- when ?\r, ?\n
- # ignore
- else yield :text, c.chr
- end
- end
- end
- end
-
- class Converter
- # crappy
- def self.rtf2text str, format=:text
- group = 0
- text = ''
- text << "<html>\n<body>" if format == :html
- group_type = []
- group_tags = []
- RTF::Tokenizer.process(StringIO.new(str)) do |a, b, c|
- add_text = ''
- case a
- when :open_group; group += 1; group_type[group] = nil; group_tags[group] = []
- when :close_group; group_tags[group].reverse.each { |t| text << "</#{t}>" }; group -= 1;
- when :control_word; # ignore
- group_type[group] ||= b
- # maybe change this to use utf8 where possible
- add_text = if b == 'par' || b == 'line' || b == 'page'; "\n"
- elsif b == 'tab' || b == 'cell'; "\t"
- elsif b == 'endash' || b == 'emdash'; "-"
- elsif b == 'emspace' || b == 'enspace' || b == 'qmspace'; " "
- elsif b == 'ldblquote'; '"'
- else ''
- end
- if b == 'b' || b == 'i' and format == :html
- close = c == 0 ? '/' : ''
- text << "<#{close}#{b}>"
- if c == 0
- group_tags[group].delete b
- else
- group_tags[group] << b
- end
- end
- # lot of other ones belong in here.\
-=begin
-\bullet Bullet character.
-\lquote Left single quotation mark.
-\rquote Right single quotation mark.
-\ldblquote Left double quotation mark.
-\rdblquote
-=end
- when :control_symbol; # ignore
- group_type[group] ||= b
- add_text = ' ' if b == '~' # non-breakable space
- add_text = '-' if b == '_' # non-breakable hypen
- when :text
- add_text = b if group <= 1 or group_type[group] == 'rtlch' && !group_type[0...group].include?('*')
- end
- if format == :html
- text << add_text.gsub(/([<>&"'])/) do
- ent = { '<' => 'lt', '>' => 'gt', '&' => 'amp', '"' => 'quot', "'" => 'apos' }[$1]
- "&#{ent};"
- end
- text << '<br>' if add_text == "\n"
- else
- text << add_text
- end
- end
- text << "</body>\n</html>\n" if format == :html
- text
- end
- end
-end
-
diff --git a/vendor/ruby-ole/ChangeLog b/vendor/ruby-ole/ChangeLog
deleted file mode 100644
index 1e7c80b59..000000000
--- a/vendor/ruby-ole/ChangeLog
+++ /dev/null
@@ -1,62 +0,0 @@
-== 1.2.8.2 / 2009-01-01
-
-- Update code to support ruby 1.9.1
-
-== 1.2.8.1 / 2008-10-22
-
-- Fix a couple of breakages when using $KCODE = 'UTF8'
-
-== 1.2.8 / 2008-10-08
-
-- Check in the new fixes to the mbat support.
-- Update README to be a bit more useful.
-
-== 1.2.7 / 2008-08-12
-
-- Prepare Ole::Types::PropertySet for write support.
-- Introduce Ole::Storage#meta_data as an easy interface to meta data stored
- within various property sets.
-- Add new --metadata action to oletool to dump said metadata.
-- Add new --mimetype action to oletool, and corresponding Ole::Storage#mime_type
- function to try to guess mime type of a file based on some simple heuristics.
-- Restructure project files a bit, and pull in file_system & meta_data support
- by default.
-- More tests - now have 100% coverage.
-
-== 1.2.6 / 2008-07-21
-
-- Fix FileClass#expand_path to work properly on darwin (issue #2)
-- Guard against Enumerable#sum clash with active support (issue #3)
-
-== 1.2.5 / 2008-02-16
-
-- Make all tests pass on ruby 1.9.
-
-== 1.2.4 / 2008-01-09
-
-- Make all tests pass on windows (issue #1).
-- Make all tests pass on a power pc (running ubuntu).
-- Property set convenience access functions.
-
-== 1.2.3 / 2007-12-28
-
-- MBAT write support re-implmented. Can now write files over ~8mb again.
-- Minor fixes (truncation in #flush, file modification timestamps)
-- More test coverage
-- Initial (read-only) property set support.
-- Complete filesystem api, to pass most of the rubyzip tests.
-- Add a ChangeLog :).
-
-== 1.2.2 / 2007-11-05
-
-- Lots of test updates, 90% coverage.
-- Fix +to_tree+ method to be more efficient, and stream output.
-- Optimizations from benchmarks and profiling, mostly for writes. Fixed
- AllocationTable#resize_chain, RangesIOResizable#truncate and
- AllocationTable#free_block.
-- Add in filesystem test file from rubyzip, and start working on a
- filesystem api.
-
-== 1.2.1 / 2007-08-20
-
-- Separate out from ruby-msg as new project.
diff --git a/vendor/ruby-ole/README b/vendor/ruby-ole/README
deleted file mode 100644
index 0208c5abd..000000000
--- a/vendor/ruby-ole/README
+++ /dev/null
@@ -1,115 +0,0 @@
-= Introduction
-
-The ruby-ole library provides a variety of functions primarily for
-working with OLE2 structured storage files, such as those produced by
-Microsoft Office - eg *.doc, *.msg etc.
-
-= Example Usage
-
-Here are some examples of how to use the library functionality,
-categorised roughly by purpose.
-
-1. Reading and writing files within an OLE container
-
- The recommended way to manipulate the contents is via the
- "file_system" API, whereby you use Ole::Storage instance methods
- similar to the regular File and Dir class methods.
-
- ole = Ole::Storage.open('oleWithDirs.ole', 'rb+')
- p ole.dir.entries('.') # => [".", "..", "dir1", "dir2", "file1"]
- p ole.file.read('file1')[0, 25] # => "this is the entry 'file1'"
- ole.dir.mkdir('newdir')
-
-2. Accessing OLE meta data
-
- Some convenience functions are provided for (currently read only)
- access to OLE property sets and other sources of meta data.
-
- ole = Ole::Storage.open('test_word_95.doc')
- p ole.meta_data.file_format # => "MSWordDoc"
- p ole.meta_data.mime_type # => "application/msword"
- p ole.meta_data.doc_author.split.first # => "Charles"
-
-3. Raw access to underlying OLE internals
-
- This is probably of little interest to most developers using the
- library, but for some use cases you may need to drop down to the
- lower level API on which the "file_system" API is constructed,
- which exposes more of the format details.
-
- <tt>Ole::Storage</tt> files can have multiple files with the same name,
- or with a slash in the name, and other things that are probably
- strictly invalid. This API is the only way to access those files.
-
- You can access the header object directly:
-
- p ole.header.num_sbat # => 1
- p ole.header.magic.unpack('H*') # => ["d0cf11e0a1b11ae1"]
-
- You can directly access the array of all Dirent objects,
- including the root:
-
- p ole.dirents.length # => 5
- puts ole.root.to_tree
- # =>
- - #<Dirent:"Root Entry">
- |- #<Dirent:"\001Ole" size=20 data="\001\000\000\002\000...">
- |- #<Dirent:"\001CompObj" size=98 data="\001\000\376\377\003...">
- |- #<Dirent:"WordDocument" size=2574 data="\334\245e\000-...">
- \- #<Dirent:"\005SummaryInformation" size=54788 data="\376\377\000\000\001...">
-
- You can access (through RangesIO methods, or by using the
- relevant Dirent and AllocationTable methods) information like where within
- the container a stream is located (these are offset/length pairs):
-
- p ole.root["\001CompObj"].open { |io| io.ranges } # => [[0, 64], [64, 34]]
-
-See the documentation for each class for more details.
-
-= Thanks
-
-* The code contained in this project was initially based on chicago's libole
- (source available at http://prdownloads.sf.net/chicago/ole.tgz).
-
-* It was later augmented with some corrections by inspecting pole, and (purely
- for header definitions) gsf.
-
-* The property set parsing code came from the apache java project POIFS.
-
-* The excellent idea for using a pseudo file system style interface by providing
- #file and #dir methods which mimic File and Dir, was borrowed (along with almost
- unchanged tests!) from Thomas Sondergaard's rubyzip.
-
-= TODO
-
-== 1.2.9
-
-* add buffering to rangesio so that performance for small reads and writes
- isn't so awful. maybe try and remove the bottlenecks of unbuffered first
- with more profiling, then implement the buffering on top of that.
-* fix mode strings - like truncate when using 'w+', supporting append
- 'a+' modes etc. done?
-* make ranges io obey readable vs writeable modes.
-* more RangesIO completion. ie, doesn't support #<< at the moment.
-* maybe some oletool doc.
-* make sure `rake test' runs tests both with $KCODE='UTF8', and without,
- and maybe ensure i don't regress on 1.9 and jruby either now that they're
- fixed.
-
-== 1.3.1
-
-* fix property sets a bit more. see TODO in Ole::Storage::MetaData
-* ability to zero out padding and unused blocks
-* case insensitive mode for ole/file_system?
-* better tests for mbat support.
-* further doc cleanup
-* add in place testing for jruby and ruby1.9
-
-== Longer term
-
-* more benchmarking, profiling, and speed fixes. was thinking vs other
- ruby filesystems (eg, vs File/Dir itself, and vs rubyzip), and vs other
- ole implementations (maybe perl's, and poifs) just to check its in the
- ballpark, with no remaining silly bottlenecks.
-* supposedly vba does something weird to ole files. test that.
-
diff --git a/vendor/ruby-ole/Rakefile b/vendor/ruby-ole/Rakefile
deleted file mode 100644
index 1153bb39a..000000000
--- a/vendor/ruby-ole/Rakefile
+++ /dev/null
@@ -1,209 +0,0 @@
-require 'rake/rdoctask'
-require 'rake/testtask'
-require 'rake/packagetask'
-require 'rake/gempackagetask'
-
-require 'rbconfig'
-require 'fileutils'
-
-$:.unshift 'lib'
-
-require 'ole/storage'
-
-PKG_NAME = 'ruby-ole'
-PKG_VERSION = Ole::Storage::VERSION
-
-task :default => [:test]
-
-Rake::TestTask.new do |t|
- t.test_files = FileList["test/test_*.rb"]
- t.warning = true
- t.verbose = true
-end
-
-begin
- require 'rcov/rcovtask'
- # NOTE: this will not do anything until you add some tests
- desc "Create a cross-referenced code coverage report"
- Rcov::RcovTask.new do |t|
- t.test_files = FileList['test/test*.rb']
- t.ruby_opts << "-Ilib" # in order to use this rcov
- t.rcov_opts << "--xrefs" # comment to disable cross-references
- t.verbose = true
- end
-rescue LoadError
- # Rcov not available
-end
-
-Rake::RDocTask.new do |t|
- t.rdoc_dir = 'doc'
- t.rdoc_files.include 'lib/**/*.rb'
- t.rdoc_files.include 'README', 'ChangeLog'
- t.title = "#{PKG_NAME} documentation"
- t.options += %w[--line-numbers --inline-source --tab-width 2]
- t.main = 'README'
-end
-
-spec = Gem::Specification.new do |s|
- s.name = PKG_NAME
- s.version = PKG_VERSION
- s.summary = %q{Ruby OLE library.}
- s.description = %q{A library for easy read/write access to OLE compound documents for Ruby.}
- s.authors = ['Charles Lowe']
- s.email = %q{aquasync@gmail.com}
- s.homepage = %q{http://code.google.com/p/ruby-ole}
- s.rubyforge_project = %q{ruby-ole}
-
- s.executables = ['oletool']
- s.files = ['README', 'Rakefile', 'ChangeLog', 'data/propids.yaml']
- s.files += FileList['lib/**/*.rb']
- s.files += FileList['test/test_*.rb', 'test/*.doc']
- s.files += FileList['test/oleWithDirs.ole', 'test/test_SummaryInformation']
- s.files += FileList['bin/*']
- s.test_files = FileList['test/test_*.rb']
-
- s.has_rdoc = true
- s.extra_rdoc_files = ['README', 'ChangeLog']
- s.rdoc_options += [
- '--main', 'README',
- '--title', "#{PKG_NAME} documentation",
- '--tab-width', '2'
- ]
-end
-
-Rake::GemPackageTask.new(spec) do |t|
- t.gem_spec = spec
- t.need_tar = true
- t.need_zip = false
- t.package_dir = 'build'
-end
-
-desc 'Run various benchmarks'
-task :benchmark do
- require 'benchmark'
- require 'tempfile'
- require 'ole/file_system'
-
- # should probably add some read benchmarks too
- def write_benchmark opts={}
- files, size = opts[:files], opts[:size]
- block_size = opts[:block_size] || 100_000
- block = 0.chr * block_size
- blocks, remaining = size.divmod block_size
- remaining = 0.chr * remaining
- Tempfile.open 'ole_storage_benchmark' do |temp|
- Ole::Storage.open temp do |ole|
- files.times do |i|
- ole.file.open "file_#{i}", 'w' do |f|
- blocks.times { f.write block }
- f.write remaining
- end
- end
- end
- end
- end
-
- Benchmark.bm do |bm|
- bm.report 'write_1mb_1x5' do
- 5.times { write_benchmark :files => 1, :size => 1_000_000 }
- end
-
- bm.report 'write_1mb_2x5' do
- 5.times { write_benchmark :files => 1_000, :size => 1_000 }
- end
- end
-end
-
-=begin
-
-1.2.1:
-
- user system total real
-write_1mb_1x5 73.920000 8.400000 82.320000 ( 91.893138)
-
-revision 17 (speed up AllocationTable#free_block by using
-@sparse attribute, and using Array#index otherwise):
-
- user system total real
-write_1mb_1x5 57.910000 6.190000 64.100000 ( 66.207993)
-write_1mb_2x5266.310000 31.750000 298.060000 (305.877203)
-
-add in extra resize_chain fix (return blocks to avoid calling
-AllocationTable#chain twice):
-
- user system total real
-write_1mb_1x5 43.140000 5.480000 48.620000 ( 51.835942)
-
-add in RangesIOResizeable fix (cache @blocks, to avoid calling
-AllocationTable#chain at all when resizing now, just pass it
-to AllocationTable#resize_chain):
-
- user system total real
-write_1mb_1x5 29.770000 5.180000 34.950000 ( 39.916747)
-
-40 seconds is still a really long time to write out 5 megs.
-of course, this is all with a 1_000 byte block size, which is
-a very small wite. upping this to 100_000 bytes:
-
- user system total real
-write_1mb_1x5 0.540000 0.130000 0.670000 ( 1.051862)
-
-so it seems that that makes a massive difference. so i really
-need buffering in RangesIO if I don't want it to really hurt
-for small writes, as all the resize code is kind of expensive.
-
-one of the costly things at the moment, is RangesIO#offset_and_size,
-which is called for each write, and re-finds which range we are in.
-that should obviously be changed, to a fixed one that is invalidated
-on seeks. buffering would hide that problem to some extent, but i
-should fix it anyway.
-
-re-running the original 1.2.1 with 100_000 byte block size:
-
- user system total real
-write_1mb_1x5 15.590000 2.230000 17.820000 ( 18.704910)
-
-so there the really badly non-linear AllocationTable#resize_chain is
-being felt.
-
-back to current working copy, running full benchmark:
-
- user system total real
-write_1mb_1x5 0.530000 0.150000 0.680000 ( 0.708919)
-write_1mb_2x5227.940000 31.260000 259.200000 (270.200960)
-
-not surprisingly, the second case hasn't been helped much by the fixes
-so far, as they only really help multiple resizes and writes for a file.
-this could be pain in the new file system code - potentially searching
-through Dirent#children at creation time.
-
-to test, i'll profile creating 1_000 files, without writing anything:
-
- user system total real
-write_1mb_2x5 16.990000 1.830000 18.820000 ( 19.900568)
-
-hmmm, so thats not all of it. maybe its the initial chain calls, etc?
-writing 1 byte:
-
- user system total real
-write_1mb_1x5 0.520000 0.120000 0.640000 ( 0.660638)
-write_1mb_2x5 19.810000 2.280000 22.090000 ( 22.696214)
-
-weird.
-
-100 bytes:
-
- user system total real
-write_1mb_1x5 0.560000 0.140000 0.700000 ( 1.424974)
-write_1mb_2x5 22.940000 2.840000 25.780000 ( 26.556346)
-
-500 bytes:
-
- user system total real
-write_1mb_1x5 0.530000 0.150000 0.680000 ( 1.139738)
-write_1mb_2x5 77.260000 10.130000 87.390000 ( 91.671086)
-
-what happens there? very strange.
-
-=end
-
diff --git a/vendor/ruby-ole/bin/oletool b/vendor/ruby-ole/bin/oletool
deleted file mode 100755
index d81afab5a..000000000
--- a/vendor/ruby-ole/bin/oletool
+++ /dev/null
@@ -1,41 +0,0 @@
-#! /usr/bin/ruby
-
-require 'optparse'
-require 'rubygems'
-require 'ole/storage'
-
-def oletool
- opts = {:verbose => false, :action => :tree}
- op = OptionParser.new do |op|
- op.banner = "Usage: oletool [options] [files]"
- op.separator ''
- op.on('-t', '--tree', 'Dump ole trees for files (default)') { opts[:action] = :tree }
- op.on('-r', '--repack', 'Repack the ole files in canonical form') { opts[:action] = :repack }
- op.on('-m', '--mimetype', 'Print the guessed mime types') { opts[:action] = :mimetype }
- op.on('-y', '--metadata', 'Dump the internal meta data as YAML') { opts[:action] = :metadata }
- op.separator ''
- op.on('-v', '--[no-]verbose', 'Run verbosely') { |v| opts[:verbose] = v }
- op.on_tail('-h', '--help', 'Show this message') { puts op; exit }
- end
- files = op.parse ARGV
- if files.empty?
- puts 'Must specify 1 or more msg files.'
- puts op
- exit 1
- end
- Ole::Log.level = opts[:verbose] ? Logger::WARN : Logger::FATAL
- files.each do |file|
- case opts[:action]
- when :tree
- Ole::Storage.open(file) { |ole| puts ole.root.to_tree }
- when :repack
- Ole::Storage.open file, 'rb+', &:repack
- when :metadata
- Ole::Storage.open(file) { |ole| y ole.meta_data.to_h }
- when :mimetype
- puts Ole::Storage.open(file) { |ole| ole.meta_data.mime_type }
- end
- end
-end
-
-oletool
diff --git a/vendor/ruby-ole/data/propids.yaml b/vendor/ruby-ole/data/propids.yaml
deleted file mode 100644
index 9ac43ffe1..000000000
--- a/vendor/ruby-ole/data/propids.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-"{f29f85e0-4ff9-1068-ab91-08002b27b3d9}":
- - FMTID_SummaryInformation
- - 2: doc_title
- 3: doc_subject
- 4: doc_author
- 5: doc_keywords
- 6: doc_comments
- 7: doc_template
- 8: doc_last_author
- 9: doc_rev_number
- 10: doc_edit_time
- 11: doc_last_printed
- 12: doc_created_time
- 13: doc_last_saved_time
- 14: doc_page_count
- 15: doc_word_count
- 16: doc_char_count
- 18: doc_app_name
- 19: security
-
-"{d5cdd502-2e9c-101b-9397-08002b2cf9ae}":
- - FMTID_DocSummaryInfo
- - 2: doc_category
- 3: doc_presentation_target
- 4: doc_byte_count
- 5: doc_line_count
- 6: doc_para_count
- 7: doc_slide_count
- 8: doc_note_count
- 9: doc_hidden_count
- 10: mmclips
- 11: scale_crop
- 12: heading_pairs
- 13: doc_part_titles
- 14: doc_manager
- 15: doc_company
- 16: links_up_to_date
-
-"{d5cdd505-2e9c-101b-9397-08002b2cf9ae}":
- - FMTID_UserDefinedProperties
- - {}
-
-# just dumped these all here. if i can confirm any of these
-# better, i can update this file so they're recognized.
-#0b63e343-9ccc-11d0-bcdb-00805fccce04
-#0b63e350-9ccc-11d0-bcdb-00805fccce04 NetLibrary propset?
-#31f400a0-fd07-11cf-b9bd-00aa003db18e ScriptInfo propset?
-#49691c90-7e17-101a-a91c-08002b2ecda9 Query propset?
-#560c36c0-503a-11cf-baa1-00004c752a9a
-#70eb7a10-55d9-11cf-b75b-00aa0051fe20 HTMLInfo propset
-#85ac0960-1819-11d1-896f-00805f053bab message propset?
-#aa568eec-e0e5-11cf-8fda-00aa00a14f93 NNTP SummaryInformation propset?
-#b725f130-47ef-101a-a5f1-02608c9eebac Storage propset
-#c82bf596-b831-11d0-b733-00aa00a1ebd2 NetLibraryInfo propset
-#c82bf597-b831-11d0-b733-00aa00a1ebd2 LinkInformation propset?
-#d1b5d3f0-c0b3-11cf-9a92-00a0c908dbf1 LinkInformation propset?
diff --git a/vendor/ruby-ole/lib/ole/base.rb b/vendor/ruby-ole/lib/ole/base.rb
deleted file mode 100644
index ee1bc0431..000000000
--- a/vendor/ruby-ole/lib/ole/base.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-
-require 'ole/support'
-
-module Ole # :nodoc:
- Log = Logger.new_with_callstack
-end
-
diff --git a/vendor/ruby-ole/lib/ole/file_system.rb b/vendor/ruby-ole/lib/ole/file_system.rb
deleted file mode 100644
index 24d330a92..000000000
--- a/vendor/ruby-ole/lib/ole/file_system.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-# keeping this file around for now, but will delete later on...
-require 'ole/storage/file_system'
diff --git a/vendor/ruby-ole/lib/ole/ranges_io.rb b/vendor/ruby-ole/lib/ole/ranges_io.rb
deleted file mode 100644
index bfca4fe09..000000000
--- a/vendor/ruby-ole/lib/ole/ranges_io.rb
+++ /dev/null
@@ -1,231 +0,0 @@
-# need IO::Mode
-require 'ole/support'
-
-#
-# = Introduction
-#
-# +RangesIO+ is a basic class for wrapping another IO object allowing you to arbitrarily reorder
-# slices of the input file by providing a list of ranges. Intended as an initial measure to curb
-# inefficiencies in the Dirent#data method just reading all of a file's data in one hit, with
-# no method to stream it.
-#
-# This class will encapuslate the ranges (corresponding to big or small blocks) of any ole file
-# and thus allow reading/writing directly to the source bytes, in a streamed fashion (so just
-# getting 16 bytes doesn't read the whole thing).
-#
-# In the simplest case it can be used with a single range to provide a limited io to a section of
-# a file.
-#
-# = Limitations
-#
-# * No buffering. by design at the moment. Intended for large reads
-#
-# = TODO
-#
-# On further reflection, this class is something of a joining/optimization of
-# two separate IO classes. a SubfileIO, for providing access to a range within
-# a File as a separate IO object, and a ConcatIO, allowing the presentation of
-# a bunch of io objects as a single unified whole.
-#
-# I will need such a ConcatIO if I'm to provide Mime#to_io, a method that will
-# convert a whole mime message into an IO stream, that can be read from.
-# It will just be the concatenation of a series of IO objects, corresponding to
-# headers and boundaries, as StringIO's, and SubfileIO objects, coming from the
-# original message proper, or RangesIO as provided by the Attachment#data, that
-# will then get wrapped by Mime in a Base64IO or similar, to get encoded on-the-
-# fly. Thus the attachment, in its plain or encoded form, and the message as a
-# whole never exists as a single string in memory, as it does now. This is a
-# fair bit of work to achieve, but generally useful I believe.
-#
-# This class isn't ole specific, maybe move it to my general ruby stream project.
-#
-class RangesIO
- attr_reader :io, :mode, :ranges, :size, :pos
- # +io+:: the parent io object that we are wrapping.
- # +mode+:: the mode to use
- # +params+:: hash of params.
- # * :ranges - byte offsets, either:
- # 1. an array of ranges [1..2, 4..5, 6..8] or
- # 2. an array of arrays, where the second is length [[1, 1], [4, 1], [6, 2]] for the above
- # (think the way String indexing works)
- # * :close_parent - boolean to close parent when this object is closed
- #
- # NOTE: the +ranges+ can overlap.
- def initialize io, mode='r', params={}
- mode, params = 'r', mode if Hash === mode
- ranges = params[:ranges]
- @params = {:close_parent => false}.merge params
- @mode = IO::Mode.new mode
- @io = io
- # convert ranges to arrays. check for negative ranges?
- ranges ||= [0, io.size]
- @ranges = ranges.map { |r| Range === r ? [r.begin, r.end - r.begin] : r }
- # calculate size
- @size = @ranges.inject(0) { |total, (pos, len)| total + len }
- # initial position in the file
- @pos = 0
-
- # handle some mode flags
- truncate 0 if @mode.truncate?
- seek size if @mode.append?
- end
-
-#IOError: closed stream
-# get this for reading, writing, everything...
-#IOError: not opened for writing
-
- # add block form. TODO add test for this
- def self.open(*args, &block)
- ranges_io = new(*args)
- if block_given?
- begin; yield ranges_io
- ensure; ranges_io.close
- end
- else
- ranges_io
- end
- end
-
- def pos= pos, whence=IO::SEEK_SET
- case whence
- when IO::SEEK_SET
- when IO::SEEK_CUR
- pos += @pos
- when IO::SEEK_END
- pos = @size + pos
- else raise Errno::EINVAL
- end
- raise Errno::EINVAL unless (0...@size) === pos
- @pos = pos
- end
-
- alias seek :pos=
- alias tell :pos
-
- def close
- @io.close if @params[:close_parent]
- end
-
- # returns the [+offset+, +size+], pair inorder to read/write at +pos+
- # (like a partial range), and its index.
- def offset_and_size pos
- total = 0
- ranges.each_with_index do |(offset, size), i|
- if pos <= total + size
- diff = pos - total
- return [offset + diff, size - diff], i
- end
- total += size
- end
- # should be impossible for any valid pos, (0...size) === pos
- raise ArgumentError, "no range for pos #{pos.inspect}"
- end
-
- def eof?
- @pos == @size
- end
-
- # read bytes from file, to a maximum of +limit+, or all available if unspecified.
- def read limit=nil
- data = ''
- return data if eof?
- limit ||= size
- partial_range, i = offset_and_size @pos
- # this may be conceptually nice (create sub-range starting where we are), but
- # for a large range array its pretty wasteful. even the previous way was. but
- # i'm not trying to optimize this atm. it may even go to c later if necessary.
- ([partial_range] + ranges[i+1..-1]).each do |pos, len|
- @io.seek pos
- if limit < len
- # convoluted, to handle read errors. s may be nil
- s = @io.read limit
- @pos += s.length if s
- break data << s
- end
- # convoluted, to handle ranges beyond the size of the file
- s = @io.read len
- @pos += s.length if s
- data << s
- break if s.length != len
- limit -= len
- end
- data
- end
-
- # you may override this call to update @ranges and @size, if applicable.
- def truncate size
- raise NotImplementedError, 'truncate not supported'
- end
-
- # using explicit forward instead of an alias now for overriding.
- # should override truncate.
- def size= size
- truncate size
- end
-
- def write data
- # short cut. needed because truncate 0 may return no ranges, instead of empty range,
- # thus offset_and_size fails.
- return 0 if data.empty?
- data_pos = 0
- # if we don't have room, we can use the truncate hook to make more space.
- if data.length > @size - @pos
- begin
- truncate @pos + data.length
- rescue NotImplementedError
- raise IOError, "unable to grow #{inspect} to write #{data.length} bytes"
- end
- end
- partial_range, i = offset_and_size @pos
- ([partial_range] + ranges[i+1..-1]).each do |pos, len|
- @io.seek pos
- if data_pos + len > data.length
- chunk = data[data_pos..-1]
- @io.write chunk
- @pos += chunk.length
- data_pos = data.length
- break
- end
- @io.write data[data_pos, len]
- @pos += len
- data_pos += len
- end
- data_pos
- end
-
- alias << write
-
- # i can wrap it in a buffered io stream that
- # provides gets, and appropriately handle pos,
- # truncate. mostly added just to past the tests.
- # FIXME
- def gets
- s = read 1024
- i = s.index "\n"
- @pos -= s.length - (i+1)
- s[0..i]
- end
- alias readline :gets
-
- def inspect
- # the rescue is for empty files
- pos, len = (@ranges[offset_and_size(@pos).last] rescue [nil, nil])
- range_str = pos ? "#{pos}..#{pos+len}" : 'nil'
- "#<#{self.class} io=#{io.inspect}, size=#@size, pos=#@pos, "\
- "range=#{range_str}>"
- end
-end
-
-# this subclass of ranges io explicitly ignores the truncate part of 'w' modes.
-# only really needed for the allocation table writes etc. maybe just use explicit modes
-# for those
-# better yet write a test that breaks before I fix it. added nodoc for the
-# time being.
-class RangesIONonResizeable < RangesIO # :nodoc:
- def initialize io, mode='r', params={}
- mode, params = 'r', mode if Hash === mode
- flags = IO::Mode.new(mode).flags & ~IO::TRUNC
- super io, flags, params
- end
-end
-
diff --git a/vendor/ruby-ole/lib/ole/storage.rb b/vendor/ruby-ole/lib/ole/storage.rb
deleted file mode 100644
index 02e851df7..000000000
--- a/vendor/ruby-ole/lib/ole/storage.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-require 'ole/storage/base'
-require 'ole/storage/file_system'
-require 'ole/storage/meta_data'
diff --git a/vendor/ruby-ole/lib/ole/storage/base.rb b/vendor/ruby-ole/lib/ole/storage/base.rb
deleted file mode 100755
index 3c41b21a2..000000000
--- a/vendor/ruby-ole/lib/ole/storage/base.rb
+++ /dev/null
@@ -1,916 +0,0 @@
-require 'tempfile'
-
-require 'ole/base'
-require 'ole/types'
-require 'ole/ranges_io'
-
-module Ole # :nodoc:
- #
- # This class is the primary way the user interacts with an OLE storage file.
- #
- # = TODO
- #
- # * the custom header cruft for Header and Dirent needs some love.
- # * i have a number of classes doing load/save combos: Header, AllocationTable, Dirent,
- # and, in a manner of speaking, but arguably different, Storage itself.
- # they have differing api's which would be nice to rethink.
- # AllocationTable::Big must be created aot now, as it is used for all subsequent reads.
- #
- class Storage
- # thrown for any bogus OLE file errors.
- class FormatError < StandardError # :nodoc:
- end
-
- VERSION = '1.2.8.2'
-
- # options used at creation time
- attr_reader :params
- # The top of the ole tree structure
- attr_reader :root
- # The tree structure in its original flattened form. only valid after #load, or #flush.
- attr_reader :dirents
- # The underlying io object to/from which the ole object is serialized, whether we
- # should close it, and whether it is writeable
- attr_reader :io, :close_parent, :writeable
- # Low level internals, you probably shouldn't need to mess with these
- attr_reader :header, :bbat, :sbat, :sb_file
-
- # +arg+ should be either a filename, or an +IO+ object, and needs to be seekable.
- # +mode+ is optional, and should be a regular mode string.
- def initialize arg, mode=nil, params={}
- params, mode = mode, nil if Hash === mode
- params = {:update_timestamps => true}.merge(params)
- @params = params
-
- # get the io object
- @close_parent, @io = if String === arg
- mode ||= 'rb'
- [true, open(arg, mode)]
- else
- raise ArgumentError, 'unable to specify mode string with io object' if mode
- [false, arg]
- end
- # do we have this file opened for writing? don't know of a better way to tell
- # (unless we parse the mode string in the open case)
- # hmmm, note that in ruby 1.9 this doesn't work anymore. which is all the more
- # reason to use mode string parsing when available, and fall back to something like
- # io.writeable? otherwise.
- @writeable = begin
- if mode
- IO::Mode.new(mode).writeable?
- else
- @io.flush
- # this is for the benefit of ruby-1.9
- @io.syswrite('') if @io.respond_to?(:syswrite)
- true
- end
- rescue IOError
- false
- end
- # silence undefined warning in clear
- @sb_file = nil
- # if the io object has data, we should load it, otherwise start afresh
- # this should be based on the mode string rather.
- @io.size > 0 ? load : clear
- end
-
- # somewhat similar to File.open, the open class method allows a block form where
- # the Ole::Storage object is automatically closed on completion of the block.
- def self.open arg, mode=nil, params={}
- ole = new arg, mode, params
- if block_given?
- begin yield ole
- ensure; ole.close
- end
- else ole
- end
- end
-
- # load document from file.
- #
- # TODO: implement various allocationtable checks, maybe as a AllocationTable#fsck function :)
- #
- # 1. reterminate any chain not ending in EOC.
- # compare file size with actually allocated blocks per file.
- # 2. pass through all chain heads looking for collisions, and making sure nothing points to them
- # (ie they are really heads). in both sbat and mbat
- # 3. we know the locations of the bbat data, and mbat data. ensure that there are placeholder blocks
- # in the bat for them.
- # 4. maybe a check of excess data. if there is data outside the bbat.truncate.length + 1 * block_size,
- # (eg what is used for truncate in #flush), then maybe add some sort of message about that. it
- # will be automatically thrown away at close time.
- def load
- # we always read 512 for the header block. if the block size ends up being different,
- # what happens to the 109 fat entries. are there more/less entries?
- @io.rewind
- header_block = @io.read 512
- @header = Header.new header_block
-
- # create an empty bbat.
- @bbat = AllocationTable::Big.new self
- bbat_chain = header_block[Header::SIZE..-1].unpack 'V*'
- mbat_block = @header.mbat_start
- @header.num_mbat.times do
- blocks = @bbat.read([mbat_block]).unpack 'V*'
- mbat_block = blocks.pop
- bbat_chain += blocks
- end
- # am i using num_bat in the right way?
- @bbat.load @bbat.read(bbat_chain[0, @header.num_bat])
-
- # get block chain for directories, read it, then split it into chunks and load the
- # directory entries. semantics changed - used to cut at first dir where dir.type == 0
- @dirents = @bbat.read(@header.dirent_start).to_enum(:each_chunk, Dirent::SIZE).
- map { |str| Dirent.new self, str }.reject { |d| d.type_id == 0 }
-
- # now reorder from flat into a tree
- # links are stored in some kind of balanced binary tree
- # check that everything is visited at least, and at most once
- # similarly with the blocks of the file.
- # was thinking of moving this to Dirent.to_tree instead.
- class << @dirents
- def to_tree idx=0
- return [] if idx == Dirent::EOT
- d = self[idx]
- d.children = to_tree d.child
- raise FormatError, "directory #{d.inspect} used twice" if d.idx
- d.idx = idx
- to_tree(d.prev) + [d] + to_tree(d.next)
- end
- end
-
- @root = @dirents.to_tree.first
- Log.warn "root name was #{@root.name.inspect}" unless @root.name == 'Root Entry'
- unused = @dirents.reject(&:idx).length
- Log.warn "#{unused} unused directories" if unused > 0
-
- # FIXME i don't currently use @header.num_sbat which i should
- # hmm. nor do i write it. it means what exactly again?
- # which mode to use here?
- @sb_file = RangesIOResizeable.new @bbat, :first_block => @root.first_block, :size => @root.size
- @sbat = AllocationTable::Small.new self
- @sbat.load @bbat.read(@header.sbat_start)
- end
-
- def close
- @sb_file.close
- flush if @writeable
- @io.close if @close_parent
- end
-
- # the flush method is the main "save" method. all file contents are always
- # written directly to the file by the RangesIO objects, all this method does
- # is write out all the file meta data - dirents, allocation tables, file header
- # etc.
- #
- # maybe add an option to zero the padding, and any remaining avail blocks in the
- # allocation table.
- #
- # TODO: long and overly complex. simplify and test better. eg, perhaps move serialization
- # of bbat to AllocationTable::Big.
- def flush
- # update root dirent, and flatten dirent tree
- @root.name = 'Root Entry'
- @root.first_block = @sb_file.first_block
- @root.size = @sb_file.size
- @dirents = @root.flatten
-
- # serialize the dirents using the bbat
- RangesIOResizeable.open @bbat, 'w', :first_block => @header.dirent_start do |io|
- @dirents.each { |dirent| io.write dirent.to_s }
- padding = (io.size / @bbat.block_size.to_f).ceil * @bbat.block_size - io.size
- io.write 0.chr * padding
- @header.dirent_start = io.first_block
- end
-
- # serialize the sbat
- # perhaps the blocks used by the sbat should be marked with BAT?
- RangesIOResizeable.open @bbat, 'w', :first_block => @header.sbat_start do |io|
- io.write @sbat.to_s
- @header.sbat_start = io.first_block
- @header.num_sbat = @bbat.chain(@header.sbat_start).length
- end
-
- # create RangesIOResizeable hooked up to the bbat. use that to claim bbat blocks using
- # truncate. then when its time to write, convert that chain and some chunk of blocks at
- # the end, into META_BAT blocks. write out the chain, and those meta bat blocks, and its
- # done.
- # this is perhaps not good, as we reclaim all bat blocks here, which
- # may include the sbat we just wrote. FIXME
- @bbat.map! do |b|
- b == AllocationTable::BAT || b == AllocationTable::META_BAT ? AllocationTable::AVAIL : b
- end
-
- # currently we use a loop. this could be better, but basically,
- # the act of writing out the bat, itself requires blocks which get
- # recorded in the bat.
- #
- # i'm sure that there'd be some simpler closed form solution to this. solve
- # recursive func:
- #
- # num_mbat_blocks = ceil(max((mbat_len - 109) * 4 / block_size, 0))
- # bbat_len = initial_bbat_len + num_mbat_blocks
- # mbat_len = ceil(bbat_len * 4 / block_size)
- #
- # the actual bbat allocation table is itself stored throughout the file, and that chain
- # is stored in the initial blocks, and the mbat blocks.
- num_mbat_blocks = 0
- io = RangesIOResizeable.new @bbat, 'w', :first_block => AllocationTable::EOC
- # truncate now, so that we can simplify size calcs - the mbat blocks will be appended in a
- # contiguous chunk at the end.
- # hmmm, i think this truncate should be matched with a truncate of the underlying io. if you
- # delete a lot of stuff, and free up trailing blocks, the file size never shrinks. this can
- # be fixed easily, add an io truncate
- @bbat.truncate!
- before = @io.size
- @io.truncate @bbat.block_size * (@bbat.length + 1)
- while true
- # get total bbat size. equivalent to @bbat.to_s.length, but for the factoring in of
- # the mbat blocks. we can't just add the mbat blocks directly to the bbat, as as this iteration
- # progresses, more blocks may be needed for the bat itself (if there are no more gaps), and the
- # mbat must remain contiguous.
- bbat_data_len = ((@bbat.length + num_mbat_blocks) * 4 / @bbat.block_size.to_f).ceil * @bbat.block_size
- # now storing the excess mbat blocks also increases the size of the bbat:
- new_num_mbat_blocks = ([bbat_data_len / @bbat.block_size - 109, 0].max * 4 / (@bbat.block_size.to_f - 4)).ceil
- if new_num_mbat_blocks != num_mbat_blocks
- # need more space for the mbat.
- num_mbat_blocks = new_num_mbat_blocks
- elsif io.size != bbat_data_len
- # need more space for the bat
- # this may grow the bbat, depending on existing available blocks
- io.truncate bbat_data_len
- else
- break
- end
- end
-
- # now extract the info we want:
- ranges = io.ranges
- bbat_chain = @bbat.chain io.first_block
- io.close
- bbat_chain.each { |b| @bbat[b] = AllocationTable::BAT }
- # tack on the mbat stuff
- @header.num_bat = bbat_chain.length
- mbat_blocks = (0...num_mbat_blocks).map do
- block = @bbat.free_block
- @bbat[block] = AllocationTable::META_BAT
- block
- end
- @header.mbat_start = mbat_blocks.first || AllocationTable::EOC
-
- # now finally write the bbat, using a not resizable io.
- # the mode here will be 'r', which allows write atm.
- RangesIO.open(@io, :ranges => ranges) { |f| f.write @bbat.to_s }
-
- # this is the mbat. pad it out.
- bbat_chain += [AllocationTable::AVAIL] * [109 - bbat_chain.length, 0].max
- @header.num_mbat = num_mbat_blocks
- if num_mbat_blocks != 0
- # write out the mbat blocks now. first of all, where are they going to be?
- mbat_data = bbat_chain[109..-1]
- # expand the mbat_data to include the linked list forward pointers.
- mbat_data = mbat_data.to_enum(:each_slice, @bbat.block_size / 4 - 1).to_a.
- zip(mbat_blocks[1..-1] + [nil]).map { |a, b| b ? a + [b] : a }
- # pad out the last one.
- mbat_data.last.push(*([AllocationTable::AVAIL] * (@bbat.block_size / 4 - mbat_data.last.length)))
- RangesIO.open @io, :ranges => @bbat.ranges(mbat_blocks) do |f|
- f.write mbat_data.flatten.pack('V*')
- end
- end
-
- # now seek back and write the header out
- @io.seek 0
- @io.write @header.to_s + bbat_chain[0, 109].pack('V*')
- @io.flush
- end
-
- def clear
- # initialize to equivalent of loading an empty ole document.
- Log.warn 'creating new ole storage object on non-writable io' unless @writeable
- @header = Header.new
- @bbat = AllocationTable::Big.new self
- @root = Dirent.new self, :type => :root, :name => 'Root Entry'
- @dirents = [@root]
- @root.idx = 0
- @sb_file.close if @sb_file
- @sb_file = RangesIOResizeable.new @bbat, :first_block => AllocationTable::EOC
- @sbat = AllocationTable::Small.new self
- # throw everything else the hell away
- @io.truncate 0
- end
-
- # could be useful with mis-behaving ole documents. or to just clean them up.
- def repack temp=:file
- case temp
- when :file
- Tempfile.open 'ole-repack' do |io|
- io.binmode
- repack_using_io io
- end
- when :mem; StringIO.open('', &method(:repack_using_io))
- else raise ArgumentError, "unknown temp backing #{temp.inspect}"
- end
- end
-
- def repack_using_io temp_io
- @io.rewind
- IO.copy @io, temp_io
- clear
- Storage.open temp_io, nil, @params do |temp_ole|
- #temp_ole.root.type = :dir
- Dirent.copy temp_ole.root, root
- end
- end
-
- def bat_for_size size
- # note >=, not > previously.
- size >= @header.threshold ? @bbat : @sbat
- end
-
- def inspect
- "#<#{self.class} io=#{@io.inspect} root=#{@root.inspect}>"
- end
-
- #
- # A class which wraps the ole header
- #
- # Header.new can be both used to load from a string, or to create from
- # defaults. Serialization is accomplished with the #to_s method.
- #
- class Header < Struct.new(
- :magic, :clsid, :minor_ver, :major_ver, :byte_order, :b_shift, :s_shift,
- :reserved, :csectdir, :num_bat, :dirent_start, :transacting_signature, :threshold,
- :sbat_start, :num_sbat, :mbat_start, :num_mbat
- )
- PACK = 'a8 a16 v2 a2 v2 a6 V3 a4 V5'
- SIZE = 0x4c
- # i have seen it pointed out that the first 4 bytes of hex,
- # 0xd0cf11e0, is supposed to spell out docfile. hmmm :)
- MAGIC = "\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1" # expected value of Header#magic
- # what you get if creating new header from scratch.
- # AllocationTable::EOC isn't available yet. meh.
- EOC = 0xfffffffe
- DEFAULT = [
- MAGIC, 0.chr * 16, 59, 3, "\xfe\xff", 9, 6,
- 0.chr * 6, 0, 1, EOC, 0.chr * 4,
- 4096, EOC, 0, EOC, 0
- ]
-
- def initialize values=DEFAULT
- values = values.unpack(PACK) if String === values
- super(*values)
- validate!
- end
-
- def to_s
- to_a.pack PACK
- end
-
- def validate!
- raise FormatError, "OLE2 signature is invalid" unless magic == MAGIC
- if num_bat == 0 or # is that valid for a completely empty file?
- # not sure about this one. basically to do max possible bat given size of mbat
- num_bat > 109 && num_bat > 109 + num_mbat * (1 << b_shift - 2) or
- # shouldn't need to use the mbat as there is enough space in the header block
- num_bat < 109 && num_mbat != 0 or
- # given the size of the header is 76, if b_shift <= 6, blocks address the header.
- s_shift > b_shift or b_shift <= 6 or b_shift >= 31 or
- # we only handle little endian
- byte_order != "\xfe\xff"
- raise FormatError, "not valid OLE2 structured storage file"
- end
- # relaxed this, due to test-msg/qwerty_[1-3]*.msg they all had
- # 3 for this value.
- # transacting_signature != "\x00" * 4 or
- if threshold != 4096 or
- num_mbat == 0 && mbat_start != AllocationTable::EOC or
- reserved != "\x00" * 6
- Log.warn "may not be a valid OLE2 structured storage file"
- end
- true
- end
- end
-
- #
- # +AllocationTable+'s hold the chains corresponding to files. Given
- # an initial index, <tt>AllocationTable#chain</tt> follows the chain, returning
- # the blocks that make up that file.
- #
- # There are 2 allocation tables, the bbat, and sbat, for big and small
- # blocks respectively. The block chain should be loaded using either
- # <tt>Storage#read_big_blocks</tt> or <tt>Storage#read_small_blocks</tt>
- # as appropriate.
- #
- # Whether or not big or small blocks are used for a file depends on
- # whether its size is over the <tt>Header#threshold</tt> level.
- #
- # An <tt>Ole::Storage</tt> document is serialized as a series of directory objects,
- # which are stored in blocks throughout the file. The blocks are either
- # big or small, and are accessed using the <tt>AllocationTable</tt>.
- #
- # The bbat allocation table's data is stored in the spare room in the header
- # block, and in extra blocks throughout the file as referenced by the meta
- # bat. That chain is linear, as there is no higher level table.
- #
- # AllocationTable.new is used to create an empty table. It can parse a string
- # with the #load method. Serialization is accomplished with the #to_s method.
- #
- class AllocationTable < Array
- # a free block (I don't currently leave any blocks free), although I do pad out
- # the allocation table with AVAIL to the block size.
- AVAIL = 0xffffffff
- EOC = 0xfffffffe # end of a chain
- # these blocks are used for storing the allocation table chains
- BAT = 0xfffffffd
- META_BAT = 0xfffffffc
-
- attr_reader :ole, :io, :block_size
- def initialize ole
- @ole = ole
- @sparse = true
- super()
- end
-
- def load data
- replace data.unpack('V*')
- end
-
- def truncate
- # this strips trailing AVAILs. come to think of it, this has the potential to break
- # bogus ole. if you terminate using AVAIL instead of EOC, like I did before. but that is
- # very broken. however, if a chain ends with AVAIL, it should probably be fixed to EOC
- # at load time.
- temp = reverse
- not_avail = temp.find { |b| b != AVAIL } and temp = temp[temp.index(not_avail)..-1]
- temp.reverse
- end
-
- def truncate!
- replace truncate
- end
-
- def to_s
- table = truncate
- # pad it out some
- num = @ole.bbat.block_size / 4
- # do you really use AVAIL? they probably extend past end of file, and may shortly
- # be used for the bat. not really good.
- table += [AVAIL] * (num - (table.length % num)) if (table.length % num) != 0
- table.pack 'V*'
- end
-
- # rewrote this to be non-recursive as it broke on a large attachment
- # chain with a stack error
- def chain idx
- a = []
- until idx >= META_BAT
- raise FormatError, "broken allocationtable chain" if idx < 0 || idx > length
- a << idx
- idx = self[idx]
- end
- Log.warn "invalid chain terminator #{idx}" unless idx == EOC
- a
- end
-
- # Turn a chain (an array given by +chain+) of blocks (optionally
- # truncated to +size+) into an array of arrays describing the stretches of
- # bytes in the file that it belongs to.
- #
- # The blocks are Big or Small blocks depending on the table type.
- def blocks_to_ranges chain, size=nil
- # truncate the chain if required
- chain = chain[0...(size.to_f / block_size).ceil] if size
- # convert chain to ranges of the block size
- ranges = chain.map { |i| [block_size * i, block_size] }
- # truncate final range if required
- ranges.last[1] -= (ranges.length * block_size - size) if ranges.last and size
- ranges
- end
-
- def ranges chain, size=nil
- chain = self.chain(chain) unless Array === chain
- blocks_to_ranges chain, size
- end
-
- # quick shortcut. chain can be either a head (in which case the table is used to
- # turn it into a chain), or a chain. it is converted to ranges, then to rangesio.
- def open chain, size=nil, &block
- RangesIO.open @io, :ranges => ranges(chain, size), &block
- end
-
- def read chain, size=nil
- open chain, size, &:read
- end
-
- # catch any method that may add an AVAIL somewhere in the middle, thus invalidating
- # the @sparse speedup for free_block. annoying using eval, but define_method won't
- # work for this.
- # FIXME
- [:map!, :collect!].each do |name|
- eval <<-END
- def #{name}(*args, &block)
- @sparse = true
- super
- end
- END
- end
-
- def []= idx, val
- @sparse = true if val == AVAIL
- super
- end
-
- def free_block
- if @sparse
- i = index(AVAIL) and return i
- end
- @sparse = false
- push AVAIL
- length - 1
- end
-
- # must return first_block. modifies +blocks+ in place
- def resize_chain blocks, size
- new_num_blocks = (size / block_size.to_f).ceil
- old_num_blocks = blocks.length
- if new_num_blocks < old_num_blocks
- # de-allocate some of our old blocks. TODO maybe zero them out in the file???
- (new_num_blocks...old_num_blocks).each { |i| self[blocks[i]] = AVAIL }
- self[blocks[new_num_blocks-1]] = EOC if new_num_blocks > 0
- blocks.slice! new_num_blocks..-1
- elsif new_num_blocks > old_num_blocks
- # need some more blocks.
- last_block = blocks.last
- (new_num_blocks - old_num_blocks).times do
- block = free_block
- # connect the chain. handle corner case of blocks being [] initially
- self[last_block] = block if last_block
- blocks << block
- last_block = block
- self[last_block] = EOC
- end
- end
- # update ranges, and return that also now
- blocks
- end
-
- class Big < AllocationTable
- def initialize(*args)
- super
- @block_size = 1 << @ole.header.b_shift
- @io = @ole.io
- end
-
- # Big blocks are kind of -1 based, in order to not clash with the header.
- def blocks_to_ranges blocks, size
- super blocks.map { |b| b + 1 }, size
- end
- end
-
- class Small < AllocationTable
- def initialize(*args)
- super
- @block_size = 1 << @ole.header.s_shift
- @io = @ole.sb_file
- end
- end
- end
-
- # like normal RangesIO, but Ole::Storage specific. the ranges are backed by an
- # AllocationTable, and can be resized. used for read/write to 2 streams:
- # 1. serialized dirent data
- # 2. sbat table data
- # 3. all dirents but through RangesIOMigrateable below
- #
- # Note that all internal access to first_block is through accessors, as it is sometimes
- # useful to redirect it.
- class RangesIOResizeable < RangesIO
- attr_reader :bat
- attr_accessor :first_block
- def initialize bat, mode='r', params={}
- mode, params = 'r', mode if Hash === mode
- first_block, size = params.values_at :first_block, :size
- raise ArgumentError, 'must specify first_block' unless first_block
- @bat = bat
- self.first_block = first_block
- # we now cache the blocks chain, for faster resizing.
- @blocks = @bat.chain first_block
- super @bat.io, mode, :ranges => @bat.ranges(@blocks, size)
- end
-
- def truncate size
- # note that old_blocks is != @ranges.length necessarily. i'm planning to write a
- # merge_ranges function that merges sequential ranges into one as an optimization.
- @bat.resize_chain @blocks, size
- @ranges = @bat.ranges @blocks, size
- @pos = @size if @pos > size
- self.first_block = @blocks.empty? ? AllocationTable::EOC : @blocks.first
-
- # don't know if this is required, but we explicitly request our @io to grow if necessary
- # we never shrink it though. maybe this belongs in allocationtable, where smarter decisions
- # can be made.
- # maybe its ok to just seek out there later??
- max = @ranges.map { |pos, len| pos + len }.max || 0
- @io.truncate max if max > @io.size
-
- @size = size
- end
- end
-
- # like RangesIOResizeable, but Ole::Storage::Dirent specific. provides for migration
- # between bats based on size, and updating the dirent.
- class RangesIOMigrateable < RangesIOResizeable
- attr_reader :dirent
- def initialize dirent, mode='r'
- @dirent = dirent
- super @dirent.ole.bat_for_size(@dirent.size), mode,
- :first_block => @dirent.first_block, :size => @dirent.size
- end
-
- def truncate size
- bat = @dirent.ole.bat_for_size size
- if bat.class != @bat.class
- # bat migration needed! we need to backup some data. the amount of data
- # should be <= @ole.header.threshold, so we can just hold it all in one buffer.
- # backup this
- pos = @pos
- @pos = 0
- keep = read [@size, size].min
- # this does a normal truncate to 0, removing our presence from the old bat, and
- # rewrite the dirent's first_block
- super 0
- @bat = bat
- # just change the underlying io from right under everyone :)
- @io = bat.io
- # important to do this now, before the write. as the below write will always
- # migrate us back to sbat! this will now allocate us +size+ in the new bat.
- super
- @pos = 0
- write keep
- @pos = pos
- else
- super
- end
- # now just update the file
- @dirent.size = size
- end
-
- # forward this to the dirent
- def first_block
- @dirent.first_block
- end
-
- def first_block= val
- @dirent.first_block = val
- end
- end
-
- #
- # A class which wraps an ole directory entry. Can be either a directory
- # (<tt>Dirent#dir?</tt>) or a file (<tt>Dirent#file?</tt>)
- #
- # Most interaction with <tt>Ole::Storage</tt> is through this class.
- # The 2 most important functions are <tt>Dirent#children</tt>, and
- # <tt>Dirent#data</tt>.
- #
- # was considering separate classes for dirs and files. some methods/attrs only
- # applicable to one or the other.
- #
- # As with the other classes, #to_s performs the serialization.
- #
- class Dirent < Struct.new(
- :name_utf16, :name_len, :type_id, :colour, :prev, :next, :child,
- :clsid, :flags, # dirs only
- :create_time_str, :modify_time_str, # files only
- :first_block, :size, :reserved
- )
- include RecursivelyEnumerable
-
- PACK = 'a64 v C C V3 a16 V a8 a8 V2 a4'
- SIZE = 128
- TYPE_MAP = {
- # this is temporary
- 0 => :empty,
- 1 => :dir,
- 2 => :file,
- 5 => :root
- }
- # something to do with the fact that the tree is supposed to be red-black
- COLOUR_MAP = {
- 0 => :red,
- 1 => :black
- }
- # used in the next / prev / child stuff to show that the tree ends here.
- # also used for first_block for directory.
- EOT = 0xffffffff
- DEFAULT = [
- 0.chr * 2, 2, 0, # will get overwritten
- 1, EOT, EOT, EOT,
- 0.chr * 16, 0, nil, nil,
- AllocationTable::EOC, 0, 0.chr * 4
- ]
-
- # i think its just used by the tree building
- attr_accessor :idx
- # This returns all the children of this +Dirent+. It is filled in
- # when the tree structure is recreated.
- attr_accessor :children
- attr_accessor :name
- attr_reader :ole, :type, :create_time, :modify_time
- def initialize ole, values=DEFAULT, params={}
- @ole = ole
- values, params = DEFAULT, values if Hash === values
- values = values.unpack(PACK) if String === values
- super(*values)
-
- # extra parsing from the actual struct values
- @name = params[:name] || Types::Variant.load(Types::VT_LPWSTR, name_utf16[0...name_len])
- @type = if params[:type]
- unless TYPE_MAP.values.include?(params[:type])
- raise ArgumentError, "unknown type #{params[:type].inspect}"
- end
- params[:type]
- else
- TYPE_MAP[type_id] or raise FormatError, "unknown type_id #{type_id.inspect}"
- end
-
- # further extra type specific stuff
- if file?
- default_time = @ole.params[:update_timestamps] ? Time.now : nil
- @create_time ||= default_time
- @modify_time ||= default_time
- @create_time = Types::Variant.load(Types::VT_FILETIME, create_time_str) if create_time_str
- @modify_time = Types::Variant.load(Types::VT_FILETIME, create_time_str) if modify_time_str
- @children = nil
- else
- @create_time = nil
- @modify_time = nil
- self.size = 0 unless @type == :root
- @children = []
- end
-
- # to silence warnings. used for tree building at load time
- # only.
- @idx = nil
- end
-
- def open mode='r'
- raise Errno::EISDIR unless file?
- io = RangesIOMigrateable.new self, mode
- # TODO work on the mode string stuff a bit more.
- # maybe let the io object know about the mode, so it can refuse
- # to work for read/write appropriately. maybe redefine all unusable
- # methods using singleton class to throw errors.
- # for now, i just want to implement truncation on use of 'w'. later,
- # i need to do 'a' etc.
- case mode
- when 'r', 'r+'
- # as i don't enforce reading/writing, nothing changes here. kind of
- # need to enforce tt if i want modify times to work better.
- @modify_time = Time.now if mode == 'r+'
- when 'w'
- @modify_time = Time.now
- # io.truncate 0
- #else
- # raise NotImplementedError, "unsupported mode - #{mode.inspect}"
- end
- if block_given?
- begin yield io
- ensure; io.close
- end
- else io
- end
- end
-
- def read limit=nil
- open { |io| io.read limit }
- end
-
- def file?
- type == :file
- end
-
- def dir?
- # to count root as a dir.
- !file?
- end
-
- # maybe need some options regarding case sensitivity.
- def / name
- children.find { |child| name === child.name }
- end
-
- def [] idx
- if String === idx
- #warn 'String form of Dirent#[] is deprecated'
- self / idx
- else
- super
- end
- end
-
- # move to ruby-msg. and remove from here
- def time
- #warn 'Dirent#time is deprecated'
- create_time || modify_time
- end
-
- def each_child(&block)
- @children.each(&block)
- end
-
- # flattens the tree starting from here into +dirents+. note it modifies its argument.
- def flatten dirents=[]
- @idx = dirents.length
- dirents << self
- if file?
- self.prev = self.next = self.child = EOT
- else
- children.each { |child| child.flatten dirents }
- self.child = Dirent.flatten_helper children
- end
- dirents
- end
-
- # i think making the tree structure optimized is actually more complex than this, and
- # requires some intelligent ordering of the children based on names, but as long as
- # it is valid its ok.
- # actually, i think its ok. gsf for example only outputs a singly-linked-list, where
- # prev is always EOT.
- def self.flatten_helper children
- return EOT if children.empty?
- i = children.length / 2
- this = children[i]
- this.prev, this.next = [(0...i), (i+1..-1)].map { |r| flatten_helper children[r] }
- this.idx
- end
-
- def to_s
- tmp = Types::Variant.dump(Types::VT_LPWSTR, name)
- tmp = tmp[0, 62] if tmp.length > 62
- tmp += 0.chr * 2
- self.name_len = tmp.length
- self.name_utf16 = tmp + 0.chr * (64 - tmp.length)
- # type_id can perhaps be set in the initializer, as its read only now.
- self.type_id = TYPE_MAP.to_a.find { |id, name| @type == name }.first
- # for the case of files, it is assumed that that was handled already
- # note not dir?, so as not to override root's first_block
- self.first_block = Dirent::EOT if type == :dir
- if file?
- # this is messed up. it changes the time stamps regardless of whether the file
- # was actually touched. instead, any open call with a writeable mode, should update
- # the modify time. create time would be set in new.
- if @ole.params[:update_timestamps]
- self.create_time_str = Types::Variant.dump Types::VT_FILETIME, @create_time
- self.modify_time_str = Types::Variant.dump Types::VT_FILETIME, @modify_time
- end
- else
- self.create_time_str = 0.chr * 8
- self.modify_time_str = 0.chr * 8
- end
- to_a.pack PACK
- end
-
- def inspect
- str = "#<Dirent:#{name.inspect}"
- # perhaps i should remove the data snippet. its not that useful anymore.
- # there is also some dir specific stuff. like clsid, flags, that i should
- # probably include
- if file?
- tmp = read 9
- data = tmp.length == 9 ? tmp[0, 5] + '...' : tmp
- str << " size=#{size}" +
- "#{modify_time ? ' modify_time=' + modify_time.to_s.inspect : nil}" +
- " data=#{data.inspect}"
- end
- str + '>'
- end
-
- def delete child
- # remove from our child array, so that on reflatten and re-creation of @dirents, it will be gone
- raise ArgumentError, "#{child.inspect} not a child of #{self.inspect}" unless @children.delete child
- # free our blocks
- child.open { |io| io.truncate 0 }
- end
-
- def self.copy src, dst
- # copies the contents of src to dst. must be the same type. this will throw an
- # error on copying to root. maybe this will recurse too much for big documents??
- raise ArgumentError, 'differing types' if src.file? and !dst.file?
- dst.name = src.name
- if src.dir?
- src.children.each do |src_child|
- dst_child = Dirent.new dst.ole, :type => src_child.type
- dst.children << dst_child
- Dirent.copy src_child, dst_child
- end
- else
- src.open do |src_io|
- dst.open { |dst_io| IO.copy src_io, dst_io }
- end
- end
- end
- end
- end
-end
-
diff --git a/vendor/ruby-ole/lib/ole/storage/file_system.rb b/vendor/ruby-ole/lib/ole/storage/file_system.rb
deleted file mode 100644
index 531f1ba11..000000000
--- a/vendor/ruby-ole/lib/ole/storage/file_system.rb
+++ /dev/null
@@ -1,423 +0,0 @@
-#
-# = Introduction
-#
-# This file intends to provide file system-like api support, a la <tt>zip/zipfilesystem</tt>.
-#
-# = TODO
-#
-# - need to implement some more IO functions on RangesIO, like #puts, #print
-# etc, like AbstractOutputStream from zipfile.
-#
-# - check Dir.mkdir, and File.open, and File.rename, to add in filename
-# length checks (max 32 / 31 or something).
-# do the automatic truncation, and add in any necessary warnings.
-#
-# - File.split('a/') == File.split('a') == ['.', 'a']
-# the implication of this, is that things that try to force directory
-# don't work. like, File.rename('a', 'b'), should work if a is a file
-# or directory, but File.rename('a/', 'b') should only work if a is
-# a directory. tricky, need to clean things up a bit more.
-# i think a general path name => dirent method would work, with flags
-# about what should raise an error.
-#
-# - Need to look at streamlining things after getting all the tests passing,
-# as this file's getting pretty long - almost half the real implementation.
-# and is probably more inefficient than necessary.
-# too many exceptions in the expected path of certain functions.
-#
-# - should look at profiles before and after switching ruby-msg to use
-# the filesystem api.
-#
-
-require 'ole/storage'
-
-module Ole # :nodoc:
- class Storage
- def file
- @file ||= FileClass.new self
- end
-
- def dir
- @dir ||= DirClass.new self
- end
-
- # tries to get a dirent for path. return nil if it doesn't exist
- # (change it)
- def dirent_from_path path
- dirent = @root
- path = file.expand_path path
- path = path.sub(/^\/*/, '').sub(/\/*$/, '').split(/\/+/)
- until path.empty?
- return nil if dirent.file?
- return nil unless dirent = dirent/path.shift
- end
- dirent
- end
-
- class FileClass
- class Stat
- attr_reader :ftype, :size, :blocks, :blksize
- attr_reader :nlink, :uid, :gid, :dev, :rdev, :ino
- def initialize dirent
- @dirent = dirent
- @size = dirent.size
- if file?
- @ftype = 'file'
- bat = dirent.ole.bat_for_size(dirent.size)
- @blocks = bat.chain(dirent.first_block).length
- @blksize = bat.block_size
- else
- @ftype = 'directory'
- @blocks = 0
- @blksize = 0
- end
- # a lot of these are bogus. ole file format has no analogs
- @nlink = 1
- @uid, @gid = 0, 0
- @dev, @rdev = 0, 0
- @ino = 0
- # need to add times - atime, mtime, ctime.
- end
-
- alias rdev_major :rdev
- alias rdev_minor :rdev
-
- def file?
- @dirent.file?
- end
-
- def directory?
- @dirent.dir?
- end
-
- def size?
- size if file?
- end
-
- def inspect
- pairs = (instance_variables - ['@dirent']).map do |n|
- "#{n[1..-1]}=#{instance_variable_get n}"
- end
- "#<#{self.class} #{pairs * ', '}>"
- end
- end
-
- def initialize ole
- @ole = ole
- end
-
- def expand_path path
- # get the raw stored pwd value (its blank for root)
- pwd = @ole.dir.instance_variable_get :@pwd
- # its only absolute if it starts with a '/'
- path = "#{pwd}/#{path}" unless path =~ /^\//
- # at this point its already absolute. we use File.expand_path
- # just for the .. and . handling
- # No longer use RUBY_PLATFORM =~ /win/ as it matches darwin. better way?
- File.expand_path(path)[File::ALT_SEPARATOR == "\\" ? (2..-1) : (0..-1)]
- end
-
- # +orig_path+ is just so that we can use the requested path
- # in the error messages even if it has been already modified
- def dirent_from_path path, orig_path=nil
- orig_path ||= path
- dirent = @ole.dirent_from_path path
- raise Errno::ENOENT, orig_path unless dirent
- raise Errno::EISDIR, orig_path if dirent.dir?
- dirent
- end
- private :dirent_from_path
-
- def exists? path
- !!@ole.dirent_from_path(path)
- end
- alias exist? :exists?
-
- def file? path
- dirent = @ole.dirent_from_path path
- dirent and dirent.file?
- end
-
- def directory? path
- dirent = @ole.dirent_from_path path
- dirent and dirent.dir?
- end
-
- def open path, mode='r', &block
- if IO::Mode.new(mode).create?
- begin
- dirent = dirent_from_path path
- rescue Errno::ENOENT
- # maybe instead of repeating this everywhere, i should have
- # a get_parent_dirent function.
- parent_path, basename = File.split expand_path(path)
- parent = @ole.dir.send :dirent_from_path, parent_path, path
- parent.children << dirent = Dirent.new(@ole, :type => :file, :name => basename)
- end
- else
- dirent = dirent_from_path path
- end
- dirent.open mode, &block
- end
-
- # explicit wrapper instead of alias to inhibit block
- def new path, mode='r'
- open path, mode
- end
-
- def size path
- dirent_from_path(path).size
- rescue Errno::EISDIR
- # kind of arbitrary. I'm getting 4096 from ::File, but
- # the zip tests want 0.
- 0
- end
-
- def size? path
- dirent_from_path(path).size
- # any other exceptions i need to rescue?
- rescue Errno::ENOENT, Errno::EISDIR
- nil
- end
-
- def stat path
- # we do this to allow dirs.
- dirent = @ole.dirent_from_path path
- raise Errno::ENOENT, path unless dirent
- Stat.new dirent
- end
-
- def read path
- open path, &:read
- end
-
- # most of the work this function does is moving the dirent between
- # 2 parents. the actual name changing is quite simple.
- # File.rename can move a file into another folder, which is why i've
- # done it too, though i think its not always possible...
- #
- # FIXME File.rename can be used for directories too....
- def rename from_path, to_path
- # check what we want to rename from exists. do it this
- # way to allow directories.
- dirent = @ole.dirent_from_path from_path
- raise Errno::ENOENT, from_path unless dirent
- # delete what we want to rename to if necessary
- begin
- unlink to_path
- rescue Errno::ENOENT
- # we actually get here, but rcov doesn't think so. add 1 + 1 to
- # keep rcov happy for now... :)
- 1 + 1
- end
- # reparent the dirent
- from_parent_path, from_basename = File.split expand_path(from_path)
- to_parent_path, to_basename = File.split expand_path(to_path)
- from_parent = @ole.dir.send :dirent_from_path, from_parent_path, from_path
- to_parent = @ole.dir.send :dirent_from_path, to_parent_path, to_path
- from_parent.children.delete dirent
- # and also change its name
- dirent.name = to_basename
- to_parent.children << dirent
- 0
- end
-
- # crappy copy from Dir.
- def unlink(*paths)
- paths.each do |path|
- dirent = @ole.dirent_from_path path
- # i think we should free all of our blocks from the
- # allocation table.
- # i think if you run repack, all free blocks should get zeroed,
- # but currently the original data is there unmodified.
- open(path) { |f| f.truncate 0 }
- # remove ourself from our parent, so we won't be part of the dir
- # tree at save time.
- parent_path, basename = File.split expand_path(path)
- parent = @ole.dir.send :dirent_from_path, parent_path, path
- parent.children.delete dirent
- end
- paths.length # hmmm. as per ::File ?
- end
- alias delete :unlink
- end
-
- #
- # an *instance* of this class is supposed to provide similar methods
- # to the class methods of Dir itself.
- #
- # pretty complete. like zip/zipfilesystem's implementation, i provide
- # everything except chroot and glob. glob could be done with a glob
- # to regex regex, and then simply match in the entries array... although
- # recursive glob complicates that somewhat.
- #
- # Dir.chroot, Dir.glob, Dir.[], and Dir.tmpdir is the complete list.
- class DirClass
- def initialize ole
- @ole = ole
- @pwd = ''
- end
-
- # +orig_path+ is just so that we can use the requested path
- # in the error messages even if it has been already modified
- def dirent_from_path path, orig_path=nil
- orig_path ||= path
- dirent = @ole.dirent_from_path path
- raise Errno::ENOENT, orig_path unless dirent
- raise Errno::ENOTDIR, orig_path unless dirent.dir?
- dirent
- end
- private :dirent_from_path
-
- def open path
- dir = Dir.new path, entries(path)
- if block_given?
- yield dir
- else
- dir
- end
- end
-
- # as for file, explicit alias to inhibit block
- def new path
- open path
- end
-
- # pwd is always stored without the trailing slash. we handle
- # the root case here
- def pwd
- if @pwd.empty?
- '/'
- else
- @pwd
- end
- end
- alias getwd :pwd
-
- def chdir orig_path
- # make path absolute, squeeze slashes, and remove trailing slash
- path = @ole.file.expand_path(orig_path).gsub(/\/+/, '/').sub(/\/$/, '')
- # this is just for the side effects of the exceptions if invalid
- dirent_from_path path, orig_path
- if block_given?
- old_pwd = @pwd
- begin
- @pwd = path
- yield
- ensure
- @pwd = old_pwd
- end
- else
- @pwd = path
- 0
- end
- end
-
- def entries path
- dirent = dirent_from_path path
- # Not sure about adding on the dots...
- entries = %w[. ..] + dirent.children.map(&:name)
- # do some checks about un-reachable files
- seen = {}
- entries.each do |n|
- Log.warn "inaccessible file (filename contains slash) - #{n.inspect}" if n['/']
- Log.warn "inaccessible file (duplicate filename) - #{n.inspect}" if seen[n]
- seen[n] = true
- end
- entries
- end
-
- def foreach path, &block
- entries(path).each(&block)
- end
-
- # there are some other important ones, like:
- # chroot (!), glob etc etc. for now, i think
- def mkdir path
- # as for rmdir below:
- parent_path, basename = File.split @ole.file.expand_path(path)
- # note that we will complain about the full path despite accessing
- # the parent path. this is consistent with ::Dir
- parent = dirent_from_path parent_path, path
- # now, we first should ensure that it doesn't already exist
- # either as a file or a directory.
- raise Errno::EEXIST, path if parent/basename
- parent.children << Dirent.new(@ole, :type => :dir, :name => basename)
- 0
- end
-
- def rmdir path
- dirent = dirent_from_path path
- raise Errno::ENOTEMPTY, path unless dirent.children.empty?
-
- # now delete it, how to do that? the canonical representation that is
- # maintained is the root tree, and the children array. we must remove it
- # from the children array.
- # we need the parent then. this sucks but anyway:
- # we need to split the path. but before we can do that, we need
- # to expand it first. eg. say we need the parent to unlink
- # a/b/../c. the parent should be a, not a/b/.., or a/b.
- parent_path, basename = File.split @ole.file.expand_path(path)
- # this shouldn't be able to fail if the above didn't
- parent = dirent_from_path parent_path
- # note that the way this currently works, on save and repack time this will get
- # reflected. to work properly, ie to make a difference now it would have to re-write
- # the dirent. i think that Ole::Storage#close will handle that. and maybe include a
- # #repack.
- parent.children.delete dirent
- 0 # hmmm. as per ::Dir ?
- end
- alias delete :rmdir
- alias unlink :rmdir
-
- # note that there is nothing remotely ole specific about
- # this class. it simply provides the dir like sequential access
- # methods on top of an array.
- # hmm, doesn't throw the IOError's on use of a closed directory...
- class Dir
- include Enumerable
-
- attr_reader :path
- def initialize path, entries
- @path, @entries, @pos = path, entries, 0
- @closed = false
- end
-
- def pos
- raise IOError if @closed
- @pos
- end
-
- def each(&block)
- raise IOError if @closed
- @entries.each(&block)
- end
-
- def close
- @closed = true
- end
-
- def read
- raise IOError if @closed
- @entries[pos]
- ensure
- @pos += 1 if pos < @entries.length
- end
-
- def pos= pos
- raise IOError if @closed
- @pos = [[0, pos].max, @entries.length].min
- end
-
- def rewind
- raise IOError if @closed
- @pos = 0
- end
-
- alias tell :pos
- alias seek :pos=
- end
- end
- end
-end
-
diff --git a/vendor/ruby-ole/lib/ole/storage/meta_data.rb b/vendor/ruby-ole/lib/ole/storage/meta_data.rb
deleted file mode 100644
index be84037df..000000000
--- a/vendor/ruby-ole/lib/ole/storage/meta_data.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-require 'ole/types/property_set'
-
-module Ole
- class Storage
- #
- # The MetaData class is designed to be high level interface to all the
- # underlying meta data stored within different sections, themselves within
- # different property set streams.
- #
- # With this class, you can simply get properties using their names, without
- # needing to know about the underlying guids, property ids etc.
- #
- # Example:
- #
- # Ole::Storage.open('test.doc') { |ole| p ole.meta_data.doc_author }
- #
- # TODO:
- #
- # * add write support
- # * fix some of the missing type coercion (eg FileTime)
- # * maybe add back the ability to access individual property sets as a unit
- # directly. ie <tt>ole.summary_information</tt>. Is this useful?
- # * full key support, for unknown keys, like
- # <tt>ole.meta_data[myguid, myid]</tt>. probably needed for user-defined
- # properties too.
- #
- class MetaData
- include Enumerable
-
- FILE_MAP = {
- Types::PropertySet::FMTID_SummaryInformation => "\005SummaryInformation",
- Types::PropertySet::FMTID_DocSummaryInfo => "\005DocumentSummaryInformation"
- }
-
- FORMAT_MAP = {
- 'MSWordDoc' => :doc
- }
-
- CLSID_EXCEL97 = Types::Clsid.parse "{00020820-0000-0000-c000-000000000046}"
- CLSID_EXCEL95 = Types::Clsid.parse "{00020810-0000-0000-c000-000000000046}"
- CLSID_WORD97 = Types::Clsid.parse "{00020906-0000-0000-c000-000000000046}"
- CLSID_WORD95 = Types::Clsid.parse "{00020900-0000-0000-c000-000000000046}"
-
- CLSID_MAP = {
- CLSID_EXCEL97 => :xls,
- CLSID_EXCEL95 => :xls,
- CLSID_WORD97 => :doc,
- CLSID_WORD95 => :doc
- }
-
- MIME_TYPES = {
- :xls => 'application/vnd.ms-excel',
- :doc => 'application/msword',
- :ppt => 'application/vnd.ms-powerpoint',
- # not registered at IANA, but seems most common usage
- :msg => 'application/vnd.ms-outlook',
- # this is my default fallback option. also not registered at IANA.
- # file(1)'s default is application/msword, which is useless...
- nil => 'application/x-ole-storage'
- }
-
- def initialize ole
- @ole = ole
- end
-
- # i'm thinking of making file_format and mime_type available through
- # #[], #each, and #to_h also, as calculated meta data (not assignable)
-
- def comp_obj
- return {} unless dirent = @ole.root["\001CompObj"]
- data = dirent.read
- # see - https://gnunet.org/svn/Extractor/doc/StarWrite_File_Format.html
- # compobj_version: 0x0001
- # byte_order: 0xffe
- # windows_version: 0x00000a03 (win31 apparently)
- # marker: 0xffffffff
- compobj_version, byte_order, windows_version, marker, clsid =
- data.unpack("vvVVa#{Types::Clsid::SIZE}")
- strings = []
- i = 28
- while i < data.length
- len = data[i, 4].unpack('V').first
- i += 4
- strings << data[i, len - 1]
- i += len
- end
- # in the unknown chunk, you usually see something like 'Word.Document.6'
- {:username => strings[0], :file_format => strings[1], :unknown => strings[2..-1]}
- end
- private :comp_obj
-
- def file_format
- comp_obj[:file_format]
- end
-
- def mime_type
- # based on the CompObj stream contents
- type = FORMAT_MAP[file_format]
- return MIME_TYPES[type] if type
-
- # based on the root clsid
- type = CLSID_MAP[Types::Clsid.load(@ole.root.clsid)]
- return MIME_TYPES[type] if type
-
- # fallback to heuristics
- has_file = Hash[*@ole.root.children.map { |d| [d.name.downcase, true] }.flatten]
- return MIME_TYPES[:msg] if has_file['__nameid_version1.0'] or has_file['__properties_version1.0']
- return MIME_TYPES[:doc] if has_file['worddocument'] or has_file['document']
- return MIME_TYPES[:xls] if has_file['workbook'] or has_file['book']
-
- MIME_TYPES[nil]
- end
-
- def [] key
- pair = Types::PropertySet::PROPERTY_MAP[key.to_s] or return nil
- file = FILE_MAP[pair.first] or return nil
- dirent = @ole.root[file] or return nil
- dirent.open { |io| return Types::PropertySet.new(io)[key] }
- end
-
- def []= key, value
- raise NotImplementedError, 'meta data writes not implemented'
- end
-
- def each(&block)
- FILE_MAP.values.each do |file|
- dirent = @ole.root[file] or next
- dirent.open { |io| Types::PropertySet.new(io).each(&block) }
- end
- end
-
- def to_h
- inject({}) { |hash, (name, value)| hash.update name.to_sym => value }
- end
-
- def method_missing name, *args, &block
- return super unless args.empty?
- pair = Types::PropertySet::PROPERTY_MAP[name.to_s] or return super
- self[name]
- end
- end
-
- def meta_data
- @meta_data ||= MetaData.new(self)
- end
- end
-end
-
diff --git a/vendor/ruby-ole/lib/ole/support.rb b/vendor/ruby-ole/lib/ole/support.rb
deleted file mode 100644
index bbb0bbe68..000000000
--- a/vendor/ruby-ole/lib/ole/support.rb
+++ /dev/null
@@ -1,256 +0,0 @@
-#
-# A file with general support functions used by most files in the project.
-#
-# These are the only methods added to other classes.
-#
-
-require 'logger'
-require 'stringio'
-require 'enumerator'
-
-class String # :nodoc:
- # plural of String#index. returns all offsets of +string+. rename to indices?
- #
- # note that it doesn't check for overlapping values.
- def indexes string
- # in some ways i'm surprised that $~ works properly in this case...
- to_enum(:scan, /#{Regexp.quote string}/m).map { $~.begin 0 }
- end
-
- def each_chunk size
- (length / size.to_f).ceil.times { |i| yield self[i * size, size] }
- end
-end
-
-class File # :nodoc:
- # for interface consistency with StringIO etc (rather than adding #stat
- # to them). used by RangesIO.
- def size
- stat.size
- end
-end
-
-class Symbol # :nodoc:
- unless :x.respond_to? :to_proc
- def to_proc
- proc { |a| a.send self }
- end
- end
-end
-
-module Enumerable # :nodoc:
- unless [].respond_to? :group_by
- # 1.9 backport
- def group_by
- hash = Hash.new { |h, key| h[key] = [] }
- each { |item| hash[yield(item)] << item }
- hash
- end
- end
-
- unless [].respond_to? :sum
- def sum initial=0
- inject(initial) { |a, b| a + b }
- end
- end
-end
-
-# move to support?
-class IO # :nodoc:
- # Copy data from IO-like object +src+, to +dst+
- def self.copy src, dst
- until src.eof?
- buf = src.read(4096)
- dst.write buf
- end
- end
-end
-
-class Logger # :nodoc:
- # A helper method for creating a +Logger+ which produce call stack
- # in their output
- def self.new_with_callstack logdev=STDERR
- log = Logger.new logdev
- log.level = WARN
- log.formatter = proc do |severity, time, progname, msg|
- # find where we were called from, in our code
- callstack = caller.dup
- callstack.shift while callstack.first =~ /\/logger\.rb:\d+:in/
- from = callstack.first.sub(/:in `(.*?)'/, ":\\1")
- "[%s %s]\n%-7s%s\n" % [time.strftime('%H:%M:%S'), from, severity, msg.to_s]
- end
- log
- end
-end
-
-# Include this module into a class that defines #each_child. It should
-# maybe use #each instead, but its easier to be more specific, and use
-# an alias.
-#
-# I don't want to force the class to cache children (eg where children
-# are loaded on request in pst), because that forces the whole tree to
-# be loaded. So, the methods should only call #each_child once, and
-# breadth first iteration holds its own copy of the children around.
-#
-# Main methods are #recursive, and #to_tree
-module RecursivelyEnumerable # :nodoc:
- def each_recursive_depth_first(&block)
- each_child do |child|
- yield child
- if child.respond_to? :each_recursive_depth_first
- child.each_recursive_depth_first(&block)
- end
- end
- end
-
- # don't think this is actually a proper breadth first recursion. only first
- # level is breadth first.
- def each_recursive_breadth_first(&block)
- children = []
- each_child do |child|
- children << child if child.respond_to? :each_recursive_breadth_first
- yield child
- end
- children.each { |child| child.each_recursive_breadth_first(&block) }
- end
-
- def each_recursive mode=:depth_first, &block
- # we always actually yield ourself (the tree root) before recursing
- yield self
- send "each_recursive_#{mode}", &block
- end
-
- # the idea of this function, is to allow use of regular Enumerable methods
- # in a recursive fashion. eg:
- #
- # # just looks at top level children
- # root.find { |child| child.some_condition? }
- # # recurse into all children getting non-folders, breadth first
- # root.recursive(:breadth_first).select { |child| !child.folder? }
- # # just get everything
- # items = root.recursive.to_a
- #
- def recursive mode=:depth_first
- to_enum(:each_recursive, mode)
- end
-
- # streams a "tree" form of the recursively enumerable structure to +io+, or
- # return a string form instead if +io+ is not specified.
- #
- # mostly a debugging aid. can specify a different block which will be called
- # to provide the string form for each node.
- def to_tree io='', &inspect
- inspect ||= :inspect.to_proc
- io << "- #{inspect[self]}\n"
- recurse = proc do |node, prefix|
- child = nil
- node.each_child do |next_child|
- if child
- io << "#{prefix}|- #{inspect[child]}\n"
- recurse.call child, prefix + '| '
- end
- child = next_child
- end if node.respond_to?(:each_child)
- if child
- io << "#{prefix}\\- #{inspect[child]}\n"
- recurse.call child, prefix + ' '
- end
- end
- recurse.call self, ' '
- io
- end
-end
-
-# can include File::Constants
-class IO
- # this is for jruby
- include File::Constants unless defined?(RDONLY)
-
- # nabbed from rubinius, and modified
- def self.parse_mode mode
- ret = 0
-
- case mode[0, 1]
- when 'r'; ret |= RDONLY
- when 'w'; ret |= WRONLY | CREAT | TRUNC
- when 'a'; ret |= WRONLY | CREAT | APPEND
- else raise ArgumentError, "illegal access mode #{mode}"
- end
-
- (1...mode.length).each do |i|
- case mode[i, 1]
- when '+'; ret = (ret & ~(RDONLY | WRONLY)) | RDWR
- when 'b'; ret |= Mode::BINARY
- else raise ArgumentError, "illegal access mode #{mode}"
- end
- end
-
- ret
- end
-
- class Mode
- # ruby 1.9 defines binary as 0, which isn't very helpful.
- # its 4 in rubinius. no longer using
- #
- # BINARY = 0x4 unless defined?(BINARY)
- #
- # for that reason, have my own constants module here
- module Constants
- include File::Constants
- BINARY = 0x4
- end
-
- include Constants
- NAMES = %w[rdonly wronly rdwr creat trunc append binary]
-
- attr_reader :flags
- def initialize flags
- flags = IO.parse_mode flags.to_str if flags.respond_to? :to_str
- raise ArgumentError, "invalid flags - #{flags.inspect}" unless Fixnum === flags
- @flags = flags
- end
-
- def writeable?
- #(@flags & RDONLY) == 0
- (@flags & 0x3) != RDONLY
- end
-
- def readable?
- (@flags & WRONLY) == 0
- end
-
- def truncate?
- (@flags & TRUNC) != 0
- end
-
- def append?
- (@flags & APPEND) != 0
- end
-
- def create?
- (@flags & CREAT) != 0
- end
-
- def binary?
- (@flags & BINARY) != 0
- end
-
-=begin
- # revisit this
- def apply io
- if truncate?
- io.truncate 0
- elsif append?
- io.seek IO::SEEK_END, 0
- end
- end
-=end
-
- def inspect
- names = NAMES.map { |name| name if (flags & Mode.const_get(name.upcase)) != 0 }
- names.unshift 'rdonly' if (flags & 0x3) == 0
- "#<#{self.class} #{names.compact * '|'}>"
- end
- end
-end
-
diff --git a/vendor/ruby-ole/lib/ole/types.rb b/vendor/ruby-ole/lib/ole/types.rb
deleted file mode 100644
index 95616927a..000000000
--- a/vendor/ruby-ole/lib/ole/types.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'ole/types/base'
-require 'ole/types/property_set'
diff --git a/vendor/ruby-ole/lib/ole/types/base.rb b/vendor/ruby-ole/lib/ole/types/base.rb
deleted file mode 100644
index 31e7b24e9..000000000
--- a/vendor/ruby-ole/lib/ole/types/base.rb
+++ /dev/null
@@ -1,251 +0,0 @@
-require 'iconv'
-require 'date'
-
-require 'ole/base'
-
-module Ole # :nodoc:
- #
- # The Types module contains all the serialization and deserialization code for standard ole
- # types.
- #
- # It also defines all the variant type constants, and symbolic names.
- #
- module Types
- # for anything that we don't have serialization code for
- class Data < String
- def self.load str
- new str
- end
-
- def self.dump str
- str.to_s
- end
- end
-
- class Lpstr < String
- def self.load str
- # not sure if its always there, but there is often a trailing
- # null byte.
- new str.chomp(0.chr)
- end
-
- def self.dump str
- # do i need to append the null byte?
- str.to_s
- end
- end
-
- # for VT_LPWSTR
- class Lpwstr < String
- FROM_UTF16 = Iconv.new 'utf-8', 'utf-16le'
- TO_UTF16 = Iconv.new 'utf-16le', 'utf-8'
-
- def self.load str
- new FROM_UTF16.iconv(str).chomp(0.chr)
- end
-
- def self.dump str
- # need to append nulls?
- data = TO_UTF16.iconv str
- # not sure if this is the recommended way to do it, but I want to treat
- # the resulting utf16 data as regular bytes, not characters.
- data.force_encoding Encoding::US_ASCII if data.respond_to? :encoding
- data
- end
- end
-
- # for VT_FILETIME
- class FileTime < DateTime
- SIZE = 8
- EPOCH = new 1601, 1, 1
-
- # Create a +DateTime+ object from a struct +FILETIME+
- # (http://msdn2.microsoft.com/en-us/library/ms724284.aspx).
- #
- # Converts +str+ to two 32 bit time values, comprising the high and low 32 bits of
- # the 100's of nanoseconds since 1st january 1601 (Epoch).
- def self.load str
- low, high = str.to_s.unpack 'V2'
- # we ignore these, without even warning about it
- return nil if low == 0 and high == 0
- # switched to rational, and fixed the off by 1 second error i sometimes got.
- # time = EPOCH + (high * (1 << 32) + low) / 1e7 / 86400 rescue return
- # use const_get to ensure we can return anything which subclasses this (VT_DATE?)
- const_get('EPOCH') + Rational(high * (1 << 32) + low, 1e7.to_i * 86400) rescue return
- # extra sanity check...
- #unless (1800...2100) === time.year
- # Log.warn "ignoring unlikely time value #{time.to_s}"
- # return nil
- #end
- #time
- end
-
- # +time+ should be able to be either a Time, Date, or DateTime.
- def self.dump time
- # i think i'll convert whatever i get to be a datetime, because of
- # the covered range.
- return 0.chr * SIZE unless time
- time = time.send(:to_datetime) if Time === time
- # don't bother to use const_get here
- bignum = (time - EPOCH) * 86400 * 1e7.to_i
- high, low = bignum.divmod 1 << 32
- [low, high].pack 'V2'
- end
-
- def inspect
- "#<#{self.class} #{to_s}>"
- end
- end
-
- # for VT_CLSID
- # Unlike most of the other conversions, the Guid's are serialized/deserialized by actually
- # doing nothing! (eg, _load & _dump are null ops)
- # Rather, its just a string with a different inspect string, and it includes a
- # helper method for creating a Guid from that readable form (#format).
- class Clsid < String
- SIZE = 16
- PACK = 'V v v CC C6'
-
- def self.load str
- new str.to_s
- end
-
- def self.dump guid
- return 0.chr * SIZE unless guid
- # allow use of plain strings in place of guids.
- guid['-'] ? parse(guid) : guid
- end
-
- def self.parse str
- vals = str.scan(/[a-f\d]+/i).map(&:hex)
- if vals.length == 5
- # this is pretty ugly
- vals[3] = ('%04x' % vals[3]).scan(/../).map(&:hex)
- vals[4] = ('%012x' % vals[4]).scan(/../).map(&:hex)
- guid = new vals.flatten.pack(PACK)
- return guid if guid.format.delete('{}') == str.downcase.delete('{}')
- end
- raise ArgumentError, 'invalid guid - %p' % str
- end
-
- def format
- "%08x-%04x-%04x-%02x%02x-#{'%02x' * 6}" % unpack(PACK)
- end
-
- def inspect
- "#<#{self.class}:{#{format}}>"
- end
- end
-
- #
- # The OLE variant types, extracted from
- # http://www.marin.clara.net/COM/variant_type_definitions.htm.
- #
- # A subset is also in WIN32OLE::VARIANT, but its not cross platform (obviously).
- #
- # Use like:
- #
- # p Ole::Types::Variant::NAMES[0x001f] => 'VT_LPWSTR'
- # p Ole::Types::VT_DATE # => 7
- #
- # The serialization / deserialization functions should be fixed to make it easier
- # to work with. like
- #
- # Ole::Types.from_str(VT_DATE, data) # and
- # Ole::Types.to_str(VT_DATE, data)
- #
- # Or similar, rather than having to do VT_* <=> ad hoc class name etc as it is
- # currently.
- #
- module Variant
- NAMES = {
- 0x0000 => 'VT_EMPTY',
- 0x0001 => 'VT_NULL',
- 0x0002 => 'VT_I2',
- 0x0003 => 'VT_I4',
- 0x0004 => 'VT_R4',
- 0x0005 => 'VT_R8',
- 0x0006 => 'VT_CY',
- 0x0007 => 'VT_DATE',
- 0x0008 => 'VT_BSTR',
- 0x0009 => 'VT_DISPATCH',
- 0x000a => 'VT_ERROR',
- 0x000b => 'VT_BOOL',
- 0x000c => 'VT_VARIANT',
- 0x000d => 'VT_UNKNOWN',
- 0x000e => 'VT_DECIMAL',
- 0x0010 => 'VT_I1',
- 0x0011 => 'VT_UI1',
- 0x0012 => 'VT_UI2',
- 0x0013 => 'VT_UI4',
- 0x0014 => 'VT_I8',
- 0x0015 => 'VT_UI8',
- 0x0016 => 'VT_INT',
- 0x0017 => 'VT_UINT',
- 0x0018 => 'VT_VOID',
- 0x0019 => 'VT_HRESULT',
- 0x001a => 'VT_PTR',
- 0x001b => 'VT_SAFEARRAY',
- 0x001c => 'VT_CARRAY',
- 0x001d => 'VT_USERDEFINED',
- 0x001e => 'VT_LPSTR',
- 0x001f => 'VT_LPWSTR',
- 0x0040 => 'VT_FILETIME',
- 0x0041 => 'VT_BLOB',
- 0x0042 => 'VT_STREAM',
- 0x0043 => 'VT_STORAGE',
- 0x0044 => 'VT_STREAMED_OBJECT',
- 0x0045 => 'VT_STORED_OBJECT',
- 0x0046 => 'VT_BLOB_OBJECT',
- 0x0047 => 'VT_CF',
- 0x0048 => 'VT_CLSID',
- 0x0fff => 'VT_ILLEGALMASKED',
- 0x0fff => 'VT_TYPEMASK',
- 0x1000 => 'VT_VECTOR',
- 0x2000 => 'VT_ARRAY',
- 0x4000 => 'VT_BYREF',
- 0x8000 => 'VT_RESERVED',
- 0xffff => 'VT_ILLEGAL'
- }
-
- CLASS_MAP = {
- # haven't seen one of these. wonder if its same as FILETIME?
- #'VT_DATE' => ?,
- 'VT_LPSTR' => Lpstr,
- 'VT_LPWSTR' => Lpwstr,
- 'VT_FILETIME' => FileTime,
- 'VT_CLSID' => Clsid
- }
-
- module Constants
- NAMES.each { |num, name| const_set name, num }
- end
-
- def self.load type, str
- type = NAMES[type] or raise ArgumentError, 'unknown ole type - 0x%04x' % type
- (CLASS_MAP[type] || Data).load str
- end
-
- def self.dump type, variant
- type = NAMES[type] or raise ArgumentError, 'unknown ole type - 0x%04x' % type
- (CLASS_MAP[type] || Data).dump variant
- end
- end
-
- include Variant::Constants
-
- # deprecated aliases, kept mostly for the benefit of ruby-msg, until
- # i release a new version.
- def self.load_guid str
- Variant.load VT_CLSID, str
- end
-
- def self.load_time str
- Variant.load VT_FILETIME, str
- end
-
- FROM_UTF16 = Lpwstr::FROM_UTF16
- TO_UTF16 = Lpwstr::TO_UTF16
- end
-end
-
diff --git a/vendor/ruby-ole/lib/ole/types/property_set.rb b/vendor/ruby-ole/lib/ole/types/property_set.rb
deleted file mode 100644
index b8d85acba..000000000
--- a/vendor/ruby-ole/lib/ole/types/property_set.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-require 'ole/types'
-require 'yaml'
-
-module Ole
- module Types
- #
- # The PropertySet class currently supports readonly access to the properties
- # serialized in "property set" streams, such as the file "\005SummaryInformation",
- # in OLE files.
- #
- # Think it has its roots in MFC property set serialization.
- #
- # See http://poi.apache.org/hpsf/internals.html for details
- #
- class PropertySet
- HEADER_SIZE = 28
- HEADER_PACK = "vvVa#{Clsid::SIZE}V"
- OS_MAP = {
- 0 => :win16,
- 1 => :mac,
- 2 => :win32,
- 0x20001 => :ooffice, # open office on linux...
- }
-
- # define a smattering of the property set guids.
- DATA = YAML.load_file(File.dirname(__FILE__) + '/../../../data/propids.yaml').
- inject({}) { |hash, (key, value)| hash.update Clsid.parse(key) => value }
-
- # create an inverted map of names to guid/key pairs
- PROPERTY_MAP = DATA.inject({}) do |h1, (guid, data)|
- data[1].inject(h1) { |h2, (id, name)| h2.update name => [guid, id] }
- end
-
- module Constants
- DATA.each { |guid, (name, map)| const_set name, guid }
- end
-
- include Constants
- include Enumerable
-
- class Section
- include Variant::Constants
- include Enumerable
-
- SIZE = Clsid::SIZE + 4
- PACK = "a#{Clsid::SIZE}v"
-
- attr_accessor :guid, :offset
- attr_reader :length
-
- def initialize str, property_set
- @property_set = property_set
- @guid, @offset = str.unpack PACK
- self.guid = Clsid.load guid
- load_header
- end
-
- def io
- @property_set.io
- end
-
- def load_header
- io.seek offset
- @byte_size, @length = io.read(8).unpack 'V2'
- end
-
- def [] key
- each_raw do |id, property_offset|
- return read_property(property_offset).last if key == id
- end
- nil
- end
-
- def []= key, value
- raise NotImplementedError, 'section writes not yet implemented'
- end
-
- def each
- each_raw do |id, property_offset|
- yield id, read_property(property_offset).last
- end
- end
-
- private
-
- def each_raw
- io.seek offset + 8
- io.read(length * 8).each_chunk(8) { |str| yield(*str.unpack('V2')) }
- end
-
- def read_property property_offset
- io.seek offset + property_offset
- type, value = io.read(8).unpack('V2')
- # is the method of serialization here custom?
- case type
- when VT_LPSTR, VT_LPWSTR
- value = Variant.load type, io.read(value)
- # ....
- end
- [type, value]
- end
- end
-
- attr_reader :io, :signature, :unknown, :os, :guid, :sections
-
- def initialize io
- @io = io
- load_header io.read(HEADER_SIZE)
- load_section_list io.read(@num_sections * Section::SIZE)
- # expect no gap between last section and start of data.
- #Log.warn "gap between section list and property data" unless io.pos == @sections.map(&:offset).min
- end
-
- def load_header str
- @signature, @unknown, @os_id, @guid, @num_sections = str.unpack HEADER_PACK
- # should i check that unknown == 0? it usually is. so is the guid actually
- @guid = Clsid.load @guid
- @os = OS_MAP[@os_id] || Log.warn("unknown operating system id #{@os_id}")
- end
-
- def load_section_list str
- @sections = str.to_enum(:each_chunk, Section::SIZE).map { |s| Section.new s, self }
- end
-
- def [] key
- pair = PROPERTY_MAP[key.to_s] or return nil
- section = @sections.find { |s| s.guid == pair.first } or return nil
- section[pair.last]
- end
-
- def []= key, value
- pair = PROPERTY_MAP[key.to_s] or return nil
- section = @sections.find { |s| s.guid == pair.first } or return nil
- section[pair.last] = value
- end
-
- def method_missing name, *args, &block
- if name.to_s =~ /(.*)=$/
- return super unless args.length == 1
- return super unless PROPERTY_MAP[$1]
- self[$1] = args.first
- else
- return super unless args.length == 0
- return super unless PROPERTY_MAP[name.to_s]
- self[name]
- end
- end
-
- def each
- @sections.each do |section|
- next unless pair = DATA[section.guid]
- map = pair.last
- section.each do |id, value|
- name = map[id] or next
- yield name, value
- end
- end
- end
-
- def to_h
- inject({}) { |hash, (name, value)| hash.update name.to_sym => value }
- end
- end
- end
-end