card 1.16.6 → 1.16.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardoc/checksums +234 -49
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/VERSION +1 -1
- data/config/initializers/mime_types.rb +3 -3
- data/config/initializers/notification.rb +1 -1
- data/db/migrate/20121118115000_update_link_type.rb +8 -8
- data/db/migrate/20130411210957_update_codenames.rb +2 -2
- data/db/migrate/20140822073704_create_new_revision_tables.rb +12 -13
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +16 -16
- data/db/migrate/20141121172918_rename_card_migration_table.rb +4 -4
- data/db/migrate_core_cards/20130419215612_import_help_text.rb +3 -3
- data/db/migrate_core_cards/20130823192433_add_style_cards.rb +45 -47
- data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +1 -1
- data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +3 -3
- data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +3 -3
- data/db/migrate_core_cards/20130927191728_account_events.rb +6 -6
- data/db/migrate_core_cards/20131016172445_common_css_patch.rb +1 -1
- data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +1 -1
- data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +19 -19
- data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +11 -12
- data/db/migrate_core_cards/20140512155840_add_script_cards.rb +35 -36
- data/db/migrate_core_cards/20140629222005_add_email_cards.rb +55 -55
- data/db/migrate_core_cards/20140725180118_config_card_updates.rb +1 -1
- data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +2 -2
- data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +3 -3
- data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +2 -2
- data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -8
- data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -2
- data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +16 -16
- data/db/migrate_core_cards/20141230204340_uri_codename.rb +1 -1
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +19 -19
- data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +3 -3
- data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +15 -15
- data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +11 -11
- data/db/migrate_core_cards/20150331135745_new_card_menu.rb +1 -1
- data/db/migrate_core_cards/20150429090551_search_card_context.rb +1 -1
- data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -3
- data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +1 -1
- data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +4 -4
- data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +5 -5
- data/db/migrate_core_cards/20150605115802_add_performance_log_card.rb +1 -1
- data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +2 -2
- data/db/migrate_core_cards/20150611203506_rails_inflection_updates.rb +5 -5
- data/db/migrate_core_cards/20150627205133_fix_script_bootstrap_card_type.rb +1 -1
- data/db/migrate_core_cards/20150702130543_remove_edit_toolbar_pinned.rb +1 -1
- data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +5 -5
- data/db/migrate_core_cards/20150807205221_create_references_for_search_cards.rb +1 -1
- data/db/migrate_core_cards/20150824135418_update_file_history.rb +3 -3
- data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +2 -2
- data/db/migrate_core_cards/20150910085603_remove_performance_log_card.rb +1 -1
- data/lib/card.rb +4 -4
- data/lib/card/active_record_ext.rb +8 -8
- data/lib/card/auth.rb +6 -6
- data/lib/card/cache.rb +1 -1
- data/lib/card/chunk.rb +1 -1
- data/lib/card/content.rb +1 -1
- data/lib/card/diff.rb +10 -10
- data/lib/card/env.rb +1 -1
- data/lib/card/format.rb +12 -12
- data/lib/card/loader.rb +1 -1
- data/lib/card/migration.rb +1 -1
- data/lib/card/name.rb +4 -4
- data/lib/card/query.rb +255 -61
- data/lib/card/query/attributes.rb +310 -0
- data/lib/card/query/clause.rb +12 -15
- data/lib/card/query/join.rb +73 -0
- data/lib/card/query/reference.rb +51 -0
- data/lib/card/query/sql_statement.rb +228 -0
- data/lib/card/query/value.rb +66 -0
- data/lib/card/reference.rb +6 -6
- data/lib/card/set.rb +12 -12
- data/lib/card/set_pattern.rb +9 -9
- data/lib/card/spec_helper.rb +5 -5
- data/lib/card/success.rb +1 -1
- data/lib/cardio.rb +7 -7
- data/lib/generators/card/format/format_generator.rb +3 -3
- data/lib/generators/card/migration/migration_generator.rb +5 -5
- data/lib/generators/card/set/set_generator.rb +4 -4
- data/mod/01_core/chunk/include.rb +4 -4
- data/mod/01_core/chunk/link.rb +5 -5
- data/mod/01_core/chunk/literal.rb +2 -2
- data/mod/01_core/chunk/query_reference.rb +8 -8
- data/mod/01_core/chunk/uri.rb +18 -18
- data/mod/01_core/format/html_format.rb +4 -4
- data/mod/01_core/set/all/active_card.rb +2 -2
- data/mod/01_core/set/all/collection.rb +21 -26
- data/mod/01_core/set/all/content.rb +2 -2
- data/mod/01_core/set/all/fetch.rb +6 -6
- data/mod/01_core/set/all/initialize.rb +4 -4
- data/mod/01_core/set/all/location_history.rb +2 -2
- data/mod/01_core/set/all/name.rb +14 -14
- data/mod/01_core/set/all/pattern.rb +1 -1
- data/mod/01_core/set/all/permissions.rb +12 -12
- data/mod/01_core/set/all/phases.rb +29 -12
- data/mod/01_core/set/all/references.rb +14 -14
- data/mod/01_core/set/all/rules.rb +8 -8
- data/mod/01_core/set/all/templating.rb +10 -9
- data/mod/01_core/set/all/tracked_attributes.rb +7 -7
- data/mod/01_core/set/all/trash.rb +6 -6
- data/mod/01_core/set/all/type.rb +7 -7
- data/mod/01_core/set/all/utils.rb +4 -4
- data/mod/01_core/set/all/view_cache.rb +1 -1
- data/mod/01_core/set_pattern/02_all_plus.rb +2 -2
- data/mod/01_core/set_pattern/03_type.rb +1 -1
- data/mod/01_core/set_pattern/04_star.rb +1 -1
- data/mod/01_core/set_pattern/05_rstar.rb +2 -2
- data/mod/01_core/set_pattern/06_right.rb +4 -4
- data/mod/01_core/set_pattern/07_type_plus_right.rb +4 -4
- data/mod/01_core/set_pattern/08_self.rb +1 -1
- data/mod/01_core/spec/chunk/uri_spec.rb +73 -73
- data/mod/01_core/spec/format/html_format_spec.rb +5 -5
- data/mod/01_core/spec/set/all/attribute_tracking_spec.rb +1 -1
- data/mod/01_core/spec/set/all/collection_spec.rb +22 -22
- data/mod/01_core/spec/set/all/content_spec.rb +1 -1
- data/mod/01_core/spec/set/all/fetch_spec.rb +24 -24
- data/mod/01_core/spec/set/all/initialize_spec.rb +9 -9
- data/mod/01_core/spec/set/all/name_spec.rb +8 -8
- data/mod/01_core/spec/set/all/pattern_spec.rb +10 -10
- data/mod/01_core/spec/set/all/permissions_spec.rb +45 -45
- data/mod/01_core/spec/set/all/references_spec.rb +1 -1
- data/mod/01_core/spec/set/all/rules2_spec.rb +15 -15
- data/mod/01_core/spec/set/all/rules_spec.rb +37 -37
- data/mod/01_core/spec/set/all/templating_spec.rb +21 -21
- data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +55 -55
- data/mod/01_core/spec/set/all/trash_spec.rb +4 -4
- data/mod/01_core/spec/set/all/type_spec.rb +15 -15
- data/mod/01_history/lib/card/act.rb +2 -2
- data/mod/01_history/lib/card/action.rb +22 -22
- data/mod/01_history/lib/card/change.rb +1 -1
- data/mod/01_history/set/all/actions.rb +2 -2
- data/mod/01_history/set/all/content_history.rb +4 -4
- data/mod/01_history/set/all/history.rb +46 -46
- data/mod/02_basic_types/set/all/all_css.rb +10 -10
- data/mod/02_basic_types/set/all/all_csv.rb +7 -7
- data/mod/02_basic_types/set/all/base.rb +25 -25
- data/mod/02_basic_types/set/all/json.rb +16 -16
- data/mod/02_basic_types/set/all/rss.rb +7 -7
- data/mod/02_basic_types/set/type/html.rb +2 -2
- data/mod/02_basic_types/set/type/plain_text.rb +1 -1
- data/mod/02_basic_types/set/type/pointer.rb +39 -31
- data/mod/02_basic_types/spec/set/all/all_css_spec.rb +1 -1
- data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +1 -1
- data/mod/02_basic_types/spec/set/all/base_spec.rb +18 -18
- data/mod/02_basic_types/spec/set/all/json_spec.rb +4 -4
- data/mod/02_basic_types/spec/set/all/rss_spec.rb +8 -2
- data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +1 -1
- data/mod/02_basic_types/spec/set/type/pointer_spec.rb +54 -44
- data/mod/03_machines/lib/card/machine.rb +46 -29
- data/mod/03_machines/lib/card/machine_input.rb +34 -10
- data/mod/03_machines/set/type/coffee_script.rb +3 -3
- data/mod/03_machines/set/type/css.rb +8 -8
- data/mod/03_machines/set/type/java_script.rb +4 -4
- data/mod/03_machines/set/type/scss.rb +2 -2
- data/mod/03_machines/set/type/skin.rb +1 -1
- data/mod/03_machines/spec/lib/shared_machine_examples.rb +27 -27
- data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +8 -8
- data/mod/03_machines/spec/set/type/coffeescript_spec.rb +6 -6
- data/mod/03_machines/spec/set/type/css_spec.rb +9 -9
- data/mod/03_machines/spec/set/type/javascript_spec.rb +6 -6
- data/mod/03_machines/spec/set/type/scss_spec.rb +5 -5
- data/mod/03_machines/spec/set/type/skin_spec.rb +25 -25
- data/mod/04_settings/lib/card/setting.rb +11 -11
- data/mod/04_settings/set/abstract/permission.rb +9 -9
- data/mod/04_settings/set/right/script.rb +1 -1
- data/mod/04_settings/set/right/structure.rb +0 -5
- data/mod/04_settings/set/right/style.rb +2 -2
- data/mod/04_settings/set/self/accountable.rb +1 -1
- data/mod/04_settings/set/self/add_help.rb +1 -1
- data/mod/04_settings/set/self/autoname.rb +1 -1
- data/mod/04_settings/set/self/captcha.rb +1 -1
- data/mod/04_settings/set/self/create.rb +1 -1
- data/mod/04_settings/set/self/default.rb +1 -1
- data/mod/04_settings/set/self/delete.rb +1 -1
- data/mod/04_settings/set/self/help.rb +1 -1
- data/mod/04_settings/set/self/input.rb +1 -1
- data/mod/04_settings/set/self/layout.rb +1 -1
- data/mod/04_settings/set/self/on_create.rb +1 -1
- data/mod/04_settings/set/self/on_delete.rb +1 -1
- data/mod/04_settings/set/self/on_update.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/self/read.rb +1 -1
- data/mod/04_settings/set/self/script.rb +1 -1
- data/mod/04_settings/set/self/structure.rb +1 -1
- data/mod/04_settings/set/self/style.rb +1 -1
- data/mod/04_settings/set/self/table_of_contents.rb +1 -1
- data/mod/04_settings/set/self/thanks.rb +1 -1
- data/mod/04_settings/set/self/update.rb +1 -1
- data/mod/04_settings/set/type/setting.rb +14 -14
- data/mod/04_settings/spec/set/right/comment_spec.rb +5 -5
- data/mod/04_settings/spec/set/right/create_spec.rb +1 -1
- data/mod/04_settings/spec/set/right/script_spec.rb +5 -5
- data/mod/04_settings/spec/set/right/structure_spec.rb +4 -2
- data/mod/04_settings/spec/set/right/style_spec.rb +7 -7
- data/mod/04_settings/spec/set/type/setting_spec.rb +2 -2
- data/mod/05_email/lib/card/follow_option.rb +24 -24
- data/mod/05_email/set/all/follow.rb +24 -16
- data/mod/05_email/set/all/notify.rb +25 -23
- data/mod/05_email/set/all/observer.rb +5 -5
- data/mod/05_email/set/right/bcc.rb +8 -8
- data/mod/05_email/set/right/follow.rb +44 -17
- data/mod/05_email/set/right/follow_fields.rb +1 -1
- data/mod/05_email/set/right/following.rb +49 -40
- data/mod/05_email/set/self/always.rb +2 -2
- data/mod/05_email/set/self/created.rb +1 -1
- data/mod/05_email/set/self/edited.rb +4 -4
- data/mod/05_email/set/self/follow.rb +1 -1
- data/mod/05_email/set/self/follow_defaults.rb +9 -9
- data/mod/05_email/set/self/never.rb +1 -1
- data/mod/05_email/set/type/email_template.rb +9 -9
- data/mod/05_email/set/type_plus_right/user/follow.rb +16 -16
- data/mod/05_email/spec/set/all/follow_spec.rb +10 -10
- data/mod/05_email/spec/set/all/notify_spec.rb +82 -82
- data/mod/05_email/spec/set/all/observer_spec.rb +16 -16
- data/mod/05_email/spec/set/right/followers_spec.rb +6 -6
- data/mod/05_email/spec/set/self/follow_defaults_spec.rb +2 -2
- data/mod/05_standard/lib/carrier_wave/cardmount.rb +5 -5
- data/mod/05_standard/lib/image_uploader.rb +8 -8
- data/mod/05_standard/set/abstract/attachment.rb +18 -18
- data/mod/05_standard/set/all/account.rb +5 -5
- data/mod/05_standard/set/all/comment.rb +7 -7
- data/mod/05_standard/set/all/error.rb +25 -25
- data/mod/05_standard/set/all/event_viz.rb +1 -1
- data/mod/05_standard/set/all/links.rb +9 -9
- data/mod/05_standard/set/all/rich_html/content.rb +34 -34
- data/mod/05_standard/set/all/rich_html/editing.rb +35 -35
- data/mod/05_standard/set/all/rich_html/form.rb +20 -20
- data/mod/05_standard/set/all/rich_html/header.rb +8 -8
- data/mod/05_standard/set/all/rich_html/menu.rb +33 -33
- data/mod/05_standard/set/all/rich_html/modal.rb +16 -16
- data/mod/05_standard/set/all/rich_html/toolbar.rb +63 -63
- data/mod/05_standard/set/all/rich_html/wrapper.rb +8 -8
- data/mod/05_standard/set/right/account.rb +27 -27
- data/mod/05_standard/set/right/email.rb +5 -5
- data/mod/05_standard/set/right/password.rb +5 -5
- data/mod/05_standard/set/rstar/rules.rb +52 -52
- data/mod/05_standard/set/self/account_links.rb +27 -27
- data/mod/05_standard/set/self/all.rb +1 -1
- data/mod/05_standard/set/self/head.rb +5 -5
- data/mod/05_standard/set/self/navbox.rb +11 -11
- data/mod/05_standard/set/self/recent.rb +2 -2
- data/mod/05_standard/set/self/search.rb +13 -13
- data/mod/05_standard/set/self/signin.rb +19 -19
- data/mod/05_standard/set/self/stats.rb +2 -2
- data/mod/05_standard/set/type/basic.rb +1 -1
- data/mod/05_standard/set/type/cardtype.rb +5 -5
- data/mod/05_standard/set/type/date.rb +1 -1
- data/mod/05_standard/set/type/file.rb +7 -7
- data/mod/05_standard/set/type/image.rb +8 -8
- data/mod/05_standard/set/type/number.rb +2 -2
- data/mod/05_standard/set/type/phrase.rb +1 -1
- data/mod/05_standard/set/type/search_type.rb +27 -21
- data/mod/05_standard/set/type/session.rb +2 -2
- data/mod/05_standard/set/type/set.rb +37 -37
- data/mod/05_standard/set/type/signup.rb +25 -25
- data/mod/05_standard/set/type/uri.rb +1 -1
- data/mod/05_standard/set/type/user.rb +21 -21
- data/mod/05_standard/spec/chunk/include_spec.rb +16 -16
- data/mod/05_standard/spec/chunk/link_spec.rb +18 -18
- data/mod/05_standard/spec/chunk/query_reference_spec.rb +1 -1
- data/mod/05_standard/spec/set/all/account_spec.rb +7 -7
- data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
- data/mod/05_standard/spec/set/all/history_spec.rb +14 -14
- data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +1 -1
- data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +2 -2
- data/mod/05_standard/spec/set/right/account_spec.rb +9 -9
- data/mod/05_standard/spec/set/right/email_spec.rb +8 -8
- data/mod/05_standard/spec/set/right/password_spec.rb +9 -9
- data/mod/05_standard/spec/set/right/stats_spec.rb +1 -1
- 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 +2 -2
- data/mod/05_standard/spec/set/self/account_links_spec.rb +2 -2
- data/mod/05_standard/spec/set/self/all_spec.rb +8 -11
- data/mod/05_standard/spec/set/self/head_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/now_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 +1 -1
- data/mod/05_standard/spec/set/type/email_template_spec.rb +25 -25
- data/mod/05_standard/spec/set/type/file_spec.rb +4 -4
- data/mod/05_standard/spec/set/type/html_spec.rb +3 -3
- data/mod/05_standard/spec/set/type/image_spec.rb +6 -6
- data/mod/05_standard/spec/set/type/layout_type_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/search_type_spec.rb +10 -10
- data/mod/05_standard/spec/set/type/signup_spec.rb +11 -11
- data/mod/05_standard/spec/set/type/toggle_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/uri_spec.rb +9 -9
- data/mod/06_bootstrap/set/all/bootstrap/helper.rb +10 -10
- data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +4 -4
- data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -1
- data/spec/lib/card/action_spec.rb +2 -2
- data/spec/lib/card/cache_spec.rb +7 -7
- data/spec/lib/card/content_spec.rb +31 -37
- data/spec/lib/card/diff_spec.rb +56 -56
- data/spec/lib/card/format_spec.rb +11 -11
- data/spec/lib/card/query_spec.rb +382 -265
- data/spec/lib/card/reference_spec.rb +133 -140
- data/spec/lib/card/set_pattern_spec.rb +10 -9
- data/spec/lib/card/set_spec.rb +11 -11
- data/spec/lib/card/success_spec.rb +16 -8
- data/spec/mailers/mailer_spec.rb +5 -5
- data/spec/models/card/cardtype_spec.rb +20 -20
- data/spec/models/card/create_spec.rb +6 -6
- data/spec/models/card/trash_spec.rb +20 -20
- data/spec/models/card/type_transition_spec.rb +3 -3
- data/spec/models/card/validation_spec.rb +5 -5
- data/spec/models/card_spec.rb +24 -24
- data/spec/spec_helper.rb +5 -5
- data/tmpsets/set/mod001-01_core/all/active_card.rb +2 -2
- data/tmpsets/set/mod001-01_core/all/collection.rb +23 -26
- data/tmpsets/set/mod001-01_core/all/content.rb +2 -2
- data/tmpsets/set/mod001-01_core/all/fetch.rb +6 -6
- data/tmpsets/set/mod001-01_core/all/initialize.rb +8 -4
- data/tmpsets/set/mod001-01_core/all/name.rb +14 -14
- data/tmpsets/set/mod001-01_core/all/pattern.rb +1 -1
- data/tmpsets/set/mod001-01_core/all/permissions.rb +12 -12
- data/tmpsets/set/mod001-01_core/all/phases.rb +31 -13
- data/tmpsets/set/mod001-01_core/all/references.rb +14 -14
- data/tmpsets/set/mod001-01_core/all/rules.rb +8 -10
- data/tmpsets/set/mod001-01_core/all/templating.rb +10 -9
- data/tmpsets/set/mod001-01_core/all/tracked_attributes.rb +7 -7
- data/tmpsets/set/mod001-01_core/all/trash.rb +9 -8
- data/tmpsets/set/mod001-01_core/all/type.rb +7 -7
- data/tmpsets/set/mod001-01_core/all/utils.rb +16 -4
- data/tmpsets/set/mod001-01_core/all/view_cache.rb +1 -1
- data/tmpsets/set/mod002-01_history/all/actions.rb +2 -2
- data/tmpsets/set/mod002-01_history/all/content_history.rb +11 -7
- data/tmpsets/set/mod002-01_history/all/history.rb +46 -46
- data/tmpsets/set/mod003-02_basic_types/all/all_css.rb +10 -10
- data/tmpsets/set/mod003-02_basic_types/all/all_csv.rb +7 -7
- data/tmpsets/set/mod003-02_basic_types/all/base.rb +25 -25
- data/tmpsets/set/mod003-02_basic_types/all/json.rb +16 -16
- data/tmpsets/set/mod003-02_basic_types/all/rss.rb +7 -7
- data/tmpsets/set/mod003-02_basic_types/type/html.rb +2 -2
- data/tmpsets/set/mod003-02_basic_types/type/plain_text.rb +1 -1
- data/tmpsets/set/mod003-02_basic_types/type/pointer.rb +38 -31
- data/tmpsets/set/mod004-03_machines/right/machine_output.rb +4 -0
- data/tmpsets/set/mod004-03_machines/type/coffee_script.rb +3 -3
- data/tmpsets/set/mod004-03_machines/type/css.rb +8 -8
- data/tmpsets/set/mod004-03_machines/type/java_script.rb +4 -4
- data/tmpsets/set/mod004-03_machines/type/scss.rb +2 -2
- data/tmpsets/set/mod004-03_machines/type/skin.rb +1 -1
- data/tmpsets/set/mod005-04_settings/abstract/permission.rb +9 -9
- data/tmpsets/set/mod005-04_settings/right/script.rb +1 -1
- data/tmpsets/set/mod005-04_settings/right/structure.rb +0 -5
- data/tmpsets/set/mod005-04_settings/right/style.rb +2 -2
- data/tmpsets/set/mod005-04_settings/self/accountable.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/add_help.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/autoname.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/captcha.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/create.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/default.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/delete.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/help.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/input.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/layout.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/on_create.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/on_delete.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/on_update.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/options.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/options_label.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/read.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/script.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/structure.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/style.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/table_of_contents.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/thanks.rb +1 -1
- data/tmpsets/set/mod005-04_settings/self/update.rb +1 -1
- data/tmpsets/set/mod005-04_settings/type/setting.rb +14 -14
- data/tmpsets/set/mod006-05_email/all/follow.rb +24 -16
- data/tmpsets/set/mod006-05_email/all/notify.rb +25 -23
- data/tmpsets/set/mod006-05_email/all/observer.rb +8 -8
- data/tmpsets/set/mod006-05_email/right/bcc.rb +8 -8
- data/tmpsets/set/mod006-05_email/right/follow.rb +44 -17
- data/tmpsets/set/mod006-05_email/right/follow_fields.rb +1 -1
- data/tmpsets/set/mod006-05_email/right/following.rb +49 -40
- data/tmpsets/set/mod006-05_email/self/always.rb +2 -2
- data/tmpsets/set/mod006-05_email/self/created.rb +1 -1
- data/tmpsets/set/mod006-05_email/self/edited.rb +4 -4
- data/tmpsets/set/mod006-05_email/self/follow.rb +1 -1
- data/tmpsets/set/mod006-05_email/self/follow_defaults.rb +9 -9
- data/tmpsets/set/mod006-05_email/self/never.rb +1 -1
- data/tmpsets/set/mod006-05_email/type/email_template.rb +9 -9
- data/tmpsets/set/mod006-05_email/type_plus_right/user/follow.rb +17 -17
- data/tmpsets/set/mod007-05_standard/abstract/attachment.rb +98 -46
- data/tmpsets/set/mod007-05_standard/all/account.rb +5 -5
- data/tmpsets/set/mod007-05_standard/all/comment.rb +7 -7
- data/tmpsets/set/mod007-05_standard/all/error.rb +26 -26
- data/tmpsets/set/mod007-05_standard/all/event_viz.rb +1 -1
- data/tmpsets/set/mod007-05_standard/all/links.rb +10 -9
- data/tmpsets/set/mod007-05_standard/all/rich_html/content.rb +34 -34
- data/tmpsets/set/mod007-05_standard/all/rich_html/editing.rb +35 -35
- data/tmpsets/set/mod007-05_standard/all/rich_html/form.rb +20 -20
- data/tmpsets/set/mod007-05_standard/all/rich_html/header.rb +8 -8
- data/tmpsets/set/mod007-05_standard/all/rich_html/menu.rb +33 -33
- data/tmpsets/set/mod007-05_standard/all/rich_html/modal.rb +16 -16
- data/tmpsets/set/mod007-05_standard/all/rich_html/toolbar.rb +63 -63
- data/tmpsets/set/mod007-05_standard/all/rich_html/wrapper.rb +8 -8
- data/tmpsets/set/mod007-05_standard/right/account.rb +27 -27
- data/tmpsets/set/mod007-05_standard/right/email.rb +5 -5
- data/tmpsets/set/mod007-05_standard/right/password.rb +5 -5
- data/tmpsets/set/mod007-05_standard/rstar/rules.rb +52 -52
- data/tmpsets/set/mod007-05_standard/self/account_links.rb +27 -27
- data/tmpsets/set/mod007-05_standard/self/all.rb +1 -1
- data/tmpsets/set/mod007-05_standard/self/head.rb +5 -5
- data/tmpsets/set/mod007-05_standard/self/navbox.rb +11 -11
- data/tmpsets/set/mod007-05_standard/self/recent.rb +2 -2
- data/tmpsets/set/mod007-05_standard/self/search.rb +13 -13
- data/tmpsets/set/mod007-05_standard/self/signin.rb +19 -19
- data/tmpsets/set/mod007-05_standard/self/stats.rb +2 -2
- data/tmpsets/set/mod007-05_standard/type/basic.rb +1 -1
- data/tmpsets/set/mod007-05_standard/type/cardtype.rb +5 -5
- data/tmpsets/set/mod007-05_standard/type/date.rb +1 -1
- data/tmpsets/set/mod007-05_standard/type/file.rb +23 -8
- data/tmpsets/set/mod007-05_standard/type/image.rb +10 -8
- data/tmpsets/set/mod007-05_standard/type/number.rb +2 -2
- data/tmpsets/set/mod007-05_standard/type/phrase.rb +1 -1
- data/tmpsets/set/mod007-05_standard/type/search_type.rb +21 -19
- data/tmpsets/set/mod007-05_standard/type/session.rb +2 -2
- data/tmpsets/set/mod007-05_standard/type/set.rb +37 -37
- data/tmpsets/set/mod007-05_standard/type/signup.rb +25 -25
- data/tmpsets/set/mod007-05_standard/type/uri.rb +1 -1
- data/tmpsets/set/mod007-05_standard/type/user.rb +21 -21
- data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/helper.rb +10 -10
- data/tmpsets/set/mod008-06_bootstrap/all/bootstrap/wrapper.rb +4 -4
- data/tmpsets/set/mod008-06_bootstrap/all/rich_bootstrap.rb +1 -1
- data/tmpsets/set_pattern/101-all_plus.rb +2 -2
- data/tmpsets/set_pattern/102-type.rb +1 -1
- data/tmpsets/set_pattern/103-star.rb +1 -1
- data/tmpsets/set_pattern/104-rstar.rb +2 -2
- data/tmpsets/set_pattern/105-right.rb +4 -4
- data/tmpsets/set_pattern/106-type_plus_right.rb +4 -4
- data/tmpsets/set_pattern/107-self.rb +1 -1
- metadata +7 -5
- data/lib/card/query/card_clause.rb +0 -528
- data/lib/card/query/ref_clause.rb +0 -47
- data/lib/card/query/value_clause.rb +0 -65
@@ -3,7 +3,7 @@
|
|
3
3
|
describe Card::Set::All::AllCsv, "CSV mod" do
|
4
4
|
context "csv_row view" do
|
5
5
|
it "should handle inclusions" do
|
6
|
-
expect(render_card( :csv_row, { :
|
6
|
+
expect(render_card( :csv_row, { content: '{{A+B}} {{T}}' }, format: :csv )).to eq("AlphaBeta,Theta")
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
describe Card::Set::All::Base do
|
4
4
|
|
5
5
|
describe 'handles view' do
|
6
|
-
|
6
|
+
|
7
7
|
it("name" ) { expect(render_card(:name)).to eq('Tempo Rary') }
|
8
8
|
it("key" ) { expect(render_card(:key)).to eq('tempo_rary') }
|
9
9
|
it("linkname") { expect(render_card(:linkname)).to eq('Tempo_Rary') }
|
@@ -15,43 +15,43 @@ describe Card::Set::All::Base do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it :raw do
|
18
|
-
@a = Card.new :
|
18
|
+
@a = Card.new content: "{{A}}"
|
19
19
|
expect(@a.format._render(:raw)).to eq("{{A}}")
|
20
20
|
end
|
21
21
|
|
22
22
|
it "core" do
|
23
|
-
expect(render_card(:core, :
|
23
|
+
expect(render_card(:core, name: 'A+B')).to eq("AlphaBeta")
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it 'core for new card' do
|
27
27
|
expect(Card.new.format._render_core).to eq('')
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
describe 'array' do
|
31
31
|
it "of search items" do
|
32
|
-
Card.create! :
|
32
|
+
Card.create! name: "n+a", type: "Number", content: "10"
|
33
33
|
sleep 1
|
34
|
-
Card.create! :
|
34
|
+
Card.create! name: "n+b", type: "Phrase", content: "say:\"what\""
|
35
35
|
sleep 1
|
36
|
-
Card.create! :
|
37
|
-
c = Card.new :
|
36
|
+
Card.create! name: "n+c", type: "Number", content: "30"
|
37
|
+
c = Card.new name: 'nplusarray', content: "{{n+*children+by create|array}}"
|
38
38
|
expect(c.format._render( :core )).to eq(%{["10", "say:\\"what\\"", "30"]})
|
39
39
|
end
|
40
40
|
|
41
41
|
it "of pointer items" do
|
42
|
-
Card.create! :
|
43
|
-
Card.create! :
|
44
|
-
Card.create! :
|
45
|
-
Card.create! :
|
46
|
-
c = Card.new :
|
42
|
+
Card.create! name: "n+a", type: "Number", content: "10"
|
43
|
+
Card.create! name: "n+b", type: "Number", content: "20"
|
44
|
+
Card.create! name: "n+c", type: "Number", content: "30"
|
45
|
+
Card.create! name: "npoint", type: "Pointer", content: "[[n+a]]\n[[n+b]]\n[[n+c]]"
|
46
|
+
c = Card.new name: 'npointArray', content: "{{npoint|array}}"
|
47
47
|
expect(c.format._render( :core )).to eq(%q{["10", "20", "30"]})
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
it "of basic items" do
|
51
|
-
expect(render_card(:array, :
|
51
|
+
expect(render_card(:array, content: 'yoing')).to eq(%{["yoing"]})
|
52
52
|
end
|
53
53
|
end
|
54
|
-
|
55
|
-
end
|
54
|
+
|
55
|
+
end
|
56
56
|
end
|
57
57
|
|
@@ -9,13 +9,13 @@ describe Card::Set::All::Json, "JSON mod" do
|
|
9
9
|
virtual_json = jf.new(Card.fetch('T+*self')).show :status, {}
|
10
10
|
expect(JSON[virtual_json]).to eq({"key"=>"t+*self","status"=>"virtual",'url_key'=>'T+*self'})
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should treat both unknown and unreadable cards as unknown" do
|
14
14
|
Card::Auth.as Card::AnonymousID do
|
15
15
|
jf = Card::JsonFormat
|
16
|
-
|
17
|
-
unknown = Card.new :
|
18
|
-
unreadable = Card.new :
|
16
|
+
|
17
|
+
unknown = Card.new name: 'sump'
|
18
|
+
unreadable = Card.new name: 'kumq', type: 'Fruit'
|
19
19
|
unknown_json = jf.new(unknown).show :status, {}
|
20
20
|
expect(JSON[unknown_json]).to eq({"key"=>"sump","status"=>"unknown", 'url_key'=>'sump'})
|
21
21
|
unreadable_json = jf.new(unreadable).show :status, {}
|
@@ -7,9 +7,15 @@ describe Card::Set::All::Rss do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'should handle faulty search queries' do
|
10
|
-
bad_search = Card.create! :
|
10
|
+
bad_search = Card.create! name: 'Bad Search', type: 'Search', content: 'not no search'
|
11
11
|
rendered = bad_search.format(:rss).render_feed_body
|
12
|
-
expect(rendered).to
|
12
|
+
expect(rendered).to have_tag("item",:text => /JSON::ParserError/)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should handle bad queries' do
|
16
|
+
bad_search = Card.create! :name=>'Bad Search', :type=>'Search', :content=>'{"found_by":"home"}'
|
17
|
+
rendered = bad_search.format(:rss).render_feed_body
|
18
|
+
expect(rendered).to have_tag("item",:text => /Card::BadQuery/)
|
13
19
|
end
|
14
20
|
|
15
21
|
end
|
@@ -6,6 +6,6 @@ describe Card::Set::Type::PlainText do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
it "should have special content that escapes HTML" do
|
9
|
-
render_card(:core, :
|
9
|
+
render_card(:core, type: 'Plain Text', content: "<b></b>").should == '<b></b>'
|
10
10
|
end
|
11
11
|
end
|
@@ -1,65 +1,69 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
describe Card::Set::Type::Pointer do
|
3
3
|
describe "item_names" do
|
4
|
-
it
|
5
|
-
Card.new(:
|
4
|
+
it 'should return array of names of items referred to by a pointer' do
|
5
|
+
card = Card.new(type: 'Pointer', content:"[[Busy]]\n[[Body]]")
|
6
|
+
card.item_names.should == ['Busy', 'Body']
|
6
7
|
end
|
7
8
|
end
|
8
9
|
|
9
|
-
describe
|
10
|
-
it
|
11
|
-
pointer = Card.new :
|
12
|
-
pointer.add_item
|
13
|
-
pointer.content.should ==
|
10
|
+
describe 'add_item' do
|
11
|
+
it 'add to empty ref list' do
|
12
|
+
pointer = Card.new name: 'tp', type: 'pointer', content: ''
|
13
|
+
pointer.add_item 'John'
|
14
|
+
pointer.content.should == '[[John]]'
|
14
15
|
end
|
15
16
|
|
16
|
-
it
|
17
|
-
pointer = Card.new :
|
18
|
-
pointer.add_item
|
17
|
+
it 'add to existing ref list' do
|
18
|
+
pointer = Card.new name: 'tp', type: 'pointer', content: '[[Jane]]'
|
19
|
+
pointer.add_item 'John'
|
19
20
|
pointer.content.should == "[[Jane]]\n[[John]]"
|
20
21
|
end
|
21
22
|
|
22
|
-
it
|
23
|
-
pointer = Card.new :
|
24
|
-
pointer.add_item
|
25
|
-
pointer.content.should ==
|
23
|
+
it 'not add duplicate entries' do
|
24
|
+
pointer = Card.new name: 'tp', type: 'pointer', content: '[[Jane]]'
|
25
|
+
pointer.add_item 'Jane'
|
26
|
+
pointer.content.should == '[[Jane]]'
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
29
|
-
describe
|
30
|
-
it
|
31
|
-
|
32
|
-
pointer.
|
33
|
-
pointer.
|
30
|
+
describe 'drop_item' do
|
31
|
+
it 'remove the link' do
|
32
|
+
content = "[[Jane]]\n[[John]]"
|
33
|
+
pointer = Card.new name: 'tp', type: 'pointer', content: content
|
34
|
+
pointer.drop_item 'Jane'
|
35
|
+
pointer.content.should == '[[John]]'
|
34
36
|
end
|
35
37
|
|
36
|
-
it
|
37
|
-
|
38
|
-
pointer.
|
39
|
-
pointer.
|
38
|
+
it 'not fail on non-existent reference' do
|
39
|
+
content = "[[Jane]]\n[[John]]"
|
40
|
+
pointer = Card.new name: 'tp', type: 'pointer', content: content
|
41
|
+
pointer.drop_item 'Bigfoot'
|
42
|
+
pointer.content.should == content
|
40
43
|
end
|
41
44
|
|
42
|
-
it
|
43
|
-
pointer = Card.new :
|
44
|
-
pointer.drop_item
|
45
|
-
pointer.content.should ==
|
45
|
+
it 'remove the last link' do
|
46
|
+
pointer = Card.new name: 'tp', type: 'pointer', content: '[[Jane]]'
|
47
|
+
pointer.drop_item 'Jane'
|
48
|
+
pointer.content.should == ''
|
46
49
|
end
|
47
50
|
end
|
48
51
|
|
49
52
|
|
50
53
|
|
51
|
-
describe
|
54
|
+
describe 'html' do
|
52
55
|
before do
|
53
56
|
Card::Auth.as_bot do
|
54
|
-
@card_name =
|
55
|
-
@pointer = Card.create :
|
57
|
+
@card_name = 'nonexistingcardmustnotexistthisistherule'
|
58
|
+
@pointer = Card.create name: 'tp', type: 'pointer', content: "[[#{@card_name}]]"
|
56
59
|
# similar tests for an inherited type of Pointer
|
57
|
-
@my_list = Card.create! :
|
58
|
-
Card.create :
|
59
|
-
@inherit_pointer = Card.create :
|
60
|
+
@my_list = Card.create! name: 'MyList', type_id: Card::CardtypeID
|
61
|
+
Card.create name: 'MyList+*type+*default', type_id: Card::PointerID
|
62
|
+
@inherit_pointer = Card.create name: 'ip', type_id: @my_list.id, content: "[[#{@card_name}]]"
|
60
63
|
end
|
61
64
|
end
|
62
|
-
|
65
|
+
|
66
|
+
it 'should include nonexisting card in radio options' do
|
63
67
|
common_html = 'input[class="pointer-radio-button"][checked="checked"][type="radio"][value="nonexistingcardmustnotexistthisistherule"][id="pointer-radio-nonexistingcardmustnotexistthisistherule"]'
|
64
68
|
option_html = common_html + '[name="pointer_radio_button-tp"]'
|
65
69
|
assert_view_select @pointer.format.render_radio, option_html
|
@@ -67,31 +71,35 @@ describe Card::Set::Type::Pointer do
|
|
67
71
|
assert_view_select @inherit_pointer.format.render_radio, option_html
|
68
72
|
end
|
69
73
|
|
70
|
-
it
|
74
|
+
it 'should include nonexisting card in checkbox options' do
|
71
75
|
option_html = 'input[class="pointer-checkbox-button"][checked="checked"][name="pointer_checkbox"][type="checkbox"][value="nonexistingcardmustnotexistthisistherule"][id="pointer-checkbox-nonexistingcardmustnotexistthisistherule"]'
|
72
76
|
assert_view_select @pointer.format.render_checkbox, option_html
|
73
77
|
assert_view_select @inherit_pointer.format.render_checkbox, option_html
|
74
78
|
end
|
75
|
-
|
79
|
+
|
80
|
+
it 'should include nonexisting card in select options' do
|
76
81
|
option_html = "option[value='#{@card_name}'][selected='selected']"
|
77
82
|
assert_view_select @pointer.format.render_select, option_html, @card_name
|
78
83
|
assert_view_select @inherit_pointer.format.render_select, option_html, @card_name
|
79
84
|
end
|
80
|
-
|
85
|
+
|
86
|
+
it 'should include nonexisting card in multiselect options' do
|
81
87
|
option_html = "option[value='#{@card_name}'][selected='selected']"
|
82
88
|
assert_view_select @pointer.format.render_multiselect, option_html, @card_name
|
83
89
|
assert_view_select @inherit_pointer.format.render_multiselect, option_html, @card_name
|
84
90
|
end
|
85
91
|
end
|
86
|
-
|
92
|
+
|
93
|
+
describe 'css' do
|
87
94
|
before do
|
88
95
|
@css = '#box { display: block }'
|
89
|
-
Card.create :
|
96
|
+
Card.create name: 'my css', content: @css
|
90
97
|
end
|
91
|
-
it
|
92
|
-
css_list = render_card
|
93
|
-
{ :
|
94
|
-
:
|
98
|
+
it 'should render CSS of items' do
|
99
|
+
css_list = render_card(:content,
|
100
|
+
{ type: Card::PointerID, name: 'my style list', content: '[[my css]]' },
|
101
|
+
format: :css
|
102
|
+
)
|
95
103
|
# css_list.should =~ /STYLE GROUP\: \"my style list\"/
|
96
104
|
# css_list.should =~ /Style Card\: \"my css\"/
|
97
105
|
css_list.should =~ /#{ Regexp.escape @css }/
|
@@ -100,7 +108,9 @@ describe Card::Set::Type::Pointer do
|
|
100
108
|
|
101
109
|
describe '#standardize_item' do
|
102
110
|
it "should handle unlinked items" do
|
103
|
-
pointer1 = Card.create!
|
111
|
+
pointer1 = Card.create!(
|
112
|
+
name: 'pointer1', type: 'Pointer', content: 'bracketme'
|
113
|
+
)
|
104
114
|
pointer1.content.should == '[[bracketme]]'
|
105
115
|
end
|
106
116
|
end
|
@@ -1,24 +1,34 @@
|
|
1
|
-
#
|
2
|
-
# The Machine module together with the MachineInput module implements a kind of
|
3
|
-
# It handles a collection of input cards to generate
|
4
|
-
# If one of the input cards is changed the
|
5
|
-
#
|
6
|
-
#
|
7
|
-
|
8
|
-
#
|
9
|
-
#
|
1
|
+
# WHAT IS THIS?
|
2
|
+
# The Machine module together with the MachineInput module implements a kind of
|
3
|
+
# observer pattern. It handles a collection of input cards to generate an
|
4
|
+
# outputcard (default is a file card). If one of the input cards is changed the
|
5
|
+
# output card will be updated.
|
6
|
+
#
|
7
|
+
# The classic example: A style card observes a collection of css and sccs card
|
8
|
+
# to generate a file card with a css file containg the assembled compressed css.
|
9
|
+
#
|
10
|
+
# HOW TO USE IT?
|
11
|
+
# Include the Machine module in the card set that is supposed to produce the
|
12
|
+
# output card. If the output card should be autmatically updated when a input
|
13
|
+
# card is changed the input card has to be in a set that includes the
|
14
|
+
# MachineInput module.
|
15
|
+
#
|
10
16
|
# The default machine
|
11
|
-
# - uses its item cards as input cards or the card itself if there are no item
|
12
|
-
#
|
17
|
+
# - uses its item cards as input cards or the card itself if there are no item
|
18
|
+
# cards;
|
19
|
+
# - can be changed by passing a block to collect_input_cards
|
13
20
|
# - takes the raw view of the input cards to generate the output;
|
14
|
-
#
|
21
|
+
# - can be changed by passing a block to machine_input (in the input card set)
|
15
22
|
# - stores the output as a .txt file in the "+machine output" card;
|
16
|
-
#
|
17
|
-
|
18
|
-
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
23
|
+
# - can be changed by passing a filetype and/or a block to
|
24
|
+
# store_machine_output
|
25
|
+
#
|
26
|
+
#
|
27
|
+
# HOW DOES IT WORK?
|
28
|
+
# Machine cards have a "+machine input" and a "+machine output" card. The
|
29
|
+
# "+machine input" card is a pointer to all input cards. Including the
|
30
|
+
# MachineInput module creates an "on: save" event that runs the machines of
|
31
|
+
# all cards that are linked to that card via the +machine input pointer.
|
22
32
|
|
23
33
|
|
24
34
|
|
@@ -49,12 +59,12 @@ class Card
|
|
49
59
|
|
50
60
|
def self.included(host_class)
|
51
61
|
host_class.extend( ClassMethods )
|
52
|
-
host_class.output_config = { :
|
62
|
+
host_class.output_config = { filetype: 'txt' }
|
53
63
|
|
54
64
|
|
55
65
|
if Codename[:machine_output] # for compatibility with old migrations
|
56
|
-
host_class.card_accessor :machine_output, :
|
57
|
-
host_class.card_accessor :machine_input, :
|
66
|
+
host_class.card_accessor :machine_output, type: :file
|
67
|
+
host_class.card_accessor :machine_input, type: :pointer
|
58
68
|
|
59
69
|
# define default machine behaviour
|
60
70
|
host_class.collect_input_cards do
|
@@ -66,15 +76,15 @@ class Card
|
|
66
76
|
loop_limit = 5
|
67
77
|
while items.size > 0
|
68
78
|
item = items.shift
|
69
|
-
if item.trash
|
70
|
-
|
71
|
-
|
79
|
+
next if item.trash
|
80
|
+
next if already_extended[item.id].to_i > loop_limit
|
81
|
+
if item.item_cards == [item] # no pointer card
|
72
82
|
new_input << item
|
73
83
|
else
|
74
84
|
items.insert(0, item.item_cards)
|
75
85
|
items.flatten!
|
76
86
|
new_input << item if item != self
|
77
|
-
already_extended[item] = already_extended[item]
|
87
|
+
already_extended[item] = already_extended[item].to_i + 1
|
78
88
|
end
|
79
89
|
end
|
80
90
|
new_input
|
@@ -83,7 +93,8 @@ class Card
|
|
83
93
|
host_class.prepare_machine_input {}
|
84
94
|
host_class.machine_engine { |input| input }
|
85
95
|
host_class.store_machine_output do |output|
|
86
|
-
|
96
|
+
filetype = host_class.output_config[:filetype]
|
97
|
+
file = Tempfile.new [ id.to_s, ".#{filetype}" ]
|
87
98
|
file.write output
|
88
99
|
file.rewind
|
89
100
|
Card::Auth.as_bot do
|
@@ -102,7 +113,11 @@ class Card
|
|
102
113
|
end
|
103
114
|
end
|
104
115
|
|
105
|
-
|
116
|
+
event_suffix = host_class.name.gsub ':', '_'
|
117
|
+
host_class.event(
|
118
|
+
"reset_machine_output_#{ event_suffix }".to_sym,
|
119
|
+
after: :store_subcards, on: :save
|
120
|
+
) do
|
106
121
|
reset_machine_output!
|
107
122
|
end
|
108
123
|
end
|
@@ -169,7 +184,8 @@ class Card
|
|
169
184
|
|
170
185
|
def machine_output_url
|
171
186
|
ensure_machine_output
|
172
|
-
machine_output_card.file.url #(:default, :
|
187
|
+
machine_output_card.file.url #(:default, timestamp: false)
|
188
|
+
# to get rid of additional number in url
|
173
189
|
end
|
174
190
|
|
175
191
|
def machine_output_path
|
@@ -178,7 +194,8 @@ class Card
|
|
178
194
|
end
|
179
195
|
|
180
196
|
def ensure_machine_output
|
181
|
-
|
197
|
+
output = fetch trait: :machine_output
|
198
|
+
if !output || !output.selected_content_action_id
|
182
199
|
update_machine_output
|
183
200
|
end
|
184
201
|
end
|
@@ -2,34 +2,58 @@ class Card
|
|
2
2
|
module MachineInput
|
3
3
|
module ClassMethods
|
4
4
|
attr_accessor :machines_wql
|
5
|
-
|
5
|
+
|
6
6
|
def machine_input_for args
|
7
7
|
@machines_wql = args
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def machine_input &block
|
11
11
|
define_method :machine_input, block
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def self.included host_class
|
16
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
|
-
|
22
|
-
|
21
|
+
|
22
|
+
event_suffix = host_class.name.gsub ':', '_'
|
23
|
+
|
24
|
+
host_class.event(
|
25
|
+
"after_machine_input_updated_#{ event_suffix }".to_sym,
|
26
|
+
after: :extend, on: :save
|
27
|
+
) do
|
28
|
+
|
29
|
+
wql_statement = { right_plus: [
|
30
|
+
{ codename: "machine_input" },
|
31
|
+
{ link_to: name}
|
32
|
+
]}.merge(host_class.machines_wql)
|
33
|
+
machines = Card.search(wql_statement)
|
23
34
|
machines.each do |item|
|
24
35
|
item.reset_machine_output! if item.kind_of? Machine
|
25
36
|
end
|
26
37
|
end
|
27
|
-
|
28
|
-
host_class.event
|
29
|
-
|
38
|
+
|
39
|
+
host_class.event(
|
40
|
+
"before_machine_input_deleted_#{ event_suffix }".to_sym,
|
41
|
+
after: :approve, on: :delete
|
42
|
+
) do
|
43
|
+
|
44
|
+
@involved_machines = Card.search(
|
45
|
+
{right_plus: [
|
46
|
+
{codename: "machine_input"},
|
47
|
+
{link_to: name}
|
48
|
+
]}.merge(host_class.machines_wql)
|
49
|
+
)
|
30
50
|
end
|
31
|
-
|
32
|
-
host_class.event
|
51
|
+
|
52
|
+
host_class.event(
|
53
|
+
"after_machine_input_deleted_#{ event_suffix }".to_sym,
|
54
|
+
after: :store_subcards, on: :delete
|
55
|
+
) do
|
56
|
+
|
33
57
|
@involved_machines.each do |item|
|
34
58
|
item.reset_machine_output! if item.kind_of? Machine
|
35
59
|
end
|