card 1.101.4 → 1.101.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|