card 1.17.4 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/card.gemspec +24 -25
- data/config/initializers/01_init_ruby_extensions.rb +0 -4
- data/config/initializers/inflections.rb +1 -1
- data/config/initializers/notification.rb +2 -2
- data/db/migrate/20110511221913_require_earlier_migrations.rb +3 -3
- data/db/migrate/20120105203350_require_1_8_migrations.rb +3 -3
- data/db/migrate/20121111025347_require_1_10_migrations.rb +3 -3
- data/db/migrate/20130106052640_table_cleanup.rb +4 -4
- data/db/migrate/20130411210957_update_codenames.rb +2 -2
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +4 -4
- data/db/migrate/20141121172918_rename_card_migration_table.rb +2 -2
- data/db/migrate/20141208132159_remove_present_from_reference_table.rb +2 -2
- data/db/migrate/20141216053032_better_index_names.rb +9 -9
- data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +29 -32
- data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +3 -4
- data/db/migrate_core_cards/20130411211600_delete_old_related_tab_cards.rb +1 -1
- data/db/migrate_core_cards/20130419215612_import_help_text.rb +1 -2
- data/db/migrate_core_cards/20130823192433_add_style_cards.rb +3 -3
- data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +2 -3
- data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +2 -2
- data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +1 -2
- data/db/migrate_core_cards/20130927191728_account_events.rb +5 -6
- data/db/migrate_core_cards/20131016172445_common_css_patch.rb +2 -3
- data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +0 -1
- data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +23 -32
- data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +1 -7
- data/db/migrate_core_cards/20140512155840_add_script_cards.rb +21 -24
- data/db/migrate_core_cards/20140629222005_add_email_cards.rb +17 -22
- data/db/migrate_core_cards/20140725180118_config_card_updates.rb +2 -2
- data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +1 -3
- data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +2 -2
- data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +3 -3
- data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +1 -1
- data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -12
- data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -3
- data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +10 -10
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +10 -12
- data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +4 -4
- data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +3 -3
- data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +7 -7
- data/db/migrate_core_cards/20150429090551_search_card_context.rb +18 -20
- data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -7
- data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +2 -3
- data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +3 -3
- data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +4 -4
- data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +4 -4
- data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +5 -11
- data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +29 -35
- data/db/migrate_core_cards/20150824135418_update_file_history.rb +10 -14
- data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +1 -1
- data/db/schema.rb +92 -94
- data/db/seed/new/card_actions.yml +461 -469
- data/db/seed/new/card_acts.yml +154 -172
- data/db/seed/new/card_changes.yml +4076 -4031
- data/db/seed/new/card_references.yml +1584 -1927
- data/db/seed/new/cards.yml +2095 -2112
- data/db/seed/test/fixtures/card_actions.yml +1497 -1505
- data/db/seed/test/fixtures/card_acts.yml +454 -472
- data/db/seed/test/fixtures/card_changes.yml +7309 -7263
- data/db/seed/test/fixtures/card_references.yml +2263 -2613
- data/db/seed/test/fixtures/cards.yml +3298 -3316
- data/db/seed/test/seed.rb +3 -0
- data/lib/card.rb +17 -9
- data/lib/card/active_record_ext.rb +6 -8
- data/lib/card/active_record_helper.rb +42 -32
- data/lib/card/auth.rb +3 -3
- data/lib/card/cache.rb +4 -4
- data/lib/card/cache/persistent.rb +9 -5
- data/lib/card/cache/temporary.rb +5 -5
- data/lib/card/chunk.rb +1 -1
- data/lib/card/codename.rb +3 -2
- data/lib/card/content.rb +62 -57
- data/lib/card/core_ext.rb +20 -30
- data/lib/card/diff.rb +88 -76
- data/lib/card/director_register.rb +66 -0
- data/lib/card/env.rb +14 -17
- data/lib/card/exceptions.rb +7 -9
- data/lib/card/format.rb +18 -367
- data/lib/card/format/nest.rb +183 -0
- data/lib/card/format/permission.rb +63 -0
- data/lib/card/format/render.rb +140 -0
- data/lib/card/loader.rb +17 -26
- data/lib/card/location.rb +6 -6
- data/lib/card/mailer.rb +4 -7
- data/lib/card/migration.rb +1 -1
- data/lib/card/name.rb +3 -6
- data/lib/card/query.rb +8 -8
- data/lib/card/query/attributes.rb +6 -6
- data/lib/card/query/clause.rb +10 -10
- data/lib/card/query/join.rb +7 -9
- data/lib/card/query/reference.rb +17 -19
- data/lib/card/query/sql_statement.rb +2 -2
- data/lib/card/query/value.rb +15 -16
- data/lib/card/set.rb +106 -209
- data/lib/card/set/event.rb +126 -0
- data/lib/card/set_pattern.rb +42 -29
- data/lib/card/simplecov_helper.rb +19 -19
- data/lib/card/spec_helper.rb +40 -16
- data/lib/card/stage.rb +72 -0
- data/lib/card/stage_director.rb +231 -0
- data/lib/card/subcards.rb +56 -24
- data/lib/card/subdirector_array.rb +31 -0
- data/lib/card/success.rb +15 -18
- data/lib/card/version.rb +1 -2
- data/lib/card/view_cache.rb +4 -4
- data/lib/card/view_name.rb +10 -8
- data/lib/cardio.rb +1 -1
- data/lib/generators/card.rb +2 -4
- data/lib/generators/card/format/format_generator.rb +4 -4
- data/lib/generators/card/migration/migration_generator.rb +6 -6
- data/lib/generators/card/set/set_generator.rb +5 -6
- data/mod/01_core/chunk/include.rb +2 -1
- data/mod/01_core/chunk/link.rb +2 -2
- data/mod/01_core/chunk/literal.rb +6 -9
- data/mod/01_core/chunk/query_reference.rb +1 -1
- data/mod/01_core/chunk/reference.rb +2 -2
- data/mod/01_core/chunk/uri.rb +52 -63
- data/mod/01_core/format/html_format.rb +8 -12
- data/mod/01_core/format/text_format.rb +1 -1
- data/mod/01_core/set/all/actify.rb +96 -0
- data/mod/01_core/set/all/active_card.rb +7 -7
- data/mod/01_core/set/all/collection.rb +19 -20
- data/mod/01_core/set/all/content.rb +9 -7
- data/mod/01_core/set/all/erb.rb +5 -5
- data/mod/01_core/set/all/event.rb +60 -0
- data/mod/01_core/set/all/fetch.rb +13 -19
- data/mod/01_core/set/all/haml.rb +1 -1
- data/mod/01_core/set/all/initialize.rb +35 -41
- data/mod/01_core/set/all/location_history.rb +3 -5
- data/mod/01_core/set/all/name.rb +19 -68
- data/mod/01_core/set/all/name_validations.rb +56 -0
- data/mod/01_core/set/all/pattern.rb +2 -2
- data/mod/01_core/set/all/permissions.rb +14 -20
- data/mod/01_core/set/all/phases.rb +9 -200
- data/mod/01_core/set/all/references.rb +10 -10
- data/mod/01_core/set/all/rules.rb +3 -4
- data/mod/01_core/set/all/stages.rb +24 -0
- data/mod/01_core/set/all/states.rb +4 -4
- data/mod/01_core/set/all/subcards.rb +16 -26
- data/mod/01_core/set/all/templating.rb +1 -3
- data/mod/01_core/set/all/tracked_attributes.rb +47 -48
- data/mod/01_core/set/all/trash.rb +10 -10
- data/mod/01_core/set/all/type.rb +9 -8
- data/mod/01_core/set/all/utils.rb +10 -14
- data/mod/01_core/set/all/view_cache.rb +2 -2
- data/mod/01_core/set_pattern/01_all.rb +3 -3
- data/mod/01_core/set_pattern/02_all_plus.rb +3 -3
- data/mod/01_core/set_pattern/03_type.rb +2 -2
- data/mod/01_core/set_pattern/04_star.rb +3 -3
- data/mod/01_core/set_pattern/05_rstar.rb +3 -3
- data/mod/01_core/set_pattern/06_right.rb +2 -2
- data/mod/01_core/set_pattern/07_type_plus_right.rb +2 -2
- data/mod/01_core/set_pattern/08_self.rb +1 -1
- data/mod/01_core/spec/chunk/literal_spec.rb +7 -8
- data/mod/01_core/spec/chunk/uri_spec.rb +140 -142
- data/mod/01_core/spec/format/html_format_spec.rb +72 -57
- data/mod/01_core/spec/set/all/collection_spec.rb +63 -43
- data/mod/01_core/spec/set/all/content_spec.rb +4 -4
- data/mod/01_core/spec/set/all/fetch_spec.rb +12 -3
- data/mod/01_core/spec/set/all/name_spec.rb +3 -4
- data/mod/01_core/spec/set/all/pattern_spec.rb +32 -35
- data/mod/01_core/spec/set/all/permissions_spec.rb +17 -5
- data/mod/01_core/spec/set/all/phases_spec.rb +0 -1
- data/mod/01_core/spec/set/all/references_spec.rb +1 -1
- data/mod/01_core/spec/set/all/rules2_spec.rb +79 -91
- data/mod/01_core/spec/set/all/rules_spec.rb +63 -56
- data/mod/01_core/spec/set/all/templating_spec.rb +0 -1
- data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +4 -5
- data/mod/01_core/spec/set/all/trash_spec.rb +23 -1
- data/mod/01_core/spec/set/all/type_spec.rb +2 -5
- data/mod/01_history/lib/card/action.rb +8 -10
- data/mod/01_history/set/all/actions.rb +2 -4
- data/mod/01_history/set/all/content_history.rb +38 -32
- data/mod/01_history/set/all/history.rb +20 -17
- data/mod/02_basic_types/format/rss_format.rb +0 -1
- data/mod/02_basic_types/set/all/all_css.rb +9 -13
- data/mod/02_basic_types/set/all/all_csv.rb +14 -17
- data/mod/02_basic_types/set/all/all_js.rb +3 -4
- data/mod/02_basic_types/set/all/base.rb +2 -2
- data/mod/02_basic_types/set/all/file.rb +2 -5
- data/mod/02_basic_types/set/all/json.rb +19 -18
- data/mod/02_basic_types/set/all/rss.rb +3 -3
- data/mod/02_basic_types/set/all/text.rb +1 -3
- data/mod/02_basic_types/set/type/html.rb +4 -8
- data/mod/02_basic_types/set/type/plain_text.rb +2 -3
- data/mod/02_basic_types/set/type/pointer.rb +82 -92
- data/mod/02_basic_types/spec/set/all/all_css_spec.rb +2 -2
- data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +6 -4
- data/mod/02_basic_types/spec/set/all/base_spec.rb +6 -6
- data/mod/02_basic_types/spec/set/all/json_spec.rb +8 -8
- data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +3 -3
- data/mod/02_basic_types/spec/set/type/pointer_spec.rb +29 -32
- data/mod/03_machines/lib/card/machine.rb +95 -81
- data/mod/03_machines/lib/card/machine_input.rb +35 -34
- data/mod/03_machines/set/right/machine_input.rb +1 -1
- data/mod/03_machines/set/self/script_ace.rb +2 -3
- data/mod/03_machines/set/self/script_card_menu.rb +2 -3
- data/mod/03_machines/set/self/script_jquery_helper.rb +2 -2
- data/mod/03_machines/set/self/script_slot.rb +2 -2
- data/mod/03_machines/set/self/style_bootstrap_compatible.rb +1 -1
- data/mod/03_machines/set/self/style_cards.rb +1 -1
- data/mod/03_machines/set/self/style_jquery_ui_smoothness.rb +0 -1
- data/mod/03_machines/set/type/coffee_script.rb +9 -13
- data/mod/03_machines/set/type/css.rb +12 -13
- data/mod/03_machines/set/type/java_script.rb +6 -8
- data/mod/03_machines/set/type/scss.rb +4 -5
- data/mod/03_machines/set/type/skin.rb +3 -6
- data/mod/03_machines/spec/lib/shared_machine_examples.rb +31 -38
- data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +7 -8
- data/mod/03_machines/spec/set/type/coffeescript_spec.rb +19 -13
- data/mod/03_machines/spec/set/type/css_spec.rb +22 -16
- data/mod/03_machines/spec/set/type/scss_spec.rb +28 -21
- data/mod/03_machines/spec/set/type/skin_spec.rb +28 -30
- data/mod/04_settings/lib/card/setting.rb +4 -4
- data/mod/04_settings/set/abstract/permission.rb +30 -37
- data/mod/04_settings/set/right/add_help.rb +3 -3
- data/mod/04_settings/set/right/script.rb +4 -5
- data/mod/04_settings/set/right/structure.rb +3 -4
- data/mod/04_settings/set/right/style.rb +3 -3
- data/mod/04_settings/set/self/add_help.rb +1 -1
- data/mod/04_settings/set/self/input.rb +1 -1
- data/mod/04_settings/set/self/on_create.rb +1 -1
- data/mod/04_settings/set/self/options.rb +1 -1
- data/mod/04_settings/set/self/options_label.rb +1 -1
- data/mod/04_settings/set/type/setting.rb +29 -44
- data/mod/04_settings/spec/set/right/comment_spec.rb +9 -12
- data/mod/04_settings/spec/set/right/script_spec.rb +7 -7
- data/mod/04_settings/spec/set/right/structure_spec.rb +13 -12
- data/mod/04_settings/spec/set/right/style_spec.rb +13 -13
- data/mod/04_settings/spec/set/type/setting_spec.rb +1 -1
- data/mod/05_email/format/email_html_format.rb +1 -1
- data/mod/05_email/format/email_text_format.rb +2 -2
- data/mod/05_email/lib/card/follow_option.rb +12 -15
- data/mod/05_email/set/all/email_html.rb +2 -3
- data/mod/05_email/set/all/email_text.rb +3 -3
- data/mod/05_email/set/all/follow.rb +14 -22
- data/mod/05_email/set/all/notify.rb +11 -11
- data/mod/05_email/set/all/observer.rb +7 -8
- data/mod/05_email/set/right/bcc.rb +4 -9
- data/mod/05_email/set/right/follow.rb +26 -39
- data/mod/05_email/set/right/follow_fields.rb +2 -2
- data/mod/05_email/set/right/followers.rb +3 -1
- data/mod/05_email/set/right/following.rb +13 -16
- data/mod/05_email/set/self/always.rb +1 -2
- data/mod/05_email/set/self/created.rb +4 -6
- data/mod/05_email/set/self/edited.rb +3 -7
- data/mod/05_email/set/self/follow_defaults.rb +11 -12
- data/mod/05_email/set/self/never.rb +2 -4
- data/mod/05_email/set/type/email_template.rb +40 -27
- data/mod/05_email/set/type_plus_right/user/follow.rb +159 -157
- data/mod/05_email/spec/set/all/follow_spec.rb +28 -37
- data/mod/05_email/spec/set/all/notify_spec.rb +21 -26
- data/mod/05_email/spec/set/all/observer_spec.rb +58 -37
- data/mod/05_email/spec/set/right/followers_spec.rb +9 -14
- data/mod/05_email/spec/set/right/following_spec.rb +1 -1
- data/mod/05_email/spec/set/self/follow_defaults_spec.rb +1 -1
- data/mod/05_standard/lib/carrier_wave/cardmount.rb +9 -9
- data/mod/05_standard/lib/file_uploader.rb +8 -13
- data/mod/05_standard/lib/image_uploader.rb +8 -9
- data/mod/05_standard/set/abstract/attachment.rb +26 -43
- data/mod/05_standard/set/all/account.rb +2 -2
- data/mod/05_standard/set/all/comment.rb +11 -13
- data/mod/05_standard/set/all/error.rb +18 -18
- data/mod/05_standard/set/all/event_viz.rb +16 -29
- data/mod/05_standard/set/all/links.rb +35 -34
- data/mod/05_standard/set/all/list_changes.rb +10 -12
- data/mod/05_standard/set/all/rich_html/content.rb +13 -13
- data/mod/05_standard/set/all/rich_html/editing.rb +5 -5
- data/mod/05_standard/set/all/rich_html/form.rb +22 -26
- data/mod/05_standard/set/all/rich_html/header.rb +18 -25
- data/mod/05_standard/set/all/rich_html/menu.rb +20 -22
- data/mod/05_standard/set/all/rich_html/modal.rb +3 -3
- data/mod/05_standard/set/all/rich_html/toolbar.rb +49 -58
- data/mod/05_standard/set/all/rich_html/wrapper.rb +40 -41
- data/mod/05_standard/set/right/account.rb +26 -14
- data/mod/05_standard/set/right/email.rb +2 -2
- data/mod/05_standard/set/right/password.rb +6 -5
- data/mod/05_standard/set/right/salt.rb +2 -2
- data/mod/05_standard/set/right/stats.rb +17 -20
- data/mod/05_standard/set/right/token.rb +1 -1
- data/mod/05_standard/set/right/when_created.rb +1 -1
- data/mod/05_standard/set/right/when_last_edited.rb +1 -1
- data/mod/05_standard/set/rstar/rules.rb +3 -3
- data/mod/05_standard/set/rstar/rules_editor.rb +39 -39
- data/mod/05_standard/set/self/account_links.rb +21 -22
- data/mod/05_standard/set/self/admin_info.rb +5 -5
- data/mod/05_standard/set/self/alerts.rb +1 -1
- data/mod/05_standard/set/self/all.rb +1 -1
- data/mod/05_standard/set/self/foot.rb +1 -1
- data/mod/05_standard/set/self/head.rb +19 -22
- data/mod/05_standard/set/self/navbox.rb +3 -7
- data/mod/05_standard/set/self/now.rb +1 -1
- data/mod/05_standard/set/self/recent.rb +19 -25
- data/mod/05_standard/set/self/search.rb +2 -4
- data/mod/05_standard/set/self/signin.rb +6 -6
- data/mod/05_standard/set/self/stats.rb +31 -38
- data/mod/05_standard/set/self/version.rb +1 -2
- data/mod/05_standard/set/type/basic.rb +15 -17
- data/mod/05_standard/set/type/cardtype.rb +3 -3
- data/mod/05_standard/set/type/date.rb +1 -2
- data/mod/05_standard/set/type/file.rb +22 -33
- data/mod/05_standard/set/type/image.rb +30 -23
- data/mod/05_standard/set/type/layout_type.rb +4 -4
- data/mod/05_standard/set/type/list.rb +32 -38
- data/mod/05_standard/set/type/listed_by.rb +11 -13
- data/mod/05_standard/set/type/number.rb +5 -6
- data/mod/05_standard/set/type/phrase.rb +1 -1
- data/mod/05_standard/set/type/search_type.rb +25 -23
- data/mod/05_standard/set/type/session.rb +2 -3
- data/mod/05_standard/set/type/set.rb +46 -51
- data/mod/05_standard/set/type/signup.rb +18 -19
- data/mod/05_standard/set/type/toggle.rb +5 -5
- data/mod/05_standard/set/type/user.rb +6 -6
- data/mod/05_standard/spec/chunk/include_spec.rb +115 -98
- data/mod/05_standard/spec/chunk/link_spec.rb +58 -31
- data/mod/05_standard/spec/chunk/query_reference_spec.rb +12 -14
- data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
- data/mod/05_standard/spec/set/all/error_spec.rb +3 -3
- data/mod/05_standard/spec/set/all/history_spec.rb +52 -38
- data/mod/05_standard/spec/set/all/links_spec.rb +2 -2
- data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +0 -1
- data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +11 -11
- data/mod/05_standard/spec/set/all/rich_html/wrapper_spec.rb +4 -4
- data/mod/05_standard/spec/set/right/email_spec.rb +1 -4
- data/mod/05_standard/spec/set/right/password_spec.rb +4 -7
- data/mod/05_standard/spec/set/right/stats_spec.rb +2 -3
- data/mod/05_standard/spec/set/right/when_created_spec.rb +1 -1
- data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +1 -1
- data/mod/05_standard/spec/set/rstar/rules_spec.rb +6 -6
- data/mod/05_standard/spec/set/self/all_spec.rb +11 -13
- data/mod/05_standard/spec/set/self/head_spec.rb +1 -3
- data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/now_spec.rb +2 -2
- data/mod/05_standard/spec/set/self/signin_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/stats_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/version_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/cardtype_spec.rb +3 -4
- data/mod/05_standard/spec/set/type/date_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/email_template_spec.rb +5 -5
- data/mod/05_standard/spec/set/type/file_spec.rb +50 -28
- data/mod/05_standard/spec/set/type/html_spec.rb +12 -7
- data/mod/05_standard/spec/set/type/image_spec.rb +55 -45
- data/mod/05_standard/spec/set/type/layout_type_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/listed_by_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/number_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/phrase_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/search_type_spec.rb +15 -16
- data/mod/05_standard/spec/set/type/set_spec.rb +16 -17
- data/mod/05_standard/spec/set/type/signup_spec.rb +7 -5
- data/mod/05_standard/spec/set/type/toggle_spec.rb +4 -4
- data/mod/05_standard/spec/set/type/uri_spec.rb +11 -11
- data/mod/05_standard/spec/set/type/user_spec.rb +0 -1
- data/mod/06_bootstrap/set/all/bootstrap/form.rb +9 -10
- data/mod/06_bootstrap/set/all/bootstrap/helper.rb +22 -27
- data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +1 -2
- data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -3
- data/mod/06_bootstrap/set/self/bootstrap_cards.rb +2 -2
- data/mod/06_bootstrap/set/self/bootstrap_js.rb +2 -2
- data/mod/06_bootstrap/set/self/bootswatch_shared.rb +19 -19
- data/mod/06_bootstrap/set/self/smartmenu_css.rb +2 -2
- data/mod/06_bootstrap/set/self/smartmenu_js.rb +3 -3
- data/mod/06_bootstrap/spec/set/all/bootstrap/form_spec.rb +5 -5
- data/spec/lib/card/action_spec.rb +4 -4
- data/spec/lib/card/cache_spec.rb +3 -5
- data/spec/lib/card/chunk_spec.rb +6 -8
- data/spec/lib/card/codename_spec.rb +4 -6
- data/spec/lib/card/content_spec.rb +12 -17
- data/spec/lib/card/diff_spec.rb +59 -61
- data/spec/lib/card/format_spec.rb +55 -34
- data/spec/lib/card/loader_spec.rb +35 -37
- data/spec/lib/card/name_spec.rb +159 -145
- data/spec/lib/card/query_spec.rb +4 -4
- data/spec/lib/card/reference_spec.rb +24 -24
- data/spec/lib/card/set_pattern_spec.rb +3 -3
- data/spec/lib/card/stage_director_spec.rb +218 -0
- data/spec/lib/card/subcards_spec.rb +12 -16
- data/spec/lib/card/success_spec.rb +16 -18
- data/spec/lib/card/view_cache_spec.rb +1 -1
- data/spec/mailers/mailer_spec.rb +3 -5
- data/spec/models/card/cardtype_spec.rb +40 -51
- data/spec/models/card/create_spec.rb +58 -39
- data/spec/models/card/trash_spec.rb +23 -32
- data/spec/models/card/type_transition_spec.rb +41 -32
- data/spec/models/card/validation_spec.rb +13 -15
- data/spec/models/card_spec.rb +48 -59
- data/spec/spec_helper.rb +26 -31
- metadata +16 -2
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
module ClassMethods
|
3
2
|
def empty_trash
|
4
3
|
Card.delete_trashed_files
|
@@ -17,7 +16,7 @@ module ClassMethods
|
|
17
16
|
file_ids.each do |file_id|
|
18
17
|
next unless trashed_card_ids.member?(file_id)
|
19
18
|
if Card.exists?(file_id) # double check!
|
20
|
-
|
19
|
+
raise Card::Error, 'Narrowly averted deleting current file'
|
21
20
|
end
|
22
21
|
FileUtils.rm_rf "#{dir}/#{file_id}", secure: true
|
23
22
|
end
|
@@ -29,7 +28,7 @@ module ClassMethods
|
|
29
28
|
end
|
30
29
|
|
31
30
|
def all_trashed_card_ids
|
32
|
-
trashed_card_sql = %
|
31
|
+
trashed_card_sql = %( select id from cards where trash is true )
|
33
32
|
sql_results = Card.connection.select_all(trashed_card_sql)
|
34
33
|
sql_results.map(&:values).flatten.map(&:to_i)
|
35
34
|
end
|
@@ -40,6 +39,7 @@ module ClassMethods
|
|
40
39
|
WHERE cards.type_id IN (#{Card::FileID}, #{Card::ImageID})
|
41
40
|
AND card_actions.draft = true"
|
42
41
|
actions.each do |action|
|
42
|
+
# we don't want to delete uploads in progress
|
43
43
|
if older_than_five_days?(action.created_at) && (card = action.card)
|
44
44
|
# we don't want to delete uploads in progress
|
45
45
|
card.delete_files_for_action action
|
@@ -88,7 +88,7 @@ module ClassMethods
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def older_than_five_days? time
|
91
|
-
Time.now - time >
|
91
|
+
Time.now - time > 432_000
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
@@ -120,13 +120,11 @@ format :html do
|
|
120
120
|
self.class.ancestors.each_with_object({}) do |format_class, hash|
|
121
121
|
views =
|
122
122
|
format_class.instance_methods.map do |method|
|
123
|
-
if method.to_s
|
124
|
-
"<li>#{$1}</li>"
|
125
|
-
end
|
123
|
+
"<li>#{Regexp.last_match(1)}</li>" if method.to_s =~ /^_view_(.+)$/
|
126
124
|
end.compact.join "\n"
|
127
125
|
if views.present?
|
128
|
-
format_class.name
|
129
|
-
hash[
|
126
|
+
format_class.name =~ /^Card(::Set)?::(.+?)$/ #::(\w+Format)
|
127
|
+
hash[Regexp.last_match(2)] = views
|
130
128
|
end
|
131
129
|
end
|
132
130
|
accordion_group format_views
|
@@ -134,9 +132,7 @@ format :html do
|
|
134
132
|
|
135
133
|
view :views_by_name do
|
136
134
|
views = methods.map do |method|
|
137
|
-
if method.to_s
|
138
|
-
$1
|
139
|
-
end
|
135
|
+
Regexp.last_match(1) if method.to_s =~ /^_view_(.+)$/
|
140
136
|
end.compact.sort
|
141
137
|
"<ul>#{wrap_each_with :li, views}</ul>"
|
142
138
|
end
|
@@ -161,7 +157,7 @@ format :html do
|
|
161
157
|
when Array then content.join "\n"
|
162
158
|
else content
|
163
159
|
end
|
164
|
-
%
|
160
|
+
%(
|
165
161
|
<div class="panel panel-default">
|
166
162
|
<div class="panel-heading" role="tab" id="heading-#{collapse_id}">
|
167
163
|
<h4 class="panel-title">
|
@@ -179,6 +175,6 @@ format :html do
|
|
179
175
|
</div>
|
180
176
|
</div>
|
181
177
|
</div>
|
182
|
-
|
178
|
+
).html_safe
|
183
179
|
end
|
184
180
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
@@options = { junction_only: true }
|
2
2
|
|
3
|
-
def label
|
3
|
+
def label _name
|
4
4
|
'All "+" cards'
|
5
5
|
end
|
6
6
|
|
7
|
-
def prototype_args
|
7
|
+
def prototype_args _anchor
|
8
8
|
{ name: '+' }
|
9
9
|
end
|
10
10
|
|
11
|
-
def follow_label
|
11
|
+
def follow_label _name
|
12
12
|
'all "+" cards'
|
13
13
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
def label
|
1
|
+
def label _name
|
2
2
|
'All "*" cards'
|
3
3
|
end
|
4
4
|
|
5
|
-
def prototype_args
|
5
|
+
def prototype_args _anchor
|
6
6
|
{ name: '*dummy' }
|
7
7
|
end
|
8
8
|
|
@@ -10,6 +10,6 @@ def pattern_applies? card
|
|
10
10
|
card.cardname.star?
|
11
11
|
end
|
12
12
|
|
13
|
-
def follow_label
|
13
|
+
def follow_label _name
|
14
14
|
'all "*" cards'
|
15
15
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
@@options = { junction_only: true }
|
2
2
|
|
3
|
-
def label
|
3
|
+
def label _name
|
4
4
|
'All "+*" cards'
|
5
5
|
end
|
6
6
|
|
7
|
-
def prototype_args
|
7
|
+
def prototype_args _anchor
|
8
8
|
{ name: '*dummy+*dummy' }
|
9
9
|
end
|
10
10
|
|
@@ -12,6 +12,6 @@ def pattern_applies? card
|
|
12
12
|
card.cardname.rstar?
|
13
13
|
end
|
14
14
|
|
15
|
-
def follow_label
|
15
|
+
def follow_label _name
|
16
16
|
'all "+*" cards'
|
17
17
|
end
|
@@ -5,7 +5,7 @@
|
|
5
5
|
}
|
6
6
|
|
7
7
|
def label name
|
8
|
-
%
|
8
|
+
%(All "+#{name.to_name.tag}" cards on "#{name.to_name.left_name}" cards)
|
9
9
|
end
|
10
10
|
|
11
11
|
def prototype_args anchor
|
@@ -22,5 +22,5 @@ def anchor_name card
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def follow_label name
|
25
|
-
%
|
25
|
+
%(all "+#{name.to_name.tag}" on "#{name.to_name.left_name}s")
|
26
26
|
end
|
@@ -1,14 +1,13 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
|
-
describe Card::Chunk::EscapedLiteral,
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
describe Card::Chunk::EscapedLiteral, 'literal chunk tests' do
|
4
|
+
it 'should handle escaped link' do
|
5
|
+
expect(render_content('write this: \[[text]]'))
|
6
|
+
.to eq('write this: <span>[</span>[text]]')
|
7
7
|
end
|
8
8
|
|
9
|
-
it
|
10
|
-
expect(render_content('write this: \{{cardname}}'))
|
9
|
+
it 'should handle escaped nest' do
|
10
|
+
expect(render_content('write this: \{{cardname}}'))
|
11
|
+
.to eq('write this: <span>{</span>{cardname}}')
|
11
12
|
end
|
12
|
-
|
13
13
|
end
|
14
|
-
|
@@ -1,197 +1,195 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
|
-
describe Card::Chunk::URI,
|
4
|
-
it
|
3
|
+
describe Card::Chunk::URI, 'URI chunk tests' do
|
4
|
+
it 'should test_non_matches' do
|
5
5
|
no_match(Card::Chunk::URI, 'There is no URI here')
|
6
6
|
no_match(Card::Chunk::URI,
|
7
|
-
|
7
|
+
'One gemstone is the garnet:reddish in colour, like ruby')
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'should test_simple_uri' do
|
11
11
|
# Simplest case
|
12
12
|
match_chunk(Card::Chunk::URI, 'http://www.example.com',
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
scheme: 'http', host: 'www.example.com', path: '',
|
14
|
+
link_text: 'http://www.example.com'
|
15
|
+
)
|
16
16
|
end
|
17
|
-
it
|
17
|
+
it 'should work with trailing slash' do
|
18
18
|
match_chunk(Card::Chunk::URI, 'http://www.example.com/',
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
scheme: 'http', host: 'www.example.com', path: '/',
|
20
|
+
link_text: 'http://www.example.com/'
|
21
|
+
)
|
22
22
|
end
|
23
|
-
it
|
23
|
+
it 'should work with trailing slash inside html tags' do
|
24
24
|
match_chunk(Card::Chunk::URI, '<p>http://www.example.com/</p>',
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
scheme: 'http', host: 'www.example.com', path: '/',
|
26
|
+
link_text: 'http://www.example.com/'
|
27
|
+
)
|
28
28
|
end
|
29
|
-
it
|
29
|
+
it 'should work with trailing period (no longer suppressed .. spec?)' do
|
30
30
|
match_chunk(Card::Chunk::URI, 'http://www.example.com/. ',
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
scheme: 'http', host: 'www.example.com', path: '/',
|
32
|
+
link_text: 'http://www.example.com/'
|
33
|
+
)
|
34
34
|
end
|
35
|
-
it
|
35
|
+
it 'should work with trailing period inside html tags (dot change?)' do
|
36
36
|
match_chunk(Card::Chunk::URI, '<p>http://www.example.com/.</p>',
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
scheme: 'http', host: 'www.example.com', path: '/',
|
38
|
+
link_text: 'http://www.example.com/'
|
39
|
+
)
|
40
40
|
end
|
41
|
-
it
|
41
|
+
it 'should work with trailing ' do
|
42
42
|
match_chunk(Card::Chunk::URI, 'http://www.example.com/ ',
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
scheme: 'http', host: 'www.example.com', path: '/',
|
44
|
+
link_text: 'http://www.example.com/'
|
45
|
+
)
|
46
46
|
end
|
47
|
-
it
|
47
|
+
it 'should work without http://' do
|
48
48
|
match_chunk(Card::Chunk::URI, 'www.example.com',
|
49
|
-
|
50
|
-
|
49
|
+
scheme: 'http', host: 'www.example.com', text: 'www.example.com', link_text: 'http://www.example.com'
|
50
|
+
)
|
51
51
|
match_chunk(Card::Chunk::URI, 'example.com',
|
52
|
-
|
53
|
-
|
52
|
+
scheme: 'http', host: 'example.com', text: 'example.com', link_text: 'http://example.com'
|
53
|
+
)
|
54
54
|
end
|
55
|
-
it
|
55
|
+
it 'should match "unusual" base domain (was a bug in an early version)' do
|
56
56
|
match_chunk(Card::Chunk::URI, 'http://example.com.au/',
|
57
|
-
|
58
|
-
|
57
|
+
scheme: 'http', host: 'example.com.au', link_text: 'http://example.com.au/'
|
58
|
+
)
|
59
59
|
end
|
60
60
|
it 'should work with "unusual" base domain without http://' do
|
61
61
|
match_chunk(Card::Chunk::URI, 'example.com.au',
|
62
|
-
|
63
|
-
|
62
|
+
scheme: 'http', host: 'example.com.au', text: 'example.com.au', link_text: 'http://example.com.au'
|
63
|
+
)
|
64
64
|
end
|
65
65
|
it 'should work with another "unusual" base domain' do
|
66
66
|
match_chunk(Card::Chunk::URI, 'http://www.example.co.uk/',
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
scheme: 'http', host: 'www.example.co.uk',
|
68
|
+
link_text: 'http://www.example.co.uk/'
|
69
|
+
)
|
70
70
|
match_chunk(Card::Chunk::URI, 'example.co.uk',
|
71
|
-
|
72
|
-
|
71
|
+
scheme: 'http', host: 'example.co.uk', link_text: 'http://example.co.uk', text: 'example.co.uk'
|
72
|
+
)
|
73
73
|
end
|
74
|
-
it
|
74
|
+
it 'should work with some path at the end' do
|
75
75
|
match_chunk(Card::Chunk::URI, 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation',
|
76
|
-
|
77
|
-
|
78
|
-
|
76
|
+
scheme: 'http', host: 'moinmoin.wikiwikiweb.de', path: '/HelpOnNavigation',
|
77
|
+
link_text: 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation'
|
78
|
+
)
|
79
79
|
end
|
80
|
-
it
|
80
|
+
it 'should work with some path at the end, and withot http:// prefix (@link_text has prefix added)' do
|
81
81
|
match_chunk(Card::Chunk::URI, 'moinmoin.wikiwikiweb.de/HelpOnNavigation',
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
82
|
+
scheme: 'http', host: 'moinmoin.wikiwikiweb.de', path: '/HelpOnNavigation',
|
83
|
+
text: 'moinmoin.wikiwikiweb.de/HelpOnNavigation',
|
84
|
+
link_text: 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation'
|
85
|
+
)
|
86
86
|
end
|
87
|
-
it
|
87
|
+
it 'should work with a port number' do
|
88
88
|
match_chunk(Card::Chunk::URI, 'http://www.example.com:80',
|
89
|
-
|
90
|
-
|
89
|
+
scheme: 'http', host: 'www.example.com', port: 80, path: '',
|
90
|
+
link_text: 'http://www.example.com:80')
|
91
91
|
end
|
92
|
-
it
|
92
|
+
it 'should work with a port number and a path' do
|
93
93
|
match_chunk(Card::Chunk::URI, 'http://www.example.com.tw:80/HelpOnNavigation',
|
94
|
-
|
95
|
-
|
94
|
+
scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
|
95
|
+
link_text: 'http://www.example.com.tw:80/HelpOnNavigation')
|
96
96
|
end
|
97
|
-
it
|
97
|
+
it 'should work with a query' do
|
98
98
|
match_chunk(Card::Chunk::URI, 'http://www.example.com.tw:80/HelpOnNavigation?arg=val',
|
99
|
-
|
100
|
-
|
101
|
-
|
99
|
+
scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
|
100
|
+
query: 'arg=val',
|
101
|
+
link_text: 'http://www.example.com.tw:80/HelpOnNavigation?arg=val')
|
102
102
|
end
|
103
|
-
it
|
103
|
+
it 'should work on Query with two arguments' do
|
104
104
|
match_chunk(Card::Chunk::URI, 'http://www.example.com.tw:80/HelpOnNavigation?arg=val&arg2=val2',
|
105
|
-
|
106
|
-
|
107
|
-
|
105
|
+
scheme: 'http', host: 'www.example.com.tw', port: 80, path: '/HelpOnNavigation',
|
106
|
+
query: 'arg=val&arg2=val2',
|
107
|
+
link_text: 'http://www.example.com.tw:80/HelpOnNavigation?arg=val&arg2=val2')
|
108
108
|
end
|
109
|
-
it
|
109
|
+
it 'should work with IRC' do
|
110
110
|
match_chunk(Card::Chunk::URI, 'irc://irc.freenode.net#recentchangescamp',
|
111
|
-
|
112
|
-
|
113
|
-
|
111
|
+
scheme: 'irc', host: 'irc.freenode.net',
|
112
|
+
fragment: 'recentchangescamp',
|
113
|
+
link_text: 'irc://irc.freenode.net#recentchangescamp')
|
114
114
|
end
|
115
115
|
|
116
|
-
it
|
116
|
+
it 'should see HTTPS' do
|
117
117
|
match_chunk(Card::Chunk::URI, 'https://www.example.com',
|
118
|
-
|
119
|
-
|
118
|
+
scheme: 'https', host: 'www.example.com', port: 443, path: '', query: nil,
|
119
|
+
link_text: 'https://www.example.com')
|
120
120
|
end
|
121
|
-
it
|
121
|
+
it 'should see FTP' do
|
122
122
|
match_chunk(Card::Chunk::URI, 'ftp://www.example.com',
|
123
|
-
|
124
|
-
|
123
|
+
scheme: 'ftp', host: 'www.example.com', port: 21, path: '', query: nil,
|
124
|
+
link_text: 'ftp://www.example.com')
|
125
125
|
end
|
126
|
-
it
|
126
|
+
it 'should handle mailto:' do
|
127
127
|
match_chunk(Card::Chunk::URI, 'mailto:jdoe123@example.com',
|
128
|
-
|
129
|
-
|
128
|
+
scheme: 'mailto', host: nil, port: nil, path: nil, query: nil,
|
129
|
+
to: 'jdoe123@example.com', link_text: 'mailto:jdoe123@example.com')
|
130
130
|
end
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
it "should run more basic cases" do
|
131
|
+
# something nonexistant (pending spec? this is no longer recognized, the sheme has to be listed)
|
132
|
+
# match_chunk(Card::Chunk::URI, 'foobar://www.example.com',
|
133
|
+
# scheme: 'foobar', host: 'www.example.com', port: '', path: '', query: nil,
|
134
|
+
# link_text: 'foobar://www.example.com')
|
137
135
|
|
136
|
+
it 'should run more basic cases' do
|
138
137
|
# from *css (with () around the URI)
|
139
138
|
# so, now this doesn't even match because I fixed the suspiciou* stuff
|
140
139
|
no_match(Card::Chunk::URI, "background: url('http://dl.dropbox.com/u/4657397/wikirate/wikirate_files/wr-bg-menu-line.gif') repeat-x;")
|
141
140
|
|
142
141
|
# Soap opera (the most complex case imaginable... well, not really, there should be more evil)
|
143
142
|
match_chunk(Card::Chunk::URI, 'http://www.example.com.tw:80/~jdoe123/Help%20Me%20?arg=val&arg2=val2',
|
144
|
-
|
145
|
-
|
146
|
-
|
143
|
+
scheme: 'http', host: 'www.example.com.tw', port: 80,
|
144
|
+
path: '/~jdoe123/Help%20Me%20', query: 'arg=val&arg2=val2',
|
145
|
+
link_text: 'http://www.example.com.tw:80/~jdoe123/Help%20Me%20?arg=val&arg2=val2')
|
147
146
|
|
148
147
|
# from 0.9 bug reports
|
149
148
|
match_chunk(Card::Chunk::URI, 'http://www2.pos.to/~tosh/ruby/rdtool/en/doc/rd-draft.html',
|
150
|
-
|
151
|
-
|
149
|
+
scheme: 'http', host: 'www2.pos.to',
|
150
|
+
path: '/~tosh/ruby/rdtool/en/doc/rd-draft.html')
|
152
151
|
|
153
152
|
match_chunk(Card::Chunk::URI, 'http://support.microsoft.com/default.aspx?scid=kb;en-us;234562',
|
154
|
-
|
155
|
-
|
156
|
-
|
153
|
+
scheme: 'http', host: 'support.microsoft.com', path: '/default.aspx',
|
154
|
+
query: 'scid=kb;en-us;234562')
|
157
155
|
end
|
158
156
|
|
159
|
-
it
|
157
|
+
it 'should test_email_uri' do
|
160
158
|
match_chunk(Card::Chunk::URI, 'mail@example.com',
|
161
|
-
|
162
|
-
|
159
|
+
to: 'mail@example.com', host: nil, text: 'mail@example.com', link_text: 'mailto:mail@example.com'
|
160
|
+
)
|
163
161
|
end
|
164
162
|
|
165
|
-
it
|
163
|
+
it 'should test_non_email' do
|
166
164
|
# The @ is part of the normal text, but 'example.com' is marked up.
|
167
|
-
|
165
|
+
match_chunk(Card::Chunk::URI, 'Not an email: @example.com', uri: 'http://example.com')
|
168
166
|
end
|
169
167
|
|
170
|
-
it
|
168
|
+
it 'should test_textile_image' do
|
171
169
|
no_match(Card::Chunk::URI,
|
172
170
|
'This !http://hobix.com/sample.jpg! is a Textile image link.')
|
173
171
|
end
|
174
172
|
|
175
|
-
it
|
173
|
+
it 'should test_textile_link' do
|
176
174
|
no_match(Card::Chunk::URI,
|
177
175
|
'This "hobix (hobix)":http://hobix.com/sample.jpg is a Textile link.')
|
178
176
|
# just to be sure ...
|
179
177
|
match_chunk(Card::Chunk::URI, 'This http://hobix.com/sample.jpg should match',
|
180
|
-
|
178
|
+
link_text: 'http://hobix.com/sample.jpg')
|
181
179
|
end
|
182
180
|
|
183
|
-
it
|
181
|
+
it 'should test_inline_html' do
|
184
182
|
no_match(Card::Chunk::URI, "<img src='http://hobix.com/sample.jpg'/>")
|
185
183
|
no_match(Card::Chunk::URI, '<IMG SRC="http://hobix.com/sample.jpg">')
|
186
184
|
end
|
187
185
|
|
188
|
-
it
|
186
|
+
it 'should test_non_uri' do
|
189
187
|
# "so" is a valid country code; "libproxy.so" is a valid url
|
190
188
|
match_chunk(Card::Chunk::URI, 'libproxy.so', host: 'libproxy.so', text: 'libproxy.so', link_text: 'http://libproxy.so')
|
191
189
|
|
192
190
|
no_match Card::Chunk::URI, 'httpd.conf'
|
193
191
|
# THIS ONE'S BUSTED.. Ethan fix??
|
194
|
-
#no_match Card::Chunk::URI, 'ld.so.conf'
|
192
|
+
# no_match Card::Chunk::URI, 'ld.so.conf'
|
195
193
|
no_match Card::Chunk::URI, 'index.jpeg'
|
196
194
|
no_match Card::Chunk::URI, 'index.jpg'
|
197
195
|
no_match Card::Chunk::URI, 'file.txt'
|
@@ -201,28 +199,28 @@ describe Card::Chunk::URI, "URI chunk tests" do
|
|
201
199
|
no_match Card::Chunk::URI, 'file.ps'
|
202
200
|
end
|
203
201
|
|
204
|
-
it
|
202
|
+
it 'should test_uri_in_text' do
|
205
203
|
match_chunk(Card::Chunk::URI, 'Go to: http://www.example.com/', host: 'www.example.com', path: '/')
|
206
204
|
match_chunk(Card::Chunk::URI, 'http://www.example.com/ is a link.', host: 'www.example.com')
|
207
205
|
match_chunk(Card::Chunk::URI,
|
208
|
-
|
209
|
-
|
206
|
+
'Email david@loudthinking.com',
|
207
|
+
scheme: 'mailto', to: 'david@loudthinking.com', host: nil)
|
210
208
|
# check that trailing punctuation is not included in the hostname
|
211
209
|
match_chunk(Card::Chunk::URI, 'Hey dude, http://fake.link.com.', scheme: 'http', host: 'fake.link.com')
|
212
210
|
# this is a textile link, no match please.
|
213
211
|
no_match(Card::Chunk::URI, '"link":http://fake.link.com.')
|
214
|
-
|
212
|
+
end
|
215
213
|
|
216
|
-
it
|
214
|
+
it 'should test_uri_in_parentheses' do
|
217
215
|
match_chunk(Card::Chunk::URI, 'URI (http://brackets.com.de) in brackets', host: 'brackets.com.de')
|
218
216
|
match_chunk(Card::Chunk::URI, 'because (as shown at research.net) the results', host: 'research.net')
|
219
217
|
match_chunk(Card::Chunk::URI,
|
220
|
-
|
221
|
-
|
222
|
-
|
218
|
+
'A wiki (http://wiki.org/wiki.cgi?WhatIsWiki) card',
|
219
|
+
scheme: 'http', host: 'wiki.org', path: '/wiki.cgi', query: 'WhatIsWiki'
|
220
|
+
)
|
223
221
|
end
|
224
222
|
|
225
|
-
it
|
223
|
+
it 'should test_uri_list_item' do
|
226
224
|
match_chunk(
|
227
225
|
Card::Chunk::URI,
|
228
226
|
'* http://www.btinternet.com/~mail2minh/SonyEricssonP80xPlatform.sis',
|
@@ -230,63 +228,63 @@ describe Card::Chunk::URI, "URI chunk tests" do
|
|
230
228
|
)
|
231
229
|
end
|
232
230
|
|
233
|
-
it
|
231
|
+
it 'should test_interesting_uri_with__comma' do
|
234
232
|
# Counter-intuitively, this URL matches, but the query part includes the trailing comma.
|
235
233
|
# It has no way to know that the query does not include the comma.
|
236
234
|
# The trailing , addition breaks this test, but is this test actually valid?
|
237
235
|
# It seems better to exclude the comma from the uri, YMMV
|
238
236
|
match_chunk(
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
237
|
+
Card::Chunk::URI,
|
238
|
+
"This text contains a URL http://someplace.org:8080/~person/stuff.cgi?arg=val, doesn't it?",
|
239
|
+
scheme: 'http', host: 'someplace.org', port: 8080, path: '/~person/stuff.cgi',
|
240
|
+
query: 'arg=val')
|
243
241
|
end
|
244
242
|
|
245
|
-
describe Card::Chunk::URI,
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
243
|
+
describe Card::Chunk::URI, 'URI chunk tests' do
|
244
|
+
it 'should test_local_urls' do
|
245
|
+
# normal
|
246
|
+
match_chunk(Card::Chunk::URI, 'http://perforce:8001/toto.html',
|
247
|
+
scheme: 'http', host: 'perforce',
|
248
|
+
port: 8001, link_text: 'http://perforce:8001/toto.html')
|
251
249
|
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
250
|
+
# in parentheses
|
251
|
+
match_chunk(Card::Chunk::URI, 'URI (http://localhost:2500) in brackets',
|
252
|
+
host: 'localhost', port: 2500)
|
253
|
+
match_chunk(Card::Chunk::URI, 'because (as shown at http://perforce:8001) the results',
|
254
|
+
host: 'perforce', port: 8001)
|
255
|
+
match_chunk(Card::Chunk::URI,
|
256
|
+
'A wiki (http://localhost:2500/wiki.cgi?WhatIsWiki) card',
|
257
|
+
scheme: 'http', host: 'localhost', path: '/wiki.cgi',
|
258
|
+
port: 2500, query: 'WhatIsWiki')
|
259
|
+
end
|
262
260
|
end
|
263
261
|
|
264
262
|
private
|
263
|
+
|
265
264
|
DUMMY_CARD = Card.new(name: 'dummy')
|
266
265
|
|
267
266
|
# Asserts a number of tests for the given type and text.
|
268
|
-
def no_match
|
267
|
+
def no_match type, test_text
|
269
268
|
test_cont = Card::Content.new(test_text, DUMMY_CARD)
|
270
|
-
expect(
|
269
|
+
expect(((test_cont.respond_to? :each) ? test_cont : [test_cont]).find { |ck| type === ck }).to be_nil
|
271
270
|
end
|
272
271
|
|
273
|
-
def aa_match
|
272
|
+
def aa_match type, test_text
|
274
273
|
test_cont = Card::Content.new(test_text, DUMMY_CARD)
|
275
|
-
expect(
|
274
|
+
expect(((test_cont.respond_to? :each) ? test_cont : [test_cont]).find { |ck| type === ck }).not_to be_nil
|
276
275
|
end
|
277
276
|
|
278
|
-
def match_chunk
|
277
|
+
def match_chunk type, test_text, expected
|
279
278
|
test_cont = Card::Content.new(test_text, DUMMY_CARD)
|
280
|
-
chunk = ((test_cont.respond_to? :each) ? test_cont : [test_cont]).find{ |ck| type===ck }
|
281
|
-
#warn "chunk? #{chunk.inspect}"
|
279
|
+
chunk = ((test_cont.respond_to? :each) ? test_cont : [test_cont]).find { |ck| type === ck }
|
280
|
+
# warn "chunk? #{chunk.inspect}"
|
282
281
|
expect(chunk).not_to be_nil
|
283
282
|
|
284
283
|
expected.each_pair do |method_sym, value|
|
285
|
-
#assert_respond_to(chunk, method_sym)
|
284
|
+
# assert_respond_to(chunk, method_sym)
|
286
285
|
cvalue = chunk.method(method_sym).call
|
287
286
|
cvalue = cvalue.to_s if method_sym == :uri
|
288
287
|
assert_equal(value, cvalue, "Checking value of '#{method_sym}'")
|
289
288
|
end
|
290
289
|
end
|
291
|
-
|
292
290
|
end
|