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
@@ -13,52 +13,53 @@ class Card
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.included host_class
|
16
|
-
host_class.extend(
|
16
|
+
host_class.extend(ClassMethods)
|
17
17
|
host_class.machines_wql = {}
|
18
18
|
host_class.machine_input do
|
19
19
|
format._render_raw
|
20
20
|
end
|
21
|
+
event_suffix = host_class.name.tr ':', '_'
|
22
|
+
define_update_event event_suffix, host_class
|
23
|
+
define_delete_events event_suffix, host_class
|
24
|
+
end
|
21
25
|
|
22
|
-
|
23
|
-
|
24
|
-
host_class.event
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
{ link_to: name}
|
32
|
-
]}.merge(host_class.machines_wql)
|
33
|
-
machines = Card.search(wql_statement)
|
34
|
-
machines.each do |item|
|
35
|
-
item.reset_machine_output! if item.kind_of? Machine
|
36
|
-
end
|
26
|
+
def self.define_delete_events event_suffix, host_class
|
27
|
+
event_name = "before_machine_input_deleted_#{event_suffix}".to_sym
|
28
|
+
host_class.event event_name, :store, on: :delete do
|
29
|
+
# exclude self because it's on the way to the trash
|
30
|
+
# otherwise it will be created again with the reset_machine_output
|
31
|
+
# call in the event below
|
32
|
+
@involved_machines =
|
33
|
+
Card::MachineInput.search_involved_machines(name, host_class)
|
34
|
+
.reject { |card| card == self }
|
37
35
|
end
|
38
|
-
|
39
|
-
host_class.event
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
@involved_machines = Card.search(
|
45
|
-
{right_plus: [
|
46
|
-
{codename: "machine_input"},
|
47
|
-
{link_to: name}
|
48
|
-
]}.merge(host_class.machines_wql)
|
49
|
-
)
|
36
|
+
event_name = "after_machine_input_deleted_#{event_suffix}".to_sym
|
37
|
+
host_class.event event_name, :finalize, on: :delete do
|
38
|
+
@involved_machines.each do |item|
|
39
|
+
item.reset_machine_output! if item.is_a? Machine
|
40
|
+
end
|
50
41
|
end
|
42
|
+
end
|
51
43
|
|
44
|
+
def self.define_update_event event_suffix, host_class
|
52
45
|
host_class.event(
|
53
|
-
|
54
|
-
|
46
|
+
"after_machine_input_updated_#{event_suffix}".to_sym, :integrate,
|
47
|
+
on: :save
|
55
48
|
) do
|
56
|
-
|
57
|
-
|
58
|
-
item.reset_machine_output! if item.
|
49
|
+
Card::MachineInput.search_involved_machines(name, host_class)
|
50
|
+
.each do |item|
|
51
|
+
item.reset_machine_output! if item.is_a? Machine
|
59
52
|
end
|
60
53
|
end
|
61
54
|
end
|
55
|
+
|
56
|
+
def self.search_involved_machines name, host_class
|
57
|
+
wql_statement =
|
58
|
+
{ right_plus: [
|
59
|
+
{ codename: 'machine_input' },
|
60
|
+
{ link_to: name }
|
61
|
+
] }.merge(host_class.machines_wql)
|
62
|
+
Card.search(wql_statement)
|
63
|
+
end
|
62
64
|
end
|
63
65
|
end
|
64
|
-
|
@@ -1,12 +1,11 @@
|
|
1
1
|
|
2
|
-
view :raw do |
|
3
|
-
|
2
|
+
view :raw do |_args|
|
4
3
|
Rails.logger.info "reading file: #{Cardio.gem_root}/mod/03_machines/lib/javascript/#{card.codename}.js"
|
5
4
|
File.read "#{Cardio.gem_root}/mod/03_machines/lib/javascript/#{card.codename}.js"
|
6
5
|
end
|
7
6
|
|
8
7
|
format :html do
|
9
|
-
view :editor do |
|
8
|
+
view :editor do |_args|
|
10
9
|
"Content is stored in file and can't be edited."
|
11
10
|
end
|
12
11
|
end
|
@@ -1,11 +1,10 @@
|
|
1
|
-
view :raw do |
|
2
|
-
|
1
|
+
view :raw do |_args|
|
3
2
|
Rails.logger.info "reading file: #{Cardio.gem_root}/mod/03_machines/lib/javascript/#{card.codename}.js.coffee"
|
4
3
|
File.read "#{Cardio.gem_root}/mod/03_machines/lib/javascript/#{card.codename}.js.coffee"
|
5
4
|
end
|
6
5
|
|
7
6
|
format :html do
|
8
|
-
view :editor do |
|
7
|
+
view :editor do |_args|
|
9
8
|
"Content is stored in file and can't be edited."
|
10
9
|
end
|
11
10
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
|
-
view :raw do |
|
2
|
+
view :raw do |_args|
|
3
3
|
# jquery.ui.all must be after jquery.mobile to override dialog weirdness *
|
4
|
-
# jquery.ui.autocomplete must be after jquery.ui stuff
|
4
|
+
# jquery.ui.autocomplete must be after jquery.ui stuff
|
5
5
|
# FIXME removed jquerymobile.js. Doesn't work with the new jquery version
|
6
6
|
js_files = %w( jquery-ui.js jquery.ui.autocomplete.html.js jquery.autosize.js jquery.fileupload.js jquery.iframe-transport.js jquery_ujs.js )
|
7
7
|
js_files.map do |filename|
|
@@ -10,12 +10,12 @@ include MachineInput
|
|
10
10
|
|
11
11
|
def compile_coffee script
|
12
12
|
::CoffeeScript.compile script
|
13
|
-
rescue =>e
|
13
|
+
rescue => e
|
14
14
|
e
|
15
15
|
end
|
16
16
|
|
17
17
|
machine_input do
|
18
|
-
Uglifier.compile(
|
18
|
+
Uglifier.compile(compile_coffee format(:js)._render_raw)
|
19
19
|
end
|
20
20
|
|
21
21
|
store_machine_output filetype: 'js'
|
@@ -24,34 +24,30 @@ def clean_html?
|
|
24
24
|
false
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
27
|
format do
|
29
|
-
def chunk_list #turn off autodetection of uri's
|
30
|
-
:
|
28
|
+
def chunk_list # turn off autodetection of uri's
|
29
|
+
:nest_only
|
31
30
|
end
|
32
31
|
end
|
33
32
|
|
34
|
-
|
35
33
|
format :html do
|
36
34
|
view :editor, mod: Html::HtmlFormat
|
37
35
|
|
38
36
|
view :content_changes do |args|
|
39
|
-
%
|
37
|
+
%(
|
40
38
|
<pre>#{super(args)}</pre>
|
41
|
-
|
39
|
+
)
|
42
40
|
end
|
43
41
|
|
44
|
-
view :core do |
|
42
|
+
view :core do |_args|
|
45
43
|
js = card.compile_coffee _render_raw
|
46
|
-
highlighted_js = ::CodeRay.scan(
|
44
|
+
highlighted_js = ::CodeRay.scan(js, :js).div
|
47
45
|
process_content highlighted_js
|
48
46
|
end
|
49
|
-
|
50
47
|
end
|
51
48
|
|
52
|
-
|
53
49
|
format do
|
54
|
-
view :core do |
|
50
|
+
view :core do |_args|
|
55
51
|
process_content card.compile_coffee(_render_raw)
|
56
52
|
end
|
57
53
|
end
|
@@ -3,18 +3,16 @@ require 'sass'
|
|
3
3
|
include Machine
|
4
4
|
include MachineInput
|
5
5
|
|
6
|
-
store_machine_output filetype:
|
6
|
+
store_machine_output filetype: 'css'
|
7
7
|
|
8
8
|
machine_input do
|
9
9
|
compress_css format(format: :css)._render_core
|
10
10
|
end
|
11
11
|
|
12
12
|
def compress_css input
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
raise Card::Oops, "Stylesheet Error:\n#{ e.message }"
|
17
|
-
end
|
13
|
+
Sass.compile input, style: :compressed
|
14
|
+
rescue => e
|
15
|
+
raise Card::Oops, "Stylesheet Error:\n#{e.message}"
|
18
16
|
end
|
19
17
|
|
20
18
|
def clean_html?
|
@@ -22,28 +20,29 @@ def clean_html?
|
|
22
20
|
end
|
23
21
|
|
24
22
|
format do
|
25
|
-
def chunk_list
|
23
|
+
def chunk_list # turn off autodetection of uri's
|
26
24
|
:references
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
30
|
-
|
31
28
|
format :html do
|
32
|
-
def
|
29
|
+
def get_nest_defaults _nested_card
|
33
30
|
{ view: :closed }
|
34
31
|
end
|
35
32
|
|
36
33
|
view :editor, mod: Html::HtmlFormat
|
37
34
|
|
38
|
-
view :core do |
|
39
|
-
# FIXME: scan must happen before process for inclusion interactions to
|
35
|
+
view :core do |_args|
|
36
|
+
# FIXME: scan must happen before process for inclusion interactions to
|
37
|
+
# work, but this will likely cause
|
40
38
|
# problems with including other css?
|
41
|
-
process_content ::CodeRay.scan(
|
39
|
+
process_content ::CodeRay.scan(_render_raw, :css).div,
|
40
|
+
content_opts: { size: :icon }
|
42
41
|
end
|
43
42
|
|
44
43
|
view :content_changes, mod: CoffeeScript::HtmlFormat
|
45
44
|
end
|
46
45
|
|
47
46
|
def diff_args
|
48
|
-
|
47
|
+
{ format: :text }
|
49
48
|
end
|
@@ -4,7 +4,7 @@ require 'uglifier'
|
|
4
4
|
include Machine
|
5
5
|
include MachineInput
|
6
6
|
|
7
|
-
store_machine_output filetype:
|
7
|
+
store_machine_output filetype: 'js'
|
8
8
|
|
9
9
|
machine_input do
|
10
10
|
Uglifier.compile(format(:js)._render_core)
|
@@ -14,10 +14,9 @@ def clean_html?
|
|
14
14
|
false
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
17
|
format do
|
19
|
-
def chunk_list #turn off autodetection of uri's
|
20
|
-
:
|
18
|
+
def chunk_list # turn off autodetection of uri's
|
19
|
+
:nest_only
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
@@ -25,13 +24,12 @@ format :html do
|
|
25
24
|
view :editor, mod: Html::HtmlFormat
|
26
25
|
view :content_changes, mod: CoffeeScript::HtmlFormat
|
27
26
|
|
28
|
-
view :core do |
|
29
|
-
highlighted_js = ::CodeRay.scan(
|
27
|
+
view :core do |_args|
|
28
|
+
highlighted_js = ::CodeRay.scan(_render_raw, :js).div
|
30
29
|
process_content highlighted_js
|
31
30
|
end
|
32
|
-
|
33
31
|
end
|
34
32
|
|
35
33
|
def diff_args
|
36
|
-
|
34
|
+
{ format: :text }
|
37
35
|
end
|
@@ -1,22 +1,21 @@
|
|
1
1
|
include Type::Css
|
2
2
|
|
3
3
|
def diff_args
|
4
|
-
{format: :text}
|
4
|
+
{ format: :text }
|
5
5
|
end
|
6
6
|
|
7
7
|
format do
|
8
8
|
include Css::Format
|
9
9
|
|
10
|
-
view :core do |
|
10
|
+
view :core do |_args|
|
11
11
|
compile_scss(process_content _render_raw)
|
12
12
|
end
|
13
13
|
|
14
14
|
def compile_scss scss, style=:expanded
|
15
15
|
Sass.compile scss, style: style
|
16
|
-
rescue =>e
|
16
|
+
rescue => e
|
17
17
|
e
|
18
18
|
end
|
19
|
-
|
20
19
|
end
|
21
20
|
|
22
|
-
format(
|
21
|
+
format(:html) { include Css::HtmlFormat }
|
@@ -1,12 +1,9 @@
|
|
1
1
|
include Machine
|
2
2
|
include MachineInput
|
3
3
|
|
4
|
-
store_machine_output filetype:
|
4
|
+
store_machine_output filetype: 'css'
|
5
5
|
|
6
6
|
include Pointer
|
7
|
-
format
|
7
|
+
format { include Pointer::Format }
|
8
8
|
format(:html) { include Pointer::HtmlFormat }
|
9
|
-
format(:css
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
format(:css) { include Pointer::CssFormat }
|
@@ -7,15 +7,14 @@ end
|
|
7
7
|
def method_missing m, *args, &block
|
8
8
|
case m
|
9
9
|
when /that_produces_(.+)/
|
10
|
-
return
|
10
|
+
return Regexp.last_match(1)
|
11
11
|
else
|
12
12
|
super
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
16
|
shared_examples_for 'machine' do |filetype|
|
18
|
-
context
|
17
|
+
context 'machine is run' do
|
19
18
|
before do
|
20
19
|
machine.update_machine_output
|
21
20
|
end
|
@@ -33,15 +32,12 @@ shared_examples_for 'machine' do |filetype|
|
|
33
32
|
end
|
34
33
|
|
35
34
|
shared_examples_for 'content machine' do |filetype|
|
36
|
-
|
37
35
|
it_should_behave_like 'machine', that_produces(filetype) do
|
38
36
|
let(:machine) { machine_card }
|
39
37
|
end
|
40
38
|
|
41
39
|
context '+machine_input card' do
|
42
|
-
|
43
|
-
|
44
|
-
it "points to self" do
|
40
|
+
it 'points to self' do
|
45
41
|
Card::Auth.as_bot do
|
46
42
|
machine_card.update_input_card
|
47
43
|
end
|
@@ -63,24 +59,21 @@ shared_examples_for 'content machine' do |filetype|
|
|
63
59
|
end
|
64
60
|
end
|
65
61
|
|
66
|
-
|
67
62
|
shared_examples_for 'pointer machine' do |filetype|
|
68
63
|
subject do
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
=end
|
64
|
+
# We build the following structure:
|
65
|
+
#
|
66
|
+
# #{machine_card}
|
67
|
+
# |- expected_input_items (passed by the calling test if it prepopulates the machine_card with some additional items)
|
68
|
+
# |_ level 0 #{filetype}
|
69
|
+
# |- level 1 basic 1
|
70
|
+
# |- level 1 #{filetype}
|
71
|
+
# | |- level 2 basic 1
|
72
|
+
# | |- level 2 #{filetype}
|
73
|
+
# | | |_ ....
|
74
|
+
# | |_ level 2 basic 2
|
75
|
+
# |_ level 1 basic 2
|
76
|
+
#
|
84
77
|
|
85
78
|
change_machine = machine_card
|
86
79
|
@depth = 2
|
@@ -89,24 +82,24 @@ We build the following structure:
|
|
89
82
|
start = @expected_items.size
|
90
83
|
Card::Auth.as_bot do
|
91
84
|
@depth.times do |i|
|
92
|
-
@leaf_items << Card.fetch(
|
85
|
+
@leaf_items << Card.fetch("level #{i} basic 1", new: { type: Card::BasicID })
|
93
86
|
@leaf_items.last.save
|
94
|
-
@leaf_items << Card.fetch(
|
87
|
+
@leaf_items << Card.fetch("level #{i} basic 2", new: { type: Card::BasicID })
|
95
88
|
@leaf_items.last.save
|
96
89
|
end
|
97
90
|
|
98
91
|
# we build the tree from bottom up
|
99
92
|
last_level = false
|
100
|
-
(@depth-1).downto(0) do |i|
|
101
|
-
next_level = Card.fetch(
|
102
|
-
next_level.content =
|
103
|
-
next_level << @leaf_items[i*2]
|
93
|
+
(@depth - 1).downto(0) do |i|
|
94
|
+
next_level = Card.fetch("level #{i} #{filetype} ", new: { type: :pointer })
|
95
|
+
next_level.content = ''
|
96
|
+
next_level << @leaf_items[i * 2]
|
104
97
|
next_level << last_level if last_level
|
105
|
-
next_level << @leaf_items[i*2+1]
|
98
|
+
next_level << @leaf_items[i * 2 + 1]
|
106
99
|
next_level.save!
|
107
|
-
@expected_items.insert(start, @leaf_items[i*2])
|
108
|
-
@expected_items.insert(start+1, last_level) if last_level
|
109
|
-
@expected_items << @leaf_items[i*2+1]
|
100
|
+
@expected_items.insert(start, @leaf_items[i * 2])
|
101
|
+
@expected_items.insert(start + 1, last_level) if last_level
|
102
|
+
@expected_items << @leaf_items[i * 2 + 1]
|
110
103
|
last_level = next_level
|
111
104
|
end
|
112
105
|
change_machine << last_level
|
@@ -129,11 +122,11 @@ We build the following structure:
|
|
129
122
|
end
|
130
123
|
end
|
131
124
|
|
132
|
-
it
|
125
|
+
it 'contains items of all levels' do
|
133
126
|
expect(subject.machine_input_card.item_cards.map(&:id).sort).to eq(@expected_items.map(&:id).sort)
|
134
127
|
end
|
135
128
|
|
136
|
-
it
|
129
|
+
it 'preserves order of items' do
|
137
130
|
expect(subject.machine_input_card.item_cards.map(&:id)).to eq(@expected_items.map(&:id))
|
138
131
|
end
|
139
132
|
end
|
@@ -152,7 +145,7 @@ We build the following structure:
|
|
152
145
|
|
153
146
|
it 'updates #{filetype} file if item is added' do
|
154
147
|
Card::Auth.as_bot do
|
155
|
-
ca = Card.gimme!
|
148
|
+
ca = Card.gimme! 'pointer item', type: Card::SkinID, content: ''
|
156
149
|
subject.items = [ca]
|
157
150
|
ca << another_machine_input_card
|
158
151
|
ca.save!
|
@@ -164,9 +157,9 @@ We build the following structure:
|
|
164
157
|
context 'a non-existent card was added as item and now created' do
|
165
158
|
it 'updates #{filetype} file' do
|
166
159
|
Card::Auth.as_bot do
|
167
|
-
subject.content =
|
160
|
+
subject.content = '[[non-existent input]]'
|
168
161
|
subject.save!
|
169
|
-
ca = Card.gimme!
|
162
|
+
ca = Card.gimme! 'non-existent input', type: input_type, content: card_content[:changed_in]
|
170
163
|
ca.save!
|
171
164
|
changed_path = subject.machine_output_path
|
172
165
|
expect(File.read(changed_path)).to eq(card_content[:changed_out])
|