Dokumentation Die folgende Dokumentation stammt von der Seite Modul:Exclusive/Dokumentation. (bearbeiten | Versionsgeschichte)
Siehe auch die englische Modulseite: Module:Exclusive. Sie enthält möglicherweise umfassendere oder aktuellere Informationen.
Diese Seite ist nicht oder unvollständig übersetzt. | |
Hilf mit, indem du den Text übersetzt und anschließend diesen Hinweis entfernst. Dies entfernt diese Seite auch aus der Liste von Seiten mit unzureichender Übersetzung. |
This module manages everything {{exclusive}}-related.
The three invokable functions are getInfo
, a general exclusivity function which stores information to dplvars, eicons
, which provides the functionality of {{eicons}}, and simpleEicons
, a helper function to be used in other modules like Module:Item.
Important Note for Porting
When porting {{exclusive}}-related templates/modules to separate language wikis, you might not want to use a cargo-based cache system like on the English wiki.
Please take the following steps in order to use a non-cargo cache system:
- Do not directly port
Module:Exclusive/data
from the en wiki. Instead, head to Template:Exclusive/luadata (en), copy the generated code from that page, and put it as source code ofModule:Exclusive/data
on the target language's wiki. Note that this process will need to be repeated in the future in order to keep the language wiki's exclusivity database up-to-date. - Make sure that the l10n auto translation switch for the target language in
Template:Exclusive
/Template:Eil
/Template:Eicons
/Template:Eversions
is set tofalse
(false
is the default value for non-English languages). - Make sure that the l10n cargo switch for the target language in
Template:Exclusive
(at the beginning) is set tofalse
.
-- l10n text, needs to be translated.
local l10n = mw.loadData('Module:Exclusive/l10n')
------- The following is not related to l10n. --------------
-- exclusive info database, please read the documentation of Module:Exclusive/data
local exclusive_info = mw.loadData( 'Module:Exclusive/data' )
local tr = require('Module:Tr').translate
local trim = mw.text.trim
local args_table -- cache
-- helper function
local getArg = function(key)
local value = trim(args_table[key] or '')
return (value ~= '') and value or nil
end
local function parameter(parameter, base)
if parameter then
if parameter == '1' or parameter == 'y' or parameter == 'yes' then
return 'y'
end
if parameter == '0' or parameter == 'n' or parameter == 'no' then
return nil
end
end
return base
end
local standAndExtr = function(page)
-- standardize pagename (remove section parts ('x#section' -> 'x') and replace underscores with spaces)
page = mw.getContentLanguage():ucfirst(string.gsub(string.gsub(page or '', '#.*', ''), '_', ' '))
page = tr(page, 'en', true) or page
-- extract info
local raw, ex_d, ex_c, ex_o, ex_m, ex_3, ex_j, cached = exclusive_info[page]
if raw then
ex_d, ex_c, ex_o, ex_m, ex_3, ex_j, cached = raw:find('d'), raw:find('c'), raw:find('o'), raw:find('m'), raw:find('3'), raw:find('j'), 'y'
end
return ex_d, ex_c, ex_o, ex_m, ex_3, ex_j, cached
end
local getInfo = function(page, invert, pagenot)
local ex_d, ex_c, ex_o, ex_m, ex_3, ex_j, cached = standAndExtr(page)
-- invert?
if invert then
ex_d = not ex_d
ex_c = not ex_c
ex_o = not ex_o
ex_m = not ex_m
ex_3 = not ex_3
ex_j = false
end
-- exclude some versions, depending on pagenot
if pagenot then
local exnot_d, exnot_c, exnot_o, exnot_m, exnot_3, exnot_j = standAndExtr(pagenot)
ex_d = ex_d and not exnot_d -- ex_d is true only when ex_d is set and exnot_d is not set.
ex_c = ex_c and not exnot_c
ex_o = ex_o and not exnot_o
ex_m = ex_m and not exnot_m
ex_3 = ex_3 and not exnot_3
end
return ex_d, ex_c, ex_o, ex_m, ex_3, ex_j, cached
end
local eicons = function(ex_d, ex_c, ex_o, ex_m, ex_3, ex_j, _small, _link, lang)
local link = ''
local space = false
local size
local result = ''
local l10n = l10n[lang] or l10n['en']
-- compact mode only if nolink.
if link == '' then
if ex_d and ex_c and ex_o and ex_m and not ex_3 and not ex_j then
result =
'[[File:DCOM only.png|' .. (_small and 'x12' or 'x16') ..'px|link=|' .. l10n['icon_text_dcom'] .. ']]'
return mw.text.tag('span',{class='eico'}, result)
end
if ex_d and ex_c and not ex_o and ex_m and not ex_3 and not ex_j then
result =
'[[File:DCM only.png|' .. (_small and 'x12' or 'x16') ..'px|link=|' .. l10n['icon_text_dcm'] .. ']]'
return mw.text.tag('span',{class='eico'}, result)
end
end
if ex_d then
result =
'[[File:Desktop only.png|' .. (_small and '12' or '16') ..'px|link='
.. (_link and l10n['icon_link_d'] or '') .. '|' .. l10n['icon_text_d'] .. ']]'
space = true
end
if ex_c then
result = result .. (space and ' ' or '') ..
'[[File:Console only.png|' .. (_small and '13' or '17') ..'px|link='
.. (_link and l10n['icon_link_c'] or '') .. '|' .. l10n['icon_text_c'] .. ']]'
space = true
end
if ex_o then
result = result .. (space and ' ' or '') ..
'[[File:Old-Gen Console only.png|' .. (_small and 'x12' or 'x16') ..'px|link='
.. (_link and l10n['icon_link_o'] or '') .. '|' .. l10n['icon_text_o'] .. ']]'
space = true
end
if ex_m then
result = result .. (space and ' ' or '') ..
'[[File:Mobile only.png|' .. (_small and 'x12' or 'x16') ..'px|link='
.. (_link and l10n['icon_link_m'] or '') .. '|' .. l10n['icon_text_m'] .. ']]'
space = true
end
if ex_3 then
result = result .. (space and ' ' or '') ..
'[[File:3DS.svg|' .. (_small and '24' or '32') ..'px|link='
.. (_link and l10n['icon_link_3'] or '') .. '|' .. l10n['icon_text_3'] .. ']]'
space = true
end
if ex_j then
result = result .. (space and ' ' or '') ..
'[[File:Flag jp.svg|' .. (_small and '12' or '16') ..'px|link='
.. (_link and l10n['icon_link_j'] or '') .. '|' .. l10n['icon_text_j'] .. ']]'
end
return mw.text.tag('span',{class='eico'}, result)
end
local getExclusiveInfo = function(page, invert, pagenot)
local ex_d, ex_c, ex_o, ex_m, ex_3, ex_j
if page then
ex_d, ex_c, ex_o, ex_m, ex_3, ex_j = getInfo(page, invert, pagenot)
end
-- override
ex_d = parameter(getArg('dsk'), ex_d)
ex_c = parameter(getArg('cns'), ex_c)
ex_o = parameter(getArg('old'), ex_o)
ex_m = parameter(getArg('mbl'), ex_m)
ex_3 = parameter(getArg('3ds'), ex_3)
ex_j = parameter(getArg('jas'), ex_j)
return ex_d, ex_c, ex_o, ex_m, ex_3, ex_j
end
---------------------------------------------------------------------------------
return {
-- for template; get all exclusive info, set it in dplvars.
-- parameters: $1 = pagename
getInfo = function(frame)
args_table = frame.args -- cache
local page = getArg(1)
if not page then
frame:callParserFunction{ name = '#dplvar:set', args = {
'ex_d', '', 'ex_c', '', 'ex_o', '', 'ex_m', '', 'ex_3', '', 'ex_j', '', 'ex_cached', 'y'
} }
return
end
local ex_d, ex_c, ex_o, ex_m, ex_3, ex_j, cached = getInfo(page, getArg('invert'), getArg('pagenot'))
frame:callParserFunction{ name = '#dplvar:set', args = {
'ex_d', ex_d and 'y' or '',
'ex_c', ex_c and 'y' or '',
'ex_o', ex_o and 'y' or '',
'ex_m', ex_m and 'y' or '',
'ex_3', ex_3 and 'y' or '',
'ex_j', ex_j and 'y' or '',
'ex_cached', cached and 'y' or ''
} }
end,
-- for {{eicons}}
eicons = function(frame)
args_table = frame.args -- cache
local ex_d, ex_c, ex_o, ex_m, ex_3, ex_j = getExclusiveInfo(getArg(1), getArg('invert'), getArg('pagenot'))
if not(ex_d or ex_c or ex_o or ex_m or ex_3 or ex_j) then
return ''
end
local small = getArg('small')
if small == 'n' or small == '0' or small == 'no' then
small = false
end
return eicons(
ex_d, ex_c, ex_o, ex_m, ex_3, ex_j,
small, getArg('link'), getArg('lang')
)
end,
-- for other modules such as Module:item; simple eicons:
simpleEicons = function(page, lang, small, link)
local ex_d, ex_c, ex_o, ex_m, ex_3, ex_j = getInfo(page)
if not(ex_d or ex_c or ex_o or ex_m or ex_3 or ex_j) then
return ''
end
return eicons(
ex_d, ex_c, ex_o, ex_m, ex_3, ex_j,
small, link, lang
)
end,
--purge luacached cache data.
purge = function(frame)
local cache = require 'mw.ext.LuaCache'
cache.delete('exclusive-database')
end,
}