Difference between revisions of "Module:Availability"
Line 20: | Line 20: | ||
function p.test(frame) | function p.test(frame) | ||
− | return frame:expandTemplate{title='Common string', args={}} | + | return frame:expandTemplate{title='Common string', args={'series number chemistry sets', '2'}} |
end | end | ||
Revision as of 01:40, 8 March 2016
This module is very complex. Please, sandbox any changes before making them. If you have questions about this module, feel free to ask on the IRC. Darkid has offered to maintain this module, you may contact them if you need further assistance. |
To update which crate series are linked as active, change the list in Module:Availability/active. |
Module:Availability (aka Template:Availability) is used to display and autotranslate the 'Availability' section in {{Item infobox}}
. Preferably, the shortcut {{avail}}
should be used.
For future reference, if creating new additions, the key cannot include a number, or it will be parsed out. Thus, if you want to add a string like xmas2015
, instead add it to the Multipart strings with xmas
and use num
to represent the 2015.
Contents
Entries
Parameter | Output |
---|---|
audition-reel |
Audition Reel |
bread-box |
Bread Box (Unique and Strange) |
chemistryset |
Chemistry Set |
case-any |
Uncrate (any case) |
case-bonus |
Uncrate (bonus) |
collectors |
Chemistry Set (Collector's) |
contract |
Contract (Decorated) |
contract-unique |
ConTracker |
craft |
Craft |
craft-expired |
Craft (expired) |
creepy-crate |
Unlocked Creepy Crate |
directors |
Director's Cut Reel |
distributed |
Distributed |
distributed-duels |
Distributed (periodical) |
distributed-expired |
Distributed (expired) |
distributed-gifts |
Distributed (periodical) |
distributed-stamps |
Distributed (periodical) |
drop |
Drop |
drop-expired |
Drop (expired) |
festive-gift |
Smissmas 2015 Festive Gift |
gift-cauldron |
Halloween Gift Cauldron |
goodie-cauldron |
Antique Halloween Goodie Cauldron (limited) |
halloween-package |
Halloween Package |
halloween-purchase |
Purchase |
halloween-purchase-expired |
Purchase (expired) |
hauntedgift |
Haunted Halloween Gift (expired) |
jungleinferno-campaign |
Jungle Inferno Campaign Pass (limited) |
jungleinferno-contracts |
Jungle Inferno Contracts Pass |
keyless-crate |
Unlocked Cosmetic Crate (Unique and Strange) |
keyless-crate-unusual |
Unlocked Cosmetic Crate (Unique, Strange and Unusual) |
mvm |
As Mann vs. Machine reward |
pallet-of-crates |
Pallet of Crates |
pile-of-curses |
Pile of Curses (expired) |
promotional |
Promotional |
promotional-craft |
Promotional (craft) |
promotional-expired |
Promotional (expired) |
promotional-expired-codes |
Promotional (expired) |
promotional-unlock |
Promotional (unlock) |
purchase |
Purchase |
purchase-limited |
Purchase (limited) |
retired |
Retired |
stock |
Stock |
stockpile |
Stockpile Crate |
trade-up |
Trade-Up |
transmute |
Halloween Transmute (Untradable) |
unavailable |
Unavailable |
unlock |
Unlock |
unusual |
Uncrate (Unusual) |
unusual-expired |
Uncrate (Unusual) (expired) |
warpaint |
War Paint (Decorated) |
MvM related strings | |
mannup |
Reward |
australium |
Reward (Australium) |
botkiller |
Reward (Botkiller) |
mvm-both-types |
Reward (Botkiller and Australium) |
Dynamic strings (mostly used for crate numbers). The numeric value is automatically parsed. | |
crate1 |
Uncrate #1 |
crate2-strange |
Uncrate #2 (Strange) |
crate3-festive |
Uncrate #3 (Festive) |
crate4-haunted |
Uncrate #4 (Haunted) (expired) |
crate5-bonus |
Uncrate #5 (bonus) |
crate6-expired |
Uncrate #6 (expired) |
crate91 |
Uncrate #91 |
crate92 |
Uncrate #92 |
case104 |
Uncrate #104 (Creepy Crawly Case) |
case105 |
Uncrate #105 (Unlocked Winter 2016 Cosmetic Case) |
Usage
{{avail|drop}}
produces Drop{{avail|drop|craft}}
produces Drop or Craft{{avail|drop|craft|purchase}}
produces Drop, Craft or Purchase{{avail|drop|craft|purchase|promotional}}
produces Drop, Craft, Purchase or Promotional
Backwards compatibility
{{Availability}}
changes over time, and thus has some parameters which have been deprecated. They will still function in this template, but their use will place the page into Outdated Availability Parameters. Please replace them with the appropriate new value.
Outdated Parameter | New Parameter | Output |
---|---|---|
crate-scorched |
crate46 |
Uncrate #46 |
crate74 |
crate74-haunted |
Uncrate #74 (Haunted) (expired) |
crate74-expired |
crate74-haunted |
Uncrate #74 (Haunted) (expired) |
xmas2015 |
festive-gift |
Smissmas 2015 Festive Gift |
winter2016 |
case105 |
Uncrate #105 (Unlocked Winter 2016 Cosmetic Case) |
winter2016-strange |
case105 |
Uncrate #105 (Unlocked Winter 2016 Cosmetic Case) |
winter2016-unusual |
case105 |
Uncrate #105 (Unlocked Winter 2016 Cosmetic Case) |
unusual-# |
unusual |
Uncrate (Unusual) |
local p = {} -- Defined here so they can be referenced inside other functions, e.g. common_string local frame = nil -- Expands the template Tooltip for a given pair of values. function tooltip(string, tip) return frame:expandTemplate{title='Tooltip', args={string, tip}} end -- Expands the template Item name for a given value. function item_name(arg) return frame:expandTemplate{title='Item name', args={arg}} end -- Expands the template Common string for a given value. Note that some common string values include an additional parameter, here called opt_arg. function common_string(arg, opt_arg) return frame:expandTemplate{title='Common string', args={arg, opt_arg}} end function p.test(frame) return frame:expandTemplate{title='Common string', args={'series number chemistry sets', '2'}} end function paren(text) if if_lang == '/zh_hans' or if_lang == '/zh-hant' then return '(' .. text .. ')' else return ' (' .. text .. ') ' end end -- Replaces the old Dictionary/templatecore strings lookup = { -- Singleton strings (without a number) ['audition-reel'] = function() return '[[Mann Co. Supply Crate/Seriesless_crates' .. if_lang .. '#Audition Reel|' .. common_string('audition reel') .. ']]' end, ['australium'] = function() return '[[Mann Up' .. if_lang .. '|' .. common_string('reward') .. ']]' .. paren('[[Australium weapons' .. if_lang .. '|' .. common_string('australium') .. ']]') end, ['botkiller'] = function() return '[[Mann Up' .. if_lang .. '|' .. common_string('reward') .. ']]' .. paren('[[Botkiller weapons' .. if_lang .. '|' .. common_string('botkiller') .. ']]') end, ['bread-box'] = function() return '[[Bread Box' .. if_lang .. '|' .. item_name('bread box') .. ']]' .. paren('[[Unique' .. if_lang .. '|' .. item_name('unique') .. ']] ' .. common_string('and') .. ' [[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['chemistryset'] = function() return '[[Chemistry Set' .. if_lang .. '|' .. item_name('chemistry set') .. ']]' end, ['collectors'] = function() return '[[Chemistry Set' .. if_lang .. '|' .. item_name('chemistry set') .. ']]' .. paren('[[Collectors' .. if_lang .. '|' .. item_name('collector\'s') .. ']]') end, ['contract'] = function() return '[[Gun Mettle Campaign' .. if_lang .. '#Contracts|' .. common_string('contract') .. ']]' .. paren('[[Decorated' .. if_lang .. '|' .. item_name('decorated') .. ']]') end, ['craft'] = function() return '[[Crafting' .. if_lang .. '|' .. common_string('craft') .. ']]' end, ['creepy-crate'] = function() return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Unlocked Creepy Crates|' .. item_name('unlocked creepy crate') .. ']]' end, ['directors'] = function() return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Director\'s Cut|' .. common_string('director\'s cut') .. ']]' end, ['distributed'] = function() return common_string('distributed') end, ['drop'] = function() return '[[Item drop system' .. if_lang .. '|' .. common_string('drop') .. ']]' end, ['gift-cauldron'] = function() return '[[Halloween Gift Cauldron' .. if_lang .. '|' .. item_name('halloween gift cauldron') .. ']]' end, ['halloween-purchase'] = function() return '[[Mann Co. Store' .. if_lang .. '|' .. tooltip(common_string('purchase'), common_string('purchase-halloween')) .. ']]' end, ['hauntedgift'] = function() return '[[Haunted Halloween Gift' .. if_lang .. '|' .. item_name('haunted halloween gift') .. ']]' end, ['mannup'] = function() return '[[Mann Up' .. if_lang .. '|' .. common_string('reward') .. ']]' end, ['mvm-both-types'] = function() return '[[Mann Up' .. if_lang .. '|' .. common_string('reward') .. ']]' .. paren('[[Botkiller weapons' .. if_lang .. '|' .. common_string('botkiller') .. ']] ' .. common_string('and') .. ' [[Australium weapons' .. if_lang .. '|' .. common_string('australium') .. ']]') end, ['mvm'] = function() return '[[Mann vs. Machine' .. if_lang .. '|' .. common_string('mvm reward') .. ']]' end, ['promotional'] = function() return '[[Promotional items' .. if_lang .. '|' .. common_string('promotional') .. ']]' end, ['purchase'] = function() return '[[Mann Co. Store' .. if_lang .. '|' .. common_string('purchase') .. ']]' end, ['retired'] = function() return common_string('retired') end, ['stock'] = function() return '[[Stock weapons' .. if_lang .. '|' .. mw.getContentLanguage():ucfirst(item_name('stock')) .. ']]' end, ['stockpile'] = function() return '[[Mann Co. Supply Crate/Seriesless crates' .. if_lang .. '#Stockpile|' .. common_string('stockpile crate') .. ']]' end, ['strangifier'] = function() return '[[Strangifier' .. if_lang .. '|' .. item_name('strangifier') .. ']]'.. paren('[[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['unavailable'] = function() return common_string('unavailable') end, ['unlock'] = function() return '[[Achievement items' .. if_lang .. '|' .. common_string('unlock') .. ']]' end, ['unusual'] = function() return '[[Mann Co. Supply Crate' .. if_lang .. '|' .. common_string('uncrate') .. ']]' .. paren('[[Unusual' .. if_lang .. '|' .. item_name('unusual') .. ']]') end, -- Multipart strings (with a number) ['xmas'] = function(num) return '[[Smissmas ' .. num .. ' Festive Gift' .. if_lang .. '|' .. item_name('smissmas ' .. num .. ' festive gift') .. ']]' end, ['crate'] = function(num) return '[[Mann Co. Supply Crate/Retired series' .. if_lang .. '#' .. num .. '|' .. common_string('uncrate') .. ' #' .. num .. ']]' end, ['crate-strange'] = function(num) return '[[Mann Co. Supply Crate/Retired series' .. if_lang .. '#' .. num .. '|' .. common_string('uncrate') .. ' #' .. num .. ']] ' .. paren('[[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, ['crate-festive'] = function(num) return '[[Mann Co. Supply Crate/Retired series' .. if_lang .. '#' .. num .. '|' .. common_string('uncrate') .. ' #' .. num .. ']] ' .. paren('[[Festive weapons' .. if_lang .. '|' .. item_name('festive') .. ']]') end, ['crate-haunted'] = function(num) return '[[Mann Co. Supply Crate/Retired series' .. if_lang .. '#' .. num .. '|' .. common_string('uncrate') .. ' #' .. num .. ']] ' .. paren('[[Haunted' .. if_lang .. '|' .. item_name('haunted') .. ']]') end, -- ['strangifier-series-'] = function(num) return '[[Strangifier' .. if_lang .. '|' .. item_name('strangifier') .. ']]<sup>' .. tooltip('?', common_string('series number chemistry sets', num)) .. '</sup>' end, ['strangifier-series-'] = function(num) return common_string('series number chemistry sets', num) end, ['strangifier-crate-'] = function(num) return '[[Strangifier' .. if_lang .. '|' .. item_name('strangifier') .. ']]<sup>' .. tooltip('?', common_string('uncrateable from series ' .. num .. ' crates', num)) .. '</sup>' .. paren('[[Strange' .. if_lang .. '|' .. item_name('strange') .. ']]') end, } function p.avail(f) -- Precompute the page's language. frame = f if_lang = f:expandTemplate{title='If lang'} -- Avail is called with a long list of arguments. Each one needs to be translated and comma-separated. avail_string = '' for i, arg in ipairs(frame.args) do -- Backwards compatibility if name == 'store' then name = 'purchase' end if name == 'achievement' then name = 'unlock' end if name == 'strangifier-strange' then name = 'strangifier' end if name == 'crate-nice' then name = 'crate35-festive' end if name == 'crate-naughty' then name = 'crate36-festive' end if name == 'crate-nice-2012' then name = 'crate52-festive' end if name == 'crate-naughty-2012' then name = 'crate53-festive' end if name == 'crate-nice-2013' then name = 'crate78-festive' end if name == 'crate-naughty-2013' then name = 'crate79-festive' end if name == 'crate-nice-2014' then name = 'crate87-festive' end if name == 'crate-naughty-2014' then name = 'crate88-festive' end if name == 'crate74' then name = 'crate74-haunted' end if name == 'crate74-nohaunt' then name = 'crate74' end -- Matches strings like 'craft' 'crate1' 'crate26-strange' -- Strings like 'crate26-strange' become 'crate-strange' and '26'. name1, num, name2 = string.match(arg, '(%D*)(%d*)(%D*)') name = name1 .. name2 -- Old style was to write 'crate35' and let the template take care of it, but instead it should be written crate35-festive. if name == 'crate' then if num == '35' or num == '36' or num == '52' or num == '53' or num == '78' or num == '79' or num == '87' or num == '88' then name = 'crate-festive' end end if frame.args[i+1] ~= nil then -- There is another argument in the list avail_string = avail_string .. lookup[name](num) if if_lang == '/zh-hans' then avail_string = avail_string .. '、' elseif if_lang == '/zh-hant' then avail_string = avail_string .. ',' else avail_string = avail_string .. ', ' end else -- There are no more arguments in the list if i ~= 1 then -- Only add "or" for lists of more than one item. avail_string = avail_string .. common_string('or') .. ' ' end avail_string = avail_string .. lookup[name](num) end end return avail_string end return p