Module:GameShortened: Difference between revisions

From Inkipedia, the Splatoon wiki
m (corrected default handling)
(make named higher priority for chaining)
Line 22: Line 22:
     -- It's the first positional, or in the paramter named 'game'
     -- It's the first positional, or in the paramter named 'game'
     -- If game is not specified, then arg is nil and a default will be used
     -- If game is not specified, then arg is nil and a default will be used
     local arg = frame:getParent().args[1] or frame:getParent().args['game']
     local arg = frame:getParent().args['game'] or frame:getParent().args[1]
      
      
     -- return the abbreviation from the game arg.
     -- return the abbreviation from the game arg.
     -- if it's not in the table, instead return the default parameter, which
     -- if it's not in the table, instead return the default parameter, which
     -- is the second positional, or the parameter named 'default', else simply return S1.
     -- is the second positional, or the parameter named 'default', else simply return S1.
     return abbrev[arg] or frame:getParent().args[2] or frame:getParent().args['default'] or S1
     return abbrev[arg] or frame:getParent().args['default'] or frame:getParent().args[2] or S1
end
end


return g
return g

Revision as of 00:03, 18 August 2023

Helper template that transforms the game argument into the shortened S form. For template chaining and code reduction. Will also help us when new game/expansions/formats are created.

If the game is not matched, the default argument is used instead if specified, otherwise "S".

Usage

game Named or first positional, optional The game that the cost belongs to. The following values are handled:
  • Octo Expansion -> OE
  • Side Order -> SO
  • Salmon Run -> SR
  • Splatoon -> S
  • Splatoon 1 -> S
  • Splatoon 2 -> S2
  • Splatoon 3 -> S3
  • OE -> OE
  • SO -> SO
  • SR -> SR
  • S -> S
  • S2 -> S2
  • S3 -> S3

If game is not specified, the default argument will be used instead.

default Named or second positional, optional If the game argument was not matched, uses this instead.
  • Defaults to "S".
Typical usage

{{GameShortened|<game>|<default>}}

{{GameShortened|Octo Expansion}} -> OE

Chained in another template that has the game parameter

{{GameShortened|{{{game|}}}}} -> S

Using the default parameter

{{GameShortened|Splatoon 3|S}} -> S3

{{GameShortened|game=Splatoon 2|default=Splatoon}} -> S2

In files

[[File:{{GameShortened|Splatoon 3}}_Icon_Big_Run.svg|link=Big Run|30px]] ->

[[File:{{GameShortened|game=Splatoon 2|default=Splatoon 3}}_Splatfest_Logo.svg|link=Splatfest|30px]] ->

See Also


local g = {}

function g.main(frame)
    local S1 = "S"
    local S2 = "S2"
    local S3 = "S3"
    local OE = "OE"
    local abbrev = {
        ['S'] = S,
        ['S1'] = S,
        ['Splatoon'] = S,
        ['Splatoon 1'] = S,
        ['S2'] = S2,
        ['Splatoon 2'] = S2,
        ['S3'] = S3,
        ['Splatoon 3'] = S3,
        ['OE'] = OE,
        ['Octo Expansion'] = OE,
    }
    
    -- Calculate the game parameter
    -- It's the first positional, or in the paramter named 'game'
    -- If game is not specified, then arg is nil and a default will be used
    local arg = frame:getParent().args['game'] or frame:getParent().args[1]
    
    -- return the abbreviation from the game arg.
    -- if it's not in the table, instead return the default parameter, which
    -- is the second positional, or the parameter named 'default', else simply return S1.
    return abbrev[arg] or frame:getParent().args['default'] or frame:getParent().args[2] or S1
end

return g