card 1.101.4 → 1.101.5
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/config/i18n-tasks.yml +0 -5
- data/config/initializers/01_core_extensions/array.rb +2 -1
- data/config/initializers/01_core_extensions/hash.rb +1 -0
- data/config/initializers/01_core_extensions/object.rb +15 -11
- data/config/initializers/02_patches/active_job.rb +1 -1
- data/config/initializers/02_patches/active_record.rb +1 -3
- data/config/initializers/02_patches/better_errors.rb +1 -3
- data/config/initializers/02_patches/kaminari.rb +2 -2
- data/config/initializers/deck_config.rb +1 -1
- data/config/initializers/inflections.rb +1 -0
- data/config/initializers/internationalization.rb +23 -21
- data/config/initializers/mime_types.rb +1 -0
- data/config/initializers/notification.rb +1 -0
- data/config/initializers/patches.rb +6 -5
- data/config/locales/en.yml +10 -16
- data/db/migrate/20110511221913_require_earlier_migrations.rb +1 -0
- data/db/migrate/20121111025347_require_1_10_migrations.rb +1 -0
- data/db/migrate/20121118114000_split_link_type.rb +1 -0
- data/db/migrate/20121118115000_update_link_type.rb +1 -0
- data/db/migrate/20130106052640_table_cleanup.rb +2 -2
- data/db/migrate/20130109015336_trunk_left.rb +1 -0
- data/db/migrate/20130411210957_update_codenames.rb +1 -0
- data/db/migrate/20140822073704_create_new_revision_tables.rb +1 -0
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +9 -3
- data/db/migrate/20141216053032_better_index_names.rb +9 -6
- data/db/migrate/20170908114442_create_delayed_jobs.rb +1 -1
- data/db/migrate/20170908114452_increase_text_size_for_delayed_jobs.rb +1 -1
- data/db/migrate/20180514152037_add_card_virtuals_table.rb +1 -1
- data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +2 -1
- data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +9 -9
- data/db/migrate_core_cards/20130419215612_import_help_text.rb +3 -2
- data/db/migrate_core_cards/20130823192433_add_style_cards.rb +5 -5
- data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +3 -2
- data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +2 -4
- data/db/migrate_core_cards/20131016172445_common_css_patch.rb +1 -3
- data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +1 -3
- data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +12 -8
- data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +2 -4
- data/db/migrate_core_cards/20140512155840_add_script_cards.rb +16 -9
- data/db/migrate_core_cards/20140629222005_add_email_cards.rb +19 -11
- data/db/migrate_core_cards/20140725180118_config_card_updates.rb +1 -1
- data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +1 -1
- data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +1 -1
- data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +2 -0
- data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +4 -2
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +1 -1
- data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +3 -4
- data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +8 -4
- data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +14 -7
- data/db/migrate_core_cards/20150429090551_search_card_context.rb +6 -4
- data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +4 -2
- data/db/migrate_core_cards/20150510031118_fix_skin_codenames.rb +2 -1
- data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +3 -3
- data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +2 -1
- data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +4 -3
- data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +6 -2
- data/db/migrate_core_cards/20150807205221_create_references_for_search_cards.rb +1 -1
- data/db/migrate_core_cards/20150824135418_update_file_history.rb +2 -0
- data/db/migrate_core_cards/20160804112510_reorganize_scripts.rb +1 -1
- data/db/migrate_core_cards/20160811115836_rename_stats_to_admin.rb +1 -0
- data/db/migrate_core_cards/20160914132636_fix_mod_files.rb +2 -0
- data/db/migrate_core_cards/20161102202156_tweak_recaptcha_setting_cards.rb +6 -6
- data/db/migrate_core_cards/20161103154836_update_keys.rb +2 -1
- data/db/migrate_core_cards/20170209132834_email_test_context.rb +2 -0
- data/db/migrate_core_cards/20170314175313_add_notification_event_card.rb +3 -3
- data/db/migrate_core_cards/20170515101262_add_advanced_edit_cards.rb +1 -1
- data/db/migrate_core_cards/20170608200649_add_input_options_codename.rb +1 -1
- data/db/migrate_core_cards/20180712042655_head_rule.rb +3 -4
- data/db/migrate_core_cards/20180905061537_migrate_layouts.rb +4 -4
- data/db/migrate_core_cards/20181120200937_update_layout.rb +1 -1
- data/db/migrate_core_cards/20190320091257_upgrade_recaptcha_to_v3.rb +7 -7
- data/db/migrate_core_cards/20190424100531_update_credit_image.rb +1 -0
- data/db/migrate_core_cards/20190502130029_add_shark_and_help_desk_role.rb +15 -14
- data/db/migrate_core_cards/20190503122739_update_pristine_data.rb +1 -1
- data/db/migrate_core_cards/20190625153616_pointer_overhaul.rb +9 -5
- data/db/migrate_core_cards/20190718140126_add_guides.rb +3 -3
- data/db/migrate_core_cards/20190822093633_move_help_text_to_code.rb +1 -2
- data/db/migrate_core_cards/20190823220018_cleanup_for_decko_1_0.rb +1 -1
- data/db/migrate_core_cards/20190829093961_cardtype_grouping.rb +7 -7
- data/db/migrate_core_cards/20190902193208_input_type.rb +1 -3
- data/db/migrate_core_cards/20190909104250_add_cardtype_input_types.rb +2 -2
- data/db/migrate_core_cards/20191028135243_add_link_editor_to_tiny_mce_config.rb +1 -0
- data/db/migrate_core_cards/20191115160748_history_cleanup.rb +0 -1
- data/db/migrate_core_cards/20191118145629_codename_fixes.rb +1 -2
- data/db/migrate_core_cards/20200821231558_add_nest_list_type.rb +1 -1
- data/db/seed/new/card_actions.yml +2153 -2145
- data/db/seed/new/card_acts.yml +3 -3
- data/db/seed/new/card_references.yml +900 -858
- data/db/seed/new/cards.yml +4869 -4848
- data/db/seed/new/schema_migrations_deck_cards.yml +2 -0
- data/db/seed/test/fixtures/card_actions.yml +3563 -3547
- data/db/seed/test/fixtures/card_acts.yml +675 -675
- data/db/seed/test/fixtures/card_changes.yml +103 -103
- data/db/seed/test/fixtures/card_references.yml +2165 -2123
- data/db/seed/test/fixtures/cards.yml +7862 -7751
- data/db/seed/test/fixtures/schema_migrations_deck_cards.yml +2 -0
- data/db/test_seed.rb +33 -34
- data/lib/card.rb +1 -0
- data/lib/card/auth/token.rb +2 -2
- data/lib/card/cache.rb +2 -1
- data/lib/card/cache/all.rb +5 -0
- data/lib/card/cache/card_class.rb +3 -0
- data/lib/card/codename.rb +1 -1
- data/lib/card/content.rb +4 -8
- data/lib/card/content/chunk.rb +1 -1
- data/lib/card/content/clean.rb +4 -3
- data/lib/card/content/diff.rb +3 -2
- data/lib/card/content/diff/l_c_s/processor.rb +1 -1
- data/lib/card/content/diff/result.rb +1 -0
- data/lib/card/content/parser.rb +2 -2
- data/lib/card/content/truncate.rb +6 -6
- data/lib/card/director.rb +1 -1
- data/lib/card/director/all.rb +2 -2
- data/lib/card/director/card_methods.rb +1 -0
- data/lib/card/director/event_delay.rb +4 -6
- data/lib/card/director/run.rb +2 -0
- data/lib/card/director/stages.rb +3 -2
- data/lib/card/env/location.rb +4 -3
- data/lib/card/fetch.rb +7 -4
- data/lib/card/fetch/all.rb +1 -0
- data/lib/card/fetch/card_class.rb +35 -27
- data/lib/card/fetch/results.rb +9 -0
- data/lib/card/fetch/retrieve.rb +2 -0
- data/lib/card/fetch/store.rb +1 -0
- data/lib/card/format/content.rb +1 -3
- data/lib/card/format/error.rb +6 -1
- data/lib/card/format/method_delegation.rb +10 -2
- data/lib/card/format/nest.rb +2 -1
- data/lib/card/format/nest/fetch.rb +2 -0
- data/lib/card/format/nesting/mode.rb +1 -1
- data/lib/card/format/nesting/subformat.rb +2 -1
- data/lib/card/format/render.rb +2 -2
- data/lib/card/format/wrapper.rb +1 -1
- data/lib/card/lexicon.rb +3 -2
- data/lib/card/mark.rb +17 -15
- data/lib/card/model/save_helper.rb +3 -3
- data/lib/card/name.rb +10 -9
- data/lib/card/name/all.rb +3 -0
- data/lib/card/name/all/descendants.rb +3 -4
- data/lib/card/name/card_class.rb +2 -0
- data/lib/card/name/fields_and_traits.rb +4 -2
- data/lib/card/name/name_variants.rb +0 -1
- data/lib/card/query.rb +17 -17
- data/lib/card/query/card_query/interpretation.rb +1 -0
- data/lib/card/query/card_query/match_attributes.rb +2 -1
- data/lib/card/query/card_query/normalization.rb +1 -0
- data/lib/card/query/card_query/reference_attributes.rb +1 -1
- data/lib/card/query/join.rb +1 -1
- data/lib/card/query/value/match_value.rb +1 -0
- data/lib/card/reference/all.rb +7 -2
- data/lib/card/rule/all.rb +1 -0
- data/lib/card/rule/cache.rb +2 -0
- data/lib/card/set/advanced_api.rb +3 -2
- data/lib/card/set/event.rb +2 -2
- data/lib/card/set/event/all.rb +6 -0
- data/lib/card/set/event/delayed_event.rb +6 -6
- data/lib/card/set/event/options.rb +1 -0
- data/lib/card/set/format/abstract_format/view_definition.rb +1 -0
- data/lib/card/set/format/abstract_format/view_opts.rb +1 -0
- data/lib/card/set/i18n_scope.rb +4 -2
- data/lib/card/set/inheritance.rb +0 -1
- data/lib/card/set/loader.rb +0 -2
- data/lib/card/set/pattern/base.rb +3 -2
- data/lib/card/set/pattern/class_methods.rb +2 -2
- data/lib/card/set/required_field.rb +4 -1
- data/lib/card/setting.rb +3 -0
- data/lib/card/subcards.rb +3 -4
- data/lib/card/tasks/card/file_card_creator/abstract_file_card/ruby_file.rb +1 -1
- data/lib/card/tasks/card/file_card_creator/output_helper.rb +2 -4
- data/lib/card/tasks/card/migrate.rake +2 -2
- data/lib/card/view/cache.rb +6 -8
- data/lib/card/view/cache/cache_action.rb +1 -2
- data/lib/card/view/cache/stub.rb +1 -1
- data/lib/card/view/options.rb +3 -3
- data/lib/card/view/permission.rb +1 -0
- data/lib/cardio.rb +1 -1
- data/lib/cardio/migration.rb +1 -1
- data/lib/cardio/migration/deck_structure.rb +2 -4
- data/lib/cardio/migration/import.rb +2 -2
- data/lib/cardio/migration/import/import_data.rb +1 -0
- data/lib/cardio/mod.rb +1 -0
- data/lib/cardio/mod/load_strategy.rb +2 -4
- data/lib/cardio/mod/loader/set_loader.rb +2 -1
- data/lib/cardio/mod/module_template.rb +1 -0
- data/lib/cardio/modfiles.rb +2 -4
- data/lib/cardio/schema.rb +2 -4
- data/lib/cardio/utils.rb +1 -0
- data/lib/generators/card/format/format_generator.rb +1 -1
- data/lib/generators/card/migration/migration_generator.rb +2 -1
- data/lib/generators/card/mod/mod_generator.rb +3 -2
- data/lib/generators/card/set/set_generator.rb +3 -3
- data/lib/generators/card/template/template_generator.rb +1 -1
- data/mod/admin/set/self/admin.rb +6 -3
- data/mod/admin/set/self/trash.rb +1 -0
- data/mod/admin/spec/set/self/admin_spec.rb +4 -4
- data/mod/core/set/all/abort.rb +5 -5
- data/mod/core/set/all/assign_attributes.rb +5 -8
- data/mod/core/set/all/codename.rb +1 -0
- data/mod/core/set/all/collection.rb +4 -6
- data/mod/core/set/all/content.rb +3 -2
- data/mod/core/set/all/contextual_content.rb +2 -4
- data/mod/core/set/all/name_events.rb +13 -6
- data/mod/core/set/all/reference_events.rb +2 -0
- data/mod/core/set/all/states.rb +3 -3
- data/mod/core/set/all/subcards.rb +1 -1
- data/mod/core/set/all/trash.rb +5 -1
- data/mod/core/set/all/type.rb +4 -2
- data/mod/core/set/all/utils.rb +1 -1
- data/mod/core/spec/set/all/assign_attributes_spec.rb +10 -9
- data/mod/core/spec/set/all/clean_me_spec.rb +19 -4
- data/mod/core/spec/set/all/collection_spec.rb +1 -1
- data/mod/core/spec/set/all/export_spec.rb +1 -0
- data/mod/core/spec/set/all/initialize_spec.rb +11 -11
- metadata +4 -4
@@ -3,6 +3,7 @@
|
|
3
3
|
event :validate_name, :validate, on: :save, changed: :name, when: :no_autoname? do
|
4
4
|
validate_legality_of_name
|
5
5
|
return if errors.any?
|
6
|
+
|
6
7
|
Card.write_to_soft_cache self
|
7
8
|
validate_uniqueness_of_name
|
8
9
|
end
|
@@ -29,7 +30,7 @@ event :validate_legality_of_name do
|
|
29
30
|
elsif !name.valid?
|
30
31
|
errors.add :name, t(:core_error_banned_characters,
|
31
32
|
banned: Card::Name.banned_array * " ")
|
32
|
-
elsif
|
33
|
+
elsif changing_existing_tag_to_compound?
|
33
34
|
errors.add :name, t(:core_error_name_tag, name: name)
|
34
35
|
end
|
35
36
|
end
|
@@ -44,6 +45,7 @@ end
|
|
44
45
|
|
45
46
|
event :validate_renaming, :validate, on: :update, changed: :name, skip: :allowed do
|
46
47
|
return if name_before_act&.to_name == name # just changing to new variant
|
48
|
+
|
47
49
|
errors.add :content, t(:core_cannot_change_content) if content_is_changing?
|
48
50
|
errors.add :type, t(:core_cannot_change_type) if type_is_changing?
|
49
51
|
detect_illegal_compound_names
|
@@ -58,11 +60,13 @@ end
|
|
58
60
|
event :rename_in_trash, after: :expire_old_name, on: :update do
|
59
61
|
existing_card = Card.find_by_key_and_trash name.key, true
|
60
62
|
return if !existing_card || existing_card == self
|
63
|
+
|
61
64
|
existing_card.rename_as_trash_obstacle
|
62
65
|
end
|
63
66
|
|
64
67
|
event :prepare_left_and_right, :store, changed: :name, on: :save do
|
65
68
|
return if name.simple?
|
69
|
+
|
66
70
|
prepare_side :left
|
67
71
|
prepare_side :right
|
68
72
|
end
|
@@ -79,7 +83,7 @@ end
|
|
79
83
|
protected
|
80
84
|
|
81
85
|
def rename_as_trash_obstacle
|
82
|
-
self.name = name
|
86
|
+
self.name = "#{name}*trash"
|
83
87
|
rename_in_trash_without_callbacks
|
84
88
|
save!
|
85
89
|
end
|
@@ -105,11 +109,13 @@ end
|
|
105
109
|
|
106
110
|
def detect_illegal_compound_names
|
107
111
|
return unless changed_from_simple_to_compound? && child_ids(:right).present?
|
112
|
+
|
108
113
|
errors.add :name, "illegal name change; existing names end in +#{name_before_act}"
|
109
114
|
end
|
110
115
|
|
111
|
-
def
|
112
|
-
return false unless
|
116
|
+
def changing_existing_tag_to_compound?
|
117
|
+
return false unless changing_name_to_compound?
|
118
|
+
|
113
119
|
name_in_use_as_tag?
|
114
120
|
end
|
115
121
|
|
@@ -117,8 +123,8 @@ def name_in_use_as_tag?
|
|
117
123
|
!Card.where(right_id: id, trash: false).take.nil?
|
118
124
|
end
|
119
125
|
|
120
|
-
def
|
121
|
-
name.
|
126
|
+
def changing_name_to_compound?
|
127
|
+
name.compound? && simple?
|
122
128
|
end
|
123
129
|
|
124
130
|
def old_name_in_way? sidecard
|
@@ -150,6 +156,7 @@ end
|
|
150
156
|
|
151
157
|
def prepare_obstructed_side side, side_id, sidename
|
152
158
|
return unless side_id && side_id == id
|
159
|
+
|
153
160
|
clear_name sidename
|
154
161
|
send "#{side}_id=", add_subcard(sidename)
|
155
162
|
true
|
@@ -7,6 +7,7 @@ end
|
|
7
7
|
event :update_referer_content, :finalize, on: :update, when: :update_referers do
|
8
8
|
referers.each do |card|
|
9
9
|
next if card.structure
|
10
|
+
|
10
11
|
card.skip_event! :validate_renaming, :check_permissions
|
11
12
|
card.content = card.replace_references name_before_act, name
|
12
13
|
attach_subcard card
|
@@ -58,6 +59,7 @@ private
|
|
58
59
|
|
59
60
|
def replace_reference chunk, old_name, new_name
|
60
61
|
return unless (old = chunk.referee_name) && (new = old.swap old_name, new_name)
|
62
|
+
|
61
63
|
chunk.referee_name = chunk.replace_reference old_name, new_name
|
62
64
|
update_reference old.key, new.key
|
63
65
|
end
|
data/mod/core/set/all/states.rb
CHANGED
@@ -17,8 +17,8 @@ module ClassMethods
|
|
17
17
|
def real? mark
|
18
18
|
quick_fetch(mark).present?
|
19
19
|
end
|
20
|
-
|
21
|
-
|
20
|
+
alias_method :exist?, :real?
|
21
|
+
alias_method :exists?, :real?
|
22
22
|
|
23
23
|
def known? mark
|
24
24
|
fetch(mark).present?
|
@@ -81,4 +81,4 @@ end
|
|
81
81
|
|
82
82
|
def user_changes?
|
83
83
|
actions.joins(:act).where("card_acts.actor_id != ?", WagnBotID).exists?
|
84
|
-
end
|
84
|
+
end
|
data/mod/core/set/all/trash.rb
CHANGED
@@ -36,6 +36,7 @@ module ClassMethods
|
|
36
36
|
|
37
37
|
def delete_files_with_id file_id
|
38
38
|
raise Card::Error, t(:core_exception_almost_deleted) if Card.exists?(file_id)
|
39
|
+
|
39
40
|
::FileUtils.rm_rf "#{dir}/#{file_id}", secure: true
|
40
41
|
end
|
41
42
|
|
@@ -65,6 +66,7 @@ end
|
|
65
66
|
|
66
67
|
def add_to_trash args
|
67
68
|
return if new_card?
|
69
|
+
|
68
70
|
yield args.merge trash: true
|
69
71
|
end
|
70
72
|
|
@@ -77,6 +79,7 @@ end
|
|
77
79
|
def pull_from_trash!
|
78
80
|
return unless (id = Card::Lexicon.id key) # name is already known
|
79
81
|
return unless (trashed_card = Card.where(id: id).take)&.trash
|
82
|
+
|
80
83
|
# confirm name is actually in trash
|
81
84
|
|
82
85
|
db_attributes["id"] = trashed_card.db_attributes["id"]
|
@@ -99,7 +102,7 @@ event :validate_delete, :validate, on: :delete do
|
|
99
102
|
%w[default style layout create read update delete]
|
100
103
|
# FIXME: HACK! should be configured in the rule
|
101
104
|
|
102
|
-
if
|
105
|
+
if compound? && left&.codename == :all &&
|
103
106
|
undeletable_all_rules_tags.member?(right.codename.to_s)
|
104
107
|
errors.add :delete, t(:core_error_indestructible, name: name)
|
105
108
|
end
|
@@ -109,6 +112,7 @@ end
|
|
109
112
|
|
110
113
|
event :validate_delete_children, after: :validate_delete, on: :delete do
|
111
114
|
return if errors.any?
|
115
|
+
|
112
116
|
each_child do |child|
|
113
117
|
child.include_set_modules
|
114
118
|
delete_as_subcard child
|
data/mod/core/set/all/type.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
module ClassMethods
|
3
2
|
def default_type_id
|
4
3
|
@@default_type_id ||= Card[:all].fetch(:default, skip_modules: true).type_id
|
@@ -7,6 +6,7 @@ end
|
|
7
6
|
|
8
7
|
def type_card
|
9
8
|
return if type_id.nil?
|
9
|
+
|
10
10
|
Card.quick_fetch type_id.to_i
|
11
11
|
end
|
12
12
|
|
@@ -29,7 +29,7 @@ def type_cardname
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def type= type_name
|
32
|
-
self.type_id =
|
32
|
+
self.type_id = type_name.card_id
|
33
33
|
end
|
34
34
|
|
35
35
|
def type_id= card_or_id
|
@@ -38,12 +38,14 @@ end
|
|
38
38
|
|
39
39
|
def type_id_from_template
|
40
40
|
return unless name && (t = template)
|
41
|
+
|
41
42
|
reset_patterns # still necessary even with new template handling?
|
42
43
|
self.type_id = t.type_id
|
43
44
|
end
|
44
45
|
|
45
46
|
event :validate_type_change, :validate, on: :update, changed: :type_id do
|
46
47
|
return unless (c = dup) && c.action == :create && !c.valid?
|
48
|
+
|
47
49
|
errors.add :type, t(:core_error_cant_change_errors,
|
48
50
|
name: name,
|
49
51
|
type_id: type_id,
|
data/mod/core/set/all/utils.rb
CHANGED
@@ -41,7 +41,7 @@ module ClassMethods
|
|
41
41
|
|
42
42
|
def resolve_file_attributes! attribs
|
43
43
|
%i[image file].each do |attach|
|
44
|
-
next unless attribs[attach]
|
44
|
+
next unless attribs[attach].is_a?(String)
|
45
45
|
|
46
46
|
attribs[attach] = ::File.open(attribs[attach])
|
47
47
|
end
|
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
RSpec.describe Card::Set::All::AssignAttributes do
|
4
4
|
it "assigns attributes" do
|
5
|
-
card = Card.new name: "#name", type: :basic, content: "#content",
|
5
|
+
card = Card.new name: "#name", type: :basic, content: "#content",
|
6
|
+
codename: "#codename"
|
6
7
|
expect(card.attributes).to include(
|
7
8
|
"name" => "#name",
|
8
9
|
"db_content" => "#content",
|
@@ -31,18 +32,18 @@ RSpec.describe Card::Set::All::AssignAttributes do
|
|
31
32
|
end
|
32
33
|
|
33
34
|
it "assigns subfields" do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
card = Card.new name: "#name", subfields: { default: { content: "subcontent" } }
|
36
|
+
expect(card.subcards.first).to eq "name+*default"
|
37
|
+
subcard = card.subfield :default
|
38
|
+
expect(subcard).to be_a(Card)
|
39
|
+
expect(subcard.name).to eq "#name+*default"
|
40
|
+
expect(subcard.content).to eq "subcontent"
|
41
|
+
end
|
41
42
|
|
42
43
|
describe "set specific attributes" do
|
43
44
|
example "file card with set specfic attribute" do
|
44
45
|
card = Card.new name: "empty", type: :file, empty_ok: true
|
45
|
-
expect(card
|
46
|
+
expect(card).to be_empty_ok
|
46
47
|
end
|
47
48
|
end
|
48
49
|
end
|
@@ -19,13 +19,13 @@ RSpec.describe Card do
|
|
19
19
|
context "when there is a general toc rule of 2" do
|
20
20
|
before do
|
21
21
|
Card::Auth.as_bot do
|
22
|
-
create [
|
22
|
+
create %i[basic type table_of_contents], "2"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
specify do
|
27
27
|
expect(c1.type_id).to eq(Card::BasicID)
|
28
|
-
expect(rule_card).to be_a
|
28
|
+
expect(rule_card).to be_a described_class
|
29
29
|
end
|
30
30
|
|
31
31
|
describe ".rule" do
|
@@ -39,9 +39,11 @@ RSpec.describe Card do
|
|
39
39
|
it "does not render for 'Onne Heading'" do
|
40
40
|
expect(c1).not_to have_toc
|
41
41
|
end
|
42
|
+
|
42
43
|
it "renders for 'Twwo Heading'" do
|
43
44
|
expect(c2).to have_toc
|
44
45
|
end
|
46
|
+
|
45
47
|
it "renders for 'Three Heading'" do
|
46
48
|
expect(c3).to have_toc
|
47
49
|
end
|
@@ -52,6 +54,7 @@ RSpec.describe Card do
|
|
52
54
|
sets = described_class["A"].related_sets.map { |s| s[0] }
|
53
55
|
expect(sets).to eq(["A+*right"])
|
54
56
|
end
|
57
|
+
|
55
58
|
it "has 2 sets (type, and right) for a cardtype card" do
|
56
59
|
sets = described_class["Cardtype A"].related_sets.map { |s| s[0] }
|
57
60
|
expect(sets).to eq(["Cardtype A+*type", "Cardtype A+*right"])
|
@@ -71,6 +74,7 @@ RSpec.describe Card do
|
|
71
74
|
# sets.should == ['Cardtype A+*self', 'Cardtype A+*type',
|
72
75
|
# 'Cardtype A+*right', 'RichText+Cardtype A+*type plus right']
|
73
76
|
# end
|
77
|
+
|
74
78
|
it "is empty for a non-simple card" do
|
75
79
|
sets = described_class["A+B"].related_sets.map { |s| s[0] }
|
76
80
|
expect(sets).to eq([])
|
@@ -99,9 +103,11 @@ RSpec.describe Card do
|
|
99
103
|
it "does not render toc for 'Onne Heading'" do
|
100
104
|
expect(c1).to have_toc
|
101
105
|
end
|
106
|
+
|
102
107
|
it "renders toc for 'Twwo Heading'" do
|
103
108
|
expect(c2).to have_toc
|
104
109
|
end
|
110
|
+
|
105
111
|
it "does not render for 'Twwo Heading' when changed to 3" do
|
106
112
|
rule_card.content = "3"
|
107
113
|
expect(c2.rule(:table_of_contents)).to eq("3")
|
@@ -140,9 +146,11 @@ RSpec.describe Card do
|
|
140
146
|
it "does not render for 'Onne Heading'" do
|
141
147
|
expect(@c1).not_to have_toc
|
142
148
|
end
|
149
|
+
|
143
150
|
it "renders for 'Twwo Heading'" do
|
144
151
|
expect(@c2).not_to have_toc
|
145
152
|
end
|
153
|
+
|
146
154
|
it "renders for 'Three Heading'" do
|
147
155
|
expect(@c3).not_to have_toc
|
148
156
|
end
|
@@ -173,8 +181,10 @@ RSpec.describe Card do
|
|
173
181
|
described_class.create! name: "RichText+*type+*table of contents", content: "2"
|
174
182
|
@c1 = described_class.create! name: "toc1", type: "CardtypeE",
|
175
183
|
content: described_class["Onne Heading"].content
|
176
|
-
@c2 = described_class.create! name: "toc2",
|
177
|
-
|
184
|
+
@c2 = described_class.create! name: "toc2",
|
185
|
+
content: described_class["Twwo Heading"].content
|
186
|
+
@c3 = described_class.create! name: "toc3",
|
187
|
+
content: described_class["Three Heading"].content
|
178
188
|
expect(@c1.type_name).to eq("Cardtype E")
|
179
189
|
@rule_card = @c1.rule_card(:table_of_contents)
|
180
190
|
|
@@ -190,6 +200,7 @@ RSpec.describe Card do
|
|
190
200
|
end
|
191
201
|
end
|
192
202
|
end
|
203
|
+
|
193
204
|
it "takes on new setting value" do
|
194
205
|
c = described_class["toc1"]
|
195
206
|
expect(c.rule_card(:table_of_contents).name)
|
@@ -201,10 +212,12 @@ RSpec.describe Card do
|
|
201
212
|
it "does not render for 'Onne Heading'" do
|
202
213
|
expect(@c1).not_to have_toc
|
203
214
|
end
|
215
|
+
|
204
216
|
it "renders for 'Twwo Heading'" do
|
205
217
|
expect(@c2.rule(:table_of_contents)).to eq("2")
|
206
218
|
expect(@c2).to have_toc
|
207
219
|
end
|
220
|
+
|
208
221
|
it "renders for 'Three Heading'" do
|
209
222
|
expect(@c3).to have_toc
|
210
223
|
end
|
@@ -231,9 +244,11 @@ RSpec.describe Card do
|
|
231
244
|
it "does not render toc for 'Onne Heading'" do
|
232
245
|
expect(c1).to have_toc
|
233
246
|
end
|
247
|
+
|
234
248
|
it "renders toc for 'Twwo Heading'" do
|
235
249
|
expect(c2).to have_toc
|
236
250
|
end
|
251
|
+
|
237
252
|
it "does not render for 'Twwo Heading' when changed to 3" do
|
238
253
|
rule_card.content = "3"
|
239
254
|
expect(c2).not_to have_toc
|
@@ -18,7 +18,7 @@ RSpec.describe Card::Set::All::Collection do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "handles searches relative to context card" do
|
21
|
-
#
|
21
|
+
# NOTE: A refers to 'Z'
|
22
22
|
@context = "A"
|
23
23
|
@args = { name: "foo", type: "Search",
|
24
24
|
content: '{"referred_to_by":"_self"}' }
|
@@ -23,6 +23,7 @@ RSpec.describe Card::Set::All::Export do
|
|
23
23
|
a_hash_including(name: "A+B", type: "RichText", content: "AlphaBeta")
|
24
24
|
)
|
25
25
|
end
|
26
|
+
|
26
27
|
it "handles multi levels pointer cards" do
|
27
28
|
inner_pointer = create "inner pointer", type: :pointer, content: "T"
|
28
29
|
expect(export_pointer([inner_pointer.name, "A+B"])).to include(
|
@@ -54,34 +54,34 @@ describe Card::Set::All::Initialize do
|
|
54
54
|
|
55
55
|
describe "module inclusion" do
|
56
56
|
context "(search)" do
|
57
|
-
|
58
|
-
|
57
|
+
let :c do
|
58
|
+
Card.new type: "Search", name: "Module Inclusion Test Card"
|
59
59
|
end
|
60
60
|
|
61
61
|
it "happens after new" do
|
62
|
-
expect(
|
62
|
+
expect(c).to respond_to(:query)
|
63
63
|
end
|
64
64
|
|
65
65
|
it "happens after save" do
|
66
|
-
expect(
|
67
|
-
|
68
|
-
expect(
|
66
|
+
expect(c).to respond_to(:query)
|
67
|
+
c.save!
|
68
|
+
expect(c).to respond_to(:query)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "happens after fetch" do
|
72
|
-
|
73
|
-
|
74
|
-
expect(
|
72
|
+
c.save!
|
73
|
+
f = Card.fetch(c.name)
|
74
|
+
expect(f).to respond_to(:query)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
context "(pointer)" do
|
79
79
|
it "happens with explicit pointer setting" do
|
80
|
-
expect(Card.new(type: "Pointer").respond_to
|
80
|
+
expect(Card.new(type: "Pointer")).to respond_to(:add_item)
|
81
81
|
end
|
82
82
|
|
83
83
|
it "happens with implicit pointer setting (from template)" do
|
84
|
-
expect(Card.new(name: "Home+*cc").respond_to
|
84
|
+
expect(Card.new(name: "Home+*cc")).to respond_to(:add_item)
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: card
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.101.
|
4
|
+
version: 1.101.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ethan McCutchen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-05-
|
13
|
+
date: 2021-05-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: cardname
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.11.
|
21
|
+
version: 0.11.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.11.
|
28
|
+
version: 0.11.5
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rake
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|