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
@@ -0,0 +1,228 @@
|
|
1
|
+
class Card
|
2
|
+
class Query
|
3
|
+
class SqlStatement
|
4
|
+
def initialize query
|
5
|
+
@query = query
|
6
|
+
@mods = query.mods
|
7
|
+
end
|
8
|
+
|
9
|
+
def build
|
10
|
+
@fields = fields
|
11
|
+
@tables = tables
|
12
|
+
@joins = joins @query.all_joins
|
13
|
+
@where = where
|
14
|
+
@group = group
|
15
|
+
@order = order
|
16
|
+
@limit_and_offset = limit_and_offset
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_s
|
21
|
+
["SELECT DISTINCT #{@fields}",
|
22
|
+
"FROM #{@tables}",
|
23
|
+
@joins,
|
24
|
+
@where,
|
25
|
+
@group,
|
26
|
+
@order,
|
27
|
+
@limit_and_offset
|
28
|
+
].compact * "\n"
|
29
|
+
end
|
30
|
+
|
31
|
+
def tables
|
32
|
+
"cards #{@query.table_alias}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def fields
|
36
|
+
table = @query.table_alias
|
37
|
+
field = @mods[:return]
|
38
|
+
field = field.blank? ? :card : field.to_sym
|
39
|
+
field = full_field(table, field)
|
40
|
+
[field, @mods[:sort_join_field]].compact * ', '
|
41
|
+
end
|
42
|
+
|
43
|
+
def full_field table, field
|
44
|
+
case field
|
45
|
+
when :raw then "#{table}.*"
|
46
|
+
when :card then "#{table}.name"
|
47
|
+
when :content then "#{table}.db_content"
|
48
|
+
when :count
|
49
|
+
"coalesce(count( distinct #{table}.id),0) as count"
|
50
|
+
else
|
51
|
+
if ATTRIBUTES[field.to_sym] == :basic
|
52
|
+
"#{table}.#{field}"
|
53
|
+
else
|
54
|
+
safe_sql field
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def joins join_list
|
60
|
+
clauses = []
|
61
|
+
join_list.each do |join|
|
62
|
+
clauses << join_on_clause(join)
|
63
|
+
clauses << joins(deeper_joins join) unless join.left?
|
64
|
+
end
|
65
|
+
clauses.flatten * "\n"
|
66
|
+
end
|
67
|
+
|
68
|
+
def join_on_clause join
|
69
|
+
[join_clause(join), 'ON', on_clause(join)].join ' '
|
70
|
+
end
|
71
|
+
|
72
|
+
def deeper_joins join
|
73
|
+
deeper_joins = join.subjoins
|
74
|
+
deeper_joins += join.to.all_joins if join.to.is_a? Card::Query
|
75
|
+
deeper_joins
|
76
|
+
end
|
77
|
+
|
78
|
+
def join_clause join
|
79
|
+
to_table = join.to_table
|
80
|
+
to_table = "(#{to_table.sql})" if to_table.is_a? Card::Query
|
81
|
+
table_segment = [to_table, join.to_alias].join ' '
|
82
|
+
|
83
|
+
if join.left?
|
84
|
+
djoins = deeper_joins(join)
|
85
|
+
unless djoins.empty?
|
86
|
+
table_segment = "(#{table_segment} #{joins djoins})"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
[join.side, 'JOIN', table_segment].compact.join ' '
|
90
|
+
end
|
91
|
+
|
92
|
+
def on_clause join
|
93
|
+
on_conditions = join.conditions
|
94
|
+
on_ids = [
|
95
|
+
"#{join.from_alias}.#{join.from_field}",
|
96
|
+
"#{join.to_alias}.#{join.to_field}"
|
97
|
+
].join ' = '
|
98
|
+
on_conditions.unshift on_ids
|
99
|
+
if join.to.is_a? Card::Query
|
100
|
+
if join.to.conditions_on_join == join
|
101
|
+
on_conditions.push query_conditions(join.to)
|
102
|
+
end
|
103
|
+
on_conditions.push standard_conditions(join.to)
|
104
|
+
end
|
105
|
+
basic_conditions(on_conditions) * ' AND '
|
106
|
+
end
|
107
|
+
|
108
|
+
def where
|
109
|
+
conditions = [query_conditions(@query), standard_conditions(@query)]
|
110
|
+
conditions = conditions.reject(&:blank?).join "\nAND "
|
111
|
+
"WHERE #{conditions}" unless conditions.blank?
|
112
|
+
end
|
113
|
+
|
114
|
+
def query_conditions query
|
115
|
+
cond_list = basic_conditions query.conditions
|
116
|
+
cond_list +=
|
117
|
+
query.subqueries.map do |subquery|
|
118
|
+
next if subquery.conditions_on_join
|
119
|
+
query_conditions subquery
|
120
|
+
end
|
121
|
+
cond_list.reject!(&:blank?)
|
122
|
+
|
123
|
+
if cond_list.size > 1
|
124
|
+
cond_list = cond_list.join "\n#{query.current_conjunction.upcase} "
|
125
|
+
"(#{cond_list})"
|
126
|
+
else
|
127
|
+
cond_list.join
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def basic_conditions conditions
|
132
|
+
conditions.map do |condition|
|
133
|
+
if condition.is_a? String
|
134
|
+
condition
|
135
|
+
else
|
136
|
+
field, val = condition
|
137
|
+
val.to_sql field
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def standard_conditions query
|
143
|
+
[trash_condition(query), permission_conditions(query)].compact * ' AND '
|
144
|
+
end
|
145
|
+
|
146
|
+
def trash_condition query
|
147
|
+
"#{query.table_alias}.trash is false"
|
148
|
+
end
|
149
|
+
|
150
|
+
def permission_conditions query
|
151
|
+
return if Auth.always_ok?
|
152
|
+
read_rules = Auth.as_card.read_rules
|
153
|
+
read_rule_list = read_rules.nil? ? 1 : read_rules.join(',')
|
154
|
+
"#{query.table_alias}.read_rule_id IN (#{read_rule_list})"
|
155
|
+
end
|
156
|
+
|
157
|
+
def group
|
158
|
+
group = @mods[:group]
|
159
|
+
"GROUP BY #{safe_sql group}" if group.present?
|
160
|
+
end
|
161
|
+
|
162
|
+
def limit_and_offset
|
163
|
+
full_syntax do
|
164
|
+
limit = @mods[:limit]
|
165
|
+
offset = @mods[:offset]
|
166
|
+
if limit.to_i > 0
|
167
|
+
string = "LIMIT #{limit.to_i} "
|
168
|
+
string += "OFFSET #{offset.to_i} " if offset.present?
|
169
|
+
string
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
def full_syntax
|
175
|
+
return if @query.superquery || @mods[:return] == 'count'
|
176
|
+
yield
|
177
|
+
end
|
178
|
+
|
179
|
+
def order
|
180
|
+
full_syntax do
|
181
|
+
order_key ||= @mods[:sort].blank? ? 'update' : @mods[:sort]
|
182
|
+
|
183
|
+
order_directives = [order_key].flatten.map do |key|
|
184
|
+
dir = if @mods[:dir].blank?
|
185
|
+
DEFAULT_ORDER_DIRS[key.to_sym] || 'asc'
|
186
|
+
else
|
187
|
+
safe_sql @mods[:dir]
|
188
|
+
end
|
189
|
+
sort_field key, @mods[:sort_as], dir
|
190
|
+
end.join ', '
|
191
|
+
"ORDER BY #{order_directives}"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
def sort_field key, as, dir
|
196
|
+
table = @query.table_alias
|
197
|
+
order_field =
|
198
|
+
case key
|
199
|
+
when 'id' then "#{table}.id"
|
200
|
+
when 'update' then "#{table}.updated_at"
|
201
|
+
when 'create' then "#{table}.created_at"
|
202
|
+
when /^(name|alpha)$/ then "LOWER( #{table}.key )"
|
203
|
+
when 'content' then "#{table}.db_content"
|
204
|
+
when 'relevance' then "#{table}.updated_at" # deprecated
|
205
|
+
else
|
206
|
+
safe_sql(key)
|
207
|
+
end
|
208
|
+
order_field = "CAST(#{order_field} AS #{cast_type(safe_sql as)})" if as
|
209
|
+
@fields += ", #{order_field}"
|
210
|
+
"#{order_field} #{dir}"
|
211
|
+
end
|
212
|
+
|
213
|
+
def safe_sql(txt)
|
214
|
+
txt = txt.to_s
|
215
|
+
if txt.match(/[^\w\*\(\)\s\.\,]/)
|
216
|
+
fail "WQL contains disallowed characters: #{txt}"
|
217
|
+
else
|
218
|
+
txt
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
def cast_type(type)
|
223
|
+
cxn ||= ActiveRecord::Base.connection
|
224
|
+
(val = cxn.cast_types[type.to_sym]) ? val[:name] : safe_sql(type)
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
class Card
|
2
|
+
class Query
|
3
|
+
class Value
|
4
|
+
|
5
|
+
include Clause
|
6
|
+
|
7
|
+
attr_reader :query, :operator, :value
|
8
|
+
|
9
|
+
def initialize rawvalue, query
|
10
|
+
@query = query
|
11
|
+
@operator, @value = parse_value rawvalue
|
12
|
+
canonicalize_operator
|
13
|
+
end
|
14
|
+
|
15
|
+
def parse_value rawvalue
|
16
|
+
operator =
|
17
|
+
case rawvalue
|
18
|
+
when Array; rawvalue.shift
|
19
|
+
when String; '='
|
20
|
+
when Integer; '='
|
21
|
+
else raise("Invalid Condition Clause #{rawvalue}.inspect}")
|
22
|
+
end
|
23
|
+
[operator, rawvalue]
|
24
|
+
end
|
25
|
+
|
26
|
+
def canonicalize_operator
|
27
|
+
if target = OPERATORS[@operator.to_s]
|
28
|
+
@operator = target
|
29
|
+
else
|
30
|
+
fail BadQuery, "Invalid Operator #{@operator}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
def sqlize v
|
36
|
+
case v
|
37
|
+
when Query; v.to_sql
|
38
|
+
when Array; "(" + v.flatten.collect {|x| sqlize(x)}.join(',') + ")"
|
39
|
+
else quote(v.to_s)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_sql field
|
44
|
+
op,v = @operator, @value
|
45
|
+
table = @query.table_alias
|
46
|
+
|
47
|
+
field, v = case field.to_s
|
48
|
+
when "name"
|
49
|
+
["#{table}.key", [v].flatten.map(&:to_name).map(&:key)]
|
50
|
+
when "content"
|
51
|
+
["#{table}.db_content", v]
|
52
|
+
else
|
53
|
+
["#{table}.#{safe_sql field}", v]
|
54
|
+
end
|
55
|
+
|
56
|
+
v = v[0] if Array===v && v.length==1 && op != 'in'
|
57
|
+
if op=='~'
|
58
|
+
cxn, v = match_prep(v)
|
59
|
+
%{#{field} #{cxn.match(sqlize(v))}}
|
60
|
+
else
|
61
|
+
"#{field} #{op} #{sqlize(v)}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/card/reference.rb
CHANGED
@@ -12,22 +12,22 @@ class Card::Reference < ActiveRecord::Base
|
|
12
12
|
class << self
|
13
13
|
|
14
14
|
def delete_all_from card
|
15
|
-
delete_all :
|
15
|
+
delete_all referer_id: card.id
|
16
16
|
end
|
17
17
|
|
18
18
|
def delete_all_to card
|
19
|
-
where( :
|
19
|
+
where( referee_id: card.id ).update_all present: 0, referee_id: nil
|
20
20
|
end
|
21
21
|
|
22
22
|
def update_existing_key card, name=nil
|
23
23
|
key = (name || card.name).to_name.key
|
24
|
-
where( :
|
24
|
+
where( referee_key: key ).update_all present: 1, referee_id: card.id
|
25
25
|
end
|
26
26
|
|
27
27
|
def update_on_rename card, newname, update_referers=false
|
28
28
|
if update_referers
|
29
29
|
# not currentlt needed because references are deleted and re-created in the process of adding new revision
|
30
|
-
#where( :
|
30
|
+
#where( referee_id: card.id ).update_all referee_key: newname.to_name.key
|
31
31
|
else
|
32
32
|
delete_all_to card
|
33
33
|
end
|
@@ -41,7 +41,7 @@ class Card::Reference < ActiveRecord::Base
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def repair_missing_referees
|
44
|
-
joins('LEFT JOIN cards ON card_references.referee_id = cards.id').where('(cards.id IS NULL OR cards.trash IS TRUE) AND referee_id IS NOT NULL').update_all :
|
44
|
+
joins('LEFT JOIN cards ON card_references.referee_id = cards.id').where('(cards.id IS NULL OR cards.trash IS TRUE) AND referee_id IS NOT NULL').update_all referee_id: nil
|
45
45
|
end
|
46
46
|
|
47
47
|
def delete_missing_referers
|
@@ -51,7 +51,7 @@ class Card::Reference < ActiveRecord::Base
|
|
51
51
|
def repair_all
|
52
52
|
delete_missing_referers
|
53
53
|
|
54
|
-
Card.where(:
|
54
|
+
Card.where(trash: false).find_each do |card|
|
55
55
|
Rails.logger.info "\nRepairing references for '#{card.name}' (id: #{card.id}) ... "
|
56
56
|
card.update_references
|
57
57
|
end
|
data/lib/card/set.rb
CHANGED
@@ -6,7 +6,7 @@ class Card
|
|
6
6
|
module Set
|
7
7
|
|
8
8
|
mattr_accessor :modules, :traits
|
9
|
-
@@modules = { :
|
9
|
+
@@modules = { base: [], base_format: {}, nonbase: {}, nonbase_format: {} }
|
10
10
|
|
11
11
|
|
12
12
|
=begin
|
@@ -99,7 +99,7 @@ class Card
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def alias_block view, args
|
102
|
-
opts = Hash===args[0] ? args.shift : { :
|
102
|
+
opts = Hash===args[0] ? args.shift : { view: args.shift }
|
103
103
|
opts[:mod] ||= self
|
104
104
|
opts[:view] ||= view
|
105
105
|
views[ opts[:mod] ][ opts[:view] ] or fail
|
@@ -168,9 +168,9 @@ class Card
|
|
168
168
|
value = self.instance_variable_get("@#{name}")
|
169
169
|
hash[name] =
|
170
170
|
if Symbol === value # ActiveJob doesn't accept symbols as arguments
|
171
|
-
{ :
|
171
|
+
{ value: value.to_s, symbol: true }
|
172
172
|
else
|
173
|
-
{ :
|
173
|
+
{ value: value }
|
174
174
|
end
|
175
175
|
end
|
176
176
|
Object.const_get(event.to_s.camelize).perform_later(self, s_attr)
|
@@ -220,17 +220,17 @@ class Card
|
|
220
220
|
#
|
221
221
|
def card_accessor *args
|
222
222
|
options = args.extract_options!
|
223
|
-
add_traits args, options.merge( :
|
223
|
+
add_traits args, options.merge( reader: true, writer: true )
|
224
224
|
end
|
225
225
|
|
226
226
|
def card_reader *args
|
227
227
|
options = args.extract_options!
|
228
|
-
add_traits args, options.merge( :
|
228
|
+
add_traits args, options.merge( reader: true )
|
229
229
|
end
|
230
230
|
|
231
231
|
def card_writer *args
|
232
232
|
options = args.extract_options!
|
233
|
-
add_traits args, options.merge( :
|
233
|
+
add_traits args, options.merge( writer: true )
|
234
234
|
end
|
235
235
|
|
236
236
|
|
@@ -383,7 +383,7 @@ EOF
|
|
383
383
|
if object_method = opts.delete(kind)
|
384
384
|
this_set_module = self
|
385
385
|
Card.class_eval do
|
386
|
-
set_callback object_method, kind, event, :
|
386
|
+
set_callback object_method, kind, event, prepend: true, if: proc { |c|
|
387
387
|
c.singleton_class.include?( this_set_module ) and c.event_applies? opts
|
388
388
|
}
|
389
389
|
end
|
@@ -401,8 +401,8 @@ EOF
|
|
401
401
|
# raise "Can't define card traits on all set" if mod == Card
|
402
402
|
mod_traits = get_traits mod
|
403
403
|
|
404
|
-
new_opts = options[:type] ? {:
|
405
|
-
new_opts.merge!( {:
|
404
|
+
new_opts = options[:type] ? {type: options[:type]} : {}
|
405
|
+
new_opts.merge!( {content: options[:default]} ) if options[:default]
|
406
406
|
|
407
407
|
args.each do |trait|
|
408
408
|
define_trait_card trait, new_opts
|
@@ -416,7 +416,7 @@ EOF
|
|
416
416
|
def define_trait_card trait, opts
|
417
417
|
define_method "#{trait}_card" do
|
418
418
|
trait_var "@#{trait}_card" do
|
419
|
-
fetch :trait
|
419
|
+
fetch trait: trait.to_sym, new: opts.clone
|
420
420
|
end
|
421
421
|
end
|
422
422
|
end
|
@@ -433,7 +433,7 @@ EOF
|
|
433
433
|
define_method "#{trait}=" do |value|
|
434
434
|
card = send "#{trait}_card"
|
435
435
|
self.subcards ||= {}
|
436
|
-
self.subcards[card.name] = {:
|
436
|
+
self.subcards[card.name] = {type_id: card.type_id, content: value }
|
437
437
|
instance_variable_set "@#{trait}", value
|
438
438
|
end
|
439
439
|
end
|
data/lib/card/set_pattern.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
class Card
|
2
2
|
|
3
3
|
class SetPattern
|
4
|
-
|
4
|
+
|
5
5
|
class << self
|
6
6
|
attr_accessor :pattern_code, :pattern_id, :junction_only, :assigns_type, :anchorless, :anchor_parts_count
|
7
|
-
|
7
|
+
|
8
8
|
def card_keys
|
9
9
|
@@card_keys ||= Card.set_patterns.inject({}) do |hash, set_pattern|
|
10
|
-
card_key = Card.fetch( set_pattern.pattern_code.to_sym, :
|
10
|
+
card_key = Card.fetch( set_pattern.pattern_code.to_sym, skip_modules: true ).key
|
11
11
|
hash[ card_key ] = true
|
12
12
|
hash
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def find pattern_code
|
17
|
-
Card.set_patterns.find { |sub| sub.pattern_code == pattern_code }
|
17
|
+
Card.set_patterns.find { |sub| sub.pattern_code == pattern_code }
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
def junction_only?
|
21
21
|
!!junction_only
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def anchorless?
|
25
25
|
!!anchorless
|
26
26
|
end
|
@@ -30,7 +30,7 @@ class Card
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def pattern
|
33
|
-
Card.fetch(self.pattern_id, :
|
33
|
+
Card.fetch(self.pattern_id, skip_modules: true).cardname
|
34
34
|
end
|
35
35
|
|
36
36
|
def register pattern_code, opts={}
|
@@ -48,7 +48,7 @@ class Card
|
|
48
48
|
junction_only? ? card.cardname.junction? : true
|
49
49
|
end
|
50
50
|
|
51
|
-
def anchor_parts_count
|
51
|
+
def anchor_parts_count
|
52
52
|
@anchor_parts_count ||= ( anchorless? ? 0 : 1 )
|
53
53
|
end
|
54
54
|
|