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
@@ -43,12 +43,14 @@ class Card
|
|
43
43
|
def new_supercard_args
|
44
44
|
# special case. gets absolutized incorrectly. fix in name?
|
45
45
|
return {} if view_opts[:nest_name].strip.blank?
|
46
|
+
|
46
47
|
{ supercard: format.context_card }
|
47
48
|
end
|
48
49
|
|
49
50
|
def new_main_args
|
50
51
|
nest_name = view_opts[:nest_name]
|
51
52
|
return {} unless nest_name =~ /main/
|
53
|
+
|
52
54
|
{ name: nest_name.gsub(/^_main\+/, "+"),
|
53
55
|
supercard: format.root.card }
|
54
56
|
end
|
@@ -41,7 +41,7 @@ class Card
|
|
41
41
|
# @param view [Symbol]
|
42
42
|
# @return [Symbol ] viewname
|
43
43
|
def modal_nest_view view
|
44
|
-
#
|
44
|
+
# NOTE: the subformat always has the same nest_mode as its parent format
|
45
45
|
case nest_mode
|
46
46
|
when :edit then view_in_edit_mode(view)
|
47
47
|
when :template then :template_nest
|
@@ -3,7 +3,7 @@ class Card
|
|
3
3
|
module Nesting
|
4
4
|
# Formats can have subformats. Lineage can be retraced through "parent" format.
|
5
5
|
module Subformat
|
6
|
-
#
|
6
|
+
# NOTE: while it is possible to have a subformat of a different class,
|
7
7
|
# the :format_class value takes precedence over :format.
|
8
8
|
def subformat subcard, opts={}
|
9
9
|
subcard = subformat_card subcard
|
@@ -56,6 +56,7 @@ class Card
|
|
56
56
|
|
57
57
|
def subformat_card subcard
|
58
58
|
return subcard if subcard.is_a? Card
|
59
|
+
|
59
60
|
Card.fetch subcard, new: {}
|
60
61
|
end
|
61
62
|
end
|
data/lib/card/format/render.rb
CHANGED
@@ -65,8 +65,8 @@ class Card
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def pretty_path source_location
|
68
|
-
source_location.first.gsub(%r{^.+mod\d+-([^/]+)},
|
69
|
-
|
68
|
+
"#{source_location.first.gsub(%r{^.+mod\d+-([^/]+)},
|
69
|
+
'\1: ')}:#{source_location.second}"
|
70
70
|
end
|
71
71
|
|
72
72
|
# :standard, :always, :never
|
data/lib/card/format/wrapper.rb
CHANGED
data/lib/card/lexicon.rb
CHANGED
@@ -45,7 +45,8 @@ class Card
|
|
45
45
|
# end
|
46
46
|
|
47
47
|
def lex_to_name lex
|
48
|
-
return lex unless lex
|
48
|
+
return lex unless lex.is_a? Array
|
49
|
+
|
49
50
|
lex.map { |side_id| name side_id or return }.join(Card::Name.joint).to_name
|
50
51
|
end
|
51
52
|
|
@@ -83,7 +84,7 @@ class Card
|
|
83
84
|
end
|
84
85
|
|
85
86
|
def cache_key lex
|
86
|
-
"L
|
87
|
+
"L-#{lex.is_a?(Array) ? lex.join('-') : lex.to_name.key}"
|
87
88
|
end
|
88
89
|
end
|
89
90
|
end
|
data/lib/card/mark.rb
CHANGED
@@ -23,16 +23,7 @@ class Card
|
|
23
23
|
def id_or_name parts
|
24
24
|
mark = parts.flatten
|
25
25
|
mark = mark.first if mark.size <= 1
|
26
|
-
id_from_mark(mark) ||
|
27
|
-
end
|
28
|
-
|
29
|
-
def id_from_mark mark
|
30
|
-
case mark
|
31
|
-
when Integer then mark
|
32
|
-
when Symbol then Card::Codename.id! mark
|
33
|
-
when String then id_from_string mark
|
34
|
-
when Card then mark.id
|
35
|
-
end
|
26
|
+
id_from_mark(mark) || Card::Name[mark]
|
36
27
|
end
|
37
28
|
|
38
29
|
# translates string identifiers into an id:
|
@@ -48,20 +39,31 @@ class Card
|
|
48
39
|
end
|
49
40
|
end
|
50
41
|
|
51
|
-
def
|
52
|
-
|
42
|
+
def name_from_id_from_string id, string
|
43
|
+
fetch_name(id) { bad_mark string }
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def bad_mark string
|
49
|
+
case string
|
53
50
|
when ID_MARK_RE
|
54
51
|
raise Card::Error::NotFound, "id doesn't exist: #{Regexp.last_match[:id]}"
|
55
52
|
when CODENAME_MARK_RE
|
56
53
|
raise Card::Error::CodenameNotFound,
|
57
54
|
"codename doesn't exist: #{Regexp.last_match[:codename]}"
|
58
55
|
else
|
59
|
-
raise Card::Error, "invalid mark: #{
|
56
|
+
raise Card::Error, "invalid mark: #{string}"
|
60
57
|
end
|
61
58
|
end
|
62
59
|
|
63
|
-
def
|
64
|
-
|
60
|
+
def id_from_mark mark
|
61
|
+
case mark
|
62
|
+
when Integer then mark
|
63
|
+
when Symbol then Card::Codename.id! mark
|
64
|
+
when String then id_from_string mark
|
65
|
+
when Card then mark.id
|
66
|
+
end
|
65
67
|
end
|
66
68
|
end
|
67
69
|
end
|
@@ -12,8 +12,8 @@ class Card
|
|
12
12
|
include SaveHelperHelper
|
13
13
|
include SaveArguments
|
14
14
|
|
15
|
-
def with_user user_name
|
16
|
-
Card::Auth.with(current_id: Card.fetch_id(user_name))
|
15
|
+
def with_user user_name, &block
|
16
|
+
Card::Auth.with(current_id: Card.fetch_id(user_name), &block)
|
17
17
|
end
|
18
18
|
|
19
19
|
def create_card name_or_args, content_or_args=nil
|
@@ -121,7 +121,7 @@ class Card
|
|
121
121
|
|
122
122
|
# TODO: this is too specific for this
|
123
123
|
def add_script name, opts={}
|
124
|
-
name.sub!(/^script
|
124
|
+
name.sub!(/^script:?\s?/, "") # in case name is given with prefix
|
125
125
|
# remove it so that we don't double it
|
126
126
|
|
127
127
|
add_coderule_item name, "script",
|
data/lib/card/name.rb
CHANGED
@@ -41,8 +41,8 @@ class Card
|
|
41
41
|
|
42
42
|
if !validated_parts && str.include?(joint)
|
43
43
|
compose Cardname.split_parts(str)
|
44
|
-
elsif (id = Card.id_from_string
|
45
|
-
Card.
|
44
|
+
elsif (id = Card.id_from_string str) # handles ~[id] and :[codename]
|
45
|
+
Card.name_from_id_from_string id, str
|
46
46
|
else
|
47
47
|
super str
|
48
48
|
end
|
@@ -50,17 +50,18 @@ class Card
|
|
50
50
|
|
51
51
|
# interprets symbols/integers as codenames/ids
|
52
52
|
def smart_compose parts
|
53
|
-
|
54
|
-
new name_parts.join(joint), true
|
53
|
+
new_from_parts(parts) { |part| self[part] }
|
55
54
|
end
|
56
55
|
|
57
56
|
def compose parts
|
58
|
-
|
59
|
-
new name_parts.join(joint), true
|
57
|
+
new_from_parts(parts) { |part| new part }
|
60
58
|
end
|
61
59
|
|
62
|
-
|
63
|
-
|
60
|
+
private
|
61
|
+
|
62
|
+
def new_from_parts parts, &block
|
63
|
+
name_parts = parts.flatten.map(&block)
|
64
|
+
new name_parts.join(joint), true
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
@@ -73,7 +74,7 @@ class Card
|
|
73
74
|
end
|
74
75
|
|
75
76
|
def code
|
76
|
-
Card::Codename[
|
77
|
+
Card::Codename[card_id]
|
77
78
|
end
|
78
79
|
|
79
80
|
def setting?
|
data/lib/card/name/all.rb
CHANGED
@@ -53,6 +53,7 @@ class Card
|
|
53
53
|
|
54
54
|
def update_subcard_names new_name, name_to_replace=nil
|
55
55
|
return unless @subcards
|
56
|
+
|
56
57
|
subcards.each do |subcard|
|
57
58
|
update_subcard_name subcard, new_name, name_to_replace if subcard.new?
|
58
59
|
end
|
@@ -60,6 +61,7 @@ class Card
|
|
60
61
|
|
61
62
|
def key= newkey
|
62
63
|
return if newkey == key
|
64
|
+
|
63
65
|
update_cache_key key do
|
64
66
|
write_attribute :key, (name.simple? ? newkey : nil)
|
65
67
|
@key = newkey
|
@@ -100,6 +102,7 @@ class Card
|
|
100
102
|
|
101
103
|
def clean_patterns
|
102
104
|
return unless patterns?
|
105
|
+
|
103
106
|
reset_patterns
|
104
107
|
patterns
|
105
108
|
end
|
@@ -18,19 +18,18 @@ class Card
|
|
18
18
|
child_ids :left
|
19
19
|
end
|
20
20
|
|
21
|
-
def each_child
|
21
|
+
def each_child &block
|
22
22
|
return unless id
|
23
23
|
|
24
24
|
Card.where(
|
25
25
|
"(left_id = #{id} or right_id = #{id}) and trash is false"
|
26
|
-
).each
|
27
|
-
yield child
|
28
|
-
end
|
26
|
+
).each(&block)
|
29
27
|
end
|
30
28
|
|
31
29
|
# eg, A+B is a child of A and B
|
32
30
|
def child_ids side=nil
|
33
31
|
return [] unless id
|
32
|
+
|
34
33
|
side ||= name.simple? ? :part : :left_id
|
35
34
|
Auth.as_bot do
|
36
35
|
Card.search({ side => id, return: :id, limit: 0 }, "children of #{name}")
|
data/lib/card/name/card_class.rb
CHANGED
@@ -24,7 +24,8 @@ class Card
|
|
24
24
|
|
25
25
|
# @return [True/False]
|
26
26
|
def field_of? context
|
27
|
-
return false unless
|
27
|
+
return false unless compound?
|
28
|
+
|
28
29
|
if context.present?
|
29
30
|
absolute_name(context).left_name.key == context.to_name.key
|
30
31
|
else
|
@@ -53,7 +54,8 @@ class Card
|
|
53
54
|
|
54
55
|
# @return [True/False]
|
55
56
|
def trait_name? *traitlist
|
56
|
-
return false unless
|
57
|
+
return false unless compound?
|
58
|
+
|
57
59
|
right_key = right_name.key
|
58
60
|
traitlist.any? do |codename|
|
59
61
|
Card::Codename.name(codename)&.key == right_key
|
data/lib/card/query.rb
CHANGED
@@ -48,28 +48,28 @@ class Card
|
|
48
48
|
# their values are translated fairly directly into SQL-safe values.
|
49
49
|
# (These are referred to as "properties" in CQL documentation. Need to
|
50
50
|
# reconcile #EFM)
|
51
|
-
basic:
|
52
|
-
|
51
|
+
basic: %i[id name key type_id content left_id right_id
|
52
|
+
creator_id updater_id codename read_rule_id],
|
53
53
|
# "Relational" values can involve tying multiple queries together
|
54
|
-
relational:
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
54
|
+
relational: %i[type
|
55
|
+
part left right
|
56
|
+
editor_of edited_by last_editor_of last_edited_by
|
57
|
+
creator_of created_by
|
58
|
+
updater_of updated_by
|
59
|
+
link_to linked_to_by
|
60
|
+
include included_by
|
61
|
+
nest nested_by
|
62
62
|
|
63
|
-
|
64
|
-
|
63
|
+
refer_to referred_to_by
|
64
|
+
member_of member
|
65
65
|
|
66
|
-
|
67
|
-
|
66
|
+
found_by
|
67
|
+
not sort match name_match complete],
|
68
68
|
|
69
69
|
plus_relational: %i[plus left_plus right_plus],
|
70
|
-
conjunction:
|
71
|
-
ignore:
|
72
|
-
deprecated:
|
70
|
+
conjunction: %i[and or all any],
|
71
|
+
ignore: %i[prepend append vars],
|
72
|
+
deprecated: %i[view params size]
|
73
73
|
}.each_with_object({}) do |pair, h|
|
74
74
|
pair[1].each { |v| h[v] = pair[0] }
|
75
75
|
end
|
@@ -10,6 +10,7 @@ class Card
|
|
10
10
|
# match term anywhere in name or content
|
11
11
|
def match val
|
12
12
|
return unless val.present?
|
13
|
+
|
13
14
|
subconds = %i[name content].map do |field|
|
14
15
|
Value.new([:match, val], self).to_sql field
|
15
16
|
end
|
@@ -19,7 +20,7 @@ class Card
|
|
19
20
|
# match names beginning with term
|
20
21
|
def complete val
|
21
22
|
val = val.to_name
|
22
|
-
if val.
|
23
|
+
if val.compound?
|
23
24
|
interpret left: val.left
|
24
25
|
interpret right: { complete: val.right } if val.right.present?
|
25
26
|
else
|
data/lib/card/query/join.rb
CHANGED
data/lib/card/reference/all.rb
CHANGED
@@ -58,12 +58,14 @@ class Card
|
|
58
58
|
interpret_reference ref_hash, referee_name, ref_type
|
59
59
|
end
|
60
60
|
return if ref_hash.empty?
|
61
|
+
|
61
62
|
Reference.mass_insert reference_values_array(ref_hash)
|
62
63
|
end
|
63
64
|
|
64
65
|
# delete references from this card
|
65
66
|
def delete_references_out
|
66
67
|
raise "id required to delete references" if id.nil?
|
68
|
+
|
67
69
|
Reference.where(referer_id: id).delete_all
|
68
70
|
end
|
69
71
|
|
@@ -71,9 +73,11 @@ class Card
|
|
71
73
|
|
72
74
|
def with_normalized_referee referee_name
|
73
75
|
return unless referee_name # eg commented nest has no referee_name
|
76
|
+
|
74
77
|
referee_name = referee_name.to_name
|
75
78
|
referee_key = referee_name.key
|
76
79
|
return if referee_key == key # don't create self reference
|
80
|
+
|
77
81
|
yield referee_name, referee_key, Lexicon.id(referee_name)
|
78
82
|
end
|
79
83
|
|
@@ -103,10 +107,10 @@ class Card
|
|
103
107
|
end
|
104
108
|
end
|
105
109
|
|
106
|
-
def each_reference_type ref_types
|
110
|
+
def each_reference_type ref_types, &block
|
107
111
|
ref_types.delete PARTIAL_REF_CODE if ref_types.size > 1
|
108
112
|
# partial references are not necessary if there are explicit references
|
109
|
-
ref_types.each
|
113
|
+
ref_types.each(&block)
|
110
114
|
end
|
111
115
|
|
112
116
|
# invokes the given block for each reference in content with
|
@@ -122,6 +126,7 @@ class Card
|
|
122
126
|
# but when A's name is changed we have to find and update that link.
|
123
127
|
def interpret_partial_references ref_hash, referee_name
|
124
128
|
return if referee_name.simple?
|
129
|
+
|
125
130
|
[referee_name.left, referee_name.right].each do |sidename|
|
126
131
|
interpret_reference ref_hash, sidename, PARTIAL_REF_CODE
|
127
132
|
end
|