Difference between revisions of "Template:Card query"

From Yugipedia
Jump to: navigation, search
(here goes nothing)
(support Cross Duel monsters sometimes having both Level and Rank)
(107 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<!-- one day, we won't need to use this variable so much... that day, unfortunately, is not today
+
<templatestyles src="Template:Card query/styles.css" />
-->{{ #vardefine: $query_medium | {{ #switch: {{ lc: {{{medium}}} }}
+
<!-- the actual query the user wants - at the top so we can do fun stuff auto-determining the needed medium/type
 +
-->{{ #vardefine: $cq_query | {{ #invoke: string | replace |{{{1|}}}|%s*::%s*|::|plain=false}}<!-- strip whitespace around :: -->
 +
}}{{ #vardefine: $cq_query_lc | {{ lc: {{ #var: $cq_query }} }}
 +
}}{{ #vardefine: $cq_query_normalized | {{ #replace: {{ #var: $cq_query_lc }} | <nowiki/> string:: | :: }}
 +
}}{{ #vardefine: $cq_query_normalized | {{ #invoke: string | replace |{{ #var: $cq_query_normalized }}|::([<>≤≥!+])|::^%1|plain=false}}<!-- fold comparators for easier matching -->
 +
}}{{ #vardefine: $cq_query_normalized | {{ #invoke: string | replace |{{ #var: $cq_query_normalized }}|::([^{{!}}%[%]]+){{!}}{{!}}|::^%1{{!}}{{!}}|plain=false}}<!-- detect || alternation -->
 +
}}{{ #vardefine: $cq_medium | {{ #switch: {{ #replace: {{ #replace: {{ #replace: {{ #replace: {{ lc: {{{medium}}} }} }} | - }} | ! }} | yugioh }}
 
   | ocg | tcg | ocg/tcg | tcg/ocg | official = official
 
   | ocg | tcg | ocg/tcg | tcg/ocg | official = official
   | anime = anime
+
   | ocgonly        = ocg-only
   | manga = manga
+
  | tcgonly        = tcg-only
   | #default =  
+
  | rushduel      = rush duel
 +
  | anime          = anime
 +
  | animeonly      = anime-only
 +
   | manga         = manga
 +
  | mangaonly      = manga-only
 +
  | vg | videogame = {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | release:: }} || vg }}
 +
  | vgonly | videogameonly = vg-only
 +
  | dl | duellinks = duel links
 +
  | nonofficial    = non-official
 +
   | #default       = {{ #if: {{{medium|}}} | {{ #vardefine: $cq_medium_unknown | 1 }} }}
 
   }}
 
   }}
}}{{ #vardefine: $query_medium_query | {{ #switch: {{ #var: $query_medium }}
+
}}<!--
   | official = [[Class 1::Official]]
+
 
   | anime = [[Medium::Anime]]
+
also update the properties on [[Template:Card list]] when updating these
   | manga = [[Medium::Manga]]
+
 
 +
-->{{ #vardefine: $cq_medium_query | {{ #switch: {{ #var: $cq_medium }}
 +
   | official     = [[Concept:CG cards]]
 +
  | ocg-only    = [[Medium::OCG-only]]
 +
   | tcg-only    = [[Medium::TCG-only]]
 +
  | rush duel    = [[Concept:Rush Duel cards]]
 +
  | anime        = [[Concept:Anime cards]]
 +
  | anime-only  = [[Category:Anime cards with no OCG/TCG counterpart]]
 +
  | manga        = [[Concept:Manga cards]]
 +
   | manga-only  = [[Category:Manga cards with no OCG/TCG counterpart]]
 +
  | vg          = [[Concept:Video game cards]]
 +
  | vg-only      = [[Category:Video game cards with no OCG/TCG counterpart]]
 +
  | duel links  = [[Concept:Duel Links cards]]
 +
  | non-official = <q>[[Concept:Anime cards]] OR [[Concept:Manga cards]] OR [[Concept:Video game cards]]</q>
 +
  }}
 +
}}{{ #vardefine: $cq_query_medium
 +
  | {{ #if:
 +
      {{ #pos: {{ #var: $cq_query_lc }} | official }}
 +
      {{ #pos: {{ #var: $cq_query_lc }} | ::ocg }}
 +
      {{ #pos: {{ #var: $cq_query_lc }} | ::tcg }}
 +
      {{ #pos: {{ #var: $cq_query_lc }} | {{!!}}ocg }}
 +
      {{ #pos: {{ #var: $cq_query_lc }} | {{!!}}tcg }}
 +
    | official
 +
    | {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | anime }}
 +
      | {{ #if: {{ #pos: {{ #var: $cq_query }} | Fairy Tale (anime) }} || anime }}
 +
      | {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | manga }}
 +
        | manga
 +
        | {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | video game }}
 +
                  {{ #pos: {{ #var: $cq_query_lc }} | ::vg }}
 +
          | vg
 +
        }}
 +
      }}
 +
    }}
 
   }}
 
   }}
}}{{ #vardefine: $query_card_type | {{ #switch: {{ #replace: {{ #replace: {{ lc: {{{type}}} }} | cards }} | card }}
+
}}{{ #vardefine: $cq_card_type | {{ #switch: {{ #replace: {{ #replace: {{ #replace: {{ lc: {{{type}}} }} }} | cards }} | card }}
   | monster = monster
+
   | monster   = monster
   | spell | trap | non-monster = non-monster
+
  | spell      = spell
 +
  | trap      = trap
 +
  | speedspell = speed spell
 +
  | skill      = skill
 +
  | ???        = ???
 +
  | character  = character
 +
  | equip      = equip
 +
  | illusion  = illusion
 +
  | legendarydragon = legendary dragon
 +
  | ritual    = ritual
 +
  | slotmachinepowerunit = slot machine power unit
 +
  | trapmonster = trap monster
 +
   | trap-spell | trapspell | spell-trap | spelltrap = trap spell
 +
  | virus      = virus
 +
  | spell/trap | s/t | nonmonster | non-monster = non-monster
 +
  | playable  = playable
 +
  | unplayable = unplayable
 +
  | nongame    = non-game
 +
  | command    = command
 +
  | checklist  = checklist
 +
  | faq        = faq
 +
  | rule      = rule
 +
  | strategy  = strategy
 +
  | ticket    = ticket
 +
  | tip        = tip
 +
  | all | any  = any
 +
  | #default  = {{ #if: {{{type|}}} | {{ #vardefine: $cq_card_type_unknown | 1 }} }}
 
   }}
 
   }}
}}{{ #vardefine: $query_card_type_query | {{ #switch: {{ #var: $query_card_type }}
+
}}{{ #if: {{ #var: $cq_medium }} | {{ #if: {{ #var: $cq_card_type }} | {{ #switch: {{ #var: $cq_medium }}, {{ #var: $cq_card_type }}
  | monster = {{ #switch: {{ #var: $query_medium }}
+
      | official, monster  | official, spell | official, trap | official, non-monster
    | official = [[Card category::Monster Card]]
+
      | duel links, monster | duel links, non-monster
    | anime | manga = [[Card type::Monster Card]]
+
      | rush duel, monster  | rush duel, non-monster
    | #default = <q>[[Card category::Monster Card]] OR [[Card type::Monster Card]]</q>
+
      | anime, monster      | anime, non-monster
 +
      | manga, monster      | manga, non-monster = <!-- already covered by concepts -->
 +
      | #default           = [[((Card query)) medium and type value::{{ #var: $cq_medium }}, {{ #var: $cq_card_type }}| ]]
 
     }}
 
     }}
   | non-monster = {{ #switch: {{ #var: $query_medium }}
+
   }}
    | anime | manga = [[Card type::Spell Card||Trap Card]]
+
}}{{ #vardefine: $cq_card_type | {{ #var: $cq_card_type | {{ #vardefine: $cq_monster_count | {{ #ask: {{ #var: $cq_medium_query }}{{ #var: $cq_query }}[[Card type::Monster Card]] | format=count }}
     | #default = <q>[[Attribute::Spell Card]] OR [[Attribute::Trap Card]] OR [[Card type::Spell Card]] OR [[Card type::Trap Card]]</q>
+
     }}{{ #vardefine: $cq_nonmonster_count | {{ #ask: {{ #var: $cq_medium_query }}{{ #var: $cq_query }}[[Concept:Non-monster cards]] | format=count }}
 +
    }}{{ #vardefine: $cq_spell_count      | {{ #ask: {{ #var: $cq_medium_query }}{{ #var: $cq_query }}[[Card type::Spell Card]] | format=count }}
 +
    }}{{ #vardefine: $cq_trap_count      | {{ #ask: {{ #var: $cq_medium_query }}{{ #var: $cq_query }}[[Card type::Trap Card]] | format=count }}
 +
    }}{{ #switch: {{ #ifexpr: {{ #var: $cq_monster_count }} > 0 | 1 | 0 }}/{{ #ifexpr: {{ #var: $cq_spell_count }} > 0 | 1 | 0 }}/{{ #ifexpr: {{ #var: $cq_trap_count }} > 0 | 1 | 0 }}/{{ #ifexpr: {{ #var: $cq_nonmonster_count }} > 0 | 1 | 0 }}
 +
    <!-- monster/nonmonster/spell/trap -->
 +
    | 0/0/0/0 | 0/0/1/1 | 0/1/1/1 = non-monster<!-- maybe split out the no spell/trap case later to allow auto-determination of other stuff -->
 +
    | 1/0/0/0 = monster
 +
    | 0/0/1/0 | 0/1/1/0 = {{ #ifexpr: {{ #var: $cq_nonmonster_count }} = {{ #var: $cq_spell_count }} | spell | non-monster }}
 +
    | 0/0/0/1 | 0/1/0/1 = {{ #ifexpr: {{ #var: $cq_nonmonster_count }} = {{ #var: $cq_trap_count }}  | trap  | non-monster }}
 +
    | #default = monster<!-- if you get here you need to specify {{{type}}}; maybe one day {{Card query}} will have better handling for mixed-type lists -->
 
     }}
 
     }}
 
   }}
 
   }}
}}<!-- the actual query the user wants
+
}}{{ #vardefine: $cq_card_type_query | {{ #switch: {{ #var: $cq_card_type }}
-->{{ #vardefine: $query_query | {{ #if: {{{2|}}}
+
   | monster    = [[Card type::Monster Card]]
   | [[{{{1}}}::{{{2}}}]]{{ #if: {{{3|}}} | [[{{{3}}}::{{{4}}}]] }}{{ #if: {{{5|}}} | [[{{{5}}}::{{{6}}}]] }}{{ #if: {{{7|}}} | [[{{{7}}}::{{{8}}}]] }}
+
  | spell      = [[Card type::Spell Card]]
   | {{{1}}}
+
  | trap        = [[Card type::Trap Card]]
 +
  | speed spell = [[Card type::Speed Spell Card]]
 +
  | skill      = <q>[[Card type::Skill Card]] OR [[Page type::Skill page]]</q>
 +
  | ???        = [[Card type::???]]
 +
  | character  = [[Card type::Character Card]]
 +
  | equip      = [[Card type::Equip Card]]
 +
  | illusion    = [[Card type::Illusion Card]]
 +
  | legendary dragon = [[Card type::Legendary Dragon]]
 +
  | ritual      = [[Card type::Ritual Card]]
 +
  | slot machine power unit = [[Card type::Slot Machine Power Unit]]
 +
  | trap monster = [[Card type::Trap Monster Card]]
 +
  | trap spell  = [[Card type::Trap Spell Card]]
 +
  | virus      = [[Card type::Virus Card]]
 +
  | non-monster = [[Concept:Non-monster cards]]
 +
  | playable    = [[Concept:Playable cards]]
 +
  | unplayable  = [[Concept:Unplayable cards]]
 +
  | non-game    = [[Card type::Non-game card]]
 +
  | command    = [[Card type::Command Card]]
 +
  | checklist  = [[Card type::Checklist Card]]
 +
  | faq        = [[Card type::FAQ card]]
 +
  | rule        = [[Card type::Rule Card]]
 +
  | strategy    = [[Card type::Strategy Card]]
 +
  | ticket      = [[Card type::Ticket Card]]
 +
   | tip        = [[Card type::Tip Card]]
 
   }}
 
   }}
}}{{ #vardefine: $query_query_lc | {{ lc: {{ #var: $query_query }} }}
+
}}{{ #vardefine: $cq_concept_query | {{ #switch: {{ #var: $cq_medium }}/{{ #var: $cq_card_type }}
 +
  | official/monster      = [[Concept:CG monsters]]
 +
  | official/spell        = [[Concept:CG Spell Cards]]
 +
  | official/trap          = [[Concept:CG Trap Cards]]
 +
  | official/non-monster  = [[Concept:CG non-monster cards]]
 +
  | duel links/monster    = [[Concept:Duel Links monsters]]
 +
  | duel links/non-monster = [[Concept:Duel Links non-monsters]]
 +
  | rush duel/monster      = [[Concept:Rush Duel monsters]]
 +
  | rush duel/non-monster  = [[Concept:Rush Duel non-monsters]]
 +
  | anime/monster          = [[Concept:Anime monsters]]
 +
  | anime/non-monster      = [[Concept:Anime non-monsters]]
 +
  | manga/monster          = [[Concept:Manga monsters]]
 +
  | manga/non-monster      = [[Concept:Manga non-monsters]]
 +
  }}
 +
}}{{ #vardefine: $cq_full_query | {{ #var: $cq_concept_query | {{ #var: $cq_medium_query }}{{ #var: $cq_card_type_query }} }}{{ #var: $cq_query }}
 
}}<!--
 
}}<!--
  
Line 38: Line 159:
 
of course, if it allowed using {{!}} for pipes (as it should), this could be simplified further...
 
of course, if it allowed using {{!}} for pipes (as it should), this could be simplified further...
  
-->{{ #vardefine: $query_col_card_type | {{ #if: {{ #pos: {{ #var: $query_query_lc }} | {{!((}}card type:: }} || ?Card type = }}
+
-->{{ #ifeq: {{ #var: $cq_card_type }} | skill
}}{{ #vardefine: $query_col_attribute | {{ #if: {{ #pos: {{ #var: $query_query_lc }} | {{!((}}attribute:: }} || ?Attribute = }}
+
| {{ #vardefine: $cq_col_character | ?Character }}
}}{{ #ifeq: {{ #var: $query_card_type }} | monster
+
| {{ #vardefine: $cq_col_japanese_name | ?Japanese name
| {{ #vardefine: $query_col_card_type_m | {{ #switch: {{ #var: $query_medium }} | anime | manga = | #default = {{ #var: $query_col_card_type }} Monster type }}
+
  }}{{ #vardefine: $cq_col_card_type | {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | {{!((}}card type:: }} || ?Card type = }}
  }}{{ #vardefine: $query_col_primary_type | {{ #if: {{ #pos: {{ #var: $query_query_lc }} | {{!((}}primary type:: }} || ?Primary type }}
+
  }}
  }}{{ #vardefine: $query_col_primary_type | {{ #ifeq: {{ #var: $query_medium }} | official || {{ #var: $query_col_primary_type }} }}
+
}}{{ #ifeq: {{ #var: $cq_card_type }} | monster
  }}{{ #vardefine: $query_col_monster_type | {{ #if: {{ #pos: {{ #var: $query_query_lc }} | {{!((}}monster type:: }} || ?Monster type = Monster subtype }}
+
| {{ #vardefine: $cq_col_primary_type | ?Primary type
   }}{{ #vardefine: $query_col_monster_type | {{ #switch: {{ #var: $query_medium }} | anime | manga = | #default = {{ #var: $query_col_monster_type }} }}
+
  }}{{ #vardefine: $cq_col_secondary_type | {{ #ifeq: {{ #ask: {{ #var: $cq_full_query }} [[Secondary type::+]] | format=count }} | 0 || {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | {{!((}}secondary type:: }} | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}secondary type::^ }} | ?Secondary type | {{ #ifeq: {{{extra_column}}} | Secondary type | ?Secondary type }} }} | ?Secondary type }} }}
   }}{{ #vardefine: $query_col_secondary_type | {{ #if: {{ #pos: {{ #var: $query_query_lc }} | {{!((}}secondary type:: }} || ?Secondary type }}
+
  }}{{ #vardefine: $cq_col_attribute | {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | {{!((}}attribute:: }} | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}attribute::^ }} | ?Attribute = [[Attribute]] }} | ?Attribute = [[Attribute]] }}
  }}{{ #vardefine: $query_col_secondary_type | {{ #ifeq: {{ #var: $query_medium }} | official || {{ #var: $query_col_secondary_type }} }}
+
  }}{{ #vardefine: $cq_col_type | {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | {{!((}}type:: }} | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}type::^ }} | ?Type = [[Type]] }} | ?Type = [[Type]] }}
  }}{{ #vardefine: $query_col_attribute | {{ #var: $query_col_attribute }} = [[Attribute]]
+
  }}<!--
  }}{{ #vardefine: $query_col_type | ?Type = [[Type]]
+
* if the query doesn't do anything special regarding Level, Rank, monster (sub)type, or medium, display "Level/Rank"
   }}{{ #vardefine: $query_col_stars | ?Stars string = [[Level]]/[[Rank]]
+
* if the query searches for Rush Duel cards, display "Level"
   }}{{ #vardefine: $query_col_atk | ?ATK string = [[ATK]]
+
* if the query searches for a Link Monster (via [[Primary type::Link Monster]], [[Link Arrows::...]], or [[Link Rating::...]]), hide the column
  }}{{ #vardefine: $query_col_atk | ?DEF string = [[DEF]]
+
* if the query searches for Xyz Monsters (via [[Primary type::Xyz Monster]] or [[Rank::...]]/[[Rank string::...]]), display "Rank"
 +
* if the query searches for a specific Level/Rank value (e.g. [[Level::7]] or [[Rank string::?]]), hide the column
 +
* if the query searches for a nonspecific Level (e.g. [[Level::>4]]), show the column and display "Level"
 +
* if the query searches for a nonspecific Rank (e.g. [[Rank::>4]]), show the column and display "Rank"
 +
-->{{ #vardefine: $cq_level_in_results | {{ #ifeq: {{ #ask: {{ #var: $cq_full_query }} [[Level string::+]] | format=count }} | 0 || 1 }}
 +
}}{{ #vardefine: $cq_rank_in_results | {{ #ifeq: {{ #ask: {{ #var: $cq_full_query }} [[Rank string::+]] | format=count }} | 0 || 1 }}
 +
}}<!--{{ #vardefine: $cq_link_in_results | {{ #ifeq: {{ #ask: {{ #var: $cq_full_query }} [[Link Rating::+]] | format=count }} | 0 || 1 }}
 +
}}-->{{ #vardefine: $cq_col_level/rank/link_label
 +
  | {{ #ifexpr: {{ #var: $cq_level_in_results | 0 }} + {{ #var: $cq_rank_in_results | 0 }} + {{ #var: $cq_link_in_results | 0 }} > 1
 +
    | {{ #if: {{ #var: $cq_level_in_results }}
 +
      | [[Level]]/<br />
 +
    }}{{ #if: {{ #var: $cq_rank_in_results }}
 +
      | [[Rank]]{{ #if: {{ #var: $cq_link_in_results }} | /<br /> }}
 +
    }}{{ #if: {{ #var: $cq_link_in_results }}
 +
      | [[Link Rating|Link]]
 +
    }}
 +
    | {{ #if: {{ #var: $cq_level_in_results }}
 +
      | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | level:: }}
 +
                {{ #pos: {{ #var: $cq_query_normalized }} | stars:: }}
 +
        | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | level::^ }}
 +
                  {{ #pos: {{ #var: $cq_query_normalized }} | stars::^ }}
 +
          | [[Level]]
 +
        }}
 +
        | [[Level]]
 +
      }}
 +
    }}{{ #if: {{ #var: $cq_rank_in_results }}
 +
      | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | rank:: }}
 +
                {{ #pos: {{ #var: $cq_query_normalized }} | stars:: }}
 +
        | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | rank::^ }}
 +
                  {{ #pos: {{ #var: $cq_query_normalized }} | stars::^ }}
 +
          | [[Rank]]
 +
        }}
 +
        | [[Rank]]
 +
      }}
 +
    }}{{ #if: {{ #var: $cq_link_in_results }}
 +
      | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | link rating:: }}
 +
                {{ #pos: {{ #var: $cq_query_normalized }} | stars:: }}
 +
        | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | link rating::^ }}
 +
                  {{ #pos: {{ #var: $cq_query_normalized }} | stars::^ }}
 +
          | [[Link Rating|Link]]
 +
        }}
 +
        | [[Link Rating|Link]]
 +
      }}
 +
    }}
 +
  }}
 +
}}<!-- I'm sure I'll pay for this eventually
 +
-->{{ #ifeq: {{{medium}}} | Cross Duel
 +
  | {{ #if: {{ #var: $cq_level_in_results }} | {{ #vardefine: $cq_col_level | ?Level string = [[Level]] }}
 +
    }}{{ #if: {{ #var: $cq_rank_in_results }} | {{ #vardefine: $cq_col_rank | ?Rank string = [[Rank]] }}
 +
    }}
 +
  | {{ #vardefine: $cq_col_level/rank/link | {{ #if: {{ #var: $cq_col_level/rank/link_label }}
 +
      | ?Stars string = {{ #var: $cq_col_level/rank/link_label }}
 +
    }}
 +
   }}
 +
}}<!--
 +
-->{{ #vardefine: $cq_col_scale | {{ #ifeq: {{ #ask: {{ #var: $cq_full_query }} [[Pendulum Scale::+]] | format=count }} | 0 || ?Pendulum Scale = [[Pendulum Scale|Scale]] }}
 +
  }}{{ #vardefine: $cq_equal_atkdef | {{ #if: {{ #pos: {{ #var: $cq_query }} | Equal ATK and DEF }} | {{ #if: {{ #pos: {{ #var: $cq_query }} | !Equal ATK and DEF }} || 1 }} }}
 +
   }}{{ #vardefine: $cq_col_atk | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}atk }}
 +
    | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | atk::^ }}{{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}def }}
 +
      | ?ATK string = [[ATK]]{{ #if: {{ #var: $cq_equal_atkdef }} | /<br />[[DEF]] }}
 +
    }}
 +
    | ?ATK string = [[ATK]]{{ #if: {{ #var: $cq_equal_atkdef }} | /<br />[[DEF]] }}
 +
  }} }}{{ #ifeq: {{ #ask: {{ #var: $cq_full_query }} [[DEF string::+]] | format=count }} | 0
 +
    || {{ #vardefine: $cq_col_def | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}def }}
 +
      | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | def::^ }}{{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}atk }}
 +
        | {{ #if: {{ #var: $cq_equal_atkdef }} || ?DEF string = [[DEF]] }}
 +
      }}
 +
      | {{ #if: {{ #var: $cq_equal_atkdef }} || ?DEF string = [[DEF]] }}
 +
    }} }}
 +
   }}{{ #vardefine: $cq_col_link_rating | {{ #ifeq: {{ #ask: {{ #var: $cq_full_query }} [[Link Rating::+]] | format=count }} | 0
 +
      || {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | {{!((}}link rating:: }} | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}link rating::^ }} | ?Link Rating = [[Link Rating|Link]] }} | ?Link Rating = [[Link Rating|Link]] }}
 +
    }}
 +
   }}{{ #vardefine: $cq_col_maximum_atk | {{ #ifeq: {{ #var: $cq_medium }} | rush duel | {{ #ifeq: {{ #ask: {{ #var: $cq_full_query }} [[MAXIMUM ATK::+]] | format=count }} | 0
 +
        || {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | {{!((}}maximum atk:: }} | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}maximum atk::^ }} | ?MAXIMUM ATK#- = [[MAXIMUM ATK]] }} | ?MAXIMUM ATK#- = [[MAXIMUM ATK]] }}
 +
      }}
 +
    }}
 
   }}
 
   }}
| {{ #vardefine: $query_col_attribute | {{ #switch: {{ #var: $query_medium }} | anime | manga = | #default = {{ #var: $query_col_attribute }} {{ #ifeq: {{ #var: $query_medium }} | official | = [[Card type]] }} }}
+
| {{ #vardefine: $cq_col_property | {{ #if: {{ #pos: {{ #var: $cq_query_lc }} | {{!((}}property:: }} | {{ #if: {{ #pos: {{ #var: $cq_query_normalized }} | {{!((}}property::^ }} | ?Property = [[Property]] | {{ #ifeq: {{{extra_column}}} | Property | ?Property = [[Property]] }} }} | ?Property = [[Property]] }}
   }}{{ #vardefine: $query_col_card_type_st | {{ #ifeq: {{ #var: $query_medium }} | official || {{ #var: $query_col_card_type }} [[Card type]] }}
+
   }}{{ #ifeq: {{ #var: $cq_card_type }} | skill
  }}{{ #vardefine: $query_col_st_class | {{ #switch: {{ #var: $query_medium }} | anime | manga = | #default = ?S/T Class {{ #ifeq: {{ #var: $query_medium }} | official | = [[Property]] }} }}
+
  || {{ #vardefine: $cq_col_card_type_st | {{ #if: {{ #var: $cq_col_card_type }} | {{ #switch: {{ #var: $cq_card_type }} | non-monster | playable | unplayable | <!-- empty --> = {{ #var: $cq_col_card_type }} [[Card type]] }} }}
  }}{{ #vardefine: $query_col_property | {{ #ifeq: {{ #var: $query_medium }} | official || ?Property = [[Property]] }}
+
    }}{{ #vardefine: $cq_col_card_type_st | {{ #if: {{ #var: $cq_col_property }} | {{ #var: $cq_col_card_type_st }} }}
 +
    }}
 
   }}
 
   }}
 +
}}{{ #vardefine: $cq_col_extra | {{ #if: {{{extra_column|}}} | {{ #switch: {{{extra_column}}} | Secondary type | Property = | #default= ?{{{extra_column}}} }} }}
 +
}}{{ #vardefine: $cq_col_extra_2 | {{ #if: {{{extra_column2|}}} | ?{{{extra_column2}}} }}
 +
}}<!--
 +
 +
some other stuff
 +
 +
-->{{ #vardefine: $cq_limit  | {{ #if: {{{limit|}}} | {{ #iferror: {{ #expr: {{{limit}}} }} || {{{limit}}} }} }}
 +
}}{{ #vardefine: $cq_limit  | {{ #ifexpr: {{ #var: $cq_limit | 50 }} > 500 | 500 | {{ #var: $cq_limit | 50 }} }}<!-- $smwgQMaxInlineLimit = 500 -->
 +
}}{{ #vardefine: $cq_sort    | {{{sort|#}}}{{ #if: {{{sort|}}} | {{ #if: {{ #pos: {{{sort}}} | # }} || ,# }} }}
 +
}}{{ #vardefine: $cq_order  | {{{order|}}}
 +
}}{{ #vardefine: $cq_count  | {{ #explode: {{ #ask: {{ #var: $cq_full_query }} | format=count }} | < }}
 +
}}{{ #vardefine: $cq_default | {{{default|}}}
 
}}<!--
 
}}<!--
  
finally, we get to the actual query
+
we finally get to the actual query
  
-->{{ #ask: {{ #var: $query_medium_query }}{{ #var: $query_card_type_query }}{{ #var: $query_query }}
+
-->{{ #ask: {{ #var: $cq_full_query }}
   |?Japanese name
+
  |{{ #if: {{ #var: $cq_query_medium | {{ #var: $cq_medium }} }}{{ #pos: {{ #var: $cq_query_lc }} | release:: }} | {{ #ifeq: {{ #var: $cq_query_medium | {{ #var: $cq_medium }} }} | vg || ?English name (linked) = Name }} }}
   |{{ #var: $query_col_card_type_m }}
+
  |{{ #var: $cq_col_japanese_name }}
   |{{ #var: $query_col_primary_type }}
+
  |{{ #var: $cq_col_character }}
   |{{ #var: $query_col_monster_type }}
+
  |{{ #var: $cq_col_primary_type }}
   |{{ #var: $query_col_secondary_type }}
+
  |{{ #var: $cq_col_secondary_type }}
   |{{ #var: $query_col_attribute }}
+
  |{{ #var: $cq_col_attribute }}
   |{{ #var: $query_col_card_type_st }}
+
  |{{ #var: $cq_col_card_type_st }}
   |{{ #var: $query_col_type }}
+
   |{{ #var: $cq_col_type }}
   |{{ #var: $query_col_stars }}
+
   |{{ #var: $cq_col_level/rank/link }}
   |{{ #var: $query_col_atk }}
+
   |{{ #var: $cq_col_level }}
   |{{ #var: $query_col_def }}
+
   |{{ #var: $cq_col_rank }}
   |{{ #var: $query_col_st_class }}
+
   |{{ #var: $cq_col_scale }}
   |{{ #var: $query_col_property }}
+
   |{{ #var: $cq_col_atk }}
 +
   |{{ #var: $cq_col_def }}
 +
   |{{ #var: $cq_col_link_rating }}
 +
   |{{ #var: $cq_col_maximum_atk }}
 +
   |{{ #var: $cq_col_property }}
 +
   |{{ #var: $cq_col_extra }}
 +
   |{{ #var: $cq_col_extra_2 }}
 +
   | {{ #if: {{ #var: $cq_query_medium | {{ #var: $cq_medium }} }}{{ #pos: {{ #var: $cq_query_lc }} | release:: }} | {{ #ifeq: {{ #var: $cq_query_medium | {{ #var: $cq_medium }} }} | vg || mainlabel = - }} | mainlabel = Name }}
 
   | headers = plain
 
   | headers = plain
   | class = sortable wikitable smwtable card-list
+
   | class = sortable wikitable smwtable card-list card-query-main
}}<noinclude>{{Documentation}}</noinclude>
+
  | {{ #if: {{ #var: $cq_limit }}  | limit = {{ #var: $cq_limit }} }}
 +
  | {{ #if: {{ #var: $cq_sort }}    | sort  = {{ #var: $cq_sort  }} }}
 +
  | {{ #if: {{ #var: $cq_order }}  | order = {{ #var: $cq_order }} }}
 +
  | {{ #if: {{ #var: $cq_default }} | default = {{ #var: $cq_default }} }}
 +
  | searchlabel = <!-- nothing -->
 +
  | {{ #if: {{{debug<includeonly>|</includeonly>}}} | format = debug }}
 +
}}{{ #ifeq: {{ #var: $cq_count }} | 0 || <!--
 +
 
 +
footer table - currently only has results count + links to see more results
 +
 
 +
-->{{ #vardefine: $cq_further_results_url | https://yugipedia.com/wiki/Special:Ask<!-- unfortunately we can't use {{fullurl:}} because we're generating only part of the URL here
 +
-->?q={{ urlencode: {{ #var: $cq_full_query }} }}<!--
 +
-->&p={{ urlencode: mainlabel={{ #if: {{ #var: $cq_query_medium | {{ #var: $cq_medium }} }}{{ #pos: {{ #var: $cq_query_lc }} | release:: }} | {{ #ifeq: {{ #var: $cq_query_medium | {{ #var: $cq_medium }} }} | vg | Name | -2D }} | Name }} }}<!--
 +
-->&po={{ urlencode: {{ #if: {{ #var: $cq_query_medium | {{ #var: $cq_medium }} }}{{ #pos: {{ #var: $cq_query_lc }} | release:: }} | {{ #ifeq: {{ #var: $cq_query_medium | {{ #var: $cq_medium }} }} | vg || ?English name (linked) = Name }} }}
 +
{{ #var: $cq_col_japanese_name }}
 +
{{ #var: $cq_col_character }}
 +
{{ #var: $cq_col_primary_type }}
 +
{{ #var: $cq_col_secondary_type }}
 +
{{ #var: $cq_col_attribute }}
 +
{{ #var: $cq_col_card_type_st }}
 +
{{ #var: $cq_col_type }}
 +
{{ #var: $cq_col_level/rank/link }}
 +
{{ #var: $cq_col_level }}
 +
{{ #var: $cq_col_rank }}
 +
{{ #var: $cq_col_scale }}
 +
{{ #var: $cq_col_atk }}
 +
{{ #var: $cq_col_def }}
 +
{{ #var: $cq_col_link_rating }}
 +
{{ #var: $cq_col_maximum_atk }}
 +
{{ #var: $cq_col_property }}
 +
{{ #var: $cq_col_extra }}
 +
{{ #var: $cq_col_extra_2 }} }}<!--
 +
-->&format=broadtable<!--
 +
-->&headers=plain<!--
 +
-->&class={{ urlencode: sortable wikitable smwtable card-list }}<!--
 +
-->{{ #if: {{ #var: $cq_sort }} | &sort={{ urlencode: {{ #var: $cq_sort }} }}&order={{ urlencode: {{ #var: $cq_order | asc }} }} }}
 +
}}
 +
<table class="wikitable smwtable plainlinks card-list card-query-more-links">
 +
<tr><td>{{ #ifexpr: {{ #var: $cq_count }} < {{ #var: $cq_limit }} + 1
 +
  | {{ #ifeq: {{ #var: $cq_count }} | 1
 +
    | Showing the only result
 +
    | Showing all {{ #var: $cq_count }} results
 +
    }}
 +
  | Showing first {{ #var: $cq_limit }} results, of {{ #var: $cq_count }} total<!--
 +
    -->{{ #ifexpr: {{ #var: $cq_count }} > {{ #var: $cq_limit }} - 1
 +
    | &nbsp;&brvbar; [{{ #var: $cq_further_results_url }}&limit={{ #var: $cq_limit }}&offset={{ #var: $cq_limit }} <!--
 +
      -->{{ #ifexpr: {{ #var: $cq_count }} < {{ #var: $cq_limit }} * 2
 +
      | {{ #ifexpr: {{ #var: $cq_count }} - {{ #var: $cq_limit }} = 1
 +
        | Show remaining result
 +
        | Show remaining {{ #expr: {{ #var: $cq_count }} - {{ #var: $cq_limit }} }} results
 +
        }}
 +
      | Show next {{ #var: $cq_limit }} results
 +
      }}]
 +
    }}<!--
 +
    -->{{ #ifexpr: {{ #var: $cq_count }} > 20
 +
      | &nbsp;&brvbar; {{ #ifexpr: {{ #var: $cq_count }} < 50
 +
        | [{{ #var: $cq_further_results_url }}&limit=20 Show first 20 results]
 +
        | Show first &#91;[{{ #var: $cq_further_results_url }}&limit=20 20]&nbsp;&middot; [{{ #var: $cq_further_results_url }}&limit=50 50]<!--
 +
          -->{{ #ifexpr: {{ #var: $cq_count }} > 100 | &nbsp;&middot; [{{ #var: $cq_further_results_url }}&limit=100 100] }}<!--
 +
          -->{{ #ifexpr: {{ #var: $cq_count }} > 250 | &nbsp;&middot; [{{ #var: $cq_further_results_url }}&limit=250 250] }}<!--
 +
          -->{{ #ifexpr: {{ #var: $cq_count }} > 500 | &nbsp;&middot; [{{ #var: $cq_further_results_url }}&limit=500 500] }}<!--
 +
      -->&#93; results
 +
        }}
 +
      }}<!--
 +
    -->{{ #ifexpr: {{ #var: $cq_count }} < 501 | &nbsp;&brvbar; [{{ #var: $cq_further_results_url }}&limit=500 Show all {{ #var: $cq_count }} results] }} <!--
 +
    -->(all links open a new page)
 +
  }}
 +
</td></tr>
 +
</table>
 +
}}<!--
 +
 
 +
debugging
 +
 
 +
-->{{ #if: {{{debug<includeonly>|</includeonly>}}} | <nowiki/>
 +
* <code>#ask</code> query ($cq_full_query): <code>{{ #tag: nowiki | {{ #var: $cq_full_query }} }}</code>
 +
* <abbr title="query entered">$cq_query</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_query }} }}</code>
 +
* <abbr title="lowercased query entered">$cq_query_lc</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_query_lc }} }}</code>
 +
* <abbr title="normalized lowercased query entered">$cq_query_normalized</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_query_normalized }} }}</code>
 +
* <abbr title="normalized <nowiki>{{{medium}}}</nowiki> entered">$cq_medium</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_medium }} }}</code>
 +
* <abbr title="processed $cq_medium ready to use on the query">$cq_medium_query</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_medium_query }} }}</code>
 +
* <abbr title="type of the medium (if for cards, to enable/disable labels)">$cq_query_medium</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_query_medium }} }}</code>
 +
* <abbr title="normalized <nowiki>{{{type}}}</nowiki> entered">$cq_card_type</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_card_type }} }}</code>
 +
* <abbr title="processed $cq_card_type ready to use on the query">$cq_card_type_query</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_card_type_query }} }}</code>
 +
* <abbr title="concept used to reduce load for queries asking for common medium+card type combos">$cq_concept_query</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_concept_query }} }}</code>
 +
* <abbr title="determined number of monster results">$cq_monster_count</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_monster_count }} }}</code>
 +
* <abbr title="determined number of nonmonster results">$cq_nonmonster_count</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_nonmonster_count }} }}</code>
 +
* <abbr title="determined number of Spell Card results">$cq_spell_count</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_spell_count }} }}</code>
 +
* <abbr title="determined number of Trap Card results">$cq_trap_count</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_trap_count }} }}</code>
 +
* <abbr title="enable/disable «?Card type» column">$cq_col_card_type</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_card_type }} }}</code>
 +
* <abbr title="enable/disable «?Character» column">$cq_col_character</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_character }} }}</code>
 +
* <abbr title="enable/disable «?Japanese name» column">$cq_col_japanese_name</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_japanese_name }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?Primary type» column">$cq_col_primary_type</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_primary_type }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?Secondary type» column">$cq_col_secondary_type</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_secondary_type }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?Attribute» column">$cq_col_attribute</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_attribute }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?Type» column">$cq_col_type</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_type }} }}</code>
 +
* <abbr title="whether any results have a value stored in Property:Level string">$cq_level_in_results</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_level_in_results }} }}</code>
 +
* <abbr title="whether any results have a value stored in Property:Rank string">$cq_rank_in_results</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_rank_in_results }} }}</code>
 +
* <abbr title="whether any results have a value stored in Property:Link Rating">$cq_link_in_results</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_link_in_results }} }}</code>
 +
* <abbr title="determined label for Stars column">$cq_col_level/rank/link_label</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_level/rank/link_label }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?Stars string» column">$cq_col_level/rank/link</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_level/rank/link }} }}</code>
 +
* <abbr title="for Cross Duel monster cards, enable/disable «?Level string» column">$cq_col_level</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_level }} }}</code>
 +
* <abbr title="for Cross Duel monster cards, enable/disable «?Rank string» column">$cq_col_rank</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_rank}} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?Pendulum Scale» column">$cq_col_scale</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_scale }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?Link Rating» column">$cq_col_link_rating</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_link_rating }} }}</code>
 +
* <abbr title="whether the query only returns results with same ATK/DEF">$cq_equal_atkdef</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_equal_atkdef }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?ATK string» column">$cq_col_atk</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_atk }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?DEF string» column">$cq_col_def</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_def }} }}</code>
 +
* <abbr title="for monster cards, enable/disable «?MAXIMUM ATK» column">$cq_col_maximum_atk</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_maximum_atk }} }}</code>
 +
* <abbr title="for Spell/Traps, enable/disable «?Card type» column">$cq_col_card_type_st</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_card_type_st }} }}</code>
 +
* <abbr title="for Spell/Traps, enable/disable «?Property» column">$cq_col_property</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_property }} }}</code>
 +
* <abbr title="to add an extra column"><code><nowiki>{{{extra_column}}}</nowiki></code></abbr>: <code>{{ #tag: nowiki | {{{extra_column|}}} }}</code>
 +
* <abbr title="to add a second extra column"><code><nowiki>{{{extra_column2}}}</nowiki></code></abbr>: <code>{{ #tag: nowiki | {{{extra_column2|}}} }}</code>
 +
* <abbr title="full new column (with label, if passed)">$cq_col_extra</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_extra }} }}</code>
 +
* <abbr title="second full new column (with label, if passed)">$cq_col_extra_2</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_col_extra_2 }} }}</code>
 +
* limit: {{ #var: $cq_limit | 50 }}
 +
* <abbr title="<nowiki>{{{sort}}}</nowiki>, for sorting the results by property">$cq_sort</abbr>: <code>{{ #tag: nowiki  | {{ #var: $cq_sort  }} }}</code>
 +
* <abbr title="<nowiki>{{{order}}}</nowiki>, for ordering the results by values">$cq_order</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_order }} }}</code>
 +
* <abbr title="<nowiki>{{{default}}}</nowiki>, to be displayed if a query has no results">$cq_default</abbr>: <code>{{ #tag: nowiki | {{ #var: $cq_default }} }}</code>
 +
* <abbr title="results count">$cq_count</abbr>: {{ #var: $cq_count }}
 +
}}<!--
 +
 
 +
we have to blank the column variables to keep from polluting subsequent transclusions (since they aren't always defined above, and therefore aren't guaranteed to be blank from previous transclusions)
 +
 
 +
-->{{ #vardefine: $cq_col_japanese_name
 +
}}{{ #vardefine: $cq_col_character
 +
}}{{ #vardefine: $cq_col_card_type
 +
}}{{ #vardefine: $cq_col_card_type_st
 +
}}{{ #vardefine: $cq_col_primary_type
 +
}}{{ #vardefine: $cq_col_secondary_type
 +
}}{{ #vardefine: $cq_col_attribute
 +
}}{{ #vardefine: $cq_col_type
 +
}}{{ #vardefine: $cq_col_level_rank_flags
 +
}}{{ #vardefine: $cq_col_level/rank/link
 +
}}{{ #vardefine: $cq_col_level
 +
}}{{ #vardefine: $cq_col_rank
 +
}}{{ #vardefine: $cq_col_scale
 +
}}{{ #vardefine: $cq_col_atk
 +
}}{{ #vardefine: $cq_col_def
 +
}}{{ #vardefine: $cq_col_link_rating
 +
}}{{ #vardefine: $cq_col_maximum_atk
 +
}}{{ #vardefine: $cq_col_property
 +
}}{{ #vardefine: $cq_col_extra
 +
}}{{ #vardefine: $cq_col_extra_2
 +
}}{{ #vardefine: $cq_limit
 +
}}{{ #vardefine: $cq_sort
 +
}}{{ #vardefine: $cq_order
 +
}}{{ #vardefine: $cq_default
 +
}}{{ #vardefine: $cq_count
 +
}}<!--
 +
 
 +
last, any tracking categories/properties
 +
 
 +
-->{{ #if: {{{t|}}} |<!-- stuff we don't want applied if {{Card query}} is added via another template (e.g. by {{Card list}}) -->
 +
  | [[((Card query)) query value::{{ #replace: {{ #replace: {{ #replace: {{ #var: $cq_query }} | {{!}} | &#124; }} | {{!(}} | &#91; }} | {{)!}} | &#93; }}| ]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query_lc }} | card category }}
 +
          {{ #pos: {{ #var: $cq_query_lc }} | s/t class }}
 +
          {{ #pos: {{ #var: $cq_query_lc }} | rfp:: }}<!-- replace with "Banishing" -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | remove from play }}<!-- replace with "banish" -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | removes from play }}<!-- replace with "banishes" -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | removed from play }}<!-- replace with "banished" -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | removing from play }}<!-- replace with "banishing" -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | monster type:: }}<!-- replace with "Primary type" or "Secondary type" as appropriate -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | life points:: }}<!-- replace with "LP" -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | token monster }}<!-- replace with "Monster Token" -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | ?atk }}<!-- replace with "ATK string" (usually) -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | ?def }}<!-- replace with "DEF string" (usually) -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | ?level }}<!-- replace with "Level string" (usually) -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | ?rank }}<!-- replace with "Rank string" (usually) -->
 +
          {{ #pos: {{ #var: $cq_query_lc }} | ?stars }}<!-- replace with "Stars string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | card category | 1 }}
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | s/t class | 1 }}
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | rfp | 1 }}<!-- replace with "Banishing" -->
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | monster type | 1 }}<!-- replace with "Primary type" or "Secondary type" as appropriate -->
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | life points | 1 }}<!-- replace with "LP" -->
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | ?atk | 1 }}<!-- replace with "ATK string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | ?def | 1 }}<!-- replace with "DEF string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | ?level | 1 }}<!-- replace with "Level string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | ?rank | 1 }}<!-- replace with "Rank string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column}}} }} | ?stars | 1 }}<!-- replace with "Stars string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | card category | 1 }}
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | s/t class | 1 }}
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | rfp | 1 }}<!-- replace with "Banishing" -->
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | monster type | 1 }}<!-- replace with "Primary type" or "Secondary type" as appropriate -->
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | life points | 1 }}<!-- replace with "LP" -->
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | ?atk | 1 }}<!-- replace with "ATK string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | ?def | 1 }}<!-- replace with "DEF string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | ?level | 1 }}<!-- replace with "Level string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | ?rank | 1 }}<!-- replace with "Rank string" (usually) -->
 +
          {{ #ifeq: {{ lc: {{{extra_column2}}} }} | ?stars | 1 }}<!-- replace with "Stars string" (usually) -->
 +
  | [[Category:((Card query)) transclusions querying deprecated properties]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query_lc }} | class 1 }}
 +
          {{ #pos: {{ #var: $cq_query_lc }} | medium:: }}
 +
  | [[Category:((Card query)) transclusions which should use (((medium)))]]
 +
}}{{ #if: {{ #var: $cq_medium_unknown }}
 +
  | [[Category:((Card query)) transclusions with an unknown (((medium))) value]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query_lc }} | card type:: }}
 +
  | [[Category:((Card query)) transclusions which should use (((type)))]]
 +
}}{{ #if: {{ #var: $cq_card_type_unknown }}
 +
  | [[Category:((Card query)) transclusions with an unknown (((type))) value]]
 +
}}{{ #if: {{{extra_column|}}}
 +
  | [[Category:Queries with an extra column]]{{ #if: {{{extra_column2|}}}
 +
    | [[Category:Queries with two extra columns]]{{ #ifeq: {{{extra_column}}} | {{{extra_column2}}}
 +
      | [[Category:((Card query)) transclusions with duplicate extra_column and extra_column2]]
 +
    }}
 +
  }}
 +
  | {{ #if: {{{extra_column2|}}}
 +
    | [[Category:Queries with an extra column]][[Category:((Card query)) transclusions with extra_column2 but no extra_column]]
 +
  }}
 +
}}{{ #if: {{{sort|}}}
 +
  | [[Category:Queries with a custom sort]]
 +
}}{{ #if: {{{order|}}}
 +
  | [[Category:Queries with a custom order]]
 +
}}{{ #if: {{{default|}}}
 +
  | [[Category:Queries with a custom default value]]
 +
}}{{ #if: {{{limit|}}}
 +
  | {{ #iferror: {{ #expr: {{{limit}}} }}
 +
    | [[Category:((Card query)) transclusions with junk limit values]]
 +
    | {{ #ifeq: {{{limit}}} | 50
 +
      | [[Category:((Card query)) transclusions with an unnecessary limit]]
 +
      | {{ #ifexpr: {{{limit}}} > 500
 +
        | [[Category:((Card query)) transclusions with a limit above $smwgQMaxInlineLimit]]
 +
        | [[Category:Queries with a custom limit]]
 +
      }}
 +
    }}
 +
  }}
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query }} | {{!}}{{!}} }}
 +
          {{ #pos: {{ #var: $cq_query_lc }} | {{))!}} or {{!((}} }}
 +
  | [[Category:Queries with disjunctions]]
 +
}}{{ #if: {{ #pos: {{ #replace: {{ #var: $cq_query }} }} | {{))!}}{{!((}} }}
 +
  | [[Category:Queries with multiple terms]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query_lc }} | <q> }}
 +
  | [[Category:Queries with subqueries]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query }} | ::~ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!}}{{!}}~ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}~ }}
 +
          {{ #pos: {{ #var: $cq_query }} | ::!~ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!}}{{!}}!~ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}!~ }}
 +
  | [[Category:Queries with a like comparator]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query_lc }} | ::like: }}
 +
          {{ #pos: {{ #var: $cq_query_lc }} | {{!}}{{!}}like: }}
 +
          {{ #pos: {{ #var: $cq_query_lc }} | ::nlike: }}
 +
          {{ #pos: {{ #var: $cq_query_lc }} | {{!}}{{!}}nlike: }}
 +
  | [[Category:Queries with a like comparator]][[Category:Queries using LIKE/NOT LIKE SQL notation]]
 +
}}{{ #if: {{ #pos: {{ #replace: {{ #var: $cq_query }} | ::!~ }} | ::! }}
 +
          {{ #pos: {{ #replace: {{ #var: $cq_query }} | {{!}}{{!}}!~ }} | {{!}}{{!}}! }}
 +
          {{ #pos: {{ #replace: {{ #var: $cq_query }} | {{!((}}!~ }} | {{!((}}! }}
 +
  | [[Category:Queries with a not equal comparator]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query }} | ::< }}
 +
          {{ #pos: {{ #var: $cq_query }} | ::> }}
 +
          {{ #pos: {{ #var: $cq_query }} | ::≤ }}
 +
          {{ #pos: {{ #var: $cq_query }} | ::≥ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!}}{{!}}< }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!}}{{!}}> }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!}}{{!}}≤ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!}}{{!}}≥ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}< }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}> }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}≤ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}≥ }}
 +
  | [[Category:Queries with comparators]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query }} | ::+ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!}}{{!}}+ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}+ }}
 +
  | [[Category:Queries with wildcards]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query_lc }} | english name }}
 +
          {{ #pos: {{ #var: $cq_query_lc }} | page name }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}~ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}! }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}< }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}> }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}≤ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}≥ }}
 +
          {{ #pos: {{ #var: $cq_query }} | {{!((}}+ }}
 +
  | [[Category:Queries which specify cards for inclusion/exclusion]]
 +
}}{{ #if: {{ #pos: {{ #var: $cq_query }} | <> }}
 +
  | [[Category:Queries with a bad comparator]]
 +
}}{{ #invoke: check for unknown parameters | check
 +
| unknown = [[Category:((Card query)) transclusions using unknown parameters]]
 +
| showblankpositional = 1
 +
| preview = unknown <nowiki>{{Card query}}</nowiki> parameter "_VALUE_"
 +
| 1 | medium | type
 +
| extra_column | extra_column2
 +
| limit | sort | order | default
 +
| debug | t
 +
}}<noinclude>
 +
{{Documentation}}</noinclude>

Revision as of 16:49, 25 January 2024

SQLStore debug output
ASK Query
[[Card type::Monster Card]]
SQL Query
SELECT DISTINCT
  t0.smw_id AS id,
  t0.smw_title AS t,
  t0.smw_namespace AS ns,
  t0.smw_iw AS iw,
  t0.smw_subobject AS so,
  t0.smw_sortkey AS sortkey, t0.smw_sort,
  t0.smw_title,
  t0.smw_subobject
FROM
  `smw_object_ids` AS t0
INNER JOIN
  `smw_di_wikipage` AS t1 ON t0.smw_id=t1.s_id
WHERE
  (t1.p_id='596' AND t1.o_id='1389')
  AND t0.smw_iw!=':smw'
  AND t0.smw_iw!=':smw-delete'
  AND t0.smw_iw!=':smw-redi'
ORDER BY
  t0.smw_sort ASC,
  t0.smw_title ASC,
  t0.smw_subobject ASC
LIMIT
  55
OFFSET
  0
SQL Explain
IDselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEt1refs_id,o_id,p_id,s_id_2,s_id_3,o_id_2,o_id_3o_id_25const71526Using where; Using temporary; Using filesort
1SIMPLEt0eq_refPRIMARY,smw_id,smw_iw,smw_iw_2PRIMARY4ygowiki.t1.s_id1Using where
Auxilliary Tables
No auxilliary tables used.
Query Metrics
Query-Size:2
Query-Depth:1
Errors and Warnings
None
  • #ask query ($cq_full_query): [[Card type::Monster Card]]
  • $cq_query:
  • $cq_query_lc:
  • $cq_query_normalized:
  • $cq_medium:
  • $cq_medium_query:
  • $cq_query_medium:
  • $cq_card_type: monster
  • $cq_card_type_query: [[Card type::Monster Card]]
  • $cq_concept_query:
  • $cq_monster_count: 44962
  • $cq_nonmonster_count: 22379
  • $cq_spell_count: 13091
  • $cq_trap_count: 8875
  • $cq_col_card_type: ?Card type =
  • $cq_col_character:
  • $cq_col_japanese_name: ?Japanese name
  • $cq_col_primary_type: ?Primary type
  • $cq_col_secondary_type: ?Secondary type
  • $cq_col_attribute: ?Attribute = [[Attribute]]
  • $cq_col_type: ?Type = [[Type]]
  • $cq_level_in_results: 1
  • $cq_rank_in_results: 1
  • $cq_link_in_results:
  • $cq_col_level/rank/link_label: [[Level]]/<br />[[Rank]]
  • $cq_col_level/rank/link: ?Stars string = [[Level]]/<br />[[Rank]]
  • $cq_col_level:
  • $cq_col_rank:
  • $cq_col_scale: ?Pendulum Scale = [[Pendulum Scale|Scale]]
  • $cq_col_link_rating: ?Link Rating = [[Link Rating|Link]]
  • $cq_equal_atkdef:
  • $cq_col_atk: ?ATK string = [[ATK]]
  • $cq_col_def: ?DEF string = [[DEF]]
  • $cq_col_maximum_atk:
  • $cq_col_card_type_st:
  • $cq_col_property:
  • {{{extra_column}}}:
  • {{{extra_column2}}}:
  • $cq_col_extra:
  • $cq_col_extra_2:
  • limit: 50
  • $cq_sort: #
  • $cq_order:
  • $cq_default:
  • $cq_count: 44962